From bebb1932782f8f11bc37c6ddab29b6dbe744548b Mon Sep 17 00:00:00 2001 From: Christos Houtouridis Date: Thu, 14 Nov 2019 12:24:04 +0200 Subject: [PATCH] DEV: minor changes --- .gitignore | 2 + doc/html/__1wire_8h.html | 208 + doc/html/__1wire_8h.js | 23 + doc/html/__1wire_8h_source.html | 181 + doc/html/__1wire__id_8h.html | 135 + doc/html/__1wire__id_8h_source.html | 123 + doc/html/__1wire__uart_8h.html | 141 + doc/html/__1wire__uart_8h_source.html | 135 + .../_concepts_2lib_2gtest_2gtest-all_8d.html | 107 + ...epts_2lib_2gtest_2gtest-all_8d_source.html | 105 + doc/html/_concepts_2source_2main_8d.html | 107 + .../_concepts_2source_2main_8d_source.html | 108 + ...ncepts_2source_2tests_2_t_concepts_8d.html | 107 + ...2source_2tests_2_t_concepts_8d_source.html | 127 + ..._concepts_2source_2tests_2_tinvoke_8d.html | 107 + ...ts_2source_2tests_2_tinvoke_8d_source.html | 123 + ...pts_2source_2tests_2test__1w__impl_8d.html | 107 + ...urce_2tests_2test__1w__impl_8d_source.html | 128 + ...ts_2source_2tests_2test__i2c__impl_8d.html | 107 + ...rce_2tests_2test__i2c__impl_8d_source.html | 125 + ...2source_2tests_2test__ostream__dev_8d.html | 107 + ..._2tests_2test__ostream__dev_8d_source.html | 126 + ...ts_2source_2tests_2test__spi__impl_8d.html | 107 + ...rce_2tests_2test__spi__impl_8d_source.html | 125 + doc/html/_formulas.tex | 17 + doc/html/_r_e_a_d_m_e_8md.html | 107 + doc/html/_r_e_a_d_m_e_8md_source.html | 105 + doc/html/_t_concepts_8cpp.html | 200 + doc/html/_t_concepts_8cpp.js | 40 + doc/html/_t_concepts_8cpp_source.html | 155 + doc/html/_tinvoke_8cpp.html | 141 + doc/html/_tinvoke_8cpp.js | 7 + doc/html/_tinvoke_8cpp_source.html | 123 + doc/html/_tmeta_8d.html | 107 + doc/html/_tmeta_8d_source.html | 122 + doc/html/_tmeta_basic_8cpp.html | 163 + doc/html/_tmeta_basic_8cpp.js | 17 + doc/html/_tmeta_basic_8cpp_source.html | 165 + doc/html/_tmeta_basic_8d.html | 107 + doc/html/_tmeta_basic_8d_source.html | 121 + doc/html/_tmeta_detection_8cpp.html | 174 + doc/html/_tmeta_detection_8cpp.js | 18 + doc/html/_tmeta_detection_8cpp_source.html | 140 + doc/html/_tmeta_detection_8d.html | 107 + doc/html/_tmeta_detection_8d_source.html | 121 + doc/html/_tmeta_typelist_8cpp.html | 173 + doc/html/_tmeta_typelist_8cpp.js | 23 + doc/html/_tmeta_typelist_8cpp_source.html | 184 + doc/html/_tmeta_typelist_8d.html | 107 + doc/html/_tmeta_typelist_8d_source.html | 121 + ...de_2utl_2concepts_2defines_8h-example.html | 104 + ...lude_2utl_2meta_2detection_8h-example.html | 118 + ...include_2utl_2meta_2invoke_8h-example.html | 105 + ...clude_2utl_2meta_2typelist_8h-example.html | 108 + doc/html/annotated.html | 347 + doc/html/annotated_dup.js | 4 + doc/html/array_8h.html | 167 + doc/html/array_8h.js | 17 + doc/html/array_8h_source.html | 160 + doc/html/bc_s.png | Bin 0 -> 676 bytes doc/html/bdwn.png | Bin 0 -> 147 bytes doc/html/classes.html | 174 + doc/html/classtest__1w_1_1_o_w-members.html | 126 + doc/html/classtest__1w_1_1_o_w.html | 185 + doc/html/classtest__1w_1_1_o_w.png | Bin 0 -> 989 bytes ...sstest__1w_1_1_test__1w__impl-members.html | 122 + .../classtest__1w_1_1_test__1w__impl.html | 188 + doc/html/classtest__1w_1_1_test__1w__impl.js | 4 + doc/html/classtest__1w_1_1_test__1w__impl.png | Bin 0 -> 579 bytes doc/html/classtest__concepts_1_1_base.html | 121 + doc/html/classtest__concepts_1_1_base.png | Bin 0 -> 962 bytes .../classtest__concepts_1_1_derived1.html | 121 + doc/html/classtest__concepts_1_1_derived1.png | Bin 0 -> 959 bytes .../classtest__concepts_1_1_derived2.html | 121 + doc/html/classtest__concepts_1_1_derived2.png | Bin 0 -> 954 bytes ...ncepts_1_1_have_operator_base-members.html | 109 + ...test__concepts_1_1_have_operator_base.html | 171 + ...sstest__concepts_1_1_have_operator_base.js | 5 + ...s_1_1_have_perfect_forwarding-members.html | 108 + ..._concepts_1_1_have_perfect_forwarding.html | 152 + ...t__concepts_1_1_have_perfect_forwarding.js | 4 + doc/html/classtest__i2c_1_1_i2_c-members.html | 123 + doc/html/classtest__i2c_1_1_i2_c.html | 214 + doc/html/classtest__i2c_1_1_i2_c.js | 4 + doc/html/classtest__i2c_1_1_i2_c.png | Bin 0 -> 903 bytes ...m__dev_1_1_ostream__dev__impl-members.html | 133 + ...__ostream__dev_1_1_ostream__dev__impl.html | 360 + ...st__ostream__dev_1_1_ostream__dev__impl.js | 8 + ...t__ostream__dev_1_1_ostream__dev__impl.png | Bin 0 -> 988 bytes ...__dev_1_1_ostream__vdev__impl-members.html | 133 + ..._ostream__dev_1_1_ostream__vdev__impl.html | 360 + ...t__ostream__dev_1_1_ostream__vdev__impl.js | 8 + ...__ostream__dev_1_1_ostream__vdev__impl.png | Bin 0 -> 888 bytes ...ream__dev_1_1_tostream___idev-members.html | 122 + ...est__ostream__dev_1_1_tostream___idev.html | 188 + ...stest__ostream__dev_1_1_tostream___idev.js | 4 + ...test__ostream__dev_1_1_tostream___idev.png | Bin 0 -> 671 bytes ...ream__dev_1_1_tostream___vdev-members.html | 123 + ...est__ostream__dev_1_1_tostream___vdev.html | 214 + ...stest__ostream__dev_1_1_tostream___vdev.js | 5 + ...test__ostream__dev_1_1_tostream___vdev.png | Bin 0 -> 682 bytes .../classtest__spi_1_1_s_p_i-members.html | 121 + doc/html/classtest__spi_1_1_s_p_i.html | 204 + doc/html/classtest__spi_1_1_s_p_i.js | 4 + doc/html/classtest__spi_1_1_s_p_i.png | Bin 0 -> 1620 bytes ...test__spi_1_1_test__spi__impl-members.html | 122 + .../classtest__spi_1_1_test__spi__impl.html | 188 + .../classtest__spi_1_1_test__spi__impl.js | 4 + .../classtest__spi_1_1_test__spi__impl.png | Bin 0 -> 581 bytes ...1_1_empty_test_event_listener-members.html | 123 + ...testing_1_1_empty_test_event_listener.html | 633 ++ ...sstesting_1_1_empty_test_event_listener.js | 18 + ...stesting_1_1_empty_test_event_listener.png | Bin 0 -> 798 bytes .../classtesting_1_1_environment-members.html | 110 + doc/html/classtesting_1_1_environment.html | 210 + doc/html/classtesting_1_1_environment.js | 6 + .../classtesting_1_1_message-members.html | 118 + doc/html/classtesting_1_1_message.html | 406 + doc/html/classtesting_1_1_message.js | 14 + ...classtesting_1_1_scoped_trace-members.html | 111 + doc/html/classtesting_1_1_scoped_trace.html | 281 + doc/html/classtesting_1_1_scoped_trace.js | 7 + doc/html/classtesting_1_1_test-members.html | 122 + doc/html/classtesting_1_1_test.html | 585 ++ doc/html/classtesting_1_1_test.js | 8 + doc/html/classtesting_1_1_test.png | Bin 0 -> 1875 bytes ...sting_1_1_test_event_listener-members.html | 123 + .../classtesting_1_1_test_event_listener.html | 638 ++ .../classtesting_1_1_test_event_listener.js | 19 + .../classtesting_1_1_test_event_listener.png | Bin 0 -> 801 bytes ...ting_1_1_test_event_listeners-members.html | 119 + ...classtesting_1_1_test_event_listeners.html | 419 + .../classtesting_1_1_test_event_listeners.js | 15 + .../classtesting_1_1_test_info-members.html | 124 + doc/html/classtesting_1_1_test_info.html | 649 ++ doc/html/classtesting_1_1_test_info.js | 20 + ...lasstesting_1_1_test_property-members.html | 111 + doc/html/classtesting_1_1_test_property.html | 250 + doc/html/classtesting_1_1_test_property.js | 7 + .../classtesting_1_1_test_result-members.html | 128 + doc/html/classtesting_1_1_test_result.html | 611 ++ doc/html/classtesting_1_1_test_result.js | 24 + .../classtesting_1_1_test_suite-members.html | 127 + doc/html/classtesting_1_1_test_suite.html | 623 ++ doc/html/classtesting_1_1_test_suite.js | 23 + ...sstesting_1_1_test_with_param-members.html | 124 + .../classtesting_1_1_test_with_param.html | 172 + doc/html/classtesting_1_1_test_with_param.png | Bin 0 -> 1084 bytes .../classtesting_1_1_unit_test-members.html | 147 + doc/html/classtesting_1_1_unit_test.html | 973 +++ doc/html/classtesting_1_1_unit_test.js | 42 + ...ting_1_1_with_param_interface-members.html | 111 + ...classtesting_1_1_with_param_interface.html | 261 + .../classtesting_1_1_with_param_interface.js | 6 + .../classtesting_1_1_with_param_interface.png | Bin 0 -> 799 bytes ...l2_1_1_type_without_formatter-members.html | 108 + ...1internal2_1_1_type_without_formatter.html | 166 + ...k_convertible_to_integer_01_4-members.html | 108 + ..._t_00_01k_convertible_to_integer_01_4.html | 166 + ...r_3_01_t_00_01k_protobuf_01_4-members.html | 108 + ...formatter_3_01_t_00_01k_protobuf_01_4.html | 166 + ...1_1internal_1_1_assert_helper-members.html | 110 + ...testing_1_1internal_1_1_assert_helper.html | 204 + ...sstesting_1_1internal_1_1_assert_helper.js | 6 + ...1internal_1_1_captured_stream-members.html | 110 + ...sting_1_1internal_1_1_captured_stream.html | 208 + ...testing_1_1internal_1_1_captured_stream.js | 6 + ...cartesian_product_generator10-members.html | 113 + ...nal_1_1_cartesian_product_generator10.html | 353 + ...ernal_1_1_cartesian_product_generator10.js | 8 + ...rnal_1_1_cartesian_product_generator10.png | Bin 0 -> 1727 bytes ..._cartesian_product_generator2-members.html | 113 + ...rnal_1_1_cartesian_product_generator2.html | 305 + ...ternal_1_1_cartesian_product_generator2.js | 8 + ...ernal_1_1_cartesian_product_generator2.png | Bin 0 -> 1316 bytes ..._cartesian_product_generator3-members.html | 113 + ...rnal_1_1_cartesian_product_generator3.html | 311 + ...ternal_1_1_cartesian_product_generator3.js | 8 + ...ernal_1_1_cartesian_product_generator3.png | Bin 0 -> 1371 bytes ..._cartesian_product_generator4-members.html | 113 + ...rnal_1_1_cartesian_product_generator4.html | 317 + ...ternal_1_1_cartesian_product_generator4.js | 8 + ...ernal_1_1_cartesian_product_generator4.png | Bin 0 -> 1418 bytes ..._cartesian_product_generator5-members.html | 113 + ...rnal_1_1_cartesian_product_generator5.html | 323 + ...ternal_1_1_cartesian_product_generator5.js | 8 + ...ernal_1_1_cartesian_product_generator5.png | Bin 0 -> 1456 bytes ..._cartesian_product_generator6-members.html | 113 + ...rnal_1_1_cartesian_product_generator6.html | 329 + ...ternal_1_1_cartesian_product_generator6.js | 8 + ...ernal_1_1_cartesian_product_generator6.png | Bin 0 -> 1497 bytes ..._cartesian_product_generator7-members.html | 113 + ...rnal_1_1_cartesian_product_generator7.html | 335 + ...ternal_1_1_cartesian_product_generator7.js | 8 + ...ernal_1_1_cartesian_product_generator7.png | Bin 0 -> 1512 bytes ..._cartesian_product_generator8-members.html | 113 + ...rnal_1_1_cartesian_product_generator8.html | 341 + ...ternal_1_1_cartesian_product_generator8.js | 8 + ...ernal_1_1_cartesian_product_generator8.png | Bin 0 -> 1558 bytes ..._cartesian_product_generator9-members.html | 113 + ...rnal_1_1_cartesian_product_generator9.html | 347 + ...ternal_1_1_cartesian_product_generator9.js | 8 + ...ernal_1_1_cartesian_product_generator9.png | Bin 0 -> 1675 bytes ..._1_cartesian_product_holder10-members.html | 109 + ...ternal_1_1_cartesian_product_holder10.html | 249 + ...internal_1_1_cartesian_product_holder10.js | 5 + ...1_1_cartesian_product_holder2-members.html | 109 + ...nternal_1_1_cartesian_product_holder2.html | 201 + ...1internal_1_1_cartesian_product_holder2.js | 5 + ...1_1_cartesian_product_holder3-members.html | 109 + ...nternal_1_1_cartesian_product_holder3.html | 207 + ...1internal_1_1_cartesian_product_holder3.js | 5 + ...1_1_cartesian_product_holder4-members.html | 109 + ...nternal_1_1_cartesian_product_holder4.html | 213 + ...1internal_1_1_cartesian_product_holder4.js | 5 + ...1_1_cartesian_product_holder5-members.html | 109 + ...nternal_1_1_cartesian_product_holder5.html | 219 + ...1internal_1_1_cartesian_product_holder5.js | 5 + ...1_1_cartesian_product_holder6-members.html | 109 + ...nternal_1_1_cartesian_product_holder6.html | 225 + ...1internal_1_1_cartesian_product_holder6.js | 5 + ...1_1_cartesian_product_holder7-members.html | 109 + ...nternal_1_1_cartesian_product_holder7.html | 231 + ...1internal_1_1_cartesian_product_holder7.js | 5 + ...1_1_cartesian_product_holder8-members.html | 109 + ...nternal_1_1_cartesian_product_holder8.html | 237 + ...1internal_1_1_cartesian_product_holder8.js | 5 + ...1_1_cartesian_product_holder9-members.html | 109 + ...nternal_1_1_cartesian_product_holder9.html | 243 + ...1internal_1_1_cartesian_product_holder9.js | 5 + ...ing_1_1internal_1_1_eq_helper-members.html | 109 + ...lasstesting_1_1internal_1_1_eq_helper.html | 235 + ...l_1_1_eq_helper_3_01true_01_4-members.html | 109 + ...1internal_1_1_eq_helper_3_01true_01_4.html | 240 + ...ng_1_1internal_1_1_flat_tuple-members.html | 111 + ...asstesting_1_1internal_1_1_flat_tuple.html | 263 + ...classtesting_1_1internal_1_1_flat_tuple.js | 7 + ...lasstesting_1_1internal_1_1_flat_tuple.png | Bin 0 -> 1421 bytes ..._1internal_1_1_floating_point-members.html | 127 + ...esting_1_1internal_1_1_floating_point.html | 731 ++ ...stesting_1_1internal_1_1_floating_point.js | 13 + ...nal_1_1_format_for_comparison-members.html | 108 + ...1_1internal_1_1_format_for_comparison.html | 156 + ...[_n]_00_01_other_operand_01_4-members.html | 108 + ...to_print[_n]_00_01_other_operand_01_4.html | 156 + ...ng_1_1internal_1_1_g_test_log-members.html | 110 + ...asstesting_1_1internal_1_1_g_test_log.html | 211 + ...classtesting_1_1internal_1_1_g_test_log.js | 6 + ...nternal_1_1_g_test_mutex_lock-members.html | 108 + ...ing_1_1internal_1_1_g_test_mutex_lock.html | 151 + ...sting_1_1internal_1_1_g_test_mutex_lock.js | 4 + ...1_1internal_1_1_ignored_value-members.html | 108 + ...testing_1_1internal_1_1_ignored_value.html | 154 + ...sstesting_1_1internal_1_1_ignored_value.js | 4 + ...al_1_1_implicitly_convertible-members.html | 108 + ..._1internal_1_1_implicitly_convertible.html | 152 + ...testing_1_1internal_1_1_mutex-members.html | 111 + .../classtesting_1_1internal_1_1_mutex.html | 238 + .../classtesting_1_1internal_1_1_mutex.js | 7 + ..._1_1internal_1_1_native_array-members.html | 118 + ...stesting_1_1internal_1_1_native_array.html | 474 ++ ...asstesting_1_1internal_1_1_native_array.js | 14 + ...1internal_1_1_param_generator-members.html | 113 + ...sting_1_1internal_1_1_param_generator.html | 308 + ...testing_1_1internal_1_1_param_generator.js | 9 + ...1_1_param_generator_interface-members.html | 111 + ...nternal_1_1_param_generator_interface.html | 253 + ...1internal_1_1_param_generator_interface.js | 7 + ...internal_1_1_param_generator_interface.png | Bin 0 -> 1634 bytes ..._1internal_1_1_param_iterator-members.html | 119 + ...esting_1_1internal_1_1_param_iterator.html | 476 ++ ...stesting_1_1internal_1_1_param_iterator.js | 15 + ..._1_1_param_iterator_interface-members.html | 113 + ...internal_1_1_param_iterator_interface.html | 302 + ..._1internal_1_1_param_iterator_interface.js | 9 + ..._1_parameterized_test_factory-members.html | 112 + ...ternal_1_1_parameterized_test_factory.html | 233 + ...internal_1_1_parameterized_test_factory.js | 6 + ...nternal_1_1_parameterized_test_factory.png | Bin 0 -> 1108 bytes ...parameterized_test_suite_info-members.html | 118 + ...nal_1_1_parameterized_test_suite_info.html | 460 ++ ...ernal_1_1_parameterized_test_suite_info.js | 12 + ...rnal_1_1_parameterized_test_suite_info.png | Bin 0 -> 1178 bytes ...eterized_test_suite_info_base-members.html | 112 + ..._1_parameterized_test_suite_info_base.html | 280 + ..._1_1_parameterized_test_suite_info_base.js | 8 + ...1_1_parameterized_test_suite_info_base.png | Bin 0 -> 1181 bytes ...meterized_test_suite_registry-members.html | 112 + ...1_1_parameterized_test_suite_registry.html | 295 + ...l_1_1_parameterized_test_suite_registry.js | 8 + ...sstesting_1_1internal_1_1_r_e-members.html | 116 + .../classtesting_1_1internal_1_1_r_e.html | 427 ++ doc/html/classtesting_1_1internal_1_1_r_e.js | 8 + ...esting_1_1internal_1_1_random-members.html | 111 + .../classtesting_1_1internal_1_1_random.html | 233 + .../classtesting_1_1internal_1_1_random.js | 6 + ...1internal_1_1_range_generator-members.html | 113 + ...sting_1_1internal_1_1_range_generator.html | 289 + ...testing_1_1internal_1_1_range_generator.js | 7 + ...esting_1_1internal_1_1_range_generator.png | Bin 0 -> 1101 bytes ...nternal_1_1_test_factory_base-members.html | 110 + ...ing_1_1internal_1_1_test_factory_base.html | 223 + ...sting_1_1internal_1_1_test_factory_base.js | 6 + ...ting_1_1internal_1_1_test_factory_base.png | Bin 0 -> 1606 bytes ...nternal_1_1_test_factory_impl-members.html | 110 + ...ing_1_1internal_1_1_test_factory_impl.html | 175 + ...sting_1_1internal_1_1_test_factory_impl.js | 4 + ...ting_1_1internal_1_1_test_factory_impl.png | Bin 0 -> 966 bytes ...nternal_1_1_test_meta_factory-members.html | 112 + ...ing_1_1internal_1_1_test_meta_factory.html | 227 + ...sting_1_1internal_1_1_test_meta_factory.js | 6 + ...ting_1_1internal_1_1_test_meta_factory.png | Bin 0 -> 1263 bytes ...al_1_1_test_meta_factory_base-members.html | 109 + ..._1internal_1_1_test_meta_factory_base.html | 186 + ..._1_1internal_1_1_test_meta_factory_base.js | 5 + ..._1_1internal_1_1_thread_local-members.html | 113 + ...stesting_1_1internal_1_1_thread_local.html | 313 + ...asstesting_1_1internal_1_1_thread_local.js | 9 + ..._1internal_1_1_type_id_helper-members.html | 108 + ...esting_1_1internal_1_1_type_id_helper.html | 152 + ..._1internal_1_1_type_with_size-members.html | 108 + ...esting_1_1internal_1_1_type_with_size.html | 144 + ...stesting_1_1internal_1_1_type_with_size.js | 4 + ...1_1_type_with_size_3_014_01_4-members.html | 109 + ...nternal_1_1_type_with_size_3_014_01_4.html | 160 + ...1internal_1_1_type_with_size_3_014_01_4.js | 5 + ...1_1_type_with_size_3_018_01_4-members.html | 109 + ...nternal_1_1_type_with_size_3_018_01_4.html | 160 + ...1internal_1_1_type_with_size_3_018_01_4.js | 5 + ...nternal_1_1_universal_printer-members.html | 108 + ...ing_1_1internal_1_1_universal_printer.html | 166 + ...niversal_printer_3_01_t[_n]_4-members.html | 108 + ...al_1_1_universal_printer_3_01_t[_n]_4.html | 166 + ...rsal_printer_3_01_t_01_6_01_4-members.html | 108 + ..._1_universal_printer_3_01_t_01_6_01_4.html | 166 + ...l_1_1_universal_terse_printer-members.html | 108 + ...1internal_1_1_universal_terse_printer.html | 166 + ...al_terse_printer_3_01_t[_n]_4-members.html | 108 + ..._universal_terse_printer_3_01_t[_n]_4.html | 166 + ...erse_printer_3_01_t_01_6_01_4-members.html | 108 + ...versal_terse_printer_3_01_t_01_6_01_4.html | 166 + ...se_printer_3_01char_01_5_01_4-members.html | 108 + ...rsal_terse_printer_3_01char_01_5_01_4.html | 164 + ...er_3_01const_01char_01_5_01_4-members.html | 108 + ...se_printer_3_01const_01char_01_5_01_4.html | 164 + ..._01const_01wchar__t_01_5_01_4-members.html | 108 + ...rinter_3_01const_01wchar__t_01_5_01_4.html | 164 + ...rinter_3_01wchar__t_01_5_01_4-members.html | 108 + ..._terse_printer_3_01wchar__t_01_5_01_4.html | 164 + ...g_1_1internal_1_1_value_array-members.html | 109 + ...sstesting_1_1internal_1_1_value_array.html | 191 + ...lasstesting_1_1internal_1_1_value_array.js | 5 + ...s_in_iterator_range_generator-members.html | 113 + ..._1_values_in_iterator_range_generator.html | 286 + ..._1_1_values_in_iterator_range_generator.js | 7 + ...1_1_values_in_iterator_range_generator.png | Bin 0 -> 1109 bytes doc/html/classutl_1_1__1wire__i-members.html | 147 + doc/html/classutl_1_1__1wire__i.html | 1480 ++++ doc/html/classutl_1_1__1wire__i.js | 47 + doc/html/classutl_1_1__1wire__i.png | Bin 0 -> 660 bytes ...wire__i_3_01virtual__tag_01_4-members.html | 147 + ...l_1_1__1wire__i_3_01virtual__tag_01_4.html | 1412 ++++ ...utl_1_1__1wire__i_3_01virtual__tag_01_4.js | 47 + ...tl_1_1__1wire__i_3_01virtual__tag_01_4.png | Bin 0 -> 757 bytes .../classutl_1_1__1wire__id__t-members.html | 158 + doc/html/classutl_1_1__1wire__id__t.html | 523 ++ doc/html/classutl_1_1__1wire__id__t.js | 12 + doc/html/classutl_1_1__1wire__id__t.png | Bin 0 -> 487 bytes .../classutl_1_1__1wire__uart__i-members.html | 140 + doc/html/classutl_1_1__1wire__uart__i.html | 710 ++ doc/html/classutl_1_1__1wire__uart__i.js | 22 + doc/html/classutl_1_1__1wire__uart__i.png | Bin 0 -> 762 bytes ...uart__i_3_01virtual__tag_01_4-members.html | 138 + ..._1wire__uart__i_3_01virtual__tag_01_4.html | 626 ++ ...1__1wire__uart__i_3_01virtual__tag_01_4.js | 20 + ...__1wire__uart__i_3_01virtual__tag_01_4.png | Bin 0 -> 756 bytes doc/html/classutl_1_1i2c__bb__i-members.html | 134 + doc/html/classutl_1_1i2c__bb__i.html | 817 ++ doc/html/classutl_1_1i2c__bb__i.js | 23 + doc/html/classutl_1_1i2c__bb__i.png | Bin 0 -> 676 bytes ...__bb__i_3_01virtual__tag_01_4-members.html | 132 + ...l_1_1i2c__bb__i_3_01virtual__tag_01_4.html | 732 ++ ...utl_1_1i2c__bb__i_3_01virtual__tag_01_4.js | 21 + ...tl_1_1i2c__bb__i_3_01virtual__tag_01_4.png | Bin 0 -> 702 bytes doc/html/classutl_1_1i2c__i-members.html | 126 + doc/html/classutl_1_1i2c__i.html | 853 +++ doc/html/classutl_1_1i2c__i.js | 26 + doc/html/classutl_1_1i2c__i.png | Bin 0 -> 594 bytes ...1i2c__i_3_01virtual__tag_01_4-members.html | 125 + ...ssutl_1_1i2c__i_3_01virtual__tag_01_4.html | 788 ++ ...lassutl_1_1i2c__i_3_01virtual__tag_01_4.js | 25 + ...assutl_1_1i2c__i_3_01virtual__tag_01_4.png | Bin 0 -> 700 bytes doc/html/classutl_1_1idx__dev-members.html | 144 + doc/html/classutl_1_1idx__dev.html | 1489 ++++ doc/html/classutl_1_1idx__dev.js | 40 + ...a__t_00_01idx__t_00_01_n_01_4-members.html | 143 + ...00_01data__t_00_01idx__t_00_01_n_01_4.html | 1438 ++++ ...g_00_01data__t_00_01idx__t_00_01_n_01_4.js | 39 + doc/html/classutl_1_1in__dev-members.html | 131 + doc/html/classutl_1_1in__dev.html | 946 +++ doc/html/classutl_1_1in__dev.js | 27 + ...1data__t_00_01streamsize_01_4-members.html | 130 + ...tag_00_01data__t_00_01streamsize_01_4.html | 901 +++ ...__tag_00_01data__t_00_01streamsize_01_4.js | 26 + doc/html/classutl_1_1inbuf__dev-members.html | 133 + doc/html/classutl_1_1inbuf__dev.html | 1009 +++ doc/html/classutl_1_1inbuf__dev.js | 29 + ...1data__t_00_01streamsize_01_4-members.html | 132 + ...tag_00_01data__t_00_01streamsize_01_4.html | 965 +++ ...__tag_00_01data__t_00_01streamsize_01_4.js | 28 + doc/html/classutl_1_1indev__it-members.html | 137 + doc/html/classutl_1_1indev__it.html | 1033 +++ doc/html/classutl_1_1indev__it.js | 34 + doc/html/classutl_1_1iodev__it-members.html | 137 + doc/html/classutl_1_1iodev__it.html | 1035 +++ doc/html/classutl_1_1iodev__it.js | 35 + .../classutl_1_1istreamdev__it-members.html | 132 + doc/html/classutl_1_1istreamdev__it.html | 786 ++ doc/html/classutl_1_1istreamdev__it.js | 29 + .../classutl_1_1ostream__dev-members.html | 131 + doc/html/classutl_1_1ostream__dev.html | 942 +++ doc/html/classutl_1_1ostream__dev.js | 27 + ...irtual__tag_00_01data__t_01_4-members.html | 130 + ...ev_3_01virtual__tag_00_01data__t_01_4.html | 889 +++ ..._dev_3_01virtual__tag_00_01data__t_01_4.js | 26 + .../classutl_1_1ostreamdev__it-members.html | 122 + doc/html/classutl_1_1ostreamdev__it.html | 561 ++ doc/html/classutl_1_1ostreamdev__it.js | 18 + doc/html/classutl_1_1out__dev-members.html | 131 + doc/html/classutl_1_1out__dev.html | 946 +++ doc/html/classutl_1_1out__dev.js | 27 + ...1data__t_00_01streamsize_01_4-members.html | 130 + ...tag_00_01data__t_00_01streamsize_01_4.html | 903 +++ ...__tag_00_01data__t_00_01streamsize_01_4.js | 26 + doc/html/classutl_1_1outdev__it-members.html | 129 + doc/html/classutl_1_1outdev__it.html | 761 ++ doc/html/classutl_1_1outdev__it.js | 26 + doc/html/classutl_1_1spi__bb__i-members.html | 138 + doc/html/classutl_1_1spi__bb__i.html | 901 +++ doc/html/classutl_1_1spi__bb__i.js | 24 + doc/html/classutl_1_1spi__bb__i.png | Bin 0 -> 1109 bytes ..._c_p_h_a_00_01_bit_order_01_4-members.html | 136 + ..._l_00_01_c_p_h_a_00_01_bit_order_01_4.html | 839 ++ ..._o_l_00_01_c_p_h_a_00_01_bit_order_01_4.js | 22 + ...o_l_00_01_c_p_h_a_00_01_bit_order_01_4.png | Bin 0 -> 986 bytes doc/html/classutl_1_1spi__i-members.html | 122 + doc/html/classutl_1_1spi__i.html | 659 ++ doc/html/classutl_1_1spi__i.js | 18 + doc/html/classutl_1_1spi__i.png | Bin 0 -> 877 bytes ...1spi__i_3_01virtual__tag_01_4-members.html | 121 + ...ssutl_1_1spi__i_3_01virtual__tag_01_4.html | 608 ++ ...lassutl_1_1spi__i_3_01virtual__tag_01_4.js | 17 + ...assutl_1_1spi__i_3_01virtual__tag_01_4.png | Bin 0 -> 992 bytes doc/html/closed.png | Bin 0 -> 132 bytes doc/html/concepts_8h.html | 147 + doc/html/concepts_8h.js | 4 + doc/html/concepts_8h_source.html | 109 + doc/html/crtp_8h.html | 154 + doc/html/crtp_8h.js | 6 + doc/html/crtp_8h_source.html | 109 + doc/html/defines_8h.html | 131 + doc/html/defines_8h.js | 6 + doc/html/defines_8h_source.html | 105 + doc/html/detection_8h.html | 187 + doc/html/detection_8h.js | 17 + doc/html/detection_8h_source.html | 128 + doc/html/dev__iterators_8h.html | 261 + doc/html/dev__iterators_8h.js | 42 + doc/html/dev__iterators_8h_source.html | 251 + .../dir_13e138d54eb8818da29c3992edef070a.html | 119 + .../dir_13e138d54eb8818da29c3992edef070a.js | 6 + .../dir_1de759a74730efb26e16b92a33818a86.html | 120 + .../dir_1de759a74730efb26e16b92a33818a86.js | 7 + .../dir_24134ffae0315e39a5b4fb4f5ac472ee.html | 123 + .../dir_24134ffae0315e39a5b4fb4f5ac472ee.js | 10 + .../dir_2b272fa693f0990de7cf333b4d9023f8.html | 114 + .../dir_2b272fa693f0990de7cf333b4d9023f8.js | 5 + .../dir_4b85ac8f363cc57fa06fe00d732b3ef4.html | 111 + .../dir_4b85ac8f363cc57fa06fe00d732b3ef4.js | 4 + .../dir_5aedf2f82d2f4f13addc24fda7ca3c64.html | 111 + .../dir_5aedf2f82d2f4f13addc24fda7ca3c64.js | 4 + .../dir_5f9a51ed898ae26d530fbf5192dc35b6.html | 120 + .../dir_5f9a51ed898ae26d530fbf5192dc35b6.js | 7 + .../dir_82754f54d9380477ef02477185c1f103.html | 123 + .../dir_82754f54d9380477ef02477185c1f103.js | 10 + .../dir_8411d781812971a63652b25f8ca24477.html | 127 + .../dir_8411d781812971a63652b25f8ca24477.js | 12 + .../dir_8e256609955cbc0738929bb20e4749b4.html | 111 + .../dir_8e256609955cbc0738929bb20e4749b4.js | 4 + .../dir_9613c8d8aa19c2ea309ba544861172c5.html | 111 + .../dir_9613c8d8aa19c2ea309ba544861172c5.js | 4 + .../dir_a96de09a69cea6234edc1a1514d133f0.html | 113 + .../dir_a96de09a69cea6234edc1a1514d133f0.js | 5 + .../dir_aaec33bad2bb7a5d6c86281ead709be5.html | 115 + .../dir_aaec33bad2bb7a5d6c86281ead709be5.js | 6 + .../dir_ab041ef57e3839706d1cbf08a477bd80.html | 116 + .../dir_ab041ef57e3839706d1cbf08a477bd80.js | 5 + .../dir_b27f91983daa7c88d19acbf32a947465.html | 113 + .../dir_b27f91983daa7c88d19acbf32a947465.js | 5 + .../dir_b2ad3c1a6521a4924fa9194d98c323e2.html | 130 + .../dir_b2ad3c1a6521a4924fa9194d98c323e2.js | 21 + .../dir_c2811dd2f770757e67563302be4130d6.html | 111 + .../dir_c2811dd2f770757e67563302be4130d6.js | 4 + .../dir_c6a55aeb35dd92d90cdd3b5869981960.html | 134 + .../dir_c6a55aeb35dd92d90cdd3b5869981960.js | 12 + .../dir_cd2b5ca7f5fdf6a80655358f064ed410.html | 112 + .../dir_cd2b5ca7f5fdf6a80655358f064ed410.js | 4 + .../dir_d44c64559bbebec7f509842c48db8b23.html | 111 + .../dir_d44c64559bbebec7f509842c48db8b23.js | 4 + .../dir_d84abbe486a7f5f39e3c9088ffc1760a.html | 127 + .../dir_d84abbe486a7f5f39e3c9088ffc1760a.js | 12 + .../dir_e9da18de27e34a68f4aee9f9a960d991.html | 127 + .../dir_e9da18de27e34a68f4aee9f9a960d991.js | 12 + .../dir_ec678fe2ad4670066af397af03cd2f43.html | 113 + .../dir_ec678fe2ad4670066af397af03cd2f43.js | 5 + .../dir_ffc5af52851d01e73a12da661e220384.html | 116 + .../dir_ffc5af52851d01e73a12da661e220384.js | 5 + doc/html/doc.png | Bin 0 -> 746 bytes doc/html/doxygen.css | 1596 ++++ doc/html/doxygen.png | Bin 0 -> 3779 bytes doc/html/dynsections.js | 127 + doc/html/examples.html | 114 + doc/html/examples.js | 7 + doc/html/files.html | 150 + doc/html/files_dup.js | 4 + doc/html/folderclosed.png | Bin 0 -> 616 bytes doc/html/folderopen.png | Bin 0 -> 597 bytes doc/html/functions.html | 218 + doc/html/functions_0x7e.html | 151 + doc/html/functions_a.html | 134 + doc/html/functions_b.html | 154 + doc/html/functions_c.html | 267 + doc/html/functions_d.html | 144 + doc/html/functions_dup.js | 23 + doc/html/functions_e.html | 131 + doc/html/functions_enum.html | 128 + doc/html/functions_eval.html | 183 + doc/html/functions_f.html | 119 + doc/html/functions_func.html | 179 + doc/html/functions_func.js | 22 + doc/html/functions_func_0x7e.html | 151 + doc/html/functions_func_a.html | 108 + doc/html/functions_func_b.html | 129 + doc/html/functions_func_c.html | 177 + doc/html/functions_func_d.html | 114 + doc/html/functions_func_e.html | 123 + doc/html/functions_func_f.html | 119 + doc/html/functions_func_g.html | 120 + doc/html/functions_func_h.html | 127 + doc/html/functions_func_i.html | 141 + doc/html/functions_func_k.html | 107 + doc/html/functions_func_l.html | 113 + doc/html/functions_func_m.html | 124 + doc/html/functions_func_n.html | 114 + doc/html/functions_func_o.html | 218 + doc/html/functions_func_p.html | 126 + doc/html/functions_func_r.html | 130 + doc/html/functions_func_s.html | 162 + doc/html/functions_func_t.html | 112 + doc/html/functions_func_u.html | 112 + doc/html/functions_func_v.html | 110 + doc/html/functions_g.html | 120 + doc/html/functions_h.html | 107 + doc/html/functions_i.html | 192 + doc/html/functions_k.html | 131 + doc/html/functions_l.html | 114 + doc/html/functions_m.html | 124 + doc/html/functions_n.html | 121 + doc/html/functions_o.html | 233 + doc/html/functions_p.html | 152 + doc/html/functions_r.html | 144 + doc/html/functions_rela.html | 130 + doc/html/functions_s.html | 196 + doc/html/functions_t.html | 218 + doc/html/functions_type.html | 130 + doc/html/functions_type.js | 14 + doc/html/functions_type_b.html | 107 + doc/html/functions_type_c.html | 130 + doc/html/functions_type_d.html | 130 + doc/html/functions_type_h.html | 107 + doc/html/functions_type_i.html | 149 + doc/html/functions_type_o.html | 112 + doc/html/functions_type_p.html | 126 + doc/html/functions_type_r.html | 118 + doc/html/functions_type_s.html | 116 + doc/html/functions_type_t.html | 210 + doc/html/functions_type_u.html | 109 + doc/html/functions_type_v.html | 114 + doc/html/functions_u.html | 116 + doc/html/functions_v.html | 131 + doc/html/functions_vars.html | 209 + doc/html/globals.html | 156 + doc/html/globals_a.html | 200 + doc/html/globals_c.html | 131 + doc/html/globals_defs.html | 156 + doc/html/globals_defs.js | 13 + doc/html/globals_defs_a.html | 200 + doc/html/globals_defs_c.html | 131 + doc/html/globals_defs_e.html | 206 + doc/html/globals_defs_f.html | 110 + doc/html/globals_defs_g.html | 513 ++ doc/html/globals_defs_i.html | 110 + doc/html/globals_defs_s.html | 110 + doc/html/globals_defs_t.html | 113 + doc/html/globals_defs_u.html | 122 + doc/html/globals_dup.js | 15 + doc/html/globals_e.html | 206 + doc/html/globals_f.html | 110 + doc/html/globals_func.html | 115 + doc/html/globals_g.html | 516 ++ doc/html/globals_i.html | 110 + doc/html/globals_m.html | 107 + doc/html/globals_r.html | 107 + doc/html/globals_s.html | 110 + doc/html/globals_t.html | 113 + doc/html/globals_u.html | 122 + doc/html/group__concepts.html | 179 + doc/html/group__concepts.js | 7 + doc/html/group__crtp.html | 115 + doc/html/group__crtp.js | 4 + doc/html/group__detection.html | 171 + doc/html/group__detection.js | 6 + doc/html/group__integral.html | 246 + doc/html/group__integral.js | 12 + doc/html/group__invoke.html | 114 + doc/html/group__invoke.js | 4 + doc/html/group__iterators.html | 114 + doc/html/group__iterators.js | 4 + doc/html/group__logic.html | 115 + doc/html/group__logic.js | 4 + doc/html/group__sfinae.html | 116 + doc/html/group__sfinae.js | 4 + doc/html/group__type.html | 316 + doc/html/group__type.js | 25 + doc/html/group__typelist.html | 114 + doc/html/group__typelist.js | 4 + doc/html/group__version.html | 365 + doc/html/group__version.js | 16 + doc/html/gtest-all_8cc.html | 578 ++ doc/html/gtest-all_8cc.js | 57 + doc/html/gtest-all_8cc_source.html | 284 + doc/html/gtest_8h.html | 6734 +++++++++++++++++ doc/html/gtest_8h.js | 587 ++ doc/html/gtest_8h_source.html | 723 ++ doc/html/hierarchy.html | 336 + doc/html/hierarchy.js | 257 + doc/html/i2c_8h.html | 170 + doc/html/i2c_8h.js | 13 + doc/html/i2c_8h_source.html | 151 + doc/html/i2c__bb_8h.html | 140 + doc/html/i2c__bb_8h_source.html | 136 + doc/html/id_8h.html | 166 + doc/html/id_8h.js | 13 + doc/html/id_8h_source.html | 161 + doc/html/idx__dev_8h.html | 184 + doc/html/idx__dev_8h.js | 16 + doc/html/idx__dev_8h_source.html | 172 + doc/html/impl_8h.html | 120 + doc/html/impl_8h_source.html | 107 + doc/html/in__dev_8h.html | 184 + doc/html/in__dev_8h.js | 16 + doc/html/in__dev_8h_source.html | 154 + doc/html/inbuf__dev_8h.html | 184 + doc/html/inbuf__dev_8h.js | 16 + doc/html/inbuf__dev_8h_source.html | 158 + doc/html/index.html | 104 + doc/html/integral_8h.html | 222 + doc/html/integral_8h.js | 28 + doc/html/integral_8h_source.html | 133 + doc/html/iterators_8h.html | 138 + doc/html/iterators_8h.js | 6 + doc/html/iterators_8h_source.html | 115 + doc/html/jquery.js | 115 + doc/html/lib_2gtest_2gtest-all_8d.html | 107 + doc/html/lib_2gtest_2gtest-all_8d_source.html | 105 + doc/html/main_8cpp.html | 158 + doc/html/main_8cpp.js | 4 + doc/html/main_8cpp_source.html | 110 + doc/html/md__r_e_a_d_m_e.html | 104 + doc/html/menu.js | 50 + doc/html/menudata.js | 176 + doc/html/meta_2invoke_8h.html | 225 + doc/html/meta_2invoke_8h.js | 39 + doc/html/meta_2invoke_8h_source.html | 166 + doc/html/meta_8h.html | 125 + doc/html/meta_8h_source.html | 112 + doc/html/modules.html | 119 + doc/html/modules.js | 13 + doc/html/namespace_tmeta_basic.html | 500 ++ doc/html/namespace_tmeta_basic.js | 4 + doc/html/namespace_tmeta_detection.html | 404 + doc/html/namespace_tmeta_detection.js | 7 + doc/html/namespace_tmeta_typelist.html | 516 ++ doc/html/namespace_tmeta_typelist.js | 11 + doc/html/namespacemembers.html | 149 + doc/html/namespacemembers_a.html | 143 + doc/html/namespacemembers_b.html | 131 + doc/html/namespacemembers_c.html | 177 + doc/html/namespacemembers_d.html | 137 + doc/html/namespacemembers_dup.js | 23 + doc/html/namespacemembers_e.html | 122 + doc/html/namespacemembers_enum.html | 111 + doc/html/namespacemembers_eval.html | 168 + doc/html/namespacemembers_f.html | 128 + doc/html/namespacemembers_func.html | 177 + doc/html/namespacemembers_func.js | 22 + doc/html/namespacemembers_func_a.html | 140 + doc/html/namespacemembers_func_b.html | 110 + doc/html/namespacemembers_func_c.html | 161 + doc/html/namespacemembers_func_d.html | 125 + doc/html/namespacemembers_func_e.html | 107 + doc/html/namespacemembers_func_f.html | 134 + doc/html/namespacemembers_func_g.html | 165 + doc/html/namespacemembers_func_i.html | 167 + doc/html/namespacemembers_func_l.html | 107 + doc/html/namespacemembers_func_m.html | 107 + doc/html/namespacemembers_func_o.html | 143 + doc/html/namespacemembers_func_p.html | 131 + doc/html/namespacemembers_func_r.html | 122 + doc/html/namespacemembers_func_s.html | 137 + doc/html/namespacemembers_func_t.html | 132 + doc/html/namespacemembers_func_u.html | 116 + doc/html/namespacemembers_func_v.html | 110 + doc/html/namespacemembers_func_w.html | 107 + doc/html/namespacemembers_g.html | 107 + doc/html/namespacemembers_i.html | 222 + doc/html/namespacemembers_k.html | 170 + doc/html/namespacemembers_l.html | 107 + doc/html/namespacemembers_m.html | 125 + doc/html/namespacemembers_n.html | 122 + doc/html/namespacemembers_o.html | 134 + doc/html/namespacemembers_p.html | 125 + doc/html/namespacemembers_r.html | 134 + doc/html/namespacemembers_s.html | 164 + doc/html/namespacemembers_t.html | 228 + doc/html/namespacemembers_type.html | 710 ++ doc/html/namespacemembers_type.js | 22 + doc/html/namespacemembers_type_a.html | 137 + doc/html/namespacemembers_type_b.html | 128 + doc/html/namespacemembers_type_c.html | 150 + doc/html/namespacemembers_type_d.html | 131 + doc/html/namespacemembers_type_e.html | 116 + doc/html/namespacemembers_type_f.html | 131 + doc/html/namespacemembers_type_i.html | 206 + doc/html/namespacemembers_type_l.html | 107 + doc/html/namespacemembers_type_m.html | 119 + doc/html/namespacemembers_type_n.html | 122 + doc/html/namespacemembers_type_o.html | 107 + doc/html/namespacemembers_type_p.html | 125 + doc/html/namespacemembers_type_r.html | 125 + doc/html/namespacemembers_type_s.html | 149 + doc/html/namespacemembers_type_t.html | 265 + doc/html/namespacemembers_type_u.html | 132 + doc/html/namespacemembers_type_v.html | 110 + doc/html/namespacemembers_type_w.html | 113 + doc/html/namespacemembers_u.html | 129 + doc/html/namespacemembers_v.html | 110 + doc/html/namespacemembers_vars.html | 288 + doc/html/namespacemembers_w.html | 116 + doc/html/namespaceproto2.html | 105 + doc/html/namespaces.html | 142 + doc/html/namespaces_dup.js | 4 + doc/html/namespacetest__1w.html | 218 + doc/html/namespacetest__1w.js | 5 + doc/html/namespacetest__concepts.html | 870 +++ doc/html/namespacetest__concepts.js | 17 + doc/html/namespacetest__i2c.html | 216 + doc/html/namespacetest__i2c.js | 4 + doc/html/namespacetest__meta.html | 174 + doc/html/namespacetest__meta.js | 5 + doc/html/namespacetest__ostream__dev.html | 480 ++ doc/html/namespacetest__ostream__dev.js | 7 + doc/html/namespacetest__spi.html | 218 + doc/html/namespacetest__spi.js | 5 + doc/html/namespacetesting.html | 2114 ++++++ doc/html/namespacetesting.js | 21 + doc/html/namespacetesting_1_1internal.html | 5471 +++++++++++++ doc/html/namespacetesting_1_1internal.js | 118 + doc/html/namespacetesting_1_1internal2.html | 285 + doc/html/namespacetesting_1_1internal2.js | 6 + ...testing_1_1internal_1_1edit__distance.html | 241 + ...namespacetesting_1_1internal_1_1posix.html | 808 ++ doc/html/namespacetesting__internal.html | 147 + doc/html/namespaceutl.html | 3154 ++++++++ doc/html/namespaceutl.js | 62 + doc/html/namespaceutl_1_1__1wire__i__det.html | 643 ++ doc/html/namespaceutl_1_1__1wire__i__det.js | 5 + doc/html/namespaceutl_1_1common__impl.html | 339 + doc/html/namespaceutl_1_1common__impl.js | 29 + doc/html/namespaceutl_1_1detail.html | 251 + doc/html/namespaceutl_1_1detail.js | 8 + doc/html/namespaceutl_1_1details.html | 218 + doc/html/namespaceutl_1_1details.js | 11 + doc/html/namespaceutl_1_1i2c__i__details.html | 248 + doc/html/namespaceutl_1_1i2c__i__details.js | 5 + .../namespaceutl_1_1idx__dev__details.html | 292 + doc/html/namespaceutl_1_1idx__dev__details.js | 5 + .../namespaceutl_1_1idxdev__it__details.html | 119 + .../namespaceutl_1_1idxdev__it__details.js | 5 + .../namespaceutl_1_1in__dev__details.html | 290 + doc/html/namespaceutl_1_1in__dev__details.js | 5 + .../namespaceutl_1_1inbuf__dev__details.html | 292 + .../namespaceutl_1_1inbuf__dev__details.js | 5 + .../namespaceutl_1_1indev__it__details.html | 119 + .../namespaceutl_1_1indev__it__details.js | 5 + doc/html/namespaceutl_1_1meta.html | 2734 +++++++ doc/html/namespaceutl_1_1meta.js | 39 + .../namespaceutl_1_1meta_1_1apply__impl.html | 121 + .../namespaceutl_1_1meta_1_1apply__impl.js | 6 + .../namespaceutl_1_1meta_1_1at__impl.html | 150 + doc/html/namespaceutl_1_1meta_1_1at__impl.js | 8 + .../namespaceutl_1_1meta_1_1back__impl.html | 117 + .../namespaceutl_1_1meta_1_1back__impl.js | 5 + .../namespaceutl_1_1meta_1_1cat__impl.html | 123 + doc/html/namespaceutl_1_1meta_1_1cat__impl.js | 8 + ...mespaceutl_1_1meta_1_1count__if__impl.html | 119 + ...namespaceutl_1_1meta_1_1count__if__impl.js | 6 + doc/html/namespaceutl_1_1meta_1_1detail.html | 208 + doc/html/namespaceutl_1_1meta_1_1detail.js | 32 + .../namespaceutl_1_1meta_1_1filter__impl.html | 119 + .../namespaceutl_1_1meta_1_1filter__impl.js | 6 + ...amespaceutl_1_1meta_1_1find__if__impl.html | 119 + .../namespaceutl_1_1meta_1_1find__if__impl.js | 6 + .../namespaceutl_1_1meta_1_1fold__impl.html | 119 + .../namespaceutl_1_1meta_1_1fold__impl.js | 6 + .../namespaceutl_1_1meta_1_1front__impl.html | 117 + .../namespaceutl_1_1meta_1_1front__impl.js | 5 + ...mespaceutl_1_1meta_1_1pop__back__impl.html | 115 + ...namespaceutl_1_1meta_1_1pop__back__impl.js | 4 + ...espaceutl_1_1meta_1_1pop__front__impl.html | 117 + ...amespaceutl_1_1meta_1_1pop__front__impl.js | 5 + ...spaceutl_1_1meta_1_1replace__if__impl.html | 119 + ...mespaceutl_1_1meta_1_1replace__if__impl.js | 6 + ...mespaceutl_1_1meta_1_1rev__fold__impl.html | 119 + ...namespaceutl_1_1meta_1_1rev__fold__impl.js | 7 + ...namespaceutl_1_1meta_1_1reverse__impl.html | 115 + .../namespaceutl_1_1meta_1_1reverse__impl.js | 4 + ...amespaceutl_1_1meta_1_1seek__if__impl.html | 119 + .../namespaceutl_1_1meta_1_1seek__if__impl.js | 6 + ...mespaceutl_1_1meta_1_1transform__impl.html | 119 + ...namespaceutl_1_1meta_1_1transform__impl.js | 6 + ...eutl_1_1meta_1_1transform__lazy__impl.html | 119 + ...aceutl_1_1meta_1_1transform__lazy__impl.js | 6 + .../namespaceutl_1_1out__dev__details.html | 292 + doc/html/namespaceutl_1_1out__dev__details.js | 5 + .../namespaceutl_1_1outdev__it__details.html | 119 + .../namespaceutl_1_1outdev__it__details.js | 5 + doc/html/namespaceutl_1_1spi.html | 222 + doc/html/namespaceutl_1_1spi__i__details.html | 208 + doc/html/namespaceutl_1_1spi__i__details.js | 5 + doc/html/nav_f.png | Bin 0 -> 153 bytes doc/html/nav_g.png | Bin 0 -> 95 bytes doc/html/nav_h.png | Bin 0 -> 98 bytes doc/html/navtree.css | 146 + doc/html/navtree.js | 540 ++ doc/html/navtreedata.js | 76 + doc/html/navtreeindex0.js | 253 + doc/html/navtreeindex1.js | 253 + doc/html/navtreeindex10.js | 253 + doc/html/navtreeindex11.js | 86 + doc/html/navtreeindex2.js | 253 + doc/html/navtreeindex3.js | 253 + doc/html/navtreeindex4.js | 253 + doc/html/navtreeindex5.js | 253 + doc/html/navtreeindex6.js | 174 + doc/html/navtreeindex7.js | 253 + doc/html/navtreeindex8.js | 253 + doc/html/navtreeindex9.js | 253 + doc/html/open.png | Bin 0 -> 123 bytes doc/html/operations_8h.html | 260 + doc/html/operations_8h.js | 38 + doc/html/operations_8h_source.html | 149 + doc/html/ostream__dev_8h.html | 140 + doc/html/ostream__dev_8h_source.html | 144 + doc/html/out__dev_8h.html | 184 + doc/html/out__dev_8h.js | 16 + doc/html/out__dev_8h_source.html | 160 + doc/html/pages.html | 109 + doc/html/resize.js | 136 + doc/html/search/all_0.html | 30 + doc/html/search/all_0.js | 76 + doc/html/search/all_1.html | 30 + doc/html/search/all_1.js | 29 + doc/html/search/all_10.html | 30 + doc/html/search/all_10.js | 31 + doc/html/search/all_11.html | 30 + doc/html/search/all_11.js | 56 + doc/html/search/all_12.html | 30 + doc/html/search/all_12.js | 54 + doc/html/search/all_13.html | 30 + doc/html/search/all_13.js | 54 + doc/html/search/all_14.html | 30 + doc/html/search/all_14.js | 14 + doc/html/search/all_15.html | 30 + doc/html/search/all_15.js | 11 + doc/html/search/all_16.html | 30 + doc/html/search/all_16.js | 15 + doc/html/search/all_17.html | 30 + doc/html/search/all_17.js | 46 + doc/html/search/all_2.html | 30 + doc/html/search/all_2.js | 28 + doc/html/search/all_3.html | 30 + doc/html/search/all_3.js | 88 + doc/html/search/all_4.html | 30 + doc/html/search/all_4.js | 31 + doc/html/search/all_5.html | 30 + doc/html/search/all_5.js | 12 + doc/html/search/all_6.html | 30 + doc/html/search/all_6.js | 26 + doc/html/search/all_7.html | 30 + doc/html/search/all_7.js | 5 + doc/html/search/all_8.html | 30 + doc/html/search/all_8.js | 5 + doc/html/search/all_9.html | 30 + doc/html/search/all_9.js | 122 + doc/html/search/all_a.html | 30 + doc/html/search/all_a.js | 7 + doc/html/search/all_b.html | 30 + doc/html/search/all_b.js | 17 + doc/html/search/all_c.html | 30 + doc/html/search/all_c.js | 16 + doc/html/search/all_d.html | 30 + doc/html/search/all_d.js | 41 + doc/html/search/all_e.html | 30 + doc/html/search/all_e.js | 19 + doc/html/search/all_f.html | 30 + doc/html/search/all_f.js | 5 + doc/html/search/classes_0.html | 30 + doc/html/search/classes_0.js | 45 + doc/html/search/classes_1.html | 30 + doc/html/search/classes_1.js | 14 + doc/html/search/classes_10.html | 30 + doc/html/search/classes_10.js | 22 + doc/html/search/classes_11.html | 30 + doc/html/search/classes_11.js | 39 + doc/html/search/classes_12.html | 30 + doc/html/search/classes_12.js | 14 + doc/html/search/classes_13.html | 30 + doc/html/search/classes_13.js | 6 + doc/html/search/classes_14.html | 30 + doc/html/search/classes_14.js | 9 + doc/html/search/classes_2.html | 30 + doc/html/search/classes_2.js | 9 + doc/html/search/classes_3.html | 30 + doc/html/search/classes_3.js | 25 + doc/html/search/classes_4.html | 30 + doc/html/search/classes_4.js | 10 + doc/html/search/classes_5.html | 30 + doc/html/search/classes_5.js | 15 + doc/html/search/classes_6.html | 30 + doc/html/search/classes_6.js | 64 + doc/html/search/classes_7.html | 30 + doc/html/search/classes_7.js | 6 + doc/html/search/classes_8.html | 30 + doc/html/search/classes_8.js | 10 + doc/html/search/classes_9.html | 30 + doc/html/search/classes_9.js | 6 + doc/html/search/classes_a.html | 30 + doc/html/search/classes_a.js | 5 + doc/html/search/classes_b.html | 30 + doc/html/search/classes_b.js | 12 + doc/html/search/classes_c.html | 30 + doc/html/search/classes_c.js | 15 + doc/html/search/classes_d.html | 30 + doc/html/search/classes_d.js | 15 + doc/html/search/classes_e.html | 30 + doc/html/search/classes_e.js | 5 + doc/html/search/classes_f.html | 30 + doc/html/search/classes_f.js | 7 + doc/html/search/close.png | Bin 0 -> 273 bytes doc/html/search/defines_0.html | 30 + doc/html/search/defines_0.js | 5 + doc/html/search/defines_1.html | 30 + doc/html/search/defines_1.js | 35 + doc/html/search/defines_2.html | 30 + doc/html/search/defines_2.js | 37 + doc/html/search/defines_3.html | 30 + doc/html/search/defines_3.js | 5 + doc/html/search/defines_4.html | 30 + doc/html/search/defines_4.js | 139 + doc/html/search/defines_5.html | 30 + doc/html/search/defines_5.js | 5 + doc/html/search/defines_6.html | 30 + doc/html/search/defines_6.js | 5 + doc/html/search/defines_7.html | 30 + doc/html/search/defines_7.js | 6 + doc/html/search/enums_0.html | 30 + doc/html/search/enums_0.js | 5 + doc/html/search/enums_1.html | 30 + doc/html/search/enums_1.js | 7 + doc/html/search/enums_2.html | 30 + doc/html/search/enums_2.js | 6 + doc/html/search/enums_3.html | 30 + doc/html/search/enums_3.js | 4 + doc/html/search/enums_4.html | 30 + doc/html/search/enums_4.js | 5 + doc/html/search/enums_5.html | 30 + doc/html/search/enums_5.js | 6 + doc/html/search/enums_6.html | 30 + doc/html/search/enums_6.js | 4 + doc/html/search/enumvalues_0.html | 30 + doc/html/search/enumvalues_0.js | 4 + doc/html/search/enumvalues_1.html | 30 + doc/html/search/enumvalues_1.js | 10 + doc/html/search/enumvalues_2.html | 30 + doc/html/search/enumvalues_2.js | 10 + doc/html/search/enumvalues_3.html | 30 + doc/html/search/enumvalues_3.js | 5 + doc/html/search/enumvalues_4.html | 30 + doc/html/search/enumvalues_4.js | 4 + doc/html/search/enumvalues_5.html | 30 + doc/html/search/enumvalues_5.js | 5 + doc/html/search/enumvalues_6.html | 30 + doc/html/search/enumvalues_6.js | 5 + doc/html/search/enumvalues_7.html | 30 + doc/html/search/enumvalues_7.js | 4 + doc/html/search/enumvalues_8.html | 30 + doc/html/search/enumvalues_8.js | 5 + doc/html/search/enumvalues_9.html | 30 + doc/html/search/enumvalues_9.js | 4 + doc/html/search/enumvalues_a.html | 30 + doc/html/search/enumvalues_a.js | 4 + doc/html/search/enumvalues_b.html | 30 + doc/html/search/enumvalues_b.js | 4 + doc/html/search/enumvalues_c.html | 30 + doc/html/search/enumvalues_c.js | 5 + doc/html/search/files_0.html | 30 + doc/html/search/files_0.js | 6 + doc/html/search/files_1.html | 30 + doc/html/search/files_1.js | 4 + doc/html/search/files_2.html | 30 + doc/html/search/files_2.js | 5 + doc/html/search/files_3.html | 30 + doc/html/search/files_3.js | 6 + doc/html/search/files_4.html | 30 + doc/html/search/files_4.js | 13 + doc/html/search/files_5.html | 30 + doc/html/search/files_5.js | 4 + doc/html/search/files_6.html | 30 + doc/html/search/files_6.js | 6 + doc/html/search/files_7.html | 30 + doc/html/search/files_7.js | 4 + doc/html/search/files_8.html | 30 + doc/html/search/files_8.js | 8 + doc/html/search/files_9.html | 30 + doc/html/search/files_9.js | 5 + doc/html/search/files_a.html | 30 + doc/html/search/files_a.js | 4 + doc/html/search/files_b.html | 30 + doc/html/search/files_b.js | 4 + doc/html/search/files_c.html | 30 + doc/html/search/files_c.js | 4 + doc/html/search/functions_0.html | 30 + doc/html/search/functions_0.js | 22 + doc/html/search/functions_1.html | 30 + doc/html/search/functions_1.js | 4 + doc/html/search/functions_10.html | 30 + doc/html/search/functions_10.js | 5 + doc/html/search/functions_11.html | 30 + doc/html/search/functions_11.js | 5 + doc/html/search/functions_12.html | 30 + doc/html/search/functions_12.js | 15 + doc/html/search/functions_13.html | 30 + doc/html/search/functions_13.js | 8 + doc/html/search/functions_14.html | 30 + doc/html/search/functions_14.js | 9 + doc/html/search/functions_15.html | 30 + doc/html/search/functions_15.js | 4 + doc/html/search/functions_16.html | 30 + doc/html/search/functions_16.js | 46 + doc/html/search/functions_2.html | 30 + doc/html/search/functions_2.js | 6 + doc/html/search/functions_3.html | 30 + doc/html/search/functions_3.js | 15 + doc/html/search/functions_4.html | 30 + doc/html/search/functions_4.js | 5 + doc/html/search/functions_5.html | 30 + doc/html/search/functions_5.js | 5 + doc/html/search/functions_6.html | 30 + doc/html/search/functions_6.js | 7 + doc/html/search/functions_7.html | 30 + doc/html/search/functions_7.js | 5 + doc/html/search/functions_8.html | 30 + doc/html/search/functions_8.js | 15 + doc/html/search/functions_9.html | 30 + doc/html/search/functions_9.js | 8 + doc/html/search/functions_a.html | 30 + doc/html/search/functions_a.js | 6 + doc/html/search/functions_b.html | 30 + doc/html/search/functions_b.js | 28 + doc/html/search/functions_c.html | 30 + doc/html/search/functions_c.js | 6 + doc/html/search/functions_d.html | 30 + doc/html/search/functions_d.js | 8 + doc/html/search/functions_e.html | 30 + doc/html/search/functions_e.js | 17 + doc/html/search/functions_f.html | 30 + doc/html/search/functions_f.js | 4 + doc/html/search/groups_0.html | 30 + doc/html/search/groups_0.js | 5 + doc/html/search/groups_1.html | 30 + doc/html/search/groups_1.js | 4 + doc/html/search/groups_2.html | 30 + doc/html/search/groups_2.js | 5 + doc/html/search/groups_3.html | 30 + doc/html/search/groups_3.js | 4 + doc/html/search/groups_4.html | 30 + doc/html/search/groups_4.js | 4 + doc/html/search/groups_5.html | 30 + doc/html/search/groups_5.js | 5 + doc/html/search/groups_6.html | 30 + doc/html/search/groups_6.js | 4 + doc/html/search/groups_7.html | 30 + doc/html/search/groups_7.js | 4 + doc/html/search/mag_sel.png | Bin 0 -> 563 bytes doc/html/search/namespaces_0.html | 30 + doc/html/search/namespaces_0.js | 36 + doc/html/search/namespaces_1.html | 30 + doc/html/search/namespaces_1.js | 18 + doc/html/search/namespaces_2.html | 30 + doc/html/search/namespaces_2.js | 36 + doc/html/search/nomatches.html | 12 + doc/html/search/pages_0.html | 30 + doc/html/search/pages_0.js | 4 + doc/html/search/related_0.html | 30 + doc/html/search/related_0.js | 10 + doc/html/search/related_1.html | 30 + doc/html/search/related_1.js | 4 + doc/html/search/related_2.html | 30 + doc/html/search/related_2.js | 18 + doc/html/search/related_3.html | 30 + doc/html/search/related_3.js | 4 + doc/html/search/related_4.html | 30 + doc/html/search/related_4.js | 4 + doc/html/search/related_5.html | 30 + doc/html/search/related_5.js | 6 + doc/html/search/related_6.html | 30 + doc/html/search/related_6.js | 4 + doc/html/search/search.css | 271 + doc/html/search/search.js | 814 ++ doc/html/search/search_l.png | Bin 0 -> 604 bytes doc/html/search/search_m.png | Bin 0 -> 158 bytes doc/html/search/search_r.png | Bin 0 -> 612 bytes doc/html/search/searchdata.js | 51 + doc/html/search/typedefs_0.html | 30 + doc/html/search/typedefs_0.js | 11 + doc/html/search/typedefs_1.html | 30 + doc/html/search/typedefs_1.js | 15 + doc/html/search/typedefs_10.html | 30 + doc/html/search/typedefs_10.js | 40 + doc/html/search/typedefs_11.html | 30 + doc/html/search/typedefs_11.js | 10 + doc/html/search/typedefs_12.html | 30 + doc/html/search/typedefs_12.js | 6 + doc/html/search/typedefs_13.html | 30 + doc/html/search/typedefs_13.js | 5 + doc/html/search/typedefs_2.html | 30 + doc/html/search/typedefs_2.js | 10 + doc/html/search/typedefs_3.html | 30 + doc/html/search/typedefs_3.js | 22 + doc/html/search/typedefs_4.html | 30 + doc/html/search/typedefs_4.js | 14 + doc/html/search/typedefs_5.html | 30 + doc/html/search/typedefs_5.js | 7 + doc/html/search/typedefs_6.html | 30 + doc/html/search/typedefs_6.js | 10 + doc/html/search/typedefs_7.html | 30 + doc/html/search/typedefs_7.js | 4 + doc/html/search/typedefs_8.html | 30 + doc/html/search/typedefs_8.js | 40 + doc/html/search/typedefs_9.html | 30 + doc/html/search/typedefs_9.js | 4 + doc/html/search/typedefs_a.html | 30 + doc/html/search/typedefs_a.js | 7 + doc/html/search/typedefs_b.html | 30 + doc/html/search/typedefs_b.js | 9 + doc/html/search/typedefs_c.html | 30 + doc/html/search/typedefs_c.js | 6 + doc/html/search/typedefs_d.html | 30 + doc/html/search/typedefs_d.js | 11 + doc/html/search/typedefs_e.html | 30 + doc/html/search/typedefs_e.js | 12 + doc/html/search/typedefs_f.html | 30 + doc/html/search/typedefs_f.js | 16 + doc/html/search/variables_0.html | 30 + doc/html/search/variables_0.js | 6 + doc/html/search/variables_1.html | 30 + doc/html/search/variables_1.js | 5 + doc/html/search/variables_10.html | 30 + doc/html/search/variables_10.js | 5 + doc/html/search/variables_11.html | 30 + doc/html/search/variables_11.js | 4 + doc/html/search/variables_12.html | 30 + doc/html/search/variables_12.js | 5 + doc/html/search/variables_13.html | 30 + doc/html/search/variables_13.js | 5 + doc/html/search/variables_2.html | 30 + doc/html/search/variables_2.js | 4 + doc/html/search/variables_3.html | 30 + doc/html/search/variables_3.js | 14 + doc/html/search/variables_4.html | 30 + doc/html/search/variables_4.js | 7 + doc/html/search/variables_5.html | 30 + doc/html/search/variables_5.js | 5 + doc/html/search/variables_6.html | 30 + doc/html/search/variables_6.js | 4 + doc/html/search/variables_7.html | 30 + doc/html/search/variables_7.js | 12 + doc/html/search/variables_8.html | 30 + doc/html/search/variables_8.js | 6 + doc/html/search/variables_9.html | 30 + doc/html/search/variables_9.js | 5 + doc/html/search/variables_a.html | 30 + doc/html/search/variables_a.js | 5 + doc/html/search/variables_b.html | 30 + doc/html/search/variables_b.js | 5 + doc/html/search/variables_c.html | 30 + doc/html/search/variables_c.js | 6 + doc/html/search/variables_d.html | 30 + doc/html/search/variables_d.js | 13 + doc/html/search/variables_e.html | 30 + doc/html/search/variables_e.js | 5 + doc/html/search/variables_f.html | 30 + doc/html/search/variables_f.js | 5 + doc/html/selection_8h.html | 166 + doc/html/selection_8h.js | 7 + doc/html/selection_8h_source.html | 121 + doc/html/sfinae_8h.html | 158 + doc/html/sfinae_8h.js | 8 + doc/html/sfinae_8h_source.html | 113 + doc/html/source_2main_8d.html | 107 + doc/html/source_2main_8d_source.html | 108 + doc/html/source_2tests_2_t_concepts_8d.html | 107 + .../source_2tests_2_t_concepts_8d_source.html | 125 + doc/html/source_2tests_2_tinvoke_8d.html | 107 + .../source_2tests_2_tinvoke_8d_source.html | 121 + .../source_2tests_2test__1w__impl_8d.html | 107 + ...urce_2tests_2test__1w__impl_8d_source.html | 126 + .../source_2tests_2test__i2c__impl_8d.html | 107 + ...rce_2tests_2test__i2c__impl_8d_source.html | 123 + .../source_2tests_2test__ostream__dev_8d.html | 107 + ..._2tests_2test__ostream__dev_8d_source.html | 124 + .../source_2tests_2test__spi__impl_8d.html | 107 + ...rce_2tests_2test__spi__impl_8d_source.html | 123 + doc/html/spi_8h.html | 182 + doc/html/spi_8h.js | 23 + doc/html/spi_8h_source.html | 143 + doc/html/spi__bb_8h.html | 141 + doc/html/spi__bb_8h_source.html | 147 + doc/html/splitbar.png | Bin 0 -> 314 bytes doc/html/stl_8h.html | 382 + doc/html/stl_8h.js | 93 + doc/html/stl_8h_source.html | 216 + ...ruct_tmeta_basic_1_1_identity-members.html | 108 + doc/html/struct_tmeta_basic_1_1_identity.html | 142 + doc/html/struct_tmeta_basic_1_1_identity.js | 4 + .../struct_tmeta_detection_1_1_a-members.html | 111 + doc/html/struct_tmeta_detection_1_1_a.html | 255 + doc/html/struct_tmeta_detection_1_1_a.js | 7 + doc/html/struct_tmeta_detection_1_1_bar.html | 111 + doc/html/struct_tmeta_detection_1_1_foo.html | 111 + ...ruct_tmeta_detection_1_1m_fun-members.html | 108 + doc/html/struct_tmeta_detection_1_1m_fun.html | 142 + doc/html/struct_tmeta_detection_1_1m_fun.js | 4 + doc/html/struct_tmeta_typelist_1_1_f.html | 114 + ...t_tmeta_typelist_1_1_identity-members.html | 108 + .../struct_tmeta_typelist_1_1_identity.html | 142 + .../struct_tmeta_typelist_1_1_identity.js | 4 + ...t_tmeta_typelist_1_1_mfun_bin-members.html | 108 + .../struct_tmeta_typelist_1_1_mfun_bin.html | 142 + .../struct_tmeta_typelist_1_1_mfun_bin.js | 4 + ...meta_typelist_1_1_mfun_bin__i-members.html | 108 + ...struct_tmeta_typelist_1_1_mfun_bin__i.html | 142 + .../struct_tmeta_typelist_1_1_mfun_bin__i.js | 4 + ...t_tmeta_typelist_1_1_mfun_un1-members.html | 108 + .../struct_tmeta_typelist_1_1_mfun_un1.html | 142 + .../struct_tmeta_typelist_1_1_mfun_un1.js | 4 + ...t_tmeta_typelist_1_1_mfun_un2-members.html | 108 + .../struct_tmeta_typelist_1_1_mfun_un2.html | 142 + .../struct_tmeta_typelist_1_1_mfun_un2.js | 4 + ...eta_typelist_1_1_pred__is_int-members.html | 108 + ...truct_tmeta_typelist_1_1_pred__is_int.html | 142 + .../struct_tmeta_typelist_1_1_pred__is_int.js | 4 + ...ta_typelist_1_1_pred__is_void-members.html | 108 + ...ruct_tmeta_typelist_1_1_pred__is_void.html | 142 + ...struct_tmeta_typelist_1_1_pred__is_void.js | 4 + .../structtest__concepts_1_1_a-members.html | 111 + doc/html/structtest__concepts_1_1_a.html | 228 + doc/html/structtest__concepts_1_1_a.js | 7 + .../structtest__concepts_1_1_b-members.html | 113 + doc/html/structtest__concepts_1_1_b.html | 285 + doc/html/structtest__concepts_1_1_b.js | 9 + doc/html/structtest__concepts_1_1_empty.html | 111 + ...ncepts_1_1_have_copy_and_move-members.html | 111 + ...test__concepts_1_1_have_copy_and_move.html | 232 + ...cttest__concepts_1_1_have_copy_and_move.js | 7 + ...__concepts_1_1_have_only_copy-members.html | 111 + ...ructtest__concepts_1_1_have_only_copy.html | 232 + ...structtest__concepts_1_1_have_only_copy.js | 7 + ...__concepts_1_1_have_only_move-members.html | 111 + ...ructtest__concepts_1_1_have_only_move.html | 232 + ...structtest__concepts_1_1_have_only_move.js | 7 + ...structtest__concepts_1_1_incr-members.html | 109 + doc/html/structtest__concepts_1_1_incr.html | 178 + doc/html/structtest__concepts_1_1_incr.js | 5 + .../structtest__concepts_1_1_inv-members.html | 109 + doc/html/structtest__concepts_1_1_inv.html | 178 + doc/html/structtest__concepts_1_1_inv.js | 5 + ...structtest__concepts_1_1_pred-members.html | 109 + doc/html/structtest__concepts_1_1_pred.html | 189 + doc/html/structtest__concepts_1_1_pred.js | 5 + .../structtest__meta_1_1_ibar-members.html | 111 + doc/html/structtest__meta_1_1_ibar.html | 232 + doc/html/structtest__meta_1_1_ibar.js | 7 + .../structtest__meta_1_1_ifoo-members.html | 108 + doc/html/structtest__meta_1_1_ifoo.html | 149 + doc/html/structtest__meta_1_1_ifoo.js | 4 + ..._1_print_to_string_param_name-members.html | 108 + ...esting_1_1_print_to_string_param_name.html | 154 + ...ttesting_1_1_print_to_string_param_name.js | 4 + ...cttesting_1_1_test_param_info-members.html | 110 + .../structtesting_1_1_test_param_info.html | 211 + doc/html/structtesting_1_1_test_param_info.js | 6 + ...1_1internal_1_1_add_reference-members.html | 108 + ...testing_1_1internal_1_1_add_reference.html | 144 + ...cttesting_1_1internal_1_1_add_reference.js | 4 + ...dd_reference_3_01_t_01_6_01_4-members.html | 108 + ...al_1_1_add_reference_3_01_t_01_6_01_4.html | 144 + ...rnal_1_1_add_reference_3_01_t_01_6_01_4.js | 4 + ...1_1internal_1_1_code_location-members.html | 110 + ...testing_1_1internal_1_1_code_location.html | 202 + ...cttesting_1_1internal_1_1_code_location.js | 6 + ...ternal_1_1_compile_assert_types_equal.html | 116 + ...ssert_types_equal_3_01_t_00_01_t_01_4.html | 116 + ..._1internal_1_1_const_char_ptr-members.html | 110 + ...esting_1_1internal_1_1_const_char_ptr.html | 204 + ...ttesting_1_1internal_1_1_const_char_ptr.js | 6 + ...ing_1_1internal_1_1_const_ref-members.html | 108 + ...ructtesting_1_1internal_1_1_const_ref.html | 144 + ...structtesting_1_1internal_1_1_const_ref.js | 4 + ..._1_const_ref_3_01_t_01_6_01_4-members.html | 108 + ...ternal_1_1_const_ref_3_01_t_01_6_01_4.html | 144 + ...internal_1_1_const_ref_3_01_t_01_6_01_4.js | 4 + ...sting_1_1internal_1_1_double_sequence.html | 116 + ...8_8_8_01_4_00_01sizeof_t_01_4-members.html | 108 + ..._3_01_i_8_8_8_01_4_00_01sizeof_t_01_4.html | 144 + ...ce_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4.js | 4 + ...8_8_8_01_4_00_01sizeof_t_01_4-members.html | 108 + ..._3_01_i_8_8_8_01_4_00_01sizeof_t_01_4.html | 144 + ...ce_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4.js | 4 + ...esting_1_1internal_1_1_elem_from_list.html | 116 + ..._3_01_i_8_8_8_01_4_00_01_t_8_8_8_01_4.html | 125 + ...e_3_01_i_8_8_8_01_4_00_01_t_8_8_8_01_4.png | Bin 0 -> 1231 bytes ...g_1_1internal_1_1_elem_from_list_impl.html | 116 + ...l_3_01_t_00_01_i_00_01_i_01_4-members.html | 108 + ...list_impl_3_01_t_00_01_i_00_01_i_01_4.html | 144 + ...m_list_impl_3_01_t_00_01_i_00_01_i_01_4.js | 4 + ...ructtesting_1_1internal_1_1_enable_if.html | 116 + ...l_1_1_enable_if_3_01true_01_4-members.html | 108 + ...1internal_1_1_enable_if_3_01true_01_4.html | 142 + ...1_1internal_1_1_enable_if_3_01true_01_4.js | 4 + ...sting_1_1internal_1_1_flat_tuple_base.html | 116 + ..._sequ39648cad53441158091e09ac7d0841c0.html | 110 + ...dex_sequence_3_01_idx_8_8_8_01_4_01_4.html | 219 + ...index_sequence_3_01_idx_8_8_8_01_4_01_4.js | 6 + ...ndex_sequence_3_01_idx_8_8_8_01_4_01_4.png | Bin 0 -> 1387 bytes ..._1_1internal_1_1_flat_tuple_elem_base.html | 116 + ..._01_t_8_8_8_01_4_00_01_i_01_4-members.html | 111 + ..._tuple_3_01_t_8_8_8_01_4_00_01_i_01_4.html | 235 + ...at_tuple_3_01_t_8_8_8_01_4_00_01_i_01_4.js | 7 + ..._1internal_1_1_index_sequence-members.html | 108 + ...esting_1_1internal_1_1_index_sequence.html | 144 + ...ttesting_1_1internal_1_1_index_sequence.js | 4 + ...nal_1_1_is_a_protocol_message-members.html | 109 + ...1_1internal_1_1_is_a_protocol_message.html | 137 + ..._1_1internal_1_1_is_a_protocol_message.png | Bin 0 -> 1924 bytes ...1_1internal_1_1_is_hash_table-members.html | 108 + ...testing_1_1internal_1_1_is_hash_table.html | 152 + ..._1internal_1_1_is_recursive_container.html | 124 + ...1_1internal_1_1_is_recursive_container.png | Bin 0 -> 916 bytes ...ernal_1_1_is_recursive_container_impl.html | 116 + ...r_impl_3_01_c_00_01false_01_4-members.html | 109 + ...container_impl_3_01_c_00_01false_01_4.html | 137 + ..._container_impl_3_01_c_00_01false_01_4.png | Bin 0 -> 1107 bytes ...er_impl_3_01_c_00_01true_01_4-members.html | 109 + ..._container_impl_3_01_c_00_01true_01_4.html | 164 + ...ve_container_impl_3_01_c_00_01true_01_4.js | 5 + ...sting_1_1internal_1_1_is_same-members.html | 108 + ...structtesting_1_1internal_1_1_is_same.html | 148 + .../structtesting_1_1internal_1_1_is_same.js | 4 + ...1_is_same_3_01_t_00_01_t_01_4-members.html | 108 + ...ernal_1_1_is_same_3_01_t_00_01_t_01_4.html | 148 + ...nternal_1_1_is_same_3_01_t_00_01_t_01_4.js | 4 + ...1internal_1_1_iterator_traits-members.html | 108 + ...sting_1_1internal_1_1_iterator_traits.html | 144 + ...testing_1_1internal_1_1_iterator_traits.js | 4 + ...rator_traits_3_01_t_01_5_01_4-members.html | 108 + ..._1_1_iterator_traits_3_01_t_01_5_01_4.html | 144 + ...al_1_1_iterator_traits_3_01_t_01_5_01_4.js | 4 + ...aits_3_01const_01_t_01_5_01_4-members.html | 108 + ...rator_traits_3_01const_01_t_01_5_01_4.html | 144 + ...terator_traits_3_01const_01_t_01_5_01_4.js | 4 + ...g_1_1internal_1_1_make_index_sequence.html | 124 + ...ng_1_1internal_1_1_make_index_sequence.png | Bin 0 -> 1318 bytes ...ake_index_sequence_3_010_01_4-members.html | 108 + ...al_1_1_make_index_sequence_3_010_01_4.html | 134 + ...nal_1_1_make_index_sequence_3_010_01_4.png | Bin 0 -> 913 bytes ...ernal_1_1_param_name_gen_func-members.html | 108 + ...g_1_1internal_1_1_param_name_gen_func.html | 144 + ...ing_1_1internal_1_1_param_name_gen_func.js | 4 + ...1internal_1_1_relation_to_source_copy.html | 113 + ...rnal_1_1_relation_to_source_reference.html | 113 + ..._1_1internal_1_1_remove_const-members.html | 108 + ...ttesting_1_1internal_1_1_remove_const.html | 144 + ...ucttesting_1_1internal_1_1_remove_const.js | 4 + ...ve_const_3_01const_01_t[_n]_4-members.html | 108 + ...1_1_remove_const_3_01const_01_t[_n]_4.html | 144 + ...l_1_1_remove_const_3_01const_01_t[_n]_4.js | 4 + ...ove_const_3_01const_01_t_01_4-members.html | 108 + ..._1_1_remove_const_3_01const_01_t_01_4.html | 144 + ...al_1_1_remove_const_3_01const_01_t_01_4.js | 4 + ...internal_1_1_remove_reference-members.html | 108 + ...ting_1_1internal_1_1_remove_reference.html | 144 + ...esting_1_1internal_1_1_remove_reference.js | 4 + ...ve_reference_3_01_t_01_6_01_4-members.html | 108 + ...1_1_remove_reference_3_01_t_01_6_01_4.html | 144 + ...l_1_1_remove_reference_3_01_t_01_6_01_4.js | 4 + ...rnal_1_1_static_assert_type_eq_helper.html | 116 + ...eq_helper_3_01_t_00_01_t_01_4-members.html | 108 + ...rt_type_eq_helper_3_01_t_00_01_t_01_4.html | 148 + ...sert_type_eq_helper_3_01_t_00_01_t_01_4.js | 4 + ...ternal_1_1_suite_api_resolver-members.html | 110 + ...ng_1_1internal_1_1_suite_api_resolver.html | 219 + ...ting_1_1internal_1_1_suite_api_resolver.js | 4 + ...ing_1_1internal_1_1_suite_api_resolver.png | Bin 0 -> 637 bytes ...ing_1_1internal_1_1_wrap_printer_type.html | 116 + ...1_1internal_1_1bool__constant-members.html | 109 + ...testing_1_1internal_1_1bool__constant.html | 188 + ...cttesting_1_1internal_1_1bool__constant.js | 4 + ...ttesting_1_1internal_1_1bool__constant.png | Bin 0 -> 1922 bytes ...structtesting_1_1internal_1_1faketype.html | 113 + ...sting_1_1internal_1_1is__same-members.html | 109 + ...structtesting_1_1internal_1_1is__same.html | 137 + .../structtesting_1_1internal_1_1is__same.png | Bin 0 -> 842 bytes ...1is__same_3_01_t_00_01_t_01_4-members.html | 109 + ...ernal_1_1is__same_3_01_t_00_01_t_01_4.html | 137 + ...ternal_1_1is__same_3_01_t_00_01_t_01_4.png | Bin 0 -> 826 bytes ...utl_1_1__1wire__i__det_1_1is__1wire__.html | 128 + ...tutl_1_1__1wire__i__det_1_1is__1wire__.png | Bin 0 -> 755 bytes ..._01meta_1_1void__t_3_01void_01_4_01_4.html | 128 + ...0_01meta_1_1void__t_3_01void_01_4_01_4.png | Bin 0 -> 853 bytes doc/html/structutl_1_1array-members.html | 147 + doc/html/structutl_1_1array.html | 1262 +++ doc/html/structutl_1_1array.js | 43 + .../structutl_1_1array__traits-members.html | 110 + doc/html/structutl_1_1array__traits.html | 227 + doc/html/structutl_1_1array__traits.js | 6 + ..._traits_3_01___tp_00_010_01_4-members.html | 109 + ..._1array__traits_3_01___tp_00_010_01_4.html | 204 + ..._1_1array__traits_3_01___tp_00_010_01_4.js | 6 + ..._traits_3_01___tp_00_010_01_4_1_1type.html | 116 + ...ctutl_1_1bidirectional__iterator__tag.html | 125 + ...uctutl_1_1bidirectional__iterator__tag.png | Bin 0 -> 1708 bytes ..._1_1common__impl_1_1____common__ref__.html | 116 + ...t_3_05e5aa384829bb34312a7b8ee4ecaa00f.html | 144 + ...__t_3_05e5aa384829bb34312a7b8ee4ecaa00f.js | 4 + ...t_3_0713e3da9a16fa287c3da4804d8a82e2a.html | 108 + ...__t_329fba5aeac3b93aa9cfa5aa7e282e196.html | 144 + ...id__t_329fba5aeac3b93aa9cfa5aa7e282e196.js | 4 + ...__t_39d51aabb1b6e285a8820883623b777b6.html | 108 + ...__t_3972a8d6e6799b6ee6537c969cdced343.html | 144 + ...id__t_3972a8d6e6799b6ee6537c969cdced343.js | 4 + ...__t_3caf0f226d0c1286077388e70348a8308.html | 108 + ...id__t1694845b4ab351e97156ad142728ca62.html | 108 + ...id__tc4e71c227f251cadf0e0fb7b1ba6f1e9.html | 144 + ...void__tc4e71c227f251cadf0e0fb7b1ba6f1e9.js | 4 + ...common__impl_1_1____common__reference.html | 126 + ...1common__impl_1_1____common__reference.png | Bin 0 -> 1866 bytes ...ommon__impl_1_1____common__reference2.html | 125 + ...common__impl_1_1____common__reference2.png | Bin 0 -> 1400 bytes ...1____6ab9922f56c6f2662c3adbf096130c54.html | 108 + ...1____785d0aa2f8a62416e19573fcbdd83836.html | 144 + ..._01____785d0aa2f8a62416e19573fcbdd83836.js | 4 + ...ommon__impl_1_1____common__reference3.html | 124 + ...common__impl_1_1____common__reference3.png | Bin 0 -> 893 bytes ...1____015b01ed12d2d90ee57fbf756ab847e9.html | 144 + ..._01____015b01ed12d2d90ee57fbf756ab847e9.js | 4 + ...1____0b88805ce5232fbdb9a7fdd38466508d.html | 108 + ..._1_1i23b95b4b3a65ce598dbcc7f52e9dab2c.html | 144 + ...td_1_1i23b95b4b3a65ce598dbcc7f52e9dab2c.js | 4 + ..._1_1ided146ccd9cf12e9462fbb7f93734932.html | 108 + ...ommon__impl_1_1____copy__cv__-members.html | 108 + ...utl_1_1common__impl_1_1____copy__cv__.html | 147 + ...ctutl_1_1common__impl_1_1____copy__cv__.js | 4 + ...__cv___3_01const_01_from_01_4-members.html | 108 + ...____copy__cv___3_01const_01_from_01_4.html | 147 + ..._1____copy__cv___3_01const_01_from_01_4.js | 4 + ...const_01volatile_01_from_01_4-members.html | 108 + ...v___3_01const_01volatile_01_from_01_4.html | 147 + ..._cv___3_01const_01volatile_01_from_01_4.js | 4 + ...v___3_01volatile_01_from_01_4-members.html | 108 + ..._copy__cv___3_01volatile_01_from_01_4.html | 147 + ...___copy__cv___3_01volatile_01_from_01_4.js | 4 + ...l_1_1common__impl_1_1____xref-members.html | 108 + ...structutl_1_1common__impl_1_1____xref.html | 147 + .../structutl_1_1common__impl_1_1____xref.js | 4 + ..._1_1____xref_3_01_t_01_6_01_4-members.html | 108 + ...on__impl_1_1____xref_3_01_t_01_6_01_4.html | 147 + ...mmon__impl_1_1____xref_3_01_t_01_6_01_4.js | 4 + ..._1____xref_3_01_t_01_6_6_01_4-members.html | 108 + ...__impl_1_1____xref_3_01_t_01_6_6_01_4.html | 147 + ...on__impl_1_1____xref_3_01_t_01_6_6_01_4.js | 4 + ...1____xref_3_01const_01_t_01_4-members.html | 108 + ..._impl_1_1____xref_3_01const_01_t_01_4.html | 147 + ...n__impl_1_1____xref_3_01const_01_t_01_4.js | 4 + ..._01const_01volatile_01_t_01_4-members.html | 108 + ...__xref_3_01const_01volatile_01_t_01_4.html | 147 + ...____xref_3_01const_01volatile_01_t_01_4.js | 4 + ...__xref_3_01volatile_01_t_01_4-members.html | 108 + ...pl_1_1____xref_3_01volatile_01_t_01_4.html | 147 + ...impl_1_1____xref_3_01volatile_01_t_01_4.js | 4 + ...mon__impl_1_1basic__common__reference.html | 116 + ..._1_1common__impl_1_1common__reference.html | 116 + ..._t_00_01_u_00_01_v_00_01_w_8_8_8_01_4.html | 125 + ...1_t_00_01_u_00_01_v_00_01_w_8_8_8_01_4.png | Bin 0 -> 1107 bytes ...common__reference_3_01_t_00_01_u_01_4.html | 127 + ...1common__reference_3_01_t_00_01_u_01_4.png | Bin 0 -> 2281 bytes ...common__reference_3_01_t_01_4-members.html | 108 + ...impl_1_1common__reference_3_01_t_01_4.html | 144 + ...__impl_1_1common__reference_3_01_t_01_4.js | 4 + ...tructutl_1_1contiguous__iterator__tag.html | 125 + ...structutl_1_1contiguous__iterator__tag.png | Bin 0 -> 1689 bytes doc/html/structutl_1_1crtp__tag.html | 117 + ...1_1detail_1_1invoke__result__-members.html | 108 + ...ructutl_1_1detail_1_1invoke__result__.html | 144 + ...structutl_1_1detail_1_1invoke__result__.js | 4 + ...lable_00_01___args_8_8_8_01_4-members.html | 108 + ...01___callable_00_01___args_8_8_8_01_4.html | 144 + ...0_01___callable_00_01___args_8_8_8_01_4.js | 4 + ...ructutl_1_1detail_1_1is__ref__wrapper.html | 124 + ...tructutl_1_1detail_1_1is__ref__wrapper.png | Bin 0 -> 605 bytes ..._1reference__wrapper_3_01_u_01_4_01_4.html | 124 + ...1_1reference__wrapper_3_01_u_01_4_01_4.png | Bin 0 -> 858 bytes ...tutl_1_1detail_1_1try__invoke-members.html | 108 + .../structutl_1_1detail_1_1try__invoke.html | 144 + .../structutl_1_1detail_1_1try__invoke.js | 4 + ...l_1_1details_1_1is__boolean__-members.html | 108 + ...structutl_1_1details_1_1is__boolean__.html | 144 + .../structutl_1_1details_1_1is__boolean__.js | 4 + ...__t_37e77ed45a431955fc15b4c1210ad8491.html | 144 + ...me__t_37e77ed45a431955fc15b4c1210ad8491.js | 4 + ...__t_3ad1d6c2db324c85cc71a9bc43da835ec.html | 108 + ...s__strict__totally__ordered__-members.html | 108 + ...ils_1_1is__strict__totally__ordered__.html | 144 + ...tails_1_1is__strict__totally__ordered__.js | 4 + ..._1_1u81d73edcb77c29e6078e6f471605fc0e.html | 108 + ..._1_1uab48bcfc89164f446368b35bcc7c8bcd.html | 144 + ...ta_1_1uab48bcfc89164f446368b35bcc7c8bcd.js | 4 + ...ict__totally__ordered__with__-members.html | 108 + ...1is__strict__totally__ordered__with__.html | 144 + ...1_1is__strict__totally__ordered__with__.js | 4 + ...id__t8fb7dd5a6ad25952241e37c6f163f434.html | 144 + ...void__t8fb7dd5a6ad25952241e37c6f163f434.js | 4 + ...id__tbfa3d43701320cc59da10160e5809f24.html | 108 + ..._equality__comparable__with__-members.html | 108 + ..._weakly__equality__comparable__with__.html | 144 + ...s__weakly__equality__comparable__with__.js | 4 + ..._1voi4404f901930622694666ca68fb75381b.html | 144 + ..._1_1voi4404f901930622694666ca68fb75381b.js | 4 + ..._1voibfc2d6389a7246a6162e601b9118387f.html | 108 + ...tutl_1_1dev__iterator__traits-members.html | 112 + .../structutl_1_1dev__iterator__traits.html | 230 + .../structutl_1_1dev__iterator__traits.js | 8 + .../structutl_1_1forward__iterator__tag.html | 125 + .../structutl_1_1forward__iterator__tag.png | Bin 0 -> 1705 bytes ...ctutl_1_1i2c__i__details_1_1is__i2c__.html | 128 + ...uctutl_1_1i2c__i__details_1_1is__i2c__.png | Bin 0 -> 680 bytes ...__tp_1_1_sequence_00_01void_01_4_01_4.html | 128 + ...___tp_1_1_sequence_00_01void_01_4_01_4.png | Bin 0 -> 1072 bytes doc/html/structutl_1_1id__t-members.html | 149 + doc/html/structutl_1_1id__t.html | 1348 ++++ doc/html/structutl_1_1id__t.js | 45 + doc/html/structutl_1_1id__traits-members.html | 110 + doc/html/structutl_1_1id__traits.html | 227 + doc/html/structutl_1_1id__traits.js | 6 + ..._traits_3_01___tp_00_010_01_4-members.html | 109 + ...l_1_1id__traits_3_01___tp_00_010_01_4.html | 204 + ...utl_1_1id__traits_3_01___tp_00_010_01_4.js | 6 + ..._traits_3_01___tp_00_010_01_4_1_1type.html | 116 + ..._1idx__dev__details_1_1is__idx__dev__.html | 128 + ...1_1idx__dev__details_1_1is__idx__dev__.png | Bin 0 -> 824 bytes ...p_1_1ae8b6b24c31c81bdd901da6e6387d84b.html | 128 + ...tp_1_1ae8b6b24c31c81bdd901da6e6387d84b.png | Bin 0 -> 3627 bytes ...xdev__it__details_1_1is__idxdev__it__.html | 128 + ...dxdev__it__details_1_1is__idxdev__it__.png | Bin 0 -> 840 bytes ...enamebd9ada52ca7b7570c26d0c280af5e635.html | 128 + ...penamebd9ada52ca7b7570c26d0c280af5e635.png | Bin 0 -> 1654 bytes ..._1_1in__dev__details_1_1is__in__dev__.html | 128 + ...l_1_1in__dev__details_1_1is__in__dev__.png | Bin 0 -> 801 bytes ...1_1dad922a62deb7c32e2cff18d66b8c887d2.html | 128 + ..._1_1dad922a62deb7c32e2cff18d66b8c887d2.png | Bin 0 -> 3604 bytes ...buf__dev__details_1_1is__inbuf__dev__.html | 128 + ...nbuf__dev__details_1_1is__inbuf__dev__.png | Bin 0 -> 842 bytes ...___tpc269ee3885240cc8c352f3c6b3a67cd7.html | 128 + ...1___tpc269ee3885240cc8c352f3c6b3a67cd7.png | Bin 0 -> 3656 bytes ...indev__it__details_1_1is__indev__it__.html | 128 + ...1indev__it__details_1_1is__indev__it__.png | Bin 0 -> 826 bytes ...ame_06508604dcee4010234c84cc332fa196b.html | 128 + ...name_06508604dcee4010234c84cc332fa196b.png | Bin 0 -> 1649 bytes .../structutl_1_1input__iterator__tag.html | 125 + .../structutl_1_1input__iterator__tag.png | Bin 0 -> 1711 bytes ..._1iodev__it_1_1value__type__t-members.html | 112 + ...uctutl_1_1iodev__it_1_1value__type__t.html | 279 + ...tructutl_1_1iodev__it_1_1value__type__t.js | 8 + doc/html/structutl_1_1is__invocable.html | 128 + doc/html/structutl_1_1is__invocable.png | Bin 0 -> 1552 bytes doc/html/structutl_1_1is__invocable__r.html | 128 + doc/html/structutl_1_1is__invocable__r.png | Bin 0 -> 1545 bytes ...utl_1_1meta_1_1apply__impl_1_1apply__.html | 116 + ...01_t_00_01_is_8_8_8_01_4_01_4-members.html | 108 + ...uence_3_01_t_00_01_is_8_8_8_01_4_01_4.html | 148 + ...equence_3_01_t_00_01_is_8_8_8_01_4_01_4.js | 4 + ...ist_3_01_list_8_8_8_01_4_01_4-members.html | 108 + ..._01typelist_3_01_list_8_8_8_01_4_01_4.html | 148 + ...00_01typelist_3_01_list_8_8_8_01_4_01_4.js | 4 + ...1_1at__impl_1_1__add__pointer-members.html | 108 + ...1_1meta_1_1at__impl_1_1__add__pointer.html | 145 + ...l_1_1meta_1_1at__impl_1_1__add__pointer.js | 4 + ...structutl_1_1meta_1_1at__impl_1_1at__.html | 116 + ..._list_8_8_8_01_4_00_01_n_01_4-members.html | 109 + ...ist_3_01_list_8_8_8_01_4_00_01_n_01_4.html | 164 + ...elist_3_01_list_8_8_8_01_4_00_01_n_01_4.js | 5 + ...utl_1_1meta_1_1at__impl_1_1at__head__.html | 116 + ...ist_3_01voids_8_8_8_01_4_01_4-members.html | 109 + ..._01typelist_3_01voids_8_8_8_01_4_01_4.html | 203 + ..._3_01typelist_3_01voids_8_8_8_01_4_01_4.js | 5 + ...ctutl_1_1meta_1_1back__impl_1_1back__.html | 116 + ...ad_00_01_tail_8_8_8_01_4_01_4-members.html | 108 + ..._3_01_head_00_01_tail_8_8_8_01_4_01_4.html | 144 + ...st_3_01_head_00_01_tail_8_8_8_01_4_01_4.js | 4 + ...ructutl_1_1meta_1_1bind__back-members.html | 108 + doc/html/structutl_1_1meta_1_1bind__back.html | 149 + doc/html/structutl_1_1meta_1_1bind__back.js | 4 + ...uctutl_1_1meta_1_1bind__front-members.html | 108 + .../structutl_1_1meta_1_1bind__front.html | 149 + doc/html/structutl_1_1meta_1_1bind__front.js | 4 + ...ructutl_1_1meta_1_1cat__impl_1_1cat__.html | 116 + ..._01_l2_8_8_8_01_4_00_01_ln_8_8_8_01_4.html | 125 + ...3_01_l2_8_8_8_01_4_00_01_ln_8_8_8_01_4.png | Bin 0 -> 1196 bytes ...elist_3_01_l2_8_8_8_01_4_01_4-members.html | 108 + ...00_01typelist_3_01_l2_8_8_8_01_4_01_4.html | 144 + ...4_00_01typelist_3_01_l2_8_8_8_01_4_01_4.js | 4 + ...elist_3_01_l1_8_8_8_01_4_01_4-members.html | 108 + ..._3_01typelist_3_01_l1_8_8_8_01_4_01_4.html | 144 + ...___3_01typelist_3_01_l1_8_8_8_01_4_01_4.js | 4 + ...eta_1_1cat__impl_1_1cat___3_4-members.html | 108 + ...utl_1_1meta_1_1cat__impl_1_1cat___3_4.html | 142 + ...ctutl_1_1meta_1_1cat__impl_1_1cat___3_4.js | 4 + ...eta_1_1count__if__impl_1_1count__if__.html | 116 + ..._8_01_4_00_01_fn_00_01_n_01_4-members.html | 108 + ...tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.html | 144 + ...1_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.js | 4 + ...ist_3_4_00_01_fn_00_01_n_01_4-members.html | 108 + ..._01typelist_3_4_00_01_fn_00_01_n_01_4.html | 144 + ..._3_01typelist_3_4_00_01_fn_00_01_n_01_4.js | 4 + ...tructutl_1_1meta_1_1detail_1_1__and__.html | 116 + ...__t2_00_01___t3_00_01___tn_8_8_8_01_4.html | 124 + ...___t2_00_01___t3_00_01___tn_8_8_8_01_4.png | Bin 0 -> 939 bytes ..._1_1__and___3_01___t1_00_01___t2_01_4.html | 124 + ...l_1_1__and___3_01___t1_00_01___t2_01_4.png | Bin 0 -> 689 bytes ...a_1_1detail_1_1__and___3_01___t1_01_4.html | 124 + ...ta_1_1detail_1_1__and___3_01___t1_01_4.png | Bin 0 -> 534 bytes ...tutl_1_1meta_1_1detail_1_1__and___3_4.html | 124 + ...ctutl_1_1meta_1_1detail_1_1__and___3_4.png | Bin 0 -> 530 bytes ...structutl_1_1meta_1_1detail_1_1__or__.html | 116 + ...__t2_00_01___t3_00_01___tn_8_8_8_01_4.html | 124 + ...___t2_00_01___t3_00_01___tn_8_8_8_01_4.png | Bin 0 -> 865 bytes ...l_1_1__or___3_01___t1_00_01___t2_01_4.html | 124 + ...il_1_1__or___3_01___t1_00_01___t2_01_4.png | Bin 0 -> 654 bytes ...ta_1_1detail_1_1__or___3_01___t1_01_4.html | 124 + ...eta_1_1detail_1_1__or___3_01___t1_01_4.png | Bin 0 -> 521 bytes ...ctutl_1_1meta_1_1detail_1_1__or___3_4.html | 124 + ...uctutl_1_1meta_1_1detail_1_1__or___3_4.png | Bin 0 -> 519 bytes ...uctutl_1_1meta_1_1detail_1_1compose__.html | 116 + ...3_01_fn0_00_01_fns_8_8_8_01_4-members.html | 108 + ...mpose___3_01_fn0_00_01_fns_8_8_8_01_4.html | 147 + ...compose___3_01_fn0_00_01_fns_8_8_8_01_4.js | 4 + ...il_1_1compose___3_01_fn0_01_4-members.html | 108 + ..._1_1detail_1_1compose___3_01_fn0_01_4.html | 147 + ...ta_1_1detail_1_1compose___3_01_fn0_01_4.js | 4 + ...utl_1_1meta_1_1detail_1_1compose__f__.html | 116 + ...3_01_fn0_00_01_fns_8_8_8_01_4-members.html | 108 + ...se__f___3_01_fn0_00_01_fns_8_8_8_01_4.html | 147 + ...pose__f___3_01_fn0_00_01_fns_8_8_8_01_4.js | 4 + ...1_1compose__f___3_01_fn0_01_4-members.html | 108 + ...1detail_1_1compose__f___3_01_fn0_01_4.html | 147 + ...1_1detail_1_1compose__f___3_01_fn0_01_4.js | 4 + ..._1_1meta_1_1detail_1_1defer__-members.html | 108 + ...tructutl_1_1meta_1_1detail_1_1defer__.html | 145 + .../structutl_1_1meta_1_1detail_1_1defer__.js | 4 + ...1meta_1_1detail_1_1defer__i__-members.html | 108 + ...ctutl_1_1meta_1_1detail_1_1defer__i__.html | 145 + ...ructutl_1_1meta_1_1detail_1_1defer__i__.js | 4 + ...1_1meta_1_1detail_1_1detector-members.html | 109 + ...ructutl_1_1meta_1_1detail_1_1detector.html | 164 + ...structutl_1_1meta_1_1detail_1_1detector.js | 5 + ...1_4_014c7e3230400bd80d9ca2cd7241031cf.html | 109 + ...1_4_0c35bdbd19f56980c0b5ee6d490bfb634.html | 164 + ..._01_4_0c35bdbd19f56980c0b5ee6d490bfb634.js | 5 + ..._1_1meta_1_1detail_1_1if__c__-members.html | 108 + ...tructutl_1_1meta_1_1detail_1_1if__c__.html | 126 + .../structutl_1_1meta_1_1detail_1_1if__c__.js | 4 + ...se_00_01_then_00_01_else_01_4-members.html | 108 + ..._3_01false_00_01_then_00_01_else_01_4.html | 125 + ...___3_01false_00_01_then_00_01_else_01_4.js | 4 + ...ue_00_01_then_00_01_else_01_4-members.html | 108 + ...__3_01true_00_01_then_00_01_else_01_4.html | 125 + ...c___3_01true_00_01_then_00_01_else_01_4.js | 4 + ..._c___3_01true_00_01_then_01_4-members.html | 108 + ...l_1_1if__c___3_01true_00_01_then_01_4.html | 125 + ...ail_1_1if__c___3_01true_00_01_then_01_4.js | 4 + ...1_1detail_1_1is__applicable__-members.html | 110 + ...1_1meta_1_1detail_1_1is__applicable__.html | 217 + ...l_1_1meta_1_1detail_1_1is__applicable__.js | 6 + ...detail_1_1is__applicable__i__-members.html | 110 + ...meta_1_1detail_1_1is__applicable__i__.html | 217 + ..._1meta_1_1detail_1_1is__applicable__i__.js | 6 + ...detail_1_1is__applicable__q__-members.html | 110 + ...meta_1_1detail_1_1is__applicable__q__.html | 217 + ..._1meta_1_1detail_1_1is__applicable__q__.js | 6 + ...structutl_1_1meta_1_1detail_1_1when__.html | 116 + ...etail_1_1when___3_01true_01_4-members.html | 108 + ...eta_1_1detail_1_1when___3_01true_01_4.html | 142 + ...1meta_1_1detail_1_1when___3_01true_01_4.js | 4 + ...l_1_1meta_1_1filter__impl_1_1filter__.html | 116 + ..._8_01_4_00_01_fn_00_01_l_01_4-members.html | 108 + ...tail_8_8_8_01_4_00_01_fn_00_01_l_01_4.html | 144 + ...1_tail_8_8_8_01_4_00_01_fn_00_01_l_01_4.js | 4 + ...ist_3_4_00_01_fn_00_01_l_01_4-members.html | 108 + ..._01typelist_3_4_00_01_fn_00_01_l_01_4.html | 144 + ..._3_01typelist_3_4_00_01_fn_00_01_l_01_4.js | 4 + ...1meta_1_1find__if__impl_1_1find__if__.html | 116 + ..._8_01_4_00_01_fn_00_01_n_01_4-members.html | 108 + ...tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.html | 144 + ...1_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.js | 4 + ...ist_3_4_00_01_fn_00_01_n_01_4-members.html | 108 + ..._01typelist_3_4_00_01_fn_00_01_n_01_4.html | 144 + ..._3_01typelist_3_4_00_01_fn_00_01_n_01_4.js | 4 + ...ctutl_1_1meta_1_1fold__impl_1_1fold__.html | 116 + ..._8_01_4_00_01_v_00_01_fn_01_4-members.html | 108 + ...tail_8_8_8_01_4_00_01_v_00_01_fn_01_4.html | 144 + ...1_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4.js | 4 + ...st_3_4_00_01_v0_00_01_fn_01_4-members.html | 108 + ...01typelist_3_4_00_01_v0_00_01_fn_01_4.html | 144 + ...3_01typelist_3_4_00_01_v0_00_01_fn_01_4.js | 4 + ...utl_1_1meta_1_1front__impl_1_1front__.html | 116 + ...ad_00_01_tail_8_8_8_01_4_01_4-members.html | 108 + ..._3_01_head_00_01_tail_8_8_8_01_4_01_4.html | 144 + ...st_3_01_head_00_01_tail_8_8_8_01_4_01_4.js | 4 + ...structutl_1_1meta_1_1identity-members.html | 109 + doc/html/structutl_1_1meta_1_1identity.html | 176 + doc/html/structutl_1_1meta_1_1identity.js | 5 + .../structutl_1_1meta_1_1nat__-members.html | 111 + doc/html/structutl_1_1meta_1_1nat__.html | 233 + doc/html/structutl_1_1meta_1_1nat__.js | 7 + .../structutl_1_1meta_1_1nil__-members.html | 108 + doc/html/structutl_1_1meta_1_1nil__.html | 140 + doc/html/structutl_1_1meta_1_1nil__.js | 4 + .../structutl_1_1meta_1_1not__same__as.html | 124 + ...utl_1_1meta_1_1not__same__as_1_1apply.html | 125 + ...tutl_1_1meta_1_1not__same__as_1_1apply.png | Bin 0 -> 780 bytes ...op__back__impl_1_1pop__back__-members.html | 108 + ...eta_1_1pop__back__impl_1_1pop__back__.html | 145 + ...1meta_1_1pop__back__impl_1_1pop__back__.js | 4 + ...a_1_1pop__front__impl_1_1pop__front__.html | 116 + ...ad_00_01_tail_8_8_8_01_4_01_4-members.html | 108 + ..._3_01_head_00_01_tail_8_8_8_01_4_01_4.html | 144 + ...st_3_01_head_00_01_tail_8_8_8_01_4_01_4.js | 4 + .../structutl_1_1meta_1_1quote-members.html | 108 + doc/html/structutl_1_1meta_1_1quote.html | 150 + doc/html/structutl_1_1meta_1_1quote.js | 4 + ...structutl_1_1meta_1_1quote__i-members.html | 108 + doc/html/structutl_1_1meta_1_1quote__i.html | 152 + doc/html/structutl_1_1meta_1_1quote__i.js | 4 + ...1_1replace__if__impl_1_1replace__if__.html | 116 + ..._8_8_5e985261da7db491aaa0c46140e32daf.html | 108 + ..._8_8_dfa8065a3617f53ecded260506092a07.html | 144 + ..._8_8_8_dfa8065a3617f53ecded260506092a07.js | 4 + ..._01_fn_00_01_t_00_01_ret_01_4-members.html | 108 + ...t_3_4_00_01_fn_00_01_t_00_01_ret_01_4.html | 144 + ...ist_3_4_00_01_fn_00_01_t_00_01_ret_01_4.js | 4 + ...eta_1_1rev__fold__impl_1_1rev__fold__.html | 116 + ..._8_01_4_00_01_v_00_01_fn_01_4-members.html | 108 + ...tail_8_8_8_01_4_00_01_v_00_01_fn_01_4.html | 144 + ...1_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4.js | 4 + ...il_01_4_00_01_v_00_01_fn_01_4-members.html | 108 + ..._3_01_tail_01_4_00_01_v_00_01_fn_01_4.html | 144 + ...st_3_01_tail_01_4_00_01_v_00_01_fn_01_4.js | 4 + ...ist_3_4_00_01_v_00_01_fn_01_4-members.html | 108 + ..._01typelist_3_4_00_01_v_00_01_fn_01_4.html | 144 + ..._3_01typelist_3_4_00_01_v_00_01_fn_01_4.js | 4 + ...1_1reverse__impl_1_1reverse__-members.html | 108 + ...1_1meta_1_1reverse__impl_1_1reverse__.html | 145 + ...l_1_1meta_1_1reverse__impl_1_1reverse__.js | 4 + doc/html/structutl_1_1meta_1_1same__.html | 125 + doc/html/structutl_1_1meta_1_1same__.png | Bin 0 -> 564 bytes ...a_1_1same___3_01___tp_00_01___tp_01_4.html | 124 + ...ta_1_1same___3_01___tp_00_01___tp_01_4.png | Bin 0 -> 561 bytes doc/html/structutl_1_1meta_1_1same__as.html | 124 + ...tructutl_1_1meta_1_1same__as_1_1apply.html | 126 + ...structutl_1_1meta_1_1same__as_1_1apply.png | Bin 0 -> 997 bytes ...1meta_1_1seek__if__impl_1_1seek__if__.html | 116 + ..._8_01_4_00_01_fn_00_01_n_01_4-members.html | 108 + ...tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.html | 144 + ...1_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.js | 4 + ...ist_3_4_00_01_fn_00_01_n_01_4-members.html | 108 + ..._01typelist_3_4_00_01_fn_00_01_n_01_4.html | 144 + ..._3_01typelist_3_4_00_01_fn_00_01_n_01_4.js | 4 + ...eta_1_1transform__impl_1_1transform__.html | 116 + ...8_01_210aa6f1cfc8f50301d614f1b83a2a4f.html | 108 + ...8_01_8fba6bf3d0565d17a96950cb517db5f1.html | 144 + ...8_8_01_8fba6bf3d0565d17a96950cb517db5f1.js | 4 + ..._01_40fe2b1c8ede658aadb6925de73541689.html | 144 + ..._8_01_40fe2b1c8ede658aadb6925de73541689.js | 4 + ..._01_493f0366db194c680358b180935dbfb7b.html | 108 + ...form__lazy__impl_1_1transform__lazy__.html | 116 + ..._01_t00b6012e781e63c677ebb80dc9a18995.html | 108 + ..._01_t14ff615a4bff6c4c3701df9c38aaa6a5.html | 144 + ..._3_01_t14ff615a4bff6c4c3701df9c38aaa6a5.js | 4 + ..._01_t56243bc35bf73da8271cb88f34751f3a.html | 144 + ..._3_01_t56243bc35bf73da8271cb88f34751f3a.js | 4 + ..._01_t6d1a2f622232e354dad83e3d378deba7.html | 108 + ...structutl_1_1meta_1_1typelist-members.html | 111 + doc/html/structutl_1_1meta_1_1typelist.html | 257 + doc/html/structutl_1_1meta_1_1typelist.js | 12 + ...tructutl_1_1meta_1_1typelist_1_1cat__.html | 115 + ...elist_3_01_l2_8_8_8_01_4_01_4-members.html | 108 + ...00_01typelist_3_01_l2_8_8_8_01_4_01_4.html | 145 + ...4_00_01typelist_3_01_l2_8_8_8_01_4_01_4.js | 4 + ..._1meta_1_1typelist_1_1times__-members.html | 108 + ...uctutl_1_1meta_1_1typelist_1_1times__.html | 146 + ...tructutl_1_1meta_1_1typelist_1_1times__.js | 4 + ...es___3_010_00_01_t_8_8_8_01_4-members.html | 108 + ...t_1_1times___3_010_00_01_t_8_8_8_01_4.html | 145 + ...ist_1_1times___3_010_00_01_t_8_8_8_01_4.js | 4 + ...es___3_011_00_01_t_8_8_8_01_4-members.html | 108 + ...t_1_1times___3_011_00_01_t_8_8_8_01_4.html | 145 + ...ist_1_1times___3_011_00_01_t_8_8_8_01_4.js | 4 + .../structutl_1_1meta_1_1wrap-members.html | 108 + doc/html/structutl_1_1meta_1_1wrap.html | 150 + doc/html/structutl_1_1meta_1_1wrap.js | 4 + .../structutl_1_1meta_1_1wrap__i-members.html | 108 + doc/html/structutl_1_1meta_1_1wrap__i.html | 152 + doc/html/structutl_1_1meta_1_1wrap__i.js | 4 + ..._1out__dev__details_1_1is__out__dev__.html | 128 + ...1_1out__dev__details_1_1is__out__dev__.png | Bin 0 -> 813 bytes ...p_1_1fbf8d2409fc6de9dd6b9649bedc1b379.html | 128 + ...tp_1_1fbf8d2409fc6de9dd6b9649bedc1b379.png | Bin 0 -> 3639 bytes ...tdev__it__details_1_1is__outdev__it__.html | 128 + ...utdev__it__details_1_1is__outdev__it__.png | Bin 0 -> 832 bytes ...ename8786ebbbd0dc9ca1b14571e779d99d60.html | 128 + ...pename8786ebbbd0dc9ca1b14571e779d99d60.png | Bin 0 -> 1646 bytes .../structutl_1_1output__iterator__tag.html | 117 + ...tutl_1_1random__access__iterator__tag.html | 125 + ...ctutl_1_1random__access__iterator__tag.png | Bin 0 -> 1700 bytes ...ctutl_1_1spi__i__details_1_1is__spi__.html | 128 + ...uctutl_1_1spi__i__details_1_1is__spi__.png | Bin 0 -> 689 bytes ...f__sa2db29f6d65d34ecf5e49ec30b6600d78.html | 128 + ...if__sa2db29f6d65d34ecf5e49ec30b6600d78.png | Bin 0 -> 2005 bytes doc/html/structutl_1_1virtual__tag.html | 117 + doc/html/sync_off.png | Bin 0 -> 853 bytes doc/html/sync_on.png | Bin 0 -> 845 bytes doc/html/tab_a.png | Bin 0 -> 142 bytes doc/html/tab_b.png | Bin 0 -> 169 bytes doc/html/tab_h.png | Bin 0 -> 177 bytes doc/html/tab_s.png | Bin 0 -> 184 bytes doc/html/tabs.css | 1 + doc/html/test__1w__impl_8cpp.html | 142 + doc/html/test__1w__impl_8cpp.js | 8 + doc/html/test__1w__impl_8cpp_source.html | 120 + doc/html/test__i2c__impl_8cpp.html | 140 + doc/html/test__i2c__impl_8cpp.js | 7 + doc/html/test__i2c__impl_8cpp_source.html | 116 + doc/html/test__ostream__dev_8cpp.html | 175 + doc/html/test__ostream__dev_8cpp.js | 20 + doc/html/test__ostream__dev_8cpp_source.html | 130 + doc/html/test__spi__impl_8cpp.html | 142 + doc/html/test__spi__impl_8cpp.js | 8 + doc/html/test__spi__impl_8cpp_source.html | 118 + doc/html/typelist_8h.html | 411 + doc/html/typelist_8h.js | 93 + doc/html/typelist_8h_source.html | 208 + doc/html/types_8h.html | 149 + doc/html/types_8h.js | 9 + doc/html/types_8h_source.html | 112 + doc/html/useif_8h.html | 152 + doc/html/useif_8h.js | 7 + doc/html/useif_8h_source.html | 117 + doc/html/utility_2invoke_8h.html | 180 + doc/html/utility_2invoke_8h.js | 15 + doc/html/utility_2invoke_8h_source.html | 126 + doc/html/version_8h.html | 155 + doc/html/version_8h.js | 16 + doc/html/version_8h_source.html | 105 + doc/latex/Makefile | 21 + doc/latex/__1wire_8h.tex | 79 + doc/latex/__1wire__id_8h.tex | 31 + doc/latex/__1wire__uart_8h.tex | 37 + .../_concepts_2lib_2gtest_2gtest-all_8d.tex | 2 + doc/latex/_concepts_2source_2main_8d.tex | 2 + ...oncepts_2source_2tests_2_t_concepts_8d.tex | 2 + .../_concepts_2source_2tests_2_tinvoke_8d.tex | 2 + ...epts_2source_2tests_2test__1w__impl_8d.tex | 2 + ...pts_2source_2tests_2test__i2c__impl_8d.tex | 2 + ..._2source_2tests_2test__ostream__dev_8d.tex | 2 + ...pts_2source_2tests_2test__spi__impl_8d.tex | 2 + doc/latex/_r_e_a_d_m_e_8md.tex | 2 + doc/latex/_t_concepts_8cpp.tex | 90 + doc/latex/_tinvoke_8cpp.tex | 34 + doc/latex/_tmeta_8d.tex | 2 + doc/latex/_tmeta_basic_8cpp.tex | 54 + doc/latex/_tmeta_basic_8d.tex | 2 + doc/latex/_tmeta_detection_8cpp.tex | 59 + doc/latex/_tmeta_detection_8d.tex | 2 + doc/latex/_tmeta_typelist_8cpp.tex | 66 + doc/latex/_tmeta_typelist_8d.tex | 2 + ...ude_2utl_2concepts_2defines_8h-example.tex | 46 + ...clude_2utl_2meta_2detection_8h-example.tex | 123 + ...2include_2utl_2meta_2invoke_8h-example.tex | 242 + ...nclude_2utl_2meta_2typelist_8h-example.tex | 588 ++ doc/latex/annotated.tex | 375 + doc/latex/array_8h.tex | 47 + doc/latex/classtest__1w_1_1_o_w.eps | 203 + doc/latex/classtest__1w_1_1_o_w.tex | 21 + .../classtest__1w_1_1_test__1w__impl.eps | 197 + .../classtest__1w_1_1_test__1w__impl.tex | 39 + doc/latex/classtest__concepts_1_1_base.eps | 203 + doc/latex/classtest__concepts_1_1_base.tex | 20 + .../classtest__concepts_1_1_derived1.eps | 203 + .../classtest__concepts_1_1_derived1.tex | 20 + .../classtest__concepts_1_1_derived2.eps | 203 + .../classtest__concepts_1_1_derived2.tex | 20 + ...stest__concepts_1_1_have_operator_base.tex | 50 + ...__concepts_1_1_have_perfect_forwarding.tex | 33 + doc/latex/classtest__i2c_1_1_i2_c.eps | 203 + doc/latex/classtest__i2c_1_1_i2_c.tex | 39 + ...t__ostream__dev_1_1_ostream__dev__impl.eps | 197 + ...t__ostream__dev_1_1_ostream__dev__impl.tex | 111 + ...__ostream__dev_1_1_ostream__vdev__impl.eps | 197 + ...__ostream__dev_1_1_ostream__vdev__impl.tex | 111 + ...test__ostream__dev_1_1_tostream___idev.eps | 197 + ...test__ostream__dev_1_1_tostream___idev.tex | 39 + ...test__ostream__dev_1_1_tostream___vdev.eps | 197 + ...test__ostream__dev_1_1_tostream___vdev.tex | 51 + doc/latex/classtest__spi_1_1_s_p_i.eps | 203 + doc/latex/classtest__spi_1_1_s_p_i.tex | 39 + .../classtest__spi_1_1_test__spi__impl.eps | 197 + .../classtest__spi_1_1_test__spi__impl.tex | 39 + ...stesting_1_1_empty_test_event_listener.eps | 197 + ...stesting_1_1_empty_test_event_listener.tex | 270 + doc/latex/classtesting_1_1_environment.tex | 63 + doc/latex/classtesting_1_1_message.tex | 141 + doc/latex/classtesting_1_1_scoped_trace.tex | 69 + doc/latex/classtesting_1_1_test.eps | 215 + doc/latex/classtesting_1_1_test.tex | 189 + .../classtesting_1_1_test_event_listener.eps | 197 + .../classtesting_1_1_test_event_listener.tex | 241 + .../classtesting_1_1_test_event_listeners.tex | 161 + doc/latex/classtesting_1_1_test_info.tex | 229 + doc/latex/classtesting_1_1_test_property.tex | 75 + doc/latex/classtesting_1_1_test_result.tex | 245 + doc/latex/classtesting_1_1_test_suite.tex | 229 + .../classtesting_1_1_test_with_param.eps | 203 + .../classtesting_1_1_test_with_param.tex | 28 + doc/latex/classtesting_1_1_unit_test.tex | 377 + .../classtesting_1_1_with_param_interface.eps | 197 + .../classtesting_1_1_with_param_interface.tex | 104 + ..._1internal2_1_1_type_without_formatter.tex | 40 + ...1_t_00_01k_convertible_to_integer_01_4.tex | 40 + ..._formatter_3_01_t_00_01k_protobuf_01_4.tex | 40 + ...stesting_1_1internal_1_1_assert_helper.tex | 51 + ...esting_1_1internal_1_1_captured_stream.tex | 59 + ...rnal_1_1_cartesian_product_generator10.eps | 197 + ...rnal_1_1_cartesian_product_generator10.tex | 115 + ...ernal_1_1_cartesian_product_generator2.eps | 197 + ...ernal_1_1_cartesian_product_generator2.tex | 115 + ...ernal_1_1_cartesian_product_generator3.eps | 197 + ...ernal_1_1_cartesian_product_generator3.tex | 115 + ...ernal_1_1_cartesian_product_generator4.eps | 197 + ...ernal_1_1_cartesian_product_generator4.tex | 115 + ...ernal_1_1_cartesian_product_generator5.eps | 197 + ...ernal_1_1_cartesian_product_generator5.tex | 115 + ...ernal_1_1_cartesian_product_generator6.eps | 197 + ...ernal_1_1_cartesian_product_generator6.tex | 115 + ...ernal_1_1_cartesian_product_generator7.eps | 197 + ...ernal_1_1_cartesian_product_generator7.tex | 115 + ...ernal_1_1_cartesian_product_generator8.eps | 197 + ...ernal_1_1_cartesian_product_generator8.tex | 115 + ...ernal_1_1_cartesian_product_generator9.eps | 197 + ...ernal_1_1_cartesian_product_generator9.tex | 115 + ...nternal_1_1_cartesian_product_holder10.tex | 57 + ...internal_1_1_cartesian_product_holder2.tex | 57 + ...internal_1_1_cartesian_product_holder3.tex | 57 + ...internal_1_1_cartesian_product_holder4.tex | 57 + ...internal_1_1_cartesian_product_holder5.tex | 57 + ...internal_1_1_cartesian_product_holder6.tex | 57 + ...internal_1_1_cartesian_product_holder7.tex | 57 + ...internal_1_1_cartesian_product_holder8.tex | 57 + ...internal_1_1_cartesian_product_holder9.tex | 57 + ...classtesting_1_1internal_1_1_eq_helper.tex | 54 + ..._1internal_1_1_eq_helper_3_01true_01_4.tex | 53 + ...lasstesting_1_1internal_1_1_flat_tuple.eps | 197 + ...lasstesting_1_1internal_1_1_flat_tuple.tex | 86 + ...testing_1_1internal_1_1_floating_point.tex | 311 + ..._1_1internal_1_1_format_for_comparison.tex | 40 + ..._to_print[_n]_00_01_other_operand_01_4.tex | 40 + ...lasstesting_1_1internal_1_1_g_test_log.tex | 64 + ...ting_1_1internal_1_1_g_test_mutex_lock.tex | 36 + ...stesting_1_1internal_1_1_ignored_value.tex | 37 + ...1_1internal_1_1_implicitly_convertible.tex | 45 + .../classtesting_1_1internal_1_1_mutex.tex | 75 + ...sstesting_1_1internal_1_1_native_array.tex | 179 + ...esting_1_1internal_1_1_param_generator.tex | 114 + ...internal_1_1_param_generator_interface.eps | 203 + ...internal_1_1_param_generator_interface.tex | 94 + ...testing_1_1internal_1_1_param_iterator.tex | 198 + ...1internal_1_1_param_iterator_interface.tex | 88 + ...nternal_1_1_parameterized_test_factory.eps | 197 + ...nternal_1_1_parameterized_test_factory.tex | 86 + ...rnal_1_1_parameterized_test_suite_info.eps | 197 + ...rnal_1_1_parameterized_test_suite_info.tex | 168 + ...1_1_parameterized_test_suite_info_base.eps | 197 + ...1_1_parameterized_test_suite_info_base.tex | 96 + ..._1_1_parameterized_test_suite_registry.tex | 89 + .../classtesting_1_1internal_1_1_r_e.tex | 139 + .../classtesting_1_1internal_1_1_random.tex | 77 + ...esting_1_1internal_1_1_range_generator.eps | 197 + ...esting_1_1internal_1_1_range_generator.tex | 97 + ...ting_1_1internal_1_1_test_factory_base.eps | 203 + ...ting_1_1internal_1_1_test_factory_base.tex | 72 + ...ting_1_1internal_1_1_test_factory_impl.eps | 197 + ...ting_1_1internal_1_1_test_factory_impl.tex | 51 + ...ting_1_1internal_1_1_test_meta_factory.eps | 197 + ...ting_1_1internal_1_1_test_meta_factory.tex | 81 + ...1_1internal_1_1_test_meta_factory_base.tex | 52 + ...sstesting_1_1internal_1_1_thread_local.tex | 108 + ...testing_1_1internal_1_1_type_id_helper.tex | 40 + ...testing_1_1internal_1_1_type_with_size.tex | 40 + ...internal_1_1_type_with_size_3_014_01_4.tex | 51 + ...internal_1_1_type_with_size_3_018_01_4.tex | 51 + ...ting_1_1internal_1_1_universal_printer.tex | 40 + ...nal_1_1_universal_printer_3_01_t[_n]_4.tex | 40 + ...1_1_universal_printer_3_01_t_01_6_01_4.tex | 40 + ..._1internal_1_1_universal_terse_printer.tex | 40 + ...1_universal_terse_printer_3_01_t[_n]_4.tex | 40 + ...iversal_terse_printer_3_01_t_01_6_01_4.tex | 40 + ...ersal_terse_printer_3_01char_01_5_01_4.tex | 39 + ...rse_printer_3_01const_01char_01_5_01_4.tex | 39 + ...printer_3_01const_01wchar__t_01_5_01_4.tex | 39 + ...l_terse_printer_3_01wchar__t_01_5_01_4.tex | 39 + ...asstesting_1_1internal_1_1_value_array.tex | 57 + ...1_1_values_in_iterator_range_generator.eps | 197 + ...1_1_values_in_iterator_range_generator.tex | 98 + doc/latex/classutl_1_1__1wire__i.tex | 480 ++ ...tl_1_1__1wire__i_3_01virtual__tag_01_4.eps | 197 + ...tl_1_1__1wire__i_3_01virtual__tag_01_4.tex | 456 ++ doc/latex/classutl_1_1__1wire__id__t.eps | 197 + doc/latex/classutl_1_1__1wire__id__t.tex | 155 + doc/latex/classutl_1_1__1wire__uart__i.eps | 203 + doc/latex/classutl_1_1__1wire__uart__i.tex | 108 + ...__1wire__uart__i_3_01virtual__tag_01_4.eps | 197 + ...__1wire__uart__i_3_01virtual__tag_01_4.tex | 106 + doc/latex/classutl_1_1i2c__bb__i.eps | 197 + doc/latex/classutl_1_1i2c__bb__i.tex | 149 + ...tl_1_1i2c__bb__i_3_01virtual__tag_01_4.eps | 197 + ...tl_1_1i2c__bb__i_3_01virtual__tag_01_4.tex | 141 + doc/latex/classutl_1_1i2c__i.eps | 197 + doc/latex/classutl_1_1i2c__i.tex | 292 + ...assutl_1_1i2c__i_3_01virtual__tag_01_4.eps | 197 + ...assutl_1_1i2c__i_3_01virtual__tag_01_4.tex | 270 + doc/latex/classutl_1_1idx__dev.tex | 597 ++ ..._00_01data__t_00_01idx__t_00_01_n_01_4.tex | 585 ++ doc/latex/classutl_1_1in__dev.tex | 407 + ..._tag_00_01data__t_00_01streamsize_01_4.tex | 365 + doc/latex/classutl_1_1inbuf__dev.tex | 423 ++ ..._tag_00_01data__t_00_01streamsize_01_4.tex | 380 + doc/latex/classutl_1_1indev__it.tex | 465 ++ doc/latex/classutl_1_1iodev__it.tex | 473 ++ doc/latex/classutl_1_1istreamdev__it.tex | 315 + doc/latex/classutl_1_1ostream__dev.tex | 403 + ...dev_3_01virtual__tag_00_01data__t_01_4.tex | 378 + doc/latex/classutl_1_1ostreamdev__it.tex | 239 + doc/latex/classutl_1_1out__dev.tex | 407 + ..._tag_00_01data__t_00_01streamsize_01_4.tex | 364 + doc/latex/classutl_1_1outdev__it.tex | 351 + doc/latex/classutl_1_1spi__bb__i.eps | 197 + doc/latex/classutl_1_1spi__bb__i.tex | 108 + ...o_l_00_01_c_p_h_a_00_01_bit_order_01_4.eps | 197 + ...o_l_00_01_c_p_h_a_00_01_bit_order_01_4.tex | 103 + doc/latex/classutl_1_1spi__i.eps | 197 + doc/latex/classutl_1_1spi__i.tex | 238 + ...assutl_1_1spi__i_3_01virtual__tag_01_4.eps | 197 + ...assutl_1_1spi__i_3_01virtual__tag_01_4.tex | 228 + doc/latex/concepts_8h.tex | 40 + doc/latex/crtp_8h.tex | 38 + doc/latex/defines_8h.tex | 28 + doc/latex/detection_8h.tex | 71 + doc/latex/dev__iterators_8h.tex | 124 + .../dir_13e138d54eb8818da29c3992edef070a.tex | 14 + .../dir_1de759a74730efb26e16b92a33818a86.tex | 13 + .../dir_24134ffae0315e39a5b4fb4f5ac472ee.tex | 19 + .../dir_2b272fa693f0990de7cf333b4d9023f8.tex | 9 + .../dir_4b85ac8f363cc57fa06fe00d732b3ef4.tex | 7 + .../dir_5aedf2f82d2f4f13addc24fda7ca3c64.tex | 7 + .../dir_5f9a51ed898ae26d530fbf5192dc35b6.tex | 13 + .../dir_82754f54d9380477ef02477185c1f103.tex | 19 + .../dir_8411d781812971a63652b25f8ca24477.tex | 23 + .../dir_8e256609955cbc0738929bb20e4749b4.tex | 7 + .../dir_9613c8d8aa19c2ea309ba544861172c5.tex | 7 + .../dir_a96de09a69cea6234edc1a1514d133f0.tex | 9 + .../dir_aaec33bad2bb7a5d6c86281ead709be5.tex | 11 + .../dir_ab041ef57e3839706d1cbf08a477bd80.tex | 12 + .../dir_b27f91983daa7c88d19acbf32a947465.tex | 9 + .../dir_b2ad3c1a6521a4924fa9194d98c323e2.tex | 19 + .../dir_c2811dd2f770757e67563302be4130d6.tex | 7 + .../dir_c6a55aeb35dd92d90cdd3b5869981960.tex | 23 + .../dir_cd2b5ca7f5fdf6a80655358f064ed410.tex | 7 + .../dir_d44c64559bbebec7f509842c48db8b23.tex | 7 + .../dir_d84abbe486a7f5f39e3c9088ffc1760a.tex | 23 + .../dir_e9da18de27e34a68f4aee9f9a960d991.tex | 17 + .../dir_ec678fe2ad4670066af397af03cd2f43.tex | 9 + .../dir_ffc5af52851d01e73a12da661e220384.tex | 12 + doc/latex/doxygen.sty | 503 ++ doc/latex/examples.tex | 11 + doc/latex/files.tex | 68 + doc/latex/group__concepts.tex | 56 + doc/latex/group__crtp.tex | 11 + doc/latex/group__detection.tex | 56 + doc/latex/group__integral.tex | 112 + doc/latex/group__invoke.tex | 10 + doc/latex/group__iterators.tex | 10 + doc/latex/group__logic.tex | 11 + doc/latex/group__sfinae.tex | 13 + doc/latex/group__type.tex | 163 + doc/latex/group__typelist.tex | 10 + doc/latex/group__version.tex | 193 + doc/latex/gtest-all_8cc.tex | 359 + doc/latex/gtest_8h.tex | 3664 +++++++++ doc/latex/hierarchy.tex | 550 ++ doc/latex/i2c_8h.tex | 55 + doc/latex/i2c__bb_8h.tex | 34 + doc/latex/id_8h.tex | 55 + doc/latex/idx__dev_8h.tex | 67 + doc/latex/impl_8h.tex | 21 + doc/latex/in__dev_8h.tex | 67 + doc/latex/inbuf__dev_8h.tex | 67 + doc/latex/integral_8h.tex | 80 + doc/latex/iterators_8h.tex | 24 + doc/latex/lib_2gtest_2gtest-all_8d.tex | 2 + doc/latex/main_8cpp.tex | 37 + doc/latex/make.bat | 30 + doc/latex/md__r_e_a_d_m_e.tex | 0 doc/latex/meta_2invoke_8h.tex | 110 + doc/latex/meta_8h.tex | 26 + doc/latex/modules.tex | 16 + doc/latex/namespace_tmeta_basic.tex | 171 + doc/latex/namespace_tmeta_detection.tex | 164 + doc/latex/namespace_tmeta_typelist.tex | 171 + doc/latex/namespaceproto2.tex | 2 + doc/latex/namespaces.tex | 53 + doc/latex/namespacetest__1w.tex | 57 + doc/latex/namespacetest__concepts.tex | 315 + doc/latex/namespacetest__i2c.tex | 55 + doc/latex/namespacetest__meta.tex | 39 + doc/latex/namespacetest__ostream__dev.tex | 187 + doc/latex/namespacetest__spi.tex | 57 + doc/latex/namespacetesting.tex | 557 ++ doc/latex/namespacetesting_1_1internal.tex | 2211 ++++++ doc/latex/namespacetesting_1_1internal2.tex | 103 + ...etesting_1_1internal_1_1edit__distance.tex | 72 + .../namespacetesting_1_1internal_1_1posix.tex | 254 + doc/latex/namespacetesting__internal.tex | 21 + doc/latex/namespaceutl.tex | 1726 +++++ doc/latex/namespaceutl_1_1__1wire__i__det.tex | 305 + doc/latex/namespaceutl_1_1common__impl.tex | 173 + doc/latex/namespaceutl_1_1detail.tex | 82 + doc/latex/namespaceutl_1_1details.tex | 82 + doc/latex/namespaceutl_1_1i2c__i__details.tex | 93 + .../namespaceutl_1_1idx__dev__details.tex | 122 + .../namespaceutl_1_1idxdev__it__details.tex | 13 + .../namespaceutl_1_1in__dev__details.tex | 119 + .../namespaceutl_1_1inbuf__dev__details.tex | 122 + .../namespaceutl_1_1indev__it__details.tex | 13 + doc/latex/namespaceutl_1_1meta.tex | 2083 +++++ .../namespaceutl_1_1meta_1_1apply__impl.tex | 15 + .../namespaceutl_1_1meta_1_1at__impl.tex | 40 + .../namespaceutl_1_1meta_1_1back__impl.tex | 13 + .../namespaceutl_1_1meta_1_1cat__impl.tex | 19 + ...amespaceutl_1_1meta_1_1count__if__impl.tex | 15 + doc/latex/namespaceutl_1_1meta_1_1detail.tex | 106 + .../namespaceutl_1_1meta_1_1filter__impl.tex | 15 + ...namespaceutl_1_1meta_1_1find__if__impl.tex | 15 + .../namespaceutl_1_1meta_1_1fold__impl.tex | 15 + .../namespaceutl_1_1meta_1_1front__impl.tex | 13 + ...amespaceutl_1_1meta_1_1pop__back__impl.tex | 11 + ...mespaceutl_1_1meta_1_1pop__front__impl.tex | 13 + ...espaceutl_1_1meta_1_1replace__if__impl.tex | 15 + ...amespaceutl_1_1meta_1_1rev__fold__impl.tex | 13 + .../namespaceutl_1_1meta_1_1reverse__impl.tex | 11 + ...namespaceutl_1_1meta_1_1seek__if__impl.tex | 15 + ...amespaceutl_1_1meta_1_1transform__impl.tex | 15 + ...ceutl_1_1meta_1_1transform__lazy__impl.tex | 15 + .../namespaceutl_1_1out__dev__details.tex | 122 + .../namespaceutl_1_1outdev__it__details.tex | 13 + doc/latex/namespaceutl_1_1spi.tex | 88 + doc/latex/namespaceutl_1_1spi__i__details.tex | 70 + doc/latex/operations_8h.tex | 134 + doc/latex/ostream__dev_8h.tex | 35 + doc/latex/out__dev_8h.tex | 67 + doc/latex/refman.tex | 673 ++ doc/latex/selection_8h.tex | 58 + doc/latex/sfinae_8h.tex | 52 + doc/latex/source_2main_8d.tex | 2 + doc/latex/source_2tests_2_t_concepts_8d.tex | 2 + doc/latex/source_2tests_2_tinvoke_8d.tex | 2 + .../source_2tests_2test__1w__impl_8d.tex | 2 + .../source_2tests_2test__i2c__impl_8d.tex | 2 + .../source_2tests_2test__ostream__dev_8d.tex | 2 + .../source_2tests_2test__spi__impl_8d.tex | 2 + doc/latex/spi_8h.tex | 68 + doc/latex/spi__bb_8h.tex | 35 + doc/latex/stl_8h.tex | 227 + doc/latex/struct_tmeta_basic_1_1_identity.tex | 36 + doc/latex/struct_tmeta_detection_1_1_a.tex | 85 + doc/latex/struct_tmeta_detection_1_1_bar.tex | 14 + doc/latex/struct_tmeta_detection_1_1_foo.tex | 14 + doc/latex/struct_tmeta_detection_1_1m_fun.tex | 36 + doc/latex/struct_tmeta_typelist_1_1_f.tex | 17 + .../struct_tmeta_typelist_1_1_identity.tex | 36 + .../struct_tmeta_typelist_1_1_mfun_bin.tex | 36 + .../struct_tmeta_typelist_1_1_mfun_bin__i.tex | 36 + .../struct_tmeta_typelist_1_1_mfun_un1.tex | 36 + .../struct_tmeta_typelist_1_1_mfun_un2.tex | 36 + ...struct_tmeta_typelist_1_1_pred__is_int.tex | 36 + ...truct_tmeta_typelist_1_1_pred__is_void.tex | 36 + doc/latex/structtest__concepts_1_1_a.tex | 66 + doc/latex/structtest__concepts_1_1_b.tex | 85 + doc/latex/structtest__concepts_1_1_empty.tex | 14 + ...ttest__concepts_1_1_have_copy_and_move.tex | 55 + ...tructtest__concepts_1_1_have_only_copy.tex | 55 + ...tructtest__concepts_1_1_have_only_move.tex | 55 + doc/latex/structtest__concepts_1_1_incr.tex | 44 + doc/latex/structtest__concepts_1_1_inv.tex | 44 + doc/latex/structtest__concepts_1_1_pred.tex | 44 + doc/latex/structtest__meta_1_1_ibar.tex | 77 + doc/latex/structtest__meta_1_1_ifoo.tex | 32 + ...testing_1_1_print_to_string_param_name.tex | 37 + .../structtesting_1_1_test_param_info.tex | 72 + ...ttesting_1_1internal_1_1_add_reference.tex | 40 + ...nal_1_1_add_reference_3_01_t_01_6_01_4.tex | 40 + ...ttesting_1_1internal_1_1_code_location.tex | 66 + ...nternal_1_1_compile_assert_types_equal.tex | 21 + ...assert_types_equal_3_01_t_00_01_t_01_4.tex | 21 + ...testing_1_1internal_1_1_const_char_ptr.tex | 69 + ...tructtesting_1_1internal_1_1_const_ref.tex | 40 + ...nternal_1_1_const_ref_3_01_t_01_6_01_4.tex | 40 + ...esting_1_1internal_1_1_double_sequence.tex | 21 + ...e_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4.tex | 40 + ...e_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4.tex | 40 + ...testing_1_1internal_1_1_elem_from_list.tex | 21 + ...e_3_01_i_8_8_8_01_4_00_01_t_8_8_8_01_4.eps | 197 + ...e_3_01_i_8_8_8_01_4_00_01_t_8_8_8_01_4.tex | 27 + ...ng_1_1internal_1_1_elem_from_list_impl.tex | 21 + ..._list_impl_3_01_t_00_01_i_00_01_i_01_4.tex | 40 + ...tructtesting_1_1internal_1_1_enable_if.tex | 21 + ..._1internal_1_1_enable_if_3_01true_01_4.tex | 39 + ...esting_1_1internal_1_1_flat_tuple_base.tex | 21 + ...ndex_sequence_3_01_idx_8_8_8_01_4_01_4.eps | 197 + ...ndex_sequence_3_01_idx_8_8_8_01_4_01_4.tex | 74 + ...g_1_1internal_1_1_flat_tuple_elem_base.tex | 21 + ...t_tuple_3_01_t_8_8_8_01_4_00_01_i_01_4.tex | 87 + ...testing_1_1internal_1_1_index_sequence.tex | 40 + ..._1_1internal_1_1_is_a_protocol_message.eps | 197 + ..._1_1internal_1_1_is_a_protocol_message.tex | 28 + ...ttesting_1_1internal_1_1_is_hash_table.tex | 40 + ...1_1internal_1_1_is_recursive_container.eps | 197 + ...1_1internal_1_1_is_recursive_container.tex | 27 + ...ternal_1_1_is_recursive_container_impl.tex | 21 + ..._container_impl_3_01_c_00_01false_01_4.eps | 197 + ..._container_impl_3_01_c_00_01false_01_4.tex | 28 + ...e_container_impl_3_01_c_00_01true_01_4.tex | 53 + .../structtesting_1_1internal_1_1_is_same.tex | 45 + ...ternal_1_1_is_same_3_01_t_00_01_t_01_4.tex | 45 + ...esting_1_1internal_1_1_iterator_traits.tex | 40 + ...l_1_1_iterator_traits_3_01_t_01_5_01_4.tex | 40 + ...erator_traits_3_01const_01_t_01_5_01_4.tex | 40 + ...ng_1_1internal_1_1_make_index_sequence.eps | 197 + ...ng_1_1internal_1_1_make_index_sequence.tex | 27 + ...nal_1_1_make_index_sequence_3_010_01_4.eps | 197 + ...nal_1_1_make_index_sequence_3_010_01_4.tex | 28 + ...ng_1_1internal_1_1_param_name_gen_func.tex | 40 + ..._1internal_1_1_relation_to_source_copy.tex | 18 + ...ernal_1_1_relation_to_source_reference.tex | 18 + ...cttesting_1_1internal_1_1_remove_const.tex | 40 + ..._1_1_remove_const_3_01const_01_t[_n]_4.tex | 40 + ...l_1_1_remove_const_3_01const_01_t_01_4.tex | 40 + ...sting_1_1internal_1_1_remove_reference.tex | 40 + ..._1_1_remove_reference_3_01_t_01_6_01_4.tex | 40 + ...ernal_1_1_static_assert_type_eq_helper.tex | 21 + ...ert_type_eq_helper_3_01_t_00_01_t_01_4.tex | 45 + ...ing_1_1internal_1_1_suite_api_resolver.eps | 197 + ...ing_1_1internal_1_1_suite_api_resolver.tex | 78 + ...ting_1_1internal_1_1_wrap_printer_type.tex | 21 + ...ttesting_1_1internal_1_1bool__constant.eps | 207 + ...ttesting_1_1internal_1_1bool__constant.tex | 65 + .../structtesting_1_1internal_1_1faketype.tex | 18 + .../structtesting_1_1internal_1_1is__same.eps | 197 + .../structtesting_1_1internal_1_1is__same.tex | 28 + ...ternal_1_1is__same_3_01_t_00_01_t_01_4.eps | 197 + ...ternal_1_1is__same_3_01_t_00_01_t_01_4.tex | 28 + ...tutl_1_1__1wire__i__det_1_1is__1wire__.eps | 197 + ...tutl_1_1__1wire__i__det_1_1is__1wire__.tex | 32 + ...0_01meta_1_1void__t_3_01void_01_4_01_4.eps | 197 + ...0_01meta_1_1void__t_3_01void_01_4_01_4.tex | 32 + doc/latex/structutl_1_1array.tex | 599 ++ doc/latex/structutl_1_1array__traits.tex | 77 + ...1_1array__traits_3_01___tp_00_010_01_4.tex | 58 + ...__traits_3_01___tp_00_010_01_4_1_1type.tex | 21 + ...uctutl_1_1bidirectional__iterator__tag.eps | 215 + ...uctutl_1_1bidirectional__iterator__tag.tex | 24 + ...l_1_1common__impl_1_1____common__ref__.tex | 21 + ..._t_3_05e5aa384829bb34312a7b8ee4ecaa00f.tex | 40 + ...d__t_329fba5aeac3b93aa9cfa5aa7e282e196.tex | 40 + ...d__t_3972a8d6e6799b6ee6537c969cdced343.tex | 40 + ...oid__tc4e71c227f251cadf0e0fb7b1ba6f1e9.tex | 40 + ...1common__impl_1_1____common__reference.eps | 209 + ...1common__impl_1_1____common__reference.tex | 27 + ...common__impl_1_1____common__reference2.eps | 203 + ...common__impl_1_1____common__reference2.tex | 27 + ...01____785d0aa2f8a62416e19573fcbdd83836.tex | 40 + ...common__impl_1_1____common__reference3.eps | 197 + ...common__impl_1_1____common__reference3.tex | 27 + ...01____015b01ed12d2d90ee57fbf756ab847e9.tex | 40 + ...d_1_1i23b95b4b3a65ce598dbcc7f52e9dab2c.tex | 40 + ...tutl_1_1common__impl_1_1____copy__cv__.tex | 41 + ...1____copy__cv___3_01const_01_from_01_4.tex | 41 + ...cv___3_01const_01volatile_01_from_01_4.tex | 41 + ...__copy__cv___3_01volatile_01_from_01_4.tex | 41 + .../structutl_1_1common__impl_1_1____xref.tex | 41 + ...mon__impl_1_1____xref_3_01_t_01_6_01_4.tex | 41 + ...n__impl_1_1____xref_3_01_t_01_6_6_01_4.tex | 41 + ...__impl_1_1____xref_3_01const_01_t_01_4.tex | 41 + ...___xref_3_01const_01volatile_01_t_01_4.tex | 41 + ...mpl_1_1____xref_3_01volatile_01_t_01_4.tex | 41 + ...mmon__impl_1_1basic__common__reference.tex | 21 + ...l_1_1common__impl_1_1common__reference.tex | 21 + ...1_t_00_01_u_00_01_v_00_01_w_8_8_8_01_4.eps | 197 + ...1_t_00_01_u_00_01_v_00_01_w_8_8_8_01_4.tex | 27 + ...1common__reference_3_01_t_00_01_u_01_4.eps | 215 + ...1common__reference_3_01_t_00_01_u_01_4.tex | 27 + ..._impl_1_1common__reference_3_01_t_01_4.tex | 40 + ...structutl_1_1contiguous__iterator__tag.eps | 215 + ...structutl_1_1contiguous__iterator__tag.tex | 24 + doc/latex/structutl_1_1crtp__tag.tex | 23 + ...tructutl_1_1detail_1_1invoke__result__.tex | 40 + ..._01___callable_00_01___args_8_8_8_01_4.tex | 40 + ...tructutl_1_1detail_1_1is__ref__wrapper.eps | 197 + ...tructutl_1_1detail_1_1is__ref__wrapper.tex | 27 + ...1_1reference__wrapper_3_01_u_01_4_01_4.eps | 197 + ...1_1reference__wrapper_3_01_u_01_4_01_4.tex | 27 + .../structutl_1_1detail_1_1try__invoke.tex | 40 + .../structutl_1_1details_1_1is__boolean__.tex | 40 + ...e__t_37e77ed45a431955fc15b4c1210ad8491.tex | 40 + ...ails_1_1is__strict__totally__ordered__.tex | 40 + ...a_1_1uab48bcfc89164f446368b35bcc7c8bcd.tex | 40 + ..._1is__strict__totally__ordered__with__.tex | 40 + ...oid__t8fb7dd5a6ad25952241e37c6f163f434.tex | 40 + ...__weakly__equality__comparable__with__.tex | 40 + ...1_1voi4404f901930622694666ca68fb75381b.tex | 40 + .../structutl_1_1dev__iterator__traits.tex | 101 + .../structutl_1_1forward__iterator__tag.eps | 215 + .../structutl_1_1forward__iterator__tag.tex | 24 + ...uctutl_1_1i2c__i__details_1_1is__i2c__.eps | 197 + ...uctutl_1_1i2c__i__details_1_1is__i2c__.tex | 32 + ...___tp_1_1_sequence_00_01void_01_4_01_4.eps | 197 + ...___tp_1_1_sequence_00_01void_01_4_01_4.tex | 32 + doc/latex/structutl_1_1id__t.tex | 635 ++ doc/latex/structutl_1_1id__traits.tex | 77 + ...tl_1_1id__traits_3_01___tp_00_010_01_4.tex | 58 + ...__traits_3_01___tp_00_010_01_4_1_1type.tex | 21 + ...1_1idx__dev__details_1_1is__idx__dev__.eps | 197 + ...1_1idx__dev__details_1_1is__idx__dev__.tex | 32 + ...tp_1_1ae8b6b24c31c81bdd901da6e6387d84b.eps | 197 + ...tp_1_1ae8b6b24c31c81bdd901da6e6387d84b.tex | 32 + ...dxdev__it__details_1_1is__idxdev__it__.eps | 197 + ...dxdev__it__details_1_1is__idxdev__it__.tex | 32 + ...penamebd9ada52ca7b7570c26d0c280af5e635.eps | 197 + ...penamebd9ada52ca7b7570c26d0c280af5e635.tex | 32 + ...l_1_1in__dev__details_1_1is__in__dev__.eps | 197 + ...l_1_1in__dev__details_1_1is__in__dev__.tex | 32 + ..._1_1dad922a62deb7c32e2cff18d66b8c887d2.eps | 197 + ..._1_1dad922a62deb7c32e2cff18d66b8c887d2.tex | 32 + ...nbuf__dev__details_1_1is__inbuf__dev__.eps | 197 + ...nbuf__dev__details_1_1is__inbuf__dev__.tex | 32 + ...1___tpc269ee3885240cc8c352f3c6b3a67cd7.eps | 197 + ...1___tpc269ee3885240cc8c352f3c6b3a67cd7.tex | 32 + ...1indev__it__details_1_1is__indev__it__.eps | 197 + ...1indev__it__details_1_1is__indev__it__.tex | 32 + ...name_06508604dcee4010234c84cc332fa196b.eps | 197 + ...name_06508604dcee4010234c84cc332fa196b.tex | 32 + .../structutl_1_1input__iterator__tag.eps | 215 + .../structutl_1_1input__iterator__tag.tex | 24 + doc/latex/structutl_1_1is__invocable.eps | 197 + doc/latex/structutl_1_1is__invocable.tex | 32 + doc/latex/structutl_1_1is__invocable__r.eps | 197 + doc/latex/structutl_1_1is__invocable__r.tex | 32 + ...tutl_1_1meta_1_1apply__impl_1_1apply__.tex | 21 + ...quence_3_01_t_00_01_is_8_8_8_01_4_01_4.tex | 45 + ...0_01typelist_3_01_list_8_8_8_01_4_01_4.tex | 45 + ..._1_1meta_1_1at__impl_1_1__add__pointer.tex | 43 + .../structutl_1_1meta_1_1at__impl_1_1at__.tex | 21 + ...list_3_01_list_8_8_8_01_4_00_01_n_01_4.tex | 53 + ...tutl_1_1meta_1_1at__impl_1_1at__head__.tex | 21 + ...3_01typelist_3_01voids_8_8_8_01_4_01_4.tex | 46 + ...uctutl_1_1meta_1_1back__impl_1_1back__.tex | 21 + ...t_3_01_head_00_01_tail_8_8_8_01_4_01_4.tex | 40 + doc/latex/structutl_1_1meta_1_1bind__back.tex | 44 + .../structutl_1_1meta_1_1bind__front.tex | 44 + ...tructutl_1_1meta_1_1cat__impl_1_1cat__.tex | 21 + ...3_01_l2_8_8_8_01_4_00_01_ln_8_8_8_01_4.eps | 197 + ...3_01_l2_8_8_8_01_4_00_01_ln_8_8_8_01_4.tex | 27 + ..._00_01typelist_3_01_l2_8_8_8_01_4_01_4.tex | 40 + ...__3_01typelist_3_01_l1_8_8_8_01_4_01_4.tex | 40 + ...tutl_1_1meta_1_1cat__impl_1_1cat___3_4.tex | 39 + ...meta_1_1count__if__impl_1_1count__if__.tex | 21 + ..._tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.tex | 40 + ...3_01typelist_3_4_00_01_fn_00_01_n_01_4.tex | 40 + ...structutl_1_1meta_1_1detail_1_1__and__.tex | 21 + ...___t2_00_01___t3_00_01___tn_8_8_8_01_4.eps | 197 + ...___t2_00_01___t3_00_01___tn_8_8_8_01_4.tex | 27 + ...l_1_1__and___3_01___t1_00_01___t2_01_4.eps | 197 + ...l_1_1__and___3_01___t1_00_01___t2_01_4.tex | 27 + ...ta_1_1detail_1_1__and___3_01___t1_01_4.eps | 197 + ...ta_1_1detail_1_1__and___3_01___t1_01_4.tex | 27 + ...ctutl_1_1meta_1_1detail_1_1__and___3_4.eps | 197 + ...ctutl_1_1meta_1_1detail_1_1__and___3_4.tex | 27 + .../structutl_1_1meta_1_1detail_1_1__or__.tex | 21 + ...___t2_00_01___t3_00_01___tn_8_8_8_01_4.eps | 197 + ...___t2_00_01___t3_00_01___tn_8_8_8_01_4.tex | 27 + ...il_1_1__or___3_01___t1_00_01___t2_01_4.eps | 197 + ...il_1_1__or___3_01___t1_00_01___t2_01_4.tex | 27 + ...eta_1_1detail_1_1__or___3_01___t1_01_4.eps | 197 + ...eta_1_1detail_1_1__or___3_01___t1_01_4.tex | 27 + ...uctutl_1_1meta_1_1detail_1_1__or___3_4.eps | 197 + ...uctutl_1_1meta_1_1detail_1_1__or___3_4.tex | 27 + ...ructutl_1_1meta_1_1detail_1_1compose__.tex | 21 + ...ompose___3_01_fn0_00_01_fns_8_8_8_01_4.tex | 41 + ...a_1_1detail_1_1compose___3_01_fn0_01_4.tex | 41 + ...tutl_1_1meta_1_1detail_1_1compose__f__.tex | 21 + ...ose__f___3_01_fn0_00_01_fns_8_8_8_01_4.tex | 41 + ..._1detail_1_1compose__f___3_01_fn0_01_4.tex | 41 + ...structutl_1_1meta_1_1detail_1_1defer__.tex | 43 + ...uctutl_1_1meta_1_1detail_1_1defer__i__.tex | 43 + ...tructutl_1_1meta_1_1detail_1_1detector.tex | 53 + ...01_4_0c35bdbd19f56980c0b5ee6d490bfb634.tex | 53 + ...structutl_1_1meta_1_1detail_1_1if__c__.tex | 26 + ...__3_01false_00_01_then_00_01_else_01_4.tex | 26 + ...___3_01true_00_01_then_00_01_else_01_4.tex | 26 + ...il_1_1if__c___3_01true_00_01_then_01_4.tex | 26 + ..._1_1meta_1_1detail_1_1is__applicable__.tex | 72 + ...1meta_1_1detail_1_1is__applicable__i__.tex | 72 + ...1meta_1_1detail_1_1is__applicable__q__.tex | 72 + .../structutl_1_1meta_1_1detail_1_1when__.tex | 21 + ...meta_1_1detail_1_1when___3_01true_01_4.tex | 39 + ...tl_1_1meta_1_1filter__impl_1_1filter__.tex | 21 + ..._tail_8_8_8_01_4_00_01_fn_00_01_l_01_4.tex | 40 + ...3_01typelist_3_4_00_01_fn_00_01_l_01_4.tex | 40 + ..._1meta_1_1find__if__impl_1_1find__if__.tex | 21 + ..._tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.tex | 40 + ...3_01typelist_3_4_00_01_fn_00_01_n_01_4.tex | 40 + ...uctutl_1_1meta_1_1fold__impl_1_1fold__.tex | 21 + ..._tail_8_8_8_01_4_00_01_v_00_01_fn_01_4.tex | 40 + ..._01typelist_3_4_00_01_v0_00_01_fn_01_4.tex | 40 + ...tutl_1_1meta_1_1front__impl_1_1front__.tex | 21 + ...t_3_01_head_00_01_tail_8_8_8_01_4_01_4.tex | 40 + doc/latex/structutl_1_1meta_1_1identity.tex | 68 + doc/latex/structutl_1_1meta_1_1nat__.tex | 59 + doc/latex/structutl_1_1meta_1_1nil__.tex | 36 + .../structutl_1_1meta_1_1not__same__as.tex | 26 + ...tutl_1_1meta_1_1not__same__as_1_1apply.eps | 197 + ...tutl_1_1meta_1_1not__same__as_1_1apply.tex | 28 + ...meta_1_1pop__back__impl_1_1pop__back__.tex | 43 + ...ta_1_1pop__front__impl_1_1pop__front__.tex | 21 + ...t_3_01_head_00_01_tail_8_8_8_01_4_01_4.tex | 40 + doc/latex/structutl_1_1meta_1_1quote.tex | 46 + doc/latex/structutl_1_1meta_1_1quote__i.tex | 49 + ..._1_1replace__if__impl_1_1replace__if__.tex | 21 + ...8_8_8_dfa8065a3617f53ecded260506092a07.tex | 40 + ...st_3_4_00_01_fn_00_01_t_00_01_ret_01_4.tex | 40 + ...meta_1_1rev__fold__impl_1_1rev__fold__.tex | 21 + ..._tail_8_8_8_01_4_00_01_v_00_01_fn_01_4.tex | 40 + ...t_3_01_tail_01_4_00_01_v_00_01_fn_01_4.tex | 40 + ...3_01typelist_3_4_00_01_v_00_01_fn_01_4.tex | 40 + ..._1_1meta_1_1reverse__impl_1_1reverse__.tex | 43 + doc/latex/structutl_1_1meta_1_1same__.eps | 197 + doc/latex/structutl_1_1meta_1_1same__.tex | 27 + ...ta_1_1same___3_01___tp_00_01___tp_01_4.eps | 197 + ...ta_1_1same___3_01___tp_00_01___tp_01_4.tex | 27 + doc/latex/structutl_1_1meta_1_1same__as.tex | 26 + ...structutl_1_1meta_1_1same__as_1_1apply.eps | 203 + ...structutl_1_1meta_1_1same__as_1_1apply.tex | 28 + ..._1meta_1_1seek__if__impl_1_1seek__if__.tex | 21 + ..._tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.tex | 40 + ...3_01typelist_3_4_00_01_fn_00_01_n_01_4.tex | 40 + ...meta_1_1transform__impl_1_1transform__.tex | 21 + ..._8_01_8fba6bf3d0565d17a96950cb517db5f1.tex | 40 + ...8_01_40fe2b1c8ede658aadb6925de73541689.tex | 40 + ...sform__lazy__impl_1_1transform__lazy__.tex | 21 + ...3_01_t14ff615a4bff6c4c3701df9c38aaa6a5.tex | 40 + ...3_01_t56243bc35bf73da8271cb88f34751f3a.tex | 40 + doc/latex/structutl_1_1meta_1_1typelist.tex | 108 + doc/latex/structutl_1_1meta_1_1wrap.tex | 46 + doc/latex/structutl_1_1meta_1_1wrap__i.tex | 49 + ...1_1out__dev__details_1_1is__out__dev__.eps | 197 + ...1_1out__dev__details_1_1is__out__dev__.tex | 32 + ...tp_1_1fbf8d2409fc6de9dd6b9649bedc1b379.eps | 197 + ...tp_1_1fbf8d2409fc6de9dd6b9649bedc1b379.tex | 32 + ...utdev__it__details_1_1is__outdev__it__.eps | 197 + ...utdev__it__details_1_1is__outdev__it__.tex | 32 + ...pename8786ebbbd0dc9ca1b14571e779d99d60.eps | 197 + ...pename8786ebbbd0dc9ca1b14571e779d99d60.tex | 32 + .../structutl_1_1output__iterator__tag.tex | 23 + ...ctutl_1_1random__access__iterator__tag.eps | 215 + ...ctutl_1_1random__access__iterator__tag.tex | 24 + ...uctutl_1_1spi__i__details_1_1is__spi__.eps | 197 + ...uctutl_1_1spi__i__details_1_1is__spi__.tex | 32 + ...if__sa2db29f6d65d34ecf5e49ec30b6600d78.eps | 197 + ...if__sa2db29f6d65d34ecf5e49ec30b6600d78.tex | 32 + doc/latex/structutl_1_1virtual__tag.tex | 23 + doc/latex/test__1w__impl_8cpp.tex | 35 + doc/latex/test__i2c__impl_8cpp.tex | 33 + doc/latex/test__ostream__dev_8cpp.tex | 66 + doc/latex/test__spi__impl_8cpp.tex | 35 + doc/latex/typelist_8h.tex | 309 + doc/latex/types_8h.tex | 47 + doc/latex/useif_8h.tex | 40 + doc/latex/utility_2invoke_8h.tex | 66 + doc/latex/version_8h.tex | 48 + include/utl/meta/detection.h | 10 +- test/tests/TmetaBasic.cpp | 47 +- test/tests/TmetaDetection.cpp | 1 - test/tests/TmetaTypelist.cpp | 20 +- 2552 files changed, 290770 insertions(+), 37 deletions(-) create mode 100644 doc/html/__1wire_8h.html create mode 100644 doc/html/__1wire_8h.js create mode 100644 doc/html/__1wire_8h_source.html create mode 100644 doc/html/__1wire__id_8h.html create mode 100644 doc/html/__1wire__id_8h_source.html create mode 100644 doc/html/__1wire__uart_8h.html create mode 100644 doc/html/__1wire__uart_8h_source.html create mode 100644 doc/html/_concepts_2lib_2gtest_2gtest-all_8d.html create mode 100644 doc/html/_concepts_2lib_2gtest_2gtest-all_8d_source.html create mode 100644 doc/html/_concepts_2source_2main_8d.html create mode 100644 doc/html/_concepts_2source_2main_8d_source.html create mode 100644 doc/html/_concepts_2source_2tests_2_t_concepts_8d.html create mode 100644 doc/html/_concepts_2source_2tests_2_t_concepts_8d_source.html create mode 100644 doc/html/_concepts_2source_2tests_2_tinvoke_8d.html create mode 100644 doc/html/_concepts_2source_2tests_2_tinvoke_8d_source.html create mode 100644 doc/html/_concepts_2source_2tests_2test__1w__impl_8d.html create mode 100644 doc/html/_concepts_2source_2tests_2test__1w__impl_8d_source.html create mode 100644 doc/html/_concepts_2source_2tests_2test__i2c__impl_8d.html create mode 100644 doc/html/_concepts_2source_2tests_2test__i2c__impl_8d_source.html create mode 100644 doc/html/_concepts_2source_2tests_2test__ostream__dev_8d.html create mode 100644 doc/html/_concepts_2source_2tests_2test__ostream__dev_8d_source.html create mode 100644 doc/html/_concepts_2source_2tests_2test__spi__impl_8d.html create mode 100644 doc/html/_concepts_2source_2tests_2test__spi__impl_8d_source.html create mode 100644 doc/html/_formulas.tex create mode 100644 doc/html/_r_e_a_d_m_e_8md.html create mode 100644 doc/html/_r_e_a_d_m_e_8md_source.html create mode 100644 doc/html/_t_concepts_8cpp.html create mode 100644 doc/html/_t_concepts_8cpp.js create mode 100644 doc/html/_t_concepts_8cpp_source.html create mode 100644 doc/html/_tinvoke_8cpp.html create mode 100644 doc/html/_tinvoke_8cpp.js create mode 100644 doc/html/_tinvoke_8cpp_source.html create mode 100644 doc/html/_tmeta_8d.html create mode 100644 doc/html/_tmeta_8d_source.html create mode 100644 doc/html/_tmeta_basic_8cpp.html create mode 100644 doc/html/_tmeta_basic_8cpp.js create mode 100644 doc/html/_tmeta_basic_8cpp_source.html create mode 100644 doc/html/_tmeta_basic_8d.html create mode 100644 doc/html/_tmeta_basic_8d_source.html create mode 100644 doc/html/_tmeta_detection_8cpp.html create mode 100644 doc/html/_tmeta_detection_8cpp.js create mode 100644 doc/html/_tmeta_detection_8cpp_source.html create mode 100644 doc/html/_tmeta_detection_8d.html create mode 100644 doc/html/_tmeta_detection_8d_source.html create mode 100644 doc/html/_tmeta_typelist_8cpp.html create mode 100644 doc/html/_tmeta_typelist_8cpp.js create mode 100644 doc/html/_tmeta_typelist_8cpp_source.html create mode 100644 doc/html/_tmeta_typelist_8d.html create mode 100644 doc/html/_tmeta_typelist_8d_source.html create mode 100644 doc/html/_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2concepts_2defines_8h-example.html create mode 100644 doc/html/_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2detection_8h-example.html create mode 100644 doc/html/_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example.html create mode 100644 doc/html/_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example.html create mode 100644 doc/html/annotated.html create mode 100644 doc/html/annotated_dup.js create mode 100644 doc/html/array_8h.html create mode 100644 doc/html/array_8h.js create mode 100644 doc/html/array_8h_source.html create mode 100644 doc/html/bc_s.png create mode 100644 doc/html/bdwn.png create mode 100644 doc/html/classes.html create mode 100644 doc/html/classtest__1w_1_1_o_w-members.html create mode 100644 doc/html/classtest__1w_1_1_o_w.html create mode 100644 doc/html/classtest__1w_1_1_o_w.png create mode 100644 doc/html/classtest__1w_1_1_test__1w__impl-members.html create mode 100644 doc/html/classtest__1w_1_1_test__1w__impl.html create mode 100644 doc/html/classtest__1w_1_1_test__1w__impl.js create mode 100644 doc/html/classtest__1w_1_1_test__1w__impl.png create mode 100644 doc/html/classtest__concepts_1_1_base.html create mode 100644 doc/html/classtest__concepts_1_1_base.png create mode 100644 doc/html/classtest__concepts_1_1_derived1.html create mode 100644 doc/html/classtest__concepts_1_1_derived1.png create mode 100644 doc/html/classtest__concepts_1_1_derived2.html create mode 100644 doc/html/classtest__concepts_1_1_derived2.png create mode 100644 doc/html/classtest__concepts_1_1_have_operator_base-members.html create mode 100644 doc/html/classtest__concepts_1_1_have_operator_base.html create mode 100644 doc/html/classtest__concepts_1_1_have_operator_base.js create mode 100644 doc/html/classtest__concepts_1_1_have_perfect_forwarding-members.html create mode 100644 doc/html/classtest__concepts_1_1_have_perfect_forwarding.html create mode 100644 doc/html/classtest__concepts_1_1_have_perfect_forwarding.js create mode 100644 doc/html/classtest__i2c_1_1_i2_c-members.html create mode 100644 doc/html/classtest__i2c_1_1_i2_c.html create mode 100644 doc/html/classtest__i2c_1_1_i2_c.js create mode 100644 doc/html/classtest__i2c_1_1_i2_c.png create mode 100644 doc/html/classtest__ostream__dev_1_1_ostream__dev__impl-members.html create mode 100644 doc/html/classtest__ostream__dev_1_1_ostream__dev__impl.html create mode 100644 doc/html/classtest__ostream__dev_1_1_ostream__dev__impl.js create mode 100644 doc/html/classtest__ostream__dev_1_1_ostream__dev__impl.png create mode 100644 doc/html/classtest__ostream__dev_1_1_ostream__vdev__impl-members.html create mode 100644 doc/html/classtest__ostream__dev_1_1_ostream__vdev__impl.html create mode 100644 doc/html/classtest__ostream__dev_1_1_ostream__vdev__impl.js create mode 100644 doc/html/classtest__ostream__dev_1_1_ostream__vdev__impl.png create mode 100644 doc/html/classtest__ostream__dev_1_1_tostream___idev-members.html create mode 100644 doc/html/classtest__ostream__dev_1_1_tostream___idev.html create mode 100644 doc/html/classtest__ostream__dev_1_1_tostream___idev.js create mode 100644 doc/html/classtest__ostream__dev_1_1_tostream___idev.png create mode 100644 doc/html/classtest__ostream__dev_1_1_tostream___vdev-members.html create mode 100644 doc/html/classtest__ostream__dev_1_1_tostream___vdev.html create mode 100644 doc/html/classtest__ostream__dev_1_1_tostream___vdev.js create mode 100644 doc/html/classtest__ostream__dev_1_1_tostream___vdev.png create mode 100644 doc/html/classtest__spi_1_1_s_p_i-members.html create mode 100644 doc/html/classtest__spi_1_1_s_p_i.html create mode 100644 doc/html/classtest__spi_1_1_s_p_i.js create mode 100644 doc/html/classtest__spi_1_1_s_p_i.png create mode 100644 doc/html/classtest__spi_1_1_test__spi__impl-members.html create mode 100644 doc/html/classtest__spi_1_1_test__spi__impl.html create mode 100644 doc/html/classtest__spi_1_1_test__spi__impl.js create mode 100644 doc/html/classtest__spi_1_1_test__spi__impl.png create mode 100644 doc/html/classtesting_1_1_empty_test_event_listener-members.html create mode 100644 doc/html/classtesting_1_1_empty_test_event_listener.html create mode 100644 doc/html/classtesting_1_1_empty_test_event_listener.js create mode 100644 doc/html/classtesting_1_1_empty_test_event_listener.png create mode 100644 doc/html/classtesting_1_1_environment-members.html create mode 100644 doc/html/classtesting_1_1_environment.html create mode 100644 doc/html/classtesting_1_1_environment.js create mode 100644 doc/html/classtesting_1_1_message-members.html create mode 100644 doc/html/classtesting_1_1_message.html create mode 100644 doc/html/classtesting_1_1_message.js create mode 100644 doc/html/classtesting_1_1_scoped_trace-members.html create mode 100644 doc/html/classtesting_1_1_scoped_trace.html create mode 100644 doc/html/classtesting_1_1_scoped_trace.js create mode 100644 doc/html/classtesting_1_1_test-members.html create mode 100644 doc/html/classtesting_1_1_test.html create mode 100644 doc/html/classtesting_1_1_test.js create mode 100644 doc/html/classtesting_1_1_test.png create mode 100644 doc/html/classtesting_1_1_test_event_listener-members.html create mode 100644 doc/html/classtesting_1_1_test_event_listener.html create mode 100644 doc/html/classtesting_1_1_test_event_listener.js create mode 100644 doc/html/classtesting_1_1_test_event_listener.png create mode 100644 doc/html/classtesting_1_1_test_event_listeners-members.html create mode 100644 doc/html/classtesting_1_1_test_event_listeners.html create mode 100644 doc/html/classtesting_1_1_test_event_listeners.js create mode 100644 doc/html/classtesting_1_1_test_info-members.html create mode 100644 doc/html/classtesting_1_1_test_info.html create mode 100644 doc/html/classtesting_1_1_test_info.js create mode 100644 doc/html/classtesting_1_1_test_property-members.html create mode 100644 doc/html/classtesting_1_1_test_property.html create mode 100644 doc/html/classtesting_1_1_test_property.js create mode 100644 doc/html/classtesting_1_1_test_result-members.html create mode 100644 doc/html/classtesting_1_1_test_result.html create mode 100644 doc/html/classtesting_1_1_test_result.js create mode 100644 doc/html/classtesting_1_1_test_suite-members.html create mode 100644 doc/html/classtesting_1_1_test_suite.html create mode 100644 doc/html/classtesting_1_1_test_suite.js create mode 100644 doc/html/classtesting_1_1_test_with_param-members.html create mode 100644 doc/html/classtesting_1_1_test_with_param.html create mode 100644 doc/html/classtesting_1_1_test_with_param.png create mode 100644 doc/html/classtesting_1_1_unit_test-members.html create mode 100644 doc/html/classtesting_1_1_unit_test.html create mode 100644 doc/html/classtesting_1_1_unit_test.js create mode 100644 doc/html/classtesting_1_1_with_param_interface-members.html create mode 100644 doc/html/classtesting_1_1_with_param_interface.html create mode 100644 doc/html/classtesting_1_1_with_param_interface.js create mode 100644 doc/html/classtesting_1_1_with_param_interface.png create mode 100644 doc/html/classtesting_1_1internal2_1_1_type_without_formatter-members.html create mode 100644 doc/html/classtesting_1_1internal2_1_1_type_without_formatter.html create mode 100644 doc/html/classtesting_1_1internal2_1_1_type_without_formatter_3_01_t_00_01k_convertible_to_integer_01_4-members.html create mode 100644 doc/html/classtesting_1_1internal2_1_1_type_without_formatter_3_01_t_00_01k_convertible_to_integer_01_4.html create mode 100644 doc/html/classtesting_1_1internal2_1_1_type_without_formatter_3_01_t_00_01k_protobuf_01_4-members.html create mode 100644 doc/html/classtesting_1_1internal2_1_1_type_without_formatter_3_01_t_00_01k_protobuf_01_4.html create mode 100644 doc/html/classtesting_1_1internal_1_1_assert_helper-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_assert_helper.html create mode 100644 doc/html/classtesting_1_1internal_1_1_assert_helper.js create mode 100644 doc/html/classtesting_1_1internal_1_1_captured_stream-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_captured_stream.html create mode 100644 doc/html/classtesting_1_1internal_1_1_captured_stream.js create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_generator10-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_generator10.html create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_generator10.js create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_generator10.png create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_generator2-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_generator2.html create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_generator2.js create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_generator2.png create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_generator3-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_generator3.html create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_generator3.js create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_generator3.png create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_generator4-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_generator4.html create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_generator4.js create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_generator4.png create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_generator5-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_generator5.html create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_generator5.js create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_generator5.png create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_generator6-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_generator6.html create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_generator6.js create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_generator6.png create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_generator7-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_generator7.html create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_generator7.js create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_generator7.png create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_generator8-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_generator8.html create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_generator8.js create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_generator8.png create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_generator9-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_generator9.html create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_generator9.js create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_generator9.png create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_holder10-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_holder10.html create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_holder10.js create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_holder2-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_holder2.html create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_holder2.js create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_holder3-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_holder3.html create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_holder3.js create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_holder4-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_holder4.html create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_holder4.js create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_holder5-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_holder5.html create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_holder5.js create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_holder6-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_holder6.html create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_holder6.js create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_holder7-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_holder7.html create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_holder7.js create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_holder8-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_holder8.html create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_holder8.js create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_holder9-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_holder9.html create mode 100644 doc/html/classtesting_1_1internal_1_1_cartesian_product_holder9.js create mode 100644 doc/html/classtesting_1_1internal_1_1_eq_helper-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_eq_helper.html create mode 100644 doc/html/classtesting_1_1internal_1_1_eq_helper_3_01true_01_4-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_eq_helper_3_01true_01_4.html create mode 100644 doc/html/classtesting_1_1internal_1_1_flat_tuple-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_flat_tuple.html create mode 100644 doc/html/classtesting_1_1internal_1_1_flat_tuple.js create mode 100644 doc/html/classtesting_1_1internal_1_1_flat_tuple.png create mode 100644 doc/html/classtesting_1_1internal_1_1_floating_point-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_floating_point.html create mode 100644 doc/html/classtesting_1_1internal_1_1_floating_point.js create mode 100644 doc/html/classtesting_1_1internal_1_1_format_for_comparison-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_format_for_comparison.html create mode 100644 doc/html/classtesting_1_1internal_1_1_format_for_comparison_3_01_to_print[_n]_00_01_other_operand_01_4-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_format_for_comparison_3_01_to_print[_n]_00_01_other_operand_01_4.html create mode 100644 doc/html/classtesting_1_1internal_1_1_g_test_log-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_g_test_log.html create mode 100644 doc/html/classtesting_1_1internal_1_1_g_test_log.js create mode 100644 doc/html/classtesting_1_1internal_1_1_g_test_mutex_lock-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_g_test_mutex_lock.html create mode 100644 doc/html/classtesting_1_1internal_1_1_g_test_mutex_lock.js create mode 100644 doc/html/classtesting_1_1internal_1_1_ignored_value-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_ignored_value.html create mode 100644 doc/html/classtesting_1_1internal_1_1_ignored_value.js create mode 100644 doc/html/classtesting_1_1internal_1_1_implicitly_convertible-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_implicitly_convertible.html create mode 100644 doc/html/classtesting_1_1internal_1_1_mutex-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_mutex.html create mode 100644 doc/html/classtesting_1_1internal_1_1_mutex.js create mode 100644 doc/html/classtesting_1_1internal_1_1_native_array-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_native_array.html create mode 100644 doc/html/classtesting_1_1internal_1_1_native_array.js create mode 100644 doc/html/classtesting_1_1internal_1_1_param_generator-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_param_generator.html create mode 100644 doc/html/classtesting_1_1internal_1_1_param_generator.js create mode 100644 doc/html/classtesting_1_1internal_1_1_param_generator_interface-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_param_generator_interface.html create mode 100644 doc/html/classtesting_1_1internal_1_1_param_generator_interface.js create mode 100644 doc/html/classtesting_1_1internal_1_1_param_generator_interface.png create mode 100644 doc/html/classtesting_1_1internal_1_1_param_iterator-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_param_iterator.html create mode 100644 doc/html/classtesting_1_1internal_1_1_param_iterator.js create mode 100644 doc/html/classtesting_1_1internal_1_1_param_iterator_interface-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_param_iterator_interface.html create mode 100644 doc/html/classtesting_1_1internal_1_1_param_iterator_interface.js create mode 100644 doc/html/classtesting_1_1internal_1_1_parameterized_test_factory-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_parameterized_test_factory.html create mode 100644 doc/html/classtesting_1_1internal_1_1_parameterized_test_factory.js create mode 100644 doc/html/classtesting_1_1internal_1_1_parameterized_test_factory.png create mode 100644 doc/html/classtesting_1_1internal_1_1_parameterized_test_suite_info-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_parameterized_test_suite_info.html create mode 100644 doc/html/classtesting_1_1internal_1_1_parameterized_test_suite_info.js create mode 100644 doc/html/classtesting_1_1internal_1_1_parameterized_test_suite_info.png create mode 100644 doc/html/classtesting_1_1internal_1_1_parameterized_test_suite_info_base-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_parameterized_test_suite_info_base.html create mode 100644 doc/html/classtesting_1_1internal_1_1_parameterized_test_suite_info_base.js create mode 100644 doc/html/classtesting_1_1internal_1_1_parameterized_test_suite_info_base.png create mode 100644 doc/html/classtesting_1_1internal_1_1_parameterized_test_suite_registry-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_parameterized_test_suite_registry.html create mode 100644 doc/html/classtesting_1_1internal_1_1_parameterized_test_suite_registry.js create mode 100644 doc/html/classtesting_1_1internal_1_1_r_e-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_r_e.html create mode 100644 doc/html/classtesting_1_1internal_1_1_r_e.js create mode 100644 doc/html/classtesting_1_1internal_1_1_random-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_random.html create mode 100644 doc/html/classtesting_1_1internal_1_1_random.js create mode 100644 doc/html/classtesting_1_1internal_1_1_range_generator-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_range_generator.html create mode 100644 doc/html/classtesting_1_1internal_1_1_range_generator.js create mode 100644 doc/html/classtesting_1_1internal_1_1_range_generator.png create mode 100644 doc/html/classtesting_1_1internal_1_1_test_factory_base-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_test_factory_base.html create mode 100644 doc/html/classtesting_1_1internal_1_1_test_factory_base.js create mode 100644 doc/html/classtesting_1_1internal_1_1_test_factory_base.png create mode 100644 doc/html/classtesting_1_1internal_1_1_test_factory_impl-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_test_factory_impl.html create mode 100644 doc/html/classtesting_1_1internal_1_1_test_factory_impl.js create mode 100644 doc/html/classtesting_1_1internal_1_1_test_factory_impl.png create mode 100644 doc/html/classtesting_1_1internal_1_1_test_meta_factory-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_test_meta_factory.html create mode 100644 doc/html/classtesting_1_1internal_1_1_test_meta_factory.js create mode 100644 doc/html/classtesting_1_1internal_1_1_test_meta_factory.png create mode 100644 doc/html/classtesting_1_1internal_1_1_test_meta_factory_base-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_test_meta_factory_base.html create mode 100644 doc/html/classtesting_1_1internal_1_1_test_meta_factory_base.js create mode 100644 doc/html/classtesting_1_1internal_1_1_thread_local-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_thread_local.html create mode 100644 doc/html/classtesting_1_1internal_1_1_thread_local.js create mode 100644 doc/html/classtesting_1_1internal_1_1_type_id_helper-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_type_id_helper.html create mode 100644 doc/html/classtesting_1_1internal_1_1_type_with_size-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_type_with_size.html create mode 100644 doc/html/classtesting_1_1internal_1_1_type_with_size.js create mode 100644 doc/html/classtesting_1_1internal_1_1_type_with_size_3_014_01_4-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_type_with_size_3_014_01_4.html create mode 100644 doc/html/classtesting_1_1internal_1_1_type_with_size_3_014_01_4.js create mode 100644 doc/html/classtesting_1_1internal_1_1_type_with_size_3_018_01_4-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_type_with_size_3_018_01_4.html create mode 100644 doc/html/classtesting_1_1internal_1_1_type_with_size_3_018_01_4.js create mode 100644 doc/html/classtesting_1_1internal_1_1_universal_printer-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_universal_printer.html create mode 100644 doc/html/classtesting_1_1internal_1_1_universal_printer_3_01_t[_n]_4-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_universal_printer_3_01_t[_n]_4.html create mode 100644 doc/html/classtesting_1_1internal_1_1_universal_printer_3_01_t_01_6_01_4-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_universal_printer_3_01_t_01_6_01_4.html create mode 100644 doc/html/classtesting_1_1internal_1_1_universal_terse_printer-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_universal_terse_printer.html create mode 100644 doc/html/classtesting_1_1internal_1_1_universal_terse_printer_3_01_t[_n]_4-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_universal_terse_printer_3_01_t[_n]_4.html create mode 100644 doc/html/classtesting_1_1internal_1_1_universal_terse_printer_3_01_t_01_6_01_4-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_universal_terse_printer_3_01_t_01_6_01_4.html create mode 100644 doc/html/classtesting_1_1internal_1_1_universal_terse_printer_3_01char_01_5_01_4-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_universal_terse_printer_3_01char_01_5_01_4.html create mode 100644 doc/html/classtesting_1_1internal_1_1_universal_terse_printer_3_01const_01char_01_5_01_4-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_universal_terse_printer_3_01const_01char_01_5_01_4.html create mode 100644 doc/html/classtesting_1_1internal_1_1_universal_terse_printer_3_01const_01wchar__t_01_5_01_4-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_universal_terse_printer_3_01const_01wchar__t_01_5_01_4.html create mode 100644 doc/html/classtesting_1_1internal_1_1_universal_terse_printer_3_01wchar__t_01_5_01_4-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_universal_terse_printer_3_01wchar__t_01_5_01_4.html create mode 100644 doc/html/classtesting_1_1internal_1_1_value_array-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_value_array.html create mode 100644 doc/html/classtesting_1_1internal_1_1_value_array.js create mode 100644 doc/html/classtesting_1_1internal_1_1_values_in_iterator_range_generator-members.html create mode 100644 doc/html/classtesting_1_1internal_1_1_values_in_iterator_range_generator.html create mode 100644 doc/html/classtesting_1_1internal_1_1_values_in_iterator_range_generator.js create mode 100644 doc/html/classtesting_1_1internal_1_1_values_in_iterator_range_generator.png create mode 100644 doc/html/classutl_1_1__1wire__i-members.html create mode 100644 doc/html/classutl_1_1__1wire__i.html create mode 100644 doc/html/classutl_1_1__1wire__i.js create mode 100644 doc/html/classutl_1_1__1wire__i.png create mode 100644 doc/html/classutl_1_1__1wire__i_3_01virtual__tag_01_4-members.html create mode 100644 doc/html/classutl_1_1__1wire__i_3_01virtual__tag_01_4.html create mode 100644 doc/html/classutl_1_1__1wire__i_3_01virtual__tag_01_4.js create mode 100644 doc/html/classutl_1_1__1wire__i_3_01virtual__tag_01_4.png create mode 100644 doc/html/classutl_1_1__1wire__id__t-members.html create mode 100644 doc/html/classutl_1_1__1wire__id__t.html create mode 100644 doc/html/classutl_1_1__1wire__id__t.js create mode 100644 doc/html/classutl_1_1__1wire__id__t.png create mode 100644 doc/html/classutl_1_1__1wire__uart__i-members.html create mode 100644 doc/html/classutl_1_1__1wire__uart__i.html create mode 100644 doc/html/classutl_1_1__1wire__uart__i.js create mode 100644 doc/html/classutl_1_1__1wire__uart__i.png create mode 100644 doc/html/classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4-members.html create mode 100644 doc/html/classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html create mode 100644 doc/html/classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.js create mode 100644 doc/html/classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.png create mode 100644 doc/html/classutl_1_1i2c__bb__i-members.html create mode 100644 doc/html/classutl_1_1i2c__bb__i.html create mode 100644 doc/html/classutl_1_1i2c__bb__i.js create mode 100644 doc/html/classutl_1_1i2c__bb__i.png create mode 100644 doc/html/classutl_1_1i2c__bb__i_3_01virtual__tag_01_4-members.html create mode 100644 doc/html/classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html create mode 100644 doc/html/classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.js create mode 100644 doc/html/classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.png create mode 100644 doc/html/classutl_1_1i2c__i-members.html create mode 100644 doc/html/classutl_1_1i2c__i.html create mode 100644 doc/html/classutl_1_1i2c__i.js create mode 100644 doc/html/classutl_1_1i2c__i.png create mode 100644 doc/html/classutl_1_1i2c__i_3_01virtual__tag_01_4-members.html create mode 100644 doc/html/classutl_1_1i2c__i_3_01virtual__tag_01_4.html create mode 100644 doc/html/classutl_1_1i2c__i_3_01virtual__tag_01_4.js create mode 100644 doc/html/classutl_1_1i2c__i_3_01virtual__tag_01_4.png create mode 100644 doc/html/classutl_1_1idx__dev-members.html create mode 100644 doc/html/classutl_1_1idx__dev.html create mode 100644 doc/html/classutl_1_1idx__dev.js create mode 100644 doc/html/classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4-members.html create mode 100644 doc/html/classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html create mode 100644 doc/html/classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.js create mode 100644 doc/html/classutl_1_1in__dev-members.html create mode 100644 doc/html/classutl_1_1in__dev.html create mode 100644 doc/html/classutl_1_1in__dev.js create mode 100644 doc/html/classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4-members.html create mode 100644 doc/html/classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html create mode 100644 doc/html/classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.js create mode 100644 doc/html/classutl_1_1inbuf__dev-members.html create mode 100644 doc/html/classutl_1_1inbuf__dev.html create mode 100644 doc/html/classutl_1_1inbuf__dev.js create mode 100644 doc/html/classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4-members.html create mode 100644 doc/html/classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html create mode 100644 doc/html/classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.js create mode 100644 doc/html/classutl_1_1indev__it-members.html create mode 100644 doc/html/classutl_1_1indev__it.html create mode 100644 doc/html/classutl_1_1indev__it.js create mode 100644 doc/html/classutl_1_1iodev__it-members.html create mode 100644 doc/html/classutl_1_1iodev__it.html create mode 100644 doc/html/classutl_1_1iodev__it.js create mode 100644 doc/html/classutl_1_1istreamdev__it-members.html create mode 100644 doc/html/classutl_1_1istreamdev__it.html create mode 100644 doc/html/classutl_1_1istreamdev__it.js create mode 100644 doc/html/classutl_1_1ostream__dev-members.html create mode 100644 doc/html/classutl_1_1ostream__dev.html create mode 100644 doc/html/classutl_1_1ostream__dev.js create mode 100644 doc/html/classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4-members.html create mode 100644 doc/html/classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html create mode 100644 doc/html/classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.js create mode 100644 doc/html/classutl_1_1ostreamdev__it-members.html create mode 100644 doc/html/classutl_1_1ostreamdev__it.html create mode 100644 doc/html/classutl_1_1ostreamdev__it.js create mode 100644 doc/html/classutl_1_1out__dev-members.html create mode 100644 doc/html/classutl_1_1out__dev.html create mode 100644 doc/html/classutl_1_1out__dev.js create mode 100644 doc/html/classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4-members.html create mode 100644 doc/html/classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html create mode 100644 doc/html/classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.js create mode 100644 doc/html/classutl_1_1outdev__it-members.html create mode 100644 doc/html/classutl_1_1outdev__it.html create mode 100644 doc/html/classutl_1_1outdev__it.js create mode 100644 doc/html/classutl_1_1spi__bb__i-members.html create mode 100644 doc/html/classutl_1_1spi__bb__i.html create mode 100644 doc/html/classutl_1_1spi__bb__i.js create mode 100644 doc/html/classutl_1_1spi__bb__i.png create mode 100644 doc/html/classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4-members.html create mode 100644 doc/html/classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html create mode 100644 doc/html/classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.js create mode 100644 doc/html/classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.png create mode 100644 doc/html/classutl_1_1spi__i-members.html create mode 100644 doc/html/classutl_1_1spi__i.html create mode 100644 doc/html/classutl_1_1spi__i.js create mode 100644 doc/html/classutl_1_1spi__i.png create mode 100644 doc/html/classutl_1_1spi__i_3_01virtual__tag_01_4-members.html create mode 100644 doc/html/classutl_1_1spi__i_3_01virtual__tag_01_4.html create mode 100644 doc/html/classutl_1_1spi__i_3_01virtual__tag_01_4.js create mode 100644 doc/html/classutl_1_1spi__i_3_01virtual__tag_01_4.png create mode 100644 doc/html/closed.png create mode 100644 doc/html/concepts_8h.html create mode 100644 doc/html/concepts_8h.js create mode 100644 doc/html/concepts_8h_source.html create mode 100644 doc/html/crtp_8h.html create mode 100644 doc/html/crtp_8h.js create mode 100644 doc/html/crtp_8h_source.html create mode 100644 doc/html/defines_8h.html create mode 100644 doc/html/defines_8h.js create mode 100644 doc/html/defines_8h_source.html create mode 100644 doc/html/detection_8h.html create mode 100644 doc/html/detection_8h.js create mode 100644 doc/html/detection_8h_source.html create mode 100644 doc/html/dev__iterators_8h.html create mode 100644 doc/html/dev__iterators_8h.js create mode 100644 doc/html/dev__iterators_8h_source.html create mode 100644 doc/html/dir_13e138d54eb8818da29c3992edef070a.html create mode 100644 doc/html/dir_13e138d54eb8818da29c3992edef070a.js create mode 100644 doc/html/dir_1de759a74730efb26e16b92a33818a86.html create mode 100644 doc/html/dir_1de759a74730efb26e16b92a33818a86.js create mode 100644 doc/html/dir_24134ffae0315e39a5b4fb4f5ac472ee.html create mode 100644 doc/html/dir_24134ffae0315e39a5b4fb4f5ac472ee.js create mode 100644 doc/html/dir_2b272fa693f0990de7cf333b4d9023f8.html create mode 100644 doc/html/dir_2b272fa693f0990de7cf333b4d9023f8.js create mode 100644 doc/html/dir_4b85ac8f363cc57fa06fe00d732b3ef4.html create mode 100644 doc/html/dir_4b85ac8f363cc57fa06fe00d732b3ef4.js create mode 100644 doc/html/dir_5aedf2f82d2f4f13addc24fda7ca3c64.html create mode 100644 doc/html/dir_5aedf2f82d2f4f13addc24fda7ca3c64.js create mode 100644 doc/html/dir_5f9a51ed898ae26d530fbf5192dc35b6.html create mode 100644 doc/html/dir_5f9a51ed898ae26d530fbf5192dc35b6.js create mode 100644 doc/html/dir_82754f54d9380477ef02477185c1f103.html create mode 100644 doc/html/dir_82754f54d9380477ef02477185c1f103.js create mode 100644 doc/html/dir_8411d781812971a63652b25f8ca24477.html create mode 100644 doc/html/dir_8411d781812971a63652b25f8ca24477.js create mode 100644 doc/html/dir_8e256609955cbc0738929bb20e4749b4.html create mode 100644 doc/html/dir_8e256609955cbc0738929bb20e4749b4.js create mode 100644 doc/html/dir_9613c8d8aa19c2ea309ba544861172c5.html create mode 100644 doc/html/dir_9613c8d8aa19c2ea309ba544861172c5.js create mode 100644 doc/html/dir_a96de09a69cea6234edc1a1514d133f0.html create mode 100644 doc/html/dir_a96de09a69cea6234edc1a1514d133f0.js create mode 100644 doc/html/dir_aaec33bad2bb7a5d6c86281ead709be5.html create mode 100644 doc/html/dir_aaec33bad2bb7a5d6c86281ead709be5.js create mode 100644 doc/html/dir_ab041ef57e3839706d1cbf08a477bd80.html create mode 100644 doc/html/dir_ab041ef57e3839706d1cbf08a477bd80.js create mode 100644 doc/html/dir_b27f91983daa7c88d19acbf32a947465.html create mode 100644 doc/html/dir_b27f91983daa7c88d19acbf32a947465.js create mode 100644 doc/html/dir_b2ad3c1a6521a4924fa9194d98c323e2.html create mode 100644 doc/html/dir_b2ad3c1a6521a4924fa9194d98c323e2.js create mode 100644 doc/html/dir_c2811dd2f770757e67563302be4130d6.html create mode 100644 doc/html/dir_c2811dd2f770757e67563302be4130d6.js create mode 100644 doc/html/dir_c6a55aeb35dd92d90cdd3b5869981960.html create mode 100644 doc/html/dir_c6a55aeb35dd92d90cdd3b5869981960.js create mode 100644 doc/html/dir_cd2b5ca7f5fdf6a80655358f064ed410.html create mode 100644 doc/html/dir_cd2b5ca7f5fdf6a80655358f064ed410.js create mode 100644 doc/html/dir_d44c64559bbebec7f509842c48db8b23.html create mode 100644 doc/html/dir_d44c64559bbebec7f509842c48db8b23.js create mode 100644 doc/html/dir_d84abbe486a7f5f39e3c9088ffc1760a.html create mode 100644 doc/html/dir_d84abbe486a7f5f39e3c9088ffc1760a.js create mode 100644 doc/html/dir_e9da18de27e34a68f4aee9f9a960d991.html create mode 100644 doc/html/dir_e9da18de27e34a68f4aee9f9a960d991.js create mode 100644 doc/html/dir_ec678fe2ad4670066af397af03cd2f43.html create mode 100644 doc/html/dir_ec678fe2ad4670066af397af03cd2f43.js create mode 100644 doc/html/dir_ffc5af52851d01e73a12da661e220384.html create mode 100644 doc/html/dir_ffc5af52851d01e73a12da661e220384.js create mode 100644 doc/html/doc.png create mode 100644 doc/html/doxygen.css create mode 100644 doc/html/doxygen.png create mode 100644 doc/html/dynsections.js create mode 100644 doc/html/examples.html create mode 100644 doc/html/examples.js create mode 100644 doc/html/files.html create mode 100644 doc/html/files_dup.js create mode 100644 doc/html/folderclosed.png create mode 100644 doc/html/folderopen.png create mode 100644 doc/html/functions.html create mode 100644 doc/html/functions_0x7e.html create mode 100644 doc/html/functions_a.html create mode 100644 doc/html/functions_b.html create mode 100644 doc/html/functions_c.html create mode 100644 doc/html/functions_d.html create mode 100644 doc/html/functions_dup.js create mode 100644 doc/html/functions_e.html create mode 100644 doc/html/functions_enum.html create mode 100644 doc/html/functions_eval.html create mode 100644 doc/html/functions_f.html create mode 100644 doc/html/functions_func.html create mode 100644 doc/html/functions_func.js create mode 100644 doc/html/functions_func_0x7e.html create mode 100644 doc/html/functions_func_a.html create mode 100644 doc/html/functions_func_b.html create mode 100644 doc/html/functions_func_c.html create mode 100644 doc/html/functions_func_d.html create mode 100644 doc/html/functions_func_e.html create mode 100644 doc/html/functions_func_f.html create mode 100644 doc/html/functions_func_g.html create mode 100644 doc/html/functions_func_h.html create mode 100644 doc/html/functions_func_i.html create mode 100644 doc/html/functions_func_k.html create mode 100644 doc/html/functions_func_l.html create mode 100644 doc/html/functions_func_m.html create mode 100644 doc/html/functions_func_n.html create mode 100644 doc/html/functions_func_o.html create mode 100644 doc/html/functions_func_p.html create mode 100644 doc/html/functions_func_r.html create mode 100644 doc/html/functions_func_s.html create mode 100644 doc/html/functions_func_t.html create mode 100644 doc/html/functions_func_u.html create mode 100644 doc/html/functions_func_v.html create mode 100644 doc/html/functions_g.html create mode 100644 doc/html/functions_h.html create mode 100644 doc/html/functions_i.html create mode 100644 doc/html/functions_k.html create mode 100644 doc/html/functions_l.html create mode 100644 doc/html/functions_m.html create mode 100644 doc/html/functions_n.html create mode 100644 doc/html/functions_o.html create mode 100644 doc/html/functions_p.html create mode 100644 doc/html/functions_r.html create mode 100644 doc/html/functions_rela.html create mode 100644 doc/html/functions_s.html create mode 100644 doc/html/functions_t.html create mode 100644 doc/html/functions_type.html create mode 100644 doc/html/functions_type.js create mode 100644 doc/html/functions_type_b.html create mode 100644 doc/html/functions_type_c.html create mode 100644 doc/html/functions_type_d.html create mode 100644 doc/html/functions_type_h.html create mode 100644 doc/html/functions_type_i.html create mode 100644 doc/html/functions_type_o.html create mode 100644 doc/html/functions_type_p.html create mode 100644 doc/html/functions_type_r.html create mode 100644 doc/html/functions_type_s.html create mode 100644 doc/html/functions_type_t.html create mode 100644 doc/html/functions_type_u.html create mode 100644 doc/html/functions_type_v.html create mode 100644 doc/html/functions_u.html create mode 100644 doc/html/functions_v.html create mode 100644 doc/html/functions_vars.html create mode 100644 doc/html/globals.html create mode 100644 doc/html/globals_a.html create mode 100644 doc/html/globals_c.html create mode 100644 doc/html/globals_defs.html create mode 100644 doc/html/globals_defs.js create mode 100644 doc/html/globals_defs_a.html create mode 100644 doc/html/globals_defs_c.html create mode 100644 doc/html/globals_defs_e.html create mode 100644 doc/html/globals_defs_f.html create mode 100644 doc/html/globals_defs_g.html create mode 100644 doc/html/globals_defs_i.html create mode 100644 doc/html/globals_defs_s.html create mode 100644 doc/html/globals_defs_t.html create mode 100644 doc/html/globals_defs_u.html create mode 100644 doc/html/globals_dup.js create mode 100644 doc/html/globals_e.html create mode 100644 doc/html/globals_f.html create mode 100644 doc/html/globals_func.html create mode 100644 doc/html/globals_g.html create mode 100644 doc/html/globals_i.html create mode 100644 doc/html/globals_m.html create mode 100644 doc/html/globals_r.html create mode 100644 doc/html/globals_s.html create mode 100644 doc/html/globals_t.html create mode 100644 doc/html/globals_u.html create mode 100644 doc/html/group__concepts.html create mode 100644 doc/html/group__concepts.js create mode 100644 doc/html/group__crtp.html create mode 100644 doc/html/group__crtp.js create mode 100644 doc/html/group__detection.html create mode 100644 doc/html/group__detection.js create mode 100644 doc/html/group__integral.html create mode 100644 doc/html/group__integral.js create mode 100644 doc/html/group__invoke.html create mode 100644 doc/html/group__invoke.js create mode 100644 doc/html/group__iterators.html create mode 100644 doc/html/group__iterators.js create mode 100644 doc/html/group__logic.html create mode 100644 doc/html/group__logic.js create mode 100644 doc/html/group__sfinae.html create mode 100644 doc/html/group__sfinae.js create mode 100644 doc/html/group__type.html create mode 100644 doc/html/group__type.js create mode 100644 doc/html/group__typelist.html create mode 100644 doc/html/group__typelist.js create mode 100644 doc/html/group__version.html create mode 100644 doc/html/group__version.js create mode 100644 doc/html/gtest-all_8cc.html create mode 100644 doc/html/gtest-all_8cc.js create mode 100644 doc/html/gtest-all_8cc_source.html create mode 100644 doc/html/gtest_8h.html create mode 100644 doc/html/gtest_8h.js create mode 100644 doc/html/gtest_8h_source.html create mode 100644 doc/html/hierarchy.html create mode 100644 doc/html/hierarchy.js create mode 100644 doc/html/i2c_8h.html create mode 100644 doc/html/i2c_8h.js create mode 100644 doc/html/i2c_8h_source.html create mode 100644 doc/html/i2c__bb_8h.html create mode 100644 doc/html/i2c__bb_8h_source.html create mode 100644 doc/html/id_8h.html create mode 100644 doc/html/id_8h.js create mode 100644 doc/html/id_8h_source.html create mode 100644 doc/html/idx__dev_8h.html create mode 100644 doc/html/idx__dev_8h.js create mode 100644 doc/html/idx__dev_8h_source.html create mode 100644 doc/html/impl_8h.html create mode 100644 doc/html/impl_8h_source.html create mode 100644 doc/html/in__dev_8h.html create mode 100644 doc/html/in__dev_8h.js create mode 100644 doc/html/in__dev_8h_source.html create mode 100644 doc/html/inbuf__dev_8h.html create mode 100644 doc/html/inbuf__dev_8h.js create mode 100644 doc/html/inbuf__dev_8h_source.html create mode 100644 doc/html/index.html create mode 100644 doc/html/integral_8h.html create mode 100644 doc/html/integral_8h.js create mode 100644 doc/html/integral_8h_source.html create mode 100644 doc/html/iterators_8h.html create mode 100644 doc/html/iterators_8h.js create mode 100644 doc/html/iterators_8h_source.html create mode 100644 doc/html/jquery.js create mode 100644 doc/html/lib_2gtest_2gtest-all_8d.html create mode 100644 doc/html/lib_2gtest_2gtest-all_8d_source.html create mode 100644 doc/html/main_8cpp.html create mode 100644 doc/html/main_8cpp.js create mode 100644 doc/html/main_8cpp_source.html create mode 100644 doc/html/md__r_e_a_d_m_e.html create mode 100644 doc/html/menu.js create mode 100644 doc/html/menudata.js create mode 100644 doc/html/meta_2invoke_8h.html create mode 100644 doc/html/meta_2invoke_8h.js create mode 100644 doc/html/meta_2invoke_8h_source.html create mode 100644 doc/html/meta_8h.html create mode 100644 doc/html/meta_8h_source.html create mode 100644 doc/html/modules.html create mode 100644 doc/html/modules.js create mode 100644 doc/html/namespace_tmeta_basic.html create mode 100644 doc/html/namespace_tmeta_basic.js create mode 100644 doc/html/namespace_tmeta_detection.html create mode 100644 doc/html/namespace_tmeta_detection.js create mode 100644 doc/html/namespace_tmeta_typelist.html create mode 100644 doc/html/namespace_tmeta_typelist.js create mode 100644 doc/html/namespacemembers.html create mode 100644 doc/html/namespacemembers_a.html create mode 100644 doc/html/namespacemembers_b.html create mode 100644 doc/html/namespacemembers_c.html create mode 100644 doc/html/namespacemembers_d.html create mode 100644 doc/html/namespacemembers_dup.js create mode 100644 doc/html/namespacemembers_e.html create mode 100644 doc/html/namespacemembers_enum.html create mode 100644 doc/html/namespacemembers_eval.html create mode 100644 doc/html/namespacemembers_f.html create mode 100644 doc/html/namespacemembers_func.html create mode 100644 doc/html/namespacemembers_func.js create mode 100644 doc/html/namespacemembers_func_a.html create mode 100644 doc/html/namespacemembers_func_b.html create mode 100644 doc/html/namespacemembers_func_c.html create mode 100644 doc/html/namespacemembers_func_d.html create mode 100644 doc/html/namespacemembers_func_e.html create mode 100644 doc/html/namespacemembers_func_f.html create mode 100644 doc/html/namespacemembers_func_g.html create mode 100644 doc/html/namespacemembers_func_i.html create mode 100644 doc/html/namespacemembers_func_l.html create mode 100644 doc/html/namespacemembers_func_m.html create mode 100644 doc/html/namespacemembers_func_o.html create mode 100644 doc/html/namespacemembers_func_p.html create mode 100644 doc/html/namespacemembers_func_r.html create mode 100644 doc/html/namespacemembers_func_s.html create mode 100644 doc/html/namespacemembers_func_t.html create mode 100644 doc/html/namespacemembers_func_u.html create mode 100644 doc/html/namespacemembers_func_v.html create mode 100644 doc/html/namespacemembers_func_w.html create mode 100644 doc/html/namespacemembers_g.html create mode 100644 doc/html/namespacemembers_i.html create mode 100644 doc/html/namespacemembers_k.html create mode 100644 doc/html/namespacemembers_l.html create mode 100644 doc/html/namespacemembers_m.html create mode 100644 doc/html/namespacemembers_n.html create mode 100644 doc/html/namespacemembers_o.html create mode 100644 doc/html/namespacemembers_p.html create mode 100644 doc/html/namespacemembers_r.html create mode 100644 doc/html/namespacemembers_s.html create mode 100644 doc/html/namespacemembers_t.html create mode 100644 doc/html/namespacemembers_type.html create mode 100644 doc/html/namespacemembers_type.js create mode 100644 doc/html/namespacemembers_type_a.html create mode 100644 doc/html/namespacemembers_type_b.html create mode 100644 doc/html/namespacemembers_type_c.html create mode 100644 doc/html/namespacemembers_type_d.html create mode 100644 doc/html/namespacemembers_type_e.html create mode 100644 doc/html/namespacemembers_type_f.html create mode 100644 doc/html/namespacemembers_type_i.html create mode 100644 doc/html/namespacemembers_type_l.html create mode 100644 doc/html/namespacemembers_type_m.html create mode 100644 doc/html/namespacemembers_type_n.html create mode 100644 doc/html/namespacemembers_type_o.html create mode 100644 doc/html/namespacemembers_type_p.html create mode 100644 doc/html/namespacemembers_type_r.html create mode 100644 doc/html/namespacemembers_type_s.html create mode 100644 doc/html/namespacemembers_type_t.html create mode 100644 doc/html/namespacemembers_type_u.html create mode 100644 doc/html/namespacemembers_type_v.html create mode 100644 doc/html/namespacemembers_type_w.html create mode 100644 doc/html/namespacemembers_u.html create mode 100644 doc/html/namespacemembers_v.html create mode 100644 doc/html/namespacemembers_vars.html create mode 100644 doc/html/namespacemembers_w.html create mode 100644 doc/html/namespaceproto2.html create mode 100644 doc/html/namespaces.html create mode 100644 doc/html/namespaces_dup.js create mode 100644 doc/html/namespacetest__1w.html create mode 100644 doc/html/namespacetest__1w.js create mode 100644 doc/html/namespacetest__concepts.html create mode 100644 doc/html/namespacetest__concepts.js create mode 100644 doc/html/namespacetest__i2c.html create mode 100644 doc/html/namespacetest__i2c.js create mode 100644 doc/html/namespacetest__meta.html create mode 100644 doc/html/namespacetest__meta.js create mode 100644 doc/html/namespacetest__ostream__dev.html create mode 100644 doc/html/namespacetest__ostream__dev.js create mode 100644 doc/html/namespacetest__spi.html create mode 100644 doc/html/namespacetest__spi.js create mode 100644 doc/html/namespacetesting.html create mode 100644 doc/html/namespacetesting.js create mode 100644 doc/html/namespacetesting_1_1internal.html create mode 100644 doc/html/namespacetesting_1_1internal.js create mode 100644 doc/html/namespacetesting_1_1internal2.html create mode 100644 doc/html/namespacetesting_1_1internal2.js create mode 100644 doc/html/namespacetesting_1_1internal_1_1edit__distance.html create mode 100644 doc/html/namespacetesting_1_1internal_1_1posix.html create mode 100644 doc/html/namespacetesting__internal.html create mode 100644 doc/html/namespaceutl.html create mode 100644 doc/html/namespaceutl.js create mode 100644 doc/html/namespaceutl_1_1__1wire__i__det.html create mode 100644 doc/html/namespaceutl_1_1__1wire__i__det.js create mode 100644 doc/html/namespaceutl_1_1common__impl.html create mode 100644 doc/html/namespaceutl_1_1common__impl.js create mode 100644 doc/html/namespaceutl_1_1detail.html create mode 100644 doc/html/namespaceutl_1_1detail.js create mode 100644 doc/html/namespaceutl_1_1details.html create mode 100644 doc/html/namespaceutl_1_1details.js create mode 100644 doc/html/namespaceutl_1_1i2c__i__details.html create mode 100644 doc/html/namespaceutl_1_1i2c__i__details.js create mode 100644 doc/html/namespaceutl_1_1idx__dev__details.html create mode 100644 doc/html/namespaceutl_1_1idx__dev__details.js create mode 100644 doc/html/namespaceutl_1_1idxdev__it__details.html create mode 100644 doc/html/namespaceutl_1_1idxdev__it__details.js create mode 100644 doc/html/namespaceutl_1_1in__dev__details.html create mode 100644 doc/html/namespaceutl_1_1in__dev__details.js create mode 100644 doc/html/namespaceutl_1_1inbuf__dev__details.html create mode 100644 doc/html/namespaceutl_1_1inbuf__dev__details.js create mode 100644 doc/html/namespaceutl_1_1indev__it__details.html create mode 100644 doc/html/namespaceutl_1_1indev__it__details.js create mode 100644 doc/html/namespaceutl_1_1meta.html create mode 100644 doc/html/namespaceutl_1_1meta.js create mode 100644 doc/html/namespaceutl_1_1meta_1_1apply__impl.html create mode 100644 doc/html/namespaceutl_1_1meta_1_1apply__impl.js create mode 100644 doc/html/namespaceutl_1_1meta_1_1at__impl.html create mode 100644 doc/html/namespaceutl_1_1meta_1_1at__impl.js create mode 100644 doc/html/namespaceutl_1_1meta_1_1back__impl.html create mode 100644 doc/html/namespaceutl_1_1meta_1_1back__impl.js create mode 100644 doc/html/namespaceutl_1_1meta_1_1cat__impl.html create mode 100644 doc/html/namespaceutl_1_1meta_1_1cat__impl.js create mode 100644 doc/html/namespaceutl_1_1meta_1_1count__if__impl.html create mode 100644 doc/html/namespaceutl_1_1meta_1_1count__if__impl.js create mode 100644 doc/html/namespaceutl_1_1meta_1_1detail.html create mode 100644 doc/html/namespaceutl_1_1meta_1_1detail.js create mode 100644 doc/html/namespaceutl_1_1meta_1_1filter__impl.html create mode 100644 doc/html/namespaceutl_1_1meta_1_1filter__impl.js create mode 100644 doc/html/namespaceutl_1_1meta_1_1find__if__impl.html create mode 100644 doc/html/namespaceutl_1_1meta_1_1find__if__impl.js create mode 100644 doc/html/namespaceutl_1_1meta_1_1fold__impl.html create mode 100644 doc/html/namespaceutl_1_1meta_1_1fold__impl.js create mode 100644 doc/html/namespaceutl_1_1meta_1_1front__impl.html create mode 100644 doc/html/namespaceutl_1_1meta_1_1front__impl.js create mode 100644 doc/html/namespaceutl_1_1meta_1_1pop__back__impl.html create mode 100644 doc/html/namespaceutl_1_1meta_1_1pop__back__impl.js create mode 100644 doc/html/namespaceutl_1_1meta_1_1pop__front__impl.html create mode 100644 doc/html/namespaceutl_1_1meta_1_1pop__front__impl.js create mode 100644 doc/html/namespaceutl_1_1meta_1_1replace__if__impl.html create mode 100644 doc/html/namespaceutl_1_1meta_1_1replace__if__impl.js create mode 100644 doc/html/namespaceutl_1_1meta_1_1rev__fold__impl.html create mode 100644 doc/html/namespaceutl_1_1meta_1_1rev__fold__impl.js create mode 100644 doc/html/namespaceutl_1_1meta_1_1reverse__impl.html create mode 100644 doc/html/namespaceutl_1_1meta_1_1reverse__impl.js create mode 100644 doc/html/namespaceutl_1_1meta_1_1seek__if__impl.html create mode 100644 doc/html/namespaceutl_1_1meta_1_1seek__if__impl.js create mode 100644 doc/html/namespaceutl_1_1meta_1_1transform__impl.html create mode 100644 doc/html/namespaceutl_1_1meta_1_1transform__impl.js create mode 100644 doc/html/namespaceutl_1_1meta_1_1transform__lazy__impl.html create mode 100644 doc/html/namespaceutl_1_1meta_1_1transform__lazy__impl.js create mode 100644 doc/html/namespaceutl_1_1out__dev__details.html create mode 100644 doc/html/namespaceutl_1_1out__dev__details.js create mode 100644 doc/html/namespaceutl_1_1outdev__it__details.html create mode 100644 doc/html/namespaceutl_1_1outdev__it__details.js create mode 100644 doc/html/namespaceutl_1_1spi.html create mode 100644 doc/html/namespaceutl_1_1spi__i__details.html create mode 100644 doc/html/namespaceutl_1_1spi__i__details.js create mode 100644 doc/html/nav_f.png create mode 100644 doc/html/nav_g.png create mode 100644 doc/html/nav_h.png create mode 100644 doc/html/navtree.css create mode 100644 doc/html/navtree.js create mode 100644 doc/html/navtreedata.js create mode 100644 doc/html/navtreeindex0.js create mode 100644 doc/html/navtreeindex1.js create mode 100644 doc/html/navtreeindex10.js create mode 100644 doc/html/navtreeindex11.js create mode 100644 doc/html/navtreeindex2.js create mode 100644 doc/html/navtreeindex3.js create mode 100644 doc/html/navtreeindex4.js create mode 100644 doc/html/navtreeindex5.js create mode 100644 doc/html/navtreeindex6.js create mode 100644 doc/html/navtreeindex7.js create mode 100644 doc/html/navtreeindex8.js create mode 100644 doc/html/navtreeindex9.js create mode 100644 doc/html/open.png create mode 100644 doc/html/operations_8h.html create mode 100644 doc/html/operations_8h.js create mode 100644 doc/html/operations_8h_source.html create mode 100644 doc/html/ostream__dev_8h.html create mode 100644 doc/html/ostream__dev_8h_source.html create mode 100644 doc/html/out__dev_8h.html create mode 100644 doc/html/out__dev_8h.js create mode 100644 doc/html/out__dev_8h_source.html create mode 100644 doc/html/pages.html create mode 100644 doc/html/resize.js create mode 100644 doc/html/search/all_0.html create mode 100644 doc/html/search/all_0.js create mode 100644 doc/html/search/all_1.html create mode 100644 doc/html/search/all_1.js create mode 100644 doc/html/search/all_10.html create mode 100644 doc/html/search/all_10.js create mode 100644 doc/html/search/all_11.html create mode 100644 doc/html/search/all_11.js create mode 100644 doc/html/search/all_12.html create mode 100644 doc/html/search/all_12.js create mode 100644 doc/html/search/all_13.html create mode 100644 doc/html/search/all_13.js create mode 100644 doc/html/search/all_14.html create mode 100644 doc/html/search/all_14.js create mode 100644 doc/html/search/all_15.html create mode 100644 doc/html/search/all_15.js create mode 100644 doc/html/search/all_16.html create mode 100644 doc/html/search/all_16.js create mode 100644 doc/html/search/all_17.html create mode 100644 doc/html/search/all_17.js create mode 100644 doc/html/search/all_2.html create mode 100644 doc/html/search/all_2.js create mode 100644 doc/html/search/all_3.html create mode 100644 doc/html/search/all_3.js create mode 100644 doc/html/search/all_4.html create mode 100644 doc/html/search/all_4.js create mode 100644 doc/html/search/all_5.html create mode 100644 doc/html/search/all_5.js create mode 100644 doc/html/search/all_6.html create mode 100644 doc/html/search/all_6.js create mode 100644 doc/html/search/all_7.html create mode 100644 doc/html/search/all_7.js create mode 100644 doc/html/search/all_8.html create mode 100644 doc/html/search/all_8.js create mode 100644 doc/html/search/all_9.html create mode 100644 doc/html/search/all_9.js create mode 100644 doc/html/search/all_a.html create mode 100644 doc/html/search/all_a.js create mode 100644 doc/html/search/all_b.html create mode 100644 doc/html/search/all_b.js create mode 100644 doc/html/search/all_c.html create mode 100644 doc/html/search/all_c.js create mode 100644 doc/html/search/all_d.html create mode 100644 doc/html/search/all_d.js create mode 100644 doc/html/search/all_e.html create mode 100644 doc/html/search/all_e.js create mode 100644 doc/html/search/all_f.html create mode 100644 doc/html/search/all_f.js create mode 100644 doc/html/search/classes_0.html create mode 100644 doc/html/search/classes_0.js create mode 100644 doc/html/search/classes_1.html create mode 100644 doc/html/search/classes_1.js create mode 100644 doc/html/search/classes_10.html create mode 100644 doc/html/search/classes_10.js create mode 100644 doc/html/search/classes_11.html create mode 100644 doc/html/search/classes_11.js create mode 100644 doc/html/search/classes_12.html create mode 100644 doc/html/search/classes_12.js create mode 100644 doc/html/search/classes_13.html create mode 100644 doc/html/search/classes_13.js create mode 100644 doc/html/search/classes_14.html create mode 100644 doc/html/search/classes_14.js create mode 100644 doc/html/search/classes_2.html create mode 100644 doc/html/search/classes_2.js create mode 100644 doc/html/search/classes_3.html create mode 100644 doc/html/search/classes_3.js create mode 100644 doc/html/search/classes_4.html create mode 100644 doc/html/search/classes_4.js create mode 100644 doc/html/search/classes_5.html create mode 100644 doc/html/search/classes_5.js create mode 100644 doc/html/search/classes_6.html create mode 100644 doc/html/search/classes_6.js create mode 100644 doc/html/search/classes_7.html create mode 100644 doc/html/search/classes_7.js create mode 100644 doc/html/search/classes_8.html create mode 100644 doc/html/search/classes_8.js create mode 100644 doc/html/search/classes_9.html create mode 100644 doc/html/search/classes_9.js create mode 100644 doc/html/search/classes_a.html create mode 100644 doc/html/search/classes_a.js create mode 100644 doc/html/search/classes_b.html create mode 100644 doc/html/search/classes_b.js create mode 100644 doc/html/search/classes_c.html create mode 100644 doc/html/search/classes_c.js create mode 100644 doc/html/search/classes_d.html create mode 100644 doc/html/search/classes_d.js create mode 100644 doc/html/search/classes_e.html create mode 100644 doc/html/search/classes_e.js create mode 100644 doc/html/search/classes_f.html create mode 100644 doc/html/search/classes_f.js create mode 100644 doc/html/search/close.png create mode 100644 doc/html/search/defines_0.html create mode 100644 doc/html/search/defines_0.js create mode 100644 doc/html/search/defines_1.html create mode 100644 doc/html/search/defines_1.js create mode 100644 doc/html/search/defines_2.html create mode 100644 doc/html/search/defines_2.js create mode 100644 doc/html/search/defines_3.html create mode 100644 doc/html/search/defines_3.js create mode 100644 doc/html/search/defines_4.html create mode 100644 doc/html/search/defines_4.js create mode 100644 doc/html/search/defines_5.html create mode 100644 doc/html/search/defines_5.js create mode 100644 doc/html/search/defines_6.html create mode 100644 doc/html/search/defines_6.js create mode 100644 doc/html/search/defines_7.html create mode 100644 doc/html/search/defines_7.js create mode 100644 doc/html/search/enums_0.html create mode 100644 doc/html/search/enums_0.js create mode 100644 doc/html/search/enums_1.html create mode 100644 doc/html/search/enums_1.js create mode 100644 doc/html/search/enums_2.html create mode 100644 doc/html/search/enums_2.js create mode 100644 doc/html/search/enums_3.html create mode 100644 doc/html/search/enums_3.js create mode 100644 doc/html/search/enums_4.html create mode 100644 doc/html/search/enums_4.js create mode 100644 doc/html/search/enums_5.html create mode 100644 doc/html/search/enums_5.js create mode 100644 doc/html/search/enums_6.html create mode 100644 doc/html/search/enums_6.js create mode 100644 doc/html/search/enumvalues_0.html create mode 100644 doc/html/search/enumvalues_0.js create mode 100644 doc/html/search/enumvalues_1.html create mode 100644 doc/html/search/enumvalues_1.js create mode 100644 doc/html/search/enumvalues_2.html create mode 100644 doc/html/search/enumvalues_2.js create mode 100644 doc/html/search/enumvalues_3.html create mode 100644 doc/html/search/enumvalues_3.js create mode 100644 doc/html/search/enumvalues_4.html create mode 100644 doc/html/search/enumvalues_4.js create mode 100644 doc/html/search/enumvalues_5.html create mode 100644 doc/html/search/enumvalues_5.js create mode 100644 doc/html/search/enumvalues_6.html create mode 100644 doc/html/search/enumvalues_6.js create mode 100644 doc/html/search/enumvalues_7.html create mode 100644 doc/html/search/enumvalues_7.js create mode 100644 doc/html/search/enumvalues_8.html create mode 100644 doc/html/search/enumvalues_8.js create mode 100644 doc/html/search/enumvalues_9.html create mode 100644 doc/html/search/enumvalues_9.js create mode 100644 doc/html/search/enumvalues_a.html create mode 100644 doc/html/search/enumvalues_a.js create mode 100644 doc/html/search/enumvalues_b.html create mode 100644 doc/html/search/enumvalues_b.js create mode 100644 doc/html/search/enumvalues_c.html create mode 100644 doc/html/search/enumvalues_c.js create mode 100644 doc/html/search/files_0.html create mode 100644 doc/html/search/files_0.js create mode 100644 doc/html/search/files_1.html create mode 100644 doc/html/search/files_1.js create mode 100644 doc/html/search/files_2.html create mode 100644 doc/html/search/files_2.js create mode 100644 doc/html/search/files_3.html create mode 100644 doc/html/search/files_3.js create mode 100644 doc/html/search/files_4.html create mode 100644 doc/html/search/files_4.js create mode 100644 doc/html/search/files_5.html create mode 100644 doc/html/search/files_5.js create mode 100644 doc/html/search/files_6.html create mode 100644 doc/html/search/files_6.js create mode 100644 doc/html/search/files_7.html create mode 100644 doc/html/search/files_7.js create mode 100644 doc/html/search/files_8.html create mode 100644 doc/html/search/files_8.js create mode 100644 doc/html/search/files_9.html create mode 100644 doc/html/search/files_9.js create mode 100644 doc/html/search/files_a.html create mode 100644 doc/html/search/files_a.js create mode 100644 doc/html/search/files_b.html create mode 100644 doc/html/search/files_b.js create mode 100644 doc/html/search/files_c.html create mode 100644 doc/html/search/files_c.js create mode 100644 doc/html/search/functions_0.html create mode 100644 doc/html/search/functions_0.js create mode 100644 doc/html/search/functions_1.html create mode 100644 doc/html/search/functions_1.js create mode 100644 doc/html/search/functions_10.html create mode 100644 doc/html/search/functions_10.js create mode 100644 doc/html/search/functions_11.html create mode 100644 doc/html/search/functions_11.js create mode 100644 doc/html/search/functions_12.html create mode 100644 doc/html/search/functions_12.js create mode 100644 doc/html/search/functions_13.html create mode 100644 doc/html/search/functions_13.js create mode 100644 doc/html/search/functions_14.html create mode 100644 doc/html/search/functions_14.js create mode 100644 doc/html/search/functions_15.html create mode 100644 doc/html/search/functions_15.js create mode 100644 doc/html/search/functions_16.html create mode 100644 doc/html/search/functions_16.js create mode 100644 doc/html/search/functions_2.html create mode 100644 doc/html/search/functions_2.js create mode 100644 doc/html/search/functions_3.html create mode 100644 doc/html/search/functions_3.js create mode 100644 doc/html/search/functions_4.html create mode 100644 doc/html/search/functions_4.js create mode 100644 doc/html/search/functions_5.html create mode 100644 doc/html/search/functions_5.js create mode 100644 doc/html/search/functions_6.html create mode 100644 doc/html/search/functions_6.js create mode 100644 doc/html/search/functions_7.html create mode 100644 doc/html/search/functions_7.js create mode 100644 doc/html/search/functions_8.html create mode 100644 doc/html/search/functions_8.js create mode 100644 doc/html/search/functions_9.html create mode 100644 doc/html/search/functions_9.js create mode 100644 doc/html/search/functions_a.html create mode 100644 doc/html/search/functions_a.js create mode 100644 doc/html/search/functions_b.html create mode 100644 doc/html/search/functions_b.js create mode 100644 doc/html/search/functions_c.html create mode 100644 doc/html/search/functions_c.js create mode 100644 doc/html/search/functions_d.html create mode 100644 doc/html/search/functions_d.js create mode 100644 doc/html/search/functions_e.html create mode 100644 doc/html/search/functions_e.js create mode 100644 doc/html/search/functions_f.html create mode 100644 doc/html/search/functions_f.js create mode 100644 doc/html/search/groups_0.html create mode 100644 doc/html/search/groups_0.js create mode 100644 doc/html/search/groups_1.html create mode 100644 doc/html/search/groups_1.js create mode 100644 doc/html/search/groups_2.html create mode 100644 doc/html/search/groups_2.js create mode 100644 doc/html/search/groups_3.html create mode 100644 doc/html/search/groups_3.js create mode 100644 doc/html/search/groups_4.html create mode 100644 doc/html/search/groups_4.js create mode 100644 doc/html/search/groups_5.html create mode 100644 doc/html/search/groups_5.js create mode 100644 doc/html/search/groups_6.html create mode 100644 doc/html/search/groups_6.js create mode 100644 doc/html/search/groups_7.html create mode 100644 doc/html/search/groups_7.js create mode 100644 doc/html/search/mag_sel.png create mode 100644 doc/html/search/namespaces_0.html create mode 100644 doc/html/search/namespaces_0.js create mode 100644 doc/html/search/namespaces_1.html create mode 100644 doc/html/search/namespaces_1.js create mode 100644 doc/html/search/namespaces_2.html create mode 100644 doc/html/search/namespaces_2.js create mode 100644 doc/html/search/nomatches.html create mode 100644 doc/html/search/pages_0.html create mode 100644 doc/html/search/pages_0.js create mode 100644 doc/html/search/related_0.html create mode 100644 doc/html/search/related_0.js create mode 100644 doc/html/search/related_1.html create mode 100644 doc/html/search/related_1.js create mode 100644 doc/html/search/related_2.html create mode 100644 doc/html/search/related_2.js create mode 100644 doc/html/search/related_3.html create mode 100644 doc/html/search/related_3.js create mode 100644 doc/html/search/related_4.html create mode 100644 doc/html/search/related_4.js create mode 100644 doc/html/search/related_5.html create mode 100644 doc/html/search/related_5.js create mode 100644 doc/html/search/related_6.html create mode 100644 doc/html/search/related_6.js create mode 100644 doc/html/search/search.css create mode 100644 doc/html/search/search.js create mode 100644 doc/html/search/search_l.png create mode 100644 doc/html/search/search_m.png create mode 100644 doc/html/search/search_r.png create mode 100644 doc/html/search/searchdata.js create mode 100644 doc/html/search/typedefs_0.html create mode 100644 doc/html/search/typedefs_0.js create mode 100644 doc/html/search/typedefs_1.html create mode 100644 doc/html/search/typedefs_1.js create mode 100644 doc/html/search/typedefs_10.html create mode 100644 doc/html/search/typedefs_10.js create mode 100644 doc/html/search/typedefs_11.html create mode 100644 doc/html/search/typedefs_11.js create mode 100644 doc/html/search/typedefs_12.html create mode 100644 doc/html/search/typedefs_12.js create mode 100644 doc/html/search/typedefs_13.html create mode 100644 doc/html/search/typedefs_13.js create mode 100644 doc/html/search/typedefs_2.html create mode 100644 doc/html/search/typedefs_2.js create mode 100644 doc/html/search/typedefs_3.html create mode 100644 doc/html/search/typedefs_3.js create mode 100644 doc/html/search/typedefs_4.html create mode 100644 doc/html/search/typedefs_4.js create mode 100644 doc/html/search/typedefs_5.html create mode 100644 doc/html/search/typedefs_5.js create mode 100644 doc/html/search/typedefs_6.html create mode 100644 doc/html/search/typedefs_6.js create mode 100644 doc/html/search/typedefs_7.html create mode 100644 doc/html/search/typedefs_7.js create mode 100644 doc/html/search/typedefs_8.html create mode 100644 doc/html/search/typedefs_8.js create mode 100644 doc/html/search/typedefs_9.html create mode 100644 doc/html/search/typedefs_9.js create mode 100644 doc/html/search/typedefs_a.html create mode 100644 doc/html/search/typedefs_a.js create mode 100644 doc/html/search/typedefs_b.html create mode 100644 doc/html/search/typedefs_b.js create mode 100644 doc/html/search/typedefs_c.html create mode 100644 doc/html/search/typedefs_c.js create mode 100644 doc/html/search/typedefs_d.html create mode 100644 doc/html/search/typedefs_d.js create mode 100644 doc/html/search/typedefs_e.html create mode 100644 doc/html/search/typedefs_e.js create mode 100644 doc/html/search/typedefs_f.html create mode 100644 doc/html/search/typedefs_f.js create mode 100644 doc/html/search/variables_0.html create mode 100644 doc/html/search/variables_0.js create mode 100644 doc/html/search/variables_1.html create mode 100644 doc/html/search/variables_1.js create mode 100644 doc/html/search/variables_10.html create mode 100644 doc/html/search/variables_10.js create mode 100644 doc/html/search/variables_11.html create mode 100644 doc/html/search/variables_11.js create mode 100644 doc/html/search/variables_12.html create mode 100644 doc/html/search/variables_12.js create mode 100644 doc/html/search/variables_13.html create mode 100644 doc/html/search/variables_13.js create mode 100644 doc/html/search/variables_2.html create mode 100644 doc/html/search/variables_2.js create mode 100644 doc/html/search/variables_3.html create mode 100644 doc/html/search/variables_3.js create mode 100644 doc/html/search/variables_4.html create mode 100644 doc/html/search/variables_4.js create mode 100644 doc/html/search/variables_5.html create mode 100644 doc/html/search/variables_5.js create mode 100644 doc/html/search/variables_6.html create mode 100644 doc/html/search/variables_6.js create mode 100644 doc/html/search/variables_7.html create mode 100644 doc/html/search/variables_7.js create mode 100644 doc/html/search/variables_8.html create mode 100644 doc/html/search/variables_8.js create mode 100644 doc/html/search/variables_9.html create mode 100644 doc/html/search/variables_9.js create mode 100644 doc/html/search/variables_a.html create mode 100644 doc/html/search/variables_a.js create mode 100644 doc/html/search/variables_b.html create mode 100644 doc/html/search/variables_b.js create mode 100644 doc/html/search/variables_c.html create mode 100644 doc/html/search/variables_c.js create mode 100644 doc/html/search/variables_d.html create mode 100644 doc/html/search/variables_d.js create mode 100644 doc/html/search/variables_e.html create mode 100644 doc/html/search/variables_e.js create mode 100644 doc/html/search/variables_f.html create mode 100644 doc/html/search/variables_f.js create mode 100644 doc/html/selection_8h.html create mode 100644 doc/html/selection_8h.js create mode 100644 doc/html/selection_8h_source.html create mode 100644 doc/html/sfinae_8h.html create mode 100644 doc/html/sfinae_8h.js create mode 100644 doc/html/sfinae_8h_source.html create mode 100644 doc/html/source_2main_8d.html create mode 100644 doc/html/source_2main_8d_source.html create mode 100644 doc/html/source_2tests_2_t_concepts_8d.html create mode 100644 doc/html/source_2tests_2_t_concepts_8d_source.html create mode 100644 doc/html/source_2tests_2_tinvoke_8d.html create mode 100644 doc/html/source_2tests_2_tinvoke_8d_source.html create mode 100644 doc/html/source_2tests_2test__1w__impl_8d.html create mode 100644 doc/html/source_2tests_2test__1w__impl_8d_source.html create mode 100644 doc/html/source_2tests_2test__i2c__impl_8d.html create mode 100644 doc/html/source_2tests_2test__i2c__impl_8d_source.html create mode 100644 doc/html/source_2tests_2test__ostream__dev_8d.html create mode 100644 doc/html/source_2tests_2test__ostream__dev_8d_source.html create mode 100644 doc/html/source_2tests_2test__spi__impl_8d.html create mode 100644 doc/html/source_2tests_2test__spi__impl_8d_source.html create mode 100644 doc/html/spi_8h.html create mode 100644 doc/html/spi_8h.js create mode 100644 doc/html/spi_8h_source.html create mode 100644 doc/html/spi__bb_8h.html create mode 100644 doc/html/spi__bb_8h_source.html create mode 100644 doc/html/splitbar.png create mode 100644 doc/html/stl_8h.html create mode 100644 doc/html/stl_8h.js create mode 100644 doc/html/stl_8h_source.html create mode 100644 doc/html/struct_tmeta_basic_1_1_identity-members.html create mode 100644 doc/html/struct_tmeta_basic_1_1_identity.html create mode 100644 doc/html/struct_tmeta_basic_1_1_identity.js create mode 100644 doc/html/struct_tmeta_detection_1_1_a-members.html create mode 100644 doc/html/struct_tmeta_detection_1_1_a.html create mode 100644 doc/html/struct_tmeta_detection_1_1_a.js create mode 100644 doc/html/struct_tmeta_detection_1_1_bar.html create mode 100644 doc/html/struct_tmeta_detection_1_1_foo.html create mode 100644 doc/html/struct_tmeta_detection_1_1m_fun-members.html create mode 100644 doc/html/struct_tmeta_detection_1_1m_fun.html create mode 100644 doc/html/struct_tmeta_detection_1_1m_fun.js create mode 100644 doc/html/struct_tmeta_typelist_1_1_f.html create mode 100644 doc/html/struct_tmeta_typelist_1_1_identity-members.html create mode 100644 doc/html/struct_tmeta_typelist_1_1_identity.html create mode 100644 doc/html/struct_tmeta_typelist_1_1_identity.js create mode 100644 doc/html/struct_tmeta_typelist_1_1_mfun_bin-members.html create mode 100644 doc/html/struct_tmeta_typelist_1_1_mfun_bin.html create mode 100644 doc/html/struct_tmeta_typelist_1_1_mfun_bin.js create mode 100644 doc/html/struct_tmeta_typelist_1_1_mfun_bin__i-members.html create mode 100644 doc/html/struct_tmeta_typelist_1_1_mfun_bin__i.html create mode 100644 doc/html/struct_tmeta_typelist_1_1_mfun_bin__i.js create mode 100644 doc/html/struct_tmeta_typelist_1_1_mfun_un1-members.html create mode 100644 doc/html/struct_tmeta_typelist_1_1_mfun_un1.html create mode 100644 doc/html/struct_tmeta_typelist_1_1_mfun_un1.js create mode 100644 doc/html/struct_tmeta_typelist_1_1_mfun_un2-members.html create mode 100644 doc/html/struct_tmeta_typelist_1_1_mfun_un2.html create mode 100644 doc/html/struct_tmeta_typelist_1_1_mfun_un2.js create mode 100644 doc/html/struct_tmeta_typelist_1_1_pred__is_int-members.html create mode 100644 doc/html/struct_tmeta_typelist_1_1_pred__is_int.html create mode 100644 doc/html/struct_tmeta_typelist_1_1_pred__is_int.js create mode 100644 doc/html/struct_tmeta_typelist_1_1_pred__is_void-members.html create mode 100644 doc/html/struct_tmeta_typelist_1_1_pred__is_void.html create mode 100644 doc/html/struct_tmeta_typelist_1_1_pred__is_void.js create mode 100644 doc/html/structtest__concepts_1_1_a-members.html create mode 100644 doc/html/structtest__concepts_1_1_a.html create mode 100644 doc/html/structtest__concepts_1_1_a.js create mode 100644 doc/html/structtest__concepts_1_1_b-members.html create mode 100644 doc/html/structtest__concepts_1_1_b.html create mode 100644 doc/html/structtest__concepts_1_1_b.js create mode 100644 doc/html/structtest__concepts_1_1_empty.html create mode 100644 doc/html/structtest__concepts_1_1_have_copy_and_move-members.html create mode 100644 doc/html/structtest__concepts_1_1_have_copy_and_move.html create mode 100644 doc/html/structtest__concepts_1_1_have_copy_and_move.js create mode 100644 doc/html/structtest__concepts_1_1_have_only_copy-members.html create mode 100644 doc/html/structtest__concepts_1_1_have_only_copy.html create mode 100644 doc/html/structtest__concepts_1_1_have_only_copy.js create mode 100644 doc/html/structtest__concepts_1_1_have_only_move-members.html create mode 100644 doc/html/structtest__concepts_1_1_have_only_move.html create mode 100644 doc/html/structtest__concepts_1_1_have_only_move.js create mode 100644 doc/html/structtest__concepts_1_1_incr-members.html create mode 100644 doc/html/structtest__concepts_1_1_incr.html create mode 100644 doc/html/structtest__concepts_1_1_incr.js create mode 100644 doc/html/structtest__concepts_1_1_inv-members.html create mode 100644 doc/html/structtest__concepts_1_1_inv.html create mode 100644 doc/html/structtest__concepts_1_1_inv.js create mode 100644 doc/html/structtest__concepts_1_1_pred-members.html create mode 100644 doc/html/structtest__concepts_1_1_pred.html create mode 100644 doc/html/structtest__concepts_1_1_pred.js create mode 100644 doc/html/structtest__meta_1_1_ibar-members.html create mode 100644 doc/html/structtest__meta_1_1_ibar.html create mode 100644 doc/html/structtest__meta_1_1_ibar.js create mode 100644 doc/html/structtest__meta_1_1_ifoo-members.html create mode 100644 doc/html/structtest__meta_1_1_ifoo.html create mode 100644 doc/html/structtest__meta_1_1_ifoo.js create mode 100644 doc/html/structtesting_1_1_print_to_string_param_name-members.html create mode 100644 doc/html/structtesting_1_1_print_to_string_param_name.html create mode 100644 doc/html/structtesting_1_1_print_to_string_param_name.js create mode 100644 doc/html/structtesting_1_1_test_param_info-members.html create mode 100644 doc/html/structtesting_1_1_test_param_info.html create mode 100644 doc/html/structtesting_1_1_test_param_info.js create mode 100644 doc/html/structtesting_1_1internal_1_1_add_reference-members.html create mode 100644 doc/html/structtesting_1_1internal_1_1_add_reference.html create mode 100644 doc/html/structtesting_1_1internal_1_1_add_reference.js create mode 100644 doc/html/structtesting_1_1internal_1_1_add_reference_3_01_t_01_6_01_4-members.html create mode 100644 doc/html/structtesting_1_1internal_1_1_add_reference_3_01_t_01_6_01_4.html create mode 100644 doc/html/structtesting_1_1internal_1_1_add_reference_3_01_t_01_6_01_4.js create mode 100644 doc/html/structtesting_1_1internal_1_1_code_location-members.html create mode 100644 doc/html/structtesting_1_1internal_1_1_code_location.html create mode 100644 doc/html/structtesting_1_1internal_1_1_code_location.js create mode 100644 doc/html/structtesting_1_1internal_1_1_compile_assert_types_equal.html create mode 100644 doc/html/structtesting_1_1internal_1_1_compile_assert_types_equal_3_01_t_00_01_t_01_4.html create mode 100644 doc/html/structtesting_1_1internal_1_1_const_char_ptr-members.html create mode 100644 doc/html/structtesting_1_1internal_1_1_const_char_ptr.html create mode 100644 doc/html/structtesting_1_1internal_1_1_const_char_ptr.js create mode 100644 doc/html/structtesting_1_1internal_1_1_const_ref-members.html create mode 100644 doc/html/structtesting_1_1internal_1_1_const_ref.html create mode 100644 doc/html/structtesting_1_1internal_1_1_const_ref.js create mode 100644 doc/html/structtesting_1_1internal_1_1_const_ref_3_01_t_01_6_01_4-members.html create mode 100644 doc/html/structtesting_1_1internal_1_1_const_ref_3_01_t_01_6_01_4.html create mode 100644 doc/html/structtesting_1_1internal_1_1_const_ref_3_01_t_01_6_01_4.js create mode 100644 doc/html/structtesting_1_1internal_1_1_double_sequence.html create mode 100644 doc/html/structtesting_1_1internal_1_1_double_sequence_3_01false_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4-members.html create mode 100644 doc/html/structtesting_1_1internal_1_1_double_sequence_3_01false_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4.html create mode 100644 doc/html/structtesting_1_1internal_1_1_double_sequence_3_01false_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4.js create mode 100644 doc/html/structtesting_1_1internal_1_1_double_sequence_3_01true_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4-members.html create mode 100644 doc/html/structtesting_1_1internal_1_1_double_sequence_3_01true_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4.html create mode 100644 doc/html/structtesting_1_1internal_1_1_double_sequence_3_01true_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4.js create mode 100644 doc/html/structtesting_1_1internal_1_1_elem_from_list.html create mode 100644 doc/html/structtesting_1_1internal_1_1_elem_from_list_3_01_n_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01_t_8_8_8_01_4.html create mode 100644 doc/html/structtesting_1_1internal_1_1_elem_from_list_3_01_n_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01_t_8_8_8_01_4.png create mode 100644 doc/html/structtesting_1_1internal_1_1_elem_from_list_impl.html create mode 100644 doc/html/structtesting_1_1internal_1_1_elem_from_list_impl_3_01_t_00_01_i_00_01_i_01_4-members.html create mode 100644 doc/html/structtesting_1_1internal_1_1_elem_from_list_impl_3_01_t_00_01_i_00_01_i_01_4.html create mode 100644 doc/html/structtesting_1_1internal_1_1_elem_from_list_impl_3_01_t_00_01_i_00_01_i_01_4.js create mode 100644 doc/html/structtesting_1_1internal_1_1_enable_if.html create mode 100644 doc/html/structtesting_1_1internal_1_1_enable_if_3_01true_01_4-members.html create mode 100644 doc/html/structtesting_1_1internal_1_1_enable_if_3_01true_01_4.html create mode 100644 doc/html/structtesting_1_1internal_1_1_enable_if_3_01true_01_4.js create mode 100644 doc/html/structtesting_1_1internal_1_1_flat_tuple_base.html create mode 100644 doc/html/structtesting_1_1internal_1_1_flat_tuple_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_index_sequ39648cad53441158091e09ac7d0841c0.html create mode 100644 doc/html/structtesting_1_1internal_1_1_flat_tuple_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_index_sequence_3_01_idx_8_8_8_01_4_01_4.html create mode 100644 doc/html/structtesting_1_1internal_1_1_flat_tuple_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_index_sequence_3_01_idx_8_8_8_01_4_01_4.js create mode 100644 doc/html/structtesting_1_1internal_1_1_flat_tuple_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_index_sequence_3_01_idx_8_8_8_01_4_01_4.png create mode 100644 doc/html/structtesting_1_1internal_1_1_flat_tuple_elem_base.html create mode 100644 doc/html/structtesting_1_1internal_1_1_flat_tuple_elem_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_i_01_4-members.html create mode 100644 doc/html/structtesting_1_1internal_1_1_flat_tuple_elem_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_i_01_4.html create mode 100644 doc/html/structtesting_1_1internal_1_1_flat_tuple_elem_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_i_01_4.js create mode 100644 doc/html/structtesting_1_1internal_1_1_index_sequence-members.html create mode 100644 doc/html/structtesting_1_1internal_1_1_index_sequence.html create mode 100644 doc/html/structtesting_1_1internal_1_1_index_sequence.js create mode 100644 doc/html/structtesting_1_1internal_1_1_is_a_protocol_message-members.html create mode 100644 doc/html/structtesting_1_1internal_1_1_is_a_protocol_message.html create mode 100644 doc/html/structtesting_1_1internal_1_1_is_a_protocol_message.png create mode 100644 doc/html/structtesting_1_1internal_1_1_is_hash_table-members.html create mode 100644 doc/html/structtesting_1_1internal_1_1_is_hash_table.html create mode 100644 doc/html/structtesting_1_1internal_1_1_is_recursive_container.html create mode 100644 doc/html/structtesting_1_1internal_1_1_is_recursive_container.png create mode 100644 doc/html/structtesting_1_1internal_1_1_is_recursive_container_impl.html create mode 100644 doc/html/structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01false_01_4-members.html create mode 100644 doc/html/structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01false_01_4.html create mode 100644 doc/html/structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01false_01_4.png create mode 100644 doc/html/structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01true_01_4-members.html create mode 100644 doc/html/structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01true_01_4.html create mode 100644 doc/html/structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01true_01_4.js create mode 100644 doc/html/structtesting_1_1internal_1_1_is_same-members.html create mode 100644 doc/html/structtesting_1_1internal_1_1_is_same.html create mode 100644 doc/html/structtesting_1_1internal_1_1_is_same.js create mode 100644 doc/html/structtesting_1_1internal_1_1_is_same_3_01_t_00_01_t_01_4-members.html create mode 100644 doc/html/structtesting_1_1internal_1_1_is_same_3_01_t_00_01_t_01_4.html create mode 100644 doc/html/structtesting_1_1internal_1_1_is_same_3_01_t_00_01_t_01_4.js create mode 100644 doc/html/structtesting_1_1internal_1_1_iterator_traits-members.html create mode 100644 doc/html/structtesting_1_1internal_1_1_iterator_traits.html create mode 100644 doc/html/structtesting_1_1internal_1_1_iterator_traits.js create mode 100644 doc/html/structtesting_1_1internal_1_1_iterator_traits_3_01_t_01_5_01_4-members.html create mode 100644 doc/html/structtesting_1_1internal_1_1_iterator_traits_3_01_t_01_5_01_4.html create mode 100644 doc/html/structtesting_1_1internal_1_1_iterator_traits_3_01_t_01_5_01_4.js create mode 100644 doc/html/structtesting_1_1internal_1_1_iterator_traits_3_01const_01_t_01_5_01_4-members.html create mode 100644 doc/html/structtesting_1_1internal_1_1_iterator_traits_3_01const_01_t_01_5_01_4.html create mode 100644 doc/html/structtesting_1_1internal_1_1_iterator_traits_3_01const_01_t_01_5_01_4.js create mode 100644 doc/html/structtesting_1_1internal_1_1_make_index_sequence.html create mode 100644 doc/html/structtesting_1_1internal_1_1_make_index_sequence.png create mode 100644 doc/html/structtesting_1_1internal_1_1_make_index_sequence_3_010_01_4-members.html create mode 100644 doc/html/structtesting_1_1internal_1_1_make_index_sequence_3_010_01_4.html create mode 100644 doc/html/structtesting_1_1internal_1_1_make_index_sequence_3_010_01_4.png create mode 100644 doc/html/structtesting_1_1internal_1_1_param_name_gen_func-members.html create mode 100644 doc/html/structtesting_1_1internal_1_1_param_name_gen_func.html create mode 100644 doc/html/structtesting_1_1internal_1_1_param_name_gen_func.js create mode 100644 doc/html/structtesting_1_1internal_1_1_relation_to_source_copy.html create mode 100644 doc/html/structtesting_1_1internal_1_1_relation_to_source_reference.html create mode 100644 doc/html/structtesting_1_1internal_1_1_remove_const-members.html create mode 100644 doc/html/structtesting_1_1internal_1_1_remove_const.html create mode 100644 doc/html/structtesting_1_1internal_1_1_remove_const.js create mode 100644 doc/html/structtesting_1_1internal_1_1_remove_const_3_01const_01_t[_n]_4-members.html create mode 100644 doc/html/structtesting_1_1internal_1_1_remove_const_3_01const_01_t[_n]_4.html create mode 100644 doc/html/structtesting_1_1internal_1_1_remove_const_3_01const_01_t[_n]_4.js create mode 100644 doc/html/structtesting_1_1internal_1_1_remove_const_3_01const_01_t_01_4-members.html create mode 100644 doc/html/structtesting_1_1internal_1_1_remove_const_3_01const_01_t_01_4.html create mode 100644 doc/html/structtesting_1_1internal_1_1_remove_const_3_01const_01_t_01_4.js create mode 100644 doc/html/structtesting_1_1internal_1_1_remove_reference-members.html create mode 100644 doc/html/structtesting_1_1internal_1_1_remove_reference.html create mode 100644 doc/html/structtesting_1_1internal_1_1_remove_reference.js create mode 100644 doc/html/structtesting_1_1internal_1_1_remove_reference_3_01_t_01_6_01_4-members.html create mode 100644 doc/html/structtesting_1_1internal_1_1_remove_reference_3_01_t_01_6_01_4.html create mode 100644 doc/html/structtesting_1_1internal_1_1_remove_reference_3_01_t_01_6_01_4.js create mode 100644 doc/html/structtesting_1_1internal_1_1_static_assert_type_eq_helper.html create mode 100644 doc/html/structtesting_1_1internal_1_1_static_assert_type_eq_helper_3_01_t_00_01_t_01_4-members.html create mode 100644 doc/html/structtesting_1_1internal_1_1_static_assert_type_eq_helper_3_01_t_00_01_t_01_4.html create mode 100644 doc/html/structtesting_1_1internal_1_1_static_assert_type_eq_helper_3_01_t_00_01_t_01_4.js create mode 100644 doc/html/structtesting_1_1internal_1_1_suite_api_resolver-members.html create mode 100644 doc/html/structtesting_1_1internal_1_1_suite_api_resolver.html create mode 100644 doc/html/structtesting_1_1internal_1_1_suite_api_resolver.js create mode 100644 doc/html/structtesting_1_1internal_1_1_suite_api_resolver.png create mode 100644 doc/html/structtesting_1_1internal_1_1_wrap_printer_type.html create mode 100644 doc/html/structtesting_1_1internal_1_1bool__constant-members.html create mode 100644 doc/html/structtesting_1_1internal_1_1bool__constant.html create mode 100644 doc/html/structtesting_1_1internal_1_1bool__constant.js create mode 100644 doc/html/structtesting_1_1internal_1_1bool__constant.png create mode 100644 doc/html/structtesting_1_1internal_1_1faketype.html create mode 100644 doc/html/structtesting_1_1internal_1_1is__same-members.html create mode 100644 doc/html/structtesting_1_1internal_1_1is__same.html create mode 100644 doc/html/structtesting_1_1internal_1_1is__same.png create mode 100644 doc/html/structtesting_1_1internal_1_1is__same_3_01_t_00_01_t_01_4-members.html create mode 100644 doc/html/structtesting_1_1internal_1_1is__same_3_01_t_00_01_t_01_4.html create mode 100644 doc/html/structtesting_1_1internal_1_1is__same_3_01_t_00_01_t_01_4.png create mode 100644 doc/html/structutl_1_1__1wire__i__det_1_1is__1wire__.html create mode 100644 doc/html/structutl_1_1__1wire__i__det_1_1is__1wire__.png create mode 100644 doc/html/structutl_1_1__1wire__i__det_1_1is__1wire___3_01___tp_00_01meta_1_1void__t_3_01void_01_4_01_4.html create mode 100644 doc/html/structutl_1_1__1wire__i__det_1_1is__1wire___3_01___tp_00_01meta_1_1void__t_3_01void_01_4_01_4.png create mode 100644 doc/html/structutl_1_1array-members.html create mode 100644 doc/html/structutl_1_1array.html create mode 100644 doc/html/structutl_1_1array.js create mode 100644 doc/html/structutl_1_1array__traits-members.html create mode 100644 doc/html/structutl_1_1array__traits.html create mode 100644 doc/html/structutl_1_1array__traits.js create mode 100644 doc/html/structutl_1_1array__traits_3_01___tp_00_010_01_4-members.html create mode 100644 doc/html/structutl_1_1array__traits_3_01___tp_00_010_01_4.html create mode 100644 doc/html/structutl_1_1array__traits_3_01___tp_00_010_01_4.js create mode 100644 doc/html/structutl_1_1array__traits_3_01___tp_00_010_01_4_1_1type.html create mode 100644 doc/html/structutl_1_1bidirectional__iterator__tag.html create mode 100644 doc/html/structutl_1_1bidirectional__iterator__tag.png create mode 100644 doc/html/structutl_1_1common__impl_1_1____common__ref__.html create mode 100644 doc/html/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_00_01meta_1_1void__t_3_05e5aa384829bb34312a7b8ee4ecaa00f.html create mode 100644 doc/html/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_00_01meta_1_1void__t_3_05e5aa384829bb34312a7b8ee4ecaa00f.js create mode 100644 doc/html/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_00_01meta_1_1void__t_3_0713e3da9a16fa287c3da4804d8a82e2a.html create mode 100644 doc/html/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_6_00_01meta_1_1void__t_329fba5aeac3b93aa9cfa5aa7e282e196.html create mode 100644 doc/html/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_6_00_01meta_1_1void__t_329fba5aeac3b93aa9cfa5aa7e282e196.js create mode 100644 doc/html/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_6_00_01meta_1_1void__t_39d51aabb1b6e285a8820883623b777b6.html create mode 100644 doc/html/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_00_01meta_1_1void__t_3972a8d6e6799b6ee6537c969cdced343.html create mode 100644 doc/html/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_00_01meta_1_1void__t_3972a8d6e6799b6ee6537c969cdced343.js create mode 100644 doc/html/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_00_01meta_1_1void__t_3caf0f226d0c1286077388e70348a8308.html create mode 100644 doc/html/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_6_00_01meta_1_1void__t1694845b4ab351e97156ad142728ca62.html create mode 100644 doc/html/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_6_00_01meta_1_1void__tc4e71c227f251cadf0e0fb7b1ba6f1e9.html create mode 100644 doc/html/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_6_00_01meta_1_1void__tc4e71c227f251cadf0e0fb7b1ba6f1e9.js create mode 100644 doc/html/structutl_1_1common__impl_1_1____common__reference.html create mode 100644 doc/html/structutl_1_1common__impl_1_1____common__reference.png create mode 100644 doc/html/structutl_1_1common__impl_1_1____common__reference2.html create mode 100644 doc/html/structutl_1_1common__impl_1_1____common__reference2.png create mode 100644 doc/html/structutl_1_1common__impl_1_1____common__reference2_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____6ab9922f56c6f2662c3adbf096130c54.html create mode 100644 doc/html/structutl_1_1common__impl_1_1____common__reference2_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____785d0aa2f8a62416e19573fcbdd83836.html create mode 100644 doc/html/structutl_1_1common__impl_1_1____common__reference2_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____785d0aa2f8a62416e19573fcbdd83836.js create mode 100644 doc/html/structutl_1_1common__impl_1_1____common__reference3.html create mode 100644 doc/html/structutl_1_1common__impl_1_1____common__reference3.png create mode 100644 doc/html/structutl_1_1common__impl_1_1____common__reference3_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____015b01ed12d2d90ee57fbf756ab847e9.html create mode 100644 doc/html/structutl_1_1common__impl_1_1____common__reference3_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____015b01ed12d2d90ee57fbf756ab847e9.js create mode 100644 doc/html/structutl_1_1common__impl_1_1____common__reference3_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____0b88805ce5232fbdb9a7fdd38466508d.html create mode 100644 doc/html/structutl_1_1common__impl_1_1____common__reference_3_01_t_00_01_u_00_01meta_1_1when_3_01std_1_1i23b95b4b3a65ce598dbcc7f52e9dab2c.html create mode 100644 doc/html/structutl_1_1common__impl_1_1____common__reference_3_01_t_00_01_u_00_01meta_1_1when_3_01std_1_1i23b95b4b3a65ce598dbcc7f52e9dab2c.js create mode 100644 doc/html/structutl_1_1common__impl_1_1____common__reference_3_01_t_00_01_u_00_01meta_1_1when_3_01std_1_1ided146ccd9cf12e9462fbb7f93734932.html create mode 100644 doc/html/structutl_1_1common__impl_1_1____copy__cv__-members.html create mode 100644 doc/html/structutl_1_1common__impl_1_1____copy__cv__.html create mode 100644 doc/html/structutl_1_1common__impl_1_1____copy__cv__.js create mode 100644 doc/html/structutl_1_1common__impl_1_1____copy__cv___3_01const_01_from_01_4-members.html create mode 100644 doc/html/structutl_1_1common__impl_1_1____copy__cv___3_01const_01_from_01_4.html create mode 100644 doc/html/structutl_1_1common__impl_1_1____copy__cv___3_01const_01_from_01_4.js create mode 100644 doc/html/structutl_1_1common__impl_1_1____copy__cv___3_01const_01volatile_01_from_01_4-members.html create mode 100644 doc/html/structutl_1_1common__impl_1_1____copy__cv___3_01const_01volatile_01_from_01_4.html create mode 100644 doc/html/structutl_1_1common__impl_1_1____copy__cv___3_01const_01volatile_01_from_01_4.js create mode 100644 doc/html/structutl_1_1common__impl_1_1____copy__cv___3_01volatile_01_from_01_4-members.html create mode 100644 doc/html/structutl_1_1common__impl_1_1____copy__cv___3_01volatile_01_from_01_4.html create mode 100644 doc/html/structutl_1_1common__impl_1_1____copy__cv___3_01volatile_01_from_01_4.js create mode 100644 doc/html/structutl_1_1common__impl_1_1____xref-members.html create mode 100644 doc/html/structutl_1_1common__impl_1_1____xref.html create mode 100644 doc/html/structutl_1_1common__impl_1_1____xref.js create mode 100644 doc/html/structutl_1_1common__impl_1_1____xref_3_01_t_01_6_01_4-members.html create mode 100644 doc/html/structutl_1_1common__impl_1_1____xref_3_01_t_01_6_01_4.html create mode 100644 doc/html/structutl_1_1common__impl_1_1____xref_3_01_t_01_6_01_4.js create mode 100644 doc/html/structutl_1_1common__impl_1_1____xref_3_01_t_01_6_6_01_4-members.html create mode 100644 doc/html/structutl_1_1common__impl_1_1____xref_3_01_t_01_6_6_01_4.html create mode 100644 doc/html/structutl_1_1common__impl_1_1____xref_3_01_t_01_6_6_01_4.js create mode 100644 doc/html/structutl_1_1common__impl_1_1____xref_3_01const_01_t_01_4-members.html create mode 100644 doc/html/structutl_1_1common__impl_1_1____xref_3_01const_01_t_01_4.html create mode 100644 doc/html/structutl_1_1common__impl_1_1____xref_3_01const_01_t_01_4.js create mode 100644 doc/html/structutl_1_1common__impl_1_1____xref_3_01const_01volatile_01_t_01_4-members.html create mode 100644 doc/html/structutl_1_1common__impl_1_1____xref_3_01const_01volatile_01_t_01_4.html create mode 100644 doc/html/structutl_1_1common__impl_1_1____xref_3_01const_01volatile_01_t_01_4.js create mode 100644 doc/html/structutl_1_1common__impl_1_1____xref_3_01volatile_01_t_01_4-members.html create mode 100644 doc/html/structutl_1_1common__impl_1_1____xref_3_01volatile_01_t_01_4.html create mode 100644 doc/html/structutl_1_1common__impl_1_1____xref_3_01volatile_01_t_01_4.js create mode 100644 doc/html/structutl_1_1common__impl_1_1basic__common__reference.html create mode 100644 doc/html/structutl_1_1common__impl_1_1common__reference.html create mode 100644 doc/html/structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_00_01_v_00_01_w_8_8_8_01_4.html create mode 100644 doc/html/structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_00_01_v_00_01_w_8_8_8_01_4.png create mode 100644 doc/html/structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_01_4.html create mode 100644 doc/html/structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_01_4.png create mode 100644 doc/html/structutl_1_1common__impl_1_1common__reference_3_01_t_01_4-members.html create mode 100644 doc/html/structutl_1_1common__impl_1_1common__reference_3_01_t_01_4.html create mode 100644 doc/html/structutl_1_1common__impl_1_1common__reference_3_01_t_01_4.js create mode 100644 doc/html/structutl_1_1contiguous__iterator__tag.html create mode 100644 doc/html/structutl_1_1contiguous__iterator__tag.png create mode 100644 doc/html/structutl_1_1crtp__tag.html create mode 100644 doc/html/structutl_1_1detail_1_1invoke__result__-members.html create mode 100644 doc/html/structutl_1_1detail_1_1invoke__result__.html create mode 100644 doc/html/structutl_1_1detail_1_1invoke__result__.js create mode 100644 doc/html/structutl_1_1detail_1_1invoke__result___3_01true_00_01___callable_00_01___args_8_8_8_01_4-members.html create mode 100644 doc/html/structutl_1_1detail_1_1invoke__result___3_01true_00_01___callable_00_01___args_8_8_8_01_4.html create mode 100644 doc/html/structutl_1_1detail_1_1invoke__result___3_01true_00_01___callable_00_01___args_8_8_8_01_4.js create mode 100644 doc/html/structutl_1_1detail_1_1is__ref__wrapper.html create mode 100644 doc/html/structutl_1_1detail_1_1is__ref__wrapper.png create mode 100644 doc/html/structutl_1_1detail_1_1is__ref__wrapper_3_01std_1_1reference__wrapper_3_01_u_01_4_01_4.html create mode 100644 doc/html/structutl_1_1detail_1_1is__ref__wrapper_3_01std_1_1reference__wrapper_3_01_u_01_4_01_4.png create mode 100644 doc/html/structutl_1_1detail_1_1try__invoke-members.html create mode 100644 doc/html/structutl_1_1detail_1_1try__invoke.html create mode 100644 doc/html/structutl_1_1detail_1_1try__invoke.js create mode 100644 doc/html/structutl_1_1details_1_1is__boolean__-members.html create mode 100644 doc/html/structutl_1_1details_1_1is__boolean__.html create mode 100644 doc/html/structutl_1_1details_1_1is__boolean__.js create mode 100644 doc/html/structutl_1_1details_1_1is__boolean___3_01_b_00_01meta_1_1void__t_3_01meta_1_1use__if__same__t_37e77ed45a431955fc15b4c1210ad8491.html create mode 100644 doc/html/structutl_1_1details_1_1is__boolean___3_01_b_00_01meta_1_1void__t_3_01meta_1_1use__if__same__t_37e77ed45a431955fc15b4c1210ad8491.js create mode 100644 doc/html/structutl_1_1details_1_1is__boolean___3_01_b_00_01meta_1_1void__t_3_01meta_1_1use__if__same__t_3ad1d6c2db324c85cc71a9bc43da835ec.html create mode 100644 doc/html/structutl_1_1details_1_1is__strict__totally__ordered__-members.html create mode 100644 doc/html/structutl_1_1details_1_1is__strict__totally__ordered__.html create mode 100644 doc/html/structutl_1_1details_1_1is__strict__totally__ordered__.js create mode 100644 doc/html/structutl_1_1details_1_1is__strict__totally__ordered___3_01_t_00_01meta_1_1void__t_3_01meta_1_1u81d73edcb77c29e6078e6f471605fc0e.html create mode 100644 doc/html/structutl_1_1details_1_1is__strict__totally__ordered___3_01_t_00_01meta_1_1void__t_3_01meta_1_1uab48bcfc89164f446368b35bcc7c8bcd.html create mode 100644 doc/html/structutl_1_1details_1_1is__strict__totally__ordered___3_01_t_00_01meta_1_1void__t_3_01meta_1_1uab48bcfc89164f446368b35bcc7c8bcd.js create mode 100644 doc/html/structutl_1_1details_1_1is__strict__totally__ordered__with__-members.html create mode 100644 doc/html/structutl_1_1details_1_1is__strict__totally__ordered__with__.html create mode 100644 doc/html/structutl_1_1details_1_1is__strict__totally__ordered__with__.js create mode 100644 doc/html/structutl_1_1details_1_1is__strict__totally__ordered__with___3_01_t_00_01_u_00_01meta_1_1void__t8fb7dd5a6ad25952241e37c6f163f434.html create mode 100644 doc/html/structutl_1_1details_1_1is__strict__totally__ordered__with___3_01_t_00_01_u_00_01meta_1_1void__t8fb7dd5a6ad25952241e37c6f163f434.js create mode 100644 doc/html/structutl_1_1details_1_1is__strict__totally__ordered__with___3_01_t_00_01_u_00_01meta_1_1void__tbfa3d43701320cc59da10160e5809f24.html create mode 100644 doc/html/structutl_1_1details_1_1is__weakly__equality__comparable__with__-members.html create mode 100644 doc/html/structutl_1_1details_1_1is__weakly__equality__comparable__with__.html create mode 100644 doc/html/structutl_1_1details_1_1is__weakly__equality__comparable__with__.js create mode 100644 doc/html/structutl_1_1details_1_1is__weakly__equality__comparable__with___3_01_t_00_01_u_00_01meta_1_1voi4404f901930622694666ca68fb75381b.html create mode 100644 doc/html/structutl_1_1details_1_1is__weakly__equality__comparable__with___3_01_t_00_01_u_00_01meta_1_1voi4404f901930622694666ca68fb75381b.js create mode 100644 doc/html/structutl_1_1details_1_1is__weakly__equality__comparable__with___3_01_t_00_01_u_00_01meta_1_1voibfc2d6389a7246a6162e601b9118387f.html create mode 100644 doc/html/structutl_1_1dev__iterator__traits-members.html create mode 100644 doc/html/structutl_1_1dev__iterator__traits.html create mode 100644 doc/html/structutl_1_1dev__iterator__traits.js create mode 100644 doc/html/structutl_1_1forward__iterator__tag.html create mode 100644 doc/html/structutl_1_1forward__iterator__tag.png create mode 100644 doc/html/structutl_1_1i2c__i__details_1_1is__i2c__.html create mode 100644 doc/html/structutl_1_1i2c__i__details_1_1is__i2c__.png create mode 100644 doc/html/structutl_1_1i2c__i__details_1_1is__i2c___3_01___tp_00_01meta_1_1void__t_3_01typename_01___tp_1_1_sequence_00_01void_01_4_01_4.html create mode 100644 doc/html/structutl_1_1i2c__i__details_1_1is__i2c___3_01___tp_00_01meta_1_1void__t_3_01typename_01___tp_1_1_sequence_00_01void_01_4_01_4.png create mode 100644 doc/html/structutl_1_1id__t-members.html create mode 100644 doc/html/structutl_1_1id__t.html create mode 100644 doc/html/structutl_1_1id__t.js create mode 100644 doc/html/structutl_1_1id__traits-members.html create mode 100644 doc/html/structutl_1_1id__traits.html create mode 100644 doc/html/structutl_1_1id__traits.js create mode 100644 doc/html/structutl_1_1id__traits_3_01___tp_00_010_01_4-members.html create mode 100644 doc/html/structutl_1_1id__traits_3_01___tp_00_010_01_4.html create mode 100644 doc/html/structutl_1_1id__traits_3_01___tp_00_010_01_4.js create mode 100644 doc/html/structutl_1_1id__traits_3_01___tp_00_010_01_4_1_1type.html create mode 100644 doc/html/structutl_1_1idx__dev__details_1_1is__idx__dev__.html create mode 100644 doc/html/structutl_1_1idx__dev__details_1_1is__idx__dev__.png create mode 100644 doc/html/structutl_1_1idx__dev__details_1_1is__idx__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1ae8b6b24c31c81bdd901da6e6387d84b.html create mode 100644 doc/html/structutl_1_1idx__dev__details_1_1is__idx__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1ae8b6b24c31c81bdd901da6e6387d84b.png create mode 100644 doc/html/structutl_1_1idxdev__it__details_1_1is__idxdev__it__.html create mode 100644 doc/html/structutl_1_1idxdev__it__details_1_1is__idxdev__it__.png create mode 100644 doc/html/structutl_1_1idxdev__it__details_1_1is__idxdev__it___3_01___tp_00_01meta_1_1void__t_3_01typenamebd9ada52ca7b7570c26d0c280af5e635.html create mode 100644 doc/html/structutl_1_1idxdev__it__details_1_1is__idxdev__it___3_01___tp_00_01meta_1_1void__t_3_01typenamebd9ada52ca7b7570c26d0c280af5e635.png create mode 100644 doc/html/structutl_1_1in__dev__details_1_1is__in__dev__.html create mode 100644 doc/html/structutl_1_1in__dev__details_1_1is__in__dev__.png create mode 100644 doc/html/structutl_1_1in__dev__details_1_1is__in__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1dad922a62deb7c32e2cff18d66b8c887d2.html create mode 100644 doc/html/structutl_1_1in__dev__details_1_1is__in__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1dad922a62deb7c32e2cff18d66b8c887d2.png create mode 100644 doc/html/structutl_1_1inbuf__dev__details_1_1is__inbuf__dev__.html create mode 100644 doc/html/structutl_1_1inbuf__dev__details_1_1is__inbuf__dev__.png create mode 100644 doc/html/structutl_1_1inbuf__dev__details_1_1is__inbuf__dev___3_01___tp_00_01void__t_3_01typename_01___tpc269ee3885240cc8c352f3c6b3a67cd7.html create mode 100644 doc/html/structutl_1_1inbuf__dev__details_1_1is__inbuf__dev___3_01___tp_00_01void__t_3_01typename_01___tpc269ee3885240cc8c352f3c6b3a67cd7.png create mode 100644 doc/html/structutl_1_1indev__it__details_1_1is__indev__it__.html create mode 100644 doc/html/structutl_1_1indev__it__details_1_1is__indev__it__.png create mode 100644 doc/html/structutl_1_1indev__it__details_1_1is__indev__it___3_01___tp_00_01meta_1_1void__t_3_01typename_06508604dcee4010234c84cc332fa196b.html create mode 100644 doc/html/structutl_1_1indev__it__details_1_1is__indev__it___3_01___tp_00_01meta_1_1void__t_3_01typename_06508604dcee4010234c84cc332fa196b.png create mode 100644 doc/html/structutl_1_1input__iterator__tag.html create mode 100644 doc/html/structutl_1_1input__iterator__tag.png create mode 100644 doc/html/structutl_1_1iodev__it_1_1value__type__t-members.html create mode 100644 doc/html/structutl_1_1iodev__it_1_1value__type__t.html create mode 100644 doc/html/structutl_1_1iodev__it_1_1value__type__t.js create mode 100644 doc/html/structutl_1_1is__invocable.html create mode 100644 doc/html/structutl_1_1is__invocable.png create mode 100644 doc/html/structutl_1_1is__invocable__r.html create mode 100644 doc/html/structutl_1_1is__invocable__r.png create mode 100644 doc/html/structutl_1_1meta_1_1apply__impl_1_1apply__.html create mode 100644 doc/html/structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01integer__sequence_3_01_t_00_01_is_8_8_8_01_4_01_4-members.html create mode 100644 doc/html/structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01integer__sequence_3_01_t_00_01_is_8_8_8_01_4_01_4.html create mode 100644 doc/html/structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01integer__sequence_3_01_t_00_01_is_8_8_8_01_4_01_4.js create mode 100644 doc/html/structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01typelist_3_01_list_8_8_8_01_4_01_4-members.html create mode 100644 doc/html/structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01typelist_3_01_list_8_8_8_01_4_01_4.html create mode 100644 doc/html/structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01typelist_3_01_list_8_8_8_01_4_01_4.js create mode 100644 doc/html/structutl_1_1meta_1_1at__impl_1_1__add__pointer-members.html create mode 100644 doc/html/structutl_1_1meta_1_1at__impl_1_1__add__pointer.html create mode 100644 doc/html/structutl_1_1meta_1_1at__impl_1_1__add__pointer.js create mode 100644 doc/html/structutl_1_1meta_1_1at__impl_1_1at__.html create mode 100644 doc/html/structutl_1_1meta_1_1at__impl_1_1at___3_01typelist_3_01_list_8_8_8_01_4_00_01_n_01_4-members.html create mode 100644 doc/html/structutl_1_1meta_1_1at__impl_1_1at___3_01typelist_3_01_list_8_8_8_01_4_00_01_n_01_4.html create mode 100644 doc/html/structutl_1_1meta_1_1at__impl_1_1at___3_01typelist_3_01_list_8_8_8_01_4_00_01_n_01_4.js create mode 100644 doc/html/structutl_1_1meta_1_1at__impl_1_1at__head__.html create mode 100644 doc/html/structutl_1_1meta_1_1at__impl_1_1at__head___3_01typelist_3_01voids_8_8_8_01_4_01_4-members.html create mode 100644 doc/html/structutl_1_1meta_1_1at__impl_1_1at__head___3_01typelist_3_01voids_8_8_8_01_4_01_4.html create mode 100644 doc/html/structutl_1_1meta_1_1at__impl_1_1at__head___3_01typelist_3_01voids_8_8_8_01_4_01_4.js create mode 100644 doc/html/structutl_1_1meta_1_1back__impl_1_1back__.html create mode 100644 doc/html/structutl_1_1meta_1_1back__impl_1_1back___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4-members.html create mode 100644 doc/html/structutl_1_1meta_1_1back__impl_1_1back___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.html create mode 100644 doc/html/structutl_1_1meta_1_1back__impl_1_1back___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.js create mode 100644 doc/html/structutl_1_1meta_1_1bind__back-members.html create mode 100644 doc/html/structutl_1_1meta_1_1bind__back.html create mode 100644 doc/html/structutl_1_1meta_1_1bind__back.js create mode 100644 doc/html/structutl_1_1meta_1_1bind__front-members.html create mode 100644 doc/html/structutl_1_1meta_1_1bind__front.html create mode 100644 doc/html/structutl_1_1meta_1_1bind__front.js create mode 100644 doc/html/structutl_1_1meta_1_1cat__impl_1_1cat__.html create mode 100644 doc/html/structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_00_01_ln_8_8_8_01_4.html create mode 100644 doc/html/structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_00_01_ln_8_8_8_01_4.png create mode 100644 doc/html/structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4-members.html create mode 100644 doc/html/structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4.html create mode 100644 doc/html/structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4.js create mode 100644 doc/html/structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_01_4-members.html create mode 100644 doc/html/structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_01_4.html create mode 100644 doc/html/structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_01_4.js create mode 100644 doc/html/structutl_1_1meta_1_1cat__impl_1_1cat___3_4-members.html create mode 100644 doc/html/structutl_1_1meta_1_1cat__impl_1_1cat___3_4.html create mode 100644 doc/html/structutl_1_1meta_1_1cat__impl_1_1cat___3_4.js create mode 100644 doc/html/structutl_1_1meta_1_1count__if__impl_1_1count__if__.html create mode 100644 doc/html/structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4-members.html create mode 100644 doc/html/structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.html create mode 100644 doc/html/structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.js create mode 100644 doc/html/structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4-members.html create mode 100644 doc/html/structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.html create mode 100644 doc/html/structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.js create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1__and__.html create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4.html create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4.png create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_01_4.html create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_01_4.png create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1__and___3_01___t1_01_4.html create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1__and___3_01___t1_01_4.png create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1__and___3_4.html create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1__and___3_4.png create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1__or__.html create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4.html create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4.png create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_01_4.html create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_01_4.png create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1__or___3_01___t1_01_4.html create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1__or___3_01___t1_01_4.png create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1__or___3_4.html create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1__or___3_4.png create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1compose__.html create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_00_01_fns_8_8_8_01_4-members.html create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_00_01_fns_8_8_8_01_4.html create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_00_01_fns_8_8_8_01_4.js create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_01_4-members.html create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_01_4.html create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_01_4.js create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1compose__f__.html create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_00_01_fns_8_8_8_01_4-members.html create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_00_01_fns_8_8_8_01_4.html create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_00_01_fns_8_8_8_01_4.js create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_01_4-members.html create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_01_4.html create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_01_4.js create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1defer__-members.html create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1defer__.html create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1defer__.js create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1defer__i__-members.html create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1defer__i__.html create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1defer__i__.js create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1detector-members.html create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1detector.html create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1detector.js create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1detector_3_01_default_00_01void__t_3_01_op_3_01_args_8_8_8_01_4_014c7e3230400bd80d9ca2cd7241031cf.html create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1detector_3_01_default_00_01void__t_3_01_op_3_01_args_8_8_8_01_4_0c35bdbd19f56980c0b5ee6d490bfb634.html create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1detector_3_01_default_00_01void__t_3_01_op_3_01_args_8_8_8_01_4_0c35bdbd19f56980c0b5ee6d490bfb634.js create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1if__c__-members.html create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1if__c__.html create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1if__c__.js create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1if__c___3_01false_00_01_then_00_01_else_01_4-members.html create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1if__c___3_01false_00_01_then_00_01_else_01_4.html create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1if__c___3_01false_00_01_then_00_01_else_01_4.js create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_00_01_else_01_4-members.html create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_00_01_else_01_4.html create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_00_01_else_01_4.js create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_01_4-members.html create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_01_4.html create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_01_4.js create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1is__applicable__-members.html create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1is__applicable__.html create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1is__applicable__.js create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1is__applicable__i__-members.html create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1is__applicable__i__.html create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1is__applicable__i__.js create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1is__applicable__q__-members.html create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1is__applicable__q__.html create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1is__applicable__q__.js create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1when__.html create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1when___3_01true_01_4-members.html create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1when___3_01true_01_4.html create mode 100644 doc/html/structutl_1_1meta_1_1detail_1_1when___3_01true_01_4.js create mode 100644 doc/html/structutl_1_1meta_1_1filter__impl_1_1filter__.html create mode 100644 doc/html/structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_l_01_4-members.html create mode 100644 doc/html/structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_l_01_4.html create mode 100644 doc/html/structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_l_01_4.js create mode 100644 doc/html/structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_4_00_01_fn_00_01_l_01_4-members.html create mode 100644 doc/html/structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_4_00_01_fn_00_01_l_01_4.html create mode 100644 doc/html/structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_4_00_01_fn_00_01_l_01_4.js create mode 100644 doc/html/structutl_1_1meta_1_1find__if__impl_1_1find__if__.html create mode 100644 doc/html/structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4-members.html create mode 100644 doc/html/structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.html create mode 100644 doc/html/structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.js create mode 100644 doc/html/structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4-members.html create mode 100644 doc/html/structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.html create mode 100644 doc/html/structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.js create mode 100644 doc/html/structutl_1_1meta_1_1fold__impl_1_1fold__.html create mode 100644 doc/html/structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4-members.html create mode 100644 doc/html/structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4.html create mode 100644 doc/html/structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4.js create mode 100644 doc/html/structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_4_00_01_v0_00_01_fn_01_4-members.html create mode 100644 doc/html/structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_4_00_01_v0_00_01_fn_01_4.html create mode 100644 doc/html/structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_4_00_01_v0_00_01_fn_01_4.js create mode 100644 doc/html/structutl_1_1meta_1_1front__impl_1_1front__.html create mode 100644 doc/html/structutl_1_1meta_1_1front__impl_1_1front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4-members.html create mode 100644 doc/html/structutl_1_1meta_1_1front__impl_1_1front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.html create mode 100644 doc/html/structutl_1_1meta_1_1front__impl_1_1front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.js create mode 100644 doc/html/structutl_1_1meta_1_1identity-members.html create mode 100644 doc/html/structutl_1_1meta_1_1identity.html create mode 100644 doc/html/structutl_1_1meta_1_1identity.js create mode 100644 doc/html/structutl_1_1meta_1_1nat__-members.html create mode 100644 doc/html/structutl_1_1meta_1_1nat__.html create mode 100644 doc/html/structutl_1_1meta_1_1nat__.js create mode 100644 doc/html/structutl_1_1meta_1_1nil__-members.html create mode 100644 doc/html/structutl_1_1meta_1_1nil__.html create mode 100644 doc/html/structutl_1_1meta_1_1nil__.js create mode 100644 doc/html/structutl_1_1meta_1_1not__same__as.html create mode 100644 doc/html/structutl_1_1meta_1_1not__same__as_1_1apply.html create mode 100644 doc/html/structutl_1_1meta_1_1not__same__as_1_1apply.png create mode 100644 doc/html/structutl_1_1meta_1_1pop__back__impl_1_1pop__back__-members.html create mode 100644 doc/html/structutl_1_1meta_1_1pop__back__impl_1_1pop__back__.html create mode 100644 doc/html/structutl_1_1meta_1_1pop__back__impl_1_1pop__back__.js create mode 100644 doc/html/structutl_1_1meta_1_1pop__front__impl_1_1pop__front__.html create mode 100644 doc/html/structutl_1_1meta_1_1pop__front__impl_1_1pop__front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4-members.html create mode 100644 doc/html/structutl_1_1meta_1_1pop__front__impl_1_1pop__front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.html create mode 100644 doc/html/structutl_1_1meta_1_1pop__front__impl_1_1pop__front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.js create mode 100644 doc/html/structutl_1_1meta_1_1quote-members.html create mode 100644 doc/html/structutl_1_1meta_1_1quote.html create mode 100644 doc/html/structutl_1_1meta_1_1quote.js create mode 100644 doc/html/structutl_1_1meta_1_1quote__i-members.html create mode 100644 doc/html/structutl_1_1meta_1_1quote__i.html create mode 100644 doc/html/structutl_1_1meta_1_1quote__i.js create mode 100644 doc/html/structutl_1_1meta_1_1replace__if__impl_1_1replace__if__.html create mode 100644 doc/html/structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_01_head_00_01_tail_8_8_8_5e985261da7db491aaa0c46140e32daf.html create mode 100644 doc/html/structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_01_head_00_01_tail_8_8_8_dfa8065a3617f53ecded260506092a07.html create mode 100644 doc/html/structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_01_head_00_01_tail_8_8_8_dfa8065a3617f53ecded260506092a07.js create mode 100644 doc/html/structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_4_00_01_fn_00_01_t_00_01_ret_01_4-members.html create mode 100644 doc/html/structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_4_00_01_fn_00_01_t_00_01_ret_01_4.html create mode 100644 doc/html/structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_4_00_01_fn_00_01_t_00_01_ret_01_4.js create mode 100644 doc/html/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold__.html create mode 100644 doc/html/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4-members.html create mode 100644 doc/html/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4.html create mode 100644 doc/html/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4.js create mode 100644 doc/html/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_tail_01_4_00_01_v_00_01_fn_01_4-members.html create mode 100644 doc/html/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_tail_01_4_00_01_v_00_01_fn_01_4.html create mode 100644 doc/html/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_tail_01_4_00_01_v_00_01_fn_01_4.js create mode 100644 doc/html/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_4_00_01_v_00_01_fn_01_4-members.html create mode 100644 doc/html/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_4_00_01_v_00_01_fn_01_4.html create mode 100644 doc/html/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_4_00_01_v_00_01_fn_01_4.js create mode 100644 doc/html/structutl_1_1meta_1_1reverse__impl_1_1reverse__-members.html create mode 100644 doc/html/structutl_1_1meta_1_1reverse__impl_1_1reverse__.html create mode 100644 doc/html/structutl_1_1meta_1_1reverse__impl_1_1reverse__.js create mode 100644 doc/html/structutl_1_1meta_1_1same__.html create mode 100644 doc/html/structutl_1_1meta_1_1same__.png create mode 100644 doc/html/structutl_1_1meta_1_1same___3_01___tp_00_01___tp_01_4.html create mode 100644 doc/html/structutl_1_1meta_1_1same___3_01___tp_00_01___tp_01_4.png create mode 100644 doc/html/structutl_1_1meta_1_1same__as.html create mode 100644 doc/html/structutl_1_1meta_1_1same__as_1_1apply.html create mode 100644 doc/html/structutl_1_1meta_1_1same__as_1_1apply.png create mode 100644 doc/html/structutl_1_1meta_1_1seek__if__impl_1_1seek__if__.html create mode 100644 doc/html/structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4-members.html create mode 100644 doc/html/structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.html create mode 100644 doc/html/structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.js create mode 100644 doc/html/structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4-members.html create mode 100644 doc/html/structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.html create mode 100644 doc/html/structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.js create mode 100644 doc/html/structutl_1_1meta_1_1transform__impl_1_1transform__.html create mode 100644 doc/html/structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts0_8_8_8_01_210aa6f1cfc8f50301d614f1b83a2a4f.html create mode 100644 doc/html/structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts0_8_8_8_01_8fba6bf3d0565d17a96950cb517db5f1.html create mode 100644 doc/html/structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts0_8_8_8_01_8fba6bf3d0565d17a96950cb517db5f1.js create mode 100644 doc/html/structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts_8_8_8_01_40fe2b1c8ede658aadb6925de73541689.html create mode 100644 doc/html/structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts_8_8_8_01_40fe2b1c8ede658aadb6925de73541689.js create mode 100644 doc/html/structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts_8_8_8_01_493f0366db194c680358b180935dbfb7b.html create mode 100644 doc/html/structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy__.html create mode 100644 doc/html/structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t00b6012e781e63c677ebb80dc9a18995.html create mode 100644 doc/html/structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t14ff615a4bff6c4c3701df9c38aaa6a5.html create mode 100644 doc/html/structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t14ff615a4bff6c4c3701df9c38aaa6a5.js create mode 100644 doc/html/structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t56243bc35bf73da8271cb88f34751f3a.html create mode 100644 doc/html/structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t56243bc35bf73da8271cb88f34751f3a.js create mode 100644 doc/html/structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t6d1a2f622232e354dad83e3d378deba7.html create mode 100644 doc/html/structutl_1_1meta_1_1typelist-members.html create mode 100644 doc/html/structutl_1_1meta_1_1typelist.html create mode 100644 doc/html/structutl_1_1meta_1_1typelist.js create mode 100644 doc/html/structutl_1_1meta_1_1typelist_1_1cat__.html create mode 100644 doc/html/structutl_1_1meta_1_1typelist_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4-members.html create mode 100644 doc/html/structutl_1_1meta_1_1typelist_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4.html create mode 100644 doc/html/structutl_1_1meta_1_1typelist_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4.js create mode 100644 doc/html/structutl_1_1meta_1_1typelist_1_1times__-members.html create mode 100644 doc/html/structutl_1_1meta_1_1typelist_1_1times__.html create mode 100644 doc/html/structutl_1_1meta_1_1typelist_1_1times__.js create mode 100644 doc/html/structutl_1_1meta_1_1typelist_1_1times___3_010_00_01_t_8_8_8_01_4-members.html create mode 100644 doc/html/structutl_1_1meta_1_1typelist_1_1times___3_010_00_01_t_8_8_8_01_4.html create mode 100644 doc/html/structutl_1_1meta_1_1typelist_1_1times___3_010_00_01_t_8_8_8_01_4.js create mode 100644 doc/html/structutl_1_1meta_1_1typelist_1_1times___3_011_00_01_t_8_8_8_01_4-members.html create mode 100644 doc/html/structutl_1_1meta_1_1typelist_1_1times___3_011_00_01_t_8_8_8_01_4.html create mode 100644 doc/html/structutl_1_1meta_1_1typelist_1_1times___3_011_00_01_t_8_8_8_01_4.js create mode 100644 doc/html/structutl_1_1meta_1_1wrap-members.html create mode 100644 doc/html/structutl_1_1meta_1_1wrap.html create mode 100644 doc/html/structutl_1_1meta_1_1wrap.js create mode 100644 doc/html/structutl_1_1meta_1_1wrap__i-members.html create mode 100644 doc/html/structutl_1_1meta_1_1wrap__i.html create mode 100644 doc/html/structutl_1_1meta_1_1wrap__i.js create mode 100644 doc/html/structutl_1_1out__dev__details_1_1is__out__dev__.html create mode 100644 doc/html/structutl_1_1out__dev__details_1_1is__out__dev__.png create mode 100644 doc/html/structutl_1_1out__dev__details_1_1is__out__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1fbf8d2409fc6de9dd6b9649bedc1b379.html create mode 100644 doc/html/structutl_1_1out__dev__details_1_1is__out__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1fbf8d2409fc6de9dd6b9649bedc1b379.png create mode 100644 doc/html/structutl_1_1outdev__it__details_1_1is__outdev__it__.html create mode 100644 doc/html/structutl_1_1outdev__it__details_1_1is__outdev__it__.png create mode 100644 doc/html/structutl_1_1outdev__it__details_1_1is__outdev__it___3_01___tp_00_01meta_1_1void__t_3_01typename8786ebbbd0dc9ca1b14571e779d99d60.html create mode 100644 doc/html/structutl_1_1outdev__it__details_1_1is__outdev__it___3_01___tp_00_01meta_1_1void__t_3_01typename8786ebbbd0dc9ca1b14571e779d99d60.png create mode 100644 doc/html/structutl_1_1output__iterator__tag.html create mode 100644 doc/html/structutl_1_1random__access__iterator__tag.html create mode 100644 doc/html/structutl_1_1random__access__iterator__tag.png create mode 100644 doc/html/structutl_1_1spi__i__details_1_1is__spi__.html create mode 100644 doc/html/structutl_1_1spi__i__details_1_1is__spi__.png create mode 100644 doc/html/structutl_1_1spi__i__details_1_1is__spi___3_01___tp_00_01meta_1_1void__t_3_01meta_1_1use__if__sa2db29f6d65d34ecf5e49ec30b6600d78.html create mode 100644 doc/html/structutl_1_1spi__i__details_1_1is__spi___3_01___tp_00_01meta_1_1void__t_3_01meta_1_1use__if__sa2db29f6d65d34ecf5e49ec30b6600d78.png create mode 100644 doc/html/structutl_1_1virtual__tag.html create mode 100644 doc/html/sync_off.png create mode 100644 doc/html/sync_on.png create mode 100644 doc/html/tab_a.png create mode 100644 doc/html/tab_b.png create mode 100644 doc/html/tab_h.png create mode 100644 doc/html/tab_s.png create mode 100644 doc/html/tabs.css create mode 100644 doc/html/test__1w__impl_8cpp.html create mode 100644 doc/html/test__1w__impl_8cpp.js create mode 100644 doc/html/test__1w__impl_8cpp_source.html create mode 100644 doc/html/test__i2c__impl_8cpp.html create mode 100644 doc/html/test__i2c__impl_8cpp.js create mode 100644 doc/html/test__i2c__impl_8cpp_source.html create mode 100644 doc/html/test__ostream__dev_8cpp.html create mode 100644 doc/html/test__ostream__dev_8cpp.js create mode 100644 doc/html/test__ostream__dev_8cpp_source.html create mode 100644 doc/html/test__spi__impl_8cpp.html create mode 100644 doc/html/test__spi__impl_8cpp.js create mode 100644 doc/html/test__spi__impl_8cpp_source.html create mode 100644 doc/html/typelist_8h.html create mode 100644 doc/html/typelist_8h.js create mode 100644 doc/html/typelist_8h_source.html create mode 100644 doc/html/types_8h.html create mode 100644 doc/html/types_8h.js create mode 100644 doc/html/types_8h_source.html create mode 100644 doc/html/useif_8h.html create mode 100644 doc/html/useif_8h.js create mode 100644 doc/html/useif_8h_source.html create mode 100644 doc/html/utility_2invoke_8h.html create mode 100644 doc/html/utility_2invoke_8h.js create mode 100644 doc/html/utility_2invoke_8h_source.html create mode 100644 doc/html/version_8h.html create mode 100644 doc/html/version_8h.js create mode 100644 doc/html/version_8h_source.html create mode 100644 doc/latex/Makefile create mode 100644 doc/latex/__1wire_8h.tex create mode 100644 doc/latex/__1wire__id_8h.tex create mode 100644 doc/latex/__1wire__uart_8h.tex create mode 100644 doc/latex/_concepts_2lib_2gtest_2gtest-all_8d.tex create mode 100644 doc/latex/_concepts_2source_2main_8d.tex create mode 100644 doc/latex/_concepts_2source_2tests_2_t_concepts_8d.tex create mode 100644 doc/latex/_concepts_2source_2tests_2_tinvoke_8d.tex create mode 100644 doc/latex/_concepts_2source_2tests_2test__1w__impl_8d.tex create mode 100644 doc/latex/_concepts_2source_2tests_2test__i2c__impl_8d.tex create mode 100644 doc/latex/_concepts_2source_2tests_2test__ostream__dev_8d.tex create mode 100644 doc/latex/_concepts_2source_2tests_2test__spi__impl_8d.tex create mode 100644 doc/latex/_r_e_a_d_m_e_8md.tex create mode 100644 doc/latex/_t_concepts_8cpp.tex create mode 100644 doc/latex/_tinvoke_8cpp.tex create mode 100644 doc/latex/_tmeta_8d.tex create mode 100644 doc/latex/_tmeta_basic_8cpp.tex create mode 100644 doc/latex/_tmeta_basic_8d.tex create mode 100644 doc/latex/_tmeta_detection_8cpp.tex create mode 100644 doc/latex/_tmeta_detection_8d.tex create mode 100644 doc/latex/_tmeta_typelist_8cpp.tex create mode 100644 doc/latex/_tmeta_typelist_8d.tex create mode 100644 doc/latex/_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2concepts_2defines_8h-example.tex create mode 100644 doc/latex/_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2detection_8h-example.tex create mode 100644 doc/latex/_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example.tex create mode 100644 doc/latex/_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example.tex create mode 100644 doc/latex/annotated.tex create mode 100644 doc/latex/array_8h.tex create mode 100644 doc/latex/classtest__1w_1_1_o_w.eps create mode 100644 doc/latex/classtest__1w_1_1_o_w.tex create mode 100644 doc/latex/classtest__1w_1_1_test__1w__impl.eps create mode 100644 doc/latex/classtest__1w_1_1_test__1w__impl.tex create mode 100644 doc/latex/classtest__concepts_1_1_base.eps create mode 100644 doc/latex/classtest__concepts_1_1_base.tex create mode 100644 doc/latex/classtest__concepts_1_1_derived1.eps create mode 100644 doc/latex/classtest__concepts_1_1_derived1.tex create mode 100644 doc/latex/classtest__concepts_1_1_derived2.eps create mode 100644 doc/latex/classtest__concepts_1_1_derived2.tex create mode 100644 doc/latex/classtest__concepts_1_1_have_operator_base.tex create mode 100644 doc/latex/classtest__concepts_1_1_have_perfect_forwarding.tex create mode 100644 doc/latex/classtest__i2c_1_1_i2_c.eps create mode 100644 doc/latex/classtest__i2c_1_1_i2_c.tex create mode 100644 doc/latex/classtest__ostream__dev_1_1_ostream__dev__impl.eps create mode 100644 doc/latex/classtest__ostream__dev_1_1_ostream__dev__impl.tex create mode 100644 doc/latex/classtest__ostream__dev_1_1_ostream__vdev__impl.eps create mode 100644 doc/latex/classtest__ostream__dev_1_1_ostream__vdev__impl.tex create mode 100644 doc/latex/classtest__ostream__dev_1_1_tostream___idev.eps create mode 100644 doc/latex/classtest__ostream__dev_1_1_tostream___idev.tex create mode 100644 doc/latex/classtest__ostream__dev_1_1_tostream___vdev.eps create mode 100644 doc/latex/classtest__ostream__dev_1_1_tostream___vdev.tex create mode 100644 doc/latex/classtest__spi_1_1_s_p_i.eps create mode 100644 doc/latex/classtest__spi_1_1_s_p_i.tex create mode 100644 doc/latex/classtest__spi_1_1_test__spi__impl.eps create mode 100644 doc/latex/classtest__spi_1_1_test__spi__impl.tex create mode 100644 doc/latex/classtesting_1_1_empty_test_event_listener.eps create mode 100644 doc/latex/classtesting_1_1_empty_test_event_listener.tex create mode 100644 doc/latex/classtesting_1_1_environment.tex create mode 100644 doc/latex/classtesting_1_1_message.tex create mode 100644 doc/latex/classtesting_1_1_scoped_trace.tex create mode 100644 doc/latex/classtesting_1_1_test.eps create mode 100644 doc/latex/classtesting_1_1_test.tex create mode 100644 doc/latex/classtesting_1_1_test_event_listener.eps create mode 100644 doc/latex/classtesting_1_1_test_event_listener.tex create mode 100644 doc/latex/classtesting_1_1_test_event_listeners.tex create mode 100644 doc/latex/classtesting_1_1_test_info.tex create mode 100644 doc/latex/classtesting_1_1_test_property.tex create mode 100644 doc/latex/classtesting_1_1_test_result.tex create mode 100644 doc/latex/classtesting_1_1_test_suite.tex create mode 100644 doc/latex/classtesting_1_1_test_with_param.eps create mode 100644 doc/latex/classtesting_1_1_test_with_param.tex create mode 100644 doc/latex/classtesting_1_1_unit_test.tex create mode 100644 doc/latex/classtesting_1_1_with_param_interface.eps create mode 100644 doc/latex/classtesting_1_1_with_param_interface.tex create mode 100644 doc/latex/classtesting_1_1internal2_1_1_type_without_formatter.tex create mode 100644 doc/latex/classtesting_1_1internal2_1_1_type_without_formatter_3_01_t_00_01k_convertible_to_integer_01_4.tex create mode 100644 doc/latex/classtesting_1_1internal2_1_1_type_without_formatter_3_01_t_00_01k_protobuf_01_4.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_assert_helper.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_captured_stream.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator10.eps create mode 100644 doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator10.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator2.eps create mode 100644 doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator2.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator3.eps create mode 100644 doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator3.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator4.eps create mode 100644 doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator4.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator5.eps create mode 100644 doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator5.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator6.eps create mode 100644 doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator6.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator7.eps create mode 100644 doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator7.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator8.eps create mode 100644 doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator8.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator9.eps create mode 100644 doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator9.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_cartesian_product_holder10.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_cartesian_product_holder2.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_cartesian_product_holder3.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_cartesian_product_holder4.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_cartesian_product_holder5.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_cartesian_product_holder6.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_cartesian_product_holder7.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_cartesian_product_holder8.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_cartesian_product_holder9.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_eq_helper.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_eq_helper_3_01true_01_4.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_flat_tuple.eps create mode 100644 doc/latex/classtesting_1_1internal_1_1_flat_tuple.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_floating_point.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_format_for_comparison.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_format_for_comparison_3_01_to_print[_n]_00_01_other_operand_01_4.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_g_test_log.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_g_test_mutex_lock.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_ignored_value.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_implicitly_convertible.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_mutex.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_native_array.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_param_generator.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_param_generator_interface.eps create mode 100644 doc/latex/classtesting_1_1internal_1_1_param_generator_interface.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_param_iterator.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_param_iterator_interface.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_parameterized_test_factory.eps create mode 100644 doc/latex/classtesting_1_1internal_1_1_parameterized_test_factory.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_parameterized_test_suite_info.eps create mode 100644 doc/latex/classtesting_1_1internal_1_1_parameterized_test_suite_info.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_parameterized_test_suite_info_base.eps create mode 100644 doc/latex/classtesting_1_1internal_1_1_parameterized_test_suite_info_base.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_parameterized_test_suite_registry.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_r_e.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_random.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_range_generator.eps create mode 100644 doc/latex/classtesting_1_1internal_1_1_range_generator.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_test_factory_base.eps create mode 100644 doc/latex/classtesting_1_1internal_1_1_test_factory_base.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_test_factory_impl.eps create mode 100644 doc/latex/classtesting_1_1internal_1_1_test_factory_impl.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_test_meta_factory.eps create mode 100644 doc/latex/classtesting_1_1internal_1_1_test_meta_factory.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_test_meta_factory_base.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_thread_local.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_type_id_helper.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_type_with_size.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_type_with_size_3_014_01_4.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_type_with_size_3_018_01_4.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_universal_printer.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_universal_printer_3_01_t[_n]_4.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_universal_printer_3_01_t_01_6_01_4.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_universal_terse_printer.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_universal_terse_printer_3_01_t[_n]_4.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_universal_terse_printer_3_01_t_01_6_01_4.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_universal_terse_printer_3_01char_01_5_01_4.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_universal_terse_printer_3_01const_01char_01_5_01_4.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_universal_terse_printer_3_01const_01wchar__t_01_5_01_4.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_universal_terse_printer_3_01wchar__t_01_5_01_4.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_value_array.tex create mode 100644 doc/latex/classtesting_1_1internal_1_1_values_in_iterator_range_generator.eps create mode 100644 doc/latex/classtesting_1_1internal_1_1_values_in_iterator_range_generator.tex create mode 100644 doc/latex/classutl_1_1__1wire__i.tex create mode 100644 doc/latex/classutl_1_1__1wire__i_3_01virtual__tag_01_4.eps create mode 100644 doc/latex/classutl_1_1__1wire__i_3_01virtual__tag_01_4.tex create mode 100644 doc/latex/classutl_1_1__1wire__id__t.eps create mode 100644 doc/latex/classutl_1_1__1wire__id__t.tex create mode 100644 doc/latex/classutl_1_1__1wire__uart__i.eps create mode 100644 doc/latex/classutl_1_1__1wire__uart__i.tex create mode 100644 doc/latex/classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.eps create mode 100644 doc/latex/classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.tex create mode 100644 doc/latex/classutl_1_1i2c__bb__i.eps create mode 100644 doc/latex/classutl_1_1i2c__bb__i.tex create mode 100644 doc/latex/classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.eps create mode 100644 doc/latex/classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.tex create mode 100644 doc/latex/classutl_1_1i2c__i.eps create mode 100644 doc/latex/classutl_1_1i2c__i.tex create mode 100644 doc/latex/classutl_1_1i2c__i_3_01virtual__tag_01_4.eps create mode 100644 doc/latex/classutl_1_1i2c__i_3_01virtual__tag_01_4.tex create mode 100644 doc/latex/classutl_1_1idx__dev.tex create mode 100644 doc/latex/classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.tex create mode 100644 doc/latex/classutl_1_1in__dev.tex create mode 100644 doc/latex/classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.tex create mode 100644 doc/latex/classutl_1_1inbuf__dev.tex create mode 100644 doc/latex/classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.tex create mode 100644 doc/latex/classutl_1_1indev__it.tex create mode 100644 doc/latex/classutl_1_1iodev__it.tex create mode 100644 doc/latex/classutl_1_1istreamdev__it.tex create mode 100644 doc/latex/classutl_1_1ostream__dev.tex create mode 100644 doc/latex/classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.tex create mode 100644 doc/latex/classutl_1_1ostreamdev__it.tex create mode 100644 doc/latex/classutl_1_1out__dev.tex create mode 100644 doc/latex/classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.tex create mode 100644 doc/latex/classutl_1_1outdev__it.tex create mode 100644 doc/latex/classutl_1_1spi__bb__i.eps create mode 100644 doc/latex/classutl_1_1spi__bb__i.tex create mode 100644 doc/latex/classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.eps create mode 100644 doc/latex/classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.tex create mode 100644 doc/latex/classutl_1_1spi__i.eps create mode 100644 doc/latex/classutl_1_1spi__i.tex create mode 100644 doc/latex/classutl_1_1spi__i_3_01virtual__tag_01_4.eps create mode 100644 doc/latex/classutl_1_1spi__i_3_01virtual__tag_01_4.tex create mode 100644 doc/latex/concepts_8h.tex create mode 100644 doc/latex/crtp_8h.tex create mode 100644 doc/latex/defines_8h.tex create mode 100644 doc/latex/detection_8h.tex create mode 100644 doc/latex/dev__iterators_8h.tex create mode 100644 doc/latex/dir_13e138d54eb8818da29c3992edef070a.tex create mode 100644 doc/latex/dir_1de759a74730efb26e16b92a33818a86.tex create mode 100644 doc/latex/dir_24134ffae0315e39a5b4fb4f5ac472ee.tex create mode 100644 doc/latex/dir_2b272fa693f0990de7cf333b4d9023f8.tex create mode 100644 doc/latex/dir_4b85ac8f363cc57fa06fe00d732b3ef4.tex create mode 100644 doc/latex/dir_5aedf2f82d2f4f13addc24fda7ca3c64.tex create mode 100644 doc/latex/dir_5f9a51ed898ae26d530fbf5192dc35b6.tex create mode 100644 doc/latex/dir_82754f54d9380477ef02477185c1f103.tex create mode 100644 doc/latex/dir_8411d781812971a63652b25f8ca24477.tex create mode 100644 doc/latex/dir_8e256609955cbc0738929bb20e4749b4.tex create mode 100644 doc/latex/dir_9613c8d8aa19c2ea309ba544861172c5.tex create mode 100644 doc/latex/dir_a96de09a69cea6234edc1a1514d133f0.tex create mode 100644 doc/latex/dir_aaec33bad2bb7a5d6c86281ead709be5.tex create mode 100644 doc/latex/dir_ab041ef57e3839706d1cbf08a477bd80.tex create mode 100644 doc/latex/dir_b27f91983daa7c88d19acbf32a947465.tex create mode 100644 doc/latex/dir_b2ad3c1a6521a4924fa9194d98c323e2.tex create mode 100644 doc/latex/dir_c2811dd2f770757e67563302be4130d6.tex create mode 100644 doc/latex/dir_c6a55aeb35dd92d90cdd3b5869981960.tex create mode 100644 doc/latex/dir_cd2b5ca7f5fdf6a80655358f064ed410.tex create mode 100644 doc/latex/dir_d44c64559bbebec7f509842c48db8b23.tex create mode 100644 doc/latex/dir_d84abbe486a7f5f39e3c9088ffc1760a.tex create mode 100644 doc/latex/dir_e9da18de27e34a68f4aee9f9a960d991.tex create mode 100644 doc/latex/dir_ec678fe2ad4670066af397af03cd2f43.tex create mode 100644 doc/latex/dir_ffc5af52851d01e73a12da661e220384.tex create mode 100644 doc/latex/doxygen.sty create mode 100644 doc/latex/examples.tex create mode 100644 doc/latex/files.tex create mode 100644 doc/latex/group__concepts.tex create mode 100644 doc/latex/group__crtp.tex create mode 100644 doc/latex/group__detection.tex create mode 100644 doc/latex/group__integral.tex create mode 100644 doc/latex/group__invoke.tex create mode 100644 doc/latex/group__iterators.tex create mode 100644 doc/latex/group__logic.tex create mode 100644 doc/latex/group__sfinae.tex create mode 100644 doc/latex/group__type.tex create mode 100644 doc/latex/group__typelist.tex create mode 100644 doc/latex/group__version.tex create mode 100644 doc/latex/gtest-all_8cc.tex create mode 100644 doc/latex/gtest_8h.tex create mode 100644 doc/latex/hierarchy.tex create mode 100644 doc/latex/i2c_8h.tex create mode 100644 doc/latex/i2c__bb_8h.tex create mode 100644 doc/latex/id_8h.tex create mode 100644 doc/latex/idx__dev_8h.tex create mode 100644 doc/latex/impl_8h.tex create mode 100644 doc/latex/in__dev_8h.tex create mode 100644 doc/latex/inbuf__dev_8h.tex create mode 100644 doc/latex/integral_8h.tex create mode 100644 doc/latex/iterators_8h.tex create mode 100644 doc/latex/lib_2gtest_2gtest-all_8d.tex create mode 100644 doc/latex/main_8cpp.tex create mode 100644 doc/latex/make.bat create mode 100644 doc/latex/md__r_e_a_d_m_e.tex create mode 100644 doc/latex/meta_2invoke_8h.tex create mode 100644 doc/latex/meta_8h.tex create mode 100644 doc/latex/modules.tex create mode 100644 doc/latex/namespace_tmeta_basic.tex create mode 100644 doc/latex/namespace_tmeta_detection.tex create mode 100644 doc/latex/namespace_tmeta_typelist.tex create mode 100644 doc/latex/namespaceproto2.tex create mode 100644 doc/latex/namespaces.tex create mode 100644 doc/latex/namespacetest__1w.tex create mode 100644 doc/latex/namespacetest__concepts.tex create mode 100644 doc/latex/namespacetest__i2c.tex create mode 100644 doc/latex/namespacetest__meta.tex create mode 100644 doc/latex/namespacetest__ostream__dev.tex create mode 100644 doc/latex/namespacetest__spi.tex create mode 100644 doc/latex/namespacetesting.tex create mode 100644 doc/latex/namespacetesting_1_1internal.tex create mode 100644 doc/latex/namespacetesting_1_1internal2.tex create mode 100644 doc/latex/namespacetesting_1_1internal_1_1edit__distance.tex create mode 100644 doc/latex/namespacetesting_1_1internal_1_1posix.tex create mode 100644 doc/latex/namespacetesting__internal.tex create mode 100644 doc/latex/namespaceutl.tex create mode 100644 doc/latex/namespaceutl_1_1__1wire__i__det.tex create mode 100644 doc/latex/namespaceutl_1_1common__impl.tex create mode 100644 doc/latex/namespaceutl_1_1detail.tex create mode 100644 doc/latex/namespaceutl_1_1details.tex create mode 100644 doc/latex/namespaceutl_1_1i2c__i__details.tex create mode 100644 doc/latex/namespaceutl_1_1idx__dev__details.tex create mode 100644 doc/latex/namespaceutl_1_1idxdev__it__details.tex create mode 100644 doc/latex/namespaceutl_1_1in__dev__details.tex create mode 100644 doc/latex/namespaceutl_1_1inbuf__dev__details.tex create mode 100644 doc/latex/namespaceutl_1_1indev__it__details.tex create mode 100644 doc/latex/namespaceutl_1_1meta.tex create mode 100644 doc/latex/namespaceutl_1_1meta_1_1apply__impl.tex create mode 100644 doc/latex/namespaceutl_1_1meta_1_1at__impl.tex create mode 100644 doc/latex/namespaceutl_1_1meta_1_1back__impl.tex create mode 100644 doc/latex/namespaceutl_1_1meta_1_1cat__impl.tex create mode 100644 doc/latex/namespaceutl_1_1meta_1_1count__if__impl.tex create mode 100644 doc/latex/namespaceutl_1_1meta_1_1detail.tex create mode 100644 doc/latex/namespaceutl_1_1meta_1_1filter__impl.tex create mode 100644 doc/latex/namespaceutl_1_1meta_1_1find__if__impl.tex create mode 100644 doc/latex/namespaceutl_1_1meta_1_1fold__impl.tex create mode 100644 doc/latex/namespaceutl_1_1meta_1_1front__impl.tex create mode 100644 doc/latex/namespaceutl_1_1meta_1_1pop__back__impl.tex create mode 100644 doc/latex/namespaceutl_1_1meta_1_1pop__front__impl.tex create mode 100644 doc/latex/namespaceutl_1_1meta_1_1replace__if__impl.tex create mode 100644 doc/latex/namespaceutl_1_1meta_1_1rev__fold__impl.tex create mode 100644 doc/latex/namespaceutl_1_1meta_1_1reverse__impl.tex create mode 100644 doc/latex/namespaceutl_1_1meta_1_1seek__if__impl.tex create mode 100644 doc/latex/namespaceutl_1_1meta_1_1transform__impl.tex create mode 100644 doc/latex/namespaceutl_1_1meta_1_1transform__lazy__impl.tex create mode 100644 doc/latex/namespaceutl_1_1out__dev__details.tex create mode 100644 doc/latex/namespaceutl_1_1outdev__it__details.tex create mode 100644 doc/latex/namespaceutl_1_1spi.tex create mode 100644 doc/latex/namespaceutl_1_1spi__i__details.tex create mode 100644 doc/latex/operations_8h.tex create mode 100644 doc/latex/ostream__dev_8h.tex create mode 100644 doc/latex/out__dev_8h.tex create mode 100644 doc/latex/refman.tex create mode 100644 doc/latex/selection_8h.tex create mode 100644 doc/latex/sfinae_8h.tex create mode 100644 doc/latex/source_2main_8d.tex create mode 100644 doc/latex/source_2tests_2_t_concepts_8d.tex create mode 100644 doc/latex/source_2tests_2_tinvoke_8d.tex create mode 100644 doc/latex/source_2tests_2test__1w__impl_8d.tex create mode 100644 doc/latex/source_2tests_2test__i2c__impl_8d.tex create mode 100644 doc/latex/source_2tests_2test__ostream__dev_8d.tex create mode 100644 doc/latex/source_2tests_2test__spi__impl_8d.tex create mode 100644 doc/latex/spi_8h.tex create mode 100644 doc/latex/spi__bb_8h.tex create mode 100644 doc/latex/stl_8h.tex create mode 100644 doc/latex/struct_tmeta_basic_1_1_identity.tex create mode 100644 doc/latex/struct_tmeta_detection_1_1_a.tex create mode 100644 doc/latex/struct_tmeta_detection_1_1_bar.tex create mode 100644 doc/latex/struct_tmeta_detection_1_1_foo.tex create mode 100644 doc/latex/struct_tmeta_detection_1_1m_fun.tex create mode 100644 doc/latex/struct_tmeta_typelist_1_1_f.tex create mode 100644 doc/latex/struct_tmeta_typelist_1_1_identity.tex create mode 100644 doc/latex/struct_tmeta_typelist_1_1_mfun_bin.tex create mode 100644 doc/latex/struct_tmeta_typelist_1_1_mfun_bin__i.tex create mode 100644 doc/latex/struct_tmeta_typelist_1_1_mfun_un1.tex create mode 100644 doc/latex/struct_tmeta_typelist_1_1_mfun_un2.tex create mode 100644 doc/latex/struct_tmeta_typelist_1_1_pred__is_int.tex create mode 100644 doc/latex/struct_tmeta_typelist_1_1_pred__is_void.tex create mode 100644 doc/latex/structtest__concepts_1_1_a.tex create mode 100644 doc/latex/structtest__concepts_1_1_b.tex create mode 100644 doc/latex/structtest__concepts_1_1_empty.tex create mode 100644 doc/latex/structtest__concepts_1_1_have_copy_and_move.tex create mode 100644 doc/latex/structtest__concepts_1_1_have_only_copy.tex create mode 100644 doc/latex/structtest__concepts_1_1_have_only_move.tex create mode 100644 doc/latex/structtest__concepts_1_1_incr.tex create mode 100644 doc/latex/structtest__concepts_1_1_inv.tex create mode 100644 doc/latex/structtest__concepts_1_1_pred.tex create mode 100644 doc/latex/structtest__meta_1_1_ibar.tex create mode 100644 doc/latex/structtest__meta_1_1_ifoo.tex create mode 100644 doc/latex/structtesting_1_1_print_to_string_param_name.tex create mode 100644 doc/latex/structtesting_1_1_test_param_info.tex create mode 100644 doc/latex/structtesting_1_1internal_1_1_add_reference.tex create mode 100644 doc/latex/structtesting_1_1internal_1_1_add_reference_3_01_t_01_6_01_4.tex create mode 100644 doc/latex/structtesting_1_1internal_1_1_code_location.tex create mode 100644 doc/latex/structtesting_1_1internal_1_1_compile_assert_types_equal.tex create mode 100644 doc/latex/structtesting_1_1internal_1_1_compile_assert_types_equal_3_01_t_00_01_t_01_4.tex create mode 100644 doc/latex/structtesting_1_1internal_1_1_const_char_ptr.tex create mode 100644 doc/latex/structtesting_1_1internal_1_1_const_ref.tex create mode 100644 doc/latex/structtesting_1_1internal_1_1_const_ref_3_01_t_01_6_01_4.tex create mode 100644 doc/latex/structtesting_1_1internal_1_1_double_sequence.tex create mode 100644 doc/latex/structtesting_1_1internal_1_1_double_sequence_3_01false_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4.tex create mode 100644 doc/latex/structtesting_1_1internal_1_1_double_sequence_3_01true_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4.tex create mode 100644 doc/latex/structtesting_1_1internal_1_1_elem_from_list.tex create mode 100644 doc/latex/structtesting_1_1internal_1_1_elem_from_list_3_01_n_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01_t_8_8_8_01_4.eps create mode 100644 doc/latex/structtesting_1_1internal_1_1_elem_from_list_3_01_n_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01_t_8_8_8_01_4.tex create mode 100644 doc/latex/structtesting_1_1internal_1_1_elem_from_list_impl.tex create mode 100644 doc/latex/structtesting_1_1internal_1_1_elem_from_list_impl_3_01_t_00_01_i_00_01_i_01_4.tex create mode 100644 doc/latex/structtesting_1_1internal_1_1_enable_if.tex create mode 100644 doc/latex/structtesting_1_1internal_1_1_enable_if_3_01true_01_4.tex create mode 100644 doc/latex/structtesting_1_1internal_1_1_flat_tuple_base.tex create mode 100644 doc/latex/structtesting_1_1internal_1_1_flat_tuple_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_index_sequence_3_01_idx_8_8_8_01_4_01_4.eps create mode 100644 doc/latex/structtesting_1_1internal_1_1_flat_tuple_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_index_sequence_3_01_idx_8_8_8_01_4_01_4.tex create mode 100644 doc/latex/structtesting_1_1internal_1_1_flat_tuple_elem_base.tex create mode 100644 doc/latex/structtesting_1_1internal_1_1_flat_tuple_elem_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_i_01_4.tex create mode 100644 doc/latex/structtesting_1_1internal_1_1_index_sequence.tex create mode 100644 doc/latex/structtesting_1_1internal_1_1_is_a_protocol_message.eps create mode 100644 doc/latex/structtesting_1_1internal_1_1_is_a_protocol_message.tex create mode 100644 doc/latex/structtesting_1_1internal_1_1_is_hash_table.tex create mode 100644 doc/latex/structtesting_1_1internal_1_1_is_recursive_container.eps create mode 100644 doc/latex/structtesting_1_1internal_1_1_is_recursive_container.tex create mode 100644 doc/latex/structtesting_1_1internal_1_1_is_recursive_container_impl.tex create mode 100644 doc/latex/structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01false_01_4.eps create mode 100644 doc/latex/structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01false_01_4.tex create mode 100644 doc/latex/structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01true_01_4.tex create mode 100644 doc/latex/structtesting_1_1internal_1_1_is_same.tex create mode 100644 doc/latex/structtesting_1_1internal_1_1_is_same_3_01_t_00_01_t_01_4.tex create mode 100644 doc/latex/structtesting_1_1internal_1_1_iterator_traits.tex create mode 100644 doc/latex/structtesting_1_1internal_1_1_iterator_traits_3_01_t_01_5_01_4.tex create mode 100644 doc/latex/structtesting_1_1internal_1_1_iterator_traits_3_01const_01_t_01_5_01_4.tex create mode 100644 doc/latex/structtesting_1_1internal_1_1_make_index_sequence.eps create mode 100644 doc/latex/structtesting_1_1internal_1_1_make_index_sequence.tex create mode 100644 doc/latex/structtesting_1_1internal_1_1_make_index_sequence_3_010_01_4.eps create mode 100644 doc/latex/structtesting_1_1internal_1_1_make_index_sequence_3_010_01_4.tex create mode 100644 doc/latex/structtesting_1_1internal_1_1_param_name_gen_func.tex create mode 100644 doc/latex/structtesting_1_1internal_1_1_relation_to_source_copy.tex create mode 100644 doc/latex/structtesting_1_1internal_1_1_relation_to_source_reference.tex create mode 100644 doc/latex/structtesting_1_1internal_1_1_remove_const.tex create mode 100644 doc/latex/structtesting_1_1internal_1_1_remove_const_3_01const_01_t[_n]_4.tex create mode 100644 doc/latex/structtesting_1_1internal_1_1_remove_const_3_01const_01_t_01_4.tex create mode 100644 doc/latex/structtesting_1_1internal_1_1_remove_reference.tex create mode 100644 doc/latex/structtesting_1_1internal_1_1_remove_reference_3_01_t_01_6_01_4.tex create mode 100644 doc/latex/structtesting_1_1internal_1_1_static_assert_type_eq_helper.tex create mode 100644 doc/latex/structtesting_1_1internal_1_1_static_assert_type_eq_helper_3_01_t_00_01_t_01_4.tex create mode 100644 doc/latex/structtesting_1_1internal_1_1_suite_api_resolver.eps create mode 100644 doc/latex/structtesting_1_1internal_1_1_suite_api_resolver.tex create mode 100644 doc/latex/structtesting_1_1internal_1_1_wrap_printer_type.tex create mode 100644 doc/latex/structtesting_1_1internal_1_1bool__constant.eps create mode 100644 doc/latex/structtesting_1_1internal_1_1bool__constant.tex create mode 100644 doc/latex/structtesting_1_1internal_1_1faketype.tex create mode 100644 doc/latex/structtesting_1_1internal_1_1is__same.eps create mode 100644 doc/latex/structtesting_1_1internal_1_1is__same.tex create mode 100644 doc/latex/structtesting_1_1internal_1_1is__same_3_01_t_00_01_t_01_4.eps create mode 100644 doc/latex/structtesting_1_1internal_1_1is__same_3_01_t_00_01_t_01_4.tex create mode 100644 doc/latex/structutl_1_1__1wire__i__det_1_1is__1wire__.eps create mode 100644 doc/latex/structutl_1_1__1wire__i__det_1_1is__1wire__.tex create mode 100644 doc/latex/structutl_1_1__1wire__i__det_1_1is__1wire___3_01___tp_00_01meta_1_1void__t_3_01void_01_4_01_4.eps create mode 100644 doc/latex/structutl_1_1__1wire__i__det_1_1is__1wire___3_01___tp_00_01meta_1_1void__t_3_01void_01_4_01_4.tex create mode 100644 doc/latex/structutl_1_1array.tex create mode 100644 doc/latex/structutl_1_1array__traits.tex create mode 100644 doc/latex/structutl_1_1array__traits_3_01___tp_00_010_01_4.tex create mode 100644 doc/latex/structutl_1_1array__traits_3_01___tp_00_010_01_4_1_1type.tex create mode 100644 doc/latex/structutl_1_1bidirectional__iterator__tag.eps create mode 100644 doc/latex/structutl_1_1bidirectional__iterator__tag.tex create mode 100644 doc/latex/structutl_1_1common__impl_1_1____common__ref__.tex create mode 100644 doc/latex/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_00_01meta_1_1void__t_3_05e5aa384829bb34312a7b8ee4ecaa00f.tex create mode 100644 doc/latex/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_6_00_01meta_1_1void__t_329fba5aeac3b93aa9cfa5aa7e282e196.tex create mode 100644 doc/latex/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_00_01meta_1_1void__t_3972a8d6e6799b6ee6537c969cdced343.tex create mode 100644 doc/latex/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_6_00_01meta_1_1void__tc4e71c227f251cadf0e0fb7b1ba6f1e9.tex create mode 100644 doc/latex/structutl_1_1common__impl_1_1____common__reference.eps create mode 100644 doc/latex/structutl_1_1common__impl_1_1____common__reference.tex create mode 100644 doc/latex/structutl_1_1common__impl_1_1____common__reference2.eps create mode 100644 doc/latex/structutl_1_1common__impl_1_1____common__reference2.tex create mode 100644 doc/latex/structutl_1_1common__impl_1_1____common__reference2_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____785d0aa2f8a62416e19573fcbdd83836.tex create mode 100644 doc/latex/structutl_1_1common__impl_1_1____common__reference3.eps create mode 100644 doc/latex/structutl_1_1common__impl_1_1____common__reference3.tex create mode 100644 doc/latex/structutl_1_1common__impl_1_1____common__reference3_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____015b01ed12d2d90ee57fbf756ab847e9.tex create mode 100644 doc/latex/structutl_1_1common__impl_1_1____common__reference_3_01_t_00_01_u_00_01meta_1_1when_3_01std_1_1i23b95b4b3a65ce598dbcc7f52e9dab2c.tex create mode 100644 doc/latex/structutl_1_1common__impl_1_1____copy__cv__.tex create mode 100644 doc/latex/structutl_1_1common__impl_1_1____copy__cv___3_01const_01_from_01_4.tex create mode 100644 doc/latex/structutl_1_1common__impl_1_1____copy__cv___3_01const_01volatile_01_from_01_4.tex create mode 100644 doc/latex/structutl_1_1common__impl_1_1____copy__cv___3_01volatile_01_from_01_4.tex create mode 100644 doc/latex/structutl_1_1common__impl_1_1____xref.tex create mode 100644 doc/latex/structutl_1_1common__impl_1_1____xref_3_01_t_01_6_01_4.tex create mode 100644 doc/latex/structutl_1_1common__impl_1_1____xref_3_01_t_01_6_6_01_4.tex create mode 100644 doc/latex/structutl_1_1common__impl_1_1____xref_3_01const_01_t_01_4.tex create mode 100644 doc/latex/structutl_1_1common__impl_1_1____xref_3_01const_01volatile_01_t_01_4.tex create mode 100644 doc/latex/structutl_1_1common__impl_1_1____xref_3_01volatile_01_t_01_4.tex create mode 100644 doc/latex/structutl_1_1common__impl_1_1basic__common__reference.tex create mode 100644 doc/latex/structutl_1_1common__impl_1_1common__reference.tex create mode 100644 doc/latex/structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_00_01_v_00_01_w_8_8_8_01_4.eps create mode 100644 doc/latex/structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_00_01_v_00_01_w_8_8_8_01_4.tex create mode 100644 doc/latex/structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_01_4.eps create mode 100644 doc/latex/structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_01_4.tex create mode 100644 doc/latex/structutl_1_1common__impl_1_1common__reference_3_01_t_01_4.tex create mode 100644 doc/latex/structutl_1_1contiguous__iterator__tag.eps create mode 100644 doc/latex/structutl_1_1contiguous__iterator__tag.tex create mode 100644 doc/latex/structutl_1_1crtp__tag.tex create mode 100644 doc/latex/structutl_1_1detail_1_1invoke__result__.tex create mode 100644 doc/latex/structutl_1_1detail_1_1invoke__result___3_01true_00_01___callable_00_01___args_8_8_8_01_4.tex create mode 100644 doc/latex/structutl_1_1detail_1_1is__ref__wrapper.eps create mode 100644 doc/latex/structutl_1_1detail_1_1is__ref__wrapper.tex create mode 100644 doc/latex/structutl_1_1detail_1_1is__ref__wrapper_3_01std_1_1reference__wrapper_3_01_u_01_4_01_4.eps create mode 100644 doc/latex/structutl_1_1detail_1_1is__ref__wrapper_3_01std_1_1reference__wrapper_3_01_u_01_4_01_4.tex create mode 100644 doc/latex/structutl_1_1detail_1_1try__invoke.tex create mode 100644 doc/latex/structutl_1_1details_1_1is__boolean__.tex create mode 100644 doc/latex/structutl_1_1details_1_1is__boolean___3_01_b_00_01meta_1_1void__t_3_01meta_1_1use__if__same__t_37e77ed45a431955fc15b4c1210ad8491.tex create mode 100644 doc/latex/structutl_1_1details_1_1is__strict__totally__ordered__.tex create mode 100644 doc/latex/structutl_1_1details_1_1is__strict__totally__ordered___3_01_t_00_01meta_1_1void__t_3_01meta_1_1uab48bcfc89164f446368b35bcc7c8bcd.tex create mode 100644 doc/latex/structutl_1_1details_1_1is__strict__totally__ordered__with__.tex create mode 100644 doc/latex/structutl_1_1details_1_1is__strict__totally__ordered__with___3_01_t_00_01_u_00_01meta_1_1void__t8fb7dd5a6ad25952241e37c6f163f434.tex create mode 100644 doc/latex/structutl_1_1details_1_1is__weakly__equality__comparable__with__.tex create mode 100644 doc/latex/structutl_1_1details_1_1is__weakly__equality__comparable__with___3_01_t_00_01_u_00_01meta_1_1voi4404f901930622694666ca68fb75381b.tex create mode 100644 doc/latex/structutl_1_1dev__iterator__traits.tex create mode 100644 doc/latex/structutl_1_1forward__iterator__tag.eps create mode 100644 doc/latex/structutl_1_1forward__iterator__tag.tex create mode 100644 doc/latex/structutl_1_1i2c__i__details_1_1is__i2c__.eps create mode 100644 doc/latex/structutl_1_1i2c__i__details_1_1is__i2c__.tex create mode 100644 doc/latex/structutl_1_1i2c__i__details_1_1is__i2c___3_01___tp_00_01meta_1_1void__t_3_01typename_01___tp_1_1_sequence_00_01void_01_4_01_4.eps create mode 100644 doc/latex/structutl_1_1i2c__i__details_1_1is__i2c___3_01___tp_00_01meta_1_1void__t_3_01typename_01___tp_1_1_sequence_00_01void_01_4_01_4.tex create mode 100644 doc/latex/structutl_1_1id__t.tex create mode 100644 doc/latex/structutl_1_1id__traits.tex create mode 100644 doc/latex/structutl_1_1id__traits_3_01___tp_00_010_01_4.tex create mode 100644 doc/latex/structutl_1_1id__traits_3_01___tp_00_010_01_4_1_1type.tex create mode 100644 doc/latex/structutl_1_1idx__dev__details_1_1is__idx__dev__.eps create mode 100644 doc/latex/structutl_1_1idx__dev__details_1_1is__idx__dev__.tex create mode 100644 doc/latex/structutl_1_1idx__dev__details_1_1is__idx__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1ae8b6b24c31c81bdd901da6e6387d84b.eps create mode 100644 doc/latex/structutl_1_1idx__dev__details_1_1is__idx__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1ae8b6b24c31c81bdd901da6e6387d84b.tex create mode 100644 doc/latex/structutl_1_1idxdev__it__details_1_1is__idxdev__it__.eps create mode 100644 doc/latex/structutl_1_1idxdev__it__details_1_1is__idxdev__it__.tex create mode 100644 doc/latex/structutl_1_1idxdev__it__details_1_1is__idxdev__it___3_01___tp_00_01meta_1_1void__t_3_01typenamebd9ada52ca7b7570c26d0c280af5e635.eps create mode 100644 doc/latex/structutl_1_1idxdev__it__details_1_1is__idxdev__it___3_01___tp_00_01meta_1_1void__t_3_01typenamebd9ada52ca7b7570c26d0c280af5e635.tex create mode 100644 doc/latex/structutl_1_1in__dev__details_1_1is__in__dev__.eps create mode 100644 doc/latex/structutl_1_1in__dev__details_1_1is__in__dev__.tex create mode 100644 doc/latex/structutl_1_1in__dev__details_1_1is__in__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1dad922a62deb7c32e2cff18d66b8c887d2.eps create mode 100644 doc/latex/structutl_1_1in__dev__details_1_1is__in__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1dad922a62deb7c32e2cff18d66b8c887d2.tex create mode 100644 doc/latex/structutl_1_1inbuf__dev__details_1_1is__inbuf__dev__.eps create mode 100644 doc/latex/structutl_1_1inbuf__dev__details_1_1is__inbuf__dev__.tex create mode 100644 doc/latex/structutl_1_1inbuf__dev__details_1_1is__inbuf__dev___3_01___tp_00_01void__t_3_01typename_01___tpc269ee3885240cc8c352f3c6b3a67cd7.eps create mode 100644 doc/latex/structutl_1_1inbuf__dev__details_1_1is__inbuf__dev___3_01___tp_00_01void__t_3_01typename_01___tpc269ee3885240cc8c352f3c6b3a67cd7.tex create mode 100644 doc/latex/structutl_1_1indev__it__details_1_1is__indev__it__.eps create mode 100644 doc/latex/structutl_1_1indev__it__details_1_1is__indev__it__.tex create mode 100644 doc/latex/structutl_1_1indev__it__details_1_1is__indev__it___3_01___tp_00_01meta_1_1void__t_3_01typename_06508604dcee4010234c84cc332fa196b.eps create mode 100644 doc/latex/structutl_1_1indev__it__details_1_1is__indev__it___3_01___tp_00_01meta_1_1void__t_3_01typename_06508604dcee4010234c84cc332fa196b.tex create mode 100644 doc/latex/structutl_1_1input__iterator__tag.eps create mode 100644 doc/latex/structutl_1_1input__iterator__tag.tex create mode 100644 doc/latex/structutl_1_1is__invocable.eps create mode 100644 doc/latex/structutl_1_1is__invocable.tex create mode 100644 doc/latex/structutl_1_1is__invocable__r.eps create mode 100644 doc/latex/structutl_1_1is__invocable__r.tex create mode 100644 doc/latex/structutl_1_1meta_1_1apply__impl_1_1apply__.tex create mode 100644 doc/latex/structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01integer__sequence_3_01_t_00_01_is_8_8_8_01_4_01_4.tex create mode 100644 doc/latex/structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01typelist_3_01_list_8_8_8_01_4_01_4.tex create mode 100644 doc/latex/structutl_1_1meta_1_1at__impl_1_1__add__pointer.tex create mode 100644 doc/latex/structutl_1_1meta_1_1at__impl_1_1at__.tex create mode 100644 doc/latex/structutl_1_1meta_1_1at__impl_1_1at___3_01typelist_3_01_list_8_8_8_01_4_00_01_n_01_4.tex create mode 100644 doc/latex/structutl_1_1meta_1_1at__impl_1_1at__head__.tex create mode 100644 doc/latex/structutl_1_1meta_1_1at__impl_1_1at__head___3_01typelist_3_01voids_8_8_8_01_4_01_4.tex create mode 100644 doc/latex/structutl_1_1meta_1_1back__impl_1_1back__.tex create mode 100644 doc/latex/structutl_1_1meta_1_1back__impl_1_1back___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.tex create mode 100644 doc/latex/structutl_1_1meta_1_1bind__back.tex create mode 100644 doc/latex/structutl_1_1meta_1_1bind__front.tex create mode 100644 doc/latex/structutl_1_1meta_1_1cat__impl_1_1cat__.tex create mode 100644 doc/latex/structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_00_01_ln_8_8_8_01_4.eps create mode 100644 doc/latex/structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_00_01_ln_8_8_8_01_4.tex create mode 100644 doc/latex/structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4.tex create mode 100644 doc/latex/structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_01_4.tex create mode 100644 doc/latex/structutl_1_1meta_1_1cat__impl_1_1cat___3_4.tex create mode 100644 doc/latex/structutl_1_1meta_1_1count__if__impl_1_1count__if__.tex create mode 100644 doc/latex/structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.tex create mode 100644 doc/latex/structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.tex create mode 100644 doc/latex/structutl_1_1meta_1_1detail_1_1__and__.tex create mode 100644 doc/latex/structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4.eps create mode 100644 doc/latex/structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4.tex create mode 100644 doc/latex/structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_01_4.eps create mode 100644 doc/latex/structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_01_4.tex create mode 100644 doc/latex/structutl_1_1meta_1_1detail_1_1__and___3_01___t1_01_4.eps create mode 100644 doc/latex/structutl_1_1meta_1_1detail_1_1__and___3_01___t1_01_4.tex create mode 100644 doc/latex/structutl_1_1meta_1_1detail_1_1__and___3_4.eps create mode 100644 doc/latex/structutl_1_1meta_1_1detail_1_1__and___3_4.tex create mode 100644 doc/latex/structutl_1_1meta_1_1detail_1_1__or__.tex create mode 100644 doc/latex/structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4.eps create mode 100644 doc/latex/structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4.tex create mode 100644 doc/latex/structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_01_4.eps create mode 100644 doc/latex/structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_01_4.tex create mode 100644 doc/latex/structutl_1_1meta_1_1detail_1_1__or___3_01___t1_01_4.eps create mode 100644 doc/latex/structutl_1_1meta_1_1detail_1_1__or___3_01___t1_01_4.tex create mode 100644 doc/latex/structutl_1_1meta_1_1detail_1_1__or___3_4.eps create mode 100644 doc/latex/structutl_1_1meta_1_1detail_1_1__or___3_4.tex create mode 100644 doc/latex/structutl_1_1meta_1_1detail_1_1compose__.tex create mode 100644 doc/latex/structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_00_01_fns_8_8_8_01_4.tex create mode 100644 doc/latex/structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_01_4.tex create mode 100644 doc/latex/structutl_1_1meta_1_1detail_1_1compose__f__.tex create mode 100644 doc/latex/structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_00_01_fns_8_8_8_01_4.tex create mode 100644 doc/latex/structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_01_4.tex create mode 100644 doc/latex/structutl_1_1meta_1_1detail_1_1defer__.tex create mode 100644 doc/latex/structutl_1_1meta_1_1detail_1_1defer__i__.tex create mode 100644 doc/latex/structutl_1_1meta_1_1detail_1_1detector.tex create mode 100644 doc/latex/structutl_1_1meta_1_1detail_1_1detector_3_01_default_00_01void__t_3_01_op_3_01_args_8_8_8_01_4_0c35bdbd19f56980c0b5ee6d490bfb634.tex create mode 100644 doc/latex/structutl_1_1meta_1_1detail_1_1if__c__.tex create mode 100644 doc/latex/structutl_1_1meta_1_1detail_1_1if__c___3_01false_00_01_then_00_01_else_01_4.tex create mode 100644 doc/latex/structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_00_01_else_01_4.tex create mode 100644 doc/latex/structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_01_4.tex create mode 100644 doc/latex/structutl_1_1meta_1_1detail_1_1is__applicable__.tex create mode 100644 doc/latex/structutl_1_1meta_1_1detail_1_1is__applicable__i__.tex create mode 100644 doc/latex/structutl_1_1meta_1_1detail_1_1is__applicable__q__.tex create mode 100644 doc/latex/structutl_1_1meta_1_1detail_1_1when__.tex create mode 100644 doc/latex/structutl_1_1meta_1_1detail_1_1when___3_01true_01_4.tex create mode 100644 doc/latex/structutl_1_1meta_1_1filter__impl_1_1filter__.tex create mode 100644 doc/latex/structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_l_01_4.tex create mode 100644 doc/latex/structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_4_00_01_fn_00_01_l_01_4.tex create mode 100644 doc/latex/structutl_1_1meta_1_1find__if__impl_1_1find__if__.tex create mode 100644 doc/latex/structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.tex create mode 100644 doc/latex/structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.tex create mode 100644 doc/latex/structutl_1_1meta_1_1fold__impl_1_1fold__.tex create mode 100644 doc/latex/structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4.tex create mode 100644 doc/latex/structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_4_00_01_v0_00_01_fn_01_4.tex create mode 100644 doc/latex/structutl_1_1meta_1_1front__impl_1_1front__.tex create mode 100644 doc/latex/structutl_1_1meta_1_1front__impl_1_1front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.tex create mode 100644 doc/latex/structutl_1_1meta_1_1identity.tex create mode 100644 doc/latex/structutl_1_1meta_1_1nat__.tex create mode 100644 doc/latex/structutl_1_1meta_1_1nil__.tex create mode 100644 doc/latex/structutl_1_1meta_1_1not__same__as.tex create mode 100644 doc/latex/structutl_1_1meta_1_1not__same__as_1_1apply.eps create mode 100644 doc/latex/structutl_1_1meta_1_1not__same__as_1_1apply.tex create mode 100644 doc/latex/structutl_1_1meta_1_1pop__back__impl_1_1pop__back__.tex create mode 100644 doc/latex/structutl_1_1meta_1_1pop__front__impl_1_1pop__front__.tex create mode 100644 doc/latex/structutl_1_1meta_1_1pop__front__impl_1_1pop__front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.tex create mode 100644 doc/latex/structutl_1_1meta_1_1quote.tex create mode 100644 doc/latex/structutl_1_1meta_1_1quote__i.tex create mode 100644 doc/latex/structutl_1_1meta_1_1replace__if__impl_1_1replace__if__.tex create mode 100644 doc/latex/structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_01_head_00_01_tail_8_8_8_dfa8065a3617f53ecded260506092a07.tex create mode 100644 doc/latex/structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_4_00_01_fn_00_01_t_00_01_ret_01_4.tex create mode 100644 doc/latex/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold__.tex create mode 100644 doc/latex/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4.tex create mode 100644 doc/latex/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_tail_01_4_00_01_v_00_01_fn_01_4.tex create mode 100644 doc/latex/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_4_00_01_v_00_01_fn_01_4.tex create mode 100644 doc/latex/structutl_1_1meta_1_1reverse__impl_1_1reverse__.tex create mode 100644 doc/latex/structutl_1_1meta_1_1same__.eps create mode 100644 doc/latex/structutl_1_1meta_1_1same__.tex create mode 100644 doc/latex/structutl_1_1meta_1_1same___3_01___tp_00_01___tp_01_4.eps create mode 100644 doc/latex/structutl_1_1meta_1_1same___3_01___tp_00_01___tp_01_4.tex create mode 100644 doc/latex/structutl_1_1meta_1_1same__as.tex create mode 100644 doc/latex/structutl_1_1meta_1_1same__as_1_1apply.eps create mode 100644 doc/latex/structutl_1_1meta_1_1same__as_1_1apply.tex create mode 100644 doc/latex/structutl_1_1meta_1_1seek__if__impl_1_1seek__if__.tex create mode 100644 doc/latex/structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.tex create mode 100644 doc/latex/structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.tex create mode 100644 doc/latex/structutl_1_1meta_1_1transform__impl_1_1transform__.tex create mode 100644 doc/latex/structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts0_8_8_8_01_8fba6bf3d0565d17a96950cb517db5f1.tex create mode 100644 doc/latex/structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts_8_8_8_01_40fe2b1c8ede658aadb6925de73541689.tex create mode 100644 doc/latex/structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy__.tex create mode 100644 doc/latex/structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t14ff615a4bff6c4c3701df9c38aaa6a5.tex create mode 100644 doc/latex/structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t56243bc35bf73da8271cb88f34751f3a.tex create mode 100644 doc/latex/structutl_1_1meta_1_1typelist.tex create mode 100644 doc/latex/structutl_1_1meta_1_1wrap.tex create mode 100644 doc/latex/structutl_1_1meta_1_1wrap__i.tex create mode 100644 doc/latex/structutl_1_1out__dev__details_1_1is__out__dev__.eps create mode 100644 doc/latex/structutl_1_1out__dev__details_1_1is__out__dev__.tex create mode 100644 doc/latex/structutl_1_1out__dev__details_1_1is__out__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1fbf8d2409fc6de9dd6b9649bedc1b379.eps create mode 100644 doc/latex/structutl_1_1out__dev__details_1_1is__out__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1fbf8d2409fc6de9dd6b9649bedc1b379.tex create mode 100644 doc/latex/structutl_1_1outdev__it__details_1_1is__outdev__it__.eps create mode 100644 doc/latex/structutl_1_1outdev__it__details_1_1is__outdev__it__.tex create mode 100644 doc/latex/structutl_1_1outdev__it__details_1_1is__outdev__it___3_01___tp_00_01meta_1_1void__t_3_01typename8786ebbbd0dc9ca1b14571e779d99d60.eps create mode 100644 doc/latex/structutl_1_1outdev__it__details_1_1is__outdev__it___3_01___tp_00_01meta_1_1void__t_3_01typename8786ebbbd0dc9ca1b14571e779d99d60.tex create mode 100644 doc/latex/structutl_1_1output__iterator__tag.tex create mode 100644 doc/latex/structutl_1_1random__access__iterator__tag.eps create mode 100644 doc/latex/structutl_1_1random__access__iterator__tag.tex create mode 100644 doc/latex/structutl_1_1spi__i__details_1_1is__spi__.eps create mode 100644 doc/latex/structutl_1_1spi__i__details_1_1is__spi__.tex create mode 100644 doc/latex/structutl_1_1spi__i__details_1_1is__spi___3_01___tp_00_01meta_1_1void__t_3_01meta_1_1use__if__sa2db29f6d65d34ecf5e49ec30b6600d78.eps create mode 100644 doc/latex/structutl_1_1spi__i__details_1_1is__spi___3_01___tp_00_01meta_1_1void__t_3_01meta_1_1use__if__sa2db29f6d65d34ecf5e49ec30b6600d78.tex create mode 100644 doc/latex/structutl_1_1virtual__tag.tex create mode 100644 doc/latex/test__1w__impl_8cpp.tex create mode 100644 doc/latex/test__i2c__impl_8cpp.tex create mode 100644 doc/latex/test__ostream__dev_8cpp.tex create mode 100644 doc/latex/test__spi__impl_8cpp.tex create mode 100644 doc/latex/typelist_8h.tex create mode 100644 doc/latex/types_8h.tex create mode 100644 doc/latex/useif_8h.tex create mode 100644 doc/latex/utility_2invoke_8h.tex create mode 100644 doc/latex/version_8h.tex diff --git a/.gitignore b/.gitignore index 1163a0d..b236af8 100755 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,5 @@ obj/ Debug/ Release/ +# Ignode Doxygen output +doc/ diff --git a/doc/html/__1wire_8h.html b/doc/html/__1wire_8h.html new file mode 100644 index 0000000..e7baa89 --- /dev/null +++ b/doc/html/__1wire_8h.html @@ -0,0 +1,208 @@ + + + + + + + +uTL: include/utl/com/_1wire.h File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
_1wire.h File Reference
+
+
+ +

An 1-wire interface implementation. +More...

+
#include <utl/core/impl.h>
+#include <utl/core/crtp.h>
+#include <utl/com/_1wire_id.h>
+#include <utl/meta/meta.h>
+
+

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Classes

class  utl::_1wire_i< impl_t >
 Template base class for 1-wire communication interface using CRTP. More...
 
class  utl::_1wire_i< virtual_tag >
 A virtual base class implementation. More...
 
struct  utl::_1wire_i_det::is_1wire_< _Tp, typename >
 Primary template to catch any non 1-wire interface types. More...
 
struct  utl::_1wire_i_det::is_1wire_< _Tp, meta::void_t< void > >
 template to catch a proper 1-wire interface type More...
 
+ + + + + + +

+Namespaces

 utl
 STL's core language concepts.
 
 utl::_1wire_i_det
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

template<class _Tp >
using utl::_1wire_i_det::try_reset_t = decltype(declval< _Tp >().reset(declval< typename _Tp::Speed >()))
 
template<class _Tp >
using utl::_1wire_i_det::try_rx1_t = decltype(declval< _Tp >().rx_data(declval< typename _Tp::Speed >()))
 
template<class _Tp >
using utl::_1wire_i_det::try_tx1_t = decltype(declval< _Tp >().tx_data(declval< byte_t >(), declval< typename _Tp::Speed >()))
 
template<class _Tp >
using utl::_1wire_i_det::try_match_t = decltype(declval< _Tp >().match(declval< _1wire_id_t & >(), declval< typename _Tp::Speed >()))
 
template<class _Tp >
using utl::_1wire_i_det::try_match_n_ovdr_t = decltype(declval< _Tp >().match_n_ovdr(declval< _1wire_id_t & >()))
 
template<class _Tp >
using utl::_1wire_i_det::try_skip_t = decltype(declval< _Tp >().skip(declval< typename _Tp::Speed >()))
 
template<class _Tp >
using utl::_1wire_i_det::try_skip_n_ovdr_t = decltype(declval< _Tp >().skip_n_ovdr())
 
template<class _Tp >
using utl::_1wire_i_det::try_first_t = decltype(declval< _Tp >().first(declval< typename _Tp::Speed >()))
 
template<class _Tp >
using utl::_1wire_i_det::try_next_t = decltype(declval< _Tp >().next(declval< typename _Tp::Speed >()))
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename _T >
byte_t utl::_1wire_i_det::_touch (_T &obj, byte_t out, typename _T::Speed s)
 Write a byte to 1-Wire bus and read the response. More...
 
template<typename _T >
void utl::_1wire_i_det::_match (_T &obj, _1wire_id_t &id, typename _T::Speed s)
 
template<typename _T >
void utl::_1wire_i_det::_match_n_ovdr (_T &obj, _1wire_id_t &id)
 
template<typename _T >
void utl::_1wire_i_det::_skip (_T &obj, typename _T::Speed s)
 
template<typename _T >
void utl::_1wire_i_det::_skip_n_ovdr (_T &obj)
 
template<typename _T >
_1wire_id_t utl::_1wire_i_det::_first (_T &obj, typename _T::Speed s, bool alarm)
 'first' operation, to search on the 1-Wire for the first device. This is performed by setting dec_, pos_ and cur_ to zero and then doing the search. More...
 
template<typename _T >
_1wire_id_t utl::_1wire_i_det::_next (_T &obj, typename _T::Speed s, bool alarm)
 'next' operation, to search on the 1-Wire for the next device. This search is usually performed after a 'first' operation or another 'next' operation. Based on maxim-ic application note 187. More...
 
+

Detailed Description

+

An 1-wire interface implementation.

+

Copyright (C) 2018 Christos Choutouridis

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

+

You should have received a copy of the GNU Lesser General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file _1wire.h.

+
+
+ + + + diff --git a/doc/html/__1wire_8h.js b/doc/html/__1wire_8h.js new file mode 100644 index 0000000..2332e11 --- /dev/null +++ b/doc/html/__1wire_8h.js @@ -0,0 +1,23 @@ +var __1wire_8h = +[ + [ "_1wire_i", "classutl_1_1__1wire__i.html", "classutl_1_1__1wire__i" ], + [ "_1wire_i< virtual_tag >", "classutl_1_1__1wire__i_3_01virtual__tag_01_4.html", "classutl_1_1__1wire__i_3_01virtual__tag_01_4" ], + [ "is_1wire_", "structutl_1_1__1wire__i__det_1_1is__1wire__.html", null ], + [ "is_1wire_< _Tp, meta::void_t< void > >", "structutl_1_1__1wire__i__det_1_1is__1wire___3_01___tp_00_01meta_1_1void__t_3_01void_01_4_01_4.html", null ], + [ "try_first_t", "__1wire_8h.html#a3dc7b4df37cebf753556ba527306cf9f", null ], + [ "try_match_n_ovdr_t", "__1wire_8h.html#aa85f59a97c388dc259589cb517824233", null ], + [ "try_match_t", "__1wire_8h.html#a3416ddb06e089a5c191d356dd358ff00", null ], + [ "try_next_t", "__1wire_8h.html#a67a086b8e4e3ee051ccb0351e6456630", null ], + [ "try_reset_t", "__1wire_8h.html#a502fff2c967d26334aa3c2fcf0b037ba", null ], + [ "try_rx1_t", "__1wire_8h.html#a303cf58468da38ceeaa2477570f82948", null ], + [ "try_skip_n_ovdr_t", "__1wire_8h.html#af6c9df3cb6bf2479e8d30a5d36ab71cb", null ], + [ "try_skip_t", "__1wire_8h.html#a9d0825a40484e7868bf41fc4825b4f7d", null ], + [ "try_tx1_t", "__1wire_8h.html#ac6a2b551bcf51b426c2e8506ab2473fe", null ], + [ "_first", "__1wire_8h.html#a237719ffa105f988cb175d6720712a4a", null ], + [ "_match", "__1wire_8h.html#a1b07e623a39ce82f1514846169f3a954", null ], + [ "_match_n_ovdr", "__1wire_8h.html#a1e14f734d5e232c914be6ea97982aa40", null ], + [ "_next", "__1wire_8h.html#a1f7b692a40769ebe59343613b147e01d", null ], + [ "_skip", "__1wire_8h.html#a9ea80f4ef2422a7fd71788c42b228053", null ], + [ "_skip_n_ovdr", "__1wire_8h.html#ace224a4d329166bfd9f3448e492baf2b", null ], + [ "_touch", "__1wire_8h.html#a85a3a19778edb037f6341f37135a5494", null ] +]; \ No newline at end of file diff --git a/doc/html/__1wire_8h_source.html b/doc/html/__1wire_8h_source.html new file mode 100644 index 0000000..e98949e --- /dev/null +++ b/doc/html/__1wire_8h_source.html @@ -0,0 +1,181 @@ + + + + + + + +uTL: include/utl/com/_1wire.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
_1wire.h
+
+
+Go to the documentation of this file.
1 
21 #ifndef __utl_com_1wire_h__
22 #define __utl_com_1wire_h__
23 
24 #include <utl/core/impl.h>
25 #include <utl/core/crtp.h>
26 #include <utl/com/_1wire_id.h>
27 #include <utl/meta/meta.h>
28 
29 
30 namespace utl {
31 
36 
41  namespace _1wire_i_det {
42  template <typename _T> byte_t _touch (_T& obj, byte_t out, typename _T::Speed s);
43  template <typename _T> void _match (_T& obj, _1wire_id_t& id, typename _T::Speed s);
44  template <typename _T> void _match_n_ovdr (_T& obj, _1wire_id_t& id);
45  template <typename _T> void _skip (_T& obj, typename _T::Speed s);
46  template <typename _T> void _skip_n_ovdr (_T& obj);
47  template <typename _T> _1wire_id_t _first (_T& obj, typename _T::Speed s, bool alarm);
48  template <typename _T> _1wire_id_t _next (_T& obj, typename _T::Speed s, bool alarm);
49  }
50 
56  template <typename impl_t>
57  class _1wire_i {
58  _CRTP_IMPL(impl_t);
59 
60  public:
61  using type = _1wire_i;
62 
64  enum class Speed { STD =0, OVDR };
65 
69  protected:
71  _1wire_i () = default;
72  ~_1wire_i () = default;
73  _1wire_i (const _1wire_i&) = delete;
74  _1wire_i& operator= (const _1wire_i&) = delete;
76 
83  private:
85  Speed speed () const { return impl().speed(); }
86  void speed (Speed s) { return impl().speed(s); }
87  bool bit (bool b) { return impl().bit(b); }
89  bool _reset (Speed s){ return impl()._reset(s); }
90 
95  private:
97  enum Command {
98  CMD_READ_ROM = 0x33,
99  CMD_OVDR_SKIP = 0x3C,
100  CMD_MATCH = 0x55,
102  CMD_SKIP = 0xCC,
105  };
106  template <typename _T> friend byte_t _1wire_i_det::_touch (_T&, byte_t, typename _T::Speed);
107  template <typename _T> friend void _1wire_i_det::_match (_T& obj, _1wire_id_t& id, typename _T::Speed s);
108  template <typename _T> friend void _1wire_i_det::_match_n_ovdr (_T& obj, _1wire_id_t& id);
109  template <typename _T> friend void _1wire_i_det::_skip (_T& obj, typename _T::Speed s);
110  template <typename _T> friend void _1wire_i_det::_skip_n_ovdr (_T& obj);
111  template <typename _T> friend _1wire_id_t _1wire_i_det::_first (_T&, typename _T::Speed, bool);
112  template <typename _T> friend _1wire_id_t _1wire_i_det::_next (_T&, typename _T::Speed, bool);
114 
118  public:
128  bool reset (Speed s = Speed::STD) {
129  return _reset (s);
130  }
131 
139  return _1wire_i_det::_touch (*this, out, s);
140  }
141 
150  size_t tx_data (const byte_t *out, byte_t *in, size_t n, Speed s = Speed::STD);
157  return _1wire_i_det::_touch (*this, 0xFF, s);
158  }
166  size_t rx_data (byte_t *in, size_t n, Speed s = Speed::STD);
167 
173  void match (_1wire_id_t& id, Speed s = Speed::STD) {
174  _1wire_i_det::_match (*this, id, s);
175  }
182  _1wire_i_det::_match_n_ovdr (*this, id);
183  }
188  void skip (Speed s = Speed::STD) {
189  _1wire_i_det::_skip (*this, s);
190  }
194  void skip_n_ovdr () {
196  }
197 
207  _1wire_id_t first (Speed s = Speed::STD, bool alarm =false) {
208  return _1wire_i_det::_first (*this, s, alarm);
209  }
220  _1wire_id_t next (Speed s = Speed::STD, bool alarm =false) {
221  return _1wire_i_det::_next (*this, s, alarm);
222  }
224 
225  private:
238  };
239 
240  template <typename _I>
241  size_t _1wire_i<_I>::tx_data (const byte_t *out, byte_t *in, size_t n, Speed s){
242  for (size_t nn {n} ; nn ; --nn)
243  *in++ = tx_data (*out++, s);
244  return n;
245  }
246 
247  template <typename _I>
248  size_t _1wire_i<_I>::rx_data(byte_t *in, size_t n, Speed s) {
249  for (size_t nn {n} ; nn ; --nn)
250  *in++ = tx_data (0xFF, s);
251  return n;
252  }
253 
259  template <>
261  public:
263 
265  enum class Speed { STD =0, OVDR };
266 
270  protected:
272  _1wire_i () = default;
273  _1wire_i (const type&) = delete;
274  type& operator= (const type&) = delete;
275  public:
276  virtual ~_1wire_i () = default;
277 
282  private:
284  virtual Speed speed () const =0;
285  virtual void speed (Speed) =0;
286  virtual bool bit () =0;
287  virtual bool bit (bool) =0;
288  virtual bool _reset (Speed) =0;
289 
294  private:
296  enum Command {
297  CMD_READ_ROM = 0x33,
299  CMD_MATCH = 0x55,
301  CMD_SKIP = 0xCC,
304  };
305  template <typename _T> friend byte_t _1wire_i_det::_touch (_T&, byte_t, typename _T::Speed);
306  template <typename _T> friend void _1wire_i_det::_match (_T& obj, _1wire_id_t& id, typename _T::Speed s);
307  template <typename _T> friend void _1wire_i_det::_match_n_ovdr (_T& obj, _1wire_id_t& id);
308  template <typename _T> friend void _1wire_i_det::_skip (_T& obj, typename _T::Speed s);
309  template <typename _T> friend void _1wire_i_det::_skip_n_ovdr (_T& obj);
310  template <typename _T> friend _1wire_id_t _1wire_i_det::_first (_T&, typename _T::Speed, bool);
311  template <typename _T> friend _1wire_id_t _1wire_i_det::_next (_T&, typename _T::Speed, bool);
313 
317  public:
327  bool reset (Speed s = Speed::STD) {
328  return _reset (s);
329  }
330 
338  return _1wire_i_det::_touch (*this, out, s);
339  }
340 
349  size_t tx_data (const byte_t *out, byte_t *in, size_t n, Speed s = Speed::STD);
356  return _1wire_i_det::_touch (*this, 0xFF, s);
357  }
365  size_t rx_data (byte_t *in, size_t n, Speed s = Speed::STD);
366 
372  void match (_1wire_id_t& id, Speed s = Speed::STD) {
373  _1wire_i_det::_match (*this, id, s);
374  }
381  _1wire_i_det::_match_n_ovdr (*this, id);
382  }
387  void skip (Speed s = Speed::STD) {
388  _1wire_i_det::_skip (*this, s);
389  }
393  void skip_n_ovdr () {
395  }
396 
406  _1wire_id_t first (Speed s = Speed::STD, bool alarm =false) {
407  return _1wire_i_det::_first (*this, s, alarm);
408  }
419  _1wire_id_t next (Speed s = Speed::STD, bool alarm =false) {
420  return _1wire_i_det::_next (*this, s, alarm);
421  }
423 
424  private:
437  };
438 
439 
440  size_t _1wire_i<virtual_tag>::tx_data (const byte_t *out, byte_t *in, size_t n, Speed s){
441  for (size_t nn {n} ; nn ; --nn)
442  *in++ = tx_data (*out++, s);
443  return n;
444  }
445 
446  size_t _1wire_i<virtual_tag>::rx_data(byte_t *in, size_t n, Speed s) {
447  for (size_t nn {n} ; nn ; --nn)
448  *in++ = tx_data (0xFF, s);
449  return n;
450  }
451 
455 namespace _1wire_i_det {
457 
466  template <typename _T>
467  byte_t _touch (_T& obj, byte_t out, typename _T::Speed s) {
468  byte_t ret {0};
469 
470  // Select speed once
471  if (obj.speed () != s)
472  obj.speed (s);
473  for (uint8_t i =8; i>0 ; --i) {
474  ret >>= 1;
475  ret |= (obj.bit (out & 0x01)) ? 0x80 : 0x00;
476  out >>= 1;
477  /*^
478  * We shift bits to right as LSB comes first and mask it to MSB
479  * If we need to read we have to write 1
480  */
481  }
482  return ret;
483  }
484 
485 
492  template <typename _T>
493  void _match (_T& obj, _1wire_id_t& id, typename _T::Speed s) {
494  _touch (obj, (s == _T::Speed::STD) ? _T::CMD_MATCH : _T::CMD_OVDR_MATCH, s);
495  for (uint8_t& b : id)
496  _touch (obj, b, s);
497  }
498 
504  template <typename _T>
505  void _match_n_ovdr (_T& obj, _1wire_id_t& id) {
506  _touch (obj, _T::CMD_MATCH, _T::Speed::STD);
507  for (uint8_t& b : id)
508  _touch (obj, b, _T::Speed::OVDR);
509  }
510 
516  template <typename _T>
517  void _skip (_T& obj, typename _T::Speed s) {
518  _touch (obj, (s == _T::Speed::STD) ? _T::CMD_SKIP : _T::CMD_SKIP, s);
519  }
520 
525  template <typename _T>
526  void _skip_n_ovdr (_T& obj) {
527  _touch (obj, _T::CMD_OVDR_SKIP, _T::Speed::STD);
528  }
529 
539  template <typename _T>
540  _1wire_id_t _first (_T& obj, typename _T::Speed s, bool alarm) {
541  obj.dec_ = obj.pos_ = obj.cur_ = _1wire_id_t::nullDev();
542  return _next (obj, s, alarm);
543  }
544 
555  template <typename _T>
556  _1wire_id_t _next (_T& obj, typename _T::Speed s, bool alarm) {
557  uint8_t b, bxx; // bit helper vars
558  uint8_t i;
559  _1wire_id_t ID;
560 
561  do {
562  if ((obj.pos_ != _1wire_id_t::nullDev()) && (obj.dec_ >= obj.pos_)) {
563  // dec_ == pos_: We have found all the leafs, already
564  // dec_ > pos_ : Error
565  ID = _1wire_id_t::nullDev();
566  break;
567  }
568  if (!obj.reset (s)) {
569  ID = _1wire_id_t::nullDev();
570  break;
571  }
572  // Issue search command
573  if (alarm) obj.tx_data (_T::CMD_ALARM_SEARCH, s);
574  else obj.tx_data (_T::CMD_SEARCH_ROM, s);
575 
576  // Select speed once
577  if (obj.speed () != s)
578  obj.speed (s);
579 
580  // traverse entire RomID from LSB to MSB
581  for (i =0 ; i<64 ; ++i) {
582  // Get response pair bits
583  bxx = obj.bit (1); // bit
584  bxx <<= 1;
585  bxx |= obj.bit (1); // complementary bit
586 
587  if (bxx == 0x00) {
588  // 00 - We have discrepancy
589  obj.cur_.bit (i, 1);
590  switch (_1wire_id_t::compare (obj.pos_, obj.cur_)) {
591  default:
592  case -1:
593  // pos_ < cur_: This discrepancy is the most far for now. Mark position and select 0.
594  b = 0;
595  //dec_.bit (i, (b = 0)); //<-- Its already 0
596  obj.pos_.bit (i, 1);
597  break;
598  case 0:
599  // pos_ == cur_: This was the last discrepancy in the last pass.
600  // Select the other branch this time (1)
601  obj.dec_.bit (i, (b = 1));
602  break;
603  case 1:
604  // pos_ > cur_: We had a discrepancy in a MSB than that, in a previous pass.
605  // Continue with the last pass decision.
606  b = obj.dec_.bit (i);
607  break;
608  }
609  // Send selection and update romid
610  obj.bit (b);
611  ID.bit (i, b);
612  }
613  else if (bxx == 0x01) {
614  // 01 - All bits of all ROMs are 0s
615  obj.bit (0);
616  ID.bit (i, 0);
617 
618  }
619  else if (bxx == 0x02) {
620  // 10 - All bits of all ROMs are 1s
621  obj.bit (1);
622  ID.bit (i, 1);
623  }
624  else {
625  // 11 - No device on the bus
626  ID = _1wire_id_t::nullDev();
627  break;
628  }
629  } // for
630 
631  if (i == 64 && obj.pos_ == _1wire_id_t::nullDev()) {
632  // Mark done with only one device
633  obj.pos_.bit (0, 1);
634  obj.dec_.bit (0, 1);
635  }
636  } while (0);
637 
638  return ID;
639  }
640 } // namespace _1wire_i_det
642 
643 
644 #if defined _utl_have_concepts
645 
648  template <typename T>
649  concept bool _1Wire_i = requires (T t, typename T::Speed s, _1wire_id_t id) {
650  // Object type
651  requires not_<std::is_copy_constructible<T>::value>::value;
652  requires not_<std::is_copy_assignable<T>::value>::value;
653  // Members
654 // typename T::Speed;
655 // typename T::Command;
656  // Methods
657  {t.reset(s)} -> bool;
658  {t.tx_data(1)} -> byte_t;
659  {t.rx_data(s)} -> byte_t;
660  t.match(id, s);
661  t.match_n_ovdr(id);
662  t.skip(s);
663  t.skip_n_ovdr();
664  {t.first(s)} -> _1wire_id_t;
665  {t.next(s)} -> _1wire_id_t;
666  };
667 #else
668  namespace _1wire_i_det {
669  using std::declval;
670 
671  template <class _Tp> using try_reset_t = decltype (declval<_Tp>().reset (declval<typename _Tp::Speed>()));
672  template <class _Tp> using try_rx1_t = decltype (declval<_Tp>().rx_data (declval<typename _Tp::Speed>()));
673  template <class _Tp> using try_tx1_t = decltype (declval<_Tp>().tx_data (declval<byte_t>(), declval<typename _Tp::Speed>()));
674 
675  template <class _Tp> using try_match_t = decltype (declval<_Tp>().match (declval<_1wire_id_t&>(), declval<typename _Tp::Speed>()));
676  template <class _Tp> using try_match_n_ovdr_t = decltype (declval<_Tp>().match_n_ovdr (declval<_1wire_id_t&>()));
677  template <class _Tp> using try_skip_t = decltype (declval<_Tp>().skip (declval<typename _Tp::Speed>()));
678  template <class _Tp> using try_skip_n_ovdr_t = decltype (declval<_Tp>().skip_n_ovdr ());
679  template <class _Tp> using try_first_t = decltype (declval<_Tp>().first (declval<typename _Tp::Speed>()));
680  template <class _Tp> using try_next_t = decltype (declval<_Tp>().next (declval<typename _Tp::Speed>()));
681 
683  template <typename _Tp, typename =void>
684  struct is_1wire_ : meta::false_ {};
685 
687  template <typename _Tp>
688  struct is_1wire_ <_Tp,
689  meta::void_t <
690 // typename _Tp::Speed,
691 // typename _Tp::Command,
692 // meta::use_if_same_t <try_reset_t <_Tp>, bool>,
693 // meta::use_if_same_t <try_rx1_t <_Tp>, byte_t>,
694 // //meta::use_if_same_t <try_rx2_t <_Tp>, size_t>,
695 // meta::use_if_same_t <try_tx1_t <_Tp>, byte_t>,
696 // //meta::use_if_same_t <try_tx2_t <_Tp>, size_t>,
697 // meta::use_if_same_t <try_match_t<_Tp>, void>,
698 // meta::use_if_same_t <try_match_n_ovdr_t<_Tp>, void>,
699 // meta::use_if_same_t <try_skip_t<_Tp>, void>,
700 // meta::use_if_same_t <try_skip_n_ovdr_t<_Tp>, void>,
701 // meta::use_if_same_t <try_first_t <_Tp>, _1wire_id_t>,
702 // meta::use_if_same_t <try_next_t <_Tp>, _1wire_id_t>
703  void
704  >
705  > : meta::true_ {};
706  } // namespace _1wire_i_det
707 
713 // template <typename _Tp>
714 // constexpr bool _1Wire_i = _1wire_i_det::is_1wire_<_Tp>::value;
715 #endif
716 
718 } //namespace utl
719 
720 #endif /* __utl_com_1wire_h__ */
_1wire_id_t first(Speed s=Speed::STD, bool alarm=false)
&#39;first&#39; operation, to search on the 1-Wire for the first device. This is performed by setting dec_...
Definition: _1wire.h:207
+ + +
Include all meta library.
+
bool bit(bool b)
Write a bit to the 1-Wire bus, return response/write status and provide the recovery time...
Definition: _1wire.h:88
+
void void_t
void_t type alias
Definition: detection.h:55
+
void match_n_ovdr(_1wire_id_t &id)
Definition: _1wire.h:181
+
decltype(declval< _Tp >().match_n_ovdr(declval< _1wire_id_t & >())) try_match_n_ovdr_t
Definition: _1wire.h:676
+
Primary template to catch any non 1-wire interface types.
Definition: _1wire.h:684
+
void match(_1wire_id_t &id, Speed s=Speed::STD)
Definition: _1wire.h:173
+
bool _reset(Speed s)
Definition: _1wire.h:89
+
bool_< true > true_
The type used as a compile-time boolean with true value.
Definition: integral.h:68
+
static int compare(const _1wire_id_t &lhs, const _1wire_id_t &rhs) noexcept
Full compare two dev_ids.
Definition: _1wire_id.h:72
+ + + +
decltype(declval< _Tp >().match(declval< _1wire_id_t & >(), declval< typename _Tp::Speed >())) try_match_t
Definition: _1wire.h:675
+
void match(_1wire_id_t &id, Speed s=Speed::STD)
Definition: _1wire.h:372
+
void speed(Speed s)
Definition: _1wire.h:86
+
void _match_n_ovdr(_T &obj, _1wire_id_t &id)
Definition: _1wire.h:505
+
Speed
1-wire bus speed
Definition: _1wire.h:64
+
byte_t tx_data(byte_t out, Speed s=Speed::STD)
Definition: _1wire.h:138
+
byte_t rx_data(Speed s=Speed::STD)
Definition: _1wire.h:156
+
_1wire_id_t _first(_T &obj, typename _T::Speed s, bool alarm)
&#39;first&#39; operation, to search on the 1-Wire for the first device. This is performed by setting dec_...
Definition: _1wire.h:540
+ +
bool reset(Speed s=Speed::STD)
Generate a 1-wire reset.
Definition: _1wire.h:128
+
_CRTP_IMPL(impl_t)
+ +
_1wire_id_t _next(_T &obj, typename _T::Speed s, bool alarm)
&#39;next&#39; operation, to search on the 1-Wire for the next device. This search is usually performed after...
Definition: _1wire.h:556
+
_1wire_id_t next(Speed s=Speed::STD, bool alarm=false)
&#39;next&#39; operation, to search on the 1-Wire for the next device. This search is usually performed after...
Definition: _1wire.h:419
+
bool_< false > false_
The type used as a compile-time boolean with false value.
Definition: integral.h:69
+
An 1-wire Rom ID type.
+
A virtual base class implementation.
Definition: _1wire.h:260
+
bool reset(Speed s=Speed::STD)
Generate a 1-wire reset.
Definition: _1wire.h:327
+
_1wire_id_t first(Speed s=Speed::STD, bool alarm=false)
&#39;first&#39; operation, to search on the 1-Wire for the first device. This is performed by setting dec_...
Definition: _1wire.h:406
+
STL&#39;s core language concepts.
Definition: _1wire.h:30
+ +
decltype(declval< _Tp >().skip(declval< typename _Tp::Speed >())) try_skip_t
Definition: _1wire.h:677
+
void match_n_ovdr(_1wire_id_t &id)
Definition: _1wire.h:380
+
_1wire_id_t pos_
Definition: _1wire.h:232
+
byte_t rx_data(Speed s=Speed::STD)
Definition: _1wire.h:355
+
decltype(declval< _Tp >().tx_data(declval< byte_t >(), declval< typename _Tp::Speed >())) try_tx1_t
Definition: _1wire.h:673
+
void _skip_n_ovdr(_T &obj)
Definition: _1wire.h:526
+
_1wire_i type
Export type as identity meta-function.
Definition: _1wire.h:61
+
void skip(Speed s=Speed::STD)
Definition: _1wire.h:188
+
decltype(declval< _Tp >().skip_n_ovdr()) try_skip_n_ovdr_t
Definition: _1wire.h:678
+
Speed speed() const
Get the 1-wire bus speed.
Definition: _1wire.h:85
+
decltype(declval< _Tp >().first(declval< typename _Tp::Speed >())) try_first_t
Definition: _1wire.h:679
+
byte_t tx_data(byte_t out, Speed s=Speed::STD)
Definition: _1wire.h:337
+
_1wire_i & operator=(const _1wire_i &)=delete
+
void skip(Speed s=Speed::STD)
Definition: _1wire.h:387
+
static constexpr const _1wire_id_t & nullDev()
Return nullDev reference.
Definition: _1wire_id.h:50
+
~_1wire_i()=default
Allow destructor from derived only.
+ +
_1wire_id_t next(Speed s=Speed::STD, bool alarm=false)
&#39;next&#39; operation, to search on the 1-Wire for the next device. This search is usually performed after...
Definition: _1wire.h:220
+ + + +
decltype(declval< _Tp >().rx_data(declval< typename _Tp::Speed >())) try_rx1_t
Definition: _1wire.h:672
+
Template base class for 1-wire communication interface using CRTP.
Definition: _1wire.h:57
+
uint8_t byte_t
8 bits wide
Definition: types.h:31
+
virtual support tag type
Definition: crtp.h:40
+
void skip_n_ovdr()
Definition: _1wire.h:194
+
decltype(declval< _Tp >().reset(declval< typename _Tp::Speed >())) try_reset_t
Definition: _1wire.h:671
+
void _skip(_T &obj, typename _T::Speed s)
Definition: _1wire.h:517
+ +
decltype(declval< _Tp >().next(declval< typename _Tp::Speed >())) try_next_t
Definition: _1wire.h:680
+ +
Implementation detail main forward header.
+
_1wire_id_t cur_
Definition: _1wire.h:237
+
void _match(_T &obj, _1wire_id_t &id, typename _T::Speed s)
Definition: _1wire.h:493
+
_1wire_id_t dec_
Definition: _1wire.h:226
+
Speed
1-wire bus speed
Definition: _1wire.h:265
+
_1wire_i()=default
Allow constructor from derived only.
+
constexpr bool bit(uint8_t bit) const noexcept
Definition: id.h:159
+
byte_t _touch(_T &obj, byte_t out, typename _T::Speed s)
Write a byte to 1-Wire bus and read the response.
Definition: _1wire.h:467
+
+
+ + + + diff --git a/doc/html/__1wire__id_8h.html b/doc/html/__1wire__id_8h.html new file mode 100644 index 0000000..e4d82a6 --- /dev/null +++ b/doc/html/__1wire__id_8h.html @@ -0,0 +1,135 @@ + + + + + + + +uTL: include/utl/com/_1wire_id.h File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
_1wire_id.h File Reference
+
+
+ +

An 1-wire Rom ID type. +More...

+
#include <utl/core/impl.h>
+#include <utl/container/id.h>
+
+

Go to the source code of this file.

+ + + + +

+Classes

class  utl::_1wire_id_t
 
+ + + + +

+Namespaces

 utl
 STL's core language concepts.
 
+

Detailed Description

+

An 1-wire Rom ID type.

+

Copyright (C) 2018 Christos Choutouridis

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

+

You should have received a copy of the GNU Lesser General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file _1wire_id.h.

+
+
+ + + + diff --git a/doc/html/__1wire__id_8h_source.html b/doc/html/__1wire__id_8h_source.html new file mode 100644 index 0000000..660e867 --- /dev/null +++ b/doc/html/__1wire__id_8h_source.html @@ -0,0 +1,123 @@ + + + + + + + +uTL: include/utl/com/_1wire_id.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
_1wire_id.h
+
+
+Go to the documentation of this file.
1 
21 #ifndef __utl_com_1wire_id_h__
22 #define __utl_com_1wire_id_h__
23 
24 #include <utl/core/impl.h>
25 #include <utl/container/id.h>
26 
27 namespace utl {
28 
32  class _1wire_id_t : public id_t<uint8_t, 8> {
33 
37  public:
39  _1wire_id_t () noexcept
40  : id_t<uint8_t, 8> {0, 0, 0, 0, 0, 0, 0, 0} { }
41  _1wire_id_t (const _1wire_id_t& id) noexcept {
42  std::copy(id.begin(), id.end(), this->begin());
43  }
45 
48  static constexpr const _1wire_id_t& nullDev () { return nullDev_; }
51 
54  uint8_t& family() noexcept { return front(); }
55  const uint8_t& family() const noexcept { return front(); }
57 
60  uint8_t& crc8() noexcept { return back(); }
61  const uint8_t& crc8() const noexcept { return back(); }
63 
72  static int compare (const _1wire_id_t& lhs, const _1wire_id_t& rhs) noexcept {
73  auto p = std::mismatch (lhs.rbegin(), lhs.rend(), rhs.rbegin());
74  if (p.first == lhs.rend()) return 0;
75  else if (*p.first < *p.second) return -1;
76  else return 1;
77  }
79 
82  private:
83  static const _1wire_id_t nullDev_;
85  };
86 
87  // Init static member
89 
90 } // namespace tbx
91 
92 #endif /* __utl_com_1wire_id_h__ */
reference back() noexcept
Definition: id.h:184
+
iterator end() noexcept
Definition: id.h:109
+
_1wire_id_t(const _1wire_id_t &id) noexcept
Definition: _1wire_id.h:41
+
static int compare(const _1wire_id_t &lhs, const _1wire_id_t &rhs) noexcept
Full compare two dev_ids.
Definition: _1wire_id.h:72
+
reference front() noexcept
Definition: id.h:176
+
uint8_t & crc8() noexcept
Definition: _1wire_id.h:60
+
A container for device IDs.
+ +
uint8_t & family() noexcept
Definition: _1wire_id.h:54
+
const uint8_t & family() const noexcept
Definition: _1wire_id.h:55
+
const uint8_t & crc8() const noexcept
Definition: _1wire_id.h:61
+
STL&#39;s core language concepts.
Definition: _1wire.h:30
+
static const _1wire_id_t nullDev_
Definition: _1wire_id.h:83
+
A standard container for storing IDs as a fixed size sequence of bytes. This type is based on etl::ar...
Definition: id.h:78
+
static constexpr const _1wire_id_t & nullDev()
Return nullDev reference.
Definition: _1wire_id.h:50
+
_1wire_id_t() noexcept
Definition: _1wire_id.h:39
+
iterator begin() noexcept
Definition: id.h:107
+
Implementation detail main forward header.
+
+
+ + + + diff --git a/doc/html/__1wire__uart_8h.html b/doc/html/__1wire__uart_8h.html new file mode 100644 index 0000000..c6e0b82 --- /dev/null +++ b/doc/html/__1wire__uart_8h.html @@ -0,0 +1,141 @@ + + + + + + + +uTL: include/utl/com/_1wire_uart.h File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
_1wire_uart.h File Reference
+
+
+ +

A 1-wire implementation using a microprocessor's uart for bit timing. +More...

+
#include <utl/core/impl.h>
+#include <utl/core/crtp.h>
+#include <utl/com/_1wire.h>
+
+

Go to the source code of this file.

+ + + + + + + + +

+Classes

class  utl::_1wire_uart_i< Impl_t >
 1-wire UART interface template class using CRTP Using the private virtual interface we provide the interface from _1wire_i<> More...
 
class  utl::_1wire_uart_i< virtual_tag >
 A virtual base class interface implementation. Using the private virtual interface we provide the interface from _1wire_i<virtual_tag> More...
 
+ + + + +

+Namespaces

 utl
 STL's core language concepts.
 
+

Detailed Description

+

A 1-wire implementation using a microprocessor's uart for bit timing.

+
Note
This 1-wire implementation is based on MCU UART functionality. The implementation expects: 1) An Open drain tx and a floating(or pull-up) rx UART pin configuration with both pins connected to the 1-wire bus wire 2) A Transmit/receive function even in blocking/polling mode 3) A baudrate set function
+

Copyright (C) 2018 Christos Choutouridis

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

+

You should have received a copy of the GNU Lesser General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file _1wire_uart.h.

+
+
+ + + + diff --git a/doc/html/__1wire__uart_8h_source.html b/doc/html/__1wire__uart_8h_source.html new file mode 100644 index 0000000..c00443f --- /dev/null +++ b/doc/html/__1wire__uart_8h_source.html @@ -0,0 +1,135 @@ + + + + + + + +uTL: include/utl/com/_1wire_uart.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
_1wire_uart.h
+
+
+Go to the documentation of this file.
1 
29 #ifndef __utl_com_1wire_uart_h__
30 #define __utl_com_1wire_uart_h__
31 
32 #include <utl/core/impl.h>
33 #include <utl/core/crtp.h>
34 #include <utl/com/_1wire.h>
35 
36 namespace utl {
43 
51  template <typename Impl_t>
52  class _1wire_uart_i : public _1wire_i<_1wire_uart_i<Impl_t>> {
53  _CRTP_IMPL(Impl_t);
55  public:
57  using Speed = typename _1wire_i<type>::Speed;
58 
62  protected:
64  _1wire_uart_i () = default;
65  ~_1wire_uart_i () = default;
66 
74  private:
89  byte_t UART_RW (byte_t byte) { return impl().UART_RW (byte); }
90 
96  void UART_BR (uint32_t br) { impl().UART_BR (br); }
98 
101  private:
103  enum BR {
104  BR_STD_RST =9600,
105  BR_OVR_RST =57600,
106  BR_STD =115200,
107  BR_OVR =921600
108  };
109  Speed _speed {Speed::STD};
110 
111  Speed speed () const { return _speed; }
112  void speed (Speed s);
113 
136  bool bit (bool b) {
137  if (b)
138  return (UART_RW (0xFF) < 0xFF) ? 0 : 1;
139  else {
140  UART_RW (0x00);
141  return 0;
142  }
143  }
144  bool _reset (Speed s);
146  };
147 
155  template <typename Impl_t>
157  switch (_speed = s) {
158  case Speed::STD: UART_BR (BR_STD); break;
159  case Speed::OVDR: UART_BR (BR_OVR); break;
160  }
161  }
162 
180  template <typename Impl_t>
182  // Select frame to send
183  uint8_t w = ((_speed = s) == Speed::STD) ? 0xF0 : 0xF8;
184  // Select baudrate
185  impl().UART_BR ((_speed == Speed::STD) ? BR_STD_RST : BR_OVR_RST);
186  // Send frame and check the result
187  return (impl().UART_RW (w) < w);
188  }
189 
197  template <>
198  class _1wire_uart_i<virtual_tag> : public _1wire_i<virtual_tag> {
199  public:
202 
206  protected:
208  _1wire_uart_i () = default;
209  ~_1wire_uart_i () = default;
210 
215  private:
230  virtual byte_t UART_RW (byte_t byte) =0;
231 
237  virtual void UART_BR (uint32_t br) =0;
239 
242  private:
244  enum BR {
245  BR_STD_RST =9600,
246  BR_OVR_RST =57600,
247  BR_STD =115200,
248  BR_OVR =921600
249  };
250  Speed _speed {Speed::STD};
251 
252  Speed speed () const { return _speed; }
253  void speed (Speed s);
254 
277  bool bit (bool b) {
278  if (b)
279  return (UART_RW (0xFF) < 0xFF) ? 0 : 1;
280  else {
281  UART_RW (0x00);
282  return 0;
283  }
284  }
285  bool _reset (Speed s);
287  };
288 
297  switch (_speed = s) {
298  case Speed::STD: UART_BR (BR_STD); break;
299  case Speed::OVDR: UART_BR (BR_OVR); break;
300  }
301  }
302 
321  // Select frame to send
322  uint8_t w = ((_speed = s) == Speed::STD) ? 0xF0 : 0xF8;
323  // Select baudrate
324  UART_BR ((_speed == Speed::STD) ? BR_STD_RST : BR_OVR_RST);
325  // Send frame and check the result
326  return (UART_RW (w) < w);
327  }
328 
330 
331 } // namespace utl
332 
333 #endif /* __utl_com_1wire_uart_h__ */
+
bool bit(bool b)
Send a 1-Wire write bit and read the response.
Definition: _1wire_uart.h:277
+
typename _1wire_i< type >::Speed Speed
Bring bus speed.
Definition: _1wire_uart.h:57
+
void UART_BR(uint32_t br)
Implementers&#39;s (driver) baudrate function.
Definition: _1wire_uart.h:96
+ + +
Speed
1-wire bus speed
Definition: _1wire.h:64
+
Speed speed() const
Get the 1-wire bus speed.
Definition: _1wire_uart.h:252
+
A virtual base class interface implementation. Using the private virtual interface we provide the int...
Definition: _1wire_uart.h:198
+ + +
An 1-wire interface implementation.
+ +
A virtual base class implementation.
Definition: _1wire.h:260
+
bool bit(bool b)
Send a 1-Wire write bit and read the response.
Definition: _1wire_uart.h:136
+
STL&#39;s core language concepts.
Definition: _1wire.h:30
+
~_1wire_uart_i()=default
+
BR
1-wire UART baudrates
Definition: _1wire_uart.h:103
+
BR
1-wire UART baudrates
Definition: _1wire_uart.h:244
+
bool _reset(Speed s)
Generate a 1-wire reset Reset \ / \ X X X / RS: | | | | | | | | | | | bit: ST 0 1 2 3 4 5 6 7 SP < ...
Definition: _1wire_uart.h:181
+
byte_t UART_RW(byte_t byte)
Implementers&#39;s (driver) read-write function. We expect the following USART configuration: ...
Definition: _1wire_uart.h:89
+ +
Template base class for 1-wire communication interface using CRTP.
Definition: _1wire.h:57
+
uint8_t byte_t
8 bits wide
Definition: types.h:31
+
virtual support tag type
Definition: crtp.h:40
+
_1wire_uart_i()=default
Allow constructor from derived only.
+
Speed speed() const
Get the 1-wire bus speed.
Definition: _1wire_uart.h:111
+
1-wire UART interface template class using CRTP Using the private virtual interface we provide the in...
Definition: _1wire_uart.h:52
+
Implementation detail main forward header.
+
Speed
1-wire bus speed
Definition: _1wire.h:265
+
+
+ + + + diff --git a/doc/html/_concepts_2lib_2gtest_2gtest-all_8d.html b/doc/html/_concepts_2lib_2gtest_2gtest-all_8d.html new file mode 100644 index 0000000..f437f9a --- /dev/null +++ b/doc/html/_concepts_2lib_2gtest_2gtest-all_8d.html @@ -0,0 +1,107 @@ + + + + + + + +uTL: test/eclipse-cygwin/C++14-Concepts/lib/gtest/gtest-all.d File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
gtest-all.d File Reference
+
+ +
+ + + + diff --git a/doc/html/_concepts_2lib_2gtest_2gtest-all_8d_source.html b/doc/html/_concepts_2lib_2gtest_2gtest-all_8d_source.html new file mode 100644 index 0000000..442a16d --- /dev/null +++ b/doc/html/_concepts_2lib_2gtest_2gtest-all_8d_source.html @@ -0,0 +1,105 @@ + + + + + + + +uTL: test/eclipse-cygwin/C++14-Concepts/lib/gtest/gtest-all.d Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
gtest-all.d
+
+
+Go to the documentation of this file.
1 lib/gtest/gtest-all.o: ../lib/gtest/gtest-all.cc ../lib/gtest/gtest.h
2 
3 ../lib/gtest/gtest.h:
+
+ + + + diff --git a/doc/html/_concepts_2source_2main_8d.html b/doc/html/_concepts_2source_2main_8d.html new file mode 100644 index 0000000..21bb88f --- /dev/null +++ b/doc/html/_concepts_2source_2main_8d.html @@ -0,0 +1,107 @@ + + + + + + + +uTL: test/eclipse-cygwin/C++14-Concepts/source/main.d File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
main.d File Reference
+
+ +
+ + + + diff --git a/doc/html/_concepts_2source_2main_8d_source.html b/doc/html/_concepts_2source_2main_8d_source.html new file mode 100644 index 0000000..a0d280c --- /dev/null +++ b/doc/html/_concepts_2source_2main_8d_source.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: test/eclipse-cygwin/C++14-Concepts/source/main.d Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
main.d
+
+
+Go to the documentation of this file.
1 source/main.o: W:/Work/Software/Libraries/utl/test/main.cpp \ + W:\Work\Software\Libraries\utl\test\eclipse-cygwin\lib/gtest/gtest.h
2 
3 W:\Work\Software\Libraries\utl\test\eclipse-cygwin\lib/gtest/gtest.h:
4 
STL&#39;s core language concepts.
Definition: _1wire.h:30
+
GTEST_API_ int main(int argc, char **argv)
Definition: main.cpp:23
+
+
+ + + + diff --git a/doc/html/_concepts_2source_2tests_2_t_concepts_8d.html b/doc/html/_concepts_2source_2tests_2_t_concepts_8d.html new file mode 100644 index 0000000..51e0cb5 --- /dev/null +++ b/doc/html/_concepts_2source_2tests_2_t_concepts_8d.html @@ -0,0 +1,107 @@ + + + + + + + +uTL: test/eclipse-cygwin/C++14-Concepts/source/tests/TConcepts.d File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
TConcepts.d File Reference
+
+ +
+ + + + diff --git a/doc/html/_concepts_2source_2tests_2_t_concepts_8d_source.html b/doc/html/_concepts_2source_2tests_2_t_concepts_8d_source.html new file mode 100644 index 0000000..bd0b8a5 --- /dev/null +++ b/doc/html/_concepts_2source_2tests_2_t_concepts_8d_source.html @@ -0,0 +1,127 @@ + + + + + + + +uTL: test/eclipse-cygwin/C++14-Concepts/source/tests/TConcepts.d Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
TConcepts.d
+
+
+Go to the documentation of this file.
1 source/tests/TConcepts.o: \
2  W:/Work/Software/Libraries/utl/test/tests/TConcepts.cpp \ + W:\Work\Software\Libraries\utl\include/utl/concepts/concepts.h \ + W:\Work\Software\Libraries\utl\include/utl/core/impl.h \ + W:\Work\Software\Libraries\utl\include/utl/core/version.h \ + W:\Work\Software\Libraries\utl\include/utl/core/types.h \ + W:\Work\Software\Libraries\utl\include/utl/concepts/defines.h \ + W:\Work\Software\Libraries\utl\include/utl/concepts/stl.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/meta.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/integral.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/typelist.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/idx_sequence.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/detection.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/logical.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/selection.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/sfinae.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/invoke.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/operations.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/useif.h \ + W:\Work\Software\Libraries\utl\include/utl/utility/invoke.h \ + W:\Work\Software\Libraries\utl\include/utl/concepts/iterators.h \ + W:\Work\Software\Libraries\utl\test\eclipse-cygwin\lib/gtest/gtest.h
3 
4 W:\Work\Software\Libraries\utl\include/utl/concepts/concepts.h:
5 
6 W:\Work\Software\Libraries\utl\include/utl/core/impl.h:
7 
8 W:\Work\Software\Libraries\utl\include/utl/core/version.h:
9 
10 W:\Work\Software\Libraries\utl\include/utl/core/types.h:
11 
12 W:\Work\Software\Libraries\utl\include/utl/concepts/defines.h:
13 
14 W:\Work\Software\Libraries\utl\include/utl/concepts/stl.h:
15 
16 W:\Work\Software\Libraries\utl\include/utl/meta/meta.h:
17 
18 W:\Work\Software\Libraries\utl\include/utl/meta/integral.h:
19 
20 W:\Work\Software\Libraries\utl\include/utl/meta/typelist.h:
21 
22 W:\Work\Software\Libraries\utl\include/utl/meta/idx_sequence.h:
23 
24 W:\Work\Software\Libraries\utl\include/utl/meta/detection.h:
25 
26 W:\Work\Software\Libraries\utl\include/utl/meta/logical.h:
27 
28 W:\Work\Software\Libraries\utl\include/utl/meta/selection.h:
29 
30 W:\Work\Software\Libraries\utl\include/utl/meta/sfinae.h:
31 
32 W:\Work\Software\Libraries\utl\include/utl/meta/invoke.h:
33 
34 W:\Work\Software\Libraries\utl\include/utl/meta/operations.h:
35 
36 W:\Work\Software\Libraries\utl\include/utl/meta/useif.h:
37 
38 W:\Work\Software\Libraries\utl\include/utl/utility/invoke.h:
39 
40 W:\Work\Software\Libraries\utl\include/utl/concepts/iterators.h:
41 
42 W:\Work\Software\Libraries\utl\test\eclipse-cygwin\lib/gtest/gtest.h:
43 
STL&#39;s core language concepts.
Definition: _1wire.h:30
+
typename Fn::template apply< Args... > invoke
Definition: invoke.h:81
+
+
+ + + + diff --git a/doc/html/_concepts_2source_2tests_2_tinvoke_8d.html b/doc/html/_concepts_2source_2tests_2_tinvoke_8d.html new file mode 100644 index 0000000..3b0bfdf --- /dev/null +++ b/doc/html/_concepts_2source_2tests_2_tinvoke_8d.html @@ -0,0 +1,107 @@ + + + + + + + +uTL: test/eclipse-cygwin/C++14-Concepts/source/tests/Tinvoke.d File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Tinvoke.d File Reference
+
+ +
+ + + + diff --git a/doc/html/_concepts_2source_2tests_2_tinvoke_8d_source.html b/doc/html/_concepts_2source_2tests_2_tinvoke_8d_source.html new file mode 100644 index 0000000..fb6789c --- /dev/null +++ b/doc/html/_concepts_2source_2tests_2_tinvoke_8d_source.html @@ -0,0 +1,123 @@ + + + + + + + +uTL: test/eclipse-cygwin/C++14-Concepts/source/tests/Tinvoke.d Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Tinvoke.d
+
+
+Go to the documentation of this file.
1 source/tests/Tinvoke.o: \
2  W:/Work/Software/Libraries/utl/test/tests/Tinvoke.cpp \ + W:\Work\Software\Libraries\utl\include/utl/utility/invoke.h \ + W:\Work\Software\Libraries\utl\include/utl/core/impl.h \ + W:\Work\Software\Libraries\utl\include/utl/core/version.h \ + W:\Work\Software\Libraries\utl\include/utl/core/types.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/meta.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/integral.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/typelist.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/idx_sequence.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/detection.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/logical.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/selection.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/sfinae.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/invoke.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/operations.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/useif.h \ + W:\Work\Software\Libraries\utl\test\eclipse-cygwin\lib/gtest/gtest.h
3 
4 W:\Work\Software\Libraries\utl\include/utl/utility/invoke.h:
5 
6 W:\Work\Software\Libraries\utl\include/utl/core/impl.h:
7 
8 W:\Work\Software\Libraries\utl\include/utl/core/version.h:
9 
10 W:\Work\Software\Libraries\utl\include/utl/core/types.h:
11 
12 W:\Work\Software\Libraries\utl\include/utl/meta/meta.h:
13 
14 W:\Work\Software\Libraries\utl\include/utl/meta/integral.h:
15 
16 W:\Work\Software\Libraries\utl\include/utl/meta/typelist.h:
17 
18 W:\Work\Software\Libraries\utl\include/utl/meta/idx_sequence.h:
19 
20 W:\Work\Software\Libraries\utl\include/utl/meta/detection.h:
21 
22 W:\Work\Software\Libraries\utl\include/utl/meta/logical.h:
23 
24 W:\Work\Software\Libraries\utl\include/utl/meta/selection.h:
25 
26 W:\Work\Software\Libraries\utl\include/utl/meta/sfinae.h:
27 
28 W:\Work\Software\Libraries\utl\include/utl/meta/invoke.h:
29 
30 W:\Work\Software\Libraries\utl\include/utl/meta/operations.h:
31 
32 W:\Work\Software\Libraries\utl\include/utl/meta/useif.h:
33 
34 W:\Work\Software\Libraries\utl\test\eclipse-cygwin\lib/gtest/gtest.h:
35 
STL&#39;s core language concepts.
Definition: _1wire.h:30
+
typename Fn::template apply< Args... > invoke
Definition: invoke.h:81
+
+
+ + + + diff --git a/doc/html/_concepts_2source_2tests_2test__1w__impl_8d.html b/doc/html/_concepts_2source_2tests_2test__1w__impl_8d.html new file mode 100644 index 0000000..f8a4e37 --- /dev/null +++ b/doc/html/_concepts_2source_2tests_2test__1w__impl_8d.html @@ -0,0 +1,107 @@ + + + + + + + +uTL: test/eclipse-cygwin/C++14-Concepts/source/tests/test_1w_impl.d File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
test_1w_impl.d File Reference
+
+ +
+ + + + diff --git a/doc/html/_concepts_2source_2tests_2test__1w__impl_8d_source.html b/doc/html/_concepts_2source_2tests_2test__1w__impl_8d_source.html new file mode 100644 index 0000000..cb243b7 --- /dev/null +++ b/doc/html/_concepts_2source_2tests_2test__1w__impl_8d_source.html @@ -0,0 +1,128 @@ + + + + + + + +uTL: test/eclipse-cygwin/C++14-Concepts/source/tests/test_1w_impl.d Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
test_1w_impl.d
+
+
+Go to the documentation of this file.
1 source/tests/test_1w_impl.o: \
2  W:/Work/Software/Libraries/utl/test/tests/test_1w_impl.cpp \ + W:\Work\Software\Libraries\utl\test\eclipse-cygwin\lib/gtest/gtest.h \ + W:\Work\Software\Libraries\utl\include/utl/com/_1wire_uart.h \ + W:\Work\Software\Libraries\utl\include/utl/core/impl.h \ + W:\Work\Software\Libraries\utl\include/utl/core/version.h \ + W:\Work\Software\Libraries\utl\include/utl/core/types.h \ + W:\Work\Software\Libraries\utl\include/utl/core/crtp.h \ + W:\Work\Software\Libraries\utl\include/utl/com/_1wire.h \ + W:\Work\Software\Libraries\utl\include/utl/com/_1wire_id.h \ + W:\Work\Software\Libraries\utl\include/utl/container/id.h \ + W:\Work\Software\Libraries\utl\include/utl/container/array.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/meta.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/integral.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/typelist.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/idx_sequence.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/detection.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/logical.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/selection.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/sfinae.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/invoke.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/operations.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/useif.h
3 
4 W:\Work\Software\Libraries\utl\test\eclipse-cygwin\lib/gtest/gtest.h:
5 
6 W:\Work\Software\Libraries\utl\include/utl/com/_1wire_uart.h:
7 
8 W:\Work\Software\Libraries\utl\include/utl/core/impl.h:
9 
10 W:\Work\Software\Libraries\utl\include/utl/core/version.h:
11 
12 W:\Work\Software\Libraries\utl\include/utl/core/types.h:
13 
14 W:\Work\Software\Libraries\utl\include/utl/core/crtp.h:
15 
16 W:\Work\Software\Libraries\utl\include/utl/com/_1wire.h:
17 
18 W:\Work\Software\Libraries\utl\include/utl/com/_1wire_id.h:
19 
20 W:\Work\Software\Libraries\utl\include/utl/container/id.h:
21 
22 W:\Work\Software\Libraries\utl\include/utl/container/array.h:
23 
24 W:\Work\Software\Libraries\utl\include/utl/meta/meta.h:
25 
26 W:\Work\Software\Libraries\utl\include/utl/meta/integral.h:
27 
28 W:\Work\Software\Libraries\utl\include/utl/meta/typelist.h:
29 
30 W:\Work\Software\Libraries\utl\include/utl/meta/idx_sequence.h:
31 
32 W:\Work\Software\Libraries\utl\include/utl/meta/detection.h:
33 
34 W:\Work\Software\Libraries\utl\include/utl/meta/logical.h:
35 
36 W:\Work\Software\Libraries\utl\include/utl/meta/selection.h:
37 
38 W:\Work\Software\Libraries\utl\include/utl/meta/sfinae.h:
39 
40 W:\Work\Software\Libraries\utl\include/utl/meta/invoke.h:
41 
42 W:\Work\Software\Libraries\utl\include/utl/meta/operations.h:
43 
44 W:\Work\Software\Libraries\utl\include/utl/meta/useif.h:
45 
STL&#39;s core language concepts.
Definition: _1wire.h:30
+
typename Fn::template apply< Args... > invoke
Definition: invoke.h:81
+
+
+ + + + diff --git a/doc/html/_concepts_2source_2tests_2test__i2c__impl_8d.html b/doc/html/_concepts_2source_2tests_2test__i2c__impl_8d.html new file mode 100644 index 0000000..95a42f9 --- /dev/null +++ b/doc/html/_concepts_2source_2tests_2test__i2c__impl_8d.html @@ -0,0 +1,107 @@ + + + + + + + +uTL: test/eclipse-cygwin/C++14-Concepts/source/tests/test_i2c_impl.d File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
test_i2c_impl.d File Reference
+
+ +
+ + + + diff --git a/doc/html/_concepts_2source_2tests_2test__i2c__impl_8d_source.html b/doc/html/_concepts_2source_2tests_2test__i2c__impl_8d_source.html new file mode 100644 index 0000000..212d768 --- /dev/null +++ b/doc/html/_concepts_2source_2tests_2test__i2c__impl_8d_source.html @@ -0,0 +1,125 @@ + + + + + + + +uTL: test/eclipse-cygwin/C++14-Concepts/source/tests/test_i2c_impl.d Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
test_i2c_impl.d
+
+
+Go to the documentation of this file.
1 source/tests/test_i2c_impl.o: \
2  W:/Work/Software/Libraries/utl/test/tests/test_i2c_impl.cpp \ + W:\Work\Software\Libraries\utl\test\eclipse-cygwin\lib/gtest/gtest.h \ + W:\Work\Software\Libraries\utl\include/utl/com/i2c_bb.h \ + W:\Work\Software\Libraries\utl\include/utl/core/impl.h \ + W:\Work\Software\Libraries\utl\include/utl/core/version.h \ + W:\Work\Software\Libraries\utl\include/utl/core/types.h \ + W:\Work\Software\Libraries\utl\include/utl/core/crtp.h \ + W:\Work\Software\Libraries\utl\include/utl/com/i2c.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/meta.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/integral.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/typelist.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/idx_sequence.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/detection.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/logical.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/selection.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/sfinae.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/invoke.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/operations.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/useif.h
3 
4 W:\Work\Software\Libraries\utl\test\eclipse-cygwin\lib/gtest/gtest.h:
5 
6 W:\Work\Software\Libraries\utl\include/utl/com/i2c_bb.h:
7 
8 W:\Work\Software\Libraries\utl\include/utl/core/impl.h:
9 
10 W:\Work\Software\Libraries\utl\include/utl/core/version.h:
11 
12 W:\Work\Software\Libraries\utl\include/utl/core/types.h:
13 
14 W:\Work\Software\Libraries\utl\include/utl/core/crtp.h:
15 
16 W:\Work\Software\Libraries\utl\include/utl/com/i2c.h:
17 
18 W:\Work\Software\Libraries\utl\include/utl/meta/meta.h:
19 
20 W:\Work\Software\Libraries\utl\include/utl/meta/integral.h:
21 
22 W:\Work\Software\Libraries\utl\include/utl/meta/typelist.h:
23 
24 W:\Work\Software\Libraries\utl\include/utl/meta/idx_sequence.h:
25 
26 W:\Work\Software\Libraries\utl\include/utl/meta/detection.h:
27 
28 W:\Work\Software\Libraries\utl\include/utl/meta/logical.h:
29 
30 W:\Work\Software\Libraries\utl\include/utl/meta/selection.h:
31 
32 W:\Work\Software\Libraries\utl\include/utl/meta/sfinae.h:
33 
34 W:\Work\Software\Libraries\utl\include/utl/meta/invoke.h:
35 
36 W:\Work\Software\Libraries\utl\include/utl/meta/operations.h:
37 
38 W:\Work\Software\Libraries\utl\include/utl/meta/useif.h:
39 
STL&#39;s core language concepts.
Definition: _1wire.h:30
+
typename Fn::template apply< Args... > invoke
Definition: invoke.h:81
+
+
+ + + + diff --git a/doc/html/_concepts_2source_2tests_2test__ostream__dev_8d.html b/doc/html/_concepts_2source_2tests_2test__ostream__dev_8d.html new file mode 100644 index 0000000..c75fb7c --- /dev/null +++ b/doc/html/_concepts_2source_2tests_2test__ostream__dev_8d.html @@ -0,0 +1,107 @@ + + + + + + + +uTL: test/eclipse-cygwin/C++14-Concepts/source/tests/test_ostream_dev.d File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
test_ostream_dev.d File Reference
+
+ +
+ + + + diff --git a/doc/html/_concepts_2source_2tests_2test__ostream__dev_8d_source.html b/doc/html/_concepts_2source_2tests_2test__ostream__dev_8d_source.html new file mode 100644 index 0000000..5b32b25 --- /dev/null +++ b/doc/html/_concepts_2source_2tests_2test__ostream__dev_8d_source.html @@ -0,0 +1,126 @@ + + + + + + + +uTL: test/eclipse-cygwin/C++14-Concepts/source/tests/test_ostream_dev.d Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
test_ostream_dev.d
+
+
+Go to the documentation of this file.
1 source/tests/test_ostream_dev.o: \
2  W:/Work/Software/Libraries/utl/test/tests/test_ostream_dev.cpp \ + W:\Work\Software\Libraries\utl\test\eclipse-cygwin\lib/gtest/gtest.h \ + W:\Work\Software\Libraries\utl\include/utl/dev/ostream_dev.h \ + W:\Work\Software\Libraries\utl\include/utl/core/impl.h \ + W:\Work\Software\Libraries\utl\include/utl/core/version.h \ + W:\Work\Software\Libraries\utl\include/utl/core/types.h \ + W:\Work\Software\Libraries\utl\include/utl/core/crtp.h \ + W:\Work\Software\Libraries\utl\include/utl/dev/dev_iterators.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/meta.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/integral.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/typelist.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/idx_sequence.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/detection.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/logical.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/selection.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/sfinae.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/invoke.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/operations.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/useif.h
3 
4 W:\Work\Software\Libraries\utl\test\eclipse-cygwin\lib/gtest/gtest.h:
5 
6 W:\Work\Software\Libraries\utl\include/utl/dev/ostream_dev.h:
7 
8 W:\Work\Software\Libraries\utl\include/utl/core/impl.h:
9 
10 W:\Work\Software\Libraries\utl\include/utl/core/version.h:
11 
12 W:\Work\Software\Libraries\utl\include/utl/core/types.h:
13 
14 W:\Work\Software\Libraries\utl\include/utl/core/crtp.h:
15 
16 W:\Work\Software\Libraries\utl\include/utl/dev/dev_iterators.h:
17 
18 W:\Work\Software\Libraries\utl\include/utl/meta/meta.h:
19 
20 W:\Work\Software\Libraries\utl\include/utl/meta/integral.h:
21 
22 W:\Work\Software\Libraries\utl\include/utl/meta/typelist.h:
23 
24 W:\Work\Software\Libraries\utl\include/utl/meta/idx_sequence.h:
25 
26 W:\Work\Software\Libraries\utl\include/utl/meta/detection.h:
27 
28 W:\Work\Software\Libraries\utl\include/utl/meta/logical.h:
29 
30 W:\Work\Software\Libraries\utl\include/utl/meta/selection.h:
31 
32 W:\Work\Software\Libraries\utl\include/utl/meta/sfinae.h:
33 
34 W:\Work\Software\Libraries\utl\include/utl/meta/invoke.h:
35 
36 W:\Work\Software\Libraries\utl\include/utl/meta/operations.h:
37 
38 W:\Work\Software\Libraries\utl\include/utl/meta/useif.h:
39  +
STL&#39;s core language concepts.
Definition: _1wire.h:30
+
typename Fn::template apply< Args... > invoke
Definition: invoke.h:81
+
+
+ + + + diff --git a/doc/html/_concepts_2source_2tests_2test__spi__impl_8d.html b/doc/html/_concepts_2source_2tests_2test__spi__impl_8d.html new file mode 100644 index 0000000..e571bd9 --- /dev/null +++ b/doc/html/_concepts_2source_2tests_2test__spi__impl_8d.html @@ -0,0 +1,107 @@ + + + + + + + +uTL: test/eclipse-cygwin/C++14-Concepts/source/tests/test_spi_impl.d File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
test_spi_impl.d File Reference
+
+ +
+ + + + diff --git a/doc/html/_concepts_2source_2tests_2test__spi__impl_8d_source.html b/doc/html/_concepts_2source_2tests_2test__spi__impl_8d_source.html new file mode 100644 index 0000000..5a56aeb --- /dev/null +++ b/doc/html/_concepts_2source_2tests_2test__spi__impl_8d_source.html @@ -0,0 +1,125 @@ + + + + + + + +uTL: test/eclipse-cygwin/C++14-Concepts/source/tests/test_spi_impl.d Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
test_spi_impl.d
+
+
+Go to the documentation of this file.
1 source/tests/test_spi_impl.o: \
2  W:/Work/Software/Libraries/utl/test/tests/test_spi_impl.cpp \ + W:\Work\Software\Libraries\utl\test\eclipse-cygwin\lib/gtest/gtest.h \ + W:\Work\Software\Libraries\utl\include/utl/com/spi_bb.h \ + W:\Work\Software\Libraries\utl\include/utl/core/impl.h \ + W:\Work\Software\Libraries\utl\include/utl/core/version.h \ + W:\Work\Software\Libraries\utl\include/utl/core/types.h \ + W:\Work\Software\Libraries\utl\include/utl/core/crtp.h \ + W:\Work\Software\Libraries\utl\include/utl/com/spi.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/meta.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/integral.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/typelist.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/idx_sequence.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/detection.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/logical.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/selection.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/sfinae.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/invoke.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/operations.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/useif.h
3 
4 W:\Work\Software\Libraries\utl\test\eclipse-cygwin\lib/gtest/gtest.h:
5 
6 W:\Work\Software\Libraries\utl\include/utl/com/spi_bb.h:
7 
8 W:\Work\Software\Libraries\utl\include/utl/core/impl.h:
9 
10 W:\Work\Software\Libraries\utl\include/utl/core/version.h:
11 
12 W:\Work\Software\Libraries\utl\include/utl/core/types.h:
13 
14 W:\Work\Software\Libraries\utl\include/utl/core/crtp.h:
15 
16 W:\Work\Software\Libraries\utl\include/utl/com/spi.h:
17 
18 W:\Work\Software\Libraries\utl\include/utl/meta/meta.h:
19 
20 W:\Work\Software\Libraries\utl\include/utl/meta/integral.h:
21 
22 W:\Work\Software\Libraries\utl\include/utl/meta/typelist.h:
23 
24 W:\Work\Software\Libraries\utl\include/utl/meta/idx_sequence.h:
25 
26 W:\Work\Software\Libraries\utl\include/utl/meta/detection.h:
27 
28 W:\Work\Software\Libraries\utl\include/utl/meta/logical.h:
29 
30 W:\Work\Software\Libraries\utl\include/utl/meta/selection.h:
31 
32 W:\Work\Software\Libraries\utl\include/utl/meta/sfinae.h:
33 
34 W:\Work\Software\Libraries\utl\include/utl/meta/invoke.h:
35 
36 W:\Work\Software\Libraries\utl\include/utl/meta/operations.h:
37 
38 W:\Work\Software\Libraries\utl\include/utl/meta/useif.h:
39 
STL&#39;s core language concepts.
Definition: _1wire.h:30
+
typename Fn::template apply< Args... > invoke
Definition: invoke.h:81
+
+
+ + + + diff --git a/doc/html/_formulas.tex b/doc/html/_formulas.tex new file mode 100644 index 0000000..3d19921 --- /dev/null +++ b/doc/html/_formulas.tex @@ -0,0 +1,17 @@ +\documentclass{article} +\usepackage{epsfig} +\pagestyle{empty} +\begin{document} +$ O(1) $ +\pagebreak + +$ O(logN) $ +\pagebreak + +$ O(N) $ +\pagebreak + +$ N $ +\pagebreak + +\end{document} diff --git a/doc/html/_r_e_a_d_m_e_8md.html b/doc/html/_r_e_a_d_m_e_8md.html new file mode 100644 index 0000000..3d908e7 --- /dev/null +++ b/doc/html/_r_e_a_d_m_e_8md.html @@ -0,0 +1,107 @@ + + + + + + + +uTL: README.md File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
README.md File Reference
+
+ +
+ + + + diff --git a/doc/html/_r_e_a_d_m_e_8md_source.html b/doc/html/_r_e_a_d_m_e_8md_source.html new file mode 100644 index 0000000..01fbd97 --- /dev/null +++ b/doc/html/_r_e_a_d_m_e_8md_source.html @@ -0,0 +1,105 @@ + + + + + + + +uTL: README.md Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
README.md
+
+ +
+ + + + diff --git a/doc/html/_t_concepts_8cpp.html b/doc/html/_t_concepts_8cpp.html new file mode 100644 index 0000000..9dd3148 --- /dev/null +++ b/doc/html/_t_concepts_8cpp.html @@ -0,0 +1,200 @@ + + + + + + + +uTL: test/tests/TConcepts.cpp File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
TConcepts.cpp File Reference
+
+
+
#include <utl/concepts/concepts.h>
+#include <utl/meta/meta.h>
+#include <gtest/gtest.h>
+
+

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Classes

struct  test_concepts::Empty
 
struct  test_concepts::HaveOnlyCopy
 
struct  test_concepts::HaveOnlyMove
 
struct  test_concepts::HaveCopyAndMove
 
class  test_concepts::HavePerfectForwarding
 
class  test_concepts::Base
 
class  test_concepts::Derived1
 
class  test_concepts::Derived2
 
class  test_concepts::HaveOperatorBase
 
struct  test_concepts::A
 
struct  test_concepts::B
 
struct  test_concepts::Inv
 
struct  test_concepts::Pred
 
struct  test_concepts::Incr
 
+ + + +

+Namespaces

 test_concepts
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

bool test_concepts::operator== (const A &l, const A &r)
 
bool test_concepts::operator!= (const A &l, const A &r)
 
bool test_concepts::operator== (const B &l, const B &r)
 
bool test_concepts::operator!= (const B &l, const B &r)
 
bool test_concepts::operator< (const B &l, const B &r)
 
bool test_concepts::operator<= (const B &l, const B &r)
 
bool test_concepts::operator> (const B &l, const B &r)
 
bool test_concepts::operator>= (const B &l, const B &r)
 
 test_concepts::TEST (TConcepts, Same)
 
 test_concepts::TEST (TConcepts, DerivedFrom)
 
 test_concepts::TEST (TConcepts, ConvertibleTo)
 
 test_concepts::TEST (TConcepts, CommonReference)
 
 test_concepts::TEST (TConcepts, Integral)
 
 test_concepts::TEST (TConcepts, Assignable)
 
 test_concepts::TEST (TConcepts, Swappable)
 
 test_concepts::TEST (TConcepts, Constructible)
 
 test_concepts::TEST (TConcepts, MovableCopyable)
 
 test_concepts::TEST (TConcepts, Boolean)
 
 test_concepts::TEST (TConcepts, Comparable)
 
 test_concepts::TEST (TConcepts, Types)
 
 test_concepts::TEST (TConcepts, Callable)
 
int test_concepts::type_printer (int *i)
 
 test_concepts::TEST (TConcepts, Iterators)
 
+
+
+ + + + diff --git a/doc/html/_t_concepts_8cpp.js b/doc/html/_t_concepts_8cpp.js new file mode 100644 index 0000000..a673857 --- /dev/null +++ b/doc/html/_t_concepts_8cpp.js @@ -0,0 +1,40 @@ +var _t_concepts_8cpp = +[ + [ "Empty", "structtest__concepts_1_1_empty.html", null ], + [ "HaveOnlyCopy", "structtest__concepts_1_1_have_only_copy.html", "structtest__concepts_1_1_have_only_copy" ], + [ "HaveOnlyMove", "structtest__concepts_1_1_have_only_move.html", "structtest__concepts_1_1_have_only_move" ], + [ "HaveCopyAndMove", "structtest__concepts_1_1_have_copy_and_move.html", "structtest__concepts_1_1_have_copy_and_move" ], + [ "HavePerfectForwarding", "classtest__concepts_1_1_have_perfect_forwarding.html", "classtest__concepts_1_1_have_perfect_forwarding" ], + [ "Base", "classtest__concepts_1_1_base.html", null ], + [ "Derived1", "classtest__concepts_1_1_derived1.html", null ], + [ "Derived2", "classtest__concepts_1_1_derived2.html", null ], + [ "HaveOperatorBase", "classtest__concepts_1_1_have_operator_base.html", "classtest__concepts_1_1_have_operator_base" ], + [ "A", "structtest__concepts_1_1_a.html", "structtest__concepts_1_1_a" ], + [ "B", "structtest__concepts_1_1_b.html", "structtest__concepts_1_1_b" ], + [ "Inv", "structtest__concepts_1_1_inv.html", "structtest__concepts_1_1_inv" ], + [ "Pred", "structtest__concepts_1_1_pred.html", "structtest__concepts_1_1_pred" ], + [ "Incr", "structtest__concepts_1_1_incr.html", "structtest__concepts_1_1_incr" ], + [ "operator!=", "_t_concepts_8cpp.html#aa7a67208d83b1c5bfe71be98a508b2a2", null ], + [ "operator!=", "_t_concepts_8cpp.html#a5020d93acd11bc3ef58376d39742f252", null ], + [ "operator<", "_t_concepts_8cpp.html#a7df33a6fa1bf9b0e019c754ad8130861", null ], + [ "operator<=", "_t_concepts_8cpp.html#a0a84bdf10913e789466806c544c3cd23", null ], + [ "operator==", "_t_concepts_8cpp.html#ae09100ab70ff8d9779ab82a64b32c379", null ], + [ "operator==", "_t_concepts_8cpp.html#a2bd289c839a61f3a1a4a993b8d19c252", null ], + [ "operator>", "_t_concepts_8cpp.html#a6c2d2768666e0eb1c5523345b8925e32", null ], + [ "operator>=", "_t_concepts_8cpp.html#aa621df5520d29f172fa1cef1d286936a", null ], + [ "TEST", "_t_concepts_8cpp.html#ab245465c002e0ed0837b91aa4c88a349", null ], + [ "TEST", "_t_concepts_8cpp.html#a5d2e53efce2d5c77999eb133966f898b", null ], + [ "TEST", "_t_concepts_8cpp.html#ae54bd81fa0239d5d914483314e328e4e", null ], + [ "TEST", "_t_concepts_8cpp.html#a8be0d791fe0ee2055d58940e360ff8ce", null ], + [ "TEST", "_t_concepts_8cpp.html#ace7dd5dcd339ad2bf5fd7b08b582ec7a", null ], + [ "TEST", "_t_concepts_8cpp.html#a1259dbf85ef361ae709e8b7d08ad0c8a", null ], + [ "TEST", "_t_concepts_8cpp.html#abe06b1186f30147f38171a2f5e95920e", null ], + [ "TEST", "_t_concepts_8cpp.html#af3f33066823dea74a24d89399fa26adb", null ], + [ "TEST", "_t_concepts_8cpp.html#a169b771eff69e1e3086857d88a28b239", null ], + [ "TEST", "_t_concepts_8cpp.html#a0f4ad0aba9c032d90024e839f2d9f380", null ], + [ "TEST", "_t_concepts_8cpp.html#a8f88e84cffb84123f470858c5c28c4fb", null ], + [ "TEST", "_t_concepts_8cpp.html#a9f6330d88c4d4c26e80f6c1b5546ea51", null ], + [ "TEST", "_t_concepts_8cpp.html#a0575232afeb3a1aed915d6de6e63a328", null ], + [ "TEST", "_t_concepts_8cpp.html#acef6bf32c3066c6c73a1055184a61c08", null ], + [ "type_printer", "_t_concepts_8cpp.html#adb4992f432f2a8cfed2c5bfa4bc5adaf", null ] +]; \ No newline at end of file diff --git a/doc/html/_t_concepts_8cpp_source.html b/doc/html/_t_concepts_8cpp_source.html new file mode 100644 index 0000000..51b6215 --- /dev/null +++ b/doc/html/_t_concepts_8cpp_source.html @@ -0,0 +1,155 @@ + + + + + + + +uTL: test/tests/TConcepts.cpp Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
TConcepts.cpp
+
+
+Go to the documentation of this file.
1 
20 #include <utl/concepts/concepts.h>
21 #include <utl/meta/meta.h>
22 #include <gtest/gtest.h>
23 
24 
25 namespace test_concepts {
26  using namespace utl;
27 
28  /*
29  * Fixture like types
30  */
31  struct Empty { };
32  struct HaveOnlyCopy {
33  HaveOnlyCopy(const HaveOnlyCopy&) = default;
34  HaveOnlyCopy(HaveOnlyCopy&&) = delete;
35  HaveOnlyCopy& operator= (const HaveOnlyCopy&) = default;
36  HaveOnlyCopy& operator= (HaveOnlyCopy&&) = delete;
37  };
38  struct HaveOnlyMove {
39  HaveOnlyMove(const HaveOnlyMove&) = delete;
40  HaveOnlyMove(HaveOnlyMove&&) = default;
41  HaveOnlyMove& operator= (const HaveOnlyMove&) = delete;
42  HaveOnlyMove& operator= (HaveOnlyMove&&) = default;
43  };
44  struct HaveCopyAndMove {
45  HaveCopyAndMove(const HaveCopyAndMove&) = default;
46  HaveCopyAndMove(HaveCopyAndMove&&) = default;
47  HaveCopyAndMove& operator= (const HaveCopyAndMove&) = default;
48  HaveCopyAndMove& operator= (HaveCopyAndMove&&) = default;
49  };
51  public: template<class T> HavePerfectForwarding(T&&) { }
52  };
53  class Base { };
54  class Derived1 : public Base { };
55  class Derived2 : public Derived1 { };
57  public: operator Base() { return base; }
59  };
60 
61 
62  struct A {
63  int a_;
64  public:
65  A(int a =0) : a_{a} { };
66  A(const A&) = default;
67  A(A&&) = default;
68  };
69  bool operator== (const A& l, const A& r) { return l.a_ == r.a_; }
70  bool operator!= (const A& l, const A& r) { return l.a_ != r.a_; }
71 
72  struct B {
73  int b_;
74  public:
75  B(int b =0) : b_{b} { };
76  B(const B&) = default;
77  B(B&&) = default;
78  B& operator= (const B&) = default;
79  B& operator= (B&&) = default;
80  };
81  bool operator== (const B& l, const B& r) { return l.b_ == r.b_; }
82  bool operator!= (const B& l, const B& r) { return l.b_ != r.b_; }
83  bool operator< (const B& l, const B& r) { return l.b_ < r.b_; }
84  bool operator<= (const B& l, const B& r) { return l.b_ <= r.b_; }
85  bool operator> (const B& l, const B& r) { return l.b_ > r.b_; }
86  bool operator>= (const B& l, const B& r) { return l.b_ >= r.b_; }
87 
88 
89  TEST(TConcepts, Same) {
90  // Same
91  EXPECT_EQ (true, (Same<int, int>));
92  EXPECT_EQ (false, (Same<int, long>));
93  EXPECT_EQ (true, (Same<int*, int*>));
94  EXPECT_EQ (true, (Same<double&, double&>));
95  EXPECT_EQ (false, (Same<int, Empty>));
96  EXPECT_EQ (false, (Same<Base, Derived1>));
97  }
98 
99  TEST(TConcepts, DerivedFrom) {
100  // DerivedFrom
101  EXPECT_EQ (true, (DerivedFrom<Derived1, Base>));
102  EXPECT_EQ (true, (DerivedFrom<Derived2, Derived1>));
103  EXPECT_EQ (true, (DerivedFrom<Derived2, Base>));
104  EXPECT_EQ (false, (DerivedFrom<Base, Derived1>));
105  EXPECT_EQ (false, (DerivedFrom<Base, int>));
106  EXPECT_EQ (false, (DerivedFrom<void, int>));
107  }
108 
109  TEST(TConcepts, ConvertibleTo) {
110  // ConvertibleTo
111  EXPECT_EQ (true, (ConvertibleTo<void, void>));
112  EXPECT_EQ (false, (ConvertibleTo<Base, void>));
113  EXPECT_EQ (false, (ConvertibleTo<Base*, Derived1*>));
114  EXPECT_EQ (true, (ConvertibleTo<Derived1*, Base*>));
115  EXPECT_EQ (true, (ConvertibleTo<HaveOperatorBase, Base>));
116  EXPECT_EQ (true, (ConvertibleTo<Base, HavePerfectForwarding>));
117  }
118 
119  TEST(TConcepts, CommonReference) {
120  // CommonReference
121  EXPECT_EQ (true, (CommonReference<Derived1, Base>));
122  EXPECT_EQ (true, (CommonReference<Derived1&, Base>));
123  EXPECT_EQ (true, (CommonReference<const Empty&&, const Empty&>));
124  EXPECT_EQ (false, (CommonReference<Empty&, const volatile Empty&>));
125  //FIXME: CommonReference needs SFINAE friendly implementation
126  //EXPECT_EQ (false, (CommonReference<Empty&&, const volatile Empty&>)); <- yields compiler error
127 
128  // Common
129  EXPECT_EQ (true, (Common<int, int>));
130  EXPECT_EQ (true, (Common<Base, Derived1>));
131  EXPECT_EQ (true, (Common<Derived1, Derived2>));
132  EXPECT_EQ (true, (Common<Base, HaveOperatorBase>));
133  EXPECT_EQ (true, (Common<Base, HavePerfectForwarding>));
134  }
135 
136  TEST(TConcepts, Integral) {
137  // Integral
138  EXPECT_EQ (false, (Integral<void>));
139  EXPECT_EQ (true, (Integral<int>));
140  EXPECT_EQ (true, (Integral<bool>));
141  EXPECT_EQ (false, (Integral<int*>));
142  EXPECT_EQ (false, (Integral<Base>));
145 
146  // SignedIntegral
147  EXPECT_EQ (false, (SignedIntegral<void>));
148  EXPECT_EQ (true, (SignedIntegral<int>));
149  EXPECT_EQ (false, (SignedIntegral<int*>));
150  EXPECT_EQ (false, (SignedIntegral<unsigned long>));
151  EXPECT_EQ (false, (SignedIntegral<double>));
152  EXPECT_EQ (false, (SignedIntegral<Base>));
154 
155  // UnsignedIntegral
156  EXPECT_EQ (false, (UnsignedIntegral<void>));
157  EXPECT_EQ (true, (UnsignedIntegral<unsigned int>));
158  EXPECT_EQ (false, (UnsignedIntegral<long>));
159  EXPECT_EQ (false, (UnsignedIntegral<double>));
160  EXPECT_EQ (false, (UnsignedIntegral<Base>));
162  }
163 
164  TEST(TConcepts, Assignable) {
165  // MoveAssignable
166  EXPECT_EQ (false, (MoveAssignable<void>));
167  EXPECT_EQ (true, (MoveAssignable<void*>));
168  EXPECT_EQ (true, (MoveAssignable<int>));
169  EXPECT_EQ (true, (MoveAssignable<int*>));
170  EXPECT_EQ (false, (MoveAssignable<HaveOnlyCopy>));
171  EXPECT_EQ (true, (MoveAssignable<HaveOnlyMove>));
172  EXPECT_EQ (true, (MoveAssignable<HaveCopyAndMove>));
173  EXPECT_EQ (true, (MoveAssignable<Empty>));
174  EXPECT_EQ (true, (MoveAssignable<HavePerfectForwarding>));
175 
176  // CopyAssignable
177  EXPECT_EQ (false, (CopyAssignable<void>));
178  EXPECT_EQ (true, (CopyAssignable<void*>));
179  EXPECT_EQ (true, (CopyAssignable<int>));
180  EXPECT_EQ (true, (CopyAssignable<int*>));
181  EXPECT_EQ (true, (CopyAssignable<HaveOnlyCopy>));
182  EXPECT_EQ (false, (CopyAssignable<HaveOnlyMove>));
183  EXPECT_EQ (true, (CopyAssignable<HaveCopyAndMove>));
184  EXPECT_EQ (true, (CopyAssignable<Empty>));
185  EXPECT_EQ (true, (CopyAssignable<HavePerfectForwarding>));
186 
187  // Assignable
188  EXPECT_EQ (false, (Assignable<void, void>));
189  EXPECT_EQ (false, (Assignable<int&, void>));
190  EXPECT_EQ (true, (Assignable<int&, int>));
191  EXPECT_EQ (false, (Assignable<int, int>));
192  EXPECT_EQ (false, (Assignable<int*, int*>));
193  EXPECT_EQ (true, (Assignable<Base&, Derived1>));
194  EXPECT_EQ (false, (Assignable<Derived1&, Base>));
195  EXPECT_EQ (true, (Assignable<HaveOnlyMove&, HaveOnlyMove&&>));
196  EXPECT_EQ (true , (Assignable<HaveOnlyMove&, HaveOnlyMove>));
197  EXPECT_EQ (true, (Assignable<Empty&, Empty>));
198  }
199 
200  TEST(TConcepts, Swappable) {
201  // Swappable, SwappableWith
202  EXPECT_EQ (false, (Swappable<void>));
203  EXPECT_EQ (true, (Swappable<void*>));
204  EXPECT_EQ (true, (Swappable<int>));
205  EXPECT_EQ (true, (Swappable<Base>));
206  EXPECT_EQ (true, (SwappableWith<int, int>));
207  EXPECT_EQ (false, (SwappableWith<int, Base>));
208  EXPECT_EQ (false, (SwappableWith<Base, Derived1>));
209 
210  // Destructible
211  EXPECT_EQ (false, (Destructible<void>));
212  EXPECT_EQ (true, (Destructible<void*>));
213  EXPECT_EQ (true, (Destructible<int>));
214  EXPECT_EQ (true, (Destructible<int&>));
215  EXPECT_EQ (true, (Destructible<Base>));
216  EXPECT_EQ (true, (Destructible<HavePerfectForwarding>));
217  }
218 
219  TEST(TConcepts, Constructible) {
220  // Constructible
221  EXPECT_EQ (false, (Constructible<void>));
222  EXPECT_EQ (true, (Constructible<void*>));
223  EXPECT_EQ (true, (Constructible<Base>));
224  EXPECT_EQ (false, (Constructible<HaveOnlyMove>));
225  EXPECT_EQ (true, (Constructible<HavePerfectForwarding, int>));
226 
227  // DefaultConstructible
228  EXPECT_EQ (false, (DefaultConstructible<void>));
229  EXPECT_EQ (true, (DefaultConstructible<void*>));
230  EXPECT_EQ (false, (DefaultConstructible<int&>));
231  EXPECT_EQ (true, (DefaultConstructible<Base>));
232  EXPECT_EQ (true, (DefaultConstructible<Derived1>));
233  EXPECT_EQ (false, (DefaultConstructible<HaveOnlyCopy>));
234  EXPECT_EQ (false, (DefaultConstructible<HaveOnlyMove>));
235  EXPECT_EQ (false, (DefaultConstructible<HavePerfectForwarding>));
236 
237  // MoveConstructible
238  EXPECT_EQ (false, (MoveConstructible<void>));
239  EXPECT_EQ (true, (MoveConstructible<void*>));
240  EXPECT_EQ (true, (MoveConstructible<Base>));
241  EXPECT_EQ (true, (MoveConstructible<Derived1>));
242  EXPECT_EQ (true, (MoveConstructible<HaveOnlyMove>));
243  EXPECT_EQ (false, (MoveConstructible<HaveOnlyCopy>));
244  EXPECT_EQ (true, (MoveConstructible<HaveCopyAndMove>));
245  EXPECT_EQ (true , (MoveConstructible<HavePerfectForwarding>));
246 
247  // CopyConstructible
248  EXPECT_EQ (false, (CopyConstructible<void>));
249  EXPECT_EQ (true, (CopyConstructible<void*>));
250  EXPECT_EQ (true, (CopyConstructible<Base>));
251  EXPECT_EQ (true, (CopyConstructible<Derived1>));
252  EXPECT_EQ (false, (CopyConstructible<HaveOnlyMove>));
253  EXPECT_EQ (false, (CopyConstructible<HaveOnlyCopy>));
254  EXPECT_EQ (true, (CopyConstructible<HaveCopyAndMove>));
255  EXPECT_EQ (true , (CopyConstructible<HavePerfectForwarding>));
256  }
257 
258  TEST(TConcepts, MovableCopyable) {
259  // Movable
260  EXPECT_EQ (false, (Movable<void>));
261  EXPECT_EQ (true, (Movable<int>));
262  EXPECT_EQ (true, (Movable<Base>));
263  EXPECT_EQ (true, (Movable<Derived1>));
264  EXPECT_EQ (true, (Movable<HaveOnlyMove>));
265  EXPECT_EQ (false, (Movable<HaveOnlyCopy>));
266  EXPECT_EQ (true, (Movable<HaveCopyAndMove>));
267  EXPECT_EQ (true , (Movable<HavePerfectForwarding>));
268 
269  // Copyable
270  EXPECT_EQ (false, (Copyable<void>));
271  EXPECT_EQ (true, (Copyable<int>));
272  EXPECT_EQ (true, (Copyable<Base>));
273  EXPECT_EQ (true, (Copyable<Derived1>));
274  EXPECT_EQ (false, (Copyable<HaveOnlyMove>));
275  EXPECT_EQ (false, (Copyable<HaveOnlyCopy>));
276  EXPECT_EQ (true, (Copyable<HaveCopyAndMove>));
277  EXPECT_EQ (true , (Copyable<HavePerfectForwarding>));
278  }
279 
280  TEST(TConcepts, Boolean) {
281  // Boolean
282  EXPECT_EQ (false, (Boolean<void>));
283  EXPECT_EQ (true, (Boolean<bool>));
284  EXPECT_EQ (true, (Boolean<int>));
285  EXPECT_EQ (true, (Boolean<double>));
286  EXPECT_EQ (true, (Boolean<std::true_type>));
287  EXPECT_EQ (true, (Boolean<meta::true_>));
288  EXPECT_EQ (false, (Boolean<Empty>));
289  }
290 
291  TEST(TConcepts, Comparable) {
292  // EqualityComparable
293  EXPECT_EQ (false, (EqualityComparable<void>));
294  EXPECT_EQ (true, (EqualityComparable<bool>));
295  EXPECT_EQ (true, (EqualityComparable<int>));
296  EXPECT_EQ (false, (EqualityComparable<Empty>));
297  EXPECT_EQ (true, (EqualityComparable<A>));
298 
299  // EqualityComparableWith
300  EXPECT_EQ (false, (EqualityComparableWith<void, bool>));
301  EXPECT_EQ (false, (EqualityComparableWith<void, void>));
302  EXPECT_EQ (true, (EqualityComparableWith<bool, bool>));
303  EXPECT_EQ (true, (EqualityComparableWith<int, int>));
304  EXPECT_EQ (true, (EqualityComparableWith<int, bool>));
305  EXPECT_EQ (false, (EqualityComparableWith<Empty, Empty>));
306  EXPECT_EQ (false, (EqualityComparableWith<int, Empty>));
307  EXPECT_EQ (true, (EqualityComparableWith<A, A>));
308  EXPECT_EQ (false, (EqualityComparableWith<A, B>));
309 
310  // StrictTotallyOrdered
311  EXPECT_EQ (false, (StrictTotallyOrdered<void>));
312  EXPECT_EQ (true, (StrictTotallyOrdered<bool>));
313  EXPECT_EQ (true, (StrictTotallyOrdered<int>));
314  EXPECT_EQ (true, (StrictTotallyOrdered<double>));
315  EXPECT_EQ (false, (StrictTotallyOrdered<Empty>));
316  EXPECT_EQ (false, (StrictTotallyOrdered<A>));
317  EXPECT_EQ (true, (StrictTotallyOrdered<B>));
318 
319  // StrictTotallyOrderedWith
320  EXPECT_EQ (false, (StrictTotallyOrderedWith<void, void>));
321  EXPECT_EQ (false, (StrictTotallyOrderedWith<int, void>));
322  EXPECT_EQ (true, (StrictTotallyOrderedWith<bool, bool>));
323  EXPECT_EQ (true, (StrictTotallyOrderedWith<int, double>));
324  EXPECT_EQ (false, (StrictTotallyOrderedWith<int, Empty>));
325  EXPECT_EQ (false, (StrictTotallyOrderedWith<Base, Derived1>));
326  EXPECT_EQ (false, (StrictTotallyOrderedWith<A, A>));
327  EXPECT_EQ (true, (StrictTotallyOrderedWith<B, B>));
328  EXPECT_EQ (false, (StrictTotallyOrderedWith<A, B>));
329  }
330 
331  TEST(TConcepts, Types) {
332  // Semiregular
333  EXPECT_EQ (false, (Semiregular<void>));
334  EXPECT_EQ (true, (Semiregular<int>));
335  EXPECT_EQ (true, (Semiregular<Empty>));
336  EXPECT_EQ (false, (Semiregular<HaveOnlyMove>));
337  EXPECT_EQ (false, (Semiregular<HaveOnlyCopy>));
338  EXPECT_EQ (false, (Semiregular<HaveCopyAndMove>));
339  EXPECT_EQ (false, (Semiregular<A>));
340  EXPECT_EQ (true, (Semiregular<B>));
341 
342  // Regular
343  EXPECT_EQ (false, (Regular<void>));
344  EXPECT_EQ (true, (Regular<int>));
345  EXPECT_EQ (true, (Regular<int*>));
346  EXPECT_EQ (false, (Regular<Empty>));
347  EXPECT_EQ (false, (Regular<HaveOnlyMove>));
348  EXPECT_EQ (false, (Regular<HaveOnlyCopy>));
349  EXPECT_EQ (false, (Regular<HaveCopyAndMove>));
350  EXPECT_EQ (false, (Regular<A>));
351  EXPECT_EQ (true, (Regular<B>));
352 
353  // Scalar
354  EXPECT_EQ (false, (Scalar<void>));
355  EXPECT_EQ (true, (Scalar<int>));
356  EXPECT_EQ (true, (Scalar<long*>));
357  EXPECT_EQ (false, (Scalar<A>));
358  EXPECT_EQ (false, (Scalar<B>));
359 
360  // Arithmetic
361  EXPECT_EQ (false, (Arithmetic<void>));
362  EXPECT_EQ (true, (Arithmetic<int>));
363  EXPECT_EQ (false, (Arithmetic<long*>));
364  EXPECT_EQ (false, (Arithmetic<A>));
365  EXPECT_EQ (false, (Arithmetic<B>));
366 
367  // FloatingPoint
368  EXPECT_EQ (false, (FloatingPoint<void>));
369  EXPECT_EQ (true, (FloatingPoint<float>));
370  EXPECT_EQ (true, (FloatingPoint<double>));
371  EXPECT_EQ (false, (FloatingPoint<int>));
372  EXPECT_EQ (false, (FloatingPoint<float*>));
373  EXPECT_EQ (false, (FloatingPoint<A>));
374  EXPECT_EQ (false, (FloatingPoint<B>));
375  }
376 
377  struct Inv {
378  void operator() (int) { };
379  void operator() () { };
380  };
381  struct Pred {
382  bool operator () (int) { return true; }
383  bool operator () (int, int) { return true; }
384  };
385  TEST(TConcepts, Callable) {
386  EXPECT_EQ (true, (Invocable<Inv, int>));
387  EXPECT_EQ (true, (Invocable<Inv>));
388  EXPECT_EQ (true, (Invocable<Inv, double>));
389  EXPECT_EQ (false, (Invocable<Inv, Empty>));
390 
391  EXPECT_EQ (true, (RegularInvocable<Inv, int>));
392 
393  EXPECT_EQ (false, (Predicate<Inv, int>));
394  EXPECT_EQ (true, (Predicate<Pred, int>));
395  EXPECT_EQ (false, (Predicate<Pred, Empty>));
396 
397  EXPECT_EQ (true, (Relation<Pred, int, int>));
398  EXPECT_EQ (true, (Relation<Pred, int, double>));
399  EXPECT_EQ (false, (Relation<Pred, Empty, int>));
400 
401  EXPECT_EQ (true, (StrictWeakOrder<Pred, int, int>));
402  EXPECT_EQ (false, (StrictWeakOrder<Pred, int, Empty>));
403  }
404 
405  struct Incr {
406  Incr& operator++() { return *this; }
407  Incr operator++(int) { return *this; }
408  };
409  int type_printer (int* i) { return *i; }
410  TEST(TConcepts, Iterators) {
411 
412 // type_printer(detail::try_ppI<Incr&>{});
413 // type_printer(detail::try_Ipp<Incr&>{});
414 // type_printer(meta::detected_t<detail::try_ppI, int>{});
415  EXPECT_EQ (true, (WeaklyIncrementable<int>));
416  EXPECT_EQ (false, (WeaklyIncrementable<void>));
417  EXPECT_EQ (false, (WeaklyIncrementable<meta::nil_>));
418  EXPECT_EQ (true, (WeaklyIncrementable<Incr>));
419  EXPECT_EQ (false, (WeaklyIncrementable<Incr&>));
420  }
421 }
422 
+
_utlConcept Swappable
Definition: stl.h:425
+ + +
bool operator<=(const B &l, const B &r)
Definition: TConcepts.cpp:84
+
Include all meta library.
+ + + + +
_utlConcept Assignable
Definition: stl.h:366
+
_utlConcept ConvertibleTo
Definition: stl.h:87
+ + +
_utlConcept Same
Definition: stl.h:62
+
int type_printer(int *i)
Definition: TConcepts.cpp:409
+
bool operator!=(const A &l, const A &r)
Definition: TConcepts.cpp:70
+ +
integral_< int, v > int_
int_ type: integral constant wrapper for int
Definition: integral.h:98
+
_utlConcept CommonReference
Definition: stl.h:293
+ + +
Concepts main include header.
+
_utlConcept DerivedFrom
Definition: stl.h:71
+
integral_< uint16_t, v > uint16_
uint16_ type: integral constant wrapper for uint16_t
Definition: integral.h:83
+
STL&#39;s core language concepts.
Definition: _1wire.h:30
+ + +
bool operator<(const B &l, const B &r)
Definition: TConcepts.cpp:83
+ +
Incr operator++(int)
Definition: TConcepts.cpp:407
+
_utlConcept Integral
Definition: stl.h:340
+ +
bool operator>(const B &l, const B &r)
Definition: TConcepts.cpp:85
+
_utlConcept UnsignedIntegral
Definition: stl.h:352
+ +
_utlConcept Boolean
Definition: stl.h:551
+ +
#define EXPECT_EQ(val1, val2)
Definition: gtest.h:16643
+
bool operator>=(const B &l, const B &r)
Definition: TConcepts.cpp:86
+
_utlConcept Constructible
Definition: stl.h:438
+ + + +
integral_< int16_t, v > int16_
int16_ type: integral constant wrapper for int16_t
Definition: integral.h:80
+
TEST(TConcepts, Same)
Definition: TConcepts.cpp:89
+ + +
_utlConcept SignedIntegral
Definition: stl.h:346
+
bool operator==(const A &l, const A &r)
Definition: TConcepts.cpp:69
+
+
+ + + + diff --git a/doc/html/_tinvoke_8cpp.html b/doc/html/_tinvoke_8cpp.html new file mode 100644 index 0000000..30f2096 --- /dev/null +++ b/doc/html/_tinvoke_8cpp.html @@ -0,0 +1,141 @@ + + + + + + + +uTL: test/tests/Tinvoke.cpp File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Tinvoke.cpp File Reference
+
+
+
#include <utl/utility/invoke.h>
+#include <gtest/gtest.h>
+#include <type_traits>
+
+

Go to the source code of this file.

+ + + + + + +

+Classes

struct  test_meta::Ifoo
 
struct  test_meta::Ibar
 
+ + + +

+Namespaces

 test_meta
 
+ + + + + +

+Functions

int test_meta::Ifun (int i)
 
 test_meta::TEST (Tinvoke, Invoke)
 
+

Detailed Description

+

Copyright (C) 2018-2019 Christos Choutouridis

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

+

You should have received a copy of the GNU Lesser General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file Tinvoke.cpp.

+
+
+ + + + diff --git a/doc/html/_tinvoke_8cpp.js b/doc/html/_tinvoke_8cpp.js new file mode 100644 index 0000000..3cacf97 --- /dev/null +++ b/doc/html/_tinvoke_8cpp.js @@ -0,0 +1,7 @@ +var _tinvoke_8cpp = +[ + [ "Ifoo", "structtest__meta_1_1_ifoo.html", "structtest__meta_1_1_ifoo" ], + [ "Ibar", "structtest__meta_1_1_ibar.html", "structtest__meta_1_1_ibar" ], + [ "Ifun", "_tinvoke_8cpp.html#a21d4736fe75f1a8389d1eb7359a4f8f1", null ], + [ "TEST", "_tinvoke_8cpp.html#a569cf8c253b61a7bdd8a893dd7af7adb", null ] +]; \ No newline at end of file diff --git a/doc/html/_tinvoke_8cpp_source.html b/doc/html/_tinvoke_8cpp_source.html new file mode 100644 index 0000000..36f05b9 --- /dev/null +++ b/doc/html/_tinvoke_8cpp_source.html @@ -0,0 +1,123 @@ + + + + + + + +uTL: test/tests/Tinvoke.cpp Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Tinvoke.cpp
+
+
+Go to the documentation of this file.
1 
20 #include <utl/utility/invoke.h>
21 #include <gtest/gtest.h>
22 #include <type_traits>
23 
24 namespace test_meta {
25  using namespace utl;
26 
27  /*
28  * Types to behave like Fixtures
29  */
30  int Ifun(int i) { return i; }
31  struct Ifoo {
32  int operator() (int i) {
33  return i;
34  }
35  };
36 
37  struct Ibar {
38  Ibar(int num) : num_(num) {}
39  int echo(int i) const { return i; }
40  int get() const { return num_; }
41  int num_;
42  };
43 
44  /*
45  * Test invoke()
46  */
47  TEST(Tinvoke, Invoke) {
48  Ifoo ifoo{};
49  const Ibar ibar{42};
50 
51  EXPECT_EQ (42, invoke(Ifun, 42));
52  EXPECT_EQ (42, invoke([] () { return Ifun(42); }));
53  EXPECT_EQ (42, invoke(Ifoo{}, 42));
54  EXPECT_EQ (42, invoke(ifoo, 42));
55  EXPECT_EQ (42, invoke(&Ibar::echo, ibar, 42));
56  EXPECT_EQ (42, invoke(&Ibar::get, ibar));
57 
62 
66 
67  EXPECT_EQ (true, (std::is_same<int, invoke_result_t<Ifoo, int>>()));
68  EXPECT_EQ (true, (std::is_same<meta::nil_, invoke_result_t<Ifoo>>()));
69  EXPECT_EQ (true, (std::is_same<meta::nil_, invoke_result_t<Ifoo, int, double>>()));
70 
71  }
72 }
+
int echo(int i) const
Definition: Tinvoke.cpp:39
+ + +
Ibar(int num)
Definition: Tinvoke.cpp:38
+ +
invoke() and invoke traits implementation
+
TEST(Tinvoke, Invoke)
Definition: Tinvoke.cpp:47
+
STL&#39;s core language concepts.
Definition: _1wire.h:30
+
int Ifun(int i)
Definition: Tinvoke.cpp:30
+ +
meta::eval< invoke_result< _Callable, _Args... > > invoke_result_t
invoke_result_t (for C++14)
Definition: invoke.h:180
+
std::is_invocable_r trait for C++11
Definition: invoke.h:138
+
#define EXPECT_EQ(val1, val2)
Definition: gtest.h:16643
+
typename Fn::template apply< Args... > invoke
Definition: invoke.h:81
+ +
int get() const
Definition: Tinvoke.cpp:40
+
std::is_invocable trait for C++11
Definition: invoke.h:130
+
+
+ + + + diff --git a/doc/html/_tmeta_8d.html b/doc/html/_tmeta_8d.html new file mode 100644 index 0000000..8dd36a8 --- /dev/null +++ b/doc/html/_tmeta_8d.html @@ -0,0 +1,107 @@ + + + + + + + +uTL: test/eclipse-cygwin/C++14-Concepts/source/tests/Tmeta.d File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Tmeta.d File Reference
+
+ +
+ + + + diff --git a/doc/html/_tmeta_8d_source.html b/doc/html/_tmeta_8d_source.html new file mode 100644 index 0000000..5c74d27 --- /dev/null +++ b/doc/html/_tmeta_8d_source.html @@ -0,0 +1,122 @@ + + + + + + + +uTL: test/eclipse-cygwin/C++14-Concepts/source/tests/Tmeta.d Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Tmeta.d
+
+
+Go to the documentation of this file.
1 source/tests/Tmeta.o: W:/Work/Software/Libraries/utl/test/tests/Tmeta.cpp \ + W:\Work\Software\Libraries\utl\include/utl/meta/meta.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/integral.h \ + W:\Work\Software\Libraries\utl\include/utl/core/impl.h \ + W:\Work\Software\Libraries\utl\include/utl/core/version.h \ + W:\Work\Software\Libraries\utl\include/utl/core/types.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/typelist.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/idx_sequence.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/detection.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/logical.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/selection.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/sfinae.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/invoke.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/operations.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/useif.h \ + W:\Work\Software\Libraries\utl\test\eclipse-cygwin\lib/gtest/gtest.h
2 
3 W:\Work\Software\Libraries\utl\include/utl/meta/meta.h:
4 
5 W:\Work\Software\Libraries\utl\include/utl/meta/integral.h:
6 
7 W:\Work\Software\Libraries\utl\include/utl/core/impl.h:
8 
9 W:\Work\Software\Libraries\utl\include/utl/core/version.h:
10 
11 W:\Work\Software\Libraries\utl\include/utl/core/types.h:
12 
13 W:\Work\Software\Libraries\utl\include/utl/meta/typelist.h:
14 
15 W:\Work\Software\Libraries\utl\include/utl/meta/idx_sequence.h:
16 
17 W:\Work\Software\Libraries\utl\include/utl/meta/detection.h:
18 
19 W:\Work\Software\Libraries\utl\include/utl/meta/logical.h:
20 
21 W:\Work\Software\Libraries\utl\include/utl/meta/selection.h:
22 
23 W:\Work\Software\Libraries\utl\include/utl/meta/sfinae.h:
24 
25 W:\Work\Software\Libraries\utl\include/utl/meta/invoke.h:
26 
27 W:\Work\Software\Libraries\utl\include/utl/meta/operations.h:
28 
29 W:\Work\Software\Libraries\utl\include/utl/meta/useif.h:
30 
31 W:\Work\Software\Libraries\utl\test\eclipse-cygwin\lib/gtest/gtest.h:
32 
STL&#39;s core language concepts.
Definition: _1wire.h:30
+
typename Fn::template apply< Args... > invoke
Definition: invoke.h:81
+
+
+ + + + diff --git a/doc/html/_tmeta_basic_8cpp.html b/doc/html/_tmeta_basic_8cpp.html new file mode 100644 index 0000000..2239899 --- /dev/null +++ b/doc/html/_tmeta_basic_8cpp.html @@ -0,0 +1,163 @@ + + + + + + + +uTL: test/tests/TmetaBasic.cpp File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
TmetaBasic.cpp File Reference
+
+
+
#include <utl/meta/meta.h>
+#include <gtest/gtest.h>
+#include <type_traits>
+
+

Go to the source code of this file.

+ + + + +

+Classes

struct  TmetaBasic::Identity< T >
 
+ + + +

+Namespaces

 TmetaBasic
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

 TmetaBasic::TEST (TmetaBasic, IntegrealType)
 
 TmetaBasic::TEST (TmetaBasic, IntegrealConstant)
 
 TmetaBasic::TEST (TmetaBasic, BasicTypes)
 
 TmetaBasic::TEST (TmetaBasic, Selection)
 
 TmetaBasic::TEST (TmetaBasic, LogicalOperations)
 
 TmetaBasic::TEST (TmetaBasic, ArithmeticOperations)
 
 TmetaBasic::TEST (TmetaBasic, ComparisonOperations)
 
 TmetaBasic::TEST (TmetaBasic, BitOperations)
 
template<typename T , typename = when<same_<T, int>::type::value>>
int TmetaBasic::check1 (T x)
 
int TmetaBasic::check1 (...)
 
template<typename T , typename = enable_if_t<same_<T, int>::type::value, void>>
int TmetaBasic::check2 (T x)
 
int TmetaBasic::check2 (...)
 
 TmetaBasic::TEST (TmetaBasic, Sfinae)
 
+

Detailed Description

+

Copyright (C) 2018 Christos Choutouridis

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

+

You should have received a copy of the GNU Lesser General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file TmetaBasic.cpp.

+
+
+ + + + diff --git a/doc/html/_tmeta_basic_8cpp.js b/doc/html/_tmeta_basic_8cpp.js new file mode 100644 index 0000000..d942c84 --- /dev/null +++ b/doc/html/_tmeta_basic_8cpp.js @@ -0,0 +1,17 @@ +var _tmeta_basic_8cpp = +[ + [ "Identity", "struct_tmeta_basic_1_1_identity.html", "struct_tmeta_basic_1_1_identity" ], + [ "check1", "_tmeta_basic_8cpp.html#ace6bcbc9c530fa498900e5fbcf6e7f49", null ], + [ "check1", "_tmeta_basic_8cpp.html#a8fd829e39bf3d2429d66205a392a458f", null ], + [ "check2", "_tmeta_basic_8cpp.html#a693588cb4aefc8048c1bc4fb414fa5fe", null ], + [ "check2", "_tmeta_basic_8cpp.html#a691f22848ac59a710a5a588e25b79bdf", null ], + [ "TEST", "_tmeta_basic_8cpp.html#adbcfd80fbcc5a0fa1a132ea56c18e7ec", null ], + [ "TEST", "_tmeta_basic_8cpp.html#a9366a9541a3c137f06a56bb0de5dea26", null ], + [ "TEST", "_tmeta_basic_8cpp.html#a76a07a924d058a3e5f60e1b40417348a", null ], + [ "TEST", "_tmeta_basic_8cpp.html#aa66e8f02bed5fa0b5a84c70f80c29b98", null ], + [ "TEST", "_tmeta_basic_8cpp.html#a8ee52197913571c983d610af12a1a664", null ], + [ "TEST", "_tmeta_basic_8cpp.html#aabef072b3cd9e8f59bd696590b1b5dfd", null ], + [ "TEST", "_tmeta_basic_8cpp.html#a3ba38c6705e4f363cf52f330afedfdb6", null ], + [ "TEST", "_tmeta_basic_8cpp.html#ae75afce18d82aad495ef6b9f7d5c0470", null ], + [ "TEST", "_tmeta_basic_8cpp.html#a5662c8ed09164d9e4ffbcc3931580eb9", null ] +]; \ No newline at end of file diff --git a/doc/html/_tmeta_basic_8cpp_source.html b/doc/html/_tmeta_basic_8cpp_source.html new file mode 100644 index 0000000..0bf3e20 --- /dev/null +++ b/doc/html/_tmeta_basic_8cpp_source.html @@ -0,0 +1,165 @@ + + + + + + + +uTL: test/tests/TmetaBasic.cpp Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
TmetaBasic.cpp
+
+
+Go to the documentation of this file.
1 
20 #include <utl/meta/meta.h>
21 #include <gtest/gtest.h>
22 #include <type_traits>
23 
24 namespace TmetaBasic {
25  using namespace utl;
26  using namespace meta;
27 
28  /*
29  * Types to behave like Fixtures
30  */
31  // Test type_of fixture
32  template<class T> struct Identity {
33  using type = T;
34  };
35 
36  /*
37  * Test integral constant
38  */
39  TEST(TmetaBasic, IntegrealType) {
40  EXPECT_EQ(true, (std::is_same<int, eval<Identity<int>>>::value));
41  EXPECT_EQ(true, (std::is_same<nil_, eval<nil_>>::value));
42  EXPECT_EQ(true, (std::is_same<nil_, eval<eval<nil_>>>::value));
43  EXPECT_EQ(true, (std::is_same<nil_, eval<eval<eval<nil_>>>>::value));
44  }
45  TEST(TmetaBasic, IntegrealConstant) {
46  EXPECT_EQ(true, (std::is_same<int, integral_<int, 42>::value_type>::value));
47  EXPECT_EQ(true, (std::is_same<int, integral_<int, 42>::type::value_type>::value));
50  }
51  TEST(TmetaBasic, BasicTypes) {
52  EXPECT_EQ(true, (std::is_same<bool, bool_<false>::value_type>::value));
54  EXPECT_EQ(true, (std::is_same<bool, false_::value_type>::value));
55  EXPECT_EQ(false, false_::value);
56  EXPECT_EQ(true, (std::is_same<bool, true_::value_type>::value));
57  EXPECT_EQ(true, true_::value);
58 
59  EXPECT_EQ(true, (std::is_same<int8_t, int8_<0>::value_type>::value));
61  EXPECT_EQ(true, (std::is_same<uint8_t, uint8_<0>::value_type>::value));
63  EXPECT_EQ(true, (std::is_same<int16_t, int16_<0>::value_type>::value));
65  EXPECT_EQ(true, (std::is_same<uint16_t, uint16_<0>::value_type>::value));
67  EXPECT_EQ(true, (std::is_same<int32_t, int32_<0>::value_type>::value));
69  EXPECT_EQ(true, (std::is_same<uint32_t, uint32_<0>::value_type>::value));
71 
72  EXPECT_EQ(true, (std::is_same<char, char_<0>::value_type>::value));
74  EXPECT_EQ(true, (std::is_same<int, int_<0>::value_type>::value));
76  EXPECT_EQ(true, (std::is_same<long, long_<0>::value_type>::value));
78 
79  EXPECT_EQ(true, (std::is_same<index_t, index_<0>::value_type>::value));
81  EXPECT_EQ(true, (std::is_same<size_t, size_<0>::value_type>::value));
83 
84  EXPECT_EQ(sizeof(int), sizeof_<int>::value);
85  EXPECT_EQ(alignof(int), alignof_<int>::value);
86  EXPECT_EQ(static_cast<index_t>(-1), Npos::value);
87  }
88 
89  /*
90  * Test integral constant selection operations
91  */
92  TEST(TmetaBasic, Selection) {
93  struct Foo {};
94  struct Bar {};
95 
96  EXPECT_EQ (true, (std::is_same<int_<42>, if_c<true, int_<42>, false_>>()));
97  EXPECT_EQ (true, (std::is_same<Foo, if_c<false, int_<42>, Foo>>()));
98  EXPECT_EQ (true, (std::is_same<Foo, if_c<42, Foo, Bar>>()));
99 
100  EXPECT_EQ (true, (std::is_same<int_<42>, if_<true_, int_<42>, Bar>>()));
101  EXPECT_EQ (true, (std::is_same<Bar, if_<false_, int_<42>, Bar>>()));
102  EXPECT_EQ (true, (std::is_same<int_<42>, if_<int_<1>, int_<42>, Bar>>()));
103  EXPECT_EQ (true, (std::is_same<Foo, if_<int_<0>, int_<42>, Foo>>()));
104 
105  EXPECT_EQ (true, (std::is_same<true_, first_of<true_, false_>>()));
106  EXPECT_EQ (false,(std::is_same<true_, first_of<false_, true_>>()));
107  EXPECT_EQ (false,(std::is_same<true_, second_of<true_, false_>>()));
108  EXPECT_EQ (true, (std::is_same<true_, second_of<false_, true_>>()));
109 
110  }
111 
112  TEST(TmetaBasic, LogicalOperations) {
113  struct Foo {};
114  struct Bar {};
115 
116  EXPECT_EQ (true, (std::is_same<true_, not_c<false>>::value));
117  EXPECT_EQ (true, (std::is_same<false_, not_c<true>>::value));
118  EXPECT_EQ (true, (std::is_same<false_, not_c<1>>::value));
119  EXPECT_EQ (true, (std::is_same<true_, not_c<0>>::value));
120 
121  EXPECT_EQ (true, (std::is_same<true_, not_<false_>>()));
122  EXPECT_EQ (true, (std::is_same<false_, not_<true_>>()));
123  EXPECT_EQ (true, (std::is_same<true_, not_<int_<0>>>()));
124  EXPECT_EQ (true, (std::is_same<false_, not_<int_<1>>>()));
125 
126  EXPECT_EQ (true, (std::is_same<false_, or_<false_, false_, not_c<true>, int_<0>, not_<true_>>>()));
127  EXPECT_EQ (true, (std::is_same<false_, or_<>>()));
128  EXPECT_EQ (true, (std::is_same<int_<1>,or_<int_<1>>>()));
129  EXPECT_EQ (true, (std::is_same<true_, or_<true_>>()));
130  EXPECT_EQ (true, (std::is_same<true_, or_<false_, true_>>()));
131  EXPECT_EQ (true, (std::is_same<true_, or_<false_, false_, true_>>()));
132  EXPECT_EQ (true, (std::is_same<int_<1>,or_<int_<0>, false_, not_<true_>, not_c<true>, int_<1>>>()));
133 
134  EXPECT_EQ (true, (std::is_same<true_, and_<true_, true_, int_<1>, not_<false_>, not_c<false>>>()));
135  EXPECT_EQ (true, (std::is_same<true_, and_<>>()));
136  EXPECT_EQ (true, (std::is_same<true_, and_<true_>>()));
137  EXPECT_EQ (true, (std::is_same<false_, and_<false_>>()));
138  EXPECT_EQ (true, (std::is_same<true_, and_<true_, true_>>()));
139  EXPECT_EQ (true, (std::is_same<false_, and_<true_, false_>>()));
140  EXPECT_EQ (true, (std::is_same<true_, and_<true_, true_, true_>>()));
141  EXPECT_EQ (true, (std::is_same<false_, and_<true_, true_, false_>>()));
142 
143  EXPECT_EQ (true, (same_<Foo, Foo>()));
144  EXPECT_EQ (false, (same_<Foo, Bar>()));
145  EXPECT_EQ (true, (not_same_<Foo, Bar>()));
146 
147  }
148 
149  /*
150  * Test integral constant arithmetic operations
151  */
152  TEST(TmetaBasic, ArithmeticOperations) {
153  EXPECT_EQ (int_<42>(), inc<int_<41>>());
154  EXPECT_EQ (int_<42>(), dec<int_<43>>());
161  }
162 
163  /*
164  * Test integral constant comparison operations
165  */
166  TEST(TmetaBasic, ComparisonOperations) {
167  EXPECT_EQ (true, (comp_eq<int_<7>, int_<7>>()));
168  EXPECT_EQ (true, (comp_eq<int_<-7>, int_<-7>>()));
169  EXPECT_EQ (false, (comp_eq<int_<42>, int_<7>>()));
170 
171  EXPECT_EQ (true, (comp_ne<int_<42>, int_<7>>()));
172  EXPECT_EQ (false, (comp_ne<int_<42>, int_<42>>()));
173  EXPECT_EQ (true, (comp_ne<int_<42>, int_<-42>>()));
174 
175  EXPECT_EQ (true, (comp_lt<int_<42>, int_<43>>()));
176  EXPECT_EQ (true, (comp_lt<int_<-7>, int_<-5>>()));
177  EXPECT_EQ (false, (comp_lt<int_<43>, int_<42>>()));
178 
179  EXPECT_EQ (true, (comp_gt<int_<42>, int_<7>>()));
180  EXPECT_EQ (true, (comp_gt<int_<7>, int_<-42>>()));
181  EXPECT_EQ (false, (comp_gt<int_<7>, int_<42>>()));
182 
183  EXPECT_EQ (true, (comp_le<int_<7>, int_<42>>()));
184  EXPECT_EQ (true, (comp_le<int_<-7>, int_<42>>()));
185  EXPECT_EQ (true, (comp_le<int_<42>, int_<42>>()));
186  EXPECT_EQ (true, (comp_le<int_<-7>, int_<-7>>()));
187  EXPECT_EQ (false, (comp_le<int_<42>, int_<7>>()));
188  EXPECT_EQ (false, (comp_le<int_<7>, int_<-42>>()));
189 
190  EXPECT_EQ (true, (comp_ge<int_<42>, int_<7>>()));
191  EXPECT_EQ (true, (comp_ge<int_<42>, int_<-7>>()));
192  EXPECT_EQ (true, (comp_ge<int_<42>, int_<42>>()));
193  EXPECT_EQ (true, (comp_ge<int_<-7>, int_<-7>>()));
194  EXPECT_EQ (false, (comp_ge<int_<42>, int_<43>>()));
195  EXPECT_EQ (false, (comp_ge<int_<-7>, int_<42>>()));
196  }
197 
198  /*
199  * Test integral constant bit operations
200  */
201  TEST(TmetaBasic, BitOperations) {
203  EXPECT_EQ (0xFF, (bitor_ <uint8_<0x55>, uint8_<0xAA>>()));
205  EXPECT_EQ (0x00, (bitnot_<uint8_<-1>>()));
206 
210  EXPECT_EQ (0x0000, (bitnot_<uint16_<-1>>()));
211 
216  }
217 
218  /*
219  * SFINAE
220  */
221  template <typename T, typename =when<same_<T, int>::type::value>>
222  int check1 (T x) { return x; }
223  int check1 (...) { return 0; }
224 
225  template <typename T, typename =enable_if_t<same_<T, int>::type::value, void>>
226  int check2 (T x) { return x; }
227  int check2 (...) { return 0; }
228 
229  TEST(TmetaBasic, Sfinae) {
230  EXPECT_EQ (42, check1(42));
231  EXPECT_EQ (0, check1(42.0));
232  EXPECT_EQ (0, check1());
233 
234  EXPECT_EQ (42, check2(42));
235  EXPECT_EQ (0, check2(42.0));
236  EXPECT_EQ (0, check2());
237  }
238 
239 }
T1 first_of
Select the first type of a type sequence.
Definition: selection.h:76
+
Include all meta library.
+
integral_< uint8_t, v > uint8_
uint8_ type: integral constant wrapper for uint8_t
Definition: integral.h:76
+
bool_< _Tp1()==_Tp2()> comp_eq
Definition: operations.h:184
+
integral_< typename _Tp::value_type,(typename _Tp::value_type)(_Tp() > > shift())> shift_right
Definition: operations.h:221
+
not_< comp_eq< _Tp1, _Tp2 > > comp_ne
Not equal.
Definition: operations.h:189
+
integral_< int8_t, v > int8_
int8_ type: integral constant wrapper for int8_t
Definition: integral.h:73
+
if_c< If::type::value, Args... > if_
Select one type or another depending on a compile-time Boolean type.
Definition: selection.h:66
+
integral_< decltype(_Tp1() &_Tp2()), _Tp1() &_Tp2()> bitand_
Definition: operations.h:208
+
integral_< decltype(-_Tp()), -_Tp()> negate
Negation.
Definition: operations.h:138
+
add< _Tp1, negate< _Tp2 > > sub
Substruction.
Definition: operations.h:165
+
integral_< decltype(_Tp2() *_Tp2()), _Tp1() *_Tp2() > mult
Multiplication.
Definition: operations.h:150
+
bool_< true > true_
The type used as a compile-time boolean with true value.
Definition: integral.h:68
+
eval< detail::if_c_< B, Args... > > if_c
Select one type or another depending on a compile-time Boolean.
Definition: selection.h:62
+
TEST(TmetaBasic, IntegrealType)
Definition: TmetaBasic.cpp:39
+
T2 second_of
Select the second type of a type sequence.
Definition: selection.h:79
+
bool_<(_Tp1()< _Tp2())> comp_lt
Definition: operations.h:186
+
integral_< size_t, v > size_
size_ type: integral constant wrapper for size_t a.k.a std::size_t
Definition: integral.h:110
+
integral_< decltype(_Tp1()|_Tp2()), _Tp1()|_Tp2()> bitor_
Definition: operations.h:211
+
integral_< typename _T::value_type,(typename _T::value_type)(~_T())> bitnot_
Definition: operations.h:205
+ +
integral_< long, v > long_
long_ type: integral constant wrapper for long
Definition: integral.h:102
+ +
std::integral_constant< Tp, v > integral_
Definition: integral.h:58
+
integral_< decltype(_Tp1() % _Tp2()), _Tp1() % _Tp2() > modulo
Modulo.
Definition: operations.h:162
+
comp_lt< _Tp2, _Tp1 > comp_gt
Greater than.
Definition: operations.h:191
+
integral_< typename _Tp::value_type,(typename _Tp::value_type)(_Tp()<< shift())> shift_left
Definition: operations.h:218
+
integral_< int, v > int_
int_ type: integral constant wrapper for int
Definition: integral.h:98
+
bool_< false > false_
The type used as a compile-time boolean with false value.
Definition: integral.h:69
+
integral_< decltype(_Tp1()+_Tp2()), _Tp1()+_Tp2() > add
Addition.
Definition: operations.h:144
+
typename Tp::type eval
Type alias for Tp::type. Used to evaluate/extract return type of metafunctions.
Definition: integral.h:49
+
integral_< char, v > char_
char_ type: integral constant wrapper for char
Definition: integral.h:94
+
bool_<!B > not_c
Negate the bool constant parameter.
Definition: operations.h:43
+
integral_< uint16_t, v > uint16_
uint16_ type: integral constant wrapper for uint16_t
Definition: integral.h:83
+
STL&#39;s core language concepts.
Definition: _1wire.h:30
+ +
integral_< decltype(_Tp1() ^ _Tp2()), _Tp1() ^ _Tp2()> bitxor_
Definition: operations.h:215
+
integral_< index_t, v > index_
index_ type: integral constant wrapper for index_t a.k.a std::size_t
Definition: integral.h:106
+
size_< alignof(Tp)> alignof_
Definition: integral.h:120
+
add< _Tp, int_<-1 > > dec
decrease
Definition: operations.h:173
+
int check1(T x)
Definition: TmetaBasic.cpp:222
+
not_< comp_lt< _Tp1, _Tp2 > > comp_ge
Greater or equal.
Definition: operations.h:195
+ +
integral_< bool, v > bool_
bool_ type: integral constant wrapper for bool
Definition: integral.h:66
+
size_t index_t
index_t and size_t mend to be interchangeable
Definition: types.h:38
+
integral_< decltype(_Tp2()/_Tp2()), _Tp1()/_Tp2() > divide
Division.
Definition: operations.h:156
+
integral_< int32_t, v > int32_
int32_ type: integral constant wrapper for int32_t
Definition: integral.h:87
+
int check2(T x)
Definition: TmetaBasic.cpp:226
+
size_< sizeof(Tp)> sizeof_
Definition: integral.h:115
+
#define EXPECT_EQ(val1, val2)
Definition: gtest.h:16643
+
not_< eval< same_< _T1, _T2 > >> not_same_
Definition: operations.h:111
+
eval< detail::_or_< _Ts... > > or_
Definition: operations.h:70
+
not_c< _Tp::type::value > not_
not
Definition: operations.h:47
+
eval< detail::_and_< _Ts... > > and_
Definition: operations.h:96
+ +
integral_< uint32_t, v > uint32_
uint32_ type: integral constant wrapper for uint32_t
Definition: integral.h:90
+
integral_< int16_t, v > int16_
int16_ type: integral constant wrapper for int16_t
Definition: integral.h:80
+
not_< comp_lt< _Tp2, _Tp1 > > comp_le
Less or equal.
Definition: operations.h:193
+ +
add< _Tp, int_< 1 > > inc
Increase.
Definition: operations.h:169
+
+
+ + + + diff --git a/doc/html/_tmeta_basic_8d.html b/doc/html/_tmeta_basic_8d.html new file mode 100644 index 0000000..6ba1796 --- /dev/null +++ b/doc/html/_tmeta_basic_8d.html @@ -0,0 +1,107 @@ + + + + + + + +uTL: test/eclipse-cygwin/C++14/source/tests/TmetaBasic.d File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
TmetaBasic.d File Reference
+
+ +
+ + + + diff --git a/doc/html/_tmeta_basic_8d_source.html b/doc/html/_tmeta_basic_8d_source.html new file mode 100644 index 0000000..b7a4d11 --- /dev/null +++ b/doc/html/_tmeta_basic_8d_source.html @@ -0,0 +1,121 @@ + + + + + + + +uTL: test/eclipse-cygwin/C++14/source/tests/TmetaBasic.d Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
TmetaBasic.d
+
+
+Go to the documentation of this file.
1 source/tests/TmetaBasic.o: \
2  W:/Work/Software/Libraries/utl/test/tests/TmetaBasic.cpp \ + W:\Work\Software\Libraries\utl\include/utl/meta/meta.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/integral.h \ + W:\Work\Software\Libraries\utl\include/utl/core/impl.h \ + W:\Work\Software\Libraries\utl\include/utl/core/version.h \ + W:\Work\Software\Libraries\utl\include/utl/core/types.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/selection.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/operations.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/useif.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/sfinae.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/typelist.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/detection.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/invoke.h \ + W:\Work\Software\Libraries\utl\test\eclipse-cygwin\lib/gtest/gtest.h
3 
4 W:\Work\Software\Libraries\utl\include/utl/meta/meta.h:
5 
6 W:\Work\Software\Libraries\utl\include/utl/meta/integral.h:
7 
8 W:\Work\Software\Libraries\utl\include/utl/core/impl.h:
9 
10 W:\Work\Software\Libraries\utl\include/utl/core/version.h:
11 
12 W:\Work\Software\Libraries\utl\include/utl/core/types.h:
13 
14 W:\Work\Software\Libraries\utl\include/utl/meta/selection.h:
15 
16 W:\Work\Software\Libraries\utl\include/utl/meta/operations.h:
17 
18 W:\Work\Software\Libraries\utl\include/utl/meta/useif.h:
19 
20 W:\Work\Software\Libraries\utl\include/utl/meta/sfinae.h:
21 
22 W:\Work\Software\Libraries\utl\include/utl/meta/typelist.h:
23 
24 W:\Work\Software\Libraries\utl\include/utl/meta/detection.h:
25 
26 W:\Work\Software\Libraries\utl\include/utl/meta/invoke.h:
27 
28 W:\Work\Software\Libraries\utl\test\eclipse-cygwin\lib/gtest/gtest.h:
29 
STL&#39;s core language concepts.
Definition: _1wire.h:30
+
typename Fn::template apply< Args... > invoke
Definition: invoke.h:81
+ +
+
+ + + + diff --git a/doc/html/_tmeta_detection_8cpp.html b/doc/html/_tmeta_detection_8cpp.html new file mode 100644 index 0000000..01a283f --- /dev/null +++ b/doc/html/_tmeta_detection_8cpp.html @@ -0,0 +1,174 @@ + + + + + + + +uTL: test/tests/TmetaDetection.cpp File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
TmetaDetection.cpp File Reference
+
+
+
#include <utl/meta/meta.h>
+#include <gtest/gtest.h>
+#include <type_traits>
+
+

Go to the source code of this file.

+ + + + + + + + + + +

+Classes

struct  TmetaDetection::Foo
 
struct  TmetaDetection::Bar
 
struct  TmetaDetection::A< T >
 
struct  TmetaDetection::mFun< T1, T2 >
 
+ + + +

+Namespaces

 TmetaDetection
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

template<typename T >
using TmetaDetection::try_type = typename T::type
 
template<typename T >
using TmetaDetection::try_none = typename T::none
 
template<typename T >
using TmetaDetection::try_ctor1 = decltype(T(std::declval< int >(), std::declval< double >()))
 
template<typename T >
using TmetaDetection::try_ctor2 = decltype(T(std::declval< int >()))
 
template<typename T >
using TmetaDetection::try_ppT = decltype(++(std::declval< T >()))
 
template<typename T >
using TmetaDetection::try_Tpp = decltype(std::declval< T >()++)
 
template<typename T >
using TmetaDetection::try_sfun = decltype(std::declval< T >().sfun())
 
+ + + + + + + + + +

+Functions

 TmetaDetection::TEST (TmetaDetection, VoidType)
 
 TmetaDetection::TEST (TmetaDetection, NotAType)
 
 TmetaDetection::TEST (TmetaDetection, IsDetected)
 
 TmetaDetection::TEST (TmetaDetection, Toolkit)
 
+

Detailed Description

+

Copyright (C) 2018 Christos Choutouridis

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

+

You should have received a copy of the GNU Lesser General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file TmetaDetection.cpp.

+
+
+ + + + diff --git a/doc/html/_tmeta_detection_8cpp.js b/doc/html/_tmeta_detection_8cpp.js new file mode 100644 index 0000000..fbd6277 --- /dev/null +++ b/doc/html/_tmeta_detection_8cpp.js @@ -0,0 +1,18 @@ +var _tmeta_detection_8cpp = +[ + [ "Foo", "struct_tmeta_detection_1_1_foo.html", null ], + [ "Bar", "struct_tmeta_detection_1_1_bar.html", null ], + [ "A", "struct_tmeta_detection_1_1_a.html", "struct_tmeta_detection_1_1_a" ], + [ "mFun", "struct_tmeta_detection_1_1m_fun.html", "struct_tmeta_detection_1_1m_fun" ], + [ "try_ctor1", "_tmeta_detection_8cpp.html#a51bb4ddb42b30683a5838f8425126955", null ], + [ "try_ctor2", "_tmeta_detection_8cpp.html#a9fb54f795c97999192547571ba631be7", null ], + [ "try_none", "_tmeta_detection_8cpp.html#a5b1aa9fde2d938f131aa21dfbc31066d", null ], + [ "try_ppT", "_tmeta_detection_8cpp.html#a5a316a6cdd1fcf52966fee4f648f5986", null ], + [ "try_sfun", "_tmeta_detection_8cpp.html#ae8a09443bafe27ded567410f5d028934", null ], + [ "try_Tpp", "_tmeta_detection_8cpp.html#a449d376e34edf3b90990510b64998ed6", null ], + [ "try_type", "_tmeta_detection_8cpp.html#a8afedee9c8f0f980114df2970b85b3d6", null ], + [ "TEST", "_tmeta_detection_8cpp.html#aa064e60dc07918977247e299899d361b", null ], + [ "TEST", "_tmeta_detection_8cpp.html#aad05cd282a58a320252a8de7a8ec9ba5", null ], + [ "TEST", "_tmeta_detection_8cpp.html#a022c84980b3a19f2087bf4694ff652a7", null ], + [ "TEST", "_tmeta_detection_8cpp.html#ae8ced9a0416f4a848bc4de38355d5ee8", null ] +]; \ No newline at end of file diff --git a/doc/html/_tmeta_detection_8cpp_source.html b/doc/html/_tmeta_detection_8cpp_source.html new file mode 100644 index 0000000..2f783df --- /dev/null +++ b/doc/html/_tmeta_detection_8cpp_source.html @@ -0,0 +1,140 @@ + + + + + + + +uTL: test/tests/TmetaDetection.cpp Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
TmetaDetection.cpp
+
+
+Go to the documentation of this file.
1 
20 #include <utl/meta/meta.h>
21 #include <gtest/gtest.h>
22 #include <type_traits>
23 
24 namespace TmetaDetection {
25  using namespace utl;
26  using namespace meta;
27 
28  /*
29  * Types to behave like Fixtures
30  */
31  struct Foo {};
32  struct Bar {};
33 
34  template <typename T> struct A {
35  using type = T; // nested type
36  A(int i, double d) : i_(i), d_(d) {} // declare a non-trivial constructor
37  A& operator++() { ++i_; return *this; } // declare an operator
38 
39  // A sfinae function
40  template <typename TT = T, typename = when<std::is_integral<TT>::type::value>>
41  TT sfun () { return TT{}; }
42  private:
43  int i_; double d_;
44  };
45 
46  // A binary metafunction
47  template <typename T1, typename T2>
48  struct mFun {
49  using type = std::is_same <T1, T2>;
50  };
51 
52  // detectors
53  template <typename T> using try_type = typename T::type;
54  template <typename T> using try_none = typename T::none;
55  template <typename T> using try_ctor1= decltype (T(std::declval<int>(), std::declval<double>()));
56  template <typename T> using try_ctor2= decltype (T(std::declval<int>()));
57  template <typename T> using try_ppT = decltype (++(std::declval<T>()));
58  template <typename T> using try_Tpp = decltype (std::declval<T>()++);
59  template <typename T> using try_sfun = decltype (std::declval<T>().sfun());
60 
61  /*
62  * void_t
63  */
64  TEST(TmetaDetection, VoidType) {
65  EXPECT_EQ(true, (std::is_same<void, void_t<int, long, void*, void, Foo, Bar>>()));
66  EXPECT_EQ(true, (std::is_same<void, void_t<>>()));
67  }
68 
69  /*
70  * not a type
71  */
72  TEST(TmetaDetection, NotAType) {
73  EXPECT_EQ(false, (std::is_default_constructible<nat_>()));
74  EXPECT_EQ(false, (std::is_destructible<nat_>()));
75  EXPECT_EQ(false, (std::is_copy_constructible<nat_>()));
76  EXPECT_EQ(false, (std::is_copy_assignable<nat_>()));
77  }
78 
79  /*
80  * Idiom
81  */
82  TEST(TmetaDetection, IsDetected) {
83 
84  EXPECT_EQ (true, (std::is_same< true_, is_detected<try_type, A<int>> >()));
85  EXPECT_EQ (true, (std::is_same< false_, is_detected<try_none, A<int>> >()));
86  EXPECT_EQ (true, (std::is_same< true_, is_detected<try_ctor1, A<int>> >()));
87  EXPECT_EQ (true, (std::is_same< false_, is_detected<try_ctor2, A<int>> >()));
88  EXPECT_EQ (true, (std::is_same< true_, is_detected<try_ppT, A<int>> >()));
89  EXPECT_EQ (true, (std::is_same< false_, is_detected<try_Tpp, A<int>> >()));
90  EXPECT_EQ (true, (std::is_same< true_, is_detected<try_sfun, A<int>> >()));
91  EXPECT_EQ (true, (std::is_same< false_, is_detected<try_sfun, A<double>> >()));
92 
93  EXPECT_EQ (true, (std::is_same< true_, is_detected<mFun, int, void> >()));
94  EXPECT_EQ (true, (std::is_same< false_, is_detected<mFun, char> >()));
95  EXPECT_EQ (true, (std::is_same< false_, is_detected<mFun, char, void, void> >()));
96 
99  EXPECT_EQ (true, (is_detected_v<mFun, int, void>));
100 
101  }
102 
103  /*
104  * Idiom
105  */
106  TEST(TmetaDetection, Toolkit) {
107 
108  // detected_t
109  EXPECT_EQ (true, (std::is_same< int, detected_t<try_type, A<int>> >()));
110  EXPECT_EQ (true, (std::is_same< nat_, detected_t< try_none, A<int>> >()));
111  EXPECT_EQ (true, (std::is_same< A<int>, detected_t< try_ctor1, A<int>> >()));
112  EXPECT_EQ (true, (std::is_same< nat_, detected_t< try_ctor2, A<int>> >()));
113  EXPECT_EQ (true, (std::is_same< A<int>&,detected_t< try_ppT, A<int>> >()));
114  EXPECT_EQ (true, (std::is_same< nat_, detected_t< try_Tpp, A<int>> >()));
115  EXPECT_EQ (true, (std::is_same< int, detected_t< try_sfun, A<int>> >()));
116  EXPECT_EQ (true, (std::is_same< nat_, detected_t< try_sfun, A<double>> >()));
117 
118  EXPECT_EQ (true, (std::is_same< nat_, detected_t<mFun, void> >()));
119  EXPECT_EQ (true, (std::is_same< mFun<int, int>,
121 
122  // detected_or_t
123  EXPECT_EQ (true, (std::is_same< int, detected_or_t<Foo, try_type, A<int>> >()));
124  EXPECT_EQ (true, (std::is_same< Foo, detected_or_t<Foo, try_none, A<int>> >()));
125  EXPECT_EQ (true, (std::is_same< A<int>, detected_or_t<void, try_ctor1, A<int>> >()));
126  EXPECT_EQ (true, (std::is_same< void, detected_or_t<void, try_ctor2, A<int>> >()));
127  EXPECT_EQ (true, (std::is_same< A<int>&,detected_or_t<nil_, try_ppT, A<int>> >()));
128  EXPECT_EQ (true, (std::is_same< nil_, detected_or_t<nil_, try_Tpp, A<int>> >()));
129  EXPECT_EQ (true, (std::is_same< int, detected_or_t<void*, try_sfun, A<int>> >()));
130  EXPECT_EQ (true, (std::is_same< void*, detected_or_t<void*, try_sfun, A<double>> >()));
131 
132  EXPECT_EQ (true, (std::is_same< nil_, detected_or_t<nil_, mFun, int> >()));
133  EXPECT_EQ (true, (std::is_same< mFun<char, int>,
135 
136  // is_detected_exact
137  EXPECT_EQ (true, (std::is_same<true_, is_detected_exact< int, try_type, A<int>> >()));
138  EXPECT_EQ (true, (std::is_same<false_, is_detected_exact< int, try_none, A<int>> >()));
139  EXPECT_EQ (true, (std::is_same<true_, is_detected_exact< A<int>, try_ctor1, A<int>> >()));
140  EXPECT_EQ (true, (std::is_same<false_, is_detected_exact< A<int>, try_ctor2, A<int>> >()));
141  EXPECT_EQ (true, (std::is_same<true_, is_detected_exact< A<int>&,try_ppT, A<int>> >()));
142  EXPECT_EQ (true, (std::is_same<false_, is_detected_exact< A<int>&,try_Tpp, A<int>> >()));
143  EXPECT_EQ (true, (std::is_same<true_, is_detected_exact< int, try_sfun, A<int>> >()));
144  EXPECT_EQ (true, (std::is_same<false_, is_detected_exact< int, try_sfun, A<double>> >()));
145 
146  EXPECT_EQ (true, (std::is_same<true_, is_detected_exact<mFun<char, int>, mFun, char, int> >()));
147  EXPECT_EQ (true, (std::is_same<false_, is_detected_exact<mFun<int, int>, mFun, int> >())); // it would be better to check against mFun<int>
148 
149  EXPECT_EQ (true, (is_detected_exact_v< int, try_type, A<int>> ));
150  EXPECT_EQ (false,(is_detected_exact_v< int, try_none, A<int>> ));
151 
152  // is_detected_convertible
153  EXPECT_EQ (true, (std::is_same<true_, is_detected_convertible< int, try_type, A<char>> >()));
154  EXPECT_EQ (true, (std::is_same<false_, is_detected_convertible< int, try_none, A<int>> >()));
155  EXPECT_EQ (true, (std::is_same<false_, is_detected_convertible< mFun<int, int>, mFun, char, int> >()));
156 
159 
160  }
161 }
+
decltype(std::declval< T >().sfun()) try_sfun
+
Include all meta library.
+
void void_t
void_t type alias
Definition: detection.h:55
+
constexpr bool is_detected_exact_v
evaluates to true if evaluation of Op<Args...> is Expected and to false if not
Definition: detection.h:204
+
bool_< true > true_
The type used as a compile-time boolean with true value.
Definition: integral.h:68
+
std::is_same< T1, T2 > type
+
eval< std::is_convertible< detected_t< Op, Args... >, To > > is_detected_convertible
Definition: detection.h:231
+
typename T::none try_none
+ + + + + +
TEST(TmetaDetection, VoidType)
+
decltype(std::declval< T >()++) try_Tpp
+
bool_< false > false_
The type used as a compile-time boolean with false value.
Definition: integral.h:69
+ +
constexpr bool is_detected_convertible_v
Definition: detection.h:237
+
STL&#39;s core language concepts.
Definition: _1wire.h:30
+
eval< detail::detector< nat_, void, Op, Args... > > detected_t
Definition: detection.h:146
+ +
typename T::type try_type
+
decltype(T(std::declval< int >())) try_ctor2
+
#define EXPECT_EQ(val1, val2)
Definition: gtest.h:16643
+ +
A(int i, double d)
+ +
eval< same_< Expected, detected_t< Op, Args... > > > is_detected_exact
Definition: detection.h:199
+ +
typename detail::detector< nat_, void, Op, Args... >::detected is_detected
Definition: detection.h:118
+
decltype(++(std::declval< T >())) try_ppT
+
constexpr bool is_detected_v
Detection predicate.
Definition: detection.h:122
+
eval< detail::detected_or< Default, Op, Args... > > detected_or_t
Definition: detection.h:172
+
decltype(T(std::declval< int >(), std::declval< double >())) try_ctor1
+
+
+ + + + diff --git a/doc/html/_tmeta_detection_8d.html b/doc/html/_tmeta_detection_8d.html new file mode 100644 index 0000000..b4c496c --- /dev/null +++ b/doc/html/_tmeta_detection_8d.html @@ -0,0 +1,107 @@ + + + + + + + +uTL: test/eclipse-cygwin/C++14/source/tests/TmetaDetection.d File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
TmetaDetection.d File Reference
+
+ +
+ + + + diff --git a/doc/html/_tmeta_detection_8d_source.html b/doc/html/_tmeta_detection_8d_source.html new file mode 100644 index 0000000..7fb4f35 --- /dev/null +++ b/doc/html/_tmeta_detection_8d_source.html @@ -0,0 +1,121 @@ + + + + + + + +uTL: test/eclipse-cygwin/C++14/source/tests/TmetaDetection.d Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
TmetaDetection.d
+
+
+Go to the documentation of this file.
1 source/tests/TmetaDetection.o: \
2  W:/Work/Software/Libraries/utl/test/tests/TmetaDetection.cpp \ + W:\Work\Software\Libraries\utl\include/utl/meta/meta.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/integral.h \ + W:\Work\Software\Libraries\utl\include/utl/core/impl.h \ + W:\Work\Software\Libraries\utl\include/utl/core/version.h \ + W:\Work\Software\Libraries\utl\include/utl/core/types.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/selection.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/operations.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/useif.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/sfinae.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/typelist.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/detection.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/invoke.h \ + W:\Work\Software\Libraries\utl\test\eclipse-cygwin\lib/gtest/gtest.h
3 
4 W:\Work\Software\Libraries\utl\include/utl/meta/meta.h:
5 
6 W:\Work\Software\Libraries\utl\include/utl/meta/integral.h:
7 
8 W:\Work\Software\Libraries\utl\include/utl/core/impl.h:
9 
10 W:\Work\Software\Libraries\utl\include/utl/core/version.h:
11 
12 W:\Work\Software\Libraries\utl\include/utl/core/types.h:
13 
14 W:\Work\Software\Libraries\utl\include/utl/meta/selection.h:
15 
16 W:\Work\Software\Libraries\utl\include/utl/meta/operations.h:
17 
18 W:\Work\Software\Libraries\utl\include/utl/meta/useif.h:
19 
20 W:\Work\Software\Libraries\utl\include/utl/meta/sfinae.h:
21 
22 W:\Work\Software\Libraries\utl\include/utl/meta/typelist.h:
23 
24 W:\Work\Software\Libraries\utl\include/utl/meta/detection.h:
25 
26 W:\Work\Software\Libraries\utl\include/utl/meta/invoke.h:
27 
28 W:\Work\Software\Libraries\utl\test\eclipse-cygwin\lib/gtest/gtest.h:
29  +
STL&#39;s core language concepts.
Definition: _1wire.h:30
+
typename Fn::template apply< Args... > invoke
Definition: invoke.h:81
+
+
+ + + + diff --git a/doc/html/_tmeta_typelist_8cpp.html b/doc/html/_tmeta_typelist_8cpp.html new file mode 100644 index 0000000..88f9f2c --- /dev/null +++ b/doc/html/_tmeta_typelist_8cpp.html @@ -0,0 +1,173 @@ + + + + + + + +uTL: test/tests/TmetaTypelist.cpp File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
TmetaTypelist.cpp File Reference
+
+
+
#include <utl/meta/meta.h>
+#include <gtest/gtest.h>
+#include <type_traits>
+
+

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + +

+Classes

struct  TmetaTypelist::Identity< T >
 
struct  TmetaTypelist::MfunBin< T1, T2 >
 
struct  TmetaTypelist::MfunBin_i< a, b >
 
struct  TmetaTypelist::MfunUn1< T1 >
 
struct  TmetaTypelist::MfunUn2< T1 >
 
struct  TmetaTypelist::Pred_isInt< T >
 
struct  TmetaTypelist::Pred_isVoid< T >
 
struct  TmetaTypelist::F< T1, T2 >
 
+ + + +

+Namespaces

 TmetaTypelist
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

 TmetaTypelist::TEST (TmetaTypelist, Invoke)
 
 TmetaTypelist::TEST (TmetaTypelist, Basics)
 
 TmetaTypelist::TEST (TmetaTypelist, ElementAccess)
 
 TmetaTypelist::TEST (TmetaTypelist, Concat)
 
 TmetaTypelist::TEST (TmetaTypelist, Fold)
 
 TmetaTypelist::TEST (TmetaTypelist, PushPopReverse)
 
 TmetaTypelist::TEST (TmetaTypelist, Transform)
 
 TmetaTypelist::TEST (TmetaTypelist, Find)
 
 TmetaTypelist::TEST (TmetaTypelist, Count)
 
 TmetaTypelist::TEST (TmetaTypelist, Filter)
 
 TmetaTypelist::TEST (TmetaTypelist, Replace)
 
 TmetaTypelist::TEST (TmetaTypelist, AllAnyNone)
 
+

Detailed Description

+

Copyright (C) 2018 Christos Choutouridis

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

+

You should have received a copy of the GNU Lesser General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file TmetaTypelist.cpp.

+
+
+ + + + diff --git a/doc/html/_tmeta_typelist_8cpp.js b/doc/html/_tmeta_typelist_8cpp.js new file mode 100644 index 0000000..86775f2 --- /dev/null +++ b/doc/html/_tmeta_typelist_8cpp.js @@ -0,0 +1,23 @@ +var _tmeta_typelist_8cpp = +[ + [ "Identity", "struct_tmeta_typelist_1_1_identity.html", "struct_tmeta_typelist_1_1_identity" ], + [ "MfunBin", "struct_tmeta_typelist_1_1_mfun_bin.html", "struct_tmeta_typelist_1_1_mfun_bin" ], + [ "MfunBin_i", "struct_tmeta_typelist_1_1_mfun_bin__i.html", "struct_tmeta_typelist_1_1_mfun_bin__i" ], + [ "MfunUn1", "struct_tmeta_typelist_1_1_mfun_un1.html", "struct_tmeta_typelist_1_1_mfun_un1" ], + [ "MfunUn2", "struct_tmeta_typelist_1_1_mfun_un2.html", "struct_tmeta_typelist_1_1_mfun_un2" ], + [ "Pred_isInt", "struct_tmeta_typelist_1_1_pred__is_int.html", "struct_tmeta_typelist_1_1_pred__is_int" ], + [ "Pred_isVoid", "struct_tmeta_typelist_1_1_pred__is_void.html", "struct_tmeta_typelist_1_1_pred__is_void" ], + [ "F", "struct_tmeta_typelist_1_1_f.html", null ], + [ "TEST", "_tmeta_typelist_8cpp.html#a0efd5c09e08d72ca3dd8236e59ca0907", null ], + [ "TEST", "_tmeta_typelist_8cpp.html#a487d8ae681bd99bee73bff152870b288", null ], + [ "TEST", "_tmeta_typelist_8cpp.html#a923b1c0b0dc401bd6360f86bea674239", null ], + [ "TEST", "_tmeta_typelist_8cpp.html#a43c71fc11f99d862f2a965a36b7e9562", null ], + [ "TEST", "_tmeta_typelist_8cpp.html#aab40220bb9343d3b08715d741a87b813", null ], + [ "TEST", "_tmeta_typelist_8cpp.html#a346d379aa948955d431367fb850a58d5", null ], + [ "TEST", "_tmeta_typelist_8cpp.html#a716c04dce454d80e8d1258f357524513", null ], + [ "TEST", "_tmeta_typelist_8cpp.html#a7842447ab76734f253d3f9ac69ef6909", null ], + [ "TEST", "_tmeta_typelist_8cpp.html#a973fce2375bc2b023f9c8fe8fdbdf1d8", null ], + [ "TEST", "_tmeta_typelist_8cpp.html#ae822d411c84a042d49709373dd943af0", null ], + [ "TEST", "_tmeta_typelist_8cpp.html#ad468d62cfaa953d118cf11d2f59b81b5", null ], + [ "TEST", "_tmeta_typelist_8cpp.html#a26027622e87df6c393dfae7b42c3e061", null ] +]; \ No newline at end of file diff --git a/doc/html/_tmeta_typelist_8cpp_source.html b/doc/html/_tmeta_typelist_8cpp_source.html new file mode 100644 index 0000000..133f8d4 --- /dev/null +++ b/doc/html/_tmeta_typelist_8cpp_source.html @@ -0,0 +1,184 @@ + + + + + + + +uTL: test/tests/TmetaTypelist.cpp Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
TmetaTypelist.cpp
+
+
+Go to the documentation of this file.
1 
20 #include <utl/meta/meta.h>
21 #include <gtest/gtest.h>
22 #include <type_traits>
23 
24 namespace TmetaTypelist {
25  using namespace utl;
26  using namespace meta;
27 
28  /*
29  * Types to behave like Fixtures
30  */
31  // Test type_of fixture
32  template<class T> struct Identity {
33  using type = T;
34  };
35  template<class T1, class T2> struct MfunBin {
36  using type = int;
37  };
38  template<int a, int b> struct MfunBin_i {
39  using type = int;
40  };
41  template<class T1> struct MfunUn1 {
42  using type = int;
43  };
44  template<class T1> struct MfunUn2 {
45  using type = int;
46  };
47 
48  template <typename T> struct Pred_isInt {
49  using type = std::is_integral<T>;
50  };
51 
52  template <typename T> struct Pred_isVoid {
53  using type = std::is_void<T>;
54  };
55 
56 
57  /*
58  * Test high order metaFun tools
59  */
60  TEST(TmetaTypelist, Invoke) {
61  using W = wrap <MfunBin>;
62  using Wi = wrap_i<int, MfunBin_i>;
63  using W1 = wrap<MfunUn1>;
64  using W2 = wrap<MfunUn2>;
65  using Q = quote<MfunBin>;
66  using Qi = quote_i<int, MfunBin_i>;
67  using Q1 = quote<MfunUn1>;
68  using Q2 = quote<MfunUn2>;
69 
70  // identity
71  EXPECT_EQ (true, (std::is_same<int, eval<identity<int>>>()));
72  EXPECT_EQ (true, (std::is_same<int, identity_t<int>>()));
73  EXPECT_EQ (true, (std::is_same<void*, identity_t<void*>>()));
74 
75  // invoke, check that invoke un-wraps and un-quotes staff
76  EXPECT_EQ (true, (std::is_same< invoke<wrap<MfunBin>, int, char>, MfunBin<int, char> >()));
77  EXPECT_EQ (true, (std::is_same< invoke<quote<MfunBin>, int, char>, MfunBin<int, char> >()));
80 
81  // Wrap
86 
87  // applicable trait
90 
95 
98 
99  // defer
101  EXPECT_EQ (true, (std::is_same<defer<MfunBin, void>::type, nil_>()));
103  EXPECT_EQ (true, (std::is_same<defer_i<int, MfunBin_i, 7>::type, nil_>()));
104 
105  // quote
110 
111  // compose
112  EXPECT_EQ (true, (std::is_same<invoke<compose_f<MfunUn1>, int>, MfunUn1<int>>()));
113  EXPECT_EQ (true, (std::is_same<invoke<compose_f<MfunUn1, MfunUn2>, int>, MfunUn1<MfunUn2<int>>>()));
114 
115  EXPECT_EQ (true, (std::is_same<invoke<compose<W1>, int>, MfunUn1<int>>()));
116  EXPECT_EQ (true, (std::is_same<invoke<compose<W1, W2>, int>, MfunUn1<MfunUn2<int>>>()));
117  EXPECT_EQ (true, (std::is_same<
119  >()));
120 
121  EXPECT_EQ (true, (std::is_same<invoke<compose<Q1>, int>, MfunUn1<int>>()));
122  EXPECT_EQ (true, (std::is_same<invoke<compose<Q1, Q2>, int>, MfunUn1<MfunUn2<int>>>()));
123  EXPECT_EQ (true, (std::is_same<
125  >()));
126 
127  // bind
128  EXPECT_EQ (true, (std::is_same<invoke<bind_front<Q, int>, long>, MfunBin<int, long>>()));
129  EXPECT_EQ (true, (std::is_same<invoke<bind_back<Q, int>, long>, MfunBin<long, int>>()));
130 
131  // Check the case of ill formed parameter composition. Quote must save us
132  EXPECT_EQ (true, (std::is_same< nil_, invoke<Q, int> >()));
133  EXPECT_EQ (true, (std::is_same< nil_, invoke<Qi, int_<42>> >()));
134  EXPECT_EQ (true, (std::is_same< MfunUn1<MfunUn2<nil_>>, invoke<compose<Q1, Q2, Qi>, int_<42>> >()));
135  }
136 
137  /*
138  * Test typelist
139  */
140  TEST(TmetaTypelist, Basics) {
141  using l1 = typelist<int, int, int>;
143  using l3 = typelist<>;
144 
145  EXPECT_EQ (true, (std::is_same<l1, typelist<int>::times<3>>()));
146  EXPECT_EQ (true, (std::is_same<l2, typelist<int, void*>::times<2>>()));
147  EXPECT_EQ (true, (std::is_same<l3, typelist<>::times<3>>()));
148  EXPECT_EQ (true, (std::is_same<l3, typelist<int>::times<0>>()));
149  EXPECT_EQ (true, (std::is_same<l3, typelist<int, void>::times<0>>()));
150  EXPECT_EQ (true, (std::is_same<typelist<short, double>, pair<short, double>>()));
151 
152  EXPECT_EQ (true, (std::is_same<l1, repeat <int_<3>, int>>()));
153  EXPECT_EQ (true, (std::is_same<l2, repeat_c <2, int, void*>>()));
154 
155 
156  EXPECT_EQ (3, size<l1>());
157  EXPECT_EQ (0, size<l3>());
158  EXPECT_EQ (true, empty<l3>());
159 
160  // pass typelist to an invocable
161  EXPECT_EQ (true, (std::is_same< apply_t<quote<MfunUn1>, typelist<int>>, MfunUn1<int> >()));
163  }
164 
165  TEST(TmetaTypelist, ElementAccess) {
167 
168  EXPECT_EQ (true, (std::is_same<char*, at_c<l, 0>>()));
169  EXPECT_EQ (true, (std::is_same<void*, at_c<l, 2>>()));
170  EXPECT_EQ (true, (std::is_same<short, at_c<l, 5>>()));
171  EXPECT_EQ (true, (std::is_same<nil_, at_c<l, 6>>()));
172 
173  EXPECT_EQ (true, (std::is_same<void, at<l, int_<1>>>()));
174  EXPECT_EQ (true, (std::is_same<long, at<l, int_<3>>>()));
175 
176  EXPECT_EQ (true, (std::is_same<char*, front<l>>()));
177  EXPECT_EQ (true, (std::is_same<short, back<l>>()));
178  }
179 
180  TEST(TmetaTypelist, Concat) {
181  using l1 = typelist<int, long, void>;
182  using l2 = typelist<void*, int*>;
184  using l4 = typelist<>;
186 
187  EXPECT_EQ(true, (std::is_same<l4, cat<l4, l4>>()));
188  EXPECT_EQ(true, (std::is_same<conc, cat<l1, l2, l3, l4>>()));
189  EXPECT_EQ(true, (std::is_same<conc, cat<l1, l4, l2, l3>>()));
190  EXPECT_EQ(true, (std::is_same<conc, cat<l4, l1, l2, l3>>()));
191  }
192 
193  template<class T1, class T2> struct F {}; // binary invocable
195  struct X1 {};
196  struct X2 {};
197  struct X3 {};
198  struct X4 {};
199  using Q = quote<F>;
200 
201  EXPECT_EQ(true, (std::is_same<fold<typelist<>, void, Q>, void>()));
202  EXPECT_EQ(true, (std::is_same<fold<typelist<X1>, void, Q>, F<void, X1>>()));
203  EXPECT_EQ(true, (std::is_same<fold<typelist<X1, X2>, void, Q>, F<F<void, X1>, X2>>()));
204  EXPECT_EQ(true, (std::is_same<fold<typelist<X1, X2, X3>, void, Q>, F<F<F<void, X1>, X2>, X3>>()));
205  EXPECT_EQ(true, (std::is_same<fold<typelist<X1, X2, X3, X4>, void, Q>, F<F<F<F<void, X1>, X2>, X3>, X4>>()));
206 
207  EXPECT_EQ(true, (std::is_same<rev_fold<typelist<>, void, Q>, void>()));
208  EXPECT_EQ(true, (std::is_same<rev_fold<typelist<X1>, void, Q>, F<X1, void>>()));
209  EXPECT_EQ(true, (std::is_same<rev_fold<typelist<X1, X2>, void, Q>, F<X1, F<X2, void>>>()));
210  EXPECT_EQ(true, (std::is_same<rev_fold<typelist<X1, X2, X3>, void, Q>, F<X1, F<X2, F<X3, void>>>>()));
211  EXPECT_EQ(true, (std::is_same<rev_fold<typelist<X1, X2, X3, X4>, void, Q>, F<X1, F<X2, F<X3, F<X4, void>>>>>()));
212  }
213 
214  TEST(TmetaTypelist, PushPopReverse) {
215  using list = typelist <int, long, void>;
216  using l_char = typelist <int, long, void, char>;
218  using char_l = typelist <char, int, long, void>;
220  using rev = typelist<void, long, int>;
221 
222  EXPECT_EQ (true, (std::is_same< char_l, push_front<list, char> >()));
223  EXPECT_EQ (true, (std::is_same< cc_l, push_front<list, char, char> >()));
224  EXPECT_EQ (true, (std::is_same< list, pop_front <char_l> >()));
225  EXPECT_EQ (true, (std::is_same< l_char, push_back <list, char> >()));
226  EXPECT_EQ (true, (std::is_same< l_cc, push_back <list, char, char> >()));
227  EXPECT_EQ (true, (std::is_same< list, pop_back <l_char> >()));
228 
229  EXPECT_EQ (true, (std::is_same< rev, reverse <list> >()));
230  }
231 
232  TEST(TmetaTypelist, Transform) {
233  using QBin = quote<MfunBin>; // both metafuctions return int
234  using QUn = quote<MfunUn1>;
235 
236  using l1 = typelist<char, int, float>;
237  using l2 = typelist<void, void, void>;
238  using r = typelist<int, int, int>;
241 
242  EXPECT_EQ (true, (std::is_same<r, transform<l1, QUn>>()));
243  EXPECT_EQ (true, (std::is_same<r, transform<l1, l2, QBin>>()));
244 
245  EXPECT_EQ (true, (std::is_same<r_ulazy, transform_lazy<l1, QUn>>()));
246  EXPECT_EQ (true, (std::is_same<r_blazy, transform_lazy<l1, l2, QBin>>()));
247  }
248 
249 
252  using l2 = typelist <char, long, float>;
253  using l3 = typelist <long, float>;
254  using empty = typelist<>;
255 
256  EXPECT_EQ(true, (std::is_same<index_<1>, find_if<l1, same_as<char>>>()));
257  EXPECT_EQ(true, (std::is_same<Npos, find_if<empty, same_as<char>>>()));
258  EXPECT_EQ(true, (std::is_same<Npos, find_if<l1, same_as<double>>>()));
259 
260  EXPECT_EQ(true, (std::is_same<index_<2>, find<l1, long>>()));
261 
262  EXPECT_EQ(true, (std::is_same<l2, seek_if<l1, same_as<char>>>()));
263  EXPECT_EQ(true, (std::is_same<empty, seek_if<empty, same_as<char>>>()));
264  EXPECT_EQ(true, (std::is_same<empty, seek_if<l1, same_as<double>>>()));
265 
266  EXPECT_EQ(true, (std::is_same<l3, seek<l1, long>>()));
267  }
268 
269  TEST(TmetaTypelist, Count) {
271  using empty = typelist<>;
272 
273  EXPECT_EQ (true, (std::is_same<size_<3>, count_if<list, same_as<int>>>()));
274  EXPECT_EQ (true, (std::is_same<size_<2>, count_if<list, same_as<char>>>()));
275  EXPECT_EQ (true, (std::is_same<size_<0>, count_if<list, same_as<double>>>()));
276  EXPECT_EQ (true, (std::is_same<size_<0>, count_if<empty, int>>()));
277 
278  EXPECT_EQ (true, (std::is_same<size_<1>, count<list, void*>>()));
279  }
280 
281  TEST(TmetaTypelist, Filter) {
282  using Q1 = quote<Pred_isInt>;
283  using Q2 = quote<Pred_isVoid>;
285  using filtered = typelist<int, char, short>;
286 
287  EXPECT_EQ (true, (std::is_same<filtered, filter<list, Q1>>()));
288  EXPECT_EQ (true, (std::is_same<typelist<>, filter<typelist<>, Q1>>()));
289  EXPECT_EQ (true, (std::is_same<typelist<>, filter<list, Q2>>()));
290  EXPECT_EQ (true, (std::is_same<typelist<>, filter<typelist<>, Q1>>()));
291  }
292 
293  TEST(TmetaTypelist, Replace) {
294  using Q = quote<Pred_isInt>;
298 
299  EXPECT_EQ (true, (std::is_same<res, replace_if<list, Q, void>>()));
300  EXPECT_EQ (true, (std::is_same<typelist<>, replace_if<typelist<>, Q, void>>()));
301  EXPECT_EQ (true, (std::is_same<res, replace_if<res, Q, void>>()));
302  EXPECT_EQ (true, (std::is_same<typelist<>, replace_if<typelist<>, Q, void>>()));
303 
304  EXPECT_EQ (true, (std::is_same<repl, replace<list, char, void>>()));
305  EXPECT_EQ (true, (std::is_same<typelist<>, replace<typelist<>, char, void>>()));
306  }
307 
308  TEST (TmetaTypelist, AllAnyNone) {
311  using l3 = typelist<>;
312 
313  EXPECT_EQ (true, (std::is_same<false_, all_of<l1, quote<Pred_isInt>>>()));
314  EXPECT_EQ (true, (std::is_same<true_, all_of<l2, quote<Pred_isInt>>>()));
315  EXPECT_EQ (true, (std::is_same<false_, all_of<l3, quote<Pred_isVoid>>>()));
316 
317  EXPECT_EQ (true, (std::is_same<true_, any_of<l1, quote<Pred_isInt>>>()));
318  EXPECT_EQ (true, (std::is_same<false_, any_of<l2, quote<Pred_isVoid>>>()));
319  EXPECT_EQ (true, (std::is_same<false_, any_of<l3, quote<Pred_isVoid>>>()));
320 
321  EXPECT_EQ (true, (std::is_same<true_, none_of<l1, quote<Pred_isVoid>>>()));
322  EXPECT_EQ (true, (std::is_same<false_, none_of<l1, quote<Pred_isInt>>>()));
323  EXPECT_EQ (true, (std::is_same<true_, none_of<l3, quote<Pred_isInt>>>()));
324  }
325 
326 }
if_< detail::is_applicable_< F, Ts... >, detail::defer_< F, Ts... >, nil_ > defer
defer alias template for F<Ts...>
Definition: invoke.h:213
+
Include all meta library.
+
empty< filter< List, Pred > > none_of
Definition: typelist.h:875
+
eval< detail::is_applicable_q_< Q, T... > > is_applicable_qt
check if we can invoke Q with parameters T
Definition: invoke.h:168
+ +
eval< count_if_impl::count_if_< List, Pred, 0 > > count_if
Definition: typelist.h:755
+
std::is_integral< T > type
+
eval< filter_impl::filter_< List, Pred, typelist<> > > filter
Definition: typelist.h:800
+
eval< at_impl::at_< List, N > > at_c
Definition: typelist.h:245
+
if_< detail::is_applicable_i_< T, F, Is... >, detail::defer_i_< T, F, Is... >, nil_ > defer_i
defer_i alias template for F<T, Is...>
Definition: invoke.h:221
+ + + +
bool_< true > true_
The type used as a compile-time boolean with true value.
Definition: integral.h:68
+
eval< replace_if_impl::replace_if_< List, Pred, T, typelist<> > > replace_if
Definition: typelist.h:841
+
size_< List::size()> size
Definition: typelist.h:129
+ +
eval< apply< bind_back< quote< typelist >, Ts... >, List > > push_back
Definition: typelist.h:461
+
eval< back_impl::back_< List > > back
Definition: typelist.h:296
+
at_c< List, N::type::value > at
Definition: typelist.h:253
+
eval< reverse_impl::reverse_< List > > reverse
Definition: typelist.h:479
+
repeat_c< N::type::value, Ts... > repeat
Definition: typelist.h:161
+
integral_< size_t, v > size_
size_ type: integral constant wrapper for size_t a.k.a std::size_t
Definition: integral.h:110
+ + + +
eval< replace_if< List, same_as< T >, U > > replace
Definition: typelist.h:848
+
find_if< List, same_as< T > > find
Definition: typelist.h:663
+ +
count_if< List, same_as< T > > count
Definition: typelist.h:761
+
size_< index_t(-1)> Npos
The last position we can express for indexing.
Definition: integral.h:124
+
eval< cat_impl::cat_< Lists... > > cat
Definition: typelist.h:338
+
integral_< int, v > int_
int_ type: integral constant wrapper for int
Definition: integral.h:98
+ +
bool_< false > false_
The type used as a compile-time boolean with false value.
Definition: integral.h:69
+
Wrap a template F taking literal constants of type T into an Invokable.
Definition: invoke.h:243
+
eval< seek_if_impl::seek_if_< List, Pred, 0 > > seek_if
Definition: typelist.h:705
+
eval< rev_fold_impl::rev_fold_< List, V, Fn > > rev_fold
Definition: typelist.h:438
+
eval< fold_impl::fold_< List, V, Fn > > fold
Definition: typelist.h:383
+
typename Tp::type eval
Type alias for Tp::type. Used to evaluate/extract return type of metafunctions.
Definition: integral.h:49
+
not_< empty< filter< List, Pred > > > any_of
Definition: typelist.h:868
+
STL&#39;s core language concepts.
Definition: _1wire.h:30
+
if_< empty< List >, false_, empty< filter< List, compose< quote< not_ >, Pred > > > > all_of
Definition: typelist.h:861
+ +
eval< pop_back_impl::pop_back_< List > > pop_back
Definition: typelist.h:526
+
eval< apply< bind_front< quote< typelist >, Ts... >, List > > push_front
Definition: typelist.h:450
+ +
eval< pop_front_impl::pop_front_< List > > pop_front
Definition: typelist.h:502
+ +
integral_< index_t, v > index_
index_ type: integral constant wrapper for index_t a.k.a std::size_t
Definition: integral.h:106
+ + + + +
eval< front_impl::front_< List > > front
Definition: typelist.h:274
+ +
eval< detail::is_applicable_< F, T... > > is_applicable_t
check if we can instantiate F with parameters T
Definition: invoke.h:163
+
eval< find_if_impl::find_if_< List, Pred, 0 > > find_if
Definition: typelist.h:657
+ + +
#define EXPECT_EQ(val1, val2)
Definition: gtest.h:16643
+
typename typelist< Ts... >::template times< N > repeat_c
Definition: typelist.h:155
+
eval< identity< _Tp > > identity_t
identity type alias
Definition: invoke.h:68
+ + +
eval< transform_impl::transform_< typelist< Args... > > > transform
Definition: typelist.h:568
+
eval< detail::is_applicable_i_< T, F, Is... > > is_applicable_it
check if we can instantiate F with parameters Is of type T
Definition: invoke.h:174
+ + +
eval< apply< Fn, Seq > > apply_t
Definition: typelist.h:200
+
typename Fn::template apply< Args... > invoke
Definition: invoke.h:81
+ +
Wrap a template F taking literal constants of type T into an Invokable.
Definition: invoke.h:107
+
TEST(TmetaTypelist, Invoke)
+
seek_if< List, same_as< T > > seek
Definition: typelist.h:711
+ +
bool_< List::empty()> empty
Definition: typelist.h:140
+ +
eval< transform_lazy_impl::transform_lazy_< typelist< Args... > > > transform_lazy
Definition: typelist.h:614
+
+
+ + + + diff --git a/doc/html/_tmeta_typelist_8d.html b/doc/html/_tmeta_typelist_8d.html new file mode 100644 index 0000000..5c1e71d --- /dev/null +++ b/doc/html/_tmeta_typelist_8d.html @@ -0,0 +1,107 @@ + + + + + + + +uTL: test/eclipse-cygwin/C++14/source/tests/TmetaTypelist.d File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
TmetaTypelist.d File Reference
+
+ +
+ + + + diff --git a/doc/html/_tmeta_typelist_8d_source.html b/doc/html/_tmeta_typelist_8d_source.html new file mode 100644 index 0000000..807f300 --- /dev/null +++ b/doc/html/_tmeta_typelist_8d_source.html @@ -0,0 +1,121 @@ + + + + + + + +uTL: test/eclipse-cygwin/C++14/source/tests/TmetaTypelist.d Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
TmetaTypelist.d
+
+
+Go to the documentation of this file.
1 source/tests/TmetaTypelist.o: \
2  W:/Work/Software/Libraries/utl/test/tests/TmetaTypelist.cpp \ + W:\Work\Software\Libraries\utl\include/utl/meta/meta.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/integral.h \ + W:\Work\Software\Libraries\utl\include/utl/core/impl.h \ + W:\Work\Software\Libraries\utl\include/utl/core/version.h \ + W:\Work\Software\Libraries\utl\include/utl/core/types.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/selection.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/operations.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/useif.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/sfinae.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/typelist.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/detection.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/invoke.h \ + W:\Work\Software\Libraries\utl\test\eclipse-cygwin\lib/gtest/gtest.h
3 
4 W:\Work\Software\Libraries\utl\include/utl/meta/meta.h:
5 
6 W:\Work\Software\Libraries\utl\include/utl/meta/integral.h:
7 
8 W:\Work\Software\Libraries\utl\include/utl/core/impl.h:
9 
10 W:\Work\Software\Libraries\utl\include/utl/core/version.h:
11 
12 W:\Work\Software\Libraries\utl\include/utl/core/types.h:
13 
14 W:\Work\Software\Libraries\utl\include/utl/meta/selection.h:
15 
16 W:\Work\Software\Libraries\utl\include/utl/meta/operations.h:
17 
18 W:\Work\Software\Libraries\utl\include/utl/meta/useif.h:
19 
20 W:\Work\Software\Libraries\utl\include/utl/meta/sfinae.h:
21 
22 W:\Work\Software\Libraries\utl\include/utl/meta/typelist.h:
23 
24 W:\Work\Software\Libraries\utl\include/utl/meta/detection.h:
25 
26 W:\Work\Software\Libraries\utl\include/utl/meta/invoke.h:
27 
28 W:\Work\Software\Libraries\utl\test\eclipse-cygwin\lib/gtest/gtest.h:
29  +
STL&#39;s core language concepts.
Definition: _1wire.h:30
+
typename Fn::template apply< Args... > invoke
Definition: invoke.h:81
+
+
+ + + + diff --git a/doc/html/_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2concepts_2defines_8h-example.html b/doc/html/_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2concepts_2defines_8h-example.html new file mode 100644 index 0000000..39398c2 --- /dev/null +++ b/doc/html/_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2concepts_2defines_8h-example.html @@ -0,0 +1,104 @@ + + + + + + + +uTL: W:/Work/Software/Libraries/utl/include/utl/concepts/defines.h + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
W:/Work/Software/Libraries/utl/include/utl/concepts/defines.h
+
+
+

utl typename constraints wrapper

template <utlConstrainType(SomeConcept) T> struct lala { };
// will expand to something like:
// template <SomeConcept T> struct lala { };
// or
// template <typename T> struct lala { };
#ifndef __utl_concepts_defines_h__
#define __utl_concepts_defines_h__
#if CXX_CONCEPTS
#define utlConstrainType(_Concept_) _Concept_
#else
#define utlConstrainType(_Concept_) typename
#endif
#if CXX_CONCEPTS
#if __cpp_concepts <= 201507L
#define _utlConcept concept bool
#else
#define _utlConcept concept
#endif
#else
#define _utlConcept constexpr bool
#endif
#ifndef CXX_LIB_INVOKE
#ifdef __cpp_lib_invoke
#define CXX_LIB_INVOKE __cpp_lib_invoke
#else
#define CXX_LIB_INVOKE 0
#endif
#endif
#endif /* __utl_concepts_defines_h__ */
+
+ + + + diff --git a/doc/html/_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2detection_8h-example.html b/doc/html/_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2detection_8h-example.html new file mode 100644 index 0000000..bd3b6dd --- /dev/null +++ b/doc/html/_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2detection_8h-example.html @@ -0,0 +1,118 @@ + + + + + + + +uTL: W:/Work/Software/Libraries/utl/include/utl/meta/detection.h + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
W:/Work/Software/Libraries/utl/include/utl/meta/detection.h
+
+
+

detection interface

+

Checks if Op<Args...> is a valid expression without evaluating it.

+
Template Parameters
+ + + +
Opa meta-callback function to pass Args...
Args...types to pass to Op for checking
+
+
+
Returns
status of the operation [bool_]
    +
  • true_ if Op<Args...> is valid expression
  • +
  • false_ if Op<Args...> is not valid
  • +
+
// archetypal alias for a copy assignment operation
template< class T > using copy_assign_t = decltype( declval<T&>() = declval<T const &>() );
template< class T > using is_copy_assignable = is_detected< copy_assign_t, T >;
+
#ifndef __utl_meta_detection_h__
#define __utl_meta_detection_h__
#include <utl/core/impl.h>
#include <type_traits>
namespace utl {
namespace meta {
#if defined(UTL_WORKAROUND_CWG_1558)
template<typename... _Ts>
struct void_ {
using type = void;
};
template<typename... _Ts>
using void_t = eval<void_<_Ts...>>;
#else
template <typename...> using void_ = void;
template <typename...> using void_t = void;
#endif
struct nat_ {
nat_() = delete;
~nat_() = delete;
nat_(nat_ const&) = delete;
void operator = (nat_ const&) = delete;
};
namespace detail {
template <typename Default,
typename AlwaysVoid,
template<typename...> class Op, typename... Args>
struct detector {
using detected = false_;
using type = Default;
};
template <typename Default,
template<typename...> class Op, typename... Args>
struct detector <Default, void_t<Op<Args...>>, Op, Args...> {
using detected = true_;
using type = Op<Args...>;
};
template <typename Default,
template<typename...> class Op, typename... Args>
using detected_or = detector<Default, void, Op, Args...>;
} // namespace detail
template <template<typename...> class Op, typename... Args>
using is_detected = typename detail::detector<nat_, void, Op, Args...>::detected;
template< template<typename...> class Op, typename... Args>
constexpr bool is_detected_v = is_detected<Op, Args...>::value;
template <template<typename...> class Op, typename... Args>
using detected_t = eval <
detail::detector<nat_, void, Op, Args...>
>;
template <typename Default,
template<typename...> class Op, typename... Args>
using detected_or_t = eval <
detail::detected_or<Default, Op, Args...>
>;
template <typename Expected,
template<typename...> class Op, typename... Args >
same_<Expected, detected_t<Op, Args...>>
>;
template <typename Expected,
template<typename...> class Op, typename... Args >
constexpr bool is_detected_exact_v = is_detected_exact< Expected, Op, Args...>::value;
template <typename To,
template<typename...> class Op, typename... Args >
std::is_convertible< detected_t<Op, Args...>, To >
>;
template <typename To,
template<typename...> class Op, typename... Args >
constexpr bool is_detected_convertible_v =
is_detected_convertible<To, Op, Args...>::value;
}}
#endif /* __utl_meta_detection_h__ */
+
+ + + + diff --git a/doc/html/_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example.html b/doc/html/_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example.html new file mode 100644 index 0000000..2f8d8a8 --- /dev/null +++ b/doc/html/_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example.html @@ -0,0 +1,105 @@ + + + + + + + +uTL: W:/Work/Software/Libraries/utl/include/utl/meta/invoke.h + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
W:/Work/Software/Libraries/utl/include/utl/meta/invoke.h
+
+
+

Create an invocable from other invocables(quoted metafunctions) by composition.

Note
This implies from N invocables in Fns the first N-1 has to be unary. Thats because of the "return" type of metafunction. They can only return one type. So for n-ary invocables in the N-1 places the typelist<> is the solution.
+
static_assert( std::is_same<
invoke<compose<quote<F1>, quote<F2>, quote<F3>>, int>, F1<F2<F3<int>>>
>, "");
#ifndef __utl_meta_invoke_h__
#define __utl_meta_invoke_h__
#include <utl/core/impl.h>
namespace utl {
namespace meta{
template <typename _Tp>
struct identity {
#if defined (UTL_WORKAROUND_CWG_1558)
// redirect unused Ts... via void_t
template <typename... Ts>
using apply = first_of<_Tp, void_t<Ts...>>;
#else
template <typename...>
using apply = _Tp;
#endif
using type = _Tp;
};
template <typename _Tp>
using identity_t = eval<identity<_Tp>>;
template <typename Fn, typename... Args>
using invoke = typename Fn::template apply<Args...>;
template <typename Fn, typename... Args>
using invoke_t = eval< invoke <Fn, Args...>>;
template <template <typename...> class F>
struct wrap {
template <typename... Args>
using apply = F<Args...>;
};
template <typename T, template <T...> class F>
struct wrap_i {
// requires meta::Integral
template <typename... Ts>
using apply = F<Ts::type::value...>;
};
namespace detail {
template<template<typename...> class F, typename... T>
struct is_applicable_ {
template<template<typename...> class G, typename = G<T...>>
static true_ check (int); //< T.. can be passed to G
template<template<typename...> class>
static false_ check (...); //< all other combinations
using type = decltype(check<F>(0));
};
template<typename F, typename... T>
struct is_applicable_q_ {
template<typename G, typename Ret = invoke_t<G, T...>>
static Ret check (int); //< T.. can be passed to G
template<typename...>
static nil_ check (...); //< all other combinations
using type = if_ <
nil_,
decltype(check<F>(0))
>;
};
template<typename T, template <T...> class F, T... Is>
struct is_applicable_i_ {
template<typename TT, template<TT...> class G, typename = G<Is...>>
static true_ check (int); //< Is... can be passed to G
template<typename TT, template<TT...> class G>
static false_ check (...); //< all other combinations
using type = decltype(check<T, F>(0));
};
}
template<template<typename...> class F, typename... T>
detail::is_applicable_<F, T...>
>;
template<typename Q, typename... T>
detail::is_applicable_q_ <Q, T...>
>;
template <typename T, template<T...> class F, T... Is>
detail::is_applicable_i_<T, F, Is...>
>;
namespace detail {
template<template<typename...> class F, typename... Ts>
struct defer_ {
using type = F<Ts...>;
};
template<typename T, template<T...> class F, T... Is>
struct defer_i_ {
using type = F<Is...>;
};
}
template<template<class...> class F, class... Ts>
using defer = if_<
detail::is_applicable_<F, Ts...>,
detail::defer_<F, Ts...>,
nil_
>;
template <typename T, template<T...> class F, T... Is>
using defer_i = if_ <
detail::is_applicable_i_<T, F, Is...>,
detail::defer_i_<T, F, Is...>,
nil_
>;
template <template <typename...> class F>
struct quote {
template <typename... Args>
using apply = eval<
defer<F, Args...>
>;
};
template <typename T, template <T...> class F>
struct quote_i {
// requires meta::Integral
template <typename... Ts>
using apply = eval<
defer_i<T, F, Ts::type::value...>
>;
};
namespace detail {
template <template <typename...> class... Fns> struct compose_f_ {};
// recursive call to all invokes
template <template <typename...> class Fn0,
template <typename...> class... Fns>
struct compose_f_<Fn0, Fns...> {
template <typename... Args>
using apply = invoke<
quote<Fn0>,
invoke<compose_f_<Fns...>, Args...>
>;
};
// Termination specialization, finally pass the arguments
template <template <typename...> class Fn0>
struct compose_f_<Fn0> {
template <typename ...Args>
using apply = invoke<quote<Fn0>, Args...>;
};
template<typename ...Fns> struct compose_ {};
// recursive call to all invokes
template<typename Fn0, typename ...Fns>
struct compose_<Fn0, Fns...> {
template <typename ...Args>
using apply = invoke<
Fn0,
invoke<compose_<Fns...>, Args...>
>;
};
// Termination specialization, finally pass the arguments
template<typename Fn0>
struct compose_<Fn0> {
template <typename... Args>
using apply = invoke<Fn0, Args...>;
};
}
template <typename... Fns>
using compose = detail::compose_<Fns...>;
template <template <typename...> class... Fns>
using compose_f = detail::compose_f_<Fns...>;
template<typename Fn, typename... Ts>
struct bind_front {
template<typename... Us>
using apply = invoke<Fn, Ts..., Us...>;
};
template<typename Fn, typename... Ts>
struct bind_back {
template<typename... Us>
using apply = invoke<Fn, Us..., Ts...>;
};
/*
* ========== meta:: predicates ============
*/
template <typename T1>
struct same_as {
template <typename T2>
struct apply : same_<T1, T2> { };
};
template <typename T1>
struct not_same_as {
template <typename T2>
struct apply : not_same_<T1, T2> { };
};
}}
#endif /* __utl_meta_invoke_h__ */
+
+ + + + diff --git a/doc/html/_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example.html b/doc/html/_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example.html new file mode 100644 index 0000000..8d06788 --- /dev/null +++ b/doc/html/_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: W:/Work/Software/Libraries/utl/include/utl/meta/typelist.h + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
W:/Work/Software/Libraries/utl/include/utl/meta/typelist.h
+
+
+

A class template that just holds a parameter pack.The idea came from MPL's sequence concept [link1 1] and from N4115 [link2 2]. In addition to N4115's name "packer" we just prefer a name which is object, not a subject. This way the name gives the feeling of a container and smells like Python.

+

In addition to tuple we lack members, so typelist could serve as an empty base class, and an object of the ultimate type could always be instantiated (even if the parameter typelist contains void or some type that lacks a default constructor).

+
using l1 = typelist<int, void*, double, void>;
l1 a {};

boost::hana [link3 3] suggests a more powerful scheme were type invariant structures can be used for metaprograming also. This lib does not need (yet) this kind of power (we afraid the responsibility that comes along). So a simple python-like list with some extra vector-like element access functionalities and no iterators is good enough(for now).

+

[1]: https://www.boost.org/doc/ [2]: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4115.html [3]: https://github.com/boostorg/hana

+
#ifndef __utl_meta_typelist_h__
#define __utl_meta_typelist_h__
#include <utl/core/impl.h>
namespace utl {
namespace meta {
template <typename... Ts>
struct typelist {
using type = typelist;
static constexpr size_t size() noexcept {
return sizeof...(Ts);
}
static constexpr bool empty() noexcept {
return (sizeof...(Ts) == 0);
}
// ======= times utility =======
private:
template <typename... > struct cat_ { };
template <typename... L1, typename... L2>
struct cat_<typelist<L1...>, typelist<L2...>> {
using type = typelist<L1..., L2...>;
};
template <size_t N, typename ...T>
struct times_ {
//static_assert( N >= 0, "Cannot make typelist of negative length" );
using type = eval<
cat_<
eval<times_<N/2, T...>>,
eval<times_<N - N/2, T...>>
>
>;
};
template <typename ...T>
struct times_<1, T...> {
using type = typelist<T...>;
};
template <typename ...T>
struct times_<0, T...> {
using type = typelist<>;
};
public:
template<size_t N>
using times = eval<
times_<N, Ts...>
>;
};
template <typename List>
using size = size_<List::size()>;
template <typename List>
using empty = bool_<List::empty()>;
template <typename T1, typename T2>
using pair = typelist<T1, T2>;
template <size_t N, typename ...Ts>
using repeat_c = typename typelist<Ts...>::template times<N>;
template <typename N, typename ...Ts>
using repeat = repeat_c<N::type::value, Ts...>;
namespace apply_impl {
template <typename Fn, typename Seq>
struct apply_ { };
template<typename Fn, typename ...List>
struct apply_<Fn, typelist<List...>> {
using type = invoke<Fn, List...>;
};
template <typename Fn, typename T, T... Is>
struct apply_<Fn, integer_sequence<T, Is...>> {
using type = invoke<Fn, integral_<T, Is>...>;
};
}
template <typename Fn, typename Seq>
using apply = apply_impl::apply_<Fn, Seq>;
template <typename Fn, typename Seq>
using apply_t = eval <apply<Fn, Seq>>;
/*
* ========= element access ========
*/
namespace at_impl {
template <typename T> struct _add_pointer { using type = T*; };
template <typename T> using add_pointer = eval < _add_pointer <T> >;
template <typename ...>
struct at_head_ { };
template <typename... voids>
struct at_head_ <typelist<voids...>> {
// successful selection N voids, one T* and the rest
template <typename T> static constexpr T select(voids..., T*, ...);
// selection on error
static constexpr nil_ select (...);
};
template<typename List, index_t N>
struct at_ { };
template<typename... List, index_t N>
struct at_<typelist<List...>, N> {
using head_ = at_head_<typelist<void*>::times<N>>; //< make at_head_<> with N void*
using type = decltype(
head_::select(static_cast<add_pointer<List>>(nullptr)...) //< pass all as List*...
);
};
}
template <typename List, index_t N>
using at_c = eval<
at_impl::at_<List, N>
>;
template <typename List, typename N>
using at = at_c<List, N::type::value>;
namespace front_impl {
template <typename L>
struct front_ { };
template <typename Head, typename... Tail>
struct front_<typelist<Head, Tail...>> {
using type = Head;
};
}
template <typename List>
using front = eval<
front_impl::front_<List>
>;
namespace back_impl {
template <typename List>
struct back_ { };
template <typename Head, typename... Tail>
struct back_<typelist<Head, Tail...>> {
using type = at_c <
typelist<Head, Tail...>, sizeof...(Tail)
>;
};
}
template <typename List>
using back = eval<
back_impl::back_<List>
>;
/*
* ========= typelist operations =========
*/
namespace cat_impl {
template <typename... Lists>
struct cat_ { };
template <>
struct cat_<> {
using type = typelist<>;
};
template <typename... L1>
struct cat_<typelist<L1...>> {
using type = typelist<L1...>;
};
template <typename... L1, typename... L2>
struct cat_<typelist<L1...>, typelist<L2...>> {
using type = typelist<L1..., L2...>;
};
template <typename... L1, typename... L2, typename... Ln>
struct cat_<typelist<L1...>, typelist<L2...>, Ln...>
: cat_ <typelist<L1..., L2...>, Ln...> { };
}
template <typename... Lists>
using cat = eval<
cat_impl::cat_<Lists...>
>;
namespace fold_impl {
// fold<<T1, T2, T3>, V, F> == F<F<F<V, T1>, T2>, T3>
template<typename, typename, typename>
struct fold_ { }; // ill formed
// recursive call
template<typename Head, typename... Tail,
typename V,
typename Fn>
struct fold_<typelist<Head, Tail...>, V, Fn> {
// recursive call of fold_ by consuming typelist and invoking Fn
using type = eval<
fold_<
typelist<Tail...>,
invoke<Fn, V, Head>,
Fn
>
>;
};
// termination call
template<typename V0, typename Fn>
struct fold_<typelist<>, V0, Fn> {
using type = V0;
};
}
template <typename List, typename V, typename Fn>
using fold = eval<fold_impl::fold_<List, V, Fn>>;
template <typename List, typename V, typename Fn>
using accumulate = fold<List, V, Fn>;
namespace rev_fold_impl {
// rev_fold<<T1, T2, T3>, V, F> == F<T1, F<T2, F<T3, V>>>
template<typename, typename, typename>
struct rev_fold_ { }; // ill formed
// recursive call
template<typename Head, typename... Tail,
typename V,
typename Fn>
struct rev_fold_<typelist<Head, Tail...>, V, Fn> {
// recursive call inside invoke. This way the 2nd argument of Fn
// becoming the recursive "thing", inside Fn<>
using type = invoke <
Fn, Head, eval<
rev_fold_ <
typelist<Tail...>,
V,
Fn
>>
>;
};
// pre-termination call
template<typename Tail, typename V, typename Fn>
struct rev_fold_ <typelist<Tail>, V, Fn> {
using type = invoke<Fn, Tail, V>;
};
// termination call
template<typename V, typename Fn>
struct rev_fold_ <typelist<>, V, Fn> {
using type = V;
};
}
template <typename List, typename V, typename Fn>
using rev_fold = eval<
rev_fold_impl::rev_fold_<List, V, Fn>
>;
template <typename List, typename... Ts>
using push_front = eval<
bind_front<quote<typelist>, Ts...>, List
>
>;
template <typename List, typename... Ts>
using push_back = eval<
bind_back<quote<typelist>, Ts...>, List
>
>;
namespace reverse_impl {
template <typename List, typename V = typelist<>>
struct reverse_ {
using type = fold<List, V, quote<push_front>>;
};
}
template <typename List>
using reverse = eval<
reverse_impl::reverse_<List>
>;
namespace pop_front_impl {
template <typename List>
struct pop_front_ { };
template <typename Head, typename... Tail>
struct pop_front_<typelist <Head, Tail...>> {
using type = typelist<Tail...>;
};
}
template <typename List>
using pop_front = eval<
pop_front_impl::pop_front_<List>
>;
namespace pop_back_impl {
template <typename List>
struct pop_back_ {
using type = reverse<
pop_front<reverse<List>>
>;
};
}
template <typename List>
using pop_back = eval <
pop_back_impl::pop_back_<List>
>;
namespace transform_impl {
template <typename, typename = void>
struct transform_ { };
template <typename... Ts, typename Fn>
struct transform_<typelist<typelist<Ts...>, Fn>,
void_t<invoke<Fn, Ts>...> > /* SFINAE check */ {
using type = typelist<
invoke_t<Fn, Ts>...
>;
};
template <typename... Ts0, typename... Ts1, typename Fn>
struct transform_<typelist<typelist<Ts0...>, typelist<Ts1...>, Fn>,
void_t<invoke<Fn, Ts0, Ts1>...>> /* SFINAE check */ {
using type = typelist<
invoke_t<Fn, Ts0, Ts1>...
>;
};
}
template <typename... Args>
using transform = eval<
transform_impl::transform_<typelist<Args...>>
>;
namespace transform_lazy_impl {
template <typename, typename = void>
struct transform_lazy_ { };
// Match for Unary Fn with one typelist
template <typename... Ts, typename Fn>
struct transform_lazy_<typelist<typelist<Ts...>, Fn>,
void_t<invoke<Fn, Ts>...> > /* SFINAE check */ {
using type = typelist<
invoke<Fn, Ts>...
>;
};
// Match for Binary Fn with two typelists
template <typename... Ts0, typename... Ts1, typename Fn>
struct transform_lazy_<typelist<typelist<Ts0...>, typelist<Ts1...>, Fn>,
void_t<invoke<Fn, Ts0, Ts1>...>> /* SFINAE check */ {
using type = typelist<
invoke<Fn, Ts0, Ts1>...
>;
};
}
template <typename... Args>
transform_lazy_impl::transform_lazy_<typelist<Args...>>
>;
namespace find_if_impl {
template <typename, typename, index_t>
struct find_if_ { };
template<typename Head, typename... Tail, typename Fn, index_t N>
struct find_if_<typelist<Head, Tail...>, Fn, N> {
// Recursive call to find_if_ until Fn returns true_
using type = if_ <
invoke_t<Fn, Head>,
index_<N>, // done, return current index
eval<find_if_< // not done, re-call find_if_ with the Tail...
typelist<Tail...>, Fn, N+1>
>
>;
};
// When empty or when we are one place after the last item return Npos
template<typename Fn, index_t N>
struct find_if_<typelist<>, Fn, N> {
using type = Npos;
};
}
template<typename List, typename Pred>
using find_if = eval<
find_if_impl::find_if_<List, Pred, 0>
>;
template <typename List, typename T>
using find = find_if<List, same_as<T>>;
namespace seek_if_impl {
template <typename, typename, index_t>
struct seek_if_ { };
template<typename Head, typename... Tail, typename Fn, index_t N>
struct seek_if_<typelist<Head, Tail...>, Fn, N> {
// recursive call to seek_if_ until Fn returns true_
using type = if_ <
invoke_t<Fn, Head>,
typelist<Head, Tail...>, // done, return the typelist starting from here
eval<seek_if_< // not done, re-call seek_if_ with the Tail...
typelist<Tail...>, Fn, N+1>
>
>;
};
// When empty or when we are one place after the last item return empty typelist
template<typename Fn, index_t N>
struct seek_if_<typelist<>, Fn, N> {
using type = typelist<>;
};
}
template <typename List, typename Pred>
using seek_if = eval<
seek_if_impl::seek_if_<List, Pred, 0>
>;
template <typename List, typename T>
using seek = seek_if <List, same_as<T>>;
namespace count_if_impl {
template <typename, typename, size_t>
struct count_if_ { };
template<typename Head, typename... Tail, typename Fn, size_t N>
struct count_if_<typelist<Head, Tail...>, Fn, N> {
// Recursive call to count_if_ up to the end of List, counting all invokes of Fn
// returning true_
using type = if_ <
invoke_t<Fn, Head>,
count_if_<typelist<Tail...>, Fn, N+1> // increase and re-call
>,
count_if_<typelist<Tail...>, Fn, N> // re-call without increasing
>
>;
};
// At the end of the List return the counter
template<typename Fn, size_t N>
struct count_if_<typelist<>, Fn, N> {
using type = size_<N>;
};
}
template <typename List, typename Pred>
using count_if = eval<
count_if_impl::count_if_<List, Pred, 0>
>;
template <typename List, typename T>
using count = count_if<List, same_as<T>>;
namespace filter_impl {
template <typename, typename, typename>
struct filter_ { };
template<typename Head, typename... Tail, typename Fn, typename L>
struct filter_<typelist<Head, Tail...>, Fn, L> {
// Recursive call to filter_ up to the end of the List, creating a new list
// of items for which the invoke of Fn returns true_
using type = if_ <
invoke_t <Fn, Head>,
eval<filter_<typelist<Tail...>, Fn, cat<L, typelist<Head>>>>, // Add the element and re-call
eval<filter_<typelist<Tail...>, Fn, L>> // re-call with the same list
>;
};
// At the end return the produced list
template<typename Fn, typename L>
struct filter_<typelist<>, Fn, L> {
using type = L;
};
}
template <typename List, typename Pred>
using filter = eval<
filter_impl::filter_<List, Pred, typelist<>>
>;
namespace replace_if_impl {
template <typename, typename, typename, typename>
struct replace_if_ { };
template <typename Head, typename... Tail, typename Fn, typename T, typename Ret>
struct replace_if_<typelist<Head, Tail...>, Fn, T, Ret> {
// Recursive call to replace_if_ up to the end of the List, creating a new list
// of items based on invocation of Fn
using type = if_ <
invoke_t<Fn, Head>,
eval<replace_if_<typelist<Tail...>, Fn, T, cat<Ret, typelist<T>>>>, // re-call with change to T
eval<replace_if_<typelist<Tail...>, Fn, T, cat<Ret, typelist<Head>>>> // re-call with no change
>;
};
// At the end return the produced list
template <typename Fn, typename T, typename Ret>
struct replace_if_ <typelist<>, Fn, T, Ret> {
using type = Ret;
};
}
template<typename List, typename Pred, typename T>
using replace_if = eval<
replace_if_impl::replace_if_<List, Pred, T, typelist<>>
>;
template <typename List, typename T, typename U>
using replace = eval <
replace_if <List, same_as<T>, U>
>;
template <typename List, typename Pred>
using all_of = if_ <
empty <List>,
filter <List, compose<quote<not_>, Pred>>
>
>;
template <typename List, typename Pred>
using any_of = not_<
empty<filter <List, Pred>>
>;
template <typename List, typename Pred>
using none_of = empty<
filter <List, Pred>
>;
}}
#endif /* __utl_meta_typelist_h__ */
+
+ + + + diff --git a/doc/html/annotated.html b/doc/html/annotated.html new file mode 100644 index 0000000..12313ac --- /dev/null +++ b/doc/html/annotated.html @@ -0,0 +1,347 @@ + + + + + + + +uTL: Class List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+
[detail level 1234]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 NutlSTL's core language concepts
 N_1wire_i_det
 Ncommon_impl
 Ndetail
 Ndetails
 Ni2c_i_details
 Nidx_dev_details
 Nidxdev_it_details
 Nin_dev_details
 Ninbuf_dev_details
 Nindev_it_details
 Nmeta
 Nout_dev_details
 Noutdev_it_details
 Nspi_i_details
 C_1wire_iTemplate base class for 1-wire communication interface using CRTP
 C_1wire_i< virtual_tag >A virtual base class implementation
 C_1wire_id_t
 C_1wire_uart_i1-wire UART interface template class using CRTP Using the private virtual interface we provide the interface from _1wire_i<>
 C_1wire_uart_i< virtual_tag >A virtual base class interface implementation. Using the private virtual interface we provide the interface from _1wire_i<virtual_tag>
 CarrayA standard container for storing a fixed size sequence of elements
 Carray_traitsArray container traits helper
 Carray_traits< _Tp, 0 >
 Cbidirectional_iterator_tag
 Ccontiguous_iterator_tag
 Ccrtp_tagCRTP support tag type
 Cdev_iterator_traitsDevice iterator collection
 Cforward_iterator_tag
 Ci2c_bb_iA bit banking implementation of i2c bus inherited from i2c_i base class
 Ci2c_bb_i< virtual_tag >A virtual base class interface specialization. Using the private virtual interface we provide the interface from i2c_i<virtual_tag>
 Ci2c_iAbstract base class for i2c bus
 Ci2c_i< virtual_tag >A virtual base class specialization
 Cid_tA standard container for storing IDs as a fixed size sequence of bytes. This type is based on etl::array Meets the requirements of: container, reversible container, sequence. Sets support random access iterators
 Cid_traitsId container traits helper
 Cid_traits< _Tp, 0 >
 Cidx_devAbstract base class for indexed devices
 Cidx_dev< virtual_tag, data_t, idx_t, N >A virtual base class specialization
 Cin_devAbstract base class for input devices
 Cin_dev< virtual_tag, data_t, streamsize >A virtual base class specialization
 Cinbuf_devAbstract base class for input buffered devices
 Cinbuf_dev< virtual_tag, data_t, streamsize >A virtual base class specialization
 Cindev_itInput device iterator type. We "future call" interface methods from owner class to provide iterator functionality
 Cinput_iterator_tag
 Ciodev_itIndexed device iterator type. We "future call" interface methods from owner class to provide iterator functionality
 Cis_invocableStd::is_invocable trait for C++11
 Cis_invocable_rStd::is_invocable_r trait for C++11
 Cistreamdev_it
 Costream_devAbstract base classes for output stream devices
 Costream_dev< virtual_tag, data_t >
 Costreamdev_it
 Cout_devAbstract base classes for output devices
 Cout_dev< virtual_tag, data_t, streamsize >A virtual base class specialization
 Coutdev_itOutput device iterator type. We "future call" interface methods from owner class to provide iterator functionality
 Coutput_iterator_tagIterator tags [std.iterator.tags] Extension: contiguous_iterator_tag for denoting contiguous iterators
 Crandom_access_iterator_tag
 Cspi_bb_iA bit banking implementation of spi bus inherited from spi_i base class
 Cspi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >A virtual base class interface specialization. Using the private virtual interface we provide the interface from spi_i<virtual_tag>
 Cspi_i
 Cspi_i< virtual_tag >A virtual base class implementation
 Cvirtual_tagVirtual support tag type
+
+
+
+ + + + diff --git a/doc/html/annotated_dup.js b/doc/html/annotated_dup.js new file mode 100644 index 0000000..81d16af --- /dev/null +++ b/doc/html/annotated_dup.js @@ -0,0 +1,4 @@ +var annotated_dup = +[ + [ "utl", "namespaceutl.html", "namespaceutl" ] +]; \ No newline at end of file diff --git a/doc/html/array_8h.html b/doc/html/array_8h.html new file mode 100644 index 0000000..3c30e7a --- /dev/null +++ b/doc/html/array_8h.html @@ -0,0 +1,167 @@ + + + + + + + +uTL: include/utl/container/array.h File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
array.h File Reference
+
+
+
#include <utl/core/impl.h>
+#include <algorithm>
+
+

Go to the source code of this file.

+ + + + + + + + + + + + +

+Classes

struct  utl::array_traits< _Tp, _Nm >
 array container traits helper More...
 
struct  utl::array_traits< _Tp, 0 >
 
struct  utl::array_traits< _Tp, 0 >::type
 
struct  utl::array< _Tp, _Nm >
 A standard container for storing a fixed size sequence of elements. More...
 
+ + + + +

+Namespaces

 utl
 STL's core language concepts.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename _Tp , size_t _Nm>
void utl::swap (array< _Tp, _Nm > &lhs, array< _Tp, _Nm > &rhs) noexcept(noexcept(lhs.swap(rhs)))
 
template<size_t _Int, typename _Tp , size_t _Nm>
constexpr _Tp & utl::get (array< _Tp, _Nm > &arr) noexcept
 
template<size_t _Int, typename _Tp , size_t _Nm>
constexpr _Tp && utl::get (array< _Tp, _Nm > &&arr) noexcept
 
template<size_t _Int, typename _Tp , size_t _Nm>
constexpr const _Tp & utl::get (const array< _Tp, _Nm > &arr) noexcept
 
Array comparisons.
template<typename _Tp , size_t _Nm>
bool utl::operator== (const array< _Tp, _Nm > &lhs, const array< _Tp, _Nm > &rhs)
 
template<typename _Tp , size_t _Nm>
bool utl::operator!= (const array< _Tp, _Nm > &lhs, const array< _Tp, _Nm > &rhs)
 
template<typename _Tp , size_t _Nm>
bool utl::operator< (const array< _Tp, _Nm > &lhs, const array< _Tp, _Nm > &rhs)
 
template<typename _Tp , size_t _Nm>
bool utl::operator> (const array< _Tp, _Nm > &lhs, const array< _Tp, _Nm > &rhs)
 
template<typename _Tp , size_t _Nm>
bool utl::operator<= (const array< _Tp, _Nm > &lhs, const array< _Tp, _Nm > &rhs)
 
template<typename _Tp , size_t _Nm>
bool utl::operator>= (const array< _Tp, _Nm > &lhs, const array< _Tp, _Nm > &rhs)
 
+
+
+ + + + diff --git a/doc/html/array_8h.js b/doc/html/array_8h.js new file mode 100644 index 0000000..e99e91a --- /dev/null +++ b/doc/html/array_8h.js @@ -0,0 +1,17 @@ +var array_8h = +[ + [ "array_traits", "structutl_1_1array__traits.html", "structutl_1_1array__traits" ], + [ "array_traits< _Tp, 0 >", "structutl_1_1array__traits_3_01___tp_00_010_01_4.html", "structutl_1_1array__traits_3_01___tp_00_010_01_4" ], + [ "type", "structutl_1_1array__traits_3_01___tp_00_010_01_4_1_1type.html", null ], + [ "array", "structutl_1_1array.html", "structutl_1_1array" ], + [ "get", "array_8h.html#a29057d2e164fe6dd3f3095f0d69c6546", null ], + [ "get", "array_8h.html#ab0087ff901c30848b7ac6f5ffa31f5cf", null ], + [ "get", "array_8h.html#aad376ab583a0db920180465f9f35d67b", null ], + [ "operator!=", "array_8h.html#a45cd30dab2ec904b6fd64641d777b35e", null ], + [ "operator<", "array_8h.html#a633f700b294b53e4f58183fd4bc6963f", null ], + [ "operator<=", "array_8h.html#a36f9fadffe88aefcc2d37249eaf951c3", null ], + [ "operator==", "array_8h.html#a841f326020eb98fa4b8f764bf35442c0", null ], + [ "operator>", "array_8h.html#a1d5c761bf59037aeed9157e4f63bed9e", null ], + [ "operator>=", "array_8h.html#a942cac675f6dd1313807eccb407ebec6", null ], + [ "swap", "array_8h.html#ae0f873b4883af7cc18cb23dd2810f4e6", null ] +]; \ No newline at end of file diff --git a/doc/html/array_8h_source.html b/doc/html/array_8h_source.html new file mode 100644 index 0000000..266aa46 --- /dev/null +++ b/doc/html/array_8h_source.html @@ -0,0 +1,160 @@ + + + + + + + +uTL: include/utl/container/array.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
array.h
+
+
+Go to the documentation of this file.
1 
21 #ifndef __utl_container_array_h__
22 #define __utl_container_array_h__
23 
24 #include <utl/core/impl.h>
25 #include <algorithm>
26 
27 namespace utl {
28 
34  template<typename _Tp, size_t _Nm>
36  struct array_traits {
37  typedef _Tp type[_Nm];
38 
39  static constexpr _Tp& Ref (const type& t, size_t n) noexcept {
40  return const_cast<_Tp&>(t[n]);
41  }
42 
43  static constexpr _Tp* Ptr(const type& t) noexcept {
44  return const_cast<_Tp*>(t);
45  }
46  };
47 
48  template<typename _Tp>
49  struct array_traits<_Tp, 0> {
50  struct type { };
51 
52  static constexpr _Tp& Ref(const type&, size_t) noexcept {
53  return *static_cast<_Tp*>(nullptr);
54  }
55 
56  static constexpr _Tp* Ptr(const type&) noexcept {
57  return nullptr;
58  }
59  };
61 
76  template <typename _Tp, size_t _Nm>
77  struct array {
78  using value_type = _Tp;
79  using pointer = value_type*;
80  using const_pointer = const value_type*;
82  using const_reference = const value_type&;
83  using iterator = value_type*;
84  using const_iterator = const value_type*;
85  using size_type = size_t;
87  using reverse_iterator = std::reverse_iterator <iterator>;
89  = std::reverse_iterator <const_iterator>;
90 
91  // type and data
92  //using empty_t = array_traits<_Tp, 0>;
94  typename array_t::type _data;
95 
96  // No explicit construct/copy/destroy for aggregate type.
97 
98  // DR 776.
99  void fill (const value_type& v) { std::fill_n (begin(), size(), v); }
100 
101  void swap (array& other) noexcept {
102  std::swap_ranges (begin(), end(), other.begin());
103  }
104 
107  iterator begin() noexcept { return iterator (data()); }
108  const_iterator begin() const noexcept { return const_iterator (data()); }
109  iterator end() noexcept { return iterator (data() + _Nm); }
110  const_iterator end() const noexcept { return const_iterator (data() + _Nm); }
111  const_iterator cbegin() const noexcept { return const_iterator (data()); }
112  const_iterator cend() const noexcept { return const_iterator (data() + _Nm); }
113 
114  reverse_iterator rbegin() noexcept { return reverse_iterator (end()); }
115  reverse_iterator rend() noexcept { return reverse_iterator (begin()); }
116  const_reverse_iterator rbegin() const noexcept { return const_reverse_iterator (end()); }
117  const_reverse_iterator rend() const noexcept { return const_reverse_iterator (begin()); }
118  const_reverse_iterator crbegin() const noexcept { return const_reverse_iterator (end()); }
119  const_reverse_iterator crend() const noexcept { return const_reverse_iterator (begin()); }
123  constexpr size_type size() const noexcept { return _Nm; }
124  constexpr size_type max_size() const noexcept { return _Nm; }
125  constexpr bool empty() const noexcept { return size() == 0; }
127 
130 
133  return array_t::Ref(_data, n);
134  }
136  constexpr const_reference operator[](size_type n) const noexcept {
137  return array_t::Ref(_data, n);
138  }
139 
144  reference at (size_type n) noexcept {
145  if (n < _Nm)
146  return array_t::Ref(_data, n);
147  else
148  abort (); //XXX: Throw here
149  }
151  constexpr const_reference at (size_type n) const noexcept {
152  static_assert ((n < _Nm), "array::at: out of range");
153  return array_t::Ref(_data, n);
154  }
155  // first item
156  reference front () noexcept {
157  return *begin ();
158  }
159  constexpr const_reference front() const noexcept {
160  return array_t::Ref(_data, 0);
161  }
162 
163  // Last item
164  reference back () noexcept {
165  return _Nm ? *(end() - 1) : *end();
166  }
167  constexpr const_reference back () const noexcept {
168  return _Nm ? array_t::Ref(_data, _Nm - 1)
169  : array_t::Ref(_data, 0);
170  }
171 
172  // Pointer to data
173  pointer data () noexcept { return array_t::Ptr(_data); }
174  const_pointer data () const noexcept { return array_t::Ptr(_data); }
176  };
177 
180  template<typename _Tp, size_t _Nm>
181  inline bool operator== (const array<_Tp, _Nm>& lhs, const array<_Tp, _Nm>& rhs) {
182  return std::equal (lhs.begin(), lhs.end(), rhs.begin());
183  }
184 
185  template<typename _Tp, size_t _Nm>
186  inline bool operator!= (const array<_Tp, _Nm>& lhs, const array<_Tp, _Nm>& rhs) {
187  return !(lhs == rhs);
188  }
189 
190  template<typename _Tp, size_t _Nm>
191  inline bool operator< (const array<_Tp, _Nm>& lhs, const array<_Tp, _Nm>& rhs) {
192  return std::lexicographical_compare(lhs.begin(), lhs.end(), rhs.begin(), rhs.end());
193  }
194 
195  template<typename _Tp, size_t _Nm>
196  inline bool operator> (const array<_Tp, _Nm>& lhs, const array<_Tp, _Nm>& rhs) {
197  return rhs < lhs;
198  }
199 
200  template<typename _Tp, size_t _Nm>
201  inline bool operator<= (const array<_Tp, _Nm>& lhs, const array<_Tp, _Nm>& rhs) {
202  return !(lhs > rhs);
203  }
204 
205  template<typename _Tp, size_t _Nm>
206  inline bool
207  operator>= (const array<_Tp, _Nm>& lhs, const array<_Tp, _Nm>& rhs) {
208  return !(lhs < rhs);
209  }
211 
212  // Specialized algorithms.
213  template<typename _Tp, size_t _Nm>
214  inline void swap (array<_Tp, _Nm>& lhs, array<_Tp, _Nm>& rhs)
215  noexcept (noexcept (lhs.swap(rhs))) {
216  lhs.swap (rhs);
217  }
218 
219  template<size_t _Int, typename _Tp, size_t _Nm>
220  constexpr _Tp& get (array<_Tp, _Nm>& arr) noexcept {
221  static_assert(_Int < _Nm, "Index is out of bounds");
222  return array_traits<_Tp, _Nm>::Ref(arr._data, _Int);
223  }
224 
225  template<size_t _Int, typename _Tp, size_t _Nm>
226  constexpr _Tp&& get (array<_Tp, _Nm>&& arr) noexcept {
227  static_assert(_Int < _Nm, "Index is out of bounds");
228  return std::move(std::get<_Int>(arr));
229  }
230 
231  template<size_t _Int, typename _Tp, size_t _Nm>
232  constexpr const _Tp& get (const array<_Tp, _Nm>& arr) noexcept {
233  static_assert(_Int < _Nm, "Index is out of bounds");
234  return array_traits<_Tp, _Nm>::Ref(arr._data, _Int);
235  }
236 
237 } // namespace utl
238 
239 
240 #endif /* __utl_continer_array_h__ */
const_iterator cend() const noexcept
Definition: array.h:112
+
bool operator==(const array< _Tp, _Nm > &lhs, const array< _Tp, _Nm > &rhs)
Definition: array.h:181
+
reference front() noexcept
Definition: array.h:156
+
ptrdiff_t difference_type
Definition: array.h:86
+
A standard container for storing a fixed size sequence of elements.
Definition: array.h:77
+
constexpr const_reference operator[](size_type n) const noexcept
Operator [] for const.
Definition: array.h:136
+
reverse_iterator rend() noexcept
Definition: array.h:115
+
array_t::type _data
Definition: array.h:94
+
value_type * pointer
Definition: array.h:79
+
static constexpr _Tp & Ref(const type &, size_t) noexcept
Definition: array.h:52
+
const_iterator end() const noexcept
Definition: array.h:110
+
const_pointer data() const noexcept
Definition: array.h:174
+
constexpr bool empty() const noexcept
Definition: array.h:125
+
pointer data() noexcept
Definition: array.h:173
+
void swap(array &other) noexcept
Definition: array.h:101
+
const_reverse_iterator rbegin() const noexcept
Definition: array.h:116
+
iterator end() noexcept
Definition: array.h:109
+
reference back() noexcept
Definition: array.h:164
+
const_reverse_iterator crbegin() const noexcept
Definition: array.h:118
+
const_reverse_iterator rend() const noexcept
Definition: array.h:117
+
std::ptrdiff_t ptrdiff_t
Definition: types.h:40
+
const value_type * const_iterator
Definition: array.h:84
+
array container traits helper
Definition: array.h:36
+
std::reverse_iterator< const_iterator > const_reverse_iterator
Definition: array.h:89
+
const value_type * const_pointer
Definition: array.h:80
+
bool operator>=(const array< _Tp, _Nm > &lhs, const array< _Tp, _Nm > &rhs)
Definition: array.h:207
+
std::reverse_iterator< iterator > reverse_iterator
Definition: array.h:87
+
static constexpr _Tp * Ptr(const type &) noexcept
Definition: array.h:56
+
std::size_t size_t
Definition: types.h:37
+
constexpr const_reference back() const noexcept
Definition: array.h:167
+
STL&#39;s core language concepts.
Definition: _1wire.h:30
+
_Tp value_type
Definition: array.h:78
+
reference at(size_type n) noexcept
Definition: array.h:144
+
reference operator[](size_type n) noexcept
Operator [].
Definition: array.h:132
+
void fill(const value_type &v)
Definition: array.h:99
+
bool operator>(const array< _Tp, _Nm > &lhs, const array< _Tp, _Nm > &rhs)
Definition: array.h:196
+
constexpr const_reference at(size_type n) const noexcept
Compile time boundary check dereference operator.
Definition: array.h:151
+
reverse_iterator rbegin() noexcept
Definition: array.h:114
+
static constexpr _Tp * Ptr(const type &t) noexcept
Definition: array.h:43
+
constexpr size_type size() const noexcept
Definition: array.h:123
+
value_type & reference
Definition: array.h:81
+
const_reverse_iterator crend() const noexcept
Definition: array.h:119
+
iterator begin() noexcept
Definition: array.h:107
+
bool operator!=(const array< _Tp, _Nm > &lhs, const array< _Tp, _Nm > &rhs)
Definition: array.h:186
+
constexpr const_reference front() const noexcept
Definition: array.h:159
+
const_iterator cbegin() const noexcept
Definition: array.h:111
+
size_t size_type
Definition: array.h:85
+
constexpr size_type max_size() const noexcept
Definition: array.h:124
+
const_iterator begin() const noexcept
Definition: array.h:108
+
_Tp type[_Nm]
Definition: array.h:37
+
void swap(array< _Tp, _Nm > &lhs, array< _Tp, _Nm > &rhs) noexcept(noexcept(lhs.swap(rhs)))
Definition: array.h:214
+
const value_type & const_reference
Definition: array.h:82
+
value_type * iterator
Definition: array.h:83
+
Implementation detail main forward header.
+
static constexpr _Tp & Ref(const type &t, size_t n) noexcept
Definition: array.h:39
+
+
+ + + + diff --git a/doc/html/bc_s.png b/doc/html/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/doc/html/bdwn.png b/doc/html/bdwn.png new file mode 100644 index 0000000000000000000000000000000000000000..940a0b950443a0bb1b216ac03c45b8a16c955452 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T + + + + + + +uTL: Class Index + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Class Index
+
+
+
_ | a | b | c | d | f | i | n | o | p | q | r | s | t | v | w
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  _  
+
array_traits< _Tp, 0 > (utl)   filter_< typelist<>, Fn, L > (utl::meta::filter_impl)   is_in_dev_ (utl::in_dev_details)   replace_if_ (utl::meta::replace_if_impl)   
at_ (utl::meta::at_impl)   find_if_ (utl::meta::find_if_impl)   is_in_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_get1_t< _Tp >, size_t >, use_if_same_t< try_get2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > > (utl::in_dev_details)   replace_if_< typelist< Head, Tail... >, Fn, T, Ret > (utl::meta::replace_if_impl)   
_1wire_i (utl)   at_< typelist< List... >, N > (utl::meta::at_impl)   find_if_< typelist< Head, Tail... >, Fn, N > (utl::meta::find_if_impl)   is_inbuf_dev_ (utl::inbuf_dev_details)   replace_if_< typelist<>, Fn, T, Ret > (utl::meta::replace_if_impl)   
_1wire_i< virtual_tag > (utl)   at_head_ (utl::meta::at_impl)   find_if_< typelist<>, Fn, N > (utl::meta::find_if_impl)   is_inbuf_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_get1_t< _Tp >, size_t >, use_if_same_t< try_get2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > > (utl::inbuf_dev_details)   rev_fold_ (utl::meta::rev_fold_impl)   
_1wire_id_t (utl)   at_head_< typelist< voids... > > (utl::meta::at_impl)   fold_ (utl::meta::fold_impl)   is_indev_it_ (utl::indev_it_details)   rev_fold_< typelist< Head, Tail... >, V, Fn > (utl::meta::rev_fold_impl)   
_1wire_uart_i (utl)   
  b  
+
fold_< typelist< Head, Tail... >, V, Fn > (utl::meta::fold_impl)   is_indev_it_< _Tp, meta::void_t< typename _Tp::value_type, typename _Tp::difference_type, typename _Tp::pointer, typename _Tp::reference, void > > (utl::indev_it_details)   rev_fold_< typelist< Tail >, V, Fn > (utl::meta::rev_fold_impl)   
_1wire_uart_i< virtual_tag > (utl)   fold_< typelist<>, V0, Fn > (utl::meta::fold_impl)   is_invocable (utl)   rev_fold_< typelist<>, V, Fn > (utl::meta::rev_fold_impl)   
__common_ref_ (utl::common_impl)   back_ (utl::meta::back_impl)   forward_iterator_tag (utl)   is_invocable_r (utl)   reverse_ (utl::meta::reverse_impl)   
__common_ref_< T &&, U &&, meta::void_t< __common_ref< T &, U & >, meta::when< ConvertibleTo< T &&, __rref_res< T, U > > >, meta::when< ConvertibleTo< U &&, __rref_res< T, U > > > > > (utl::common_impl)   back_< typelist< Head, Tail... > > (utl::meta::back_impl)   front_ (utl::meta::front_impl)   is_out_dev_ (utl::out_dev_details)   
  s  
+
__common_ref_< T &&, U &, meta::void_t< __common_ref< const T &, U & >, meta::when< ConvertibleTo< T &&, __common_ref< const T &, U & > > > > > (utl::common_impl)   basic_common_reference (utl::common_impl)   front_< typelist< Head, Tail... > > (utl::meta::front_impl)   is_out_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_put1_t< _Tp >, size_t >, use_if_same_t< try_put2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > > (utl::out_dev_details)   
__common_ref_< T &, U &&, meta::void_t< __common_ref< T &, const U & >, meta::when< ConvertibleTo< U &&, __common_ref< T &, const U & > > > > > (utl::common_impl)   bidirectional_iterator_tag (utl)   
  i  
+
is_outdev_it_ (utl::outdev_it_details)   same_ (utl::meta)   
__common_ref_< T &, U &, meta::void_t< __lref_res< T, U >, meta::when< std::is_reference< __lref_res< T, U > >::value > > > (utl::common_impl)   bind_back (utl::meta)   is_outdev_it_< _Tp, meta::void_t< typename _Tp::value_type, typename _Tp::difference_type, typename _Tp::pointer, typename _Tp::reference, void > > (utl::outdev_it_details)   same_< _Tp, _Tp > (utl::meta)   
__common_reference (utl::common_impl)   bind_front (utl::meta)   i2c_bb_i (utl)   is_ref_wrapper (utl::detail)   same_as (utl::meta)   
__common_reference2 (utl::common_impl)   
  c  
+
i2c_bb_i< virtual_tag > (utl)   is_ref_wrapper< std::reference_wrapper< U > > (utl::detail)   seek_if_ (utl::meta::seek_if_impl)   
__common_reference2< T, U, meta::void_t< __basic_common_reference_t< T, U > > > (utl::common_impl)   i2c_i (utl)   is_spi_ (utl::spi_i_details)   seek_if_< typelist< Head, Tail... >, Fn, N > (utl::meta::seek_if_impl)   
__common_reference3 (utl::common_impl)   typelist::cat_ (utl::meta)   i2c_i< virtual_tag > (utl)   is_spi_< _Tp, meta::void_t< meta::use_if_same_t< try_cclock_t< _Tp >, uint32_t >, meta::use_if_same_t< try_clock_t< _Tp >, void >, meta::use_if_same_t< try_tx_t< _Tp >, byte_t >, meta::use_if_same_t< try_rx_t< _Tp >, byte_t > > > (utl::spi_i_details)   seek_if_< typelist<>, Fn, N > (utl::meta::seek_if_impl)   
__common_reference3< T, U, meta::void_t< __cond_res< T, U > > > (utl::common_impl)   cat_ (utl::meta::cat_impl)   id_t (utl)   is_strict_totally_ordered_ (utl::details)   spi_bb_i (utl)   
__common_reference< T, U, meta::when< std::is_reference< T >::value &&std::is_reference< U >::value > > (utl::common_impl)   cat_< typelist< L1... > > (utl::meta::cat_impl)   id_traits (utl)   is_strict_totally_ordered_< T, meta::void_t< meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()< std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() > std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()<=std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() >=std::declval< cref_< T >>())> > > (utl::details)   spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder > (utl)   
__copy_cv_ (utl::common_impl)   typelist::cat_< typelist< L1... >, typelist< L2... > > (utl::meta)   id_traits< _Tp, 0 > (utl)   is_strict_totally_ordered_with_ (utl::details)   spi_i (utl)   
__copy_cv_< const From > (utl::common_impl)   cat_< typelist< L1... >, typelist< L2... > > (utl::meta::cat_impl)   identity (utl::meta)   is_strict_totally_ordered_with_< T, U, meta::void_t< meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()< std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() > std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()<=std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() >=std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>()< std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>() > std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>()<=std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>() >=std::declval< cref_< T >>())> > > (utl::details)   spi_i< virtual_tag > (utl)   
__copy_cv_< const volatile From > (utl::common_impl)   cat_< typelist< L1... >, typelist< L2... >, Ln... > (utl::meta::cat_impl)   idx_dev (utl)   is_weakly_equality_comparable_with_ (utl::details)   
  t  
+
__copy_cv_< volatile From > (utl::common_impl)   cat_<> (utl::meta::cat_impl)   idx_dev< virtual_tag, data_t, idx_t, N > (utl)   is_weakly_equality_comparable_with_< T, U, meta::void_t< meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()==std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() !=std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>()==std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>() !=std::declval< cref_< T >>())> > > (utl::details)   
__xref (utl::common_impl)   common_reference (utl::common_impl)   if_c_ (utl::meta::detail)   istreamdev_it (utl)   typelist::times_ (utl::meta)   
__xref< const T > (utl::common_impl)   common_reference< T > (utl::common_impl)   if_c_< false, Then, Else > (utl::meta::detail)   
  n  
+
typelist::times_< 0, T... > (utl::meta)   
__xref< const volatile T > (utl::common_impl)   common_reference< T, U > (utl::common_impl)   if_c_< true, Then > (utl::meta::detail)   typelist::times_< 1, T... > (utl::meta)   
__xref< T & > (utl::common_impl)   common_reference< T, U, V, W... > (utl::common_impl)   if_c_< true, Then, Else > (utl::meta::detail)   nat_ (utl::meta)   transform_ (utl::meta::transform_impl)   
__xref< T && > (utl::common_impl)   compose_ (utl::meta::detail)   in_dev (utl)   nil_ (utl::meta)   transform_< typelist< typelist< Ts... >, Fn >, void_t< invoke< Fn, Ts >... > > (utl::meta::transform_impl)   
__xref< volatile T > (utl::common_impl)   compose_< Fn0 > (utl::meta::detail)   in_dev< virtual_tag, data_t, streamsize > (utl)   not_same_as (utl::meta)   transform_< typelist< typelist< Ts0... >, typelist< Ts1... >, Fn >, void_t< invoke< Fn, Ts0, Ts1 >... > > (utl::meta::transform_impl)   
_add_pointer (utl::meta::at_impl)   compose_< Fn0, Fns... > (utl::meta::detail)   inbuf_dev (utl)   
  o  
+
transform_lazy_ (utl::meta::transform_lazy_impl)   
_and_ (utl::meta::detail)   compose_f_ (utl::meta::detail)   inbuf_dev< virtual_tag, data_t, streamsize > (utl)   transform_lazy_< typelist< typelist< Ts... >, Fn >, void_t< invoke< Fn, Ts >... > > (utl::meta::transform_lazy_impl)   
_and_< _T1 > (utl::meta::detail)   compose_f_< Fn0 > (utl::meta::detail)   indev_it (utl)   ostream_dev (utl)   transform_lazy_< typelist< typelist< Ts0... >, typelist< Ts1... >, Fn >, void_t< invoke< Fn, Ts0, Ts1 >... > > (utl::meta::transform_lazy_impl)   
_and_< _T1, _T2 > (utl::meta::detail)   compose_f_< Fn0, Fns... > (utl::meta::detail)   input_iterator_tag (utl)   ostream_dev< virtual_tag, data_t > (utl)   try_invoke (utl::detail)   
_and_< _T1, _T2, _T3, _Tn... > (utl::meta::detail)   contiguous_iterator_tag (utl)   invoke_result_ (utl::detail)   ostreamdev_it (utl)   array_traits< _Tp, 0 >::type (utl)   
_and_<> (utl::meta::detail)   count_if_ (utl::meta::count_if_impl)   invoke_result_< true, _Callable, _Args... > (utl::detail)   out_dev (utl)   id_traits< _Tp, 0 >::type (utl)   
_or_ (utl::meta::detail)   count_if_< typelist< Head, Tail... >, Fn, N > (utl::meta::count_if_impl)   iodev_it (utl)   out_dev< virtual_tag, data_t, streamsize > (utl)   typelist (utl::meta)   
_or_< _T1 > (utl::meta::detail)   count_if_< typelist<>, Fn, N > (utl::meta::count_if_impl)   is_1wire_ (utl::_1wire_i_det)   outdev_it (utl)   
  v  
+
_or_< _T1, _T2 > (utl::meta::detail)   crtp_tag (utl)   is_1wire_< _Tp, meta::void_t< void > > (utl::_1wire_i_det)   output_iterator_tag (utl)   
_or_< _T1, _T2, _T3, _Tn... > (utl::meta::detail)   
  d  
+
is_applicable_ (utl::meta::detail)   
  p  
+
iodev_it::value_type_t (utl)   
_or_<> (utl::meta::detail)   is_applicable_i_ (utl::meta::detail)   virtual_tag (utl)   
  a  
+
defer_ (utl::meta::detail)   is_applicable_q_ (utl::meta::detail)   pop_back_ (utl::meta::pop_back_impl)   
  w  
+
defer_i_ (utl::meta::detail)   is_boolean_ (utl::details)   pop_front_ (utl::meta::pop_front_impl)   
same_as::apply (utl::meta)   detector (utl::meta::detail)   is_boolean_< B, meta::void_t< meta::use_if_same_t< bool, decltype(!std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>()==std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>() !=std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>() &&std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>()||std::declval< cref_< B >>())> > > (utl::details)   pop_front_< typelist< Head, Tail... > > (utl::meta::pop_front_impl)   when_ (utl::meta::detail)   
not_same_as::apply (utl::meta)   detector< Default, void_t< Op< Args... > >, Op, Args... > (utl::meta::detail)   is_i2c_ (utl::i2c_i_details)   
  q  
+
when_< true > (utl::meta::detail)   
apply_ (utl::meta::apply_impl)   dev_iterator_traits (utl)   is_i2c_< _Tp, meta::void_t< typename _Tp::Sequence, void > > (utl::i2c_i_details)   wrap (utl::meta)   
apply_< Fn, integer_sequence< T, Is... > > (utl::meta::apply_impl)   
  f  
+
is_idx_dev_ (utl::idx_dev_details)   quote (utl::meta)   wrap_i (utl::meta)   
apply_< Fn, typelist< List... > > (utl::meta::apply_impl)   is_idx_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_get1_t< _Tp >, size_t >, use_if_same_t< try_get2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > > (utl::idx_dev_details)   quote_i (utl::meta)   
array (utl)   filter_ (utl::meta::filter_impl)   is_idxdev_it_ (utl::idxdev_it_details)   
  r  
+
array_traits (utl)   filter_< typelist< Head, Tail... >, Fn, L > (utl::meta::filter_impl)   is_idxdev_it_< _Tp, meta::void_t< typename _Tp::value_type, typename _Tp::difference_type, typename _Tp::pointer, typename _Tp::reference, void > > (utl::idxdev_it_details)   
random_access_iterator_tag (utl)   
+
_ | a | b | c | d | f | i | n | o | p | q | r | s | t | v | w
+
+
+ + + + diff --git a/doc/html/classtest__1w_1_1_o_w-members.html b/doc/html/classtest__1w_1_1_o_w-members.html new file mode 100644 index 0000000..967d8a3 --- /dev/null +++ b/doc/html/classtest__1w_1_1_o_w-members.html @@ -0,0 +1,126 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
test_1w::OW Member List
+
+
+ +

This is the complete list of members for test_1w::OW, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + +
_1wire_i()=defaultutl::_1wire_i< _1wire_uart_i< Impl_t > >protected
_1wire_i(const _1wire_i &)=deleteutl::_1wire_i< _1wire_uart_i< Impl_t > >protected
_1wire_uart_i()=defaultutl::_1wire_uart_i< Impl_t >protected
first(Speed s=Speed::STD, bool alarm=false)utl::_1wire_i< _1wire_uart_i< Impl_t > >inline
match(_1wire_id_t &id, Speed s=Speed::STD)utl::_1wire_i< _1wire_uart_i< Impl_t > >inline
match_n_ovdr(_1wire_id_t &id)utl::_1wire_i< _1wire_uart_i< Impl_t > >inline
next(Speed s=Speed::STD, bool alarm=false)utl::_1wire_i< _1wire_uart_i< Impl_t > >inline
operator=(const _1wire_i &)=deleteutl::_1wire_i< _1wire_uart_i< Impl_t > >protected
reset(Speed s=Speed::STD)utl::_1wire_i< _1wire_uart_i< Impl_t > >inline
rx_data(Speed s=Speed::STD)utl::_1wire_i< _1wire_uart_i< Impl_t > >inline
rx_data(byte_t *in, size_t n, Speed s=Speed::STD)utl::_1wire_i< _1wire_uart_i< Impl_t > >
skip(Speed s=Speed::STD)utl::_1wire_i< _1wire_uart_i< Impl_t > >inline
skip_n_ovdr()utl::_1wire_i< _1wire_uart_i< Impl_t > >inline
Speed typedefutl::_1wire_uart_i< Impl_t >
tx_data(byte_t out, Speed s=Speed::STD)utl::_1wire_i< _1wire_uart_i< Impl_t > >inline
tx_data(const byte_t *out, byte_t *in, size_t n, Speed s=Speed::STD)utl::_1wire_i< _1wire_uart_i< Impl_t > >
type typedefutl::_1wire_uart_i< Impl_t >
~_1wire_i()=defaultutl::_1wire_i< _1wire_uart_i< Impl_t > >protected
~_1wire_uart_i()=defaultutl::_1wire_uart_i< Impl_t >protected
+
+ + + + diff --git a/doc/html/classtest__1w_1_1_o_w.html b/doc/html/classtest__1w_1_1_o_w.html new file mode 100644 index 0000000..d6b9d7a --- /dev/null +++ b/doc/html/classtest__1w_1_1_o_w.html @@ -0,0 +1,185 @@ + + + + + + + +uTL: test_1w::OW Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
test_1w::OW Class Reference
+
+
+
+Inheritance diagram for test_1w::OW:
+
+
+ + +utl::_1wire_uart_i< Impl_t > +utl::_1wire_i< _1wire_uart_i< Impl_t > > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from utl::_1wire_uart_i< Impl_t >
using type = _1wire_uart_i< Impl_t >
 Export type as identity meta-function. More...
 
using Speed = typename _1wire_i< type >::Speed
 Bring bus speed. More...
 
- Public Types inherited from utl::_1wire_i< _1wire_uart_i< Impl_t > >
enum  Speed
 1-wire bus speed More...
 
using type = _1wire_i
 Export type as identity meta-function. More...
 
- Public Member Functions inherited from utl::_1wire_i< _1wire_uart_i< Impl_t > >
bool reset (Speed s=Speed::STD)
 Generate a 1-wire reset. More...
 
byte_t tx_data (byte_t out, Speed s=Speed::STD)
 
size_t tx_data (const byte_t *out, byte_t *in, size_t n, Speed s=Speed::STD)
 
byte_t rx_data (Speed s=Speed::STD)
 
size_t rx_data (byte_t *in, size_t n, Speed s=Speed::STD)
 
void match (_1wire_id_t &id, Speed s=Speed::STD)
 
void match_n_ovdr (_1wire_id_t &id)
 
void skip (Speed s=Speed::STD)
 
void skip_n_ovdr ()
 
_1wire_id_t first (Speed s=Speed::STD, bool alarm=false)
 'first' operation, to search on the 1-Wire for the first device. This is performed by setting dec_, pos_ and cur_ to zero and then doing the search. More...
 
_1wire_id_t next (Speed s=Speed::STD, bool alarm=false)
 'next' operation, to search on the 1-Wire for the next device. This search is usually performed after a 'first' operation or another 'next' operation. Based on maxim-ic application note 187. More...
 
- Protected Member Functions inherited from utl::_1wire_uart_i< Impl_t >
 _1wire_uart_i ()=default
 Allow constructor from derived only. More...
 
 ~_1wire_uart_i ()=default
 
- Protected Member Functions inherited from utl::_1wire_i< _1wire_uart_i< Impl_t > >
 _1wire_i ()=default
 Allow constructor from derived only. More...
 
 _1wire_i (const _1wire_i &)=delete
 No copies. More...
 
 ~_1wire_i ()=default
 Allow destructor from derived only. More...
 
_1wire_ioperator= (const _1wire_i &)=delete
 
+

Detailed Description

+
+

Definition at line 33 of file test_1w_impl.cpp.

+

The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/doc/html/classtest__1w_1_1_o_w.png b/doc/html/classtest__1w_1_1_o_w.png new file mode 100644 index 0000000000000000000000000000000000000000..7388acea60287dd814c63de5b0b3a49bb639dd6c GIT binary patch literal 989 zcmeAS@N?(olHy`uVBq!ia0vp^Z-BUigBeI(&iI}Mq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0b39!fLn;{G&b__uk%9ng_t~g_|JD1| zR2ms(Jyz}WJ-<+fcY1({$@(J_k2M5TGkIddCh0udG%01`-kcd-OZH6hfA#C%<>Xq` z%;VPzt}iuo+P-$lBAE%i4?l>gu6*!v-`%|YiF>zlUw(3H;@t>)?#a~?Z7-E4)miu^ zuU)5X%|AivnXa7fTfZ>J=$+;dzm`6o^J=^7+u61;QYP&4#Im%q4_j?I>Xmo@_NGan zCS9{$eg5RH@851r-1qgC2|Hg<+^tQrcf(UYpWT+D>8WLLt-Siy1YI_uc-1D~yZcX^ ztM5H(FL3jC?a~F4`rWo!G3`!P)-HFp`Sh8T!^}4p%u)#M*?0}LUcY@$_)(st} znIev)G6KVqL98&6p?il;gDa|Z%`}N*8P-KAy^W{6Cb@#F__PHU-c_Di8%)>iYI(hX zX_Dild5`99%8Z-z#r)S@t&5XWpNHQ&0uJi#(1_R5C+Hr`&R9M_GjYG#>IG}>Og^i& z>wUb*iML@tearrDT5fi+8yK#e-t1btug~M#>flJ(hpBJ7&VFfmr@85;o9;Zb6z=xw zP5v+HT+Dn|*Pi=!`$s~`>WSyNa;(z#u2%QR+W7wd#Iv?xXIDM6O#k+6Uge>;EUK(i z-@IEg<#@22e)7$|>Gvme$L|0J;Ps03H&Ytq-mTufwvSiQbNz#fQ&qZmtWk+PlB#-A zDf}kTw=50%1&k7{6I1l3H|Drc+PkYS*?P*F^kjzFn8AZ5^nU0lwis}+G#C~@1J+J? zx4iNHyLI=cXa~P#IuLCcZDz^ny3(cIz04@eX>0A>J>R@u{*S&qzb9wb$0(~!uC*80 zADo?|aNBCL^-`y@f6Nu;^C$airvKZZcl+PQQ(|5--#qtwv;ADo(k)s47Uj(Becr$9 z%_gDKw!fP + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
test_1w::Test_1w_impl Member List
+
+
+ +

This is the complete list of members for test_1w::Test_1w_impl, including all inherited members.

+ + + + + + + + + + + + + + + + +
HasFailure()testing::Testinlinestatic
HasFatalFailure()testing::Teststatic
HasNonfatalFailure()testing::Teststatic
IsSkipped()testing::Teststatic
owtest_1w::Test_1w_implprotected
RecordProperty(const std::string &key, const std::string &value)testing::Teststatic
RecordProperty(const std::string &key, int value)testing::Teststatic
SetUp()testing::Testprotectedvirtual
SetUpTestCase()testing::Testinlinestatic
SetUpTestSuite()testing::Testinlinestatic
TearDown()testing::Testprotectedvirtual
TearDownTestCase()testing::Testinlinestatic
TearDownTestSuite()testing::Testinlinestatic
Test()testing::Testprotected
~Test()testing::Testvirtual
+
+ + + + diff --git a/doc/html/classtest__1w_1_1_test__1w__impl.html b/doc/html/classtest__1w_1_1_test__1w__impl.html new file mode 100644 index 0000000..e42de57 --- /dev/null +++ b/doc/html/classtest__1w_1_1_test__1w__impl.html @@ -0,0 +1,188 @@ + + + + + + + +uTL: test_1w::Test_1w_impl Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
test_1w::Test_1w_impl Class Reference
+
+
+
+Inheritance diagram for test_1w::Test_1w_impl:
+
+
+ + +testing::Test + +
+ + + + +

+Protected Attributes

OW ow
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Member Functions inherited from testing::Test
virtual ~Test ()
 
- Static Public Member Functions inherited from testing::Test
static void SetUpTestSuite ()
 
static void TearDownTestSuite ()
 
static void TearDownTestCase ()
 
static void SetUpTestCase ()
 
static bool HasFatalFailure ()
 
static bool HasNonfatalFailure ()
 
static bool IsSkipped ()
 
static bool HasFailure ()
 
static void RecordProperty (const std::string &key, const std::string &value)
 
static void RecordProperty (const std::string &key, int value)
 
- Protected Member Functions inherited from testing::Test
 Test ()
 
virtual void SetUp ()
 
virtual void TearDown ()
 
+

Detailed Description

+
+

Definition at line 43 of file test_1w_impl.cpp.

+

Member Data Documentation

+ +

◆ ow

+ +
+
+ + + + + +
+ + + + +
OW test_1w::Test_1w_impl::ow
+
+protected
+
+ +

Definition at line 47 of file test_1w_impl.cpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/doc/html/classtest__1w_1_1_test__1w__impl.js b/doc/html/classtest__1w_1_1_test__1w__impl.js new file mode 100644 index 0000000..31bd42a --- /dev/null +++ b/doc/html/classtest__1w_1_1_test__1w__impl.js @@ -0,0 +1,4 @@ +var classtest__1w_1_1_test__1w__impl = +[ + [ "ow", "classtest__1w_1_1_test__1w__impl.html#aa0eda9594f798f3ebed80f179741293a", null ] +]; \ No newline at end of file diff --git a/doc/html/classtest__1w_1_1_test__1w__impl.png b/doc/html/classtest__1w_1_1_test__1w__impl.png new file mode 100644 index 0000000000000000000000000000000000000000..6db6119c320a59ba6be45637e69facb073faf4c8 GIT binary patch literal 579 zcmeAS@N?(olHy`uVBq!ia0vp^?LZvB!3-o>n5L}C^j*wy2oiJ-_kI{+&CXXt;R?UCw`cSo-?U9TriOeC%(@M_>P0zH@qVecUwRPhLlE zZ3+=t4AeaP-Q{`V)0PC^KX7rksOrlrdW(2yyNYna=_Y{1H%z{Ph!M5aO0f+4toVc7!)pM#7u;1XZr z3ztl}#GuAla|a^4Rz|gNyY`Cpv3xnZI#&8$Ia?Uf1Kp00i_>zopr E02{#x + + + + + + +uTL: test_concepts::Base Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
test_concepts::Base Class Reference
+
+
+
+Inheritance diagram for test_concepts::Base:
+
+
+ + +test_concepts::Derived1 +test_concepts::Derived2 + +
+

Detailed Description

+
+

Definition at line 53 of file TConcepts.cpp.

+

The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/doc/html/classtest__concepts_1_1_base.png b/doc/html/classtest__concepts_1_1_base.png new file mode 100644 index 0000000000000000000000000000000000000000..f80eb387cf1e83de43513be4fbd1ce2c4ebfc840 GIT binary patch literal 962 zcmeAS@N?(olHy`uVBq!ia0vp^lYzK{gBeI((bB93QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;{J(s(!*MIWax|ceZeST{Bvv0;P5C67z<`uPF?e23qbEKck+TAP8dNwtF z?os}^W}9vOeed13m@1QMt!KG+*^L_&@4xMN++4rS@A2%*rCG^oY1_+d;}Y`c&t3jd zwK3Oux%s)^=<>62TU4)Iouqjzs{HB4+h$Y$f2)rzXUP9txv$&rb#~luf%>zY50s3p z7;D_1uKmnCJ;*DVv4EfZK#I?cEjph)eP4VDnB|w{wtR(kgEr7Z{t%V;sPppWr!1dG zM--j=DRyF#iReQWPdgC4s_D6D?f&U1{ds;>|2(s98N9z0sr>)y%c6P56&CNeTpPRe z{+~O^w^i3ZOiVv{QFGl#ql&-ZUv1R%ySB1t?b#(}7j11``Ao_^yF&h1-us6ZrrB|I zvPQhtZ^LBg@@e{fU|(LOcDgL4sLFTa#)J2+9+|qSH0|9nnR_&OB>1GjVqC z?Vl$rrQ#-~M2DB#`aXGMv$gd48^`FR*o!lg)|76y&02jgs{HJv9i{4?`Jc}n_nCBT zj>X#bm45`hgU(-{qw*3MSe}<^TPCag1Yw&wMdvE@7~Ul^&gkKsJ1y02CFfi@ugjii zUx<{l7qk{Iec%MfIsxkEV?WF1HQe6kEblW#PFkikN9CkC5HGh<_1yOL`=loq&w8G> z_w<#1R$KNi`Ty$6Pi^`gSBJgc5+xS;xwt=f`j)o#xvK8VGp;=_JY!c^A2ai^<;;y+ zZ?@jmudcWf59Y``5@dLe9rRx ZQTv1ctWTaYX$0jx22WQ%mvv4FO#npQ(is2% literal 0 HcmV?d00001 diff --git a/doc/html/classtest__concepts_1_1_derived1.html b/doc/html/classtest__concepts_1_1_derived1.html new file mode 100644 index 0000000..29d716a --- /dev/null +++ b/doc/html/classtest__concepts_1_1_derived1.html @@ -0,0 +1,121 @@ + + + + + + + +uTL: test_concepts::Derived1 Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
test_concepts::Derived1 Class Reference
+
+
+
+Inheritance diagram for test_concepts::Derived1:
+
+
+ + +test_concepts::Base +test_concepts::Derived2 + +
+

Detailed Description

+
+

Definition at line 54 of file TConcepts.cpp.

+

The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/doc/html/classtest__concepts_1_1_derived1.png b/doc/html/classtest__concepts_1_1_derived1.png new file mode 100644 index 0000000000000000000000000000000000000000..8ee8e092ec5fc8a079ce24d98e86f95419ae1e88 GIT binary patch literal 959 zcmeAS@N?(olHy`uVBq!ia0vp^lYzK{gBeI((bB93QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;bNoQ(Rf<2i5Fj4yvC zFX8?rb(#ND&x~v4TI*Bm-tEivSY2%qStK*l=bqW-dcXB=cF(+WZ1-;W$)20c&RI8n znmKF7r`3xqj5D`y{=V|$Z{cN=7EgIBbXohzuVY(pf9})&chj<0-tYX%uQN}qE31w3 z-2L~R9dElzq_k0O!TekMva>F1i@5H+Ofvia)VJG>Y};>5vVURi`72_6%^4NR-6yu} zd$yJTeZbB4;vaFEkmHJ{IUE_A@Qios_Y=S;c&p9|Ddq9!bBo;6YP z7vF=fCe8!l28=(r)EMFqvOLh9!BE30+^{}@>4T^b!#*U*`Z=0Qr>F^YCTKzBLuXcP z@ekNNBb=Y{T3hAyldpcR_nH1#r<>>Bu`Pa6D?b;1&pj-ZFmKk$NsFCh{-%D+-W}d@ z_uXI1savo5WIeunckxMGxhZ7D&T`%7&b^c~;*6(#I9d9Sa zUY?P*rgnSo*3$g9yPtX7*~k1N;`={+i^Qn-&p#B|UVJrGYv`Uek@JBa)E8g>+*&&2 zQV7!ycm9TxCW@CI8_Hj4@!`Hy5@2lPdY>^SkeILm2Hfj@sCDh5=!2eLb%jC zKZ*KGda~L`)$`h~bk9#$jxKpVf61}7%K4Lj-}-;5#Pa;6jH6jI!%j72ArenX$1|R3 zsb#-wcMDxMoVoStn}hETzmxM-I~i5Y_V~sxxy83;ZneEE`1b4)-K!H{PB + + + + + + +uTL: test_concepts::Derived2 Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
test_concepts::Derived2 Class Reference
+
+
+
+Inheritance diagram for test_concepts::Derived2:
+
+
+ + +test_concepts::Derived1 +test_concepts::Base + +
+

Detailed Description

+
+

Definition at line 55 of file TConcepts.cpp.

+

The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/doc/html/classtest__concepts_1_1_derived2.png b/doc/html/classtest__concepts_1_1_derived2.png new file mode 100644 index 0000000000000000000000000000000000000000..fa25c54d566882929636dd15fc757d00d6bfbf0a GIT binary patch literal 954 zcmeAS@N?(olHy`uVBq!ia0vp^lYzK{gBeI((bB93QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;7LfAjN`PycoXpT4;5@ubVeUA?{E^Uhn_{YZapvd=PBUEbJu_uki^y>8up zf9~>!AeGx~e))6M-I>1?^_YgOt4$|rp>dtY-#WoFsM%*wOb z@{iVAdR}r(E19(9{zSh?B9no*xO~;tYdaZ!@R&E8oN?i0*=+wTr{%jZl>`}ErQT(X zQJl+=bcs_zjR5s;M=*ML6l+b&dHr5hbJ6Tzx%x>l($8Y8wx6gk-8JXA-H8|L{k+3p zo7;cCQKji!apPuDNtgE?-nf6Z)j3_0OS6)vKoN$OG-eRlqO=tk|e#`UTb8*|bGq#b-Kc0PQ^>fC|m)B16M9-~xo(~D5 zUAtZvPTc(Y$?J1(8}&D?%kVMGE8T9Fwf5fHcXuYWl&X8?e?E8IXVS4b7P{*z{|I;o zoxeUu<)xCbmFK1B9_pT5o1fQ=>sV~FG_ZwRX1IDIX2U3rR3aA?-%aA7nLm$oZpb~nr~h2-8%P*sT>RwMof>Qk z3ZtF=2IcEEKYbx`R?0>$O>V#ax%J(9^MRoxUbg=YFbOf<{v*}%Jny~XEor({MV{C-|za#<9B|S?X+5c z@Q(R;U}8G3ZQZ-7n3VZ-C7(*4e>*TeBHUz|#P(g$@>|2+hn2s3v16C9{O0pD$L)XD zAMCuGRQE@K`Af}N&IiDNVyx*aVe0TyZ + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
test_concepts::HaveOperatorBase Member List
+
+
+ +

This is the complete list of members for test_concepts::HaveOperatorBase, including all inherited members.

+ + + +
basetest_concepts::HaveOperatorBase
operator Base()test_concepts::HaveOperatorBaseinline
+
+ + + + diff --git a/doc/html/classtest__concepts_1_1_have_operator_base.html b/doc/html/classtest__concepts_1_1_have_operator_base.html new file mode 100644 index 0000000..ea8c721 --- /dev/null +++ b/doc/html/classtest__concepts_1_1_have_operator_base.html @@ -0,0 +1,171 @@ + + + + + + + +uTL: test_concepts::HaveOperatorBase Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
test_concepts::HaveOperatorBase Class Reference
+
+
+ + + + +

+Public Member Functions

 operator Base ()
 
+ + + +

+Public Attributes

Base base
 
+

Detailed Description

+
+

Definition at line 56 of file TConcepts.cpp.

+

Member Function Documentation

+ +

◆ operator Base()

+ +
+
+ + + + + +
+ + + + + + + +
test_concepts::HaveOperatorBase::operator Base ()
+
+inline
+
+ +

Definition at line 57 of file TConcepts.cpp.

+ +
+
+

Member Data Documentation

+ +

◆ base

+ +
+
+ + + + +
Base test_concepts::HaveOperatorBase::base
+
+ +

Definition at line 58 of file TConcepts.cpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/doc/html/classtest__concepts_1_1_have_operator_base.js b/doc/html/classtest__concepts_1_1_have_operator_base.js new file mode 100644 index 0000000..5a4fb2c --- /dev/null +++ b/doc/html/classtest__concepts_1_1_have_operator_base.js @@ -0,0 +1,5 @@ +var classtest__concepts_1_1_have_operator_base = +[ + [ "operator Base", "classtest__concepts_1_1_have_operator_base.html#a5b1cfa094d6d536f44092e825a9dfd8b", null ], + [ "base", "classtest__concepts_1_1_have_operator_base.html#af2b6e459482509ffbca2402906ddbd52", null ] +]; \ No newline at end of file diff --git a/doc/html/classtest__concepts_1_1_have_perfect_forwarding-members.html b/doc/html/classtest__concepts_1_1_have_perfect_forwarding-members.html new file mode 100644 index 0000000..b40df89 --- /dev/null +++ b/doc/html/classtest__concepts_1_1_have_perfect_forwarding-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
test_concepts::HavePerfectForwarding Member List
+
+
+ +

This is the complete list of members for test_concepts::HavePerfectForwarding, including all inherited members.

+ + +
HavePerfectForwarding(T &&)test_concepts::HavePerfectForwardinginline
+
+ + + + diff --git a/doc/html/classtest__concepts_1_1_have_perfect_forwarding.html b/doc/html/classtest__concepts_1_1_have_perfect_forwarding.html new file mode 100644 index 0000000..2be5a96 --- /dev/null +++ b/doc/html/classtest__concepts_1_1_have_perfect_forwarding.html @@ -0,0 +1,152 @@ + + + + + + + +uTL: test_concepts::HavePerfectForwarding Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
test_concepts::HavePerfectForwarding Class Reference
+
+
+ + + + + +

+Public Member Functions

template<class T >
 HavePerfectForwarding (T &&)
 
+

Detailed Description

+
+

Definition at line 50 of file TConcepts.cpp.

+

Constructor & Destructor Documentation

+ +

◆ HavePerfectForwarding()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
test_concepts::HavePerfectForwarding::HavePerfectForwarding (T && )
+
+inline
+
+ +

Definition at line 51 of file TConcepts.cpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/doc/html/classtest__concepts_1_1_have_perfect_forwarding.js b/doc/html/classtest__concepts_1_1_have_perfect_forwarding.js new file mode 100644 index 0000000..8e6d9b5 --- /dev/null +++ b/doc/html/classtest__concepts_1_1_have_perfect_forwarding.js @@ -0,0 +1,4 @@ +var classtest__concepts_1_1_have_perfect_forwarding = +[ + [ "HavePerfectForwarding", "classtest__concepts_1_1_have_perfect_forwarding.html#ad68602af66c1a516e8428408731839d1", null ] +]; \ No newline at end of file diff --git a/doc/html/classtest__i2c_1_1_i2_c-members.html b/doc/html/classtest__i2c_1_1_i2_c-members.html new file mode 100644 index 0000000..dde2fbd --- /dev/null +++ b/doc/html/classtest__i2c_1_1_i2_c-members.html @@ -0,0 +1,123 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
test_i2c::I2C Member List
+
+
+ +

This is the complete list of members for test_i2c::I2C, including all inherited members.

+ + + + + + + + + + + + + + + + + +
clock() constutl::i2c_i< i2c_bb_i< I2C > >inline
clock(uint32_t f)utl::i2c_i< i2c_bb_i< I2C > >inline
I2C(uint32_t clk=100000) noexcepttest_i2c::I2Cinline
i2c_bb_i(uint32_t clk) noexceptutl::i2c_bb_i< I2C >inlineprotected
i2c_i()=defaultutl::i2c_i< i2c_bb_i< I2C > >protected
i2c_i(const type &)=deleteutl::i2c_i< i2c_bb_i< I2C > >protected
operator=(const type &)=deleteutl::i2c_i< i2c_bb_i< I2C > >protected
rx_data(bool ack, Sequence seq=Sequence::BYTEnACK)utl::i2c_i< i2c_bb_i< I2C > >inline
SDAMode enum nameutl::i2c_bb_i< I2C >
Sequence typedefutl::i2c_bb_i< I2C >
start()utl::i2c_i< i2c_bb_i< I2C > >inline
stop()utl::i2c_i< i2c_bb_i< I2C > >inline
tx_data(byte_t byte, Sequence seq=Sequence::BYTEnACK)utl::i2c_i< i2c_bb_i< I2C > >inline
type typedefutl::i2c_bb_i< I2C >
~i2c_bb_i() noexcept=defaultutl::i2c_bb_i< I2C >protected
~i2c_i()=defaultutl::i2c_i< i2c_bb_i< I2C > >protected
+
+ + + + diff --git a/doc/html/classtest__i2c_1_1_i2_c.html b/doc/html/classtest__i2c_1_1_i2_c.html new file mode 100644 index 0000000..23c65f5 --- /dev/null +++ b/doc/html/classtest__i2c_1_1_i2_c.html @@ -0,0 +1,214 @@ + + + + + + + +uTL: test_i2c::I2C Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
test_i2c::I2C Class Reference
+
+
+
+Inheritance diagram for test_i2c::I2C:
+
+
+ + +utl::i2c_bb_i< I2C > +utl::i2c_i< i2c_bb_i< I2C > > + +
+ + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 I2C (uint32_t clk=100000) noexcept
 
- Public Member Functions inherited from utl::i2c_i< i2c_bb_i< I2C > >
uint32_t clock () const
 
void clock (uint32_t f)
 set clock frequency of the bus More...
 
void start ()
 Send start functionality. More...
 
void stop ()
 Send stop functionality. More...
 
byte_t rx_data (bool ack, Sequence seq=Sequence::BYTEnACK)
 Receive a byte from the i2c bus. More...
 
bool tx_data (byte_t byte, Sequence seq=Sequence::BYTEnACK)
 Transmit a byte to the i2c bus. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from utl::i2c_bb_i< I2C >
enum  SDAMode
 SDA pin direction enumerator. More...
 
using type = i2c_bb_i< I2C >
 Export type as identity meta-function. More...
 
using Sequence = typename i2c_i< type >::Sequence
 
- Public Types inherited from utl::i2c_i< i2c_bb_i< I2C > >
enum  Sequence
 I2C transmit/receive sequence. More...
 
using type = i2c_i< i2c_bb_i< I2C > >
 
- Protected Member Functions inherited from utl::i2c_bb_i< I2C >
 ~i2c_bb_i () noexcept=default
 A default destructor, allow destructor from derived only. More...
 
 i2c_bb_i (uint32_t clk) noexcept
 A default constructor. More...
 
- Protected Member Functions inherited from utl::i2c_i< i2c_bb_i< I2C > >
 i2c_i ()=default
 Allow constructor from derived only. More...
 
 i2c_i (const type &)=delete
 No copies. More...
 
 ~i2c_i ()=default
 Allow destructor from derived only. More...
 
typeoperator= (const type &)=delete
 
+

Detailed Description

+
+

Definition at line 33 of file test_i2c_impl.cpp.

+

Constructor & Destructor Documentation

+ +

◆ I2C()

+ +
+
+ + + + + +
+ + + + + + + + +
test_i2c::I2C::I2C (uint32_t clk = 100000)
+
+inlinenoexcept
+
+ +

Definition at line 50 of file test_i2c_impl.cpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/doc/html/classtest__i2c_1_1_i2_c.js b/doc/html/classtest__i2c_1_1_i2_c.js new file mode 100644 index 0000000..fa6eb1e --- /dev/null +++ b/doc/html/classtest__i2c_1_1_i2_c.js @@ -0,0 +1,4 @@ +var classtest__i2c_1_1_i2_c = +[ + [ "I2C", "classtest__i2c_1_1_i2_c.html#accd54d8b7f168eece3d462194964f967", null ] +]; \ No newline at end of file diff --git a/doc/html/classtest__i2c_1_1_i2_c.png b/doc/html/classtest__i2c_1_1_i2_c.png new file mode 100644 index 0000000000000000000000000000000000000000..1615c179eb7ac722a5f68680226c75853d8854e2 GIT binary patch literal 903 zcmeAS@N?(olHy`uVBq!ia0vp^Yk|0fgBeIJ5}5r3NJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~i+Q>@hEy=Vo%_0IiH}$yJ+FZGLOWQmzK ztUaP<@*nIrUU+HEOP`2ec9!|7FZZ98y{*}L`sei7rr)M65&pOTrq`wNLZF8Z=Bl1- zJ7{)HqMGqQgSdlvN$T&auS;%EeXDSLVqW~VIyHufhuav;cIYtSK``bxs$yAZMagtLympo5~=>2>C?SVd0h+( zih5Rf?ces2^||*S_i3iwoTel*SDYizEO7i#U-=LE57D_s?CbN`;Yf#nAzjyn_{me|Lom< zJ$GBn^;7BB-ddcCRs@F3`BUoYhb~?JuxIL$^`8ZAYp$vFIodwy3-iB(ZIixe?^vsH z^TD=BDTfoJlY90uBpl#gAiZl-?cSs?cTk)9I7p7B(8TYG8rj~i2uGnoHqe7h&| zUOiX$woTLaPk)=4njc-oQ^4F^Iy-O6p`NEBw!+53;;&NaLXc4G-DE~##%{(xUsR)>B7(8A5T-G@yGywn*pt;%r literal 0 HcmV?d00001 diff --git a/doc/html/classtest__ostream__dev_1_1_ostream__dev__impl-members.html b/doc/html/classtest__ostream__dev_1_1_ostream__dev__impl-members.html new file mode 100644 index 0000000..9d98680 --- /dev/null +++ b/doc/html/classtest__ostream__dev_1_1_ostream__dev__impl-members.html @@ -0,0 +1,133 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
test_ostream_dev::Ostream_dev_impl Member List
+
+
+ +

This is the complete list of members for test_ostream_dev::Ostream_dev_impl, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
begin() noexceptutl::ostream_dev< Ostream_dev_impl, test_data_t >inline
begin() const noexceptutl::ostream_dev< Ostream_dev_impl, test_data_t >inline
ctest_ostream_dev::Ostream_dev_impl
cbegin() const noexceptutl::ostream_dev< Ostream_dev_impl, test_data_t >inline
cend() const noexceptutl::ostream_dev< Ostream_dev_impl, test_data_t >inline
const_iterator typedefutl::ostream_dev< Ostream_dev_impl, test_data_t >
data_type typedefutl::ostream_dev< Ostream_dev_impl, test_data_t >
end() noexceptutl::ostream_dev< Ostream_dev_impl, test_data_t >inline
end() const noexceptutl::ostream_dev< Ostream_dev_impl, test_data_t >inline
getLastV()test_ostream_dev::Ostream_dev_implinline
iterator typedefutl::ostream_dev< Ostream_dev_impl, test_data_t >
Ntest_ostream_dev::Ostream_dev_implstatic
operator<<(const _Src_t &src)utl::ostream_dev< Ostream_dev_impl, test_data_t >inline
operator<<(_Src_t *src)=deleteutl::ostream_dev< Ostream_dev_impl, test_data_t >
operator<<(const test_data_t &src)utl::ostream_dev< Ostream_dev_impl, test_data_t >inline
operator=(const ostream_dev_t &)=deleteutl::ostream_dev< Ostream_dev_impl, test_data_t >protected
ostream_dev()=defaultutl::ostream_dev< Ostream_dev_impl, test_data_t >protected
ostream_dev(const ostream_dev_t &)=deleteutl::ostream_dev< Ostream_dev_impl, test_data_t >protected
pointer_type typedefutl::ostream_dev< Ostream_dev_impl, test_data_t >
put(const test_data_t &data)utl::ostream_dev< Ostream_dev_impl, test_data_t >inline
put(const test_data_t *data, size_t n)utl::ostream_dev< Ostream_dev_impl, test_data_t >inline
put_(const test_data_t &data)test_ostream_dev::Ostream_dev_implinlineprotected
put_(const test_data_t *data, size_t n)test_ostream_dev::Ostream_dev_implinlineprotected
type typedefutl::ostream_dev< Ostream_dev_impl, test_data_t >
vtest_ostream_dev::Ostream_dev_impl
~ostream_dev()=defaultutl::ostream_dev< Ostream_dev_impl, test_data_t >protected
+
+ + + + diff --git a/doc/html/classtest__ostream__dev_1_1_ostream__dev__impl.html b/doc/html/classtest__ostream__dev_1_1_ostream__dev__impl.html new file mode 100644 index 0000000..f156c19 --- /dev/null +++ b/doc/html/classtest__ostream__dev_1_1_ostream__dev__impl.html @@ -0,0 +1,360 @@ + + + + + + + +uTL: test_ostream_dev::Ostream_dev_impl Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
test_ostream_dev::Ostream_dev_impl Class Reference
+
+
+
+Inheritance diagram for test_ostream_dev::Ostream_dev_impl:
+
+
+ + +utl::ostream_dev< Ostream_dev_impl, test_data_t > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

test_data_tgetLastV ()
 
- Public Member Functions inherited from utl::ostream_dev< Ostream_dev_impl, test_data_t >
size_t put (const test_data_t &data)
 Put interface. This function should send a single data_t object to device. More...
 
size_t put (const test_data_t *data, size_t n)
 Put interface. This function should send a stream of data_t objects to device. More...
 
ostream_dev_toperator<< (const _Src_t &src)
 Template operator<< implementation for for all by value/ref parameters. More...
 
ostream_dev_toperator<< (_Src_t *src)=delete
 Overload to disallow pointer types as source. More...
 
ostream_dev_toperator<< (const test_data_t &src)
 Overload for single data_t object. More...
 
iterator end () noexcept
 
const_iterator end () const noexcept
 
const_iterator cend () const noexcept
 
iterator begin () noexcept
 .begin implementation More...
 
const_iterator begin () const noexcept
 
const_iterator cbegin () const noexcept
 
+ + + + + +

+Public Attributes

std::array< test_data_t, Nv {}
 
size_t c {0}
 
+ + + +

+Static Public Attributes

static constexpr size_t N =SIZE
 
+ + + + + + + + + + + + + + + + + +

+Protected Member Functions

size_t put_ (const test_data_t &data)
 
size_t put_ (const test_data_t *data, size_t n)
 
- Protected Member Functions inherited from utl::ostream_dev< Ostream_dev_impl, test_data_t >
 ~ostream_dev ()=default
 Allow destructor from derived only. More...
 
 ostream_dev ()=default
 A default constructor from derived only. More...
 
 ostream_dev (const ostream_dev_t &)=delete
 No copies. More...
 
ostream_dev_toperator= (const ostream_dev_t &)=delete
 
+ + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from utl::ostream_dev< Ostream_dev_impl, test_data_t >
using type = ostream_dev_t
 Export type as identity meta-function. More...
 
using data_type = test_data_t
 
using pointer_type = test_data_t *
 
using iterator = ostreamdev_it< ostream_dev_t, test_data_t >
 Iterator. More...
 
using const_iterator = ostreamdev_it< const ostream_dev_t, test_data_t >
 Const iterator. More...
 
+

Detailed Description

+
+

Definition at line 40 of file test_ostream_dev.cpp.

+

Member Function Documentation

+ +

◆ getLastV()

+ +
+
+ + + + + +
+ + + + + + + +
test_data_t& test_ostream_dev::Ostream_dev_impl::getLastV ()
+
+inline
+
+ +

Definition at line 63 of file test_ostream_dev.cpp.

+ +
+
+ +

◆ put_() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
size_t test_ostream_dev::Ostream_dev_impl::put_ (const test_data_tdata)
+
+inlineprotected
+
+ +

Definition at line 50 of file test_ostream_dev.cpp.

+ +
+
+ +

◆ put_() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
size_t test_ostream_dev::Ostream_dev_impl::put_ (const test_data_tdata,
size_t n 
)
+
+inlineprotected
+
+ +

Definition at line 56 of file test_ostream_dev.cpp.

+ +
+
+

Member Data Documentation

+ +

◆ c

+ +
+
+ + + + +
size_t test_ostream_dev::Ostream_dev_impl::c {0}
+
+ +

Definition at line 46 of file test_ostream_dev.cpp.

+ +
+
+ +

◆ N

+ +
+
+ + + + + +
+ + + + +
constexpr size_t test_ostream_dev::Ostream_dev_impl::N =SIZE
+
+static
+
+ +

Definition at line 44 of file test_ostream_dev.cpp.

+ +
+
+ +

◆ v

+ +
+
+ + + + +
std::array<test_data_t, N> test_ostream_dev::Ostream_dev_impl::v {}
+
+ +

Definition at line 45 of file test_ostream_dev.cpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/doc/html/classtest__ostream__dev_1_1_ostream__dev__impl.js b/doc/html/classtest__ostream__dev_1_1_ostream__dev__impl.js new file mode 100644 index 0000000..3d8bc12 --- /dev/null +++ b/doc/html/classtest__ostream__dev_1_1_ostream__dev__impl.js @@ -0,0 +1,8 @@ +var classtest__ostream__dev_1_1_ostream__dev__impl = +[ + [ "getLastV", "classtest__ostream__dev_1_1_ostream__dev__impl.html#a94ea8195e734ad5e6e76a263df86a7ab", null ], + [ "put_", "classtest__ostream__dev_1_1_ostream__dev__impl.html#a439ae6127956a8b3a049b35ac79fcf2b", null ], + [ "put_", "classtest__ostream__dev_1_1_ostream__dev__impl.html#a7b3e45d7aab2cf5d4ee6fd21074ef86e", null ], + [ "c", "classtest__ostream__dev_1_1_ostream__dev__impl.html#aa37383bb13f3fe02f21fa7d8558158a9", null ], + [ "v", "classtest__ostream__dev_1_1_ostream__dev__impl.html#a782792f34ec64257188ef223b969e148", null ] +]; \ No newline at end of file diff --git a/doc/html/classtest__ostream__dev_1_1_ostream__dev__impl.png b/doc/html/classtest__ostream__dev_1_1_ostream__dev__impl.png new file mode 100644 index 0000000000000000000000000000000000000000..b30d76c07bc5517ab44398cac33e106cd23f0bc9 GIT binary patch literal 988 zcmeAS@N?(olHy`uVBq!ia0y~yVAKJ!12~w0z$e7@|Ns9$=8HF9OZyK^ z0J6aNz<~p-opeF=X@2joeT1zLZ z1_!5TsqSC9M3tG zF5mPmd|SDHIafvM)<~oKTQ{fN2{%2v=K5i~$&sJi6DR*NUVZ=LUk-D`Q5pbN;Jh!MxDEGa{GiO;uRug*Uaqasa}1WvW|b&|C}_>OIQEsMo#+Th7rbj zn}WPFJv5gFGt?=>GcX>oROCKz{CfBerUJoD3^jLRT6G!tfkM73m)j=ZePo^S-g(BlmDOc@PlefpSN zQIvM}+fjwx_w>#N+8(K~P0*CL+I;J_!GFoT!?mZrKHYlP_3QO@`s+6x$UPDDJLy1X zTI~}vmLGp>@-K>?i1NFvb&$dD$1#D1WI5J3TmPCzGVJf2!1^J~NvvV=1l9*CDU24J mkqmx$o6ekJGTt2gkMTLH?Y`+w>)!ygB7>)^pUXO@geCyxgVmz| literal 0 HcmV?d00001 diff --git a/doc/html/classtest__ostream__dev_1_1_ostream__vdev__impl-members.html b/doc/html/classtest__ostream__dev_1_1_ostream__vdev__impl-members.html new file mode 100644 index 0000000..5add16f --- /dev/null +++ b/doc/html/classtest__ostream__dev_1_1_ostream__vdev__impl-members.html @@ -0,0 +1,133 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
test_ostream_dev::Ostream_vdev_impl Member List
+
+
+ +

This is the complete list of members for test_ostream_dev::Ostream_vdev_impl, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
begin() noexceptutl::ostream_dev< virtual_tag, test_data_t >inline
begin() const noexceptutl::ostream_dev< virtual_tag, test_data_t >inline
ctest_ostream_dev::Ostream_vdev_impl
cbegin() const noexceptutl::ostream_dev< virtual_tag, test_data_t >inline
cend() const noexceptutl::ostream_dev< virtual_tag, test_data_t >inline
const_iterator typedefutl::ostream_dev< virtual_tag, test_data_t >
data_type typedefutl::ostream_dev< virtual_tag, test_data_t >
end() noexceptutl::ostream_dev< virtual_tag, test_data_t >inline
end() const noexceptutl::ostream_dev< virtual_tag, test_data_t >inline
getLastV()test_ostream_dev::Ostream_vdev_implinline
iterator typedefutl::ostream_dev< virtual_tag, test_data_t >
Ntest_ostream_dev::Ostream_vdev_implstatic
operator<<(const _Src_t &src)utl::ostream_dev< virtual_tag, test_data_t >inline
operator<<(_Src_t *src)=deleteutl::ostream_dev< virtual_tag, test_data_t >
operator<<(const test_data_t &src)utl::ostream_dev< virtual_tag, test_data_t >inline
operator=(const ostream_dev_t &)=deleteutl::ostream_dev< virtual_tag, test_data_t >protected
ostream_dev()=defaultutl::ostream_dev< virtual_tag, test_data_t >protected
ostream_dev(const ostream_dev_t &)=deleteutl::ostream_dev< virtual_tag, test_data_t >protected
pointer_type typedefutl::ostream_dev< virtual_tag, test_data_t >
put(const test_data_t &data)utl::ostream_dev< virtual_tag, test_data_t >inline
put(const test_data_t *data, size_t n)utl::ostream_dev< virtual_tag, test_data_t >inline
put_(const test_data_t &data)test_ostream_dev::Ostream_vdev_implinlineprotected
put_(const test_data_t *data, size_t n)test_ostream_dev::Ostream_vdev_implinlineprotected
type typedefutl::ostream_dev< virtual_tag, test_data_t >
vtest_ostream_dev::Ostream_vdev_impl
~ostream_dev()=defaultutl::ostream_dev< virtual_tag, test_data_t >protected
+
+ + + + diff --git a/doc/html/classtest__ostream__dev_1_1_ostream__vdev__impl.html b/doc/html/classtest__ostream__dev_1_1_ostream__vdev__impl.html new file mode 100644 index 0000000..1fabfe0 --- /dev/null +++ b/doc/html/classtest__ostream__dev_1_1_ostream__vdev__impl.html @@ -0,0 +1,360 @@ + + + + + + + +uTL: test_ostream_dev::Ostream_vdev_impl Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
test_ostream_dev::Ostream_vdev_impl Class Reference
+
+
+
+Inheritance diagram for test_ostream_dev::Ostream_vdev_impl:
+
+
+ + +utl::ostream_dev< virtual_tag, test_data_t > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

test_data_tgetLastV ()
 
- Public Member Functions inherited from utl::ostream_dev< virtual_tag, test_data_t >
size_t put (const test_data_t &data)
 Put interface. This function should send a single data_t object to device. More...
 
size_t put (const test_data_t *data, size_t n)
 Put interface. This function should send a stream of data_t objects to device. More...
 
ostream_dev_toperator<< (const _Src_t &src)
 Template operator<< implementation for for all by value/ref parameters. More...
 
ostream_dev_toperator<< (_Src_t *src)=delete
 Overload to disallow pointer types as source. More...
 
ostream_dev_toperator<< (const test_data_t &src)
 Overload for single data_t object. More...
 
iterator end () noexcept
 
const_iterator end () const noexcept
 
const_iterator cend () const noexcept
 
iterator begin () noexcept
 .begin implementation More...
 
const_iterator begin () const noexcept
 
const_iterator cbegin () const noexcept
 
+ + + + + +

+Public Attributes

std::array< test_data_t, Nv {}
 
size_t c {0}
 
+ + + +

+Static Public Attributes

static constexpr size_t N =SIZE
 
+ + + + + + + + + + + + + + + + + +

+Protected Member Functions

size_t put_ (const test_data_t &data)
 
size_t put_ (const test_data_t *data, size_t n)
 
- Protected Member Functions inherited from utl::ostream_dev< virtual_tag, test_data_t >
 ~ostream_dev ()=default
 Allow destructor from derived only. More...
 
 ostream_dev ()=default
 A default constructor from derived only. More...
 
 ostream_dev (const ostream_dev_t &)=delete
 No copies. More...
 
ostream_dev_toperator= (const ostream_dev_t &)=delete
 
+ + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from utl::ostream_dev< virtual_tag, test_data_t >
using type = ostream_dev_t
 Export type as identity meta-function. More...
 
using data_type = test_data_t
 
using pointer_type = test_data_t *
 
using iterator = ostreamdev_it< ostream_dev_t, test_data_t >
 Iterator. More...
 
using const_iterator = ostreamdev_it< const ostream_dev_t, test_data_t >
 Const iterator. More...
 
+

Detailed Description

+
+

Definition at line 66 of file test_ostream_dev.cpp.

+

Member Function Documentation

+ +

◆ getLastV()

+ +
+
+ + + + + +
+ + + + + + + +
test_data_t& test_ostream_dev::Ostream_vdev_impl::getLastV ()
+
+inline
+
+ +

Definition at line 88 of file test_ostream_dev.cpp.

+ +
+
+ +

◆ put_() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
size_t test_ostream_dev::Ostream_vdev_impl::put_ (const test_data_tdata)
+
+inlineprotected
+
+ +

Definition at line 75 of file test_ostream_dev.cpp.

+ +
+
+ +

◆ put_() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
size_t test_ostream_dev::Ostream_vdev_impl::put_ (const test_data_tdata,
size_t n 
)
+
+inlineprotected
+
+ +

Definition at line 81 of file test_ostream_dev.cpp.

+ +
+
+

Member Data Documentation

+ +

◆ c

+ +
+
+ + + + +
size_t test_ostream_dev::Ostream_vdev_impl::c {0}
+
+ +

Definition at line 71 of file test_ostream_dev.cpp.

+ +
+
+ +

◆ N

+ +
+
+ + + + + +
+ + + + +
constexpr size_t test_ostream_dev::Ostream_vdev_impl::N =SIZE
+
+static
+
+ +

Definition at line 69 of file test_ostream_dev.cpp.

+ +
+
+ +

◆ v

+ +
+
+ + + + +
std::array<test_data_t, N> test_ostream_dev::Ostream_vdev_impl::v {}
+
+ +

Definition at line 70 of file test_ostream_dev.cpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/doc/html/classtest__ostream__dev_1_1_ostream__vdev__impl.js b/doc/html/classtest__ostream__dev_1_1_ostream__vdev__impl.js new file mode 100644 index 0000000..2f3fae4 --- /dev/null +++ b/doc/html/classtest__ostream__dev_1_1_ostream__vdev__impl.js @@ -0,0 +1,8 @@ +var classtest__ostream__dev_1_1_ostream__vdev__impl = +[ + [ "getLastV", "classtest__ostream__dev_1_1_ostream__vdev__impl.html#a8d4f3a9553026155c33c9fd15ed62634", null ], + [ "put_", "classtest__ostream__dev_1_1_ostream__vdev__impl.html#a2d2f94b579b360be329380ed2a80f82d", null ], + [ "put_", "classtest__ostream__dev_1_1_ostream__vdev__impl.html#a9251ba3170eebc3d3fa84a3e33b5587b", null ], + [ "c", "classtest__ostream__dev_1_1_ostream__vdev__impl.html#ade2a195650dfdaf71e69857a4c983e08", null ], + [ "v", "classtest__ostream__dev_1_1_ostream__vdev__impl.html#a220aec538ada71f940c19ef3252cd039", null ] +]; \ No newline at end of file diff --git a/doc/html/classtest__ostream__dev_1_1_ostream__vdev__impl.png b/doc/html/classtest__ostream__dev_1_1_ostream__vdev__impl.png new file mode 100644 index 0000000000000000000000000000000000000000..1fd9aaac5ffe9db337a7311147b0c9808c16d458 GIT binary patch literal 888 zcmV-;1Bd*HP)vTJkN^MxkN^Mxkifve1&Q1r00008bW%=J0RR90|NsC0)yh;d0009ANkluJrA@%Bv6I?Cc)J57iQ47!54lQ7R)-0UOl`b=#Bpeo9U#Wl8oXOy-i0U`UEtr0 zn`64Y=NsYk??%JkZCxIJaoD;leLa84!sTz~nG0Yq>Q(-J$Gq#}9hn{0tiTcf`T6(u z|KQAAIR6Lx-&{za(arkg0=hS@^xND0>HDASSpIEGaz12xpr-z}wqE^rzc`k^gscvm zB=h&7`AT#}zg~hN{92jq2kor>OVU3q=Tj<4Kh~T0*LvhEuO!{n=xVqcl4SHG{K@dI z*#9@JtR(gNE$3g7{)Q(1wVn*7VMEP(~^NqqqXR&f5Wuh?>?{K#tY)#Be>kD0yIcFyB^&ZIlYrFehC^rn+eN+4pDR;$cAB%-zU;Pj zt;ckCqw&7qbeLV7_$6W5i~H}t)V&(FibQSRkvZhQ;jrWPP!hE5N9X^^{r3*!uzu|U zHKlRzdBI_wcILOX7w*5U|J%<{|4aC`T<>MK-Hf(QH_7KIx%Y;{{lGYW-Tl8^{{j9t zIwQQyzgC&%7yvxc3sV4&b-|%$@)mx8U#jT*07shqlOG_eCVxsP1=b(v7c~S@UfEUv O0000 + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
test_ostream_dev::Tostream_Idev Member List
+
+
+ +

This is the complete list of members for test_ostream_dev::Tostream_Idev, including all inherited members.

+ + + + + + + + + + + + + + + + +
HasFailure()testing::Testinlinestatic
HasFatalFailure()testing::Teststatic
HasNonfatalFailure()testing::Teststatic
IsSkipped()testing::Teststatic
osIdevtest_ostream_dev::Tostream_Idevprotected
RecordProperty(const std::string &key, const std::string &value)testing::Teststatic
RecordProperty(const std::string &key, int value)testing::Teststatic
SetUp()testing::Testprotectedvirtual
SetUpTestCase()testing::Testinlinestatic
SetUpTestSuite()testing::Testinlinestatic
TearDown()testing::Testprotectedvirtual
TearDownTestCase()testing::Testinlinestatic
TearDownTestSuite()testing::Testinlinestatic
Test()testing::Testprotected
~Test()testing::Testvirtual
+
+ + + + diff --git a/doc/html/classtest__ostream__dev_1_1_tostream___idev.html b/doc/html/classtest__ostream__dev_1_1_tostream___idev.html new file mode 100644 index 0000000..587ca1b --- /dev/null +++ b/doc/html/classtest__ostream__dev_1_1_tostream___idev.html @@ -0,0 +1,188 @@ + + + + + + + +uTL: test_ostream_dev::Tostream_Idev Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
test_ostream_dev::Tostream_Idev Class Reference
+
+
+
+Inheritance diagram for test_ostream_dev::Tostream_Idev:
+
+
+ + +testing::Test + +
+ + + + +

+Protected Attributes

Ostream_dev_impl osIdev {}
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Member Functions inherited from testing::Test
virtual ~Test ()
 
- Static Public Member Functions inherited from testing::Test
static void SetUpTestSuite ()
 
static void TearDownTestSuite ()
 
static void TearDownTestCase ()
 
static void SetUpTestCase ()
 
static bool HasFatalFailure ()
 
static bool HasNonfatalFailure ()
 
static bool IsSkipped ()
 
static bool HasFailure ()
 
static void RecordProperty (const std::string &key, const std::string &value)
 
static void RecordProperty (const std::string &key, int value)
 
- Protected Member Functions inherited from testing::Test
 Test ()
 
virtual void SetUp ()
 
virtual void TearDown ()
 
+

Detailed Description

+
+

Definition at line 92 of file test_ostream_dev.cpp.

+

Member Data Documentation

+ +

◆ osIdev

+ +
+
+ + + + + +
+ + + + +
Ostream_dev_impl test_ostream_dev::Tostream_Idev::osIdev {}
+
+protected
+
+ +

Definition at line 95 of file test_ostream_dev.cpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/doc/html/classtest__ostream__dev_1_1_tostream___idev.js b/doc/html/classtest__ostream__dev_1_1_tostream___idev.js new file mode 100644 index 0000000..6667de5 --- /dev/null +++ b/doc/html/classtest__ostream__dev_1_1_tostream___idev.js @@ -0,0 +1,4 @@ +var classtest__ostream__dev_1_1_tostream___idev = +[ + [ "osIdev", "classtest__ostream__dev_1_1_tostream___idev.html#a5478f97cab31905180f832c595ec4d1c", null ] +]; \ No newline at end of file diff --git a/doc/html/classtest__ostream__dev_1_1_tostream___idev.png b/doc/html/classtest__ostream__dev_1_1_tostream___idev.png new file mode 100644 index 0000000000000000000000000000000000000000..394b7f86f2a96fb039f14371d44b16960ae646b9 GIT binary patch literal 671 zcmeAS@N?(olHy`uVBq!ia0vp^$ACD1gBeJcR{b&rQW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;b#OWvAxrlIM12dyWib2=%QA2T5`MBCB<{s zH~44#>&jW4&tF;#6+PoPcs)Nk zt-n|rTVBbq?=16!Uw51zf85b}+}5P3+q&Y8i?WtzgS->-0q%v24_YrUd~nKOs8BRv z0D6xBsFy*%g{?sxRr-z6(kbisIUl@&No_uMYgyv<_+55IS~>?VePhkFc~O6H#XJlD z!`j*J&idFG#@}7Hh;fPN*#&2Jw7SLB6d&tKkJ?on_4$U4 zZD?<1z|TXqa$6+J=l1?OXq0{1Q+eZ-D5m*Yd&IX$eqX#busYYQd`qPMD(~dnH(a;6 zc4thPnsp~f>#EFAv8gMU-1vS!Y|7Jl&+ffvzZHA24nC`9P@Q`5Vrv n|2YgXuy9#;-9vNf>CgQA|FmW<;L_XyOic`)u6{1-oD!M<9gH`# literal 0 HcmV?d00001 diff --git a/doc/html/classtest__ostream__dev_1_1_tostream___vdev-members.html b/doc/html/classtest__ostream__dev_1_1_tostream___vdev-members.html new file mode 100644 index 0000000..41af78e --- /dev/null +++ b/doc/html/classtest__ostream__dev_1_1_tostream___vdev-members.html @@ -0,0 +1,123 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
test_ostream_dev::Tostream_Vdev Member List
+
+
+ +

This is the complete list of members for test_ostream_dev::Tostream_Vdev, including all inherited members.

+ + + + + + + + + + + + + + + + + +
basePointertest_ostream_dev::Tostream_Vdevprotected
HasFailure()testing::Testinlinestatic
HasFatalFailure()testing::Teststatic
HasNonfatalFailure()testing::Teststatic
IsSkipped()testing::Teststatic
osVdevtest_ostream_dev::Tostream_Vdevprotected
RecordProperty(const std::string &key, const std::string &value)testing::Teststatic
RecordProperty(const std::string &key, int value)testing::Teststatic
SetUp()testing::Testprotectedvirtual
SetUpTestCase()testing::Testinlinestatic
SetUpTestSuite()testing::Testinlinestatic
TearDown()testing::Testprotectedvirtual
TearDownTestCase()testing::Testinlinestatic
TearDownTestSuite()testing::Testinlinestatic
Test()testing::Testprotected
~Test()testing::Testvirtual
+
+ + + + diff --git a/doc/html/classtest__ostream__dev_1_1_tostream___vdev.html b/doc/html/classtest__ostream__dev_1_1_tostream___vdev.html new file mode 100644 index 0000000..8f20216 --- /dev/null +++ b/doc/html/classtest__ostream__dev_1_1_tostream___vdev.html @@ -0,0 +1,214 @@ + + + + + + + +uTL: test_ostream_dev::Tostream_Vdev Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
test_ostream_dev::Tostream_Vdev Class Reference
+
+
+
+Inheritance diagram for test_ostream_dev::Tostream_Vdev:
+
+
+ + +testing::Test + +
+ + + + + + +

+Protected Attributes

std::array< Ostream_vdev_impl, 5 > osVdev {}
 
ostream_dev< virtual_tag, test_data_t > * basePointer = nullptr
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Member Functions inherited from testing::Test
virtual ~Test ()
 
- Static Public Member Functions inherited from testing::Test
static void SetUpTestSuite ()
 
static void TearDownTestSuite ()
 
static void TearDownTestCase ()
 
static void SetUpTestCase ()
 
static bool HasFatalFailure ()
 
static bool HasNonfatalFailure ()
 
static bool IsSkipped ()
 
static bool HasFailure ()
 
static void RecordProperty (const std::string &key, const std::string &value)
 
static void RecordProperty (const std::string &key, int value)
 
- Protected Member Functions inherited from testing::Test
 Test ()
 
virtual void SetUp ()
 
virtual void TearDown ()
 
+

Detailed Description

+
+

Definition at line 97 of file test_ostream_dev.cpp.

+

Member Data Documentation

+ +

◆ basePointer

+ +
+
+ + + + + +
+ + + + +
ostream_dev<virtual_tag, test_data_t>* test_ostream_dev::Tostream_Vdev::basePointer = nullptr
+
+protected
+
+ +

Definition at line 101 of file test_ostream_dev.cpp.

+ +
+
+ +

◆ osVdev

+ +
+
+ + + + + +
+ + + + +
std::array<Ostream_vdev_impl, 5> test_ostream_dev::Tostream_Vdev::osVdev {}
+
+protected
+
+ +

Definition at line 100 of file test_ostream_dev.cpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/doc/html/classtest__ostream__dev_1_1_tostream___vdev.js b/doc/html/classtest__ostream__dev_1_1_tostream___vdev.js new file mode 100644 index 0000000..d1eed6a --- /dev/null +++ b/doc/html/classtest__ostream__dev_1_1_tostream___vdev.js @@ -0,0 +1,5 @@ +var classtest__ostream__dev_1_1_tostream___vdev = +[ + [ "basePointer", "classtest__ostream__dev_1_1_tostream___vdev.html#a20502252099af2580e32afc2dd483dd4", null ], + [ "osVdev", "classtest__ostream__dev_1_1_tostream___vdev.html#aa5607a51d6272b468414826bb7701eb2", null ] +]; \ No newline at end of file diff --git a/doc/html/classtest__ostream__dev_1_1_tostream___vdev.png b/doc/html/classtest__ostream__dev_1_1_tostream___vdev.png new file mode 100644 index 0000000000000000000000000000000000000000..f67667e801bfb0c2279267d196ceab541da7187b GIT binary patch literal 682 zcmeAS@N?(olHy`uVBq!ia0vp^XMi|>gBeIBMP&T|QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;Gz zW0Gr(+a#S&QzY9GU$8Xje_(jgIxj`8zb~h1Qsu5M$(N`0%ui!5E0kpD-oex08pC!# zNsl=}a603Lj?)YgM^YJd9vLx+p-LC@2{^rAWpa>*=?Gj_a;u;wcJJL{%d&>8d&Ej! zZ8f|TKQYtnj;`^!Yc{DTpWd1l(trNQsrmC)s(Bx%*u5pK_awJJTddr@u6b!`>-tpt zH-`DYKPOk&=2?C}B(yB5?NizXi#KUsa%bjft$vkdSN5m-x@k&7zy-djGV2L5x2K(n z6IA9F`+aWml_`-{p{t+HU0`@F?TeA|+u5aTuQ^pVObatAPxWJ2o3iRf{@a;ht5%=% z2zMy^mh)!j;RQ46jDKlOo}YF(ymZ!4jh6>E%UHks + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/doc/html/classtest__spi_1_1_s_p_i.html b/doc/html/classtest__spi_1_1_s_p_i.html new file mode 100644 index 0000000..1cf7ab4 --- /dev/null +++ b/doc/html/classtest__spi_1_1_s_p_i.html @@ -0,0 +1,204 @@ + + + + + + + +uTL: test_spi::SPI Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
test_spi::SPI Class Reference
+
+
+
+Inheritance diagram for test_spi::SPI:
+
+
+ + +utl::spi_bb_i< SPI, spi::cpol::LOW, spi::cpha::LOW > +utl::spi_i< spi_bb_i< SPI, CPOL, CPHA, spi::bitOrder::MSB_First > > + +
+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 SPI (uint32_t clk=100000) noexcept
 
- Public Member Functions inherited from utl::spi_i< spi_bb_i< SPI, CPOL, CPHA, spi::bitOrder::MSB_First > >
uint32_t clock () const
 
void clock (uint32_t c)
 set clock frequency of the bus More...
 
byte_t tx_data (byte_t out)
 
size_t tx_data (const byte_t *out, byte_t *in, size_t n)
 Transmit a number of bytes to the spi bus and read the response. More...
 
byte_t rx_data ()
 
size_t rx_data (byte_t *in, size_t n)
 Receive a number of bytes from the spi bus while transmitting 0xFFs. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from utl::spi_bb_i< SPI, spi::cpol::LOW, spi::cpha::LOW >
using type = spi_bb_i< SPI, CPOL, CPHA, spi::bitOrder::MSB_First >
 Export type as identity meta-function. More...
 
- Public Types inherited from utl::spi_i< spi_bb_i< SPI, CPOL, CPHA, spi::bitOrder::MSB_First > >
using type = spi_i< spi_bb_i< SPI, CPOL, CPHA, spi::bitOrder::MSB_First > >
 Export type as identity meta-function. More...
 
- Protected Member Functions inherited from utl::spi_bb_i< SPI, spi::cpol::LOW, spi::cpha::LOW >
 ~spi_bb_i ()=default
 
 spi_bb_i (uint32_t clk) noexcept
 A default constructor. More...
 
- Protected Member Functions inherited from utl::spi_i< spi_bb_i< SPI, CPOL, CPHA, spi::bitOrder::MSB_First > >
 spi_i ()=default
 Allow constructor from derived only. More...
 
 spi_i (const type &)=delete
 No copies. More...
 
 ~spi_i ()=default
 Allow destructor from derived only. More...
 
typeoperator= (const type &)=delete
 
+

Detailed Description

+
+

Definition at line 34 of file test_spi_impl.cpp.

+

Constructor & Destructor Documentation

+ +

◆ SPI()

+ +
+
+ + + + + +
+ + + + + + + + +
test_spi::SPI::SPI (uint32_t clk = 100000)
+
+inlinenoexcept
+
+ +

Definition at line 42 of file test_spi_impl.cpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/doc/html/classtest__spi_1_1_s_p_i.js b/doc/html/classtest__spi_1_1_s_p_i.js new file mode 100644 index 0000000..a2025e9 --- /dev/null +++ b/doc/html/classtest__spi_1_1_s_p_i.js @@ -0,0 +1,4 @@ +var classtest__spi_1_1_s_p_i = +[ + [ "SPI", "classtest__spi_1_1_s_p_i.html#a588741b66c9890b0d47d84a09f8a19ce", null ] +]; \ No newline at end of file diff --git a/doc/html/classtest__spi_1_1_s_p_i.png b/doc/html/classtest__spi_1_1_s_p_i.png new file mode 100644 index 0000000000000000000000000000000000000000..da6828d8692ef7c11717ae6e7379dbd8c8d7dc44 GIT binary patch literal 1620 zcmcJQe>~H99LK+`q)2!qW3ru14#|(p!X2gCW?xEdek64ya(?7T89AaKEb1`Yt57JE^6jLIL~XmQR3B$+YwOzV z7jWfKJ%Qj!1e8f1#z41^9RREy1u?EZr&XpHJo+zA+H3L%EV;rAzR9288eHV;oLgwB zzx^j#{shO;yd;$1Zmy03?dY3TVKgRwFbjok!=cP|(Iz16Hbryv3s5gGO0n8Q6t>GM z+DBtuDB&Q_n|~PQwDoQ0BgIu_flR;|5neT-0QFNHOdAAyMC+8^9-V@rE|LauLP9@uu7zouTu^Pr&j#ueEneN z+?mAM+R#MfDVXRTT0FVb_QIywwnkwWe1b^|2z_Q0nT-UGSRf7ijl{lEhW)gFh)q!p zki6;)A_(QvClm{Q zGI6sfo16Q~c9UYo!h;%Y%9t|?(Yt{8}!F474G1;lin+Oy*J&~Z6Z<@kCgrVLOk`zDB?|u?QCfH zOAl$OBVlH3-3-zVH_Q&(8e`3NiocIrYO=Z{N7qE9%~$x9i5qB9%U!Xf^U}(wQ@5g1 z`pO_|V)F8IMMt1-#;^OH=-npn8FpY;HFJ5Syq<08D^CwazUjPI5WRdR2`=)lI*tX0 zbJMnrkjk#AjdN;LA}=}G4z=6 z*zqis0l2j5AMbxh2h3r$NTKy%EVBmZ(5;*sM@viP!he7o{2;;q#YY>`f zRc(!BAS;6cVA^ni$x$RgyQ6a!uS`HiuR-W4!|P!x|1r#3fP&_xc?5S?1W2bbwf|iy z4|h>|nVC~XYPNt^1Q{Bq&qaLWL7?(sLjF`p&MtJLZap{ExgNzBb3w8JEqI`s-wjid zA%%9lty;~+ZZUZ*PkhwAIzh4}Dn#w&_xPLo?&8nQy`wE$)dlwvZwZ%?+TT^M8czP5(Ic49yGn&MXrJb@ zdc|qa9)(j9%*K6k`v=PT#|8F%*7N?VLF-p{3-L|I8t+n#3`CiHo?G_|-*0;!N>`H6EK;cAR?JN4c zR;<#m#y3R=V_iK6Y|EerR(DWMj~Tem5+Ad;I&Zq+a219g`Q5d8o~lP557VOq4#o3W zXIgZWtz-UUxA;Iy1_e(*MPukDQX4wKeOpO>2q4ju1JJXG53r=ADPhr4(vX#@ZKd9qKCviu#$7xLePW~etu_?U+@t;(k0UeCvgL;7GgZl_p?JSjF003e=G1Ys6 G&;JF=MC+#j literal 0 HcmV?d00001 diff --git a/doc/html/classtest__spi_1_1_test__spi__impl-members.html b/doc/html/classtest__spi_1_1_test__spi__impl-members.html new file mode 100644 index 0000000..c101100 --- /dev/null +++ b/doc/html/classtest__spi_1_1_test__spi__impl-members.html @@ -0,0 +1,122 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
test_spi::Test_spi_impl Member List
+
+
+ +

This is the complete list of members for test_spi::Test_spi_impl, including all inherited members.

+ + + + + + + + + + + + + + + + +
HasFailure()testing::Testinlinestatic
HasFatalFailure()testing::Teststatic
HasNonfatalFailure()testing::Teststatic
IsSkipped()testing::Teststatic
RecordProperty(const std::string &key, const std::string &value)testing::Teststatic
RecordProperty(const std::string &key, int value)testing::Teststatic
SetUp()testing::Testprotectedvirtual
SetUpTestCase()testing::Testinlinestatic
SetUpTestSuite()testing::Testinlinestatic
spitest_spi::Test_spi_implprotected
TearDown()testing::Testprotectedvirtual
TearDownTestCase()testing::Testinlinestatic
TearDownTestSuite()testing::Testinlinestatic
Test()testing::Testprotected
~Test()testing::Testvirtual
+
+ + + + diff --git a/doc/html/classtest__spi_1_1_test__spi__impl.html b/doc/html/classtest__spi_1_1_test__spi__impl.html new file mode 100644 index 0000000..dece1ad --- /dev/null +++ b/doc/html/classtest__spi_1_1_test__spi__impl.html @@ -0,0 +1,188 @@ + + + + + + + +uTL: test_spi::Test_spi_impl Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
test_spi::Test_spi_impl Class Reference
+
+
+
+Inheritance diagram for test_spi::Test_spi_impl:
+
+
+ + +testing::Test + +
+ + + + +

+Protected Attributes

SPI spi {}
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Member Functions inherited from testing::Test
virtual ~Test ()
 
- Static Public Member Functions inherited from testing::Test
static void SetUpTestSuite ()
 
static void TearDownTestSuite ()
 
static void TearDownTestCase ()
 
static void SetUpTestCase ()
 
static bool HasFatalFailure ()
 
static bool HasNonfatalFailure ()
 
static bool IsSkipped ()
 
static bool HasFailure ()
 
static void RecordProperty (const std::string &key, const std::string &value)
 
static void RecordProperty (const std::string &key, int value)
 
- Protected Member Functions inherited from testing::Test
 Test ()
 
virtual void SetUp ()
 
virtual void TearDown ()
 
+

Detailed Description

+
+

Definition at line 48 of file test_spi_impl.cpp.

+

Member Data Documentation

+ +

◆ spi

+ +
+
+ + + + + +
+ + + + +
SPI test_spi::Test_spi_impl::spi {}
+
+protected
+
+ +

Definition at line 52 of file test_spi_impl.cpp.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/doc/html/classtest__spi_1_1_test__spi__impl.js b/doc/html/classtest__spi_1_1_test__spi__impl.js new file mode 100644 index 0000000..34712c8 --- /dev/null +++ b/doc/html/classtest__spi_1_1_test__spi__impl.js @@ -0,0 +1,4 @@ +var classtest__spi_1_1_test__spi__impl = +[ + [ "spi", "classtest__spi_1_1_test__spi__impl.html#aba59883c01ad683d209dcf422991d131", null ] +]; \ No newline at end of file diff --git a/doc/html/classtest__spi_1_1_test__spi__impl.png b/doc/html/classtest__spi_1_1_test__spi__impl.png new file mode 100644 index 0000000000000000000000000000000000000000..8948d0e6ac46cb64dd1bd4128088a892d4193e59 GIT binary patch literal 581 zcmeAS@N?(olHy`uVBq!ia0vp^?LZvB!3-o>n5L}bA=!&(D{8P1BOj`V-^o9dz~V&x*fclZ-_7y?MBBQpi_v8M~If zn`+i9R$ck3tS|F_Z@+V2=oXdGS}plFi*v^hUYwNjE3>|4)wkcid;#|BLZL zqxHiIn_mnsTOM~_WcARODU56IImkGpiP?aaJ%NkwfQU?krUgTA0mHHf3exHhfb|_4?cF!v4zDUygXDp_6s($4dL_>W$g`$+s$Jv(7lJ+810a zv_tEsh6vZmQ=c#1Q*V4-5F2&v*X_T7d4CF?JWs6=`ChlpU;4Mm=Rg~M2Gjoq<_tM= z&BH7{X>aaLUhe<$TkbOkpYKnZAMCe;IP`k%q#&>DzvT<3$vQq=l+6l^a|TaWKbLh* G2~7YU_5;5F literal 0 HcmV?d00001 diff --git a/doc/html/classtesting_1_1_empty_test_event_listener-members.html b/doc/html/classtesting_1_1_empty_test_event_listener-members.html new file mode 100644 index 0000000..4673b80 --- /dev/null +++ b/doc/html/classtesting_1_1_empty_test_event_listener-members.html @@ -0,0 +1,123 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::EmptyTestEventListener Member List
+
+
+ +

This is the complete list of members for testing::EmptyTestEventListener, including all inherited members.

+ + + + + + + + + + + + + + + + + +
OnEnvironmentsSetUpEnd(const UnitTest &) overridetesting::EmptyTestEventListenerinlinevirtual
OnEnvironmentsSetUpStart(const UnitTest &) overridetesting::EmptyTestEventListenerinlinevirtual
OnEnvironmentsTearDownEnd(const UnitTest &) overridetesting::EmptyTestEventListenerinlinevirtual
OnEnvironmentsTearDownStart(const UnitTest &) overridetesting::EmptyTestEventListenerinlinevirtual
OnTestCaseEnd(const TestCase &tc) overridetesting::EmptyTestEventListenerinlinevirtual
OnTestCaseStart(const TestCase &tc) overridetesting::EmptyTestEventListenerinlinevirtual
OnTestEnd(const TestInfo &) overridetesting::EmptyTestEventListenerinlinevirtual
OnTestIterationEnd(const UnitTest &, int) overridetesting::EmptyTestEventListenerinlinevirtual
OnTestIterationStart(const UnitTest &, int) overridetesting::EmptyTestEventListenerinlinevirtual
OnTestPartResult(const TestPartResult &) overridetesting::EmptyTestEventListenerinlinevirtual
OnTestProgramEnd(const UnitTest &) overridetesting::EmptyTestEventListenerinlinevirtual
OnTestProgramStart(const UnitTest &) overridetesting::EmptyTestEventListenerinlinevirtual
OnTestStart(const TestInfo &) overridetesting::EmptyTestEventListenerinlinevirtual
OnTestSuiteEnd(const TestSuite &) overridetesting::EmptyTestEventListenerinlinevirtual
OnTestSuiteStart(const TestSuite &) overridetesting::EmptyTestEventListenerinlinevirtual
~TestEventListener()testing::TestEventListenerinlinevirtual
+
+ + + + diff --git a/doc/html/classtesting_1_1_empty_test_event_listener.html b/doc/html/classtesting_1_1_empty_test_event_listener.html new file mode 100644 index 0000000..a237e3c --- /dev/null +++ b/doc/html/classtesting_1_1_empty_test_event_listener.html @@ -0,0 +1,633 @@ + + + + + + + +uTL: testing::EmptyTestEventListener Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::EmptyTestEventListener Class Reference
+
+
+ +

#include <gtest.h>

+
+Inheritance diagram for testing::EmptyTestEventListener:
+
+
+ + +testing::TestEventListener + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

void OnTestProgramStart (const UnitTest &) override
 
void OnTestIterationStart (const UnitTest &, int) override
 
void OnEnvironmentsSetUpStart (const UnitTest &) override
 
void OnEnvironmentsSetUpEnd (const UnitTest &) override
 
void OnTestSuiteStart (const TestSuite &) override
 
void OnTestCaseStart (const TestCase &tc) override
 
void OnTestStart (const TestInfo &) override
 
void OnTestPartResult (const TestPartResult &) override
 
void OnTestEnd (const TestInfo &) override
 
void OnTestSuiteEnd (const TestSuite &) override
 
void OnTestCaseEnd (const TestCase &tc) override
 
void OnEnvironmentsTearDownStart (const UnitTest &) override
 
void OnEnvironmentsTearDownEnd (const UnitTest &) override
 
void OnTestIterationEnd (const UnitTest &, int) override
 
void OnTestProgramEnd (const UnitTest &) override
 
- Public Member Functions inherited from testing::TestEventListener
virtual ~TestEventListener ()
 
+

Detailed Description

+
+

Definition at line 15734 of file gtest.h.

+

Member Function Documentation

+ +

◆ OnEnvironmentsSetUpEnd()

+ +
+
+ + + + + +
+ + + + + + + + +
void testing::EmptyTestEventListener::OnEnvironmentsSetUpEnd (const UnitTest)
+
+inlineoverridevirtual
+
+ +

Implements testing::TestEventListener.

+ +

Definition at line 15740 of file gtest.h.

+ +
+
+ +

◆ OnEnvironmentsSetUpStart()

+ +
+
+ + + + + +
+ + + + + + + + +
void testing::EmptyTestEventListener::OnEnvironmentsSetUpStart (const UnitTest)
+
+inlineoverridevirtual
+
+ +

Implements testing::TestEventListener.

+ +

Definition at line 15739 of file gtest.h.

+ +
+
+ +

◆ OnEnvironmentsTearDownEnd()

+ +
+
+ + + + + +
+ + + + + + + + +
void testing::EmptyTestEventListener::OnEnvironmentsTearDownEnd (const UnitTest)
+
+inlineoverridevirtual
+
+ +

Implements testing::TestEventListener.

+ +

Definition at line 15756 of file gtest.h.

+ +
+
+ +

◆ OnEnvironmentsTearDownStart()

+ +
+
+ + + + + +
+ + + + + + + + +
void testing::EmptyTestEventListener::OnEnvironmentsTearDownStart (const UnitTest)
+
+inlineoverridevirtual
+
+ +

Implements testing::TestEventListener.

+ +

Definition at line 15755 of file gtest.h.

+ +
+
+ +

◆ OnTestCaseEnd()

+ +
+
+ + + + + +
+ + + + + + + + +
void testing::EmptyTestEventListener::OnTestCaseEnd (const TestCase & tc)
+
+inlineoverridevirtual
+
+ +

Reimplemented from testing::TestEventListener.

+ +

Definition at line 15752 of file gtest.h.

+ +
+
+ +

◆ OnTestCaseStart()

+ +
+
+ + + + + +
+ + + + + + + + +
void testing::EmptyTestEventListener::OnTestCaseStart (const TestCase & tc)
+
+inlineoverridevirtual
+
+ +

Reimplemented from testing::TestEventListener.

+ +

Definition at line 15744 of file gtest.h.

+ +
+
+ +

◆ OnTestEnd()

+ +
+
+ + + + + +
+ + + + + + + + +
void testing::EmptyTestEventListener::OnTestEnd (const TestInfo)
+
+inlineoverridevirtual
+
+ +

Implements testing::TestEventListener.

+ +

Definition at line 15749 of file gtest.h.

+ +
+
+ +

◆ OnTestIterationEnd()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void testing::EmptyTestEventListener::OnTestIterationEnd (const UnitTest,
int  
)
+
+inlineoverridevirtual
+
+ +

Implements testing::TestEventListener.

+ +

Definition at line 15757 of file gtest.h.

+ +
+
+ +

◆ OnTestIterationStart()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void testing::EmptyTestEventListener::OnTestIterationStart (const UnitTest,
int  
)
+
+inlineoverridevirtual
+
+ +

Implements testing::TestEventListener.

+ +

Definition at line 15737 of file gtest.h.

+ +
+
+ +

◆ OnTestPartResult()

+ +
+
+ + + + + +
+ + + + + + + + +
void testing::EmptyTestEventListener::OnTestPartResult (const TestPartResult & )
+
+inlineoverridevirtual
+
+ +

Implements testing::TestEventListener.

+ +

Definition at line 15748 of file gtest.h.

+ +
+
+ +

◆ OnTestProgramEnd()

+ +
+
+ + + + + +
+ + + + + + + + +
void testing::EmptyTestEventListener::OnTestProgramEnd (const UnitTest)
+
+inlineoverridevirtual
+
+ +

Implements testing::TestEventListener.

+ +

Definition at line 15759 of file gtest.h.

+ +
+
+ +

◆ OnTestProgramStart()

+ +
+
+ + + + + +
+ + + + + + + + +
void testing::EmptyTestEventListener::OnTestProgramStart (const UnitTest)
+
+inlineoverridevirtual
+
+ +

Implements testing::TestEventListener.

+ +

Definition at line 15736 of file gtest.h.

+ +
+
+ +

◆ OnTestStart()

+ +
+
+ + + + + +
+ + + + + + + + +
void testing::EmptyTestEventListener::OnTestStart (const TestInfo)
+
+inlineoverridevirtual
+
+ +

Implements testing::TestEventListener.

+ +

Definition at line 15747 of file gtest.h.

+ +
+
+ +

◆ OnTestSuiteEnd()

+ +
+
+ + + + + +
+ + + + + + + + +
void testing::EmptyTestEventListener::OnTestSuiteEnd (const TestSuite)
+
+inlineoverridevirtual
+
+ +

Reimplemented from testing::TestEventListener.

+ +

Definition at line 15750 of file gtest.h.

+ +
+
+ +

◆ OnTestSuiteStart()

+ +
+
+ + + + + +
+ + + + + + + + +
void testing::EmptyTestEventListener::OnTestSuiteStart (const TestSuite)
+
+inlineoverridevirtual
+
+ +

Reimplemented from testing::TestEventListener.

+ +

Definition at line 15741 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1_empty_test_event_listener.js b/doc/html/classtesting_1_1_empty_test_event_listener.js new file mode 100644 index 0000000..697f502 --- /dev/null +++ b/doc/html/classtesting_1_1_empty_test_event_listener.js @@ -0,0 +1,18 @@ +var classtesting_1_1_empty_test_event_listener = +[ + [ "OnEnvironmentsSetUpEnd", "classtesting_1_1_empty_test_event_listener.html#a9b4e781c0b38065a55c2fd163724ba69", null ], + [ "OnEnvironmentsSetUpStart", "classtesting_1_1_empty_test_event_listener.html#a6e498ae763ac8c1a46bd861e0b7ff3f5", null ], + [ "OnEnvironmentsTearDownEnd", "classtesting_1_1_empty_test_event_listener.html#ad9984052e82c3ae26395a2d9480326d2", null ], + [ "OnEnvironmentsTearDownStart", "classtesting_1_1_empty_test_event_listener.html#a320780451eac9178434b7c77d948ecbd", null ], + [ "OnTestCaseEnd", "classtesting_1_1_empty_test_event_listener.html#a166bcf075f37bfe14f912d2def55f61a", null ], + [ "OnTestCaseStart", "classtesting_1_1_empty_test_event_listener.html#aa1fd7d378f2cdde00a4f8a2f4efb95b4", null ], + [ "OnTestEnd", "classtesting_1_1_empty_test_event_listener.html#a709d7077c086c877d214231bc520ef90", null ], + [ "OnTestIterationEnd", "classtesting_1_1_empty_test_event_listener.html#aae9c5c61e476f0c421402fb1dde434d2", null ], + [ "OnTestIterationStart", "classtesting_1_1_empty_test_event_listener.html#a31edf103561e8b4d747656bc2d927661", null ], + [ "OnTestPartResult", "classtesting_1_1_empty_test_event_listener.html#ab95992f0a0b3741d59a24c3a7115fa60", null ], + [ "OnTestProgramEnd", "classtesting_1_1_empty_test_event_listener.html#aaa9d683e8e0c850af67a0b92d785ddb9", null ], + [ "OnTestProgramStart", "classtesting_1_1_empty_test_event_listener.html#ac3f5033fcd82080edb45f546ce9854fe", null ], + [ "OnTestStart", "classtesting_1_1_empty_test_event_listener.html#a1d8c7f3f1f92826f668edae1bc5aadf4", null ], + [ "OnTestSuiteEnd", "classtesting_1_1_empty_test_event_listener.html#aefdb73682d290791461e186d864db718", null ], + [ "OnTestSuiteStart", "classtesting_1_1_empty_test_event_listener.html#a1e32e4bd4857822b6b50e6900aa5c651", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1_empty_test_event_listener.png b/doc/html/classtesting_1_1_empty_test_event_listener.png new file mode 100644 index 0000000000000000000000000000000000000000..7e07842de1ce690f938a2bac48771ceaa54c44fe GIT binary patch literal 798 zcmeAS@N?(olHy`uVBq!ia0vp^dw@8AgBeIp5qzHjq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0)_S@)hEy=Vo%=fPvx0yNf3oKL|0jHN z^>)X^sJ|7r^A7Pz-dth%Ao1_?+}qoBcll0ww~|%g(|F4R)y%eI9~>v;p8vf|o2}2@ zb6IWwyOQ!vPX!k*oOI>7_lHSWLZzkkN@e~#|ERtE=-krNwa4zHs#)vZzG%54n_r&O z=MTqD&eJN#&u7Fgx0YYd8M~jXh=0XJ5Sd zS#*#0Rlf@}Q(i1D{!#Jh(e6K-`()=Xx@cObIW_l8%fENAKVCh1K6kyF^^aRF>uzm% z{c+#qC2soF`$~FqgAbao`*rd2{_VZ%%{K0v;T$4=BduiJXS0}dOTKn!TZYzFvBypF z`&tz{ZOQ&Cvp+1)51wSVsJy)H&%^0U_+N@|o490W)Q3qX&fIa6(q3@x&%Iq1%=pLI zmf_th>%;bP=F9dQ|C#)E-;sl!vcPZQiq=?qZicpjo~&h+)dNx%nRwOyf^77c4Wb zXz24>W-n=cuP5=3(Vu;)h4Gi3&eJb9l@?-O;<)mS++**c>H6w7wzmJhZ24pYm)jY+ z&$Hc=E-@_qx^9#8qggd84wQcahcfexXUCr`?R}Wb#hz+=|BOM~_j&6d+`X*p#C~{h z^=up6H!SydZuxx7sAl$gzgs#>H}yJxDzE+V>dPL!{5voB=4|(ETJQVB%YC=p``y~} z^kdaOl;yC>A26H!=#JUmv(mSZh0iV#JDqK^ruX?=>s?o$S=?KB?skFYpi% W`p5Xk*OvhkGlQqApUXO@geCwhbBAXD literal 0 HcmV?d00001 diff --git a/doc/html/classtesting_1_1_environment-members.html b/doc/html/classtesting_1_1_environment-members.html new file mode 100644 index 0000000..e4799bd --- /dev/null +++ b/doc/html/classtesting_1_1_environment-members.html @@ -0,0 +1,110 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::Environment Member List
+
+
+ +

This is the complete list of members for testing::Environment, including all inherited members.

+ + + + +
SetUp()testing::Environmentinlinevirtual
TearDown()testing::Environmentinlinevirtual
~Environment()testing::Environmentinlinevirtual
+
+ + + + diff --git a/doc/html/classtesting_1_1_environment.html b/doc/html/classtesting_1_1_environment.html new file mode 100644 index 0000000..37a0995 --- /dev/null +++ b/doc/html/classtesting_1_1_environment.html @@ -0,0 +1,210 @@ + + + + + + + +uTL: testing::Environment Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::Environment Class Reference
+
+
+ +

#include <gtest.h>

+ + + + + + + + +

+Public Member Functions

virtual ~Environment ()
 
virtual void SetUp ()
 
virtual void TearDown ()
 
+

Detailed Description

+
+

Definition at line 15638 of file gtest.h.

+

Constructor & Destructor Documentation

+ +

◆ ~Environment()

+ +
+
+ + + + + +
+ + + + + + + +
virtual testing::Environment::~Environment ()
+
+inlinevirtual
+
+ +

Definition at line 15641 of file gtest.h.

+ +
+
+

Member Function Documentation

+ +

◆ SetUp()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void testing::Environment::SetUp ()
+
+inlinevirtual
+
+ +

Definition at line 15644 of file gtest.h.

+ +
+
+ +

◆ TearDown()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void testing::Environment::TearDown ()
+
+inlinevirtual
+
+ +

Definition at line 15647 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1_environment.js b/doc/html/classtesting_1_1_environment.js new file mode 100644 index 0000000..2257602 --- /dev/null +++ b/doc/html/classtesting_1_1_environment.js @@ -0,0 +1,6 @@ +var classtesting_1_1_environment = +[ + [ "~Environment", "classtesting_1_1_environment.html#a0e41c320362576d752cd1f44cabd57d4", null ], + [ "SetUp", "classtesting_1_1_environment.html#a1bf8cafaa9d4eba9feb98655ee434eb3", null ], + [ "TearDown", "classtesting_1_1_environment.html#a039bdaa705c46b9b88234cf4d3bb6254", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1_message-members.html b/doc/html/classtesting_1_1_message-members.html new file mode 100644 index 0000000..c6581ab --- /dev/null +++ b/doc/html/classtesting_1_1_message-members.html @@ -0,0 +1,118 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::Message Member List
+
+
+ +

This is the complete list of members for testing::Message, including all inherited members.

+ + + + + + + + + + + + +
GetString() consttesting::Message
Message()testing::Message
Message(const Message &msg)testing::Messageinline
Message(const char *str)testing::Messageinlineexplicit
operator<<(const T &val)testing::Messageinline
operator<<(T *const &pointer)testing::Messageinline
operator<<(BasicNarrowIoManip val)testing::Messageinline
operator<<(bool b)testing::Messageinline
operator<<(const wchar_t *wide_c_str)testing::Message
operator<<(wchar_t *wide_c_str)testing::Message
operator<<(const ::std::wstring &wstr)testing::Message
+
+ + + + diff --git a/doc/html/classtesting_1_1_message.html b/doc/html/classtesting_1_1_message.html new file mode 100644 index 0000000..7212b8e --- /dev/null +++ b/doc/html/classtesting_1_1_message.html @@ -0,0 +1,406 @@ + + + + + + + +uTL: testing::Message Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::Message Class Reference
+
+
+ +

#include <gtest.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Message ()
 
 Message (const Message &msg)
 
 Message (const char *str)
 
template<typename T >
Messageoperator<< (const T &val)
 
template<typename T >
Messageoperator<< (T *const &pointer)
 
Messageoperator<< (BasicNarrowIoManip val)
 
Messageoperator<< (bool b)
 
Messageoperator<< (const wchar_t *wide_c_str)
 
Messageoperator<< (wchar_t *wide_c_str)
 
Messageoperator<< (const ::std::wstring &wstr)
 
std::string GetString () const
 
+

Detailed Description

+
+

Definition at line 2644 of file gtest.h.

+

Constructor & Destructor Documentation

+ +

◆ Message() [1/3]

+ +
+
+ + + + + + + +
testing::Message::Message ()
+
+ +
+
+ +

◆ Message() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + +
testing::Message::Message (const Messagemsg)
+
+inline
+
+ +

Definition at line 2655 of file gtest.h.

+ +
+
+ +

◆ Message() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + +
testing::Message::Message (const char * str)
+
+inlineexplicit
+
+ +

Definition at line 2660 of file gtest.h.

+ +
+
+

Member Function Documentation

+ +

◆ GetString()

+ +
+
+ + + + + + + +
std::string testing::Message::GetString () const
+
+ +
+
+ +

◆ operator<<() [1/7]

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + +
Message& testing::Message::operator<< (const T & val)
+
+inline
+
+ +

Definition at line 2666 of file gtest.h.

+ +
+
+ +

◆ operator<<() [2/7]

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + +
Message& testing::Message::operator<< (T *const & pointer)
+
+inline
+
+ +

Definition at line 2700 of file gtest.h.

+ +
+
+ +

◆ operator<<() [3/7]

+ +
+
+ + + + + +
+ + + + + + + + +
Message& testing::Message::operator<< (BasicNarrowIoManip val)
+
+inline
+
+ +

Definition at line 2715 of file gtest.h.

+ +
+
+ +

◆ operator<<() [4/7]

+ +
+
+ + + + + +
+ + + + + + + + +
Message& testing::Message::operator<< (bool b)
+
+inline
+
+ +

Definition at line 2721 of file gtest.h.

+ +
+
+ +

◆ operator<<() [5/7]

+ +
+
+ + + + + + + + +
Message& testing::Message::operator<< (const wchar_t * wide_c_str)
+
+ +
+
+ +

◆ operator<<() [6/7]

+ +
+
+ + + + + + + + +
Message& testing::Message::operator<< (wchar_t * wide_c_str)
+
+ +
+
+ +

◆ operator<<() [7/7]

+ +
+
+ + + + + + + + +
Message& testing::Message::operator<< (const ::std::wstring & wstr)
+
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1_message.js b/doc/html/classtesting_1_1_message.js new file mode 100644 index 0000000..a8e8b5b --- /dev/null +++ b/doc/html/classtesting_1_1_message.js @@ -0,0 +1,14 @@ +var classtesting_1_1_message = +[ + [ "Message", "classtesting_1_1_message.html#af5ba7216630df9845f18feb64b1a5383", null ], + [ "Message", "classtesting_1_1_message.html#ac126e24804817a053bebba0920d94a11", null ], + [ "Message", "classtesting_1_1_message.html#a9de694ca239486809fc99fbbea8ac21d", null ], + [ "GetString", "classtesting_1_1_message.html#a2cdc4df62bdcc9df37651a1cf527704e", null ], + [ "operator<<", "classtesting_1_1_message.html#a2e0e71be52d54c20a75a55fca812721f", null ], + [ "operator<<", "classtesting_1_1_message.html#aa3ab685879958f90d2d8cd5b68d10c34", null ], + [ "operator<<", "classtesting_1_1_message.html#a3a71a1c1c8ea52de5852d75483d41453", null ], + [ "operator<<", "classtesting_1_1_message.html#a3e1e04f23b1bdfe18adfd59928296346", null ], + [ "operator<<", "classtesting_1_1_message.html#a34774e225944cb6df02db9689d312aae", null ], + [ "operator<<", "classtesting_1_1_message.html#aae57eefb3a72a19c11453d630b1d846c", null ], + [ "operator<<", "classtesting_1_1_message.html#a0feb54e52c1c27786ad67e93d4356774", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1_scoped_trace-members.html b/doc/html/classtesting_1_1_scoped_trace-members.html new file mode 100644 index 0000000..5baa891 --- /dev/null +++ b/doc/html/classtesting_1_1_scoped_trace-members.html @@ -0,0 +1,111 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::ScopedTrace Member List
+
+
+ +

This is the complete list of members for testing::ScopedTrace, including all inherited members.

+ + + + + +
ScopedTrace(const char *file, int line, const T &message)testing::ScopedTraceinline
ScopedTrace(const char *file, int line, const char *message)testing::ScopedTraceinline
ScopedTrace(const char *file, int line, const std::string &message)testing::ScopedTraceinline
~ScopedTrace()testing::ScopedTrace
+
+ + + + diff --git a/doc/html/classtesting_1_1_scoped_trace.html b/doc/html/classtesting_1_1_scoped_trace.html new file mode 100644 index 0000000..ee42fde --- /dev/null +++ b/doc/html/classtesting_1_1_scoped_trace.html @@ -0,0 +1,281 @@ + + + + + + + +uTL: testing::ScopedTrace Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::ScopedTrace Class Reference
+
+
+ +

#include <gtest.h>

+ + + + + + + + + + + +

+Public Member Functions

template<typename T >
 ScopedTrace (const char *file, int line, const T &message)
 
 ScopedTrace (const char *file, int line, const char *message)
 
 ScopedTrace (const char *file, int line, const std::string &message)
 
 ~ScopedTrace ()
 
+

Detailed Description

+
+

Definition at line 16835 of file gtest.h.

+

Constructor & Destructor Documentation

+ +

◆ ScopedTrace() [1/3]

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
testing::ScopedTrace::ScopedTrace (const char * file,
int line,
const T & message 
)
+
+inline
+
+ +

Definition at line 16843 of file gtest.h.

+ +
+
+ +

◆ ScopedTrace() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
testing::ScopedTrace::ScopedTrace (const char * file,
int line,
const char * message 
)
+
+inline
+
+ +

Definition at line 16848 of file gtest.h.

+ +
+
+ +

◆ ScopedTrace() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
testing::ScopedTrace::ScopedTrace (const char * file,
int line,
const std::string & message 
)
+
+inline
+
+ +

Definition at line 16858 of file gtest.h.

+ +
+
+ +

◆ ~ScopedTrace()

+ +
+
+ + + + + + + +
testing::ScopedTrace::~ScopedTrace ()
+
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1_scoped_trace.js b/doc/html/classtesting_1_1_scoped_trace.js new file mode 100644 index 0000000..7e6a709 --- /dev/null +++ b/doc/html/classtesting_1_1_scoped_trace.js @@ -0,0 +1,7 @@ +var classtesting_1_1_scoped_trace = +[ + [ "ScopedTrace", "classtesting_1_1_scoped_trace.html#a2da90b95d682d518cca472934d53c59c", null ], + [ "ScopedTrace", "classtesting_1_1_scoped_trace.html#accd2a06cc941ffd7d6fe109adfdb4f19", null ], + [ "ScopedTrace", "classtesting_1_1_scoped_trace.html#a1f453a2aade0db6955a111a7cb329615", null ], + [ "~ScopedTrace", "classtesting_1_1_scoped_trace.html#aa8320ec2679f205cf2c14f508ba35b4d", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1_test-members.html b/doc/html/classtesting_1_1_test-members.html new file mode 100644 index 0000000..efe81e0 --- /dev/null +++ b/doc/html/classtesting_1_1_test-members.html @@ -0,0 +1,122 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::Test Member List
+
+
+ +

This is the complete list of members for testing::Test, including all inherited members.

+ + + + + + + + + + + + + + + + +
HasFailure()testing::Testinlinestatic
HasFatalFailure()testing::Teststatic
HasNonfatalFailure()testing::Teststatic
IsSkipped()testing::Teststatic
RecordProperty(const std::string &key, const std::string &value)testing::Teststatic
RecordProperty(const std::string &key, int value)testing::Teststatic
SetUp()testing::Testprotectedvirtual
SetUpTestCase()testing::Testinlinestatic
SetUpTestSuite()testing::Testinlinestatic
TearDown()testing::Testprotectedvirtual
TearDownTestCase()testing::Testinlinestatic
TearDownTestSuite()testing::Testinlinestatic
Test()testing::Testprotected
TestInfo classtesting::Testfriend
~Test()testing::Testvirtual
+
+ + + + diff --git a/doc/html/classtesting_1_1_test.html b/doc/html/classtesting_1_1_test.html new file mode 100644 index 0000000..18622e1 --- /dev/null +++ b/doc/html/classtesting_1_1_test.html @@ -0,0 +1,585 @@ + + + + + + + +uTL: testing::Test Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ + +
+ +

#include <gtest.h>

+
+Inheritance diagram for testing::Test:
+
+
+ + +test_1w::Test_1w_impl +test_ostream_dev::Tostream_Idev +test_ostream_dev::Tostream_Vdev +test_spi::Test_spi_impl +testing::TestWithParam< T > + +
+ + + + +

+Public Member Functions

virtual ~Test ()
 
+ + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static void SetUpTestSuite ()
 
static void TearDownTestSuite ()
 
static void TearDownTestCase ()
 
static void SetUpTestCase ()
 
static bool HasFatalFailure ()
 
static bool HasNonfatalFailure ()
 
static bool IsSkipped ()
 
static bool HasFailure ()
 
static void RecordProperty (const std::string &key, const std::string &value)
 
static void RecordProperty (const std::string &key, int value)
 
+ + + + + + + +

+Protected Member Functions

 Test ()
 
virtual void SetUp ()
 
virtual void TearDown ()
 
+ + + +

+Friends

class TestInfo
 
+

Detailed Description

+
+

Definition at line 15014 of file gtest.h.

+

Constructor & Destructor Documentation

+ +

◆ ~Test()

+ +
+
+ + + + + +
+ + + + + + + +
virtual testing::Test::~Test ()
+
+virtual
+
+ +
+
+ +

◆ Test()

+ +
+
+ + + + + +
+ + + + + + + +
testing::Test::Test ()
+
+protected
+
+ +
+
+

Member Function Documentation

+ +

◆ HasFailure()

+ +
+
+ + + + + +
+ + + + + + + +
static bool testing::Test::HasFailure ()
+
+inlinestatic
+
+ +

Definition at line 15054 of file gtest.h.

+ +
+
+ +

◆ HasFatalFailure()

+ +
+
+ + + + + +
+ + + + + + + +
static bool testing::Test::HasFatalFailure ()
+
+static
+
+ +
+
+ +

◆ HasNonfatalFailure()

+ +
+
+ + + + + +
+ + + + + + + +
static bool testing::Test::HasNonfatalFailure ()
+
+static
+
+ +
+
+ +

◆ IsSkipped()

+ +
+
+ + + + + +
+ + + + + + + +
static bool testing::Test::IsSkipped ()
+
+static
+
+ +
+
+ +

◆ RecordProperty() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void testing::Test::RecordProperty (const std::string & key,
const std::string & value 
)
+
+static
+
+ +
+
+ +

◆ RecordProperty() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void testing::Test::RecordProperty (const std::string & key,
int value 
)
+
+static
+
+ +
+
+ +

◆ SetUp()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void testing::Test::SetUp ()
+
+protectedvirtual
+
+ +
+
+ +

◆ SetUpTestCase()

+ +
+
+ + + + + +
+ + + + + + + +
static void testing::Test::SetUpTestCase ()
+
+inlinestatic
+
+ +

Definition at line 15040 of file gtest.h.

+ +
+
+ +

◆ SetUpTestSuite()

+ +
+
+ + + + + +
+ + + + + + + +
static void testing::Test::SetUpTestSuite ()
+
+inlinestatic
+
+ +

Definition at line 15027 of file gtest.h.

+ +
+
+ +

◆ TearDown()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void testing::Test::TearDown ()
+
+protectedvirtual
+
+ +
+
+ +

◆ TearDownTestCase()

+ +
+
+ + + + + +
+ + + + + + + +
static void testing::Test::TearDownTestCase ()
+
+inlinestatic
+
+ +

Definition at line 15039 of file gtest.h.

+ +
+
+ +

◆ TearDownTestSuite()

+ +
+
+ + + + + +
+ + + + + + + +
static void testing::Test::TearDownTestSuite ()
+
+inlinestatic
+
+ +

Definition at line 15035 of file gtest.h.

+ +
+
+

Friends And Related Function Documentation

+ +

◆ TestInfo

+ +
+
+ + + + + +
+ + + + +
friend class TestInfo
+
+friend
+
+ +

Definition at line 15016 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1_test.js b/doc/html/classtesting_1_1_test.js new file mode 100644 index 0000000..d5ef6c3 --- /dev/null +++ b/doc/html/classtesting_1_1_test.js @@ -0,0 +1,8 @@ +var classtesting_1_1_test = +[ + [ "~Test", "classtesting_1_1_test.html#ad99dc9b12208fd4bffc367f0a1e3df1b", null ], + [ "Test", "classtesting_1_1_test.html#a68b7618abd1fc6d13382738b0d3b5c7c", null ], + [ "SetUp", "classtesting_1_1_test.html#a8b38992669fb844864807cf32e416853", null ], + [ "TearDown", "classtesting_1_1_test.html#aab3c02c9f81afe1357adfc45afccd474", null ], + [ "TestInfo", "classtesting_1_1_test.html#a4c49c2cdb6c328e6b709b4542f23de3c", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1_test.png b/doc/html/classtesting_1_1_test.png new file mode 100644 index 0000000000000000000000000000000000000000..1ec298e9eb3ff2f553a9ae59489bd3c806e63d69 GIT binary patch literal 1875 zcmbtVZ8%hE7@kCGN_MAFleMN@ha^*!6~gpE=Fki>v9dBqn-XOtG-mqPva@XJOtvWu zSNRBqSjJ{{5E(Kxm1~x@F+!schDkHyb7s#`{o1{*{juk|&htL+bKmEj`?=rqp2PN| zcp0Hh(I^zk2qbyzL80^kIQLt;5RU3!sXBPT`R%59>U2o@YD9G+^Zq3`n?D;H8x7dc z@$htU!X8Qh3ML_k^dWT<3bkke^w>^KS}@wHOuXTO^Hk=EY8W~%VP{X^w#vhISKXtm ztv9h+;yl!$4zsRYxIC@-MFq+Ljs5lvF`>$4iM1b%fW-X9AHDU^SZli*&}lsbbjB?p zf7=;7i$9!$JA<{M5?_Xsj`k$br8i3-YhAf=BS&8xKgXJ%*atcXr!_Z3_pyGTb7nDS zCYVa*k#X*X2#lLt_kmuPE8(-3XY`1Rn<~PCK2c3{E(GGfzmT^Fghd>=%LA-d$w(1QYge-60t58z2c?jcU36Za9I$_5NG$kpsU;{# z?`O=)B)af5><;Nwe0fTC+(&4 z?2oPgn=4Lc%hMY4u&`-cau9#!RikZ>yGSv9`P-T*_s$Qu=I9;-SSNPbK142->*on` z4R%ox^vvgoCw?@Kc?jo^bogITe~@!7r8wRtm+~^fCHLX$1eZIgSre_C9}v*we#oZV zq4(=yT7pu3!=q-TO>0mN)uIMbelW;cm35?n->2^TKCA7|j zbQ&H(z4aW)|La!$;6>4(Qk8?mmkv^8lB@Pgk&AhzXn68w$wlzp7F?`9G;4I-22?kN zk);H0$f%PFRvFu{fj=Dx0^my;<>izjr^{PMxfb|GjLa=nDw`b?fJidhXFTrj7%Fs zIA{5sWapG(gwX)>`Km-u%^3pMqXPBz64y;~w|8CXNn_e-!o8Z2*P|00VjR;pTyUCo zQZ~lA6N7nm4V0|d@c2~LVZ+NCCTt&Re*j{Kc?52@i4*al3cY(%41L{WiJ7n>5_w0n#e`Q$r6UvE{_1pxxF`DMuqiillqUf z4e#64k)3#NwMGaIPZNrIm<9e{Nfw>jf#K6L(Q+O-=VEfOfz|5TYuLdWmQGuo*J>f` zo14`x`^I_YK}f8;4Op3)-i~|IBx*H-!b3tZonslwQFc|V`Te)eg3mPNVBDjbp8?0! z(LJLEP~AhfAUnRzv2gKMt7}*JM9AA@6IzL`C{o6>8q*zS?Q+DW?x#%U1Ma^Z*PbW_ z%uVT}3r8(M@y75&&zl~6FMFzaHsq0-c-`oIO95Y=d$pz3BK1+V(@Zt=?X990J&HSx zQ}$^Gy7ybK+kX;XZb_K)f$H?@J-!^1wCHon3UiFTBeVl$T=y<_!rd7Wq8P-aud=x2 zEBun)R`@72K<4V7NlrP^mkh>ieU=53A7lk$e54LxcKr3n5)sv1qzH9%I#g$x;@`+n z0cjby_w_w}V_0Pdu+lr?J93w0;xKn-d~_H5Zd?n2>XKcp9GzG zFZ=AP&54;HRL{NI@~*0wPb?Q|1*|c0sbV&C@@aHkfY0%Uy!SVUrGgHqn^EBNLm|x< z90*is+KEf$<>;J@Pm8&8>f(O+{b?^~GO6iY6i+i$MXsKqtIl5nCS2FBfvLR;SvDTK zABxE?@`g?&)zO4sOz5cno9&^Ys96$5XRA_kfRojB2NmkF+E?r-BF6!YjUO)1q;4Ix zd3G4W5yymfOCy=pdYl71{#q>o1lpHQv0QmT_Kgx~$eiaKxei`j2`O5j4vb4dTNqJ>ieYq}QR+L1of&L)K;~ Z%fzc^S1Ish5dH(AKu?NC`3~CIzX2b7g8~2m literal 0 HcmV?d00001 diff --git a/doc/html/classtesting_1_1_test_event_listener-members.html b/doc/html/classtesting_1_1_test_event_listener-members.html new file mode 100644 index 0000000..e667977 --- /dev/null +++ b/doc/html/classtesting_1_1_test_event_listener-members.html @@ -0,0 +1,123 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::TestEventListener Member List
+
+
+ +

This is the complete list of members for testing::TestEventListener, including all inherited members.

+ + + + + + + + + + + + + + + + + +
OnEnvironmentsSetUpEnd(const UnitTest &unit_test)=0testing::TestEventListenerpure virtual
OnEnvironmentsSetUpStart(const UnitTest &unit_test)=0testing::TestEventListenerpure virtual
OnEnvironmentsTearDownEnd(const UnitTest &unit_test)=0testing::TestEventListenerpure virtual
OnEnvironmentsTearDownStart(const UnitTest &unit_test)=0testing::TestEventListenerpure virtual
OnTestCaseEnd(const TestCase &test_case)testing::TestEventListenerinlinevirtual
OnTestCaseStart(const TestCase &test_case)testing::TestEventListenerinlinevirtual
OnTestEnd(const TestInfo &test_info)=0testing::TestEventListenerpure virtual
OnTestIterationEnd(const UnitTest &unit_test, int iteration)=0testing::TestEventListenerpure virtual
OnTestIterationStart(const UnitTest &unit_test, int iteration)=0testing::TestEventListenerpure virtual
OnTestPartResult(const TestPartResult &test_part_result)=0testing::TestEventListenerpure virtual
OnTestProgramEnd(const UnitTest &unit_test)=0testing::TestEventListenerpure virtual
OnTestProgramStart(const UnitTest &unit_test)=0testing::TestEventListenerpure virtual
OnTestStart(const TestInfo &test_info)=0testing::TestEventListenerpure virtual
OnTestSuiteEnd(const TestSuite &test_suite)testing::TestEventListenerinlinevirtual
OnTestSuiteStart(const TestSuite &test_suite)testing::TestEventListenerinlinevirtual
~TestEventListener()testing::TestEventListenerinlinevirtual
+
+ + + + diff --git a/doc/html/classtesting_1_1_test_event_listener.html b/doc/html/classtesting_1_1_test_event_listener.html new file mode 100644 index 0000000..328e2bf --- /dev/null +++ b/doc/html/classtesting_1_1_test_event_listener.html @@ -0,0 +1,638 @@ + + + + + + + +uTL: testing::TestEventListener Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::TestEventListener Class Referenceabstract
+
+
+ +

#include <gtest.h>

+
+Inheritance diagram for testing::TestEventListener:
+
+
+ + +testing::EmptyTestEventListener + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual ~TestEventListener ()
 
virtual void OnTestProgramStart (const UnitTest &unit_test)=0
 
virtual void OnTestIterationStart (const UnitTest &unit_test, int iteration)=0
 
virtual void OnEnvironmentsSetUpStart (const UnitTest &unit_test)=0
 
virtual void OnEnvironmentsSetUpEnd (const UnitTest &unit_test)=0
 
virtual void OnTestSuiteStart (const TestSuite &test_suite)
 
virtual void OnTestCaseStart (const TestCase &test_case)
 
virtual void OnTestStart (const TestInfo &test_info)=0
 
virtual void OnTestPartResult (const TestPartResult &test_part_result)=0
 
virtual void OnTestEnd (const TestInfo &test_info)=0
 
virtual void OnTestSuiteEnd (const TestSuite &test_suite)
 
virtual void OnTestCaseEnd (const TestCase &test_case)
 
virtual void OnEnvironmentsTearDownStart (const UnitTest &unit_test)=0
 
virtual void OnEnvironmentsTearDownEnd (const UnitTest &unit_test)=0
 
virtual void OnTestIterationEnd (const UnitTest &unit_test, int iteration)=0
 
virtual void OnTestProgramEnd (const UnitTest &unit_test)=0
 
+

Detailed Description

+
+

Definition at line 15669 of file gtest.h.

+

Constructor & Destructor Documentation

+ +

◆ ~TestEventListener()

+ +
+
+ + + + + +
+ + + + + + + +
virtual testing::TestEventListener::~TestEventListener ()
+
+inlinevirtual
+
+ +

Definition at line 15671 of file gtest.h.

+ +
+
+

Member Function Documentation

+ +

◆ OnEnvironmentsSetUpEnd()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void testing::TestEventListener::OnEnvironmentsSetUpEnd (const UnitTestunit_test)
+
+pure virtual
+
+ +

Implemented in testing::EmptyTestEventListener.

+ +
+
+ +

◆ OnEnvironmentsSetUpStart()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void testing::TestEventListener::OnEnvironmentsSetUpStart (const UnitTestunit_test)
+
+pure virtual
+
+ +

Implemented in testing::EmptyTestEventListener.

+ +
+
+ +

◆ OnEnvironmentsTearDownEnd()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void testing::TestEventListener::OnEnvironmentsTearDownEnd (const UnitTestunit_test)
+
+pure virtual
+
+ +

Implemented in testing::EmptyTestEventListener.

+ +
+
+ +

◆ OnEnvironmentsTearDownStart()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void testing::TestEventListener::OnEnvironmentsTearDownStart (const UnitTestunit_test)
+
+pure virtual
+
+ +

Implemented in testing::EmptyTestEventListener.

+ +
+
+ +

◆ OnTestCaseEnd()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void testing::TestEventListener::OnTestCaseEnd (const TestCase & test_case)
+
+inlinevirtual
+
+ +

Reimplemented in testing::EmptyTestEventListener.

+ +

Definition at line 15712 of file gtest.h.

+ +
+
+ +

◆ OnTestCaseStart()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void testing::TestEventListener::OnTestCaseStart (const TestCase & test_case)
+
+inlinevirtual
+
+ +

Reimplemented in testing::EmptyTestEventListener.

+ +

Definition at line 15693 of file gtest.h.

+ +
+
+ +

◆ OnTestEnd()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void testing::TestEventListener::OnTestEnd (const TestInfotest_info)
+
+pure virtual
+
+ +

Implemented in testing::EmptyTestEventListener.

+ +
+
+ +

◆ OnTestIterationEnd()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void testing::TestEventListener::OnTestIterationEnd (const UnitTestunit_test,
int iteration 
)
+
+pure virtual
+
+ +

Implemented in testing::EmptyTestEventListener.

+ +
+
+ +

◆ OnTestIterationStart()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void testing::TestEventListener::OnTestIterationStart (const UnitTestunit_test,
int iteration 
)
+
+pure virtual
+
+ +

Implemented in testing::EmptyTestEventListener.

+ +
+
+ +

◆ OnTestPartResult()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void testing::TestEventListener::OnTestPartResult (const TestPartResult & test_part_result)
+
+pure virtual
+
+ +

Implemented in testing::EmptyTestEventListener.

+ +
+
+ +

◆ OnTestProgramEnd()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void testing::TestEventListener::OnTestProgramEnd (const UnitTestunit_test)
+
+pure virtual
+
+ +

Implemented in testing::EmptyTestEventListener.

+ +
+
+ +

◆ OnTestProgramStart()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void testing::TestEventListener::OnTestProgramStart (const UnitTestunit_test)
+
+pure virtual
+
+ +

Implemented in testing::EmptyTestEventListener.

+ +
+
+ +

◆ OnTestStart()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void testing::TestEventListener::OnTestStart (const TestInfotest_info)
+
+pure virtual
+
+ +

Implemented in testing::EmptyTestEventListener.

+ +
+
+ +

◆ OnTestSuiteEnd()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void testing::TestEventListener::OnTestSuiteEnd (const TestSuitetest_suite)
+
+inlinevirtual
+
+ +

Reimplemented in testing::EmptyTestEventListener.

+ +

Definition at line 15708 of file gtest.h.

+ +
+
+ +

◆ OnTestSuiteStart()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void testing::TestEventListener::OnTestSuiteStart (const TestSuitetest_suite)
+
+inlinevirtual
+
+ +

Reimplemented in testing::EmptyTestEventListener.

+ +

Definition at line 15689 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1_test_event_listener.js b/doc/html/classtesting_1_1_test_event_listener.js new file mode 100644 index 0000000..d237075 --- /dev/null +++ b/doc/html/classtesting_1_1_test_event_listener.js @@ -0,0 +1,19 @@ +var classtesting_1_1_test_event_listener = +[ + [ "~TestEventListener", "classtesting_1_1_test_event_listener.html#a4512d19e7a108ec4926239ec1ea85d63", null ], + [ "OnEnvironmentsSetUpEnd", "classtesting_1_1_test_event_listener.html#aaa1021d75f5dbf3f05c829c1cc520341", null ], + [ "OnEnvironmentsSetUpStart", "classtesting_1_1_test_event_listener.html#aa6502e534919605be45f26a6daf9a40c", null ], + [ "OnEnvironmentsTearDownEnd", "classtesting_1_1_test_event_listener.html#a9ea04fa7f447865ba76df35e12ba2092", null ], + [ "OnEnvironmentsTearDownStart", "classtesting_1_1_test_event_listener.html#a468b5e6701bcb86cb2c956caadbba5e4", null ], + [ "OnTestCaseEnd", "classtesting_1_1_test_event_listener.html#a76dbb7c3868d1c9abb957faee2568c0b", null ], + [ "OnTestCaseStart", "classtesting_1_1_test_event_listener.html#a96693881a1872657b4683e2f0a236ca5", null ], + [ "OnTestEnd", "classtesting_1_1_test_event_listener.html#abb1c44525ef038500608b5dc2f17099b", null ], + [ "OnTestIterationEnd", "classtesting_1_1_test_event_listener.html#a550fdb3e55726e4cefa09f5697941425", null ], + [ "OnTestIterationStart", "classtesting_1_1_test_event_listener.html#a60cc09b7907cb329d152eb5e7133bdeb", null ], + [ "OnTestPartResult", "classtesting_1_1_test_event_listener.html#a054f8705c883fa120b91473aff38f2ee", null ], + [ "OnTestProgramEnd", "classtesting_1_1_test_event_listener.html#ad15b6246d94c268e233487a86463ef3d", null ], + [ "OnTestProgramStart", "classtesting_1_1_test_event_listener.html#a5f6c84f39851e8a603a2d2e10063816b", null ], + [ "OnTestStart", "classtesting_1_1_test_event_listener.html#ab4f6a0ca16ae75daf385b3b5914e1048", null ], + [ "OnTestSuiteEnd", "classtesting_1_1_test_event_listener.html#a841e522e537bb858d21eb75d0228d3b5", null ], + [ "OnTestSuiteStart", "classtesting_1_1_test_event_listener.html#ac6605dbb5859436d59d117348d63746c", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1_test_event_listener.png b/doc/html/classtesting_1_1_test_event_listener.png new file mode 100644 index 0000000000000000000000000000000000000000..fc3fc784b8052067d0cc956292fafb304f5b2938 GIT binary patch literal 801 zcmeAS@N?(olHy`uVBq!ia0vp^dw@8AgBeIp5qzHjq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0Hh8)?hEy=VoqM})wE>T7xLMHu|C9aM zi#8T7EYUmbcuJ$1Yhz(pPjVcmV$1F>h5~=xiU!H34-Cd8ZR?-U|6Y5&juUlzq1`p;zVKYh(wy8P`k<%W&&YTFYcpZt(C znwM&)C%vHO+|-}q2l%+>*JV{RSg*Q}na$9vcj&fjPR#6|$E>f_u)cTN%3UHRdF`@g zjZNXl*nLg;d*4c(4O_Lzko(u}_lLsG*Bi%ITL0M95wkt>`{UPq3ohO^jbC;wHTa-; z=+{lp>f_Az-9GX!i7&7=LHhlj=WBP)@r+hp_cY}1OY08|%V+)1{HONkh-oF2GWA5#5=}D89RA(LZz64b3 zIcp)0yvogwd)6g+^`PPJgKO zN{YMmR8HUDl(UoXq^4cr4F36MaeN!H&3`Z7d{R-gN8)e6)|vf|%^_~@wZh%+Og0z& z;b#L5<_T{;*i~jHS4banyg4gBOycnGS?eF%y{zlRuDsCVN5#BHv!xF0)_S{VBhUR~ z#;nuN*#7v`@!gZL`oq&Gl(@efIzb$w7%72Wfo7GLu U&V4lln4TFtUHx3vIVCg!01*U&dH?_b literal 0 HcmV?d00001 diff --git a/doc/html/classtesting_1_1_test_event_listeners-members.html b/doc/html/classtesting_1_1_test_event_listeners-members.html new file mode 100644 index 0000000..e6ef1fb --- /dev/null +++ b/doc/html/classtesting_1_1_test_event_listeners-members.html @@ -0,0 +1,119 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/doc/html/classtesting_1_1_test_event_listeners.html b/doc/html/classtesting_1_1_test_event_listeners.html new file mode 100644 index 0000000..bf409e9 --- /dev/null +++ b/doc/html/classtesting_1_1_test_event_listeners.html @@ -0,0 +1,419 @@ + + + + + + + +uTL: testing::TestEventListeners Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::TestEventListeners Class Reference
+
+
+ +

#include <gtest.h>

+ + + + + + + + + + + + + + +

+Public Member Functions

 TestEventListeners ()
 
 ~TestEventListeners ()
 
void Append (TestEventListener *listener)
 
TestEventListenerRelease (TestEventListener *listener)
 
TestEventListenerdefault_result_printer () const
 
TestEventListenerdefault_xml_generator () const
 
+ + + + + + + + + + + + + +

+Friends

class TestSuite
 
class TestInfo
 
class internal::DefaultGlobalTestPartResultReporter
 
class internal::NoExecDeathTest
 
class internal::TestEventListenersAccessor
 
class internal::UnitTestImpl
 
+

Detailed Description

+
+

Definition at line 15763 of file gtest.h.

+

Constructor & Destructor Documentation

+ +

◆ TestEventListeners()

+ +
+
+ + + + + + + +
testing::TestEventListeners::TestEventListeners ()
+
+ +
+
+ +

◆ ~TestEventListeners()

+ +
+
+ + + + + + + +
testing::TestEventListeners::~TestEventListeners ()
+
+ +
+
+

Member Function Documentation

+ +

◆ Append()

+ +
+
+ + + + + + + + +
void testing::TestEventListeners::Append (TestEventListenerlistener)
+
+ +
+
+ +

◆ default_result_printer()

+ +
+
+ + + + + +
+ + + + + + + +
TestEventListener* testing::TestEventListeners::default_result_printer () const
+
+inline
+
+ +

Definition at line 15783 of file gtest.h.

+ +
+
+ +

◆ default_xml_generator()

+ +
+
+ + + + + +
+ + + + + + + +
TestEventListener* testing::TestEventListeners::default_xml_generator () const
+
+inline
+
+ +

Definition at line 15794 of file gtest.h.

+ +
+
+ +

◆ Release()

+ +
+
+ + + + + + + + +
TestEventListener* testing::TestEventListeners::Release (TestEventListenerlistener)
+
+ +
+
+

Friends And Related Function Documentation

+ +

◆ internal::DefaultGlobalTestPartResultReporter

+ +
+
+ + + + + +
+ + + + +
friend class internal::DefaultGlobalTestPartResultReporter
+
+friend
+
+ +

Definition at line 15801 of file gtest.h.

+ +
+
+ +

◆ internal::NoExecDeathTest

+ +
+
+ + + + + +
+ + + + +
friend class internal::NoExecDeathTest
+
+friend
+
+ +

Definition at line 15802 of file gtest.h.

+ +
+
+ +

◆ internal::TestEventListenersAccessor

+ +
+
+ + + + + +
+ + + + +
friend class internal::TestEventListenersAccessor
+
+friend
+
+ +

Definition at line 15803 of file gtest.h.

+ +
+
+ +

◆ internal::UnitTestImpl

+ +
+
+ + + + + +
+ + + + +
friend class internal::UnitTestImpl
+
+friend
+
+ +

Definition at line 15804 of file gtest.h.

+ +
+
+ +

◆ TestInfo

+ +
+
+ + + + + +
+ + + + +
friend class TestInfo
+
+friend
+
+ +

Definition at line 15800 of file gtest.h.

+ +
+
+ +

◆ TestSuite

+ +
+
+ + + + + +
+ + + + +
friend class TestSuite
+
+friend
+
+ +

Definition at line 15799 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1_test_event_listeners.js b/doc/html/classtesting_1_1_test_event_listeners.js new file mode 100644 index 0000000..7d133a1 --- /dev/null +++ b/doc/html/classtesting_1_1_test_event_listeners.js @@ -0,0 +1,15 @@ +var classtesting_1_1_test_event_listeners = +[ + [ "TestEventListeners", "classtesting_1_1_test_event_listeners.html#af0716e4067a6f357ee5ea18802a591dd", null ], + [ "~TestEventListeners", "classtesting_1_1_test_event_listeners.html#abe9fbbbedf7f55fa898abfae60aa4913", null ], + [ "Append", "classtesting_1_1_test_event_listeners.html#a1207dce74d64c1c39ffa6105560536a0", null ], + [ "default_result_printer", "classtesting_1_1_test_event_listeners.html#a6293443acb5af942eeec638b6aa6dcf2", null ], + [ "default_xml_generator", "classtesting_1_1_test_event_listeners.html#aa880de6ddfc3f5824371853c6846abbd", null ], + [ "Release", "classtesting_1_1_test_event_listeners.html#a5d4bfb7d8584801d6074bb0ec28f8bda", null ], + [ "internal::DefaultGlobalTestPartResultReporter", "classtesting_1_1_test_event_listeners.html#abae39633da9932847b41cb80efd62115", null ], + [ "internal::NoExecDeathTest", "classtesting_1_1_test_event_listeners.html#afddba49fdf3f493532b4d5efb9814f4e", null ], + [ "internal::TestEventListenersAccessor", "classtesting_1_1_test_event_listeners.html#addbc107b6b445617c880182bd4f44cf9", null ], + [ "internal::UnitTestImpl", "classtesting_1_1_test_event_listeners.html#acc0a5e7573fd6ae7ad1878613bb86853", null ], + [ "TestInfo", "classtesting_1_1_test_event_listeners.html#a4c49c2cdb6c328e6b709b4542f23de3c", null ], + [ "TestSuite", "classtesting_1_1_test_event_listeners.html#ab9aaba231fd11196425e75caf709bfc6", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1_test_info-members.html b/doc/html/classtesting_1_1_test_info-members.html new file mode 100644 index 0000000..2ce1509 --- /dev/null +++ b/doc/html/classtesting_1_1_test_info-members.html @@ -0,0 +1,124 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::TestInfo Member List
+
+
+ +

This is the complete list of members for testing::TestInfo, including all inherited members.

+ + + + + + + + + + + + + + + + + + +
file() consttesting::TestInfoinline
internal::MakeAndRegisterTestInfo(const char *test_suite_name, const char *name, const char *type_param, const char *value_param, internal::CodeLocation code_location, internal::TypeId fixture_class_id, internal::SetUpTestSuiteFunc set_up_tc, internal::TearDownTestSuiteFunc tear_down_tc, internal::TestFactoryBase *factory)testing::TestInfofriend
internal::StreamingListenerTest classtesting::TestInfofriend
internal::UnitTestImpl classtesting::TestInfofriend
is_in_another_shard() consttesting::TestInfoinline
is_reportable() consttesting::TestInfoinline
line() consttesting::TestInfoinline
name() consttesting::TestInfoinline
result() consttesting::TestInfoinline
should_run() consttesting::TestInfoinline
Test classtesting::TestInfofriend
test_case_name() consttesting::TestInfoinline
test_suite_name() consttesting::TestInfoinline
TestSuite classtesting::TestInfofriend
type_param() consttesting::TestInfoinline
value_param() consttesting::TestInfoinline
~TestInfo()testing::TestInfo
+
+ + + + diff --git a/doc/html/classtesting_1_1_test_info.html b/doc/html/classtesting_1_1_test_info.html new file mode 100644 index 0000000..4b7b29c --- /dev/null +++ b/doc/html/classtesting_1_1_test_info.html @@ -0,0 +1,649 @@ + + + + + + + +uTL: testing::TestInfo Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::TestInfo Class Reference
+
+
+ +

#include <gtest.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 ~TestInfo ()
 
const char * test_suite_name () const
 
const char * test_case_name () const
 
const char * name () const
 
const char * type_param () const
 
const char * value_param () const
 
const char * file () const
 
int line () const
 
bool is_in_another_shard () const
 
bool should_run () const
 
bool is_reportable () const
 
const TestResultresult () const
 
+ + + + + + + + + + + +

+Friends

class Test
 
class TestSuite
 
class internal::UnitTestImpl
 
class internal::StreamingListenerTest
 
TestInfointernal::MakeAndRegisterTestInfo (const char *test_suite_name, const char *name, const char *type_param, const char *value_param, internal::CodeLocation code_location, internal::TypeId fixture_class_id, internal::SetUpTestSuiteFunc set_up_tc, internal::TearDownTestSuiteFunc tear_down_tc, internal::TestFactoryBase *factory)
 
+

Detailed Description

+
+

Definition at line 15294 of file gtest.h.

+

Constructor & Destructor Documentation

+ +

◆ ~TestInfo()

+ +
+
+ + + + + + + +
testing::TestInfo::~TestInfo ()
+
+ +
+
+

Member Function Documentation

+ +

◆ file()

+ +
+
+ + + + + +
+ + + + + + + +
const char* testing::TestInfo::file () const
+
+inline
+
+ +

Definition at line 15326 of file gtest.h.

+ +
+
+ +

◆ is_in_another_shard()

+ +
+
+ + + + + +
+ + + + + + + +
bool testing::TestInfo::is_in_another_shard () const
+
+inline
+
+ +

Definition at line 15332 of file gtest.h.

+ +
+
+ +

◆ is_reportable()

+ +
+
+ + + + + +
+ + + + + + + +
bool testing::TestInfo::is_reportable () const
+
+inline
+
+ +

Definition at line 15353 of file gtest.h.

+ +
+
+ +

◆ line()

+ +
+
+ + + + + +
+ + + + + + + +
int testing::TestInfo::line () const
+
+inline
+
+ +

Definition at line 15329 of file gtest.h.

+ +
+
+ +

◆ name()

+ +
+
+ + + + + +
+ + + + + + + +
const char* testing::TestInfo::name () const
+
+inline
+
+ +

Definition at line 15309 of file gtest.h.

+ +
+
+ +

◆ result()

+ +
+
+ + + + + +
+ + + + + + + +
const TestResult* testing::TestInfo::result () const
+
+inline
+
+ +

Definition at line 15360 of file gtest.h.

+ +
+
+ +

◆ should_run()

+ +
+
+ + + + + +
+ + + + + + + +
bool testing::TestInfo::should_run () const
+
+inline
+
+ +

Definition at line 15350 of file gtest.h.

+ +
+
+ +

◆ test_case_name()

+ +
+
+ + + + + +
+ + + + + + + +
const char* testing::TestInfo::test_case_name () const
+
+inline
+
+ +

Definition at line 15305 of file gtest.h.

+ +
+
+ +

◆ test_suite_name()

+ +
+
+ + + + + +
+ + + + + + + +
const char* testing::TestInfo::test_suite_name () const
+
+inline
+
+ +

Definition at line 15301 of file gtest.h.

+ +
+
+ +

◆ type_param()

+ +
+
+ + + + + +
+ + + + + + + +
const char* testing::TestInfo::type_param () const
+
+inline
+
+ +

Definition at line 15313 of file gtest.h.

+ +
+
+ +

◆ value_param()

+ +
+
+ + + + + +
+ + + + + + + +
const char* testing::TestInfo::value_param () const
+
+inline
+
+ +

Definition at line 15320 of file gtest.h.

+ +
+
+

Friends And Related Function Documentation

+ +

◆ internal::MakeAndRegisterTestInfo

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TestInfo* internal::MakeAndRegisterTestInfo (const char * test_suite_name,
const char * name,
const char * type_param,
const char * value_param,
internal::CodeLocation code_location,
internal::TypeId fixture_class_id,
internal::SetUpTestSuiteFunc set_up_tc,
internal::TearDownTestSuiteFunc tear_down_tc,
internal::TestFactoryBasefactory 
)
+
+friend
+
+ +
+
+ +

◆ internal::StreamingListenerTest

+ +
+
+ + + + + +
+ + + + +
friend class internal::StreamingListenerTest
+
+friend
+
+ +

Definition at line 15369 of file gtest.h.

+ +
+
+ +

◆ internal::UnitTestImpl

+ +
+
+ + + + + +
+ + + + +
friend class internal::UnitTestImpl
+
+friend
+
+ +

Definition at line 15368 of file gtest.h.

+ +
+
+ +

◆ Test

+ +
+
+ + + + + +
+ + + + +
friend class Test
+
+friend
+
+ +

Definition at line 15366 of file gtest.h.

+ +
+
+ +

◆ TestSuite

+ +
+
+ + + + + +
+ + + + +
friend class TestSuite
+
+friend
+
+ +

Definition at line 15367 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1_test_info.js b/doc/html/classtesting_1_1_test_info.js new file mode 100644 index 0000000..b5ee83f --- /dev/null +++ b/doc/html/classtesting_1_1_test_info.js @@ -0,0 +1,20 @@ +var classtesting_1_1_test_info = +[ + [ "~TestInfo", "classtesting_1_1_test_info.html#a8d382c1b1b511f0d9112c14684809852", null ], + [ "file", "classtesting_1_1_test_info.html#a9b74d79cf618ce5bb0d0b1da75ee8b35", null ], + [ "is_in_another_shard", "classtesting_1_1_test_info.html#a8621f2cf7623fd1609db8e324f0c2fec", null ], + [ "is_reportable", "classtesting_1_1_test_info.html#a63e7042028b0b846f4b5a1e5bcffc079", null ], + [ "line", "classtesting_1_1_test_info.html#af5931cfc594b5d660c56b3c61c41ea13", null ], + [ "name", "classtesting_1_1_test_info.html#ac2581b45eccc9a3b94cb41c4807d0e34", null ], + [ "result", "classtesting_1_1_test_info.html#aee8cb884c95cd446129aba936b4159e0", null ], + [ "should_run", "classtesting_1_1_test_info.html#a866e33b5bc5ab2a6e5375fc7d3af0f96", null ], + [ "test_case_name", "classtesting_1_1_test_info.html#a036a20710c8c2252889544daba9a8ff9", null ], + [ "test_suite_name", "classtesting_1_1_test_info.html#a82a84ffd0e4d18eb5a3f97a2077e12cc", null ], + [ "type_param", "classtesting_1_1_test_info.html#a7759bc57f4350ad406cbbb0b3bcea320", null ], + [ "value_param", "classtesting_1_1_test_info.html#abdf2c6cfcf4819e725816c64e1c1fc24", null ], + [ "internal::MakeAndRegisterTestInfo", "classtesting_1_1_test_info.html#a63d61c7ffd0423b1d3615f0ff5f2040e", null ], + [ "internal::StreamingListenerTest", "classtesting_1_1_test_info.html#adc037d188dab349a94868991955c9cd4", null ], + [ "internal::UnitTestImpl", "classtesting_1_1_test_info.html#acc0a5e7573fd6ae7ad1878613bb86853", null ], + [ "Test", "classtesting_1_1_test_info.html#a5b78b1c2e1fa07ffed92da365593eaa4", null ], + [ "TestSuite", "classtesting_1_1_test_info.html#ab9aaba231fd11196425e75caf709bfc6", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1_test_property-members.html b/doc/html/classtesting_1_1_test_property-members.html new file mode 100644 index 0000000..c6ba339 --- /dev/null +++ b/doc/html/classtesting_1_1_test_property-members.html @@ -0,0 +1,111 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::TestProperty Member List
+
+
+ +

This is the complete list of members for testing::TestProperty, including all inherited members.

+ + + + + +
key() consttesting::TestPropertyinline
SetValue(const std::string &new_value)testing::TestPropertyinline
TestProperty(const std::string &a_key, const std::string &a_value)testing::TestPropertyinline
value() consttesting::TestPropertyinline
+
+ + + + diff --git a/doc/html/classtesting_1_1_test_property.html b/doc/html/classtesting_1_1_test_property.html new file mode 100644 index 0000000..b0e73b4 --- /dev/null +++ b/doc/html/classtesting_1_1_test_property.html @@ -0,0 +1,250 @@ + + + + + + + +uTL: testing::TestProperty Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::TestProperty Class Reference
+
+
+ +

#include <gtest.h>

+ + + + + + + + + + +

+Public Member Functions

 TestProperty (const std::string &a_key, const std::string &a_value)
 
const char * key () const
 
const char * value () const
 
void SetValue (const std::string &new_value)
 
+

Detailed Description

+
+

Definition at line 15133 of file gtest.h.

+

Constructor & Destructor Documentation

+ +

◆ TestProperty()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
testing::TestProperty::TestProperty (const std::string & a_key,
const std::string & a_value 
)
+
+inline
+
+ +

Definition at line 15138 of file gtest.h.

+ +
+
+

Member Function Documentation

+ +

◆ key()

+ +
+
+ + + + + +
+ + + + + + + +
const char* testing::TestProperty::key () const
+
+inline
+
+ +

Definition at line 15143 of file gtest.h.

+ +
+
+ +

◆ SetValue()

+ +
+
+ + + + + +
+ + + + + + + + +
void testing::TestProperty::SetValue (const std::string & new_value)
+
+inline
+
+ +

Definition at line 15153 of file gtest.h.

+ +
+
+ +

◆ value()

+ +
+
+ + + + + +
+ + + + + + + +
const char* testing::TestProperty::value () const
+
+inline
+
+ +

Definition at line 15148 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1_test_property.js b/doc/html/classtesting_1_1_test_property.js new file mode 100644 index 0000000..402e946 --- /dev/null +++ b/doc/html/classtesting_1_1_test_property.js @@ -0,0 +1,7 @@ +var classtesting_1_1_test_property = +[ + [ "TestProperty", "classtesting_1_1_test_property.html#a25a0ccf1c75a92af46a48d3c2a873e6d", null ], + [ "key", "classtesting_1_1_test_property.html#ad60435d4ad04ac030487d8998fc61c5f", null ], + [ "SetValue", "classtesting_1_1_test_property.html#a377245335d9f614cd06d1650e3358e1d", null ], + [ "value", "classtesting_1_1_test_property.html#ad423a07af33c88b0c9ed33ee74815a63", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1_test_result-members.html b/doc/html/classtesting_1_1_test_result-members.html new file mode 100644 index 0000000..5cc6dc8 --- /dev/null +++ b/doc/html/classtesting_1_1_test_result-members.html @@ -0,0 +1,128 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/doc/html/classtesting_1_1_test_result.html b/doc/html/classtesting_1_1_test_result.html new file mode 100644 index 0000000..096c591 --- /dev/null +++ b/doc/html/classtesting_1_1_test_result.html @@ -0,0 +1,611 @@ + + + + + + + +uTL: testing::TestResult Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::TestResult Class Reference
+
+
+ +

#include <gtest.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 TestResult ()
 
 ~TestResult ()
 
int total_part_count () const
 
int test_property_count () const
 
bool Passed () const
 
bool Skipped () const
 
bool Failed () const
 
bool HasFatalFailure () const
 
bool HasNonfatalFailure () const
 
TimeInMillis elapsed_time () const
 
const TestPartResult & GetTestPartResult (int i) const
 
const TestPropertyGetTestProperty (int i) const
 
+ + + + + + + + + + + + + + + + + + + +

+Friends

class TestInfo
 
class TestSuite
 
class UnitTest
 
class internal::DefaultGlobalTestPartResultReporter
 
class internal::ExecDeathTest
 
class internal::TestResultAccessor
 
class internal::UnitTestImpl
 
class internal::WindowsDeathTest
 
class internal::FuchsiaDeathTest
 
+

Detailed Description

+
+

Definition at line 15170 of file gtest.h.

+

Constructor & Destructor Documentation

+ +

◆ TestResult()

+ +
+
+ + + + + + + +
testing::TestResult::TestResult ()
+
+ +
+
+ +

◆ ~TestResult()

+ +
+
+ + + + + + + +
testing::TestResult::~TestResult ()
+
+ +
+
+

Member Function Documentation

+ +

◆ elapsed_time()

+ +
+
+ + + + + +
+ + + + + + + +
TimeInMillis testing::TestResult::elapsed_time () const
+
+inline
+
+ +

Definition at line 15201 of file gtest.h.

+ +
+
+ +

◆ Failed()

+ +
+
+ + + + + + + +
bool testing::TestResult::Failed () const
+
+ +
+
+ +

◆ GetTestPartResult()

+ +
+
+ + + + + + + + +
const TestPartResult& testing::TestResult::GetTestPartResult (int i) const
+
+ +
+
+ +

◆ GetTestProperty()

+ +
+
+ + + + + + + + +
const TestProperty& testing::TestResult::GetTestProperty (int i) const
+
+ +
+
+ +

◆ HasFatalFailure()

+ +
+
+ + + + + + + +
bool testing::TestResult::HasFatalFailure () const
+
+ +
+
+ +

◆ HasNonfatalFailure()

+ +
+
+ + + + + + + +
bool testing::TestResult::HasNonfatalFailure () const
+
+ +
+
+ +

◆ Passed()

+ +
+
+ + + + + +
+ + + + + + + +
bool testing::TestResult::Passed () const
+
+inline
+
+ +

Definition at line 15186 of file gtest.h.

+ +
+
+ +

◆ Skipped()

+ +
+
+ + + + + + + +
bool testing::TestResult::Skipped () const
+
+ +
+
+ +

◆ test_property_count()

+ +
+
+ + + + + + + +
int testing::TestResult::test_property_count () const
+
+ +
+
+ +

◆ total_part_count()

+ +
+
+ + + + + + + +
int testing::TestResult::total_part_count () const
+
+ +
+
+

Friends And Related Function Documentation

+ +

◆ internal::DefaultGlobalTestPartResultReporter

+ +
+
+ + + + + +
+ + + + +
friend class internal::DefaultGlobalTestPartResultReporter
+
+friend
+
+ +

Definition at line 15216 of file gtest.h.

+ +
+
+ +

◆ internal::ExecDeathTest

+ +
+
+ + + + + +
+ + + + +
friend class internal::ExecDeathTest
+
+friend
+
+ +

Definition at line 15217 of file gtest.h.

+ +
+
+ +

◆ internal::FuchsiaDeathTest

+ +
+
+ + + + + +
+ + + + +
friend class internal::FuchsiaDeathTest
+
+friend
+
+ +

Definition at line 15221 of file gtest.h.

+ +
+
+ +

◆ internal::TestResultAccessor

+ +
+
+ + + + + +
+ + + + +
friend class internal::TestResultAccessor
+
+friend
+
+ +

Definition at line 15218 of file gtest.h.

+ +
+
+ +

◆ internal::UnitTestImpl

+ +
+
+ + + + + +
+ + + + +
friend class internal::UnitTestImpl
+
+friend
+
+ +

Definition at line 15219 of file gtest.h.

+ +
+
+ +

◆ internal::WindowsDeathTest

+ +
+
+ + + + + +
+ + + + +
friend class internal::WindowsDeathTest
+
+friend
+
+ +

Definition at line 15220 of file gtest.h.

+ +
+
+ +

◆ TestInfo

+ +
+
+ + + + + +
+ + + + +
friend class TestInfo
+
+friend
+
+ +

Definition at line 15213 of file gtest.h.

+ +
+
+ +

◆ TestSuite

+ +
+
+ + + + + +
+ + + + +
friend class TestSuite
+
+friend
+
+ +

Definition at line 15214 of file gtest.h.

+ +
+
+ +

◆ UnitTest

+ +
+
+ + + + + +
+ + + + +
friend class UnitTest
+
+friend
+
+ +

Definition at line 15215 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1_test_result.js b/doc/html/classtesting_1_1_test_result.js new file mode 100644 index 0000000..df58337 --- /dev/null +++ b/doc/html/classtesting_1_1_test_result.js @@ -0,0 +1,24 @@ +var classtesting_1_1_test_result = +[ + [ "TestResult", "classtesting_1_1_test_result.html#a5cf5dd6f416b7334ea601aab21a2fda5", null ], + [ "~TestResult", "classtesting_1_1_test_result.html#a41f407680b725b75d7eadc3230bc3315", null ], + [ "elapsed_time", "classtesting_1_1_test_result.html#a717e05e00d4af5cb809433e343ab63af", null ], + [ "Failed", "classtesting_1_1_test_result.html#afacc37e8b43c8574e4101bc61723c769", null ], + [ "GetTestPartResult", "classtesting_1_1_test_result.html#a910b410d0d1e066cd9e182f9e07d1933", null ], + [ "GetTestProperty", "classtesting_1_1_test_result.html#a491ede3939a9ca508e338929762cb148", null ], + [ "HasFatalFailure", "classtesting_1_1_test_result.html#a30e00d4076ae07fb5ad7b623d9dc1fe4", null ], + [ "HasNonfatalFailure", "classtesting_1_1_test_result.html#a510564fa67b485ed4589a259f2a032d6", null ], + [ "Passed", "classtesting_1_1_test_result.html#acf7e6e72f05a0545c48ea48e7f8851df", null ], + [ "Skipped", "classtesting_1_1_test_result.html#a4c9e954e0f8c1386206f2e6208c45244", null ], + [ "test_property_count", "classtesting_1_1_test_result.html#afe4523257bbea8bc63b0950b702790be", null ], + [ "total_part_count", "classtesting_1_1_test_result.html#a6174aa4019dcda7c34d776b5741c9032", null ], + [ "internal::DefaultGlobalTestPartResultReporter", "classtesting_1_1_test_result.html#abae39633da9932847b41cb80efd62115", null ], + [ "internal::ExecDeathTest", "classtesting_1_1_test_result.html#adf5553cae6aea6f8648d47e299237e34", null ], + [ "internal::FuchsiaDeathTest", "classtesting_1_1_test_result.html#af29d5921f68031cdfba0b28cf4b3b559", null ], + [ "internal::TestResultAccessor", "classtesting_1_1_test_result.html#ae762da04e74a0d3b0daded3c5bd4a8e8", null ], + [ "internal::UnitTestImpl", "classtesting_1_1_test_result.html#acc0a5e7573fd6ae7ad1878613bb86853", null ], + [ "internal::WindowsDeathTest", "classtesting_1_1_test_result.html#a6aeedc04a0590fcc1b3c5f687dbb0f9f", null ], + [ "TestInfo", "classtesting_1_1_test_result.html#a4c49c2cdb6c328e6b709b4542f23de3c", null ], + [ "TestSuite", "classtesting_1_1_test_result.html#ab9aaba231fd11196425e75caf709bfc6", null ], + [ "UnitTest", "classtesting_1_1_test_result.html#a832b4d233efee1a32feb0f4190b30d39", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1_test_suite-members.html b/doc/html/classtesting_1_1_test_suite-members.html new file mode 100644 index 0000000..ae6cbcd --- /dev/null +++ b/doc/html/classtesting_1_1_test_suite-members.html @@ -0,0 +1,127 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::TestSuite Member List
+
+
+ +

This is the complete list of members for testing::TestSuite, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + +
ad_hoc_test_result() consttesting::TestSuiteinline
disabled_test_count() consttesting::TestSuite
elapsed_time() consttesting::TestSuiteinline
Failed() consttesting::TestSuiteinline
failed_test_count() consttesting::TestSuite
GetTestInfo(int i) consttesting::TestSuite
internal::UnitTestImpl classtesting::TestSuitefriend
name() consttesting::TestSuiteinline
Passed() consttesting::TestSuiteinline
reportable_disabled_test_count() consttesting::TestSuite
reportable_test_count() consttesting::TestSuite
should_run() consttesting::TestSuiteinline
skipped_test_count() consttesting::TestSuite
successful_test_count() consttesting::TestSuite
Test classtesting::TestSuitefriend
test_to_run_count() consttesting::TestSuite
TestSuite(const char *name, const char *a_type_param, internal::SetUpTestSuiteFunc set_up_tc, internal::TearDownTestSuiteFunc tear_down_tc)testing::TestSuite
total_test_count() consttesting::TestSuite
type_param() consttesting::TestSuiteinline
~TestSuite()testing::TestSuitevirtual
+
+ + + + diff --git a/doc/html/classtesting_1_1_test_suite.html b/doc/html/classtesting_1_1_test_suite.html new file mode 100644 index 0000000..2639fe4 --- /dev/null +++ b/doc/html/classtesting_1_1_test_suite.html @@ -0,0 +1,623 @@ + + + + + + + +uTL: testing::TestSuite Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::TestSuite Class Reference
+
+
+ +

#include <gtest.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 TestSuite (const char *name, const char *a_type_param, internal::SetUpTestSuiteFunc set_up_tc, internal::TearDownTestSuiteFunc tear_down_tc)
 
virtual ~TestSuite ()
 
const char * name () const
 
const char * type_param () const
 
bool should_run () const
 
int successful_test_count () const
 
int skipped_test_count () const
 
int failed_test_count () const
 
int reportable_disabled_test_count () const
 
int disabled_test_count () const
 
int reportable_test_count () const
 
int test_to_run_count () const
 
int total_test_count () const
 
bool Passed () const
 
bool Failed () const
 
TimeInMillis elapsed_time () const
 
const TestInfoGetTestInfo (int i) const
 
const TestResultad_hoc_test_result () const
 
+ + + + + +

+Friends

class Test
 
class internal::UnitTestImpl
 
+

Detailed Description

+
+

Definition at line 15429 of file gtest.h.

+

Constructor & Destructor Documentation

+ +

◆ TestSuite()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
testing::TestSuite::TestSuite (const char * name,
const char * a_type_param,
internal::SetUpTestSuiteFunc set_up_tc,
internal::TearDownTestSuiteFunc tear_down_tc 
)
+
+ +
+
+ +

◆ ~TestSuite()

+ +
+
+ + + + + +
+ + + + + + + +
virtual testing::TestSuite::~TestSuite ()
+
+virtual
+
+ +
+
+

Member Function Documentation

+ +

◆ ad_hoc_test_result()

+ +
+
+ + + + + +
+ + + + + + + +
const TestResult& testing::TestSuite::ad_hoc_test_result () const
+
+inline
+
+ +

Definition at line 15502 of file gtest.h.

+ +
+
+ +

◆ disabled_test_count()

+ +
+
+ + + + + + + +
int testing::TestSuite::disabled_test_count () const
+
+ +
+
+ +

◆ elapsed_time()

+ +
+
+ + + + + +
+ + + + + + + +
TimeInMillis testing::TestSuite::elapsed_time () const
+
+inline
+
+ +

Definition at line 15494 of file gtest.h.

+ +
+
+ +

◆ Failed()

+ +
+
+ + + + + +
+ + + + + + + +
bool testing::TestSuite::Failed () const
+
+inline
+
+ +

Definition at line 15491 of file gtest.h.

+ +
+
+ +

◆ failed_test_count()

+ +
+
+ + + + + + + +
int testing::TestSuite::failed_test_count () const
+
+ +
+
+ +

◆ GetTestInfo()

+ +
+
+ + + + + + + + +
const TestInfo* testing::TestSuite::GetTestInfo (int i) const
+
+ +
+
+ +

◆ name()

+ +
+
+ + + + + +
+ + + + + + + +
const char* testing::TestSuite::name () const
+
+inline
+
+ +

Definition at line 15451 of file gtest.h.

+ +
+
+ +

◆ Passed()

+ +
+
+ + + + + +
+ + + + + + + +
bool testing::TestSuite::Passed () const
+
+inline
+
+ +

Definition at line 15488 of file gtest.h.

+ +
+
+ +

◆ reportable_disabled_test_count()

+ +
+
+ + + + + + + +
int testing::TestSuite::reportable_disabled_test_count () const
+
+ +
+
+ +

◆ reportable_test_count()

+ +
+
+ + + + + + + +
int testing::TestSuite::reportable_test_count () const
+
+ +
+
+ +

◆ should_run()

+ +
+
+ + + + + +
+ + + + + + + +
bool testing::TestSuite::should_run () const
+
+inline
+
+ +

Definition at line 15461 of file gtest.h.

+ +
+
+ +

◆ skipped_test_count()

+ +
+
+ + + + + + + +
int testing::TestSuite::skipped_test_count () const
+
+ +
+
+ +

◆ successful_test_count()

+ +
+
+ + + + + + + +
int testing::TestSuite::successful_test_count () const
+
+ +
+
+ +

◆ test_to_run_count()

+ +
+
+ + + + + + + +
int testing::TestSuite::test_to_run_count () const
+
+ +
+
+ +

◆ total_test_count()

+ +
+
+ + + + + + + +
int testing::TestSuite::total_test_count () const
+
+ +
+
+ +

◆ type_param()

+ +
+
+ + + + + +
+ + + + + + + +
const char* testing::TestSuite::type_param () const
+
+inline
+
+ +

Definition at line 15455 of file gtest.h.

+ +
+
+

Friends And Related Function Documentation

+ +

◆ internal::UnitTestImpl

+ +
+
+ + + + + +
+ + + + +
friend class internal::UnitTestImpl
+
+friend
+
+ +

Definition at line 15506 of file gtest.h.

+ +
+
+ +

◆ Test

+ +
+
+ + + + + +
+ + + + +
friend class Test
+
+friend
+
+ +

Definition at line 15505 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1_test_suite.js b/doc/html/classtesting_1_1_test_suite.js new file mode 100644 index 0000000..79c091d --- /dev/null +++ b/doc/html/classtesting_1_1_test_suite.js @@ -0,0 +1,23 @@ +var classtesting_1_1_test_suite = +[ + [ "TestSuite", "classtesting_1_1_test_suite.html#a2d6469bcb83701e1bbfe47c465e9731f", null ], + [ "~TestSuite", "classtesting_1_1_test_suite.html#a78af2d96b44c8b8f2002b4e74df31c38", null ], + [ "ad_hoc_test_result", "classtesting_1_1_test_suite.html#a3391a0ec111c66e1ac16a800f5068af7", null ], + [ "disabled_test_count", "classtesting_1_1_test_suite.html#adba738351633471e3256dcf7d3c2e61e", null ], + [ "elapsed_time", "classtesting_1_1_test_suite.html#a2ede69fa37985ab8b21128955c56d6d7", null ], + [ "Failed", "classtesting_1_1_test_suite.html#adec55446c23dc2d0bfea91c6125a1047", null ], + [ "failed_test_count", "classtesting_1_1_test_suite.html#aaf18223e67cf0761f56bd4b8167abc6c", null ], + [ "GetTestInfo", "classtesting_1_1_test_suite.html#aa6e617d79e4272362735ca9be4fb40d7", null ], + [ "name", "classtesting_1_1_test_suite.html#ab3369db678ca3d9648d6fd63ad038986", null ], + [ "Passed", "classtesting_1_1_test_suite.html#add51ece89b069b29e07f0476e0e6aae9", null ], + [ "reportable_disabled_test_count", "classtesting_1_1_test_suite.html#ab0b3d1ee8efaa18ceb2553a71002c678", null ], + [ "reportable_test_count", "classtesting_1_1_test_suite.html#a24f62e17cfd37b90263f1194fb7d4d74", null ], + [ "should_run", "classtesting_1_1_test_suite.html#a8f62c17baef80042e0ff03ef5d5e4ba7", null ], + [ "skipped_test_count", "classtesting_1_1_test_suite.html#ae48c72ff92fa1c555e3b577f8661285c", null ], + [ "successful_test_count", "classtesting_1_1_test_suite.html#a85bc4191681df7e8bae810c1744465ec", null ], + [ "test_to_run_count", "classtesting_1_1_test_suite.html#a1ccf2681712a3a27659789009815db8f", null ], + [ "total_test_count", "classtesting_1_1_test_suite.html#a38a5e95341cfee5a88d8910f69da4960", null ], + [ "type_param", "classtesting_1_1_test_suite.html#ab2ea12318bdbfb6aa97792344b49e3db", null ], + [ "internal::UnitTestImpl", "classtesting_1_1_test_suite.html#acc0a5e7573fd6ae7ad1878613bb86853", null ], + [ "Test", "classtesting_1_1_test_suite.html#a5b78b1c2e1fa07ffed92da365593eaa4", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1_test_with_param-members.html b/doc/html/classtesting_1_1_test_with_param-members.html new file mode 100644 index 0000000..2b66ff4 --- /dev/null +++ b/doc/html/classtesting_1_1_test_with_param-members.html @@ -0,0 +1,124 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::TestWithParam< T > Member List
+
+
+ +

This is the complete list of members for testing::TestWithParam< T >, including all inherited members.

+ + + + + + + + + + + + + + + + + + +
GetParam()testing::WithParamInterface< T >inlinestatic
HasFailure()testing::Testinlinestatic
HasFatalFailure()testing::Teststatic
HasNonfatalFailure()testing::Teststatic
IsSkipped()testing::Teststatic
ParamType typedeftesting::WithParamInterface< T >
RecordProperty(const std::string &key, const std::string &value)testing::Teststatic
RecordProperty(const std::string &key, int value)testing::Teststatic
SetUp()testing::Testprotectedvirtual
SetUpTestCase()testing::Testinlinestatic
SetUpTestSuite()testing::Testinlinestatic
TearDown()testing::Testprotectedvirtual
TearDownTestCase()testing::Testinlinestatic
TearDownTestSuite()testing::Testinlinestatic
Test()testing::Testprotected
~Test()testing::Testvirtual
~WithParamInterface()testing::WithParamInterface< T >inlinevirtual
+
+ + + + diff --git a/doc/html/classtesting_1_1_test_with_param.html b/doc/html/classtesting_1_1_test_with_param.html new file mode 100644 index 0000000..ec446aa --- /dev/null +++ b/doc/html/classtesting_1_1_test_with_param.html @@ -0,0 +1,172 @@ + + + + + + + +uTL: testing::TestWithParam< T > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::TestWithParam< T > Class Template Reference
+
+
+ +

#include <gtest.h>

+
+Inheritance diagram for testing::TestWithParam< T >:
+
+
+ + +testing::Test +testing::WithParamInterface< T > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from testing::WithParamInterface< T >
typedef T ParamType
 
- Public Member Functions inherited from testing::Test
virtual ~Test ()
 
- Public Member Functions inherited from testing::WithParamInterface< T >
virtual ~WithParamInterface ()
 
- Static Public Member Functions inherited from testing::Test
static void SetUpTestSuite ()
 
static void TearDownTestSuite ()
 
static void TearDownTestCase ()
 
static void SetUpTestCase ()
 
static bool HasFatalFailure ()
 
static bool HasNonfatalFailure ()
 
static bool IsSkipped ()
 
static bool HasFailure ()
 
static void RecordProperty (const std::string &key, const std::string &value)
 
static void RecordProperty (const std::string &key, int value)
 
- Static Public Member Functions inherited from testing::WithParamInterface< T >
static const ParamTypeGetParam ()
 
- Protected Member Functions inherited from testing::Test
 Test ()
 
virtual void SetUp ()
 
virtual void TearDown ()
 
+

Detailed Description

+

template<typename T>
+class testing::TestWithParam< T >

+ + +

Definition at line 16505 of file gtest.h.

+

The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1_test_with_param.png b/doc/html/classtesting_1_1_test_with_param.png new file mode 100644 index 0000000000000000000000000000000000000000..13baf0c5cbcdcdff59f5e884a89240d3a37d3821 GIT binary patch literal 1084 zcmeAS@N?(olHy`uVBq!ia0y~yV4MJC2XHV0Nrr!y{{cyf0G|-o|Ns93nJ?aaE$u%9 zQUS&X4jf?Zydw|fa+C!51v3B@fxy*MAw~=g%%?qF978G?-_A|Eyh=g9ji2B6@BjHV z_Z1JbZd|iw_bszIoTZ@;cAO3`I`{KIK)vPjnt~IPN;1|6cv_h#x=fN0bW%Af2xnAt zcuvasZT-&QSA3nl=dxaB)l6+~#o6v5e*Ra&+O<5(XRO!1_q`(M@YWx51U#iS?fIsv zILYJyN9K{K``MkNMK=|C9o`_@B65E6o9OLl*32`?pQm=u&HIwHPK%A0_cKhOBDa`tVo)2xp(&0gH>EHibQ6qhnXG1`60i>=LT5BUUa z+)(kvXhUtmUom${v+{CrqZyBtoPT9_RyDIbz3X4`Dy3`1H*w?%T|Bq# z<$b!R^pR-;>R~`H_L|%v>JH+P$wOFWt*3?^!y5rNpJpW`Dbh^&zj5 zw;Vm*C^GOaZHW>#j4DKxgsCbUAhnJ?Tbc6l}{_SkR=fXJq8G%`y!PC{xWt~$(69Bo! B%ijP1 literal 0 HcmV?d00001 diff --git a/doc/html/classtesting_1_1_unit_test-members.html b/doc/html/classtesting_1_1_unit_test-members.html new file mode 100644 index 0000000..0ebc07a --- /dev/null +++ b/doc/html/classtesting_1_1_unit_test-members.html @@ -0,0 +1,147 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::UnitTest Member List
+
+
+ +

This is the complete list of members for testing::UnitTest, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ad_hoc_test_result() consttesting::UnitTest
AddGlobalTestEnvironment(Environment *env)testing::UnitTestfriend
current_test_case() const GTEST_LOCK_EXCLUDED_(mutex_)testing::UnitTest
current_test_info() const GTEST_LOCK_EXCLUDED_(mutex_)testing::UnitTest
current_test_suite() const GTEST_LOCK_EXCLUDED_(mutex_)testing::UnitTest
disabled_test_count() consttesting::UnitTest
elapsed_time() consttesting::UnitTest
Failed() consttesting::UnitTest
failed_test_case_count() consttesting::UnitTest
failed_test_count() consttesting::UnitTest
failed_test_suite_count() consttesting::UnitTest
GetInstance()testing::UnitTeststatic
GetTestCase(int i) consttesting::UnitTest
GetTestSuite(int i) consttesting::UnitTest
internal::AssertHelper classtesting::UnitTestfriend
internal::GetUnitTestImpl()testing::UnitTestfriend
internal::ReportFailureInUnknownLocation(TestPartResult::Type result_type, const std::string &message)testing::UnitTestfriend
internal::StreamingListenerTest classtesting::UnitTestfriend
internal::UnitTestRecordPropertyTestHelper classtesting::UnitTestfriend
listeners()testing::UnitTest
original_working_dir() consttesting::UnitTest
parameterized_test_registry() GTEST_LOCK_EXCLUDED_(mutex_)testing::UnitTest
Passed() consttesting::UnitTest
random_seed() consttesting::UnitTest
reportable_disabled_test_count() consttesting::UnitTest
reportable_test_count() consttesting::UnitTest
Run() GTEST_MUST_USE_RESULT_testing::UnitTest
ScopedTrace classtesting::UnitTestfriend
skipped_test_count() consttesting::UnitTest
start_timestamp() consttesting::UnitTest
successful_test_case_count() consttesting::UnitTest
successful_test_count() consttesting::UnitTest
successful_test_suite_count() consttesting::UnitTest
Test classtesting::UnitTestfriend
test_case_to_run_count() consttesting::UnitTest
test_suite_to_run_count() consttesting::UnitTest
test_to_run_count() consttesting::UnitTest
total_test_case_count() consttesting::UnitTest
total_test_count() consttesting::UnitTest
total_test_suite_count() consttesting::UnitTest
+
+ + + + diff --git a/doc/html/classtesting_1_1_unit_test.html b/doc/html/classtesting_1_1_unit_test.html new file mode 100644 index 0000000..a194953 --- /dev/null +++ b/doc/html/classtesting_1_1_unit_test.html @@ -0,0 +1,973 @@ + + + + + + + +uTL: testing::UnitTest Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::UnitTest Class Reference
+
+
+ +

#include <gtest.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

int Run () GTEST_MUST_USE_RESULT_
 
const char * original_working_dir () const
 
const TestSuitecurrent_test_suite () const GTEST_LOCK_EXCLUDED_(mutex_)
 
const TestCase * current_test_case () const GTEST_LOCK_EXCLUDED_(mutex_)
 
const TestInfocurrent_test_info () const GTEST_LOCK_EXCLUDED_(mutex_)
 
int random_seed () const
 
internal::ParameterizedTestSuiteRegistryparameterized_test_registry () GTEST_LOCK_EXCLUDED_(mutex_)
 
int successful_test_suite_count () const
 
int failed_test_suite_count () const
 
int total_test_suite_count () const
 
int test_suite_to_run_count () const
 
int successful_test_case_count () const
 
int failed_test_case_count () const
 
int total_test_case_count () const
 
int test_case_to_run_count () const
 
int successful_test_count () const
 
int skipped_test_count () const
 
int failed_test_count () const
 
int reportable_disabled_test_count () const
 
int disabled_test_count () const
 
int reportable_test_count () const
 
int total_test_count () const
 
int test_to_run_count () const
 
TimeInMillis start_timestamp () const
 
TimeInMillis elapsed_time () const
 
bool Passed () const
 
bool Failed () const
 
const TestSuiteGetTestSuite (int i) const
 
const TestCase * GetTestCase (int i) const
 
const TestResultad_hoc_test_result () const
 
TestEventListenerslisteners ()
 
+ + + +

+Static Public Member Functions

static UnitTestGetInstance ()
 
+ + + + + + + + + + + + + + + + + +

+Friends

class ScopedTrace
 
class Test
 
class internal::AssertHelper
 
class internal::StreamingListenerTest
 
class internal::UnitTestRecordPropertyTestHelper
 
EnvironmentAddGlobalTestEnvironment (Environment *env)
 
internal::UnitTestImpl * internal::GetUnitTestImpl ()
 
void internal::ReportFailureInUnknownLocation (TestPartResult::Type result_type, const std::string &message)
 
+

Detailed Description

+
+

Definition at line 15850 of file gtest.h.

+

Member Function Documentation

+ +

◆ ad_hoc_test_result()

+ +
+
+ + + + + + + +
const TestResult& testing::UnitTest::ad_hoc_test_result () const
+
+ +
+
+ +

◆ current_test_case()

+ +
+
+ + + + + + + +
const TestCase* testing::UnitTest::current_test_case () const
+
+ +
+
+ +

◆ current_test_info()

+ +
+
+ + + + + + + +
const TestInfo* testing::UnitTest::current_test_info () const
+
+ +
+
+ +

◆ current_test_suite()

+ +
+
+ + + + + + + +
const TestSuite* testing::UnitTest::current_test_suite () const
+
+ +
+
+ +

◆ disabled_test_count()

+ +
+
+ + + + + + + +
int testing::UnitTest::disabled_test_count () const
+
+ +
+
+ +

◆ elapsed_time()

+ +
+
+ + + + + + + +
TimeInMillis testing::UnitTest::elapsed_time () const
+
+ +
+
+ +

◆ Failed()

+ +
+
+ + + + + + + +
bool testing::UnitTest::Failed () const
+
+ +
+
+ +

◆ failed_test_case_count()

+ +
+
+ + + + + + + +
int testing::UnitTest::failed_test_case_count () const
+
+ +
+
+ +

◆ failed_test_count()

+ +
+
+ + + + + + + +
int testing::UnitTest::failed_test_count () const
+
+ +
+
+ +

◆ failed_test_suite_count()

+ +
+
+ + + + + + + +
int testing::UnitTest::failed_test_suite_count () const
+
+ +
+
+ +

◆ GetInstance()

+ +
+
+ + + + + +
+ + + + + + + +
static UnitTest* testing::UnitTest::GetInstance ()
+
+static
+
+ +
+
+ +

◆ GetTestCase()

+ +
+
+ + + + + + + + +
const TestCase* testing::UnitTest::GetTestCase (int i) const
+
+ +
+
+ +

◆ GetTestSuite()

+ +
+
+ + + + + + + + +
const TestSuite* testing::UnitTest::GetTestSuite (int i) const
+
+ +
+
+ +

◆ listeners()

+ +
+
+ + + + + + + +
TestEventListeners& testing::UnitTest::listeners ()
+
+ +
+
+ +

◆ original_working_dir()

+ +
+
+ + + + + + + +
const char* testing::UnitTest::original_working_dir () const
+
+ +
+
+ +

◆ parameterized_test_registry()

+ +
+
+ + + + + + + +
internal::ParameterizedTestSuiteRegistry& testing::UnitTest::parameterized_test_registry ()
+
+ +
+
+ +

◆ Passed()

+ +
+
+ + + + + + + +
bool testing::UnitTest::Passed () const
+
+ +
+
+ +

◆ random_seed()

+ +
+
+ + + + + + + +
int testing::UnitTest::random_seed () const
+
+ +
+
+ +

◆ reportable_disabled_test_count()

+ +
+
+ + + + + + + +
int testing::UnitTest::reportable_disabled_test_count () const
+
+ +
+
+ +

◆ reportable_test_count()

+ +
+
+ + + + + + + +
int testing::UnitTest::reportable_test_count () const
+
+ +
+
+ +

◆ Run()

+ +
+
+ + + + + + + +
int testing::UnitTest::Run ()
+
+ +
+
+ +

◆ skipped_test_count()

+ +
+
+ + + + + + + +
int testing::UnitTest::skipped_test_count () const
+
+ +
+
+ +

◆ start_timestamp()

+ +
+
+ + + + + + + +
TimeInMillis testing::UnitTest::start_timestamp () const
+
+ +
+
+ +

◆ successful_test_case_count()

+ +
+
+ + + + + + + +
int testing::UnitTest::successful_test_case_count () const
+
+ +
+
+ +

◆ successful_test_count()

+ +
+
+ + + + + + + +
int testing::UnitTest::successful_test_count () const
+
+ +
+
+ +

◆ successful_test_suite_count()

+ +
+
+ + + + + + + +
int testing::UnitTest::successful_test_suite_count () const
+
+ +
+
+ +

◆ test_case_to_run_count()

+ +
+
+ + + + + + + +
int testing::UnitTest::test_case_to_run_count () const
+
+ +
+
+ +

◆ test_suite_to_run_count()

+ +
+
+ + + + + + + +
int testing::UnitTest::test_suite_to_run_count () const
+
+ +
+
+ +

◆ test_to_run_count()

+ +
+
+ + + + + + + +
int testing::UnitTest::test_to_run_count () const
+
+ +
+
+ +

◆ total_test_case_count()

+ +
+
+ + + + + + + +
int testing::UnitTest::total_test_case_count () const
+
+ +
+
+ +

◆ total_test_count()

+ +
+
+ + + + + + + +
int testing::UnitTest::total_test_count () const
+
+ +
+
+ +

◆ total_test_suite_count()

+ +
+
+ + + + + + + +
int testing::UnitTest::total_test_suite_count () const
+
+ +
+
+

Friends And Related Function Documentation

+ +

◆ AddGlobalTestEnvironment

+ +
+
+ + + + + +
+ + + + + + + + +
Environment* AddGlobalTestEnvironment (Environmentenv)
+
+friend
+
+ +

Definition at line 16067 of file gtest.h.

+ +
+
+ +

◆ internal::AssertHelper

+ +
+
+ + + + + +
+ + + + +
friend class internal::AssertHelper
+
+friend
+
+ +

Definition at line 16011 of file gtest.h.

+ +
+
+ +

◆ internal::GetUnitTestImpl

+ +
+
+ + + + + +
+ + + + + + + +
internal::UnitTestImpl* internal::GetUnitTestImpl ()
+
+friend
+
+ +
+
+ +

◆ internal::ReportFailureInUnknownLocation

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void internal::ReportFailureInUnknownLocation (TestPartResult::Type result_type,
const std::string & message 
)
+
+friend
+
+ +
+
+ +

◆ internal::StreamingListenerTest

+ +
+
+ + + + + +
+ + + + +
friend class internal::StreamingListenerTest
+
+friend
+
+ +

Definition at line 16012 of file gtest.h.

+ +
+
+ +

◆ internal::UnitTestRecordPropertyTestHelper

+ +
+
+ + + + + +
+ + + + +
friend class internal::UnitTestRecordPropertyTestHelper
+
+friend
+
+ +

Definition at line 16013 of file gtest.h.

+ +
+
+ +

◆ ScopedTrace

+ +
+
+ + + + + +
+ + + + +
friend class ScopedTrace
+
+friend
+
+ +

Definition at line 16009 of file gtest.h.

+ +
+
+ +

◆ Test

+ +
+
+ + + + + +
+ + + + +
friend class Test
+
+friend
+
+ +

Definition at line 16010 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1_unit_test.js b/doc/html/classtesting_1_1_unit_test.js new file mode 100644 index 0000000..1137cb7 --- /dev/null +++ b/doc/html/classtesting_1_1_unit_test.js @@ -0,0 +1,42 @@ +var classtesting_1_1_unit_test = +[ + [ "ad_hoc_test_result", "classtesting_1_1_unit_test.html#afb26f53c070675638033436f35bad889", null ], + [ "current_test_case", "classtesting_1_1_unit_test.html#a158da6213cf0b2c6100e9cb1f8151e63", null ], + [ "current_test_info", "classtesting_1_1_unit_test.html#a02b6ab72bb9d93805bd0efbb099b4ccc", null ], + [ "current_test_suite", "classtesting_1_1_unit_test.html#ac1c9ccf54060771c27fb94c3955459d3", null ], + [ "disabled_test_count", "classtesting_1_1_unit_test.html#ad69ccf3d4a9bc7333badeafbde3bc76b", null ], + [ "elapsed_time", "classtesting_1_1_unit_test.html#a410e14e52f505dabe2054e5018e9ca33", null ], + [ "Failed", "classtesting_1_1_unit_test.html#a706f29e765916616b11a271a65948727", null ], + [ "failed_test_case_count", "classtesting_1_1_unit_test.html#abc0fa297a4103f7cdd9627ae27d9d0ef", null ], + [ "failed_test_count", "classtesting_1_1_unit_test.html#ace1c860482b4ae5c341df5a9665e5c08", null ], + [ "failed_test_suite_count", "classtesting_1_1_unit_test.html#a118a74c8cc3845653893ed17245f44ac", null ], + [ "GetTestCase", "classtesting_1_1_unit_test.html#adf55eb1cc81a43d40ddef75fadded1de", null ], + [ "GetTestSuite", "classtesting_1_1_unit_test.html#a906e19e244ccc129bcc62fe2f3632e1c", null ], + [ "listeners", "classtesting_1_1_unit_test.html#a1b7387b0b3daa2433ed6b685027bf285", null ], + [ "original_working_dir", "classtesting_1_1_unit_test.html#af35839566385e14f6b31232489112621", null ], + [ "parameterized_test_registry", "classtesting_1_1_unit_test.html#a3f72b753a9eda20bf7ab2aef0bdcc40f", null ], + [ "Passed", "classtesting_1_1_unit_test.html#a7c9b327bc14cb8a282c789dc6513a55b", null ], + [ "random_seed", "classtesting_1_1_unit_test.html#adddc090a06f2d3a0e68f3762ee262688", null ], + [ "reportable_disabled_test_count", "classtesting_1_1_unit_test.html#a2a2835db178d5c8569507db9f0a3d54f", null ], + [ "reportable_test_count", "classtesting_1_1_unit_test.html#a449d0e0350ef146040cd37679c005248", null ], + [ "Run", "classtesting_1_1_unit_test.html#a2febc800536b44500565f4c423f359d3", null ], + [ "skipped_test_count", "classtesting_1_1_unit_test.html#a0082c74809be04baf7e43842ddac4ae5", null ], + [ "start_timestamp", "classtesting_1_1_unit_test.html#ab6dc32e9f385f164df02899b2b440f04", null ], + [ "successful_test_case_count", "classtesting_1_1_unit_test.html#acaa2ab71f53c25ffe0242a91c14e173f", null ], + [ "successful_test_count", "classtesting_1_1_unit_test.html#a49ee8056e357ad497e67399447dd5a40", null ], + [ "successful_test_suite_count", "classtesting_1_1_unit_test.html#aefa4c6654fed9a70c6c5ca61abae2234", null ], + [ "test_case_to_run_count", "classtesting_1_1_unit_test.html#a965248fbe72f9fede5de921b6666943b", null ], + [ "test_suite_to_run_count", "classtesting_1_1_unit_test.html#ade4726c8283513bd2b3391c600503790", null ], + [ "test_to_run_count", "classtesting_1_1_unit_test.html#a461f46b2976f135d2a65e8d3def746e9", null ], + [ "total_test_case_count", "classtesting_1_1_unit_test.html#a93fc8f4eebc3212d06468ad216830ced", null ], + [ "total_test_count", "classtesting_1_1_unit_test.html#af6e02fcf76fd7247687f4e8af6e7ef41", null ], + [ "total_test_suite_count", "classtesting_1_1_unit_test.html#af8ed6d43a95405a860fdd898bf0c1a87", null ], + [ "AddGlobalTestEnvironment", "classtesting_1_1_unit_test.html#a5ec26e4c31220ff8e769cc09689a4d6d", null ], + [ "internal::AssertHelper", "classtesting_1_1_unit_test.html#a183151aa061362c87572e743fe233db1", null ], + [ "internal::GetUnitTestImpl", "classtesting_1_1_unit_test.html#a56e56be7066957d612e53b5c60f6ac08", null ], + [ "internal::ReportFailureInUnknownLocation", "classtesting_1_1_unit_test.html#a73f5a158c13793b90c80d854c9a75120", null ], + [ "internal::StreamingListenerTest", "classtesting_1_1_unit_test.html#adc037d188dab349a94868991955c9cd4", null ], + [ "internal::UnitTestRecordPropertyTestHelper", "classtesting_1_1_unit_test.html#ae970f89a9f477a349fe5778be85ef42e", null ], + [ "ScopedTrace", "classtesting_1_1_unit_test.html#ada54bdd5bdc24f39b9ca16807326654a", null ], + [ "Test", "classtesting_1_1_unit_test.html#a5b78b1c2e1fa07ffed92da365593eaa4", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1_with_param_interface-members.html b/doc/html/classtesting_1_1_with_param_interface-members.html new file mode 100644 index 0000000..7cd93aa --- /dev/null +++ b/doc/html/classtesting_1_1_with_param_interface-members.html @@ -0,0 +1,111 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::WithParamInterface< T > Member List
+
+ +
+ + + + diff --git a/doc/html/classtesting_1_1_with_param_interface.html b/doc/html/classtesting_1_1_with_param_interface.html new file mode 100644 index 0000000..a9bb9a5 --- /dev/null +++ b/doc/html/classtesting_1_1_with_param_interface.html @@ -0,0 +1,261 @@ + + + + + + + +uTL: testing::WithParamInterface< T > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::WithParamInterface< T > Class Template Reference
+
+
+ +

#include <gtest.h>

+
+Inheritance diagram for testing::WithParamInterface< T >:
+
+
+ + +testing::TestWithParam< T > + +
+ + + + +

+Public Types

typedef T ParamType
 
+ + + +

+Public Member Functions

virtual ~WithParamInterface ()
 
+ + + +

+Static Public Member Functions

static const ParamTypeGetParam ()
 
+ + + + +

+Friends

template<class TestClass >
class internal::ParameterizedTestFactory
 
+

Detailed Description

+

template<typename T>
+class testing::WithParamInterface< T >

+ + +

Definition at line 16470 of file gtest.h.

+

Member Typedef Documentation

+ +

◆ ParamType

+ +
+
+
+template<typename T >
+ + + + +
typedef T testing::WithParamInterface< T >::ParamType
+
+ +

Definition at line 16472 of file gtest.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ ~WithParamInterface()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + +
virtual testing::WithParamInterface< T >::~WithParamInterface ()
+
+inlinevirtual
+
+ +

Definition at line 16473 of file gtest.h.

+ +
+
+

Member Function Documentation

+ +

◆ GetParam()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + +
static const ParamType& testing::WithParamInterface< T >::GetParam ()
+
+inlinestatic
+
+ +

Definition at line 16477 of file gtest.h.

+ +
+
+

Friends And Related Function Documentation

+ +

◆ internal::ParameterizedTestFactory

+ +
+
+
+template<typename T >
+
+template<class TestClass >
+ + + + + +
+ + + + +
friend class internal::ParameterizedTestFactory
+
+friend
+
+ +

Definition at line 16495 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1_with_param_interface.js b/doc/html/classtesting_1_1_with_param_interface.js new file mode 100644 index 0000000..b0f4ac0 --- /dev/null +++ b/doc/html/classtesting_1_1_with_param_interface.js @@ -0,0 +1,6 @@ +var classtesting_1_1_with_param_interface = +[ + [ "ParamType", "classtesting_1_1_with_param_interface.html#a343febaaebf1f025bda484f841d4fec1", null ], + [ "~WithParamInterface", "classtesting_1_1_with_param_interface.html#a4e170bd42fa5e8ce48b80cee6bb52e26", null ], + [ "internal::ParameterizedTestFactory", "classtesting_1_1_with_param_interface.html#a7543eb7df89f00fff517dba24bc11dd5", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1_with_param_interface.png b/doc/html/classtesting_1_1_with_param_interface.png new file mode 100644 index 0000000000000000000000000000000000000000..100eff78e5962657f82fbe219b32c1ad90b5b07d GIT binary patch literal 799 zcmeAS@N?(olHy`uVBq!ia0vp^hk-bNgBeIp4mKpWc?Ln;{G&V4;;v4TLWJzr?$fA@Pj zMVSJ3@z|K9|#zIk4DNlHpjk5kpUST1Mc#_tGWx?Td@JA1`!a z$XR`6{l4!%^@2s2R&6`ZaA9KNiipFH4||$P^0_%**D++-$1!u)!-`4`{q=t~++baN zX2Ld3u|lmy&vaM6ZTc#zZ#_YU(ulA~bHji`JOG~!d)t1|)EnrNK`sQJ{rq{bO zaw9sR!>ejm)1kh$U1%BK8On01)Cv!fSH;aei zF(^DT&nmgIY;I8z4vbe=0yBc znJKn*anb2-lS+K^ZyzOHm)TPJI`GY}h2`$I>sCy^ z^&;Nb!n1eX2WNHpRWI&!ER|3Av9M;v>mVPq$sM_V+pqC9_pS>1^@-2>?yLVibJuxK z+Om4R*B+JFmBKu}b{>}^=6*c__oNbOUp7yv^(PfPAAe2zaPN2eYyO|h WHC=jdommA;%?zHdelF{r5}E)wu5wra literal 0 HcmV?d00001 diff --git a/doc/html/classtesting_1_1internal2_1_1_type_without_formatter-members.html b/doc/html/classtesting_1_1internal2_1_1_type_without_formatter-members.html new file mode 100644 index 0000000..06a2777 --- /dev/null +++ b/doc/html/classtesting_1_1internal2_1_1_type_without_formatter-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal2::TypeWithoutFormatter< T, kTypeKind > Member List
+
+
+ +

This is the complete list of members for testing::internal2::TypeWithoutFormatter< T, kTypeKind >, including all inherited members.

+ + +
PrintValue(const T &value, ::std::ostream *os)testing::internal2::TypeWithoutFormatter< T, kTypeKind >inlinestatic
+
+ + + + diff --git a/doc/html/classtesting_1_1internal2_1_1_type_without_formatter.html b/doc/html/classtesting_1_1internal2_1_1_type_without_formatter.html new file mode 100644 index 0000000..523baf0 --- /dev/null +++ b/doc/html/classtesting_1_1internal2_1_1_type_without_formatter.html @@ -0,0 +1,166 @@ + + + + + + + +uTL: testing::internal2::TypeWithoutFormatter< T, kTypeKind > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal2::TypeWithoutFormatter< T, kTypeKind > Class Template Reference
+
+
+ +

#include <gtest.h>

+ + + + +

+Static Public Member Functions

static void PrintValue (const T &value, ::std::ostream *os)
 
+

Detailed Description

+

template<typename T, TypeKind kTypeKind>
+class testing::internal2::TypeWithoutFormatter< T, kTypeKind >

+ + +

Definition at line 8180 of file gtest.h.

+

Member Function Documentation

+ +

◆ PrintValue()

+ +
+
+
+template<typename T , TypeKind kTypeKind>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void testing::internal2::TypeWithoutFormatter< T, kTypeKind >::PrintValue (const T & value,
::std::ostream * os 
)
+
+inlinestatic
+
+ +

Definition at line 8183 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal2_1_1_type_without_formatter_3_01_t_00_01k_convertible_to_integer_01_4-members.html b/doc/html/classtesting_1_1internal2_1_1_type_without_formatter_3_01_t_00_01k_convertible_to_integer_01_4-members.html new file mode 100644 index 0000000..0aab03b --- /dev/null +++ b/doc/html/classtesting_1_1internal2_1_1_type_without_formatter_3_01_t_00_01k_convertible_to_integer_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal2::TypeWithoutFormatter< T, kConvertibleToInteger > Member List
+
+
+ +

This is the complete list of members for testing::internal2::TypeWithoutFormatter< T, kConvertibleToInteger >, including all inherited members.

+ + +
PrintValue(const T &value, ::std::ostream *os)testing::internal2::TypeWithoutFormatter< T, kConvertibleToInteger >inlinestatic
+
+ + + + diff --git a/doc/html/classtesting_1_1internal2_1_1_type_without_formatter_3_01_t_00_01k_convertible_to_integer_01_4.html b/doc/html/classtesting_1_1internal2_1_1_type_without_formatter_3_01_t_00_01k_convertible_to_integer_01_4.html new file mode 100644 index 0000000..574da39 --- /dev/null +++ b/doc/html/classtesting_1_1internal2_1_1_type_without_formatter_3_01_t_00_01k_convertible_to_integer_01_4.html @@ -0,0 +1,166 @@ + + + + + + + +uTL: testing::internal2::TypeWithoutFormatter< T, kConvertibleToInteger > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal2::TypeWithoutFormatter< T, kConvertibleToInteger > Class Template Reference
+
+
+ +

#include <gtest.h>

+ + + + +

+Static Public Member Functions

static void PrintValue (const T &value, ::std::ostream *os)
 
+

Detailed Description

+

template<typename T>
+class testing::internal2::TypeWithoutFormatter< T, kConvertibleToInteger >

+ + +

Definition at line 8208 of file gtest.h.

+

Member Function Documentation

+ +

◆ PrintValue()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void testing::internal2::TypeWithoutFormatter< T, kConvertibleToInteger >::PrintValue (const T & value,
::std::ostream * os 
)
+
+inlinestatic
+
+ +

Definition at line 8217 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal2_1_1_type_without_formatter_3_01_t_00_01k_protobuf_01_4-members.html b/doc/html/classtesting_1_1internal2_1_1_type_without_formatter_3_01_t_00_01k_protobuf_01_4-members.html new file mode 100644 index 0000000..0ddb3ce --- /dev/null +++ b/doc/html/classtesting_1_1internal2_1_1_type_without_formatter_3_01_t_00_01k_protobuf_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal2::TypeWithoutFormatter< T, kProtobuf > Member List
+
+
+ +

This is the complete list of members for testing::internal2::TypeWithoutFormatter< T, kProtobuf >, including all inherited members.

+ + +
PrintValue(const T &value, ::std::ostream *os)testing::internal2::TypeWithoutFormatter< T, kProtobuf >inlinestatic
+
+ + + + diff --git a/doc/html/classtesting_1_1internal2_1_1_type_without_formatter_3_01_t_00_01k_protobuf_01_4.html b/doc/html/classtesting_1_1internal2_1_1_type_without_formatter_3_01_t_00_01k_protobuf_01_4.html new file mode 100644 index 0000000..a3e039c --- /dev/null +++ b/doc/html/classtesting_1_1internal2_1_1_type_without_formatter_3_01_t_00_01k_protobuf_01_4.html @@ -0,0 +1,166 @@ + + + + + + + +uTL: testing::internal2::TypeWithoutFormatter< T, kProtobuf > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal2::TypeWithoutFormatter< T, kProtobuf > Class Template Reference
+
+
+ +

#include <gtest.h>

+ + + + +

+Static Public Member Functions

static void PrintValue (const T &value, ::std::ostream *os)
 
+

Detailed Description

+

template<typename T>
+class testing::internal2::TypeWithoutFormatter< T, kProtobuf >

+ + +

Definition at line 8196 of file gtest.h.

+

Member Function Documentation

+ +

◆ PrintValue()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void testing::internal2::TypeWithoutFormatter< T, kProtobuf >::PrintValue (const T & value,
::std::ostream * os 
)
+
+inlinestatic
+
+ +

Definition at line 8198 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_assert_helper-members.html b/doc/html/classtesting_1_1internal_1_1_assert_helper-members.html new file mode 100644 index 0000000..b896287 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_assert_helper-members.html @@ -0,0 +1,110 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::AssertHelper Member List
+
+
+ +

This is the complete list of members for testing::internal::AssertHelper, including all inherited members.

+ + + + +
AssertHelper(TestPartResult::Type type, const char *file, int line, const char *message)testing::internal::AssertHelper
operator=(const Message &message) consttesting::internal::AssertHelper
~AssertHelper()testing::internal::AssertHelper
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_assert_helper.html b/doc/html/classtesting_1_1internal_1_1_assert_helper.html new file mode 100644 index 0000000..8fe5c06 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_assert_helper.html @@ -0,0 +1,204 @@ + + + + + + + +uTL: testing::internal::AssertHelper Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::AssertHelper Class Reference
+
+
+ +

#include <gtest.h>

+ + + + + + + + +

+Public Member Functions

 AssertHelper (TestPartResult::Type type, const char *file, int line, const char *message)
 
 ~AssertHelper ()
 
void operator= (const Message &message) const
 
+

Detailed Description

+
+

Definition at line 16388 of file gtest.h.

+

Constructor & Destructor Documentation

+ +

◆ AssertHelper()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
testing::internal::AssertHelper::AssertHelper (TestPartResult::Type type,
const char * file,
int line,
const char * message 
)
+
+ +
+
+ +

◆ ~AssertHelper()

+ +
+
+ + + + + + + +
testing::internal::AssertHelper::~AssertHelper ()
+
+ +
+
+

Member Function Documentation

+ +

◆ operator=()

+ +
+
+ + + + + + + + +
void testing::internal::AssertHelper::operator= (const Messagemessage) const
+
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_assert_helper.js b/doc/html/classtesting_1_1internal_1_1_assert_helper.js new file mode 100644 index 0000000..eb4df8f --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_assert_helper.js @@ -0,0 +1,6 @@ +var classtesting_1_1internal_1_1_assert_helper = +[ + [ "AssertHelper", "classtesting_1_1internal_1_1_assert_helper.html#ac2c9334518fd4087189b4505567a3c90", null ], + [ "~AssertHelper", "classtesting_1_1internal_1_1_assert_helper.html#a51c640785d4ed4a0155cc9aa857d8931", null ], + [ "operator=", "classtesting_1_1internal_1_1_assert_helper.html#a97bf22d786131ab7baa86b97a27aeb4d", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1internal_1_1_captured_stream-members.html b/doc/html/classtesting_1_1internal_1_1_captured_stream-members.html new file mode 100644 index 0000000..3fe20b8 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_captured_stream-members.html @@ -0,0 +1,110 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::CapturedStream Member List
+
+
+ +

This is the complete list of members for testing::internal::CapturedStream, including all inherited members.

+ + + + +
CapturedStream(int fd)testing::internal::CapturedStreaminlineexplicit
GetCapturedString()testing::internal::CapturedStreaminline
~CapturedStream()testing::internal::CapturedStreaminline
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_captured_stream.html b/doc/html/classtesting_1_1internal_1_1_captured_stream.html new file mode 100644 index 0000000..f52e608 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_captured_stream.html @@ -0,0 +1,208 @@ + + + + + + + +uTL: testing::internal::CapturedStream Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::CapturedStream Class Reference
+
+
+ + + + + + + + +

+Public Member Functions

 CapturedStream (int fd)
 
 ~CapturedStream ()
 
std::string GetCapturedString ()
 
+

Detailed Description

+
+

Definition at line 10674 of file gtest-all.cc.

+

Constructor & Destructor Documentation

+ +

◆ CapturedStream()

+ +
+
+ + + + + +
+ + + + + + + + +
testing::internal::CapturedStream::CapturedStream (int fd)
+
+inlineexplicit
+
+ +

Definition at line 10677 of file gtest-all.cc.

+ +
+
+ +

◆ ~CapturedStream()

+ +
+
+ + + + + +
+ + + + + + + +
testing::internal::CapturedStream::~CapturedStream ()
+
+inline
+
+ +

Definition at line 10725 of file gtest-all.cc.

+ +
+
+

Member Function Documentation

+ +

◆ GetCapturedString()

+ +
+
+ + + + + +
+ + + + + + + +
std::string testing::internal::CapturedStream::GetCapturedString ()
+
+inline
+
+ +

Definition at line 10729 of file gtest-all.cc.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_captured_stream.js b/doc/html/classtesting_1_1internal_1_1_captured_stream.js new file mode 100644 index 0000000..09772dd --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_captured_stream.js @@ -0,0 +1,6 @@ +var classtesting_1_1internal_1_1_captured_stream = +[ + [ "CapturedStream", "classtesting_1_1internal_1_1_captured_stream.html#a4b05e68491831448c5c575a25146e53d", null ], + [ "~CapturedStream", "classtesting_1_1internal_1_1_captured_stream.html#af215c7a9326cb5ca61e6b7ca8231dcf1", null ], + [ "GetCapturedString", "classtesting_1_1internal_1_1_captured_stream.html#a48f400f12afb642387f91a5c20f7a528", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator10-members.html b/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator10-members.html new file mode 100644 index 0000000..bd745f9 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator10-members.html @@ -0,0 +1,113 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::CartesianProductGenerator10< T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 > Member List
+
+
+ +

This is the complete list of members for testing::internal::CartesianProductGenerator10< T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >, including all inherited members.

+ + + + + + + +
Begin() const overridetesting::internal::CartesianProductGenerator10< T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >inlinevirtual
CartesianProductGenerator10(const ParamGenerator< T1 > &g1, const ParamGenerator< T2 > &g2, const ParamGenerator< T3 > &g3, const ParamGenerator< T4 > &g4, const ParamGenerator< T5 > &g5, const ParamGenerator< T6 > &g6, const ParamGenerator< T7 > &g7, const ParamGenerator< T8 > &g8, const ParamGenerator< T9 > &g9, const ParamGenerator< T10 > &g10)testing::internal::CartesianProductGenerator10< T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >inline
End() const overridetesting::internal::CartesianProductGenerator10< T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >inlinevirtual
ParamType typedeftesting::internal::CartesianProductGenerator10< T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >
~CartesianProductGenerator10() overridetesting::internal::CartesianProductGenerator10< T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >inline
~ParamGeneratorInterface()testing::internal::ParamGeneratorInterface< ::std::tuple< T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 > >inlinevirtual
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator10.html b/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator10.html new file mode 100644 index 0000000..08d12dc --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator10.html @@ -0,0 +1,353 @@ + + + + + + + +uTL: testing::internal::CartesianProductGenerator10< T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::CartesianProductGenerator10< T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 > Class Template Reference
+
+
+ +

#include <gtest.h>

+
+Inheritance diagram for testing::internal::CartesianProductGenerator10< T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >:
+
+
+ + +testing::internal::ParamGeneratorInterface< ::std::tuple< T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 > > + +
+ + + + + + + +

+Public Types

typedef ::std::tuple< T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 > ParamType
 
- Public Types inherited from testing::internal::ParamGeneratorInterface< ::std::tuple< T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 > >
typedef ::std::tuple< T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 > ParamType
 
+ + + + + + + + + + + + +

+Public Member Functions

 CartesianProductGenerator10 (const ParamGenerator< T1 > &g1, const ParamGenerator< T2 > &g2, const ParamGenerator< T3 > &g3, const ParamGenerator< T4 > &g4, const ParamGenerator< T5 > &g5, const ParamGenerator< T6 > &g6, const ParamGenerator< T7 > &g7, const ParamGenerator< T8 > &g8, const ParamGenerator< T9 > &g9, const ParamGenerator< T10 > &g10)
 
 ~CartesianProductGenerator10 () override
 
ParamIteratorInterface< ParamType > * Begin () const override
 
ParamIteratorInterface< ParamType > * End () const override
 
- Public Member Functions inherited from testing::internal::ParamGeneratorInterface< ::std::tuple< T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 > >
virtual ~ParamGeneratorInterface ()
 
+

Detailed Description

+

template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10>
+class testing::internal::CartesianProductGenerator10< T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >

+ + +

Definition at line 12780 of file gtest.h.

+

Member Typedef Documentation

+ +

◆ ParamType

+ +
+
+
+template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 >
+ + + + +
typedef ::std::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> testing::internal::CartesianProductGenerator10< T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::ParamType
+
+ +

Definition at line 12784 of file gtest.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ CartesianProductGenerator10()

+ +
+
+
+template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
testing::internal::CartesianProductGenerator10< T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::CartesianProductGenerator10 (const ParamGenerator< T1 > & g1,
const ParamGenerator< T2 > & g2,
const ParamGenerator< T3 > & g3,
const ParamGenerator< T4 > & g4,
const ParamGenerator< T5 > & g5,
const ParamGenerator< T6 > & g6,
const ParamGenerator< T7 > & g7,
const ParamGenerator< T8 > & g8,
const ParamGenerator< T9 > & g9,
const ParamGenerator< T10 > & g10 
)
+
+inline
+
+ +

Definition at line 12786 of file gtest.h.

+ +
+
+ +

◆ ~CartesianProductGenerator10()

+ +
+
+
+template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 >
+ + + + + +
+ + + + + + + +
testing::internal::CartesianProductGenerator10< T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::~CartesianProductGenerator10 ()
+
+inlineoverride
+
+ +

Definition at line 12794 of file gtest.h.

+ +
+
+

Member Function Documentation

+ +

◆ Begin()

+ +
+
+
+template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 >
+ + + + + +
+ + + + + + + +
ParamIteratorInterface<ParamType>* testing::internal::CartesianProductGenerator10< T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::Begin () const
+
+inlineoverridevirtual
+
+
+ +

◆ End()

+ +
+
+
+template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 >
+ + + + + +
+ + + + + + + +
ParamIteratorInterface<ParamType>* testing::internal::CartesianProductGenerator10< T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >::End () const
+
+inlineoverridevirtual
+
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator10.js b/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator10.js new file mode 100644 index 0000000..6cc892a --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator10.js @@ -0,0 +1,8 @@ +var classtesting_1_1internal_1_1_cartesian_product_generator10 = +[ + [ "ParamType", "classtesting_1_1internal_1_1_cartesian_product_generator10.html#ac9f50e9b6fff8dad968c5b98989752f9", null ], + [ "CartesianProductGenerator10", "classtesting_1_1internal_1_1_cartesian_product_generator10.html#a53d945670e910c0baaf14f3d25f1bbb6", null ], + [ "~CartesianProductGenerator10", "classtesting_1_1internal_1_1_cartesian_product_generator10.html#a2bee6d271df046f7660c85e2b2d305a5", null ], + [ "Begin", "classtesting_1_1internal_1_1_cartesian_product_generator10.html#a23b2a79fc2fd0224fd31c519520cb945", null ], + [ "End", "classtesting_1_1internal_1_1_cartesian_product_generator10.html#a373c054dc7b60a9ab6236c327cac4e23", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator10.png b/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator10.png new file mode 100644 index 0000000000000000000000000000000000000000..d5984eea12e4b9173f75138560e47e280cf80fcd GIT binary patch literal 1727 zcmcJOdsNbA7{`BHG-Y!-FR5v1g(hohWrIXTG*duCQ^?qkw{o#`WO7gU-EospzAr)kp>h^As`pyt|CB5-?c>lc@)FIvrR}&1jSJ?-qd7`_tauu9vH} z1D^&-A(T)6gx-a!m%0}K^eIGNZ|b*@+42(!YV3#lJbrzGZhKo#-bOah>7ffPH(E4n zeI9;m<6<#$R1z~P*)=R-rXhGphe9qv;TmF3Bq3402qZBVnN8pzQJ1PrPzB(p`4jV6 zLi40n)+DXi$4AyZNk78U5ft2NzuBu#dm6IiwuLK;o{=z*(oWA+s-KERgwstU{%-XG zqgKOL4cb$V{E?LdC5A|1=tjNI4Q~xh<>HOCxrii+Z1{QN!S#*?shD+h*K7Nr?`&z2 z*vDT#+gc!gxwuI2VO%L6s~OQQt(HFcfCApXs?8#Y%r&VOi&Vu({fc9bkchYF&?ERC(~&7SBjC;tg_+tsdRt-s1}x zsER>jaQmZ|C(6u@!_;|IM|&$^QpTgC=PM6N&Xwe<0u;2FtPS^PtfWrz%bhVP%*teC zI{Mi?ZddG6EE(kl~d+qg6tH|gJPz$0(-xu-<1+D(eJDP!C z2eKE@9PH+8Q0?W2dp;{If_#gq%ay{sb&~4E*B4^$i*KK-T?V6^tA?KbR2 ztAA#gbOS>?cPec5x~)ouh|ltf^DOI$k^!zqp%60Nymt8Rm3bNEfS%t)h;8EzXWt-l zdy#hzT|2j%jXJZ`f5yW)f$B+jX)j3QG)TI;Q%tdfnY}nw({Gv~vPd)|V0x+CUpV!iM#ch6f4w> zVPoZB$f;j6=ZWrizepCgW7ftDSZr)o9TPoJb>4=vY%S)+`a#8(nwP1Nzuothb~@8B zST>sM_uMvzAC^(ym#wsJI-fBU-`4$E`=JN4`*XCKLF4EetmPE(Xfy9ex%33iCLxA& zOtT->=+xpQ$4#Hk{?st(&1uazx+8q|;hfn0N+Ivo@6h1_Eim-ZmE-9Cs0YQ~W#)jj z?7DdJvAz8I&Y6fx?T1vEAi(;oBKouiZ5CTM5ddA{HP}qJ?+w1qyR1x4YdzU(XE|l# z8eC1e5_?#9v%*d$DW7>m{dMujQk&}ozF-Lw)m`mUz5SzLpGIgBXXEvd3DH04-y z<5-KfR(g1kX-snjd+P__VwY0k>^5%46Ww4e+drLl4ZR(@YRi&(MgE4*Puv3fB4~bd um=%~|#CMkXx4Mh*)!agE2q}bwGF~#qiNAsHJ9EYXFo*{!zD+(+S$_iOUk053 literal 0 HcmV?d00001 diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator2-members.html b/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator2-members.html new file mode 100644 index 0000000..b23f60c --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator2-members.html @@ -0,0 +1,113 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::CartesianProductGenerator2< T1, T2 > Member List
+
+ +
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator2.html b/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator2.html new file mode 100644 index 0000000..97399c7 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator2.html @@ -0,0 +1,305 @@ + + + + + + + +uTL: testing::internal::CartesianProductGenerator2< T1, T2 > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::CartesianProductGenerator2< T1, T2 > Class Template Reference
+
+
+ +

#include <gtest.h>

+
+Inheritance diagram for testing::internal::CartesianProductGenerator2< T1, T2 >:
+
+
+ + +testing::internal::ParamGeneratorInterface< ::std::tuple< T1, T2 > > + +
+ + + + + + + +

+Public Types

typedef ::std::tuple< T1, T2 > ParamType
 
- Public Types inherited from testing::internal::ParamGeneratorInterface< ::std::tuple< T1, T2 > >
typedef ::std::tuple< T1, T2 > ParamType
 
+ + + + + + + + + + + + +

+Public Member Functions

 CartesianProductGenerator2 (const ParamGenerator< T1 > &g1, const ParamGenerator< T2 > &g2)
 
 ~CartesianProductGenerator2 () override
 
ParamIteratorInterface< ParamType > * Begin () const override
 
ParamIteratorInterface< ParamType > * End () const override
 
- Public Member Functions inherited from testing::internal::ParamGeneratorInterface< ::std::tuple< T1, T2 > >
virtual ~ParamGeneratorInterface ()
 
+

Detailed Description

+

template<typename T1, typename T2>
+class testing::internal::CartesianProductGenerator2< T1, T2 >

+ + +

Definition at line 11365 of file gtest.h.

+

Member Typedef Documentation

+ +

◆ ParamType

+ +
+
+
+template<typename T1 , typename T2 >
+ + + + +
typedef ::std::tuple<T1, T2> testing::internal::CartesianProductGenerator2< T1, T2 >::ParamType
+
+ +

Definition at line 11368 of file gtest.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ CartesianProductGenerator2()

+ +
+
+
+template<typename T1 , typename T2 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
testing::internal::CartesianProductGenerator2< T1, T2 >::CartesianProductGenerator2 (const ParamGenerator< T1 > & g1,
const ParamGenerator< T2 > & g2 
)
+
+inline
+
+ +

Definition at line 11370 of file gtest.h.

+ +
+
+ +

◆ ~CartesianProductGenerator2()

+ +
+
+
+template<typename T1 , typename T2 >
+ + + + + +
+ + + + + + + +
testing::internal::CartesianProductGenerator2< T1, T2 >::~CartesianProductGenerator2 ()
+
+inlineoverride
+
+ +

Definition at line 11373 of file gtest.h.

+ +
+
+

Member Function Documentation

+ +

◆ Begin()

+ +
+
+
+template<typename T1 , typename T2 >
+ + + + + +
+ + + + + + + +
ParamIteratorInterface<ParamType>* testing::internal::CartesianProductGenerator2< T1, T2 >::Begin () const
+
+inlineoverridevirtual
+
+
+ +

◆ End()

+ +
+
+
+template<typename T1 , typename T2 >
+ + + + + +
+ + + + + + + +
ParamIteratorInterface<ParamType>* testing::internal::CartesianProductGenerator2< T1, T2 >::End () const
+
+inlineoverridevirtual
+
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator2.js b/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator2.js new file mode 100644 index 0000000..a924312 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator2.js @@ -0,0 +1,8 @@ +var classtesting_1_1internal_1_1_cartesian_product_generator2 = +[ + [ "ParamType", "classtesting_1_1internal_1_1_cartesian_product_generator2.html#a4dd5db877d076b52d44fb631e34cd47f", null ], + [ "CartesianProductGenerator2", "classtesting_1_1internal_1_1_cartesian_product_generator2.html#a971ef5a45783db277f5fae84eaef41a3", null ], + [ "~CartesianProductGenerator2", "classtesting_1_1internal_1_1_cartesian_product_generator2.html#a4359f80cc1888d4a18d2e0a6865b920d", null ], + [ "Begin", "classtesting_1_1internal_1_1_cartesian_product_generator2.html#aa68e7d9334ba6318bc17ccb0669767fe", null ], + [ "End", "classtesting_1_1internal_1_1_cartesian_product_generator2.html#afb1a5fe2810721040689e2e8c85b8a42", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator2.png b/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator2.png new file mode 100644 index 0000000000000000000000000000000000000000..a51f88301cdfd05cffa9262e5a2a087bb4d49f97 GIT binary patch literal 1316 zcmeAS@N?(olHy`uVBq!ia0y~yU~B}k12~w0~2mRBVbXKNDPE*+E5#%+=X$p&qW{{`DB&De^MkuF< z=Qi7Wzt{ae{XxZZ?yKXU{wjMepCx7T%Z4xQ+?|9>{^+2~G1cdf+QypB&;I^()j1B2 zODokl&&-%DRnmUo?BDw74!pHDUhZ1d?P10wcH`R*pXOVs&ef&n#c})9W=(96j5@w% zWtv&h?*#E}{*tx74z5Xy(sqA-@yz;(Yors*4oXbfvR!U&HIwSe>1P{XT`+mSvO3av z^Iom2TNWj6tMtx^?fHB7;*^Eo6(o|^e9h+ynfNPA<#r9bZ|`n}gjE}(m1>#(CjB;k z`^If{(b;9Qgz|YsPj34vvTL@P&qwncoJU-eetO)R9sA*+k?fJlEVCxcHMcpOy(`Uf z#x^BrtNpcao9=2kP0YzoTCx0n!YRf^y%}bcu7|G|n#me3@WE$}(2M-#6CLL>KmNGq zT;sEb(v?@1KHgDj+qg|)=QaQ010S#CPCT7p$Id34&SDid-SR=0Td>0ORTr#T=4939 z)b8Sny~pfl`DWV9d->bnH=dSC;oLJR$NyB7vswOQ(XHn)S6_HsU%oH9el35Q&)*%l zHZSw>{5j9)hYjDdsyo-7zPS`v7H@XTy0Z3ua*@yq#S4ua%NM9vu3}Mn86w`M@^bpC zbEn?Fza-PR%)#r@{7b!4_iyx^Y*{eVd(xNauldvM;#*ZTRXyj23Qbtzp~~pl6#`>i zX+E$?$2%)>nyMRveN;SyW`lw%V}nC&ttwN41&C$Kpu*H(0Axix{m1O0#mPWZ{OY-| z#?mPvnoC(anI9gdpK7Dvfm)9{)|acds_ z4(8gwefjO?&6*W=C)YLX-RsZrAY?L2Ts6y#vdnw4OFSNA7&s`acR4R<$h~?zm!+6R z=fT^LGugJTj#_#5?40ZCJMZ=7```J#jXE zq|AP_H0<2&Q~H5(OLBF2+PvA8&so--ym#>3ZuJe*4|*~kKFV9Lu-fv%+-WOiEUa(W zGQK@#+5Wj+Fr#~7_Q8`ke#*RvsI_6AQ@ud*Kym1a+X?w^F4`7&C0L*ETWh)2={d`? z_l@RR7i=2CZ-rg%w}1PI>qgl3#1+@h>lyD0oBy?W=gwYh>wKSuwJ+q(-rD&ub61aJ z_QQ|2UH7<_MYR4Ze&Wkuaao12A-MJ!*8%@a>S2F5nR1UY{SmB9xhQ|K(Y%OX;p<5) vmI+KdR;w@wtVG7_jX_?XQ-i#E{xMI8^H)pf;Jg7W(il8l{an^LB{Ts5 + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::CartesianProductGenerator3< T1, T2, T3 > Member List
+
+ +
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator3.html b/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator3.html new file mode 100644 index 0000000..6ecdf05 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator3.html @@ -0,0 +1,311 @@ + + + + + + + +uTL: testing::internal::CartesianProductGenerator3< T1, T2, T3 > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::CartesianProductGenerator3< T1, T2, T3 > Class Template Reference
+
+
+ +

#include <gtest.h>

+
+Inheritance diagram for testing::internal::CartesianProductGenerator3< T1, T2, T3 >:
+
+
+ + +testing::internal::ParamGeneratorInterface< ::std::tuple< T1, T2, T3 > > + +
+ + + + + + + +

+Public Types

typedef ::std::tuple< T1, T2, T3 > ParamType
 
- Public Types inherited from testing::internal::ParamGeneratorInterface< ::std::tuple< T1, T2, T3 > >
typedef ::std::tuple< T1, T2, T3 > ParamType
 
+ + + + + + + + + + + + +

+Public Member Functions

 CartesianProductGenerator3 (const ParamGenerator< T1 > &g1, const ParamGenerator< T2 > &g2, const ParamGenerator< T3 > &g3)
 
 ~CartesianProductGenerator3 () override
 
ParamIteratorInterface< ParamType > * Begin () const override
 
ParamIteratorInterface< ParamType > * End () const override
 
- Public Member Functions inherited from testing::internal::ParamGeneratorInterface< ::std::tuple< T1, T2, T3 > >
virtual ~ParamGeneratorInterface ()
 
+

Detailed Description

+

template<typename T1, typename T2, typename T3>
+class testing::internal::CartesianProductGenerator3< T1, T2, T3 >

+ + +

Definition at line 11480 of file gtest.h.

+

Member Typedef Documentation

+ +

◆ ParamType

+ +
+
+
+template<typename T1 , typename T2 , typename T3 >
+ + + + +
typedef ::std::tuple<T1, T2, T3> testing::internal::CartesianProductGenerator3< T1, T2, T3 >::ParamType
+
+ +

Definition at line 11483 of file gtest.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ CartesianProductGenerator3()

+ +
+
+
+template<typename T1 , typename T2 , typename T3 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
testing::internal::CartesianProductGenerator3< T1, T2, T3 >::CartesianProductGenerator3 (const ParamGenerator< T1 > & g1,
const ParamGenerator< T2 > & g2,
const ParamGenerator< T3 > & g3 
)
+
+inline
+
+ +

Definition at line 11485 of file gtest.h.

+ +
+
+ +

◆ ~CartesianProductGenerator3()

+ +
+
+
+template<typename T1 , typename T2 , typename T3 >
+ + + + + +
+ + + + + + + +
testing::internal::CartesianProductGenerator3< T1, T2, T3 >::~CartesianProductGenerator3 ()
+
+inlineoverride
+
+ +

Definition at line 11488 of file gtest.h.

+ +
+
+

Member Function Documentation

+ +

◆ Begin()

+ +
+
+
+template<typename T1 , typename T2 , typename T3 >
+ + + + + +
+ + + + + + + +
ParamIteratorInterface<ParamType>* testing::internal::CartesianProductGenerator3< T1, T2, T3 >::Begin () const
+
+inlineoverridevirtual
+
+
+ +

◆ End()

+ +
+
+
+template<typename T1 , typename T2 , typename T3 >
+ + + + + +
+ + + + + + + +
ParamIteratorInterface<ParamType>* testing::internal::CartesianProductGenerator3< T1, T2, T3 >::End () const
+
+inlineoverridevirtual
+
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator3.js b/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator3.js new file mode 100644 index 0000000..3f431b9 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator3.js @@ -0,0 +1,8 @@ +var classtesting_1_1internal_1_1_cartesian_product_generator3 = +[ + [ "ParamType", "classtesting_1_1internal_1_1_cartesian_product_generator3.html#a8ef3e248a6d5ba1ea4ae17a8d045e98a", null ], + [ "CartesianProductGenerator3", "classtesting_1_1internal_1_1_cartesian_product_generator3.html#afdca1e94b01f654564b9cbe66fb5ca94", null ], + [ "~CartesianProductGenerator3", "classtesting_1_1internal_1_1_cartesian_product_generator3.html#a230b2ec353e917e1afeb6aae5668e19e", null ], + [ "Begin", "classtesting_1_1internal_1_1_cartesian_product_generator3.html#a2a1d5af705de6cc340291294fa38437e", null ], + [ "End", "classtesting_1_1internal_1_1_cartesian_product_generator3.html#a474d70e577e76b7f84b0d83e90a6ec89", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator3.png b/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator3.png new file mode 100644 index 0000000000000000000000000000000000000000..511eebe9f2411c49987185869934c47ef954fc71 GIT binary patch literal 1371 zcmeAS@N?(olHy`uVBq!ia0y~yV4MMD2XHV0Nny>&API>8pAgso|NjG-FW!7D?LRaD z$O7X72M(}y-jN4#IZA^3f*F8{K;Y`B5F-W#mRFuGjv*C{Z|A-)`=Z90kMs zlO?6SV{+8yZp*S$opWTGBZrw#{mpH;-nqB89Tl3bvQ$NLl2DHdYe>_?B@JE%lSBeI z-6k=uYSNsPQ@v;Vvd`Y%RXlrN9sl%K*>if-t1IU%`P0tEK7Yv*Jt^C{{`^tf}O_2)Nw6qyZ5#vcH(~nL+?qK8IKj&$j$c*_BDGn z{bq0F-&qRP2FtSFZdPA*^Zw)J*!Px8<`>JHd3UUOrfjhBKDSNz4L4aH2VA-twdinj zW%@J~_1T7|e3#w)&z_dsxOLTut@~c*Rjs=jcJ}k(9FO$5EXi|z{`8%y9dx@Z<#q*A zxJLeg9^;=f`GK>a8_p=>zr`bwGs!<-`}JqPHuM2i)TOmo-{h5i|64&oxbvvm%bc=< zlT-Ol=r=`rEK!tVUnbUIeqhGx^G~X0vwW+wKjk$sr`YhyW-Cb}#>*^^l`Csyry6g5 zAZ?&5KAq*6`PAgwi!+Uv*`N6?`M586a)qzo_v%|sA4PLt{548uGd8t0ciBA8aBjD@ z!DQ)`d&AxvrA3tbevH*lwP!Tm;rZ;|bnlyQWsO&?JZtp#?$2+sn;D*c>#IzCHS^}z zptAhGYj^a2T>9qY{*!H4>s^n1TPa^&e{JeY@B7ZXET12|BH3TcYxaK4U441Jiy!Nb znRuA9FMIejYvWrpuV~No)u1RTpQrM&{MFp4{=fF^ugp%cDe?R@`OC3W_Qz69livmV zPpVt_Z}QUh(~Ug6JTL8E#G>rUI5j~dQxyZyLw~vF-BXTBCO+@m6N?rysL#c>C_JW!jVd?=5CBE(kWy zwSHsy_VNq6kj?T2hRkEc5?QA+W_-s{v#C` z%JY^#IO-|e5NRuZ;N~^swD^L?&AszxO|PB2W@=ORznZu&pW|}!?TgLtoqeF5VJq?a z3UbkF{@IaAvexo945BYV+y;pCyfVB*zrSYo{)*mH#^T zuHp2AzGQoii0Mn;toxyN&yYL8uI~7rqW!z-{(M}mmk@n--aEC5Sw8=x4t?W)Zg%VC zn;mu!&#g;0* + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::CartesianProductGenerator4< T1, T2, T3, T4 > Member List
+
+ +
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator4.html b/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator4.html new file mode 100644 index 0000000..222a825 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator4.html @@ -0,0 +1,317 @@ + + + + + + + +uTL: testing::internal::CartesianProductGenerator4< T1, T2, T3, T4 > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::CartesianProductGenerator4< T1, T2, T3, T4 > Class Template Reference
+
+
+ +

#include <gtest.h>

+
+Inheritance diagram for testing::internal::CartesianProductGenerator4< T1, T2, T3, T4 >:
+
+
+ + +testing::internal::ParamGeneratorInterface< ::std::tuple< T1, T2, T3, T4 > > + +
+ + + + + + + +

+Public Types

typedef ::std::tuple< T1, T2, T3, T4 > ParamType
 
- Public Types inherited from testing::internal::ParamGeneratorInterface< ::std::tuple< T1, T2, T3, T4 > >
typedef ::std::tuple< T1, T2, T3, T4 > ParamType
 
+ + + + + + + + + + + + +

+Public Member Functions

 CartesianProductGenerator4 (const ParamGenerator< T1 > &g1, const ParamGenerator< T2 > &g2, const ParamGenerator< T3 > &g3, const ParamGenerator< T4 > &g4)
 
 ~CartesianProductGenerator4 () override
 
ParamIteratorInterface< ParamType > * Begin () const override
 
ParamIteratorInterface< ParamType > * End () const override
 
- Public Member Functions inherited from testing::internal::ParamGeneratorInterface< ::std::tuple< T1, T2, T3, T4 > >
virtual ~ParamGeneratorInterface ()
 
+

Detailed Description

+

template<typename T1, typename T2, typename T3, typename T4>
+class testing::internal::CartesianProductGenerator4< T1, T2, T3, T4 >

+ + +

Definition at line 11612 of file gtest.h.

+

Member Typedef Documentation

+ +

◆ ParamType

+ +
+
+
+template<typename T1 , typename T2 , typename T3 , typename T4 >
+ + + + +
typedef ::std::tuple<T1, T2, T3, T4> testing::internal::CartesianProductGenerator4< T1, T2, T3, T4 >::ParamType
+
+ +

Definition at line 11615 of file gtest.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ CartesianProductGenerator4()

+ +
+
+
+template<typename T1 , typename T2 , typename T3 , typename T4 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
testing::internal::CartesianProductGenerator4< T1, T2, T3, T4 >::CartesianProductGenerator4 (const ParamGenerator< T1 > & g1,
const ParamGenerator< T2 > & g2,
const ParamGenerator< T3 > & g3,
const ParamGenerator< T4 > & g4 
)
+
+inline
+
+ +

Definition at line 11617 of file gtest.h.

+ +
+
+ +

◆ ~CartesianProductGenerator4()

+ +
+
+
+template<typename T1 , typename T2 , typename T3 , typename T4 >
+ + + + + +
+ + + + + + + +
testing::internal::CartesianProductGenerator4< T1, T2, T3, T4 >::~CartesianProductGenerator4 ()
+
+inlineoverride
+
+ +

Definition at line 11621 of file gtest.h.

+ +
+
+

Member Function Documentation

+ +

◆ Begin()

+ +
+
+
+template<typename T1 , typename T2 , typename T3 , typename T4 >
+ + + + + +
+ + + + + + + +
ParamIteratorInterface<ParamType>* testing::internal::CartesianProductGenerator4< T1, T2, T3, T4 >::Begin () const
+
+inlineoverridevirtual
+
+
+ +

◆ End()

+ +
+
+
+template<typename T1 , typename T2 , typename T3 , typename T4 >
+ + + + + +
+ + + + + + + +
ParamIteratorInterface<ParamType>* testing::internal::CartesianProductGenerator4< T1, T2, T3, T4 >::End () const
+
+inlineoverridevirtual
+
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator4.js b/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator4.js new file mode 100644 index 0000000..bac1dc1 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator4.js @@ -0,0 +1,8 @@ +var classtesting_1_1internal_1_1_cartesian_product_generator4 = +[ + [ "ParamType", "classtesting_1_1internal_1_1_cartesian_product_generator4.html#ab5e2480f7abacb80850de470c3225412", null ], + [ "CartesianProductGenerator4", "classtesting_1_1internal_1_1_cartesian_product_generator4.html#a4e4512b35f0d71f7a718ded6fe829296", null ], + [ "~CartesianProductGenerator4", "classtesting_1_1internal_1_1_cartesian_product_generator4.html#a75d7d9ee7bae873295df5d4dbec6a165", null ], + [ "Begin", "classtesting_1_1internal_1_1_cartesian_product_generator4.html#ae04bf9d551c6dc3996d18e90e88f4bfd", null ], + [ "End", "classtesting_1_1internal_1_1_cartesian_product_generator4.html#ae25a27430e476014a2f07c0be4f030f7", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator4.png b/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator4.png new file mode 100644 index 0000000000000000000000000000000000000000..eae46b4943c4ee4c33b63e266d0fd8a24be7dc58 GIT binary patch literal 1418 zcmb_cc~H^`6#ikWxf<4NHMN;ihAF#^7NmIuR$gI>3Yr><=a`AuK`LT+P+MxLi3d>- zDQczLvYWS{Vx>-bWr`P)nR%gRp~!lmOZ~a~@4lJ$-uLEx^WGoto0sN+aR%$`(E$Je zj6Usv1pp9VjXktCsUu5E=Zre-_Hgxb+}PMq!>L(COxBCLYV_SjB9Ug=FhpHyU&Uf@ zfSUBp#BaRd0HFCZ+To-Z1vJO$W{jC`aopPPy|BR*vR*Z5+{nPOq~Z#jVKclI$mX>0 zIZ2W~R7KL=Z;5t6V*z7xbUN>oG5T_@5DLp=Frm$!8D{~ahun}jCE4ffk z?Yg&SJKC^Gb|~EM_h+356XESM=lf7{cmR=$%y1hRfkf@j+&{)%4~aeYjOll@ z{qH&k5;&;cQc%QGJd!Tdg&L!B)fWpdYrhjmQafxgnhl8k`39>k8SMMFrqz1B?F zkrqGOM(bur89qB|!6f3RQ96^WL@HC5b3qSj1X{$(waX#>;qli+{%(Dq*-;Yr8vT#K zsaY@mQvK43Vbc+@FLOvXn?thuIThue54I60;$N;@XV#M3x~Fg@bcCYebd?41iAe%H z>_r*gRlw-?;UByY4*VkbXVY0DbY9NrS#qjk*}_mYvnHD$zN`3kOX!mX0?F@cJ$HhM z!0qy24p0-pW}OtbXhDiAaYb&OFWf z2+}N>nRRn`RppzL!v^#9LUC_N$I8vQOsI9K5IXJU^AI{c-^<~+ue?W`dFMbBwyfn9 zaSQcrH+pK$F0_?xVk{n5Od49DB6Ev!p(>^efw9B+^%=%T(|9y??{~Ru=945dQ?8XrzJbs+%3i=sRcKsSvCIbh#ur1I2F=hwRXG8wy0s0Sol zsVQo?0qTjMSDy0!h0vJq11m0aff?U01z^d*e>ON0XpdW0!-j)VF;S@eR!ERUyh^?^ znKWy~0tLMtcv^n^F>NIhbC+x zcn(i>DLhuXiG3l1i8P*XJ)iE4Q(!wf?)7)gikGT$gidii^|3-bgO|!UNle%3P*Pw7 z!d|d#tRV0&eRkXvkc6%Bzi(H2yKjM*WuL-}cbB#q+7gT3R#ii()!fcIo9iRbVJw@7b+Ze!y3@$ah1AIcJqn-SW6qHwb-O2w)Tj=0Nt*K?M>a zdfw1PY>!KZJW7J}$I08?KTx09uJEGRK6!_T>-}#LAt`xSm(pCU(G=urhHuJ=I%lx@ PaRO*ZjKd$Ng6RJMyPU#> literal 0 HcmV?d00001 diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator5-members.html b/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator5-members.html new file mode 100644 index 0000000..c8fe7c6 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator5-members.html @@ -0,0 +1,113 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::CartesianProductGenerator5< T1, T2, T3, T4, T5 > Member List
+
+ +
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator5.html b/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator5.html new file mode 100644 index 0000000..1423337 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator5.html @@ -0,0 +1,323 @@ + + + + + + + +uTL: testing::internal::CartesianProductGenerator5< T1, T2, T3, T4, T5 > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::CartesianProductGenerator5< T1, T2, T3, T4, T5 > Class Template Reference
+
+
+ +

#include <gtest.h>

+
+Inheritance diagram for testing::internal::CartesianProductGenerator5< T1, T2, T3, T4, T5 >:
+
+
+ + +testing::internal::ParamGeneratorInterface< ::std::tuple< T1, T2, T3, T4, T5 > > + +
+ + + + + + + +

+Public Types

typedef ::std::tuple< T1, T2, T3, T4, T5 > ParamType
 
- Public Types inherited from testing::internal::ParamGeneratorInterface< ::std::tuple< T1, T2, T3, T4, T5 > >
typedef ::std::tuple< T1, T2, T3, T4, T5 > ParamType
 
+ + + + + + + + + + + + +

+Public Member Functions

 CartesianProductGenerator5 (const ParamGenerator< T1 > &g1, const ParamGenerator< T2 > &g2, const ParamGenerator< T3 > &g3, const ParamGenerator< T4 > &g4, const ParamGenerator< T5 > &g5)
 
 ~CartesianProductGenerator5 () override
 
ParamIteratorInterface< ParamType > * Begin () const override
 
ParamIteratorInterface< ParamType > * End () const override
 
- Public Member Functions inherited from testing::internal::ParamGeneratorInterface< ::std::tuple< T1, T2, T3, T4, T5 > >
virtual ~ParamGeneratorInterface ()
 
+

Detailed Description

+

template<typename T1, typename T2, typename T3, typename T4, typename T5>
+class testing::internal::CartesianProductGenerator5< T1, T2, T3, T4, T5 >

+ + +

Definition at line 11763 of file gtest.h.

+

Member Typedef Documentation

+ +

◆ ParamType

+ +
+
+
+template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 >
+ + + + +
typedef ::std::tuple<T1, T2, T3, T4, T5> testing::internal::CartesianProductGenerator5< T1, T2, T3, T4, T5 >::ParamType
+
+ +

Definition at line 11766 of file gtest.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ CartesianProductGenerator5()

+ +
+
+
+template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
testing::internal::CartesianProductGenerator5< T1, T2, T3, T4, T5 >::CartesianProductGenerator5 (const ParamGenerator< T1 > & g1,
const ParamGenerator< T2 > & g2,
const ParamGenerator< T3 > & g3,
const ParamGenerator< T4 > & g4,
const ParamGenerator< T5 > & g5 
)
+
+inline
+
+ +

Definition at line 11768 of file gtest.h.

+ +
+
+ +

◆ ~CartesianProductGenerator5()

+ +
+
+
+template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 >
+ + + + + +
+ + + + + + + +
testing::internal::CartesianProductGenerator5< T1, T2, T3, T4, T5 >::~CartesianProductGenerator5 ()
+
+inlineoverride
+
+ +

Definition at line 11772 of file gtest.h.

+ +
+
+

Member Function Documentation

+ +

◆ Begin()

+ +
+
+
+template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 >
+ + + + + +
+ + + + + + + +
ParamIteratorInterface<ParamType>* testing::internal::CartesianProductGenerator5< T1, T2, T3, T4, T5 >::Begin () const
+
+inlineoverridevirtual
+
+
+ +

◆ End()

+ +
+
+
+template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 >
+ + + + + +
+ + + + + + + +
ParamIteratorInterface<ParamType>* testing::internal::CartesianProductGenerator5< T1, T2, T3, T4, T5 >::End () const
+
+inlineoverridevirtual
+
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator5.js b/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator5.js new file mode 100644 index 0000000..8b8c490 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator5.js @@ -0,0 +1,8 @@ +var classtesting_1_1internal_1_1_cartesian_product_generator5 = +[ + [ "ParamType", "classtesting_1_1internal_1_1_cartesian_product_generator5.html#a381a9c3c18106872251acffe59453a95", null ], + [ "CartesianProductGenerator5", "classtesting_1_1internal_1_1_cartesian_product_generator5.html#ab25fd0df9d6325f10f218c3b7553820d", null ], + [ "~CartesianProductGenerator5", "classtesting_1_1internal_1_1_cartesian_product_generator5.html#a13453a5614cda6c4d4b09011daa37800", null ], + [ "Begin", "classtesting_1_1internal_1_1_cartesian_product_generator5.html#aadf6e9a6638c07af046c489b78aed214", null ], + [ "End", "classtesting_1_1internal_1_1_cartesian_product_generator5.html#af1829ba003b0e7c3a463f87dacd4c3b2", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator5.png b/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator5.png new file mode 100644 index 0000000000000000000000000000000000000000..ce8b5c8ccad385d85a8cdea2a87320bec0ca2798 GIT binary patch literal 1456 zcmb`HeKgYx7{`Arlb5EhD<;Oh;d%*iFUBp$`?5&2Xytl4TVcsYL*7YsuGLK5a>S;004q? zcSQjJh$GWy752*N)6WKCS%aSS^mdaH7S;!6s@L9&!vB`7)e+m@VV{4!u6m?&p-)KFp1q^YdTE5r_w8&_#rMp^$OPwY zHSBo&je#}S-B)?d()9~obE8wG@`X zFE4ILFgA3imkl;evepX^q{XQ9P{e!8!|@iB>Q0NLU}$d_cJ9v!EO{xTVZ^!#6=xwM-ZK=tO)quJ7dfKz6#dNjSyr75qOu_ zw40of-jR^4#aDGa%RMb@3dP6cT49GS5GS?B)Pwn~SyZmuWISH5+WYQMCJ|D*B|K6GRrx4RT*lpht%7wKjs`CV_YGl-Vm$_34^j2~ z7tFKucRX8(pGYD!H`{99Fvn>%k0vDvY$dv7O$8YnI5VV!H;D2gz}vvs0GaYom8yRS z{U2@?Z$|PP%^Je_>K6eA|26;xWaU9YWsAdgGYSX&NZU{}+RFADNz;Z9>oOE(2)52a|8Ft6MgDWzO}m z-X?0kXPIU?uqn^y=8Dd33nCeN94k0gfit+c(W2IZR%!9bNjol+3i4dDL!^3`VT655 z)nqH&-N@PflTR7PRYJLQzp{@ahs57P_Ai-sMDVBUoJ zr-E_Qjh6JCVY{T1#@d9u%H1!BaiwIvpPbvUsfc|bHl;ld-#e}(wMG!_!F`rnLnnmj zt2Jt4D{;iBIqF41+jaOv&7?-CUK31r9y2&AKW+Q)cO1MU6qVH6lAKm=Pb~DmUmM|u;J=_{BkgSS!$P~7^=rw2nhp^ zML_wP13cVfFlHTUC;;C0b}B?viCjVHw4SOqjQm9&+(M + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::CartesianProductGenerator6< T1, T2, T3, T4, T5, T6 > Member List
+
+ +
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator6.html b/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator6.html new file mode 100644 index 0000000..5911cb0 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator6.html @@ -0,0 +1,329 @@ + + + + + + + +uTL: testing::internal::CartesianProductGenerator6< T1, T2, T3, T4, T5, T6 > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::CartesianProductGenerator6< T1, T2, T3, T4, T5, T6 > Class Template Reference
+
+
+ +

#include <gtest.h>

+
+Inheritance diagram for testing::internal::CartesianProductGenerator6< T1, T2, T3, T4, T5, T6 >:
+
+
+ + +testing::internal::ParamGeneratorInterface< ::std::tuple< T1, T2, T3, T4, T5, T6 > > + +
+ + + + + + + +

+Public Types

typedef ::std::tuple< T1, T2, T3, T4, T5, T6 > ParamType
 
- Public Types inherited from testing::internal::ParamGeneratorInterface< ::std::tuple< T1, T2, T3, T4, T5, T6 > >
typedef ::std::tuple< T1, T2, T3, T4, T5, T6 > ParamType
 
+ + + + + + + + + + + + +

+Public Member Functions

 CartesianProductGenerator6 (const ParamGenerator< T1 > &g1, const ParamGenerator< T2 > &g2, const ParamGenerator< T3 > &g3, const ParamGenerator< T4 > &g4, const ParamGenerator< T5 > &g5, const ParamGenerator< T6 > &g6)
 
 ~CartesianProductGenerator6 () override
 
ParamIteratorInterface< ParamType > * Begin () const override
 
ParamIteratorInterface< ParamType > * End () const override
 
- Public Member Functions inherited from testing::internal::ParamGeneratorInterface< ::std::tuple< T1, T2, T3, T4, T5, T6 > >
virtual ~ParamGeneratorInterface ()
 
+

Detailed Description

+

template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6>
+class testing::internal::CartesianProductGenerator6< T1, T2, T3, T4, T5, T6 >

+ + +

Definition at line 11931 of file gtest.h.

+

Member Typedef Documentation

+ +

◆ ParamType

+ +
+
+
+template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 >
+ + + + +
typedef ::std::tuple<T1, T2, T3, T4, T5, T6> testing::internal::CartesianProductGenerator6< T1, T2, T3, T4, T5, T6 >::ParamType
+
+ +

Definition at line 11934 of file gtest.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ CartesianProductGenerator6()

+ +
+
+
+template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
testing::internal::CartesianProductGenerator6< T1, T2, T3, T4, T5, T6 >::CartesianProductGenerator6 (const ParamGenerator< T1 > & g1,
const ParamGenerator< T2 > & g2,
const ParamGenerator< T3 > & g3,
const ParamGenerator< T4 > & g4,
const ParamGenerator< T5 > & g5,
const ParamGenerator< T6 > & g6 
)
+
+inline
+
+ +

Definition at line 11936 of file gtest.h.

+ +
+
+ +

◆ ~CartesianProductGenerator6()

+ +
+
+
+template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 >
+ + + + + +
+ + + + + + + +
testing::internal::CartesianProductGenerator6< T1, T2, T3, T4, T5, T6 >::~CartesianProductGenerator6 ()
+
+inlineoverride
+
+ +

Definition at line 11941 of file gtest.h.

+ +
+
+

Member Function Documentation

+ +

◆ Begin()

+ +
+
+
+template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 >
+ + + + + +
+ + + + + + + +
ParamIteratorInterface<ParamType>* testing::internal::CartesianProductGenerator6< T1, T2, T3, T4, T5, T6 >::Begin () const
+
+inlineoverridevirtual
+
+
+ +

◆ End()

+ +
+
+
+template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 >
+ + + + + +
+ + + + + + + +
ParamIteratorInterface<ParamType>* testing::internal::CartesianProductGenerator6< T1, T2, T3, T4, T5, T6 >::End () const
+
+inlineoverridevirtual
+
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator6.js b/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator6.js new file mode 100644 index 0000000..5958c41 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator6.js @@ -0,0 +1,8 @@ +var classtesting_1_1internal_1_1_cartesian_product_generator6 = +[ + [ "ParamType", "classtesting_1_1internal_1_1_cartesian_product_generator6.html#aa9d67ce7d77623ebb27053bb2f704c62", null ], + [ "CartesianProductGenerator6", "classtesting_1_1internal_1_1_cartesian_product_generator6.html#a6ff15d46e4ff7f8f24215b8244a6a094", null ], + [ "~CartesianProductGenerator6", "classtesting_1_1internal_1_1_cartesian_product_generator6.html#a6d59c2e75fd2a0a042ee102e08956f7f", null ], + [ "Begin", "classtesting_1_1internal_1_1_cartesian_product_generator6.html#ae9a8a36d7d4a5270a21ffd38744bbfce", null ], + [ "End", "classtesting_1_1internal_1_1_cartesian_product_generator6.html#a952895ad20d5a89b913f80ad2f54391b", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator6.png b/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator6.png new file mode 100644 index 0000000000000000000000000000000000000000..bbaa1b5d7ae6dc1ec266326968c0375171eea53c GIT binary patch literal 1497 zcmb`HX;71A5XWDRfTJLeBBv-=5V^&STp@r0m2jU@1`I_-6ikp34#7Z#B8{NfNPvX1 z3WPHZD2cqFMynwA89Cw$v8fM{V=n*z ziYON+UjUGTB-(qAjO2|1Lj{te=I!q9yt}(AkzW?p;&R?Rl&EjXVzFSvkH;kK9-ObI zA0RRP8|*Is(*OXwhH^UVpD4vI=3sd?3eNeAJDa;+c9geysEao$^kFu}e*8C;dUH)q zD`X6ZF~YzEJ2awvT}f{YW?g;#^)90B)s!2de8@OGgBnBVcqgMHIm+f0&Wkism13Nl zO2SoFck-<}8a-GXFbe~jaYAxppVM01 z(lj^g3a2H`lI`Pw-=%8IClAw7KJEksp6C^84fR@wx)(2xjS^Tv_t17nW_UXx!`e$) zkQ``a!YCXM^h#(HUNa}T*W&bMeG^J_4Js$cH_I0jsCw5Qp8?a8%uuhKq8GL!USGTq zZRu*G&aN$D@kqFvgd(xle+eSdb)DJi0tsc29EM2=kn+12C+aPhp{DNNG<@eo0? zey}-zCh_*&=raLk?1lC=aZl%%*v=Qt9Q6=ROo(y&r=~EYNZN>a>l~zzqSNm9>Js5c zc{LW}bqcl@Qb@o_O%5e32xu3$H=fX@!|ks}RdA^}xmhWbS$uwkpuJUnTee<40-4q= zJFW=D9Mq7T&Blf*J#b5%^d-RX8Q5fHjPd@yE?VCD`_>Sv0{Sw>DA4||BJL@LmR7RT zg%EkO4go?3;}!M?bN=Ofp(40-=O`tHC@^m?rUX}Y7v=@Pi`6Z&H=@7~;fUAP!X-Nk z`CG)8kcy5rxs26mQ>(8Br-YZ7EuY;QlMg@QKcJ?hmx)4g__U)*Cmm?)v2Spn*{xf} z_LSy8XQ4P)v&@GaM?DBza=^fnjQXXoU4P literal 0 HcmV?d00001 diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator7-members.html b/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator7-members.html new file mode 100644 index 0000000..88b193b --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator7-members.html @@ -0,0 +1,113 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::CartesianProductGenerator7< T1, T2, T3, T4, T5, T6, T7 > Member List
+
+
+ +

This is the complete list of members for testing::internal::CartesianProductGenerator7< T1, T2, T3, T4, T5, T6, T7 >, including all inherited members.

+ + + + + + + +
Begin() const overridetesting::internal::CartesianProductGenerator7< T1, T2, T3, T4, T5, T6, T7 >inlinevirtual
CartesianProductGenerator7(const ParamGenerator< T1 > &g1, const ParamGenerator< T2 > &g2, const ParamGenerator< T3 > &g3, const ParamGenerator< T4 > &g4, const ParamGenerator< T5 > &g5, const ParamGenerator< T6 > &g6, const ParamGenerator< T7 > &g7)testing::internal::CartesianProductGenerator7< T1, T2, T3, T4, T5, T6, T7 >inline
End() const overridetesting::internal::CartesianProductGenerator7< T1, T2, T3, T4, T5, T6, T7 >inlinevirtual
ParamType typedeftesting::internal::CartesianProductGenerator7< T1, T2, T3, T4, T5, T6, T7 >
~CartesianProductGenerator7() overridetesting::internal::CartesianProductGenerator7< T1, T2, T3, T4, T5, T6, T7 >inline
~ParamGeneratorInterface()testing::internal::ParamGeneratorInterface< ::std::tuple< T1, T2, T3, T4, T5, T6, T7 > >inlinevirtual
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator7.html b/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator7.html new file mode 100644 index 0000000..857bd90 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator7.html @@ -0,0 +1,335 @@ + + + + + + + +uTL: testing::internal::CartesianProductGenerator7< T1, T2, T3, T4, T5, T6, T7 > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::CartesianProductGenerator7< T1, T2, T3, T4, T5, T6, T7 > Class Template Reference
+
+
+ +

#include <gtest.h>

+
+Inheritance diagram for testing::internal::CartesianProductGenerator7< T1, T2, T3, T4, T5, T6, T7 >:
+
+
+ + +testing::internal::ParamGeneratorInterface< ::std::tuple< T1, T2, T3, T4, T5, T6, T7 > > + +
+ + + + + + + +

+Public Types

typedef ::std::tuple< T1, T2, T3, T4, T5, T6, T7 > ParamType
 
- Public Types inherited from testing::internal::ParamGeneratorInterface< ::std::tuple< T1, T2, T3, T4, T5, T6, T7 > >
typedef ::std::tuple< T1, T2, T3, T4, T5, T6, T7 > ParamType
 
+ + + + + + + + + + + + +

+Public Member Functions

 CartesianProductGenerator7 (const ParamGenerator< T1 > &g1, const ParamGenerator< T2 > &g2, const ParamGenerator< T3 > &g3, const ParamGenerator< T4 > &g4, const ParamGenerator< T5 > &g5, const ParamGenerator< T6 > &g6, const ParamGenerator< T7 > &g7)
 
 ~CartesianProductGenerator7 () override
 
ParamIteratorInterface< ParamType > * Begin () const override
 
ParamIteratorInterface< ParamType > * End () const override
 
- Public Member Functions inherited from testing::internal::ParamGeneratorInterface< ::std::tuple< T1, T2, T3, T4, T5, T6, T7 > >
virtual ~ParamGeneratorInterface ()
 
+

Detailed Description

+

template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7>
+class testing::internal::CartesianProductGenerator7< T1, T2, T3, T4, T5, T6, T7 >

+ + +

Definition at line 12116 of file gtest.h.

+

Member Typedef Documentation

+ +

◆ ParamType

+ +
+
+
+template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 >
+ + + + +
typedef ::std::tuple<T1, T2, T3, T4, T5, T6, T7> testing::internal::CartesianProductGenerator7< T1, T2, T3, T4, T5, T6, T7 >::ParamType
+
+ +

Definition at line 12120 of file gtest.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ CartesianProductGenerator7()

+ +
+
+
+template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
testing::internal::CartesianProductGenerator7< T1, T2, T3, T4, T5, T6, T7 >::CartesianProductGenerator7 (const ParamGenerator< T1 > & g1,
const ParamGenerator< T2 > & g2,
const ParamGenerator< T3 > & g3,
const ParamGenerator< T4 > & g4,
const ParamGenerator< T5 > & g5,
const ParamGenerator< T6 > & g6,
const ParamGenerator< T7 > & g7 
)
+
+inline
+
+ +

Definition at line 12122 of file gtest.h.

+ +
+
+ +

◆ ~CartesianProductGenerator7()

+ +
+
+
+template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 >
+ + + + + +
+ + + + + + + +
testing::internal::CartesianProductGenerator7< T1, T2, T3, T4, T5, T6, T7 >::~CartesianProductGenerator7 ()
+
+inlineoverride
+
+ +

Definition at line 12127 of file gtest.h.

+ +
+
+

Member Function Documentation

+ +

◆ Begin()

+ +
+
+
+template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 >
+ + + + + +
+ + + + + + + +
ParamIteratorInterface<ParamType>* testing::internal::CartesianProductGenerator7< T1, T2, T3, T4, T5, T6, T7 >::Begin () const
+
+inlineoverridevirtual
+
+
+ +

◆ End()

+ +
+
+
+template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 >
+ + + + + +
+ + + + + + + +
ParamIteratorInterface<ParamType>* testing::internal::CartesianProductGenerator7< T1, T2, T3, T4, T5, T6, T7 >::End () const
+
+inlineoverridevirtual
+
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator7.js b/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator7.js new file mode 100644 index 0000000..9d0f9ae --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator7.js @@ -0,0 +1,8 @@ +var classtesting_1_1internal_1_1_cartesian_product_generator7 = +[ + [ "ParamType", "classtesting_1_1internal_1_1_cartesian_product_generator7.html#a1481728b2ece0109ac7897074d42a1f4", null ], + [ "CartesianProductGenerator7", "classtesting_1_1internal_1_1_cartesian_product_generator7.html#aafc9c559223d3a685028ec98aa727818", null ], + [ "~CartesianProductGenerator7", "classtesting_1_1internal_1_1_cartesian_product_generator7.html#a242bc369feb56ff096b906c833403077", null ], + [ "Begin", "classtesting_1_1internal_1_1_cartesian_product_generator7.html#ac8b315cd7dbe5566d5ff98b04921b815", null ], + [ "End", "classtesting_1_1internal_1_1_cartesian_product_generator7.html#a452dadb9cedbc18f539cfc98eb6e5b88", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator7.png b/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator7.png new file mode 100644 index 0000000000000000000000000000000000000000..ed21a2468b212f4a7be45a59995d81ceee3800fa GIT binary patch literal 1512 zcmb`HdoyAzsbMFK)_P7j z%vK(a#|*Yu>W@e}MukG)>=iGa~-*dj_{&PR)=6HHID=BIz0sx={ zcX9Lr0FXeUJ>{h(leLciY>s%k`#6ckVu|GPHWTxE?n%^_?&|82&0*_GtbBr(hc_Sz zeXjABJ{ABVi-tR%_eln=Jbe9R+GM|z#IMmL#hP2E;N68x1LGpqHho#|%nrATyEE!=>bO}%yHO~>~6!oeH>Y6pBLoS%8X@!QD{OOy@sno1Q z4*r4Dny5Q&lRC)}oJC*?N+FFk2@|pe(K55C|ui+tYIVB6*=NWd(+sW&O)5k6w_KW?{OS zMI$S|WE2mw*p7Iwv!j9uT*Mxn@k=deiac_0bTOrwiG84Zq0Dy&RXuN(#hNtj+;=*| zo^}_^j6!r!+GT|Fk?ht|8gF81_XHDc^D$8{w}rz{4)BY^$it=fjM3S2`=SpDg0*w@ z^id>dnU|DrJ)f-Je|N(%NUm>=Cyc~54BtUuX?;)2-KnB;)qxwf#ch8-rh@hE5 zxAPY)Dd)+tOma*&2Qe|otIwu$u~$h|wI&Jhk|leRzA!g6d_jYb?>2*L1Z2#hRpCEZ z*d&Scim1Ljj~d`!^1}E)WXvkDkXWTl{Vz=p52{e9u-TRM+a46SUF8!_dm@&UY^qfrnZY z+ULgntg-uP5Iy*ntrz7aO3&0%8@ckp0j1?DnI2 zohmktMFvU_J(lC(uJsLvKlUpa{Of8`d z_CtG8Q8JgcN$-^eH(qIx1cwBTcg6yM0WK+szflH@K|E?;cOTpljS;yeYbcswOXs0o z%>}9KOWV+A1G{<4V!p*g2RsGD^7jA0XM^2Nh2o`ma6`_R;B*P{zwp-4gOkUvlPou~ zgqM^#S=TkrOzJqqD95?B+PzZf6%pyXj{I^+D4se(F7dAu{3zRcG-^-IVB7f%?c0^E zWkG$?+~&ZOuY=P?LRVe(BHto7a#gQJZ?@hJt0**@Jg-*P@^K%xa(X?I30AXDi@uIz zj3R}R5+V}ymMxnULJ;g|%qqsFLHmWv0Y+2VLZHRgrny-#`B&hLI} zEo%U} ujXpjD@&dkteNCZ&5aMcF>*cCYDF$*>!tmj@4>U>MG5~k-aBOryrT+tEE#8X& literal 0 HcmV?d00001 diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator8-members.html b/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator8-members.html new file mode 100644 index 0000000..3788b55 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator8-members.html @@ -0,0 +1,113 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::CartesianProductGenerator8< T1, T2, T3, T4, T5, T6, T7, T8 > Member List
+
+
+ +

This is the complete list of members for testing::internal::CartesianProductGenerator8< T1, T2, T3, T4, T5, T6, T7, T8 >, including all inherited members.

+ + + + + + + +
Begin() const overridetesting::internal::CartesianProductGenerator8< T1, T2, T3, T4, T5, T6, T7, T8 >inlinevirtual
CartesianProductGenerator8(const ParamGenerator< T1 > &g1, const ParamGenerator< T2 > &g2, const ParamGenerator< T3 > &g3, const ParamGenerator< T4 > &g4, const ParamGenerator< T5 > &g5, const ParamGenerator< T6 > &g6, const ParamGenerator< T7 > &g7, const ParamGenerator< T8 > &g8)testing::internal::CartesianProductGenerator8< T1, T2, T3, T4, T5, T6, T7, T8 >inline
End() const overridetesting::internal::CartesianProductGenerator8< T1, T2, T3, T4, T5, T6, T7, T8 >inlinevirtual
ParamType typedeftesting::internal::CartesianProductGenerator8< T1, T2, T3, T4, T5, T6, T7, T8 >
~CartesianProductGenerator8() overridetesting::internal::CartesianProductGenerator8< T1, T2, T3, T4, T5, T6, T7, T8 >inline
~ParamGeneratorInterface()testing::internal::ParamGeneratorInterface< ::std::tuple< T1, T2, T3, T4, T5, T6, T7, T8 > >inlinevirtual
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator8.html b/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator8.html new file mode 100644 index 0000000..3486b65 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator8.html @@ -0,0 +1,341 @@ + + + + + + + +uTL: testing::internal::CartesianProductGenerator8< T1, T2, T3, T4, T5, T6, T7, T8 > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::CartesianProductGenerator8< T1, T2, T3, T4, T5, T6, T7, T8 > Class Template Reference
+
+
+ +

#include <gtest.h>

+
+Inheritance diagram for testing::internal::CartesianProductGenerator8< T1, T2, T3, T4, T5, T6, T7, T8 >:
+
+
+ + +testing::internal::ParamGeneratorInterface< ::std::tuple< T1, T2, T3, T4, T5, T6, T7, T8 > > + +
+ + + + + + + +

+Public Types

typedef ::std::tuple< T1, T2, T3, T4, T5, T6, T7, T8 > ParamType
 
- Public Types inherited from testing::internal::ParamGeneratorInterface< ::std::tuple< T1, T2, T3, T4, T5, T6, T7, T8 > >
typedef ::std::tuple< T1, T2, T3, T4, T5, T6, T7, T8 > ParamType
 
+ + + + + + + + + + + + +

+Public Member Functions

 CartesianProductGenerator8 (const ParamGenerator< T1 > &g1, const ParamGenerator< T2 > &g2, const ParamGenerator< T3 > &g3, const ParamGenerator< T4 > &g4, const ParamGenerator< T5 > &g5, const ParamGenerator< T6 > &g6, const ParamGenerator< T7 > &g7, const ParamGenerator< T8 > &g8)
 
 ~CartesianProductGenerator8 () override
 
ParamIteratorInterface< ParamType > * Begin () const override
 
ParamIteratorInterface< ParamType > * End () const override
 
- Public Member Functions inherited from testing::internal::ParamGeneratorInterface< ::std::tuple< T1, T2, T3, T4, T5, T6, T7, T8 > >
virtual ~ParamGeneratorInterface ()
 
+

Detailed Description

+

template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8>
+class testing::internal::CartesianProductGenerator8< T1, T2, T3, T4, T5, T6, T7, T8 >

+ + +

Definition at line 12319 of file gtest.h.

+

Member Typedef Documentation

+ +

◆ ParamType

+ +
+
+
+template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 >
+ + + + +
typedef ::std::tuple<T1, T2, T3, T4, T5, T6, T7, T8> testing::internal::CartesianProductGenerator8< T1, T2, T3, T4, T5, T6, T7, T8 >::ParamType
+
+ +

Definition at line 12323 of file gtest.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ CartesianProductGenerator8()

+ +
+
+
+template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
testing::internal::CartesianProductGenerator8< T1, T2, T3, T4, T5, T6, T7, T8 >::CartesianProductGenerator8 (const ParamGenerator< T1 > & g1,
const ParamGenerator< T2 > & g2,
const ParamGenerator< T3 > & g3,
const ParamGenerator< T4 > & g4,
const ParamGenerator< T5 > & g5,
const ParamGenerator< T6 > & g6,
const ParamGenerator< T7 > & g7,
const ParamGenerator< T8 > & g8 
)
+
+inline
+
+ +

Definition at line 12325 of file gtest.h.

+ +
+
+ +

◆ ~CartesianProductGenerator8()

+ +
+
+
+template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 >
+ + + + + +
+ + + + + + + +
testing::internal::CartesianProductGenerator8< T1, T2, T3, T4, T5, T6, T7, T8 >::~CartesianProductGenerator8 ()
+
+inlineoverride
+
+ +

Definition at line 12332 of file gtest.h.

+ +
+
+

Member Function Documentation

+ +

◆ Begin()

+ +
+
+
+template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 >
+ + + + + +
+ + + + + + + +
ParamIteratorInterface<ParamType>* testing::internal::CartesianProductGenerator8< T1, T2, T3, T4, T5, T6, T7, T8 >::Begin () const
+
+inlineoverridevirtual
+
+
+ +

◆ End()

+ +
+
+
+template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 >
+ + + + + +
+ + + + + + + +
ParamIteratorInterface<ParamType>* testing::internal::CartesianProductGenerator8< T1, T2, T3, T4, T5, T6, T7, T8 >::End () const
+
+inlineoverridevirtual
+
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator8.js b/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator8.js new file mode 100644 index 0000000..7ca0528 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator8.js @@ -0,0 +1,8 @@ +var classtesting_1_1internal_1_1_cartesian_product_generator8 = +[ + [ "ParamType", "classtesting_1_1internal_1_1_cartesian_product_generator8.html#a75fc8856e032710e9efe753ad788dcf1", null ], + [ "CartesianProductGenerator8", "classtesting_1_1internal_1_1_cartesian_product_generator8.html#a07f33a7263f933d4fbabdb9e930d7f86", null ], + [ "~CartesianProductGenerator8", "classtesting_1_1internal_1_1_cartesian_product_generator8.html#ab5e728b287d0d520e7281799a67189c7", null ], + [ "Begin", "classtesting_1_1internal_1_1_cartesian_product_generator8.html#a707b5a6f598da1f6b997e3b1ad771aca", null ], + [ "End", "classtesting_1_1internal_1_1_cartesian_product_generator8.html#a1893e189b87ba1a7cc664dcd4d87a1fd", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator8.png b/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator8.png new file mode 100644 index 0000000000000000000000000000000000000000..68422cbedb522e944b544cd240ff536cc7a76496 GIT binary patch literal 1558 zcmZ9MdpOit7{`Cf6!RlItC`BJX-CoiD(h0YR#Ps6l)*9^BXS#ZNhBoVnM4g{NU@Y; zTqt=_ z008QEr$Yn)Py%5-sY>Yx5PxERYBmHUcg?cC9xal%r=w1_~b??!F0k_eN@gPDQl-7&>;pV0zF zFs5nBE@DyDo6Wi8c+Qo4T83`8*yHZt?{K}XF32`5Mg>z=(HVYe>&_5!UAM#>1inMo z=z^3%pp=ju=QHiSz|tq^db!sR#OtvQPM>t_zWlr(B#w1m6B^a<_os#bKzMLIeSVcc z>sg)mkdjH@ElkWd5`iTuz&K4|(9nx+QtD`Fa?coJLOnU_Lbi6K+_YINc75+3ABqVu zq-o~P6_4N+cc_9cgdk(zZ7e8EK0`vq6|t(;s(h@s@c6sOg+r-vi-VB zHJ@r!zW3}|$;5X7ooHwtS3*k4pZw#Db?{Pp$u;6w-%&9|md{~={UkzS&35l(ss;Gi zEAIBq0g7AY_$9V^ub8s+*M4;;(kPCqHqIlpsLF`#ga_}+2zP2{LKPgR zY2j7jax4{nkdm&jVDwm$dT*SPc#pQ`RDQlhs~)_OYZ0IA9C!aH{ieA{!&mY z{G@`f$G)%Q!6pkvVS7wLdQcGp4jDGzXF>eH9sK%pY~WrhfNJmNLx7LJ(UO@OP)Gz= zyS3F;rv;;cd(<@m_~sojnW~FDh!QhD5__MVC|d9%%f*yRwL}aC*Zfus+-A_dl+qZQ`b0_dq|Qdf;!PiwP~SJK z;kxkv&b7VH7~(SW$Wm;upwvUoH6do(UsS&sBjZGj{ubZ9kbJSxbP)kkE z9}w^%*S?Rwe$}mIHS8D}NBmdal9j=SM?SyRmh0RCs38+v{M~65OZ>3LMX?T?t^*@i z3#my=$9X1uRDw@<%9Wi;u<9V^HjRf%O + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::CartesianProductGenerator9< T1, T2, T3, T4, T5, T6, T7, T8, T9 > Member List
+
+
+ +

This is the complete list of members for testing::internal::CartesianProductGenerator9< T1, T2, T3, T4, T5, T6, T7, T8, T9 >, including all inherited members.

+ + + + + + + +
Begin() const overridetesting::internal::CartesianProductGenerator9< T1, T2, T3, T4, T5, T6, T7, T8, T9 >inlinevirtual
CartesianProductGenerator9(const ParamGenerator< T1 > &g1, const ParamGenerator< T2 > &g2, const ParamGenerator< T3 > &g3, const ParamGenerator< T4 > &g4, const ParamGenerator< T5 > &g5, const ParamGenerator< T6 > &g6, const ParamGenerator< T7 > &g7, const ParamGenerator< T8 > &g8, const ParamGenerator< T9 > &g9)testing::internal::CartesianProductGenerator9< T1, T2, T3, T4, T5, T6, T7, T8, T9 >inline
End() const overridetesting::internal::CartesianProductGenerator9< T1, T2, T3, T4, T5, T6, T7, T8, T9 >inlinevirtual
ParamType typedeftesting::internal::CartesianProductGenerator9< T1, T2, T3, T4, T5, T6, T7, T8, T9 >
~CartesianProductGenerator9() overridetesting::internal::CartesianProductGenerator9< T1, T2, T3, T4, T5, T6, T7, T8, T9 >inline
~ParamGeneratorInterface()testing::internal::ParamGeneratorInterface< ::std::tuple< T1, T2, T3, T4, T5, T6, T7, T8, T9 > >inlinevirtual
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator9.html b/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator9.html new file mode 100644 index 0000000..92f4fe4 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator9.html @@ -0,0 +1,347 @@ + + + + + + + +uTL: testing::internal::CartesianProductGenerator9< T1, T2, T3, T4, T5, T6, T7, T8, T9 > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::CartesianProductGenerator9< T1, T2, T3, T4, T5, T6, T7, T8, T9 > Class Template Reference
+
+
+ +

#include <gtest.h>

+
+Inheritance diagram for testing::internal::CartesianProductGenerator9< T1, T2, T3, T4, T5, T6, T7, T8, T9 >:
+
+
+ + +testing::internal::ParamGeneratorInterface< ::std::tuple< T1, T2, T3, T4, T5, T6, T7, T8, T9 > > + +
+ + + + + + + +

+Public Types

typedef ::std::tuple< T1, T2, T3, T4, T5, T6, T7, T8, T9 > ParamType
 
- Public Types inherited from testing::internal::ParamGeneratorInterface< ::std::tuple< T1, T2, T3, T4, T5, T6, T7, T8, T9 > >
typedef ::std::tuple< T1, T2, T3, T4, T5, T6, T7, T8, T9 > ParamType
 
+ + + + + + + + + + + + +

+Public Member Functions

 CartesianProductGenerator9 (const ParamGenerator< T1 > &g1, const ParamGenerator< T2 > &g2, const ParamGenerator< T3 > &g3, const ParamGenerator< T4 > &g4, const ParamGenerator< T5 > &g5, const ParamGenerator< T6 > &g6, const ParamGenerator< T7 > &g7, const ParamGenerator< T8 > &g8, const ParamGenerator< T9 > &g9)
 
 ~CartesianProductGenerator9 () override
 
ParamIteratorInterface< ParamType > * Begin () const override
 
ParamIteratorInterface< ParamType > * End () const override
 
- Public Member Functions inherited from testing::internal::ParamGeneratorInterface< ::std::tuple< T1, T2, T3, T4, T5, T6, T7, T8, T9 > >
virtual ~ParamGeneratorInterface ()
 
+

Detailed Description

+

template<typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9>
+class testing::internal::CartesianProductGenerator9< T1, T2, T3, T4, T5, T6, T7, T8, T9 >

+ + +

Definition at line 12541 of file gtest.h.

+

Member Typedef Documentation

+ +

◆ ParamType

+ +
+
+
+template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 >
+ + + + +
typedef ::std::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9> testing::internal::CartesianProductGenerator9< T1, T2, T3, T4, T5, T6, T7, T8, T9 >::ParamType
+
+ +

Definition at line 12545 of file gtest.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ CartesianProductGenerator9()

+ +
+
+
+template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
testing::internal::CartesianProductGenerator9< T1, T2, T3, T4, T5, T6, T7, T8, T9 >::CartesianProductGenerator9 (const ParamGenerator< T1 > & g1,
const ParamGenerator< T2 > & g2,
const ParamGenerator< T3 > & g3,
const ParamGenerator< T4 > & g4,
const ParamGenerator< T5 > & g5,
const ParamGenerator< T6 > & g6,
const ParamGenerator< T7 > & g7,
const ParamGenerator< T8 > & g8,
const ParamGenerator< T9 > & g9 
)
+
+inline
+
+ +

Definition at line 12547 of file gtest.h.

+ +
+
+ +

◆ ~CartesianProductGenerator9()

+ +
+
+
+template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 >
+ + + + + +
+ + + + + + + +
testing::internal::CartesianProductGenerator9< T1, T2, T3, T4, T5, T6, T7, T8, T9 >::~CartesianProductGenerator9 ()
+
+inlineoverride
+
+ +

Definition at line 12554 of file gtest.h.

+ +
+
+

Member Function Documentation

+ +

◆ Begin()

+ +
+
+
+template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 >
+ + + + + +
+ + + + + + + +
ParamIteratorInterface<ParamType>* testing::internal::CartesianProductGenerator9< T1, T2, T3, T4, T5, T6, T7, T8, T9 >::Begin () const
+
+inlineoverridevirtual
+
+
+ +

◆ End()

+ +
+
+
+template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 >
+ + + + + +
+ + + + + + + +
ParamIteratorInterface<ParamType>* testing::internal::CartesianProductGenerator9< T1, T2, T3, T4, T5, T6, T7, T8, T9 >::End () const
+
+inlineoverridevirtual
+
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator9.js b/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator9.js new file mode 100644 index 0000000..f9c829b --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator9.js @@ -0,0 +1,8 @@ +var classtesting_1_1internal_1_1_cartesian_product_generator9 = +[ + [ "ParamType", "classtesting_1_1internal_1_1_cartesian_product_generator9.html#a86742cdf8f015ff11f7a40f0b66179c7", null ], + [ "CartesianProductGenerator9", "classtesting_1_1internal_1_1_cartesian_product_generator9.html#aff06c7992c06297c6bf5ad5eb56534e9", null ], + [ "~CartesianProductGenerator9", "classtesting_1_1internal_1_1_cartesian_product_generator9.html#ab1b886bfb8c9c2c575ee4f9da61e3180", null ], + [ "Begin", "classtesting_1_1internal_1_1_cartesian_product_generator9.html#a8fc8d5664560c3a788fe51903f896429", null ], + [ "End", "classtesting_1_1internal_1_1_cartesian_product_generator9.html#a60476505c616957d1a04a31d1635df6d", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator9.png b/doc/html/classtesting_1_1internal_1_1_cartesian_product_generator9.png new file mode 100644 index 0000000000000000000000000000000000000000..e8e4826111d9e5a5c5681083fdae8bf4de9bac8a GIT binary patch literal 1675 zcmc(g`B#!z7{^~+%AAzR)JQFjn3PeQQgg{%O5fz2&;U)w6?HONToM<|G#w)s%s{f$ z%ob8h!-~Pm(lkxLh_+EOMVqt;#mohD!eyxD%uMqS%suDc`}v;p{BWOhKF_)NI6ogf zT@zgZ0Q4Y?Hvs@NkZQ*1XsXY}=I>SN3xUH1fOB(mYJ8_qCNu6c)%1BcHa2SKcbluD zP7=Y-A5a&4TJ3ECb^tKX1oGY(kO~_r9i*&8FWd|#5g(~MM$;4x7>lRQgPo^+i}xCo z%u8^!oxKs;6&TZ1Yt&U6yE29qfFZ1a+%Dyzj9A4u`lqnqt5AXTW!W-@GuoBgr%=!` zS@VR-hgEK~&V(lCM9gYYH!aj$-(M}xDsru)>vN&l?P?)V%d%W z@00K0QR2ABI)UNRmJK8=s2rOs%03zQ{y-g`?NR7%t;K(nn^+Nd{M`=JI{%4D=MC-W zx5Rj^S!BQ1n#rzup>6qap;>4^e`$XdHTJynNxI|q6kC_MP0$%6IqiT~(M5)#M(n-#;dgj~uxL@f|7bD7!H_YFJ4MS`$F-v2P$J0J$A;Xd_pfa#^$+UYx z(v~D)<(AAo`2>ARwd%0@BV-dsDn7)jCKs(}kv3uMqAB59VUn;ZO?o%E=tGL*iSd`< zm=P!*FC{q?&>f&<2W5ROp_fA5Ci*pF!}1ttgQO`sGU0Wwj)88J(Y`lNt%uzWuDI5( z>ZA;nneNUsT|RebVM0e4F)KFFy}Pdy_qJn78jY|o6S=&;&UuBXDN!0V3n}UM-Wswk zDlp_DchIr+Tn@hIK}V31X=6;5hw{B$fP#9DQUlNaIx|@H9XistXzdp0+1B3+ zk7as!1#$%$>sjphHhB2Q{Ywhf`i(bRfvC$&HjUuT(uIEfDx_Nd%UVs~(99p&IKU8C zc}d3;_U+gp(M1CX(29|Owx_6>Nzpn7Sn#O@Chi}+R*C6-H{vFzZriF^k~=h_`GPVz(`iZfaKvr~5Qv`*Sw{Z+BuI0B{A{W8meMFy7%l-RaB{FrH)c=SLcDU zO4FvTE#3(78MNI#at9-!TjdG@{zp#R2r{ekIzP_)GG=`@cn+Z>!wPmOBPv8ylsg-z z<>6@_S*@&56(SSXFMJM`3sUQs#p_43B?)ZuU5DdsJtL4U9ZTAi}QI2itj?6pI}8jHuXoD8p<)?N`jGQn~=cpV^ zq^^6Zm_~!y`XoHcFZ7#@#@a!|{$r;eKVf(rm@|DrS^irOpX5-3XB>48FP9t~^c>n- z+k2A6DVM}dw9PQ8>|n7pN$E3*2FDppdpabIE;)7bBC_BrcVLB+jTY>u9r#6A=(2o` z51GgyC5fbWO=M}flxxxmf8~Q1J!La`Y+P;r^icZ11(+4ku + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::CartesianProductHolder10< Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8, Generator9, Generator10 > Member List
+
+ +
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder10.html b/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder10.html new file mode 100644 index 0000000..9a295a4 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder10.html @@ -0,0 +1,249 @@ + + + + + + + +uTL: testing::internal::CartesianProductHolder10< Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8, Generator9, Generator10 > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::CartesianProductHolder10< Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8, Generator9, Generator10 > Class Template Reference
+
+
+ +

#include <gtest.h>

+ + + + + + + +

+Public Member Functions

 CartesianProductHolder10 (const Generator1 &g1, const Generator2 &g2, const Generator3 &g3, const Generator4 &g4, const Generator5 &g5, const Generator6 &g6, const Generator7 &g7, const Generator8 &g8, const Generator9 &g9, const Generator10 &g10)
 
template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 >
 operator ParamGenerator< ::std::tuple< T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 > > () const
 
+

Detailed Description

+

template<class Generator1, class Generator2, class Generator3, class Generator4, class Generator5, class Generator6, class Generator7, class Generator8, class Generator9, class Generator10>
+class testing::internal::CartesianProductHolder10< Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8, Generator9, Generator10 >

+ + +

Definition at line 13295 of file gtest.h.

+

Constructor & Destructor Documentation

+ +

◆ CartesianProductHolder10()

+ +
+
+
+template<class Generator1 , class Generator2 , class Generator3 , class Generator4 , class Generator5 , class Generator6 , class Generator7 , class Generator8 , class Generator9 , class Generator10 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
testing::internal::CartesianProductHolder10< Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8, Generator9, Generator10 >::CartesianProductHolder10 (const Generator1 & g1,
const Generator2 & g2,
const Generator3 & g3,
const Generator4 & g4,
const Generator5 & g5,
const Generator6 & g6,
const Generator7 & g7,
const Generator8 & g8,
const Generator9 & g9,
const Generator10 & g10 
)
+
+inline
+
+ +

Definition at line 13297 of file gtest.h.

+ +
+
+

Member Function Documentation

+ +

◆ operator ParamGenerator< ::std::tuple< T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 > >()

+ +
+
+
+template<class Generator1 , class Generator2 , class Generator3 , class Generator4 , class Generator5 , class Generator6 , class Generator7 , class Generator8 , class Generator9 , class Generator10 >
+
+template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 >
+ + + + + +
+ + + + + + + +
testing::internal::CartesianProductHolder10< Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8, Generator9, Generator10 >::operator ParamGenerator< ::std::tuple< T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 > > () const
+
+inline
+
+ +

Definition at line 13306 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder10.js b/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder10.js new file mode 100644 index 0000000..04316a9 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder10.js @@ -0,0 +1,5 @@ +var classtesting_1_1internal_1_1_cartesian_product_holder10 = +[ + [ "CartesianProductHolder10", "classtesting_1_1internal_1_1_cartesian_product_holder10.html#a3255f824dd20e02b8bb718bb7d3d3634", null ], + [ "operator ParamGenerator< ::std::tuple< T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 > >", "classtesting_1_1internal_1_1_cartesian_product_holder10.html#a1c9f9e026696dd2618bb7e9e19daf239", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder2-members.html b/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder2-members.html new file mode 100644 index 0000000..49282f2 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder2-members.html @@ -0,0 +1,109 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::CartesianProductHolder2< Generator1, Generator2 > Member List
+
+ +
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder2.html b/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder2.html new file mode 100644 index 0000000..f2a086f --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder2.html @@ -0,0 +1,201 @@ + + + + + + + +uTL: testing::internal::CartesianProductHolder2< Generator1, Generator2 > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::CartesianProductHolder2< Generator1, Generator2 > Class Template Reference
+
+
+ +

#include <gtest.h>

+ + + + + + + +

+Public Member Functions

 CartesianProductHolder2 (const Generator1 &g1, const Generator2 &g2)
 
template<typename T1 , typename T2 >
 operator ParamGenerator< ::std::tuple< T1, T2 > > () const
 
+

Detailed Description

+

template<class Generator1, class Generator2>
+class testing::internal::CartesianProductHolder2< Generator1, Generator2 >

+ + +

Definition at line 13041 of file gtest.h.

+

Constructor & Destructor Documentation

+ +

◆ CartesianProductHolder2()

+ +
+
+
+template<class Generator1, class Generator2>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
testing::internal::CartesianProductHolder2< Generator1, Generator2 >::CartesianProductHolder2 (const Generator1 & g1,
const Generator2 & g2 
)
+
+inline
+
+ +

Definition at line 13043 of file gtest.h.

+ +
+
+

Member Function Documentation

+ +

◆ operator ParamGenerator< ::std::tuple< T1, T2 > >()

+ +
+
+
+template<class Generator1, class Generator2>
+
+template<typename T1 , typename T2 >
+ + + + + +
+ + + + + + + +
testing::internal::CartesianProductHolder2< Generator1, Generator2 >::operator ParamGenerator< ::std::tuple< T1, T2 > > () const
+
+inline
+
+ +

Definition at line 13046 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder2.js b/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder2.js new file mode 100644 index 0000000..28c71a0 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder2.js @@ -0,0 +1,5 @@ +var classtesting_1_1internal_1_1_cartesian_product_holder2 = +[ + [ "CartesianProductHolder2", "classtesting_1_1internal_1_1_cartesian_product_holder2.html#a504471500c3171f7efee84b830004ff9", null ], + [ "operator ParamGenerator< ::std::tuple< T1, T2 > >", "classtesting_1_1internal_1_1_cartesian_product_holder2.html#afa0052d44ded139ca23a270375d28e6a", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder3-members.html b/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder3-members.html new file mode 100644 index 0000000..d6a01c3 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder3-members.html @@ -0,0 +1,109 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::CartesianProductHolder3< Generator1, Generator2, Generator3 > Member List
+
+ +
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder3.html b/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder3.html new file mode 100644 index 0000000..a1f3835 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder3.html @@ -0,0 +1,207 @@ + + + + + + + +uTL: testing::internal::CartesianProductHolder3< Generator1, Generator2, Generator3 > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::CartesianProductHolder3< Generator1, Generator2, Generator3 > Class Template Reference
+
+
+ +

#include <gtest.h>

+ + + + + + + +

+Public Member Functions

 CartesianProductHolder3 (const Generator1 &g1, const Generator2 &g2, const Generator3 &g3)
 
template<typename T1 , typename T2 , typename T3 >
 operator ParamGenerator< ::std::tuple< T1, T2, T3 > > () const
 
+

Detailed Description

+

template<class Generator1, class Generator2, class Generator3>
+class testing::internal::CartesianProductHolder3< Generator1, Generator2, Generator3 >

+ + +

Definition at line 13062 of file gtest.h.

+

Constructor & Destructor Documentation

+ +

◆ CartesianProductHolder3()

+ +
+
+
+template<class Generator1, class Generator2, class Generator3>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
testing::internal::CartesianProductHolder3< Generator1, Generator2, Generator3 >::CartesianProductHolder3 (const Generator1 & g1,
const Generator2 & g2,
const Generator3 & g3 
)
+
+inline
+
+ +

Definition at line 13064 of file gtest.h.

+ +
+
+

Member Function Documentation

+ +

◆ operator ParamGenerator< ::std::tuple< T1, T2, T3 > >()

+ +
+
+
+template<class Generator1, class Generator2, class Generator3>
+
+template<typename T1 , typename T2 , typename T3 >
+ + + + + +
+ + + + + + + +
testing::internal::CartesianProductHolder3< Generator1, Generator2, Generator3 >::operator ParamGenerator< ::std::tuple< T1, T2, T3 > > () const
+
+inline
+
+ +

Definition at line 13068 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder3.js b/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder3.js new file mode 100644 index 0000000..32654d8 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder3.js @@ -0,0 +1,5 @@ +var classtesting_1_1internal_1_1_cartesian_product_holder3 = +[ + [ "CartesianProductHolder3", "classtesting_1_1internal_1_1_cartesian_product_holder3.html#ad74b6d31441c7f3f7f8514a563c8277e", null ], + [ "operator ParamGenerator< ::std::tuple< T1, T2, T3 > >", "classtesting_1_1internal_1_1_cartesian_product_holder3.html#a10074f00be0b5069dbc67ef5c66fbf0c", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder4-members.html b/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder4-members.html new file mode 100644 index 0000000..172b4b1 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder4-members.html @@ -0,0 +1,109 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::CartesianProductHolder4< Generator1, Generator2, Generator3, Generator4 > Member List
+
+ +
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder4.html b/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder4.html new file mode 100644 index 0000000..f2c4d00 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder4.html @@ -0,0 +1,213 @@ + + + + + + + +uTL: testing::internal::CartesianProductHolder4< Generator1, Generator2, Generator3, Generator4 > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::CartesianProductHolder4< Generator1, Generator2, Generator3, Generator4 > Class Template Reference
+
+
+ +

#include <gtest.h>

+ + + + + + + +

+Public Member Functions

 CartesianProductHolder4 (const Generator1 &g1, const Generator2 &g2, const Generator3 &g3, const Generator4 &g4)
 
template<typename T1 , typename T2 , typename T3 , typename T4 >
 operator ParamGenerator< ::std::tuple< T1, T2, T3, T4 > > () const
 
+

Detailed Description

+

template<class Generator1, class Generator2, class Generator3, class Generator4>
+class testing::internal::CartesianProductHolder4< Generator1, Generator2, Generator3, Generator4 >

+ + +

Definition at line 13087 of file gtest.h.

+

Constructor & Destructor Documentation

+ +

◆ CartesianProductHolder4()

+ +
+
+
+template<class Generator1 , class Generator2 , class Generator3 , class Generator4 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
testing::internal::CartesianProductHolder4< Generator1, Generator2, Generator3, Generator4 >::CartesianProductHolder4 (const Generator1 & g1,
const Generator2 & g2,
const Generator3 & g3,
const Generator4 & g4 
)
+
+inline
+
+ +

Definition at line 13089 of file gtest.h.

+ +
+
+

Member Function Documentation

+ +

◆ operator ParamGenerator< ::std::tuple< T1, T2, T3, T4 > >()

+ +
+
+
+template<class Generator1 , class Generator2 , class Generator3 , class Generator4 >
+
+template<typename T1 , typename T2 , typename T3 , typename T4 >
+ + + + + +
+ + + + + + + +
testing::internal::CartesianProductHolder4< Generator1, Generator2, Generator3, Generator4 >::operator ParamGenerator< ::std::tuple< T1, T2, T3, T4 > > () const
+
+inline
+
+ +

Definition at line 13093 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder4.js b/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder4.js new file mode 100644 index 0000000..2941fc2 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder4.js @@ -0,0 +1,5 @@ +var classtesting_1_1internal_1_1_cartesian_product_holder4 = +[ + [ "CartesianProductHolder4", "classtesting_1_1internal_1_1_cartesian_product_holder4.html#a07fe92a091d7717a159d7ba5f2fe3c75", null ], + [ "operator ParamGenerator< ::std::tuple< T1, T2, T3, T4 > >", "classtesting_1_1internal_1_1_cartesian_product_holder4.html#a6138a6d2767e2381266fe8676adbdd0b", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder5-members.html b/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder5-members.html new file mode 100644 index 0000000..44da750 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder5-members.html @@ -0,0 +1,109 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::CartesianProductHolder5< Generator1, Generator2, Generator3, Generator4, Generator5 > Member List
+
+ +
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder5.html b/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder5.html new file mode 100644 index 0000000..3b3421b --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder5.html @@ -0,0 +1,219 @@ + + + + + + + +uTL: testing::internal::CartesianProductHolder5< Generator1, Generator2, Generator3, Generator4, Generator5 > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::CartesianProductHolder5< Generator1, Generator2, Generator3, Generator4, Generator5 > Class Template Reference
+
+
+ +

#include <gtest.h>

+ + + + + + + +

+Public Member Functions

 CartesianProductHolder5 (const Generator1 &g1, const Generator2 &g2, const Generator3 &g3, const Generator4 &g4, const Generator5 &g5)
 
template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 >
 operator ParamGenerator< ::std::tuple< T1, T2, T3, T4, T5 > > () const
 
+

Detailed Description

+

template<class Generator1, class Generator2, class Generator3, class Generator4, class Generator5>
+class testing::internal::CartesianProductHolder5< Generator1, Generator2, Generator3, Generator4, Generator5 >

+ + +

Definition at line 13114 of file gtest.h.

+

Constructor & Destructor Documentation

+ +

◆ CartesianProductHolder5()

+ +
+
+
+template<class Generator1 , class Generator2 , class Generator3 , class Generator4 , class Generator5 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
testing::internal::CartesianProductHolder5< Generator1, Generator2, Generator3, Generator4, Generator5 >::CartesianProductHolder5 (const Generator1 & g1,
const Generator2 & g2,
const Generator3 & g3,
const Generator4 & g4,
const Generator5 & g5 
)
+
+inline
+
+ +

Definition at line 13116 of file gtest.h.

+ +
+
+

Member Function Documentation

+ +

◆ operator ParamGenerator< ::std::tuple< T1, T2, T3, T4, T5 > >()

+ +
+
+
+template<class Generator1 , class Generator2 , class Generator3 , class Generator4 , class Generator5 >
+
+template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 >
+ + + + + +
+ + + + + + + +
testing::internal::CartesianProductHolder5< Generator1, Generator2, Generator3, Generator4, Generator5 >::operator ParamGenerator< ::std::tuple< T1, T2, T3, T4, T5 > > () const
+
+inline
+
+ +

Definition at line 13120 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder5.js b/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder5.js new file mode 100644 index 0000000..895c0ef --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder5.js @@ -0,0 +1,5 @@ +var classtesting_1_1internal_1_1_cartesian_product_holder5 = +[ + [ "CartesianProductHolder5", "classtesting_1_1internal_1_1_cartesian_product_holder5.html#afb3a413ff0e59f31e621937f968d0923", null ], + [ "operator ParamGenerator< ::std::tuple< T1, T2, T3, T4, T5 > >", "classtesting_1_1internal_1_1_cartesian_product_holder5.html#aff2bd642fe8c52a2b9235e7c9c08cf26", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder6-members.html b/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder6-members.html new file mode 100644 index 0000000..fb453f4 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder6-members.html @@ -0,0 +1,109 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::CartesianProductHolder6< Generator1, Generator2, Generator3, Generator4, Generator5, Generator6 > Member List
+
+ +
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder6.html b/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder6.html new file mode 100644 index 0000000..97426af --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder6.html @@ -0,0 +1,225 @@ + + + + + + + +uTL: testing::internal::CartesianProductHolder6< Generator1, Generator2, Generator3, Generator4, Generator5, Generator6 > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::CartesianProductHolder6< Generator1, Generator2, Generator3, Generator4, Generator5, Generator6 > Class Template Reference
+
+
+ +

#include <gtest.h>

+ + + + + + + +

+Public Member Functions

 CartesianProductHolder6 (const Generator1 &g1, const Generator2 &g2, const Generator3 &g3, const Generator4 &g4, const Generator5 &g5, const Generator6 &g6)
 
template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 >
 operator ParamGenerator< ::std::tuple< T1, T2, T3, T4, T5, T6 > > () const
 
+

Detailed Description

+

template<class Generator1, class Generator2, class Generator3, class Generator4, class Generator5, class Generator6>
+class testing::internal::CartesianProductHolder6< Generator1, Generator2, Generator3, Generator4, Generator5, Generator6 >

+ + +

Definition at line 13143 of file gtest.h.

+

Constructor & Destructor Documentation

+ +

◆ CartesianProductHolder6()

+ +
+
+
+template<class Generator1 , class Generator2 , class Generator3 , class Generator4 , class Generator5 , class Generator6 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
testing::internal::CartesianProductHolder6< Generator1, Generator2, Generator3, Generator4, Generator5, Generator6 >::CartesianProductHolder6 (const Generator1 & g1,
const Generator2 & g2,
const Generator3 & g3,
const Generator4 & g4,
const Generator5 & g5,
const Generator6 & g6 
)
+
+inline
+
+ +

Definition at line 13145 of file gtest.h.

+ +
+
+

Member Function Documentation

+ +

◆ operator ParamGenerator< ::std::tuple< T1, T2, T3, T4, T5, T6 > >()

+ +
+
+
+template<class Generator1 , class Generator2 , class Generator3 , class Generator4 , class Generator5 , class Generator6 >
+
+template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 >
+ + + + + +
+ + + + + + + +
testing::internal::CartesianProductHolder6< Generator1, Generator2, Generator3, Generator4, Generator5, Generator6 >::operator ParamGenerator< ::std::tuple< T1, T2, T3, T4, T5, T6 > > () const
+
+inline
+
+ +

Definition at line 13151 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder6.js b/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder6.js new file mode 100644 index 0000000..82515a2 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder6.js @@ -0,0 +1,5 @@ +var classtesting_1_1internal_1_1_cartesian_product_holder6 = +[ + [ "CartesianProductHolder6", "classtesting_1_1internal_1_1_cartesian_product_holder6.html#a7bb6f9224a1a6766e3634eb392e1b5f6", null ], + [ "operator ParamGenerator< ::std::tuple< T1, T2, T3, T4, T5, T6 > >", "classtesting_1_1internal_1_1_cartesian_product_holder6.html#aa913929b072ce064ba7d00f030e6e3ed", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder7-members.html b/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder7-members.html new file mode 100644 index 0000000..0939e45 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder7-members.html @@ -0,0 +1,109 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::CartesianProductHolder7< Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7 > Member List
+
+ +
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder7.html b/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder7.html new file mode 100644 index 0000000..758fea9 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder7.html @@ -0,0 +1,231 @@ + + + + + + + +uTL: testing::internal::CartesianProductHolder7< Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7 > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::CartesianProductHolder7< Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7 > Class Template Reference
+
+
+ +

#include <gtest.h>

+ + + + + + + +

+Public Member Functions

 CartesianProductHolder7 (const Generator1 &g1, const Generator2 &g2, const Generator3 &g3, const Generator4 &g4, const Generator5 &g5, const Generator6 &g6, const Generator7 &g7)
 
template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 >
 operator ParamGenerator< ::std::tuple< T1, T2, T3, T4, T5, T6, T7 > > () const
 
+

Detailed Description

+

template<class Generator1, class Generator2, class Generator3, class Generator4, class Generator5, class Generator6, class Generator7>
+class testing::internal::CartesianProductHolder7< Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7 >

+ + +

Definition at line 13176 of file gtest.h.

+

Constructor & Destructor Documentation

+ +

◆ CartesianProductHolder7()

+ +
+
+
+template<class Generator1 , class Generator2 , class Generator3 , class Generator4 , class Generator5 , class Generator6 , class Generator7 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
testing::internal::CartesianProductHolder7< Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7 >::CartesianProductHolder7 (const Generator1 & g1,
const Generator2 & g2,
const Generator3 & g3,
const Generator4 & g4,
const Generator5 & g5,
const Generator6 & g6,
const Generator7 & g7 
)
+
+inline
+
+ +

Definition at line 13178 of file gtest.h.

+ +
+
+

Member Function Documentation

+ +

◆ operator ParamGenerator< ::std::tuple< T1, T2, T3, T4, T5, T6, T7 > >()

+ +
+
+
+template<class Generator1 , class Generator2 , class Generator3 , class Generator4 , class Generator5 , class Generator6 , class Generator7 >
+
+template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 >
+ + + + + +
+ + + + + + + +
testing::internal::CartesianProductHolder7< Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7 >::operator ParamGenerator< ::std::tuple< T1, T2, T3, T4, T5, T6, T7 > > () const
+
+inline
+
+ +

Definition at line 13184 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder7.js b/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder7.js new file mode 100644 index 0000000..74a7e1a --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder7.js @@ -0,0 +1,5 @@ +var classtesting_1_1internal_1_1_cartesian_product_holder7 = +[ + [ "CartesianProductHolder7", "classtesting_1_1internal_1_1_cartesian_product_holder7.html#a289e661f9252bac3570700410eb041b3", null ], + [ "operator ParamGenerator< ::std::tuple< T1, T2, T3, T4, T5, T6, T7 > >", "classtesting_1_1internal_1_1_cartesian_product_holder7.html#aef46f61ddac11f5daaf7ba59b0616c36", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder8-members.html b/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder8-members.html new file mode 100644 index 0000000..02364ba --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder8-members.html @@ -0,0 +1,109 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::CartesianProductHolder8< Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8 > Member List
+
+ +
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder8.html b/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder8.html new file mode 100644 index 0000000..ab4d9cf --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder8.html @@ -0,0 +1,237 @@ + + + + + + + +uTL: testing::internal::CartesianProductHolder8< Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8 > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::CartesianProductHolder8< Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8 > Class Template Reference
+
+
+ +

#include <gtest.h>

+ + + + + + + +

+Public Member Functions

 CartesianProductHolder8 (const Generator1 &g1, const Generator2 &g2, const Generator3 &g3, const Generator4 &g4, const Generator5 &g5, const Generator6 &g6, const Generator7 &g7, const Generator8 &g8)
 
template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 >
 operator ParamGenerator< ::std::tuple< T1, T2, T3, T4, T5, T6, T7, T8 > > () const
 
+

Detailed Description

+

template<class Generator1, class Generator2, class Generator3, class Generator4, class Generator5, class Generator6, class Generator7, class Generator8>
+class testing::internal::CartesianProductHolder8< Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8 >

+ + +

Definition at line 13212 of file gtest.h.

+

Constructor & Destructor Documentation

+ +

◆ CartesianProductHolder8()

+ +
+
+
+template<class Generator1 , class Generator2 , class Generator3 , class Generator4 , class Generator5 , class Generator6 , class Generator7 , class Generator8 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
testing::internal::CartesianProductHolder8< Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8 >::CartesianProductHolder8 (const Generator1 & g1,
const Generator2 & g2,
const Generator3 & g3,
const Generator4 & g4,
const Generator5 & g5,
const Generator6 & g6,
const Generator7 & g7,
const Generator8 & g8 
)
+
+inline
+
+ +

Definition at line 13214 of file gtest.h.

+ +
+
+

Member Function Documentation

+ +

◆ operator ParamGenerator< ::std::tuple< T1, T2, T3, T4, T5, T6, T7, T8 > >()

+ +
+
+
+template<class Generator1 , class Generator2 , class Generator3 , class Generator4 , class Generator5 , class Generator6 , class Generator7 , class Generator8 >
+
+template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 >
+ + + + + +
+ + + + + + + +
testing::internal::CartesianProductHolder8< Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8 >::operator ParamGenerator< ::std::tuple< T1, T2, T3, T4, T5, T6, T7, T8 > > () const
+
+inline
+
+ +

Definition at line 13222 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder8.js b/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder8.js new file mode 100644 index 0000000..d3f938c --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder8.js @@ -0,0 +1,5 @@ +var classtesting_1_1internal_1_1_cartesian_product_holder8 = +[ + [ "CartesianProductHolder8", "classtesting_1_1internal_1_1_cartesian_product_holder8.html#adacdd7a2e15963d1b2f559d65f6b2aac", null ], + [ "operator ParamGenerator< ::std::tuple< T1, T2, T3, T4, T5, T6, T7, T8 > >", "classtesting_1_1internal_1_1_cartesian_product_holder8.html#a19baa0d0ec826f2e10ffaafffcfdee3f", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder9-members.html b/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder9-members.html new file mode 100644 index 0000000..ee68b15 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder9-members.html @@ -0,0 +1,109 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::CartesianProductHolder9< Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8, Generator9 > Member List
+
+ +
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder9.html b/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder9.html new file mode 100644 index 0000000..870cd59 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder9.html @@ -0,0 +1,243 @@ + + + + + + + +uTL: testing::internal::CartesianProductHolder9< Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8, Generator9 > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::CartesianProductHolder9< Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8, Generator9 > Class Template Reference
+
+
+ +

#include <gtest.h>

+ + + + + + + +

+Public Member Functions

 CartesianProductHolder9 (const Generator1 &g1, const Generator2 &g2, const Generator3 &g3, const Generator4 &g4, const Generator5 &g5, const Generator6 &g6, const Generator7 &g7, const Generator8 &g8, const Generator9 &g9)
 
template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 >
 operator ParamGenerator< ::std::tuple< T1, T2, T3, T4, T5, T6, T7, T8, T9 > > () const
 
+

Detailed Description

+

template<class Generator1, class Generator2, class Generator3, class Generator4, class Generator5, class Generator6, class Generator7, class Generator8, class Generator9>
+class testing::internal::CartesianProductHolder9< Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8, Generator9 >

+ + +

Definition at line 13252 of file gtest.h.

+

Constructor & Destructor Documentation

+ +

◆ CartesianProductHolder9()

+ +
+
+
+template<class Generator1 , class Generator2 , class Generator3 , class Generator4 , class Generator5 , class Generator6 , class Generator7 , class Generator8 , class Generator9 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
testing::internal::CartesianProductHolder9< Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8, Generator9 >::CartesianProductHolder9 (const Generator1 & g1,
const Generator2 & g2,
const Generator3 & g3,
const Generator4 & g4,
const Generator5 & g5,
const Generator6 & g6,
const Generator7 & g7,
const Generator8 & g8,
const Generator9 & g9 
)
+
+inline
+
+ +

Definition at line 13254 of file gtest.h.

+ +
+
+

Member Function Documentation

+ +

◆ operator ParamGenerator< ::std::tuple< T1, T2, T3, T4, T5, T6, T7, T8, T9 > >()

+ +
+
+
+template<class Generator1 , class Generator2 , class Generator3 , class Generator4 , class Generator5 , class Generator6 , class Generator7 , class Generator8 , class Generator9 >
+
+template<typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 >
+ + + + + +
+ + + + + + + +
testing::internal::CartesianProductHolder9< Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8, Generator9 >::operator ParamGenerator< ::std::tuple< T1, T2, T3, T4, T5, T6, T7, T8, T9 > > () const
+
+inline
+
+ +

Definition at line 13263 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder9.js b/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder9.js new file mode 100644 index 0000000..b6a203f --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_cartesian_product_holder9.js @@ -0,0 +1,5 @@ +var classtesting_1_1internal_1_1_cartesian_product_holder9 = +[ + [ "CartesianProductHolder9", "classtesting_1_1internal_1_1_cartesian_product_holder9.html#a692a537863ab6adfc4001564887a3bc7", null ], + [ "operator ParamGenerator< ::std::tuple< T1, T2, T3, T4, T5, T6, T7, T8, T9 > >", "classtesting_1_1internal_1_1_cartesian_product_holder9.html#aafc7ce193dd88fc179d5a0c58eede7da", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1internal_1_1_eq_helper-members.html b/doc/html/classtesting_1_1internal_1_1_eq_helper-members.html new file mode 100644 index 0000000..12fc77d --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_eq_helper-members.html @@ -0,0 +1,109 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::EqHelper< lhs_is_null_literal > Member List
+
+
+ +

This is the complete list of members for testing::internal::EqHelper< lhs_is_null_literal >, including all inherited members.

+ + + +
Compare(const char *lhs_expression, const char *rhs_expression, const T1 &lhs, const T2 &rhs)testing::internal::EqHelper< lhs_is_null_literal >inlinestatic
Compare(const char *lhs_expression, const char *rhs_expression, BiggestInt lhs, BiggestInt rhs)testing::internal::EqHelper< lhs_is_null_literal >inlinestatic
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_eq_helper.html b/doc/html/classtesting_1_1internal_1_1_eq_helper.html new file mode 100644 index 0000000..28fb853 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_eq_helper.html @@ -0,0 +1,235 @@ + + + + + + + +uTL: testing::internal::EqHelper< lhs_is_null_literal > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::EqHelper< lhs_is_null_literal > Class Template Reference
+
+
+ +

#include <gtest.h>

+ + + + + + + +

+Static Public Member Functions

template<typename T1 , typename T2 >
static AssertionResult Compare (const char *lhs_expression, const char *rhs_expression, const T1 &lhs, const T2 &rhs)
 
static AssertionResult Compare (const char *lhs_expression, const char *rhs_expression, BiggestInt lhs, BiggestInt rhs)
 
+

Detailed Description

+

template<bool lhs_is_null_literal>
+class testing::internal::EqHelper< lhs_is_null_literal >

+ + +

Definition at line 16135 of file gtest.h.

+

Member Function Documentation

+ +

◆ Compare() [1/2]

+ +
+
+
+template<bool lhs_is_null_literal>
+
+template<typename T1 , typename T2 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static AssertionResult testing::internal::EqHelper< lhs_is_null_literal >::Compare (const char * lhs_expression,
const char * rhs_expression,
const T1 & lhs,
const T2 & rhs 
)
+
+inlinestatic
+
+ +

Definition at line 16139 of file gtest.h.

+ +
+
+ +

◆ Compare() [2/2]

+ +
+
+
+template<bool lhs_is_null_literal>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static AssertionResult testing::internal::EqHelper< lhs_is_null_literal >::Compare (const char * lhs_expression,
const char * rhs_expression,
BiggestInt lhs,
BiggestInt rhs 
)
+
+inlinestatic
+
+ +

Definition at line 16152 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_eq_helper_3_01true_01_4-members.html b/doc/html/classtesting_1_1internal_1_1_eq_helper_3_01true_01_4-members.html new file mode 100644 index 0000000..0f2c297 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_eq_helper_3_01true_01_4-members.html @@ -0,0 +1,109 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::EqHelper< true > Member List
+
+
+ +

This is the complete list of members for testing::internal::EqHelper< true >, including all inherited members.

+ + + +
Compare(const char *lhs_expression, const char *rhs_expression, const T1 &lhs, const T2 &rhs, typename EnableIf<!std::is_pointer< T2 >::value >::type *=nullptr)testing::internal::EqHelper< true >inlinestatic
Compare(const char *lhs_expression, const char *rhs_expression, Secret *, T *rhs)testing::internal::EqHelper< true >inlinestatic
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_eq_helper_3_01true_01_4.html b/doc/html/classtesting_1_1internal_1_1_eq_helper_3_01true_01_4.html new file mode 100644 index 0000000..48a2cfd --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_eq_helper_3_01true_01_4.html @@ -0,0 +1,240 @@ + + + + + + + +uTL: testing::internal::EqHelper< true > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::EqHelper< true > Class Template Reference
+
+
+ +

#include <gtest.h>

+ + + + + + + + +

+Static Public Member Functions

template<typename T1 , typename T2 >
static AssertionResult Compare (const char *lhs_expression, const char *rhs_expression, const T1 &lhs, const T2 &rhs, typename EnableIf<!std::is_pointer< T2 >::value >::type *=nullptr)
 
template<typename T >
static AssertionResult Compare (const char *lhs_expression, const char *rhs_expression, Secret *, T *rhs)
 
+

Detailed Description

+

template<>
+class testing::internal::EqHelper< true >

+ + +

Definition at line 16163 of file gtest.h.

+

Member Function Documentation

+ +

◆ Compare() [1/2]

+ +
+
+
+template<typename T1 , typename T2 >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static AssertionResult testing::internal::EqHelper< true >::Compare (const char * lhs_expression,
const char * rhs_expression,
const T1 & lhs,
const T2 & rhs,
typename EnableIf<!std::is_pointer< T2 >::value >::type *  = nullptr 
)
+
+inlinestatic
+
+ +

Definition at line 16170 of file gtest.h.

+ +
+
+ +

◆ Compare() [2/2]

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
static AssertionResult testing::internal::EqHelper< true >::Compare (const char * lhs_expression,
const char * rhs_expression,
Secret * ,
T * rhs 
)
+
+inlinestatic
+
+ +

Definition at line 16185 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_flat_tuple-members.html b/doc/html/classtesting_1_1internal_1_1_flat_tuple-members.html new file mode 100644 index 0000000..abc24ea --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_flat_tuple-members.html @@ -0,0 +1,111 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::FlatTuple< T > Member List
+
+
+ +

This is the complete list of members for testing::internal::FlatTuple< T >, including all inherited members.

+ + + + + +
FlatTuple()=defaulttesting::internal::FlatTuple< T >
FlatTuple(T... t)testing::internal::FlatTuple< T >inlineexplicit
Get() consttesting::internal::FlatTuple< T >inline
Get()testing::internal::FlatTuple< T >inline
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_flat_tuple.html b/doc/html/classtesting_1_1internal_1_1_flat_tuple.html new file mode 100644 index 0000000..a0d2466 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_flat_tuple.html @@ -0,0 +1,263 @@ + + + + + + + +uTL: testing::internal::FlatTuple< T > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::FlatTuple< T > Class Template Reference
+
+
+ +

#include <gtest.h>

+
+Inheritance diagram for testing::internal::FlatTuple< T >:
+
+
+ + +testing::internal::FlatTupleBase< FlatTuple< T... >, MakeIndexSequence< sizeof...(T)>::type > + +
+ + + + + + + + + + + + +

+Public Member Functions

 FlatTuple ()=default
 
 FlatTuple (T... t)
 
template<size_t I>
const ElemFromList< I, Indices, T... >::type & Get () const
 
template<size_t I>
ElemFromList< I, Indices, T... >::type & Get ()
 
+

Detailed Description

+

template<typename... T>
+class testing::internal::FlatTuple< T >

+ + +

Definition at line 7693 of file gtest.h.

+

Constructor & Destructor Documentation

+ +

◆ FlatTuple() [1/2]

+ +
+
+
+template<typename... T>
+ + + + + +
+ + + + + + + +
testing::internal::FlatTuple< T >::FlatTuple ()
+
+default
+
+ +
+
+ +

◆ FlatTuple() [2/2]

+ +
+
+
+template<typename... T>
+ + + + + +
+ + + + + + + + +
testing::internal::FlatTuple< T >::FlatTuple (T... t)
+
+inlineexplicit
+
+ +

Definition at line 7737 of file gtest.h.

+ +
+
+

Member Function Documentation

+ +

◆ Get() [1/2]

+ +
+
+
+template<typename... T>
+
+template<size_t I>
+ + + + + +
+ + + + + + + +
const ElemFromList<I, Indices, T...>::type& testing::internal::FlatTuple< T >::Get () const
+
+inline
+
+ +

Definition at line 7740 of file gtest.h.

+ +
+
+ +

◆ Get() [2/2]

+ +
+
+
+template<typename... T>
+
+template<size_t I>
+ + + + + +
+ + + + + + + +
ElemFromList<I, Indices, T...>::type& testing::internal::FlatTuple< T >::Get ()
+
+inline
+
+ +

Definition at line 7745 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_flat_tuple.js b/doc/html/classtesting_1_1internal_1_1_flat_tuple.js new file mode 100644 index 0000000..0a84305 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_flat_tuple.js @@ -0,0 +1,7 @@ +var classtesting_1_1internal_1_1_flat_tuple = +[ + [ "FlatTuple", "classtesting_1_1internal_1_1_flat_tuple.html#a056c58b5dd85f470ec5db1db9956c702", null ], + [ "FlatTuple", "classtesting_1_1internal_1_1_flat_tuple.html#a611d01b9ff2437e4b9cfe3bbedc6d6ae", null ], + [ "Get", "classtesting_1_1internal_1_1_flat_tuple.html#a9ea6508fa6413ceca5e38b8077c67938", null ], + [ "Get", "classtesting_1_1internal_1_1_flat_tuple.html#a48a13560f8963f727d81a7922e3b3e50", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1internal_1_1_flat_tuple.png b/doc/html/classtesting_1_1internal_1_1_flat_tuple.png new file mode 100644 index 0000000000000000000000000000000000000000..9f819f47ca4ef2ec3c95197b5624fd6b0f3fe2a3 GIT binary patch literal 1421 zcmaKqeKga19LIlhT4*XeVx+5wQEFu#Dq+aOWFuOz3G3H!Tl854lM$ zR$3VI5Vv{Qo!CwH6e&-~!`Kxy!YM{;c7N;scmKGbbH3m6{+`$8`#zuZ`Fw5%_~Z5U zO!WW&&?k6%5&>Wx64C)W+R%OO^>+Yt0qUC06a*;(26>u8wJY`K0Hr)Zub2Ez;j)x%-z? zTA<;z(*;pBujScpOoQ>K|(B0?(a!?j%IKdXotHq#RdK1g^%DpqDWUV!E z5u4gkyz+E()*eNe9Co?O1^miL>T)6#+NMN z1jnf|Oc!DMmGm)p;=Xy#0joUf?O|Ipgz6@S58F+MPY9Y!9S&v+9tsaFsHSD8{-@2o zRNANdwexpf)%r|>=kI7uKgZo!5FFsO`7#n{=Ln@O2RV*j3efg_Dmwb0{YROf!6u{7 z=^;l3E4Km86wFb>7x!-HwFzyh=A_fC!%_vOym)3YGly%;Fg!V{2E2i(TYkd_jhO=T_FD-2anm!c)>+ts0&aj~mQ}NEh?})^6LM zc=)s-3sr2}&awEYUZhCY_{_8zQL8D6w>umU+Dq?aaBKqDmQmuk+*B=}*DF^b2%mnR zK~jV{Tc}86w~>0Yw8yz=uH_4Zr}GXOS9!ynZwht^sh7nbW_1 z|8K*n$Rqk%Jt|xYfP8e*$z-Ukt(vk>XvinK76ZWDCi&u-VAZ0FF85>!F4VO^lB=wy z-8!meD|-wmCXIEqrFnP6$c=G5^uuE{3(_Jz3bs%F$H+Aoe|mMsw$@V>F7omIl`rD~ z$kO8{@kNiH0g(a>u!blaF!ql6T6uM7*{+}HJ>}rBhtrWv9qpxluFQ$p$!Tt+3t@;d zw_Tg+Q`{P|OEH + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::FloatingPoint< RawType > Member List
+
+ +
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_floating_point.html b/doc/html/classtesting_1_1internal_1_1_floating_point.html new file mode 100644 index 0000000..6d42610 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_floating_point.html @@ -0,0 +1,731 @@ + + + + + + + +uTL: testing::internal::FloatingPoint< RawType > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::FloatingPoint< RawType > Class Template Reference
+
+
+ +

#include <gtest.h>

+ + + + +

+Public Types

typedef TypeWithSize< sizeof(RawType)>::UInt Bits
 
+ + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 FloatingPoint (const RawType &x)
 
const Bitsbits () const
 
Bits exponent_bits () const
 
Bits fraction_bits () const
 
Bits sign_bit () const
 
bool is_nan () const
 
bool AlmostEquals (const FloatingPoint &rhs) const
 
template<>
float Max ()
 
template<>
double Max ()
 
+ + + + + + + +

+Static Public Member Functions

static RawType ReinterpretBits (const Bits bits)
 
static RawType Infinity ()
 
static RawType Max ()
 
+ + + + + + + + + + + + + + + +

+Static Public Attributes

static const size_t kBitCount = 8*sizeof(RawType)
 
static const size_t kFractionBitCount
 
static const size_t kExponentBitCount = kBitCount - 1 - kFractionBitCount
 
static const Bits kSignBitMask = static_cast<Bits>(1) << (kBitCount - 1)
 
static const Bits kFractionBitMask
 
static const Bits kExponentBitMask = ~(kSignBitMask | kFractionBitMask)
 
static const size_t kMaxUlps = 4
 
+

Detailed Description

+

template<typename RawType>
+class testing::internal::FloatingPoint< RawType >

+ + +

Definition at line 6687 of file gtest.h.

+

Member Typedef Documentation

+ +

◆ Bits

+ +
+
+
+template<typename RawType>
+ + + + +
typedef TypeWithSize<sizeof(RawType)>::UInt testing::internal::FloatingPoint< RawType >::Bits
+
+ +

Definition at line 6691 of file gtest.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ FloatingPoint()

+ +
+
+
+template<typename RawType>
+ + + + + +
+ + + + + + + + +
testing::internal::FloatingPoint< RawType >::FloatingPoint (const RawType & x)
+
+inlineexplicit
+
+ +

Definition at line 6735 of file gtest.h.

+ +
+
+

Member Function Documentation

+ +

◆ AlmostEquals()

+ +
+
+
+template<typename RawType>
+ + + + + +
+ + + + + + + + +
bool testing::internal::FloatingPoint< RawType >::AlmostEquals (const FloatingPoint< RawType > & rhs) const
+
+inline
+
+ +

Definition at line 6783 of file gtest.h.

+ +
+
+ +

◆ bits()

+ +
+
+
+template<typename RawType>
+ + + + + +
+ + + + + + + +
const Bits& testing::internal::FloatingPoint< RawType >::bits () const
+
+inline
+
+ +

Definition at line 6759 of file gtest.h.

+ +
+
+ +

◆ exponent_bits()

+ +
+
+
+template<typename RawType>
+ + + + + +
+ + + + + + + +
Bits testing::internal::FloatingPoint< RawType >::exponent_bits () const
+
+inline
+
+ +

Definition at line 6762 of file gtest.h.

+ +
+
+ +

◆ fraction_bits()

+ +
+
+
+template<typename RawType>
+ + + + + +
+ + + + + + + +
Bits testing::internal::FloatingPoint< RawType >::fraction_bits () const
+
+inline
+
+ +

Definition at line 6765 of file gtest.h.

+ +
+
+ +

◆ Infinity()

+ +
+
+
+template<typename RawType>
+ + + + + +
+ + + + + + + +
static RawType testing::internal::FloatingPoint< RawType >::Infinity ()
+
+inlinestatic
+
+ +

Definition at line 6749 of file gtest.h.

+ +
+
+ +

◆ is_nan()

+ +
+
+
+template<typename RawType>
+ + + + + +
+ + + + + + + +
bool testing::internal::FloatingPoint< RawType >::is_nan () const
+
+inline
+
+ +

Definition at line 6771 of file gtest.h.

+ +
+
+ +

◆ Max() [1/3]

+ +
+
+
+template<typename RawType>
+ + + + + +
+ + + + + + + +
static RawType testing::internal::FloatingPoint< RawType >::Max ()
+
+static
+
+ +
+
+ +

◆ Max() [2/3]

+ +
+
+
+template<>
+ + + + + +
+ + + + + + + +
float testing::internal::FloatingPoint< float >::Max ()
+
+inline
+
+ +

Definition at line 6839 of file gtest.h.

+ +
+
+ +

◆ Max() [3/3]

+ +
+
+
+template<>
+ + + + + +
+ + + + + + + +
double testing::internal::FloatingPoint< double >::Max ()
+
+inline
+
+ +

Definition at line 6841 of file gtest.h.

+ +
+
+ +

◆ ReinterpretBits()

+ +
+
+
+template<typename RawType>
+ + + + + +
+ + + + + + + + +
static RawType testing::internal::FloatingPoint< RawType >::ReinterpretBits (const Bits bits)
+
+inlinestatic
+
+ +

Definition at line 6742 of file gtest.h.

+ +
+
+ +

◆ sign_bit()

+ +
+
+
+template<typename RawType>
+ + + + + +
+ + + + + + + +
Bits testing::internal::FloatingPoint< RawType >::sign_bit () const
+
+inline
+
+ +

Definition at line 6768 of file gtest.h.

+ +
+
+

Member Data Documentation

+ +

◆ kBitCount

+ +
+
+
+template<typename RawType>
+ + + + + +
+ + + + +
const size_t testing::internal::FloatingPoint< RawType >::kBitCount = 8*sizeof(RawType)
+
+static
+
+ +

Definition at line 6696 of file gtest.h.

+ +
+
+ +

◆ kExponentBitCount

+ +
+
+
+template<typename RawType>
+ + + + + +
+ + + + +
const size_t testing::internal::FloatingPoint< RawType >::kExponentBitCount = kBitCount - 1 - kFractionBitCount
+
+static
+
+ +

Definition at line 6703 of file gtest.h.

+ +
+
+ +

◆ kExponentBitMask

+ +
+
+
+template<typename RawType>
+ + + + + +
+ + + + +
const Bits testing::internal::FloatingPoint< RawType >::kExponentBitMask = ~(kSignBitMask | kFractionBitMask)
+
+static
+
+ +

Definition at line 6713 of file gtest.h.

+ +
+
+ +

◆ kFractionBitCount

+ +
+
+
+template<typename RawType>
+ + + + + +
+ + + + +
const size_t testing::internal::FloatingPoint< RawType >::kFractionBitCount
+
+static
+
+Initial value:
=
std::numeric_limits<RawType>::digits - 1
+

Definition at line 6699 of file gtest.h.

+ +
+
+ +

◆ kFractionBitMask

+ +
+
+
+template<typename RawType>
+ + + + + +
+ + + + +
const Bits testing::internal::FloatingPoint< RawType >::kFractionBitMask
+
+static
+
+Initial value:
=
~static_cast<Bits>(0) >> (kExponentBitCount + 1)
+

Definition at line 6709 of file gtest.h.

+ +
+
+ +

◆ kMaxUlps

+ +
+
+
+template<typename RawType>
+ + + + + +
+ + + + +
const size_t testing::internal::FloatingPoint< RawType >::kMaxUlps = 4
+
+static
+
+ +

Definition at line 6727 of file gtest.h.

+ +
+
+ +

◆ kSignBitMask

+ +
+
+
+template<typename RawType>
+ + + + + +
+ + + + +
const Bits testing::internal::FloatingPoint< RawType >::kSignBitMask = static_cast<Bits>(1) << (kBitCount - 1)
+
+static
+
+ +

Definition at line 6706 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_floating_point.js b/doc/html/classtesting_1_1internal_1_1_floating_point.js new file mode 100644 index 0000000..8ab10e6 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_floating_point.js @@ -0,0 +1,13 @@ +var classtesting_1_1internal_1_1_floating_point = +[ + [ "Bits", "classtesting_1_1internal_1_1_floating_point.html#abf228bf6cd48f12c8b44c85b4971a731", null ], + [ "FloatingPoint", "classtesting_1_1internal_1_1_floating_point.html#a0dabf840863e0df84046f171c891fe71", null ], + [ "AlmostEquals", "classtesting_1_1internal_1_1_floating_point.html#a965214c1af2f9ac5adb1393794aa81e5", null ], + [ "bits", "classtesting_1_1internal_1_1_floating_point.html#aab053be914bdc9e507c0db89740c318c", null ], + [ "exponent_bits", "classtesting_1_1internal_1_1_floating_point.html#af6bf8fab8df572ecb137a3516ff390ae", null ], + [ "fraction_bits", "classtesting_1_1internal_1_1_floating_point.html#aa17337e50a2ac855719bc0676529558f", null ], + [ "is_nan", "classtesting_1_1internal_1_1_floating_point.html#a1fc654fd206efa98e480aa1e034f30d5", null ], + [ "Max", "classtesting_1_1internal_1_1_floating_point.html#af2eda9331e679229a1baa3404b57b51d", null ], + [ "Max", "classtesting_1_1internal_1_1_floating_point.html#afc2e85c0e886cb13b2300e961c9a9648", null ], + [ "sign_bit", "classtesting_1_1internal_1_1_floating_point.html#afb8a816bb598225d775caaf43a893ef0", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1internal_1_1_format_for_comparison-members.html b/doc/html/classtesting_1_1internal_1_1_format_for_comparison-members.html new file mode 100644 index 0000000..bd23f56 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_format_for_comparison-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::FormatForComparison< ToPrint, OtherOperand > Member List
+
+
+ +

This is the complete list of members for testing::internal::FormatForComparison< ToPrint, OtherOperand >, including all inherited members.

+ + +
Format(const ToPrint &value)testing::internal::FormatForComparison< ToPrint, OtherOperand >inlinestatic
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_format_for_comparison.html b/doc/html/classtesting_1_1internal_1_1_format_for_comparison.html new file mode 100644 index 0000000..8f8095f --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_format_for_comparison.html @@ -0,0 +1,156 @@ + + + + + + + +uTL: testing::internal::FormatForComparison< ToPrint, OtherOperand > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::FormatForComparison< ToPrint, OtherOperand > Class Template Reference
+
+
+ +

#include <gtest.h>

+ + + + +

+Static Public Member Functions

::std::string Format (const ToPrint &value)
 
+

Detailed Description

+

template<typename ToPrint, typename OtherOperand>
+class testing::internal::FormatForComparison< ToPrint, OtherOperand >

+ + +

Definition at line 8340 of file gtest.h.

+

Member Function Documentation

+ +

◆ Format()

+ +
+
+
+template<typename ToPrint , typename OtherOperand >
+ + + + + +
+ + + + + + + + +
::std::string testing::internal::FormatForComparison< ToPrint, OtherOperand >::Format (const ToPrint & value)
+
+inlinestatic
+
+ +

Definition at line 8342 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_format_for_comparison_3_01_to_print[_n]_00_01_other_operand_01_4-members.html b/doc/html/classtesting_1_1internal_1_1_format_for_comparison_3_01_to_print[_n]_00_01_other_operand_01_4-members.html new file mode 100644 index 0000000..65cc822 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_format_for_comparison_3_01_to_print[_n]_00_01_other_operand_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::FormatForComparison< ToPrint[N], OtherOperand > Member List
+
+
+ +

This is the complete list of members for testing::internal::FormatForComparison< ToPrint[N], OtherOperand >, including all inherited members.

+ + +
Format(const ToPrint *value)testing::internal::FormatForComparison< ToPrint[N], OtherOperand >inlinestatic
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_format_for_comparison_3_01_to_print[_n]_00_01_other_operand_01_4.html b/doc/html/classtesting_1_1internal_1_1_format_for_comparison_3_01_to_print[_n]_00_01_other_operand_01_4.html new file mode 100644 index 0000000..d1f49a7 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_format_for_comparison_3_01_to_print[_n]_00_01_other_operand_01_4.html @@ -0,0 +1,156 @@ + + + + + + + +uTL: testing::internal::FormatForComparison< ToPrint[N], OtherOperand > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::FormatForComparison< ToPrint[N], OtherOperand > Class Template Reference
+
+
+ +

#include <gtest.h>

+ + + + +

+Static Public Member Functions

::std::string Format (const ToPrint *value)
 
+

Detailed Description

+

template<typename ToPrint, size_t N, typename OtherOperand>
+class testing::internal::FormatForComparison< ToPrint[N], OtherOperand >

+ + +

Definition at line 8349 of file gtest.h.

+

Member Function Documentation

+ +

◆ Format()

+ +
+
+
+template<typename ToPrint , size_t N, typename OtherOperand >
+ + + + + +
+ + + + + + + + +
::std::string testing::internal::FormatForComparison< ToPrint[N], OtherOperand >::Format (const ToPrint * value)
+
+inlinestatic
+
+ +

Definition at line 8351 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_g_test_log-members.html b/doc/html/classtesting_1_1internal_1_1_g_test_log-members.html new file mode 100644 index 0000000..2ca4bbe --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_g_test_log-members.html @@ -0,0 +1,110 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::GTestLog Member List
+
+
+ +

This is the complete list of members for testing::internal::GTestLog, including all inherited members.

+ + + + +
GetStream()testing::internal::GTestLoginline
GTestLog(GTestLogSeverity severity, const char *file, int line)testing::internal::GTestLog
~GTestLog()testing::internal::GTestLog
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_g_test_log.html b/doc/html/classtesting_1_1internal_1_1_g_test_log.html new file mode 100644 index 0000000..611aeee --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_g_test_log.html @@ -0,0 +1,211 @@ + + + + + + + +uTL: testing::internal::GTestLog Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::GTestLog Class Reference
+
+
+ +

#include <gtest.h>

+ + + + + + + + +

+Public Member Functions

 GTestLog (GTestLogSeverity severity, const char *file, int line)
 
 ~GTestLog ()
 
::std::ostream & GetStream ()
 
+

Detailed Description

+
+

Definition at line 1229 of file gtest.h.

+

Constructor & Destructor Documentation

+ +

◆ GTestLog()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
testing::internal::GTestLog::GTestLog (GTestLogSeverity severity,
const char * file,
int line 
)
+
+ +

Definition at line 10648 of file gtest-all.cc.

+ +
+
+ +

◆ ~GTestLog()

+ +
+
+ + + + + + + +
testing::internal::GTestLog::~GTestLog ()
+
+ +

Definition at line 10659 of file gtest-all.cc.

+ +
+
+

Member Function Documentation

+ +

◆ GetStream()

+ +
+
+ + + + + +
+ + + + + + + +
::std::ostream& testing::internal::GTestLog::GetStream ()
+
+inline
+
+ +

Definition at line 1236 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_g_test_log.js b/doc/html/classtesting_1_1internal_1_1_g_test_log.js new file mode 100644 index 0000000..77e90c0 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_g_test_log.js @@ -0,0 +1,6 @@ +var classtesting_1_1internal_1_1_g_test_log = +[ + [ "GTestLog", "classtesting_1_1internal_1_1_g_test_log.html#a364691bf972983a59cfa2891062a64af", null ], + [ "~GTestLog", "classtesting_1_1internal_1_1_g_test_log.html#a978a099703bbaa0f380216e8d7ee03d3", null ], + [ "GetStream", "classtesting_1_1internal_1_1_g_test_log.html#aebb92e67d98eca69f0347d5121dab27a", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1internal_1_1_g_test_mutex_lock-members.html b/doc/html/classtesting_1_1internal_1_1_g_test_mutex_lock-members.html new file mode 100644 index 0000000..80153c5 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_g_test_mutex_lock-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::GTestMutexLock Member List
+
+
+ +

This is the complete list of members for testing::internal::GTestMutexLock, including all inherited members.

+ + +
GTestMutexLock(Mutex *)testing::internal::GTestMutexLockinlineexplicit
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_g_test_mutex_lock.html b/doc/html/classtesting_1_1internal_1_1_g_test_mutex_lock.html new file mode 100644 index 0000000..ccd6002 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_g_test_mutex_lock.html @@ -0,0 +1,151 @@ + + + + + + + +uTL: testing::internal::GTestMutexLock Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::GTestMutexLock Class Reference
+
+
+ +

#include <gtest.h>

+ + + + +

+Public Member Functions

 GTestMutexLock (Mutex *)
 
+

Detailed Description

+
+

Definition at line 2157 of file gtest.h.

+

Constructor & Destructor Documentation

+ +

◆ GTestMutexLock()

+ +
+
+ + + + + +
+ + + + + + + + +
testing::internal::GTestMutexLock::GTestMutexLock (Mutex)
+
+inlineexplicit
+
+ +

Definition at line 2159 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_g_test_mutex_lock.js b/doc/html/classtesting_1_1internal_1_1_g_test_mutex_lock.js new file mode 100644 index 0000000..77e19d3 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_g_test_mutex_lock.js @@ -0,0 +1,4 @@ +var classtesting_1_1internal_1_1_g_test_mutex_lock = +[ + [ "GTestMutexLock", "classtesting_1_1internal_1_1_g_test_mutex_lock.html#a77e3cba326d5356b4a1dea3790559c26", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1internal_1_1_ignored_value-members.html b/doc/html/classtesting_1_1internal_1_1_ignored_value-members.html new file mode 100644 index 0000000..d763327 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_ignored_value-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::IgnoredValue Member List
+
+
+ +

This is the complete list of members for testing::internal::IgnoredValue, including all inherited members.

+ + +
IgnoredValue(const T &)testing::internal::IgnoredValueinline
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_ignored_value.html b/doc/html/classtesting_1_1internal_1_1_ignored_value.html new file mode 100644 index 0000000..8adad7d --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_ignored_value.html @@ -0,0 +1,154 @@ + + + + + + + +uTL: testing::internal::IgnoredValue Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::IgnoredValue Class Reference
+
+
+ +

#include <gtest.h>

+ + + + + +

+Public Member Functions

template<typename T >
 IgnoredValue (const T &)
 
+

Detailed Description

+
+

Definition at line 6544 of file gtest.h.

+

Constructor & Destructor Documentation

+ +

◆ IgnoredValue()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + +
testing::internal::IgnoredValue::IgnoredValue (const T & )
+
+inline
+
+ +

Definition at line 6552 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_ignored_value.js b/doc/html/classtesting_1_1internal_1_1_ignored_value.js new file mode 100644 index 0000000..8f99228 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_ignored_value.js @@ -0,0 +1,4 @@ +var classtesting_1_1internal_1_1_ignored_value = +[ + [ "IgnoredValue", "classtesting_1_1internal_1_1_ignored_value.html#a6c72839c07a9da8d027efb253144bd91", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1internal_1_1_implicitly_convertible-members.html b/doc/html/classtesting_1_1internal_1_1_implicitly_convertible-members.html new file mode 100644 index 0000000..5483da4 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_implicitly_convertible-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::ImplicitlyConvertible< From, To > Member List
+
+
+ +

This is the complete list of members for testing::internal::ImplicitlyConvertible< From, To >, including all inherited members.

+ + +
valuetesting::internal::ImplicitlyConvertible< From, To >static
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_implicitly_convertible.html b/doc/html/classtesting_1_1internal_1_1_implicitly_convertible.html new file mode 100644 index 0000000..88a0fee --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_implicitly_convertible.html @@ -0,0 +1,152 @@ + + + + + + + +uTL: testing::internal::ImplicitlyConvertible< From, To > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::ImplicitlyConvertible< From, To > Class Template Reference
+
+
+ +

#include <gtest.h>

+ + + + +

+Static Public Attributes

static const bool value
 
+

Detailed Description

+

template<typename From, typename To>
+class testing::internal::ImplicitlyConvertible< From, To >

+ + +

Definition at line 7344 of file gtest.h.

+

Member Data Documentation

+ +

◆ value

+ +
+
+
+template<typename From , typename To >
+ + + + + +
+ + + + +
const bool testing::internal::ImplicitlyConvertible< From, To >::value
+
+static
+
+Initial value:
=
sizeof(Helper(ImplicitlyConvertible::MakeFrom())) == 1
+

Definition at line 7380 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_mutex-members.html b/doc/html/classtesting_1_1internal_1_1_mutex-members.html new file mode 100644 index 0000000..ec9f6da --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_mutex-members.html @@ -0,0 +1,111 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::Mutex Member List
+
+
+ +

This is the complete list of members for testing::internal::Mutex, including all inherited members.

+ + + + + +
AssertHeld() consttesting::internal::Mutexinline
Lock()testing::internal::Mutexinline
Mutex()testing::internal::Mutexinline
Unlock()testing::internal::Mutexinline
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_mutex.html b/doc/html/classtesting_1_1internal_1_1_mutex.html new file mode 100644 index 0000000..68d1501 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_mutex.html @@ -0,0 +1,238 @@ + + + + + + + +uTL: testing::internal::Mutex Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::Mutex Class Reference
+
+
+ +

#include <gtest.h>

+ + + + + + + + + + +

+Public Member Functions

 Mutex ()
 
void Lock ()
 
void Unlock ()
 
void AssertHeld () const
 
+

Detailed Description

+
+

Definition at line 2139 of file gtest.h.

+

Constructor & Destructor Documentation

+ +

◆ Mutex()

+ +
+
+ + + + + +
+ + + + + + + +
testing::internal::Mutex::Mutex ()
+
+inline
+
+ +

Definition at line 2141 of file gtest.h.

+ +
+
+

Member Function Documentation

+ +

◆ AssertHeld()

+ +
+
+ + + + + +
+ + + + + + + +
void testing::internal::Mutex::AssertHeld () const
+
+inline
+
+ +

Definition at line 2144 of file gtest.h.

+ +
+
+ +

◆ Lock()

+ +
+
+ + + + + +
+ + + + + + + +
void testing::internal::Mutex::Lock ()
+
+inline
+
+ +

Definition at line 2142 of file gtest.h.

+ +
+
+ +

◆ Unlock()

+ +
+
+ + + + + +
+ + + + + + + +
void testing::internal::Mutex::Unlock ()
+
+inline
+
+ +

Definition at line 2143 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_mutex.js b/doc/html/classtesting_1_1internal_1_1_mutex.js new file mode 100644 index 0000000..0579860 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_mutex.js @@ -0,0 +1,7 @@ +var classtesting_1_1internal_1_1_mutex = +[ + [ "Mutex", "classtesting_1_1internal_1_1_mutex.html#a38e1833a78e3eec81ad23ce1b056b40e", null ], + [ "AssertHeld", "classtesting_1_1internal_1_1_mutex.html#af45bf1660ac4110338a02a8680b2f486", null ], + [ "Lock", "classtesting_1_1internal_1_1_mutex.html#ae7e2191886c00182176b23c4f4d049f8", null ], + [ "Unlock", "classtesting_1_1internal_1_1_mutex.html#a315188055de1be98884519ad84eff2e6", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1internal_1_1_native_array-members.html b/doc/html/classtesting_1_1internal_1_1_native_array-members.html new file mode 100644 index 0000000..5e212f5 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_native_array-members.html @@ -0,0 +1,118 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::NativeArray< Element > Member List
+
+ +
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_native_array.html b/doc/html/classtesting_1_1internal_1_1_native_array.html new file mode 100644 index 0000000..389d4fc --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_native_array.html @@ -0,0 +1,474 @@ + + + + + + + +uTL: testing::internal::NativeArray< Element > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::NativeArray< Element > Class Template Reference
+
+
+ +

#include <gtest.h>

+ + + + + + + + +

+Public Types

typedef Element value_type
 
typedef Element * iterator
 
typedef const Element * const_iterator
 
+ + + + + + + + + + + + + + + + + +

+Public Member Functions

 NativeArray (const Element *array, size_t count, RelationToSourceReference)
 
 NativeArray (const Element *array, size_t count, RelationToSourceCopy)
 
 NativeArray (const NativeArray &rhs)
 
 ~NativeArray ()
 
size_t size () const
 
const_iterator begin () const
 
const_iterator end () const
 
bool operator== (const NativeArray &rhs) const
 
+

Detailed Description

+

template<typename Element>
+class testing::internal::NativeArray< Element >

+ + +

Definition at line 7579 of file gtest.h.

+

Member Typedef Documentation

+ +

◆ const_iterator

+ +
+
+
+template<typename Element >
+ + + + +
typedef const Element* testing::internal::NativeArray< Element >::const_iterator
+
+ +

Definition at line 7584 of file gtest.h.

+ +
+
+ +

◆ iterator

+ +
+
+
+template<typename Element >
+ + + + +
typedef Element* testing::internal::NativeArray< Element >::iterator
+
+ +

Definition at line 7583 of file gtest.h.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<typename Element >
+ + + + +
typedef Element testing::internal::NativeArray< Element >::value_type
+
+ +

Definition at line 7582 of file gtest.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ NativeArray() [1/3]

+ +
+
+
+template<typename Element >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
testing::internal::NativeArray< Element >::NativeArray (const Element * array,
size_t count,
RelationToSourceReference  
)
+
+inline
+
+ +

Definition at line 7587 of file gtest.h.

+ +
+
+ +

◆ NativeArray() [2/3]

+ +
+
+
+template<typename Element >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
testing::internal::NativeArray< Element >::NativeArray (const Element * array,
size_t count,
RelationToSourceCopy  
)
+
+inline
+
+ +

Definition at line 7592 of file gtest.h.

+ +
+
+ +

◆ NativeArray() [3/3]

+ +
+
+
+template<typename Element >
+ + + + + +
+ + + + + + + + +
testing::internal::NativeArray< Element >::NativeArray (const NativeArray< Element > & rhs)
+
+inline
+
+ +

Definition at line 7597 of file gtest.h.

+ +
+
+ +

◆ ~NativeArray()

+ +
+
+
+template<typename Element >
+ + + + + +
+ + + + + + + +
testing::internal::NativeArray< Element >::~NativeArray ()
+
+inline
+
+ +

Definition at line 7601 of file gtest.h.

+ +
+
+

Member Function Documentation

+ +

◆ begin()

+ +
+
+
+template<typename Element >
+ + + + + +
+ + + + + + + +
const_iterator testing::internal::NativeArray< Element >::begin () const
+
+inline
+
+ +

Definition at line 7608 of file gtest.h.

+ +
+
+ +

◆ end()

+ +
+
+
+template<typename Element >
+ + + + + +
+ + + + + + + +
const_iterator testing::internal::NativeArray< Element >::end () const
+
+inline
+
+ +

Definition at line 7609 of file gtest.h.

+ +
+
+ +

◆ operator==()

+ +
+
+
+template<typename Element >
+ + + + + +
+ + + + + + + + +
bool testing::internal::NativeArray< Element >::operator== (const NativeArray< Element > & rhs) const
+
+inline
+
+ +

Definition at line 7610 of file gtest.h.

+ +
+
+ +

◆ size()

+ +
+
+
+template<typename Element >
+ + + + + +
+ + + + + + + +
size_t testing::internal::NativeArray< Element >::size () const
+
+inline
+
+ +

Definition at line 7607 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_native_array.js b/doc/html/classtesting_1_1internal_1_1_native_array.js new file mode 100644 index 0000000..4383ded --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_native_array.js @@ -0,0 +1,14 @@ +var classtesting_1_1internal_1_1_native_array = +[ + [ "const_iterator", "classtesting_1_1internal_1_1_native_array.html#a9ce7c8408460d7158a2870456d134557", null ], + [ "iterator", "classtesting_1_1internal_1_1_native_array.html#ac1301a57977b57a1ad013e4e25fc2a72", null ], + [ "value_type", "classtesting_1_1internal_1_1_native_array.html#a12216d686e16e4cc63d952fada5b2ba9", null ], + [ "NativeArray", "classtesting_1_1internal_1_1_native_array.html#a52b3689c62532703d11e9d82939a7141", null ], + [ "NativeArray", "classtesting_1_1internal_1_1_native_array.html#ac184ee5741af5be3402213819c834405", null ], + [ "NativeArray", "classtesting_1_1internal_1_1_native_array.html#abb346ac3040f5da733f594cc2d5958bc", null ], + [ "~NativeArray", "classtesting_1_1internal_1_1_native_array.html#a55ab5948d473a487303dcf6e02ad1f60", null ], + [ "begin", "classtesting_1_1internal_1_1_native_array.html#a3046d93cfa23097e7b7c91f5f982dc78", null ], + [ "end", "classtesting_1_1internal_1_1_native_array.html#ae1cda748e49c6906421c6183c4d07c5a", null ], + [ "operator==", "classtesting_1_1internal_1_1_native_array.html#a81b90f5739ed812610e68dc34c9e3850", null ], + [ "size", "classtesting_1_1internal_1_1_native_array.html#af96a4a5ca0cdd5d163c47a081f08bd89", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1internal_1_1_param_generator-members.html b/doc/html/classtesting_1_1internal_1_1_param_generator-members.html new file mode 100644 index 0000000..b06b240 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_param_generator-members.html @@ -0,0 +1,113 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::ParamGenerator< T > Member List
+
+
+ +

This is the complete list of members for testing::internal::ParamGenerator< T >, including all inherited members.

+ + + + + + + +
begin() consttesting::internal::ParamGenerator< T >inline
end() consttesting::internal::ParamGenerator< T >inline
iterator typedeftesting::internal::ParamGenerator< T >
operator=(const ParamGenerator &other)testing::internal::ParamGenerator< T >inline
ParamGenerator(ParamGeneratorInterface< T > *impl)testing::internal::ParamGenerator< T >inlineexplicit
ParamGenerator(const ParamGenerator &other)testing::internal::ParamGenerator< T >inline
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_param_generator.html b/doc/html/classtesting_1_1internal_1_1_param_generator.html new file mode 100644 index 0000000..e73f7f3 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_param_generator.html @@ -0,0 +1,308 @@ + + + + + + + +uTL: testing::internal::ParamGenerator< T > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::ParamGenerator< T > Class Template Reference
+
+
+ +

#include <gtest.h>

+ + + + +

+Public Types

typedef ParamIterator< T > iterator
 
+ + + + + + + + + + + +

+Public Member Functions

 ParamGenerator (ParamGeneratorInterface< T > *impl)
 
 ParamGenerator (const ParamGenerator &other)
 
ParamGeneratoroperator= (const ParamGenerator &other)
 
iterator begin () const
 
iterator end () const
 
+

Detailed Description

+

template<typename T>
+class testing::internal::ParamGenerator< T >

+ + +

Definition at line 10624 of file gtest.h.

+

Member Typedef Documentation

+ +

◆ iterator

+ +
+
+
+template<typename T>
+ + + + +
typedef ParamIterator<T> testing::internal::ParamGenerator< T >::iterator
+
+ +

Definition at line 10721 of file gtest.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ ParamGenerator() [1/2]

+ +
+
+
+template<typename T>
+ + + + + +
+ + + + + + + + +
testing::internal::ParamGenerator< T >::ParamGenerator (ParamGeneratorInterface< T > * impl)
+
+inlineexplicit
+
+ +

Definition at line 10723 of file gtest.h.

+ +
+
+ +

◆ ParamGenerator() [2/2]

+ +
+
+
+template<typename T>
+ + + + + +
+ + + + + + + + +
testing::internal::ParamGenerator< T >::ParamGenerator (const ParamGenerator< T > & other)
+
+inline
+
+ +

Definition at line 10724 of file gtest.h.

+ +
+
+

Member Function Documentation

+ +

◆ begin()

+ +
+
+
+template<typename T>
+ + + + + +
+ + + + + + + +
iterator testing::internal::ParamGenerator< T >::begin () const
+
+inline
+
+ +

Definition at line 10731 of file gtest.h.

+ +
+
+ +

◆ end()

+ +
+
+
+template<typename T>
+ + + + + +
+ + + + + + + +
iterator testing::internal::ParamGenerator< T >::end () const
+
+inline
+
+ +

Definition at line 10732 of file gtest.h.

+ +
+
+ +

◆ operator=()

+ +
+
+
+template<typename T>
+ + + + + +
+ + + + + + + + +
ParamGenerator& testing::internal::ParamGenerator< T >::operator= (const ParamGenerator< T > & other)
+
+inline
+
+ +

Definition at line 10726 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_param_generator.js b/doc/html/classtesting_1_1internal_1_1_param_generator.js new file mode 100644 index 0000000..a717601 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_param_generator.js @@ -0,0 +1,9 @@ +var classtesting_1_1internal_1_1_param_generator = +[ + [ "iterator", "classtesting_1_1internal_1_1_param_generator.html#a448b08a8eaae1f1d27840d4dbd66c357", null ], + [ "ParamGenerator", "classtesting_1_1internal_1_1_param_generator.html#a6b017d4d030927714d495ee95ae92fbc", null ], + [ "ParamGenerator", "classtesting_1_1internal_1_1_param_generator.html#a5891d25c31919b3099489f8bbcd58b5e", null ], + [ "begin", "classtesting_1_1internal_1_1_param_generator.html#a14e735c8bd113556ae905a560cd2d607", null ], + [ "end", "classtesting_1_1internal_1_1_param_generator.html#aaf8f75df1099a07ff771a550b48f9fbe", null ], + [ "operator=", "classtesting_1_1internal_1_1_param_generator.html#a590a03c6e0a3a3ac6279943ad1f01dc8", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1internal_1_1_param_generator_interface-members.html b/doc/html/classtesting_1_1internal_1_1_param_generator_interface-members.html new file mode 100644 index 0000000..798e5eb --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_param_generator_interface-members.html @@ -0,0 +1,111 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::ParamGeneratorInterface< T > Member List
+
+ +
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_param_generator_interface.html b/doc/html/classtesting_1_1internal_1_1_param_generator_interface.html new file mode 100644 index 0000000..3e5813d --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_param_generator_interface.html @@ -0,0 +1,253 @@ + + + + + + + +uTL: testing::internal::ParamGeneratorInterface< T > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::ParamGeneratorInterface< T > Class Template Referenceabstract
+
+
+ +

#include <gtest.h>

+
+Inheritance diagram for testing::internal::ParamGeneratorInterface< T >:
+
+
+ + +testing::internal::RangeGenerator< T, IncrementT > +testing::internal::ValuesInIteratorRangeGenerator< T > + +
+ + + + +

+Public Types

typedef T ParamType
 
+ + + + + + + +

+Public Member Functions

virtual ~ParamGeneratorInterface ()
 
virtual ParamIteratorInterface< T > * Begin () const =0
 
virtual ParamIteratorInterface< T > * End () const =0
 
+

Detailed Description

+

template<typename T>
+class testing::internal::ParamGeneratorInterface< T >

+ + +

Definition at line 10623 of file gtest.h.

+

Member Typedef Documentation

+ +

◆ ParamType

+ +
+
+
+template<typename T>
+ + + + +
typedef T testing::internal::ParamGeneratorInterface< T >::ParamType
+
+ +

Definition at line 10704 of file gtest.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ ~ParamGeneratorInterface()

+ +
+
+
+template<typename T>
+ + + + + +
+ + + + + + + +
virtual testing::internal::ParamGeneratorInterface< T >::~ParamGeneratorInterface ()
+
+inlinevirtual
+
+ +

Definition at line 10706 of file gtest.h.

+ +
+
+

Member Function Documentation

+ +

◆ Begin()

+ + + +

◆ End()

+ + +
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_param_generator_interface.js b/doc/html/classtesting_1_1internal_1_1_param_generator_interface.js new file mode 100644 index 0000000..c264f76 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_param_generator_interface.js @@ -0,0 +1,7 @@ +var classtesting_1_1internal_1_1_param_generator_interface = +[ + [ "ParamType", "classtesting_1_1internal_1_1_param_generator_interface.html#ab33d2ea424c50beaf503cb125b3cd003", null ], + [ "~ParamGeneratorInterface", "classtesting_1_1internal_1_1_param_generator_interface.html#ac2767cb9ad2e292e291c4903323c6eff", null ], + [ "Begin", "classtesting_1_1internal_1_1_param_generator_interface.html#ae1de83b16fe9a53c67778a026c6a9569", null ], + [ "End", "classtesting_1_1internal_1_1_param_generator_interface.html#afa7211b74990e11d3fc7ad4e7113da4f", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1internal_1_1_param_generator_interface.png b/doc/html/classtesting_1_1internal_1_1_param_generator_interface.png new file mode 100644 index 0000000000000000000000000000000000000000..df3ceed8a2db1b6b069461c246e9e07242f3f9e9 GIT binary patch literal 1634 zcmb`Gc{G%39LL|+%h+ZlM~WdWV{K$fG~FqZxtXCMgre+ZO%cN7y%NXL=2|98RBkTE z-o#`bS+k6ql3f$YUiQqj%zZic^w&N2{&RolJkRg*oZs>+-}A(pQO{sRWJCY}z>tj$ z%>jT9M%YXULgv~s?cIpmV`gGW;_-M0PRuOdxcBNlLfeDMWD3L%$|Fmm0CTDZfFx~M zcblaa00_*J4NqAHgR_~FDFb+M!(z(#>V`ZQJ8&_LgiR<6BcBa$7Cr@$^48Ru@+=MX zE$L`S1{ww@>b3aj4r4%NX#${TLx6qp2lYj*#ImvNLT@6Ip^4_d!+j~55sQn}Z*Tex zpGX=Tn_Gu^$1HQNvu2wzG8RA6b@u7&rJ{vO+R4x(;h_9?yP!wf9Uk_5FfioZwo2i* z(4k$mC;NHCMTh7rIS=!mvAVL@@Z)K=JB401)8 zYhkFsdiHQAtz(z1v{6yn^!p_((}I=h_`?09>1HQ`l7P*e<7dVpZzqT^z@H6sFN{kU zIz{WF7pcVdPtE#JqgR{b`7X)RQ=9pCTmi2CxoT^XfR8@xyMkdz7Kx%VT5w84Tb0Zs z0hiXI@X{k{v3}02(ctr@oI^M3I_*+U%uYcLKtG`acD;U_1(QQwOL(Nks}8@$(5yy0 zmxj=F-i4kk>w>q4$VJQvpr$4wrw_RB^e|1 z=4?y?Z&kP#c}(p#hLt)TA+goYO4_Sil=HD3#s5R4{}2(;T%$n)oeF9I5o$XCmjnWt zHiocHftJuTfw%Cs)5*rYaD*u4 zO8)}CgM#GwKX0%Difyej)9N^0zN8 z9cv%obGa5We!iv#Zkh2^<0Xwt-pTaKw?W-elL~GE*Au6btHBX`5o(-NO|yL!I?L4-=X*?8?pe7>3-qg1gU!yoJOh^G;Zv zeOT$d_x%rE_eXAI52(dR$m~EfN(U+jWpbjzxLtKq_&(F}@A#0?KL|%=+?g(FP3NrK zOZqV~_R>JT>>(#+e(`kde3GxOT-zxWKHg&8t}EriI~3Z!dujQb>)M?f#j2qr z4o6w%gb&XK*+fR1uex%J##t%9MyaqBQ_!|TuTqPQ>#}%Gy2f?;Hy90%$>yF`3Tsy1X$gjtgLQ!C4- zA4nFn;Y51-W}Xq-^`!X1EyoHBB57DKDRIdw%)M|oCOAV1Hz^@6#8nVbmznd&Cg*${ z3-zi=1IIJ) + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::ParamIterator< T > Member List
+
+ +
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_param_iterator.html b/doc/html/classtesting_1_1internal_1_1_param_iterator.html new file mode 100644 index 0000000..116efb7 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_param_iterator.html @@ -0,0 +1,476 @@ + + + + + + + +uTL: testing::internal::ParamIterator< T > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::ParamIterator< T > Class Template Reference
+
+
+ +

#include <gtest.h>

+ + + + + + + + +

+Public Types

typedef T value_type
 
typedef const T & reference
 
typedef ptrdiff_t difference_type
 
+ + + + + + + + + + + + + + + + + +

+Public Member Functions

 ParamIterator (const ParamIterator &other)
 
ParamIteratoroperator= (const ParamIterator &other)
 
const T & operator* () const
 
const T * operator-> () const
 
ParamIteratoroperator++ ()
 
ParamIterator operator++ (int)
 
bool operator== (const ParamIterator &other) const
 
bool operator!= (const ParamIterator &other) const
 
+ + + +

+Friends

class ParamGenerator< T >
 
+

Detailed Description

+

template<typename T>
+class testing::internal::ParamIterator< T >

+ + +

Definition at line 10659 of file gtest.h.

+

Member Typedef Documentation

+ +

◆ difference_type

+ +
+
+
+template<typename T >
+ + + + +
typedef ptrdiff_t testing::internal::ParamIterator< T >::difference_type
+
+ +

Definition at line 10663 of file gtest.h.

+ +
+
+ +

◆ reference

+ +
+
+
+template<typename T >
+ + + + +
typedef const T& testing::internal::ParamIterator< T >::reference
+
+ +

Definition at line 10662 of file gtest.h.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<typename T >
+ + + + +
typedef T testing::internal::ParamIterator< T >::value_type
+
+ +

Definition at line 10661 of file gtest.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ ParamIterator()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + +
testing::internal::ParamIterator< T >::ParamIterator (const ParamIterator< T > & other)
+
+inline
+
+ +

Definition at line 10666 of file gtest.h.

+ +
+
+

Member Function Documentation

+ +

◆ operator!=()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + +
bool testing::internal::ParamIterator< T >::operator!= (const ParamIterator< T > & other) const
+
+inline
+
+ +

Definition at line 10689 of file gtest.h.

+ +
+
+ +

◆ operator*()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + +
const T& testing::internal::ParamIterator< T >::operator* () const
+
+inline
+
+ +

Definition at line 10673 of file gtest.h.

+ +
+
+ +

◆ operator++() [1/2]

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + +
ParamIterator& testing::internal::ParamIterator< T >::operator++ ()
+
+inline
+
+ +

Definition at line 10676 of file gtest.h.

+ +
+
+ +

◆ operator++() [2/2]

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + +
ParamIterator testing::internal::ParamIterator< T >::operator++ (int )
+
+inline
+
+ +

Definition at line 10681 of file gtest.h.

+ +
+
+ +

◆ operator->()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + +
const T* testing::internal::ParamIterator< T >::operator-> () const
+
+inline
+
+ +

Definition at line 10674 of file gtest.h.

+ +
+
+ +

◆ operator=()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + +
ParamIterator& testing::internal::ParamIterator< T >::operator= (const ParamIterator< T > & other)
+
+inline
+
+ +

Definition at line 10667 of file gtest.h.

+ +
+
+ +

◆ operator==()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + +
bool testing::internal::ParamIterator< T >::operator== (const ParamIterator< T > & other) const
+
+inline
+
+ +

Definition at line 10686 of file gtest.h.

+ +
+
+

Friends And Related Function Documentation

+ +

◆ ParamGenerator< T >

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + +
friend class ParamGenerator< T >
+
+friend
+
+ +

Definition at line 10694 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_param_iterator.js b/doc/html/classtesting_1_1internal_1_1_param_iterator.js new file mode 100644 index 0000000..ca74dd1 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_param_iterator.js @@ -0,0 +1,15 @@ +var classtesting_1_1internal_1_1_param_iterator = +[ + [ "difference_type", "classtesting_1_1internal_1_1_param_iterator.html#a6c37240a04ba3fc4c56f6c413cf4771d", null ], + [ "reference", "classtesting_1_1internal_1_1_param_iterator.html#ac96f133ffa06fc0f9faff5a1c7954382", null ], + [ "value_type", "classtesting_1_1internal_1_1_param_iterator.html#a4afe3a68db0d0744753c8afe262e35df", null ], + [ "ParamIterator", "classtesting_1_1internal_1_1_param_iterator.html#aa10585055ee055e304703a3004f24f33", null ], + [ "operator!=", "classtesting_1_1internal_1_1_param_iterator.html#a7a6aee04e8e44b5c8294929951cfac2b", null ], + [ "operator*", "classtesting_1_1internal_1_1_param_iterator.html#a52e5fdca7d497a0ed358051e36b8b491", null ], + [ "operator++", "classtesting_1_1internal_1_1_param_iterator.html#ab0922f2f554fb3beaf13c442da605e8d", null ], + [ "operator++", "classtesting_1_1internal_1_1_param_iterator.html#af51e17827dd54977165937550c0fb030", null ], + [ "operator->", "classtesting_1_1internal_1_1_param_iterator.html#aad035d35e8f0c1412854959a94d4887e", null ], + [ "operator=", "classtesting_1_1internal_1_1_param_iterator.html#a8019f54ea1c66ca39ffdec47acfabfe6", null ], + [ "operator==", "classtesting_1_1internal_1_1_param_iterator.html#adc356b4789eb0c2a1b5b033c7874e5a6", null ], + [ "ParamGenerator< T >", "classtesting_1_1internal_1_1_param_iterator.html#ab73a355ae191f2f7eab54b65ca557714", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1internal_1_1_param_iterator_interface-members.html b/doc/html/classtesting_1_1internal_1_1_param_iterator_interface-members.html new file mode 100644 index 0000000..4aa1d91 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_param_iterator_interface-members.html @@ -0,0 +1,113 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::ParamIteratorInterface< T > Member List
+
+ +
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_param_iterator_interface.html b/doc/html/classtesting_1_1internal_1_1_param_iterator_interface.html new file mode 100644 index 0000000..cc5c3dc --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_param_iterator_interface.html @@ -0,0 +1,302 @@ + + + + + + + +uTL: testing::internal::ParamIteratorInterface< T > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::ParamIteratorInterface< T > Class Template Referenceabstract
+
+
+ +

#include <gtest.h>

+ + + + + + + + + + + + + + +

+Public Member Functions

virtual ~ParamIteratorInterface ()
 
virtual const ParamGeneratorInterface< T > * BaseGenerator () const =0
 
virtual void Advance ()=0
 
virtual ParamIteratorInterfaceClone () const =0
 
virtual const T * Current () const =0
 
virtual bool Equals (const ParamIteratorInterface &other) const =0
 
+

Detailed Description

+

template<typename T>
+class testing::internal::ParamIteratorInterface< T >

+ + +

Definition at line 10629 of file gtest.h.

+

Constructor & Destructor Documentation

+ +

◆ ~ParamIteratorInterface()

+ +
+
+
+template<typename T>
+ + + + + +
+ + + + + + + +
virtual testing::internal::ParamIteratorInterface< T >::~ParamIteratorInterface ()
+
+inlinevirtual
+
+ +

Definition at line 10631 of file gtest.h.

+ +
+
+

Member Function Documentation

+ +

◆ Advance()

+ +
+
+
+template<typename T>
+ + + + + +
+ + + + + + + +
virtual void testing::internal::ParamIteratorInterface< T >::Advance ()
+
+pure virtual
+
+ +
+
+ +

◆ BaseGenerator()

+ +
+
+
+template<typename T>
+ + + + + +
+ + + + + + + +
virtual const ParamGeneratorInterface<T>* testing::internal::ParamIteratorInterface< T >::BaseGenerator () const
+
+pure virtual
+
+ +
+
+ +

◆ Clone()

+ +
+
+
+template<typename T>
+ + + + + +
+ + + + + + + +
virtual ParamIteratorInterface* testing::internal::ParamIteratorInterface< T >::Clone () const
+
+pure virtual
+
+ +
+
+ +

◆ Current()

+ +
+
+
+template<typename T>
+ + + + + +
+ + + + + + + +
virtual const T* testing::internal::ParamIteratorInterface< T >::Current () const
+
+pure virtual
+
+ +
+
+ +

◆ Equals()

+ +
+
+
+template<typename T>
+ + + + + +
+ + + + + + + + +
virtual bool testing::internal::ParamIteratorInterface< T >::Equals (const ParamIteratorInterface< T > & other) const
+
+pure virtual
+
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_param_iterator_interface.js b/doc/html/classtesting_1_1internal_1_1_param_iterator_interface.js new file mode 100644 index 0000000..6077686 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_param_iterator_interface.js @@ -0,0 +1,9 @@ +var classtesting_1_1internal_1_1_param_iterator_interface = +[ + [ "~ParamIteratorInterface", "classtesting_1_1internal_1_1_param_iterator_interface.html#adf6ba49e6b54a6e3b15dbd5733988bef", null ], + [ "Advance", "classtesting_1_1internal_1_1_param_iterator_interface.html#a600dbd35fcb551463e379516a1abea48", null ], + [ "BaseGenerator", "classtesting_1_1internal_1_1_param_iterator_interface.html#a17500953df75ecda1ace46c08ff731e9", null ], + [ "Clone", "classtesting_1_1internal_1_1_param_iterator_interface.html#a4998c23e27e2943d97546011aa35db80", null ], + [ "Current", "classtesting_1_1internal_1_1_param_iterator_interface.html#adfff808576d929085679c315b255af7e", null ], + [ "Equals", "classtesting_1_1internal_1_1_param_iterator_interface.html#a9d811697a752d46f7bd6a0082f9040a3", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1internal_1_1_parameterized_test_factory-members.html b/doc/html/classtesting_1_1internal_1_1_parameterized_test_factory-members.html new file mode 100644 index 0000000..150ebad --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_parameterized_test_factory-members.html @@ -0,0 +1,112 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::ParameterizedTestFactory< TestClass > Member List
+
+ +
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_parameterized_test_factory.html b/doc/html/classtesting_1_1internal_1_1_parameterized_test_factory.html new file mode 100644 index 0000000..6389895 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_parameterized_test_factory.html @@ -0,0 +1,233 @@ + + + + + + + +uTL: testing::internal::ParameterizedTestFactory< TestClass > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::ParameterizedTestFactory< TestClass > Class Template Reference
+
+
+ +

#include <gtest.h>

+
+Inheritance diagram for testing::internal::ParameterizedTestFactory< TestClass >:
+
+
+ + +testing::internal::TestFactoryBase + +
+ + + + +

+Public Types

typedef TestClass::ParamType ParamType
 
+ + + + + + + + +

+Public Member Functions

 ParameterizedTestFactory (ParamType parameter)
 
TestCreateTest () override
 
- Public Member Functions inherited from testing::internal::TestFactoryBase
virtual ~TestFactoryBase ()
 
+ + + + +

+Additional Inherited Members

- Protected Member Functions inherited from testing::internal::TestFactoryBase
 TestFactoryBase ()
 
+

Detailed Description

+

template<class TestClass>
+class testing::internal::ParameterizedTestFactory< TestClass >

+ + +

Definition at line 10943 of file gtest.h.

+

Member Typedef Documentation

+ +

◆ ParamType

+ +
+
+
+template<class TestClass >
+ + + + +
typedef TestClass::ParamType testing::internal::ParameterizedTestFactory< TestClass >::ParamType
+
+ +

Definition at line 10945 of file gtest.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ ParameterizedTestFactory()

+ +
+
+
+template<class TestClass >
+ + + + + +
+ + + + + + + + +
testing::internal::ParameterizedTestFactory< TestClass >::ParameterizedTestFactory (ParamType parameter)
+
+inlineexplicit
+
+ +

Definition at line 10946 of file gtest.h.

+ +
+
+

Member Function Documentation

+ +

◆ CreateTest()

+ +
+
+
+template<class TestClass >
+ + + + + +
+ + + + + + + +
Test* testing::internal::ParameterizedTestFactory< TestClass >::CreateTest ()
+
+inlineoverridevirtual
+
+ +

Implements testing::internal::TestFactoryBase.

+ +

Definition at line 10948 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_parameterized_test_factory.js b/doc/html/classtesting_1_1internal_1_1_parameterized_test_factory.js new file mode 100644 index 0000000..ceba999 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_parameterized_test_factory.js @@ -0,0 +1,6 @@ +var classtesting_1_1internal_1_1_parameterized_test_factory = +[ + [ "ParamType", "classtesting_1_1internal_1_1_parameterized_test_factory.html#ad9a27b8e1a83de2f1687625bccff460d", null ], + [ "ParameterizedTestFactory", "classtesting_1_1internal_1_1_parameterized_test_factory.html#a82d78356cd402224255edec760a048fb", null ], + [ "CreateTest", "classtesting_1_1internal_1_1_parameterized_test_factory.html#a36d962674d7bf845398637338b9f75cb", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1internal_1_1_parameterized_test_factory.png b/doc/html/classtesting_1_1internal_1_1_parameterized_test_factory.png new file mode 100644 index 0000000000000000000000000000000000000000..c544a4ed51f5c2b2741212326411cf95329e13ce GIT binary patch literal 1108 zcmeAS@N?(olHy`uVBq!ia0y~yVDtd812~w0q>qJ+Gmw%9@CkAK|NlRb`Qpvj(*8pe zfGjXRaNq!I=N)+hncbA(QTW37RmeWQDiF^2cTNmmS}Gd+utisr&eK zbN=-6cc-n})PL#jp3Q&OHShn=tKeR4ytOo2NBhh3(ytoklS-o32}Xv;-hQ)ccVu}+ z_0*8rPZd-zb3OgHHtS}S%$mC%`#4heuS`4pIaZo?)7{h>m->5o#OD%OXZUy__JvpntMJ+#jaK6fIud_G3awgy6Zdi81=T7!j zJ-4~3+SlpwF~E=(MZcLEz&3IdQZfVgAa*4-vq$8*2${+}n$`k>B+aa*p! z{14apH^VARJxzMM;VI!8WiDx7 zW;DLJe!=}l%0x5yU9B^ePe`e5$UT1Ho=NTFqT7{iwOcm@nr?qBbl+~X`Wv21mcLZ(5g~ z4GhsazuN4;!gYPjKT`H)$X|CbOIJB?|LW>(g@#JkH?aS>U3JrJ-EuPrj)YYVoDUWt lWA+nMg1DAWxupA-`Nw}(;r+?lYQQ3Z!PC{xWt~$(69DYs{AU0F literal 0 HcmV?d00001 diff --git a/doc/html/classtesting_1_1internal_1_1_parameterized_test_suite_info-members.html b/doc/html/classtesting_1_1internal_1_1_parameterized_test_suite_info-members.html new file mode 100644 index 0000000..b3c57f6 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_parameterized_test_suite_info-members.html @@ -0,0 +1,118 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::ParameterizedTestSuiteInfo< TestSuite > Member List
+
+ +
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_parameterized_test_suite_info.html b/doc/html/classtesting_1_1internal_1_1_parameterized_test_suite_info.html new file mode 100644 index 0000000..b2c7d58 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_parameterized_test_suite_info.html @@ -0,0 +1,460 @@ + + + + + + + +uTL: testing::internal::ParameterizedTestSuiteInfo< TestSuite > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::ParameterizedTestSuiteInfo< TestSuite > Class Template Reference
+
+
+ +

#include <gtest.h>

+
+Inheritance diagram for testing::internal::ParameterizedTestSuiteInfo< TestSuite >:
+
+
+ + +testing::internal::ParameterizedTestSuiteInfoBase + +
+ + + + + + +

+Public Types

using ParamType = typename TestSuite::ParamType
 
typedef ParamNameGenFunc< ParamType >::Type ParamNameGeneratorFunc
 
+ + + + + + + + + + + + + + + + + + +

+Public Member Functions

typedef ParamGenerator (GeneratorCreationFunc)()
 
 ParameterizedTestSuiteInfo (const char *name, CodeLocation code_location)
 
const std::string & GetTestSuiteName () const override
 
TypeId GetTestSuiteTypeId () const override
 
void AddTestPattern (const char *test_suite_name, const char *test_base_name, TestMetaFactoryBase< ParamType > *meta_factory)
 
int AddTestSuiteInstantiation (const std::string &instantiation_name, GeneratorCreationFunc *func, ParamNameGeneratorFunc *name_func, const char *file, int line)
 
void RegisterTests () override
 
- Public Member Functions inherited from testing::internal::ParameterizedTestSuiteInfoBase
virtual ~ParameterizedTestSuiteInfoBase ()
 
+ + + + +

+Additional Inherited Members

- Protected Member Functions inherited from testing::internal::ParameterizedTestSuiteInfoBase
 ParameterizedTestSuiteInfoBase ()
 
+

Detailed Description

+

template<class TestSuite>
+class testing::internal::ParameterizedTestSuiteInfo< TestSuite >

+ + +

Definition at line 11034 of file gtest.h.

+

Member Typedef Documentation

+ +

◆ ParamNameGeneratorFunc

+ +
+
+ +

Definition at line 11042 of file gtest.h.

+ +
+
+ +

◆ ParamType

+ +
+
+
+template<class TestSuite>
+ + + + +
using testing::internal::ParameterizedTestSuiteInfo< TestSuite >::ParamType = typename TestSuite::ParamType
+
+ +

Definition at line 11039 of file gtest.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ ParameterizedTestSuiteInfo()

+ +
+
+
+template<class TestSuite>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
testing::internal::ParameterizedTestSuiteInfo< TestSuite >::ParameterizedTestSuiteInfo (const char * name,
CodeLocation code_location 
)
+
+inlineexplicit
+
+ +

Definition at line 11044 of file gtest.h.

+ +
+
+

Member Function Documentation

+ +

◆ AddTestPattern()

+ +
+
+
+template<class TestSuite>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void testing::internal::ParameterizedTestSuiteInfo< TestSuite >::AddTestPattern (const char * test_suite_name,
const char * test_base_name,
TestMetaFactoryBase< ParamType > * meta_factory 
)
+
+inline
+
+ +

Definition at line 11060 of file gtest.h.

+ +
+
+ +

◆ AddTestSuiteInstantiation()

+ +
+
+
+template<class TestSuite>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int testing::internal::ParameterizedTestSuiteInfo< TestSuite >::AddTestSuiteInstantiation (const std::string & instantiation_name,
GeneratorCreationFunc * func,
ParamNameGeneratorFuncname_func,
const char * file,
int line 
)
+
+inline
+
+ +

Definition at line 11067 of file gtest.h.

+ +
+
+ +

◆ GetTestSuiteName()

+ +
+
+
+template<class TestSuite>
+ + + + + +
+ + + + + + + +
const std::string& testing::internal::ParameterizedTestSuiteInfo< TestSuite >::GetTestSuiteName () const
+
+inlineoverridevirtual
+
+ +

Implements testing::internal::ParameterizedTestSuiteInfoBase.

+ +

Definition at line 11049 of file gtest.h.

+ +
+
+ +

◆ GetTestSuiteTypeId()

+ +
+
+
+template<class TestSuite>
+ + + + + +
+ + + + + + + +
TypeId testing::internal::ParameterizedTestSuiteInfo< TestSuite >::GetTestSuiteTypeId () const
+
+inlineoverridevirtual
+
+ +

Implements testing::internal::ParameterizedTestSuiteInfoBase.

+ +

Definition at line 11053 of file gtest.h.

+ +
+
+ +

◆ ParamGenerator()

+ +
+
+
+template<class TestSuite>
+ + + + + + + + +
typedef testing::internal::ParameterizedTestSuiteInfo< TestSuite >::ParamGenerator (GeneratorCreationFunc )
+
+ +
+
+ +

◆ RegisterTests()

+ +
+
+
+template<class TestSuite>
+ + + + + +
+ + + + + + + +
void testing::internal::ParameterizedTestSuiteInfo< TestSuite >::RegisterTests ()
+
+inlineoverridevirtual
+
+ +

Implements testing::internal::ParameterizedTestSuiteInfoBase.

+ +

Definition at line 11080 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_parameterized_test_suite_info.js b/doc/html/classtesting_1_1internal_1_1_parameterized_test_suite_info.js new file mode 100644 index 0000000..adda38d --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_parameterized_test_suite_info.js @@ -0,0 +1,12 @@ +var classtesting_1_1internal_1_1_parameterized_test_suite_info = +[ + [ "ParamNameGeneratorFunc", "classtesting_1_1internal_1_1_parameterized_test_suite_info.html#a35e630877b1d9589a4bbc0439b35bbda", null ], + [ "ParamType", "classtesting_1_1internal_1_1_parameterized_test_suite_info.html#a10761bd750a6820a8d8d2c654b10fe54", null ], + [ "ParameterizedTestSuiteInfo", "classtesting_1_1internal_1_1_parameterized_test_suite_info.html#a56fc02ddec2cf2101332d1125e4c75a9", null ], + [ "AddTestPattern", "classtesting_1_1internal_1_1_parameterized_test_suite_info.html#a07445ac68713383f38747e1c56c6a04a", null ], + [ "AddTestSuiteInstantiation", "classtesting_1_1internal_1_1_parameterized_test_suite_info.html#a174f164f38e522a3935da911a9c1e450", null ], + [ "GetTestSuiteName", "classtesting_1_1internal_1_1_parameterized_test_suite_info.html#a4a5ddc2cd0404438c2b4d405cd0e706c", null ], + [ "GetTestSuiteTypeId", "classtesting_1_1internal_1_1_parameterized_test_suite_info.html#af488d1d7c1889a250acff2ea6eba4c84", null ], + [ "ParamGenerator", "classtesting_1_1internal_1_1_parameterized_test_suite_info.html#ac6230057c507d74e373233edbf0410c2", null ], + [ "RegisterTests", "classtesting_1_1internal_1_1_parameterized_test_suite_info.html#a8c0af866d3c291a63d3f4581ccd452d1", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1internal_1_1_parameterized_test_suite_info.png b/doc/html/classtesting_1_1internal_1_1_parameterized_test_suite_info.png new file mode 100644 index 0000000000000000000000000000000000000000..fbaa32212228f65bfe45f634730efe24f8864560 GIT binary patch literal 1178 zcmeAS@N?(olHy`uVBq!ia0y~yVDtjA12~w0q{rDabwElYz$e7@|Ns9$=8HF9OZyK^ z0J6aNz<~p-opFbVOlK&i?vIU*ZntY+1GUk8A(_{<>?q2hPPHrH`@3_uF3>Pv!PreVxYp`~11Y&4qb>GPACWrE-+l?0nPix9QUgrQ*FAM%uqy zD(6pqeCK6=nWy7EjyaZF);ou_6&(M*l{>rUpfZc6)T`4`l3iEMu>Kc&dLc3V-?{9i zikGi`lAKbx^-_7keZD?*`DwX3-Zj17YboM;ePi$0dy$I|pXA%O)+9`CU%{c>mltQs zA1~S6?0speno<0ue+_vH=bWhW{H45W`qcNE<0k#<$cr!V)Drdb^a@@$Wr+xg5eQ<~ z2I!sMG-X<9WFFUp``7s$I3KLzQgvvntLsvAXace1RJv6U)QWmFsEB$r0QJ!p|FsX; zb}ee<)@$#&*aDb#EO+9Zum~B;rmFm^uxqUGiJy1q->0j08SZJ#=nb=Fiu!+%e4 z{XDBIJMRDLkDqOJpOwCRH;upiO~L6dWuwhI?d~Ygy!OTP;EWmDryel0`^LE=adXjj z^W-nuHfv_Q(cv|(x?K8d=l&hXB3-AmpZYQP?W=E}6`#ev+gAT(bGd<&q`BDUoDId| z3$?YjaqZMtFthN{1-l(P_3q>*r)wN;JhtiQ#`7GP7v9Og%&xKBRPT`T(xm@4lkers znJwJ@Y^$r}A=!An--`W4cP{nUy3H^|NEAKeo&py=X$v` zCwX)EwHF1On)9`Lr*`Yl`4GZh|6I7>@r&;a;j^|f|Cl_>`DL}31LuKEBkkjwyaB)d wG%-(M@C(sk3_`|V9BxKsFTEDEdnK@7sdU-;sl!DbSdcJyy85}Sb4q9e0HcyBZU6uP literal 0 HcmV?d00001 diff --git a/doc/html/classtesting_1_1internal_1_1_parameterized_test_suite_info_base-members.html b/doc/html/classtesting_1_1internal_1_1_parameterized_test_suite_info_base-members.html new file mode 100644 index 0000000..e55a4ec --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_parameterized_test_suite_info_base-members.html @@ -0,0 +1,112 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::ParameterizedTestSuiteInfoBase Member List
+
+ +
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_parameterized_test_suite_info_base.html b/doc/html/classtesting_1_1internal_1_1_parameterized_test_suite_info_base.html new file mode 100644 index 0000000..1ca2bc5 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_parameterized_test_suite_info_base.html @@ -0,0 +1,280 @@ + + + + + + + +uTL: testing::internal::ParameterizedTestSuiteInfoBase Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::ParameterizedTestSuiteInfoBase Class Referenceabstract
+
+
+ +

#include <gtest.h>

+
+Inheritance diagram for testing::internal::ParameterizedTestSuiteInfoBase:
+
+
+ + +testing::internal::ParameterizedTestSuiteInfo< TestSuite > + +
+ + + + + + + + + + +

+Public Member Functions

virtual ~ParameterizedTestSuiteInfoBase ()
 
virtual const std::string & GetTestSuiteName () const =0
 
virtual TypeId GetTestSuiteTypeId () const =0
 
virtual void RegisterTests ()=0
 
+ + + +

+Protected Member Functions

 ParameterizedTestSuiteInfoBase ()
 
+

Detailed Description

+
+

Definition at line 11005 of file gtest.h.

+

Constructor & Destructor Documentation

+ +

◆ ~ParameterizedTestSuiteInfoBase()

+ +
+
+ + + + + +
+ + + + + + + +
virtual testing::internal::ParameterizedTestSuiteInfoBase::~ParameterizedTestSuiteInfoBase ()
+
+inlinevirtual
+
+ +

Definition at line 11007 of file gtest.h.

+ +
+
+ +

◆ ParameterizedTestSuiteInfoBase()

+ +
+
+ + + + + +
+ + + + + + + +
testing::internal::ParameterizedTestSuiteInfoBase::ParameterizedTestSuiteInfoBase ()
+
+inlineprotected
+
+ +

Definition at line 11020 of file gtest.h.

+ +
+
+

Member Function Documentation

+ +

◆ GetTestSuiteName()

+ +
+
+ + + + + +
+ + + + + + + +
virtual const std::string& testing::internal::ParameterizedTestSuiteInfoBase::GetTestSuiteName () const
+
+pure virtual
+
+
+ +

◆ GetTestSuiteTypeId()

+ +
+
+ + + + + +
+ + + + + + + +
virtual TypeId testing::internal::ParameterizedTestSuiteInfoBase::GetTestSuiteTypeId () const
+
+pure virtual
+
+
+ +

◆ RegisterTests()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void testing::internal::ParameterizedTestSuiteInfoBase::RegisterTests ()
+
+pure virtual
+
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_parameterized_test_suite_info_base.js b/doc/html/classtesting_1_1internal_1_1_parameterized_test_suite_info_base.js new file mode 100644 index 0000000..fd37008 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_parameterized_test_suite_info_base.js @@ -0,0 +1,8 @@ +var classtesting_1_1internal_1_1_parameterized_test_suite_info_base = +[ + [ "~ParameterizedTestSuiteInfoBase", "classtesting_1_1internal_1_1_parameterized_test_suite_info_base.html#ac2aa0664f56e84cacab823d345c7d67b", null ], + [ "ParameterizedTestSuiteInfoBase", "classtesting_1_1internal_1_1_parameterized_test_suite_info_base.html#a3b50ae419b0de858f3ad9b8dd49989de", null ], + [ "GetTestSuiteName", "classtesting_1_1internal_1_1_parameterized_test_suite_info_base.html#aa6e36241431dc72c251ecee9b637b4d3", null ], + [ "GetTestSuiteTypeId", "classtesting_1_1internal_1_1_parameterized_test_suite_info_base.html#ac5bcbf8c50a44472d697e0c80b54387d", null ], + [ "RegisterTests", "classtesting_1_1internal_1_1_parameterized_test_suite_info_base.html#a41d7d663014af0c1e614c5a61293cb5a", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1internal_1_1_parameterized_test_suite_info_base.png b/doc/html/classtesting_1_1internal_1_1_parameterized_test_suite_info_base.png new file mode 100644 index 0000000000000000000000000000000000000000..14fb9d808c54a629b3788f65eda0e2e5a2833a86 GIT binary patch literal 1181 zcmeAS@N?(olHy`uVBq!ia0y~yVDtjA12~w0q{rDabwElYz$e7@|Ns9$=8HF9OZyK^ z0J6aNz<~p-oppGuKoJPfB*a6 zGhtLd**0N8`@3~f_h%-YcCtHhNqg~3uE zpI`N+d;K!@4`By$w!JRw+uFh>{>?tnP+QX|^dLk$Fs`)x+0Ly! z6Hs*{oSFICN4BS*f3K0x{QZ+>y?><1`poUmzwVc^FHY&WF{5mDU&6bB(_3tfivJnj zv30!u#q{8e8M!U@e*a@ASil{5^M2;BH{lf#i#KjIxg+6wedY6?kL1!tW8Y~!uHLrV z`ds^rvrkMOl+XMnc&cK2PUpt z@Mil<<|()3R$o6m>)ZTuiJJ@a_+)0Kb{n-=?~nQB${x8hd}8+A7fE4#oS*HqpYJqY zkmE2xpUIu?ZPAHS0`LCp<4ZiNU(v!~aCQ1tBaxNb;(wy21h+f?v|cy0?M%Sw^$X6d zp1QC3ci9H}pBr)xmx}NC{w%;G_PCkZ-py|9;?_U5U5?oKt!vnS%zqIVw(opZ!~f2__=1L@g)APyKpY6g7nxJD*G`Sfe!Gm}-@ZBq zFNX3^4Mw9cpM!N6g+f3qg-9L7cdG-KR8~5m#vyWiQj7iKeq&MOw5R7^rvu6L-L8|o zCYAWN22BbI(NNWNg)?MRC#M{LZ0Yw_`>?(z*Q@Tg-~A`u)1Gm*Z0q#>FFt<1czzf2 zjh`#8>(_V{J?2@eGWV6zsnzfFB4sOX^Sum9)8LQ)xY6G;FGpkkhwJ(q{?_bz6)bi( z`_|jazw3{ke{U&s514}F-radPO|&}YSwZrSYNNF;vzrVJ^Q~3iK2DxL>CT48n{Us~ z_{+twt!BMi&D`yB>8r|pJB~-XPPabwW8T|WeV-Md>6PEM|0XGWCh%DEQJvXy?zq0_ z>RRih$F*{1;e!iyJ9aAGd7I#_ahSa~^>gxk!DY@j^Dnb&Y`4`rWVsQI~(owziiH)@?6W~ z`sx(xf3c@m9tN!H%U){vE#UNXjr-S68P7ky^-_7keZFt%^3!s6yleV?Po`_x>l??G zm0x@DA&LEdnUuD8{EtJ^t$tVo{rN&e^<~KByOTnGaV&iwIVoh4%JS|=OaDwyt=hVS zsw-7I*|nxjnzG1A(^C`9s9F#+Emc$Z^rkyk>^aL^6s}dJe*%^z44$rjF6*2UngHD8 BLOK8d literal 0 HcmV?d00001 diff --git a/doc/html/classtesting_1_1internal_1_1_parameterized_test_suite_registry-members.html b/doc/html/classtesting_1_1internal_1_1_parameterized_test_suite_registry-members.html new file mode 100644 index 0000000..4a39628 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_parameterized_test_suite_registry-members.html @@ -0,0 +1,112 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::ParameterizedTestSuiteRegistry Member List
+
+ +
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_parameterized_test_suite_registry.html b/doc/html/classtesting_1_1internal_1_1_parameterized_test_suite_registry.html new file mode 100644 index 0000000..e6a6b22 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_parameterized_test_suite_registry.html @@ -0,0 +1,295 @@ + + + + + + + +uTL: testing::internal::ParameterizedTestSuiteRegistry Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::ParameterizedTestSuiteRegistry Class Reference
+
+
+ +

#include <gtest.h>

+ + + + + + + + + + + + + + +

+Public Member Functions

 ParameterizedTestSuiteRegistry ()
 
 ~ParameterizedTestSuiteRegistry ()
 
template<class TestSuite >
ParameterizedTestSuiteInfo< TestSuite > * GetTestSuitePatternHolder (const char *test_suite_name, CodeLocation code_location)
 
void RegisterTests ()
 
template<class TestCase >
ParameterizedTestCaseInfo< TestCase > * GetTestCasePatternHolder (const char *test_case_name, CodeLocation code_location)
 
+

Detailed Description

+
+

Definition at line 11205 of file gtest.h.

+

Constructor & Destructor Documentation

+ +

◆ ParameterizedTestSuiteRegistry()

+ +
+
+ + + + + +
+ + + + + + + +
testing::internal::ParameterizedTestSuiteRegistry::ParameterizedTestSuiteRegistry ()
+
+inline
+
+ +

Definition at line 11207 of file gtest.h.

+ +
+
+ +

◆ ~ParameterizedTestSuiteRegistry()

+ +
+
+ + + + + +
+ + + + + + + +
testing::internal::ParameterizedTestSuiteRegistry::~ParameterizedTestSuiteRegistry ()
+
+inline
+
+ +

Definition at line 11208 of file gtest.h.

+ +
+
+

Member Function Documentation

+ +

◆ GetTestCasePatternHolder()

+ +
+
+
+template<class TestCase >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
ParameterizedTestCaseInfo<TestCase>* testing::internal::ParameterizedTestSuiteRegistry::GetTestCasePatternHolder (const char * test_case_name,
CodeLocation code_location 
)
+
+inline
+
+ +

Definition at line 11253 of file gtest.h.

+ +
+
+ +

◆ GetTestSuitePatternHolder()

+ +
+
+
+template<class TestSuite >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
ParameterizedTestSuiteInfo<TestSuite>* testing::internal::ParameterizedTestSuiteRegistry::GetTestSuitePatternHolder (const char * test_suite_name,
CodeLocation code_location 
)
+
+inline
+
+ +

Definition at line 11217 of file gtest.h.

+ +
+
+ +

◆ RegisterTests()

+ +
+
+ + + + + +
+ + + + + + + +
void testing::internal::ParameterizedTestSuiteRegistry::RegisterTests ()
+
+inline
+
+ +

Definition at line 11245 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_parameterized_test_suite_registry.js b/doc/html/classtesting_1_1internal_1_1_parameterized_test_suite_registry.js new file mode 100644 index 0000000..72e5e01 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_parameterized_test_suite_registry.js @@ -0,0 +1,8 @@ +var classtesting_1_1internal_1_1_parameterized_test_suite_registry = +[ + [ "ParameterizedTestSuiteRegistry", "classtesting_1_1internal_1_1_parameterized_test_suite_registry.html#ae3827c085ed16faaa9197486513292c0", null ], + [ "~ParameterizedTestSuiteRegistry", "classtesting_1_1internal_1_1_parameterized_test_suite_registry.html#ab29f7a321883945d7f86f3292c100eb5", null ], + [ "GetTestCasePatternHolder", "classtesting_1_1internal_1_1_parameterized_test_suite_registry.html#a3fe06fb4e1b4194dae1fbcdf3560fbd3", null ], + [ "GetTestSuitePatternHolder", "classtesting_1_1internal_1_1_parameterized_test_suite_registry.html#a89ef6dd228f4188e1928513e860580d0", null ], + [ "RegisterTests", "classtesting_1_1internal_1_1_parameterized_test_suite_registry.html#a44c2ee0296de42dc6ca7abbf48d00495", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1internal_1_1_r_e-members.html b/doc/html/classtesting_1_1internal_1_1_r_e-members.html new file mode 100644 index 0000000..d45e02a --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_r_e-members.html @@ -0,0 +1,116 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::RE Member List
+
+
+ +

This is the complete list of members for testing::internal::RE, including all inherited members.

+ + + + + + + + + + +
FullMatch(const ::std::string &str, const RE &re)testing::internal::REinlinestatic
FullMatch(const char *str, const RE &re)testing::internal::REstatic
PartialMatch(const ::std::string &str, const RE &re)testing::internal::REinlinestatic
PartialMatch(const char *str, const RE &re)testing::internal::REstatic
pattern() consttesting::internal::REinline
RE(const RE &other)testing::internal::REinline
RE(const ::std::string &regex)testing::internal::REinline
RE(const char *regex)testing::internal::REinline
~RE()testing::internal::RE
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_r_e.html b/doc/html/classtesting_1_1internal_1_1_r_e.html new file mode 100644 index 0000000..69eaa4f --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_r_e.html @@ -0,0 +1,427 @@ + + + + + + + +uTL: testing::internal::RE Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::RE Class Reference
+
+
+ +

#include <gtest.h>

+ + + + + + + + + + + + +

+Public Member Functions

 RE (const RE &other)
 
 RE (const ::std::string &regex)
 
 RE (const char *regex)
 
 ~RE ()
 
const char * pattern () const
 
+ + + + + + + + + +

+Static Public Member Functions

static bool FullMatch (const ::std::string &str, const RE &re)
 
static bool PartialMatch (const ::std::string &str, const RE &re)
 
static bool FullMatch (const char *str, const RE &re)
 
static bool PartialMatch (const char *str, const RE &re)
 
+

Detailed Description

+
+

Definition at line 1136 of file gtest.h.

+

Constructor & Destructor Documentation

+ +

◆ RE() [1/3]

+ +
+
+ + + + + +
+ + + + + + + + +
testing::internal::RE::RE (const REother)
+
+inline
+
+ +

Definition at line 1140 of file gtest.h.

+ +
+
+ +

◆ RE() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + +
testing::internal::RE::RE (const ::std::string & regex)
+
+inline
+
+ +

Definition at line 1143 of file gtest.h.

+ +
+
+ +

◆ RE() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + +
testing::internal::RE::RE (const char * regex)
+
+inline
+
+ +

Definition at line 1151 of file gtest.h.

+ +
+
+ +

◆ ~RE()

+ +
+
+ + + + + + + +
testing::internal::RE::~RE ()
+
+ +

Definition at line 10308 of file gtest-all.cc.

+ +
+
+

Member Function Documentation

+ +

◆ FullMatch() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static bool testing::internal::RE::FullMatch (const ::std::string & str,
const REre 
)
+
+inlinestatic
+
+ +

Definition at line 1161 of file gtest.h.

+ +
+
+ +

◆ FullMatch() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool testing::internal::RE::FullMatch (const char * str,
const REre 
)
+
+static
+
+ +

Definition at line 10321 of file gtest-all.cc.

+ +
+
+ +

◆ PartialMatch() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static bool testing::internal::RE::PartialMatch (const ::std::string & str,
const REre 
)
+
+inlinestatic
+
+ +

Definition at line 1164 of file gtest.h.

+ +
+
+ +

◆ PartialMatch() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool testing::internal::RE::PartialMatch (const char * str,
const REre 
)
+
+static
+
+ +

Definition at line 10330 of file gtest-all.cc.

+ +
+
+ +

◆ pattern()

+ +
+
+ + + + + +
+ + + + + + + +
const char* testing::internal::RE::pattern () const
+
+inline
+
+ +

Definition at line 1155 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_r_e.js b/doc/html/classtesting_1_1internal_1_1_r_e.js new file mode 100644 index 0000000..cb416a6 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_r_e.js @@ -0,0 +1,8 @@ +var classtesting_1_1internal_1_1_r_e = +[ + [ "RE", "classtesting_1_1internal_1_1_r_e.html#ab215dbc2565fce641e1746ca43e9d68a", null ], + [ "RE", "classtesting_1_1internal_1_1_r_e.html#a8840bd639642f3d4769a94a68ce463c2", null ], + [ "RE", "classtesting_1_1internal_1_1_r_e.html#a908ea936a5b7a14479a1b292a7189ca6", null ], + [ "~RE", "classtesting_1_1internal_1_1_r_e.html#af3ad18e6c0b433f3d85ed23eda8119f3", null ], + [ "pattern", "classtesting_1_1internal_1_1_r_e.html#a24236aab3a6b0183a145a6f4c0bb9848", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1internal_1_1_random-members.html b/doc/html/classtesting_1_1internal_1_1_random-members.html new file mode 100644 index 0000000..c43ce89 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_random-members.html @@ -0,0 +1,111 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::Random Member List
+
+
+ +

This is the complete list of members for testing::internal::Random, including all inherited members.

+ + + + + +
Generate(UInt32 range)testing::internal::Random
kMaxRangetesting::internal::Randomstatic
Random(UInt32 seed)testing::internal::Randominlineexplicit
Reseed(UInt32 seed)testing::internal::Randominline
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_random.html b/doc/html/classtesting_1_1internal_1_1_random.html new file mode 100644 index 0000000..0c05903 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_random.html @@ -0,0 +1,233 @@ + + + + + + + +uTL: testing::internal::Random Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::Random Class Reference
+
+
+ +

#include <gtest.h>

+ + + + + + + + +

+Public Member Functions

 Random (UInt32 seed)
 
void Reseed (UInt32 seed)
 
UInt32 Generate (UInt32 range)
 
+ + + +

+Static Public Attributes

static const UInt32 kMaxRange = 1u << 31
 
+

Detailed Description

+
+

Definition at line 7276 of file gtest.h.

+

Constructor & Destructor Documentation

+ +

◆ Random()

+ +
+
+ + + + + +
+ + + + + + + + +
testing::internal::Random::Random (UInt32 seed)
+
+inlineexplicit
+
+ +

Definition at line 7280 of file gtest.h.

+ +
+
+

Member Function Documentation

+ +

◆ Generate()

+ +
+
+ + + + + + + + +
UInt32 testing::internal::Random::Generate (UInt32 range)
+
+ +
+
+ +

◆ Reseed()

+ +
+
+ + + + + +
+ + + + + + + + +
void testing::internal::Random::Reseed (UInt32 seed)
+
+inline
+
+ +

Definition at line 7282 of file gtest.h.

+ +
+
+

Member Data Documentation

+ +

◆ kMaxRange

+ +
+
+ + + + + +
+ + + + +
const UInt32 testing::internal::Random::kMaxRange = 1u << 31
+
+static
+
+ +

Definition at line 7278 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_random.js b/doc/html/classtesting_1_1internal_1_1_random.js new file mode 100644 index 0000000..592e0f9 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_random.js @@ -0,0 +1,6 @@ +var classtesting_1_1internal_1_1_random = +[ + [ "Random", "classtesting_1_1internal_1_1_random.html#a6e112be5e7cce00551f6383025f69460", null ], + [ "Generate", "classtesting_1_1internal_1_1_random.html#a9315b7fb621cbcfdf92ed4b5e584c0db", null ], + [ "Reseed", "classtesting_1_1internal_1_1_random.html#adf2f24199318a46f885c78f50d89a69e", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1internal_1_1_range_generator-members.html b/doc/html/classtesting_1_1internal_1_1_range_generator-members.html new file mode 100644 index 0000000..4cb0bc2 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_range_generator-members.html @@ -0,0 +1,113 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::RangeGenerator< T, IncrementT > Member List
+
+ +
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_range_generator.html b/doc/html/classtesting_1_1internal_1_1_range_generator.html new file mode 100644 index 0000000..2610274 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_range_generator.html @@ -0,0 +1,289 @@ + + + + + + + +uTL: testing::internal::RangeGenerator< T, IncrementT > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::RangeGenerator< T, IncrementT > Class Template Reference
+
+
+ +

#include <gtest.h>

+
+Inheritance diagram for testing::internal::RangeGenerator< T, IncrementT >:
+
+
+ + +testing::internal::ParamGeneratorInterface< T > + +
+ + + + + + + + + + + + + +

+Public Member Functions

 RangeGenerator (T begin, T end, IncrementT step)
 
 ~RangeGenerator () override
 
ParamIteratorInterface< T > * Begin () const override
 
ParamIteratorInterface< T > * End () const override
 
- Public Member Functions inherited from testing::internal::ParamGeneratorInterface< T >
virtual ~ParamGeneratorInterface ()
 
+ + + + +

+Additional Inherited Members

- Public Types inherited from testing::internal::ParamGeneratorInterface< T >
typedef T ParamType
 
+

Detailed Description

+

template<typename T, typename IncrementT>
+class testing::internal::RangeGenerator< T, IncrementT >

+ + +

Definition at line 10743 of file gtest.h.

+

Constructor & Destructor Documentation

+ +

◆ RangeGenerator()

+ +
+
+
+template<typename T , typename IncrementT >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
testing::internal::RangeGenerator< T, IncrementT >::RangeGenerator (begin,
end,
IncrementT step 
)
+
+inline
+
+ +

Definition at line 10745 of file gtest.h.

+ +
+
+ +

◆ ~RangeGenerator()

+ +
+
+
+template<typename T , typename IncrementT >
+ + + + + +
+ + + + + + + +
testing::internal::RangeGenerator< T, IncrementT >::~RangeGenerator ()
+
+inlineoverride
+
+ +

Definition at line 10748 of file gtest.h.

+ +
+
+

Member Function Documentation

+ +

◆ Begin()

+ +
+
+
+template<typename T , typename IncrementT >
+ + + + + +
+ + + + + + + +
ParamIteratorInterface<T>* testing::internal::RangeGenerator< T, IncrementT >::Begin () const
+
+inlineoverridevirtual
+
+ +

Implements testing::internal::ParamGeneratorInterface< T >.

+ +

Definition at line 10750 of file gtest.h.

+ +
+
+ +

◆ End()

+ +
+
+
+template<typename T , typename IncrementT >
+ + + + + +
+ + + + + + + +
ParamIteratorInterface<T>* testing::internal::RangeGenerator< T, IncrementT >::End () const
+
+inlineoverridevirtual
+
+ +

Implements testing::internal::ParamGeneratorInterface< T >.

+ +

Definition at line 10753 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_range_generator.js b/doc/html/classtesting_1_1internal_1_1_range_generator.js new file mode 100644 index 0000000..93f4868 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_range_generator.js @@ -0,0 +1,7 @@ +var classtesting_1_1internal_1_1_range_generator = +[ + [ "RangeGenerator", "classtesting_1_1internal_1_1_range_generator.html#a5b3b83223b9cada3569bcee729e0fdf3", null ], + [ "~RangeGenerator", "classtesting_1_1internal_1_1_range_generator.html#a72f6e6f65f1dd3f86672f6ed47df74ef", null ], + [ "Begin", "classtesting_1_1internal_1_1_range_generator.html#a502913fbcf14e89d5765dfb44f3c1295", null ], + [ "End", "classtesting_1_1internal_1_1_range_generator.html#ac112ca69567b9c47bf14554e0473e1e2", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1internal_1_1_range_generator.png b/doc/html/classtesting_1_1internal_1_1_range_generator.png new file mode 100644 index 0000000000000000000000000000000000000000..dec50e03fab2802cf8614b6b6aa526b2c7ab395a GIT binary patch literal 1101 zcmeAS@N?(olHy`uVBq!ia0y~yVAKS%12~w0WRYw!FOZT5@CkAK|NlRb`Qpvj(*8pe zfGjXRaNq!I=N)+f-sa7jG{xhRYNppDnM+etESG3{7I_3u zdSYN0s&e%8$2;P@rsATzrayh{KS^(+R&VV(_T+Dsm)E9yP0};;wS2h7>-~&PTkeNT z``TW8SJ!_#J?iQri_hVOm!EyzAO7!`q;Ko0t>@x`=pn~oYqW&}Z2nT^-x& zK6gU7Vw~?<*U7Cb^9Ztg^t~wjez}it+2YcY>aVpK^Rv$H+i=;;f9-*aJ0`2w&&#^oR{HKk z?%ZESGIP!rR+>rvis4`O?ML`|JI`HD^p>got>2Tq>gIBlm&ZSp`JELCpY*SK-{xN` zFP~3brgBoz*K?BdtVt^ECaRu%{K3$OFlG2Jv!6kzLHd$N!@>3OE4d!bGht2mATV_m zL!M_agWOBb1B$+k7E3f4+D%v=OjyPs161fdi>bgPn1L^oivr1q_f0~*G(9z!-f>{` zV9*0vhHPHeD)Da>aTYe+`l{EbuWx34z_t2P>ipw^PkH$h4jp!vKW4yM(3yFPGd=Xv z??24JtJ~UFEL`))e_DCB_Wb*PD&Bta%Efy)Z-&ZgU45}|cLdj*>j_zs z>HFVSzj5DuV&&eT#?Q0vmh%5@N!DzAmUZg4##twMt+^MIZ$wr7JL9|dvCY*pZCC5I zOT&|bzn#u+#gsoU&y-$lca)VZoEv;L!s+zC=;O0|Pi)SeaocXGGP7>5`)rT7#m0LA zY=8zHsZyheCRczgch=^W;rp6*>3XZuznGraCK5r>r`7`}yjaABX3> zT7Khe#r)vOwOT6uyMN^bKMeK*CWS9`OXJ@Ln-{(dyI%rI5oNor=ihqqQ6?)a-Zm=f z`Bs}2n_KejxfZpDZdbV-70xPhxq9V|4{zbD&LeWYoB1CIZI^2}$?jCAwsL@+7Lu=`jB~yad{p9_iWP8W+)sL&dywBk2 L>gTe~DWM4f`ELkh literal 0 HcmV?d00001 diff --git a/doc/html/classtesting_1_1internal_1_1_test_factory_base-members.html b/doc/html/classtesting_1_1internal_1_1_test_factory_base-members.html new file mode 100644 index 0000000..d1a4bca --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_test_factory_base-members.html @@ -0,0 +1,110 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::TestFactoryBase Member List
+
+
+ +

This is the complete list of members for testing::internal::TestFactoryBase, including all inherited members.

+ + + + +
CreateTest()=0testing::internal::TestFactoryBasepure virtual
TestFactoryBase()testing::internal::TestFactoryBaseinlineprotected
~TestFactoryBase()testing::internal::TestFactoryBaseinlinevirtual
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_test_factory_base.html b/doc/html/classtesting_1_1internal_1_1_test_factory_base.html new file mode 100644 index 0000000..ede31cf --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_test_factory_base.html @@ -0,0 +1,223 @@ + + + + + + + +uTL: testing::internal::TestFactoryBase Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::TestFactoryBase Class Referenceabstract
+
+
+ +

#include <gtest.h>

+
+Inheritance diagram for testing::internal::TestFactoryBase:
+
+
+ + +testing::internal::ParameterizedTestFactory< TestClass > +testing::internal::TestFactoryImpl< TestClass > + +
+ + + + + + +

+Public Member Functions

virtual ~TestFactoryBase ()
 
virtual TestCreateTest ()=0
 
+ + + +

+Protected Member Functions

 TestFactoryBase ()
 
+

Detailed Description

+
+

Definition at line 6889 of file gtest.h.

+

Constructor & Destructor Documentation

+ +

◆ ~TestFactoryBase()

+ +
+
+ + + + + +
+ + + + + + + +
virtual testing::internal::TestFactoryBase::~TestFactoryBase ()
+
+inlinevirtual
+
+ +

Definition at line 6891 of file gtest.h.

+ +
+
+ +

◆ TestFactoryBase()

+ +
+
+ + + + + +
+ + + + + + + +
testing::internal::TestFactoryBase::TestFactoryBase ()
+
+inlineprotected
+
+ +

Definition at line 6898 of file gtest.h.

+ +
+
+

Member Function Documentation

+ +

◆ CreateTest()

+ +
+
+ + + + + +
+ + + + + + + +
virtual Test* testing::internal::TestFactoryBase::CreateTest ()
+
+pure virtual
+
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_test_factory_base.js b/doc/html/classtesting_1_1internal_1_1_test_factory_base.js new file mode 100644 index 0000000..c9c0c13 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_test_factory_base.js @@ -0,0 +1,6 @@ +var classtesting_1_1internal_1_1_test_factory_base = +[ + [ "~TestFactoryBase", "classtesting_1_1internal_1_1_test_factory_base.html#a18f22a7594336a36642289c1decddc9e", null ], + [ "TestFactoryBase", "classtesting_1_1internal_1_1_test_factory_base.html#afedbf147b2a213517b315880d8c81427", null ], + [ "CreateTest", "classtesting_1_1internal_1_1_test_factory_base.html#a07ac3ca0b196cdb092da0bb186b7c030", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1internal_1_1_test_factory_base.png b/doc/html/classtesting_1_1internal_1_1_test_factory_base.png new file mode 100644 index 0000000000000000000000000000000000000000..55f44e362ae4666ec80649aa878b13cd376af613 GIT binary patch literal 1606 zcmb_cdopzsJ?`P6q@bYy z0Duzc>f{9gFcQR%%Sl66WT$r!3hKw*eU7ZJuS4{+K$KMcJ z&utkRENMa%ozPeGGFyaWg@+K+*h)&5>I8J_91+`WM)i8mKG8`%W623*w5?aH5YUZ; z`;Y|89&*d3km+8}BRG0(SmZzql08LmWaNG9SlrznrG}R+f5MT;(R& z6tZl#Ej@jGFQ!q8muoUh)m%}fnq-};vZe}^(pC5YNxNI*quU9LW@VZ39;oF+ug%vQ z9pTTVNl2+sv5Kc7!GOtKeR;P?|L{Kh@yIZtOls*m!4p`18|o=_yP*(h81c@EjMhE8 zZ&58ogD0MjS>YtL*|b<&|@_WaXI7 zFsD!#DcFN6z?G2`S-}6Eo-^3VLVcpo|Bm`}9pi#~hEi=r>;Oqs1-CasC#Qr0>^uhM zJ^g1ARvba}DWZ)hPg&ts^g$&_-@=*!c#|7AL^n1`yZ>I2Ojk^AopX&v%@;gLsTP~l zbw?)$hrAss!58Iq*rPA>Je}wLTWaey?kHux7TWg43a!kE{boAHz}62ay7Z_RN%~f6 zLee>dMqiql?p2le?06L3+Im(@Ye$V?x0lThM;FIqeX}K}PsL$4c5x}0wZ9=;4sM;8 z!trY<2^UOA`yW~}E5iFsqQ9D}|8WgbXjm7~(h#%IVF91E>-X359ltO+6h4HmYOQU( z`>Rd$tDstvj%#dvrExs5KYqf!?u+QIcn>6onsIGzF@%kXbhjtXbnuNv@DCcRE%|}Q zXx{~E$*f{2oHvT6iw=oAh?Kk+w>kp3t^K%gv0_fdoiV9d1a+q*le1ymh(uUg%|6Mu z<*_qL+NOG{MS@`;bLr0ai91;H$pcB3KMEhw8t{8hMz?cs43XoU<}H%hbTTFCo|4_0 z1E2=ikA-uPtXj+tH+v(mQZ6^YUXmT)9^*wf^PBHAiG|uX2U|+&ZZb?@SAFMYli`oA zQW64Bvg9|EGpd#}X1H1(=^TNAcCl|Pc~akTo=rTBG``rHAQ9XuL24XOvVA!Vq!1Ge z{&G90!m0@pSTfQ}ByWnQ!t)7JTbgVz5+g0rj78m`|9PPT|5+YQ)Haq@Q5h!E9NO=x zn{qGc=oZ%3C?q-}CCeH#>WR&!V4PC*LCoUDr=y2UDUvVMpO!tQfK4|Cz;1Lg}`X58G{{&?9?Gyk2 literal 0 HcmV?d00001 diff --git a/doc/html/classtesting_1_1internal_1_1_test_factory_impl-members.html b/doc/html/classtesting_1_1internal_1_1_test_factory_impl-members.html new file mode 100644 index 0000000..2ae3037 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_test_factory_impl-members.html @@ -0,0 +1,110 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::TestFactoryImpl< TestClass > Member List
+
+
+ +

This is the complete list of members for testing::internal::TestFactoryImpl< TestClass >, including all inherited members.

+ + + + +
CreateTest() overridetesting::internal::TestFactoryImpl< TestClass >inlinevirtual
TestFactoryBase()testing::internal::TestFactoryBaseinlineprotected
~TestFactoryBase()testing::internal::TestFactoryBaseinlinevirtual
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_test_factory_impl.html b/doc/html/classtesting_1_1internal_1_1_test_factory_impl.html new file mode 100644 index 0000000..5b0880c --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_test_factory_impl.html @@ -0,0 +1,175 @@ + + + + + + + +uTL: testing::internal::TestFactoryImpl< TestClass > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::TestFactoryImpl< TestClass > Class Template Reference
+
+
+ +

#include <gtest.h>

+
+Inheritance diagram for testing::internal::TestFactoryImpl< TestClass >:
+
+
+ + +testing::internal::TestFactoryBase + +
+ + + + + + + +

+Public Member Functions

TestCreateTest () override
 
- Public Member Functions inherited from testing::internal::TestFactoryBase
virtual ~TestFactoryBase ()
 
+ + + + +

+Additional Inherited Members

- Protected Member Functions inherited from testing::internal::TestFactoryBase
 TestFactoryBase ()
 
+

Detailed Description

+

template<class TestClass>
+class testing::internal::TestFactoryImpl< TestClass >

+ + +

Definition at line 6907 of file gtest.h.

+

Member Function Documentation

+ +

◆ CreateTest()

+ +
+
+
+template<class TestClass >
+ + + + + +
+ + + + + + + +
Test* testing::internal::TestFactoryImpl< TestClass >::CreateTest ()
+
+inlineoverridevirtual
+
+ +

Implements testing::internal::TestFactoryBase.

+ +

Definition at line 6909 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_test_factory_impl.js b/doc/html/classtesting_1_1internal_1_1_test_factory_impl.js new file mode 100644 index 0000000..0c3f5b1 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_test_factory_impl.js @@ -0,0 +1,4 @@ +var classtesting_1_1internal_1_1_test_factory_impl = +[ + [ "CreateTest", "classtesting_1_1internal_1_1_test_factory_impl.html#ab9b9236ef39b14f0a78e611748e970e3", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1internal_1_1_test_factory_impl.png b/doc/html/classtesting_1_1internal_1_1_test_factory_impl.png new file mode 100644 index 0000000000000000000000000000000000000000..2f57e1bdf9b7218767e2fdcc0b9db3d18f28ae6c GIT binary patch literal 966 zcmeAS@N?(olHy`uVBq!ia0y~yVB`g|12~w0q{-?F%Yl?cfKQ0)|NsAi%olIImi8Z- z0AzvjfddCvJMYK?xf~@ye!&btMIdnXREQA+19PaSi(^Oyfe9= zdwHT90y%FB)6%ma7gUQFHaZK%MNUiQd@J6q(t1rhgN4`glZZ)En@Z&_7iG^)Z-3q? z=T%l`zBN5_x5~_Ko8Fb2_u1vF`m$-Cm-8gP(ylh^yi>mxeDAhccOl~Dd+7=J*EOfF zGn#qnZq4SuZ=2))vq>#3eS9k_+b68(b?w$bIhB_!>yEjV#?CIkZu{o)mc3r9&g!{& zEfWp-8-6v#JK3O?@%VF-Uo%bn{;rhfoq6G+L20sw%>5JK8*e?@ zyWB8pz3Qh1w~w*D@6Fatz2={E*ltcQ@9x0bj!M^pS(?hdQC7Pu&-B}PekyUlYv5R5 z7R;BSa&nt_X|mU2_E&Dz%ib*SSefCuX|2fR8U~Y@o7OH`xv1}J)iM$1xhM5bzq*lc z7p(F!Al~Mk>Pz9f&%W77i8lvL%DYq>m*3Ny?WpPb{e|25?`d5se@}BsIXX|WVeMU@ z=s9nm$+Xl+r`xO_xW6!Pu<|y9^}9ddkYZ?_XTaosfuTS|r-`j$`2s-`29SEj2b#dp zX7G1Z&S0njn!lL%Dh(cB4yK_i*4?U=SOaq{C6cc<=e)azE`gFDi+pE=FHLl z|K{H>zg;$)-sfEXnDL~`Sm#?q+sdHQ;LqE>JzcXoPWu5PZ@#xL-~7@fu2qvYe+SD; ze|wmdbEE5Od&KVCxnJ#q-K1h)T8K)|n_MPXTk&IKp~$qWpLhFME|_=#6r)a$z3y&E zKecq%#d(@LQ?7PRJFv}YBPdpb`WQARFNVfyou#Skz4@9ym!}o!9)5pLq``TvEPKIX zwbg7p;-6>in9ca%t<>IswNjQ0jCCP>*W(?SAJ_*VBIL`Gi9ucq-~M8rP-oG}XrJB< P%ybN%u6{1-oD!M + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::TestMetaFactory< TestSuite > Member List
+
+ +
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_test_meta_factory.html b/doc/html/classtesting_1_1internal_1_1_test_meta_factory.html new file mode 100644 index 0000000..bc66011 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_test_meta_factory.html @@ -0,0 +1,227 @@ + + + + + + + +uTL: testing::internal::TestMetaFactory< TestSuite > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::TestMetaFactory< TestSuite > Class Template Reference
+
+
+ +

#include <gtest.h>

+
+Inheritance diagram for testing::internal::TestMetaFactory< TestSuite >:
+
+
+ + +testing::internal::TestMetaFactoryBase< TestSuite::ParamType > + +
+ + + + +

+Public Types

using ParamType = typename TestSuite::ParamType
 
+ + + + + + + + + + +

+Public Member Functions

 TestMetaFactory ()
 
TestFactoryBaseCreateTestFactory (ParamType parameter) override
 
- Public Member Functions inherited from testing::internal::TestMetaFactoryBase< TestSuite::ParamType >
virtual ~TestMetaFactoryBase ()
 
virtual TestFactoryBaseCreateTestFactory (TestSuite::ParamType parameter)=0
 
+

Detailed Description

+

template<class TestSuite>
+class testing::internal::TestMetaFactory< TestSuite >

+ + +

Definition at line 10980 of file gtest.h.

+

Member Typedef Documentation

+ +

◆ ParamType

+ +
+
+
+template<class TestSuite >
+ + + + +
using testing::internal::TestMetaFactory< TestSuite >::ParamType = typename TestSuite::ParamType
+
+ +

Definition at line 10983 of file gtest.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ TestMetaFactory()

+ +
+
+
+template<class TestSuite >
+ + + + + +
+ + + + + + + +
testing::internal::TestMetaFactory< TestSuite >::TestMetaFactory ()
+
+inline
+
+ +

Definition at line 10985 of file gtest.h.

+ +
+
+

Member Function Documentation

+ +

◆ CreateTestFactory()

+ +
+
+
+template<class TestSuite >
+ + + + + +
+ + + + + + + + +
TestFactoryBase* testing::internal::TestMetaFactory< TestSuite >::CreateTestFactory (ParamType parameter)
+
+inlineoverride
+
+ +

Definition at line 10987 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_test_meta_factory.js b/doc/html/classtesting_1_1internal_1_1_test_meta_factory.js new file mode 100644 index 0000000..5030f83 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_test_meta_factory.js @@ -0,0 +1,6 @@ +var classtesting_1_1internal_1_1_test_meta_factory = +[ + [ "ParamType", "classtesting_1_1internal_1_1_test_meta_factory.html#a392ebab15dfdcfa1b54bbe15878aa9cd", null ], + [ "TestMetaFactory", "classtesting_1_1internal_1_1_test_meta_factory.html#a1a48d63fbff650741c8f718af5c373d2", null ], + [ "CreateTestFactory", "classtesting_1_1internal_1_1_test_meta_factory.html#abd5d30fab71229deb5e63f5bb5ea3fd8", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1internal_1_1_test_meta_factory.png b/doc/html/classtesting_1_1internal_1_1_test_meta_factory.png new file mode 100644 index 0000000000000000000000000000000000000000..b7e92b79fed434a7072a875231ec9296fb852d57 GIT binary patch literal 1263 zcmeAS@N?(olHy`uVBq!ia0y~yU@QW%12~w0r149>O+ZQ_z$e7@|Ns9$=8HF9OZyK^ z0J6aNz<~p-opoAGbM5q<6f{X>v5TJPLa!&2L{`BWZF@YV zj(`7bb2WTg{3Mf=deeT}dmfh9Q~l0n^5TMbt0$$DPC1tQu;jKl(~fhhCofADd0Jgn zee$llzPxO{tWfP2UH>%wx7YlWBMUukcnT(dZ}{`A_Zxp`{XLzS8l?y*0)dpYHH&Ygm3Hy`Y`^>}sIKUwF;?{ifW-8CI|Kjkc6wBI!7v)z%1r?vdG z75kU9+s-WvbFDq|a!cZ*dAYjm=5t*4wS4uz_$$iYZ1!#4ijDaN*KN;v&M>KYBF7Z{ zl)Kr{+k4KpTV9E-_h$L&3+z@{8L{(yU&Xo08SH2OCk5-9i=01|_3=`$;feD5rmfy5 zR`=da*Jarpetvi1qZ_l1i&mb_-oc)|{MFvqCcOVU`lmmf;#2-u$zG$4@mI{#bL=${ zPnWHk_H09(!?x`e9&?XvQhNWk=AG)hN;|*D3#Okr(Y?ge_>9z=DcmCS+B8q9Tlc}PpEq}J zeDUrZ_sUya6oPlG4E|Eyo-pZG!Q~ZilWrvOXJjvDd$E7I?Y1ZjpCku8&*h)isJ;~c zx>9rQ^HScOd#hDn3V+$?`ho8WySvMzI{*3AZ|*h40Au{iE}@+&ty&YkgI2&9`zGe! z-nMjG?(HU)5B0CO6<7t9y6_3CT)#erPhbUzmH+6ZjDlaMj6wvbj6w*IrYZif|0&4J zb83*+6b%N=1_{-oh5%%2+h4Qocb#3q)#d)lSC3Y$XRhVBXInn+WOG6K!aVNqZEPRb zS7{eD1jjnP+xNZv`uCfSM;GV+jPVlP5c!kk$#$a~*$e;eQN6uv)?>5WoOkuVPj5dp z%iN+`enPqb?H2}nM8fAjlw3~?8|L+=?$wSCX7y3zm6!h2!=!~IN$cbq>X zR($#6wd@scHlS4iHyzrW1Y#_a^X+@dRg#3m4EzlS*_Tw)1h{D zF>609+%V^v!L)mi?pj#p>S%x36}kV^@&I<-_t#h7dHK}O)HX{;{RDT<;|<~V@1CY@ z?yvgUP_wtSZsYXt)_dfosE7SJjOJEX@l1j o24GQvz`xw$yfjw^d2wEnzgg)$r@^fjRJ1X8y85}Sb4q9e0C5Ig+W-In literal 0 HcmV?d00001 diff --git a/doc/html/classtesting_1_1internal_1_1_test_meta_factory_base-members.html b/doc/html/classtesting_1_1internal_1_1_test_meta_factory_base-members.html new file mode 100644 index 0000000..f39ef26 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_test_meta_factory_base-members.html @@ -0,0 +1,109 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::TestMetaFactoryBase< ParamType > Member List
+
+
+ +

This is the complete list of members for testing::internal::TestMetaFactoryBase< ParamType >, including all inherited members.

+ + + +
CreateTestFactory(ParamType parameter)=0testing::internal::TestMetaFactoryBase< ParamType >pure virtual
~TestMetaFactoryBase()testing::internal::TestMetaFactoryBase< ParamType >inlinevirtual
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_test_meta_factory_base.html b/doc/html/classtesting_1_1internal_1_1_test_meta_factory_base.html new file mode 100644 index 0000000..9a0a5ec --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_test_meta_factory_base.html @@ -0,0 +1,186 @@ + + + + + + + +uTL: testing::internal::TestMetaFactoryBase< ParamType > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::TestMetaFactoryBase< ParamType > Class Template Referenceabstract
+
+
+ +

#include <gtest.h>

+ + + + + + +

+Public Member Functions

virtual ~TestMetaFactoryBase ()
 
virtual TestFactoryBaseCreateTestFactory (ParamType parameter)=0
 
+

Detailed Description

+

template<class ParamType>
+class testing::internal::TestMetaFactoryBase< ParamType >

+ + +

Definition at line 10964 of file gtest.h.

+

Constructor & Destructor Documentation

+ +

◆ ~TestMetaFactoryBase()

+ +
+
+
+template<class ParamType>
+ + + + + +
+ + + + + + + +
virtual testing::internal::TestMetaFactoryBase< ParamType >::~TestMetaFactoryBase ()
+
+inlinevirtual
+
+ +

Definition at line 10966 of file gtest.h.

+ +
+
+

Member Function Documentation

+ +

◆ CreateTestFactory()

+ +
+
+
+template<class ParamType>
+ + + + + +
+ + + + + + + + +
virtual TestFactoryBase* testing::internal::TestMetaFactoryBase< ParamType >::CreateTestFactory (ParamType parameter)
+
+pure virtual
+
+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_test_meta_factory_base.js b/doc/html/classtesting_1_1internal_1_1_test_meta_factory_base.js new file mode 100644 index 0000000..bb49e0a --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_test_meta_factory_base.js @@ -0,0 +1,5 @@ +var classtesting_1_1internal_1_1_test_meta_factory_base = +[ + [ "~TestMetaFactoryBase", "classtesting_1_1internal_1_1_test_meta_factory_base.html#aad80adf04686f7dfcf952e44afc02767", null ], + [ "CreateTestFactory", "classtesting_1_1internal_1_1_test_meta_factory_base.html#a853daab362740bcac55e180128d564ef", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1internal_1_1_thread_local-members.html b/doc/html/classtesting_1_1internal_1_1_thread_local-members.html new file mode 100644 index 0000000..ba7e4ee --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_thread_local-members.html @@ -0,0 +1,113 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::ThreadLocal< T > Member List
+
+ +
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_thread_local.html b/doc/html/classtesting_1_1internal_1_1_thread_local.html new file mode 100644 index 0000000..3fe1a03 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_thread_local.html @@ -0,0 +1,313 @@ + + + + + + + +uTL: testing::internal::ThreadLocal< T > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::ThreadLocal< T > Class Template Reference
+
+
+ +

#include <gtest.h>

+ + + + + + + + + + + + + + +

+Public Member Functions

 ThreadLocal ()
 
 ThreadLocal (const T &value)
 
T * pointer ()
 
const T * pointer () const
 
const T & get () const
 
void set (const T &value)
 
+

Detailed Description

+

template<typename T>
+class testing::internal::ThreadLocal< T >

+ + +

Definition at line 2165 of file gtest.h.

+

Constructor & Destructor Documentation

+ +

◆ ThreadLocal() [1/2]

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + +
testing::internal::ThreadLocal< T >::ThreadLocal ()
+
+inline
+
+ +

Definition at line 2167 of file gtest.h.

+ +
+
+ +

◆ ThreadLocal() [2/2]

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + +
testing::internal::ThreadLocal< T >::ThreadLocal (const T & value)
+
+inlineexplicit
+
+ +

Definition at line 2168 of file gtest.h.

+ +
+
+

Member Function Documentation

+ +

◆ get()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + +
const T& testing::internal::ThreadLocal< T >::get () const
+
+inline
+
+ +

Definition at line 2171 of file gtest.h.

+ +
+
+ +

◆ pointer() [1/2]

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + +
T* testing::internal::ThreadLocal< T >::pointer ()
+
+inline
+
+ +

Definition at line 2169 of file gtest.h.

+ +
+
+ +

◆ pointer() [2/2]

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + +
const T* testing::internal::ThreadLocal< T >::pointer () const
+
+inline
+
+ +

Definition at line 2170 of file gtest.h.

+ +
+
+ +

◆ set()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + +
void testing::internal::ThreadLocal< T >::set (const T & value)
+
+inline
+
+ +

Definition at line 2172 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_thread_local.js b/doc/html/classtesting_1_1internal_1_1_thread_local.js new file mode 100644 index 0000000..30d44de --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_thread_local.js @@ -0,0 +1,9 @@ +var classtesting_1_1internal_1_1_thread_local = +[ + [ "ThreadLocal", "classtesting_1_1internal_1_1_thread_local.html#a106f3a3ad15d08f95f9887105d2a1af5", null ], + [ "ThreadLocal", "classtesting_1_1internal_1_1_thread_local.html#a85610bdfdbc93a4c56215e0aad7da870", null ], + [ "get", "classtesting_1_1internal_1_1_thread_local.html#ac56aeb97991824979bf192c63d1466f8", null ], + [ "pointer", "classtesting_1_1internal_1_1_thread_local.html#a882f57fed4b074de83693c0c0fe62858", null ], + [ "pointer", "classtesting_1_1internal_1_1_thread_local.html#a57e45bb60e3cd94abb04fa449e9f0367", null ], + [ "set", "classtesting_1_1internal_1_1_thread_local.html#ab5ebc7ba07426cef7167afa2a7707eb4", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1internal_1_1_type_id_helper-members.html b/doc/html/classtesting_1_1internal_1_1_type_id_helper-members.html new file mode 100644 index 0000000..0d03b67 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_type_id_helper-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::TypeIdHelper< T > Member List
+
+
+ +

This is the complete list of members for testing::internal::TypeIdHelper< T >, including all inherited members.

+ + +
dummy_testing::internal::TypeIdHelper< T >static
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_type_id_helper.html b/doc/html/classtesting_1_1internal_1_1_type_id_helper.html new file mode 100644 index 0000000..6612fbb --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_type_id_helper.html @@ -0,0 +1,152 @@ + + + + + + + +uTL: testing::internal::TypeIdHelper< T > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::TypeIdHelper< T > Class Template Reference
+
+
+ +

#include <gtest.h>

+ + + + +

+Static Public Attributes

static bool dummy_ = false
 
+

Detailed Description

+

template<typename T>
+class testing::internal::TypeIdHelper< T >

+ + +

Definition at line 6857 of file gtest.h.

+

Member Data Documentation

+ +

◆ dummy_

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + +
bool testing::internal::TypeIdHelper< T >::dummy_ = false
+
+static
+
+ +

Definition at line 6862 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_type_with_size-members.html b/doc/html/classtesting_1_1internal_1_1_type_with_size-members.html new file mode 100644 index 0000000..a2ce6ec --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_type_with_size-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::TypeWithSize< size > Member List
+
+
+ +

This is the complete list of members for testing::internal::TypeWithSize< size >, including all inherited members.

+ + +
UInt typedeftesting::internal::TypeWithSize< size >
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_type_with_size.html b/doc/html/classtesting_1_1internal_1_1_type_with_size.html new file mode 100644 index 0000000..cfb0fc2 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_type_with_size.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: testing::internal::TypeWithSize< size > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::TypeWithSize< size > Class Template Reference
+
+
+ +

#include <gtest.h>

+ + + + +

+Public Types

typedef void UInt
 
+

Detailed Description

+

template<size_t size>
+class testing::internal::TypeWithSize< size >

+ + +

Definition at line 2442 of file gtest.h.

+

Member Typedef Documentation

+ +

◆ UInt

+ +
+
+
+template<size_t size>
+ + + + +
typedef void testing::internal::TypeWithSize< size >::UInt
+
+ +

Definition at line 2446 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_type_with_size.js b/doc/html/classtesting_1_1internal_1_1_type_with_size.js new file mode 100644 index 0000000..bbaa505 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_type_with_size.js @@ -0,0 +1,4 @@ +var classtesting_1_1internal_1_1_type_with_size = +[ + [ "UInt", "classtesting_1_1internal_1_1_type_with_size.html#a3898640d9f6c1e18110eef90f47a5d7b", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1internal_1_1_type_with_size_3_014_01_4-members.html b/doc/html/classtesting_1_1internal_1_1_type_with_size_3_014_01_4-members.html new file mode 100644 index 0000000..71b9092 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_type_with_size_3_014_01_4-members.html @@ -0,0 +1,109 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::TypeWithSize< 4 > Member List
+
+
+ +

This is the complete list of members for testing::internal::TypeWithSize< 4 >, including all inherited members.

+ + + +
Int typedeftesting::internal::TypeWithSize< 4 >
UInt typedeftesting::internal::TypeWithSize< 4 >
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_type_with_size_3_014_01_4.html b/doc/html/classtesting_1_1internal_1_1_type_with_size_3_014_01_4.html new file mode 100644 index 0000000..43815d3 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_type_with_size_3_014_01_4.html @@ -0,0 +1,160 @@ + + + + + + + +uTL: testing::internal::TypeWithSize< 4 > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::TypeWithSize< 4 > Class Template Reference
+
+
+ +

#include <gtest.h>

+ + + + + + +

+Public Types

typedef int Int
 
typedef unsigned int UInt
 
+

Detailed Description

+

template<>
+class testing::internal::TypeWithSize< 4 >

+ + +

Definition at line 2451 of file gtest.h.

+

Member Typedef Documentation

+ +

◆ Int

+ +
+
+ + + + +
typedef int testing::internal::TypeWithSize< 4 >::Int
+
+ +

Definition at line 2457 of file gtest.h.

+ +
+
+ +

◆ UInt

+ +
+
+ + + + +
typedef unsigned int testing::internal::TypeWithSize< 4 >::UInt
+
+ +

Definition at line 2458 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_type_with_size_3_014_01_4.js b/doc/html/classtesting_1_1internal_1_1_type_with_size_3_014_01_4.js new file mode 100644 index 0000000..8da5214 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_type_with_size_3_014_01_4.js @@ -0,0 +1,5 @@ +var classtesting_1_1internal_1_1_type_with_size_3_014_01_4 = +[ + [ "Int", "classtesting_1_1internal_1_1_type_with_size_3_014_01_4.html#a80351860c00ed665e73f952143f4484a", null ], + [ "UInt", "classtesting_1_1internal_1_1_type_with_size_3_014_01_4.html#a7d559570f830bf35d095eeb94d98de58", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1internal_1_1_type_with_size_3_018_01_4-members.html b/doc/html/classtesting_1_1internal_1_1_type_with_size_3_018_01_4-members.html new file mode 100644 index 0000000..6500489 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_type_with_size_3_018_01_4-members.html @@ -0,0 +1,109 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::TypeWithSize< 8 > Member List
+
+
+ +

This is the complete list of members for testing::internal::TypeWithSize< 8 >, including all inherited members.

+ + + +
Int typedeftesting::internal::TypeWithSize< 8 >
UInt typedeftesting::internal::TypeWithSize< 8 >
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_type_with_size_3_018_01_4.html b/doc/html/classtesting_1_1internal_1_1_type_with_size_3_018_01_4.html new file mode 100644 index 0000000..e0a2e34 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_type_with_size_3_018_01_4.html @@ -0,0 +1,160 @@ + + + + + + + +uTL: testing::internal::TypeWithSize< 8 > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::TypeWithSize< 8 > Class Template Reference
+
+
+ +

#include <gtest.h>

+ + + + + + +

+Public Types

typedef long long Int
 
typedef unsigned long long UInt
 
+

Detailed Description

+

template<>
+class testing::internal::TypeWithSize< 8 >

+ + +

Definition at line 2463 of file gtest.h.

+

Member Typedef Documentation

+ +

◆ Int

+ +
+
+ + + + +
typedef long long testing::internal::TypeWithSize< 8 >::Int
+
+ +

Definition at line 2469 of file gtest.h.

+ +
+
+ +

◆ UInt

+ +
+
+ + + + +
typedef unsigned long long testing::internal::TypeWithSize< 8 >::UInt
+
+ +

Definition at line 2470 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_type_with_size_3_018_01_4.js b/doc/html/classtesting_1_1internal_1_1_type_with_size_3_018_01_4.js new file mode 100644 index 0000000..db7f7c7 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_type_with_size_3_018_01_4.js @@ -0,0 +1,5 @@ +var classtesting_1_1internal_1_1_type_with_size_3_018_01_4 = +[ + [ "Int", "classtesting_1_1internal_1_1_type_with_size_3_018_01_4.html#a36d5697e5f5254b0495f13c97d747e36", null ], + [ "UInt", "classtesting_1_1internal_1_1_type_with_size_3_018_01_4.html#a747e21c5aee8faf07ec65cd4c3d1ca62", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1internal_1_1_universal_printer-members.html b/doc/html/classtesting_1_1internal_1_1_universal_printer-members.html new file mode 100644 index 0000000..4b0770c --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_universal_printer-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::UniversalPrinter< T > Member List
+
+
+ +

This is the complete list of members for testing::internal::UniversalPrinter< T >, including all inherited members.

+ + +
Print(const T &value, ::std::ostream *os)testing::internal::UniversalPrinter< T >inlinestatic
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_universal_printer.html b/doc/html/classtesting_1_1internal_1_1_universal_printer.html new file mode 100644 index 0000000..d866c17 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_universal_printer.html @@ -0,0 +1,166 @@ + + + + + + + +uTL: testing::internal::UniversalPrinter< T > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::UniversalPrinter< T > Class Template Reference
+
+
+ +

#include <gtest.h>

+ + + + +

+Static Public Member Functions

static void Print (const T &value, ::std::ostream *os)
 
+

Detailed Description

+

template<typename T>
+class testing::internal::UniversalPrinter< T >

+ + +

Definition at line 8429 of file gtest.h.

+

Member Function Documentation

+ +

◆ Print()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void testing::internal::UniversalPrinter< T >::Print (const T & value,
::std::ostream * os 
)
+
+inlinestatic
+
+ +

Definition at line 8724 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_universal_printer_3_01_t[_n]_4-members.html b/doc/html/classtesting_1_1internal_1_1_universal_printer_3_01_t[_n]_4-members.html new file mode 100644 index 0000000..6447a09 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_universal_printer_3_01_t[_n]_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::UniversalPrinter< T[N]> Member List
+
+
+ +

This is the complete list of members for testing::internal::UniversalPrinter< T[N]>, including all inherited members.

+ + +
Print(const T(&a)[N], ::std::ostream *os)testing::internal::UniversalPrinter< T[N]>inlinestatic
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_universal_printer_3_01_t[_n]_4.html b/doc/html/classtesting_1_1internal_1_1_universal_printer_3_01_t[_n]_4.html new file mode 100644 index 0000000..4486bf0 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_universal_printer_3_01_t[_n]_4.html @@ -0,0 +1,166 @@ + + + + + + + +uTL: testing::internal::UniversalPrinter< T[N]> Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::UniversalPrinter< T[N]> Class Template Reference
+
+
+ +

#include <gtest.h>

+ + + + +

+Static Public Member Functions

static void Print (const T(&a)[N], ::std::ostream *os)
 
+

Detailed Description

+

template<typename T, size_t N>
+class testing::internal::UniversalPrinter< T[N]>

+ + +

Definition at line 8814 of file gtest.h.

+

Member Function Documentation

+ +

◆ Print()

+ +
+
+
+template<typename T , size_t N>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void testing::internal::UniversalPrinter< T[N]>::Print (const T(&) a[N],
::std::ostream * os 
)
+
+inlinestatic
+
+ +

Definition at line 8818 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_universal_printer_3_01_t_01_6_01_4-members.html b/doc/html/classtesting_1_1internal_1_1_universal_printer_3_01_t_01_6_01_4-members.html new file mode 100644 index 0000000..3921b05 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_universal_printer_3_01_t_01_6_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::UniversalPrinter< T & > Member List
+
+
+ +

This is the complete list of members for testing::internal::UniversalPrinter< T & >, including all inherited members.

+ + +
Print(const T &value, ::std::ostream *os)testing::internal::UniversalPrinter< T & >inlinestatic
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_universal_printer_3_01_t_01_6_01_4.html b/doc/html/classtesting_1_1internal_1_1_universal_printer_3_01_t_01_6_01_4.html new file mode 100644 index 0000000..a7ca2c8 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_universal_printer_3_01_t_01_6_01_4.html @@ -0,0 +1,166 @@ + + + + + + + +uTL: testing::internal::UniversalPrinter< T & > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::UniversalPrinter< T & > Class Template Reference
+
+
+ +

#include <gtest.h>

+ + + + +

+Static Public Member Functions

static void Print (const T &value, ::std::ostream *os)
 
+

Detailed Description

+

template<typename T>
+class testing::internal::UniversalPrinter< T & >

+ + +

Definition at line 8825 of file gtest.h.

+

Member Function Documentation

+ +

◆ Print()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void testing::internal::UniversalPrinter< T & >::Print (const T & value,
::std::ostream * os 
)
+
+inlinestatic
+
+ +

Definition at line 8831 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_universal_terse_printer-members.html b/doc/html/classtesting_1_1internal_1_1_universal_terse_printer-members.html new file mode 100644 index 0000000..ad7e05f --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_universal_terse_printer-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::UniversalTersePrinter< T > Member List
+
+
+ +

This is the complete list of members for testing::internal::UniversalTersePrinter< T >, including all inherited members.

+ + +
Print(const T &value, ::std::ostream *os)testing::internal::UniversalTersePrinter< T >inlinestatic
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_universal_terse_printer.html b/doc/html/classtesting_1_1internal_1_1_universal_terse_printer.html new file mode 100644 index 0000000..081d1ad --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_universal_terse_printer.html @@ -0,0 +1,166 @@ + + + + + + + +uTL: testing::internal::UniversalTersePrinter< T > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::UniversalTersePrinter< T > Class Template Reference
+
+
+ +

#include <gtest.h>

+ + + + +

+Static Public Member Functions

static void Print (const T &value, ::std::ostream *os)
 
+

Detailed Description

+

template<typename T>
+class testing::internal::UniversalTersePrinter< T >

+ + +

Definition at line 8848 of file gtest.h.

+

Member Function Documentation

+ +

◆ Print()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void testing::internal::UniversalTersePrinter< T >::Print (const T & value,
::std::ostream * os 
)
+
+inlinestatic
+
+ +

Definition at line 8850 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_universal_terse_printer_3_01_t[_n]_4-members.html b/doc/html/classtesting_1_1internal_1_1_universal_terse_printer_3_01_t[_n]_4-members.html new file mode 100644 index 0000000..792790c --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_universal_terse_printer_3_01_t[_n]_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::UniversalTersePrinter< T[N]> Member List
+
+
+ +

This is the complete list of members for testing::internal::UniversalTersePrinter< T[N]>, including all inherited members.

+ + +
Print(const T(&value)[N], ::std::ostream *os)testing::internal::UniversalTersePrinter< T[N]>inlinestatic
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_universal_terse_printer_3_01_t[_n]_4.html b/doc/html/classtesting_1_1internal_1_1_universal_terse_printer_3_01_t[_n]_4.html new file mode 100644 index 0000000..8807be6 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_universal_terse_printer_3_01_t[_n]_4.html @@ -0,0 +1,166 @@ + + + + + + + +uTL: testing::internal::UniversalTersePrinter< T[N]> Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::UniversalTersePrinter< T[N]> Class Template Reference
+
+
+ +

#include <gtest.h>

+ + + + +

+Static Public Member Functions

static void Print (const T(&value)[N], ::std::ostream *os)
 
+

Detailed Description

+

template<typename T, size_t N>
+class testing::internal::UniversalTersePrinter< T[N]>

+ + +

Definition at line 8862 of file gtest.h.

+

Member Function Documentation

+ +

◆ Print()

+ +
+
+
+template<typename T , size_t N>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void testing::internal::UniversalTersePrinter< T[N]>::Print (const T(&) value[N],
::std::ostream * os 
)
+
+inlinestatic
+
+ +

Definition at line 8864 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_universal_terse_printer_3_01_t_01_6_01_4-members.html b/doc/html/classtesting_1_1internal_1_1_universal_terse_printer_3_01_t_01_6_01_4-members.html new file mode 100644 index 0000000..74276b4 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_universal_terse_printer_3_01_t_01_6_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::UniversalTersePrinter< T & > Member List
+
+
+ +

This is the complete list of members for testing::internal::UniversalTersePrinter< T & >, including all inherited members.

+ + +
Print(const T &value, ::std::ostream *os)testing::internal::UniversalTersePrinter< T & >inlinestatic
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_universal_terse_printer_3_01_t_01_6_01_4.html b/doc/html/classtesting_1_1internal_1_1_universal_terse_printer_3_01_t_01_6_01_4.html new file mode 100644 index 0000000..32d1a5c --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_universal_terse_printer_3_01_t_01_6_01_4.html @@ -0,0 +1,166 @@ + + + + + + + +uTL: testing::internal::UniversalTersePrinter< T & > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::UniversalTersePrinter< T & > Class Template Reference
+
+
+ +

#include <gtest.h>

+ + + + +

+Static Public Member Functions

static void Print (const T &value, ::std::ostream *os)
 
+

Detailed Description

+

template<typename T>
+class testing::internal::UniversalTersePrinter< T & >

+ + +

Definition at line 8855 of file gtest.h.

+

Member Function Documentation

+ +

◆ Print()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void testing::internal::UniversalTersePrinter< T & >::Print (const T & value,
::std::ostream * os 
)
+
+inlinestatic
+
+ +

Definition at line 8857 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_universal_terse_printer_3_01char_01_5_01_4-members.html b/doc/html/classtesting_1_1internal_1_1_universal_terse_printer_3_01char_01_5_01_4-members.html new file mode 100644 index 0000000..caae13a --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_universal_terse_printer_3_01char_01_5_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::UniversalTersePrinter< char * > Member List
+
+
+ +

This is the complete list of members for testing::internal::UniversalTersePrinter< char * >, including all inherited members.

+ + +
Print(char *str, ::std::ostream *os)testing::internal::UniversalTersePrinter< char * >inlinestatic
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_universal_terse_printer_3_01char_01_5_01_4.html b/doc/html/classtesting_1_1internal_1_1_universal_terse_printer_3_01char_01_5_01_4.html new file mode 100644 index 0000000..146e3fc --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_universal_terse_printer_3_01char_01_5_01_4.html @@ -0,0 +1,164 @@ + + + + + + + +uTL: testing::internal::UniversalTersePrinter< char * > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::UniversalTersePrinter< char * > Class Template Reference
+
+
+ +

#include <gtest.h>

+ + + + +

+Static Public Member Functions

static void Print (char *str, ::std::ostream *os)
 
+

Detailed Description

+

template<>
+class testing::internal::UniversalTersePrinter< char * >

+ + +

Definition at line 8880 of file gtest.h.

+

Member Function Documentation

+ +

◆ Print()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void testing::internal::UniversalTersePrinter< char * >::Print (char * str,
::std::ostream * os 
)
+
+inlinestatic
+
+ +

Definition at line 8882 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_universal_terse_printer_3_01const_01char_01_5_01_4-members.html b/doc/html/classtesting_1_1internal_1_1_universal_terse_printer_3_01const_01char_01_5_01_4-members.html new file mode 100644 index 0000000..27dd515 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_universal_terse_printer_3_01const_01char_01_5_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::UniversalTersePrinter< const char * > Member List
+
+
+ +

This is the complete list of members for testing::internal::UniversalTersePrinter< const char * >, including all inherited members.

+ + +
Print(const char *str, ::std::ostream *os)testing::internal::UniversalTersePrinter< const char * >inlinestatic
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_universal_terse_printer_3_01const_01char_01_5_01_4.html b/doc/html/classtesting_1_1internal_1_1_universal_terse_printer_3_01const_01char_01_5_01_4.html new file mode 100644 index 0000000..6fc0f51 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_universal_terse_printer_3_01const_01char_01_5_01_4.html @@ -0,0 +1,164 @@ + + + + + + + +uTL: testing::internal::UniversalTersePrinter< const char * > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::UniversalTersePrinter< const char * > Class Template Reference
+
+
+ +

#include <gtest.h>

+ + + + +

+Static Public Member Functions

static void Print (const char *str, ::std::ostream *os)
 
+

Detailed Description

+

template<>
+class testing::internal::UniversalTersePrinter< const char * >

+ + +

Definition at line 8869 of file gtest.h.

+

Member Function Documentation

+ +

◆ Print()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void testing::internal::UniversalTersePrinter< const char * >::Print (const char * str,
::std::ostream * os 
)
+
+inlinestatic
+
+ +

Definition at line 8871 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_universal_terse_printer_3_01const_01wchar__t_01_5_01_4-members.html b/doc/html/classtesting_1_1internal_1_1_universal_terse_printer_3_01const_01wchar__t_01_5_01_4-members.html new file mode 100644 index 0000000..18938eb --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_universal_terse_printer_3_01const_01wchar__t_01_5_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::UniversalTersePrinter< const wchar_t * > Member List
+
+
+ +

This is the complete list of members for testing::internal::UniversalTersePrinter< const wchar_t * >, including all inherited members.

+ + +
Print(const wchar_t *str, ::std::ostream *os)testing::internal::UniversalTersePrinter< const wchar_t * >inlinestatic
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_universal_terse_printer_3_01const_01wchar__t_01_5_01_4.html b/doc/html/classtesting_1_1internal_1_1_universal_terse_printer_3_01const_01wchar__t_01_5_01_4.html new file mode 100644 index 0000000..1c283dc --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_universal_terse_printer_3_01const_01wchar__t_01_5_01_4.html @@ -0,0 +1,164 @@ + + + + + + + +uTL: testing::internal::UniversalTersePrinter< const wchar_t * > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::UniversalTersePrinter< const wchar_t * > Class Template Reference
+
+
+ +

#include <gtest.h>

+ + + + +

+Static Public Member Functions

static void Print (const wchar_t *str, ::std::ostream *os)
 
+

Detailed Description

+

template<>
+class testing::internal::UniversalTersePrinter< const wchar_t * >

+ + +

Definition at line 8889 of file gtest.h.

+

Member Function Documentation

+ +

◆ Print()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void testing::internal::UniversalTersePrinter< const wchar_t * >::Print (const wchar_t * str,
::std::ostream * os 
)
+
+inlinestatic
+
+ +

Definition at line 8891 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_universal_terse_printer_3_01wchar__t_01_5_01_4-members.html b/doc/html/classtesting_1_1internal_1_1_universal_terse_printer_3_01wchar__t_01_5_01_4-members.html new file mode 100644 index 0000000..a0f365d --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_universal_terse_printer_3_01wchar__t_01_5_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::UniversalTersePrinter< wchar_t * > Member List
+
+
+ +

This is the complete list of members for testing::internal::UniversalTersePrinter< wchar_t * >, including all inherited members.

+ + +
Print(wchar_t *str, ::std::ostream *os)testing::internal::UniversalTersePrinter< wchar_t * >inlinestatic
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_universal_terse_printer_3_01wchar__t_01_5_01_4.html b/doc/html/classtesting_1_1internal_1_1_universal_terse_printer_3_01wchar__t_01_5_01_4.html new file mode 100644 index 0000000..407d935 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_universal_terse_printer_3_01wchar__t_01_5_01_4.html @@ -0,0 +1,164 @@ + + + + + + + +uTL: testing::internal::UniversalTersePrinter< wchar_t * > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::UniversalTersePrinter< wchar_t * > Class Template Reference
+
+
+ +

#include <gtest.h>

+ + + + +

+Static Public Member Functions

static void Print (wchar_t *str, ::std::ostream *os)
 
+

Detailed Description

+

template<>
+class testing::internal::UniversalTersePrinter< wchar_t * >

+ + +

Definition at line 8902 of file gtest.h.

+

Member Function Documentation

+ +

◆ Print()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static void testing::internal::UniversalTersePrinter< wchar_t * >::Print (wchar_t * str,
::std::ostream * os 
)
+
+inlinestatic
+
+ +

Definition at line 8904 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_value_array-members.html b/doc/html/classtesting_1_1internal_1_1_value_array-members.html new file mode 100644 index 0000000..5af4f8e --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_value_array-members.html @@ -0,0 +1,109 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::ValueArray< Ts > Member List
+
+
+ +

This is the complete list of members for testing::internal::ValueArray< Ts >, including all inherited members.

+ + + +
operator ParamGenerator< T >() consttesting::internal::ValueArray< Ts >inline
ValueArray(Ts... v)testing::internal::ValueArray< Ts >inline
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_value_array.html b/doc/html/classtesting_1_1internal_1_1_value_array.html new file mode 100644 index 0000000..c867926 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_value_array.html @@ -0,0 +1,191 @@ + + + + + + + +uTL: testing::internal::ValueArray< Ts > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::ValueArray< Ts > Class Template Reference
+
+
+ +

#include <gtest.h>

+ + + + + + + +

+Public Member Functions

 ValueArray (Ts... v)
 
template<typename T >
 operator ParamGenerator< T > () const
 
+

Detailed Description

+

template<typename... Ts>
+class testing::internal::ValueArray< Ts >

+ + +

Definition at line 11280 of file gtest.h.

+

Constructor & Destructor Documentation

+ +

◆ ValueArray()

+ +
+
+
+template<typename... Ts>
+ + + + + +
+ + + + + + + + +
testing::internal::ValueArray< Ts >::ValueArray (Ts... v)
+
+inline
+
+ +

Definition at line 11282 of file gtest.h.

+ +
+
+

Member Function Documentation

+ +

◆ operator ParamGenerator< T >()

+ +
+
+
+template<typename... Ts>
+
+template<typename T >
+ + + + + +
+ + + + + + + +
testing::internal::ValueArray< Ts >::operator ParamGenerator< T > () const
+
+inline
+
+ +

Definition at line 11285 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_value_array.js b/doc/html/classtesting_1_1internal_1_1_value_array.js new file mode 100644 index 0000000..6e60c70 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_value_array.js @@ -0,0 +1,5 @@ +var classtesting_1_1internal_1_1_value_array = +[ + [ "ValueArray", "classtesting_1_1internal_1_1_value_array.html#acd7cd6a969a7e95152eac1787c42c9ed", null ], + [ "operator ParamGenerator< T >", "classtesting_1_1internal_1_1_value_array.html#a019560f10debdce5f47bb18c0e5261b5", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1internal_1_1_values_in_iterator_range_generator-members.html b/doc/html/classtesting_1_1internal_1_1_values_in_iterator_range_generator-members.html new file mode 100644 index 0000000..f50dd04 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_values_in_iterator_range_generator-members.html @@ -0,0 +1,113 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
testing::internal::ValuesInIteratorRangeGenerator< T > Member List
+
+ +
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_values_in_iterator_range_generator.html b/doc/html/classtesting_1_1internal_1_1_values_in_iterator_range_generator.html new file mode 100644 index 0000000..d4b791a --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_values_in_iterator_range_generator.html @@ -0,0 +1,286 @@ + + + + + + + +uTL: testing::internal::ValuesInIteratorRangeGenerator< T > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
testing::internal::ValuesInIteratorRangeGenerator< T > Class Template Reference
+
+
+ +

#include <gtest.h>

+
+Inheritance diagram for testing::internal::ValuesInIteratorRangeGenerator< T >:
+
+
+ + +testing::internal::ParamGeneratorInterface< T > + +
+ + + + + + + + + + + + + + +

+Public Member Functions

template<typename ForwardIterator >
 ValuesInIteratorRangeGenerator (ForwardIterator begin, ForwardIterator end)
 
 ~ValuesInIteratorRangeGenerator () override
 
ParamIteratorInterface< T > * Begin () const override
 
ParamIteratorInterface< T > * End () const override
 
- Public Member Functions inherited from testing::internal::ParamGeneratorInterface< T >
virtual ~ParamGeneratorInterface ()
 
+ + + + +

+Additional Inherited Members

- Public Types inherited from testing::internal::ParamGeneratorInterface< T >
typedef T ParamType
 
+

Detailed Description

+

template<typename T>
+class testing::internal::ValuesInIteratorRangeGenerator< T >

+ + +

Definition at line 10828 of file gtest.h.

+

Constructor & Destructor Documentation

+ +

◆ ValuesInIteratorRangeGenerator()

+ +
+
+
+template<typename T >
+
+template<typename ForwardIterator >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
testing::internal::ValuesInIteratorRangeGenerator< T >::ValuesInIteratorRangeGenerator (ForwardIterator begin,
ForwardIterator end 
)
+
+inline
+
+ +

Definition at line 10831 of file gtest.h.

+ +
+
+ +

◆ ~ValuesInIteratorRangeGenerator()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + +
testing::internal::ValuesInIteratorRangeGenerator< T >::~ValuesInIteratorRangeGenerator ()
+
+inlineoverride
+
+ +

Definition at line 10833 of file gtest.h.

+ +
+
+

Member Function Documentation

+ +

◆ Begin()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + +
ParamIteratorInterface<T>* testing::internal::ValuesInIteratorRangeGenerator< T >::Begin () const
+
+inlineoverridevirtual
+
+ +

Implements testing::internal::ParamGeneratorInterface< T >.

+ +

Definition at line 10835 of file gtest.h.

+ +
+
+ +

◆ End()

+ +
+
+
+template<typename T >
+ + + + + +
+ + + + + + + +
ParamIteratorInterface<T>* testing::internal::ValuesInIteratorRangeGenerator< T >::End () const
+
+inlineoverridevirtual
+
+ +

Implements testing::internal::ParamGeneratorInterface< T >.

+ +

Definition at line 10838 of file gtest.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • test/eclipse-cygwin/lib/gtest/gtest.h
  • +
+
+
+ + + + diff --git a/doc/html/classtesting_1_1internal_1_1_values_in_iterator_range_generator.js b/doc/html/classtesting_1_1internal_1_1_values_in_iterator_range_generator.js new file mode 100644 index 0000000..0a7d5a0 --- /dev/null +++ b/doc/html/classtesting_1_1internal_1_1_values_in_iterator_range_generator.js @@ -0,0 +1,7 @@ +var classtesting_1_1internal_1_1_values_in_iterator_range_generator = +[ + [ "ValuesInIteratorRangeGenerator", "classtesting_1_1internal_1_1_values_in_iterator_range_generator.html#a8b30f6028bc5739bbd7c24b0f0e409f7", null ], + [ "~ValuesInIteratorRangeGenerator", "classtesting_1_1internal_1_1_values_in_iterator_range_generator.html#a9070d5b79803164625d3aa77a1659e9f", null ], + [ "Begin", "classtesting_1_1internal_1_1_values_in_iterator_range_generator.html#a71ffed6f1deba05f11c9d45f6ab5b85d", null ], + [ "End", "classtesting_1_1internal_1_1_values_in_iterator_range_generator.html#a298cfb66a90b1a39c0cea3ca7ae1ece1", null ] +]; \ No newline at end of file diff --git a/doc/html/classtesting_1_1internal_1_1_values_in_iterator_range_generator.png b/doc/html/classtesting_1_1internal_1_1_values_in_iterator_range_generator.png new file mode 100644 index 0000000000000000000000000000000000000000..92757e0a6161e9a15c059aeff3e977c73d853f21 GIT binary patch literal 1109 zcmeAS@N?(olHy`uVBq!ia0y~yV6+CZ12~w0WT2bU4Im{E;1lBd|Nnm=^TnI5rTvE{ z09jys;J^Xa&O7ozE=Ng_UoZnu5eQs86=KA|!2HD1#WAFU@$KB(MatG3uG6=z`t*N( zjm&QS1>VuVX+|rBh2Cz8?q$$b{^+%K>$0r1U$?E8G-c9~*UNU3ST$Q6! z-l%9U(=KzJB-{VIY}MvD5+?empU+o`%{sZF-_k$L@LAH0-EUN026ev)yQ3?4H*vdL z%GEcM?h60^CjBOU{?c-vNU`;q+n;^iFIivrYxjWnr#)UzXjzQhfhgl|}rSX(gK{r}P-h-k<-F`c*=OT}g;mn9lhj;B>^1bhF;7juxZ?j{HtXubG z%A{9pH{6=}NA{_Cq*3B^mB+@Fdvh5~{fn!(ORrBq@_SdYeOBjSUUTQ{;PK%>@(i~^3}}V4bpeAir=43|91PG_5Jj-vhU{E1l_)MXQr)HM)AkF zdk^21(f6HPw)SVtrK5Ayi(USlt__={w^hb<(!YAH&Bfp6s{FM(`Z_P<-J~zoUzQqc zd+v`o={G3}C9JiHMdZ;zk8K7Bj%Ttd#}GyAG!4@{lbqi4RkJoG@Xb{WI;U)SG+eTp%P zx__qQ?&Q~O<^O-(Ic%63xo6qkS=axk{rUMY@u&Fj9?pzKwRIKe(+(Xi&YKmpTSscK z`8h^oy_+*-MJ${!@8eG^gs_ z&RCH-xgpOgPyW2SOZravvIAk~bIzaJa_i*WlJCp*q@~yJ=WR88z8#b}w&$fT65sIn zL}9+~zG|uJ*=O#_#p=tqPML2FdHSVh@5=mofa0xe Sngc8Y7(8A5T-G@yGywoL@gal& literal 0 HcmV?d00001 diff --git a/doc/html/classutl_1_1__1wire__i-members.html b/doc/html/classutl_1_1__1wire__i-members.html new file mode 100644 index 0000000..0c2489a --- /dev/null +++ b/doc/html/classutl_1_1__1wire__i-members.html @@ -0,0 +1,147 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
utl::_1wire_i< impl_t > Member List
+
+
+ +

This is the complete list of members for utl::_1wire_i< impl_t >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_1wire_i()=defaultutl::_1wire_i< impl_t >protected
_1wire_i(const _1wire_i &)=deleteutl::_1wire_i< impl_t >protected
_1wire_i_det::_first(_T &, typename _T::Speed, bool)utl::_1wire_i< impl_t >friend
_1wire_i_det::_match(_T &obj, _1wire_id_t &id, typename _T::Speed s)utl::_1wire_i< impl_t >friend
_1wire_i_det::_match_n_ovdr(_T &obj, _1wire_id_t &id)utl::_1wire_i< impl_t >friend
_1wire_i_det::_next(_T &, typename _T::Speed, bool)utl::_1wire_i< impl_t >friend
_1wire_i_det::_skip(_T &obj, typename _T::Speed s)utl::_1wire_i< impl_t >friend
_1wire_i_det::_skip_n_ovdr(_T &obj)utl::_1wire_i< impl_t >friend
_1wire_i_det::_touch(_T &, byte_t, typename _T::Speed)utl::_1wire_i< impl_t >friend
_CRTP_IMPL(impl_t)utl::_1wire_i< impl_t >private
_reset(Speed s)utl::_1wire_i< impl_t >inlineprivate
bit(bool b)utl::_1wire_i< impl_t >inlineprivate
CMD_ALARM_SEARCH enum valueutl::_1wire_i< impl_t >private
CMD_MATCH enum valueutl::_1wire_i< impl_t >private
CMD_OVDR_MATCH enum valueutl::_1wire_i< impl_t >private
CMD_OVDR_SKIP enum valueutl::_1wire_i< impl_t >private
CMD_READ_ROM enum valueutl::_1wire_i< impl_t >private
CMD_SEARCH_ROM enum valueutl::_1wire_i< impl_t >private
CMD_SKIP enum valueutl::_1wire_i< impl_t >private
Command enum nameutl::_1wire_i< impl_t >private
cur_utl::_1wire_i< impl_t >private
dec_utl::_1wire_i< impl_t >private
first(Speed s=Speed::STD, bool alarm=false)utl::_1wire_i< impl_t >inline
match(_1wire_id_t &id, Speed s=Speed::STD)utl::_1wire_i< impl_t >inline
match_n_ovdr(_1wire_id_t &id)utl::_1wire_i< impl_t >inline
next(Speed s=Speed::STD, bool alarm=false)utl::_1wire_i< impl_t >inline
operator=(const _1wire_i &)=deleteutl::_1wire_i< impl_t >protected
pos_utl::_1wire_i< impl_t >private
reset(Speed s=Speed::STD)utl::_1wire_i< impl_t >inline
rx_data(Speed s=Speed::STD)utl::_1wire_i< impl_t >inline
rx_data(byte_t *in, size_t n, Speed s=Speed::STD)utl::_1wire_i< impl_t >
skip(Speed s=Speed::STD)utl::_1wire_i< impl_t >inline
skip_n_ovdr()utl::_1wire_i< impl_t >inline
speed() constutl::_1wire_i< impl_t >inlineprivate
speed(Speed s)utl::_1wire_i< impl_t >inlineprivate
Speed enum nameutl::_1wire_i< impl_t >
tx_data(byte_t out, Speed s=Speed::STD)utl::_1wire_i< impl_t >inline
tx_data(const byte_t *out, byte_t *in, size_t n, Speed s=Speed::STD)utl::_1wire_i< impl_t >
type typedefutl::_1wire_i< impl_t >
~_1wire_i()=defaultutl::_1wire_i< impl_t >protected
+
+ + + + diff --git a/doc/html/classutl_1_1__1wire__i.html b/doc/html/classutl_1_1__1wire__i.html new file mode 100644 index 0000000..6e007ff --- /dev/null +++ b/doc/html/classutl_1_1__1wire__i.html @@ -0,0 +1,1480 @@ + + + + + + + +uTL: utl::_1wire_i< impl_t > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
utl::_1wire_i< impl_t > Class Template Reference
+
+
+ +

Template base class for 1-wire communication interface using CRTP. + More...

+ +

#include <_1wire.h>

+
+Inheritance diagram for utl::_1wire_i< impl_t >:
+
+
+ + +utl::_1wire_uart_i< Impl_t > + +
+ + + + + + + + +

+Public Types

enum  Speed { Speed::STD =0, +Speed::OVDR + }
 1-wire bus speed More...
 
using type = _1wire_i
 Export type as identity meta-function. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

User functionality provided by the interface
bool reset (Speed s=Speed::STD)
 Generate a 1-wire reset. More...
 
byte_t tx_data (byte_t out, Speed s=Speed::STD)
 
size_t tx_data (const byte_t *out, byte_t *in, size_t n, Speed s=Speed::STD)
 
byte_t rx_data (Speed s=Speed::STD)
 
size_t rx_data (byte_t *in, size_t n, Speed s=Speed::STD)
 
void match (_1wire_id_t &id, Speed s=Speed::STD)
 
void match_n_ovdr (_1wire_id_t &id)
 
void skip (Speed s=Speed::STD)
 
void skip_n_ovdr ()
 
_1wire_id_t first (Speed s=Speed::STD, bool alarm=false)
 'first' operation, to search on the 1-Wire for the first device. This is performed by setting dec_, pos_ and cur_ to zero and then doing the search. More...
 
_1wire_id_t next (Speed s=Speed::STD, bool alarm=false)
 'next' operation, to search on the 1-Wire for the next device. This search is usually performed after a 'first' operation or another 'next' operation. Based on maxim-ic application note 187. More...
 
+ + + + + + + + + + + + + +

+Protected Member Functions

Object lifetime
 _1wire_i ()=default
 Allow constructor from derived only. More...
 
 ~_1wire_i ()=default
 Allow destructor from derived only. More...
 
 _1wire_i (const _1wire_i &)=delete
 No copies. More...
 
_1wire_ioperator= (const _1wire_i &)=delete
 
+ + + + + + + + + + + + + + + +

+Private Member Functions

 _CRTP_IMPL (impl_t)
 
Implementation requirements
Note
In order for the implementation to have the following as private members too it need to declare this class as friend
+
Speed speed () const
 Get the 1-wire bus speed. More...
 
void speed (Speed s)
 
bool bit (bool b)
 Write a bit to the 1-Wire bus, return response/write status and provide the recovery time. More...
 
bool _reset (Speed s)
 
+ + + + + + + +

+Private Attributes

_1wire_id_t dec_ {_1wire_id_t::nullDev()}
 
_1wire_id_t pos_ {_1wire_id_t::nullDev()}
 
_1wire_id_t cur_ {_1wire_id_t::nullDev()}
 
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Friends api to provide functionality to all class specializations

enum  Command {
+  CMD_READ_ROM = 0x33, +CMD_OVDR_SKIP = 0x3C, +CMD_MATCH = 0x55, +CMD_OVDR_MATCH = 0x69, +
+  CMD_SKIP = 0xCC, +CMD_ALARM_SEARCH = 0xEC, +CMD_SEARCH_ROM = 0xF0 +
+ }
 
template<typename _T >
byte_t _1wire_i_det::_touch (_T &, byte_t, typename _T::Speed)
 
template<typename _T >
void _1wire_i_det::_match (_T &obj, _1wire_id_t &id, typename _T::Speed s)
 
template<typename _T >
void _1wire_i_det::_match_n_ovdr (_T &obj, _1wire_id_t &id)
 
template<typename _T >
void _1wire_i_det::_skip (_T &obj, typename _T::Speed s)
 
template<typename _T >
void _1wire_i_det::_skip_n_ovdr (_T &obj)
 
template<typename _T >
_1wire_id_t _1wire_i_det::_first (_T &, typename _T::Speed, bool)
 
template<typename _T >
_1wire_id_t _1wire_i_det::_next (_T &, typename _T::Speed, bool)
 
+

Detailed Description

+

template<typename impl_t>
+class utl::_1wire_i< impl_t >

+ +

Template base class for 1-wire communication interface using CRTP.

+
Parameters
+ + +
impl_tThe CRTP type (the derived/implementation class typename).
+
+
+ +

Definition at line 57 of file _1wire.h.

+

Member Typedef Documentation

+ +

◆ type

+ +
+
+
+template<typename impl_t>
+ + + + +
using utl::_1wire_i< impl_t >::type = _1wire_i
+
+ +

Export type as identity meta-function.

+ +

Definition at line 61 of file _1wire.h.

+ +
+
+

Member Enumeration Documentation

+ +

◆ Command

+ +
+
+
+template<typename impl_t>
+ + + + + +
+ + + + +
enum utl::_1wire_i::Command
+
+private
+
+ + + + + + + + +
Enumerator
CMD_READ_ROM 
CMD_OVDR_SKIP 
CMD_MATCH 
CMD_OVDR_MATCH 
CMD_SKIP 
CMD_ALARM_SEARCH 
CMD_SEARCH_ROM 
+ +

Definition at line 97 of file _1wire.h.

+ +
+
+ +

◆ Speed

+ +
+
+
+template<typename impl_t>
+ + + + + +
+ + + + +
enum utl::_1wire_i::Speed
+
+strong
+
+ +

1-wire bus speed

+ + + +
Enumerator
STD 
OVDR 
+ +

Definition at line 64 of file _1wire.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ _1wire_i() [1/2]

+ +
+
+
+template<typename impl_t>
+ + + + + +
+ + + + + + + +
utl::_1wire_i< impl_t >::_1wire_i ()
+
+protecteddefault
+
+ +

Allow constructor from derived only.

+ +
+
+ +

◆ ~_1wire_i()

+ +
+
+
+template<typename impl_t>
+ + + + + +
+ + + + + + + +
utl::_1wire_i< impl_t >::~_1wire_i ()
+
+protecteddefault
+
+ +

Allow destructor from derived only.

+ +
+
+ +

◆ _1wire_i() [2/2]

+ +
+
+
+template<typename impl_t>
+ + + + + +
+ + + + + + + + +
utl::_1wire_i< impl_t >::_1wire_i (const _1wire_i< impl_t > & )
+
+protecteddelete
+
+ +

No copies.

+ +
+
+

Member Function Documentation

+ +

◆ _CRTP_IMPL()

+ +
+
+
+template<typename impl_t>
+ + + + + +
+ + + + + + + + +
utl::_1wire_i< impl_t >::_CRTP_IMPL (impl_t )
+
+private
+
+ +
+
+ +

◆ _reset()

+ +
+
+
+template<typename impl_t>
+ + + + + +
+ + + + + + + + +
bool utl::_1wire_i< impl_t >::_reset (Speed s)
+
+inlineprivate
+
+

Generate a 1-wire reset and return the operation status

+ +

Definition at line 89 of file _1wire.h.

+ +
+
+ +

◆ bit()

+ +
+
+
+template<typename impl_t>
+ + + + + +
+ + + + + + + + +
bool utl::_1wire_i< impl_t >::bit (bool b)
+
+inlineprivate
+
+ +

Write a bit to the 1-Wire bus, return response/write status and provide the recovery time.

+ +

Definition at line 88 of file _1wire.h.

+ +
+
+ +

◆ first()

+ +
+
+
+template<typename impl_t>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
_1wire_id_t utl::_1wire_i< impl_t >::first (Speed s = Speed::STD,
bool alarm = false 
)
+
+inline
+
+ +

'first' operation, to search on the 1-Wire for the first device. This is performed by setting dec_, pos_ and cur_ to zero and then doing the search.

+
Parameters
+ + + +
sThe bus speed
alarmIf set, search for alarm devices
+
+
+
Returns
ID The romID
    +
  • nullDev Indicate no [more] device[s]
  • +
+
+ +

Definition at line 207 of file _1wire.h.

+ +
+
+ +

◆ match()

+ +
+
+
+template<typename impl_t>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void utl::_1wire_i< impl_t >::match (_1wire_id_tid,
Speed s = Speed::STD 
)
+
+inline
+
+

Send match rom command

Parameters
+ + + +
idThe ID to select on the bus
sThe speed to use for the command
+
+
+ +

Definition at line 173 of file _1wire.h.

+ +
+
+ +

◆ match_n_ovdr()

+ +
+
+
+template<typename impl_t>
+ + + + + +
+ + + + + + + + +
void utl::_1wire_i< impl_t >::match_n_ovdr (_1wire_id_tid)
+
+inline
+
+

Match and overdrive sequence

Parameters
+ + + +
objThe object from which we call private members
idThe ID to select on the bus
+
+
+ +

Definition at line 181 of file _1wire.h.

+ +
+
+ +

◆ next()

+ +
+
+
+template<typename impl_t>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
_1wire_id_t utl::_1wire_i< impl_t >::next (Speed s = Speed::STD,
bool alarm = false 
)
+
+inline
+
+ +

'next' operation, to search on the 1-Wire for the next device. This search is usually performed after a 'first' operation or another 'next' operation. Based on maxim-ic application note 187.

+
Parameters
+ + + +
sThe bus speed
alarmIf set, search for alarm devices
+
+
+
Returns
ID The romID
    +
  • nullDev Indicate no [more] device[s]
  • +
+
+ +

Definition at line 220 of file _1wire.h.

+ +
+
+ +

◆ operator=()

+ +
+
+
+template<typename impl_t>
+ + + + + +
+ + + + + + + + +
_1wire_i& utl::_1wire_i< impl_t >::operator= (const _1wire_i< impl_t > & )
+
+protecteddelete
+
+ +
+
+ +

◆ reset()

+ +
+
+
+template<typename impl_t>
+ + + + + +
+ + + + + + + + +
bool utl::_1wire_i< impl_t >::reset (Speed s = Speed::STD)
+
+inline
+
+ +

Generate a 1-wire reset.

+
Parameters
+ + +
sBus speed
+
+
+
Returns
The status of the operation
    +
  • 0 Fail
  • +
  • 1 Success
  • +
+
+ +

Definition at line 128 of file _1wire.h.

+ +
+
+ +

◆ rx_data() [1/2]

+ +
+
+
+template<typename impl_t>
+ + + + + +
+ + + + + + + + +
byte_t utl::_1wire_i< impl_t >::rx_data (Speed s = Speed::STD)
+
+inline
+
+

Receive a byte from 1-Wire bus while transmitting 0xFF

Parameters
+ + +
sBus speed to use
+
+
+
Returns
The byte received.
+ +

Definition at line 156 of file _1wire.h.

+ +
+
+ +

◆ rx_data() [2/2]

+ +
+
+
+template<typename _I >
+ + + + + + + + + + + + + + + + + + + + + + + + +
size_t utl::_1wire_i< _I >::rx_data (byte_tin,
size_t n,
Speed s = Speed::STD 
)
+
+

Receive a number of bytes from 1-wire bus while transmitting 0xFFs

Parameters
+ + + + +
inPointer to data to store
nNumber of bytes
sSpeed to use
+
+
+
Returns
The number of transmitted bytes
+ +

Definition at line 248 of file _1wire.h.

+ +
+
+ +

◆ skip()

+ +
+
+
+template<typename impl_t>
+ + + + + +
+ + + + + + + + +
void utl::_1wire_i< impl_t >::skip (Speed s = Speed::STD)
+
+inline
+
+

Send skip command to the bus

Parameters
+ + +
idThe ID to select on the bus
+
+
+ +

Definition at line 188 of file _1wire.h.

+ +
+
+ +

◆ skip_n_ovdr()

+ +
+
+
+template<typename impl_t>
+ + + + + +
+ + + + + + + +
void utl::_1wire_i< impl_t >::skip_n_ovdr ()
+
+inline
+
+

Send the Skip and Overdrive sequence

+ +

Definition at line 194 of file _1wire.h.

+ +
+
+ +

◆ speed() [1/2]

+ +
+
+
+template<typename impl_t>
+ + + + + +
+ + + + + + + +
Speed utl::_1wire_i< impl_t >::speed () const
+
+inlineprivate
+
+ +

Get the 1-wire bus speed.

+ +

Definition at line 85 of file _1wire.h.

+ +
+
+ +

◆ speed() [2/2]

+ +
+
+
+template<typename impl_t>
+ + + + + +
+ + + + + + + + +
void utl::_1wire_i< impl_t >::speed (Speed s)
+
+inlineprivate
+
+

Set the 1-wire bus speed

+ +

Definition at line 86 of file _1wire.h.

+ +
+
+ +

◆ tx_data() [1/2]

+ +
+
+
+template<typename impl_t>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
byte_t utl::_1wire_i< impl_t >::tx_data (byte_t out,
Speed s = Speed::STD 
)
+
+inline
+
+

Transmit a byte to 1-Wire bus and read the response

Parameters
+ + + +
outThe byte to write
sBus speed to use
+
+
+
Returns
The byte received.
+ +

Definition at line 138 of file _1wire.h.

+ +
+
+ +

◆ tx_data() [2/2]

+ +
+
+
+template<typename _I >
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
size_t utl::_1wire_i< _I >::tx_data (const byte_tout,
byte_tin,
size_t n,
Speed s = Speed::STD 
)
+
+

Transmit a number of bytes to 1-wire bus and read the response

Parameters
+ + + + + +
outPointer to data to transmit
inPointer to data to store
nNumber of bytes
sSpeed to use
+
+
+
Returns
The number of transmitted bytes
+ +

Definition at line 241 of file _1wire.h.

+ +
+
+

Friends And Related Function Documentation

+ +

◆ _1wire_i_det::_first

+ +
+
+
+template<typename impl_t>
+
+template<typename _T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
_1wire_id_t _1wire_i_det::_first (_T & ,
typename _T::Speed ,
bool  
)
+
+friend
+
+ +
+
+ +

◆ _1wire_i_det::_match

+ +
+
+
+template<typename impl_t>
+
+template<typename _T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void _1wire_i_det::_match (_T & obj,
_1wire_id_tid,
typename _T::Speed s 
)
+
+friend
+
+ +
+
+ +

◆ _1wire_i_det::_match_n_ovdr

+ +
+
+
+template<typename impl_t>
+
+template<typename _T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void _1wire_i_det::_match_n_ovdr (_T & obj,
_1wire_id_tid 
)
+
+friend
+
+ +
+
+ +

◆ _1wire_i_det::_next

+ +
+
+
+template<typename impl_t>
+
+template<typename _T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
_1wire_id_t _1wire_i_det::_next (_T & ,
typename _T::Speed ,
bool  
)
+
+friend
+
+ +
+
+ +

◆ _1wire_i_det::_skip

+ +
+
+
+template<typename impl_t>
+
+template<typename _T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void _1wire_i_det::_skip (_T & obj,
typename _T::Speed s 
)
+
+friend
+
+ +
+
+ +

◆ _1wire_i_det::_skip_n_ovdr

+ +
+
+
+template<typename impl_t>
+
+template<typename _T >
+ + + + + +
+ + + + + + + + +
void _1wire_i_det::_skip_n_ovdr (_T & obj)
+
+friend
+
+ +
+
+ +

◆ _1wire_i_det::_touch

+ +
+
+
+template<typename impl_t>
+
+template<typename _T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
byte_t _1wire_i_det::_touch (_T & ,
byte_t ,
typename _T::Speed  
)
+
+friend
+
+ +
+
+

Member Data Documentation

+ +

◆ cur_

+ +
+
+
+template<typename impl_t>
+ + + + + +
+ + + + +
_1wire_id_t utl::_1wire_i< impl_t >::cur_ {_1wire_id_t::nullDev()}
+
+private
+
+ +

Definition at line 237 of file _1wire.h.

+ +
+
+ +

◆ dec_

+ +
+
+
+template<typename impl_t>
+ + + + + +
+ + + + +
_1wire_id_t utl::_1wire_i< impl_t >::dec_ {_1wire_id_t::nullDev()}
+
+private
+
+

Hold the algorithm's select bit when a discrepancy is detected. We use this variable to navigate to the ROM tree as we store the path we take each time (0-1). Each bit represent a bit position in the ROM ID.

+ +

Definition at line 226 of file _1wire.h.

+ +
+
+ +

◆ pos_

+ +
+
+
+template<typename impl_t>
+ + + + + +
+ + + + +
_1wire_id_t utl::_1wire_i< impl_t >::pos_ {_1wire_id_t::nullDev()}
+
+private
+
+

Hold the discrepancy position. We use this variable to navigate to the ROM tree as we store the crossroads(1) we encounter. Each bit represent a bit position in the ROM ID.

+ +

Definition at line 232 of file _1wire.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/doc/html/classutl_1_1__1wire__i.js b/doc/html/classutl_1_1__1wire__i.js new file mode 100644 index 0000000..4385fc7 --- /dev/null +++ b/doc/html/classutl_1_1__1wire__i.js @@ -0,0 +1,47 @@ +var classutl_1_1__1wire__i = +[ + [ "type", "classutl_1_1__1wire__i.html#afb63e64403924897a8277eb4159ebd44", null ], + [ "Command", "classutl_1_1__1wire__i.html#a915f13cf9dbb891eeac73b527a5b9614", [ + [ "CMD_READ_ROM", "classutl_1_1__1wire__i.html#a915f13cf9dbb891eeac73b527a5b9614a07e40db0f36ce4354babe1809f31e20b", null ], + [ "CMD_OVDR_SKIP", "classutl_1_1__1wire__i.html#a915f13cf9dbb891eeac73b527a5b9614af450a6ccd821f0c2e769e67b99df4cc7", null ], + [ "CMD_MATCH", "classutl_1_1__1wire__i.html#a915f13cf9dbb891eeac73b527a5b9614a15131061d5cc629dbd1f2b7c2ff1b79b", null ], + [ "CMD_OVDR_MATCH", "classutl_1_1__1wire__i.html#a915f13cf9dbb891eeac73b527a5b9614a8aba49759413e945e43c6114f60a6617", null ], + [ "CMD_SKIP", "classutl_1_1__1wire__i.html#a915f13cf9dbb891eeac73b527a5b9614a440008f9edb49be5eca22c50302dff44", null ], + [ "CMD_ALARM_SEARCH", "classutl_1_1__1wire__i.html#a915f13cf9dbb891eeac73b527a5b9614aab6cb0f1201ca9efeaef8899dab0a637", null ], + [ "CMD_SEARCH_ROM", "classutl_1_1__1wire__i.html#a915f13cf9dbb891eeac73b527a5b9614a8eb4090d17ac88370c93f3246c146e75", null ] + ] ], + [ "Speed", "classutl_1_1__1wire__i.html#a56bb736aa3620d7795b5914cac5f25cc", [ + [ "STD", "classutl_1_1__1wire__i.html#a56bb736aa3620d7795b5914cac5f25ccac6ce23be5d350ce18a665427d2d950f7", null ], + [ "OVDR", "classutl_1_1__1wire__i.html#a56bb736aa3620d7795b5914cac5f25cca1cbf38b04c4249d8ec27d1ec96aaff68", null ] + ] ], + [ "_1wire_i", "classutl_1_1__1wire__i.html#a4839577d00fdcefb51ac8d4cd91f0f1a", null ], + [ "~_1wire_i", "classutl_1_1__1wire__i.html#afb146fda251b25c9fc812718f6c5b3e1", null ], + [ "_1wire_i", "classutl_1_1__1wire__i.html#adc539ccd0e41f8f830bd96c362094c14", null ], + [ "_CRTP_IMPL", "classutl_1_1__1wire__i.html#ad8858b769d4cd8da78e1cb4669992da2", null ], + [ "_reset", "classutl_1_1__1wire__i.html#a39d0afaf58820696acad93cf98a6b321", null ], + [ "bit", "classutl_1_1__1wire__i.html#a197e062037f88871de9205519ec78122", null ], + [ "first", "classutl_1_1__1wire__i.html#a4b6d225963095d36eda832a1e0adba55", null ], + [ "match", "classutl_1_1__1wire__i.html#aa2d87a149c4e5dcfefc5a8cde6eaefb2", null ], + [ "match_n_ovdr", "classutl_1_1__1wire__i.html#ac88f67dd75dc23d39123ac584dce6b40", null ], + [ "next", "classutl_1_1__1wire__i.html#a3e302085f12a39fef8a378e1dac42f45", null ], + [ "operator=", "classutl_1_1__1wire__i.html#a96222b5bd731c2b242e428aabda40642", null ], + [ "reset", "classutl_1_1__1wire__i.html#a0a7ef731162e81e0e2e07ae9cb9e6ffa", null ], + [ "rx_data", "classutl_1_1__1wire__i.html#a2585e7166d14b7f36bd47db2e43cc0b1", null ], + [ "rx_data", "classutl_1_1__1wire__i.html#ad20382d5d50ee7d457bc4079b9c38a2a", null ], + [ "skip", "classutl_1_1__1wire__i.html#a0a405f818fd45eb2799e6b4477021a0a", null ], + [ "skip_n_ovdr", "classutl_1_1__1wire__i.html#a8b0b0ea95c02a40721f1e159119b3506", null ], + [ "speed", "classutl_1_1__1wire__i.html#ae770650b54374721e04f96994385c570", null ], + [ "speed", "classutl_1_1__1wire__i.html#adc5c34170794ae99562211faea68a4a6", null ], + [ "tx_data", "classutl_1_1__1wire__i.html#a59e7196e10e53467b62ed369ff78f07d", null ], + [ "tx_data", "classutl_1_1__1wire__i.html#ab3bd112ff66074bdaf7357b91ca692a8", null ], + [ "_1wire_i_det::_first", "classutl_1_1__1wire__i.html#a05f0872f43d7b305269904d1522fa437", null ], + [ "_1wire_i_det::_match", "classutl_1_1__1wire__i.html#a6deca63bf5935ba3c3aa07f6ca23e33a", null ], + [ "_1wire_i_det::_match_n_ovdr", "classutl_1_1__1wire__i.html#a6b70d3457970aa791dd68e20800b6d0d", null ], + [ "_1wire_i_det::_next", "classutl_1_1__1wire__i.html#af9a6a28b49cd3f51736f7c1f8e67327a", null ], + [ "_1wire_i_det::_skip", "classutl_1_1__1wire__i.html#a9041b1220dfa52b4f4b161b718c3d33a", null ], + [ "_1wire_i_det::_skip_n_ovdr", "classutl_1_1__1wire__i.html#af4dfbd90b0d5606f1f2e515d38a43d66", null ], + [ "_1wire_i_det::_touch", "classutl_1_1__1wire__i.html#aedee6f129425833a172784ec3c6e21e9", null ], + [ "cur_", "classutl_1_1__1wire__i.html#af9adb646cdda935d9a5a26656669e785", null ], + [ "dec_", "classutl_1_1__1wire__i.html#acb00f6ded645dffafe56ea5e8502511a", null ], + [ "pos_", "classutl_1_1__1wire__i.html#a51ed80ef816ea8a4f5a3cdb4d87b0875", null ] +]; \ No newline at end of file diff --git a/doc/html/classutl_1_1__1wire__i.png b/doc/html/classutl_1_1__1wire__i.png new file mode 100644 index 0000000000000000000000000000000000000000..4c5eee5586c81348d7c437765b049c9e6c18ecc6 GIT binary patch literal 660 zcmeAS@N?(olHy`uVBq!ia0vp^OMp0lgBeIJ$k3|+QW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;iuOIaP|K#PW zu}m#XwmiP+S+@2^n3ma-gq%-ZGjHB(WtUBv&y8&$>f664PVJM8>Fo{GtGKcS8lqSDer7oGp+I1%$QJMh&+mC`y6z1@7X7t4j6Cf zlUTZ>c}nJ1Qz<%{3xT`Mb(mQers=**pi>=Skx#>G8p4;1#kBK{=q%~fMf&*uRS oUX$9Hf+pFNwEJi-o&1{HQ(URE(NTFeFbOeuy85}Sb4q9e0N-OQQUCw| literal 0 HcmV?d00001 diff --git a/doc/html/classutl_1_1__1wire__i_3_01virtual__tag_01_4-members.html b/doc/html/classutl_1_1__1wire__i_3_01virtual__tag_01_4-members.html new file mode 100644 index 0000000..fef638f --- /dev/null +++ b/doc/html/classutl_1_1__1wire__i_3_01virtual__tag_01_4-members.html @@ -0,0 +1,147 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
utl::_1wire_i< virtual_tag > Member List
+
+
+ +

This is the complete list of members for utl::_1wire_i< virtual_tag >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_1wire_i()=defaultutl::_1wire_i< virtual_tag >protected
_1wire_i(const type &)=deleteutl::_1wire_i< virtual_tag >protected
_1wire_i_det::_first(_T &, typename _T::Speed, bool)utl::_1wire_i< virtual_tag >friend
_1wire_i_det::_match(_T &obj, _1wire_id_t &id, typename _T::Speed s)utl::_1wire_i< virtual_tag >friend
_1wire_i_det::_match_n_ovdr(_T &obj, _1wire_id_t &id)utl::_1wire_i< virtual_tag >friend
_1wire_i_det::_next(_T &, typename _T::Speed, bool)utl::_1wire_i< virtual_tag >friend
_1wire_i_det::_skip(_T &obj, typename _T::Speed s)utl::_1wire_i< virtual_tag >friend
_1wire_i_det::_skip_n_ovdr(_T &obj)utl::_1wire_i< virtual_tag >friend
_1wire_i_det::_touch(_T &, byte_t, typename _T::Speed)utl::_1wire_i< virtual_tag >friend
_reset(Speed)=0utl::_1wire_i< virtual_tag >privatepure virtual
bit()=0utl::_1wire_i< virtual_tag >privatepure virtual
bit(bool)=0utl::_1wire_i< virtual_tag >privatepure virtual
CMD_ALARM_SEARCH enum valueutl::_1wire_i< virtual_tag >private
CMD_MATCH enum valueutl::_1wire_i< virtual_tag >private
CMD_OVDR_MATCH enum valueutl::_1wire_i< virtual_tag >private
CMD_OVDR_SKIP enum valueutl::_1wire_i< virtual_tag >private
CMD_READ_ROM enum valueutl::_1wire_i< virtual_tag >private
CMD_SEARCH_ROM enum valueutl::_1wire_i< virtual_tag >private
CMD_SKIP enum valueutl::_1wire_i< virtual_tag >private
Command enum nameutl::_1wire_i< virtual_tag >private
cur_utl::_1wire_i< virtual_tag >private
dec_utl::_1wire_i< virtual_tag >private
first(Speed s=Speed::STD, bool alarm=false)utl::_1wire_i< virtual_tag >inline
match(_1wire_id_t &id, Speed s=Speed::STD)utl::_1wire_i< virtual_tag >inline
match_n_ovdr(_1wire_id_t &id)utl::_1wire_i< virtual_tag >inline
next(Speed s=Speed::STD, bool alarm=false)utl::_1wire_i< virtual_tag >inline
operator=(const type &)=deleteutl::_1wire_i< virtual_tag >protected
pos_utl::_1wire_i< virtual_tag >private
reset(Speed s=Speed::STD)utl::_1wire_i< virtual_tag >inline
rx_data(Speed s=Speed::STD)utl::_1wire_i< virtual_tag >inline
rx_data(byte_t *in, size_t n, Speed s=Speed::STD)utl::_1wire_i< virtual_tag >
skip(Speed s=Speed::STD)utl::_1wire_i< virtual_tag >inline
skip_n_ovdr()utl::_1wire_i< virtual_tag >inline
speed() const =0utl::_1wire_i< virtual_tag >privatepure virtual
speed(Speed)=0utl::_1wire_i< virtual_tag >privatepure virtual
Speed enum nameutl::_1wire_i< virtual_tag >
tx_data(byte_t out, Speed s=Speed::STD)utl::_1wire_i< virtual_tag >inline
tx_data(const byte_t *out, byte_t *in, size_t n, Speed s=Speed::STD)utl::_1wire_i< virtual_tag >
type typedefutl::_1wire_i< virtual_tag >
~_1wire_i()=defaultutl::_1wire_i< virtual_tag >virtual
+
+ + + + diff --git a/doc/html/classutl_1_1__1wire__i_3_01virtual__tag_01_4.html b/doc/html/classutl_1_1__1wire__i_3_01virtual__tag_01_4.html new file mode 100644 index 0000000..de4c060 --- /dev/null +++ b/doc/html/classutl_1_1__1wire__i_3_01virtual__tag_01_4.html @@ -0,0 +1,1412 @@ + + + + + + + +uTL: utl::_1wire_i< virtual_tag > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
utl::_1wire_i< virtual_tag > Class Template Referenceabstract
+
+
+ +

A virtual base class implementation. + More...

+ +

#include <_1wire.h>

+
+Inheritance diagram for utl::_1wire_i< virtual_tag >:
+
+
+ + +utl::_1wire_uart_i< virtual_tag > + +
+ + + + + + + + +

+Public Types

enum  Speed { Speed::STD =0, +Speed::OVDR + }
 1-wire bus speed More...
 
using type = _1wire_i< virtual_tag >
 Export type as identity meta-function. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

User functionality provided by the interface
bool reset (Speed s=Speed::STD)
 Generate a 1-wire reset. More...
 
byte_t tx_data (byte_t out, Speed s=Speed::STD)
 
size_t tx_data (const byte_t *out, byte_t *in, size_t n, Speed s=Speed::STD)
 
byte_t rx_data (Speed s=Speed::STD)
 
size_t rx_data (byte_t *in, size_t n, Speed s=Speed::STD)
 
void match (_1wire_id_t &id, Speed s=Speed::STD)
 
void match_n_ovdr (_1wire_id_t &id)
 
void skip (Speed s=Speed::STD)
 
void skip_n_ovdr ()
 
_1wire_id_t first (Speed s=Speed::STD, bool alarm=false)
 'first' operation, to search on the 1-Wire for the first device. This is performed by setting dec_, pos_ and cur_ to zero and then doing the search. More...
 
_1wire_id_t next (Speed s=Speed::STD, bool alarm=false)
 'next' operation, to search on the 1-Wire for the next device. This search is usually performed after a 'first' operation or another 'next' operation. Based on maxim-ic application note 187. More...
 
+ + + + + + + + + + + + + + + + +

+Private Member Functions

Implementation requirements
virtual Speed speed () const =0
 Get the 1-wire bus speed. More...
 
virtual void speed (Speed)=0
 Set the 1-wire bus speed. More...
 
virtual bool bit ()=0
 Read a bit from the 1-Wire bus, return it and provide the recovery time. More...
 
virtual bool bit (bool)=0
 Write a bit to the 1-Wire bus, return write status and provide the recovery time. More...
 
virtual bool _reset (Speed)=0
 
+ + + + + + + +

+Private Attributes

_1wire_id_t dec_ {_1wire_id_t::nullDev()}
 
_1wire_id_t pos_ {_1wire_id_t::nullDev()}
 
_1wire_id_t cur_ {_1wire_id_t::nullDev()}
 
+ + + + + + + + + + + +

+Object lifetime

 _1wire_i ()=default
 Allow constructor from derived only. More...
 
 _1wire_i (const type &)=delete
 No copies. More...
 
typeoperator= (const type &)=delete
 
virtual ~_1wire_i ()=default
 
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Friends api to provide functionality to all class specializations

enum  Command {
+  CMD_READ_ROM = 0x33, +CMD_OVDR_SKIP = 0x3C, +CMD_MATCH = 0x55, +CMD_OVDR_MATCH = 0x69, +
+  CMD_SKIP = 0xCC, +CMD_ALARM_SEARCH = 0xEC, +CMD_SEARCH_ROM = 0xF0 +
+ }
 
template<typename _T >
byte_t _1wire_i_det::_touch (_T &, byte_t, typename _T::Speed)
 
template<typename _T >
void _1wire_i_det::_match (_T &obj, _1wire_id_t &id, typename _T::Speed s)
 
template<typename _T >
void _1wire_i_det::_match_n_ovdr (_T &obj, _1wire_id_t &id)
 
template<typename _T >
void _1wire_i_det::_skip (_T &obj, typename _T::Speed s)
 
template<typename _T >
void _1wire_i_det::_skip_n_ovdr (_T &obj)
 
template<typename _T >
_1wire_id_t _1wire_i_det::_first (_T &, typename _T::Speed, bool)
 
template<typename _T >
_1wire_id_t _1wire_i_det::_next (_T &, typename _T::Speed, bool)
 
+

Detailed Description

+

template<>
+class utl::_1wire_i< virtual_tag >

+ +

A virtual base class implementation.

+
Parameters
+ + +
impl_t= virtual_tag
+
+
+ +

Definition at line 260 of file _1wire.h.

+

Member Typedef Documentation

+ +

◆ type

+ +
+
+ +

Export type as identity meta-function.

+ +

Definition at line 262 of file _1wire.h.

+ +
+
+

Member Enumeration Documentation

+ +

◆ Command

+ +
+
+ + + + + +
+ + + + +
enum utl::_1wire_i< virtual_tag >::Command
+
+private
+
+ + + + + + + + +
Enumerator
CMD_READ_ROM 
CMD_OVDR_SKIP 
CMD_MATCH 
CMD_OVDR_MATCH 
CMD_SKIP 
CMD_ALARM_SEARCH 
CMD_SEARCH_ROM 
+ +

Definition at line 296 of file _1wire.h.

+ +
+
+ +

◆ Speed

+ +
+
+ + + + + +
+ + + + +
enum utl::_1wire_i< virtual_tag >::Speed
+
+strong
+
+ +

1-wire bus speed

+ + + +
Enumerator
STD 
OVDR 
+ +

Definition at line 265 of file _1wire.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ _1wire_i() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
utl::_1wire_i< virtual_tag >::_1wire_i ()
+
+protecteddefault
+
+ +

Allow constructor from derived only.

+ +
+
+ +

◆ _1wire_i() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
utl::_1wire_i< virtual_tag >::_1wire_i (const type)
+
+protecteddelete
+
+ +

No copies.

+ +
+
+ +

◆ ~_1wire_i()

+ +
+
+ + + + + +
+ + + + + + + +
virtual utl::_1wire_i< virtual_tag >::~_1wire_i ()
+
+virtualdefault
+
+

Virtual default destructor

+ +
+
+

Member Function Documentation

+ +

◆ _reset()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool utl::_1wire_i< virtual_tag >::_reset (Speed )
+
+privatepure virtual
+
+

Generate a 1-wire reset and return the operation status

+ +

Implemented in utl::_1wire_uart_i< virtual_tag >.

+ +
+
+ +

◆ bit() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool utl::_1wire_i< virtual_tag >::bit ()
+
+privatepure virtual
+
+ +

Read a bit from the 1-Wire bus, return it and provide the recovery time.

+ +
+
+ +

◆ bit() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool utl::_1wire_i< virtual_tag >::bit (bool )
+
+privatepure virtual
+
+ +

Write a bit to the 1-Wire bus, return write status and provide the recovery time.

+ +

Implemented in utl::_1wire_uart_i< virtual_tag >.

+ +
+
+ +

◆ first()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
_1wire_id_t utl::_1wire_i< virtual_tag >::first (Speed s = Speed::STD,
bool alarm = false 
)
+
+inline
+
+ +

'first' operation, to search on the 1-Wire for the first device. This is performed by setting dec_, pos_ and cur_ to zero and then doing the search.

+
Parameters
+ + + +
sThe bus speed
alarmIf set, search for alarm devices
+
+
+
Returns
ID The romID
    +
  • nullDev Indicate no [more] device[s]
  • +
+
+ +

Definition at line 406 of file _1wire.h.

+ +
+
+ +

◆ match()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void utl::_1wire_i< virtual_tag >::match (_1wire_id_tid,
Speed s = Speed::STD 
)
+
+inline
+
+

Send match rom command

Parameters
+ + + +
idThe ID to select on the bus
sThe speed to use for the command
+
+
+ +

Definition at line 372 of file _1wire.h.

+ +
+
+ +

◆ match_n_ovdr()

+ +
+
+ + + + + +
+ + + + + + + + +
void utl::_1wire_i< virtual_tag >::match_n_ovdr (_1wire_id_tid)
+
+inline
+
+

Match and overdrive sequence

Parameters
+ + + +
objThe object from which we call private members
idThe ID to select on the bus
+
+
+ +

Definition at line 380 of file _1wire.h.

+ +
+
+ +

◆ next()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
_1wire_id_t utl::_1wire_i< virtual_tag >::next (Speed s = Speed::STD,
bool alarm = false 
)
+
+inline
+
+ +

'next' operation, to search on the 1-Wire for the next device. This search is usually performed after a 'first' operation or another 'next' operation. Based on maxim-ic application note 187.

+
Parameters
+ + + +
sThe bus speed
alarmIf set, search for alarm devices
+
+
+
Returns
ID The romID
    +
  • nullDev Indicate no [more] device[s]
  • +
+
+ +

Definition at line 419 of file _1wire.h.

+ +
+
+ +

◆ operator=()

+ +
+
+ + + + + +
+ + + + + + + + +
type& utl::_1wire_i< virtual_tag >::operator= (const type)
+
+protecteddelete
+
+ +
+
+ +

◆ reset()

+ +
+
+ + + + + +
+ + + + + + + + +
bool utl::_1wire_i< virtual_tag >::reset (Speed s = Speed::STD)
+
+inline
+
+ +

Generate a 1-wire reset.

+
Parameters
+ + +
sBus speed
+
+
+
Returns
The status of the operation
    +
  • 0 Fail
  • +
  • 1 Success
  • +
+
+ +

Definition at line 327 of file _1wire.h.

+ +
+
+ +

◆ rx_data() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
byte_t utl::_1wire_i< virtual_tag >::rx_data (Speed s = Speed::STD)
+
+inline
+
+

Receive a byte from 1-Wire bus while transmitting 0xFF

Parameters
+ + +
sBus speed to use
+
+
+
Returns
The byte received.
+ +

Definition at line 355 of file _1wire.h.

+ +
+
+ +

◆ rx_data() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
size_t utl::_1wire_i< virtual_tag >::rx_data (byte_tin,
size_t n,
Speed s = Speed::STD 
)
+
+

Receive a number of bytes from 1-wire bus while transmitting 0xFFs

Parameters
+ + + + +
inPointer to data to store
nNumber of bytes
sSpeed to use
+
+
+
Returns
The number of transmitted bytes
+ +

Definition at line 446 of file _1wire.h.

+ +
+
+ +

◆ skip()

+ +
+
+ + + + + +
+ + + + + + + + +
void utl::_1wire_i< virtual_tag >::skip (Speed s = Speed::STD)
+
+inline
+
+

Send skip command to the bus

Parameters
+ + +
idThe ID to select on the bus
+
+
+ +

Definition at line 387 of file _1wire.h.

+ +
+
+ +

◆ skip_n_ovdr()

+ +
+
+ + + + + +
+ + + + + + + +
void utl::_1wire_i< virtual_tag >::skip_n_ovdr ()
+
+inline
+
+

Send the Skip and Overdrive sequence

+ +

Definition at line 393 of file _1wire.h.

+ +
+
+ +

◆ speed() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
virtual Speed utl::_1wire_i< virtual_tag >::speed () const
+
+privatepure virtual
+
+ +

Get the 1-wire bus speed.

+ +

Implemented in utl::_1wire_uart_i< virtual_tag >.

+ +
+
+ +

◆ speed() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void utl::_1wire_i< virtual_tag >::speed (Speed )
+
+privatepure virtual
+
+ +

Set the 1-wire bus speed.

+ +

Implemented in utl::_1wire_uart_i< virtual_tag >.

+ +
+
+ +

◆ tx_data() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
byte_t utl::_1wire_i< virtual_tag >::tx_data (byte_t out,
Speed s = Speed::STD 
)
+
+inline
+
+

Transmit a byte to 1-Wire bus and read the response

Parameters
+ + + +
outThe byte to write
sBus speed to use
+
+
+
Returns
The byte received.
+ +

Definition at line 337 of file _1wire.h.

+ +
+
+ +

◆ tx_data() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
size_t utl::_1wire_i< virtual_tag >::tx_data (const byte_tout,
byte_tin,
size_t n,
Speed s = Speed::STD 
)
+
+

Transmit a number of bytes to 1-wire bus and read the response

Parameters
+ + + + + +
outPointer to data to transmit
inPointer to data to store
nNumber of bytes
sSpeed to use
+
+
+
Returns
The number of transmitted bytes
+ +

Definition at line 440 of file _1wire.h.

+ +
+
+

Friends And Related Function Documentation

+ +

◆ _1wire_i_det::_first

+ +
+
+
+template<typename _T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
_1wire_id_t _1wire_i_det::_first (_T & ,
typename _T::Speed ,
bool  
)
+
+friend
+
+ +
+
+ +

◆ _1wire_i_det::_match

+ +
+
+
+template<typename _T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void _1wire_i_det::_match (_T & obj,
_1wire_id_tid,
typename _T::Speed s 
)
+
+friend
+
+ +
+
+ +

◆ _1wire_i_det::_match_n_ovdr

+ +
+
+
+template<typename _T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void _1wire_i_det::_match_n_ovdr (_T & obj,
_1wire_id_tid 
)
+
+friend
+
+ +
+
+ +

◆ _1wire_i_det::_next

+ +
+
+
+template<typename _T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
_1wire_id_t _1wire_i_det::_next (_T & ,
typename _T::Speed ,
bool  
)
+
+friend
+
+ +
+
+ +

◆ _1wire_i_det::_skip

+ +
+
+
+template<typename _T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void _1wire_i_det::_skip (_T & obj,
typename _T::Speed s 
)
+
+friend
+
+ +
+
+ +

◆ _1wire_i_det::_skip_n_ovdr

+ +
+
+
+template<typename _T >
+ + + + + +
+ + + + + + + + +
void _1wire_i_det::_skip_n_ovdr (_T & obj)
+
+friend
+
+ +
+
+ +

◆ _1wire_i_det::_touch

+ +
+
+
+template<typename _T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
byte_t _1wire_i_det::_touch (_T & ,
byte_t ,
typename _T::Speed  
)
+
+friend
+
+ +
+
+

Member Data Documentation

+ +

◆ cur_

+ +
+
+ + + + + +
+ + + + +
_1wire_id_t utl::_1wire_i< virtual_tag >::cur_ {_1wire_id_t::nullDev()}
+
+private
+
+ +

Definition at line 436 of file _1wire.h.

+ +
+
+ +

◆ dec_

+ +
+
+ + + + + +
+ + + + +
_1wire_id_t utl::_1wire_i< virtual_tag >::dec_ {_1wire_id_t::nullDev()}
+
+private
+
+

Hold the algorithm's select bit when a discrepancy is detected. We use this variable to navigate to the ROM tree as we store the path we take each time (0-1). Each bit represent a bit position in the ROM ID.

+ +

Definition at line 425 of file _1wire.h.

+ +
+
+ +

◆ pos_

+ +
+
+ + + + + +
+ + + + +
_1wire_id_t utl::_1wire_i< virtual_tag >::pos_ {_1wire_id_t::nullDev()}
+
+private
+
+

Hold the discrepancy position. We use this variable to navigate to the ROM tree as we store the crossroads(1) we encounter. Each bit represent a bit position in the ROM ID.

+ +

Definition at line 431 of file _1wire.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/doc/html/classutl_1_1__1wire__i_3_01virtual__tag_01_4.js b/doc/html/classutl_1_1__1wire__i_3_01virtual__tag_01_4.js new file mode 100644 index 0000000..ac8a3f3 --- /dev/null +++ b/doc/html/classutl_1_1__1wire__i_3_01virtual__tag_01_4.js @@ -0,0 +1,47 @@ +var classutl_1_1__1wire__i_3_01virtual__tag_01_4 = +[ + [ "type", "classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a1b2fa0f5a2946723cd29e689bd38359d", null ], + [ "Command", "classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a8b35a329e022c103b9fac49711bfb268", [ + [ "CMD_READ_ROM", "classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a8b35a329e022c103b9fac49711bfb268a48f3ede59d1cfc441475717e5d7a7524", null ], + [ "CMD_OVDR_SKIP", "classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a8b35a329e022c103b9fac49711bfb268a6e4b8f1ad455eed7b241df4ae5a82610", null ], + [ "CMD_MATCH", "classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a8b35a329e022c103b9fac49711bfb268a21d20824a61b5ff144fe098447e16fe0", null ], + [ "CMD_OVDR_MATCH", "classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a8b35a329e022c103b9fac49711bfb268afb3bb5319151b723cc9f84cc79fe8243", null ], + [ "CMD_SKIP", "classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a8b35a329e022c103b9fac49711bfb268acaf6f1b98add4a78888c1a6df8888c29", null ], + [ "CMD_ALARM_SEARCH", "classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a8b35a329e022c103b9fac49711bfb268a93bb90282121f6cda0ebff1b0444daff", null ], + [ "CMD_SEARCH_ROM", "classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a8b35a329e022c103b9fac49711bfb268abe017fdaf8516b58894a146229de14de", null ] + ] ], + [ "Speed", "classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a2abb8c6344d17269c55ae0cba63ec512", [ + [ "STD", "classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a2abb8c6344d17269c55ae0cba63ec512ac6ce23be5d350ce18a665427d2d950f7", null ], + [ "OVDR", "classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a2abb8c6344d17269c55ae0cba63ec512a1cbf38b04c4249d8ec27d1ec96aaff68", null ] + ] ], + [ "_1wire_i", "classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a21dfe2ba7060c3a8617ced1f841bddaf", null ], + [ "_1wire_i", "classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a8f60bc0402c885a3409ba0d53239510f", null ], + [ "~_1wire_i", "classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#af1e2fea1b65ea57f4331c9dbc43e4bbf", null ], + [ "_reset", "classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#ac4d99e65e5b307a85fe5e3c68cc46367", null ], + [ "bit", "classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a10fa5e0409844b816a12c92b22dfe454", null ], + [ "bit", "classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#af3890198c2ff351b2d0b8f7c6bbb5e75", null ], + [ "first", "classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a0fb2e35eb9c244640014f69808ae2758", null ], + [ "match", "classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#ac9c4e6123eee9b0af8d94fc8b22af04a", null ], + [ "match_n_ovdr", "classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a9a3e64459e7fddc89d160a3a379552b6", null ], + [ "next", "classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a6a3b511a6f7c20bae1e8c7af9f50a0ff", null ], + [ "operator=", "classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a3e2e3e5f3727eaa9fdf152ae7098c7be", null ], + [ "reset", "classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a735ed5cb622a1478c57537c131ede7a7", null ], + [ "rx_data", "classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a525b58c7a1110d39f1eb594f12edb16c", null ], + [ "rx_data", "classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a5f3c707157c571d07a8a3d882900de95", null ], + [ "skip", "classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#ad480b5053884e51e8089cdc691017e4d", null ], + [ "skip_n_ovdr", "classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a8d45e55f347c35e77ec55b905516f8fd", null ], + [ "speed", "classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a746fbec07300aeed8ebb75251bb4265a", null ], + [ "speed", "classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#af12694d7025474de1ff09270f0373080", null ], + [ "tx_data", "classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a9fbf69bafc3b697d3cf5ab09055540c8", null ], + [ "tx_data", "classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a2fe8eabe2f67410123913b240f039b33", null ], + [ "_1wire_i_det::_first", "classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a05f0872f43d7b305269904d1522fa437", null ], + [ "_1wire_i_det::_match", "classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a6deca63bf5935ba3c3aa07f6ca23e33a", null ], + [ "_1wire_i_det::_match_n_ovdr", "classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a6b70d3457970aa791dd68e20800b6d0d", null ], + [ "_1wire_i_det::_next", "classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#af9a6a28b49cd3f51736f7c1f8e67327a", null ], + [ "_1wire_i_det::_skip", "classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a9041b1220dfa52b4f4b161b718c3d33a", null ], + [ "_1wire_i_det::_skip_n_ovdr", "classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#af4dfbd90b0d5606f1f2e515d38a43d66", null ], + [ "_1wire_i_det::_touch", "classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#aedee6f129425833a172784ec3c6e21e9", null ], + [ "cur_", "classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a36d3c8a53b0759d8578a9065914f8d28", null ], + [ "dec_", "classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a6afd1b2d7901b29ed686d7fdeaee5d58", null ], + [ "pos_", "classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#aaa7389458c2969170dc0678f27b9ea83", null ] +]; \ No newline at end of file diff --git a/doc/html/classutl_1_1__1wire__i_3_01virtual__tag_01_4.png b/doc/html/classutl_1_1__1wire__i_3_01virtual__tag_01_4.png new file mode 100644 index 0000000000000000000000000000000000000000..62b6a63b827ce4590cb3e99875e7d60e516b2db9 GIT binary patch literal 757 zcmeAS@N?(olHy`uVBq!ia0vp^`++!sgBeKHtA!*3DTx4|5ZC|z{{xvX-h3_XKQsZz z0^3Cf4b-W{}bWS zTn`sVthYMBqa3ZP@bqyw z+37#!b-5qN*3SQLSQ($S?Ru^5Et%^&8xCpDI3CNt{jm0|{OyU$z4z`t-LKp$SD$kF zXR^yQ``j7zsrfb%uKzDPtoy)R_U7cq*I~!@?>PIWr}E_d_Kzw}=RfABCT=?`<9kqK z;TzFlmbm>FHgo(tzrS8;Xa1A_Q})N(=RdtKqLtvbBKLsll{NprT)>|KmLYfk>m-@cQ1#+?6s_N5G)Kd=ACY!K8fpD;(v z{(yyUT|*&EQzk5Ij`AD$p(&89eE(Ox^z*&n`ds>+z)E8tm%N_gt^P-PFO*)+*EnoSj zvO<0T@wXe3yVpFK9xP@1@5c|dV51Fx4CS(C&zn}C`c$B2QN2;dXYWnQDOc7+KQ)}E zKks-{RruH7^w&Rr^6g(cA!pmc`STTn4W4GNj*ppjIxA^^Wo!L^lS{YHy{!D_|MU0P z&pQ8?iK)&MJQY4Ed&L*~hwHUgJTSlaf93yzeTTQ&?Vl99ZqY`$Se17Pa+lvtxEZ#uH!O$u32w#NTX%Fq1giK~81T;kLnKj~N|C + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
utl::_1wire_id_t Member List
+
+
+ +

This is the complete list of members for utl::_1wire_id_t, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_1wire_id_t() noexceptutl::_1wire_id_tinline
_1wire_id_t(const _1wire_id_t &id) noexceptutl::_1wire_id_tinline
_datautl::id_t< uint8_t, 8 >
at(size_type n) noexceptutl::id_t< uint8_t, 8 >inline
at(size_type n) const noexceptutl::id_t< uint8_t, 8 >inline
back() noexceptutl::id_t< uint8_t, 8 >inline
back() const noexceptutl::id_t< uint8_t, 8 >inline
begin() noexceptutl::id_t< uint8_t, 8 >inline
begin() const noexceptutl::id_t< uint8_t, 8 >inline
bit(uint8_t bit) const noexceptutl::id_t< uint8_t, 8 >inline
bit(uint8_t bit, bool v) noexceptutl::id_t< uint8_t, 8 >inline
cbegin() const noexceptutl::id_t< uint8_t, 8 >inline
cend() const noexceptutl::id_t< uint8_t, 8 >inline
compare(const _1wire_id_t &lhs, const _1wire_id_t &rhs) noexceptutl::_1wire_id_tinlinestatic
const_iterator typedefutl::id_t< uint8_t, 8 >
const_pointer typedefutl::id_t< uint8_t, 8 >
const_reference typedefutl::id_t< uint8_t, 8 >
const_reverse_iterator typedefutl::id_t< uint8_t, 8 >
crbegin() const noexceptutl::id_t< uint8_t, 8 >inline
crc8() noexceptutl::_1wire_id_tinline
crc8() const noexceptutl::_1wire_id_tinline
crend() const noexceptutl::id_t< uint8_t, 8 >inline
data() noexceptutl::id_t< uint8_t, 8 >inline
data() const noexceptutl::id_t< uint8_t, 8 >inline
difference_type typedefutl::id_t< uint8_t, 8 >
empty() const noexceptutl::id_t< uint8_t, 8 >inline
end() noexceptutl::id_t< uint8_t, 8 >inline
end() const noexceptutl::id_t< uint8_t, 8 >inline
family() noexceptutl::_1wire_id_tinline
family() const noexceptutl::_1wire_id_tinline
fill(const value_type &v)utl::id_t< uint8_t, 8 >inline
front() noexceptutl::id_t< uint8_t, 8 >inline
front() const noexceptutl::id_t< uint8_t, 8 >inline
iterator typedefutl::id_t< uint8_t, 8 >
max_size() const noexceptutl::id_t< uint8_t, 8 >inline
nullDev()utl::_1wire_id_tinlinestatic
nullDev_utl::_1wire_id_tprivatestatic
operator[](size_type n) noexceptutl::id_t< uint8_t, 8 >inline
operator[](size_type n) const noexceptutl::id_t< uint8_t, 8 >inline
pointer typedefutl::id_t< uint8_t, 8 >
rbegin() noexceptutl::id_t< uint8_t, 8 >inline
rbegin() const noexceptutl::id_t< uint8_t, 8 >inline
reference typedefutl::id_t< uint8_t, 8 >
rend() noexceptutl::id_t< uint8_t, 8 >inline
rend() const noexceptutl::id_t< uint8_t, 8 >inline
reverse_iterator typedefutl::id_t< uint8_t, 8 >
size() const noexceptutl::id_t< uint8_t, 8 >inline
size_type typedefutl::id_t< uint8_t, 8 >
swap(id_t &other) noexceptutl::id_t< uint8_t, 8 >inline
traits_t typedefutl::id_t< uint8_t, 8 >
value_type typedefutl::id_t< uint8_t, 8 >
+
+ + + + diff --git a/doc/html/classutl_1_1__1wire__id__t.html b/doc/html/classutl_1_1__1wire__id__t.html new file mode 100644 index 0000000..b793a1e --- /dev/null +++ b/doc/html/classutl_1_1__1wire__id__t.html @@ -0,0 +1,523 @@ + + + + + + + +uTL: utl::_1wire_id_t Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
utl::_1wire_id_t Class Reference
+
+
+ +

#include <_1wire_id.h>

+
+Inheritance diagram for utl::_1wire_id_t:
+
+
+ + +utl::id_t< uint8_t, 8 > + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Constructors
 _1wire_id_t () noexcept
 
 _1wire_id_t (const _1wire_id_t &id) noexcept
 
uint8_t & crc8 () noexcept
 
const uint8_t & crc8 () const noexcept
 
- Public Member Functions inherited from utl::id_t< uint8_t, 8 >
void fill (const value_type &v)
 
void swap (id_t &other) noexcept
 
iterator begin () noexcept
 
const_iterator begin () const noexcept
 
iterator end () noexcept
 
const_iterator end () const noexcept
 
const_iterator cbegin () const noexcept
 
const_iterator cend () const noexcept
 
reverse_iterator rbegin () noexcept
 
const_reverse_iterator rbegin () const noexcept
 
reverse_iterator rend () noexcept
 
const_reverse_iterator rend () const noexcept
 
const_reverse_iterator crbegin () const noexcept
 
const_reverse_iterator crend () const noexcept
 
constexpr size_type size () const noexcept
 
constexpr size_type max_size () const noexcept
 
constexpr bool empty () const noexcept
 
reference operator[] (size_type n) noexcept
 Operator []. More...
 
constexpr const_reference operator[] (size_type n) const noexcept
 Operator [] for const. More...
 
reference at (size_type n) noexcept
 
constexpr const_reference at (size_type n) const noexcept
 Compile time boundary check dereference operator. More...
 
constexpr bool bit (uint8_t bit) const noexcept
 
void bit (uint8_t bit, bool v) noexcept
 
reference front () noexcept
 
constexpr const_reference front () const noexcept
 
reference back () noexcept
 
constexpr const_reference back () const noexcept
 
pointer data () noexcept
 
const_pointer data () const noexcept
 
+ + + + +

+Static Public Member Functions

static int compare (const _1wire_id_t &lhs, const _1wire_id_t &rhs) noexcept
 Full compare two dev_ids. More...
 
+ + + + +

+Static Private Attributes

static const _1wire_id_t nullDev_ { }
 
+ + + + + + + + +

+User functionality provided by the interface

uint8_t & family () noexcept
 
const uint8_t & family () const noexcept
 
static constexpr const _1wire_id_tnullDev ()
 Return nullDev reference. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from utl::id_t< uint8_t, 8 >
using value_type = uint8_t
 
using pointer = value_type *
 
using const_pointer = const value_type *
 
using reference = value_type &
 
using const_reference = const value_type &
 
using iterator = value_type *
 
using const_iterator = const value_type *
 
using size_type = size_t
 
using difference_type = std::ptrdiff_t
 
using reverse_iterator = std::reverse_iterator< iterator >
 
using const_reverse_iterator = std::reverse_iterator< const_iterator >
 
using traits_t = id_traits< uint8_t, _Nm >
 
- Public Attributes inherited from utl::id_t< uint8_t, 8 >
traits_t::type _data
 
+

Detailed Description

+

1-wire Rom-ID type

+ +

Definition at line 32 of file _1wire_id.h.

+

Constructor & Destructor Documentation

+ +

◆ _1wire_id_t() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
utl::_1wire_id_t::_1wire_id_t ()
+
+inlinenoexcept
+
+ +

Definition at line 39 of file _1wire_id.h.

+ +
+
+ +

◆ _1wire_id_t() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
utl::_1wire_id_t::_1wire_id_t (const _1wire_id_tid)
+
+inlinenoexcept
+
+ +

Definition at line 41 of file _1wire_id.h.

+ +
+
+

Member Function Documentation

+ +

◆ compare()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
static int utl::_1wire_id_t::compare (const _1wire_id_tlhs,
const _1wire_id_trhs 
)
+
+inlinestaticnoexcept
+
+ +

Full compare two dev_ids.

+
Returns
The comparison result
    +
  • 0 dev_ids are equal
  • +
  • -1 dev_id lhs is smaller than dev_id rhs
  • +
  • 1 dev_id rhs is smaller than dev_id lhs
  • +
+
+ +

Definition at line 72 of file _1wire_id.h.

+ +
+
+ +

◆ crc8() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t& utl::_1wire_id_t::crc8 ()
+
+inlinenoexcept
+
+

Access the CRC8 byte (The MSB).

+ +

Definition at line 60 of file _1wire_id.h.

+ +
+
+ +

◆ crc8() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
const uint8_t& utl::_1wire_id_t::crc8 () const
+
+inlinenoexcept
+
+ +

Definition at line 61 of file _1wire_id.h.

+ +
+
+ +

◆ family() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t& utl::_1wire_id_t::family ()
+
+inlinenoexcept
+
+

Return the RomID family code (The LSB)

+ +

Definition at line 54 of file _1wire_id.h.

+ +
+
+ +

◆ family() [2/2]

+ +
+
+ + + + + +
+ + + + + + + +
const uint8_t& utl::_1wire_id_t::family () const
+
+inlinenoexcept
+
+ +

Definition at line 55 of file _1wire_id.h.

+ +
+
+ +

◆ nullDev()

+ +
+
+ + + + + +
+ + + + + + + +
static constexpr const _1wire_id_t& utl::_1wire_id_t::nullDev ()
+
+inlinestatic
+
+ +

Return nullDev reference.

+ +

Definition at line 50 of file _1wire_id.h.

+ +
+
+

Member Data Documentation

+ +

◆ nullDev_

+ +
+
+ + + + + +
+ + + + +
const _1wire_id_t utl::_1wire_id_t::nullDev_ { }
+
+staticprivate
+
+

Self referenced special null Rom_ID object as static

+ +

Definition at line 83 of file _1wire_id.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/doc/html/classutl_1_1__1wire__id__t.js b/doc/html/classutl_1_1__1wire__id__t.js new file mode 100644 index 0000000..29e838d --- /dev/null +++ b/doc/html/classutl_1_1__1wire__id__t.js @@ -0,0 +1,12 @@ +var classutl_1_1__1wire__id__t = +[ + [ "_1wire_id_t", "classutl_1_1__1wire__id__t.html#a813f69adfff7bcdcba6b07bf52e3546e", null ], + [ "_1wire_id_t", "classutl_1_1__1wire__id__t.html#a042aa65cc13c6040f795c8198f5afc23", null ], + [ "compare", "classutl_1_1__1wire__id__t.html#aef89950aeb9d40ca058fabcc5532e01d", null ], + [ "crc8", "classutl_1_1__1wire__id__t.html#a03a112d8910c67611a3b302fe7c0706b", null ], + [ "crc8", "classutl_1_1__1wire__id__t.html#af3a0ea2c575f96ac01b0aac91166d767", null ], + [ "family", "classutl_1_1__1wire__id__t.html#adb30b65bcab59bdad980793377a8e52f", null ], + [ "family", "classutl_1_1__1wire__id__t.html#a6ed0d86d1fce0073776d83092a874b91", null ], + [ "nullDev", "classutl_1_1__1wire__id__t.html#adad08aa5ce38e1a87800de57a91db81b", null ], + [ "nullDev_", "classutl_1_1__1wire__id__t.html#a9d1d7610961adf2ae3669cbbcace74d2", null ] +]; \ No newline at end of file diff --git a/doc/html/classutl_1_1__1wire__id__t.png b/doc/html/classutl_1_1__1wire__id__t.png new file mode 100644 index 0000000000000000000000000000000000000000..ca625889d6a59d93d01ab55378822842ac05805a GIT binary patch literal 487 zcmeAS@N?(olHy`uVBq!ia0vp^4L}^g!3-py-Rr#uq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IXg%RF5iLn;{G&b>RSS%Ih3|4`5S|0h;= z%+UA|Y@JsAe2YxBr;_}H2f9ICnn50`Ruw8SFm7X*6usBn{#~AM(mR))>D&d=ycy0i zhJ;pY9em4>f0Oylx6Vsz8-DMf=~S7LH#w6tk3EJt;9~4;zZGROCcLW6oFu539otyjj9%afWgCPjiMS%YaXNV|@L#Zm2!M72tJ{wWRyS z+Q}cDeAvNau*qLO^lG*dV|rkXq+kPsvV)fIL?fuqR*i#i=g3x?GV z3@i!^j2sROOadV0fqDi3!A=nthDR<8Omi4}uI+7ppJ~6~%erIdEaVw{mNGL;|6+OI zimlY_Qmfmm&KH%Y?7YtMeS<%PLd0!BhmQrq=Y06XA1JWP%$j<8cR1sxgTK@c{K-A@ zFPb4WxjI#YA?jBU-xLwO>$O5mOzR(OZP2Ozsu6eZKEs9U=U%Jy=qob`DC{qEbvg8f Z*{E1rQ-j&!0Wek=JYD@<);T3K0RT(G!WjSn literal 0 HcmV?d00001 diff --git a/doc/html/classutl_1_1__1wire__uart__i-members.html b/doc/html/classutl_1_1__1wire__uart__i-members.html new file mode 100644 index 0000000..aa210e8 --- /dev/null +++ b/doc/html/classutl_1_1__1wire__uart__i-members.html @@ -0,0 +1,140 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
utl::_1wire_uart_i< Impl_t > Member List
+
+
+ +

This is the complete list of members for utl::_1wire_uart_i< Impl_t >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_1wire_i()=defaultutl::_1wire_i< impl_t >protected
_1wire_i(const _1wire_i &)=deleteutl::_1wire_i< impl_t >protected
_1wire_i< _1wire_uart_i< Impl_t > >utl::_1wire_uart_i< Impl_t >private
_1wire_uart_i()=defaultutl::_1wire_uart_i< Impl_t >protected
_CRTP_IMPL(Impl_t)utl::_1wire_uart_i< Impl_t >private
_reset(Speed s)utl::_1wire_uart_i< Impl_t >private
_speedutl::_1wire_uart_i< Impl_t >private
bit(bool b)utl::_1wire_uart_i< Impl_t >inlineprivate
BR enum nameutl::_1wire_uart_i< Impl_t >private
BR_OVR enum valueutl::_1wire_uart_i< Impl_t >private
BR_OVR_RST enum valueutl::_1wire_uart_i< Impl_t >private
BR_STD enum valueutl::_1wire_uart_i< Impl_t >private
BR_STD_RST enum valueutl::_1wire_uart_i< Impl_t >private
first(Speed s=Speed::STD, bool alarm=false)utl::_1wire_i< impl_t >inline
match(_1wire_id_t &id, Speed s=Speed::STD)utl::_1wire_i< impl_t >inline
match_n_ovdr(_1wire_id_t &id)utl::_1wire_i< impl_t >inline
next(Speed s=Speed::STD, bool alarm=false)utl::_1wire_i< impl_t >inline
operator=(const _1wire_i &)=deleteutl::_1wire_i< impl_t >protected
reset(Speed s=Speed::STD)utl::_1wire_i< impl_t >inline
rx_data(Speed s=Speed::STD)utl::_1wire_i< impl_t >inline
rx_data(byte_t *in, size_t n, Speed s=Speed::STD)utl::_1wire_i< impl_t >
skip(Speed s=Speed::STD)utl::_1wire_i< impl_t >inline
skip_n_ovdr()utl::_1wire_i< impl_t >inline
Speed typedefutl::_1wire_uart_i< Impl_t >
speed() constutl::_1wire_uart_i< Impl_t >inlineprivate
speed(Speed s)utl::_1wire_uart_i< Impl_t >private
tx_data(byte_t out, Speed s=Speed::STD)utl::_1wire_i< impl_t >inline
tx_data(const byte_t *out, byte_t *in, size_t n, Speed s=Speed::STD)utl::_1wire_i< impl_t >
type typedefutl::_1wire_uart_i< Impl_t >
UART_BR(uint32_t br)utl::_1wire_uart_i< Impl_t >inlineprivate
UART_RW(byte_t byte)utl::_1wire_uart_i< Impl_t >inlineprivate
~_1wire_i()=defaultutl::_1wire_i< impl_t >protected
~_1wire_uart_i()=defaultutl::_1wire_uart_i< Impl_t >protected
+
+ + + + diff --git a/doc/html/classutl_1_1__1wire__uart__i.html b/doc/html/classutl_1_1__1wire__uart__i.html new file mode 100644 index 0000000..12c84d8 --- /dev/null +++ b/doc/html/classutl_1_1__1wire__uart__i.html @@ -0,0 +1,710 @@ + + + + + + + +uTL: utl::_1wire_uart_i< Impl_t > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
utl::_1wire_uart_i< Impl_t > Class Template Reference
+
+
+ +

1-wire UART interface template class using CRTP Using the private virtual interface we provide the interface from _1wire_i<> + More...

+ +

#include <_1wire_uart.h>

+
+Inheritance diagram for utl::_1wire_uart_i< Impl_t >:
+
+
+ + +utl::_1wire_i< impl_t > + +
+ + + + + + + + + + + + + + + +

+Public Types

using type = _1wire_uart_i< Impl_t >
 Export type as identity meta-function. More...
 
using Speed = typename _1wire_i< type >::Speed
 Bring bus speed. More...
 
- Public Types inherited from utl::_1wire_i< impl_t >
enum  Speed { Speed::STD =0, +Speed::OVDR + }
 1-wire bus speed More...
 
using type = _1wire_i
 Export type as identity meta-function. More...
 
+ + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

Object lifetime
 _1wire_uart_i ()=default
 Allow constructor from derived only. More...
 
 ~_1wire_uart_i ()=default
 
- Protected Member Functions inherited from utl::_1wire_i< impl_t >
 _1wire_i ()=default
 Allow constructor from derived only. More...
 
 ~_1wire_i ()=default
 Allow destructor from derived only. More...
 
 _1wire_i (const _1wire_i &)=delete
 No copies. More...
 
_1wire_ioperator= (const _1wire_i &)=delete
 
+ + + + + + + + + + + +

+Private Member Functions

 _CRTP_IMPL (Impl_t)
 
Implementation requirements
Note
In order for the implementation to have the following as private members it also need to declare this class as friend
+
byte_t UART_RW (byte_t byte)
 Implementers's (driver) read-write function. We expect the following USART configuration: More...
 
void UART_BR (uint32_t br)
 Implementers's (driver) baudrate function. More...
 
+ + + + +

+Private Attributes

friend _1wire_i< _1wire_uart_i< Impl_t > >
 Syntactic sugar to CRTP casting. More...
 
+ + + + + + + + + + + + + + + + + + +

+Implementation of base requirements

enum  BR { BR_STD_RST =9600, +BR_OVR_RST =57600, +BR_STD =115200, +BR_OVR =921600 + }
 1-wire UART baudrates More...
 
Speed _speed {Speed::STD}
 
Speed speed () const
 Get the 1-wire bus speed. More...
 
void speed (Speed s)
 Set the 1-wire bus speed. More...
 
bool bit (bool b)
 Send a 1-Wire write bit and read the response. More...
 
bool _reset (Speed s)
 Generate a 1-wire reset


+

Reset \ / \ X X X /


+

RS: | | | | | | | | | | | bit: ST 0 1 2 3 4 5 6 7 SP < -------— 1024/174 usec ----------—> More...

 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Member Functions inherited from utl::_1wire_i< impl_t >
bool reset (Speed s=Speed::STD)
 Generate a 1-wire reset. More...
 
byte_t tx_data (byte_t out, Speed s=Speed::STD)
 
size_t tx_data (const byte_t *out, byte_t *in, size_t n, Speed s=Speed::STD)
 
byte_t rx_data (Speed s=Speed::STD)
 
size_t rx_data (byte_t *in, size_t n, Speed s=Speed::STD)
 
void match (_1wire_id_t &id, Speed s=Speed::STD)
 
void match_n_ovdr (_1wire_id_t &id)
 
void skip (Speed s=Speed::STD)
 
void skip_n_ovdr ()
 
_1wire_id_t first (Speed s=Speed::STD, bool alarm=false)
 'first' operation, to search on the 1-Wire for the first device. This is performed by setting dec_, pos_ and cur_ to zero and then doing the search. More...
 
_1wire_id_t next (Speed s=Speed::STD, bool alarm=false)
 'next' operation, to search on the 1-Wire for the next device. This search is usually performed after a 'first' operation or another 'next' operation. Based on maxim-ic application note 187. More...
 
+

Detailed Description

+

template<typename Impl_t>
+class utl::_1wire_uart_i< Impl_t >

+ +

1-wire UART interface template class using CRTP Using the private virtual interface we provide the interface from _1wire_i<>

+

A 1-wire implementation using a microprocessor's uart for bit timing inherited from _1wire_i base class.

See also
_1wire_i
+ +

Definition at line 52 of file _1wire_uart.h.

+

Member Typedef Documentation

+ +

◆ Speed

+ +
+
+
+template<typename Impl_t >
+ + + + +
using utl::_1wire_uart_i< Impl_t >::Speed = typename _1wire_i<type>::Speed
+
+ +

Bring bus speed.

+ +

Definition at line 57 of file _1wire_uart.h.

+ +
+
+ +

◆ type

+ +
+
+
+template<typename Impl_t >
+ + + + +
using utl::_1wire_uart_i< Impl_t >::type = _1wire_uart_i<Impl_t>
+
+ +

Export type as identity meta-function.

+ +

Definition at line 56 of file _1wire_uart.h.

+ +
+
+

Member Enumeration Documentation

+ +

◆ BR

+ +
+
+
+template<typename Impl_t >
+ + + + + +
+ + + + +
enum utl::_1wire_uart_i::BR
+
+private
+
+ +

1-wire UART baudrates

+ + + + + +
Enumerator
BR_STD_RST 
BR_OVR_RST 
BR_STD 
BR_OVR 
+ +

Definition at line 103 of file _1wire_uart.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ _1wire_uart_i()

+ +
+
+
+template<typename Impl_t >
+ + + + + +
+ + + + + + + +
utl::_1wire_uart_i< Impl_t >::_1wire_uart_i ()
+
+protecteddefault
+
+ +

Allow constructor from derived only.

+ +
+
+ +

◆ ~_1wire_uart_i()

+ +
+
+
+template<typename Impl_t >
+ + + + + +
+ + + + + + + +
utl::_1wire_uart_i< Impl_t >::~_1wire_uart_i ()
+
+protecteddefault
+
+

Allow destructor from derived only

+ +
+
+

Member Function Documentation

+ +

◆ _CRTP_IMPL()

+ +
+
+
+template<typename Impl_t >
+ + + + + +
+ + + + + + + + +
utl::_1wire_uart_i< Impl_t >::_CRTP_IMPL (Impl_t )
+
+private
+
+ +
+
+ +

◆ _reset()

+ +
+
+
+template<typename Impl_t >
+ + + + + +
+ + + + + + + + +
bool utl::_1wire_uart_i< Impl_t >::_reset (Speed s)
+
+private
+
+ +

Generate a 1-wire reset


+

Reset \ / \ X X X /


+

RS: | | | | | | | | | | | bit: ST 0 1 2 3 4 5 6 7 SP < -------— 1024/174 usec ----------—>

+

TX: (STD)0xF0, (OVDR)0xF8 RX: less if present

+
Parameters
+ + +
tTiming
+
+
+
Returns
The status of the operation
    +
  • 0 Fail
  • +
  • 1 Success
  • +
+
+ +

Definition at line 181 of file _1wire_uart.h.

+ +
+
+ +

◆ bit()

+ +
+
+
+template<typename Impl_t >
+ + + + + +
+ + + + + + + + +
bool utl::_1wire_uart_i< Impl_t >::bit (bool b)
+
+inlineprivate
+
+ +

Send a 1-Wire write bit and read the response.

+

Write 1 — -----------------------------------—

Read 0/1 \ /

+

RS: | | | | | | | | | | | bit: ST 0 1 2 3 4 5 6 7 SP TX: 0xFF RX: 0xFF->1, less->0

+

Write 0 — ---—

Read 0 \ /

+

RS: | | | | | | | | | | | bit: ST 0 1 2 3 4 5 6 7 SP < ----------— 87/11 usec ----------—> TX: 0x00 RX: 0x00

+
Parameters
+ + +
bThe bit to send
+
+
+
Returns
The response
+ +

Definition at line 136 of file _1wire_uart.h.

+ +
+
+ +

◆ speed() [1/2]

+ +
+
+
+template<typename Impl_t >
+ + + + + +
+ + + + + + + +
Speed utl::_1wire_uart_i< Impl_t >::speed () const
+
+inlineprivate
+
+ +

Get the 1-wire bus speed.

+ +

Definition at line 111 of file _1wire_uart.h.

+ +
+
+ +

◆ speed() [2/2]

+ +
+
+
+template<typename Impl_t >
+ + + + + +
+ + + + + + + + +
void utl::_1wire_uart_i< Impl_t >::speed (Speed s)
+
+private
+
+ +

Set the 1-wire bus speed.

+

Set the 1-wire bus speed for normal operation only

Note
We have moved the BR set functionality here to reduce the code inside bit(). This is OK as long as the _1wire_i<> always check speed.
+
Parameters
+ + +
sThe desired speed
+
+
+ +

Definition at line 156 of file _1wire_uart.h.

+ +
+
+ +

◆ UART_BR()

+ +
+
+
+template<typename Impl_t >
+ + + + + +
+ + + + + + + + +
void utl::_1wire_uart_i< Impl_t >::UART_BR (uint32_t br)
+
+inlineprivate
+
+ +

Implementers's (driver) baudrate function.

+
Parameters
+ + +
Thedesired Baudrate
+
+
+ +

Definition at line 96 of file _1wire_uart.h.

+ +
+
+ +

◆ UART_RW()

+ +
+
+
+template<typename Impl_t >
+ + + + + +
+ + + + + + + + +
byte_t utl::_1wire_uart_i< Impl_t >::UART_RW (byte_t byte)
+
+inlineprivate
+
+ +

Implementers's (driver) read-write function. We expect the following USART configuration:

+
    +
  • Word Length = 8 Bits
  • +
  • Stop Bit = One Stop bit
  • +
  • Parity = No parity
    Parameters
    + + +
    Thebyte to send
    +
    +
    +
    Returns
    The byte received.
    +
    Note
    Due to the nature of the technique, the received byte is the actual bus condition during the communication frame (time slot)
    +
  • +
+ +

Definition at line 89 of file _1wire_uart.h.

+ +
+
+

Member Data Documentation

+ +

◆ _1wire_i< _1wire_uart_i< Impl_t > >

+ +
+
+
+template<typename Impl_t >
+ + + + + +
+ + + + +
friend utl::_1wire_uart_i< Impl_t >::_1wire_i< _1wire_uart_i< Impl_t > >
+
+private
+
+ +

Syntactic sugar to CRTP casting.

+ +

Definition at line 54 of file _1wire_uart.h.

+ +
+
+ +

◆ _speed

+ +
+
+
+template<typename Impl_t >
+ + + + + +
+ + + + +
Speed utl::_1wire_uart_i< Impl_t >::_speed {Speed::STD}
+
+private
+
+ +

Definition at line 109 of file _1wire_uart.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/doc/html/classutl_1_1__1wire__uart__i.js b/doc/html/classutl_1_1__1wire__uart__i.js new file mode 100644 index 0000000..7eae15f --- /dev/null +++ b/doc/html/classutl_1_1__1wire__uart__i.js @@ -0,0 +1,22 @@ +var classutl_1_1__1wire__uart__i = +[ + [ "Speed", "classutl_1_1__1wire__uart__i.html#acc4364e3aa029405a9b2b25e1fea83ac", null ], + [ "type", "classutl_1_1__1wire__uart__i.html#acc885c6ec2395ad20409b01aa4d5f546", null ], + [ "BR", "classutl_1_1__1wire__uart__i.html#a3a2efd9546f298b920011b3c6f933051", [ + [ "BR_STD_RST", "classutl_1_1__1wire__uart__i.html#a3a2efd9546f298b920011b3c6f933051adf1980b5eb0dee83ef1f76ba38671a43", null ], + [ "BR_OVR_RST", "classutl_1_1__1wire__uart__i.html#a3a2efd9546f298b920011b3c6f933051a6ea7cba754551a703cc94658e151f073", null ], + [ "BR_STD", "classutl_1_1__1wire__uart__i.html#a3a2efd9546f298b920011b3c6f933051a7ea7463824fb1b6bd5c31e1976351fb0", null ], + [ "BR_OVR", "classutl_1_1__1wire__uart__i.html#a3a2efd9546f298b920011b3c6f933051a4919b1e0ad524b6d6a791ff6c7f96af7", null ] + ] ], + [ "_1wire_uart_i", "classutl_1_1__1wire__uart__i.html#ae14ed1ce068d5601c5623c410a0dbc0c", null ], + [ "~_1wire_uart_i", "classutl_1_1__1wire__uart__i.html#afe64da15b5eaf61cd54f357f3ea8b3ea", null ], + [ "_CRTP_IMPL", "classutl_1_1__1wire__uart__i.html#a95ab6c8cc60417090b2cc4e5afc62e77", null ], + [ "_reset", "classutl_1_1__1wire__uart__i.html#ad40f5180bddd8cd5a55e77f2bfa66ac1", null ], + [ "bit", "classutl_1_1__1wire__uart__i.html#a7bd53d23f567a31177f29fcbda4da09c", null ], + [ "speed", "classutl_1_1__1wire__uart__i.html#a1b807cfc2a67eee08efa48ef36b99f74", null ], + [ "speed", "classutl_1_1__1wire__uart__i.html#aa56f7a1497c540397bebf008416118b6", null ], + [ "UART_BR", "classutl_1_1__1wire__uart__i.html#a4379f74ee196e6b8422a74143642004f", null ], + [ "UART_RW", "classutl_1_1__1wire__uart__i.html#a02e0069f537ae7e8cccdf8563537952a", null ], + [ "_1wire_i< _1wire_uart_i< Impl_t > >", "classutl_1_1__1wire__uart__i.html#a6ab0ec4032cad68333590f159da83871", null ], + [ "_speed", "classutl_1_1__1wire__uart__i.html#a14e342fac3c10b66d82d154f47b9db26", null ] +]; \ No newline at end of file diff --git a/doc/html/classutl_1_1__1wire__uart__i.png b/doc/html/classutl_1_1__1wire__uart__i.png new file mode 100644 index 0000000000000000000000000000000000000000..f22c32605200c0f181de171cf9dcadab9d9bddf5 GIT binary patch literal 762 zcmeAS@N?(olHy`uVBq!ia0vp^Z-6*}gBeKbvSw-kDTx4|5ZC|z{{xvX-h3_XKQsZz z0^3qpO;?q-#so@ zn^j6@?XGuBpPyRop0GrQ>7o8*6W_fZo|ArEXqdW0%rrrDrR&oTX0w;vxHR!^P30E7 zut`R_eUTlL7rxNe+{hKN`IV|y(4x~Dk8bEcVD~2{ZchA7--qUkm7zCh-H1H>U{8<1 z-t})LC6xBq_H8q3o|?HioSSdH_w_CRqjGahev}jlpO-d`F1QnJcJt)h`*v%V+_?6) z?^&|z$EC($!n^NFn{V{o_;Um6o$`dohrihbO`5VouS~i$Ve%2RqhU>@h360G)t`G7 z9`em1%xLMatkm*wh23V8&RqOBcdF06Pxi!$-OO>yBnjhCWax&lx>xzr*3G%tJ54LnA+PBy4 zxW|0wd)7>DyYu%`#1H*3vRKY_`S&S3&amS*9>2O4*KqX48_}GIS9W%V9f{1x_5^Nb zJzksY?-bw8niQQadiJ=N`4XF%f6UK6lYJb#<9=H&f0og!18Usn9cx*txxQcCaC&~Q z#e0eWuczLPo&V+(<1>wZ{R3&`W;gWTy}73UhmF;3)tbU}wKZ>_XX@_FlhJv5EM4(_ zWjf=(Rd!pCm?u7GE7@^gf3H^15&oQ`&lzHRPcdy-0rOhbp6h98wJ-Ri+6 + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
utl::_1wire_uart_i< virtual_tag > Member List
+
+
+ +

This is the complete list of members for utl::_1wire_uart_i< virtual_tag >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_1wire_i()=defaultutl::_1wire_i< virtual_tag >protected
_1wire_i(const type &)=deleteutl::_1wire_i< virtual_tag >protected
_1wire_uart_i()=defaultutl::_1wire_uart_i< virtual_tag >protected
_reset(Speed s)utl::_1wire_uart_i< virtual_tag >privatevirtual
_speedutl::_1wire_uart_i< virtual_tag >private
bit(bool b)utl::_1wire_uart_i< virtual_tag >inlineprivatevirtual
BR enum nameutl::_1wire_uart_i< virtual_tag >private
BR_OVR enum valueutl::_1wire_uart_i< virtual_tag >private
BR_OVR_RST enum valueutl::_1wire_uart_i< virtual_tag >private
BR_STD enum valueutl::_1wire_uart_i< virtual_tag >private
BR_STD_RST enum valueutl::_1wire_uart_i< virtual_tag >private
first(Speed s=Speed::STD, bool alarm=false)utl::_1wire_i< virtual_tag >inline
match(_1wire_id_t &id, Speed s=Speed::STD)utl::_1wire_i< virtual_tag >inline
match_n_ovdr(_1wire_id_t &id)utl::_1wire_i< virtual_tag >inline
next(Speed s=Speed::STD, bool alarm=false)utl::_1wire_i< virtual_tag >inline
operator=(const type &)=deleteutl::_1wire_i< virtual_tag >protected
reset(Speed s=Speed::STD)utl::_1wire_i< virtual_tag >inline
rx_data(Speed s=Speed::STD)utl::_1wire_i< virtual_tag >inline
rx_data(byte_t *in, size_t n, Speed s=Speed::STD)utl::_1wire_i< virtual_tag >
skip(Speed s=Speed::STD)utl::_1wire_i< virtual_tag >inline
skip_n_ovdr()utl::_1wire_i< virtual_tag >inline
Speed typedefutl::_1wire_uart_i< virtual_tag >
speed() constutl::_1wire_uart_i< virtual_tag >inlineprivatevirtual
speed(Speed s)utl::_1wire_uart_i< virtual_tag >privatevirtual
tx_data(byte_t out, Speed s=Speed::STD)utl::_1wire_i< virtual_tag >inline
tx_data(const byte_t *out, byte_t *in, size_t n, Speed s=Speed::STD)utl::_1wire_i< virtual_tag >
type typedefutl::_1wire_uart_i< virtual_tag >
UART_BR(uint32_t br)=0utl::_1wire_uart_i< virtual_tag >privatepure virtual
UART_RW(byte_t byte)=0utl::_1wire_uart_i< virtual_tag >privatepure virtual
~_1wire_i()=defaultutl::_1wire_i< virtual_tag >virtual
~_1wire_uart_i()=defaultutl::_1wire_uart_i< virtual_tag >protected
+
+ + + + diff --git a/doc/html/classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html b/doc/html/classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html new file mode 100644 index 0000000..a58851e --- /dev/null +++ b/doc/html/classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html @@ -0,0 +1,626 @@ + + + + + + + +uTL: utl::_1wire_uart_i< virtual_tag > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
utl::_1wire_uart_i< virtual_tag > Class Template Referenceabstract
+
+
+ +

A virtual base class interface implementation. Using the private virtual interface we provide the interface from _1wire_i<virtual_tag> + More...

+ +

#include <_1wire_uart.h>

+
+Inheritance diagram for utl::_1wire_uart_i< virtual_tag >:
+
+
+ + +utl::_1wire_i< virtual_tag > + +
+ + + + + + + + + + + + + + + +

+Public Types

using type = _1wire_uart_i< virtual_tag >
 Export type as identity meta-function. More...
 
using Speed = typename _1wire_i< virtual_tag >::Speed
 Bring bus speed. More...
 
- Public Types inherited from utl::_1wire_i< virtual_tag >
enum  Speed { Speed::STD =0, +Speed::OVDR + }
 1-wire bus speed More...
 
using type = _1wire_i< virtual_tag >
 Export type as identity meta-function. More...
 
+ + + + + + + + + + + + + + + + +

+Protected Member Functions

Object lifetime
 _1wire_uart_i ()=default
 Allow constructor from derived only. More...
 
 ~_1wire_uart_i ()=default
 
- Protected Member Functions inherited from utl::_1wire_i< virtual_tag >
 _1wire_i ()=default
 Allow constructor from derived only. More...
 
 _1wire_i (const type &)=delete
 No copies. More...
 
typeoperator= (const type &)=delete
 
+ + + + + + + + +

+Private Member Functions

Implementation requirements
virtual byte_t UART_RW (byte_t byte)=0
 Implementers's (driver) read-write function. We use the following USART configuration: More...
 
virtual void UART_BR (uint32_t br)=0
 Implementers's (driver) baudrate function. More...
 
+ + + + + + + + + + + + + + + + + + +

+Implementation of base requirements

enum  BR { BR_STD_RST =9600, +BR_OVR_RST =57600, +BR_STD =115200, +BR_OVR =921600 + }
 1-wire UART baudrates More...
 
Speed _speed {Speed::STD}
 
Speed speed () const
 Get the 1-wire bus speed. More...
 
void speed (Speed s)
 Set the 1-wire bus speed. More...
 
bool bit (bool b)
 Send a 1-Wire write bit and read the response. More...
 
bool _reset (Speed s)
 Generate a 1-wire reset


+

Reset \ / \ X X X /


+

RS: | | | | | | | | | | | bit: ST 0 1 2 3 4 5 6 7 SP < -------— 1024/174 usec ----------—> More...

 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Member Functions inherited from utl::_1wire_i< virtual_tag >
bool reset (Speed s=Speed::STD)
 Generate a 1-wire reset. More...
 
byte_t tx_data (byte_t out, Speed s=Speed::STD)
 
size_t tx_data (const byte_t *out, byte_t *in, size_t n, Speed s=Speed::STD)
 
byte_t rx_data (Speed s=Speed::STD)
 
size_t rx_data (byte_t *in, size_t n, Speed s=Speed::STD)
 
void match (_1wire_id_t &id, Speed s=Speed::STD)
 
void match_n_ovdr (_1wire_id_t &id)
 
void skip (Speed s=Speed::STD)
 
void skip_n_ovdr ()
 
_1wire_id_t first (Speed s=Speed::STD, bool alarm=false)
 'first' operation, to search on the 1-Wire for the first device. This is performed by setting dec_, pos_ and cur_ to zero and then doing the search. More...
 
_1wire_id_t next (Speed s=Speed::STD, bool alarm=false)
 'next' operation, to search on the 1-Wire for the next device. This search is usually performed after a 'first' operation or another 'next' operation. Based on maxim-ic application note 187. More...
 
virtual ~_1wire_i ()=default
 
+

Detailed Description

+

template<>
+class utl::_1wire_uart_i< virtual_tag >

+ +

A virtual base class interface implementation. Using the private virtual interface we provide the interface from _1wire_i<virtual_tag>

+
Parameters
+ + +
impl_t= virtual_tag
+
+
+ +

Definition at line 198 of file _1wire_uart.h.

+

Member Typedef Documentation

+ +

◆ Speed

+ +
+
+ + + + +
using utl::_1wire_uart_i< virtual_tag >::Speed = typename _1wire_i<virtual_tag>::Speed
+
+ +

Bring bus speed.

+ +

Definition at line 201 of file _1wire_uart.h.

+ +
+
+ +

◆ type

+ +
+
+ +

Export type as identity meta-function.

+ +

Definition at line 200 of file _1wire_uart.h.

+ +
+
+

Member Enumeration Documentation

+ +

◆ BR

+ +
+
+ + + + + +
+ + + + +
enum utl::_1wire_uart_i< virtual_tag >::BR
+
+private
+
+ +

1-wire UART baudrates

+ + + + + +
Enumerator
BR_STD_RST 
BR_OVR_RST 
BR_STD 
BR_OVR 
+ +

Definition at line 244 of file _1wire_uart.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ _1wire_uart_i()

+ +
+
+ + + + + +
+ + + + + + + +
utl::_1wire_uart_i< virtual_tag >::_1wire_uart_i ()
+
+protecteddefault
+
+ +

Allow constructor from derived only.

+ +
+
+ +

◆ ~_1wire_uart_i()

+ +
+
+ + + + + +
+ + + + + + + +
utl::_1wire_uart_i< virtual_tag >::~_1wire_uart_i ()
+
+protecteddefault
+
+

Allow destructor from derived only

+ +
+
+

Member Function Documentation

+ +

◆ _reset()

+ +
+
+ + + + + +
+ + + + + + + + +
bool utl::_1wire_uart_i< virtual_tag >::_reset (Speed s)
+
+privatevirtual
+
+ +

Generate a 1-wire reset


+

Reset \ / \ X X X /


+

RS: | | | | | | | | | | | bit: ST 0 1 2 3 4 5 6 7 SP < -------— 1024/174 usec ----------—>

+

TX: (STD)0xF0, (OVDR)0xF8 RX: less if present

+
Parameters
+ + +
tTiming
+
+
+
Returns
The status of the operation
    +
  • 0 Fail
  • +
  • 1 Success
  • +
+
+ +

Implements utl::_1wire_i< virtual_tag >.

+ +

Definition at line 320 of file _1wire_uart.h.

+ +
+
+ +

◆ bit()

+ +
+
+ + + + + +
+ + + + + + + + +
bool utl::_1wire_uart_i< virtual_tag >::bit (bool b)
+
+inlineprivatevirtual
+
+ +

Send a 1-Wire write bit and read the response.

+

Write 1 — -----------------------------------—

Read 0/1 \ /

+

RS: | | | | | | | | | | | bit: ST 0 1 2 3 4 5 6 7 SP TX: 0xFF RX: 0xFF->1, less->0

+

Write 0 — ---—

Read 0 \ /

+

RS: | | | | | | | | | | | bit: ST 0 1 2 3 4 5 6 7 SP < ----------— 87/11 usec ----------—> TX: 0x00 RX: 0x00

+
Parameters
+ + +
bThe bit to send
+
+
+
Returns
The response
+ +

Implements utl::_1wire_i< virtual_tag >.

+ +

Definition at line 277 of file _1wire_uart.h.

+ +
+
+ +

◆ speed() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
Speed utl::_1wire_uart_i< virtual_tag >::speed () const
+
+inlineprivatevirtual
+
+ +

Get the 1-wire bus speed.

+ +

Implements utl::_1wire_i< virtual_tag >.

+ +

Definition at line 252 of file _1wire_uart.h.

+ +
+
+ +

◆ speed() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void utl::_1wire_uart_i< virtual_tag >::speed (Speed s)
+
+privatevirtual
+
+ +

Set the 1-wire bus speed.

+

Set the 1-wire bus speed for normal operation only

Note
We have moved the BR set functionality here to reduce the code inside bit(). This is OK as long as the _1wire_i<> always check speed.
+
Parameters
+ + +
sThe desired speed
+
+
+ +

Implements utl::_1wire_i< virtual_tag >.

+ +

Definition at line 296 of file _1wire_uart.h.

+ +
+
+ +

◆ UART_BR()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void utl::_1wire_uart_i< virtual_tag >::UART_BR (uint32_t br)
+
+privatepure virtual
+
+ +

Implementers's (driver) baudrate function.

+
Parameters
+ + +
Thedesired Baudrate
+
+
+ +
+
+ +

◆ UART_RW()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual byte_t utl::_1wire_uart_i< virtual_tag >::UART_RW (byte_t byte)
+
+privatepure virtual
+
+ +

Implementers's (driver) read-write function. We use the following USART configuration:

+
    +
  • Word Length = 8 Bits
  • +
  • Stop Bit = One Stop bit
  • +
  • Parity = No parity
    Parameters
    + + +
    Thebyte to send
    +
    +
    +
    Returns
    The byte received.
    +
    Note
    Due to the nature of the technique, the received byte is the actual bus condition during the communication frame (time slot)
    +
  • +
+ +
+
+

Member Data Documentation

+ +

◆ _speed

+ +
+
+ + + + + +
+ + + + +
Speed utl::_1wire_uart_i< virtual_tag >::_speed {Speed::STD}
+
+private
+
+ +

Definition at line 250 of file _1wire_uart.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/doc/html/classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.js b/doc/html/classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.js new file mode 100644 index 0000000..c8bd9e2 --- /dev/null +++ b/doc/html/classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.js @@ -0,0 +1,20 @@ +var classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4 = +[ + [ "Speed", "classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html#a854a62c6f9e6d62597471b887c541e03", null ], + [ "type", "classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html#a1d50d0d5460165c3f6046ce6b663cd5e", null ], + [ "BR", "classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html#a3685fa6f0d0c999a8d9527c98b671e51", [ + [ "BR_STD_RST", "classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html#a3685fa6f0d0c999a8d9527c98b671e51ad1db55ca52bab3ce7fc9cebeece09823", null ], + [ "BR_OVR_RST", "classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html#a3685fa6f0d0c999a8d9527c98b671e51ae0d3dbcffc80c340a90ddea06efad084", null ], + [ "BR_STD", "classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html#a3685fa6f0d0c999a8d9527c98b671e51a9dee26a395424eb26b9b86a8d4752c4c", null ], + [ "BR_OVR", "classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html#a3685fa6f0d0c999a8d9527c98b671e51a36ea021ddb9cc702a0d0f4d6be547207", null ] + ] ], + [ "_1wire_uart_i", "classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html#a31bc4dbae704b77ab95b491605b6fa2e", null ], + [ "~_1wire_uart_i", "classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html#ad66d096eca084dec305a9bc85bc5e588", null ], + [ "_reset", "classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html#a89c68d8e05df326e3c2b79c454b188af", null ], + [ "bit", "classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html#af9ce2c52c3446978f9a7436b520f578c", null ], + [ "speed", "classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html#aae5fc7143ee609cb5700d70140d2ab3e", null ], + [ "speed", "classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html#afe3fead0d947a93b1f9e63bc934bb56c", null ], + [ "UART_BR", "classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html#ad3638c4688c1cef14a7f4bd316104931", null ], + [ "UART_RW", "classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html#a64cafa18986604d0693635e41bdee6aa", null ], + [ "_speed", "classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html#a0c17e9b5d4e7b240d4bfc9f3cdd5c928", null ] +]; \ No newline at end of file diff --git a/doc/html/classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.png b/doc/html/classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.png new file mode 100644 index 0000000000000000000000000000000000000000..3f2f20f5831d10a9cda8db44b2dde11a933467ba GIT binary patch literal 756 zcmeAS@N?(olHy`uVBq!ia0vp^`++!sgBeKHtA!*3DTx4|5ZC|z{{xvX-h3_XKQsZz z0^RR^V~vzn=2{zxw{! zN?RJNzT0stD?ZL@5%cp-jE|g_DjA_O$z+Y%ewDA6pG;p;XZ4&vdveO`_bZRDuU>ue z&c(7ROSa{GZZ9b3^!)V8?tk{I4V$)ooim`qg z9*~#*r}OORpzonZcj=+zP6|Sk{g3OL zPMFm>1{=6)L?0Dtye?fOa`5?|+v_L(cKgTw^Ze`Q`#YDxTM&(&hypsllq>2zdVTtdOe)s{uSng1m1K1D|%!PJow}PXCbr1 z-1>X=47R2}8GmJdV*YaZ3HyuXC;2b(3Kj`CNkp(T zB*HWXpZx!474s?|hILbUZ|ha(n^rxo=>K2p$$015?!5X#|Ep~6XNkWuo0ju!Ik!%4 z{@m9gnLB0}-CCyl-Lm}soA1Bwq~}blI_R&k-T2>@n#r2d5&uN`x1L@7bGmkW#*{y6 z9lPZ>=%!uiiT)|k&)%P`yLa`km7Avqf3)1cR^a;W2jA0Ai1_Tx{d(-FUAS`+^Iwfb#zb d42kgn41WC@* + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
utl::i2c_bb_i< impl_t > Member List
+
+
+ +

This is the complete list of members for utl::i2c_bb_i< impl_t >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_clock() constutl::i2c_bb_i< impl_t >inlineprivate
_clock(uint32_t c)utl::i2c_bb_i< impl_t >inlineprivate
_CRTP_IMPL(impl_t)utl::i2c_bb_i< impl_t >private
_rx_data(bool ack, Sequence seq)utl::i2c_bb_i< impl_t >private
_start()utl::i2c_bb_i< impl_t >private
_stop()utl::i2c_bb_i< impl_t >private
_tx_data(byte_t byte, Sequence seq)utl::i2c_bb_i< impl_t >private
clock() constutl::i2c_i< i2c_bb_i< impl_t > >inline
clock(uint32_t f)utl::i2c_i< i2c_bb_i< impl_t > >inline
delay(uint32_t usec)utl::i2c_bb_i< impl_t >inlineprivate
i2c_bb_i(uint32_t clk) noexceptutl::i2c_bb_i< impl_t >inlineprotected
i2c_i()=defaultutl::i2c_i< i2c_bb_i< impl_t > >protected
i2c_i(const type &)=deleteutl::i2c_i< i2c_bb_i< impl_t > >protected
i2c_i< i2c_bb_i< impl_t > >utl::i2c_bb_i< impl_t >private
operator=(const type &)=deleteutl::i2c_i< i2c_bb_i< impl_t > >protected
rx_data(bool ack, Sequence seq=Sequence::BYTEnACK)utl::i2c_i< i2c_bb_i< impl_t > >inline
SCL(uint8_t st)utl::i2c_bb_i< impl_t >inlineprivate
SDA(SDAMode mode, bool st)utl::i2c_bb_i< impl_t >inlineprivate
SDAMode enum nameutl::i2c_bb_i< impl_t >
Sequence typedefutl::i2c_bb_i< impl_t >
start()utl::i2c_i< i2c_bb_i< impl_t > >inline
stop()utl::i2c_i< i2c_bb_i< impl_t > >inline
tx_data(byte_t byte, Sequence seq=Sequence::BYTEnACK)utl::i2c_i< i2c_bb_i< impl_t > >inline
type typedefutl::i2c_bb_i< impl_t >
usec_utl::i2c_bb_i< impl_t >private
~i2c_bb_i() noexcept=defaultutl::i2c_bb_i< impl_t >protected
~i2c_i()=defaultutl::i2c_i< i2c_bb_i< impl_t > >protected
+
+ + + + diff --git a/doc/html/classutl_1_1i2c__bb__i.html b/doc/html/classutl_1_1i2c__bb__i.html new file mode 100644 index 0000000..30f5b06 --- /dev/null +++ b/doc/html/classutl_1_1i2c__bb__i.html @@ -0,0 +1,817 @@ + + + + + + + +uTL: utl::i2c_bb_i< impl_t > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
utl::i2c_bb_i< impl_t > Class Template Reference
+
+
+ +

A bit banking implementation of i2c bus inherited from i2c_i base class. + More...

+ +

#include <i2c_bb.h>

+
+Inheritance diagram for utl::i2c_bb_i< impl_t >:
+
+
+ + +utl::i2c_i< i2c_bb_i< impl_t > > + +
+ + + + + + + + + + + + + + + + +

+Public Types

enum  SDAMode { SDAMode::INPUT =0, +SDAMode::OUTPUT + }
 SDA pin direction enumerator. More...
 
using type = i2c_bb_i< impl_t >
 Export type as identity meta-function. More...
 
using Sequence = typename i2c_i< type >::Sequence
 
- Public Types inherited from utl::i2c_i< i2c_bb_i< impl_t > >
enum  Sequence
 I2C transmit/receive sequence. More...
 
using type = i2c_i< i2c_bb_i< impl_t > >
 
+ + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

Object lifetime
 ~i2c_bb_i () noexcept=default
 A default destructor, allow destructor from derived only. More...
 
 i2c_bb_i (uint32_t clk) noexcept
 A default constructor. More...
 
- Protected Member Functions inherited from utl::i2c_i< i2c_bb_i< impl_t > >
 i2c_i ()=default
 Allow constructor from derived only. More...
 
 i2c_i (const type &)=delete
 No copies. More...
 
 ~i2c_i ()=default
 Allow destructor from derived only. More...
 
typeoperator= (const type &)=delete
 
+ + + + + + + + + + + + +

+Private Member Functions

 _CRTP_IMPL (impl_t)
 
Implementation requirements
Note
In order for the implementation to have the following as private members it also need to declare this class as friend
+
bool SDA (SDAMode mode, bool st)
 
void SCL (uint8_t st)
 Implementers's scl pin function. More...
 
void delay (uint32_t usec)
 
+ + + +

+Private Attributes

friend i2c_i< i2c_bb_i< impl_t > >
 
+ + + + + + + + + + + + + + + + + + + +

+Implementation of base requirements

uint32_t usec_
 
uint32_t _clock () const
 
void _clock (uint32_t c)
 
void _start ()
 Send start functionality. More...
 
void _stop ()
 Send stop functionality. More...
 
byte_t _rx_data (bool ack, Sequence seq)
 Receive a byte from the i2c bus. More...
 
bool _tx_data (byte_t byte, Sequence seq)
 Transmit a byte to the i2c bus. More...
 
+ + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Member Functions inherited from utl::i2c_i< i2c_bb_i< impl_t > >
uint32_t clock () const
 
void clock (uint32_t f)
 set clock frequency of the bus More...
 
void start ()
 Send start functionality. More...
 
void stop ()
 Send stop functionality. More...
 
byte_t rx_data (bool ack, Sequence seq=Sequence::BYTEnACK)
 Receive a byte from the i2c bus. More...
 
bool tx_data (byte_t byte, Sequence seq=Sequence::BYTEnACK)
 Transmit a byte to the i2c bus. More...
 
+

Detailed Description

+

template<typename impl_t>
+class utl::i2c_bb_i< impl_t >

+ +

A bit banking implementation of i2c bus inherited from i2c_i base class.

+
See also
i2c_i
+

I2C bit banking interface template class providing an I2C using bit banking using CRTP.

Parameters
+ + +
impl_tThe CRTP type (the derived/implementation class typename).
+
+
+ +

Definition at line 47 of file i2c_bb.h.

+

Member Typedef Documentation

+ +

◆ Sequence

+ +
+
+
+template<typename impl_t >
+ + + + +
using utl::i2c_bb_i< impl_t >::Sequence = typename i2c_i<type>::Sequence
+
+ +

Definition at line 53 of file i2c_bb.h.

+ +
+
+ +

◆ type

+ +
+
+
+template<typename impl_t >
+ + + + +
using utl::i2c_bb_i< impl_t >::type = i2c_bb_i<impl_t>
+
+ +

Export type as identity meta-function.

+ +

Definition at line 52 of file i2c_bb.h.

+ +
+
+

Member Enumeration Documentation

+ +

◆ SDAMode

+ +
+
+
+template<typename impl_t >
+ + + + + +
+ + + + +
enum utl::i2c_bb_i::SDAMode
+
+strong
+
+ +

SDA pin direction enumerator.

+ + + +
Enumerator
INPUT 
OUTPUT 
+ +

Definition at line 55 of file i2c_bb.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ ~i2c_bb_i()

+ +
+
+
+template<typename impl_t >
+ + + + + +
+ + + + + + + +
utl::i2c_bb_i< impl_t >::~i2c_bb_i ()
+
+protecteddefaultnoexcept
+
+ +

A default destructor, allow destructor from derived only.

+ +
+
+ +

◆ i2c_bb_i()

+ +
+
+
+template<typename impl_t >
+ + + + + +
+ + + + + + + + +
utl::i2c_bb_i< impl_t >::i2c_bb_i (uint32_t clk)
+
+inlineprotectednoexcept
+
+ +

A default constructor.

+ +

Definition at line 68 of file i2c_bb.h.

+ +
+
+

Member Function Documentation

+ +

◆ _clock() [1/2]

+ +
+
+
+template<typename impl_t >
+ + + + + +
+ + + + + + + +
uint32_t utl::i2c_bb_i< impl_t >::_clock () const
+
+inlineprivate
+
+ +

Definition at line 95 of file i2c_bb.h.

+ +
+
+ +

◆ _clock() [2/2]

+ +
+
+
+template<typename impl_t >
+ + + + + +
+ + + + + + + + +
void utl::i2c_bb_i< impl_t >::_clock (uint32_t c)
+
+inlineprivate
+
+ +

Definition at line 96 of file i2c_bb.h.

+ +
+
+ +

◆ _CRTP_IMPL()

+ +
+
+
+template<typename impl_t >
+ + + + + +
+ + + + + + + + +
utl::i2c_bb_i< impl_t >::_CRTP_IMPL (impl_t )
+
+private
+
+ +
+
+ +

◆ _rx_data()

+ +
+
+
+template<typename impl_t >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
byte_t utl::i2c_bb_i< impl_t >::_rx_data (bool ack,
Sequence seq 
)
+
+private
+
+ +

Receive a byte from the i2c bus.

+
Parameters
+ + + +
ackOptional ack bit.
    +
  • 1 ACK the reception
  • +
  • 0 Don't ACK the reception.
  • +
+
seqThe operation sequence to execute
    +
  • Sequence::BYTE Receive only the byte, do not send ack clock
  • +
  • Sequence::ACK Send only the ack bit
  • +
  • Sequence::BYTEnACK Receive the byte and send the ack bit
  • +
+
+
+
+
Returns
The byte received.
+ +

Definition at line 154 of file i2c_bb.h.

+ +
+
+ +

◆ _start()

+ +
+
+
+template<typename impl_t >
+ + + + + +
+ + + + + + + + +
void utl::i2c_bb_i< impl_t >::_start (void )
+
+private
+
+ +

Send start functionality.

+

Send a START bit to the bus.

+
Returns
none
+ +

Definition at line 115 of file i2c_bb.h.

+ +
+
+ +

◆ _stop()

+ +
+
+
+template<typename impl_t >
+ + + + + +
+ + + + + + + + +
void utl::i2c_bb_i< impl_t >::_stop (void )
+
+private
+
+ +

Send stop functionality.

+

Send a START bit to the bus.

+
Returns
none
+ +

Definition at line 131 of file i2c_bb.h.

+ +
+
+ +

◆ _tx_data()

+ +
+
+
+template<typename impl_t >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool utl::i2c_bb_i< impl_t >::_tx_data (byte_t byte,
Sequence seq 
)
+
+private
+
+ +

Transmit a byte to the i2c bus.

+
Parameters
+ + + +
byteThe byte to send.
seqThe operation sequence to execute
    +
  • Sequence::BYTE Transmit only the byte, do not read ack bit
  • +
  • Sequence::ACK Read only the ack bit
  • +
  • Sequence::BYTEnACK Transmit the byte and read the ack bit
  • +
+
+
+
+
Returns
Slave's ACK bit
    +
  • false Slave didn't ACK
  • +
  • true Slave did ACK
  • +
+
+ +

Definition at line 194 of file i2c_bb.h.

+ +
+
+ +

◆ delay()

+ +
+
+
+template<typename impl_t >
+ + + + + +
+ + + + + + + + +
void utl::i2c_bb_i< impl_t >::delay (uint32_t usec)
+
+inlineprivate
+
+

Implementers's usec delay function

+ +

Definition at line 87 of file i2c_bb.h.

+ +
+
+ +

◆ SCL()

+ +
+
+
+template<typename impl_t >
+ + + + + +
+ + + + + + + + +
void utl::i2c_bb_i< impl_t >::SCL (uint8_t st)
+
+inlineprivate
+
+ +

Implementers's scl pin function.

+ +

Definition at line 86 of file i2c_bb.h.

+ +
+
+ +

◆ SDA()

+ +
+
+
+template<typename impl_t >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool utl::i2c_bb_i< impl_t >::SDA (SDAMode mode,
bool st 
)
+
+inlineprivate
+
+

Implementers's sda pin function

Parameters
+ + +
stIn SDA_OUTPUT mode, selects the pin output state
+
+
+
Returns
In SDA_INPUT mode return the pin input state
+ +

Definition at line 85 of file i2c_bb.h.

+ +
+
+

Member Data Documentation

+ +

◆ i2c_i< i2c_bb_i< impl_t > >

+ +
+
+
+template<typename impl_t >
+ + + + + +
+ + + + +
friend utl::i2c_bb_i< impl_t >::i2c_i< i2c_bb_i< impl_t > >
+
+private
+
+ +

Definition at line 49 of file i2c_bb.h.

+ +
+
+ +

◆ usec_

+ +
+
+
+template<typename impl_t >
+ + + + + +
+ + + + +
uint32_t utl::i2c_bb_i< impl_t >::usec_
+
+private
+
+

half period of I2C bus

+ +

Definition at line 102 of file i2c_bb.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/doc/html/classutl_1_1i2c__bb__i.js b/doc/html/classutl_1_1i2c__bb__i.js new file mode 100644 index 0000000..a19bbaa --- /dev/null +++ b/doc/html/classutl_1_1i2c__bb__i.js @@ -0,0 +1,23 @@ +var classutl_1_1i2c__bb__i = +[ + [ "Sequence", "classutl_1_1i2c__bb__i.html#ad2872b7e17116f8379144488fe135052", null ], + [ "type", "classutl_1_1i2c__bb__i.html#a428c847d950993fa2cd005416edfb720", null ], + [ "SDAMode", "classutl_1_1i2c__bb__i.html#a4369b434fde250d503bfdc07d5c6a26d", [ + [ "INPUT", "classutl_1_1i2c__bb__i.html#a4369b434fde250d503bfdc07d5c6a26daa84cc046d48610b05c21fd3670d0c829", null ], + [ "OUTPUT", "classutl_1_1i2c__bb__i.html#a4369b434fde250d503bfdc07d5c6a26da50a87f0d71f7221582dad4bf507a0f34", null ] + ] ], + [ "~i2c_bb_i", "classutl_1_1i2c__bb__i.html#ac2d9b97778a5dd57eb5e6425b4b0833c", null ], + [ "i2c_bb_i", "classutl_1_1i2c__bb__i.html#ab657379ca2e4b3624e2d4520542a9464", null ], + [ "_clock", "classutl_1_1i2c__bb__i.html#a1f491d6ccadce71fa6cc59eebc74e82f", null ], + [ "_clock", "classutl_1_1i2c__bb__i.html#aef4db6e89447b2f0921df5b291b86232", null ], + [ "_CRTP_IMPL", "classutl_1_1i2c__bb__i.html#a5c9f28c59f87ebb8a937abb039e11150", null ], + [ "_rx_data", "classutl_1_1i2c__bb__i.html#a3a459ded18fe55460ae438e312c22110", null ], + [ "_start", "classutl_1_1i2c__bb__i.html#a2f4df606609ef7465109990d9fc0f1da", null ], + [ "_stop", "classutl_1_1i2c__bb__i.html#ade9235a9d8ccfd7233494631d66ba07e", null ], + [ "_tx_data", "classutl_1_1i2c__bb__i.html#a085e38e545049ac64cd745b08e0be18f", null ], + [ "delay", "classutl_1_1i2c__bb__i.html#a18db1fab1be2aafbb2612242df2667f1", null ], + [ "SCL", "classutl_1_1i2c__bb__i.html#a0c9f7d9fc10ac2ceaef93cb6daf8a699", null ], + [ "SDA", "classutl_1_1i2c__bb__i.html#aa197be76016b82fd6f8b66875430d922", null ], + [ "i2c_i< i2c_bb_i< impl_t > >", "classutl_1_1i2c__bb__i.html#a9932eded730c8f9a7b1d15988082b699", null ], + [ "usec_", "classutl_1_1i2c__bb__i.html#a8bd3726104fc91eb8f283d7ffec71cee", null ] +]; \ No newline at end of file diff --git a/doc/html/classutl_1_1i2c__bb__i.png b/doc/html/classutl_1_1i2c__bb__i.png new file mode 100644 index 0000000000000000000000000000000000000000..7a6a8912a52d1099c77bcda633b5edf918e405d4 GIT binary patch literal 676 zcmeAS@N?(olHy`uVBq!ia0vp^yMQ==gBeK9= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0j6Gc(Ln;{G&b_#4k%54V|17Ql|0jQM z@-nh;D7YROT)rk#^u+{c;kNK)nX`_GOjhY#;WB+mhUzXA*X-`NX;J@IPbuB}HOHJk z=UanuSWtB7^x_TTe>+t@j~C_Y?NX6_ZS|}6o2BjKUDH?1pOYNDP0oII@^nt= zdCK*EqrLO`iTl>H6wmJ7Cwsg3-J$sl-j{VwfATN?)$OBcGx@Hs&VC*9I(zT#Yp*v4 zEs6U4e9z%GH>|ABL~T2KW2vfVSo{~Wy}y`tH0?{N7CJg_ZF0`-3)Rnls;>0DB(8Z; zRWqtn&-3Ch$N9@LrGgmdU*=8l>FuuD&3oET?-&2i6>pdqr?)e9gfC)t(Z0yIXzB}w zi(VxS8LCzeTZCj4qB{8m*1E8FgrP_?xG$Yzv`m9RSqrM;mD~S~YtQ{W|EGm{nOyao z#@@3t*S*^%@;Lg1f7O90-FyXW`WN0;^p(yP@cprQ?Y}q6_RU#ocr z-w(bS{fD3N*`7Hs`~C5Eg?ay`pMJBerTfKMp0B4j<`qayVaomaBKAZ6;_FZRFY>xI zZu@q@`oVqI`?+fI(|(otMtymmUAvZl{nuX}qAN`6@4Yj~zR7pF{f}t=<^8jN&0nCu zJz@5Y-NG5Ga$ls!F|58n&&pvB%y&Q626$;IzvAZ>Q+xQX#M~X2q!>J1{an^LB{Ts5 Dm9Iyq literal 0 HcmV?d00001 diff --git a/doc/html/classutl_1_1i2c__bb__i_3_01virtual__tag_01_4-members.html b/doc/html/classutl_1_1i2c__bb__i_3_01virtual__tag_01_4-members.html new file mode 100644 index 0000000..ed2b9a1 --- /dev/null +++ b/doc/html/classutl_1_1i2c__bb__i_3_01virtual__tag_01_4-members.html @@ -0,0 +1,132 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
utl::i2c_bb_i< virtual_tag > Member List
+
+
+ +

This is the complete list of members for utl::i2c_bb_i< virtual_tag >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
_clock() const finalutl::i2c_bb_i< virtual_tag >inlineprivatevirtual
_clock(uint32_t c) finalutl::i2c_bb_i< virtual_tag >inlineprivatevirtual
_rx_data(bool ack, Sequence seq) finalutl::i2c_bb_i< virtual_tag >privatevirtual
_start() finalutl::i2c_bb_i< virtual_tag >privatevirtual
_stop() finalutl::i2c_bb_i< virtual_tag >privatevirtual
_tx_data(byte_t byte, Sequence seq) finalutl::i2c_bb_i< virtual_tag >privatevirtual
clock() constutl::i2c_i< virtual_tag >inline
clock(uint32_t c)utl::i2c_i< virtual_tag >inline
delay(uint32_t usec)=0utl::i2c_bb_i< virtual_tag >privatepure virtual
i2c_bb_i(uint32_t clk) noexceptutl::i2c_bb_i< virtual_tag >inlineprotected
i2c_i()=defaultutl::i2c_i< virtual_tag >protected
i2c_i(const type &)=deleteutl::i2c_i< virtual_tag >protected
operator=(const type &)=deleteutl::i2c_i< virtual_tag >protected
rx_data(bool ack, Sequence seq=Sequence::BYTEnACK)utl::i2c_i< virtual_tag >inline
SCL(bool st)=0utl::i2c_bb_i< virtual_tag >privatepure virtual
SDA(SDAMode mode, bool st)=0utl::i2c_bb_i< virtual_tag >privatepure virtual
SDAMode enum nameutl::i2c_bb_i< virtual_tag >
Sequence typedefutl::i2c_bb_i< virtual_tag >
start()utl::i2c_i< virtual_tag >inline
stop()utl::i2c_i< virtual_tag >inline
tx_data(byte_t byte, Sequence seq=Sequence::BYTEnACK)utl::i2c_i< virtual_tag >inline
type typedefutl::i2c_bb_i< virtual_tag >
usec_utl::i2c_bb_i< virtual_tag >private
~i2c_bb_i() noexcept=defaultutl::i2c_bb_i< virtual_tag >protectedvirtual
~i2c_i()=defaultutl::i2c_i< virtual_tag >virtual
+
+ + + + diff --git a/doc/html/classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html b/doc/html/classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html new file mode 100644 index 0000000..fc30995 --- /dev/null +++ b/doc/html/classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html @@ -0,0 +1,732 @@ + + + + + + + +uTL: utl::i2c_bb_i< virtual_tag > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
utl::i2c_bb_i< virtual_tag > Class Template Referenceabstract
+
+
+ +

A virtual base class interface specialization. Using the private virtual interface we provide the interface from i2c_i<virtual_tag> + More...

+ +

#include <i2c_bb.h>

+
+Inheritance diagram for utl::i2c_bb_i< virtual_tag >:
+
+
+ + +utl::i2c_i< virtual_tag > + +
+ + + + + + + + + + + + + + + + + +

+Public Types

enum  SDAMode { SDAMode::INPUT =0, +SDAMode::OUTPUT + }
 SDA pin direction enumerator. More...
 
using type = i2c_bb_i< virtual_tag >
 Export type as identity meta-function. More...
 
using Sequence = typename i2c_i< virtual_tag >::Sequence
 
- Public Types inherited from utl::i2c_i< virtual_tag >
enum  Sequence { Sequence::BYTE =0, +Sequence::ACK, +Sequence::BYTEnACK + }
 I2C transmit/receive sequence. More...
 
using type = i2c_i< virtual_tag >
 Export type as identity meta-function. More...
 
+ + + + + + + + + + + + + + + + + +

+Protected Member Functions

Object lifetime
 i2c_bb_i (uint32_t clk) noexcept
 Constructor. More...
 
virtual ~i2c_bb_i () noexcept=default
 Virtual destructor. More...
 
- Protected Member Functions inherited from utl::i2c_i< virtual_tag >
 i2c_i ()=default
 Allow constructor from derived only. More...
 
 i2c_i (const type &)=delete
 No copies. More...
 
typeoperator= (const type &)=delete
 
+ + + + + + + + + +

+Private Member Functions

Implementation requirements
virtual bool SDA (SDAMode mode, bool st)=0
 
virtual void SCL (bool st)=0
 Implementers's scl pin function. More...
 
virtual void delay (uint32_t usec)=0
 
+ + + + + + + + + + + + + + + + + + + + + +

+Implementation of base requirements

uint32_t usec_
 half period of I2C bus More...
 
uint32_t _clock () const final
 
void _clock (uint32_t c) final
 set clock frequency of the bus [Hz] More...
 
void _start () final
 Send a START bit to the bus. More...
 
void _stop () final
 Send a START bit to the bus. More...
 
byte_t _rx_data (bool ack, Sequence seq) final
 Receive a byte from the i2c bus. More...
 
bool _tx_data (byte_t byte, Sequence seq) final
 Transmit a byte to the i2c bus. More...
 
+ + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Member Functions inherited from utl::i2c_i< virtual_tag >
uint32_t clock () const
 
void clock (uint32_t c)
 set clock frequency of the bus [Hz] More...
 
void start ()
 
void stop ()
 
byte_t rx_data (bool ack, Sequence seq=Sequence::BYTEnACK)
 Receive a byte from the i2c bus. More...
 
bool tx_data (byte_t byte, Sequence seq=Sequence::BYTEnACK)
 Transmit a byte to the i2c bus. More...
 
virtual ~i2c_i ()=default
 
+

Detailed Description

+

template<>
+class utl::i2c_bb_i< virtual_tag >

+ +

A virtual base class interface specialization. Using the private virtual interface we provide the interface from i2c_i<virtual_tag>

+
Parameters
+ + +
impl_t= virtual_tag
+
+
+ +

Definition at line 234 of file i2c_bb.h.

+

Member Typedef Documentation

+ +

◆ Sequence

+ +
+
+ + + + +
using utl::i2c_bb_i< virtual_tag >::Sequence = typename i2c_i<virtual_tag>::Sequence
+
+ +

Definition at line 237 of file i2c_bb.h.

+ +
+
+ +

◆ type

+ +
+
+ +

Export type as identity meta-function.

+ +

Definition at line 236 of file i2c_bb.h.

+ +
+
+

Member Enumeration Documentation

+ +

◆ SDAMode

+ +
+
+ + + + + +
+ + + + +
enum utl::i2c_bb_i< virtual_tag >::SDAMode
+
+strong
+
+ +

SDA pin direction enumerator.

+ + + +
Enumerator
INPUT 
OUTPUT 
+ +

Definition at line 239 of file i2c_bb.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ i2c_bb_i()

+ +
+
+ + + + + +
+ + + + + + + + +
utl::i2c_bb_i< virtual_tag >::i2c_bb_i (uint32_t clk)
+
+inlineprotectednoexcept
+
+ +

Constructor.

+ +

Definition at line 250 of file i2c_bb.h.

+ +
+
+ +

◆ ~i2c_bb_i()

+ +
+
+ + + + + +
+ + + + + + + +
virtual utl::i2c_bb_i< virtual_tag >::~i2c_bb_i ()
+
+protectedvirtualdefaultnoexcept
+
+ +

Virtual destructor.

+ +
+
+

Member Function Documentation

+ +

◆ _clock() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
uint32_t utl::i2c_bb_i< virtual_tag >::_clock () const
+
+inlinefinalprivatevirtual
+
+
Returns
clock frequency of the bus [Hz]
+ +

Implements utl::i2c_i< virtual_tag >.

+ +

Definition at line 276 of file i2c_bb.h.

+ +
+
+ +

◆ _clock() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void utl::i2c_bb_i< virtual_tag >::_clock (uint32_t )
+
+inlinefinalprivatevirtual
+
+ +

set clock frequency of the bus [Hz]

+ +

Implements utl::i2c_i< virtual_tag >.

+ +

Definition at line 277 of file i2c_bb.h.

+ +
+
+ +

◆ _rx_data()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
byte_t utl::i2c_bb_i< virtual_tag >::_rx_data (bool ack,
Sequence seq 
)
+
+finalprivatevirtual
+
+ +

Receive a byte from the i2c bus.

+
Parameters
+ + + +
ackOptional ack bit.
    +
  • 1 ACK the reception
  • +
  • 0 Don't ACK the reception.
  • +
+
seqThe operation sequence to execute
    +
  • Sequence::BYTE Receive only the byte, do not send ack clock
  • +
  • Sequence::ACK Send only the ack bit
  • +
  • Sequence::BYTEnACK Receive the byte and send the ack bit
  • +
+
+
+
+
Returns
The byte received.
+ +

Implements utl::i2c_i< virtual_tag >.

+ +

Definition at line 330 of file i2c_bb.h.

+ +
+
+ +

◆ _start()

+ +
+
+ + + + + +
+ + + + + + + + +
void utl::i2c_bb_i< virtual_tag >::_start (void )
+
+finalprivatevirtual
+
+ +

Send a START bit to the bus.

+
Returns
none
+ +

Implements utl::i2c_i< virtual_tag >.

+ +

Definition at line 293 of file i2c_bb.h.

+ +
+
+ +

◆ _stop()

+ +
+
+ + + + + +
+ + + + + + + + +
void utl::i2c_bb_i< virtual_tag >::_stop (void )
+
+finalprivatevirtual
+
+ +

Send a START bit to the bus.

+
Returns
none
+ +

Implements utl::i2c_i< virtual_tag >.

+ +

Definition at line 308 of file i2c_bb.h.

+ +
+
+ +

◆ _tx_data()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool utl::i2c_bb_i< virtual_tag >::_tx_data (byte_t byte,
Sequence seq 
)
+
+finalprivatevirtual
+
+ +

Transmit a byte to the i2c bus.

+
Parameters
+ + + +
byteThe byte to send.
seqThe operation sequence to execute
    +
  • Sequence::BYTE Transmit only the byte, do not read ack bit
  • +
  • Sequence::ACK Read only the ack bit
  • +
  • Sequence::BYTEnACK Transmit the byte and read the ack bit
  • +
+
+
+
+
Returns
Slave's ACK bit
    +
  • false Slave didn't ACK
  • +
  • true Slave did ACK
  • +
+
+ +

Implements utl::i2c_i< virtual_tag >.

+ +

Definition at line 369 of file i2c_bb.h.

+ +
+
+ +

◆ delay()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void utl::i2c_bb_i< virtual_tag >::delay (uint32_t usec)
+
+privatepure virtual
+
+

Implementers's usec delay function

+ +
+
+ +

◆ SCL()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void utl::i2c_bb_i< virtual_tag >::SCL (bool st)
+
+privatepure virtual
+
+ +

Implementers's scl pin function.

+ +
+
+ +

◆ SDA()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool utl::i2c_bb_i< virtual_tag >::SDA (SDAMode mode,
bool st 
)
+
+privatepure virtual
+
+

Implementers's sda pin function

Parameters
+ + +
stIn SDA_OUTPUT mode, selects the pin output state
+
+
+
Returns
In SDA_INPUT mode return the pin input state
+ +
+
+

Member Data Documentation

+ +

◆ usec_

+ +
+
+ + + + + +
+ + + + +
uint32_t utl::i2c_bb_i< virtual_tag >::usec_
+
+private
+
+ +

half period of I2C bus

+ +

Definition at line 284 of file i2c_bb.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/doc/html/classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.js b/doc/html/classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.js new file mode 100644 index 0000000..e1f8e04 --- /dev/null +++ b/doc/html/classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.js @@ -0,0 +1,21 @@ +var classutl_1_1i2c__bb__i_3_01virtual__tag_01_4 = +[ + [ "Sequence", "classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html#af8c7ac3797343e39e7e052ec51aec232", null ], + [ "type", "classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html#abedad1f30e2c695d47a84dc68ff05897", null ], + [ "SDAMode", "classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html#af4bc7eeeb830e49046a1033e9c79db7f", [ + [ "INPUT", "classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html#af4bc7eeeb830e49046a1033e9c79db7faa84cc046d48610b05c21fd3670d0c829", null ], + [ "OUTPUT", "classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html#af4bc7eeeb830e49046a1033e9c79db7fa50a87f0d71f7221582dad4bf507a0f34", null ] + ] ], + [ "i2c_bb_i", "classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html#a0c9341b2a60e9400523de0397c472a76", null ], + [ "~i2c_bb_i", "classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html#afcb5292af5af4c90f58945dab756b2ce", null ], + [ "_clock", "classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html#a0e05ef5f042a1642c9920dd5d7da34b4", null ], + [ "_clock", "classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html#a47e0f23aa64714a0a95c579994a84fcc", null ], + [ "_rx_data", "classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html#abb3eda6549482ff538f2b536d67752ed", null ], + [ "_start", "classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html#acf1d49b23e9c7b1c42cd43296b8b171c", null ], + [ "_stop", "classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html#acee317f97c201b10680c89ed1a64f694", null ], + [ "_tx_data", "classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html#abbc42b60004046048a2ac6fd312188a6", null ], + [ "delay", "classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html#a5fa294a275580260ae570e4309607b6e", null ], + [ "SCL", "classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html#aca7b42f6339cbfbba4734d29f585cf2b", null ], + [ "SDA", "classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html#ae28d0cd65c9b3eedc65d3f0a68e47585", null ], + [ "usec_", "classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html#aa3e73dad28462bf6d8c132ddfeb3a390", null ] +]; \ No newline at end of file diff --git a/doc/html/classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.png b/doc/html/classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.png new file mode 100644 index 0000000000000000000000000000000000000000..05092adbc5f7042056fbbbe177c779ad540640a2 GIT binary patch literal 702 zcmeAS@N?(olHy`uVBq!ia0vp^i-0(QgBeJ!EsL`TQW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;BU&LopfYKv4{O$AjoSJ@?1ZG9Z6DZ9R`MVcJh~W!TKPQ^PiH-*%C%$`b%v5pFSY^4e zPd^{*ovQs$T~ybzK5T#EkD^R#ok>@&S3dfy|L}eF$FkMVEK!qw&FYvWa@A$Zk`?nh zPH)n2=6%UH6@1- zVL^peog4yJU06D@kfi@k@6cRovdx1*8K!BK;QV~|(~g5Xf=|?KJQveGHM)A~p6!QUrEQy`)xBo@&6?jFYXm%Zq{(D{ zn`>{~|NNlYChMe)&+_&1jxIC5;%u^dn)hvIyTa<^KOc_WlVUraw;mXB`GU2HGf#wV ziOyKP_igPufp16k1$Q5FRU=j5oeE)e*0d?rDo@rf45Dn8Q+!6yYa`L=h@M3VeZ@}4ohJkx2+HM%1o(c Z+`dk!V#iC)Twr2j@O1TaS?83{1OWB-Jlp^P literal 0 HcmV?d00001 diff --git a/doc/html/classutl_1_1i2c__i-members.html b/doc/html/classutl_1_1i2c__i-members.html new file mode 100644 index 0000000..cf3051a --- /dev/null +++ b/doc/html/classutl_1_1i2c__i-members.html @@ -0,0 +1,126 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
utl::i2c_i< impl_t > Member List
+
+
+ +

This is the complete list of members for utl::i2c_i< impl_t >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + +
_clock() constutl::i2c_i< impl_t >inlineprivate
_clock(uint32_t c)utl::i2c_i< impl_t >inlineprivate
_CRTP_IMPL(impl_t)utl::i2c_i< impl_t >private
_rx_data(bool ack, Sequence seq)utl::i2c_i< impl_t >inlineprivate
_start()utl::i2c_i< impl_t >inlineprivate
_stop()utl::i2c_i< impl_t >inlineprivate
_tx_data(byte_t byte, Sequence seq)utl::i2c_i< impl_t >inlineprivate
clock() constutl::i2c_i< impl_t >inline
clock(uint32_t f)utl::i2c_i< impl_t >inline
i2c_i()=defaultutl::i2c_i< impl_t >protected
i2c_i(const type &)=deleteutl::i2c_i< impl_t >protected
operator=(const type &)=deleteutl::i2c_i< impl_t >protected
rx_data(bool ack, Sequence seq=Sequence::BYTEnACK)utl::i2c_i< impl_t >inline
Sequence enum nameutl::i2c_i< impl_t >
start()utl::i2c_i< impl_t >inline
stop()utl::i2c_i< impl_t >inline
tx_data(byte_t byte, Sequence seq=Sequence::BYTEnACK)utl::i2c_i< impl_t >inline
type typedefutl::i2c_i< impl_t >
~i2c_i()=defaultutl::i2c_i< impl_t >protected
+
+ + + + diff --git a/doc/html/classutl_1_1i2c__i.html b/doc/html/classutl_1_1i2c__i.html new file mode 100644 index 0000000..5fea2e8 --- /dev/null +++ b/doc/html/classutl_1_1i2c__i.html @@ -0,0 +1,853 @@ + + + + + + + +uTL: utl::i2c_i< impl_t > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
utl::i2c_i< impl_t > Class Template Reference
+
+
+ +

Abstract base class for i2c bus. + More...

+ +

#include <i2c.h>

+ + + + + + + +

+Public Types

enum  Sequence { Sequence::BYTE =0, +Sequence::ACK, +Sequence::BYTEnACK + }
 I2C transmit/receive sequence. More...
 
using type = i2c_i< impl_t >
 
+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Get/Set functions
uint32_t clock () const
 
void clock (uint32_t f)
 set clock frequency of the bus More...
 
User functions
void start ()
 Send start functionality. More...
 
void stop ()
 Send stop functionality. More...
 
byte_t rx_data (bool ack, Sequence seq=Sequence::BYTEnACK)
 Receive a byte from the i2c bus. More...
 
bool tx_data (byte_t byte, Sequence seq=Sequence::BYTEnACK)
 Transmit a byte to the i2c bus. More...
 
+ + + + + + + + + + + + + +

+Protected Member Functions

Object lifetime
 i2c_i ()=default
 Allow constructor from derived only. More...
 
 ~i2c_i ()=default
 Allow destructor from derived only. More...
 
 i2c_i (const type &)=delete
 No copies. More...
 
typeoperator= (const type &)=delete
 
+ + + + + + + + + + + + + + + + + + + + + +

+Private Member Functions

 _CRTP_IMPL (impl_t)
 
Implementation requirements
Note
In order for the implementation to have the following as private members it also need to declare this class as friend
+
uint32_t _clock () const
 clock frequency of the bus [Hz] More...
 
void _clock (uint32_t c)
 set clock frequency of the bus [Hz] More...
 
void _start ()
 Send start functionality. More...
 
void _stop ()
 Send stop functionality. More...
 
byte_t _rx_data (bool ack, Sequence seq)
 
bool _tx_data (byte_t byte, Sequence seq)
 
+

Detailed Description

+

template<typename impl_t>
+class utl::i2c_i< impl_t >

+ +

Abstract base class for i2c bus.

+

this class force a common interface for I2C communication protocol implementations using CRTP

Parameters
+ + +
impl_tThe CRTP type (the derived/implementation class typename).
+
+
+ +

Definition at line 43 of file i2c.h.

+

Member Typedef Documentation

+ +

◆ type

+ +
+
+
+template<typename impl_t>
+ + + + +
using utl::i2c_i< impl_t >::type = i2c_i<impl_t>
+
+

Export type as identity meta-function

+ +

Definition at line 47 of file i2c.h.

+ +
+
+

Member Enumeration Documentation

+ +

◆ Sequence

+ +
+
+
+template<typename impl_t>
+ + + + + +
+ + + + +
enum utl::i2c_i::Sequence
+
+strong
+
+ +

I2C transmit/receive sequence.

+ + + + +
Enumerator
BYTE 

Only read/write byte [8 clocks].

+
ACK 

Only send/receive ack [1 clock].

+
BYTEnACK 

Read/Write byte and ack [9 clocks].

+
+ +

Definition at line 49 of file i2c.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ i2c_i() [1/2]

+ +
+
+
+template<typename impl_t>
+ + + + + +
+ + + + + + + +
utl::i2c_i< impl_t >::i2c_i ()
+
+protecteddefault
+
+ +

Allow constructor from derived only.

+ +
+
+ +

◆ ~i2c_i()

+ +
+
+
+template<typename impl_t>
+ + + + + +
+ + + + + + + +
utl::i2c_i< impl_t >::~i2c_i ()
+
+protecteddefault
+
+ +

Allow destructor from derived only.

+ +
+
+ +

◆ i2c_i() [2/2]

+ +
+
+
+template<typename impl_t>
+ + + + + +
+ + + + + + + + +
utl::i2c_i< impl_t >::i2c_i (const type)
+
+protecteddelete
+
+ +

No copies.

+ +
+
+

Member Function Documentation

+ +

◆ _clock() [1/2]

+ +
+
+
+template<typename impl_t>
+ + + + + +
+ + + + + + + +
uint32_t utl::i2c_i< impl_t >::_clock () const
+
+inlineprivate
+
+ +

clock frequency of the bus [Hz]

+ +

Definition at line 74 of file i2c.h.

+ +
+
+ +

◆ _clock() [2/2]

+ +
+
+
+template<typename impl_t>
+ + + + + +
+ + + + + + + + +
void utl::i2c_i< impl_t >::_clock (uint32_t c)
+
+inlineprivate
+
+ +

set clock frequency of the bus [Hz]

+ +

Definition at line 75 of file i2c.h.

+ +
+
+ +

◆ _CRTP_IMPL()

+ +
+
+
+template<typename impl_t>
+ + + + + +
+ + + + + + + + +
utl::i2c_i< impl_t >::_CRTP_IMPL (impl_t )
+
+private
+
+ +
+
+ +

◆ _rx_data()

+ +
+
+
+template<typename impl_t>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
byte_t utl::i2c_i< impl_t >::_rx_data (bool ack,
Sequence seq 
)
+
+inlineprivate
+
+ +

Definition at line 78 of file i2c.h.

+ +
+
+ +

◆ _start()

+ +
+
+
+template<typename impl_t>
+ + + + + +
+ + + + + + + +
void utl::i2c_i< impl_t >::_start ()
+
+inlineprivate
+
+ +

Send start functionality.

+ +

Definition at line 76 of file i2c.h.

+ +
+
+ +

◆ _stop()

+ +
+
+
+template<typename impl_t>
+ + + + + +
+ + + + + + + +
void utl::i2c_i< impl_t >::_stop ()
+
+inlineprivate
+
+ +

Send stop functionality.

+ +

Definition at line 77 of file i2c.h.

+ +
+
+ +

◆ _tx_data()

+ +
+
+
+template<typename impl_t>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool utl::i2c_i< impl_t >::_tx_data (byte_t byte,
Sequence seq 
)
+
+inlineprivate
+
+ +

Definition at line 79 of file i2c.h.

+ +
+
+ +

◆ clock() [1/2]

+ +
+
+
+template<typename impl_t>
+ + + + + +
+ + + + + + + +
uint32_t utl::i2c_i< impl_t >::clock () const
+
+inline
+
+
Returns
clock frequency of the bus
+ +

Definition at line 87 of file i2c.h.

+ +
+
+ +

◆ clock() [2/2]

+ +
+
+
+template<typename impl_t>
+ + + + + +
+ + + + + + + + +
void utl::i2c_i< impl_t >::clock (uint32_t f)
+
+inline
+
+ +

set clock frequency of the bus

+ +

Definition at line 88 of file i2c.h.

+ +
+
+ +

◆ operator=()

+ +
+
+
+template<typename impl_t>
+ + + + + +
+ + + + + + + + +
type& utl::i2c_i< impl_t >::operator= (const type)
+
+protecteddelete
+
+ +
+
+ +

◆ rx_data()

+ +
+
+
+template<typename impl_t>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
byte_t utl::i2c_i< impl_t >::rx_data (bool ack,
Sequence seq = Sequence::BYTEnACK 
)
+
+inline
+
+ +

Receive a byte from the i2c bus.

+
Parameters
+ + + +
ackOptional ack bit.
    +
  • 1 ACK the reception
  • +
  • 0 Don't ACK the reception.
  • +
+
seqThe operation sequence to execute +
+
+
+
Returns
The byte received.
+ +

Definition at line 111 of file i2c.h.

+ +
+
+ +

◆ start()

+ +
+
+
+template<typename impl_t>
+ + + + + +
+ + + + + + + +
void utl::i2c_i< impl_t >::start ()
+
+inline
+
+ +

Send start functionality.

+ +

Definition at line 96 of file i2c.h.

+ +
+
+ +

◆ stop()

+ +
+
+
+template<typename impl_t>
+ + + + + +
+ + + + + + + +
void utl::i2c_i< impl_t >::stop ()
+
+inline
+
+ +

Send stop functionality.

+ +

Definition at line 97 of file i2c.h.

+ +
+
+ +

◆ tx_data()

+ +
+
+
+template<typename impl_t>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool utl::i2c_i< impl_t >::tx_data (byte_t byte,
Sequence seq = Sequence::BYTEnACK 
)
+
+inline
+
+ +

Transmit a byte to the i2c bus.

+
Parameters
+ + + +
byteThe byte to send.
seqThe operation sequence to execute +
+
+
+
Returns
Slave's ACK bit
    +
  • false Slave didn't ACK
  • +
  • true Slave did ACK
  • +
+
+ +

Definition at line 127 of file i2c.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • include/utl/com/i2c.h
  • +
+
+
+ + + + diff --git a/doc/html/classutl_1_1i2c__i.js b/doc/html/classutl_1_1i2c__i.js new file mode 100644 index 0000000..bfb200c --- /dev/null +++ b/doc/html/classutl_1_1i2c__i.js @@ -0,0 +1,26 @@ +var classutl_1_1i2c__i = +[ + [ "type", "classutl_1_1i2c__i.html#aa9267a8602702b78f188e0cf61b68a55", null ], + [ "Sequence", "classutl_1_1i2c__i.html#a7e2dde443c6c9bde4a2293beb22950c5", [ + [ "BYTE", "classutl_1_1i2c__i.html#a7e2dde443c6c9bde4a2293beb22950c5ae409eb2ba6eb6801f52763ae370c350e", null ], + [ "ACK", "classutl_1_1i2c__i.html#a7e2dde443c6c9bde4a2293beb22950c5a0fc437bc317835cad5faafc12a83fad5", null ], + [ "BYTEnACK", "classutl_1_1i2c__i.html#a7e2dde443c6c9bde4a2293beb22950c5a01af7e5aa5863a91810dd4e5d0e383ce", null ] + ] ], + [ "i2c_i", "classutl_1_1i2c__i.html#a84375c05d1c40d9992aa1290dd488410", null ], + [ "~i2c_i", "classutl_1_1i2c__i.html#a6a07d19db8974ad606031b60a6079957", null ], + [ "i2c_i", "classutl_1_1i2c__i.html#adff01408628f58b7c6ce9b0cd63d70df", null ], + [ "_clock", "classutl_1_1i2c__i.html#aefdea61282b9282ae10384951bb4ea51", null ], + [ "_clock", "classutl_1_1i2c__i.html#afa0b1552f8fc7c971456fab1ad01242d", null ], + [ "_CRTP_IMPL", "classutl_1_1i2c__i.html#a054b6bc43f22e14d4e9feb0772f7ada5", null ], + [ "_rx_data", "classutl_1_1i2c__i.html#a03a25367cdec7ceb76f8de9d5b3145fb", null ], + [ "_start", "classutl_1_1i2c__i.html#af060d656c685c1ab5dd6981c5c88b26d", null ], + [ "_stop", "classutl_1_1i2c__i.html#aa6202c6c7c1282071ae962fa6bb0f195", null ], + [ "_tx_data", "classutl_1_1i2c__i.html#ae2b164d2c085d5331b627ba711bbb2c9", null ], + [ "clock", "classutl_1_1i2c__i.html#aac5fed816701cc4543acd717ec804ac0", null ], + [ "clock", "classutl_1_1i2c__i.html#ae4c59938aeeb1f0726195d425a4c0083", null ], + [ "operator=", "classutl_1_1i2c__i.html#aee83d11e02c3a0639dd3ed1ea440ed24", null ], + [ "rx_data", "classutl_1_1i2c__i.html#ab2f6a579096b4872f5dfd1530e200eda", null ], + [ "start", "classutl_1_1i2c__i.html#a3591683e5fbf17b582f6ac1f79af871d", null ], + [ "stop", "classutl_1_1i2c__i.html#a1310b52ac908b8c37059fb253cc3f56e", null ], + [ "tx_data", "classutl_1_1i2c__i.html#aaf0b0ceec57fd8014ea3e6b58e9bfe3d", null ] +]; \ No newline at end of file diff --git a/doc/html/classutl_1_1i2c__i.png b/doc/html/classutl_1_1i2c__i.png new file mode 100644 index 0000000000000000000000000000000000000000..58208fe621d5959e97a3bda6c4b4c4d02fa7a64e GIT binary patch literal 594 zcmeAS@N?(olHy`uVBq!ia0vp^?LZvB!3-o>n5L}uK=a5Wc;qFRDvEUomgT^4U^S4_{2=DV`zp)7Jjh*{?GCuNS{4slDRl9bo!j zlW)#+rTRFtXZ62-e|fOs{^J>EZ$>|;csKt$^MiC{3x>rH7|bmH@r% zVZ_Df>89&GEA*Dv%9vX+pC4PB>(z!of2Q3h>N+WSy7Q#C;}XY>9&f36?tXrn=GuQb zzYP0RgkJBE?U&|LwUqQeQzW;2Zh8Nct;sw0ugN-FpJZlJ%Qrc0|E;rG5B}`%-1Mq= zhWa;)RqDHC&b?KM%qp$ z`n$)OxLc$Z-`ZMYttxp_{CL>A_%F_r?ui~$JgH%!B6-)c=-kiGA6bv&$}Fszmpv1h P02n-7{an^LB{Ts5I*SiX literal 0 HcmV?d00001 diff --git a/doc/html/classutl_1_1i2c__i_3_01virtual__tag_01_4-members.html b/doc/html/classutl_1_1i2c__i_3_01virtual__tag_01_4-members.html new file mode 100644 index 0000000..d2b25a6 --- /dev/null +++ b/doc/html/classutl_1_1i2c__i_3_01virtual__tag_01_4-members.html @@ -0,0 +1,125 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
utl::i2c_i< virtual_tag > Member List
+
+
+ +

This is the complete list of members for utl::i2c_i< virtual_tag >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
_clock() const =0utl::i2c_i< virtual_tag >privatepure virtual
_clock(uint32_t)=0utl::i2c_i< virtual_tag >privatepure virtual
_rx_data(bool ack, Sequence seq)=0utl::i2c_i< virtual_tag >privatepure virtual
_start()=0utl::i2c_i< virtual_tag >privatepure virtual
_stop()=0utl::i2c_i< virtual_tag >privatepure virtual
_tx_data(byte_t byte, Sequence seq)=0utl::i2c_i< virtual_tag >privatepure virtual
clock() constutl::i2c_i< virtual_tag >inline
clock(uint32_t c)utl::i2c_i< virtual_tag >inline
i2c_i()=defaultutl::i2c_i< virtual_tag >protected
i2c_i(const type &)=deleteutl::i2c_i< virtual_tag >protected
operator=(const type &)=deleteutl::i2c_i< virtual_tag >protected
rx_data(bool ack, Sequence seq=Sequence::BYTEnACK)utl::i2c_i< virtual_tag >inline
Sequence enum nameutl::i2c_i< virtual_tag >
start()utl::i2c_i< virtual_tag >inline
stop()utl::i2c_i< virtual_tag >inline
tx_data(byte_t byte, Sequence seq=Sequence::BYTEnACK)utl::i2c_i< virtual_tag >inline
type typedefutl::i2c_i< virtual_tag >
~i2c_i()=defaultutl::i2c_i< virtual_tag >virtual
+
+ + + + diff --git a/doc/html/classutl_1_1i2c__i_3_01virtual__tag_01_4.html b/doc/html/classutl_1_1i2c__i_3_01virtual__tag_01_4.html new file mode 100644 index 0000000..131dce6 --- /dev/null +++ b/doc/html/classutl_1_1i2c__i_3_01virtual__tag_01_4.html @@ -0,0 +1,788 @@ + + + + + + + +uTL: utl::i2c_i< virtual_tag > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
utl::i2c_i< virtual_tag > Class Template Referenceabstract
+
+
+ +

A virtual base class specialization. + More...

+ +

#include <i2c.h>

+
+Inheritance diagram for utl::i2c_i< virtual_tag >:
+
+
+ + +utl::i2c_bb_i< virtual_tag > + +
+ + + + + + + + +

+Public Types

enum  Sequence { Sequence::BYTE =0, +Sequence::ACK, +Sequence::BYTEnACK + }
 I2C transmit/receive sequence. More...
 
using type = i2c_i< virtual_tag >
 Export type as identity meta-function. More...
 
+ + + + + + + + + + + + + + + + + + +

+Public Member Functions

Get/Set functions
uint32_t clock () const
 
void clock (uint32_t c)
 set clock frequency of the bus [Hz] More...
 
User functions
void start ()
 
void stop ()
 
byte_t rx_data (bool ack, Sequence seq=Sequence::BYTEnACK)
 Receive a byte from the i2c bus. More...
 
bool tx_data (byte_t byte, Sequence seq=Sequence::BYTEnACK)
 Transmit a byte to the i2c bus. More...
 
+ + + + + + + + + + + + + + + + + + +

+Private Member Functions

Implementation requirements
virtual uint32_t _clock () const =0
 
virtual void _clock (uint32_t)=0
 set clock frequency of the bus [Hz] More...
 
virtual void _start ()=0
 Send start functionality. More...
 
virtual void _stop ()=0
 Send stop functionality. More...
 
virtual byte_t _rx_data (bool ack, Sequence seq)=0
 Receive a byte from the i2c bus. More...
 
virtual bool _tx_data (byte_t byte, Sequence seq)=0
 
+ + + + + + + + + + + +

+Object lifetime

 i2c_i ()=default
 Allow constructor from derived only. More...
 
 i2c_i (const type &)=delete
 No copies. More...
 
typeoperator= (const type &)=delete
 
virtual ~i2c_i ()=default
 
+

Detailed Description

+

template<>
+class utl::i2c_i< virtual_tag >

+ +

A virtual base class specialization.

+
Parameters
+ + +
impl_t= virtual_tag
+
+
+ +

Definition at line 140 of file i2c.h.

+

Member Typedef Documentation

+ +

◆ type

+ +
+
+ + + + +
using utl::i2c_i< virtual_tag >::type = i2c_i <virtual_tag>
+
+ +

Export type as identity meta-function.

+ +

Definition at line 142 of file i2c.h.

+ +
+
+

Member Enumeration Documentation

+ +

◆ Sequence

+ +
+
+ + + + + +
+ + + + +
enum utl::i2c_i< virtual_tag >::Sequence
+
+strong
+
+ +

I2C transmit/receive sequence.

+ + + + +
Enumerator
BYTE 

Only read/write byte [8 clocks].

+
ACK 

Only send/receive ack [1 clock].

+
BYTEnACK 

Read/Write byte and ack [9 clocks].

+
+ +

Definition at line 145 of file i2c.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ i2c_i() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
utl::i2c_i< virtual_tag >::i2c_i ()
+
+protecteddefault
+
+ +

Allow constructor from derived only.

+ +
+
+ +

◆ i2c_i() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
utl::i2c_i< virtual_tag >::i2c_i (const type)
+
+protecteddelete
+
+ +

No copies.

+ +
+
+ +

◆ ~i2c_i()

+ +
+
+ + + + + +
+ + + + + + + +
virtual utl::i2c_i< virtual_tag >::~i2c_i ()
+
+virtualdefault
+
+

Virtual default destructor

+ +
+
+

Member Function Documentation

+ +

◆ _clock() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
virtual uint32_t utl::i2c_i< virtual_tag >::_clock () const
+
+privatepure virtual
+
+
Returns
clock frequency of the bus [Hz]
+ +

Implemented in utl::i2c_bb_i< virtual_tag >.

+ +
+
+ +

◆ _clock() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void utl::i2c_i< virtual_tag >::_clock (uint32_t )
+
+privatepure virtual
+
+ +

set clock frequency of the bus [Hz]

+ +

Implemented in utl::i2c_bb_i< virtual_tag >.

+ +
+
+ +

◆ _rx_data()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual byte_t utl::i2c_i< virtual_tag >::_rx_data (bool ack,
Sequence seq 
)
+
+privatepure virtual
+
+ +

Receive a byte from the i2c bus.

+ +

Implemented in utl::i2c_bb_i< virtual_tag >.

+ +
+
+ +

◆ _start()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void utl::i2c_i< virtual_tag >::_start ()
+
+privatepure virtual
+
+ +

Send start functionality.

+ +

Implemented in utl::i2c_bb_i< virtual_tag >.

+ +
+
+ +

◆ _stop()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void utl::i2c_i< virtual_tag >::_stop ()
+
+privatepure virtual
+
+ +

Send stop functionality.

+ +

Implemented in utl::i2c_bb_i< virtual_tag >.

+ +
+
+ +

◆ _tx_data()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual bool utl::i2c_i< virtual_tag >::_tx_data (byte_t byte,
Sequence seq 
)
+
+privatepure virtual
+
+

Transmit a byte to the i2c bus.

+ +

Implemented in utl::i2c_bb_i< virtual_tag >.

+ +
+
+ +

◆ clock() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
uint32_t utl::i2c_i< virtual_tag >::clock () const
+
+inline
+
+
Returns
clock frequency of the bus [Hz]
+ +

Definition at line 180 of file i2c.h.

+ +
+
+ +

◆ clock() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void utl::i2c_i< virtual_tag >::clock (uint32_t c)
+
+inline
+
+ +

set clock frequency of the bus [Hz]

+ +

Definition at line 181 of file i2c.h.

+ +
+
+ +

◆ operator=()

+ +
+
+ + + + + +
+ + + + + + + + +
type& utl::i2c_i< virtual_tag >::operator= (const type)
+
+protecteddelete
+
+ +
+
+ +

◆ rx_data()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
byte_t utl::i2c_i< virtual_tag >::rx_data (bool ack,
Sequence seq = Sequence::BYTEnACK 
)
+
+inline
+
+ +

Receive a byte from the i2c bus.

+
Parameters
+ + + +
ackOptional ack bit.
    +
  • 1 ACK the reception
  • +
  • 0 Don't ACK the reception.
  • +
+
seqThe operation sequence to execute
    +
  • Sequence::BYTE Receive only the byte, do not send ack clock
  • +
  • Sequence::ACK Send only the ack bit
  • +
  • Sequence::BYTEnACK Receive the byte and send the ack bit
  • +
+
+
+
+
Returns
The byte received.
+ +

Definition at line 203 of file i2c.h.

+ +
+
+ +

◆ start()

+ +
+
+ + + + + +
+ + + + + + + +
void utl::i2c_i< virtual_tag >::start ()
+
+inline
+
+ +

Definition at line 189 of file i2c.h.

+ +
+
+ +

◆ stop()

+ +
+
+ + + + + +
+ + + + + + + +
void utl::i2c_i< virtual_tag >::stop ()
+
+inline
+
+ +

Definition at line 190 of file i2c.h.

+ +
+
+ +

◆ tx_data()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool utl::i2c_i< virtual_tag >::tx_data (byte_t byte,
Sequence seq = Sequence::BYTEnACK 
)
+
+inline
+
+ +

Transmit a byte to the i2c bus.

+
Parameters
+ + + +
byteThe byte to send.
seqThe operation sequence to execute
    +
  • Sequence::BYTE Transmit only the byte, do not read ack bit
  • +
  • Sequence::ACK Read only the ack bit
  • +
  • Sequence::BYTEnACK Transmit the byte and read the ack bit
  • +
+
+
+
+
Returns
Slave's ACK bit
    +
  • false Slave didn't ACK
  • +
  • true Slave did ACK
  • +
+
+ +

Definition at line 218 of file i2c.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • include/utl/com/i2c.h
  • +
+
+
+ + + + diff --git a/doc/html/classutl_1_1i2c__i_3_01virtual__tag_01_4.js b/doc/html/classutl_1_1i2c__i_3_01virtual__tag_01_4.js new file mode 100644 index 0000000..ee66f32 --- /dev/null +++ b/doc/html/classutl_1_1i2c__i_3_01virtual__tag_01_4.js @@ -0,0 +1,25 @@ +var classutl_1_1i2c__i_3_01virtual__tag_01_4 = +[ + [ "type", "classutl_1_1i2c__i_3_01virtual__tag_01_4.html#ac892faacc1566f4ca1438e3df765bcac", null ], + [ "Sequence", "classutl_1_1i2c__i_3_01virtual__tag_01_4.html#a260541de452a9a653162b8b109b26c09", [ + [ "BYTE", "classutl_1_1i2c__i_3_01virtual__tag_01_4.html#a260541de452a9a653162b8b109b26c09ae409eb2ba6eb6801f52763ae370c350e", null ], + [ "ACK", "classutl_1_1i2c__i_3_01virtual__tag_01_4.html#a260541de452a9a653162b8b109b26c09a0fc437bc317835cad5faafc12a83fad5", null ], + [ "BYTEnACK", "classutl_1_1i2c__i_3_01virtual__tag_01_4.html#a260541de452a9a653162b8b109b26c09a01af7e5aa5863a91810dd4e5d0e383ce", null ] + ] ], + [ "i2c_i", "classutl_1_1i2c__i_3_01virtual__tag_01_4.html#a31335550747f46adabf153e9ad206882", null ], + [ "i2c_i", "classutl_1_1i2c__i_3_01virtual__tag_01_4.html#a5f530866d47aa343b4372da308f482dc", null ], + [ "~i2c_i", "classutl_1_1i2c__i_3_01virtual__tag_01_4.html#a9190c053fb15634b5aab672f17d9544f", null ], + [ "_clock", "classutl_1_1i2c__i_3_01virtual__tag_01_4.html#a1330a9b26f8e0610c7453e367d054916", null ], + [ "_clock", "classutl_1_1i2c__i_3_01virtual__tag_01_4.html#aa97b4559550430d59b33474fd504f2b8", null ], + [ "_rx_data", "classutl_1_1i2c__i_3_01virtual__tag_01_4.html#a36b41f12c6dcc618ca1a95d079fcc077", null ], + [ "_start", "classutl_1_1i2c__i_3_01virtual__tag_01_4.html#adbe5ffa6865fbee06699674d8e16bc30", null ], + [ "_stop", "classutl_1_1i2c__i_3_01virtual__tag_01_4.html#a588fd9b206af6b3884b957ef449a65ec", null ], + [ "_tx_data", "classutl_1_1i2c__i_3_01virtual__tag_01_4.html#ad180436ec10c84568d6d73fa945efb64", null ], + [ "clock", "classutl_1_1i2c__i_3_01virtual__tag_01_4.html#a7b905fe7f0878a83d1c08a3fb95ac093", null ], + [ "clock", "classutl_1_1i2c__i_3_01virtual__tag_01_4.html#a7a267d84ea677bc2d11b25dc828f67a7", null ], + [ "operator=", "classutl_1_1i2c__i_3_01virtual__tag_01_4.html#a931323b813a653057e039416e0fd5b99", null ], + [ "rx_data", "classutl_1_1i2c__i_3_01virtual__tag_01_4.html#a6dccb32f00830226f6782034177c7d8b", null ], + [ "start", "classutl_1_1i2c__i_3_01virtual__tag_01_4.html#ad7e9c66a85ab55f80bb0977208517603", null ], + [ "stop", "classutl_1_1i2c__i_3_01virtual__tag_01_4.html#a86b0da49baf7d149ce5e316db186d65c", null ], + [ "tx_data", "classutl_1_1i2c__i_3_01virtual__tag_01_4.html#a5e60b4bda2d7203aa8f2df35aa6dfa5d", null ] +]; \ No newline at end of file diff --git a/doc/html/classutl_1_1i2c__i_3_01virtual__tag_01_4.png b/doc/html/classutl_1_1i2c__i_3_01virtual__tag_01_4.png new file mode 100644 index 0000000000000000000000000000000000000000..dc53442711ff510e29ea17f4e7dcc79c0896e58e GIT binary patch literal 700 zcmeAS@N?(olHy`uVBq!ia0vp^i-0(QgBeJ!EsL`TQW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;ClBU?f+C;1dfR@CZzbfFsxToY6!1A^8ClYtd}}VS!Y~}+ubX7 z?^&b&pCaDE#VkA4&3BGTJo8-sp*UsHo z=zV0*g?m07mzLDlPX5ZX(cz@H^;MzgXHVxbU!1hBaZle2+sv@pjY^wD-%8zjm2-Q> z$)9ZJU5_Zq?v8t-w2%MG_B|0PLChOxce@(h@Y!uG9^AV$d)wqypL|`fckG_}rFO$T zFVX*VyV!ng|HXM^y7%ow#uu-5eE2i{!~eY%RaX?5crRRcVfm1y#8k2MPpUIVVhZD( z)$9juNXdWvC^4_F=7{>k7d`tK3d2kq;)MkdtnTD^a22ZFRFHActPX}aSWqBIzw%c) zCh>S})e(uubCtXB&`>DJtu;j(o_fj#qrs|8&lyGpRi ze));fCh4SYY58h-Hn2JAGSw&ZBS7ZoKT>Y|4{&*Z9brlff?05w0oPw@kNO zy}8XWnB(mdKI;Vst0K0uh5&!@I literal 0 HcmV?d00001 diff --git a/doc/html/classutl_1_1idx__dev-members.html b/doc/html/classutl_1_1idx__dev-members.html new file mode 100644 index 0000000..3656d39 --- /dev/null +++ b/doc/html/classutl_1_1idx__dev-members.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
utl::idx_dev< impl_t, data_t, idx_t, N > Member List
+
+
+ +

This is the complete list of members for utl::idx_dev< impl_t, data_t, idx_t, N >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_CRTP_IMPL(impl_t)utl::idx_dev< impl_t, data_t, idx_t, N >private
begin() noexceptutl::idx_dev< impl_t, data_t, idx_t, N >inline
begin() const noexceptutl::idx_dev< impl_t, data_t, idx_t, N >inline
cbegin() const noexceptutl::idx_dev< impl_t, data_t, idx_t, N >inline
cend() const noexceptutl::idx_dev< impl_t, data_t, idx_t, N >inline
const_iterator typedefutl::idx_dev< impl_t, data_t, idx_t, N >
cursor() constutl::idx_dev< impl_t, data_t, idx_t, N >inline
cursor(idx_t idx)utl::idx_dev< impl_t, data_t, idx_t, N >inline
cursor_() constutl::idx_dev< impl_t, data_t, idx_t, N >inlineprivate
cursor_(idx_t idx)utl::idx_dev< impl_t, data_t, idx_t, N >inlineprivate
data_type typedefutl::idx_dev< impl_t, data_t, idx_t, N >
end() noexceptutl::idx_dev< impl_t, data_t, idx_t, N >inline
end() const noexceptutl::idx_dev< impl_t, data_t, idx_t, N >inline
get(data_t &data, idx_t cursor)utl::idx_dev< impl_t, data_t, idx_t, N >inline
get(data_t *data, size_t n, idx_t cursor)utl::idx_dev< impl_t, data_t, idx_t, N >inline
get_(data_t &data, idx_t idx)utl::idx_dev< impl_t, data_t, idx_t, N >inlineprivate
get_(data_t *data, size_t n, idx_t idx)utl::idx_dev< impl_t, data_t, idx_t, N >inlineprivate
idx_dev()=defaultutl::idx_dev< impl_t, data_t, idx_t, N >protected
idx_dev(const idx_dev_t &)=deleteutl::idx_dev< impl_t, data_t, idx_t, N >protected
idx_dev_t typedefutl::idx_dev< impl_t, data_t, idx_t, N >private
idx_type typedefutl::idx_dev< impl_t, data_t, idx_t, N >
iterator typedefutl::idx_dev< impl_t, data_t, idx_t, N >
operator<<(_Src_t &src)utl::idx_dev< impl_t, data_t, idx_t, N >inline
operator<<(_Src_t *src)=deleteutl::idx_dev< impl_t, data_t, idx_t, N >
operator<<(const data_t &src)utl::idx_dev< impl_t, data_t, idx_t, N >inline
operator=(const idx_dev_t &)=deleteutl::idx_dev< impl_t, data_t, idx_t, N >protected
operator>>(_Dst_t &dst)utl::idx_dev< impl_t, data_t, idx_t, N >inline
operator>>(_Dst_t *dst)=deleteutl::idx_dev< impl_t, data_t, idx_t, N >
operator>>(data_t &dst)utl::idx_dev< impl_t, data_t, idx_t, N >inline
operator[](const idx_t idx)utl::idx_dev< impl_t, data_t, idx_t, N >inline
pointer_type typedefutl::idx_dev< impl_t, data_t, idx_t, N >
put(const data_t &data, idx_t cursor)utl::idx_dev< impl_t, data_t, idx_t, N >inline
put(const data_t *data, size_t n, idx_t cursor)utl::idx_dev< impl_t, data_t, idx_t, N >inline
put_(const data_t &data, idx_t idx)utl::idx_dev< impl_t, data_t, idx_t, N >inlineprivate
put_(const data_t *data, size_t n, idx_t idx)utl::idx_dev< impl_t, data_t, idx_t, N >inlineprivate
type typedefutl::idx_dev< impl_t, data_t, idx_t, N >
~idx_dev()=defaultutl::idx_dev< impl_t, data_t, idx_t, N >protected
+
+ + + + diff --git a/doc/html/classutl_1_1idx__dev.html b/doc/html/classutl_1_1idx__dev.html new file mode 100644 index 0000000..57afef9 --- /dev/null +++ b/doc/html/classutl_1_1idx__dev.html @@ -0,0 +1,1489 @@ + + + + + + + +uTL: utl::idx_dev< impl_t, data_t, idx_t, N > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
utl::idx_dev< impl_t, data_t, idx_t, N > Class Template Reference
+
+
+ +

Abstract base class for indexed devices. + More...

+ +

#include <idx_dev.h>

+ + + + + + + + + + + + + +

+Public Types

using type = idx_dev_t
 Export type as identity meta-function. More...
 
using data_type = data_t
 Export types as index device concept demands. More...
 
using pointer_type = data_t *
 
using idx_type = idx_t
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Public index device interface
size_t get (data_t &data, idx_t cursor)
 Get interface. This function should read a single data_t object from device in blocking mode. More...
 
size_t get (data_t *data, size_t n, idx_t cursor)
 Old stile get functionality using free standing data_t*. This function should return a stream of data from device. More...
 
size_t put (const data_t &data, idx_t cursor)
 Put interface. This function should send a single data_t object to device. More...
 
size_t put (const data_t *data, size_t n, idx_t cursor)
 Put interface. This function should send a stream of data_t objects to device. More...
 
idx_t cursor () const
 Return the current cursor position. More...
 
idx_t cursor (idx_t idx)
 Set the cursor position. More...
 
Stream operator >> interface
template<typename _Dst_t >
idx_dev_toperator>> (_Dst_t &dst)
 Template operator>> implementation for for all by value/ref parameters. More...
 
template<typename _Dst_t >
idx_dev_toperator>> (_Dst_t *dst)=delete
 Specialization to disallow pointer types as destination. More...
 
idx_dev_toperator>> (data_t &dst)
 Overload for single data_t object. More...
 
Stream operator<< interface
template<typename _Src_t >
idx_dev_toperator<< (_Src_t &src)
 Template operator<< implementation for for all by value/ref parameters. More...
 
template<typename _Src_t >
idx_dev_toperator<< (_Src_t *src)=delete
 specialization to disallow pointer types as source More...
 
idx_dev_toperator<< (const data_t &src)
 Overload for single data_t object. More...
 
Helper operators
data_t & operator[] (const idx_t idx)
 
iterator end () noexcept
 
const_iterator end () const noexcept
 
const_iterator cend () const noexcept
 
+ + + + + + + + + + + + + +

+Protected Member Functions

Constructor / Destructor
 ~idx_dev ()=default
 Allow destructor from derived only. More...
 
 idx_dev ()=default
 A default constructor from derived only. More...
 
 idx_dev (const idx_dev_t &)=delete
 No copies. More...
 
idx_dev_toperator= (const idx_dev_t &)=delete
 
+ + + + +

+Private Types

using idx_dev_t = idx_dev< impl_t, data_t, idx_t, N >
 class type syntactic sugar More...
 
+ + + + + + + + + + + + + + + + +

+Private Member Functions

 _CRTP_IMPL (impl_t)
 
Common index device interface requirements
size_t get_ (data_t &data, idx_t idx)
 
size_t get_ (data_t *data, size_t n, idx_t idx)
 
size_t put_ (const data_t &data, idx_t idx)
 
size_t put_ (const data_t *data, size_t n, idx_t idx)
 
idx_t cursor_ () const
 
void cursor_ (idx_t idx)
 
+ + + + + + + + + + + + + + +

+STL-like Input iterator interface

using iterator = idxdev_it< idx_dev_t, data_t *, N >
 Iterator. More...
 
using const_iterator = idxdev_it< idx_dev_t, const data_t *, N >
 Const iterator. More...
 
iterator begin () noexcept
 .begin implementation More...
 
const_iterator begin () const noexcept
 
const_iterator cbegin () const noexcept
 
+

Detailed Description

+

template<typename impl_t, typename data_t, typename idx_t, size_t N>
+class utl::idx_dev< impl_t, data_t, idx_t, N >

+ +

Abstract base class for indexed devices.

+

Template base class for indexed (I/O) devices. using CRTP

+

This class force a common interface for input, indexed (I/O) devices. By using this common interface the class implements

    +
  • Stream-like extracting and insertion operator
  • +
  • Helper operators
  • +
  • Input iterator
  • +
  • Const input iterator to inherit to implementation.
  • +
+
Parameters
+ + + + + +
impl_tThe CRTP type (the derived/implementation class typename).
data_tThe devices base type of data
idx_tThe type to use for indexing
streamsizeThe number of elements to indicate eos.
+
+
+ +

Definition at line 56 of file idx_dev.h.

+

Member Typedef Documentation

+ +

◆ const_iterator

+ +
+
+
+template<typename impl_t , typename data_t , typename idx_t , size_t N>
+ + + + +
using utl::idx_dev< impl_t, data_t, idx_t, N >::const_iterator = idxdev_it <idx_dev_t, const data_t*, N>
+
+ +

Const iterator.

+ +

Definition at line 231 of file idx_dev.h.

+ +
+
+ +

◆ data_type

+ +
+
+
+template<typename impl_t , typename data_t , typename idx_t , size_t N>
+ + + + +
using utl::idx_dev< impl_t, data_t, idx_t, N >::data_type = data_t
+
+ +

Export types as index device concept demands.

+ +

Definition at line 62 of file idx_dev.h.

+ +
+
+ +

◆ idx_dev_t

+ +
+
+
+template<typename impl_t , typename data_t , typename idx_t , size_t N>
+ + + + + +
+ + + + +
using utl::idx_dev< impl_t, data_t, idx_t, N >::idx_dev_t = idx_dev <impl_t, data_t, idx_t, N>
+
+private
+
+ +

class type syntactic sugar

+ +

Definition at line 58 of file idx_dev.h.

+ +
+
+ +

◆ idx_type

+ +
+
+
+template<typename impl_t , typename data_t , typename idx_t , size_t N>
+ + + + +
using utl::idx_dev< impl_t, data_t, idx_t, N >::idx_type = idx_t
+
+ +

Definition at line 64 of file idx_dev.h.

+ +
+
+ +

◆ iterator

+ +
+
+
+template<typename impl_t , typename data_t , typename idx_t , size_t N>
+ + + + +
using utl::idx_dev< impl_t, data_t, idx_t, N >::iterator = idxdev_it <idx_dev_t, data_t*, N>
+
+ +

Iterator.

+ +

Definition at line 230 of file idx_dev.h.

+ +
+
+ +

◆ pointer_type

+ +
+
+
+template<typename impl_t , typename data_t , typename idx_t , size_t N>
+ + + + +
using utl::idx_dev< impl_t, data_t, idx_t, N >::pointer_type = data_t*
+
+ +

Definition at line 63 of file idx_dev.h.

+ +
+
+ +

◆ type

+ +
+
+
+template<typename impl_t , typename data_t , typename idx_t , size_t N>
+ + + + +
using utl::idx_dev< impl_t, data_t, idx_t, N >::type = idx_dev_t
+
+ +

Export type as identity meta-function.

+ +

Definition at line 66 of file idx_dev.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ ~idx_dev()

+ +
+
+
+template<typename impl_t , typename data_t , typename idx_t , size_t N>
+ + + + + +
+ + + + + + + +
utl::idx_dev< impl_t, data_t, idx_t, N >::~idx_dev ()
+
+protecteddefault
+
+ +

Allow destructor from derived only.

+ +
+
+ +

◆ idx_dev() [1/2]

+ +
+
+
+template<typename impl_t , typename data_t , typename idx_t , size_t N>
+ + + + + +
+ + + + + + + +
utl::idx_dev< impl_t, data_t, idx_t, N >::idx_dev ()
+
+protecteddefault
+
+ +

A default constructor from derived only.

+ +
+
+ +

◆ idx_dev() [2/2]

+ +
+
+
+template<typename impl_t , typename data_t , typename idx_t , size_t N>
+ + + + + +
+ + + + + + + + +
utl::idx_dev< impl_t, data_t, idx_t, N >::idx_dev (const idx_dev_t)
+
+protecteddelete
+
+ +

No copies.

+ +
+
+

Member Function Documentation

+ +

◆ _CRTP_IMPL()

+ +
+
+
+template<typename impl_t , typename data_t , typename idx_t , size_t N>
+ + + + + +
+ + + + + + + + +
utl::idx_dev< impl_t, data_t, idx_t, N >::_CRTP_IMPL (impl_t )
+
+private
+
+ +
+
+ +

◆ begin() [1/2]

+ +
+
+
+template<typename impl_t , typename data_t , typename idx_t , size_t N>
+ + + + + +
+ + + + + + + +
iterator utl::idx_dev< impl_t, data_t, idx_t, N >::begin ()
+
+inlinenoexcept
+
+ +

.begin implementation

+ +

Definition at line 234 of file idx_dev.h.

+ +
+
+ +

◆ begin() [2/2]

+ +
+
+
+template<typename impl_t , typename data_t , typename idx_t , size_t N>
+ + + + + +
+ + + + + + + +
const_iterator utl::idx_dev< impl_t, data_t, idx_t, N >::begin () const
+
+inlinenoexcept
+
+ +

Definition at line 235 of file idx_dev.h.

+ +
+
+ +

◆ cbegin()

+ +
+
+
+template<typename impl_t , typename data_t , typename idx_t , size_t N>
+ + + + + +
+ + + + + + + +
const_iterator utl::idx_dev< impl_t, data_t, idx_t, N >::cbegin () const
+
+inlinenoexcept
+
+ +

Definition at line 236 of file idx_dev.h.

+ +
+
+ +

◆ cend()

+ +
+
+
+template<typename impl_t , typename data_t , typename idx_t , size_t N>
+ + + + + +
+ + + + + + + +
const_iterator utl::idx_dev< impl_t, data_t, idx_t, N >::cend () const
+
+inlinenoexcept
+
+ +

Definition at line 241 of file idx_dev.h.

+ +
+
+ +

◆ cursor() [1/2]

+ +
+
+
+template<typename impl_t , typename data_t , typename idx_t , size_t N>
+ + + + + +
+ + + + + + + +
idx_t utl::idx_dev< impl_t, data_t, idx_t, N >::cursor () const
+
+inline
+
+ +

Return the current cursor position.

+ +

Definition at line 149 of file idx_dev.h.

+ +
+
+ +

◆ cursor() [2/2]

+ +
+
+
+template<typename impl_t , typename data_t , typename idx_t , size_t N>
+ + + + + +
+ + + + + + + + +
idx_t utl::idx_dev< impl_t, data_t, idx_t, N >::cursor (idx_t idx)
+
+inline
+
+ +

Set the cursor position.

+
Parameters
+ + +
idxCursor address to set
+
+
+
Returns
The current cursor
+ +

Definition at line 156 of file idx_dev.h.

+ +
+
+ +

◆ cursor_() [1/2]

+ +
+
+
+template<typename impl_t , typename data_t , typename idx_t , size_t N>
+ + + + + +
+ + + + + + + +
idx_t utl::idx_dev< impl_t, data_t, idx_t, N >::cursor_ () const
+
+inlineprivate
+
+ +

Definition at line 86 of file idx_dev.h.

+ +
+
+ +

◆ cursor_() [2/2]

+ +
+
+
+template<typename impl_t , typename data_t , typename idx_t , size_t N>
+ + + + + +
+ + + + + + + + +
void utl::idx_dev< impl_t, data_t, idx_t, N >::cursor_ (idx_t idx)
+
+inlineprivate
+
+ +

Definition at line 87 of file idx_dev.h.

+ +
+
+ +

◆ end() [1/2]

+ +
+
+
+template<typename impl_t , typename data_t , typename idx_t , size_t N>
+ + + + + +
+ + + + + + + +
iterator utl::idx_dev< impl_t, data_t, idx_t, N >::end ()
+
+inlinenoexcept
+
+

.end implementation

+ +

Definition at line 239 of file idx_dev.h.

+ +
+
+ +

◆ end() [2/2]

+ +
+
+
+template<typename impl_t , typename data_t , typename idx_t , size_t N>
+ + + + + +
+ + + + + + + +
const_iterator utl::idx_dev< impl_t, data_t, idx_t, N >::end () const
+
+inlinenoexcept
+
+ +

Definition at line 240 of file idx_dev.h.

+ +
+
+ +

◆ get() [1/2]

+ +
+
+
+template<typename impl_t , typename data_t , typename idx_t , size_t N>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
size_t utl::idx_dev< impl_t, data_t, idx_t, N >::get (data_t & data,
idx_t cursor 
)
+
+inline
+
+ +

Get interface. This function should read a single data_t object from device in blocking mode.

+
Parameters
+ + +
dataReference to data output from device.
+
+
+
Returns
Number of data read from device
+
Note
A successful call should return 1
+ +

Definition at line 104 of file idx_dev.h.

+ +
+
+ +

◆ get() [2/2]

+ +
+
+
+template<typename impl_t , typename data_t , typename idx_t , size_t N>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
size_t utl::idx_dev< impl_t, data_t, idx_t, N >::get (data_t * data,
size_t n,
idx_t cursor 
)
+
+inline
+
+ +

Old stile get functionality using free standing data_t*. This function should return a stream of data from device.

+
Parameters
+ + + +
dataPointer to buffer to write the data from device.
nThe number of data of type data_t to read
+
+
+
Returns
The read data items.
+ +

Definition at line 116 of file idx_dev.h.

+ +
+
+ +

◆ get_() [1/2]

+ +
+
+
+template<typename impl_t , typename data_t , typename idx_t , size_t N>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
size_t utl::idx_dev< impl_t, data_t, idx_t, N >::get_ (data_t & data,
idx_t idx 
)
+
+inlineprivate
+
+ +

Definition at line 82 of file idx_dev.h.

+ +
+
+ +

◆ get_() [2/2]

+ +
+
+
+template<typename impl_t , typename data_t , typename idx_t , size_t N>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
size_t utl::idx_dev< impl_t, data_t, idx_t, N >::get_ (data_t * data,
size_t n,
idx_t idx 
)
+
+inlineprivate
+
+ +

Definition at line 83 of file idx_dev.h.

+ +
+
+ +

◆ operator<<() [1/3]

+ +
+
+
+template<typename impl_t , typename data_t , typename idx_t , size_t N>
+
+template<typename _Src_t >
+ + + + + +
+ + + + + + + + +
idx_dev_t& utl::idx_dev< impl_t, data_t, idx_t, N >::operator<< (_Src_t & src)
+
+inline
+
+ +

Template operator<< implementation for for all by value/ref parameters.

+
Parameters
+ + +
srcReference to source data
+
+
+
Returns
Reference to this device for chaining
+ +

Definition at line 198 of file idx_dev.h.

+ +
+
+ +

◆ operator<<() [2/3]

+ +
+
+
+template<typename impl_t , typename data_t , typename idx_t , size_t N>
+
+template<typename _Src_t >
+ + + + + +
+ + + + + + + + +
idx_dev_t& utl::idx_dev< impl_t, data_t, idx_t, N >::operator<< (_Src_t * src)
+
+delete
+
+ +

specialization to disallow pointer types as source

+ +
+
+ +

◆ operator<<() [3/3]

+ +
+
+
+template<typename impl_t , typename data_t , typename idx_t , size_t N>
+ + + + + +
+ + + + + + + + +
idx_dev_t& utl::idx_dev< impl_t, data_t, idx_t, N >::operator<< (const data_t & src)
+
+inline
+
+ +

Overload for single data_t object.

+ +

Definition at line 209 of file idx_dev.h.

+ +
+
+ +

◆ operator=()

+ +
+
+
+template<typename impl_t , typename data_t , typename idx_t , size_t N>
+ + + + + +
+ + + + + + + + +
idx_dev_t& utl::idx_dev< impl_t, data_t, idx_t, N >::operator= (const idx_dev_t)
+
+protecteddelete
+
+

No copy assignments

+ +
+
+ +

◆ operator>>() [1/3]

+ +
+
+
+template<typename impl_t , typename data_t , typename idx_t , size_t N>
+
+template<typename _Dst_t >
+ + + + + +
+ + + + + + + + +
idx_dev_t& utl::idx_dev< impl_t, data_t, idx_t, N >::operator>> (_Dst_t & dst)
+
+inline
+
+ +

Template operator>> implementation for for all by value/ref parameters.

+
Parameters
+ + +
dstReference to destination
+
+
+
Returns
Reference to this device for chaining
+ +

Definition at line 170 of file idx_dev.h.

+ +
+
+ +

◆ operator>>() [2/3]

+ +
+
+
+template<typename impl_t , typename data_t , typename idx_t , size_t N>
+
+template<typename _Dst_t >
+ + + + + +
+ + + + + + + + +
idx_dev_t& utl::idx_dev< impl_t, data_t, idx_t, N >::operator>> (_Dst_t * dst)
+
+delete
+
+ +

Specialization to disallow pointer types as destination.

+ +
+
+ +

◆ operator>>() [3/3]

+ +
+
+
+template<typename impl_t , typename data_t , typename idx_t , size_t N>
+ + + + + +
+ + + + + + + + +
idx_dev_t& utl::idx_dev< impl_t, data_t, idx_t, N >::operator>> (data_t & dst)
+
+inline
+
+ +

Overload for single data_t object.

+ +

Definition at line 181 of file idx_dev.h.

+ +
+
+ +

◆ operator[]()

+ +
+
+
+template<typename impl_t , typename data_t , typename idx_t , size_t N>
+ + + + + +
+ + + + + + + + +
data_t& utl::idx_dev< impl_t, data_t, idx_t, N >::operator[] (const idx_t idx)
+
+inline
+
+ +

Definition at line 219 of file idx_dev.h.

+ +
+
+ +

◆ put() [1/2]

+ +
+
+
+template<typename impl_t , typename data_t , typename idx_t , size_t N>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
size_t utl::idx_dev< impl_t, data_t, idx_t, N >::put (const data_t & data,
idx_t cursor 
)
+
+inline
+
+ +

Put interface. This function should send a single data_t object to device.

+
Parameters
+ + +
dataThe data to send
+
+
+
Returns
The number of transmitted data items
+
Note
A successful call should return 1
+ +

Definition at line 129 of file idx_dev.h.

+ +
+
+ +

◆ put() [2/2]

+ +
+
+
+template<typename impl_t , typename data_t , typename idx_t , size_t N>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
size_t utl::idx_dev< impl_t, data_t, idx_t, N >::put (const data_t * data,
size_t n,
idx_t cursor 
)
+
+inline
+
+ +

Put interface. This function should send a stream of data_t objects to device.

+
Parameters
+ + + +
dataPointer to buffer indenting write to device.
nThe number of data of type data_t to send
+
+
+
Returns
The number of transmitted items.
+ +

Definition at line 141 of file idx_dev.h.

+ +
+
+ +

◆ put_() [1/2]

+ +
+
+
+template<typename impl_t , typename data_t , typename idx_t , size_t N>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
size_t utl::idx_dev< impl_t, data_t, idx_t, N >::put_ (const data_t & data,
idx_t idx 
)
+
+inlineprivate
+
+ +

Definition at line 84 of file idx_dev.h.

+ +
+
+ +

◆ put_() [2/2]

+ +
+
+
+template<typename impl_t , typename data_t , typename idx_t , size_t N>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
size_t utl::idx_dev< impl_t, data_t, idx_t, N >::put_ (const data_t * data,
size_t n,
idx_t idx 
)
+
+inlineprivate
+
+ +

Definition at line 85 of file idx_dev.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/doc/html/classutl_1_1idx__dev.js b/doc/html/classutl_1_1idx__dev.js new file mode 100644 index 0000000..f83bdf0 --- /dev/null +++ b/doc/html/classutl_1_1idx__dev.js @@ -0,0 +1,40 @@ +var classutl_1_1idx__dev = +[ + [ "const_iterator", "classutl_1_1idx__dev.html#afa0e264f696f45c5a1b663c7c868a510", null ], + [ "data_type", "classutl_1_1idx__dev.html#ace7a74e439972658d6006f83371ee0ca", null ], + [ "idx_dev_t", "classutl_1_1idx__dev.html#afe9d6e2398154ac585db7c5972a671e6", null ], + [ "idx_type", "classutl_1_1idx__dev.html#aa8055ff3787876f243710ff194c7b8d0", null ], + [ "iterator", "classutl_1_1idx__dev.html#a7aa9e9ecfa5035dba4c2f9ef9ec60c2a", null ], + [ "pointer_type", "classutl_1_1idx__dev.html#acf054246b0c7c8be0a676fc1cf2b090c", null ], + [ "type", "classutl_1_1idx__dev.html#a6cdcb1da82a0047d990ee6bce8b6c32b", null ], + [ "~idx_dev", "classutl_1_1idx__dev.html#ac7fc9b499b2c4b73769b68d10181b08b", null ], + [ "idx_dev", "classutl_1_1idx__dev.html#a90c6f576acb2a1ced3e973864d5d61b1", null ], + [ "idx_dev", "classutl_1_1idx__dev.html#a846e84b90848710336e2763c833eb8ec", null ], + [ "_CRTP_IMPL", "classutl_1_1idx__dev.html#a814222014cab41a11fa8b2040e50310d", null ], + [ "begin", "classutl_1_1idx__dev.html#a83b186ed15e9bbe1e5d53e3941d517a7", null ], + [ "begin", "classutl_1_1idx__dev.html#ad456ced43be8ab4fb9a66840afa030f7", null ], + [ "cbegin", "classutl_1_1idx__dev.html#a7550b4dbfea20c02f4600821bf36dc0c", null ], + [ "cend", "classutl_1_1idx__dev.html#a6ee37538b456c4b53b0bd4b3757b5edf", null ], + [ "cursor", "classutl_1_1idx__dev.html#a5ec37ed1b09a484563e4ad21107ac5a5", null ], + [ "cursor", "classutl_1_1idx__dev.html#ab49339f7ff0608ab460f0883224acb3c", null ], + [ "cursor_", "classutl_1_1idx__dev.html#aa184474f9ccb50bf7e2763a072fe64c5", null ], + [ "cursor_", "classutl_1_1idx__dev.html#aa72ce1d299e2e994b811f127e7ce133f", null ], + [ "end", "classutl_1_1idx__dev.html#aae291a2bb6788f85aa543861ccdb51c5", null ], + [ "end", "classutl_1_1idx__dev.html#ae1cf97364a8264b390b361fc6b54b389", null ], + [ "get", "classutl_1_1idx__dev.html#a04f9404d7741c3c6ac421c530dfe867c", null ], + [ "get", "classutl_1_1idx__dev.html#aeef118cb863218cb2b5a1e8bb2dba600", null ], + [ "get_", "classutl_1_1idx__dev.html#acc5ca7cdc56121ef7044ef89253b89b4", null ], + [ "get_", "classutl_1_1idx__dev.html#a268d9f5940e7621affca5bffde8830b9", null ], + [ "operator<<", "classutl_1_1idx__dev.html#a661ea93cc07a61ef208ab6f021f62907", null ], + [ "operator<<", "classutl_1_1idx__dev.html#a4e5a520417e7defe7cec77c261a01b73", null ], + [ "operator<<", "classutl_1_1idx__dev.html#ad1c24182de1432f4d43eaa69db7aaec7", null ], + [ "operator=", "classutl_1_1idx__dev.html#ac817369b5efb068d648328320a9cf6a4", null ], + [ "operator>>", "classutl_1_1idx__dev.html#a296be5211871773b2b8aa5409772ce6a", null ], + [ "operator>>", "classutl_1_1idx__dev.html#af5822e3e77e2748a6eaf13b9381e0736", null ], + [ "operator>>", "classutl_1_1idx__dev.html#a3480680f94fcb06f9ee8b2e5dcdb4dcd", null ], + [ "operator[]", "classutl_1_1idx__dev.html#a5e0d647ad1cc5533e4f70292d8793a9f", null ], + [ "put", "classutl_1_1idx__dev.html#af588d605d6968164cca3e348b5363613", null ], + [ "put", "classutl_1_1idx__dev.html#a4d91ec798d3bf0da54467b4a394da839", null ], + [ "put_", "classutl_1_1idx__dev.html#a7b986ccd5cc6a2ece87dacdb0b8f0a0d", null ], + [ "put_", "classutl_1_1idx__dev.html#aef5b7b2d58b2502ea7e60cfc9835e9b6", null ] +]; \ No newline at end of file diff --git a/doc/html/classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4-members.html b/doc/html/classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4-members.html new file mode 100644 index 0000000..0918b48 --- /dev/null +++ b/doc/html/classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4-members.html @@ -0,0 +1,143 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
utl::idx_dev< virtual_tag, data_t, idx_t, N > Member List
+
+
+ +

This is the complete list of members for utl::idx_dev< virtual_tag, data_t, idx_t, N >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
begin() noexceptutl::idx_dev< virtual_tag, data_t, idx_t, N >inline
begin() const noexceptutl::idx_dev< virtual_tag, data_t, idx_t, N >inline
cbegin() const noexceptutl::idx_dev< virtual_tag, data_t, idx_t, N >inline
cend() const noexceptutl::idx_dev< virtual_tag, data_t, idx_t, N >inline
const_iterator typedefutl::idx_dev< virtual_tag, data_t, idx_t, N >
cursor() constutl::idx_dev< virtual_tag, data_t, idx_t, N >inline
cursor(idx_t idx)utl::idx_dev< virtual_tag, data_t, idx_t, N >inline
cursor_() const =0utl::idx_dev< virtual_tag, data_t, idx_t, N >privatepure virtual
cursor_(idx_t)=0utl::idx_dev< virtual_tag, data_t, idx_t, N >privatepure virtual
data_type typedefutl::idx_dev< virtual_tag, data_t, idx_t, N >
end() noexceptutl::idx_dev< virtual_tag, data_t, idx_t, N >inline
end() const noexceptutl::idx_dev< virtual_tag, data_t, idx_t, N >inline
get(data_t &data, idx_t cursor)utl::idx_dev< virtual_tag, data_t, idx_t, N >inline
get(data_t *data, size_t n, idx_t cursor)utl::idx_dev< virtual_tag, data_t, idx_t, N >inline
get_(data_t &, idx_t)=0utl::idx_dev< virtual_tag, data_t, idx_t, N >privatepure virtual
get_(data_t *, size_t n, idx_t)=0utl::idx_dev< virtual_tag, data_t, idx_t, N >privatepure virtual
idx_dev()=defaultutl::idx_dev< virtual_tag, data_t, idx_t, N >protected
idx_dev(const idx_dev_t &)=deleteutl::idx_dev< virtual_tag, data_t, idx_t, N >protected
idx_dev_t typedefutl::idx_dev< virtual_tag, data_t, idx_t, N >private
idx_type typedefutl::idx_dev< virtual_tag, data_t, idx_t, N >
iterator typedefutl::idx_dev< virtual_tag, data_t, idx_t, N >
operator<<(_Src_t &src)utl::idx_dev< virtual_tag, data_t, idx_t, N >inline
operator<<(_Src_t *src)=deleteutl::idx_dev< virtual_tag, data_t, idx_t, N >
operator<<(const data_t &src)utl::idx_dev< virtual_tag, data_t, idx_t, N >inline
operator=(const idx_dev_t &)=deleteutl::idx_dev< virtual_tag, data_t, idx_t, N >protected
operator>>(_Dst_t &dst)utl::idx_dev< virtual_tag, data_t, idx_t, N >inline
operator>>(_Dst_t *dst)=deleteutl::idx_dev< virtual_tag, data_t, idx_t, N >
operator>>(data_t &dst)utl::idx_dev< virtual_tag, data_t, idx_t, N >inline
operator[](const idx_t idx)utl::idx_dev< virtual_tag, data_t, idx_t, N >inline
pointer_type typedefutl::idx_dev< virtual_tag, data_t, idx_t, N >
put(const data_t &data, idx_t cursor)utl::idx_dev< virtual_tag, data_t, idx_t, N >inline
put(const data_t *data, size_t n, idx_t cursor)utl::idx_dev< virtual_tag, data_t, idx_t, N >inline
put_(const data_t &, idx_t)=0utl::idx_dev< virtual_tag, data_t, idx_t, N >privatepure virtual
put_(const data_t *, size_t n, idx_t)=0utl::idx_dev< virtual_tag, data_t, idx_t, N >privatepure virtual
type typedefutl::idx_dev< virtual_tag, data_t, idx_t, N >
~idx_dev()=defaultutl::idx_dev< virtual_tag, data_t, idx_t, N >virtual
+
+ + + + diff --git a/doc/html/classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html b/doc/html/classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html new file mode 100644 index 0000000..062aacf --- /dev/null +++ b/doc/html/classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html @@ -0,0 +1,1438 @@ + + + + + + + +uTL: utl::idx_dev< virtual_tag, data_t, idx_t, N > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
utl::idx_dev< virtual_tag, data_t, idx_t, N > Class Template Referenceabstract
+
+
+ +

A virtual base class specialization. + More...

+ +

#include <idx_dev.h>

+ + + + + + + + + + + + + +

+Public Types

using type = idx_dev_t
 Export type as identity meta-function. More...
 
using data_type = data_t
 Export types as index device concept demands. More...
 
using pointer_type = data_t *
 
using idx_type = idx_t
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Public index device interface
size_t get (data_t &data, idx_t cursor)
 Get interface. This function should read a single data_t object from device in blocking mode. More...
 
size_t get (data_t *data, size_t n, idx_t cursor)
 Old stile get functionality using free standing data_t*. This function should return a stream of data from device. More...
 
size_t put (const data_t &data, idx_t cursor)
 Put interface. This function should send a single data_t object to device. More...
 
size_t put (const data_t *data, size_t n, idx_t cursor)
 Put interface. This function should send a stream of data_t objects to device. More...
 
idx_t cursor () const
 Return the current cursor position. More...
 
idx_t cursor (idx_t idx)
 Set the cursor position. More...
 
Stream operator>> interface
template<typename _Dst_t >
idx_dev_toperator>> (_Dst_t &dst)
 Template operator>> implementation for for all by value/ref parameters. More...
 
template<typename _Dst_t >
idx_dev_toperator>> (_Dst_t *dst)=delete
 specialization to disallow pointer types as destination More...
 
idx_dev_toperator>> (data_t &dst)
 Overload for single data_t object. More...
 
Stream operator<< interface
template<typename _Src_t >
idx_dev_toperator<< (_Src_t &src)
 Template operator<< implementation for for all by value/ref parameters. More...
 
template<typename _Src_t >
idx_dev_toperator<< (_Src_t *src)=delete
 specialization to disallow pointer types as source More...
 
idx_dev_toperator<< (const data_t &src)
 Overload for single data_t object. More...
 
Helper operators
data_t & operator[] (const idx_t idx)
 
iterator end () noexcept
 
const_iterator end () const noexcept
 
const_iterator cend () const noexcept
 
+ + + + +

+Private Types

using idx_dev_t = idx_dev< virtual_tag, data_t, idx_t, N >
 class type syntactic sugar More...
 
+ + + + + + + + + + + + + + +

+Private Member Functions

Common index device interface requirements
virtual size_t get_ (data_t &, idx_t)=0
 
virtual size_t get_ (data_t *, size_t n, idx_t)=0
 
virtual size_t put_ (const data_t &, idx_t)=0
 
virtual size_t put_ (const data_t *, size_t n, idx_t)=0
 
virtual idx_t cursor_ () const =0
 
virtual void cursor_ (idx_t)=0
 
+ + + + + + + + + + + + +

+Constructor / Destructor

virtual ~idx_dev ()=default
 Virtual destructor. More...
 
 idx_dev ()=default
 A default constructor from derived only. More...
 
 idx_dev (const idx_dev_t &)=delete
 No copies. More...
 
idx_dev_toperator= (const idx_dev_t &)=delete
 
+ + + + + + + + + + + + + + +

+STL-like Input iterator interface

using iterator = idxdev_it< idx_dev_t, data_t *, N >
 Iterator. More...
 
using const_iterator = idxdev_it< idx_dev_t, const data_t *, N >
 Const iterator. More...
 
iterator begin () noexcept
 .begin implementation More...
 
const_iterator begin () const noexcept
 
const_iterator cbegin () const noexcept
 
+

Detailed Description

+

template<typename data_t, typename idx_t, size_t N>
+class utl::idx_dev< virtual_tag, data_t, idx_t, N >

+ +

A virtual base class specialization.

+
Parameters
+ + + + + +
impl_t= virtual_tag
data_tThe devices base type of data
idx_tThe type to use for indexing
streamsizeThe number of elements to indicate eos.
+
+
+ +

Definition at line 256 of file idx_dev.h.

+

Member Typedef Documentation

+ +

◆ const_iterator

+ +
+
+
+template<typename data_t , typename idx_t , size_t N>
+ + + + +
using utl::idx_dev< virtual_tag, data_t, idx_t, N >::const_iterator = idxdev_it <idx_dev_t, const data_t*, N>
+
+ +

Const iterator.

+ +

Definition at line 430 of file idx_dev.h.

+ +
+
+ +

◆ data_type

+ +
+
+
+template<typename data_t , typename idx_t , size_t N>
+ + + + +
using utl::idx_dev< virtual_tag, data_t, idx_t, N >::data_type = data_t
+
+ +

Export types as index device concept demands.

+ +

Definition at line 261 of file idx_dev.h.

+ +
+
+ +

◆ idx_dev_t

+ +
+
+
+template<typename data_t , typename idx_t , size_t N>
+ + + + + +
+ + + + +
using utl::idx_dev< virtual_tag, data_t, idx_t, N >::idx_dev_t = idx_dev <virtual_tag, data_t, idx_t, N>
+
+private
+
+ +

class type syntactic sugar

+ +

Definition at line 257 of file idx_dev.h.

+ +
+
+ +

◆ idx_type

+ +
+
+
+template<typename data_t , typename idx_t , size_t N>
+ + + + +
using utl::idx_dev< virtual_tag, data_t, idx_t, N >::idx_type = idx_t
+
+ +

Definition at line 263 of file idx_dev.h.

+ +
+
+ +

◆ iterator

+ +
+
+
+template<typename data_t , typename idx_t , size_t N>
+ + + + +
using utl::idx_dev< virtual_tag, data_t, idx_t, N >::iterator = idxdev_it <idx_dev_t, data_t*, N>
+
+ +

Iterator.

+ +

Definition at line 429 of file idx_dev.h.

+ +
+
+ +

◆ pointer_type

+ +
+
+
+template<typename data_t , typename idx_t , size_t N>
+ + + + +
using utl::idx_dev< virtual_tag, data_t, idx_t, N >::pointer_type = data_t*
+
+ +

Definition at line 262 of file idx_dev.h.

+ +
+
+ +

◆ type

+ +
+
+
+template<typename data_t , typename idx_t , size_t N>
+ + + + +
using utl::idx_dev< virtual_tag, data_t, idx_t, N >::type = idx_dev_t
+
+ +

Export type as identity meta-function.

+ +

Definition at line 265 of file idx_dev.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ ~idx_dev()

+ +
+
+
+template<typename data_t , typename idx_t , size_t N>
+ + + + + +
+ + + + + + + +
virtual utl::idx_dev< virtual_tag, data_t, idx_t, N >::~idx_dev ()
+
+virtualdefault
+
+ +

Virtual destructor.

+ +
+
+ +

◆ idx_dev() [1/2]

+ +
+
+
+template<typename data_t , typename idx_t , size_t N>
+ + + + + +
+ + + + + + + +
utl::idx_dev< virtual_tag, data_t, idx_t, N >::idx_dev ()
+
+protecteddefault
+
+ +

A default constructor from derived only.

+ +
+
+ +

◆ idx_dev() [2/2]

+ +
+
+
+template<typename data_t , typename idx_t , size_t N>
+ + + + + +
+ + + + + + + + +
utl::idx_dev< virtual_tag, data_t, idx_t, N >::idx_dev (const idx_dev_t)
+
+protecteddelete
+
+ +

No copies.

+ +
+
+

Member Function Documentation

+ +

◆ begin() [1/2]

+ +
+
+
+template<typename data_t , typename idx_t , size_t N>
+ + + + + +
+ + + + + + + +
iterator utl::idx_dev< virtual_tag, data_t, idx_t, N >::begin ()
+
+inlinenoexcept
+
+ +

.begin implementation

+ +

Definition at line 433 of file idx_dev.h.

+ +
+
+ +

◆ begin() [2/2]

+ +
+
+
+template<typename data_t , typename idx_t , size_t N>
+ + + + + +
+ + + + + + + +
const_iterator utl::idx_dev< virtual_tag, data_t, idx_t, N >::begin () const
+
+inlinenoexcept
+
+ +

Definition at line 434 of file idx_dev.h.

+ +
+
+ +

◆ cbegin()

+ +
+
+
+template<typename data_t , typename idx_t , size_t N>
+ + + + + +
+ + + + + + + +
const_iterator utl::idx_dev< virtual_tag, data_t, idx_t, N >::cbegin () const
+
+inlinenoexcept
+
+ +

Definition at line 435 of file idx_dev.h.

+ +
+
+ +

◆ cend()

+ +
+
+
+template<typename data_t , typename idx_t , size_t N>
+ + + + + +
+ + + + + + + +
const_iterator utl::idx_dev< virtual_tag, data_t, idx_t, N >::cend () const
+
+inlinenoexcept
+
+ +

Definition at line 440 of file idx_dev.h.

+ +
+
+ +

◆ cursor() [1/2]

+ +
+
+
+template<typename data_t , typename idx_t , size_t N>
+ + + + + +
+ + + + + + + +
idx_t utl::idx_dev< virtual_tag, data_t, idx_t, N >::cursor () const
+
+inline
+
+ +

Return the current cursor position.

+ +

Definition at line 348 of file idx_dev.h.

+ +
+
+ +

◆ cursor() [2/2]

+ +
+
+
+template<typename data_t , typename idx_t , size_t N>
+ + + + + +
+ + + + + + + + +
idx_t utl::idx_dev< virtual_tag, data_t, idx_t, N >::cursor (idx_t idx)
+
+inline
+
+ +

Set the cursor position.

+
Parameters
+ + +
idxCursor address to set
+
+
+
Returns
The current cursor
+ +

Definition at line 355 of file idx_dev.h.

+ +
+
+ +

◆ cursor_() [1/2]

+ +
+
+
+template<typename data_t , typename idx_t , size_t N>
+ + + + + +
+ + + + + + + +
virtual idx_t utl::idx_dev< virtual_tag, data_t, idx_t, N >::cursor_ () const
+
+privatepure virtual
+
+ +
+
+ +

◆ cursor_() [2/2]

+ +
+
+
+template<typename data_t , typename idx_t , size_t N>
+ + + + + +
+ + + + + + + + +
virtual void utl::idx_dev< virtual_tag, data_t, idx_t, N >::cursor_ (idx_t )
+
+privatepure virtual
+
+ +
+
+ +

◆ end() [1/2]

+ +
+
+
+template<typename data_t , typename idx_t , size_t N>
+ + + + + +
+ + + + + + + +
iterator utl::idx_dev< virtual_tag, data_t, idx_t, N >::end ()
+
+inlinenoexcept
+
+

.end implementation

+ +

Definition at line 438 of file idx_dev.h.

+ +
+
+ +

◆ end() [2/2]

+ +
+
+
+template<typename data_t , typename idx_t , size_t N>
+ + + + + +
+ + + + + + + +
const_iterator utl::idx_dev< virtual_tag, data_t, idx_t, N >::end () const
+
+inlinenoexcept
+
+ +

Definition at line 439 of file idx_dev.h.

+ +
+
+ +

◆ get() [1/2]

+ +
+
+
+template<typename data_t , typename idx_t , size_t N>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
size_t utl::idx_dev< virtual_tag, data_t, idx_t, N >::get (data_t & data,
idx_t cursor 
)
+
+inline
+
+ +

Get interface. This function should read a single data_t object from device in blocking mode.

+
Parameters
+ + +
dataReference to data output from device.
+
+
+
Returns
Number of data read from device
+
Note
A successful call should return 1
+ +

Definition at line 303 of file idx_dev.h.

+ +
+
+ +

◆ get() [2/2]

+ +
+
+
+template<typename data_t , typename idx_t , size_t N>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
size_t utl::idx_dev< virtual_tag, data_t, idx_t, N >::get (data_t * data,
size_t n,
idx_t cursor 
)
+
+inline
+
+ +

Old stile get functionality using free standing data_t*. This function should return a stream of data from device.

+
Parameters
+ + + +
dataPointer to buffer to write the data from device.
nThe number of data of type data_t to read
+
+
+
Returns
The read data items.
+ +

Definition at line 315 of file idx_dev.h.

+ +
+
+ +

◆ get_() [1/2]

+ +
+
+
+template<typename data_t , typename idx_t , size_t N>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual size_t utl::idx_dev< virtual_tag, data_t, idx_t, N >::get_ (data_t & ,
idx_t  
)
+
+privatepure virtual
+
+ +
+
+ +

◆ get_() [2/2]

+ +
+
+
+template<typename data_t , typename idx_t , size_t N>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual size_t utl::idx_dev< virtual_tag, data_t, idx_t, N >::get_ (data_t * ,
size_t n,
idx_t  
)
+
+privatepure virtual
+
+ +
+
+ +

◆ operator<<() [1/3]

+ +
+
+
+template<typename data_t , typename idx_t , size_t N>
+
+template<typename _Src_t >
+ + + + + +
+ + + + + + + + +
idx_dev_t& utl::idx_dev< virtual_tag, data_t, idx_t, N >::operator<< (_Src_t & src)
+
+inline
+
+ +

Template operator<< implementation for for all by value/ref parameters.

+
Parameters
+ + +
srcReference to source data
+
+
+
Returns
Reference to this device for chaining
+ +

Definition at line 397 of file idx_dev.h.

+ +
+
+ +

◆ operator<<() [2/3]

+ +
+
+
+template<typename data_t , typename idx_t , size_t N>
+
+template<typename _Src_t >
+ + + + + +
+ + + + + + + + +
idx_dev_t& utl::idx_dev< virtual_tag, data_t, idx_t, N >::operator<< (_Src_t * src)
+
+delete
+
+ +

specialization to disallow pointer types as source

+ +
+
+ +

◆ operator<<() [3/3]

+ +
+
+
+template<typename data_t , typename idx_t , size_t N>
+ + + + + +
+ + + + + + + + +
idx_dev_t& utl::idx_dev< virtual_tag, data_t, idx_t, N >::operator<< (const data_t & src)
+
+inline
+
+ +

Overload for single data_t object.

+ +

Definition at line 408 of file idx_dev.h.

+ +
+
+ +

◆ operator=()

+ +
+
+
+template<typename data_t , typename idx_t , size_t N>
+ + + + + +
+ + + + + + + + +
idx_dev_t& utl::idx_dev< virtual_tag, data_t, idx_t, N >::operator= (const idx_dev_t)
+
+protecteddelete
+
+

No copy assignments

+ +
+
+ +

◆ operator>>() [1/3]

+ +
+
+
+template<typename data_t , typename idx_t , size_t N>
+
+template<typename _Dst_t >
+ + + + + +
+ + + + + + + + +
idx_dev_t& utl::idx_dev< virtual_tag, data_t, idx_t, N >::operator>> (_Dst_t & dst)
+
+inline
+
+ +

Template operator>> implementation for for all by value/ref parameters.

+
Parameters
+ + +
dstReference to destination
+
+
+
Returns
Reference to this device for chaining
+ +

Definition at line 369 of file idx_dev.h.

+ +
+
+ +

◆ operator>>() [2/3]

+ +
+
+
+template<typename data_t , typename idx_t , size_t N>
+
+template<typename _Dst_t >
+ + + + + +
+ + + + + + + + +
idx_dev_t& utl::idx_dev< virtual_tag, data_t, idx_t, N >::operator>> (_Dst_t * dst)
+
+delete
+
+ +

specialization to disallow pointer types as destination

+ +
+
+ +

◆ operator>>() [3/3]

+ +
+
+
+template<typename data_t , typename idx_t , size_t N>
+ + + + + +
+ + + + + + + + +
idx_dev_t& utl::idx_dev< virtual_tag, data_t, idx_t, N >::operator>> (data_t & dst)
+
+inline
+
+ +

Overload for single data_t object.

+ +

Definition at line 380 of file idx_dev.h.

+ +
+
+ +

◆ operator[]()

+ +
+
+
+template<typename data_t , typename idx_t , size_t N>
+ + + + + +
+ + + + + + + + +
data_t& utl::idx_dev< virtual_tag, data_t, idx_t, N >::operator[] (const idx_t idx)
+
+inline
+
+ +

Definition at line 418 of file idx_dev.h.

+ +
+
+ +

◆ put() [1/2]

+ +
+
+
+template<typename data_t , typename idx_t , size_t N>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
size_t utl::idx_dev< virtual_tag, data_t, idx_t, N >::put (const data_t & data,
idx_t cursor 
)
+
+inline
+
+ +

Put interface. This function should send a single data_t object to device.

+
Parameters
+ + +
dataThe data to send
+
+
+
Returns
The number of transmitted data items
+
Note
A successful call should return 1
+ +

Definition at line 328 of file idx_dev.h.

+ +
+
+ +

◆ put() [2/2]

+ +
+
+
+template<typename data_t , typename idx_t , size_t N>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
size_t utl::idx_dev< virtual_tag, data_t, idx_t, N >::put (const data_t * data,
size_t n,
idx_t cursor 
)
+
+inline
+
+ +

Put interface. This function should send a stream of data_t objects to device.

+
Parameters
+ + + +
dataPointer to buffer indenting write to device.
nThe number of data of type data_t to send
+
+
+
Returns
The number of transmitted items.
+ +

Definition at line 340 of file idx_dev.h.

+ +
+
+ +

◆ put_() [1/2]

+ +
+
+
+template<typename data_t , typename idx_t , size_t N>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual size_t utl::idx_dev< virtual_tag, data_t, idx_t, N >::put_ (const data_t & ,
idx_t  
)
+
+privatepure virtual
+
+ +
+
+ +

◆ put_() [2/2]

+ +
+
+
+template<typename data_t , typename idx_t , size_t N>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual size_t utl::idx_dev< virtual_tag, data_t, idx_t, N >::put_ (const data_t * ,
size_t n,
idx_t  
)
+
+privatepure virtual
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/doc/html/classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.js b/doc/html/classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.js new file mode 100644 index 0000000..ebd2d54 --- /dev/null +++ b/doc/html/classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.js @@ -0,0 +1,39 @@ +var classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4 = +[ + [ "const_iterator", "classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a66a2229a8f511c9eb147072211bbda92", null ], + [ "data_type", "classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#aa26f4d0326232c436f3a312edf89b7e1", null ], + [ "idx_dev_t", "classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a14c20218e1843e6dc981a23aeb2fccb8", null ], + [ "idx_type", "classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a838a5bd9c2abb86ccde6249dc549e11b", null ], + [ "iterator", "classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a0965be515cca243b76f571aa425cfd96", null ], + [ "pointer_type", "classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a21fdf221d18bb3a118950d51af0b2df6", null ], + [ "type", "classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#aa35bd23b888a66ebceffd7ea37f7a230", null ], + [ "~idx_dev", "classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a67f3694debf7a8e563ac7d56c1771dfc", null ], + [ "idx_dev", "classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a32699d8dd6ed81986262ba74dccd3957", null ], + [ "idx_dev", "classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#ac00ac9cb399b3e08997c45f3204a3151", null ], + [ "begin", "classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a3923ae24a74fef19919f818636e063e4", null ], + [ "begin", "classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a07967f7a2c5d324361b7ffc829f31600", null ], + [ "cbegin", "classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a99e214886247aaff0567799ba7b5c6a9", null ], + [ "cend", "classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a413c6a4e5bc1c13ac0d78f5c3c228408", null ], + [ "cursor", "classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a2524b96ad86605bdadf47f54265154a7", null ], + [ "cursor", "classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a4a0f9f2e977055dab73e2ecd0e49d97e", null ], + [ "cursor_", "classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a8c635458e582869a9eddb6d9cb415556", null ], + [ "cursor_", "classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a3e7c310125427367defa988b2830c08e", null ], + [ "end", "classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#ad9166f4899994039eb64b6f63bcee621", null ], + [ "end", "classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a4da6ff073a9f8452ebbd5371e017e4b9", null ], + [ "get", "classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a6d5acffcb7f0ae7d34b47021b55aff6c", null ], + [ "get", "classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a58ce6002f3a5daabcc443aebee42e10b", null ], + [ "get_", "classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a12bebbab7f13ee42d85a7c3c85b445ca", null ], + [ "get_", "classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#afbc848e9c2232d8921f8d5f34ac90c00", null ], + [ "operator<<", "classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#accbb8a8c64fc4cac385081c9b6b7356b", null ], + [ "operator<<", "classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a0443e0880c43aedb5735c52a5c9eb144", null ], + [ "operator<<", "classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a52d8bf37aa7e4549db3ac11677cf9ec1", null ], + [ "operator=", "classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#ae31763ec2ad32c26b43f010f850fe3eb", null ], + [ "operator>>", "classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a6e758bd01a5d893a8b13476ed55213cc", null ], + [ "operator>>", "classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#abd071d6feed8ce4d07d1eb2d60995c6d", null ], + [ "operator>>", "classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a379c115c72386cd4407443d9f3c6ac53", null ], + [ "operator[]", "classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#aa636cd6c14608d8f5a0d16d409be3aaa", null ], + [ "put", "classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a183e46d89452a51a029387f621fb4e9f", null ], + [ "put", "classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a58ee979bbc14205548db85cbfbed7aba", null ], + [ "put_", "classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a7d622b995c072399b308dc61a88e9950", null ], + [ "put_", "classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a3069ad5d209e9fed4c181e8e352b8b95", null ] +]; \ No newline at end of file diff --git a/doc/html/classutl_1_1in__dev-members.html b/doc/html/classutl_1_1in__dev-members.html new file mode 100644 index 0000000..d57d873 --- /dev/null +++ b/doc/html/classutl_1_1in__dev-members.html @@ -0,0 +1,131 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
utl::in_dev< impl_t, data_t, streamsize > Member List
+
+
+ +

This is the complete list of members for utl::in_dev< impl_t, data_t, streamsize >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
_CRTP_IMPL(impl_t)utl::in_dev< impl_t, data_t, streamsize >private
begin() noexceptutl::in_dev< impl_t, data_t, streamsize >inline
begin() const noexceptutl::in_dev< impl_t, data_t, streamsize >inline
cbegin() const noexceptutl::in_dev< impl_t, data_t, streamsize >inline
cend() const noexceptutl::in_dev< impl_t, data_t, streamsize >inline
const_iterator typedefutl::in_dev< impl_t, data_t, streamsize >
data_type typedefutl::in_dev< impl_t, data_t, streamsize >
end() noexceptutl::in_dev< impl_t, data_t, streamsize >inline
end() const noexceptutl::in_dev< impl_t, data_t, streamsize >inline
get(data_t &data)utl::in_dev< impl_t, data_t, streamsize >inline
get(data_t *data, size_t n)utl::in_dev< impl_t, data_t, streamsize >inline
get_(data_t &data)utl::in_dev< impl_t, data_t, streamsize >inlineprivate
get_(data_t *data, size_t n)utl::in_dev< impl_t, data_t, streamsize >inlineprivate
in_dev()=defaultutl::in_dev< impl_t, data_t, streamsize >protected
in_dev(const in_dev_t &)=deleteutl::in_dev< impl_t, data_t, streamsize >protected
in_dev_t typedefutl::in_dev< impl_t, data_t, streamsize >private
iterator typedefutl::in_dev< impl_t, data_t, streamsize >
operator=(const in_dev_t &)=deleteutl::in_dev< impl_t, data_t, streamsize >protected
operator>>(_Dst_t &dst)utl::in_dev< impl_t, data_t, streamsize >inline
operator>>(_Dst_t *dst)=deleteutl::in_dev< impl_t, data_t, streamsize >
operator>>(data_t &dst)utl::in_dev< impl_t, data_t, streamsize >inline
pointer_type typedefutl::in_dev< impl_t, data_t, streamsize >
type typedefutl::in_dev< impl_t, data_t, streamsize >
~in_dev()=defaultutl::in_dev< impl_t, data_t, streamsize >protected
+
+ + + + diff --git a/doc/html/classutl_1_1in__dev.html b/doc/html/classutl_1_1in__dev.html new file mode 100644 index 0000000..1cf2bb0 --- /dev/null +++ b/doc/html/classutl_1_1in__dev.html @@ -0,0 +1,946 @@ + + + + + + + +uTL: utl::in_dev< impl_t, data_t, streamsize > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
utl::in_dev< impl_t, data_t, streamsize > Class Template Reference
+
+
+ +

Abstract base class for input devices. + More...

+ +

#include <in_dev.h>

+ + + + + + + + + + +

+Public Types

using type = in_dev_t
 Export type as identity meta-function. More...
 
using data_type = data_t
 
using pointer_type = data_t *
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Public Get interface
size_t get (data_t &data)
 Get interface. This function should read a single data_t object from device in blocking mode. More...
 
size_t get (data_t *data, size_t n)
 Old stile get functionality using free standing data_t*. This function should return a stream of data from device. More...
 
Stream operator >> interface
template<typename _Dst_t >
in_dev_toperator>> (_Dst_t &dst)
 Template operator >> implementation for for all by value/ref parameters. More...
 
template<typename _Dst_t >
in_dev_toperator>> (_Dst_t *dst)=delete
 Specialization to disallow pointer types as destination. More...
 
in_dev_toperator>> (data_t &dst)
 Overload for single data_t object. More...
 
iterator end () noexcept
 
const_iterator end () const noexcept
 
const_iterator cend () const noexcept
 
+ + + + + + + + + + + + + +

+Protected Member Functions

Constructor / Destructor
 ~in_dev ()=default
 Allow destructor from derived only. More...
 
 in_dev ()=default
 A default constructor from derived only. More...
 
 in_dev (const in_dev_t &)=delete
 No copies. More...
 
in_dev_toperator= (const in_dev_t &)=delete
 
+ + + + +

+Private Types

using in_dev_t = in_dev< impl_t, data_t, streamsize >
 class type syntactic sugar More...
 
+ + + + + + + + +

+Private Member Functions

 _CRTP_IMPL (impl_t)
 
Common input device interface requirements
size_t get_ (data_t &data)
 
size_t get_ (data_t *data, size_t n)
 
+ + + + + + + + + + + + + + +

+STL-like Input iterator interface

using iterator = indev_it< in_dev_t, data_t *, streamsize >
 Iterator. More...
 
using const_iterator = indev_it< in_dev_t, const data_t *, streamsize >
 Const iterator. More...
 
iterator begin () noexcept
 .begin implementation More...
 
const_iterator begin () const noexcept
 
const_iterator cbegin () const noexcept
 
+

Detailed Description

+

template<typename impl_t, typename data_t, size_t streamsize = 0>
+class utl::in_dev< impl_t, data_t, streamsize >

+ +

Abstract base class for input devices.

+

Template base class for un-buffered input devices. using CRTP

+

This class force a common interface for input, non-buffered devices. By using this common interface the class implements

    +
  • Stream-like extracting operator
  • +
  • Input iterator
  • +
  • Const input iterator to inherit to implementation.
  • +
+
Parameters
+ + + + +
impl_tThe CRTP type (the derived/implementation class typename).
data_tThe devices base type of data
streamsizeThe number of elements to indicate eos.
    +
  • None or 0 Stream only. No iterator as begin() now equals end().
  • +
+
+
+
+ +

Definition at line 54 of file in_dev.h.

+

Member Typedef Documentation

+ +

◆ const_iterator

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + +
using utl::in_dev< impl_t, data_t, streamsize >::const_iterator = indev_it <in_dev_t, const data_t*, streamsize>
+
+ +

Const iterator.

+ +

Definition at line 151 of file in_dev.h.

+ +
+
+ +

◆ data_type

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + +
using utl::in_dev< impl_t, data_t, streamsize >::data_type = data_t
+
+

Export types as input device concept demands

+ +

Definition at line 61 of file in_dev.h.

+ +
+
+ +

◆ in_dev_t

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + + +
+ + + + +
using utl::in_dev< impl_t, data_t, streamsize >::in_dev_t = in_dev <impl_t, data_t, streamsize>
+
+private
+
+ +

class type syntactic sugar

+ +

Definition at line 56 of file in_dev.h.

+ +
+
+ +

◆ iterator

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + +
using utl::in_dev< impl_t, data_t, streamsize >::iterator = indev_it <in_dev_t, data_t*, streamsize>
+
+ +

Iterator.

+ +

Definition at line 150 of file in_dev.h.

+ +
+
+ +

◆ pointer_type

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + +
using utl::in_dev< impl_t, data_t, streamsize >::pointer_type = data_t*
+
+ +

Definition at line 62 of file in_dev.h.

+ +
+
+ +

◆ type

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + +
using utl::in_dev< impl_t, data_t, streamsize >::type = in_dev_t
+
+ +

Export type as identity meta-function.

+ +

Definition at line 64 of file in_dev.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ ~in_dev()

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + + +
+ + + + + + + +
utl::in_dev< impl_t, data_t, streamsize >::~in_dev ()
+
+protecteddefault
+
+ +

Allow destructor from derived only.

+ +
+
+ +

◆ in_dev() [1/2]

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + + +
+ + + + + + + +
utl::in_dev< impl_t, data_t, streamsize >::in_dev ()
+
+protecteddefault
+
+ +

A default constructor from derived only.

+ +
+
+ +

◆ in_dev() [2/2]

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + + +
+ + + + + + + + +
utl::in_dev< impl_t, data_t, streamsize >::in_dev (const in_dev_t)
+
+protecteddelete
+
+ +

No copies.

+ +
+
+

Member Function Documentation

+ +

◆ _CRTP_IMPL()

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + + +
+ + + + + + + + +
utl::in_dev< impl_t, data_t, streamsize >::_CRTP_IMPL (impl_t )
+
+private
+
+ +
+
+ +

◆ begin() [1/2]

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + + +
+ + + + + + + +
iterator utl::in_dev< impl_t, data_t, streamsize >::begin ()
+
+inlinenoexcept
+
+ +

.begin implementation

+ +

Definition at line 154 of file in_dev.h.

+ +
+
+ +

◆ begin() [2/2]

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + + +
+ + + + + + + +
const_iterator utl::in_dev< impl_t, data_t, streamsize >::begin () const
+
+inlinenoexcept
+
+ +

Definition at line 155 of file in_dev.h.

+ +
+
+ +

◆ cbegin()

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + + +
+ + + + + + + +
const_iterator utl::in_dev< impl_t, data_t, streamsize >::cbegin () const
+
+inlinenoexcept
+
+ +

Definition at line 156 of file in_dev.h.

+ +
+
+ +

◆ cend()

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + + +
+ + + + + + + +
const_iterator utl::in_dev< impl_t, data_t, streamsize >::cend () const
+
+inlinenoexcept
+
+ +

Definition at line 161 of file in_dev.h.

+ +
+
+ +

◆ end() [1/2]

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + + +
+ + + + + + + +
iterator utl::in_dev< impl_t, data_t, streamsize >::end ()
+
+inlinenoexcept
+
+

.end implementation

+ +

Definition at line 159 of file in_dev.h.

+ +
+
+ +

◆ end() [2/2]

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + + +
+ + + + + + + +
const_iterator utl::in_dev< impl_t, data_t, streamsize >::end () const
+
+inlinenoexcept
+
+ +

Definition at line 160 of file in_dev.h.

+ +
+
+ +

◆ get() [1/2]

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + + +
+ + + + + + + + +
size_t utl::in_dev< impl_t, data_t, streamsize >::get (data_t & data)
+
+inline
+
+ +

Get interface. This function should read a single data_t object from device in blocking mode.

+
Parameters
+ + +
dataReference to data output from device.
+
+
+
Returns
Number of data read from device
+
Note
A successful call should return 1
+ +

Definition at line 97 of file in_dev.h.

+ +
+
+ +

◆ get() [2/2]

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
size_t utl::in_dev< impl_t, data_t, streamsize >::get (data_t * data,
size_t n 
)
+
+inline
+
+ +

Old stile get functionality using free standing data_t*. This function should return a stream of data from device.

+
Parameters
+ + + +
dataPointer to buffer to write the data from device.
nThe number of data of type data_t to read
+
+
+
Returns
The read data items.
+ +

Definition at line 109 of file in_dev.h.

+ +
+
+ +

◆ get_() [1/2]

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + + +
+ + + + + + + + +
size_t utl::in_dev< impl_t, data_t, streamsize >::get_ (data_t & data)
+
+inlineprivate
+
+ +

Definition at line 79 of file in_dev.h.

+ +
+
+ +

◆ get_() [2/2]

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
size_t utl::in_dev< impl_t, data_t, streamsize >::get_ (data_t * data,
size_t n 
)
+
+inlineprivate
+
+ +

Definition at line 80 of file in_dev.h.

+ +
+
+ +

◆ operator=()

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + + +
+ + + + + + + + +
in_dev_t& utl::in_dev< impl_t, data_t, streamsize >::operator= (const in_dev_t)
+
+protecteddelete
+
+

No copy assignments

+ +
+
+ +

◆ operator>>() [1/3]

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+
+template<typename _Dst_t >
+ + + + + +
+ + + + + + + + +
in_dev_t& utl::in_dev< impl_t, data_t, streamsize >::operator>> (_Dst_t & dst)
+
+inline
+
+ +

Template operator >> implementation for for all by value/ref parameters.

+
Note
In the case _Dst_t size is not a integer multiple of device's data size this will fail by static assertion
+
Parameters
+ + +
dstReference to destination
+
+
+
Returns
Reference to this device for chaining
+ +

Definition at line 129 of file in_dev.h.

+ +
+
+ +

◆ operator>>() [2/3]

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+
+template<typename _Dst_t >
+ + + + + +
+ + + + + + + + +
in_dev_t& utl::in_dev< impl_t, data_t, streamsize >::operator>> (_Dst_t * dst)
+
+delete
+
+ +

Specialization to disallow pointer types as destination.

+ +
+
+ +

◆ operator>>() [3/3]

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + + +
+ + + + + + + + +
in_dev_t& utl::in_dev< impl_t, data_t, streamsize >::operator>> (data_t & dst)
+
+inline
+
+ +

Overload for single data_t object.

+ +

Definition at line 140 of file in_dev.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/doc/html/classutl_1_1in__dev.js b/doc/html/classutl_1_1in__dev.js new file mode 100644 index 0000000..bfa61ba --- /dev/null +++ b/doc/html/classutl_1_1in__dev.js @@ -0,0 +1,27 @@ +var classutl_1_1in__dev = +[ + [ "const_iterator", "classutl_1_1in__dev.html#a686e6cda465a7e08b29465a75740e043", null ], + [ "data_type", "classutl_1_1in__dev.html#acb38742b242e8cf90323d46a9907863d", null ], + [ "in_dev_t", "classutl_1_1in__dev.html#a1bcb5426bf837e27c9fa6128f25d2857", null ], + [ "iterator", "classutl_1_1in__dev.html#a629f2364e2ab427cbdc0c7f1cb8e8a66", null ], + [ "pointer_type", "classutl_1_1in__dev.html#aef4b5c41ab91ef284cfc0cf6100c0828", null ], + [ "type", "classutl_1_1in__dev.html#adef54df1c3d4ae20629ecfdb7826384c", null ], + [ "~in_dev", "classutl_1_1in__dev.html#a2caa0f47e6132f051bb54b1acea37fc6", null ], + [ "in_dev", "classutl_1_1in__dev.html#a1ca16c382f5e0dd25089a4e06a40f2f2", null ], + [ "in_dev", "classutl_1_1in__dev.html#a570c94b183eff6f8ca2d7d9ab5d9a7ea", null ], + [ "_CRTP_IMPL", "classutl_1_1in__dev.html#a370913d250e982328560b034adf227c0", null ], + [ "begin", "classutl_1_1in__dev.html#ab2158d8a134dff882a3eac2960da04c0", null ], + [ "begin", "classutl_1_1in__dev.html#af81ff90ccb0070ad9388bc032d6d3279", null ], + [ "cbegin", "classutl_1_1in__dev.html#a1120a80c871e1ea8165b4943c767893d", null ], + [ "cend", "classutl_1_1in__dev.html#ac54d9a1fb6241be460ffc792aac18b24", null ], + [ "end", "classutl_1_1in__dev.html#aae7797f366d25091b63ad87b34ed4b48", null ], + [ "end", "classutl_1_1in__dev.html#aecb438cbb0e2a6c3a926aad81e8c29c7", null ], + [ "get", "classutl_1_1in__dev.html#aa13a075d41f3e020f4f67c2a59d580a5", null ], + [ "get", "classutl_1_1in__dev.html#a5536fdd877bc9f078a9ede43ccc283e7", null ], + [ "get_", "classutl_1_1in__dev.html#a243dbc2e6acd2c2baf56c3c9861a0abf", null ], + [ "get_", "classutl_1_1in__dev.html#a374e6cc495d5885ee6be8973c5f4eb8e", null ], + [ "operator=", "classutl_1_1in__dev.html#a55dc56f1277b2bd04b154fbf19d8853f", null ], + [ "operator>>", "classutl_1_1in__dev.html#abe8aa85c0dbe0ddb3745ded02b4e68fe", null ], + [ "operator>>", "classutl_1_1in__dev.html#a60b3bba96e6bfd2091e594fdbc93fd6f", null ], + [ "operator>>", "classutl_1_1in__dev.html#a98774619e8575162a8be271833282690", null ] +]; \ No newline at end of file diff --git a/doc/html/classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4-members.html b/doc/html/classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4-members.html new file mode 100644 index 0000000..7aed299 --- /dev/null +++ b/doc/html/classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4-members.html @@ -0,0 +1,130 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
utl::in_dev< virtual_tag, data_t, streamsize > Member List
+
+
+ +

This is the complete list of members for utl::in_dev< virtual_tag, data_t, streamsize >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + +
begin() noexceptutl::in_dev< virtual_tag, data_t, streamsize >inline
begin() const noexceptutl::in_dev< virtual_tag, data_t, streamsize >inline
cbegin() const noexceptutl::in_dev< virtual_tag, data_t, streamsize >inline
cend() const noexceptutl::in_dev< virtual_tag, data_t, streamsize >inline
const_iterator typedefutl::in_dev< virtual_tag, data_t, streamsize >
data_type typedefutl::in_dev< virtual_tag, data_t, streamsize >
end() noexceptutl::in_dev< virtual_tag, data_t, streamsize >inline
end() const noexceptutl::in_dev< virtual_tag, data_t, streamsize >inline
get(data_t &data)utl::in_dev< virtual_tag, data_t, streamsize >inline
get(data_t *data, size_t n)utl::in_dev< virtual_tag, data_t, streamsize >inline
get_(data_t &data)=0utl::in_dev< virtual_tag, data_t, streamsize >privatepure virtual
get_(data_t *data, size_t n)=0utl::in_dev< virtual_tag, data_t, streamsize >privatepure virtual
in_dev()=defaultutl::in_dev< virtual_tag, data_t, streamsize >protected
in_dev(const in_dev_t &)=deleteutl::in_dev< virtual_tag, data_t, streamsize >protected
in_dev_t typedefutl::in_dev< virtual_tag, data_t, streamsize >private
iterator typedefutl::in_dev< virtual_tag, data_t, streamsize >
operator=(const in_dev_t &)=deleteutl::in_dev< virtual_tag, data_t, streamsize >protected
operator>>(_Dst_t &dst)utl::in_dev< virtual_tag, data_t, streamsize >inline
operator>>(_Dst_t *dst)=deleteutl::in_dev< virtual_tag, data_t, streamsize >
operator>>(data_t &dst)utl::in_dev< virtual_tag, data_t, streamsize >inline
pointer_type typedefutl::in_dev< virtual_tag, data_t, streamsize >
type typedefutl::in_dev< virtual_tag, data_t, streamsize >
~in_dev()=defaultutl::in_dev< virtual_tag, data_t, streamsize >virtual
+
+ + + + diff --git a/doc/html/classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html b/doc/html/classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html new file mode 100644 index 0000000..65ffa88 --- /dev/null +++ b/doc/html/classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html @@ -0,0 +1,901 @@ + + + + + + + +uTL: utl::in_dev< virtual_tag, data_t, streamsize > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
utl::in_dev< virtual_tag, data_t, streamsize > Class Template Referenceabstract
+
+
+ +

A virtual base class specialization. + More...

+ +

#include <in_dev.h>

+ + + + + + + + + + +

+Public Types

using type = in_dev_t
 Export type as identity meta-function. More...
 
using data_type = data_t
 
using pointer_type = data_t *
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Public Get interface
size_t get (data_t &data)
 
size_t get (data_t *data, size_t n)
 
Stream operator >> interface
template<typename _Dst_t >
in_dev_toperator>> (_Dst_t &dst)
 Template operator >> implementation for for all by value/ref parameters. More...
 
template<typename _Dst_t >
in_dev_toperator>> (_Dst_t *dst)=delete
 specialization to disallow pointer types as destination More...
 
in_dev_toperator>> (data_t &dst)
 Overload for single data_t object. More...
 
iterator end () noexcept
 
const_iterator end () const noexcept
 
const_iterator cend () const noexcept
 
+ + + + +

+Private Types

using in_dev_t = in_dev< virtual_tag, data_t, streamsize >
 < class type syntactic sugar More...
 
+ + + + + + + + +

+Private Member Functions

Common input device interface requirements
virtual size_t get_ (data_t &data)=0
 Get interface. This function should read a single data_t object from device in blocking mode. More...
 
virtual size_t get_ (data_t *data, size_t n)=0
 Old stile get functionality using free standing data_t*. This function should return a stream of data from device. More...
 
+ + + + + + + + + + + + +

+Constructor / Destructor

virtual ~in_dev ()=default
 Virtual destructor. More...
 
 in_dev ()=default
 A default constructor from derived only. More...
 
 in_dev (const in_dev_t &)=delete
 No copies. More...
 
in_dev_toperator= (const in_dev_t &)=delete
 
+ + + + + + + + + + + + + + +

+STL-like Input iterator interface

using iterator = indev_it< in_dev_t, data_t *, streamsize >
 Iterator. More...
 
using const_iterator = indev_it< in_dev_t, const data_t *, streamsize >
 Const iterator. More...
 
iterator begin () noexcept
 .begin implementation More...
 
const_iterator begin () const noexcept
 
const_iterator cbegin () const noexcept
 
+

Detailed Description

+

template<typename data_t, size_t streamsize>
+class utl::in_dev< virtual_tag, data_t, streamsize >

+ +

A virtual base class specialization.

+
Parameters
+ + + + +
impl_t= virtual_tag
data_tThe devices base type of data
streamsize_tType to hold the number of read bytes
+
+
+ +

Definition at line 174 of file in_dev.h.

+

Member Typedef Documentation

+ +

◆ const_iterator

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + +
using utl::in_dev< virtual_tag, data_t, streamsize >::const_iterator = indev_it <in_dev_t, const data_t*, streamsize>
+
+ +

Const iterator.

+ +

Definition at line 271 of file in_dev.h.

+ +
+
+ +

◆ data_type

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + +
using utl::in_dev< virtual_tag, data_t, streamsize >::data_type = data_t
+
+

Export types as input device concept demands

+ +

Definition at line 181 of file in_dev.h.

+ +
+
+ +

◆ in_dev_t

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + + +
+ + + + +
using utl::in_dev< virtual_tag, data_t, streamsize >::in_dev_t = in_dev <virtual_tag, data_t, streamsize>
+
+private
+
+ +

< class type syntactic sugar

+ +

Definition at line 176 of file in_dev.h.

+ +
+
+ +

◆ iterator

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + +
using utl::in_dev< virtual_tag, data_t, streamsize >::iterator = indev_it <in_dev_t, data_t*, streamsize>
+
+ +

Iterator.

+ +

Definition at line 270 of file in_dev.h.

+ +
+
+ +

◆ pointer_type

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + +
using utl::in_dev< virtual_tag, data_t, streamsize >::pointer_type = data_t*
+
+ +

Definition at line 182 of file in_dev.h.

+ +
+
+ +

◆ type

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + +
using utl::in_dev< virtual_tag, data_t, streamsize >::type = in_dev_t
+
+ +

Export type as identity meta-function.

+ +

Definition at line 184 of file in_dev.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ ~in_dev()

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + + +
+ + + + + + + +
virtual utl::in_dev< virtual_tag, data_t, streamsize >::~in_dev ()
+
+virtualdefault
+
+ +

Virtual destructor.

+ +
+
+ +

◆ in_dev() [1/2]

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + + +
+ + + + + + + +
utl::in_dev< virtual_tag, data_t, streamsize >::in_dev ()
+
+protecteddefault
+
+ +

A default constructor from derived only.

+ +
+
+ +

◆ in_dev() [2/2]

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + + +
+ + + + + + + + +
utl::in_dev< virtual_tag, data_t, streamsize >::in_dev (const in_dev_t)
+
+protecteddelete
+
+ +

No copies.

+ +
+
+

Member Function Documentation

+ +

◆ begin() [1/2]

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + + +
+ + + + + + + +
iterator utl::in_dev< virtual_tag, data_t, streamsize >::begin ()
+
+inlinenoexcept
+
+ +

.begin implementation

+ +

Definition at line 274 of file in_dev.h.

+ +
+
+ +

◆ begin() [2/2]

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + + +
+ + + + + + + +
const_iterator utl::in_dev< virtual_tag, data_t, streamsize >::begin () const
+
+inlinenoexcept
+
+ +

Definition at line 275 of file in_dev.h.

+ +
+
+ +

◆ cbegin()

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + + +
+ + + + + + + +
const_iterator utl::in_dev< virtual_tag, data_t, streamsize >::cbegin () const
+
+inlinenoexcept
+
+ +

Definition at line 276 of file in_dev.h.

+ +
+
+ +

◆ cend()

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + + +
+ + + + + + + +
const_iterator utl::in_dev< virtual_tag, data_t, streamsize >::cend () const
+
+inlinenoexcept
+
+ +

Definition at line 281 of file in_dev.h.

+ +
+
+ +

◆ end() [1/2]

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + + +
+ + + + + + + +
iterator utl::in_dev< virtual_tag, data_t, streamsize >::end ()
+
+inlinenoexcept
+
+

.end implementation

+ +

Definition at line 279 of file in_dev.h.

+ +
+
+ +

◆ end() [2/2]

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + + +
+ + + + + + + +
const_iterator utl::in_dev< virtual_tag, data_t, streamsize >::end () const
+
+inlinenoexcept
+
+ +

Definition at line 280 of file in_dev.h.

+ +
+
+ +

◆ get() [1/2]

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + + +
+ + + + + + + + +
size_t utl::in_dev< virtual_tag, data_t, streamsize >::get (data_t & data)
+
+inline
+
+ +

Definition at line 230 of file in_dev.h.

+ +
+
+ +

◆ get() [2/2]

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
size_t utl::in_dev< virtual_tag, data_t, streamsize >::get (data_t * data,
size_t n 
)
+
+inline
+
+ +

Definition at line 231 of file in_dev.h.

+ +
+
+ +

◆ get_() [1/2]

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + + +
+ + + + + + + + +
virtual size_t utl::in_dev< virtual_tag, data_t, streamsize >::get_ (data_t & data)
+
+privatepure virtual
+
+ +

Get interface. This function should read a single data_t object from device in blocking mode.

+
Parameters
+ + +
dataReference to data output from device.
+
+
+
Returns
Number of data read from device
+
Note
A successful call should return 1
+ +
+
+ +

◆ get_() [2/2]

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual size_t utl::in_dev< virtual_tag, data_t, streamsize >::get_ (data_t * data,
size_t n 
)
+
+privatepure virtual
+
+ +

Old stile get functionality using free standing data_t*. This function should return a stream of data from device.

+
Parameters
+ + + +
dataPointer to buffer to write the data from device.
nThe number of data of type data_t to read
+
+
+
Returns
The read data items.
+ +
+
+ +

◆ operator=()

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + + +
+ + + + + + + + +
in_dev_t& utl::in_dev< virtual_tag, data_t, streamsize >::operator= (const in_dev_t)
+
+protecteddelete
+
+

No copy assignments

+ +
+
+ +

◆ operator>>() [1/3]

+ +
+
+
+template<typename data_t , size_t streamsize>
+
+template<typename _Dst_t >
+ + + + + +
+ + + + + + + + +
in_dev_t& utl::in_dev< virtual_tag, data_t, streamsize >::operator>> (_Dst_t & dst)
+
+inline
+
+ +

Template operator >> implementation for for all by value/ref parameters.

+
Note
In the case _Dst_t size is not a integer multiple of device's data size this will fail by static assertion
+
Parameters
+ + +
dstReference to destination
+
+
+
Returns
Reference to this device for chaining
+ +

Definition at line 249 of file in_dev.h.

+ +
+
+ +

◆ operator>>() [2/3]

+ +
+
+
+template<typename data_t , size_t streamsize>
+
+template<typename _Dst_t >
+ + + + + +
+ + + + + + + + +
in_dev_t& utl::in_dev< virtual_tag, data_t, streamsize >::operator>> (_Dst_t * dst)
+
+delete
+
+ +

specialization to disallow pointer types as destination

+ +
+
+ +

◆ operator>>() [3/3]

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + + +
+ + + + + + + + +
in_dev_t& utl::in_dev< virtual_tag, data_t, streamsize >::operator>> (data_t & dst)
+
+inline
+
+ +

Overload for single data_t object.

+ +

Definition at line 260 of file in_dev.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/doc/html/classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.js b/doc/html/classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.js new file mode 100644 index 0000000..ae2e252 --- /dev/null +++ b/doc/html/classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.js @@ -0,0 +1,26 @@ +var classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4 = +[ + [ "const_iterator", "classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#afbb0032261579546e26972be1ab8f4e9", null ], + [ "data_type", "classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a6d418e7caeb88fa750148f1e8874dd79", null ], + [ "in_dev_t", "classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a1ab301d27deb2aef9d7298f348248ca9", null ], + [ "iterator", "classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a3a73a6ff50e2ab4c7e6cd70f560d7854", null ], + [ "pointer_type", "classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a4deebc522c75a793304a7a7ff09fb3f8", null ], + [ "type", "classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a0fd855f15733c848a77ce3dfc2f3fab7", null ], + [ "~in_dev", "classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a9cd04a9c2656fb2a92e3db35c401b6eb", null ], + [ "in_dev", "classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a63a64b133693b7786f500406edc316f6", null ], + [ "in_dev", "classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a102939ee79bd9cd937255d342f7150f1", null ], + [ "begin", "classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#ace7fac9d980407acc9b6484592c74367", null ], + [ "begin", "classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#aa1ce4d2193e476156df1b03f39503f7c", null ], + [ "cbegin", "classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#ae1960ea2ffdf369a0c180b57007e0af6", null ], + [ "cend", "classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a08ffb1ab825979c182f042eeeaea57f3", null ], + [ "end", "classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a9425910f709853ff9cd70b2331a026cc", null ], + [ "end", "classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a2b723a67fce37e74b594ee9c5dc07030", null ], + [ "get", "classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#aed9cb2dea774c6569b5e63aec8e0b50c", null ], + [ "get", "classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a12c2da025b94a200fc73133c206c017e", null ], + [ "get_", "classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a23f3d6612d29c53c3ab09c6adf7e1bff", null ], + [ "get_", "classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#ad8c95f8b4cf9b22e0dbecbf62fdf584e", null ], + [ "operator=", "classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#ab9b57ad0f6857b657bc6a870986f8648", null ], + [ "operator>>", "classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a762d865283d5d990885a0851fddf24ee", null ], + [ "operator>>", "classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a57e046ec714ccd6a0bd2b2878de85f18", null ], + [ "operator>>", "classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a645886b95bec35e1d8a9d9247d47527a", null ] +]; \ No newline at end of file diff --git a/doc/html/classutl_1_1inbuf__dev-members.html b/doc/html/classutl_1_1inbuf__dev-members.html new file mode 100644 index 0000000..ebc0c5b --- /dev/null +++ b/doc/html/classutl_1_1inbuf__dev-members.html @@ -0,0 +1,133 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
utl::inbuf_dev< impl_t, data_t, streamsize > Member List
+
+
+ +

This is the complete list of members for utl::inbuf_dev< impl_t, data_t, streamsize >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
_CRTP_IMPL(impl_t)utl::inbuf_dev< impl_t, data_t, streamsize >private
begin() noexceptutl::inbuf_dev< impl_t, data_t, streamsize >inline
begin() const noexceptutl::inbuf_dev< impl_t, data_t, streamsize >inline
cbegin() const noexceptutl::inbuf_dev< impl_t, data_t, streamsize >inline
cend() const noexceptutl::inbuf_dev< impl_t, data_t, streamsize >inline
const_iterator typedefutl::inbuf_dev< impl_t, data_t, streamsize >
data_type typedefutl::inbuf_dev< impl_t, data_t, streamsize >
end() noexceptutl::inbuf_dev< impl_t, data_t, streamsize >inline
end() const noexceptutl::inbuf_dev< impl_t, data_t, streamsize >inline
get(data_t &data)utl::inbuf_dev< impl_t, data_t, streamsize >inline
get(data_t *data, size_t n)utl::inbuf_dev< impl_t, data_t, streamsize >inline
get_(data_t &data)utl::inbuf_dev< impl_t, data_t, streamsize >inlineprivate
get_(data_t *data, size_t n)utl::inbuf_dev< impl_t, data_t, streamsize >inlineprivate
in_avail()utl::inbuf_dev< impl_t, data_t, streamsize >inline
in_avail_()utl::inbuf_dev< impl_t, data_t, streamsize >inlineprivate
inbuf_dev()=defaultutl::inbuf_dev< impl_t, data_t, streamsize >protected
inbuf_dev(const inbuf_dev_t &)=deleteutl::inbuf_dev< impl_t, data_t, streamsize >protected
inbuf_dev_t typedefutl::inbuf_dev< impl_t, data_t, streamsize >private
iterator typedefutl::inbuf_dev< impl_t, data_t, streamsize >
operator=(const inbuf_dev_t &)=deleteutl::inbuf_dev< impl_t, data_t, streamsize >protected
operator>>(_Dst_t &dst)utl::inbuf_dev< impl_t, data_t, streamsize >inline
operator>>(_Dst_t *dst)=deleteutl::inbuf_dev< impl_t, data_t, streamsize >
operator>>(data_t &dst)utl::inbuf_dev< impl_t, data_t, streamsize >inline
pointer_type typedefutl::inbuf_dev< impl_t, data_t, streamsize >
type typedefutl::inbuf_dev< impl_t, data_t, streamsize >
~inbuf_dev()=defaultutl::inbuf_dev< impl_t, data_t, streamsize >protected
+
+ + + + diff --git a/doc/html/classutl_1_1inbuf__dev.html b/doc/html/classutl_1_1inbuf__dev.html new file mode 100644 index 0000000..0f29246 --- /dev/null +++ b/doc/html/classutl_1_1inbuf__dev.html @@ -0,0 +1,1009 @@ + + + + + + + +uTL: utl::inbuf_dev< impl_t, data_t, streamsize > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
utl::inbuf_dev< impl_t, data_t, streamsize > Class Template Reference
+
+
+ +

Abstract base class for input buffered devices. + More...

+ +

#include <inbuf_dev.h>

+ + + + + + + + + + +

+Public Types

using type = inbuf_dev_t
 Export type as identity meta-function. More...
 
using data_type = data_t
 
using pointer_type = data_t *
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Public Get interface
size_t in_avail ()
 
size_t get (data_t &data)
 The base get interface. This function should read a single data_t object from device usually in non-blocking mode. More...
 
size_t get (data_t *data, size_t n)
 Old stile get functionality using free standing data_t*. This function should return a stream of data from device. More...
 
Stream operator >> interface
template<typename _Dst_t >
inbuf_dev_toperator>> (_Dst_t &dst)
 Template operator >> implementation for for all by value/ref parameters. More...
 
template<typename _Dst_t >
inbuf_dev_toperator>> (_Dst_t *dst)=delete
 Specialization to disallow pointer types as destination. More...
 
inbuf_dev_toperator>> (data_t &dst)
 Overload for single data_t object. More...
 
iterator end () noexcept
 
const_iterator end () const noexcept
 
const_iterator cend () const noexcept
 
+ + + + + + + + + + + + + +

+Protected Member Functions

Constructor / Destructor
 ~inbuf_dev ()=default
 Allow destructor from derived only. More...
 
 inbuf_dev ()=default
 A default constructor from derived only. More...
 
 inbuf_dev (const inbuf_dev_t &)=delete
 No copies. More...
 
inbuf_dev_toperator= (const inbuf_dev_t &)=delete
 
+ + + + +

+Private Types

using inbuf_dev_t = inbuf_dev< impl_t, data_t, streamsize >
 class type syntactic sugar More...
 
+ + + + + + + + + + +

+Private Member Functions

 _CRTP_IMPL (impl_t)
 
Common input device interface requirements
size_t in_avail_ ()
 
size_t get_ (data_t &data)
 
size_t get_ (data_t *data, size_t n)
 
+ + + + + + + + + + + + + + +

+STL-like Input iterator interface

using iterator = indev_it< inbuf_dev_t, data_t *, streamsize >
 Iterator. More...
 
using const_iterator = indev_it< inbuf_dev_t, const data_t *, streamsize >
 Const iterator. More...
 
iterator begin () noexcept
 .begin implementation More...
 
const_iterator begin () const noexcept
 
const_iterator cbegin () const noexcept
 
+

Detailed Description

+

template<typename impl_t, typename data_t, size_t streamsize = 0>
+class utl::inbuf_dev< impl_t, data_t, streamsize >

+ +

Abstract base class for input buffered devices.

+

Template base class for buffered input buffered devices. using CRTP

+

This class force a common interface for input, buffered devices. By using this common interface the class implements

    +
  • Stream-like extracting operator
  • +
  • Input iterator
  • +
  • Const input iterator to inherit to implementation.
  • +
+
Parameters
+ + + + +
impl_tThe CRTP type (the derived/implementation class typename).
data_tThe devices base type of data
streamsizeThe number of elements to indicate eos.
    +
  • None or 0 Stream only. No iterator as begin() now equals end().
  • +
+
+
+
+ +

Definition at line 55 of file inbuf_dev.h.

+

Member Typedef Documentation

+ +

◆ const_iterator

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + +
using utl::inbuf_dev< impl_t, data_t, streamsize >::const_iterator = indev_it <inbuf_dev_t, const data_t*, streamsize>
+
+ +

Const iterator.

+ +

Definition at line 162 of file inbuf_dev.h.

+ +
+
+ +

◆ data_type

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + +
using utl::inbuf_dev< impl_t, data_t, streamsize >::data_type = data_t
+
+

Export types as input device concept demands

+ +

Definition at line 62 of file inbuf_dev.h.

+ +
+
+ +

◆ inbuf_dev_t

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + + +
+ + + + +
using utl::inbuf_dev< impl_t, data_t, streamsize >::inbuf_dev_t = inbuf_dev <impl_t, data_t, streamsize>
+
+private
+
+ +

class type syntactic sugar

+ +

Definition at line 57 of file inbuf_dev.h.

+ +
+
+ +

◆ iterator

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + +
using utl::inbuf_dev< impl_t, data_t, streamsize >::iterator = indev_it <inbuf_dev_t, data_t*, streamsize>
+
+ +

Iterator.

+ +

Definition at line 161 of file inbuf_dev.h.

+ +
+
+ +

◆ pointer_type

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + +
using utl::inbuf_dev< impl_t, data_t, streamsize >::pointer_type = data_t*
+
+ +

Definition at line 63 of file inbuf_dev.h.

+ +
+
+ +

◆ type

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + +
using utl::inbuf_dev< impl_t, data_t, streamsize >::type = inbuf_dev_t
+
+ +

Export type as identity meta-function.

+ +

Definition at line 65 of file inbuf_dev.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ ~inbuf_dev()

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + + +
+ + + + + + + +
utl::inbuf_dev< impl_t, data_t, streamsize >::~inbuf_dev ()
+
+protecteddefault
+
+ +

Allow destructor from derived only.

+ +
+
+ +

◆ inbuf_dev() [1/2]

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + + +
+ + + + + + + +
utl::inbuf_dev< impl_t, data_t, streamsize >::inbuf_dev ()
+
+protecteddefault
+
+ +

A default constructor from derived only.

+ +
+
+ +

◆ inbuf_dev() [2/2]

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + + +
+ + + + + + + + +
utl::inbuf_dev< impl_t, data_t, streamsize >::inbuf_dev (const inbuf_dev_t)
+
+protecteddelete
+
+ +

No copies.

+ +
+
+

Member Function Documentation

+ +

◆ _CRTP_IMPL()

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + + +
+ + + + + + + + +
utl::inbuf_dev< impl_t, data_t, streamsize >::_CRTP_IMPL (impl_t )
+
+private
+
+ +
+
+ +

◆ begin() [1/2]

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + + +
+ + + + + + + +
iterator utl::inbuf_dev< impl_t, data_t, streamsize >::begin ()
+
+inlinenoexcept
+
+ +

.begin implementation

+ +

Definition at line 165 of file inbuf_dev.h.

+ +
+
+ +

◆ begin() [2/2]

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + + +
+ + + + + + + +
const_iterator utl::inbuf_dev< impl_t, data_t, streamsize >::begin () const
+
+inlinenoexcept
+
+ +

Definition at line 166 of file inbuf_dev.h.

+ +
+
+ +

◆ cbegin()

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + + +
+ + + + + + + +
const_iterator utl::inbuf_dev< impl_t, data_t, streamsize >::cbegin () const
+
+inlinenoexcept
+
+ +

Definition at line 167 of file inbuf_dev.h.

+ +
+
+ +

◆ cend()

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + + +
+ + + + + + + +
const_iterator utl::inbuf_dev< impl_t, data_t, streamsize >::cend () const
+
+inlinenoexcept
+
+ +

Definition at line 172 of file inbuf_dev.h.

+ +
+
+ +

◆ end() [1/2]

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + + +
+ + + + + + + +
iterator utl::inbuf_dev< impl_t, data_t, streamsize >::end ()
+
+inlinenoexcept
+
+

.end implementation

+ +

Definition at line 170 of file inbuf_dev.h.

+ +
+
+ +

◆ end() [2/2]

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + + +
+ + + + + + + +
const_iterator utl::inbuf_dev< impl_t, data_t, streamsize >::end () const
+
+inlinenoexcept
+
+ +

Definition at line 171 of file inbuf_dev.h.

+ +
+
+ +

◆ get() [1/2]

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + + +
+ + + + + + + + +
size_t utl::inbuf_dev< impl_t, data_t, streamsize >::get (data_t & data)
+
+inline
+
+ +

The base get interface. This function should read a single data_t object from device usually in non-blocking mode.

+
Parameters
+ + +
dataReference to data output from device.
+
+
+
Returns
Number of data read from device
+
Note
A successful call should return 1
+ +

Definition at line 108 of file inbuf_dev.h.

+ +
+
+ +

◆ get() [2/2]

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
size_t utl::inbuf_dev< impl_t, data_t, streamsize >::get (data_t * data,
size_t n 
)
+
+inline
+
+ +

Old stile get functionality using free standing data_t*. This function should return a stream of data from device.

+
Parameters
+ + + +
dataPointer to buffer to write the data from device.
nThe number of data of type data_t to read
+
+
+
Returns
The read data items.
+ +

Definition at line 120 of file inbuf_dev.h.

+ +
+
+ +

◆ get_() [1/2]

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + + +
+ + + + + + + + +
size_t utl::inbuf_dev< impl_t, data_t, streamsize >::get_ (data_t & data)
+
+inlineprivate
+
+ +

Definition at line 82 of file inbuf_dev.h.

+ +
+
+ +

◆ get_() [2/2]

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
size_t utl::inbuf_dev< impl_t, data_t, streamsize >::get_ (data_t * data,
size_t n 
)
+
+inlineprivate
+
+ +

Definition at line 83 of file inbuf_dev.h.

+ +
+
+ +

◆ in_avail()

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + + +
+ + + + + + + +
size_t utl::inbuf_dev< impl_t, data_t, streamsize >::in_avail ()
+
+inline
+
+
Returns
The available data_t typed items in input buffer.
+ +

Definition at line 95 of file inbuf_dev.h.

+ +
+
+ +

◆ in_avail_()

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + + +
+ + + + + + + +
size_t utl::inbuf_dev< impl_t, data_t, streamsize >::in_avail_ ()
+
+inlineprivate
+
+ +

Definition at line 81 of file inbuf_dev.h.

+ +
+
+ +

◆ operator=()

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + + +
+ + + + + + + + +
inbuf_dev_t& utl::inbuf_dev< impl_t, data_t, streamsize >::operator= (const inbuf_dev_t)
+
+protecteddelete
+
+

No copy assignments

+ +
+
+ +

◆ operator>>() [1/3]

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+
+template<typename _Dst_t >
+ + + + + +
+ + + + + + + + +
inbuf_dev_t& utl::inbuf_dev< impl_t, data_t, streamsize >::operator>> (_Dst_t & dst)
+
+inline
+
+ +

Template operator >> implementation for for all by value/ref parameters.

+
Note
In the case _Dst_t size is not a integer multiple of device's data size this will fail by static assertion
+
Parameters
+ + +
dstReference to destination
+
+
+
Returns
Reference to this device for chaining
+ +

Definition at line 140 of file inbuf_dev.h.

+ +
+
+ +

◆ operator>>() [2/3]

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+
+template<typename _Dst_t >
+ + + + + +
+ + + + + + + + +
inbuf_dev_t& utl::inbuf_dev< impl_t, data_t, streamsize >::operator>> (_Dst_t * dst)
+
+delete
+
+ +

Specialization to disallow pointer types as destination.

+ +
+
+ +

◆ operator>>() [3/3]

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + + +
+ + + + + + + + +
inbuf_dev_t& utl::inbuf_dev< impl_t, data_t, streamsize >::operator>> (data_t & dst)
+
+inline
+
+ +

Overload for single data_t object.

+ +

Definition at line 151 of file inbuf_dev.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/doc/html/classutl_1_1inbuf__dev.js b/doc/html/classutl_1_1inbuf__dev.js new file mode 100644 index 0000000..48570fb --- /dev/null +++ b/doc/html/classutl_1_1inbuf__dev.js @@ -0,0 +1,29 @@ +var classutl_1_1inbuf__dev = +[ + [ "const_iterator", "classutl_1_1inbuf__dev.html#a173c37503cdd40e7ac1be25759553c24", null ], + [ "data_type", "classutl_1_1inbuf__dev.html#ae660dce5b5111b0ea4743e32b3d2c3aa", null ], + [ "inbuf_dev_t", "classutl_1_1inbuf__dev.html#abd832bf35fa1ae0881e8cd86386e5b6b", null ], + [ "iterator", "classutl_1_1inbuf__dev.html#a0c0827ae69fac778cec3abb179bfc0f3", null ], + [ "pointer_type", "classutl_1_1inbuf__dev.html#a345d3b465e9cf57ebe3a8df31b67fec7", null ], + [ "type", "classutl_1_1inbuf__dev.html#ae429fbf167bbd96b2cc46094f3540b10", null ], + [ "~inbuf_dev", "classutl_1_1inbuf__dev.html#a55763f1c3ba5610404df70bda1abe75b", null ], + [ "inbuf_dev", "classutl_1_1inbuf__dev.html#a9bc1f15ed57132539749d390d5bb03b9", null ], + [ "inbuf_dev", "classutl_1_1inbuf__dev.html#a0fe7d9f726d8a0f2b23df6d9520b58ed", null ], + [ "_CRTP_IMPL", "classutl_1_1inbuf__dev.html#a6fe2f35813f2b4e94d8d21a4403c8221", null ], + [ "begin", "classutl_1_1inbuf__dev.html#a0b7b02345e2306dc9f62a75029de71fb", null ], + [ "begin", "classutl_1_1inbuf__dev.html#acf6f21857302843661cdbbbeea61f05b", null ], + [ "cbegin", "classutl_1_1inbuf__dev.html#a3c24ad3be57e15019e3fbd579e5fccb3", null ], + [ "cend", "classutl_1_1inbuf__dev.html#a4b51121e0ecc1d43fd3fe7d05bb6fa56", null ], + [ "end", "classutl_1_1inbuf__dev.html#aea05a40b3c8966d1dd3978b40e0c6ac8", null ], + [ "end", "classutl_1_1inbuf__dev.html#aa862f748551da0bd92341f8f125b8aa3", null ], + [ "get", "classutl_1_1inbuf__dev.html#a7856963b0bb0bf294be53ea20f3564d0", null ], + [ "get", "classutl_1_1inbuf__dev.html#a9290fbfeebac0d161f800bc1522ea5a6", null ], + [ "get_", "classutl_1_1inbuf__dev.html#ab2be58702c31d59e02683d5ff43c9dd6", null ], + [ "get_", "classutl_1_1inbuf__dev.html#a2f835b56beec0efc5d1cd2088e6a40cb", null ], + [ "in_avail", "classutl_1_1inbuf__dev.html#aa5b71a9b0c989c4686a053e9d5df9251", null ], + [ "in_avail_", "classutl_1_1inbuf__dev.html#ac7af0c7df9eee2bcf02579b0fd1d8dea", null ], + [ "operator=", "classutl_1_1inbuf__dev.html#a7aaf5bc892d6247cb6bb547cf331704c", null ], + [ "operator>>", "classutl_1_1inbuf__dev.html#aca17fb240dfe221effa5a2092563d185", null ], + [ "operator>>", "classutl_1_1inbuf__dev.html#a48a8160d1dce4542b0b09cff3f6a488b", null ], + [ "operator>>", "classutl_1_1inbuf__dev.html#a6b11ed7628520b4dfe0bd438ccc58197", null ] +]; \ No newline at end of file diff --git a/doc/html/classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4-members.html b/doc/html/classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4-members.html new file mode 100644 index 0000000..a6d0717 --- /dev/null +++ b/doc/html/classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4-members.html @@ -0,0 +1,132 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
utl::inbuf_dev< virtual_tag, data_t, streamsize > Member List
+
+
+ +

This is the complete list of members for utl::inbuf_dev< virtual_tag, data_t, streamsize >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
begin() noexceptutl::inbuf_dev< virtual_tag, data_t, streamsize >inline
begin() const noexceptutl::inbuf_dev< virtual_tag, data_t, streamsize >inline
cbegin() const noexceptutl::inbuf_dev< virtual_tag, data_t, streamsize >inline
cend() const noexceptutl::inbuf_dev< virtual_tag, data_t, streamsize >inline
const_iterator typedefutl::inbuf_dev< virtual_tag, data_t, streamsize >
data_type typedefutl::inbuf_dev< virtual_tag, data_t, streamsize >
end() noexceptutl::inbuf_dev< virtual_tag, data_t, streamsize >inline
end() const noexceptutl::inbuf_dev< virtual_tag, data_t, streamsize >inline
get(data_t &data)utl::inbuf_dev< virtual_tag, data_t, streamsize >inline
get(data_t *data, size_t n)utl::inbuf_dev< virtual_tag, data_t, streamsize >inline
get_(data_t &data)=0utl::inbuf_dev< virtual_tag, data_t, streamsize >privatepure virtual
get_(data_t *data, size_t n)=0utl::inbuf_dev< virtual_tag, data_t, streamsize >privatepure virtual
in_avail()utl::inbuf_dev< virtual_tag, data_t, streamsize >inline
in_avail_()=0utl::inbuf_dev< virtual_tag, data_t, streamsize >privatepure virtual
inbuf_dev()=defaultutl::inbuf_dev< virtual_tag, data_t, streamsize >protected
inbuf_dev(const inbuf_dev_t &)=deleteutl::inbuf_dev< virtual_tag, data_t, streamsize >protected
inbuf_dev_t typedefutl::inbuf_dev< virtual_tag, data_t, streamsize >private
iterator typedefutl::inbuf_dev< virtual_tag, data_t, streamsize >
operator=(const inbuf_dev_t &)=deleteutl::inbuf_dev< virtual_tag, data_t, streamsize >protected
operator>>(_Dst_t &dst)utl::inbuf_dev< virtual_tag, data_t, streamsize >inline
operator>>(_Dst_t *dst)=deleteutl::inbuf_dev< virtual_tag, data_t, streamsize >
operator>>(data_t &dst)utl::inbuf_dev< virtual_tag, data_t, streamsize >inline
pointer_type typedefutl::inbuf_dev< virtual_tag, data_t, streamsize >
type typedefutl::inbuf_dev< virtual_tag, data_t, streamsize >
~inbuf_dev()=defaultutl::inbuf_dev< virtual_tag, data_t, streamsize >virtual
+
+ + + + diff --git a/doc/html/classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html b/doc/html/classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html new file mode 100644 index 0000000..be0b32e --- /dev/null +++ b/doc/html/classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html @@ -0,0 +1,965 @@ + + + + + + + +uTL: utl::inbuf_dev< virtual_tag, data_t, streamsize > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
utl::inbuf_dev< virtual_tag, data_t, streamsize > Class Template Referenceabstract
+
+
+ +

A virtual base class specialization. + More...

+ +

#include <inbuf_dev.h>

+ + + + + + + + + + +

+Public Types

using type = inbuf_dev_t
 Export type as identity meta-function. More...
 
using data_type = data_t
 
using pointer_type = data_t *
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Public Get interface
size_t in_avail ()
 
size_t get (data_t &data)
 
size_t get (data_t *data, size_t n)
 
Stream operator >> interface
template<typename _Dst_t >
inbuf_dev_toperator>> (_Dst_t &dst)
 Template operator >> implementation for for all by value/ref parameters. More...
 
template<typename _Dst_t >
inbuf_dev_toperator>> (_Dst_t *dst)=delete
 specialization to disallow pointer types as destination More...
 
inbuf_dev_toperator>> (data_t &dst)
 Overload for single data_t object. More...
 
iterator end () noexcept
 
const_iterator end () const noexcept
 
const_iterator cend () const noexcept
 
+ + + + +

+Private Types

using inbuf_dev_t = inbuf_dev< virtual_tag, data_t, streamsize >
 < class type syntactic sugar More...
 
+ + + + + + + + + + +

+Private Member Functions

Common input device interface requirements
virtual size_t in_avail_ ()=0
 
virtual size_t get_ (data_t &data)=0
 The base get interface. This function should read a single data_t object from device usually in non-blocking mode. More...
 
virtual size_t get_ (data_t *data, size_t n)=0
 Old stile get functionality using free standing data_t*. This function should return a stream of data from device. More...
 
+ + + + + + + + + + + + +

+Constructor / Destructor

virtual ~inbuf_dev ()=default
 Virtual destructor. More...
 
 inbuf_dev ()=default
 A default constructor from derived only. More...
 
 inbuf_dev (const inbuf_dev_t &)=delete
 No copies. More...
 
inbuf_dev_toperator= (const inbuf_dev_t &)=delete
 
+ + + + + + + + + + + + + + +

+STL-like Input iterator interface

using iterator = indev_it< inbuf_dev_t, data_t *, streamsize >
 Iterator. More...
 
using const_iterator = indev_it< inbuf_dev_t, const data_t *, streamsize >
 Const iterator. More...
 
iterator begin () noexcept
 .begin implementation More...
 
const_iterator begin () const noexcept
 
const_iterator cbegin () const noexcept
 
+

Detailed Description

+

template<typename data_t, size_t streamsize>
+class utl::inbuf_dev< virtual_tag, data_t, streamsize >

+ +

A virtual base class specialization.

+
Parameters
+ + + + +
impl_t= virtual_tag
data_tThe devices base type of data
streamsizeThe number of elements to indicate eos.
    +
  • None or 0 Stream only. No iterator as begin() now equals end().
  • +
+
+
+
+ +

Definition at line 188 of file inbuf_dev.h.

+

Member Typedef Documentation

+ +

◆ const_iterator

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + +
using utl::inbuf_dev< virtual_tag, data_t, streamsize >::const_iterator = indev_it <inbuf_dev_t, const data_t*, streamsize>
+
+ +

Const iterator.

+ +

Definition at line 291 of file inbuf_dev.h.

+ +
+
+ +

◆ data_type

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + +
using utl::inbuf_dev< virtual_tag, data_t, streamsize >::data_type = data_t
+
+

Export types as input device concept demands

+ +

Definition at line 195 of file inbuf_dev.h.

+ +
+
+ +

◆ inbuf_dev_t

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + + +
+ + + + +
using utl::inbuf_dev< virtual_tag, data_t, streamsize >::inbuf_dev_t = inbuf_dev <virtual_tag, data_t, streamsize>
+
+private
+
+ +

< class type syntactic sugar

+ +

Definition at line 190 of file inbuf_dev.h.

+ +
+
+ +

◆ iterator

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + +
using utl::inbuf_dev< virtual_tag, data_t, streamsize >::iterator = indev_it <inbuf_dev_t, data_t*, streamsize>
+
+ +

Iterator.

+ +

Definition at line 290 of file inbuf_dev.h.

+ +
+
+ +

◆ pointer_type

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + +
using utl::inbuf_dev< virtual_tag, data_t, streamsize >::pointer_type = data_t*
+
+ +

Definition at line 196 of file inbuf_dev.h.

+ +
+
+ +

◆ type

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + +
using utl::inbuf_dev< virtual_tag, data_t, streamsize >::type = inbuf_dev_t
+
+ +

Export type as identity meta-function.

+ +

Definition at line 198 of file inbuf_dev.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ ~inbuf_dev()

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + + +
+ + + + + + + +
virtual utl::inbuf_dev< virtual_tag, data_t, streamsize >::~inbuf_dev ()
+
+virtualdefault
+
+ +

Virtual destructor.

+ +
+
+ +

◆ inbuf_dev() [1/2]

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + + +
+ + + + + + + +
utl::inbuf_dev< virtual_tag, data_t, streamsize >::inbuf_dev ()
+
+protecteddefault
+
+ +

A default constructor from derived only.

+ +
+
+ +

◆ inbuf_dev() [2/2]

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + + +
+ + + + + + + + +
utl::inbuf_dev< virtual_tag, data_t, streamsize >::inbuf_dev (const inbuf_dev_t)
+
+protecteddelete
+
+ +

No copies.

+ +
+
+

Member Function Documentation

+ +

◆ begin() [1/2]

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + + +
+ + + + + + + +
iterator utl::inbuf_dev< virtual_tag, data_t, streamsize >::begin ()
+
+inlinenoexcept
+
+ +

.begin implementation

+ +

Definition at line 294 of file inbuf_dev.h.

+ +
+
+ +

◆ begin() [2/2]

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + + +
+ + + + + + + +
const_iterator utl::inbuf_dev< virtual_tag, data_t, streamsize >::begin () const
+
+inlinenoexcept
+
+ +

Definition at line 295 of file inbuf_dev.h.

+ +
+
+ +

◆ cbegin()

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + + +
+ + + + + + + +
const_iterator utl::inbuf_dev< virtual_tag, data_t, streamsize >::cbegin () const
+
+inlinenoexcept
+
+ +

Definition at line 296 of file inbuf_dev.h.

+ +
+
+ +

◆ cend()

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + + +
+ + + + + + + +
const_iterator utl::inbuf_dev< virtual_tag, data_t, streamsize >::cend () const
+
+inlinenoexcept
+
+ +

Definition at line 301 of file inbuf_dev.h.

+ +
+
+ +

◆ end() [1/2]

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + + +
+ + + + + + + +
iterator utl::inbuf_dev< virtual_tag, data_t, streamsize >::end ()
+
+inlinenoexcept
+
+

.end implementation

+ +

Definition at line 299 of file inbuf_dev.h.

+ +
+
+ +

◆ end() [2/2]

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + + +
+ + + + + + + +
const_iterator utl::inbuf_dev< virtual_tag, data_t, streamsize >::end () const
+
+inlinenoexcept
+
+ +

Definition at line 300 of file inbuf_dev.h.

+ +
+
+ +

◆ get() [1/2]

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + + +
+ + + + + + + + +
size_t utl::inbuf_dev< virtual_tag, data_t, streamsize >::get (data_t & data)
+
+inline
+
+ +

Definition at line 251 of file inbuf_dev.h.

+ +
+
+ +

◆ get() [2/2]

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
size_t utl::inbuf_dev< virtual_tag, data_t, streamsize >::get (data_t * data,
size_t n 
)
+
+inline
+
+ +

Definition at line 252 of file inbuf_dev.h.

+ +
+
+ +

◆ get_() [1/2]

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + + +
+ + + + + + + + +
virtual size_t utl::inbuf_dev< virtual_tag, data_t, streamsize >::get_ (data_t & data)
+
+privatepure virtual
+
+ +

The base get interface. This function should read a single data_t object from device usually in non-blocking mode.

+
Parameters
+ + +
dataReference to data output from device.
+
+
+
Returns
Number of data read from device
+
Note
A successful call should return 1
+ +
+
+ +

◆ get_() [2/2]

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual size_t utl::inbuf_dev< virtual_tag, data_t, streamsize >::get_ (data_t * data,
size_t n 
)
+
+privatepure virtual
+
+ +

Old stile get functionality using free standing data_t*. This function should return a stream of data from device.

+
Parameters
+ + + +
dataPointer to buffer to write the data from device.
nThe number of data of type data_t to read
+
+
+
Returns
The read data items.
+ +
+
+ +

◆ in_avail()

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + + +
+ + + + + + + +
size_t utl::inbuf_dev< virtual_tag, data_t, streamsize >::in_avail ()
+
+inline
+
+ +

Definition at line 250 of file inbuf_dev.h.

+ +
+
+ +

◆ in_avail_()

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + + +
+ + + + + + + +
virtual size_t utl::inbuf_dev< virtual_tag, data_t, streamsize >::in_avail_ ()
+
+privatepure virtual
+
+
Returns
The available data_t typed items in input buffer.
+ +
+
+ +

◆ operator=()

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + + +
+ + + + + + + + +
inbuf_dev_t& utl::inbuf_dev< virtual_tag, data_t, streamsize >::operator= (const inbuf_dev_t)
+
+protecteddelete
+
+

No copy assignments

+ +
+
+ +

◆ operator>>() [1/3]

+ +
+
+
+template<typename data_t , size_t streamsize>
+
+template<typename _Dst_t >
+ + + + + +
+ + + + + + + + +
inbuf_dev_t& utl::inbuf_dev< virtual_tag, data_t, streamsize >::operator>> (_Dst_t & dst)
+
+inline
+
+ +

Template operator >> implementation for for all by value/ref parameters.

+
Note
In the case _Dst_t size is not a integer multiple of device's data size this will fail by static assertion
+
Parameters
+ + +
dstReference to destination
+
+
+
Returns
Reference to this device for chaining
+ +

Definition at line 269 of file inbuf_dev.h.

+ +
+
+ +

◆ operator>>() [2/3]

+ +
+
+
+template<typename data_t , size_t streamsize>
+
+template<typename _Dst_t >
+ + + + + +
+ + + + + + + + +
inbuf_dev_t& utl::inbuf_dev< virtual_tag, data_t, streamsize >::operator>> (_Dst_t * dst)
+
+delete
+
+ +

specialization to disallow pointer types as destination

+ +
+
+ +

◆ operator>>() [3/3]

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + + +
+ + + + + + + + +
inbuf_dev_t& utl::inbuf_dev< virtual_tag, data_t, streamsize >::operator>> (data_t & dst)
+
+inline
+
+ +

Overload for single data_t object.

+ +

Definition at line 280 of file inbuf_dev.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/doc/html/classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.js b/doc/html/classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.js new file mode 100644 index 0000000..5b16f76 --- /dev/null +++ b/doc/html/classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.js @@ -0,0 +1,28 @@ +var classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4 = +[ + [ "const_iterator", "classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#aa27a4fdb726f1b44d965ebcd84457aab", null ], + [ "data_type", "classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a261cc04ccf7edd02e1ab69225322dc4b", null ], + [ "inbuf_dev_t", "classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a368e42d8a91039e938145d78980b415b", null ], + [ "iterator", "classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a48b8449b9f608a5e3b03df97dd94cff7", null ], + [ "pointer_type", "classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a9d035a944db280e98fd41260ed463000", null ], + [ "type", "classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#af6c21cf92d9bffdd58fb4aa8f5ddb83f", null ], + [ "~inbuf_dev", "classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a29b35825f917570edc31c0cd42090c90", null ], + [ "inbuf_dev", "classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a52240af74076f562c0f79275e44e3640", null ], + [ "inbuf_dev", "classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a54b50015b6fd5f9699d7f0e155f6ef3b", null ], + [ "begin", "classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a70046c3c1e61b596c7e49f1f45510644", null ], + [ "begin", "classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a5367418a80e15d0f087acc6b977c911c", null ], + [ "cbegin", "classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a6c8cceaa03a16daff1db33f45c79082c", null ], + [ "cend", "classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#abe9c16e5322249a05df6eb968a8adb56", null ], + [ "end", "classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a0a85ea0b10edeb155b59d1a3dff43382", null ], + [ "end", "classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#aa81447a9ed7f2428f587b42ecf8bc007", null ], + [ "get", "classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#aef2177d9f52b58b6b5f5c9115fbc893e", null ], + [ "get", "classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#ac2028f0e3b8f48e12bbcbf22cecbfe83", null ], + [ "get_", "classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a061547eefd51a7a0fac1c2aa6b410b84", null ], + [ "get_", "classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a961179ceef8c0a0ce75d71cccd591a10", null ], + [ "in_avail", "classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#aba2a9c8e96a8a865e1a24b52600a9f13", null ], + [ "in_avail_", "classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#ac29561c3fc45b087d6d88514a78f6b4f", null ], + [ "operator=", "classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#aa9f8f3abcc53098ef0c5dc1a8f013957", null ], + [ "operator>>", "classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a84a3364ab33a4fa6ac0983da47a9276f", null ], + [ "operator>>", "classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a9e6b304cc17303d810bc53e411f39970", null ], + [ "operator>>", "classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#aefdbcf1d006494f612d6fcd8795ba472", null ] +]; \ No newline at end of file diff --git a/doc/html/classutl_1_1indev__it-members.html b/doc/html/classutl_1_1indev__it-members.html new file mode 100644 index 0000000..edc0b9d --- /dev/null +++ b/doc/html/classutl_1_1indev__it-members.html @@ -0,0 +1,137 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
utl::indev_it< cont_t, iter_t, _beg, _size > Member List
+
+
+ +

This is the complete list of members for utl::indev_it< cont_t, iter_t, _beg, _size >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
beg enum valueutl::indev_it< cont_t, iter_t, _beg, _size >
Cursor enum nameutl::indev_it< cont_t, iter_t, _beg, _size >
cursor() const noexceptutl::indev_it< cont_t, iter_t, _beg, _size >inline
cursor_utl::indev_it< cont_t, iter_t, _beg, _size >private
difference_type typedefutl::indev_it< cont_t, iter_t, _beg, _size >
eod enum valueutl::indev_it< cont_t, iter_t, _beg, _size >
indev_it() noexceptutl::indev_it< cont_t, iter_t, _beg, _size >inline
indev_it(cont_t *own, size_t cur=eod) noexceptutl::indev_it< cont_t, iter_t, _beg, _size >inlineexplicit
indev_it(const iterator_t &it) noexceptutl::indev_it< cont_t, iter_t, _beg, _size >inlineexplicit
iterator_category typedefutl::indev_it< cont_t, iter_t, _beg, _size >
iterator_t typedefutl::indev_it< cont_t, iter_t, _beg, _size >private
operator*()utl::indev_it< cont_t, iter_t, _beg, _size >inline
operator+(difference_type n)utl::indev_it< cont_t, iter_t, _beg, _size >inline
operator++()utl::indev_it< cont_t, iter_t, _beg, _size >inline
operator++(int)utl::indev_it< cont_t, iter_t, _beg, _size >inline
operator+=(difference_type n)utl::indev_it< cont_t, iter_t, _beg, _size >inline
operator-(difference_type n)utl::indev_it< cont_t, iter_t, _beg, _size >inline
operator--()utl::indev_it< cont_t, iter_t, _beg, _size >inline
operator--(int)utl::indev_it< cont_t, iter_t, _beg, _size >inline
operator-=(difference_type n)utl::indev_it< cont_t, iter_t, _beg, _size >inline
operator->()utl::indev_it< cont_t, iter_t, _beg, _size >inline
operator=(const iterator_t &it) noexceptutl::indev_it< cont_t, iter_t, _beg, _size >inline
operator[](difference_type n)utl::indev_it< cont_t, iter_t, _beg, _size >inline
owner() const noexceptutl::indev_it< cont_t, iter_t, _beg, _size >inline
owner_utl::indev_it< cont_t, iter_t, _beg, _size >private
pointer typedefutl::indev_it< cont_t, iter_t, _beg, _size >
reference typedefutl::indev_it< cont_t, iter_t, _beg, _size >
type typedefutl::indev_it< cont_t, iter_t, _beg, _size >
value_utl::indev_it< cont_t, iter_t, _beg, _size >private
value_type typedefutl::indev_it< cont_t, iter_t, _beg, _size >
+
+ + + + diff --git a/doc/html/classutl_1_1indev__it.html b/doc/html/classutl_1_1indev__it.html new file mode 100644 index 0000000..bd24a20 --- /dev/null +++ b/doc/html/classutl_1_1indev__it.html @@ -0,0 +1,1033 @@ + + + + + + + +uTL: utl::indev_it< cont_t, iter_t, _beg, _size > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
utl::indev_it< cont_t, iter_t, _beg, _size > Class Template Reference
+
+
+ +

Input device iterator type. We "future call" interface methods from owner class to provide iterator functionality. + More...

+ +

#include <dev_iterators.h>

+ + + + + + + + + + + + + + + + + + +

+Public Types

enum  Cursor { beg = _beg, +eod = _beg + _size + }
 #define-like enumerator for Cursor More...
 
using type = iterator_t
 
using iterator_category = typename dev_iterator_traits< std::output_iterator_tag, iter_t >::iterator_category
 
using value_type = typename dev_iterator_traits< std::output_iterator_tag, iter_t >::value_type
 
using difference_type = typename dev_iterator_traits< std::output_iterator_tag, iter_t >::difference_type
 
using pointer = typename dev_iterator_traits< std::output_iterator_tag, iter_t >::pointer
 
using reference = typename dev_iterator_traits< std::output_iterator_tag, iter_t >::reference
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Constructor / Destructor
Note
We can not provide a default constructor as long as we depend on container_t (the owner type).
+
 indev_it () noexcept
 Default constructor. More...
 
 indev_it (cont_t *own, size_t cur=eod) noexcept
 Basic constructor. More...
 
 indev_it (const iterator_t &it) noexcept
 Basic copy constructor. More...
 
iterator_toperator= (const iterator_t &it) noexcept
 Basic copy assignment operator. More...
 
Public interface

Iterator to const-iterator conversion (as STL requires)

+
Parameters
+ + +
itIterator reference
+
+
+
reference operator* ()
 De-reference operator. No end() place dereference check is made. More...
 
pointer operator-> ()
 Arrow operator. No end() place dereference check is made. More...
 
iterator_toperator++ ()
 Pre increment. More...
 
iterator_t operator++ (int)
 Post increment. More...
 
iterator_toperator-- ()
 Pre decrement. More...
 
iterator_t operator-- (int)
 Post decrement. More...
 
reference operator[] (difference_type n)
 [] operator. Is a combination of input method and dereference More...
 
iterator_toperator+= (difference_type n)
 
iterator_t operator+ (difference_type n)
 
iterator_toperator-= (difference_type n)
 
iterator_t operator- (difference_type n)
 
const cont_t * owner () const noexcept
 Export container for comparison. More...
 
const index_t cursor () const noexcept
 Export cursor for comparison. More...
 
+ + + + +

+Private Types

using iterator_t = indev_it< cont_t, iter_t, _beg, _size >
 < iterator type local name More...
 
+ + + + + + + + + +

+Private Attributes

cont_t * owner_ {nullptr}
 
index_t cursor_ {eod}
 virtual cursor for comparison operators More...
 
value_type value_ {}
 The current value, used as cache. More...
 
+

Detailed Description

+

template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+class utl::indev_it< cont_t, iter_t, _beg, _size >

+ +

Input device iterator type. We "future call" interface methods from owner class to provide iterator functionality.

+

Value meta-programming function for SPI interface checking

Parameters
+ + +
_TpType to check
+
+
+
Returns
True if _Tp is a spi interface
+
Parameters
+ + + + + +
cont_tContainer/parent type
iter_tIterator data type (pointer to container_t::value_type)
_begDevice starting address
_sizeDevice's address space size
+
+
+ +

Definition at line 461 of file dev_iterators.h.

+

Member Typedef Documentation

+ +

◆ difference_type

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + +
using utl::indev_it< cont_t, iter_t, _beg, _size >::difference_type = typename dev_iterator_traits <std::output_iterator_tag, iter_t>::difference_type
+
+ +

Definition at line 471 of file dev_iterators.h.

+ +
+
+ +

◆ iterator_category

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + +
using utl::indev_it< cont_t, iter_t, _beg, _size >::iterator_category = typename dev_iterator_traits <std::output_iterator_tag, iter_t>::iterator_category
+
+

STL iterator traits "forwarding"

+ +

Definition at line 469 of file dev_iterators.h.

+ +
+
+ +

◆ iterator_t

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + + +
+ + + + +
using utl::indev_it< cont_t, iter_t, _beg, _size >::iterator_t = indev_it <cont_t, iter_t, _beg, _size>
+
+private
+
+ +

< iterator type local name

+ +

Definition at line 463 of file dev_iterators.h.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + +
using utl::indev_it< cont_t, iter_t, _beg, _size >::pointer = typename dev_iterator_traits <std::output_iterator_tag, iter_t>::pointer
+
+ +

Definition at line 472 of file dev_iterators.h.

+ +
+
+ +

◆ reference

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + +
using utl::indev_it< cont_t, iter_t, _beg, _size >::reference = typename dev_iterator_traits <std::output_iterator_tag, iter_t>::reference
+
+ +

Definition at line 473 of file dev_iterators.h.

+ +
+
+ +

◆ type

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + +
using utl::indev_it< cont_t, iter_t, _beg, _size >::type = iterator_t
+
+

Export type as identity meta-function

+ +

Definition at line 465 of file dev_iterators.h.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + +
using utl::indev_it< cont_t, iter_t, _beg, _size >::value_type = typename dev_iterator_traits <std::output_iterator_tag, iter_t>::value_type
+
+ +

Definition at line 470 of file dev_iterators.h.

+ +
+
+

Member Enumeration Documentation

+ +

◆ Cursor

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + +
enum utl::indev_it::Cursor
+
+ +

#define-like enumerator for Cursor

+ + + +
Enumerator
beg 

Points the first item.

+
eod 

Points one place after last item.

+
+ +

Definition at line 477 of file dev_iterators.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ indev_it() [1/3]

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + + +
+ + + + + + + +
utl::indev_it< cont_t, iter_t, _beg, _size >::indev_it ()
+
+inlinenoexcept
+
+ +

Default constructor.

+ +

Definition at line 500 of file dev_iterators.h.

+ +
+
+ +

◆ indev_it() [2/3]

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
utl::indev_it< cont_t, iter_t, _beg, _size >::indev_it (cont_t * own,
size_t cur = eod 
)
+
+inlineexplicitnoexcept
+
+ +

Basic constructor.

+ +

Definition at line 505 of file dev_iterators.h.

+ +
+
+ +

◆ indev_it() [3/3]

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + + +
+ + + + + + + + +
utl::indev_it< cont_t, iter_t, _beg, _size >::indev_it (const iterator_tit)
+
+inlineexplicitnoexcept
+
+ +

Basic copy constructor.

+ +

Definition at line 510 of file dev_iterators.h.

+ +
+
+

Member Function Documentation

+ +

◆ cursor()

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + + +
+ + + + + + + +
const index_t utl::indev_it< cont_t, iter_t, _beg, _size >::cursor () const
+
+inlinenoexcept
+
+ +

Export cursor for comparison.

+ +

Definition at line 593 of file dev_iterators.h.

+ +
+
+ +

◆ operator*()

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + + +
+ + + + + + + +
reference utl::indev_it< cont_t, iter_t, _beg, _size >::operator* ()
+
+inline
+
+ +

De-reference operator. No end() place dereference check is made.

+ +

Definition at line 537 of file dev_iterators.h.

+ +
+
+ +

◆ operator+()

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + + +
+ + + + + + + + +
iterator_t utl::indev_it< cont_t, iter_t, _beg, _size >::operator+ (difference_type n)
+
+inline
+
+ +

Definition at line 580 of file dev_iterators.h.

+ +
+
+ +

◆ operator++() [1/2]

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + + +
+ + + + + + + +
iterator_t& utl::indev_it< cont_t, iter_t, _beg, _size >::operator++ ()
+
+inline
+
+ +

Pre increment.

+ +

Definition at line 548 of file dev_iterators.h.

+ +
+
+ +

◆ operator++() [2/2]

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + + +
+ + + + + + + + +
iterator_t utl::indev_it< cont_t, iter_t, _beg, _size >::operator++ (int )
+
+inline
+
+ +

Post increment.

+ +

Definition at line 553 of file dev_iterators.h.

+ +
+
+ +

◆ operator+=()

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + + +
+ + + + + + + + +
iterator_t& utl::indev_it< cont_t, iter_t, _beg, _size >::operator+= (difference_type n)
+
+inline
+
+ +

Definition at line 576 of file dev_iterators.h.

+ +
+
+ +

◆ operator-()

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + + +
+ + + + + + + + +
iterator_t utl::indev_it< cont_t, iter_t, _beg, _size >::operator- (difference_type n)
+
+inline
+
+ +

Definition at line 587 of file dev_iterators.h.

+ +
+
+ +

◆ operator--() [1/2]

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + + +
+ + + + + + + +
iterator_t& utl::indev_it< cont_t, iter_t, _beg, _size >::operator-- ()
+
+inline
+
+ +

Pre decrement.

+ +

Definition at line 560 of file dev_iterators.h.

+ +
+
+ +

◆ operator--() [2/2]

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + + +
+ + + + + + + + +
iterator_t utl::indev_it< cont_t, iter_t, _beg, _size >::operator-- (int )
+
+inline
+
+ +

Post decrement.

+ +

Definition at line 565 of file dev_iterators.h.

+ +
+
+ +

◆ operator-=()

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + + +
+ + + + + + + + +
iterator_t& utl::indev_it< cont_t, iter_t, _beg, _size >::operator-= (difference_type n)
+
+inline
+
+ +

Definition at line 583 of file dev_iterators.h.

+ +
+
+ +

◆ operator->()

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + + +
+ + + + + + + +
pointer utl::indev_it< cont_t, iter_t, _beg, _size >::operator-> ()
+
+inline
+
+ +

Arrow operator. No end() place dereference check is made.

+ +

Definition at line 542 of file dev_iterators.h.

+ +
+
+ +

◆ operator=()

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + + +
+ + + + + + + + +
iterator_t& utl::indev_it< cont_t, iter_t, _beg, _size >::operator= (const iterator_tit)
+
+inlinenoexcept
+
+ +

Basic copy assignment operator.

+ +

Definition at line 515 of file dev_iterators.h.

+ +
+
+ +

◆ operator[]()

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + + +
+ + + + + + + + +
reference utl::indev_it< cont_t, iter_t, _beg, _size >::operator[] (difference_type n)
+
+inline
+
+ +

[] operator. Is a combination of input method and dereference

+ +

Definition at line 571 of file dev_iterators.h.

+ +
+
+ +

◆ owner()

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + + +
+ + + + + + + +
const cont_t* utl::indev_it< cont_t, iter_t, _beg, _size >::owner () const
+
+inlinenoexcept
+
+ +

Export container for comparison.

+ +

Definition at line 591 of file dev_iterators.h.

+ +
+
+

Member Data Documentation

+ +

◆ cursor_

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + + +
+ + + + +
index_t utl::indev_it< cont_t, iter_t, _beg, _size >::cursor_ {eod}
+
+private
+
+ +

virtual cursor for comparison operators

+ +

Definition at line 488 of file dev_iterators.h.

+ +
+
+ +

◆ owner_

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + + +
+ + + + +
cont_t* utl::indev_it< cont_t, iter_t, _beg, _size >::owner_ {nullptr}
+
+private
+
+

Pointer to parent/owner device class. Constructor demands owner container in order to access data. Considering the data don't "live" in memory.

+ +

Definition at line 483 of file dev_iterators.h.

+ +
+
+ +

◆ value_

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + + +
+ + + + +
value_type utl::indev_it< cont_t, iter_t, _beg, _size >::value_ {}
+
+private
+
+ +

The current value, used as cache.

+ +

Definition at line 489 of file dev_iterators.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/doc/html/classutl_1_1indev__it.js b/doc/html/classutl_1_1indev__it.js new file mode 100644 index 0000000..9988073 --- /dev/null +++ b/doc/html/classutl_1_1indev__it.js @@ -0,0 +1,34 @@ +var classutl_1_1indev__it = +[ + [ "difference_type", "classutl_1_1indev__it.html#abfeb8765e0e34491594113a8b1261f2a", null ], + [ "iterator_category", "classutl_1_1indev__it.html#ac52588b2394480dcf3a73763f76f283a", null ], + [ "iterator_t", "classutl_1_1indev__it.html#a7b45a5a4d76a5196a3999cb6a4fd610d", null ], + [ "pointer", "classutl_1_1indev__it.html#aa5b1e7c33987cec0d2bfc6aad07b297f", null ], + [ "reference", "classutl_1_1indev__it.html#afd50b088dd181c3d74f9e150a5190c3a", null ], + [ "type", "classutl_1_1indev__it.html#a667aeec9e1dd008dd0bf91057890b633", null ], + [ "value_type", "classutl_1_1indev__it.html#ae7db86c4ea6793a3ae0af0fd877bd751", null ], + [ "Cursor", "classutl_1_1indev__it.html#a2646fbdd38807785263d7d0bbe2b703a", [ + [ "beg", "classutl_1_1indev__it.html#a2646fbdd38807785263d7d0bbe2b703aa91b4e71d6b69fec0a7d7043ef8902c40", null ], + [ "eod", "classutl_1_1indev__it.html#a2646fbdd38807785263d7d0bbe2b703aaa32e6ce1a7079ee7193a163f085857d5", null ] + ] ], + [ "indev_it", "classutl_1_1indev__it.html#aef3a45393dd12c64dfc9088c4fa34590", null ], + [ "indev_it", "classutl_1_1indev__it.html#ad4e96e6bf81f9470d6017bef03fec570", null ], + [ "indev_it", "classutl_1_1indev__it.html#a59c73bf03cd0b260fc7ffdd334db414b", null ], + [ "cursor", "classutl_1_1indev__it.html#a38b77b5de7904f6062980fd186585c3f", null ], + [ "operator*", "classutl_1_1indev__it.html#aab9b502abf96ca3e68ea08f4db133022", null ], + [ "operator+", "classutl_1_1indev__it.html#a6f96628003f69ad5bedf4c9ff9c51ede", null ], + [ "operator++", "classutl_1_1indev__it.html#a9cc635074b47eae7db149c8079327bff", null ], + [ "operator++", "classutl_1_1indev__it.html#a9221ac03f89e592ad3ba1fd0d1aa2793", null ], + [ "operator+=", "classutl_1_1indev__it.html#a2c71facea46d8c1a802d132b28d8024e", null ], + [ "operator-", "classutl_1_1indev__it.html#a3bfc84c569096454701ff191d9e8bf14", null ], + [ "operator--", "classutl_1_1indev__it.html#a2980dd80dce60ddf7bfbaf11c5394b4c", null ], + [ "operator--", "classutl_1_1indev__it.html#a67ab2af5e3530d0aa72b9d4e6ce64d48", null ], + [ "operator-=", "classutl_1_1indev__it.html#a45fc6f9caefbe9e623e850919ecef085", null ], + [ "operator->", "classutl_1_1indev__it.html#aba3b176ec09842e790f1edc808214a89", null ], + [ "operator=", "classutl_1_1indev__it.html#a6dd617aa9a5c3454ca9f49d1ed6319d8", null ], + [ "operator[]", "classutl_1_1indev__it.html#acc0466f1af48d7080acde0e9c4241585", null ], + [ "owner", "classutl_1_1indev__it.html#aaa0295b6a2ed86e5b1018d049b988c8b", null ], + [ "cursor_", "classutl_1_1indev__it.html#aab523007c0875372b156c90ba7fb963a", null ], + [ "owner_", "classutl_1_1indev__it.html#a33a3a7b7c30da80280719f1c0761a0d8", null ], + [ "value_", "classutl_1_1indev__it.html#afb6cc9d365842a104d12a69f3c8cd189", null ] +]; \ No newline at end of file diff --git a/doc/html/classutl_1_1iodev__it-members.html b/doc/html/classutl_1_1iodev__it-members.html new file mode 100644 index 0000000..3fc149c --- /dev/null +++ b/doc/html/classutl_1_1iodev__it-members.html @@ -0,0 +1,137 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
utl::iodev_it< cont_t, iter_t, _beg, _size > Member List
+
+
+ +

This is the complete list of members for utl::iodev_it< cont_t, iter_t, _beg, _size >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
beg enum valueutl::iodev_it< cont_t, iter_t, _beg, _size >
Cursor enum nameutl::iodev_it< cont_t, iter_t, _beg, _size >
cursor() const noexceptutl::iodev_it< cont_t, iter_t, _beg, _size >inline
cursor_utl::iodev_it< cont_t, iter_t, _beg, _size >private
difference_type typedefutl::iodev_it< cont_t, iter_t, _beg, _size >
eod enum valueutl::iodev_it< cont_t, iter_t, _beg, _size >
iodev_it() noexceptutl::iodev_it< cont_t, iter_t, _beg, _size >inline
iodev_it(cont_t *owner, size_t cursor=eod) noexceptutl::iodev_it< cont_t, iter_t, _beg, _size >inlineexplicit
iodev_it(const iterator_t &it) noexceptutl::iodev_it< cont_t, iter_t, _beg, _size >inlineexplicit
iterator_category typedefutl::iodev_it< cont_t, iter_t, _beg, _size >
iterator_t typedefutl::iodev_it< cont_t, iter_t, _beg, _size >private
operator*() noexceptutl::iodev_it< cont_t, iter_t, _beg, _size >inline
operator+(difference_type n) const noexceptutl::iodev_it< cont_t, iter_t, _beg, _size >inline
operator++() noexceptutl::iodev_it< cont_t, iter_t, _beg, _size >inline
operator++(int) noexceptutl::iodev_it< cont_t, iter_t, _beg, _size >inline
operator+=(difference_type n) noexceptutl::iodev_it< cont_t, iter_t, _beg, _size >inline
operator-(difference_type n) const noexceptutl::iodev_it< cont_t, iter_t, _beg, _size >inline
operator--() noexceptutl::iodev_it< cont_t, iter_t, _beg, _size >inline
operator--(int) noexceptutl::iodev_it< cont_t, iter_t, _beg, _size >inline
operator-=(difference_type n) noexceptutl::iodev_it< cont_t, iter_t, _beg, _size >inline
operator->() noexceptutl::iodev_it< cont_t, iter_t, _beg, _size >inline
operator=(const iterator_t &it) noexceptutl::iodev_it< cont_t, iter_t, _beg, _size >inline
operator[](difference_type n) noexceptutl::iodev_it< cont_t, iter_t, _beg, _size >inline
owner() const noexceptutl::iodev_it< cont_t, iter_t, _beg, _size >inline
owner_utl::iodev_it< cont_t, iter_t, _beg, _size >private
pointer typedefutl::iodev_it< cont_t, iter_t, _beg, _size >
reference typedefutl::iodev_it< cont_t, iter_t, _beg, _size >
type typedefutl::iodev_it< cont_t, iter_t, _beg, _size >
value_utl::iodev_it< cont_t, iter_t, _beg, _size >private
value_type typedefutl::iodev_it< cont_t, iter_t, _beg, _size >
+
+ + + + diff --git a/doc/html/classutl_1_1iodev__it.html b/doc/html/classutl_1_1iodev__it.html new file mode 100644 index 0000000..38bcdd8 --- /dev/null +++ b/doc/html/classutl_1_1iodev__it.html @@ -0,0 +1,1035 @@ + + + + + + + +uTL: utl::iodev_it< cont_t, iter_t, _beg, _size > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
utl::iodev_it< cont_t, iter_t, _beg, _size > Class Template Reference
+
+
+ +

Indexed device iterator type. We "future call" interface methods from owner class to provide iterator functionality. + More...

+ +

#include <dev_iterators.h>

+ + + + +

+Classes

struct  value_type_t
 
+ + + + + + + + + + + + + + + + + +

+Public Types

enum  Cursor { beg = _beg, +eod = _beg+_size + }
 #define-like enumerator for Cursor More...
 
using type = iterator_t
 
using iterator_category = typename dev_iterator_traits< std::output_iterator_tag, iter_t >::iterator_category
 
using value_type = typename dev_iterator_traits< std::output_iterator_tag, iter_t >::value_type
 
using difference_type = typename dev_iterator_traits< std::output_iterator_tag, iter_t >::difference_type
 
using pointer = typename dev_iterator_traits< std::output_iterator_tag, iter_t >::pointer
 
using reference = typename dev_iterator_traits< std::output_iterator_tag, iter_t >::reference
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Constructor / Destructor
 iodev_it () noexcept
 Default constructor. More...
 
 iodev_it (cont_t *owner, size_t cursor=eod) noexcept
 Basic constructor. More...
 
 iodev_it (const iterator_t &it) noexcept
 Basic copy constructor. More...
 
iterator_toperator= (const iterator_t &it) noexcept
 Basic copy assignment operator. More...
 
Public interface
reference operator* () noexcept
 
pointer operator-> () noexcept
 Arrow operator. This is where the input method is invoked. More...
 
iterator_toperator++ () noexcept
 Pre increment. More...
 
iterator_t operator++ (int) noexcept
 Post increment. More...
 
iterator_toperator-- () noexcept
 Pre decrement. More...
 
iterator_t operator-- (int) noexcept
 Post decrement. More...
 
reference operator[] (difference_type n) noexcept
 Random access through iterator. More...
 
iterator_toperator+= (difference_type n) noexcept
 Random cursor increment. More...
 
iterator_t operator+ (difference_type n) const noexcept
 Addition operation. More...
 
iterator_toperator-= (difference_type n) noexcept
 Random cursor decrement. More...
 
iterator_t operator- (difference_type n) const noexcept
 Subtraction operation. More...
 
const cont_t * owner () const noexcept
 Export container for comparison. More...
 
const index_tcursor () const noexcept
 Export cursor for comparison. More...
 
+ + + + +

+Private Types

using iterator_t = iodev_it< cont_t, iter_t, _beg, _size >
 < iterator type local name More...
 
+ + + + + + + + +

+Private Attributes

cont_t * owner_ {nullptr}
 
index_t cursor_ {eod}
 virtual cursor for comparison operators More...
 
struct utl::iodev_it::value_type_t value_
 
+

Detailed Description

+

template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+class utl::iodev_it< cont_t, iter_t, _beg, _size >

+ +

Indexed device iterator type. We "future call" interface methods from owner class to provide iterator functionality.

+

Value meta-programming function for SPI interface checking

Parameters
+ + +
_TpType to check
+
+
+
Returns
True if _Tp is a spi interface
+
Note
This is a contiguous iterator
+
Parameters
+ + + + + +
cont_tContainer/parent type
iter_tIterator data type (pointer to container_t::value_type)
_begStarting address of the device
_sizeDevice's address space size
+
+
+ +

Definition at line 740 of file dev_iterators.h.

+

Member Typedef Documentation

+ +

◆ difference_type

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + +
using utl::iodev_it< cont_t, iter_t, _beg, _size >::difference_type = typename dev_iterator_traits <std::output_iterator_tag, iter_t>::difference_type
+
+ +

Definition at line 750 of file dev_iterators.h.

+ +
+
+ +

◆ iterator_category

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + +
using utl::iodev_it< cont_t, iter_t, _beg, _size >::iterator_category = typename dev_iterator_traits <std::output_iterator_tag, iter_t>::iterator_category
+
+

STL iterator traits "forwarding"

+ +

Definition at line 748 of file dev_iterators.h.

+ +
+
+ +

◆ iterator_t

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + + +
+ + + + +
using utl::iodev_it< cont_t, iter_t, _beg, _size >::iterator_t = iodev_it <cont_t, iter_t, _beg, _size>
+
+private
+
+ +

< iterator type local name

+ +

Definition at line 742 of file dev_iterators.h.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + +
using utl::iodev_it< cont_t, iter_t, _beg, _size >::pointer = typename dev_iterator_traits <std::output_iterator_tag, iter_t>::pointer
+
+ +

Definition at line 751 of file dev_iterators.h.

+ +
+
+ +

◆ reference

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + +
using utl::iodev_it< cont_t, iter_t, _beg, _size >::reference = typename dev_iterator_traits <std::output_iterator_tag, iter_t>::reference
+
+ +

Definition at line 752 of file dev_iterators.h.

+ +
+
+ +

◆ type

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + +
using utl::iodev_it< cont_t, iter_t, _beg, _size >::type = iterator_t
+
+

Export type as identity meta-function

+ +

Definition at line 744 of file dev_iterators.h.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + +
using utl::iodev_it< cont_t, iter_t, _beg, _size >::value_type = typename dev_iterator_traits <std::output_iterator_tag, iter_t>::value_type
+
+ +

Definition at line 749 of file dev_iterators.h.

+ +
+
+

Member Enumeration Documentation

+ +

◆ Cursor

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + +
enum utl::iodev_it::Cursor
+
+ +

#define-like enumerator for Cursor

+ + + +
Enumerator
beg 

Points the first item.

+
eod 

Points one place after last item.

+
+ +

Definition at line 756 of file dev_iterators.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ iodev_it() [1/3]

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + + +
+ + + + + + + +
utl::iodev_it< cont_t, iter_t, _beg, _size >::iodev_it ()
+
+inlinenoexcept
+
+ +

Default constructor.

+ +

Definition at line 790 of file dev_iterators.h.

+ +
+
+ +

◆ iodev_it() [2/3]

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
utl::iodev_it< cont_t, iter_t, _beg, _size >::iodev_it (cont_t * owner,
size_t cursor = eod 
)
+
+inlineexplicitnoexcept
+
+ +

Basic constructor.

+ +

Definition at line 795 of file dev_iterators.h.

+ +
+
+ +

◆ iodev_it() [3/3]

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + + +
+ + + + + + + + +
utl::iodev_it< cont_t, iter_t, _beg, _size >::iodev_it (const iterator_tit)
+
+inlineexplicitnoexcept
+
+ +

Basic copy constructor.

+ +

Definition at line 800 of file dev_iterators.h.

+ +
+
+

Member Function Documentation

+ +

◆ cursor()

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + + +
+ + + + + + + +
const index_t& utl::iodev_it< cont_t, iter_t, _beg, _size >::cursor () const
+
+inlinenoexcept
+
+ +

Export cursor for comparison.

+ +

Definition at line 878 of file dev_iterators.h.

+ +
+
+ +

◆ operator*()

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + + +
+ + + + + + + +
reference utl::iodev_it< cont_t, iter_t, _beg, _size >::operator* ()
+
+inlinenoexcept
+
+

De-reference operator. This is where the input method is invoked

Note
No end() place dereference check is made.
+ +

Definition at line 819 of file dev_iterators.h.

+ +
+
+ +

◆ operator+()

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + + +
+ + + + + + + + +
iterator_t utl::iodev_it< cont_t, iter_t, _beg, _size >::operator+ (difference_type n) const
+
+inlinenoexcept
+
+ +

Addition operation.

+ +

Definition at line 862 of file dev_iterators.h.

+ +
+
+ +

◆ operator++() [1/2]

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + + +
+ + + + + + + +
iterator_t& utl::iodev_it< cont_t, iter_t, _beg, _size >::operator++ ()
+
+inlinenoexcept
+
+ +

Pre increment.

+ +

Definition at line 830 of file dev_iterators.h.

+ +
+
+ +

◆ operator++() [2/2]

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + + +
+ + + + + + + + +
iterator_t utl::iodev_it< cont_t, iter_t, _beg, _size >::operator++ (int )
+
+inlinenoexcept
+
+ +

Post increment.

+ +

Definition at line 835 of file dev_iterators.h.

+ +
+
+ +

◆ operator+=()

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + + +
+ + + + + + + + +
iterator_t& utl::iodev_it< cont_t, iter_t, _beg, _size >::operator+= (difference_type n)
+
+inlinenoexcept
+
+ +

Random cursor increment.

+ +

Definition at line 857 of file dev_iterators.h.

+ +
+
+ +

◆ operator-()

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + + +
+ + + + + + + + +
iterator_t utl::iodev_it< cont_t, iter_t, _beg, _size >::operator- (difference_type n) const
+
+inlinenoexcept
+
+ +

Subtraction operation.

+ +

Definition at line 871 of file dev_iterators.h.

+ +
+
+ +

◆ operator--() [1/2]

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + + +
+ + + + + + + +
iterator_t& utl::iodev_it< cont_t, iter_t, _beg, _size >::operator-- ()
+
+inlinenoexcept
+
+ +

Pre decrement.

+ +

Definition at line 841 of file dev_iterators.h.

+ +
+
+ +

◆ operator--() [2/2]

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + + +
+ + + + + + + + +
iterator_t utl::iodev_it< cont_t, iter_t, _beg, _size >::operator-- (int )
+
+inlinenoexcept
+
+ +

Post decrement.

+ +

Definition at line 846 of file dev_iterators.h.

+ +
+
+ +

◆ operator-=()

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + + +
+ + + + + + + + +
iterator_t& utl::iodev_it< cont_t, iter_t, _beg, _size >::operator-= (difference_type n)
+
+inlinenoexcept
+
+ +

Random cursor decrement.

+ +

Definition at line 866 of file dev_iterators.h.

+ +
+
+ +

◆ operator->()

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + + +
+ + + + + + + +
pointer utl::iodev_it< cont_t, iter_t, _beg, _size >::operator-> ()
+
+inlinenoexcept
+
+ +

Arrow operator. This is where the input method is invoked.

+ +

Definition at line 824 of file dev_iterators.h.

+ +
+
+ +

◆ operator=()

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + + +
+ + + + + + + + +
iterator_t& utl::iodev_it< cont_t, iter_t, _beg, _size >::operator= (const iterator_tit)
+
+inlinenoexcept
+
+ +

Basic copy assignment operator.

+ +

Definition at line 805 of file dev_iterators.h.

+ +
+
+ +

◆ operator[]()

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + + +
+ + + + + + + + +
reference utl::iodev_it< cont_t, iter_t, _beg, _size >::operator[] (difference_type n)
+
+inlinenoexcept
+
+ +

Random access through iterator.

+ +

Definition at line 852 of file dev_iterators.h.

+ +
+
+ +

◆ owner()

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + + +
+ + + + + + + +
const cont_t* utl::iodev_it< cont_t, iter_t, _beg, _size >::owner () const
+
+inlinenoexcept
+
+ +

Export container for comparison.

+ +

Definition at line 876 of file dev_iterators.h.

+ +
+
+

Member Data Documentation

+ +

◆ cursor_

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + + +
+ + + + +
index_t utl::iodev_it< cont_t, iter_t, _beg, _size >::cursor_ {eod}
+
+private
+
+ +

virtual cursor for comparison operators

+ +

Definition at line 767 of file dev_iterators.h.

+ +
+
+ +

◆ owner_

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + + +
+ + + + +
cont_t* utl::iodev_it< cont_t, iter_t, _beg, _size >::owner_ {nullptr}
+
+private
+
+

Pointer to parent/owner device class. Constructor demands owner container in order to access data. Considering the data don't "live" in memory.

+ +

Definition at line 762 of file dev_iterators.h.

+ +
+
+ +

◆ value_

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
+ + + + + +
+ + + + +
struct utl::iodev_it::value_type_t utl::iodev_it< cont_t, iter_t, _beg, _size >::value_
+
+private
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/doc/html/classutl_1_1iodev__it.js b/doc/html/classutl_1_1iodev__it.js new file mode 100644 index 0000000..d0f8da9 --- /dev/null +++ b/doc/html/classutl_1_1iodev__it.js @@ -0,0 +1,35 @@ +var classutl_1_1iodev__it = +[ + [ "value_type_t", "structutl_1_1iodev__it_1_1value__type__t.html", "structutl_1_1iodev__it_1_1value__type__t" ], + [ "difference_type", "classutl_1_1iodev__it.html#a3dd6b7953c425d027df92051b6332286", null ], + [ "iterator_category", "classutl_1_1iodev__it.html#ad223ec5d1f9187b200bfe0566d6c1e4a", null ], + [ "iterator_t", "classutl_1_1iodev__it.html#a85372687144876ec60a9bd6b4edf301c", null ], + [ "pointer", "classutl_1_1iodev__it.html#a3cc475e736e680ae4d078f241c0572eb", null ], + [ "reference", "classutl_1_1iodev__it.html#a44916c1157ea2d97aa7fe4ed89af6d19", null ], + [ "type", "classutl_1_1iodev__it.html#a1c81a9a1ba749b44b9721f83bfebae08", null ], + [ "value_type", "classutl_1_1iodev__it.html#a2e8033eee2ac8e8132b8b833ffa606ab", null ], + [ "Cursor", "classutl_1_1iodev__it.html#a746eded7eb22cbff5441b41ec0aac30f", [ + [ "beg", "classutl_1_1iodev__it.html#a746eded7eb22cbff5441b41ec0aac30fa7da9a1535ecc02d71b8ea5683b46a42d", null ], + [ "eod", "classutl_1_1iodev__it.html#a746eded7eb22cbff5441b41ec0aac30fa135f130529a4b46b2b2cfd79d681a9c0", null ] + ] ], + [ "iodev_it", "classutl_1_1iodev__it.html#a8f610ac513d5118345f148031c3e6b9c", null ], + [ "iodev_it", "classutl_1_1iodev__it.html#ad9ef3fd5595b70fbb94735707df656a3", null ], + [ "iodev_it", "classutl_1_1iodev__it.html#a41167751da91f6c99e05d0c164f75f0d", null ], + [ "cursor", "classutl_1_1iodev__it.html#a4fa491f13549709b5a6da71281ca8632", null ], + [ "operator*", "classutl_1_1iodev__it.html#a584de89ae9c5d223f6455680d54d18f3", null ], + [ "operator+", "classutl_1_1iodev__it.html#a6a720ca327e022c72ee11c11305f7f05", null ], + [ "operator++", "classutl_1_1iodev__it.html#aee5241250c6e402699bd38a13dad6f91", null ], + [ "operator++", "classutl_1_1iodev__it.html#ad470a2f302cacaa2effc56072e21eef5", null ], + [ "operator+=", "classutl_1_1iodev__it.html#a6aad753022c84b6961eef38bb53a3bd9", null ], + [ "operator-", "classutl_1_1iodev__it.html#aa437f3e0e237fa511e56646136aabb35", null ], + [ "operator--", "classutl_1_1iodev__it.html#a820f0b3899c80743ed0ad1f495c0d3c3", null ], + [ "operator--", "classutl_1_1iodev__it.html#a6bde1ae02f162213c637ff25f269d24f", null ], + [ "operator-=", "classutl_1_1iodev__it.html#ac4fa70211754ba2f34aaea5290d2492c", null ], + [ "operator->", "classutl_1_1iodev__it.html#a2c031f247a145656129e91905d9dca26", null ], + [ "operator=", "classutl_1_1iodev__it.html#a55d221d75ed1cd82542bacc0d5acb454", null ], + [ "operator[]", "classutl_1_1iodev__it.html#a16c35c2eab7f92794764b7b5c48f9e8e", null ], + [ "owner", "classutl_1_1iodev__it.html#a1e3b3608c6378257c77853cb61820438", null ], + [ "cursor_", "classutl_1_1iodev__it.html#afdfed02323d69331e54d599d309e8967", null ], + [ "owner_", "classutl_1_1iodev__it.html#a2676a4159e9799027cdff9ba7e006bbe", null ], + [ "value_", "classutl_1_1iodev__it.html#a7281baf429e5ed7a5526e14a9659a11f", null ] +]; \ No newline at end of file diff --git a/doc/html/classutl_1_1istreamdev__it-members.html b/doc/html/classutl_1_1istreamdev__it-members.html new file mode 100644 index 0000000..762335e --- /dev/null +++ b/doc/html/classutl_1_1istreamdev__it-members.html @@ -0,0 +1,132 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
utl::istreamdev_it< cont_t, data_t > Member List
+
+
+ +

This is the complete list of members for utl::istreamdev_it< cont_t, data_t >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
_get(value_type &v)utl::istreamdev_it< cont_t, data_t >inlineprivate
Cursor enum nameutl::istreamdev_it< cont_t, data_t >
cursor() const noexceptutl::istreamdev_it< cont_t, data_t >inline
cursor_utl::istreamdev_it< cont_t, data_t >private
difference_type typedefutl::istreamdev_it< cont_t, data_t >
eos enum valueutl::istreamdev_it< cont_t, data_t >
init enum valueutl::istreamdev_it< cont_t, data_t >
istreamdev_it(cont_t *owner=nullptr, Cursor cursor=eos) noexceptutl::istreamdev_it< cont_t, data_t >inline
istreamdev_it(const iterator_t &it) noexceptutl::istreamdev_it< cont_t, data_t >inline
iterator_category typedefutl::istreamdev_it< cont_t, data_t >
iterator_t typedefutl::istreamdev_it< cont_t, data_t >private
operator*() noexceptutl::istreamdev_it< cont_t, data_t >inline
operator++() noexceptutl::istreamdev_it< cont_t, data_t >inline
operator++(int) noexceptutl::istreamdev_it< cont_t, data_t >inline
operator->() noexceptutl::istreamdev_it< cont_t, data_t >inline
operator=(const iterator_t &it) noexceptutl::istreamdev_it< cont_t, data_t >inline
owner() const noexceptutl::istreamdev_it< cont_t, data_t >inline
owner_utl::istreamdev_it< cont_t, data_t >private
pointer typedefutl::istreamdev_it< cont_t, data_t >
reference typedefutl::istreamdev_it< cont_t, data_t >
type typedefutl::istreamdev_it< cont_t, data_t >
valid enum valueutl::istreamdev_it< cont_t, data_t >
value() const noexceptutl::istreamdev_it< cont_t, data_t >inline
value_utl::istreamdev_it< cont_t, data_t >private
value_type typedefutl::istreamdev_it< cont_t, data_t >
+
+ + + + diff --git a/doc/html/classutl_1_1istreamdev__it.html b/doc/html/classutl_1_1istreamdev__it.html new file mode 100644 index 0000000..f45f621 --- /dev/null +++ b/doc/html/classutl_1_1istreamdev__it.html @@ -0,0 +1,786 @@ + + + + + + + +uTL: utl::istreamdev_it< cont_t, data_t > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
utl::istreamdev_it< cont_t, data_t > Class Template Reference
+
+
+ +

#include <dev_iterators.h>

+ + + + + + + + + + + + + + + + + + +

+Public Types

enum  Cursor { init = 0, +valid = 1, +eos = 2 + }
 #define-like enumerator for Cursor-like behavior More...
 
using type = iterator_t
 
using iterator_category = typename dev_iterator_traits< std::output_iterator_tag, data_t, void >::iterator_category
 
using value_type = typename dev_iterator_traits< std::output_iterator_tag, data_t, void >::value_type
 
using difference_type = typename dev_iterator_traits< std::output_iterator_tag, data_t, void >::difference_type
 
using pointer = typename dev_iterator_traits< std::output_iterator_tag, data_t, void >::pointer
 
using reference = typename dev_iterator_traits< std::output_iterator_tag, data_t, void >::reference
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Constructor / Destructor
 istreamdev_it (cont_t *owner=nullptr, Cursor cursor=eos) noexcept
 Basic constructor. More...
 
 istreamdev_it (const iterator_t &it) noexcept
 Basic copy constructor. More...
 
iterator_toperator= (const iterator_t &it) noexcept
 Basic copy assignment operator. More...
 
Public interface
value_typeoperator* () noexcept
 
value_typeoperator-> () noexcept
 
iterator_toperator++ () noexcept
 
iterator_t operator++ (int) noexcept
 
const cont_t * owner () const noexcept
 Export container for comparison. More...
 
const value_typevalue () const noexcept
 Export value for comparison. More...
 
const Cursor cursor () const noexcept
 Export cursor for comparison. More...
 
+ + + +

+Private Types

using iterator_t = istreamdev_it< cont_t, data_t >
 
+ + + + +

+Private Member Functions

private api
void _get (value_type &v)
 
+ + + + + + + + +

+Private Attributes

Data members
cont_t * owner_ {nullptr}
 
value_type value_ {}
 
Cursor cursor_ {init}
 
+

Detailed Description

+

template<typename cont_t, typename data_t>
+class utl::istreamdev_it< cont_t, data_t >

+ + +

Definition at line 128 of file dev_iterators.h.

+

Member Typedef Documentation

+ +

◆ difference_type

+ +
+
+
+template<typename cont_t, typename data_t>
+ + + + +
using utl::istreamdev_it< cont_t, data_t >::difference_type = typename dev_iterator_traits <std::output_iterator_tag, data_t, void>::difference_type
+
+ +

Definition at line 137 of file dev_iterators.h.

+ +
+
+ +

◆ iterator_category

+ +
+
+
+template<typename cont_t, typename data_t>
+ + + + +
using utl::istreamdev_it< cont_t, data_t >::iterator_category = typename dev_iterator_traits <std::output_iterator_tag, data_t, void>::iterator_category
+
+

STL iterator traits "forwarding"

+ +

Definition at line 135 of file dev_iterators.h.

+ +
+
+ +

◆ iterator_t

+ +
+
+
+template<typename cont_t, typename data_t>
+ + + + + +
+ + + + +
using utl::istreamdev_it< cont_t, data_t >::iterator_t = istreamdev_it <cont_t, data_t>
+
+private
+
+ +

Definition at line 129 of file dev_iterators.h.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<typename cont_t, typename data_t>
+ + + + +
using utl::istreamdev_it< cont_t, data_t >::pointer = typename dev_iterator_traits <std::output_iterator_tag, data_t, void>::pointer
+
+ +

Definition at line 138 of file dev_iterators.h.

+ +
+
+ +

◆ reference

+ +
+
+
+template<typename cont_t, typename data_t>
+ + + + +
using utl::istreamdev_it< cont_t, data_t >::reference = typename dev_iterator_traits <std::output_iterator_tag, data_t, void>::reference
+
+ +

Definition at line 139 of file dev_iterators.h.

+ +
+
+ +

◆ type

+ +
+
+
+template<typename cont_t, typename data_t>
+ + + + +
using utl::istreamdev_it< cont_t, data_t >::type = iterator_t
+
+

Export type as identity meta-function

+ +

Definition at line 131 of file dev_iterators.h.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<typename cont_t, typename data_t>
+ + + + +
using utl::istreamdev_it< cont_t, data_t >::value_type = typename dev_iterator_traits <std::output_iterator_tag, data_t, void>::value_type
+
+ +

Definition at line 136 of file dev_iterators.h.

+ +
+
+

Member Enumeration Documentation

+ +

◆ Cursor

+ +
+
+
+template<typename cont_t, typename data_t>
+ + + + +
enum utl::istreamdev_it::Cursor
+
+ +

#define-like enumerator for Cursor-like behavior

+ + + + +
Enumerator
init 
valid 
eos 
+ +

Definition at line 142 of file dev_iterators.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ istreamdev_it() [1/2]

+ +
+
+
+template<typename cont_t, typename data_t>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
utl::istreamdev_it< cont_t, data_t >::istreamdev_it (cont_t * owner = nullptr,
Cursor cursor = eos 
)
+
+inlinenoexcept
+
+ +

Basic constructor.

+ +

Definition at line 163 of file dev_iterators.h.

+ +
+
+ +

◆ istreamdev_it() [2/2]

+ +
+
+
+template<typename cont_t, typename data_t>
+ + + + + +
+ + + + + + + + +
utl::istreamdev_it< cont_t, data_t >::istreamdev_it (const iterator_tit)
+
+inlinenoexcept
+
+ +

Basic copy constructor.

+ +

Definition at line 168 of file dev_iterators.h.

+ +
+
+

Member Function Documentation

+ +

◆ _get()

+ +
+
+
+template<typename cont_t, typename data_t>
+ + + + + +
+ + + + + + + + +
void utl::istreamdev_it< cont_t, data_t >::_get (value_typev)
+
+inlineprivate
+
+ +

Definition at line 213 of file dev_iterators.h.

+ +
+
+ +

◆ cursor()

+ +
+
+
+template<typename cont_t, typename data_t>
+ + + + + +
+ + + + + + + +
const Cursor utl::istreamdev_it< cont_t, data_t >::cursor () const
+
+inlinenoexcept
+
+ +

Export cursor for comparison.

+ +

Definition at line 208 of file dev_iterators.h.

+ +
+
+ +

◆ operator*()

+ +
+
+
+template<typename cont_t, typename data_t>
+ + + + + +
+ + + + + + + +
value_type& utl::istreamdev_it< cont_t, data_t >::operator* ()
+
+inlinenoexcept
+
+ +

Definition at line 183 of file dev_iterators.h.

+ +
+
+ +

◆ operator++() [1/2]

+ +
+
+
+template<typename cont_t, typename data_t>
+ + + + + +
+ + + + + + + +
iterator_t& utl::istreamdev_it< cont_t, data_t >::operator++ ()
+
+inlinenoexcept
+
+ +

Definition at line 193 of file dev_iterators.h.

+ +
+
+ +

◆ operator++() [2/2]

+ +
+
+
+template<typename cont_t, typename data_t>
+ + + + + +
+ + + + + + + + +
iterator_t utl::istreamdev_it< cont_t, data_t >::operator++ (int )
+
+inlinenoexcept
+
+ +

Definition at line 197 of file dev_iterators.h.

+ +
+
+ +

◆ operator->()

+ +
+
+
+template<typename cont_t, typename data_t>
+ + + + + +
+ + + + + + + +
value_type* utl::istreamdev_it< cont_t, data_t >::operator-> ()
+
+inlinenoexcept
+
+ +

Definition at line 188 of file dev_iterators.h.

+ +
+
+ +

◆ operator=()

+ +
+
+
+template<typename cont_t, typename data_t>
+ + + + + +
+ + + + + + + + +
iterator_t& utl::istreamdev_it< cont_t, data_t >::operator= (const iterator_tit)
+
+inlinenoexcept
+
+ +

Basic copy assignment operator.

+ +

Definition at line 173 of file dev_iterators.h.

+ +
+
+ +

◆ owner()

+ +
+
+
+template<typename cont_t, typename data_t>
+ + + + + +
+ + + + + + + +
const cont_t* utl::istreamdev_it< cont_t, data_t >::owner () const
+
+inlinenoexcept
+
+ +

Export container for comparison.

+ +

Definition at line 204 of file dev_iterators.h.

+ +
+
+ +

◆ value()

+ +
+
+
+template<typename cont_t, typename data_t>
+ + + + + +
+ + + + + + + +
const value_type& utl::istreamdev_it< cont_t, data_t >::value () const
+
+inlinenoexcept
+
+ +

Export value for comparison.

+ +

Definition at line 206 of file dev_iterators.h.

+ +
+
+

Member Data Documentation

+ +

◆ cursor_

+ +
+
+
+template<typename cont_t, typename data_t>
+ + + + + +
+ + + + +
Cursor utl::istreamdev_it< cont_t, data_t >::cursor_ {init}
+
+private
+
+ +

Definition at line 155 of file dev_iterators.h.

+ +
+
+ +

◆ owner_

+ +
+
+
+template<typename cont_t, typename data_t>
+ + + + + +
+ + + + +
cont_t* utl::istreamdev_it< cont_t, data_t >::owner_ {nullptr}
+
+private
+
+

Pointer to parent/owner device class. Usable iterator demands owner container in order to access data. Considering the data don't "live" in memory.

+ +

Definition at line 149 of file dev_iterators.h.

+ +
+
+ +

◆ value_

+ +
+
+
+template<typename cont_t, typename data_t>
+ + + + + +
+ + + + +
value_type utl::istreamdev_it< cont_t, data_t >::value_ {}
+
+private
+
+ +

Definition at line 154 of file dev_iterators.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/doc/html/classutl_1_1istreamdev__it.js b/doc/html/classutl_1_1istreamdev__it.js new file mode 100644 index 0000000..d0e3428 --- /dev/null +++ b/doc/html/classutl_1_1istreamdev__it.js @@ -0,0 +1,29 @@ +var classutl_1_1istreamdev__it = +[ + [ "difference_type", "classutl_1_1istreamdev__it.html#ae74eb71649f6d9d6c758477d5a729464", null ], + [ "iterator_category", "classutl_1_1istreamdev__it.html#ab9f273d2adc8c4fbc4d2e0a52346de89", null ], + [ "iterator_t", "classutl_1_1istreamdev__it.html#a94408beb548efbbe69cf51b657f47202", null ], + [ "pointer", "classutl_1_1istreamdev__it.html#abc9731045fe1cf2639a91cfc6040114f", null ], + [ "reference", "classutl_1_1istreamdev__it.html#a824851507bcd0dbaf6e1f7c54dffccae", null ], + [ "type", "classutl_1_1istreamdev__it.html#a1d7d245bb3b6397af354604448550fe3", null ], + [ "value_type", "classutl_1_1istreamdev__it.html#a2c86d97ea181d403018078c7bcd85a7d", null ], + [ "Cursor", "classutl_1_1istreamdev__it.html#a343602446a76ddc893b8420a0ec73098", [ + [ "init", "classutl_1_1istreamdev__it.html#a343602446a76ddc893b8420a0ec73098acf78c8879b68ea36e14323560fb9376f", null ], + [ "valid", "classutl_1_1istreamdev__it.html#a343602446a76ddc893b8420a0ec73098a46b4593b1438c429ecf7725dee6deac8", null ], + [ "eos", "classutl_1_1istreamdev__it.html#a343602446a76ddc893b8420a0ec73098a5d43103cca12a6712ebf6d8118f46ec2", null ] + ] ], + [ "istreamdev_it", "classutl_1_1istreamdev__it.html#a37d06e1d0e6b2dee118d1f84914f489f", null ], + [ "istreamdev_it", "classutl_1_1istreamdev__it.html#af60899a30cdbcbb9c18a13daa3d1bafb", null ], + [ "_get", "classutl_1_1istreamdev__it.html#a7113ff596929f1f7346379e9918693cf", null ], + [ "cursor", "classutl_1_1istreamdev__it.html#a01ffeaa95a2b4b90f48505c38f35e024", null ], + [ "operator*", "classutl_1_1istreamdev__it.html#a39299e20b2ec7e21099525e4fa458a08", null ], + [ "operator++", "classutl_1_1istreamdev__it.html#abe06c7d5a4fc488804291bdb29d16816", null ], + [ "operator++", "classutl_1_1istreamdev__it.html#a9c04a21ce549fc67f306664c90b1f874", null ], + [ "operator->", "classutl_1_1istreamdev__it.html#adf6eafdc0973dbc1a71992ae8914c9dd", null ], + [ "operator=", "classutl_1_1istreamdev__it.html#a93400479ad3e318df06880c7d116e2fb", null ], + [ "owner", "classutl_1_1istreamdev__it.html#ad5ad8b543316b11bcc551a03a19296a7", null ], + [ "value", "classutl_1_1istreamdev__it.html#a8e5b98093c55cb57e3179ff9025389fb", null ], + [ "cursor_", "classutl_1_1istreamdev__it.html#aa455b33e506dfb2b86203b309ec8829a", null ], + [ "owner_", "classutl_1_1istreamdev__it.html#a01c9f093714b3a55b3bada9bbc14a53d", null ], + [ "value_", "classutl_1_1istreamdev__it.html#afdc31b2308ede3449e26866991221a0d", null ] +]; \ No newline at end of file diff --git a/doc/html/classutl_1_1ostream__dev-members.html b/doc/html/classutl_1_1ostream__dev-members.html new file mode 100644 index 0000000..39a5516 --- /dev/null +++ b/doc/html/classutl_1_1ostream__dev-members.html @@ -0,0 +1,131 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
utl::ostream_dev< impl_t, data_t > Member List
+
+
+ +

This is the complete list of members for utl::ostream_dev< impl_t, data_t >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
_CRTP_IMPL(impl_t)utl::ostream_dev< impl_t, data_t >private
begin() noexceptutl::ostream_dev< impl_t, data_t >inline
begin() const noexceptutl::ostream_dev< impl_t, data_t >inline
cbegin() const noexceptutl::ostream_dev< impl_t, data_t >inline
cend() const noexceptutl::ostream_dev< impl_t, data_t >inline
const_iterator typedefutl::ostream_dev< impl_t, data_t >
data_type typedefutl::ostream_dev< impl_t, data_t >
end() noexceptutl::ostream_dev< impl_t, data_t >inline
end() const noexceptutl::ostream_dev< impl_t, data_t >inline
iterator typedefutl::ostream_dev< impl_t, data_t >
operator<<(const _Src_t &src)utl::ostream_dev< impl_t, data_t >inline
operator<<(_Src_t *src)=deleteutl::ostream_dev< impl_t, data_t >
operator<<(const data_t &src)utl::ostream_dev< impl_t, data_t >inline
operator=(const ostream_dev_t &)=deleteutl::ostream_dev< impl_t, data_t >protected
ostream_dev()=defaultutl::ostream_dev< impl_t, data_t >protected
ostream_dev(const ostream_dev_t &)=deleteutl::ostream_dev< impl_t, data_t >protected
ostream_dev_t typedefutl::ostream_dev< impl_t, data_t >private
pointer_type typedefutl::ostream_dev< impl_t, data_t >
put(const data_t &data)utl::ostream_dev< impl_t, data_t >inline
put(const data_t *data, size_t n)utl::ostream_dev< impl_t, data_t >inline
put_(const data_t &data)utl::ostream_dev< impl_t, data_t >inlineprivate
put_(const data_t *data, size_t n)utl::ostream_dev< impl_t, data_t >inlineprivate
type typedefutl::ostream_dev< impl_t, data_t >
~ostream_dev()=defaultutl::ostream_dev< impl_t, data_t >protected
+
+ + + + diff --git a/doc/html/classutl_1_1ostream__dev.html b/doc/html/classutl_1_1ostream__dev.html new file mode 100644 index 0000000..bba2749 --- /dev/null +++ b/doc/html/classutl_1_1ostream__dev.html @@ -0,0 +1,942 @@ + + + + + + + +uTL: utl::ostream_dev< impl_t, data_t > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
utl::ostream_dev< impl_t, data_t > Class Template Reference
+
+
+ +

Abstract base classes for output stream devices. + More...

+ +

#include <ostream_dev.h>

+ + + + + + + + + + +

+Public Types

using type = ostream_dev_t
 Export type as identity meta-function. More...
 
using data_type = data_t
 
using pointer_type = data_t *
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Common output device interface
size_t put (const data_t &data)
 Put interface. This function should send a single data_t object to device. More...
 
size_t put (const data_t *data, size_t n)
 Put interface. This function should send a stream of data_t objects to device. More...
 
Stream operator << interface
template<typename _Src_t >
ostream_dev_toperator<< (const _Src_t &src)
 Template operator<< implementation for for all by value/ref parameters. More...
 
template<typename _Src_t >
ostream_dev_toperator<< (_Src_t *src)=delete
 Overload to disallow pointer types as source. More...
 
ostream_dev_toperator<< (const data_t &src)
 Overload for single data_t object. More...
 
iterator end () noexcept
 
const_iterator end () const noexcept
 
const_iterator cend () const noexcept
 
+ + + + + + + + + + + + + +

+Protected Member Functions

Constructor / Destructor
 ~ostream_dev ()=default
 Allow destructor from derived only. More...
 
 ostream_dev ()=default
 A default constructor from derived only. More...
 
 ostream_dev (const ostream_dev_t &)=delete
 No copies. More...
 
ostream_dev_toperator= (const ostream_dev_t &)=delete
 
+ + + + +

+Private Types

using ostream_dev_t = ostream_dev< impl_t, data_t >
 class type syntactic sugar More...
 
+ + + + + + + + +

+Private Member Functions

 _CRTP_IMPL (impl_t)
 
Common output device interface requirements
size_t put_ (const data_t &data)
 
size_t put_ (const data_t *data, size_t n)
 
+ + + + + + + + + + + + + + +

+STL-like Output iterator interface

using iterator = ostreamdev_it< ostream_dev_t, data_t >
 Iterator. More...
 
using const_iterator = ostreamdev_it< const ostream_dev_t, data_t >
 Const iterator. More...
 
iterator begin () noexcept
 .begin implementation More...
 
const_iterator begin () const noexcept
 
const_iterator cbegin () const noexcept
 
+

Detailed Description

+

template<typename impl_t, typename data_t>
+class utl::ostream_dev< impl_t, data_t >

+ +

Abstract base classes for output stream devices.

+

Template base class for output stream devices using CRTP

+

This class force a common interface for output stream devices. By using this common interface the class implements

    +
  • Stream-like inserting operator
  • +
  • Output iterator
  • +
  • Const output iterator to inherit to implementation.
  • +
+
Parameters
+ + + +
impl_tThe CRTP type (the derived/implementation class typename).
data_tThe devices base type of data
+
+
+ +

Definition at line 52 of file ostream_dev.h.

+

Member Typedef Documentation

+ +

◆ const_iterator

+ +
+
+
+template<typename impl_t , typename data_t >
+ + + + +
using utl::ostream_dev< impl_t, data_t >::const_iterator = ostreamdev_it <const ostream_dev_t, data_t>
+
+ +

Const iterator.

+ +

Definition at line 151 of file ostream_dev.h.

+ +
+
+ +

◆ data_type

+ +
+
+
+template<typename impl_t , typename data_t >
+ + + + +
using utl::ostream_dev< impl_t, data_t >::data_type = data_t
+
+

Export types as output device concept demands

+ +

Definition at line 59 of file ostream_dev.h.

+ +
+
+ +

◆ iterator

+ +
+
+
+template<typename impl_t , typename data_t >
+ + + + +
using utl::ostream_dev< impl_t, data_t >::iterator = ostreamdev_it <ostream_dev_t, data_t>
+
+ +

Iterator.

+ +

Definition at line 150 of file ostream_dev.h.

+ +
+
+ +

◆ ostream_dev_t

+ +
+
+
+template<typename impl_t , typename data_t >
+ + + + + +
+ + + + +
using utl::ostream_dev< impl_t, data_t >::ostream_dev_t = ostream_dev <impl_t, data_t>
+
+private
+
+ +

class type syntactic sugar

+ +

Definition at line 54 of file ostream_dev.h.

+ +
+
+ +

◆ pointer_type

+ +
+
+
+template<typename impl_t , typename data_t >
+ + + + +
using utl::ostream_dev< impl_t, data_t >::pointer_type = data_t*
+
+ +

Definition at line 60 of file ostream_dev.h.

+ +
+
+ +

◆ type

+ +
+
+
+template<typename impl_t , typename data_t >
+ + + + +
using utl::ostream_dev< impl_t, data_t >::type = ostream_dev_t
+
+ +

Export type as identity meta-function.

+ +

Definition at line 62 of file ostream_dev.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ ~ostream_dev()

+ +
+
+
+template<typename impl_t , typename data_t >
+ + + + + +
+ + + + + + + +
utl::ostream_dev< impl_t, data_t >::~ostream_dev ()
+
+protecteddefault
+
+ +

Allow destructor from derived only.

+ +
+
+ +

◆ ostream_dev() [1/2]

+ +
+
+
+template<typename impl_t , typename data_t >
+ + + + + +
+ + + + + + + +
utl::ostream_dev< impl_t, data_t >::ostream_dev ()
+
+protecteddefault
+
+ +

A default constructor from derived only.

+ +
+
+ +

◆ ostream_dev() [2/2]

+ +
+
+
+template<typename impl_t , typename data_t >
+ + + + + +
+ + + + + + + + +
utl::ostream_dev< impl_t, data_t >::ostream_dev (const ostream_dev_t)
+
+protecteddelete
+
+ +

No copies.

+ +
+
+

Member Function Documentation

+ +

◆ _CRTP_IMPL()

+ +
+
+
+template<typename impl_t , typename data_t >
+ + + + + +
+ + + + + + + + +
utl::ostream_dev< impl_t, data_t >::_CRTP_IMPL (impl_t )
+
+private
+
+ +
+
+ +

◆ begin() [1/2]

+ +
+
+
+template<typename impl_t , typename data_t >
+ + + + + +
+ + + + + + + +
iterator utl::ostream_dev< impl_t, data_t >::begin ()
+
+inlinenoexcept
+
+ +

.begin implementation

+ +

Definition at line 154 of file ostream_dev.h.

+ +
+
+ +

◆ begin() [2/2]

+ +
+
+
+template<typename impl_t , typename data_t >
+ + + + + +
+ + + + + + + +
const_iterator utl::ostream_dev< impl_t, data_t >::begin () const
+
+inlinenoexcept
+
+ +

Definition at line 155 of file ostream_dev.h.

+ +
+
+ +

◆ cbegin()

+ +
+
+
+template<typename impl_t , typename data_t >
+ + + + + +
+ + + + + + + +
const_iterator utl::ostream_dev< impl_t, data_t >::cbegin () const
+
+inlinenoexcept
+
+ +

Definition at line 156 of file ostream_dev.h.

+ +
+
+ +

◆ cend()

+ +
+
+
+template<typename impl_t , typename data_t >
+ + + + + +
+ + + + + + + +
const_iterator utl::ostream_dev< impl_t, data_t >::cend () const
+
+inlinenoexcept
+
+ +

Definition at line 161 of file ostream_dev.h.

+ +
+
+ +

◆ end() [1/2]

+ +
+
+
+template<typename impl_t , typename data_t >
+ + + + + +
+ + + + + + + +
iterator utl::ostream_dev< impl_t, data_t >::end ()
+
+inlinenoexcept
+
+

.end implementation

+ +

Definition at line 159 of file ostream_dev.h.

+ +
+
+ +

◆ end() [2/2]

+ +
+
+
+template<typename impl_t , typename data_t >
+ + + + + +
+ + + + + + + +
const_iterator utl::ostream_dev< impl_t, data_t >::end () const
+
+inlinenoexcept
+
+ +

Definition at line 160 of file ostream_dev.h.

+ +
+
+ +

◆ operator<<() [1/3]

+ +
+
+
+template<typename impl_t , typename data_t >
+
+template<typename _Src_t >
+ + + + + +
+ + + + + + + + +
ostream_dev_t& utl::ostream_dev< impl_t, data_t >::operator<< (const _Src_t & src)
+
+inline
+
+ +

Template operator<< implementation for for all by value/ref parameters.

+
Note
In the case _Src_t size is not an exact multiple of data_t size the write data will be truncated and there may be data loss.
+
Parameters
+ + +
srcReference to source data
+
+
+
Returns
Reference to this device for chaining
+ +

Definition at line 128 of file ostream_dev.h.

+ +
+
+ +

◆ operator<<() [2/3]

+ +
+
+
+template<typename impl_t , typename data_t >
+
+template<typename _Src_t >
+ + + + + +
+ + + + + + + + +
ostream_dev_t& utl::ostream_dev< impl_t, data_t >::operator<< (_Src_t * src)
+
+delete
+
+ +

Overload to disallow pointer types as source.

+ +
+
+ +

◆ operator<<() [3/3]

+ +
+
+
+template<typename impl_t , typename data_t >
+ + + + + +
+ + + + + + + + +
ostream_dev_t& utl::ostream_dev< impl_t, data_t >::operator<< (const data_t & src)
+
+inline
+
+ +

Overload for single data_t object.

+ +

Definition at line 139 of file ostream_dev.h.

+ +
+
+ +

◆ operator=()

+ +
+
+
+template<typename impl_t , typename data_t >
+ + + + + +
+ + + + + + + + +
ostream_dev_t& utl::ostream_dev< impl_t, data_t >::operator= (const ostream_dev_t)
+
+protecteddelete
+
+

No copy assignments

+ +
+
+ +

◆ put() [1/2]

+ +
+
+
+template<typename impl_t , typename data_t >
+ + + + + +
+ + + + + + + + +
size_t utl::ostream_dev< impl_t, data_t >::put (const data_t & data)
+
+inline
+
+ +

Put interface. This function should send a single data_t object to device.

+
Parameters
+ + +
dataThe data to send
+
+
+
Returns
The number of transmitted data items
+
Note
A successful call should return 1
+ +

Definition at line 96 of file ostream_dev.h.

+ +
+
+ +

◆ put() [2/2]

+ +
+
+
+template<typename impl_t , typename data_t >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
size_t utl::ostream_dev< impl_t, data_t >::put (const data_t * data,
size_t n 
)
+
+inline
+
+ +

Put interface. This function should send a stream of data_t objects to device.

+
Parameters
+ + + +
dataPointer to buffer indenting write to device.
nThe number of data of type data_t to send
+
+
+
Returns
The number of transmitted items.
+ +

Definition at line 108 of file ostream_dev.h.

+ +
+
+ +

◆ put_() [1/2]

+ +
+
+
+template<typename impl_t , typename data_t >
+ + + + + +
+ + + + + + + + +
size_t utl::ostream_dev< impl_t, data_t >::put_ (const data_t & data)
+
+inlineprivate
+
+ +

Definition at line 77 of file ostream_dev.h.

+ +
+
+ +

◆ put_() [2/2]

+ +
+
+
+template<typename impl_t , typename data_t >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
size_t utl::ostream_dev< impl_t, data_t >::put_ (const data_t * data,
size_t n 
)
+
+inlineprivate
+
+ +

Definition at line 78 of file ostream_dev.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/doc/html/classutl_1_1ostream__dev.js b/doc/html/classutl_1_1ostream__dev.js new file mode 100644 index 0000000..23247f3 --- /dev/null +++ b/doc/html/classutl_1_1ostream__dev.js @@ -0,0 +1,27 @@ +var classutl_1_1ostream__dev = +[ + [ "const_iterator", "classutl_1_1ostream__dev.html#a04f153a089085daceda6a55854789a95", null ], + [ "data_type", "classutl_1_1ostream__dev.html#af333211e6a4c20b86c35a1d4fd15b9c5", null ], + [ "iterator", "classutl_1_1ostream__dev.html#a38ce53a3ec7a902bdcbd9dc04350b903", null ], + [ "ostream_dev_t", "classutl_1_1ostream__dev.html#adc4bbb5e81e6d612937bca9a84c950ca", null ], + [ "pointer_type", "classutl_1_1ostream__dev.html#a4d60fb31555306bf52a88889db1c8739", null ], + [ "type", "classutl_1_1ostream__dev.html#ac7169419677c70f4811803828b826351", null ], + [ "~ostream_dev", "classutl_1_1ostream__dev.html#ad0358c1b879818118e745da164d99998", null ], + [ "ostream_dev", "classutl_1_1ostream__dev.html#a6bb520cb5397ab9f7579c868311017b5", null ], + [ "ostream_dev", "classutl_1_1ostream__dev.html#afdb03e10c54fa5d079f59b0bb938c82c", null ], + [ "_CRTP_IMPL", "classutl_1_1ostream__dev.html#af993acec883f07fcd4ac9905eaa6f127", null ], + [ "begin", "classutl_1_1ostream__dev.html#a313cc3aada490c2d2641d6bdac559748", null ], + [ "begin", "classutl_1_1ostream__dev.html#aa541b838442aaf7693d528dabd049790", null ], + [ "cbegin", "classutl_1_1ostream__dev.html#adad6881acafe06f05545364b3bb3941c", null ], + [ "cend", "classutl_1_1ostream__dev.html#a90d454a509be230af0595e5a57e91f56", null ], + [ "end", "classutl_1_1ostream__dev.html#a3d2f837c438b1a97ec14384ba3382090", null ], + [ "end", "classutl_1_1ostream__dev.html#af836e2bdffe1829593d889f98a35a726", null ], + [ "operator<<", "classutl_1_1ostream__dev.html#a4ab9729e2a50b797bcd939c840685b48", null ], + [ "operator<<", "classutl_1_1ostream__dev.html#a17b6362ea015437b1cd3f4b9122c4e35", null ], + [ "operator<<", "classutl_1_1ostream__dev.html#a776a690023246345f1af2991f1b3b206", null ], + [ "operator=", "classutl_1_1ostream__dev.html#a385318ff45d575ec92801f7c0e29e9c8", null ], + [ "put", "classutl_1_1ostream__dev.html#a70a8d008d93a5a3f50de63dc70b7b4e4", null ], + [ "put", "classutl_1_1ostream__dev.html#a29f2cad2b83c801cfdab235c880e528b", null ], + [ "put_", "classutl_1_1ostream__dev.html#acfe4768762548db0d99cde8a802b0723", null ], + [ "put_", "classutl_1_1ostream__dev.html#a33546e98ec0cbd6cef862cb4d9853c7a", null ] +]; \ No newline at end of file diff --git a/doc/html/classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4-members.html b/doc/html/classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4-members.html new file mode 100644 index 0000000..c41dfba --- /dev/null +++ b/doc/html/classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4-members.html @@ -0,0 +1,130 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
utl::ostream_dev< virtual_tag, data_t > Member List
+
+
+ +

This is the complete list of members for utl::ostream_dev< virtual_tag, data_t >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + +
begin() noexceptutl::ostream_dev< virtual_tag, data_t >inline
begin() const noexceptutl::ostream_dev< virtual_tag, data_t >inline
cbegin() const noexceptutl::ostream_dev< virtual_tag, data_t >inline
cend() const noexceptutl::ostream_dev< virtual_tag, data_t >inline
const_iterator typedefutl::ostream_dev< virtual_tag, data_t >
data_type typedefutl::ostream_dev< virtual_tag, data_t >
end() noexceptutl::ostream_dev< virtual_tag, data_t >inline
end() const noexceptutl::ostream_dev< virtual_tag, data_t >inline
iterator typedefutl::ostream_dev< virtual_tag, data_t >
operator<<(const _Src_t &src)utl::ostream_dev< virtual_tag, data_t >inline
operator<<(_Src_t *src)=deleteutl::ostream_dev< virtual_tag, data_t >
operator<<(const data_t &src)utl::ostream_dev< virtual_tag, data_t >inline
operator=(const ostream_dev_t &)=deleteutl::ostream_dev< virtual_tag, data_t >protected
ostream_dev()=defaultutl::ostream_dev< virtual_tag, data_t >protected
ostream_dev(const ostream_dev_t &)=deleteutl::ostream_dev< virtual_tag, data_t >protected
ostream_dev_t typedefutl::ostream_dev< virtual_tag, data_t >private
pointer_type typedefutl::ostream_dev< virtual_tag, data_t >
put(const data_t &data)utl::ostream_dev< virtual_tag, data_t >inline
put(const data_t *data, size_t n)utl::ostream_dev< virtual_tag, data_t >inline
put_(const data_t &data)=0utl::ostream_dev< virtual_tag, data_t >privatepure virtual
put_(const data_t *data, size_t n)=0utl::ostream_dev< virtual_tag, data_t >privatepure virtual
type typedefutl::ostream_dev< virtual_tag, data_t >
~ostream_dev()=defaultutl::ostream_dev< virtual_tag, data_t >virtual
+
+ + + + diff --git a/doc/html/classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html b/doc/html/classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html new file mode 100644 index 0000000..f211b13 --- /dev/null +++ b/doc/html/classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html @@ -0,0 +1,889 @@ + + + + + + + +uTL: utl::ostream_dev< virtual_tag, data_t > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
utl::ostream_dev< virtual_tag, data_t > Class Template Referenceabstract
+
+
+ +

#include <ostream_dev.h>

+ + + + + + + + + + +

+Public Types

using type = ostream_dev_t
 Export type as identity meta-function. More...
 
using data_type = data_t
 
using pointer_type = data_t *
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Common output device interface
size_t put (const data_t &data)
 Put interface. This function should send a single data_t object to device. More...
 
size_t put (const data_t *data, size_t n)
 Put interface. This function should send a stream of data_t objects to device. More...
 
Stream operator << interface
template<typename _Src_t >
ostream_dev_toperator<< (const _Src_t &src)
 Template operator<< implementation for for all by value/ref parameters. More...
 
template<typename _Src_t >
ostream_dev_toperator<< (_Src_t *src)=delete
 Overload to disallow pointer types as source. More...
 
ostream_dev_toperator<< (const data_t &src)
 Overload for single data_t object. More...
 
iterator end () noexcept
 
const_iterator end () const noexcept
 
const_iterator cend () const noexcept
 
+ + + + +

+Private Types

using ostream_dev_t = ostream_dev< virtual_tag, data_t >
 class type syntactic sugar More...
 
+ + + + + + +

+Private Member Functions

Common output device interface requirements
virtual size_t put_ (const data_t &data)=0
 
virtual size_t put_ (const data_t *data, size_t n)=0
 
+ + + + + + + + + + + + +

+Constructor / Destructor

virtual ~ostream_dev ()=default
 Virtual destructor. More...
 
 ostream_dev ()=default
 A default constructor from derived only. More...
 
 ostream_dev (const ostream_dev_t &)=delete
 No copies. More...
 
ostream_dev_toperator= (const ostream_dev_t &)=delete
 
+ + + + + + + + + + + + + + +

+STL-like Output iterator interface

using iterator = ostreamdev_it< ostream_dev_t, data_t >
 Iterator. More...
 
using const_iterator = ostreamdev_it< const ostream_dev_t, data_t >
 Const iterator. More...
 
iterator begin () noexcept
 .begin implementation More...
 
const_iterator begin () const noexcept
 
const_iterator cbegin () const noexcept
 
+

Detailed Description

+

template<typename data_t>
+class utl::ostream_dev< virtual_tag, data_t >

+ + +

Definition at line 171 of file ostream_dev.h.

+

Member Typedef Documentation

+ +

◆ const_iterator

+ +
+
+
+template<typename data_t >
+ + + + +
using utl::ostream_dev< virtual_tag, data_t >::const_iterator = ostreamdev_it <const ostream_dev_t, data_t>
+
+ +

Const iterator.

+ +

Definition at line 267 of file ostream_dev.h.

+ +
+
+ +

◆ data_type

+ +
+
+
+template<typename data_t >
+ + + + +
using utl::ostream_dev< virtual_tag, data_t >::data_type = data_t
+
+

Export types as output device concept demands

+ +

Definition at line 177 of file ostream_dev.h.

+ +
+
+ +

◆ iterator

+ +
+
+
+template<typename data_t >
+ + + + +
using utl::ostream_dev< virtual_tag, data_t >::iterator = ostreamdev_it <ostream_dev_t, data_t>
+
+ +

Iterator.

+ +

Definition at line 266 of file ostream_dev.h.

+ +
+
+ +

◆ ostream_dev_t

+ +
+
+
+template<typename data_t >
+ + + + + +
+ + + + +
using utl::ostream_dev< virtual_tag, data_t >::ostream_dev_t = ostream_dev <virtual_tag, data_t>
+
+private
+
+ +

class type syntactic sugar

+ +

Definition at line 172 of file ostream_dev.h.

+ +
+
+ +

◆ pointer_type

+ +
+
+
+template<typename data_t >
+ + + + +
using utl::ostream_dev< virtual_tag, data_t >::pointer_type = data_t*
+
+ +

Definition at line 178 of file ostream_dev.h.

+ +
+
+ +

◆ type

+ +
+
+
+template<typename data_t >
+ + + + +
using utl::ostream_dev< virtual_tag, data_t >::type = ostream_dev_t
+
+ +

Export type as identity meta-function.

+ +

Definition at line 180 of file ostream_dev.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ ~ostream_dev()

+ +
+
+
+template<typename data_t >
+ + + + + +
+ + + + + + + +
virtual utl::ostream_dev< virtual_tag, data_t >::~ostream_dev ()
+
+virtualdefault
+
+ +

Virtual destructor.

+ +
+
+ +

◆ ostream_dev() [1/2]

+ +
+
+
+template<typename data_t >
+ + + + + +
+ + + + + + + +
utl::ostream_dev< virtual_tag, data_t >::ostream_dev ()
+
+protecteddefault
+
+ +

A default constructor from derived only.

+ +
+
+ +

◆ ostream_dev() [2/2]

+ +
+
+
+template<typename data_t >
+ + + + + +
+ + + + + + + + +
utl::ostream_dev< virtual_tag, data_t >::ostream_dev (const ostream_dev_t)
+
+protecteddelete
+
+ +

No copies.

+ +
+
+

Member Function Documentation

+ +

◆ begin() [1/2]

+ +
+
+
+template<typename data_t >
+ + + + + +
+ + + + + + + +
iterator utl::ostream_dev< virtual_tag, data_t >::begin ()
+
+inlinenoexcept
+
+ +

.begin implementation

+ +

Definition at line 270 of file ostream_dev.h.

+ +
+
+ +

◆ begin() [2/2]

+ +
+
+
+template<typename data_t >
+ + + + + +
+ + + + + + + +
const_iterator utl::ostream_dev< virtual_tag, data_t >::begin () const
+
+inlinenoexcept
+
+ +

Definition at line 271 of file ostream_dev.h.

+ +
+
+ +

◆ cbegin()

+ +
+
+
+template<typename data_t >
+ + + + + +
+ + + + + + + +
const_iterator utl::ostream_dev< virtual_tag, data_t >::cbegin () const
+
+inlinenoexcept
+
+ +

Definition at line 272 of file ostream_dev.h.

+ +
+
+ +

◆ cend()

+ +
+
+
+template<typename data_t >
+ + + + + +
+ + + + + + + +
const_iterator utl::ostream_dev< virtual_tag, data_t >::cend () const
+
+inlinenoexcept
+
+ +

Definition at line 277 of file ostream_dev.h.

+ +
+
+ +

◆ end() [1/2]

+ +
+
+
+template<typename data_t >
+ + + + + +
+ + + + + + + +
iterator utl::ostream_dev< virtual_tag, data_t >::end ()
+
+inlinenoexcept
+
+

.end implementation

+ +

Definition at line 275 of file ostream_dev.h.

+ +
+
+ +

◆ end() [2/2]

+ +
+
+
+template<typename data_t >
+ + + + + +
+ + + + + + + +
const_iterator utl::ostream_dev< virtual_tag, data_t >::end () const
+
+inlinenoexcept
+
+ +

Definition at line 276 of file ostream_dev.h.

+ +
+
+ +

◆ operator<<() [1/3]

+ +
+
+
+template<typename data_t >
+
+template<typename _Src_t >
+ + + + + +
+ + + + + + + + +
ostream_dev_t& utl::ostream_dev< virtual_tag, data_t >::operator<< (const _Src_t & src)
+
+inline
+
+ +

Template operator<< implementation for for all by value/ref parameters.

+
Note
In the case _Src_t size is not an exact multiple of data_t size the write data will be truncated and there may be data loss.
+
Parameters
+ + +
srcReference to source data
+
+
+
Returns
Reference to this device for chaining
+ +

Definition at line 245 of file ostream_dev.h.

+ +
+
+ +

◆ operator<<() [2/3]

+ +
+
+
+template<typename data_t >
+
+template<typename _Src_t >
+ + + + + +
+ + + + + + + + +
ostream_dev_t& utl::ostream_dev< virtual_tag, data_t >::operator<< (_Src_t * src)
+
+delete
+
+ +

Overload to disallow pointer types as source.

+ +
+
+ +

◆ operator<<() [3/3]

+ +
+
+
+template<typename data_t >
+ + + + + +
+ + + + + + + + +
ostream_dev_t& utl::ostream_dev< virtual_tag, data_t >::operator<< (const data_t & src)
+
+inline
+
+ +

Overload for single data_t object.

+ +

Definition at line 256 of file ostream_dev.h.

+ +
+
+ +

◆ operator=()

+ +
+
+
+template<typename data_t >
+ + + + + +
+ + + + + + + + +
ostream_dev_t& utl::ostream_dev< virtual_tag, data_t >::operator= (const ostream_dev_t)
+
+protecteddelete
+
+

No copy assignments

+ +
+
+ +

◆ put() [1/2]

+ +
+
+
+template<typename data_t >
+ + + + + +
+ + + + + + + + +
size_t utl::ostream_dev< virtual_tag, data_t >::put (const data_t & data)
+
+inline
+
+ +

Put interface. This function should send a single data_t object to device.

+
Parameters
+ + +
dataThe data to send
+
+
+
Returns
The number of transmitted data items
+
Note
A successful call should return 1
+ +

Definition at line 213 of file ostream_dev.h.

+ +
+
+ +

◆ put() [2/2]

+ +
+
+
+template<typename data_t >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
size_t utl::ostream_dev< virtual_tag, data_t >::put (const data_t * data,
size_t n 
)
+
+inline
+
+ +

Put interface. This function should send a stream of data_t objects to device.

+
Parameters
+ + + +
dataPointer to buffer indenting write to device.
nThe number of data of type data_t to send
+
+
+
Returns
The number of transmitted items.
+ +

Definition at line 225 of file ostream_dev.h.

+ +
+
+ +

◆ put_() [1/2]

+ +
+
+
+template<typename data_t >
+ + + + + +
+ + + + + + + + +
virtual size_t utl::ostream_dev< virtual_tag, data_t >::put_ (const data_t & data)
+
+privatepure virtual
+
+ +
+
+ +

◆ put_() [2/2]

+ +
+
+
+template<typename data_t >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual size_t utl::ostream_dev< virtual_tag, data_t >::put_ (const data_t * data,
size_t n 
)
+
+privatepure virtual
+
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/doc/html/classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.js b/doc/html/classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.js new file mode 100644 index 0000000..fa6f533 --- /dev/null +++ b/doc/html/classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.js @@ -0,0 +1,26 @@ +var classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4 = +[ + [ "const_iterator", "classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#abcb00d6a76ac3baa46283c631c020b9c", null ], + [ "data_type", "classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#a0c182d46215479ac0169c741db773f3b", null ], + [ "iterator", "classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#aa440d7490da956cfe91f2835191056a4", null ], + [ "ostream_dev_t", "classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#a802836d016068af3e5e78dc5001d5861", null ], + [ "pointer_type", "classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#a2186444525589e2e06fdf947b238b785", null ], + [ "type", "classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#aa3cb961a80a8dee210e9ab9ffd2483ee", null ], + [ "~ostream_dev", "classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#ac653594be9325b740b6ded465de6d639", null ], + [ "ostream_dev", "classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#a977d2f5eb87ae8b301921542be350a93", null ], + [ "ostream_dev", "classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#a0662ca7855b82a14b50d48a710c64709", null ], + [ "begin", "classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#ab1319beb5c2d1d84adb54c83d73d34b6", null ], + [ "begin", "classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#a43515a84a7f31d33a1bcc5c352ae3809", null ], + [ "cbegin", "classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#aafdd8c809f8c113ff8749d9d98ad5831", null ], + [ "cend", "classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#a7a883628b71791d0f26a47f9d801543d", null ], + [ "end", "classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#a853552686bba8432a6f53a9c21f83ac2", null ], + [ "end", "classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#a8ea06a012f2d55f67421026116000337", null ], + [ "operator<<", "classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#a9761a89cc6f5f57529fd7f686350a221", null ], + [ "operator<<", "classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#aeedb13f9949b3cc31fede903553c0a05", null ], + [ "operator<<", "classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#a767095b8efcafd7cb50c065b1c781146", null ], + [ "operator=", "classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#a013bfe883ab1f72c3d19678227072178", null ], + [ "put", "classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#aaee696bf560e084e61b4fb0217569d1a", null ], + [ "put", "classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#a8014501f6c22a8dc0a366898e92fa83c", null ], + [ "put_", "classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#abb1f94bc1a9bc28ea51e524b96aaca66", null ], + [ "put_", "classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#aecbc9b416ded99df2b87e33e90236b41", null ] +]; \ No newline at end of file diff --git a/doc/html/classutl_1_1ostreamdev__it-members.html b/doc/html/classutl_1_1ostreamdev__it-members.html new file mode 100644 index 0000000..627ea16 --- /dev/null +++ b/doc/html/classutl_1_1ostreamdev__it-members.html @@ -0,0 +1,122 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/doc/html/classutl_1_1ostreamdev__it.html b/doc/html/classutl_1_1ostreamdev__it.html new file mode 100644 index 0000000..af093f6 --- /dev/null +++ b/doc/html/classutl_1_1ostreamdev__it.html @@ -0,0 +1,561 @@ + + + + + + + +uTL: utl::ostreamdev_it< cont_t, data_t > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
utl::ostreamdev_it< cont_t, data_t > Class Template Reference
+
+
+ +

#include <dev_iterators.h>

+ + + + + + + + + + + + + + + +

+Public Types

using type = iterator_t
 
using iterator_category = typename dev_iterator_traits< std::output_iterator_tag, data_t, void >::iterator_category
 
using value_type = typename dev_iterator_traits< std::output_iterator_tag, data_t, void >::value_type
 
using difference_type = typename dev_iterator_traits< std::output_iterator_tag, data_t, void >::difference_type
 
using pointer = typename dev_iterator_traits< std::output_iterator_tag, data_t, void >::pointer
 
using reference = typename dev_iterator_traits< std::output_iterator_tag, data_t, void >::reference
 
+ + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Constructor / Destructor
 ostreamdev_it (cont_t *owner=nullptr) noexcept
 Basic constructor. More...
 
 ostreamdev_it (const iterator_t &it) noexcept
 Basic copy constructor. More...
 
iterator_toperator= (const iterator_t &it) noexcept
 Basic copy assignment operator. More...
 
Public interface
iterator_toperator* () noexcept
 
iterator_toperator= (const value_type &value)
 Value-assignment operation. Where the output method is invoked. More...
 
iterator_toperator++ () noexcept
 
iterator_toperator++ (int) noexcept
 
+ + + +

+Private Types

using iterator_t = ostreamdev_it< cont_t, data_t >
 
+ + + +

+Private Attributes

cont_t * owner_ {nullptr}
 
+

Detailed Description

+

template<typename cont_t, typename data_t>
+class utl::ostreamdev_it< cont_t, data_t >

+ + +

Definition at line 69 of file dev_iterators.h.

+

Member Typedef Documentation

+ +

◆ difference_type

+ +
+
+
+template<typename cont_t , typename data_t >
+ + + + +
using utl::ostreamdev_it< cont_t, data_t >::difference_type = typename dev_iterator_traits <std::output_iterator_tag, data_t, void>::difference_type
+
+ +

Definition at line 78 of file dev_iterators.h.

+ +
+
+ +

◆ iterator_category

+ +
+
+
+template<typename cont_t , typename data_t >
+ + + + +
using utl::ostreamdev_it< cont_t, data_t >::iterator_category = typename dev_iterator_traits <std::output_iterator_tag, data_t, void>::iterator_category
+
+

STL iterator traits "forwarding"

+ +

Definition at line 76 of file dev_iterators.h.

+ +
+
+ +

◆ iterator_t

+ +
+
+
+template<typename cont_t , typename data_t >
+ + + + + +
+ + + + +
using utl::ostreamdev_it< cont_t, data_t >::iterator_t = ostreamdev_it <cont_t, data_t>
+
+private
+
+ +

Definition at line 70 of file dev_iterators.h.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<typename cont_t , typename data_t >
+ + + + +
using utl::ostreamdev_it< cont_t, data_t >::pointer = typename dev_iterator_traits <std::output_iterator_tag, data_t, void>::pointer
+
+ +

Definition at line 79 of file dev_iterators.h.

+ +
+
+ +

◆ reference

+ +
+
+
+template<typename cont_t , typename data_t >
+ + + + +
using utl::ostreamdev_it< cont_t, data_t >::reference = typename dev_iterator_traits <std::output_iterator_tag, data_t, void>::reference
+
+ +

Definition at line 80 of file dev_iterators.h.

+ +
+
+ +

◆ type

+ +
+
+
+template<typename cont_t , typename data_t >
+ + + + +
using utl::ostreamdev_it< cont_t, data_t >::type = iterator_t
+
+

Export type as identity meta-function

+ +

Definition at line 72 of file dev_iterators.h.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<typename cont_t , typename data_t >
+ + + + +
using utl::ostreamdev_it< cont_t, data_t >::value_type = typename dev_iterator_traits <std::output_iterator_tag, data_t, void>::value_type
+
+ +

Definition at line 77 of file dev_iterators.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ ostreamdev_it() [1/2]

+ +
+
+
+template<typename cont_t , typename data_t >
+ + + + + +
+ + + + + + + + +
utl::ostreamdev_it< cont_t, data_t >::ostreamdev_it (cont_t * owner = nullptr)
+
+inlinenoexcept
+
+ +

Basic constructor.

+ +

Definition at line 96 of file dev_iterators.h.

+ +
+
+ +

◆ ostreamdev_it() [2/2]

+ +
+
+
+template<typename cont_t , typename data_t >
+ + + + + +
+ + + + + + + + +
utl::ostreamdev_it< cont_t, data_t >::ostreamdev_it (const iterator_tit)
+
+inlinenoexcept
+
+ +

Basic copy constructor.

+ +

Definition at line 99 of file dev_iterators.h.

+ +
+
+

Member Function Documentation

+ +

◆ operator*()

+ +
+
+
+template<typename cont_t , typename data_t >
+ + + + + +
+ + + + + + + +
iterator_t& utl::ostreamdev_it< cont_t, data_t >::operator* ()
+
+inlinenoexcept
+
+ +

Definition at line 110 of file dev_iterators.h.

+ +
+
+ +

◆ operator++() [1/2]

+ +
+
+
+template<typename cont_t , typename data_t >
+ + + + + +
+ + + + + + + +
iterator_t& utl::ostreamdev_it< cont_t, data_t >::operator++ ()
+
+inlinenoexcept
+
+ +

Definition at line 122 of file dev_iterators.h.

+ +
+
+ +

◆ operator++() [2/2]

+ +
+
+
+template<typename cont_t , typename data_t >
+ + + + + +
+ + + + + + + + +
iterator_t& utl::ostreamdev_it< cont_t, data_t >::operator++ (int )
+
+inlinenoexcept
+
+ +

Definition at line 123 of file dev_iterators.h.

+ +
+
+ +

◆ operator=() [1/2]

+ +
+
+
+template<typename cont_t , typename data_t >
+ + + + + +
+ + + + + + + + +
iterator_t& utl::ostreamdev_it< cont_t, data_t >::operator= (const iterator_tit)
+
+inlinenoexcept
+
+ +

Basic copy assignment operator.

+ +

Definition at line 102 of file dev_iterators.h.

+ +
+
+ +

◆ operator=() [2/2]

+ +
+
+
+template<typename cont_t , typename data_t >
+ + + + + +
+ + + + + + + + +
iterator_t& utl::ostreamdev_it< cont_t, data_t >::operator= (const value_typevalue)
+
+inline
+
+ +

Value-assignment operation. Where the output method is invoked.

+
Parameters
+ + +
valueAn instance of Cont_t::data_type
+
+
+
Returns
This iterator, for chained operations.
+ +

Definition at line 117 of file dev_iterators.h.

+ +
+
+

Member Data Documentation

+ +

◆ owner_

+ +
+
+
+template<typename cont_t , typename data_t >
+ + + + + +
+ + + + +
cont_t* utl::ostreamdev_it< cont_t, data_t >::owner_ {nullptr}
+
+private
+
+

Pointer to parent/owner device class. Usable iterator demands owner container in order to access data. Considering the data don't "live" in memory. A default constructed iterator will behave like end() just like the input version does.

+ +

Definition at line 84 of file dev_iterators.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/doc/html/classutl_1_1ostreamdev__it.js b/doc/html/classutl_1_1ostreamdev__it.js new file mode 100644 index 0000000..5b06ee4 --- /dev/null +++ b/doc/html/classutl_1_1ostreamdev__it.js @@ -0,0 +1,18 @@ +var classutl_1_1ostreamdev__it = +[ + [ "difference_type", "classutl_1_1ostreamdev__it.html#abf3e651511a922a8d8a2f9eb5d23e162", null ], + [ "iterator_category", "classutl_1_1ostreamdev__it.html#af1487479f0514fa330ef3393821932e8", null ], + [ "iterator_t", "classutl_1_1ostreamdev__it.html#a56009b0113c7a0cf6c62012a7cdc49d1", null ], + [ "pointer", "classutl_1_1ostreamdev__it.html#a53deacec230a62f20fcb41858aa7cf8b", null ], + [ "reference", "classutl_1_1ostreamdev__it.html#abda00e5d526b4f670b4bcae2a0ec65e2", null ], + [ "type", "classutl_1_1ostreamdev__it.html#ab5f87e036d215580e62f112f9ea1aef3", null ], + [ "value_type", "classutl_1_1ostreamdev__it.html#a4c8ef9dc81fd07e719efe6e4f31bccfd", null ], + [ "ostreamdev_it", "classutl_1_1ostreamdev__it.html#a6325c4575c2590a9af15091828f96253", null ], + [ "ostreamdev_it", "classutl_1_1ostreamdev__it.html#a0743c044728fa9b33e0e0648da91982d", null ], + [ "operator*", "classutl_1_1ostreamdev__it.html#a59b20f351f4453d0439a732020f01a62", null ], + [ "operator++", "classutl_1_1ostreamdev__it.html#a0b30079065e0a886991eee4d701d99f2", null ], + [ "operator++", "classutl_1_1ostreamdev__it.html#a1f14055eccffc96163aad431f2d1e663", null ], + [ "operator=", "classutl_1_1ostreamdev__it.html#a12bff250b98723f39f8145cd28753c62", null ], + [ "operator=", "classutl_1_1ostreamdev__it.html#a79b92769a48d202c4eb7d98d031eed3d", null ], + [ "owner_", "classutl_1_1ostreamdev__it.html#a11033565f4b36ffdc5a6362393decad9", null ] +]; \ No newline at end of file diff --git a/doc/html/classutl_1_1out__dev-members.html b/doc/html/classutl_1_1out__dev-members.html new file mode 100644 index 0000000..845e936 --- /dev/null +++ b/doc/html/classutl_1_1out__dev-members.html @@ -0,0 +1,131 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
utl::out_dev< impl_t, data_t, streamsize > Member List
+
+
+ +

This is the complete list of members for utl::out_dev< impl_t, data_t, streamsize >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
_CRTP_IMPL(impl_t)utl::out_dev< impl_t, data_t, streamsize >private
begin() noexceptutl::out_dev< impl_t, data_t, streamsize >inline
begin() const noexceptutl::out_dev< impl_t, data_t, streamsize >inline
cbegin() const noexceptutl::out_dev< impl_t, data_t, streamsize >inline
cend() const noexceptutl::out_dev< impl_t, data_t, streamsize >inline
const_iterator typedefutl::out_dev< impl_t, data_t, streamsize >
data_type typedefutl::out_dev< impl_t, data_t, streamsize >
end() noexceptutl::out_dev< impl_t, data_t, streamsize >inline
end() const noexceptutl::out_dev< impl_t, data_t, streamsize >inline
iterator typedefutl::out_dev< impl_t, data_t, streamsize >
operator<<(_Src_t &src)utl::out_dev< impl_t, data_t, streamsize >inline
operator<<(_Src_t *src)=deleteutl::out_dev< impl_t, data_t, streamsize >
operator<<(const data_t &src)utl::out_dev< impl_t, data_t, streamsize >inline
operator=(const out_dev_t &)=deleteutl::out_dev< impl_t, data_t, streamsize >protected
out_dev()=defaultutl::out_dev< impl_t, data_t, streamsize >protected
out_dev(const out_dev_t &)=deleteutl::out_dev< impl_t, data_t, streamsize >protected
out_dev_t typedefutl::out_dev< impl_t, data_t, streamsize >private
pointer_type typedefutl::out_dev< impl_t, data_t, streamsize >
put(const data_t &data)utl::out_dev< impl_t, data_t, streamsize >inline
put(const data_t *data, size_t n)utl::out_dev< impl_t, data_t, streamsize >inline
put_(const data_t &data)utl::out_dev< impl_t, data_t, streamsize >inlineprivate
put_(const data_t *data, size_t n)utl::out_dev< impl_t, data_t, streamsize >inlineprivate
type typedefutl::out_dev< impl_t, data_t, streamsize >
~out_dev()=defaultutl::out_dev< impl_t, data_t, streamsize >protected
+
+ + + + diff --git a/doc/html/classutl_1_1out__dev.html b/doc/html/classutl_1_1out__dev.html new file mode 100644 index 0000000..19f4b75 --- /dev/null +++ b/doc/html/classutl_1_1out__dev.html @@ -0,0 +1,946 @@ + + + + + + + +uTL: utl::out_dev< impl_t, data_t, streamsize > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
utl::out_dev< impl_t, data_t, streamsize > Class Template Reference
+
+
+ +

Abstract base classes for output devices. + More...

+ +

#include <out_dev.h>

+ + + + + + + + + + +

+Public Types

using type = out_dev_t
 Export type as identity meta-function. More...
 
using data_type = data_t
 
using pointer_type = data_t *
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Common output device interface
size_t put (const data_t &data)
 Put interface. This function should send a single data_t object to device. More...
 
size_t put (const data_t *data, size_t n)
 Put interface. This function should send a stream of data_t objects to device. More...
 
Stream operator << interface
template<typename _Src_t >
out_dev_toperator<< (_Src_t &src)
 Template operator<< implementation for for all by value/ref parameters. More...
 
template<typename _Src_t >
out_dev_toperator<< (_Src_t *src)=delete
 Overload to disallow pointer types as source. More...
 
out_dev_toperator<< (const data_t &src)
 Overload for single data_t object. More...
 
iterator end () noexcept
 
const_iterator end () const noexcept
 
const_iterator cend () const noexcept
 
+ + + + + + + + + + + + + +

+Protected Member Functions

Constructor / Destructor
 ~out_dev ()=default
 Allow destructor from derived only. More...
 
 out_dev ()=default
 A default constructor from derived only. More...
 
 out_dev (const out_dev_t &)=delete
 No copies. More...
 
out_dev_toperator= (const out_dev_t &)=delete
 
+ + + + +

+Private Types

using out_dev_t = out_dev< impl_t, data_t, streamsize >
 class type syntactic sugar More...
 
+ + + + + + + + +

+Private Member Functions

 _CRTP_IMPL (impl_t)
 
Common output device interface requirements
size_t put_ (const data_t &data)
 
size_t put_ (const data_t *data, size_t n)
 
+ + + + + + + + + + + + + + +

+STL-like Output iterator interface

using iterator = outdev_it< out_dev_t, data_t *, streamsize >
 Iterator. More...
 
using const_iterator = outdev_it< const out_dev_t, data_t *, streamsize >
 Const iterator. More...
 
iterator begin () noexcept
 .begin implementation More...
 
const_iterator begin () const noexcept
 
const_iterator cbegin () const noexcept
 
+

Detailed Description

+

template<typename impl_t, typename data_t, size_t streamsize = 0>
+class utl::out_dev< impl_t, data_t, streamsize >

+ +

Abstract base classes for output devices.

+

Template base class for output devices. using CRTP

+

This class force a common interface for output devices. By using this common interface the class implements

    +
  • Stream-like inserting operator
  • +
  • Output iterator
  • +
  • Const output iterator to inherit to implementation.
  • +
+
Parameters
+ + + + +
impl_tThe CRTP type (the derived/implementation class typename).
data_tThe devices base type of data
streamsizeThe number of elements to indicate eos.
    +
  • None or 0 Stream only. No iterator as begin() now equals end().
  • +
+
+
+
+ +

Definition at line 54 of file out_dev.h.

+

Member Typedef Documentation

+ +

◆ const_iterator

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + +
using utl::out_dev< impl_t, data_t, streamsize >::const_iterator = outdev_it <const out_dev_t, data_t*, streamsize>
+
+ +

Const iterator.

+ +

Definition at line 153 of file out_dev.h.

+ +
+
+ +

◆ data_type

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + +
using utl::out_dev< impl_t, data_t, streamsize >::data_type = data_t
+
+

Export types as input device concept demands

+ +

Definition at line 61 of file out_dev.h.

+ +
+
+ +

◆ iterator

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + +
using utl::out_dev< impl_t, data_t, streamsize >::iterator = outdev_it <out_dev_t, data_t*, streamsize>
+
+ +

Iterator.

+ +

Definition at line 152 of file out_dev.h.

+ +
+
+ +

◆ out_dev_t

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + + +
+ + + + +
using utl::out_dev< impl_t, data_t, streamsize >::out_dev_t = out_dev <impl_t, data_t, streamsize>
+
+private
+
+ +

class type syntactic sugar

+ +

Definition at line 56 of file out_dev.h.

+ +
+
+ +

◆ pointer_type

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + +
using utl::out_dev< impl_t, data_t, streamsize >::pointer_type = data_t*
+
+ +

Definition at line 62 of file out_dev.h.

+ +
+
+ +

◆ type

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + +
using utl::out_dev< impl_t, data_t, streamsize >::type = out_dev_t
+
+ +

Export type as identity meta-function.

+ +

Definition at line 64 of file out_dev.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ ~out_dev()

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + + +
+ + + + + + + +
utl::out_dev< impl_t, data_t, streamsize >::~out_dev ()
+
+protecteddefault
+
+ +

Allow destructor from derived only.

+ +
+
+ +

◆ out_dev() [1/2]

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + + +
+ + + + + + + +
utl::out_dev< impl_t, data_t, streamsize >::out_dev ()
+
+protecteddefault
+
+ +

A default constructor from derived only.

+ +
+
+ +

◆ out_dev() [2/2]

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + + +
+ + + + + + + + +
utl::out_dev< impl_t, data_t, streamsize >::out_dev (const out_dev_t)
+
+protecteddelete
+
+ +

No copies.

+ +
+
+

Member Function Documentation

+ +

◆ _CRTP_IMPL()

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + + +
+ + + + + + + + +
utl::out_dev< impl_t, data_t, streamsize >::_CRTP_IMPL (impl_t )
+
+private
+
+ +
+
+ +

◆ begin() [1/2]

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + + +
+ + + + + + + +
iterator utl::out_dev< impl_t, data_t, streamsize >::begin ()
+
+inlinenoexcept
+
+ +

.begin implementation

+ +

Definition at line 156 of file out_dev.h.

+ +
+
+ +

◆ begin() [2/2]

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + + +
+ + + + + + + +
const_iterator utl::out_dev< impl_t, data_t, streamsize >::begin () const
+
+inlinenoexcept
+
+ +

Definition at line 157 of file out_dev.h.

+ +
+
+ +

◆ cbegin()

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + + +
+ + + + + + + +
const_iterator utl::out_dev< impl_t, data_t, streamsize >::cbegin () const
+
+inlinenoexcept
+
+ +

Definition at line 158 of file out_dev.h.

+ +
+
+ +

◆ cend()

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + + +
+ + + + + + + +
const_iterator utl::out_dev< impl_t, data_t, streamsize >::cend () const
+
+inlinenoexcept
+
+ +

Definition at line 163 of file out_dev.h.

+ +
+
+ +

◆ end() [1/2]

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + + +
+ + + + + + + +
iterator utl::out_dev< impl_t, data_t, streamsize >::end ()
+
+inlinenoexcept
+
+

.end implementation

+ +

Definition at line 161 of file out_dev.h.

+ +
+
+ +

◆ end() [2/2]

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + + +
+ + + + + + + +
const_iterator utl::out_dev< impl_t, data_t, streamsize >::end () const
+
+inlinenoexcept
+
+ +

Definition at line 162 of file out_dev.h.

+ +
+
+ +

◆ operator<<() [1/3]

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+
+template<typename _Src_t >
+ + + + + +
+ + + + + + + + +
out_dev_t& utl::out_dev< impl_t, data_t, streamsize >::operator<< (_Src_t & src)
+
+inline
+
+ +

Template operator<< implementation for for all by value/ref parameters.

+
Note
In the case _Src_t size is not an exact multiple of data_t size the write data will be truncated and there may be data loss.
+
Parameters
+ + +
srcReference to source data
+
+
+
Returns
Reference to this device for chaining
+ +

Definition at line 131 of file out_dev.h.

+ +
+
+ +

◆ operator<<() [2/3]

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+
+template<typename _Src_t >
+ + + + + +
+ + + + + + + + +
out_dev_t& utl::out_dev< impl_t, data_t, streamsize >::operator<< (_Src_t * src)
+
+delete
+
+ +

Overload to disallow pointer types as source.

+ +
+
+ +

◆ operator<<() [3/3]

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + + +
+ + + + + + + + +
out_dev_t& utl::out_dev< impl_t, data_t, streamsize >::operator<< (const data_t & src)
+
+inline
+
+ +

Overload for single data_t object.

+ +

Definition at line 142 of file out_dev.h.

+ +
+
+ +

◆ operator=()

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + + +
+ + + + + + + + +
out_dev_t& utl::out_dev< impl_t, data_t, streamsize >::operator= (const out_dev_t)
+
+protecteddelete
+
+

No copy assignments

+ +
+
+ +

◆ put() [1/2]

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + + +
+ + + + + + + + +
size_t utl::out_dev< impl_t, data_t, streamsize >::put (const data_t & data)
+
+inline
+
+ +

Put interface. This function should send a single data_t object to device.

+
Parameters
+ + +
dataThe data to send
+
+
+
Returns
The number of transmitted data items
+
Note
A successful call should return 1
+ +

Definition at line 99 of file out_dev.h.

+ +
+
+ +

◆ put() [2/2]

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
size_t utl::out_dev< impl_t, data_t, streamsize >::put (const data_t * data,
size_t n 
)
+
+inline
+
+ +

Put interface. This function should send a stream of data_t objects to device.

+
Parameters
+ + + +
dataPointer to buffer indenting write to device.
nThe number of data of type data_t to send
+
+
+
Returns
The number of transmitted items.
+ +

Definition at line 111 of file out_dev.h.

+ +
+
+ +

◆ put_() [1/2]

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + + +
+ + + + + + + + +
size_t utl::out_dev< impl_t, data_t, streamsize >::put_ (const data_t & data)
+
+inlineprivate
+
+ +

Definition at line 80 of file out_dev.h.

+ +
+
+ +

◆ put_() [2/2]

+ +
+
+
+template<typename impl_t , typename data_t , size_t streamsize = 0>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
size_t utl::out_dev< impl_t, data_t, streamsize >::put_ (const data_t * data,
size_t n 
)
+
+inlineprivate
+
+ +

Definition at line 81 of file out_dev.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/doc/html/classutl_1_1out__dev.js b/doc/html/classutl_1_1out__dev.js new file mode 100644 index 0000000..52c066b --- /dev/null +++ b/doc/html/classutl_1_1out__dev.js @@ -0,0 +1,27 @@ +var classutl_1_1out__dev = +[ + [ "const_iterator", "classutl_1_1out__dev.html#acaf94b09de592226f78d4d2d43f348ed", null ], + [ "data_type", "classutl_1_1out__dev.html#ac6b32afc51452a7dd2297a41f74e63e4", null ], + [ "iterator", "classutl_1_1out__dev.html#ad7f16990cdb6d54a54c774224f758f13", null ], + [ "out_dev_t", "classutl_1_1out__dev.html#a17ccf13d527b4c220b0e937e20d81aba", null ], + [ "pointer_type", "classutl_1_1out__dev.html#abfb6a95c13fc63c09776141ad16e98e3", null ], + [ "type", "classutl_1_1out__dev.html#aebda5d42d26027e9266bfe74bf71a960", null ], + [ "~out_dev", "classutl_1_1out__dev.html#a0c04af11ec0f3f9954399d22069e314d", null ], + [ "out_dev", "classutl_1_1out__dev.html#a0ceaf76475484f35174d96561dea73bf", null ], + [ "out_dev", "classutl_1_1out__dev.html#a36aed8619cf12b4f04334c7e0b219fb6", null ], + [ "_CRTP_IMPL", "classutl_1_1out__dev.html#aad8c005ab9627877ea38997cdf5f07dc", null ], + [ "begin", "classutl_1_1out__dev.html#a6396fb83348828e37d853d1566b0d742", null ], + [ "begin", "classutl_1_1out__dev.html#ab08cdc4935ec15a388e34610e905d375", null ], + [ "cbegin", "classutl_1_1out__dev.html#ace309e9fd1a113691c5a84fde268c676", null ], + [ "cend", "classutl_1_1out__dev.html#a71487ce8df820dd688d1698b035fe4fe", null ], + [ "end", "classutl_1_1out__dev.html#a34aeac23c0184d243c6631e713208e27", null ], + [ "end", "classutl_1_1out__dev.html#a0e89b3e0a5bddc3031b543ef32eb401e", null ], + [ "operator<<", "classutl_1_1out__dev.html#a73612dfcce721cbc386bad3e7d6864b4", null ], + [ "operator<<", "classutl_1_1out__dev.html#a934913c0d594e8fd366b248bc01116aa", null ], + [ "operator<<", "classutl_1_1out__dev.html#a22dce1d313a4f6b4686d4253cbd7f485", null ], + [ "operator=", "classutl_1_1out__dev.html#aba2f65a858ae47167f46979337299f44", null ], + [ "put", "classutl_1_1out__dev.html#a640214f205468c235dec25bab8fb6c08", null ], + [ "put", "classutl_1_1out__dev.html#a0cfe5f4d3c3e4fb21abe9e88101e0bb8", null ], + [ "put_", "classutl_1_1out__dev.html#a29e236940e8fb13387b264379136b504", null ], + [ "put_", "classutl_1_1out__dev.html#a3bbf2bb1c25bae601cd0d6e2b1f886b2", null ] +]; \ No newline at end of file diff --git a/doc/html/classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4-members.html b/doc/html/classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4-members.html new file mode 100644 index 0000000..da010c9 --- /dev/null +++ b/doc/html/classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4-members.html @@ -0,0 +1,130 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
utl::out_dev< virtual_tag, data_t, streamsize > Member List
+
+
+ +

This is the complete list of members for utl::out_dev< virtual_tag, data_t, streamsize >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + +
begin() noexceptutl::out_dev< virtual_tag, data_t, streamsize >inline
begin() const noexceptutl::out_dev< virtual_tag, data_t, streamsize >inline
cbegin() const noexceptutl::out_dev< virtual_tag, data_t, streamsize >inline
cend() const noexceptutl::out_dev< virtual_tag, data_t, streamsize >inline
const_iterator typedefutl::out_dev< virtual_tag, data_t, streamsize >
data_type typedefutl::out_dev< virtual_tag, data_t, streamsize >
end() noexceptutl::out_dev< virtual_tag, data_t, streamsize >inline
end() const noexceptutl::out_dev< virtual_tag, data_t, streamsize >inline
iterator typedefutl::out_dev< virtual_tag, data_t, streamsize >
operator<<(_Src_t &src)utl::out_dev< virtual_tag, data_t, streamsize >inline
operator<<(_Src_t *src)=deleteutl::out_dev< virtual_tag, data_t, streamsize >
operator<<(const data_t &src)utl::out_dev< virtual_tag, data_t, streamsize >inline
operator=(const out_dev_t &)=deleteutl::out_dev< virtual_tag, data_t, streamsize >protected
out_dev()=defaultutl::out_dev< virtual_tag, data_t, streamsize >protected
out_dev(const out_dev &)=deleteutl::out_dev< virtual_tag, data_t, streamsize >protected
out_dev_t typedefutl::out_dev< virtual_tag, data_t, streamsize >private
pointer_type typedefutl::out_dev< virtual_tag, data_t, streamsize >
put(const data_t &data)utl::out_dev< virtual_tag, data_t, streamsize >inline
put(const data_t *data, size_t n)utl::out_dev< virtual_tag, data_t, streamsize >inline
put_(const data_t &data)=0utl::out_dev< virtual_tag, data_t, streamsize >privatepure virtual
put_(const data_t *data, size_t n)=0utl::out_dev< virtual_tag, data_t, streamsize >privatepure virtual
type typedefutl::out_dev< virtual_tag, data_t, streamsize >
~out_dev()=defaultutl::out_dev< virtual_tag, data_t, streamsize >virtual
+
+ + + + diff --git a/doc/html/classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html b/doc/html/classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html new file mode 100644 index 0000000..1bb9a0e --- /dev/null +++ b/doc/html/classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html @@ -0,0 +1,903 @@ + + + + + + + +uTL: utl::out_dev< virtual_tag, data_t, streamsize > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
utl::out_dev< virtual_tag, data_t, streamsize > Class Template Referenceabstract
+
+
+ +

A virtual base class specialization. + More...

+ +

#include <out_dev.h>

+ + + + + + + + + + +

+Public Types

using type = out_dev_t
 Export type as identity meta-function. More...
 
using data_type = data_t
 
using pointer_type = data_t *
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Public Put interface
size_t put (const data_t &data)
 
size_t put (const data_t *data, size_t n)
 
Stream operator<< interface
template<typename _Src_t >
out_dev_toperator<< (_Src_t &src)
 Template operator<< implementation for for all by value/ref parameters. More...
 
template<typename _Src_t >
out_dev_toperator<< (_Src_t *src)=delete
 Overload to disallow pointer types as source. More...
 
out_dev_toperator<< (const data_t &src)
 Overload for single data_t object. More...
 
iterator end () noexcept
 
const_iterator end () const noexcept
 
const_iterator cend () const noexcept
 
+ + + + +

+Private Types

using out_dev_t = out_dev< virtual_tag, data_t, streamsize >
 class type syntactic sugar More...
 
+ + + + + + + + +

+Private Member Functions

Common output device interface requirements
virtual size_t put_ (const data_t &data)=0
 Put interface. This function should send a single data_t object to device. More...
 
virtual size_t put_ (const data_t *data, size_t n)=0
 Put interface. This function should send a stream of data_t objects to device. More...
 
+ + + + + + + + + + + + +

+Constructor / Destructor

virtual ~out_dev ()=default
 Virtual destructor. More...
 
 out_dev ()=default
 A default constructor from derived only. More...
 
 out_dev (const out_dev &)=delete
 No copies. More...
 
out_dev_toperator= (const out_dev_t &)=delete
 
+ + + + + + + + + + + + + + +

+STL-like Output iterator interface

using iterator = outdev_it< out_dev_t, data_t *, streamsize >
 Iterator. More...
 
using const_iterator = outdev_it< const out_dev_t, data_t *, streamsize >
 Const iterator. More...
 
iterator begin () noexcept
 .begin implementation More...
 
const_iterator begin () const noexcept
 
const_iterator cbegin () const noexcept
 
+

Detailed Description

+

template<typename data_t, size_t streamsize>
+class utl::out_dev< virtual_tag, data_t, streamsize >

+ +

A virtual base class specialization.

+
Parameters
+ + + + +
impl_t= virtual_tag
data_tThe devices base type of data
streamsizeThe number of elements to indicate eos.
    +
  • None or 0 Stream only. No iterator as begin() now equals end().
  • +
+
+
+
+ +

Definition at line 177 of file out_dev.h.

+

Member Typedef Documentation

+ +

◆ const_iterator

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + +
using utl::out_dev< virtual_tag, data_t, streamsize >::const_iterator = outdev_it <const out_dev_t, data_t*, streamsize>
+
+ +

Const iterator.

+ +

Definition at line 268 of file out_dev.h.

+ +
+
+ +

◆ data_type

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + +
using utl::out_dev< virtual_tag, data_t, streamsize >::data_type = data_t
+
+

Export types as input device concept demands

+ +

Definition at line 183 of file out_dev.h.

+ +
+
+ +

◆ iterator

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + +
using utl::out_dev< virtual_tag, data_t, streamsize >::iterator = outdev_it <out_dev_t, data_t*, streamsize>
+
+ +

Iterator.

+ +

Definition at line 267 of file out_dev.h.

+ +
+
+ +

◆ out_dev_t

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + + +
+ + + + +
using utl::out_dev< virtual_tag, data_t, streamsize >::out_dev_t = out_dev <virtual_tag, data_t, streamsize>
+
+private
+
+ +

class type syntactic sugar

+ +

Definition at line 178 of file out_dev.h.

+ +
+
+ +

◆ pointer_type

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + +
using utl::out_dev< virtual_tag, data_t, streamsize >::pointer_type = data_t*
+
+ +

Definition at line 184 of file out_dev.h.

+ +
+
+ +

◆ type

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + +
using utl::out_dev< virtual_tag, data_t, streamsize >::type = out_dev_t
+
+ +

Export type as identity meta-function.

+ +

Definition at line 186 of file out_dev.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ ~out_dev()

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + + +
+ + + + + + + +
virtual utl::out_dev< virtual_tag, data_t, streamsize >::~out_dev ()
+
+virtualdefault
+
+ +

Virtual destructor.

+ +
+
+ +

◆ out_dev() [1/2]

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + + +
+ + + + + + + +
utl::out_dev< virtual_tag, data_t, streamsize >::out_dev ()
+
+protecteddefault
+
+ +

A default constructor from derived only.

+ +
+
+ +

◆ out_dev() [2/2]

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + + +
+ + + + + + + + +
utl::out_dev< virtual_tag, data_t, streamsize >::out_dev (const out_dev< virtual_tag, data_t, streamsize > & )
+
+protecteddelete
+
+ +

No copies.

+ +
+
+

Member Function Documentation

+ +

◆ begin() [1/2]

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + + +
+ + + + + + + +
iterator utl::out_dev< virtual_tag, data_t, streamsize >::begin ()
+
+inlinenoexcept
+
+ +

.begin implementation

+ +

Definition at line 271 of file out_dev.h.

+ +
+
+ +

◆ begin() [2/2]

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + + +
+ + + + + + + +
const_iterator utl::out_dev< virtual_tag, data_t, streamsize >::begin () const
+
+inlinenoexcept
+
+ +

Definition at line 272 of file out_dev.h.

+ +
+
+ +

◆ cbegin()

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + + +
+ + + + + + + +
const_iterator utl::out_dev< virtual_tag, data_t, streamsize >::cbegin () const
+
+inlinenoexcept
+
+ +

Definition at line 273 of file out_dev.h.

+ +
+
+ +

◆ cend()

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + + +
+ + + + + + + +
const_iterator utl::out_dev< virtual_tag, data_t, streamsize >::cend () const
+
+inlinenoexcept
+
+ +

Definition at line 278 of file out_dev.h.

+ +
+
+ +

◆ end() [1/2]

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + + +
+ + + + + + + +
iterator utl::out_dev< virtual_tag, data_t, streamsize >::end ()
+
+inlinenoexcept
+
+

.end implementation

+ +

Definition at line 276 of file out_dev.h.

+ +
+
+ +

◆ end() [2/2]

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + + +
+ + + + + + + +
const_iterator utl::out_dev< virtual_tag, data_t, streamsize >::end () const
+
+inlinenoexcept
+
+ +

Definition at line 277 of file out_dev.h.

+ +
+
+ +

◆ operator<<() [1/3]

+ +
+
+
+template<typename data_t , size_t streamsize>
+
+template<typename _Src_t >
+ + + + + +
+ + + + + + + + +
out_dev_t& utl::out_dev< virtual_tag, data_t, streamsize >::operator<< (_Src_t & src)
+
+inline
+
+ +

Template operator<< implementation for for all by value/ref parameters.

+
Parameters
+ + +
srcReference to source data
+
+
+
Returns
Reference to this device for chaining
+ +

Definition at line 246 of file out_dev.h.

+ +
+
+ +

◆ operator<<() [2/3]

+ +
+
+
+template<typename data_t , size_t streamsize>
+
+template<typename _Src_t >
+ + + + + +
+ + + + + + + + +
out_dev_t& utl::out_dev< virtual_tag, data_t, streamsize >::operator<< (_Src_t * src)
+
+delete
+
+ +

Overload to disallow pointer types as source.

+ +
+
+ +

◆ operator<<() [3/3]

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + + +
+ + + + + + + + +
out_dev_t& utl::out_dev< virtual_tag, data_t, streamsize >::operator<< (const data_t & src)
+
+inline
+
+ +

Overload for single data_t object.

+ +

Definition at line 257 of file out_dev.h.

+ +
+
+ +

◆ operator=()

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + + +
+ + + + + + + + +
out_dev_t& utl::out_dev< virtual_tag, data_t, streamsize >::operator= (const out_dev_t)
+
+protecteddelete
+
+

No copy assignments

+ +
+
+ +

◆ put() [1/2]

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + + +
+ + + + + + + + +
size_t utl::out_dev< virtual_tag, data_t, streamsize >::put (const data_t & data)
+
+inline
+
+ +

Definition at line 231 of file out_dev.h.

+ +
+
+ +

◆ put() [2/2]

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
size_t utl::out_dev< virtual_tag, data_t, streamsize >::put (const data_t * data,
size_t n 
)
+
+inline
+
+ +

Definition at line 232 of file out_dev.h.

+ +
+
+ +

◆ put_() [1/2]

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + + +
+ + + + + + + + +
virtual size_t utl::out_dev< virtual_tag, data_t, streamsize >::put_ (const data_t & data)
+
+privatepure virtual
+
+ +

Put interface. This function should send a single data_t object to device.

+
Parameters
+ + +
dataThe data to send
+
+
+
Returns
The number of transmitted data items
+
Note
A successful call should return 1
+ +
+
+ +

◆ put_() [2/2]

+ +
+
+
+template<typename data_t , size_t streamsize>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual size_t utl::out_dev< virtual_tag, data_t, streamsize >::put_ (const data_t * data,
size_t n 
)
+
+privatepure virtual
+
+ +

Put interface. This function should send a stream of data_t objects to device.

+
Parameters
+ + + +
dataPointer to buffer indenting write to device.
nThe number of data of type data_t to send
+
+
+
Returns
The number of transmitted items.
+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/doc/html/classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.js b/doc/html/classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.js new file mode 100644 index 0000000..fe4d81d --- /dev/null +++ b/doc/html/classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.js @@ -0,0 +1,26 @@ +var classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4 = +[ + [ "const_iterator", "classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a690f4d4b54e352b64bd484a15138df64", null ], + [ "data_type", "classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a6ebf2bb2132e972cd9f2daffa67d981b", null ], + [ "iterator", "classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a3da010b49d2e6b87eaddc22ef636acc9", null ], + [ "out_dev_t", "classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a3b7c1dad93f0ec25842afc436221db6b", null ], + [ "pointer_type", "classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a83ce1ff81d538c68649fe339241d6cff", null ], + [ "type", "classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#ac6d606494a0b663bf20bf180e33190e2", null ], + [ "~out_dev", "classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a5dce94d088c9f6cec3c318e0a0d1ee56", null ], + [ "out_dev", "classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a470befe8e2518939190977d76bea06ca", null ], + [ "out_dev", "classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#ad4b62c477f8e553d78a1ab051ad81a7c", null ], + [ "begin", "classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#ac3df041ff2e72454035cd879ddf1332d", null ], + [ "begin", "classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a35edcf840e3ba2b53734a128181da6e8", null ], + [ "cbegin", "classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a41a29c14ad5206a122e6bec5e3314dc4", null ], + [ "cend", "classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a6d316ddd0f1797724f976254297c28fc", null ], + [ "end", "classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#acabafe9e76d94c8044feb85996ebba5f", null ], + [ "end", "classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a3992eda54afec8aaa1cb8f040563add6", null ], + [ "operator<<", "classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a88944f88c0dfa832f42b49193bffcea9", null ], + [ "operator<<", "classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a8ea40dd005963b6e2f41c1a5f8c5c6b1", null ], + [ "operator<<", "classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a6b8b80722252f898b1acfce6083b4cf7", null ], + [ "operator=", "classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a6093ba41c3bddd450fbad0fd0bf3ba65", null ], + [ "put", "classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a7311e58e96e924cdd7f06ff4713f3317", null ], + [ "put", "classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#aa781ec6a6e500451a357f04b1436d8e0", null ], + [ "put_", "classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a932c5664fc281e141219d8fbd826fc7e", null ], + [ "put_", "classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a3b895f0d8b77b3c9eb16111826ae91a0", null ] +]; \ No newline at end of file diff --git a/doc/html/classutl_1_1outdev__it-members.html b/doc/html/classutl_1_1outdev__it-members.html new file mode 100644 index 0000000..3d597a6 --- /dev/null +++ b/doc/html/classutl_1_1outdev__it-members.html @@ -0,0 +1,129 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
utl::outdev_it< cont_t, iter_t, _beg, _end > Member List
+
+
+ +

This is the complete list of members for utl::outdev_it< cont_t, iter_t, _beg, _end >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + +
beg enum valueutl::outdev_it< cont_t, iter_t, _beg, _end >
Cursor enum nameutl::outdev_it< cont_t, iter_t, _beg, _end >
cursor() const noexceptutl::outdev_it< cont_t, iter_t, _beg, _end >inline
cursor_utl::outdev_it< cont_t, iter_t, _beg, _end >private
difference_type typedefutl::outdev_it< cont_t, iter_t, _beg, _end >
eod enum valueutl::outdev_it< cont_t, iter_t, _beg, _end >
iterator_category typedefutl::outdev_it< cont_t, iter_t, _beg, _end >
iterator_t typedefutl::outdev_it< cont_t, iter_t, _beg, _end >private
operator*() noexceptutl::outdev_it< cont_t, iter_t, _beg, _end >inline
operator++() noexceptutl::outdev_it< cont_t, iter_t, _beg, _end >inline
operator++(int) noexceptutl::outdev_it< cont_t, iter_t, _beg, _end >inline
operator=(const iterator_t &it) noexceptutl::outdev_it< cont_t, iter_t, _beg, _end >inline
operator=(const value_type &value)utl::outdev_it< cont_t, iter_t, _beg, _end >inline
outdev_it() noexceptutl::outdev_it< cont_t, iter_t, _beg, _end >inlineexplicit
outdev_it(cont_t *owner, index_t cursor=eod) noexceptutl::outdev_it< cont_t, iter_t, _beg, _end >inlineexplicit
outdev_it(const iterator_t &it) noexceptutl::outdev_it< cont_t, iter_t, _beg, _end >inlineexplicit
owner() const noexceptutl::outdev_it< cont_t, iter_t, _beg, _end >inline
owner_utl::outdev_it< cont_t, iter_t, _beg, _end >private
pointer typedefutl::outdev_it< cont_t, iter_t, _beg, _end >
reference typedefutl::outdev_it< cont_t, iter_t, _beg, _end >
type typedefutl::outdev_it< cont_t, iter_t, _beg, _end >
value_type typedefutl::outdev_it< cont_t, iter_t, _beg, _end >
+
+ + + + diff --git a/doc/html/classutl_1_1outdev__it.html b/doc/html/classutl_1_1outdev__it.html new file mode 100644 index 0000000..25674c8 --- /dev/null +++ b/doc/html/classutl_1_1outdev__it.html @@ -0,0 +1,761 @@ + + + + + + + +uTL: utl::outdev_it< cont_t, iter_t, _beg, _end > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
utl::outdev_it< cont_t, iter_t, _beg, _end > Class Template Reference
+
+
+ +

Output device iterator type. We "future call" interface methods from owner class to provide iterator functionality. + More...

+ +

#include <dev_iterators.h>

+ + + + + + + + + + + + + + + + + + +

+Public Types

enum  Cursor { beg = _beg, +eod = _end + }
 #define-like enumerator for Cursor More...
 
using type = iterator_t
 
using iterator_category = typename dev_iterator_traits< std::output_iterator_tag, iter_t >::iterator_category
 
using value_type = typename dev_iterator_traits< std::output_iterator_tag, iter_t >::value_type
 
using difference_type = typename dev_iterator_traits< std::output_iterator_tag, iter_t >::difference_type
 
using pointer = typename dev_iterator_traits< std::output_iterator_tag, iter_t >::pointer
 
using reference = typename dev_iterator_traits< std::output_iterator_tag, iter_t >::reference
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

const cont_t * owner () const noexcept
 Export container for comparison. More...
 
const index_t cursor () const noexcept
 Export cursor for comparison. More...
 
Constructor / Destructor
 outdev_it () noexcept
 Default constructor results to end() More...
 
 outdev_it (cont_t *owner, index_t cursor=eod) noexcept
 Basic constructor. More...
 
 outdev_it (const iterator_t &it) noexcept
 Basic copy constructor. More...
 
iterator_toperator= (const iterator_t &it) noexcept
 Basic copy assignment operator. More...
 
Public interface

Iterator to const-iterator conversion (as STL requires)

+
Parameters
+ + +
itIterator reference
+
+
+
iterator_toperator* () noexcept
 
iterator_toperator= (const value_type &value)
 Value-assignment operation. Where the output method is invoked. More...
 
++ operators
iterator_toperator++ () noexcept
 
iterator_t operator++ (int) noexcept
 
+ + + + +

+Private Types

using iterator_t = outdev_it< cont_t, iter_t, _beg, _end >
 iterator type local name More...
 
+ + + + + + +

+Private Attributes

cont_t * owner_ {nullptr}
 
index_t cursor_ {eod}
 virtual cursor for comparison operators More...
 
+

Detailed Description

+

template<typename cont_t, typename iter_t, index_t _beg = 0, index_t _end = static_cast<index_t>(-1)>
+class utl::outdev_it< cont_t, iter_t, _beg, _end >

+ +

Output device iterator type. We "future call" interface methods from owner class to provide iterator functionality.

+
Parameters
+ + + + +
cont_tContainer/parent type
iter_tIterator data type (pointer to container_t::value_type)
devsizeDevice's address space size
+
+
+ +

Definition at line 250 of file dev_iterators.h.

+

Member Typedef Documentation

+ +

◆ difference_type

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, index_t _end = static_cast<index_t>(-1)>
+ + + + +
using utl::outdev_it< cont_t, iter_t, _beg, _end >::difference_type = typename dev_iterator_traits <std::output_iterator_tag, iter_t>::difference_type
+
+ +

Definition at line 260 of file dev_iterators.h.

+ +
+
+ +

◆ iterator_category

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, index_t _end = static_cast<index_t>(-1)>
+ + + + +
using utl::outdev_it< cont_t, iter_t, _beg, _end >::iterator_category = typename dev_iterator_traits <std::output_iterator_tag, iter_t>::iterator_category
+
+

STL iterator traits "forwarding"

+ +

Definition at line 258 of file dev_iterators.h.

+ +
+
+ +

◆ iterator_t

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, index_t _end = static_cast<index_t>(-1)>
+ + + + + +
+ + + + +
using utl::outdev_it< cont_t, iter_t, _beg, _end >::iterator_t = outdev_it <cont_t, iter_t, _beg, _end>
+
+private
+
+ +

iterator type local name

+ +

Definition at line 252 of file dev_iterators.h.

+ +
+
+ +

◆ pointer

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, index_t _end = static_cast<index_t>(-1)>
+ + + + +
using utl::outdev_it< cont_t, iter_t, _beg, _end >::pointer = typename dev_iterator_traits <std::output_iterator_tag, iter_t>::pointer
+
+ +

Definition at line 261 of file dev_iterators.h.

+ +
+
+ +

◆ reference

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, index_t _end = static_cast<index_t>(-1)>
+ + + + +
using utl::outdev_it< cont_t, iter_t, _beg, _end >::reference = typename dev_iterator_traits <std::output_iterator_tag, iter_t>::reference
+
+ +

Definition at line 262 of file dev_iterators.h.

+ +
+
+ +

◆ type

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, index_t _end = static_cast<index_t>(-1)>
+ + + + +
using utl::outdev_it< cont_t, iter_t, _beg, _end >::type = iterator_t
+
+

Export type as identity meta-function

+ +

Definition at line 254 of file dev_iterators.h.

+ +
+
+ +

◆ value_type

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, index_t _end = static_cast<index_t>(-1)>
+ + + + +
using utl::outdev_it< cont_t, iter_t, _beg, _end >::value_type = typename dev_iterator_traits <std::output_iterator_tag, iter_t>::value_type
+
+ +

Definition at line 259 of file dev_iterators.h.

+ +
+
+

Member Enumeration Documentation

+ +

◆ Cursor

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, index_t _end = static_cast<index_t>(-1)>
+ + + + +
enum utl::outdev_it::Cursor
+
+ +

#define-like enumerator for Cursor

+ + + +
Enumerator
beg 

Points the first item (relative address)

+
eod 

Points one place after last item (relative address)

+
+ +

Definition at line 265 of file dev_iterators.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ outdev_it() [1/3]

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, index_t _end = static_cast<index_t>(-1)>
+ + + + + +
+ + + + + + + +
utl::outdev_it< cont_t, iter_t, _beg, _end >::outdev_it ()
+
+inlineexplicitnoexcept
+
+ +

Default constructor results to end()

+ +

Definition at line 283 of file dev_iterators.h.

+ +
+
+ +

◆ outdev_it() [2/3]

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, index_t _end = static_cast<index_t>(-1)>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
utl::outdev_it< cont_t, iter_t, _beg, _end >::outdev_it (cont_t * owner,
index_t cursor = eod 
)
+
+inlineexplicitnoexcept
+
+ +

Basic constructor.

+ +

Definition at line 287 of file dev_iterators.h.

+ +
+
+ +

◆ outdev_it() [3/3]

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, index_t _end = static_cast<index_t>(-1)>
+ + + + + +
+ + + + + + + + +
utl::outdev_it< cont_t, iter_t, _beg, _end >::outdev_it (const iterator_tit)
+
+inlineexplicitnoexcept
+
+ +

Basic copy constructor.

+ +

Definition at line 291 of file dev_iterators.h.

+ +
+
+

Member Function Documentation

+ +

◆ cursor()

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, index_t _end = static_cast<index_t>(-1)>
+ + + + + +
+ + + + + + + +
const index_t utl::outdev_it< cont_t, iter_t, _beg, _end >::cursor () const
+
+inlinenoexcept
+
+ +

Export cursor for comparison.

+ +

Definition at line 343 of file dev_iterators.h.

+ +
+
+ +

◆ operator*()

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, index_t _end = static_cast<index_t>(-1)>
+ + + + + +
+ + + + + + + +
iterator_t& utl::outdev_it< cont_t, iter_t, _beg, _end >::operator* ()
+
+inlinenoexcept
+
+ +

Definition at line 314 of file dev_iterators.h.

+ +
+
+ +

◆ operator++() [1/2]

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, index_t _end = static_cast<index_t>(-1)>
+ + + + + +
+ + + + + + + +
iterator_t& utl::outdev_it< cont_t, iter_t, _beg, _end >::operator++ ()
+
+inlinenoexcept
+
+ +

Definition at line 329 of file dev_iterators.h.

+ +
+
+ +

◆ operator++() [2/2]

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, index_t _end = static_cast<index_t>(-1)>
+ + + + + +
+ + + + + + + + +
iterator_t utl::outdev_it< cont_t, iter_t, _beg, _end >::operator++ (int )
+
+inlinenoexcept
+
+ +

Definition at line 333 of file dev_iterators.h.

+ +
+
+ +

◆ operator=() [1/2]

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, index_t _end = static_cast<index_t>(-1)>
+ + + + + +
+ + + + + + + + +
iterator_t& utl::outdev_it< cont_t, iter_t, _beg, _end >::operator= (const iterator_tit)
+
+inlinenoexcept
+
+ +

Basic copy assignment operator.

+ +

Definition at line 295 of file dev_iterators.h.

+ +
+
+ +

◆ operator=() [2/2]

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, index_t _end = static_cast<index_t>(-1)>
+ + + + + +
+ + + + + + + + +
iterator_t& utl::outdev_it< cont_t, iter_t, _beg, _end >::operator= (const value_typevalue)
+
+inline
+
+ +

Value-assignment operation. Where the output method is invoked.

+
Parameters
+ + +
valueAn instance of Cont_t::data_type
+
+
+
Returns
This iterator, for chained operations.
+ +

Definition at line 321 of file dev_iterators.h.

+ +
+
+ +

◆ owner()

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, index_t _end = static_cast<index_t>(-1)>
+ + + + + +
+ + + + + + + +
const cont_t* utl::outdev_it< cont_t, iter_t, _beg, _end >::owner () const
+
+inlinenoexcept
+
+ +

Export container for comparison.

+ +

Definition at line 341 of file dev_iterators.h.

+ +
+
+

Member Data Documentation

+ +

◆ cursor_

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, index_t _end = static_cast<index_t>(-1)>
+ + + + + +
+ + + + +
index_t utl::outdev_it< cont_t, iter_t, _beg, _end >::cursor_ {eod}
+
+private
+
+ +

virtual cursor for comparison operators

+ +

Definition at line 276 of file dev_iterators.h.

+ +
+
+ +

◆ owner_

+ +
+
+
+template<typename cont_t, typename iter_t, index_t _beg = 0, index_t _end = static_cast<index_t>(-1)>
+ + + + + +
+ + + + +
cont_t* utl::outdev_it< cont_t, iter_t, _beg, _end >::owner_ {nullptr}
+
+private
+
+

Pointer to parent/owner device class. Usable iterator demands owner container in order to access data. Considering the data don't "live" in memory. A default constructed iterator will behave like end() just like the input version does.

+ +

Definition at line 270 of file dev_iterators.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/doc/html/classutl_1_1outdev__it.js b/doc/html/classutl_1_1outdev__it.js new file mode 100644 index 0000000..83a4fc8 --- /dev/null +++ b/doc/html/classutl_1_1outdev__it.js @@ -0,0 +1,26 @@ +var classutl_1_1outdev__it = +[ + [ "difference_type", "classutl_1_1outdev__it.html#a08921b19038ae0fd919d507abb036b16", null ], + [ "iterator_category", "classutl_1_1outdev__it.html#aeed1fef454099c402e4d3bb496ed0061", null ], + [ "iterator_t", "classutl_1_1outdev__it.html#af1eac074478db751a6662ef7a120bc60", null ], + [ "pointer", "classutl_1_1outdev__it.html#a92f06ead0276169036aee90dbee2ca8e", null ], + [ "reference", "classutl_1_1outdev__it.html#ac4fdabc0a410f1cd90e116f3df6806c6", null ], + [ "type", "classutl_1_1outdev__it.html#ac9f9b83fbb0b48a8c002638febbca186", null ], + [ "value_type", "classutl_1_1outdev__it.html#aa973216f7bc8930b3125e94a0bb664d3", null ], + [ "Cursor", "classutl_1_1outdev__it.html#ab5cbe3695bf05af30b14b89f8a16594b", [ + [ "beg", "classutl_1_1outdev__it.html#ab5cbe3695bf05af30b14b89f8a16594ba8a7a14e955d212cd582610961e7e2769", null ], + [ "eod", "classutl_1_1outdev__it.html#ab5cbe3695bf05af30b14b89f8a16594ba23a4928e4a78f96314ad442f7bb72e18", null ] + ] ], + [ "outdev_it", "classutl_1_1outdev__it.html#a691c350e365d9ba037fe5f7541425a50", null ], + [ "outdev_it", "classutl_1_1outdev__it.html#ac65bea2b8547649771c73d8110ba1115", null ], + [ "outdev_it", "classutl_1_1outdev__it.html#ad7226a24b2576fbc57ad740f04bdde6b", null ], + [ "cursor", "classutl_1_1outdev__it.html#a6d8b5c831aecbc26af139cf849198635", null ], + [ "operator*", "classutl_1_1outdev__it.html#a48013f8a6db805b7233a61fc43891f88", null ], + [ "operator++", "classutl_1_1outdev__it.html#a3f8d013e5ea008abfa060028d78f2871", null ], + [ "operator++", "classutl_1_1outdev__it.html#a8080fda743df21eb28b20771ba7df912", null ], + [ "operator=", "classutl_1_1outdev__it.html#a96773cf7677881fde81b57db9f8ffaff", null ], + [ "operator=", "classutl_1_1outdev__it.html#aeb3737becdbcab0e42094bc87d09d79a", null ], + [ "owner", "classutl_1_1outdev__it.html#a05b35f89ff6e1682b2dbc36198b8e813", null ], + [ "cursor_", "classutl_1_1outdev__it.html#ae570a13c1cc3a24388972f89d63015b5", null ], + [ "owner_", "classutl_1_1outdev__it.html#abbc4217bcfe956aeb8c1252c7f4759f3", null ] +]; \ No newline at end of file diff --git a/doc/html/classutl_1_1spi__bb__i-members.html b/doc/html/classutl_1_1spi__bb__i-members.html new file mode 100644 index 0000000..7438062 --- /dev/null +++ b/doc/html/classutl_1_1spi__bb__i-members.html @@ -0,0 +1,138 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
utl::spi_bb_i< impl_t, CPOL, CPHA, BitOrder > Member List
+
+
+ +

This is the complete list of members for utl::spi_bb_i< impl_t, CPOL, CPHA, BitOrder >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_clock() constutl::spi_bb_i< impl_t, CPOL, CPHA, BitOrder >inlineprivate
_clock(uint32_t c)utl::spi_bb_i< impl_t, CPOL, CPHA, BitOrder >inlineprivate
_CRTP_IMPL(impl_t)utl::spi_bb_i< impl_t, CPOL, CPHA, BitOrder >private
_tx_data(byte_t out)utl::spi_bb_i< impl_t, CPOL, CPHA, BitOrder >inlineprivate
_tx_data_impl(byte_t out)utl::spi_bb_i< impl_t, CPOL, CPHA, BitOrder >private
_tx_data_impl(byte_t out)utl::spi_bb_i< impl_t, CPOL, CPHA, BitOrder >private
clkH_utl::spi_bb_i< impl_t, CPOL, CPHA, BitOrder >privatestatic
clkHigh()utl::spi_bb_i< impl_t, CPOL, CPHA, BitOrder >inlineprivatestatic
clkL_utl::spi_bb_i< impl_t, CPOL, CPHA, BitOrder >privatestatic
clkLow()utl::spi_bb_i< impl_t, CPOL, CPHA, BitOrder >inlineprivatestatic
clock() constutl::spi_i< spi_bb_i< impl_t, CPOL, CPHA, BitOrder > >inline
clock(uint32_t c)utl::spi_i< spi_bb_i< impl_t, CPOL, CPHA, BitOrder > >inline
delay(uint32_t nsec)utl::spi_bb_i< impl_t, CPOL, CPHA, BitOrder >inlineprivate
MISO()utl::spi_bb_i< impl_t, CPOL, CPHA, BitOrder >inlineprivate
MOSI(bool st)utl::spi_bb_i< impl_t, CPOL, CPHA, BitOrder >inlineprivate
nsec_utl::spi_bb_i< impl_t, CPOL, CPHA, BitOrder >private
operator=(const type &)=deleteutl::spi_i< spi_bb_i< impl_t, CPOL, CPHA, BitOrder > >protected
rx_data()utl::spi_i< spi_bb_i< impl_t, CPOL, CPHA, BitOrder > >inline
rx_data(byte_t *in, size_t n)utl::spi_i< spi_bb_i< impl_t, CPOL, CPHA, BitOrder > >
SCLK(bool st)utl::spi_bb_i< impl_t, CPOL, CPHA, BitOrder >inlineprivate
shift(byte_t &b)utl::spi_bb_i< impl_t, CPOL, CPHA, BitOrder >inlineprivate
shift(byte_t &b)utl::spi_bb_i< impl_t, CPOL, CPHA, BitOrder >inlineprivate
spi_bb_i(uint32_t clk) noexceptutl::spi_bb_i< impl_t, CPOL, CPHA, BitOrder >inlineprotected
spi_i()=defaultutl::spi_i< spi_bb_i< impl_t, CPOL, CPHA, BitOrder > >protected
spi_i(const type &)=deleteutl::spi_i< spi_bb_i< impl_t, CPOL, CPHA, BitOrder > >protected
spi_i< spi_bb_i< impl_t, CPOL, CPHA, BitOrder > >utl::spi_bb_i< impl_t, CPOL, CPHA, BitOrder >private
tx_data(byte_t out)utl::spi_i< spi_bb_i< impl_t, CPOL, CPHA, BitOrder > >inline
tx_data(const byte_t *out, byte_t *in, size_t n)utl::spi_i< spi_bb_i< impl_t, CPOL, CPHA, BitOrder > >
type typedefutl::spi_bb_i< impl_t, CPOL, CPHA, BitOrder >
~spi_bb_i()=defaultutl::spi_bb_i< impl_t, CPOL, CPHA, BitOrder >protected
~spi_i()=defaultutl::spi_i< spi_bb_i< impl_t, CPOL, CPHA, BitOrder > >protected
+
+ + + + diff --git a/doc/html/classutl_1_1spi__bb__i.html b/doc/html/classutl_1_1spi__bb__i.html new file mode 100644 index 0000000..188bc0d --- /dev/null +++ b/doc/html/classutl_1_1spi__bb__i.html @@ -0,0 +1,901 @@ + + + + + + + +uTL: utl::spi_bb_i< impl_t, CPOL, CPHA, BitOrder > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
utl::spi_bb_i< impl_t, CPOL, CPHA, BitOrder > Class Template Reference
+
+
+ +

A bit banking implementation of spi bus inherited from spi_i base class. + More...

+ +

#include <spi_bb.h>

+
+Inheritance diagram for utl::spi_bb_i< impl_t, CPOL, CPHA, BitOrder >:
+
+
+ + +utl::spi_i< spi_bb_i< impl_t, CPOL, CPHA, BitOrder > > + +
+ + + + + + + + + +

+Public Types

using type = spi_bb_i< impl_t, CPOL, CPHA, BitOrder >
 Export type as identity meta-function. More...
 
- Public Types inherited from utl::spi_i< spi_bb_i< impl_t, CPOL, CPHA, BitOrder > >
using type = spi_i< spi_bb_i< impl_t, CPOL, CPHA, BitOrder > >
 Export type as identity meta-function. More...
 
+ + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

Object lifetime
 ~spi_bb_i ()=default
 
 spi_bb_i (uint32_t clk) noexcept
 A default constructor. More...
 
- Protected Member Functions inherited from utl::spi_i< spi_bb_i< impl_t, CPOL, CPHA, BitOrder > >
 spi_i ()=default
 Allow constructor from derived only. More...
 
 spi_i (const type &)=delete
 No copies. More...
 
 ~spi_i ()=default
 Allow destructor from derived only. More...
 
typeoperator= (const type &)=delete
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Member Functions

 _CRTP_IMPL (impl_t)
 
Implementation requirements

}

+
Note
In order for the implementation to have the following as private members it also need to declare this class as friend
+
void MOSI (bool st)
 Implementers's MOSI pin function. More...
 
bool MISO ()
 Implementers's MISO pin function. More...
 
void SCLK (bool st)
 Implementers's SCLK pin function. More...
 
void delay (uint32_t nsec)
 
Implementation of base requirements
uint32_t _clock () const
 
void _clock (uint32_t c)
 
byte_t _tx_data (byte_t out)
 
template<spi::cpha C = CPHA>
meta::enable_if_t<(C==spi::cpha::LOW), byte_t_tx_data_impl (byte_t out)
 _tx_data implementation for CPHA == LOW Out at preceding clock trailing edge, In at leading clock edge More...
 
template<spi::cpha C = CPHA>
meta::enable_if_t<(C==spi::cpha::HIGH), byte_t_tx_data_impl (byte_t out)
 _tx_data implementation CPHA == HIGH Out at leading clock edge, In at trailing clock edge More...
 
+ + + + + + + +

+Private Attributes

friend spi_i< spi_bb_i< impl_t, CPOL, CPHA, BitOrder > >
 Syntactic sugar to CRTP casting. More...
 
uint32_t nsec_
 
+ + + + + + + + + + + + + + + + + +

+SPI implementation specific functions

static constexpr bool clkH_ {clkHigh()}
 
static constexpr bool clkL_ {clkLow()}
 
template<spi::bitOrder B = BitOrder>
constexpr meta::enable_if_t<(B==spi::bitOrder::LSB_First), void > shift (byte_t &b)
 
template<spi::bitOrder B = BitOrder>
constexpr meta::enable_if_t<(B==spi::bitOrder::MSB_First), void > shift (byte_t &b)
 
template<spi::cpol C = CPOL>
static constexpr bool clkHigh ()
 
template<spi::cpol C = CPOL>
static constexpr bool clkLow ()
 
+ + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Member Functions inherited from utl::spi_i< spi_bb_i< impl_t, CPOL, CPHA, BitOrder > >
uint32_t clock () const
 
void clock (uint32_t c)
 set clock frequency of the bus More...
 
byte_t tx_data (byte_t out)
 
size_t tx_data (const byte_t *out, byte_t *in, size_t n)
 Transmit a number of bytes to the spi bus and read the response. More...
 
byte_t rx_data ()
 
size_t rx_data (byte_t *in, size_t n)
 Receive a number of bytes from the spi bus while transmitting 0xFFs. More...
 
+

Detailed Description

+

template<typename impl_t, spi::cpol CPOL, spi::cpha CPHA, spi::bitOrder BitOrder = spi::bitOrder::MSB_First>
+class utl::spi_bb_i< impl_t, CPOL, CPHA, BitOrder >

+ +

A bit banking implementation of spi bus inherited from spi_i base class.

+
See also
spi_i
+

SPI bit banking interface template class using CRTP. Using the private interface we provide the interface from spi_i<impl_t>

+
Parameters
+ + + + + +
impl_tThe CRTP type (the derived/implementation class typename).
CPOLClock polarity
CPHAClock phase
BitOrderData transfer bit order
+
+
+ +

Definition at line 56 of file spi_bb.h.

+

Member Typedef Documentation

+ +

◆ type

+ +
+
+
+template<typename impl_t , spi::cpol CPOL, spi::cpha CPHA, spi::bitOrder BitOrder = spi::bitOrder::MSB_First>
+ + + + +
using utl::spi_bb_i< impl_t, CPOL, CPHA, BitOrder >::type = spi_bb_i<impl_t, CPOL, CPHA, BitOrder>
+
+ +

Export type as identity meta-function.

+ +

Definition at line 60 of file spi_bb.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ ~spi_bb_i()

+ +
+
+
+template<typename impl_t , spi::cpol CPOL, spi::cpha CPHA, spi::bitOrder BitOrder = spi::bitOrder::MSB_First>
+ + + + + +
+ + + + + + + +
utl::spi_bb_i< impl_t, CPOL, CPHA, BitOrder >::~spi_bb_i ()
+
+protecteddefault
+
+

A default destructor, allow destructor from derived only

+ +
+
+ +

◆ spi_bb_i()

+ +
+
+
+template<typename impl_t , spi::cpol CPOL, spi::cpha CPHA, spi::bitOrder BitOrder = spi::bitOrder::MSB_First>
+ + + + + +
+ + + + + + + + +
utl::spi_bb_i< impl_t, CPOL, CPHA, BitOrder >::spi_bb_i (uint32_t clk)
+
+inlineprotectednoexcept
+
+ +

A default constructor.

+ +

Definition at line 69 of file spi_bb.h.

+ +
+
+

Member Function Documentation

+ +

◆ _clock() [1/2]

+ +
+
+
+template<typename impl_t , spi::cpol CPOL, spi::cpha CPHA, spi::bitOrder BitOrder = spi::bitOrder::MSB_First>
+ + + + + +
+ + + + + + + +
uint32_t utl::spi_bb_i< impl_t, CPOL, CPHA, BitOrder >::_clock () const
+
+inlineprivate
+
+ +

Definition at line 111 of file spi_bb.h.

+ +
+
+ +

◆ _clock() [2/2]

+ +
+
+
+template<typename impl_t , spi::cpol CPOL, spi::cpha CPHA, spi::bitOrder BitOrder = spi::bitOrder::MSB_First>
+ + + + + +
+ + + + + + + + +
void utl::spi_bb_i< impl_t, CPOL, CPHA, BitOrder >::_clock (uint32_t c)
+
+inlineprivate
+
+ +

Definition at line 112 of file spi_bb.h.

+ +
+
+ +

◆ _CRTP_IMPL()

+ +
+
+
+template<typename impl_t , spi::cpol CPOL, spi::cpha CPHA, spi::bitOrder BitOrder = spi::bitOrder::MSB_First>
+ + + + + +
+ + + + + + + + +
utl::spi_bb_i< impl_t, CPOL, CPHA, BitOrder >::_CRTP_IMPL (impl_t )
+
+private
+
+ +
+
+ +

◆ _tx_data()

+ +
+
+
+template<typename impl_t , spi::cpol CPOL, spi::cpha CPHA, spi::bitOrder BitOrder = spi::bitOrder::MSB_First>
+ + + + + +
+ + + + + + + + +
byte_t utl::spi_bb_i< impl_t, CPOL, CPHA, BitOrder >::_tx_data (byte_t out)
+
+inlineprivate
+
+ +

Definition at line 113 of file spi_bb.h.

+ +
+
+ +

◆ _tx_data_impl() [1/2]

+ +
+
+
+template<typename impl_t , spi::cpol CPOL, spi::cpha CPHA, spi::bitOrder BitOrder>
+
+template<spi::cpha C>
+ + + + + +
+ + + + + + + + +
meta::enable_if_t<(C==spi::cpha::LOW), byte_t > utl::spi_bb_i< impl_t, CPOL, CPHA, BitOrder >::_tx_data_impl (byte_t out)
+
+private
+
+ +

_tx_data implementation for CPHA == LOW Out at preceding clock trailing edge, In at leading clock edge

+
Parameters
+ + +
outThe byte to send to SPI bus
+
+
+
Returns
The byte read from the bus
+ +

Definition at line 138 of file spi_bb.h.

+ +
+
+ +

◆ _tx_data_impl() [2/2]

+ +
+
+
+template<typename impl_t , spi::cpol CPOL, spi::cpha CPHA, spi::bitOrder BitOrder>
+
+template<spi::cpha C>
+ + + + + +
+ + + + + + + + +
meta::enable_if_t<(C==spi::cpha::HIGH), byte_t > utl::spi_bb_i< impl_t, CPOL, CPHA, BitOrder >::_tx_data_impl (byte_t out)
+
+private
+
+ +

_tx_data implementation CPHA == HIGH Out at leading clock edge, In at trailing clock edge

+
Parameters
+ + +
outThe byte to send to SPI bus
+
+
+
Returns
The byte read from the bus
+ +

Definition at line 162 of file spi_bb.h.

+ +
+
+ +

◆ clkHigh()

+ +
+
+
+template<typename impl_t , spi::cpol CPOL, spi::cpha CPHA, spi::bitOrder BitOrder = spi::bitOrder::MSB_First>
+
+template<spi::cpol C = CPOL>
+ + + + + +
+ + + + + + + +
static constexpr bool utl::spi_bb_i< impl_t, CPOL, CPHA, BitOrder >::clkHigh ()
+
+inlinestaticprivate
+
+ +

Definition at line 81 of file spi_bb.h.

+ +
+
+ +

◆ clkLow()

+ +
+
+
+template<typename impl_t , spi::cpol CPOL, spi::cpha CPHA, spi::bitOrder BitOrder = spi::bitOrder::MSB_First>
+
+template<spi::cpol C = CPOL>
+ + + + + +
+ + + + + + + +
static constexpr bool utl::spi_bb_i< impl_t, CPOL, CPHA, BitOrder >::clkLow ()
+
+inlinestaticprivate
+
+ +

Definition at line 84 of file spi_bb.h.

+ +
+
+ +

◆ delay()

+ +
+
+
+template<typename impl_t , spi::cpol CPOL, spi::cpha CPHA, spi::bitOrder BitOrder = spi::bitOrder::MSB_First>
+ + + + + +
+ + + + + + + + +
void utl::spi_bb_i< impl_t, CPOL, CPHA, BitOrder >::delay (uint32_t nsec)
+
+inlineprivate
+
+

Implementers's half period delay function

+ +

Definition at line 102 of file spi_bb.h.

+ +
+
+ +

◆ MISO()

+ +
+
+
+template<typename impl_t , spi::cpol CPOL, spi::cpha CPHA, spi::bitOrder BitOrder = spi::bitOrder::MSB_First>
+ + + + + +
+ + + + + + + +
bool utl::spi_bb_i< impl_t, CPOL, CPHA, BitOrder >::MISO ()
+
+inlineprivate
+
+ +

Implementers's MISO pin function.

+ +

Definition at line 100 of file spi_bb.h.

+ +
+
+ +

◆ MOSI()

+ +
+
+
+template<typename impl_t , spi::cpol CPOL, spi::cpha CPHA, spi::bitOrder BitOrder = spi::bitOrder::MSB_First>
+ + + + + +
+ + + + + + + + +
void utl::spi_bb_i< impl_t, CPOL, CPHA, BitOrder >::MOSI (bool st)
+
+inlineprivate
+
+ +

Implementers's MOSI pin function.

+ +

Definition at line 99 of file spi_bb.h.

+ +
+
+ +

◆ SCLK()

+ +
+
+
+template<typename impl_t , spi::cpol CPOL, spi::cpha CPHA, spi::bitOrder BitOrder = spi::bitOrder::MSB_First>
+ + + + + +
+ + + + + + + + +
void utl::spi_bb_i< impl_t, CPOL, CPHA, BitOrder >::SCLK (bool st)
+
+inlineprivate
+
+ +

Implementers's SCLK pin function.

+ +

Definition at line 101 of file spi_bb.h.

+ +
+
+ +

◆ shift() [1/2]

+ +
+
+
+template<typename impl_t , spi::cpol CPOL, spi::cpha CPHA, spi::bitOrder BitOrder = spi::bitOrder::MSB_First>
+
+template<spi::bitOrder B = BitOrder>
+ + + + + +
+ + + + + + + + +
constexpr meta::enable_if_t<(B == spi::bitOrder::LSB_First), void> utl::spi_bb_i< impl_t, CPOL, CPHA, BitOrder >::shift (byte_tb)
+
+inlineprivate
+
+ +

Definition at line 78 of file spi_bb.h.

+ +
+
+ +

◆ shift() [2/2]

+ +
+
+
+template<typename impl_t , spi::cpol CPOL, spi::cpha CPHA, spi::bitOrder BitOrder = spi::bitOrder::MSB_First>
+
+template<spi::bitOrder B = BitOrder>
+ + + + + +
+ + + + + + + + +
constexpr meta::enable_if_t<(B == spi::bitOrder::MSB_First), void> utl::spi_bb_i< impl_t, CPOL, CPHA, BitOrder >::shift (byte_tb)
+
+inlineprivate
+
+ +

Definition at line 80 of file spi_bb.h.

+ +
+
+

Member Data Documentation

+ +

◆ clkH_

+ +
+
+
+template<typename impl_t , spi::cpol CPOL, spi::cpha CPHA, spi::bitOrder BitOrder = spi::bitOrder::MSB_First>
+ + + + + +
+ + + + +
constexpr bool utl::spi_bb_i< impl_t, CPOL, CPHA, BitOrder >::clkH_ {clkHigh()}
+
+staticprivate
+
+ +

Definition at line 87 of file spi_bb.h.

+ +
+
+ +

◆ clkL_

+ +
+
+
+template<typename impl_t , spi::cpol CPOL, spi::cpha CPHA, spi::bitOrder BitOrder = spi::bitOrder::MSB_First>
+ + + + + +
+ + + + +
constexpr bool utl::spi_bb_i< impl_t, CPOL, CPHA, BitOrder >::clkL_ {clkLow()}
+
+staticprivate
+
+ +

Definition at line 88 of file spi_bb.h.

+ +
+
+ +

◆ nsec_

+ +
+
+
+template<typename impl_t , spi::cpol CPOL, spi::cpha CPHA, spi::bitOrder BitOrder = spi::bitOrder::MSB_First>
+ + + + + +
+ + + + +
uint32_t utl::spi_bb_i< impl_t, CPOL, CPHA, BitOrder >::nsec_
+
+private
+
+

Data membershalf period of SPI bus

+ +

Definition at line 124 of file spi_bb.h.

+ +
+
+ +

◆ spi_i< spi_bb_i< impl_t, CPOL, CPHA, BitOrder > >

+ +
+
+
+template<typename impl_t , spi::cpol CPOL, spi::cpha CPHA, spi::bitOrder BitOrder = spi::bitOrder::MSB_First>
+ + + + + +
+ + + + +
friend utl::spi_bb_i< impl_t, CPOL, CPHA, BitOrder >::spi_i< spi_bb_i< impl_t, CPOL, CPHA, BitOrder > >
+
+private
+
+ +

Syntactic sugar to CRTP casting.

+ +

Definition at line 58 of file spi_bb.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/doc/html/classutl_1_1spi__bb__i.js b/doc/html/classutl_1_1spi__bb__i.js new file mode 100644 index 0000000..dbdfac5 --- /dev/null +++ b/doc/html/classutl_1_1spi__bb__i.js @@ -0,0 +1,24 @@ +var classutl_1_1spi__bb__i = +[ + [ "type", "classutl_1_1spi__bb__i.html#a86ccf004bf5ccc8b7c73bd0f9e8dbaa7", null ], + [ "~spi_bb_i", "classutl_1_1spi__bb__i.html#aeac57567cb7db5ebb73bdd8e1f00cb82", null ], + [ "spi_bb_i", "classutl_1_1spi__bb__i.html#a49a61ba9a8e140e45d73e1f634061c6a", null ], + [ "_clock", "classutl_1_1spi__bb__i.html#a4338d3dc65ebe3aff1ec08d0413b3440", null ], + [ "_clock", "classutl_1_1spi__bb__i.html#a90960d777886658afd42243743b3f61a", null ], + [ "_CRTP_IMPL", "classutl_1_1spi__bb__i.html#a33b6ef2f4c26b16ee4e28425ab20e852", null ], + [ "_tx_data", "classutl_1_1spi__bb__i.html#a7431ab56033d58e34ee847d825c99658", null ], + [ "_tx_data_impl", "classutl_1_1spi__bb__i.html#a9010a066edb4cfa4c549174c87eaf368", null ], + [ "_tx_data_impl", "classutl_1_1spi__bb__i.html#a8e00f788f8ef1a31dfd3b1ca130aa16d", null ], + [ "clkHigh", "classutl_1_1spi__bb__i.html#a8fa5b901ced4ce734409ab4c20a1c1d2", null ], + [ "clkLow", "classutl_1_1spi__bb__i.html#ae0a17d5879099f6ac92eee4dee59ab0f", null ], + [ "delay", "classutl_1_1spi__bb__i.html#a49c41f82754a6e8fa4209423a33a1762", null ], + [ "MISO", "classutl_1_1spi__bb__i.html#a9a7b908a8976f6efed9dd6e2b294415b", null ], + [ "MOSI", "classutl_1_1spi__bb__i.html#a3051a59aaeb5b176a175b352cf5f578e", null ], + [ "SCLK", "classutl_1_1spi__bb__i.html#af7afcca54b5ab9871caccb38794bd9d1", null ], + [ "shift", "classutl_1_1spi__bb__i.html#a0d017c3bc5c583ad802027914e492b3a", null ], + [ "shift", "classutl_1_1spi__bb__i.html#a93d43e3fa8e2112757281e0c20070eb4", null ], + [ "clkH_", "classutl_1_1spi__bb__i.html#a3a9b68907304114573bc7321006fa539", null ], + [ "clkL_", "classutl_1_1spi__bb__i.html#a509a5828018f62e2627af67e8c6a32d5", null ], + [ "nsec_", "classutl_1_1spi__bb__i.html#a863bf592b1df8f74bcc3b8d76f40c173", null ], + [ "spi_i< spi_bb_i< impl_t, CPOL, CPHA, BitOrder > >", "classutl_1_1spi__bb__i.html#aa82efc45adc590f33164edacc1783c20", null ] +]; \ No newline at end of file diff --git a/doc/html/classutl_1_1spi__bb__i.png b/doc/html/classutl_1_1spi__bb__i.png new file mode 100644 index 0000000000000000000000000000000000000000..102c0bde48406377c328a441b156a7de48bbae50 GIT binary patch literal 1109 zcmeAS@N?(olHy`uVBq!ia0y~yVDtd812~w0q>qJ+Gmw%9@CkAK|NlRb`Qpvj(*8pe zfGjXRaNq!I=N)+`RaH|5w^tsIBckRbu{rpZ)ATHL~Z{FVR{lGu_eal58oE zh+&?%h~8AWaD4i6;|V{LR~u~! z|8!y%_oW=)Aj@@OPh2Owb-aEyC1#>4)3+CG8p{=qOPVqM4Rh6N$dUf8Iw990UwhNO zWpz*cYCg~Ucei3^_I<|4lDC_stml8*ZEbY_XY2F(FK#_wAsh1ilFhx{FJGKwNqHyz zv(IMV-=>1ATU9gH@B~e&s(SvgZ>kFKmC}O4ujevMYo5Bq%iQ7FH+9dc&%!RRO=g!r z^07aBiArt9z2+%PCaCy|DyW`xWDJ@lBLZW5Vc3~_TkIAvl7tS-zb@{;k>JZHln@&q z?ApLI+$M1rIm^X_{hrMx&)uoHUniQ4<0>#TDJU>5g`1eod<^ogcY5 zEBLtk;|D+9?-t!x7sub{`FgR@-Lt#jpI6h5Z~yGsz>vR{Z&T;PJPo8|Qd)P^Q)2#p zhEHGjy>HewvJ=zh1E-O`Dn6gWC!y6nbD3pl_&Lt%`Ia!R^6k{x-?w&iO>!|l7ujgO zezuOkOZ67_8&jLVm*h3&aP2TKw0r%aUsc-nfP=ZCltpROQKzjL|F9;JfI9j7z<(Sm z|5VmDm^i9v9KYJNhhvlNi(NB&v^RMikh^O-#h%&n*#~*8BF2>4JM1ECU!kUHx3vIVCg!0DlbX2mk;8 literal 0 HcmV?d00001 diff --git a/doc/html/classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4-members.html b/doc/html/classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4-members.html new file mode 100644 index 0000000..5c45c16 --- /dev/null +++ b/doc/html/classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4-members.html @@ -0,0 +1,136 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder > Member List
+
+
+ +

This is the complete list of members for utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
_clock() const finalutl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >inlineprivatevirtual
_clock(uint32_t c) finalutl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >inlineprivatevirtual
_tx_data(byte_t out) finalutl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >inlineprivatevirtual
_tx_data_impl(byte_t out)utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >private
_tx_data_impl(byte_t out)utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >private
clkH_utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >privatestatic
clkHigh()utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >inlineprivatestatic
clkL_utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >privatestatic
clkLow()utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >inlineprivatestatic
clock() constutl::spi_i< virtual_tag >inline
clock(uint32_t c)utl::spi_i< virtual_tag >inline
delay(uint32_t)=0utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >privatepure virtual
MISO()=0utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >privatepure virtual
MOSI(bool)=0utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >privatepure virtual
nsec_utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >private
operator=(const type &)=deleteutl::spi_i< virtual_tag >protected
rx_data()utl::spi_i< virtual_tag >inline
rx_data(byte_t *in, size_t n)utl::spi_i< virtual_tag >
SCLK(bool)=0utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >privatepure virtual
shift(byte_t &b)utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >inlineprivate
shift(byte_t &b)utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >inlineprivate
spi_bb_i(uint32_t clk) noexceptutl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >inlineprotected
spi_i()=defaultutl::spi_i< virtual_tag >protected
spi_i(const type &)=deleteutl::spi_i< virtual_tag >protected
tx_data(byte_t out)utl::spi_i< virtual_tag >inline
tx_data(const byte_t *out, byte_t *in, size_t n)utl::spi_i< virtual_tag >
type typedefutl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >
~spi_bb_i()=defaultutl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >protected
~spi_i()=defaultutl::spi_i< virtual_tag >virtual
+
+ + + + diff --git a/doc/html/classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html b/doc/html/classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html new file mode 100644 index 0000000..78d6c37 --- /dev/null +++ b/doc/html/classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html @@ -0,0 +1,839 @@ + + + + + + + +uTL: utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder > Class Template Referenceabstract
+
+
+ +

A virtual base class interface specialization. Using the private virtual interface we provide the interface from spi_i<virtual_tag> + More...

+ +

#include <spi_bb.h>

+
+Inheritance diagram for utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >:
+
+
+ + +utl::spi_i< virtual_tag > + +
+ + + + + + + + + +

+Public Types

using type = spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >
 Export type as identity meta-function. More...
 
- Public Types inherited from utl::spi_i< virtual_tag >
using type = spi_i< virtual_tag >
 Export type as identity meta-function. More...
 
+ + + + + + + + + + + + + + + + +

+Protected Member Functions

Object lifetime
 ~spi_bb_i ()=default
 
 spi_bb_i (uint32_t clk) noexcept
 A default constructor. More...
 
- Protected Member Functions inherited from utl::spi_i< virtual_tag >
 spi_i ()=default
 Allow constructor from derived only. More...
 
 spi_i (const type &)=delete
 No copies. More...
 
typeoperator= (const type &)=delete
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Private Member Functions

Implementation requirements

}

+
virtual void MOSI (bool)=0
 Implementers's MOSI pin function. More...
 
virtual bool MISO ()=0
 Implementers's MISO pin function. More...
 
virtual void SCLK (bool)=0
 Implementers's SCLK pin function. More...
 
virtual void delay (uint32_t)=0
 
Implementation of base requirements
uint32_t _clock () const final
 Read the clock frequency of the bus. More...
 
void _clock (uint32_t c) final
 Set the clock frequency of the bus. More...
 
byte_t _tx_data (byte_t out) final
 
template<spi::cpha C = CPHA>
meta::enable_if_t<(C==spi::cpha::LOW), byte_t_tx_data_impl (byte_t out)
 _tx_data implementation CPHA == LOW Out at preceding clock trailing edge, In at leading clock edge More...
 
template<spi::cpha C = CPHA>
meta::enable_if_t<(C==spi::cpha::HIGH), byte_t_tx_data_impl (byte_t out)
 _tx_data implementation CPHA == HIGH Out at leading clock edge, In at trailing clock edge More...
 
+ + + + +

+Private Attributes

uint32_t nsec_
 
+ + + + + + + + + + + + + + + + + +

+SPI implementation specific functions

static constexpr bool clkH_ {clkHigh()}
 
static constexpr bool clkL_ {clkLow()}
 
template<spi::bitOrder B = BitOrder>
constexpr meta::enable_if_t<(B==spi::bitOrder::LSB_First), void > shift (byte_t &b)
 
template<spi::bitOrder B = BitOrder>
constexpr meta::enable_if_t<(B==spi::bitOrder::MSB_First), void > shift (byte_t &b)
 
template<spi::cpol C = CPOL>
static constexpr bool clkHigh ()
 
template<spi::cpol C = CPOL>
static constexpr bool clkLow ()
 
+ + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Member Functions inherited from utl::spi_i< virtual_tag >
uint32_t clock () const
 
void clock (uint32_t c)
 set clock frequency of the bus More...
 
byte_t tx_data (byte_t out)
 
size_t tx_data (const byte_t *out, byte_t *in, size_t n)
 Transmit a number of bytes to the spi bus and read the response. More...
 
byte_t rx_data ()
 
size_t rx_data (byte_t *in, size_t n)
 Receive a number of bytes from the spi bus while transmitting 0xFFs. More...
 
virtual ~spi_i ()=default
 
+

Detailed Description

+

template<spi::cpol CPOL, spi::cpha CPHA, spi::bitOrder BitOrder>
+class utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >

+ +

A virtual base class interface specialization. Using the private virtual interface we provide the interface from spi_i<virtual_tag>

+
Parameters
+ + + + + +
impl_t= virtual_tag
CPOLClock polarity
CPHAClock phase
BitOrderData transfer bit order
+
+
+ +

Definition at line 190 of file spi_bb.h.

+

Member Typedef Documentation

+ +

◆ type

+ +
+
+
+template<spi::cpol CPOL, spi::cpha CPHA, spi::bitOrder BitOrder>
+ + + + +
using utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::type = spi_bb_i<virtual_tag, CPOL, CPHA, BitOrder>
+
+ +

Export type as identity meta-function.

+ +

Definition at line 192 of file spi_bb.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ ~spi_bb_i()

+ +
+
+
+template<spi::cpol CPOL, spi::cpha CPHA, spi::bitOrder BitOrder>
+ + + + + +
+ + + + + + + +
utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::~spi_bb_i ()
+
+protecteddefault
+
+

A default destructor, allow destructor from derived only

+ +
+
+ +

◆ spi_bb_i()

+ +
+
+
+template<spi::cpol CPOL, spi::cpha CPHA, spi::bitOrder BitOrder>
+ + + + + +
+ + + + + + + + +
utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::spi_bb_i (uint32_t clk)
+
+inlineprotectednoexcept
+
+ +

A default constructor.

+ +

Definition at line 201 of file spi_bb.h.

+ +
+
+

Member Function Documentation

+ +

◆ _clock() [1/2]

+ +
+
+
+template<spi::cpol CPOL, spi::cpha CPHA, spi::bitOrder BitOrder>
+ + + + + +
+ + + + + + + +
uint32_t utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::_clock () const
+
+inlinefinalprivatevirtual
+
+ +

Read the clock frequency of the bus.

+ +

Implements utl::spi_i< virtual_tag >.

+ +

Definition at line 239 of file spi_bb.h.

+ +
+
+ +

◆ _clock() [2/2]

+ +
+
+
+template<spi::cpol CPOL, spi::cpha CPHA, spi::bitOrder BitOrder>
+ + + + + +
+ + + + + + + + +
void utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::_clock (uint32_t )
+
+inlinefinalprivatevirtual
+
+ +

Set the clock frequency of the bus.

+ +

Implements utl::spi_i< virtual_tag >.

+ +

Definition at line 240 of file spi_bb.h.

+ +
+
+ +

◆ _tx_data()

+ +
+
+
+template<spi::cpol CPOL, spi::cpha CPHA, spi::bitOrder BitOrder>
+ + + + + +
+ + + + + + + + +
byte_t utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::_tx_data (byte_t )
+
+inlinefinalprivatevirtual
+
+

Transmit a byte on the bus and return the response

+ +

Implements utl::spi_i< virtual_tag >.

+ +

Definition at line 241 of file spi_bb.h.

+ +
+
+ +

◆ _tx_data_impl() [1/2]

+ +
+
+
+template<spi::cpol CPOL, spi::cpha CPHA, spi::bitOrder BitOrder>
+
+template<spi::cpha C>
+ + + + + +
+ + + + + + + + +
meta::enable_if_t<(C==spi::cpha::LOW), byte_t > utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::_tx_data_impl (byte_t out)
+
+private
+
+ +

_tx_data implementation CPHA == LOW Out at preceding clock trailing edge, In at leading clock edge

+
Parameters
+ + +
outThe byte to send to SPI bus
+
+
+
Returns
The byte read from the bus
+ +

Definition at line 266 of file spi_bb.h.

+ +
+
+ +

◆ _tx_data_impl() [2/2]

+ +
+
+
+template<spi::cpol CPOL, spi::cpha CPHA, spi::bitOrder BitOrder>
+
+template<spi::cpha C>
+ + + + + +
+ + + + + + + + +
meta::enable_if_t<(C==spi::cpha::HIGH), byte_t > utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::_tx_data_impl (byte_t out)
+
+private
+
+ +

_tx_data implementation CPHA == HIGH Out at leading clock edge, In at trailing clock edge

+
Parameters
+ + +
outThe byte to send to SPI bus
+
+
+
Returns
The byte read from the bus
+ +

Definition at line 290 of file spi_bb.h.

+ +
+
+ +

◆ clkHigh()

+ +
+
+
+template<spi::cpol CPOL, spi::cpha CPHA, spi::bitOrder BitOrder>
+
+template<spi::cpol C = CPOL>
+ + + + + +
+ + + + + + + +
static constexpr bool utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::clkHigh ()
+
+inlinestaticprivate
+
+ +

Definition at line 213 of file spi_bb.h.

+ +
+
+ +

◆ clkLow()

+ +
+
+
+template<spi::cpol CPOL, spi::cpha CPHA, spi::bitOrder BitOrder>
+
+template<spi::cpol C = CPOL>
+ + + + + +
+ + + + + + + +
static constexpr bool utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::clkLow ()
+
+inlinestaticprivate
+
+ +

Definition at line 216 of file spi_bb.h.

+ +
+
+ +

◆ delay()

+ +
+
+
+template<spi::cpol CPOL, spi::cpha CPHA, spi::bitOrder BitOrder>
+ + + + + +
+ + + + + + + + +
virtual void utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::delay (uint32_t )
+
+privatepure virtual
+
+

Implementers's half period delay function

+ +
+
+ +

◆ MISO()

+ +
+
+
+template<spi::cpol CPOL, spi::cpha CPHA, spi::bitOrder BitOrder>
+ + + + + +
+ + + + + + + +
virtual bool utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::MISO ()
+
+privatepure virtual
+
+ +

Implementers's MISO pin function.

+ +
+
+ +

◆ MOSI()

+ +
+
+
+template<spi::cpol CPOL, spi::cpha CPHA, spi::bitOrder BitOrder>
+ + + + + +
+ + + + + + + + +
virtual void utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::MOSI (bool )
+
+privatepure virtual
+
+ +

Implementers's MOSI pin function.

+ +
+
+ +

◆ SCLK()

+ +
+
+
+template<spi::cpol CPOL, spi::cpha CPHA, spi::bitOrder BitOrder>
+ + + + + +
+ + + + + + + + +
virtual void utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::SCLK (bool )
+
+privatepure virtual
+
+ +

Implementers's SCLK pin function.

+ +
+
+ +

◆ shift() [1/2]

+ +
+
+
+template<spi::cpol CPOL, spi::cpha CPHA, spi::bitOrder BitOrder>
+
+template<spi::bitOrder B = BitOrder>
+ + + + + +
+ + + + + + + + +
constexpr meta::enable_if_t<(B == spi::bitOrder::LSB_First), void> utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::shift (byte_tb)
+
+inlineprivate
+
+ +

Definition at line 210 of file spi_bb.h.

+ +
+
+ +

◆ shift() [2/2]

+ +
+
+
+template<spi::cpol CPOL, spi::cpha CPHA, spi::bitOrder BitOrder>
+
+template<spi::bitOrder B = BitOrder>
+ + + + + +
+ + + + + + + + +
constexpr meta::enable_if_t<(B == spi::bitOrder::MSB_First), void> utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::shift (byte_tb)
+
+inlineprivate
+
+ +

Definition at line 212 of file spi_bb.h.

+ +
+
+

Member Data Documentation

+ +

◆ clkH_

+ +
+
+
+template<spi::cpol CPOL, spi::cpha CPHA, spi::bitOrder BitOrder>
+ + + + + +
+ + + + +
constexpr bool utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::clkH_ {clkHigh()}
+
+staticprivate
+
+ +

Definition at line 219 of file spi_bb.h.

+ +
+
+ +

◆ clkL_

+ +
+
+
+template<spi::cpol CPOL, spi::cpha CPHA, spi::bitOrder BitOrder>
+ + + + + +
+ + + + +
constexpr bool utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::clkL_ {clkLow()}
+
+staticprivate
+
+ +

Definition at line 220 of file spi_bb.h.

+ +
+
+ +

◆ nsec_

+ +
+
+
+template<spi::cpol CPOL, spi::cpha CPHA, spi::bitOrder BitOrder>
+ + + + + +
+ + + + +
uint32_t utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::nsec_
+
+private
+
+

Data membershalf period of SPI bus

+ +

Definition at line 252 of file spi_bb.h.

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/doc/html/classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.js b/doc/html/classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.js new file mode 100644 index 0000000..1c0db32 --- /dev/null +++ b/doc/html/classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.js @@ -0,0 +1,22 @@ +var classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4 = +[ + [ "type", "classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#a8318081f8e7803101bddb893afe8fc6a", null ], + [ "~spi_bb_i", "classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#a0ee4c601e63ec7097df95347f631c1fb", null ], + [ "spi_bb_i", "classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#a85643f4a35c3fbc6e6d1047a42e8c832", null ], + [ "_clock", "classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#a255b1bf9e7f74140a20e4a3d8b26c181", null ], + [ "_clock", "classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#ac69aac0298266d8bb8b912f763013433", null ], + [ "_tx_data", "classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#a2f16bf0d9f6e0eb3045923b416e57e0c", null ], + [ "_tx_data_impl", "classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#a5875448dd9fdff7f8f59ef84efdb69b1", null ], + [ "_tx_data_impl", "classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#ad11610099072289c1f71dd7aab684905", null ], + [ "clkHigh", "classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#a31da01ac9f57390d05da49dc494f8964", null ], + [ "clkLow", "classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#a71630f7ea657f7b22640eaf3fdeff7ac", null ], + [ "delay", "classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#a0215497da3f01d96b5ecb252262f130c", null ], + [ "MISO", "classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#aef56a570b3b19e2b26b148a63fa8ce46", null ], + [ "MOSI", "classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#a69738fe08e861df1a156f7a1168652cd", null ], + [ "SCLK", "classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#aab4450d67ccbabe2b4724290118e3d3c", null ], + [ "shift", "classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#ab7b8568f6383ca83cc3b9c7a4bf14102", null ], + [ "shift", "classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#a4de868a08bed878446e4fa026275cd23", null ], + [ "clkH_", "classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#a69ff11ae02a37042fc446ddee6a534b2", null ], + [ "clkL_", "classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#a652413b2bf4a45c7326faa3fa9b8ef73", null ], + [ "nsec_", "classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#a0d112cd54d54775eb50febed8f6c18b5", null ] +]; \ No newline at end of file diff --git a/doc/html/classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.png b/doc/html/classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.png new file mode 100644 index 0000000000000000000000000000000000000000..e5d4e741e9036c56ac9ff9fc74f72f1181da53b6 GIT binary patch literal 986 zcmeAS@N?(olHy`uVBq!ia0y~yU^E1>12~w0q+7}+K_Dd&;1lBd|Nnm=^TnI5rTvE{ z09jys;J^Xa&O7ozE=Ng_UoZnu5eQs86=KA|z?|vn;uuoF_;&8wqR(19Y}4Ck-utgQ z-{c!q9IZMO4F@%iswPv?DiqxJjz z(>K0Pd;hU~r=e=;{J*CpqLuP{rmpe(L zLNAkF-?+8!+Iy|Za$iqfyRq-&t%_W|wR^t^S1ncH-Kn+7KH<&ojQg**sZ_oY-!?UV z(z=JqMQ=1ePkQoHy~p#?|LGWBoV{^QF<;TSO1_5plj05x2A&ek1s}eOo?>{$naseK zcgRWdfJq|H0rwwF9|Vpu*t8fj@B_Kd63o=(eyHwUIwfdAkk{l13``B0ha?)>4cHzi z_Apj(Bs0iGC2x;UZcQ!O`|28_NzUTCck|2}`l{2Tc30XOL|pNSUEcrC*);WL_U)Qy zoi@jI$=dGxIcKBqIlYr{b9~pv@G7l&|2;q9+Ko-WZkLOmHM?;nqQC#Y?^mJsv-Nhb ziwyAJ|NoBBaklVhH^MC|R9C zxb%#heMMgJJvmA36aq@Z@PV|Zcg&m!?(&)=FF9{ zwsGe#eskf*&y_WMH|~q|lYG7Uv%&FOU0?Z2*SyS*ZJn_)Irs0ZcT?q(L)YK=oL!*h zUYhe(=ymy26MtZmnDN#r*FJ7`*wsMqlajnVe!j*A24RnMO4m$j`P(@=jx#~>tN(&u zHoN#g7`1V-7##bYv%c$a;+ik>w|(By%+UWryo_D!!Ib#|-&TXt4MYCZjfM>hJ&ZQ) nNHK1nthrQV$&^bn{}~NWIxH%^t9=xh5g9yP{an^LB{Ts5HSx}# literal 0 HcmV?d00001 diff --git a/doc/html/classutl_1_1spi__i-members.html b/doc/html/classutl_1_1spi__i-members.html new file mode 100644 index 0000000..e7968d5 --- /dev/null +++ b/doc/html/classutl_1_1spi__i-members.html @@ -0,0 +1,122 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
utl::spi_i< impl_t > Member List
+
+
+ +

This is the complete list of members for utl::spi_i< impl_t >, including all inherited members.

+ + + + + + + + + + + + + + + + +
_clock() constutl::spi_i< impl_t >inlineprivate
_clock(uint32_t c)utl::spi_i< impl_t >inlineprivate
_CRTP_IMPL(impl_t)utl::spi_i< impl_t >private
_tx_data(byte_t b)utl::spi_i< impl_t >inlineprivate
clock() constutl::spi_i< impl_t >inline
clock(uint32_t c)utl::spi_i< impl_t >inline
operator=(const type &)=deleteutl::spi_i< impl_t >protected
rx_data()utl::spi_i< impl_t >inline
rx_data(byte_t *in, size_t n)utl::spi_i< impl_t >
spi_i()=defaultutl::spi_i< impl_t >protected
spi_i(const type &)=deleteutl::spi_i< impl_t >protected
tx_data(byte_t out)utl::spi_i< impl_t >inline
tx_data(const byte_t *out, byte_t *in, size_t n)utl::spi_i< impl_t >
type typedefutl::spi_i< impl_t >
~spi_i()=defaultutl::spi_i< impl_t >protected
+
+ + + + diff --git a/doc/html/classutl_1_1spi__i.html b/doc/html/classutl_1_1spi__i.html new file mode 100644 index 0000000..c08a3a6 --- /dev/null +++ b/doc/html/classutl_1_1spi__i.html @@ -0,0 +1,659 @@ + + + + + + + +uTL: utl::spi_i< impl_t > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
utl::spi_i< impl_t > Class Template Reference
+
+
+ +

#include <spi.h>

+ + + + + +

+Public Types

using type = spi_i< impl_t >
 Export type as identity meta-function. More...
 
+ + + + + + + + + + + + + + + + + + +

+Public Member Functions

Get/Set functions provided by the interface
uint32_t clock () const
 
void clock (uint32_t c)
 set clock frequency of the bus More...
 
I/O functions provided by the interface
byte_t tx_data (byte_t out)
 
size_t tx_data (const byte_t *out, byte_t *in, size_t n)
 Transmit a number of bytes to the spi bus and read the response. More...
 
byte_t rx_data ()
 
size_t rx_data (byte_t *in, size_t n)
 Receive a number of bytes from the spi bus while transmitting 0xFFs. More...
 
+ + + + + + + + + + + + + +

+Protected Member Functions

Object lifetime
 spi_i ()=default
 Allow constructor from derived only. More...
 
 ~spi_i ()=default
 Allow destructor from derived only. More...
 
 spi_i (const type &)=delete
 No copies. More...
 
typeoperator= (const type &)=delete
 
+ + + + + + + + + + + + + +

+Private Member Functions

 _CRTP_IMPL (impl_t)
 
Implementation requirements
Note
In order for the implementation to have the following as private members it also need to declare this class as friend
+
uint32_t _clock () const
 clock frequency of the bus [Hz] More...
 
void _clock (uint32_t c)
 set clock frequency of the bus [Hz] More...
 
byte_t _tx_data (byte_t b)
 
+

Detailed Description

+

template<typename impl_t>
+class utl::spi_i< impl_t >

+ +

Template base class for SPI communication interface using CRTP This class force a common interface for SPI communication protocol implementations.

Parameters
+ + +
impl_tThe CRTP type (the derived/implementation class typename).
+
+
+ +

Definition at line 67 of file spi.h.

+

Member Typedef Documentation

+ +

◆ type

+ +
+
+
+template<typename impl_t>
+ + + + +
using utl::spi_i< impl_t >::type = spi_i<impl_t>
+
+ +

Export type as identity meta-function.

+ +

Definition at line 71 of file spi.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ spi_i() [1/2]

+ +
+
+
+template<typename impl_t>
+ + + + + +
+ + + + + + + +
utl::spi_i< impl_t >::spi_i ()
+
+protecteddefault
+
+ +

Allow constructor from derived only.

+ +
+
+ +

◆ ~spi_i()

+ +
+
+
+template<typename impl_t>
+ + + + + +
+ + + + + + + +
utl::spi_i< impl_t >::~spi_i ()
+
+protecteddefault
+
+ +

Allow destructor from derived only.

+ +
+
+ +

◆ spi_i() [2/2]

+ +
+
+
+template<typename impl_t>
+ + + + + +
+ + + + + + + + +
utl::spi_i< impl_t >::spi_i (const type)
+
+protecteddelete
+
+ +

No copies.

+ +
+
+

Member Function Documentation

+ +

◆ _clock() [1/2]

+ +
+
+
+template<typename impl_t>
+ + + + + +
+ + + + + + + +
uint32_t utl::spi_i< impl_t >::_clock () const
+
+inlineprivate
+
+ +

clock frequency of the bus [Hz]

+ +

Definition at line 92 of file spi.h.

+ +
+
+ +

◆ _clock() [2/2]

+ +
+
+
+template<typename impl_t>
+ + + + + +
+ + + + + + + + +
void utl::spi_i< impl_t >::_clock (uint32_t c)
+
+inlineprivate
+
+ +

set clock frequency of the bus [Hz]

+ +

Definition at line 93 of file spi.h.

+ +
+
+ +

◆ _CRTP_IMPL()

+ +
+
+
+template<typename impl_t>
+ + + + + +
+ + + + + + + + +
utl::spi_i< impl_t >::_CRTP_IMPL (impl_t )
+
+private
+
+ +
+
+ +

◆ _tx_data()

+ +
+
+
+template<typename impl_t>
+ + + + + +
+ + + + + + + + +
byte_t utl::spi_i< impl_t >::_tx_data (byte_t b)
+
+inlineprivate
+
+

Transmit a byte on the bus and return the response

+ +

Definition at line 94 of file spi.h.

+ +
+
+ +

◆ clock() [1/2]

+ +
+
+
+template<typename impl_t>
+ + + + + +
+ + + + + + + +
uint32_t utl::spi_i< impl_t >::clock () const
+
+inline
+
+
Returns
clock frequency of the bus
+ +

Definition at line 102 of file spi.h.

+ +
+
+ +

◆ clock() [2/2]

+ +
+
+
+template<typename impl_t>
+ + + + + +
+ + + + + + + + +
void utl::spi_i< impl_t >::clock (uint32_t c)
+
+inline
+
+ +

set clock frequency of the bus

+ +

Definition at line 103 of file spi.h.

+ +
+
+ +

◆ operator=()

+ +
+
+
+template<typename impl_t>
+ + + + + +
+ + + + + + + + +
type& utl::spi_i< impl_t >::operator= (const type)
+
+protecteddelete
+
+ +
+
+ +

◆ rx_data() [1/2]

+ +
+
+
+template<typename impl_t>
+ + + + + +
+ + + + + + + +
byte_t utl::spi_i< impl_t >::rx_data ()
+
+inline
+
+

Receive a byte from spi bus while transmitting 0xFF

+ +

Definition at line 129 of file spi.h.

+ +
+
+ +

◆ rx_data() [2/2]

+ +
+
+
+template<typename _I >
+ + + + + + + + + + + + + + + + + + +
size_t utl::spi_i< _I >::rx_data (byte_tin,
size_t n 
)
+
+ +

Receive a number of bytes from the spi bus while transmitting 0xFFs.

+
Parameters
+ + + +
inPointer to buffer to store the data
nThe number of bytes to read
+
+
+
Returns
The number of received bytes.
+ +

Definition at line 165 of file spi.h.

+ +
+
+ +

◆ tx_data() [1/2]

+ +
+
+
+template<typename impl_t>
+ + + + + +
+ + + + + + + + +
byte_t utl::spi_i< impl_t >::tx_data (byte_t out)
+
+inline
+
+

Transmit a byte to spi bus and return the response

+ +

Definition at line 114 of file spi.h.

+ +
+
+ +

◆ tx_data() [2/2]

+ +
+
+
+template<typename _I >
+ + + + + + + + + + + + + + + + + + + + + + + + +
size_t utl::spi_i< _I >::tx_data (const byte_tout,
byte_tin,
size_t n 
)
+
+ +

Transmit a number of bytes to the spi bus and read the response.

+
Parameters
+ + + + +
outPointer to data to send to the bus
inPointer to buffer to store the data from the bus
nThe number of bytes to transmit/receive
+
+
+
Returns
The number of bytes.
+ +

Definition at line 152 of file spi.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • include/utl/com/spi.h
  • +
+
+
+ + + + diff --git a/doc/html/classutl_1_1spi__i.js b/doc/html/classutl_1_1spi__i.js new file mode 100644 index 0000000..6857c23 --- /dev/null +++ b/doc/html/classutl_1_1spi__i.js @@ -0,0 +1,18 @@ +var classutl_1_1spi__i = +[ + [ "type", "classutl_1_1spi__i.html#aff8ee0a2160cddbb52fce46611a6108f", null ], + [ "spi_i", "classutl_1_1spi__i.html#ad66605cdf90f6d24cad3dc5ecda94b77", null ], + [ "~spi_i", "classutl_1_1spi__i.html#ae77cb8be7d648a62a1ad252d829eccfb", null ], + [ "spi_i", "classutl_1_1spi__i.html#a1d6facb9b9adf91a6589fe029325bd55", null ], + [ "_clock", "classutl_1_1spi__i.html#a68a21ac9727eed3802ce7d1181ac4f8c", null ], + [ "_clock", "classutl_1_1spi__i.html#af0a9bfc5d02ccd2bfbe8044132884578", null ], + [ "_CRTP_IMPL", "classutl_1_1spi__i.html#adfab771b0e399b9f482e42aaa5e9db11", null ], + [ "_tx_data", "classutl_1_1spi__i.html#acf3ffd9c79d4cdeac100cf3273120689", null ], + [ "clock", "classutl_1_1spi__i.html#a24cdd0c5ce4ed45a6c1b88ea43328634", null ], + [ "clock", "classutl_1_1spi__i.html#a0ebb46a523ace45fd69950f90f9b3af4", null ], + [ "operator=", "classutl_1_1spi__i.html#aa5cf05ce005cb23e6317b3eef70bf4b0", null ], + [ "rx_data", "classutl_1_1spi__i.html#a846dead32b91efcb48eed614daf68e8f", null ], + [ "rx_data", "classutl_1_1spi__i.html#a2053009da5364ead720aebd7cc537c21", null ], + [ "tx_data", "classutl_1_1spi__i.html#ac8376d88480a992ac47699637e1a29a5", null ], + [ "tx_data", "classutl_1_1spi__i.html#af3e303c2982202261700044d31596248", null ] +]; \ No newline at end of file diff --git a/doc/html/classutl_1_1spi__i.png b/doc/html/classutl_1_1spi__i.png new file mode 100644 index 0000000000000000000000000000000000000000..24158eb08bc5991bcbb6fbee347c72f7ae88817f GIT binary patch literal 877 zcmeAS@N?(olHy`uVBq!ia0y~yU=#zg12~w07EaxVy4kY87K}&tNQQflzbSr=GfB@A5Kt zUHPH*jST7^Ty+`Tf3|PABkcb&_;1I{ly^0oqU64RNqYa1!S7j#u1d`9zMg5hhl)?E zDHe!!W&UF^|5DPk`*l(Me8o}Q_f0E4S`+5|Q)$-9S(<7qZhM@bnPj&n)#mE|%&l9d zKCH;C6#Ctr?X5ZMYPbC!;oP;of8SaQI!q6r_v7cq+Ia6-^$f~!ovc3;leRKg>|4nC z;1Sf7P|7C??2oIw547$uFdf)(f$2ig?pE=JHXy?&l2e~y8jzv5gu%jzyFqyim8o@0 zRG-h$KcxG7&U(hkNlc!h+`5yVa3JA~txMb|FKN59Tju75XUqKfrYG3Wt~-6dCeikT z<*W;;dw%~BGI}00`905v^;>rIoIj*8)9k_~sT)2wn)hDt@_4m(Y0=$myH%kz8$E#`pay? zeBroxd-)c5eyCZepHsXF? zr0%k9Gp;^T3s`^mYlXje({1T`Ixm*Eg`-|aP#U^o7KW$ zr=_F*q?LGd%lnmY-QxP->@6cdgFA6&)HdxG-n(e&tcYwC{vc`Iw;67J72-70^}Tf{tzkg-ox(K*YEx_X8)j28Wovyz>Gd4s{z L)z4*}Q$iB}x`vHY literal 0 HcmV?d00001 diff --git a/doc/html/classutl_1_1spi__i_3_01virtual__tag_01_4-members.html b/doc/html/classutl_1_1spi__i_3_01virtual__tag_01_4-members.html new file mode 100644 index 0000000..1c6ee6e --- /dev/null +++ b/doc/html/classutl_1_1spi__i_3_01virtual__tag_01_4-members.html @@ -0,0 +1,121 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
utl::spi_i< virtual_tag > Member List
+
+
+ +

This is the complete list of members for utl::spi_i< virtual_tag >, including all inherited members.

+ + + + + + + + + + + + + + + +
_clock() const =0utl::spi_i< virtual_tag >privatepure virtual
_clock(uint32_t)=0utl::spi_i< virtual_tag >privatepure virtual
_tx_data(byte_t)=0utl::spi_i< virtual_tag >privatepure virtual
clock() constutl::spi_i< virtual_tag >inline
clock(uint32_t c)utl::spi_i< virtual_tag >inline
operator=(const type &)=deleteutl::spi_i< virtual_tag >protected
rx_data()utl::spi_i< virtual_tag >inline
rx_data(byte_t *in, size_t n)utl::spi_i< virtual_tag >
spi_i()=defaultutl::spi_i< virtual_tag >protected
spi_i(const type &)=deleteutl::spi_i< virtual_tag >protected
tx_data(byte_t out)utl::spi_i< virtual_tag >inline
tx_data(const byte_t *out, byte_t *in, size_t n)utl::spi_i< virtual_tag >
type typedefutl::spi_i< virtual_tag >
~spi_i()=defaultutl::spi_i< virtual_tag >virtual
+
+ + + + diff --git a/doc/html/classutl_1_1spi__i_3_01virtual__tag_01_4.html b/doc/html/classutl_1_1spi__i_3_01virtual__tag_01_4.html new file mode 100644 index 0000000..afcb9a5 --- /dev/null +++ b/doc/html/classutl_1_1spi__i_3_01virtual__tag_01_4.html @@ -0,0 +1,608 @@ + + + + + + + +uTL: utl::spi_i< virtual_tag > Class Template Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
utl::spi_i< virtual_tag > Class Template Referenceabstract
+
+
+ +

A virtual base class implementation. + More...

+ +

#include <spi.h>

+
+Inheritance diagram for utl::spi_i< virtual_tag >:
+
+
+ + +utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder > + +
+ + + + + +

+Public Types

using type = spi_i< virtual_tag >
 Export type as identity meta-function. More...
 
+ + + + + + + + + + + + + + + + + + +

+Public Member Functions

Get/Set functions provided by the interface
uint32_t clock () const
 
void clock (uint32_t c)
 set clock frequency of the bus More...
 
I/O functions provided by the interface
byte_t tx_data (byte_t out)
 
size_t tx_data (const byte_t *out, byte_t *in, size_t n)
 Transmit a number of bytes to the spi bus and read the response. More...
 
byte_t rx_data ()
 
size_t rx_data (byte_t *in, size_t n)
 Receive a number of bytes from the spi bus while transmitting 0xFFs. More...
 
+ + + + + + + + + + +

+Private Member Functions

Implementation requirements
virtual uint32_t _clock () const =0
 Read the clock frequency of the bus. More...
 
virtual void _clock (uint32_t)=0
 Set the clock frequency of the bus. More...
 
virtual byte_t _tx_data (byte_t)=0
 
+ + + + + + + + + + + +

+Object lifetime

 spi_i ()=default
 Allow constructor from derived only. More...
 
 spi_i (const type &)=delete
 No copies. More...
 
typeoperator= (const type &)=delete
 
virtual ~spi_i ()=default
 
+

Detailed Description

+

template<>
+class utl::spi_i< virtual_tag >

+ +

A virtual base class implementation.

+
Parameters
+ + +
none
+
+
+ +

Definition at line 177 of file spi.h.

+

Member Typedef Documentation

+ +

◆ type

+ +
+
+ + + + +
using utl::spi_i< virtual_tag >::type = spi_i<virtual_tag>
+
+ +

Export type as identity meta-function.

+ +

Definition at line 179 of file spi.h.

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ spi_i() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
utl::spi_i< virtual_tag >::spi_i ()
+
+protecteddefault
+
+ +

Allow constructor from derived only.

+ +
+
+ +

◆ spi_i() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
utl::spi_i< virtual_tag >::spi_i (const type)
+
+protecteddelete
+
+ +

No copies.

+ +
+
+ +

◆ ~spi_i()

+ +
+
+ + + + + +
+ + + + + + + +
virtual utl::spi_i< virtual_tag >::~spi_i ()
+
+virtualdefault
+
+

Virtual default destructor

+ +
+
+

Member Function Documentation

+ +

◆ _clock() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
virtual uint32_t utl::spi_i< virtual_tag >::_clock () const
+
+privatepure virtual
+
+ +

Read the clock frequency of the bus.

+ +

Implemented in utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >.

+ +
+
+ +

◆ _clock() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void utl::spi_i< virtual_tag >::_clock (uint32_t )
+
+privatepure virtual
+
+ +

Set the clock frequency of the bus.

+ +

Implemented in utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >.

+ +
+
+ +

◆ _tx_data()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual byte_t utl::spi_i< virtual_tag >::_tx_data (byte_t )
+
+privatepure virtual
+
+

Transmit a byte on the bus and return the response

+ +

Implemented in utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >.

+ +
+
+ +

◆ clock() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
uint32_t utl::spi_i< virtual_tag >::clock () const
+
+inline
+
+
Returns
clock frequency of the bus
+ +

Definition at line 208 of file spi.h.

+ +
+
+ +

◆ clock() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void utl::spi_i< virtual_tag >::clock (uint32_t c)
+
+inline
+
+ +

set clock frequency of the bus

+ +

Definition at line 209 of file spi.h.

+ +
+
+ +

◆ operator=()

+ +
+
+ + + + + +
+ + + + + + + + +
type& utl::spi_i< virtual_tag >::operator= (const type)
+
+protecteddelete
+
+ +
+
+ +

◆ rx_data() [1/2]

+ +
+
+ + + + + +
+ + + + + + + +
byte_t utl::spi_i< virtual_tag >::rx_data ()
+
+inline
+
+

Receive a byte from spi bus while transmitting 0xFF

+ +

Definition at line 235 of file spi.h.

+ +
+
+ +

◆ rx_data() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
size_t utl::spi_i< virtual_tag >::rx_data (byte_tin,
size_t n 
)
+
+ +

Receive a number of bytes from the spi bus while transmitting 0xFFs.

+
Parameters
+ + + +
inPointer to buffer to store the data
nThe number of bytes to read
+
+
+
Returns
The number of received bytes.
+ +

Definition at line 270 of file spi.h.

+ +
+
+ +

◆ tx_data() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
byte_t utl::spi_i< virtual_tag >::tx_data (byte_t out)
+
+inline
+
+

Transmit a byte to spi bus and return the response

+ +

Definition at line 220 of file spi.h.

+ +
+
+ +

◆ tx_data() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
size_t utl::spi_i< virtual_tag >::tx_data (const byte_tout,
byte_tin,
size_t n 
)
+
+ +

Transmit a number of bytes to the spi bus and read the response.

+
Parameters
+ + + + +
outPointer to data to send to the bus
inPointer to buffer to store the data from the bus
nThe number of bytes to transmit/receive
+
+
+
Returns
The number of bytes.
+ +

Definition at line 258 of file spi.h.

+ +
+
+
The documentation for this class was generated from the following file:
    +
  • include/utl/com/spi.h
  • +
+
+
+ + + + diff --git a/doc/html/classutl_1_1spi__i_3_01virtual__tag_01_4.js b/doc/html/classutl_1_1spi__i_3_01virtual__tag_01_4.js new file mode 100644 index 0000000..f238920 --- /dev/null +++ b/doc/html/classutl_1_1spi__i_3_01virtual__tag_01_4.js @@ -0,0 +1,17 @@ +var classutl_1_1spi__i_3_01virtual__tag_01_4 = +[ + [ "type", "classutl_1_1spi__i_3_01virtual__tag_01_4.html#ab539774624977f1f86b98269d01d56ba", null ], + [ "spi_i", "classutl_1_1spi__i_3_01virtual__tag_01_4.html#a954d8294026bf4628771e588e8a0eb5e", null ], + [ "spi_i", "classutl_1_1spi__i_3_01virtual__tag_01_4.html#a142e481dff89219cab72ec444fc069db", null ], + [ "~spi_i", "classutl_1_1spi__i_3_01virtual__tag_01_4.html#a7149ebd15799723fe3d2a97566608a19", null ], + [ "_clock", "classutl_1_1spi__i_3_01virtual__tag_01_4.html#a22c698e49599e92b8cb81501ab02be29", null ], + [ "_clock", "classutl_1_1spi__i_3_01virtual__tag_01_4.html#a2d4ffbfc2768077a6046f64288db83b4", null ], + [ "_tx_data", "classutl_1_1spi__i_3_01virtual__tag_01_4.html#a695bdae103b072a03e7ffc0fda2f5971", null ], + [ "clock", "classutl_1_1spi__i_3_01virtual__tag_01_4.html#a92a9350f72d3fca45b0900bf2bf5e8d9", null ], + [ "clock", "classutl_1_1spi__i_3_01virtual__tag_01_4.html#af168fba0d949aade779a63abf9f4bad2", null ], + [ "operator=", "classutl_1_1spi__i_3_01virtual__tag_01_4.html#aa24dd9ed5e342ab0f27b4ef296516e5b", null ], + [ "rx_data", "classutl_1_1spi__i_3_01virtual__tag_01_4.html#a8ccd44f6fa97bbfe8cda5595436eb3a7", null ], + [ "rx_data", "classutl_1_1spi__i_3_01virtual__tag_01_4.html#a59245cc0d924d160268b6813975a7c5f", null ], + [ "tx_data", "classutl_1_1spi__i_3_01virtual__tag_01_4.html#ac7b587521c1fdc83d32164dcee3c7b40", null ], + [ "tx_data", "classutl_1_1spi__i_3_01virtual__tag_01_4.html#a2777c812eb27d7b3d106c55b31819d10", null ] +]; \ No newline at end of file diff --git a/doc/html/classutl_1_1spi__i_3_01virtual__tag_01_4.png b/doc/html/classutl_1_1spi__i_3_01virtual__tag_01_4.png new file mode 100644 index 0000000000000000000000000000000000000000..8d2baffacfaadaee8138cd731809723975db2538 GIT binary patch literal 992 zcmeAS@N?(olHy`uVBq!ia0y~yU^E1>12~w0q+7}+K_Dd&;1lBd|Nnm=^TnI5rTvE{ z09jys;J^Xa&O7ozE=Ng_UoZnu5eQs86=KA|z?|>t;uuoF_;&8YNuP9h-1zy8@BLS; z&&pPG(EfOLS6yD2P4-fUhbAiZo|;P)mQGPqWMp9oZZTxwPvkk^EW!Li;249=ocuRd z|9=QB{raP>{QFIZhR;7-lNpTv$R=;^Tz`4_FTv~b-j6RHyFUB&kJKjXvIl>kUn-mZ z$@ZV0x!a=OIpN1{Z2EjG;$_x;pFh(w-?}i^pWEFdY1-U-{q~l+SEnx?Sa^M zY@4?JYrUxF`K;9JoY^V5d(5U?i~7a8RVd*^r2il0V|kvx=WS=S`NDkr41WP%yl}Gq zO!g0-q>nND+mGhGnBJvRf+hrc6*JVRh&M1KOfq15@Sun@mEki`A$xe@LY{fhKVp(Cpa1EMDLVI4SkXI3!4nt>o}UDcsho6{n5@E|=rhS? z%dty;l|6ZvmhRnjw~xKFeD_V2mCCXIudQEt`|%?ADWFzcKGv z`dvP8!_+s5>626R`*ww`yY%AjwBLWFXP9p5+4pl@+2@R$ZxP%3<%9Pg`Mu=ynrx9P zci-E~PfRus|8*nWvSOumEPwCJv+KC;UfXcAX#IM_WlP>|jt!Ob-W~b**#@()W4HA; z|2KNhFa6qS)2pOsIp4o#Y?8ihoTkI`E#mFwygP4`ck_pQ7rte&hWYb_h`HytIbNG_ zGFk1I+iSDuZ)a{Sl1cBm`6p8LaGKz0%bbww`eiZ}laKwHemCvgUy0RX+4mL2=e=K_7M+TiKeyfRTH2cW6Un}@uZ@oQ$Yp=NUb6O!#Okc4V)4zvmZy@l zr$+n_cl;c*HmCQd)|G3Iw`PQjZe21b@bH5xCcMnas-4qq!h#NMd$cUfYtmAQ$x8$m z2Tm&CI?OO>iQ&Ahf3Mid9P|2{sqKGT!}I(L_A>UcNqj$f6XivL>1X1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/doc/html/concepts_8h.html b/doc/html/concepts_8h.html new file mode 100644 index 0000000..66494ef --- /dev/null +++ b/doc/html/concepts_8h.html @@ -0,0 +1,147 @@ + + + + + + + +uTL: include/utl/concepts/concepts.h File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
concepts.h File Reference
+
+
+ +

Concepts main include header. +More...

+ +

Go to the source code of this file.

+ + + + +

+Macros

#define __utl_consepts_concepts_h__
 
+

Detailed Description

+

Concepts main include header.

+

Copyright (C) 2018-2019 Christos Choutouridis

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

+

You should have received a copy of the GNU Lesser General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file concepts.h.

+

Macro Definition Documentation

+ +

◆ __utl_consepts_concepts_h__

+ +
+
+ + + + +
#define __utl_consepts_concepts_h__
+
+ +

Definition at line 22 of file concepts.h.

+ +
+
+
+
+ + + + diff --git a/doc/html/concepts_8h.js b/doc/html/concepts_8h.js new file mode 100644 index 0000000..ba4088c --- /dev/null +++ b/doc/html/concepts_8h.js @@ -0,0 +1,4 @@ +var concepts_8h = +[ + [ "__utl_consepts_concepts_h__", "concepts_8h.html#a3488adf4d9de8aadb0085e63c5bcc471", null ] +]; \ No newline at end of file diff --git a/doc/html/concepts_8h_source.html b/doc/html/concepts_8h_source.html new file mode 100644 index 0000000..327ca23 --- /dev/null +++ b/doc/html/concepts_8h_source.html @@ -0,0 +1,109 @@ + + + + + + + +uTL: include/utl/concepts/concepts.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
concepts.h
+
+
+Go to the documentation of this file.
1 
21 #ifndef __utl_concepts_concepts_h__
22 #define __utl_consepts_concepts_h__
23 
24 #include <utl/core/impl.h>
25 
26 #include <utl/concepts/defines.h>
27 #include <utl/concepts/stl.h>
28 #include <utl/concepts/iterators.h>
29 
34 #endif /* __utl_concepts_concepts_h__ */
STL&#39;s Concepts.
+ +
Concepts defines.
+
Implementation detail main forward header.
+
+
+ + + + diff --git a/doc/html/crtp_8h.html b/doc/html/crtp_8h.html new file mode 100644 index 0000000..6185298 --- /dev/null +++ b/doc/html/crtp_8h.html @@ -0,0 +1,154 @@ + + + + + + + +uTL: include/utl/core/crtp.h File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
crtp.h File Reference
+
+
+
#include <utl/core/impl.h>
+
+

Go to the source code of this file.

+ + + + + + + + +

+Classes

struct  utl::crtp_tag
 CRTP support tag type. More...
 
struct  utl::virtual_tag
 virtual support tag type More...
 
+ + + + +

+Namespaces

 utl
 STL's core language concepts.
 
+ + + +

+Macros

#define _CRTP_IMPL(T)
 
+

Macro Definition Documentation

+ +

◆ _CRTP_IMPL

+ +
+
+ + + + + + + + +
#define _CRTP_IMPL( T)
+
+Value:
constexpr T& impl() { return *static_cast<T*>(this); } \
constexpr const T& impl() const { return *static_cast<const T*>(this); }
+

Definition at line 43 of file crtp.h.

+ +
+
+
+
+ + + + diff --git a/doc/html/crtp_8h.js b/doc/html/crtp_8h.js new file mode 100644 index 0000000..74f98b6 --- /dev/null +++ b/doc/html/crtp_8h.js @@ -0,0 +1,6 @@ +var crtp_8h = +[ + [ "crtp_tag", "structutl_1_1crtp__tag.html", null ], + [ "virtual_tag", "structutl_1_1virtual__tag.html", null ], + [ "_CRTP_IMPL", "crtp_8h.html#a716d91dbf95e7d113f133e1f3e6da852", null ] +]; \ No newline at end of file diff --git a/doc/html/crtp_8h_source.html b/doc/html/crtp_8h_source.html new file mode 100644 index 0000000..3168325 --- /dev/null +++ b/doc/html/crtp_8h_source.html @@ -0,0 +1,109 @@ + + + + + + + +uTL: include/utl/core/crtp.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
crtp.h
+
+
+Go to the documentation of this file.
1 
21 #ifndef __utl_impl_crtp_h__
22 #define __utl_impl_crtp_h__
23 
24 #include <utl/core/impl.h>
25 
35 namespace utl {
38  struct crtp_tag { };
40  struct virtual_tag { };
41 
43  #define _CRTP_IMPL(T) \
44  constexpr T& impl() { return *static_cast<T*>(this); } \
45  constexpr const T& impl() const { return *static_cast<const T*>(this); }
46 
47 }
49 #endif /* __utl_impl_crtp_h__ */
CRTP support tag type.
Definition: crtp.h:38
+
STL&#39;s core language concepts.
Definition: _1wire.h:30
+
virtual support tag type
Definition: crtp.h:40
+
Implementation detail main forward header.
+
+
+ + + + diff --git a/doc/html/defines_8h.html b/doc/html/defines_8h.html new file mode 100644 index 0000000..fbc3a1f --- /dev/null +++ b/doc/html/defines_8h.html @@ -0,0 +1,131 @@ + + + + + + + +uTL: include/utl/concepts/defines.h File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
defines.h File Reference
+
+
+ +

Concepts defines. +More...

+ +

Go to the source code of this file.

+ + + + + + + + + +

+Macros

#define utlConstrainType(_Concept_)   typename
 
#define _utlConcept   constexpr bool
 utl concept keyword syntax wrapper More...
 
#define CXX_LIB_INVOKE   0
 
+

Detailed Description

+

Concepts defines.

+

Copyright (C) 2018-2019 Christos Choutouridis

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

+

You should have received a copy of the GNU Lesser General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file defines.h.

+
+
+ + + + diff --git a/doc/html/defines_8h.js b/doc/html/defines_8h.js new file mode 100644 index 0000000..b47ec8c --- /dev/null +++ b/doc/html/defines_8h.js @@ -0,0 +1,6 @@ +var defines_8h = +[ + [ "_utlConcept", "group__concepts.html#gaf81026787698cd63592563ab8223062b", null ], + [ "CXX_LIB_INVOKE", "group__concepts.html#gae575ec6bb237dd55f86ef2827c63d784", null ], + [ "utlConstrainType", "group__concepts.html#ga5d7d78bf161dcc8fb920fb522dc6f216", null ] +]; \ No newline at end of file diff --git a/doc/html/defines_8h_source.html b/doc/html/defines_8h_source.html new file mode 100644 index 0000000..88cd964 --- /dev/null +++ b/doc/html/defines_8h_source.html @@ -0,0 +1,105 @@ + + + + + + + +uTL: include/utl/concepts/defines.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
defines.h
+
+
+Go to the documentation of this file.
1 
21 #ifndef __utl_concepts_defines_h__
22 #define __utl_concepts_defines_h__
23 
26 
40 #if CXX_CONCEPTS
41  #define utlConstrainType(_Concept_) _Concept_
42 #else
43  #define utlConstrainType(_Concept_) typename
44 #endif
45 
49 #if CXX_CONCEPTS
50  #if __cpp_concepts <= 201507L
51  #define _utlConcept concept bool
52  #else
53  #define _utlConcept concept
54  #endif
55 #else
56  #define _utlConcept constexpr bool
57 #endif
58 
59 #ifndef CXX_LIB_INVOKE
60  #ifdef __cpp_lib_invoke
61  #define CXX_LIB_INVOKE __cpp_lib_invoke
62  #else
63  #define CXX_LIB_INVOKE 0
64  #endif
65 #endif
66 
68 
69 #endif /* __utl_concepts_defines_h__ */
+
+ + + + diff --git a/doc/html/detection_8h.html b/doc/html/detection_8h.html new file mode 100644 index 0000000..c2fbdbb --- /dev/null +++ b/doc/html/detection_8h.html @@ -0,0 +1,187 @@ + + + + + + + +uTL: include/utl/meta/detection.h File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
detection.h File Reference
+
+
+ +

Detection idiom based on WG21's N4502 [n4502 1] from Walter E. Brown. +More...

+
#include <utl/core/impl.h>
+#include <utl/meta/operations.h>
+#include <type_traits>
+
+

Go to the source code of this file.

+ + + + + + + + +

+Classes

struct  utl::meta::nat_
 
struct  utl::meta::detail::detector< Default, AlwaysVoid, Op, Args >
 
struct  utl::meta::detail::detector< Default, void_t< Op< Args... > >, Op, Args... >
 
+ + + + + + + + +

+Namespaces

 utl
 STL's core language concepts.
 
 utl::meta
 
 utl::meta::detail
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

template<typename... >
using utl::meta::void_ = void
 void_ type alias More...
 
template<typename... >
using utl::meta::void_t = void
 void_t type alias More...
 
template<typename Default , template< typename... > class Op, typename... Args>
using utl::meta::detail::detected_or = detector< Default, void, Op, Args... >
 helper for detected_or_t More...
 
template<template< typename... > class Op, typename... Args>
using utl::meta::is_detected = typename detail::detector< nat_, void, Op, Args... >::detected
 
template<template< typename... > class Op, typename... Args>
using utl::meta::detected_t = eval< detail::detector< nat_, void, Op, Args... > >
 
template<typename Default , template< typename... > class Op, typename... Args>
using utl::meta::detected_or_t = eval< detail::detected_or< Default, Op, Args... > >
 
template<typename Expected , template< typename... > class Op, typename... Args>
using utl::meta::is_detected_exact = eval< same_< Expected, detected_t< Op, Args... > > >
 
template<typename To , template< typename... > class Op, typename... Args>
using utl::meta::is_detected_convertible = eval< std::is_convertible< detected_t< Op, Args... >, To > >
 
template<template< typename... > class Op, typename... Args>
constexpr bool utl::meta::is_detected_v = is_detected<Op, Args...>::value
 Detection predicate. More...
 
template<typename Expected , template< typename... > class Op, typename... Args>
constexpr bool utl::meta::is_detected_exact_v = is_detected_exact< Expected, Op, Args...>::value
 evaluates to true if evaluation of Op<Args...> is Expected and to false if not More...
 
template<typename To , template< typename... > class Op, typename... Args>
constexpr bool utl::meta::is_detected_convertible_v
 
+

Detailed Description

+

Detection idiom based on WG21's N4502 [n4502 1] from Walter E. Brown.

+

[1]: www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4502.pdf

+

Copyright (C) 2018-2019 Christos Choutouridis

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

+

You should have received a copy of the GNU Lesser General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file detection.h.

+
+
+ + + + diff --git a/doc/html/detection_8h.js b/doc/html/detection_8h.js new file mode 100644 index 0000000..69e52a0 --- /dev/null +++ b/doc/html/detection_8h.js @@ -0,0 +1,17 @@ +var detection_8h = +[ + [ "nat_", "structutl_1_1meta_1_1nat__.html", "structutl_1_1meta_1_1nat__" ], + [ "detector", "structutl_1_1meta_1_1detail_1_1detector.html", "structutl_1_1meta_1_1detail_1_1detector" ], + [ "detector< Default, void_t< Op< Args... > >, Op, Args... >", "structutl_1_1meta_1_1detail_1_1detector_3_01_default_00_01void__t_3_01_op_3_01_args_8_8_8_01_4_0c35bdbd19f56980c0b5ee6d490bfb634.html", "structutl_1_1meta_1_1detail_1_1detector_3_01_default_00_01void__t_3_01_op_3_01_args_8_8_8_01_4_0c35bdbd19f56980c0b5ee6d490bfb634" ], + [ "detected_or", "detection_8h.html#a835827cb3116483228d6f7f774b68970", null ], + [ "detected_or_t", "detection_8h.html#a8fd055bc6c6c3b1d551e9605aa35644c", null ], + [ "detected_t", "detection_8h.html#aa654a286b3bc8e6d8116ee1f57087110", null ], + [ "is_detected", "detection_8h.html#a5329219a9d2f195421a78d8e07873507", null ], + [ "is_detected_convertible", "detection_8h.html#afa24702fa15a1d0a8a05761c54b79def", null ], + [ "is_detected_exact", "detection_8h.html#ad5224ef66e8f40efaaf3ad3d605dd629", null ], + [ "void_", "detection_8h.html#gac16d50de47cf57734433e9ea636522c5", null ], + [ "void_t", "detection_8h.html#gae7373c997420d16cf37e542eb3cfa3ad", null ], + [ "is_detected_convertible_v", "detection_8h.html#acba521b528e775be4b37d2e481e0f138", null ], + [ "is_detected_exact_v", "detection_8h.html#a960827a1d72083a511f8ea4ccc8beceb", null ], + [ "is_detected_v", "detection_8h.html#a4f3184ccb8e8ba2a78e2d2e83a0b9885", null ] +]; \ No newline at end of file diff --git a/doc/html/detection_8h_source.html b/doc/html/detection_8h_source.html new file mode 100644 index 0000000..3a3ffd7 --- /dev/null +++ b/doc/html/detection_8h_source.html @@ -0,0 +1,128 @@ + + + + + + + +uTL: include/utl/meta/detection.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
detection.h
+
+
+Go to the documentation of this file.
1 
22 #ifndef __utl_meta_detection_h__
23 #define __utl_meta_detection_h__
24 
25 #include <utl/core/impl.h>
26 #include <utl/meta/operations.h>
27 #include <type_traits>
28 
34 
36 namespace utl {
37 namespace meta {
38 
42  #if defined(UTL_WORKAROUND_CWG_1558)
44  template<typename... _Ts>
45  struct void_ {
46  using type = void;
47  };
49  template<typename... _Ts>
50  using void_t = eval<void_<_Ts...>>;
51  #else
52  template <typename...> using void_ = void;
55  template <typename...> using void_t = void;
56  #endif
57 
63  struct nat_ {
64  nat_() = delete;
65  ~nat_() = delete;
66  nat_(nat_ const&) = delete;
67  void operator = (nat_ const&) = delete;
68  };
69 
72  namespace detail {
73  template <typename Default,
74  typename AlwaysVoid,
75  template<typename...> class Op, typename... Args>
76  struct detector {
77  using detected = false_;
78  using type = Default;
79  };
80 
81  template <typename Default,
82  template<typename...> class Op, typename... Args>
83  struct detector <Default, void_t<Op<Args...>>, Op, Args...> {
84  using detected = true_;
85  using type = Op<Args...>;
86  };
87 
89  template <typename Default,
90  template<typename...> class Op, typename... Args>
91  using detected_or = detector<Default, void, Op, Args...>;
92  } // namespace detail
94 
98 
117  template <template<typename...> class Op, typename... Args>
118  using is_detected = typename detail::detector<nat_, void, Op, Args...>::detected;
119 
121  template< template<typename...> class Op, typename... Args>
122  constexpr bool is_detected_v = is_detected<Op, Args...>::value;
123 
143  template <template<typename...> class Op, typename... Args>
144  using detected_t = eval <
145  detail::detector<nat_, void, Op, Args...>
146  >;
147 
168  template <typename Default,
169  template<typename...> class Op, typename... Args>
170  using detected_or_t = eval <
171  detail::detected_or<Default, Op, Args...>
172  >;
173 
195  template <typename Expected,
196  template<typename...> class Op, typename... Args >
197  using is_detected_exact = eval <
198  same_<Expected, detected_t<Op, Args...>>
199  >;
200 
202  template <typename Expected,
203  template<typename...> class Op, typename... Args >
204  constexpr bool is_detected_exact_v = is_detected_exact< Expected, Op, Args...>::value;
205 
227  template <typename To,
228  template<typename...> class Op, typename... Args >
229  using is_detected_convertible = eval <
230  std::is_convertible< detected_t<Op, Args...>, To >
231  >;
232 
235  template <typename To,
236  template<typename...> class Op, typename... Args >
237  constexpr bool is_detected_convertible_v =
238  is_detected_convertible<To, Op, Args...>::value;
240 
241 }}
243 
244 #endif /* __utl_meta_detection_h__ */
void void_t
void_t type alias
Definition: detection.h:55
+
constexpr bool is_detected_exact_v
evaluates to true if evaluation of Op<Args...> is Expected and to false if not
Definition: detection.h:204
+
bool_< true > true_
The type used as a compile-time boolean with true value.
Definition: integral.h:68
+
eval< std::is_convertible< detected_t< Op, Args... >, To > > is_detected_convertible
Definition: detection.h:231
+
Integral constant operations and logical operations.
+
void void_
void_ type alias
Definition: detection.h:53
+ + + +
bool_< false > false_
The type used as a compile-time boolean with false value.
Definition: integral.h:69
+
typename Tp::type eval
Type alias for Tp::type. Used to evaluate/extract return type of metafunctions.
Definition: integral.h:49
+
constexpr bool is_detected_convertible_v
Definition: detection.h:237
+
STL&#39;s core language concepts.
Definition: _1wire.h:30
+
eval< detail::detector< nat_, void, Op, Args... > > detected_t
Definition: detection.h:146
+ + + + +
eval< same_< Expected, detected_t< Op, Args... > > > is_detected_exact
Definition: detection.h:199
+
typename detail::detector< nat_, void, Op, Args... >::detected is_detected
Definition: detection.h:118
+
constexpr bool is_detected_v
Detection predicate.
Definition: detection.h:122
+
Implementation detail main forward header.
+
eval< detail::detected_or< Default, Op, Args... > > detected_or_t
Definition: detection.h:172
+
+
+ + + + diff --git a/doc/html/dev__iterators_8h.html b/doc/html/dev__iterators_8h.html new file mode 100644 index 0000000..512d28c --- /dev/null +++ b/doc/html/dev__iterators_8h.html @@ -0,0 +1,261 @@ + + + + + + + +uTL: include/utl/dev/dev_iterators.h File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
dev_iterators.h File Reference
+
+
+ +

Iterator collection for devices. +More...

+
#include <utl/core/impl.h>
+#include <utl/meta/meta.h>
+
+

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Classes

struct  utl::dev_iterator_traits< _Cat, _Tp, _Diff >
 Device iterator collection. More...
 
struct  utl::output_iterator_tag
 Iterator tags [std.iterator.tags] Extension: contiguous_iterator_tag for denoting contiguous iterators. More...
 
struct  utl::input_iterator_tag
 
struct  utl::forward_iterator_tag
 
struct  utl::bidirectional_iterator_tag
 
struct  utl::random_access_iterator_tag
 
struct  utl::contiguous_iterator_tag
 
class  utl::ostreamdev_it< cont_t, data_t >
 
class  utl::istreamdev_it< cont_t, data_t >
 
class  utl::outdev_it< cont_t, iter_t, _beg, _end >
 Output device iterator type. We "future call" interface methods from owner class to provide iterator functionality. More...
 
struct  utl::outdev_it_details::is_outdev_it_< _Tp, typename >
 Primary template to catch any non SPI interface types. More...
 
struct  utl::outdev_it_details::is_outdev_it_< _Tp, meta::void_t< typename _Tp::value_type, typename _Tp::difference_type, typename _Tp::pointer, typename _Tp::reference, void > >
 template to catch a proper SPI interface type More...
 
class  utl::indev_it< cont_t, iter_t, _beg, _size >
 Input device iterator type. We "future call" interface methods from owner class to provide iterator functionality. More...
 
struct  utl::indev_it_details::is_indev_it_< _Tp, typename >
 Primary template to catch any non SPI interface types. More...
 
struct  utl::indev_it_details::is_indev_it_< _Tp, meta::void_t< typename _Tp::value_type, typename _Tp::difference_type, typename _Tp::pointer, typename _Tp::reference, void > >
 template to catch a proper SPI interface type More...
 
class  utl::iodev_it< cont_t, iter_t, _beg, _size >
 Indexed device iterator type. We "future call" interface methods from owner class to provide iterator functionality. More...
 
struct  utl::iodev_it< cont_t, iter_t, _beg, _size >::value_type_t
 
struct  utl::idxdev_it_details::is_idxdev_it_< _Tp, typename >
 Primary template to catch any non SPI interface types. More...
 
struct  utl::idxdev_it_details::is_idxdev_it_< _Tp, meta::void_t< typename _Tp::value_type, typename _Tp::difference_type, typename _Tp::pointer, typename _Tp::reference, void > >
 template to catch a proper SPI interface type More...
 
+ + + + + + + + + + +

+Namespaces

 utl
 STL's core language concepts.
 
 utl::outdev_it_details
 
 utl::indev_it_details
 
 utl::idxdev_it_details
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

template<typename _C1 , typename _D1 , typename _C2 , typename _D2 >
bool utl::operator== (const istreamdev_it< _C1, _D1 > &lhs, const istreamdev_it< _C2, _D2 > &rhs) noexcept
 Equality comparison template so that comparison between cv-qualified and non-cv-qualified iterators be valid. More...
 
template<typename _C1 , typename _D1 , typename _C2 , typename _D2 >
bool utl::operator!= (const istreamdev_it< _C1, _D1 > &lhs, const istreamdev_it< _C2, _D2 > &rhs) noexcept
 
template<typename _Cont1 , typename _It1 , index_t _beg1, index_t _end1, typename _Cont2 , typename _It2 , index_t _beg2, index_t _end2>
bool utl::operator== (const outdev_it< _Cont1, _It1, _beg1, _end1 > &lhs, const outdev_it< _Cont2, _It2, _beg2, _end2 > &rhs) noexcept
 Equality comparison template so that comparison between cv-qualified and non-cv-qualified iterators be valid. More...
 
template<typename _Cont1 , typename _It1 , index_t _beg1, index_t _end1, typename _Cont2 , typename _It2 , index_t _beg2, index_t _end2>
bool utl::operator!= (const outdev_it< _Cont1, _It1, _beg1, _end1 > &lhs, const outdev_it< _Cont2, _It2, _beg2, _end2 > &rhs) noexcept
 Inequality comparison template so that comparison between cv-qualified and non-cv-qualified iterators be valid. More...
 
indev_it EqualityComparable && LessThanComparable requirements

comparison template so that comparison between cv-qualified and non-cv-qualified iterators be valid

+
template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
bool utl::operator== (const indev_it< _Cont1, _It1, _beg1, _size1 > &x, const indev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept
 
template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
bool utl::operator< (const indev_it< _Cont1, _It1, _beg1, _size1 > &x, const indev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept
 Less than. More...
 
template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
bool utl::operator!= (const indev_it< _Cont1, _It1, _beg1, _size1 > &x, const indev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept
 
template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
bool utl::operator<= (const indev_it< _Cont1, _It1, _beg1, _size1 > &x, const indev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept
 
template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
bool utl::operator> (const indev_it< _Cont1, _It1, _beg1, _size1 > &x, const indev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept
 
template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
bool utl::operator>= (const indev_it< _Cont1, _It1, _beg1, _size1 > &x, const indev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept
 
template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
bool utl::operator== (const iodev_it< _Cont1, _It1, _beg1, _size1 > &x, const iodev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept
 
template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
bool utl::operator< (const iodev_it< _Cont1, _It1, _beg1, _size1 > &x, const iodev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept
 Less than. More...
 
template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
bool utl::operator!= (const iodev_it< _Cont1, _It1, _beg1, _size1 > &x, const iodev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept
 
template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
bool utl::operator<= (const iodev_it< _Cont1, _It1, _beg1, _size1 > &x, const iodev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept
 
template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
bool utl::operator> (const iodev_it< _Cont1, _It1, _beg1, _size1 > &x, const iodev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept
 
template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
bool utl::operator>= (const iodev_it< _Cont1, _It1, _beg1, _size1 > &x, const iodev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept
 
iterator arithmetic
template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
auto utl::operator- (indev_it< _Cont1, _It1, _beg1, _size1 > &x, indev_it< _Cont1, _It1, _beg1, _size1 > &y) noexcept -> decltype(x.cursor() - y.cursor())
 
template<typename _Cont , typename _It , index_t _beg, size_t _size>
indev_it< _Cont, _It, _beg, _size > utl::operator+ (typename _Cont::difference_type n, indev_it< _Cont, _It, _beg, _size > &it) noexcept
 
template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
auto utl::operator- (iodev_it< _Cont1, _It1, _beg1, _size1 > &x, iodev_it< _Cont1, _It1, _beg1, _size1 > &y) noexcept -> decltype(x.cursor() - y.cursor())
 
template<typename _Cont , typename _It , index_t _beg, size_t _size>
iodev_it< _Cont, _It, _beg, _size > utl::operator+ (typename _Cont::difference_type n, iodev_it< _Cont, _It, _beg, _size > &it) noexcept
 
+

Detailed Description

+

Iterator collection for devices.

+

Copyright (C) 2018 Christos Choutouridis

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

+

You should have received a copy of the GNU Lesser General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file dev_iterators.h.

+
+
+ + + + diff --git a/doc/html/dev__iterators_8h.js b/doc/html/dev__iterators_8h.js new file mode 100644 index 0000000..9895006 --- /dev/null +++ b/doc/html/dev__iterators_8h.js @@ -0,0 +1,42 @@ +var dev__iterators_8h = +[ + [ "dev_iterator_traits", "structutl_1_1dev__iterator__traits.html", "structutl_1_1dev__iterator__traits" ], + [ "output_iterator_tag", "structutl_1_1output__iterator__tag.html", null ], + [ "input_iterator_tag", "structutl_1_1input__iterator__tag.html", null ], + [ "forward_iterator_tag", "structutl_1_1forward__iterator__tag.html", null ], + [ "bidirectional_iterator_tag", "structutl_1_1bidirectional__iterator__tag.html", null ], + [ "random_access_iterator_tag", "structutl_1_1random__access__iterator__tag.html", null ], + [ "contiguous_iterator_tag", "structutl_1_1contiguous__iterator__tag.html", null ], + [ "ostreamdev_it", "classutl_1_1ostreamdev__it.html", "classutl_1_1ostreamdev__it" ], + [ "istreamdev_it", "classutl_1_1istreamdev__it.html", "classutl_1_1istreamdev__it" ], + [ "outdev_it", "classutl_1_1outdev__it.html", "classutl_1_1outdev__it" ], + [ "is_outdev_it_", "structutl_1_1outdev__it__details_1_1is__outdev__it__.html", null ], + [ "is_outdev_it_< _Tp, meta::void_t< typename _Tp::value_type, typename _Tp::difference_type, typename _Tp::pointer, typename _Tp::reference, void > >", "structutl_1_1outdev__it__details_1_1is__outdev__it___3_01___tp_00_01meta_1_1void__t_3_01typename8786ebbbd0dc9ca1b14571e779d99d60.html", null ], + [ "indev_it", "classutl_1_1indev__it.html", "classutl_1_1indev__it" ], + [ "is_indev_it_", "structutl_1_1indev__it__details_1_1is__indev__it__.html", null ], + [ "is_indev_it_< _Tp, meta::void_t< typename _Tp::value_type, typename _Tp::difference_type, typename _Tp::pointer, typename _Tp::reference, void > >", "structutl_1_1indev__it__details_1_1is__indev__it___3_01___tp_00_01meta_1_1void__t_3_01typename_06508604dcee4010234c84cc332fa196b.html", null ], + [ "iodev_it", "classutl_1_1iodev__it.html", "classutl_1_1iodev__it" ], + [ "value_type_t", "structutl_1_1iodev__it_1_1value__type__t.html", "structutl_1_1iodev__it_1_1value__type__t" ], + [ "is_idxdev_it_", "structutl_1_1idxdev__it__details_1_1is__idxdev__it__.html", null ], + [ "is_idxdev_it_< _Tp, meta::void_t< typename _Tp::value_type, typename _Tp::difference_type, typename _Tp::pointer, typename _Tp::reference, void > >", "structutl_1_1idxdev__it__details_1_1is__idxdev__it___3_01___tp_00_01meta_1_1void__t_3_01typenamebd9ada52ca7b7570c26d0c280af5e635.html", null ], + [ "operator!=", "dev__iterators_8h.html#aa7a25ea4d2598ec5db5b37bfaaf55ec3", null ], + [ "operator!=", "dev__iterators_8h.html#ada8975062732a20074909f8a3f609538", null ], + [ "operator!=", "dev__iterators_8h.html#a15d049c37bf09ffb29f2a0c0070bf89c", null ], + [ "operator!=", "dev__iterators_8h.html#a388830b63c30f5ee32a3e2a761c703c8", null ], + [ "operator+", "dev__iterators_8h.html#a69289a7a150563ce48244d7f39b33dbb", null ], + [ "operator+", "dev__iterators_8h.html#a829bc4894560bf7e0a6fd829ac9d3c10", null ], + [ "operator-", "dev__iterators_8h.html#aae4b45dc79b7d9b85e0bf83278f88508", null ], + [ "operator-", "dev__iterators_8h.html#a191590b661dc64e2fd487adb6b5e8889", null ], + [ "operator<", "dev__iterators_8h.html#aac9f2116bf5b1463391b2a5ec437ef1d", null ], + [ "operator<", "dev__iterators_8h.html#aacd0760a2943441abcc86ef9d825c8b0", null ], + [ "operator<=", "dev__iterators_8h.html#a93043b2e245bb724c9c2e89577222532", null ], + [ "operator<=", "dev__iterators_8h.html#aa369d59a59c21d50b371b5db6195b043", null ], + [ "operator==", "dev__iterators_8h.html#a5ba78d196f9abb63a1d2fff13cabe636", null ], + [ "operator==", "dev__iterators_8h.html#a6726b451c897c4581e8781a819c025ba", null ], + [ "operator==", "dev__iterators_8h.html#aa30fa8ed97138ea75003069144f78e97", null ], + [ "operator==", "dev__iterators_8h.html#a7ad3384389159ce575279712fb92e3c6", null ], + [ "operator>", "dev__iterators_8h.html#a254af18987f59f185ceeaac1aaf3c1e1", null ], + [ "operator>", "dev__iterators_8h.html#a623dee5dafd7fe274dc205c3e20c96af", null ], + [ "operator>=", "dev__iterators_8h.html#abdada8bc0cbd311c4dea3dde078f5483", null ], + [ "operator>=", "dev__iterators_8h.html#a1988125a6394416aaf6ae85eaafa3ec4", null ] +]; \ No newline at end of file diff --git a/doc/html/dev__iterators_8h_source.html b/doc/html/dev__iterators_8h_source.html new file mode 100644 index 0000000..6b5a66f --- /dev/null +++ b/doc/html/dev__iterators_8h_source.html @@ -0,0 +1,251 @@ + + + + + + + +uTL: include/utl/dev/dev_iterators.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
dev_iterators.h
+
+
+Go to the documentation of this file.
1 
21 #ifndef __utl_dev_dev_iterators_h__
22 #define __utl_dev_dev_iterators_h__
23 
24 #include <utl/core/impl.h>
25 #include <utl/meta/meta.h>
26 
27 namespace utl {
28 
33 
42  template <typename _Cat, typename _Tp, typename _Diff =ptrdiff_t>
44  using iterator_category = _Cat;
45  using value_type = _Tp;
46  using difference_type = _Diff;
47  using pointer = _Tp*;
48  using reference = _Tp&;
49  };
50 
56  struct input_iterator_tag {};
61 
62 
63 
64  /*
65  * ================ Output device Iterator =================
66  */
67 
68  template <typename cont_t, typename data_t>
69  class ostreamdev_it {
71  public:
72  using type = iterator_t;
73  public:
82 
83  private:
84  cont_t* owner_ {nullptr};
93  public:
96  ostreamdev_it (cont_t* owner =nullptr) noexcept
97  : owner_ {owner} { }
99  ostreamdev_it (const iterator_t& it) noexcept
100  : owner_ {const_cast<cont_t*>(it.owner_)} { }
102  iterator_t& operator= (const iterator_t& it) noexcept {
103  owner_ = const_cast<cont_t*>(it.owner_);
104  return *this;
105  }
107 
109  public:
110  iterator_t& operator* () noexcept { return *this; }
118  if (owner_ != nullptr)
119  owner_->put (value);
120  return *this;
121  }
122  iterator_t& operator++ () noexcept { return *this; }
123  iterator_t& operator++ (int) noexcept { return *this; }
125  };
126 
127  template <typename cont_t, typename data_t>
130  public:
131  using type = iterator_t;
132  public:
142  enum Cursor {
143  init = 0,
144  valid = 1,
145  eos = 2
146  };
148  private:
149  cont_t* owner_ {nullptr};
157 
160  public:
163  istreamdev_it (cont_t* owner =nullptr, Cursor cursor =eos) noexcept :
164  owner_ {owner},
165  value_ {},
166  cursor_{cursor} { }
168  istreamdev_it (const iterator_t& it) noexcept :
169  owner_ {const_cast<cont_t*>(it.owner_)},
170  value_ {it.value_},
171  cursor_ {it.cursor_} { }
173  iterator_t& operator= (const iterator_t& it) noexcept {
174  owner_ = const_cast<cont_t*>(it.owner_);
175  value_ = it.value_;
176  cursor_ = it.cursor_;
177  return *this;
178  }
180 
182  public:
183  value_type& operator* () noexcept {
184  if (cursor_ == init)
185  ++*this;
186  return value_;
187  }
188  value_type* operator->() noexcept {
189  if (cursor_ == init)
190  ++*this;
191  return &value_;
192  }
193  iterator_t& operator++ () noexcept {
194  _get(value_);
195  return *this;
196  }
197  iterator_t operator++ (int) noexcept {
198  iterator_t r = *this;
199  _get(value_);
200  return r;
201  }
202 
204  const cont_t* owner () const noexcept { return owner_; }
206  const value_type& value () const noexcept { return value_; }
208  const Cursor cursor () const noexcept { return cursor_; }
210 
212  private:
213  void _get(value_type& v) {
214  owner_->get(v);
215  cursor_ = (v) ? valid : eos;
216  }
218  };
219 
228  template<typename _C1, typename _D1, typename _C2, typename _D2>
229  inline bool operator== (const istreamdev_it<_C1, _D1>& lhs,
230  const istreamdev_it<_C2, _D2>& rhs) noexcept {
231  return ((lhs.owner() == rhs.owner()) &&
232  (lhs.value() == rhs.value()) &&
233  (lhs.cursor() == rhs.cursor()));
234  }
235  template<typename _C1, typename _D1, typename _C2, typename _D2>
236  inline bool operator!= (const istreamdev_it<_C1, _D1>& lhs,
237  const istreamdev_it<_C2, _D2>& rhs) noexcept {
238  return !operator==(lhs, rhs);
239  }
240 
249  template<typename cont_t, typename iter_t, index_t _beg =0, index_t _end =static_cast<index_t>(-1)>
250  class outdev_it {
253  public:
254  using type = iterator_t;
255  public:
265  enum Cursor {
266  beg = _beg,
267  eod = _end,
268  };
269  private:
270  cont_t* owner_ {nullptr};
277 
280  public:
283  explicit outdev_it() noexcept :
284  owner_ {nullptr},
285  cursor_{eod} { }
287  explicit outdev_it (cont_t* owner, index_t cursor =eod) noexcept :
288  owner_ {owner},
289  cursor_{cursor} { }
291  explicit outdev_it (const iterator_t& it) noexcept :
292  owner_ {const_cast<cont_t*>(it.owner_)},
293  cursor_{it.cursor_} { }
295  iterator_t& operator= (const iterator_t& it) noexcept {
296  owner_ = const_cast<cont_t*>(it.owner_);
297  cursor_ = it.cursor_;
298  }
301 // template<typename _It>
302 // outdev_it (const outdev_it<
303 // use_if_same_t <_It, typename container_t::pointer_type, container_t>,
304 // _It,
305 // streamsize
306 // >& it) noexcept
307 // : owner_ {const_cast<container_t*>(it.owner())},
308 // cursor_ {it.cursor()} { }
310 
311 
313  public:
314  iterator_t& operator* () noexcept { return *this; }
322  // end() and default constructible iterators are not dereferenceable
323  if (cursor_ != eod)
324  owner_->put (value, cursor_);
325  return *this;
326  }
327 
329  iterator_t& operator++ () noexcept {
330  ++cursor_;
331  return *this;
332  }
333  iterator_t operator++ (int) noexcept {
334  iterator_t ret = *this;
335  ++cursor_;
336  return ret;
337  }
339 
341  const cont_t* owner () const noexcept { return owner_; }
343  const index_t cursor () const noexcept { return cursor_; }
345  };
346 
355 
364  template<typename _Cont1, typename _It1, index_t _beg1, index_t _end1,
365  typename _Cont2, typename _It2, index_t _beg2, index_t _end2>
367  const outdev_it<_Cont2, _It2, _beg2, _end2>& rhs) noexcept {
368  return ((lhs.cursor() == rhs.cursor()) &&
369  (lhs.owner() == rhs.owner()));
370  }
371 
380  template<typename _Cont1, typename _It1, index_t _beg1, index_t _end1,
381  typename _Cont2, typename _It2, index_t _beg2, index_t _end2>
383  const outdev_it<_Cont2, _It2, _beg2, _end2>& rhs) noexcept {
384  return !(lhs == rhs);
385  }
387 
391  #if defined _utl_have_concepts
393  template <typename T>
394  concept bool Outdev_it = requires (T t) {
395  // STL compatibility
396  typename T::value_type;
397  typename T::difference_type;
398  typename T::pointer;
399  typename T::reference;
400  requires same_<
401  typename T::iterator_category,
402  std::output_iterator_tag
403  >::value;
404  {*t} -> auto&&; // is dereferencable, and return non-void
405  {++t} -> T&; // is incrementable
406  {t++} -> T;
407  // Extras
408  {t.owner()} ->auto&&;
409  {t.cursor()} -> size_t;
410  };
411  #else
412  namespace outdev_it_details {
413  using std::declval;
414 
416  template <typename _Tp, typename =void>
418 
420  template <typename _Tp>
421  struct is_outdev_it_ <
422  _Tp,
423  meta::void_t <
424  typename _Tp::value_type,
425  typename _Tp::difference_type,
426  typename _Tp::pointer,
427  typename _Tp::reference,
428 // meta::use_if_same_t <
429 // typename _Tp::iterator_category,
430 // std::output_iterator_tag
431 // >
432  void
433  >
434  > : meta::true_ {};
435  }
441 // template <typename _Tp>
442 // constexpr bool Outdev_it = outdev_it_details::is_outdev_it_<_Tp>::value;
443  #endif
444 
446 
447  /*
448  * ================ Input device Iterator =================
449  */
450 
460  template<typename cont_t, typename iter_t, index_t _beg =0, size_t _size = static_cast<size_t>(-1)-_beg>
461  class indev_it {
464  public:
465  using type = iterator_t;
466  public:
475 
477  enum Cursor {
478  beg = _beg,
479  eod = _beg + _size,
480  };
481 
482  private:
483  cont_t* owner_{nullptr};
490 
497  public:
500  indev_it () noexcept :
501  owner_ {nullptr},
502  cursor_{eod},
503  value_ {} { }
505  explicit indev_it (cont_t* own, size_t cur =eod) noexcept :
506  owner_ {own},
507  cursor_{cur},
508  value_ {} { }
510  explicit indev_it (const iterator_t& it) noexcept :
511  owner_ {const_cast<cont_t*>(it.owner_)},
512  cursor_{it.cursor_},
513  value_ {it.value_} { }
515  iterator_t& operator= (const iterator_t& it) noexcept {
516  owner_ = const_cast<cont_t*>(it.owner_);
517  cursor_ = it.cursor_;
518  value_ = it.value_;
519  }
522 // template<typename _It>
523 // indev_it (const indev_it<
524 // use_if_same_t <_It, typename container_t::pointer_type, container_t>,
525 // _It,
526 // streamsize
527 // >& it) noexcept
528 // : owner_ {const_cast<container_t*>(it.owner())},
529 // cursor_{it.cursor()},
530 // value_ {it.value()} { }
531 
533 
535  public:
538  owner_->get (value_, cursor_);
539  return value_;
540  }
543  owner_->get (value_, cursor_);
544  return &value_;
545  }
546 
549  ++cursor_;
550  return *this;
551  }
554  iterator_t ret(*this);
555  ++cursor_;
556  return *this;
557  }
558 
561  --cursor_;
562  return *this;
563  }
566  iterator_t ret(*this);
567  --cursor_;
568  return *this;
569  }
572  owner_->get (value_, cursor_ += n);
573  return value_;
574  }
575 
577  cursor_ += n;
578  return *this;
579  }
581  return iterator_t (owner_, cursor_ + n);
582  }
584  cursor_ -= n;
585  return *this;
586  }
588  return iterator_t (owner_, cursor_ - n);
589  }
591  const cont_t* owner () const noexcept { return owner_; }
593  const index_t cursor () const noexcept { return cursor_; }
595  //const reference value () const noexcept { return value_; }
597  };
598 
604  template<typename _Cont1, typename _It1, index_t _beg1, size_t _size1,
607  typename _Cont2, typename _It2, index_t _beg2, size_t _size2>
609  const indev_it<_Cont2, _It2, _beg2, _size2>& y) noexcept {
610  return (x.owner() == y.owner() &&
611  (x.cursor() == y.cursor()));
612  }
614  template<typename _Cont1, typename _It1, index_t _beg1, size_t _size1,
615  typename _Cont2, typename _It2, index_t _beg2, size_t _size2>
616  inline bool operator< (const indev_it<_Cont1, _It1, _beg1, _size1>& x,
617  const indev_it<_Cont2, _It2, _beg2, _size2>& y) noexcept {
618  return (x.cursor() < y.cursor());
619  }
620 
621  // relative ops
622  template<typename _Cont1, typename _It1, index_t _beg1, size_t _size1,
623  typename _Cont2, typename _It2, index_t _beg2, size_t _size2>
625  const indev_it<_Cont2, _It2, _beg2, _size2>& y) noexcept {
626  return !(x == y);
627  }
628  template<typename _Cont1, typename _It1, index_t _beg1, size_t _size1,
629  typename _Cont2, typename _It2, index_t _beg2, size_t _size2>
630  inline bool operator<= (const indev_it<_Cont1, _It1, _beg1, _size1>& x,
631  const indev_it<_Cont2, _It2, _beg2, _size2>& y) noexcept {
632  return !(y < x);
633  }
634  template<typename _Cont1, typename _It1, index_t _beg1, size_t _size1,
635  typename _Cont2, typename _It2, index_t _beg2, size_t _size2>
637  const indev_it<_Cont2, _It2, _beg2, _size2>& y) noexcept {
638  return (y < x);
639  }
640  template<typename _Cont1, typename _It1, index_t _beg1, size_t _size1,
641  typename _Cont2, typename _It2, index_t _beg2, size_t _size2>
643  const indev_it<_Cont2, _It2, _beg2, _size2>& y) noexcept {
644  return !(x < y);
645  }
647 
649  template<typename _Cont1, typename _It1, index_t _beg1, size_t _size1,
650  typename _Cont2, typename _It2, index_t _beg2, size_t _size2>
653  -> decltype (x.cursor() - y.cursor()) {
654  return (x.cursor() - y.cursor());
655  }
656 
657  template<typename _Cont, typename _It, index_t _beg, size_t _size>
658  inline indev_it<_Cont, _It, _beg, _size>
659  operator+ (typename _Cont::difference_type n,
660  indev_it<_Cont, _It, _beg, _size>& it) noexcept {
661  return indev_it<_Cont, _It, _beg, _size>(it.owner(), it.cursor() + n);
662  }
664 
668  #if defined _utl_have_concepts
670  template <typename T>
671  concept bool Indev_it = requires (T t, const T ct) {
672  // STL compatibility
673  typename T::value_type;
674  typename T::difference_type;
675  typename T::pointer;
676  typename T::reference;
677  requires same_ <
678  typename T::iterator_category,
679  std::input_iterator_tag
680  >::value;
681  {*t} -> typename T::value_type; // is dereferencable
682  {++t} -> T&; // is incrementable
683  {t++} -> T;
684  // Extras
685  {ct.owner()} ->auto&&;
686  {ct.cursor()} -> const size_t;
687  {ct.value()} -> auto&&;
688  };
689  #else
690  namespace indev_it_details {
691  using std::declval;
692 
694  template <typename _Tp, typename =void>
696 
698  template <typename _Tp>
699  struct is_indev_it_ <
700  _Tp,
701  meta::void_t <
702  typename _Tp::value_type,
703  typename _Tp::difference_type,
704  typename _Tp::pointer,
705  typename _Tp::reference,
706 // meta::use_if_same_t <
707 // typename _Tp::iterator_category,
708 // std::input_iterator_tag
709 // >
710  void
711  >
712  > : meta::true_ {};
713  }
719 // template <typename _Tp>
720 // constexpr bool Indev_it = indev_it_details::is_indev_it_<_Tp>::value;
721  #endif
722 
724  /*
725  * ================= Indexed device Iterator =================
726  */
727 
739  template<typename cont_t, typename iter_t, index_t _beg =0, size_t _size = static_cast<size_t>(-1)-_beg>
740  class iodev_it {
743  public:
744  using type = iterator_t;
745  public:
754 
756  enum Cursor {
757  beg = _beg,
758  eod = _beg+_size,
759  };
760 
761  private:
762  cont_t* owner_{nullptr};
768 
773  struct value_type_t {
776  v_{v} { }
777  operator value_type() { return v_; }
778  operator reference() { return v_; }
781  owner_->put (v_ =v, cursor_);
782  }
783  } value_ {};
787  public:
790  iodev_it () noexcept :
791  owner_ {nullptr},
792  cursor_{eod},
793  value_ {} { }
795  explicit iodev_it (cont_t* owner, size_t cursor =eod) noexcept :
796  owner_ {owner},
797  cursor_{cursor},
798  value_ {} { }
800  explicit iodev_it (const iterator_t& it) noexcept :
801  owner_ {const_cast<cont_t*>(it.owner_)},
802  cursor_{it.cursor_},
803  value_ {it.value_} { }
805  iterator_t& operator= (const iterator_t& it) noexcept {
806  owner_ = const_cast<cont_t*>(it.owner_);
807  cursor_ = it.cursor_;
808  value_ = it.value_;
809  }
811 
813  public:
819  reference operator* () noexcept {
820  owner_->get (value_.v_, cursor_);
821  return value_;
822  }
824  pointer operator-> () noexcept {
825  owner_->get (value_.v_, cursor_);
826  return &value_;
827  }
828 
830  iterator_t& operator++ () noexcept {
831  ++cursor_;
832  return *this;
833  }
835  iterator_t operator++ (int) noexcept {
836  iterator_t ret = *this;
837  ++cursor_;
838  return *this;
839  }
841  iterator_t& operator-- () noexcept {
842  --cursor_;
843  return *this;
844  }
846  iterator_t operator-- (int) noexcept {
847  iterator_t ret = *this;
848  --cursor_;
849  return *this;
850  }
853  owner_->get (value_.v_, cursor_ = n);
854  return value_;
855  }
858  cursor_ += n;
859  return *this;
860  }
863  return iterator_t (owner_, cursor_ + n);
864  }
867  cursor_ -= n;
868  return *this;
869  }
872  return iterator_t (owner_, cursor_ - n);
873  }
874 
876  const cont_t* owner () const noexcept { return owner_; }
878  const index_t& cursor () const noexcept { return cursor_; }
880  //const value_type_t& value () const noexcept { return value_; }
882  };
883 
889  template<typename _Cont1, typename _It1, index_t _beg1, size_t _size1,
892  typename _Cont2, typename _It2, index_t _beg2, size_t _size2>
894  const iodev_it<_Cont2, _It2, _beg2, _size2>& y) noexcept {
895  return (x.owner() == y.owner() &&
896  (x.cursor() == y.cursor()));
897  }
899  template<typename _Cont1, typename _It1, index_t _beg1, size_t _size1,
900  typename _Cont2, typename _It2, index_t _beg2, size_t _size2>
901  inline bool operator< (const iodev_it<_Cont1, _It1, _beg1, _size1>& x,
902  const iodev_it<_Cont2, _It2, _beg2, _size2>& y) noexcept {
903  return (x.cursor() < y.cursor());
904  }
905 
906  // relative ops
907  template<typename _Cont1, typename _It1, index_t _beg1, size_t _size1,
908  typename _Cont2, typename _It2, index_t _beg2, size_t _size2>
910  const iodev_it<_Cont2, _It2, _beg2, _size2>& y) noexcept {
911  return !(x == y);
912  }
913  template<typename _Cont1, typename _It1, index_t _beg1, size_t _size1,
914  typename _Cont2, typename _It2, index_t _beg2, size_t _size2>
915  inline bool operator<= (const iodev_it<_Cont1, _It1, _beg1, _size1>& x,
916  const iodev_it<_Cont2, _It2, _beg2, _size2>& y) noexcept {
917  return !(y < x);
918  }
919  template<typename _Cont1, typename _It1, index_t _beg1, size_t _size1,
920  typename _Cont2, typename _It2, index_t _beg2, size_t _size2>
922  const iodev_it<_Cont2, _It2, _beg2, _size2>& y) noexcept {
923  return (y < x);
924  }
925  template<typename _Cont1, typename _It1, index_t _beg1, size_t _size1,
926  typename _Cont2, typename _It2, index_t _beg2, size_t _size2>
928  const iodev_it<_Cont2, _It2, _beg2, _size2>& y) noexcept {
929  return !(x < y);
930  }
932 
934  template<typename _Cont1, typename _It1, index_t _beg1, size_t _size1,
935  typename _Cont2, typename _It2, index_t _beg2, size_t _size2>
938  -> decltype (x.cursor() - y.cursor()) {
939  return (x.cursor() - y.cursor());
940  }
941 
942  template<typename _Cont, typename _It, index_t _beg, size_t _size>
943  inline iodev_it<_Cont, _It, _beg, _size>
944  operator+ (typename _Cont::difference_type n,
945  iodev_it<_Cont, _It, _beg, _size>& it) noexcept {
946  return iodev_it<_Cont, _It, _beg, _size>(it.owner(), it.cursor() + n);
947  }
949 
953  #if defined _utl_have_concepts
955  template <typename T>
956  concept bool Idxdev_it = requires (T t, const T ct) {
957  // STL compatibility
958  typename T::value_type;
959  typename T::difference_type;
960  typename T::pointer;
961  typename T::reference;
962  requires same_<
963  typename T::iterator_category,
964  std::input_iterator_tag
965  >::value;
966  {*t} -> typename T::value_type; // is dereferencable
967  {++t} -> T&; // is incrementable
968  {t++} -> T;
969  // Extras
970  {ct.owner()} ->auto&&;
971  {ct.cursor()} -> const size_t;
972  {ct.value()} -> auto&&;
973  };
974  #else
975  namespace idxdev_it_details {
976  using std::declval;
977 
979  template <typename _Tp, typename =void>
981 
983  template <typename _Tp>
984  struct is_idxdev_it_ <
985  _Tp,
986  meta::void_t <
987  typename _Tp::value_type,
988  typename _Tp::difference_type,
989  typename _Tp::pointer,
990  typename _Tp::reference,
991 // meta::use_if_same_t <
992 // typename _Tp::iterator_category,
993 // std::input_iterator_tag
994 // >
995  void
996  >
997  > : meta::true_ {};
998  }
1004 // template <typename _Tp>
1005 // constexpr bool Idxdev_it = idxdev_it_details::is_idxdev_it_<_Tp>::value;
1006  #endif
1007 
1009 }
1011 #endif /* __utl_dev_dev_iterators_h__ */
iterator_t & operator++() noexcept
+
value_type value_
The current value, used as cache.
+
indev_it< cont_t, iter_t, _beg, _size > iterator_t
< iterator type local name
+
value_type v_
Current value buffer to access via get.
+
reference operator[](difference_type n)
[] operator. Is a combination of input method and dereference
+
bool operator==(const array< _Tp, _Nm > &lhs, const array< _Tp, _Nm > &rhs)
Definition: array.h:181
+ +
iterator_t & operator++() noexcept
Pre increment.
+
reference operator[](difference_type n) noexcept
Random access through iterator.
+
typename dev_iterator_traits< std::output_iterator_tag, iter_t >::pointer pointer
+
Include all meta library.
+ +
typename dev_iterator_traits< std::output_iterator_tag, data_t, void >::iterator_category iterator_category
+
void _get(value_type &v)
+
Cursor
#define-like enumerator for Cursor
+
Points one place after last item.
+ +
istreamdev_it< cont_t, data_t > iterator_t
+
Iterator tags [std.iterator.tags] Extension: contiguous_iterator_tag for denoting contiguous iterator...
Definition: dev_iterators.h:55
+
void void_t
void_t type alias
Definition: detection.h:55
+
outdev_it() noexcept
Default constructor results to end()
+
iterator_t & operator-=(difference_type n) noexcept
Random cursor decrement.
+
Indexed device iterator type. We "future call" interface methods from owner class to provide iterator...
+
Primary template to catch any non SPI interface types.
+ +
ostreamdev_it(const iterator_t &it) noexcept
Basic copy constructor.
Definition: dev_iterators.h:99
+
typename dev_iterator_traits< std::output_iterator_tag, iter_t >::reference reference
+
Cursor
#define-like enumerator for Cursor
+
iterator_t & operator=(const iterator_t &it) noexcept
Basic copy assignment operator.
+ +
bool_< true > true_
The type used as a compile-time boolean with true value.
Definition: integral.h:68
+
typename dev_iterator_traits< std::output_iterator_tag, data_t, void >::pointer pointer
Definition: dev_iterators.h:79
+ +
index_t cursor_
virtual cursor for comparison operators
+
iterator_t & operator+=(difference_type n)
+
const index_t cursor() const noexcept
Export cursor for comparison.
+
Primary template to catch any non SPI interface types.
+
typename dev_iterator_traits< std::output_iterator_tag, data_t, void >::value_type value_type
Definition: dev_iterators.h:77
+
indev_it(cont_t *own, size_t cur=eod) noexcept
Basic constructor.
+
indev_it< _Cont, _It, _beg, _size > operator+(typename _Cont::difference_type n, indev_it< _Cont, _It, _beg, _size > &it) noexcept
+
iodev_it(const iterator_t &it) noexcept
Basic copy constructor.
+
iterator_t & operator=(const iterator_t &it) noexcept
Basic copy assignment operator.
+
iterator_t & operator--()
Pre decrement.
+
iterator_t operator-(difference_type n) const noexcept
Subtraction operation.
+
value_type * operator->() noexcept
+
typename dev_iterator_traits< std::output_iterator_tag, data_t, void >::value_type value_type
+
value_type & operator=(const value_type &v)
+
Cursor
#define-like enumerator for Cursor
+ +
reference operator*() noexcept
+
typename dev_iterator_traits< std::output_iterator_tag, iter_t >::iterator_category iterator_category
+
Device iterator collection.
Definition: dev_iterators.h:43
+
typename dev_iterator_traits< std::output_iterator_tag, iter_t >::value_type value_type
+
typename dev_iterator_traits< std::output_iterator_tag, data_t, void >::difference_type difference_type
Definition: dev_iterators.h:78
+
iterator_t & operator--() noexcept
Pre decrement.
+ +
typename dev_iterator_traits< std::output_iterator_tag, iter_t >::value_type value_type
+
iterator_t operator-(difference_type n)
+ +
outdev_it(cont_t *owner, index_t cursor=eod) noexcept
Basic constructor.
+
auto operator-(indev_it< _Cont1, _It1, _beg1, _size1 > &x, indev_it< _Cont1, _It1, _beg1, _size1 > &y) noexcept -> decltype(x.cursor() - y.cursor())
+
Output device iterator type. We "future call" interface methods from owner class to provide iterator ...
+
Points the first item.
+
typename dev_iterator_traits< std::output_iterator_tag, iter_t >::iterator_category iterator_category
+
iterator_t & operator*() noexcept
+
const cont_t * owner() const noexcept
Export container for comparison.
+
iterator_t & operator-=(difference_type n)
+
cont_t * owner_
+ +
bool_< false > false_
The type used as a compile-time boolean with false value.
Definition: integral.h:69
+ +
typename dev_iterator_traits< std::output_iterator_tag, data_t, void >::pointer pointer
+
bool operator>=(const array< _Tp, _Nm > &lhs, const array< _Tp, _Nm > &rhs)
Definition: array.h:207
+
struct utl::iodev_it::value_type_t value_
+ +
iterator_t & operator=(const iterator_t &it) noexcept
Basic copy assignment operator.
+
istreamdev_it(cont_t *owner=nullptr, Cursor cursor=eos) noexcept
Basic constructor.
+
ostreamdev_it< cont_t, data_t > iterator_t
Definition: dev_iterators.h:70
+
index_t cursor_
virtual cursor for comparison operators
+
std::size_t size_t
Definition: types.h:37
+
iterator_t & operator++() noexcept
+
Primary template to catch any non SPI interface types.
+
STL&#39;s core language concepts.
Definition: _1wire.h:30
+
iodev_it(cont_t *owner, size_t cursor=eod) noexcept
Basic constructor.
+
pointer operator->() noexcept
Arrow operator. This is where the input method is invoked.
+ +
iterator_t & operator++() noexcept
+ +
Points the first item (relative address)
+
Input device iterator type. We "future call" interface methods from owner class to provide iterator f...
+
typename dev_iterator_traits< std::output_iterator_tag, iter_t >::difference_type difference_type
+
iodev_it< cont_t, iter_t, _beg, _size > iterator_t
< iterator type local name
+
reference operator*()
De-reference operator. No end() place dereference check is made.
+
value_type_t(value_type v=value_type{})
+
typename dev_iterator_traits< std::output_iterator_tag, data_t, void >::reference reference
+
index_t cursor_
virtual cursor for comparison operators
+
bool operator>(const array< _Tp, _Nm > &lhs, const array< _Tp, _Nm > &rhs)
Definition: array.h:196
+
iterator_t & operator+=(difference_type n) noexcept
Random cursor increment.
+
pointer operator->()
Arrow operator. No end() place dereference check is made.
+
typename dev_iterator_traits< std::output_iterator_tag, iter_t >::reference reference
+
const cont_t * owner() const noexcept
Export container for comparison.
+
ostreamdev_it(cont_t *owner=nullptr) noexcept
Basic constructor.
Definition: dev_iterators.h:96
+
typename dev_iterator_traits< std::output_iterator_tag, data_t, void >::reference reference
Definition: dev_iterators.h:80
+
iterator_t & operator=(const iterator_t &it) noexcept
Basic copy assignment operator.
+
iodev_it() noexcept
Default constructor.
+ +
iterator_t operator+(difference_type n)
+ +
size_t index_t
index_t and size_t mend to be interchangeable
Definition: types.h:38
+
Points one place after last item.
+
typename dev_iterator_traits< std::output_iterator_tag, iter_t >::difference_type difference_type
+
const index_t & cursor() const noexcept
Export cursor for comparison.
+
indev_it(const iterator_t &it) noexcept
Basic copy constructor.
+
bool operator!=(const array< _Tp, _Nm > &lhs, const array< _Tp, _Nm > &rhs)
Definition: array.h:186
+
typename dev_iterator_traits< std::output_iterator_tag, iter_t >::difference_type difference_type
+
iterator_t & operator*() noexcept
+
value_type & operator*() noexcept
+
iterator_t & operator=(const iterator_t &it) noexcept
Basic copy assignment operator.
+ +
const Cursor cursor() const noexcept
Export cursor for comparison.
+
outdev_it< cont_t, iter_t, _beg, _end > iterator_t
iterator type local name
+
const value_type & value() const noexcept
Export value for comparison.
+
cont_t * owner_
+
const index_t cursor() const noexcept
Export cursor for comparison.
+
typename dev_iterator_traits< std::output_iterator_tag, iter_t >::pointer pointer
+ +
const cont_t * owner() const noexcept
Export container for comparison.
+ +
typename dev_iterator_traits< std::output_iterator_tag, data_t, void >::iterator_category iterator_category
Definition: dev_iterators.h:76
+
Cursor
#define-like enumerator for Cursor-like behavior
+
indev_it() noexcept
Default constructor.
+ +
iterator_t operator+(difference_type n) const noexcept
Addition operation.
+
Points one place after last item (relative address)
+
typename dev_iterator_traits< std::output_iterator_tag, data_t, void >::difference_type difference_type
+
typename dev_iterator_traits< std::output_iterator_tag, iter_t >::iterator_category iterator_category
+
iterator_t & operator++()
Pre increment.
+
typename dev_iterator_traits< std::output_iterator_tag, iter_t >::pointer pointer
+ +
Implementation detail main forward header.
+
outdev_it(const iterator_t &it) noexcept
Basic copy constructor.
+
const cont_t * owner() const noexcept
Export container for comparison.
+
Points the first item.
+
typename dev_iterator_traits< std::output_iterator_tag, iter_t >::reference reference
+
typename dev_iterator_traits< std::output_iterator_tag, iter_t >::value_type value_type
+
istreamdev_it(const iterator_t &it) noexcept
Basic copy constructor.
+
+
+ + + + diff --git a/doc/html/dir_13e138d54eb8818da29c3992edef070a.html b/doc/html/dir_13e138d54eb8818da29c3992edef070a.html new file mode 100644 index 0000000..7ac8758 --- /dev/null +++ b/doc/html/dir_13e138d54eb8818da29c3992edef070a.html @@ -0,0 +1,119 @@ + + + + + + + +uTL: test Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
test Directory Reference
+
+
+ + + + + + +

+Directories

directory  eclipse-cygwin
 
directory  tests
 
+ + + + +

+Files

file  main.cpp [code]
 Test project main file.
 
+
+
+ + + + diff --git a/doc/html/dir_13e138d54eb8818da29c3992edef070a.js b/doc/html/dir_13e138d54eb8818da29c3992edef070a.js new file mode 100644 index 0000000..3b33333 --- /dev/null +++ b/doc/html/dir_13e138d54eb8818da29c3992edef070a.js @@ -0,0 +1,6 @@ +var dir_13e138d54eb8818da29c3992edef070a = +[ + [ "eclipse-cygwin", "dir_aaec33bad2bb7a5d6c86281ead709be5.html", "dir_aaec33bad2bb7a5d6c86281ead709be5" ], + [ "tests", "dir_d84abbe486a7f5f39e3c9088ffc1760a.html", "dir_d84abbe486a7f5f39e3c9088ffc1760a" ], + [ "main.cpp", "main_8cpp.html", "main_8cpp" ] +]; \ No newline at end of file diff --git a/doc/html/dir_1de759a74730efb26e16b92a33818a86.html b/doc/html/dir_1de759a74730efb26e16b92a33818a86.html new file mode 100644 index 0000000..b3fa249 --- /dev/null +++ b/doc/html/dir_1de759a74730efb26e16b92a33818a86.html @@ -0,0 +1,120 @@ + + + + + + + +uTL: include/utl/concepts Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
concepts Directory Reference
+
+
+ + + + + + + + + + + + + +

+Files

file  concepts.h [code]
 Concepts main include header.
 
file  defines.h [code]
 Concepts defines.
 
file  iterators.h [code]
 
file  stl.h [code]
 STL's Concepts.
 
+
+
+ + + + diff --git a/doc/html/dir_1de759a74730efb26e16b92a33818a86.js b/doc/html/dir_1de759a74730efb26e16b92a33818a86.js new file mode 100644 index 0000000..1aa57d1 --- /dev/null +++ b/doc/html/dir_1de759a74730efb26e16b92a33818a86.js @@ -0,0 +1,7 @@ +var dir_1de759a74730efb26e16b92a33818a86 = +[ + [ "concepts.h", "concepts_8h.html", "concepts_8h" ], + [ "defines.h", "defines_8h.html", "defines_8h" ], + [ "iterators.h", "iterators_8h.html", "iterators_8h" ], + [ "stl.h", "stl_8h.html", "stl_8h" ] +]; \ No newline at end of file diff --git a/doc/html/dir_24134ffae0315e39a5b4fb4f5ac472ee.html b/doc/html/dir_24134ffae0315e39a5b4fb4f5ac472ee.html new file mode 100644 index 0000000..6c22e6f --- /dev/null +++ b/doc/html/dir_24134ffae0315e39a5b4fb4f5ac472ee.html @@ -0,0 +1,123 @@ + + + + + + + +uTL: test/eclipse-cygwin/C++14-Concepts/source/tests Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
tests Directory Reference
+
+
+ + + + + + + + + + + + + + + + +

+Files

file  TConcepts.d [code]
 
file  test_1w_impl.d [code]
 
file  test_i2c_impl.d [code]
 
file  test_ostream_dev.d [code]
 
file  test_spi_impl.d [code]
 
file  Tinvoke.d [code]
 
file  Tmeta.d [code]
 
+
+
+ + + + diff --git a/doc/html/dir_24134ffae0315e39a5b4fb4f5ac472ee.js b/doc/html/dir_24134ffae0315e39a5b4fb4f5ac472ee.js new file mode 100644 index 0000000..050ac40 --- /dev/null +++ b/doc/html/dir_24134ffae0315e39a5b4fb4f5ac472ee.js @@ -0,0 +1,10 @@ +var dir_24134ffae0315e39a5b4fb4f5ac472ee = +[ + [ "TConcepts.d", "_concepts_2source_2tests_2_t_concepts_8d.html", null ], + [ "test_1w_impl.d", "_concepts_2source_2tests_2test__1w__impl_8d.html", null ], + [ "test_i2c_impl.d", "_concepts_2source_2tests_2test__i2c__impl_8d.html", null ], + [ "test_ostream_dev.d", "_concepts_2source_2tests_2test__ostream__dev_8d.html", null ], + [ "test_spi_impl.d", "_concepts_2source_2tests_2test__spi__impl_8d.html", null ], + [ "Tinvoke.d", "_concepts_2source_2tests_2_tinvoke_8d.html", null ], + [ "Tmeta.d", "_tmeta_8d.html", null ] +]; \ No newline at end of file diff --git a/doc/html/dir_2b272fa693f0990de7cf333b4d9023f8.html b/doc/html/dir_2b272fa693f0990de7cf333b4d9023f8.html new file mode 100644 index 0000000..01a4b6e --- /dev/null +++ b/doc/html/dir_2b272fa693f0990de7cf333b4d9023f8.html @@ -0,0 +1,114 @@ + + + + + + + +uTL: include/utl/container Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
container Directory Reference
+
+
+ + + + + + + +

+Files

file  array.h [code]
 
file  id.h [code]
 A container for device IDs.
 
+
+
+ + + + diff --git a/doc/html/dir_2b272fa693f0990de7cf333b4d9023f8.js b/doc/html/dir_2b272fa693f0990de7cf333b4d9023f8.js new file mode 100644 index 0000000..13672e0 --- /dev/null +++ b/doc/html/dir_2b272fa693f0990de7cf333b4d9023f8.js @@ -0,0 +1,5 @@ +var dir_2b272fa693f0990de7cf333b4d9023f8 = +[ + [ "array.h", "array_8h.html", "array_8h" ], + [ "id.h", "id_8h.html", "id_8h" ] +]; \ No newline at end of file diff --git a/doc/html/dir_4b85ac8f363cc57fa06fe00d732b3ef4.html b/doc/html/dir_4b85ac8f363cc57fa06fe00d732b3ef4.html new file mode 100644 index 0000000..efbaa1e --- /dev/null +++ b/doc/html/dir_4b85ac8f363cc57fa06fe00d732b3ef4.html @@ -0,0 +1,111 @@ + + + + + + + +uTL: test/eclipse-cygwin/C++14-Concepts/lib/gtest Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
gtest Directory Reference
+
+
+ + + + +

+Files

file  gtest-all.d [code]
 
+
+
+ + + + diff --git a/doc/html/dir_4b85ac8f363cc57fa06fe00d732b3ef4.js b/doc/html/dir_4b85ac8f363cc57fa06fe00d732b3ef4.js new file mode 100644 index 0000000..f70f8ac --- /dev/null +++ b/doc/html/dir_4b85ac8f363cc57fa06fe00d732b3ef4.js @@ -0,0 +1,4 @@ +var dir_4b85ac8f363cc57fa06fe00d732b3ef4 = +[ + [ "gtest-all.d", "_concepts_2lib_2gtest_2gtest-all_8d.html", null ] +]; \ No newline at end of file diff --git a/doc/html/dir_5aedf2f82d2f4f13addc24fda7ca3c64.html b/doc/html/dir_5aedf2f82d2f4f13addc24fda7ca3c64.html new file mode 100644 index 0000000..8d0e051 --- /dev/null +++ b/doc/html/dir_5aedf2f82d2f4f13addc24fda7ca3c64.html @@ -0,0 +1,111 @@ + + + + + + + +uTL: test/eclipse-cygwin/C++14-Concepts/lib Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
lib Directory Reference
+
+
+ + + + +

+Directories

directory  gtest
 
+
+
+ + + + diff --git a/doc/html/dir_5aedf2f82d2f4f13addc24fda7ca3c64.js b/doc/html/dir_5aedf2f82d2f4f13addc24fda7ca3c64.js new file mode 100644 index 0000000..8d20f0c --- /dev/null +++ b/doc/html/dir_5aedf2f82d2f4f13addc24fda7ca3c64.js @@ -0,0 +1,4 @@ +var dir_5aedf2f82d2f4f13addc24fda7ca3c64 = +[ + [ "gtest", "dir_4b85ac8f363cc57fa06fe00d732b3ef4.html", "dir_4b85ac8f363cc57fa06fe00d732b3ef4" ] +]; \ No newline at end of file diff --git a/doc/html/dir_5f9a51ed898ae26d530fbf5192dc35b6.html b/doc/html/dir_5f9a51ed898ae26d530fbf5192dc35b6.html new file mode 100644 index 0000000..42916bc --- /dev/null +++ b/doc/html/dir_5f9a51ed898ae26d530fbf5192dc35b6.html @@ -0,0 +1,120 @@ + + + + + + + +uTL: include/utl/core Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
core Directory Reference
+
+
+ + + + + + + + + + + + + +

+Files

file  crtp.h [code]
 
file  impl.h [code]
 Implementation detail main forward header.
 
file  types.h [code]
 Basic type alias support.
 
file  version.h [code]
 version and cpp version checks
 
+
+
+ + + + diff --git a/doc/html/dir_5f9a51ed898ae26d530fbf5192dc35b6.js b/doc/html/dir_5f9a51ed898ae26d530fbf5192dc35b6.js new file mode 100644 index 0000000..59f897b --- /dev/null +++ b/doc/html/dir_5f9a51ed898ae26d530fbf5192dc35b6.js @@ -0,0 +1,7 @@ +var dir_5f9a51ed898ae26d530fbf5192dc35b6 = +[ + [ "crtp.h", "crtp_8h.html", "crtp_8h" ], + [ "impl.h", "impl_8h.html", null ], + [ "types.h", "types_8h.html", "types_8h" ], + [ "version.h", "version_8h.html", "version_8h" ] +]; \ No newline at end of file diff --git a/doc/html/dir_82754f54d9380477ef02477185c1f103.html b/doc/html/dir_82754f54d9380477ef02477185c1f103.html new file mode 100644 index 0000000..16a2a8d --- /dev/null +++ b/doc/html/dir_82754f54d9380477ef02477185c1f103.html @@ -0,0 +1,123 @@ + + + + + + + +uTL: include/utl Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
utl Directory Reference
+
+
+ + + + + + + + + + + + + + + + +

+Directories

directory  com
 
directory  concepts
 
directory  container
 
directory  core
 
directory  dev
 
directory  meta
 
directory  utility
 
+
+
+ + + + diff --git a/doc/html/dir_82754f54d9380477ef02477185c1f103.js b/doc/html/dir_82754f54d9380477ef02477185c1f103.js new file mode 100644 index 0000000..16ea269 --- /dev/null +++ b/doc/html/dir_82754f54d9380477ef02477185c1f103.js @@ -0,0 +1,10 @@ +var dir_82754f54d9380477ef02477185c1f103 = +[ + [ "com", "dir_b2ad3c1a6521a4924fa9194d98c323e2.html", "dir_b2ad3c1a6521a4924fa9194d98c323e2" ], + [ "concepts", "dir_1de759a74730efb26e16b92a33818a86.html", "dir_1de759a74730efb26e16b92a33818a86" ], + [ "container", "dir_2b272fa693f0990de7cf333b4d9023f8.html", "dir_2b272fa693f0990de7cf333b4d9023f8" ], + [ "core", "dir_5f9a51ed898ae26d530fbf5192dc35b6.html", "dir_5f9a51ed898ae26d530fbf5192dc35b6" ], + [ "dev", "dir_e9da18de27e34a68f4aee9f9a960d991.html", "dir_e9da18de27e34a68f4aee9f9a960d991" ], + [ "meta", "dir_c6a55aeb35dd92d90cdd3b5869981960.html", "dir_c6a55aeb35dd92d90cdd3b5869981960" ], + [ "utility", "dir_cd2b5ca7f5fdf6a80655358f064ed410.html", "dir_cd2b5ca7f5fdf6a80655358f064ed410" ] +]; \ No newline at end of file diff --git a/doc/html/dir_8411d781812971a63652b25f8ca24477.html b/doc/html/dir_8411d781812971a63652b25f8ca24477.html new file mode 100644 index 0000000..b1f0737 --- /dev/null +++ b/doc/html/dir_8411d781812971a63652b25f8ca24477.html @@ -0,0 +1,127 @@ + + + + + + + +uTL: test/eclipse-cygwin/C++14/source/tests Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
tests Directory Reference
+
+
+ + + + + + + + + + + + + + + + + + + + +

+Files

file  TConcepts.d [code]
 
file  test_1w_impl.d [code]
 
file  test_i2c_impl.d [code]
 
file  test_ostream_dev.d [code]
 
file  test_spi_impl.d [code]
 
file  Tinvoke.d [code]
 
file  TmetaBasic.d [code]
 
file  TmetaDetection.d [code]
 
file  TmetaTypelist.d [code]
 
+
+
+ + + + diff --git a/doc/html/dir_8411d781812971a63652b25f8ca24477.js b/doc/html/dir_8411d781812971a63652b25f8ca24477.js new file mode 100644 index 0000000..6bbcfb6 --- /dev/null +++ b/doc/html/dir_8411d781812971a63652b25f8ca24477.js @@ -0,0 +1,12 @@ +var dir_8411d781812971a63652b25f8ca24477 = +[ + [ "TConcepts.d", "source_2tests_2_t_concepts_8d.html", null ], + [ "test_1w_impl.d", "source_2tests_2test__1w__impl_8d.html", null ], + [ "test_i2c_impl.d", "source_2tests_2test__i2c__impl_8d.html", null ], + [ "test_ostream_dev.d", "source_2tests_2test__ostream__dev_8d.html", null ], + [ "test_spi_impl.d", "source_2tests_2test__spi__impl_8d.html", null ], + [ "Tinvoke.d", "source_2tests_2_tinvoke_8d.html", null ], + [ "TmetaBasic.d", "_tmeta_basic_8d.html", null ], + [ "TmetaDetection.d", "_tmeta_detection_8d.html", null ], + [ "TmetaTypelist.d", "_tmeta_typelist_8d.html", null ] +]; \ No newline at end of file diff --git a/doc/html/dir_8e256609955cbc0738929bb20e4749b4.html b/doc/html/dir_8e256609955cbc0738929bb20e4749b4.html new file mode 100644 index 0000000..b07624c --- /dev/null +++ b/doc/html/dir_8e256609955cbc0738929bb20e4749b4.html @@ -0,0 +1,111 @@ + + + + + + + +uTL: test/eclipse-cygwin/C++14/lib Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
lib Directory Reference
+
+
+ + + + +

+Directories

directory  gtest
 
+
+
+ + + + diff --git a/doc/html/dir_8e256609955cbc0738929bb20e4749b4.js b/doc/html/dir_8e256609955cbc0738929bb20e4749b4.js new file mode 100644 index 0000000..02977e2 --- /dev/null +++ b/doc/html/dir_8e256609955cbc0738929bb20e4749b4.js @@ -0,0 +1,4 @@ +var dir_8e256609955cbc0738929bb20e4749b4 = +[ + [ "gtest", "dir_9613c8d8aa19c2ea309ba544861172c5.html", "dir_9613c8d8aa19c2ea309ba544861172c5" ] +]; \ No newline at end of file diff --git a/doc/html/dir_9613c8d8aa19c2ea309ba544861172c5.html b/doc/html/dir_9613c8d8aa19c2ea309ba544861172c5.html new file mode 100644 index 0000000..f23cd1a --- /dev/null +++ b/doc/html/dir_9613c8d8aa19c2ea309ba544861172c5.html @@ -0,0 +1,111 @@ + + + + + + + +uTL: test/eclipse-cygwin/C++14/lib/gtest Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
gtest Directory Reference
+
+
+ + + + +

+Files

file  gtest-all.d [code]
 
+
+
+ + + + diff --git a/doc/html/dir_9613c8d8aa19c2ea309ba544861172c5.js b/doc/html/dir_9613c8d8aa19c2ea309ba544861172c5.js new file mode 100644 index 0000000..62a0553 --- /dev/null +++ b/doc/html/dir_9613c8d8aa19c2ea309ba544861172c5.js @@ -0,0 +1,4 @@ +var dir_9613c8d8aa19c2ea309ba544861172c5 = +[ + [ "gtest-all.d", "lib_2gtest_2gtest-all_8d.html", null ] +]; \ No newline at end of file diff --git a/doc/html/dir_a96de09a69cea6234edc1a1514d133f0.html b/doc/html/dir_a96de09a69cea6234edc1a1514d133f0.html new file mode 100644 index 0000000..5f67df4 --- /dev/null +++ b/doc/html/dir_a96de09a69cea6234edc1a1514d133f0.html @@ -0,0 +1,113 @@ + + + + + + + +uTL: test/eclipse-cygwin/lib/gtest Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
gtest Directory Reference
+
+
+ + + + + + +

+Files

file  gtest-all.cc [code]
 
file  gtest.h [code]
 
+
+
+ + + + diff --git a/doc/html/dir_a96de09a69cea6234edc1a1514d133f0.js b/doc/html/dir_a96de09a69cea6234edc1a1514d133f0.js new file mode 100644 index 0000000..4750327 --- /dev/null +++ b/doc/html/dir_a96de09a69cea6234edc1a1514d133f0.js @@ -0,0 +1,5 @@ +var dir_a96de09a69cea6234edc1a1514d133f0 = +[ + [ "gtest-all.cc", "gtest-all_8cc.html", "gtest-all_8cc" ], + [ "gtest.h", "gtest_8h.html", "gtest_8h" ] +]; \ No newline at end of file diff --git a/doc/html/dir_aaec33bad2bb7a5d6c86281ead709be5.html b/doc/html/dir_aaec33bad2bb7a5d6c86281ead709be5.html new file mode 100644 index 0000000..ff1a880 --- /dev/null +++ b/doc/html/dir_aaec33bad2bb7a5d6c86281ead709be5.html @@ -0,0 +1,115 @@ + + + + + + + +uTL: test/eclipse-cygwin Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
eclipse-cygwin Directory Reference
+
+
+ + + + + + + + +

+Directories

directory  C++14
 
directory  C++14-Concepts
 
directory  lib
 
+
+
+ + + + diff --git a/doc/html/dir_aaec33bad2bb7a5d6c86281ead709be5.js b/doc/html/dir_aaec33bad2bb7a5d6c86281ead709be5.js new file mode 100644 index 0000000..c764b50 --- /dev/null +++ b/doc/html/dir_aaec33bad2bb7a5d6c86281ead709be5.js @@ -0,0 +1,6 @@ +var dir_aaec33bad2bb7a5d6c86281ead709be5 = +[ + [ "C++14", "dir_b27f91983daa7c88d19acbf32a947465.html", "dir_b27f91983daa7c88d19acbf32a947465" ], + [ "C++14-Concepts", "dir_ec678fe2ad4670066af397af03cd2f43.html", "dir_ec678fe2ad4670066af397af03cd2f43" ], + [ "lib", "dir_c2811dd2f770757e67563302be4130d6.html", "dir_c2811dd2f770757e67563302be4130d6" ] +]; \ No newline at end of file diff --git a/doc/html/dir_ab041ef57e3839706d1cbf08a477bd80.html b/doc/html/dir_ab041ef57e3839706d1cbf08a477bd80.html new file mode 100644 index 0000000..469680c --- /dev/null +++ b/doc/html/dir_ab041ef57e3839706d1cbf08a477bd80.html @@ -0,0 +1,116 @@ + + + + + + + +uTL: test/eclipse-cygwin/C++14-Concepts/source Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
source Directory Reference
+
+
+ + + + +

+Directories

directory  tests
 
+ + + +

+Files

file  main.d [code]
 
+
+
+ + + + diff --git a/doc/html/dir_ab041ef57e3839706d1cbf08a477bd80.js b/doc/html/dir_ab041ef57e3839706d1cbf08a477bd80.js new file mode 100644 index 0000000..30ca206 --- /dev/null +++ b/doc/html/dir_ab041ef57e3839706d1cbf08a477bd80.js @@ -0,0 +1,5 @@ +var dir_ab041ef57e3839706d1cbf08a477bd80 = +[ + [ "tests", "dir_24134ffae0315e39a5b4fb4f5ac472ee.html", "dir_24134ffae0315e39a5b4fb4f5ac472ee" ], + [ "main.d", "_concepts_2source_2main_8d.html", null ] +]; \ No newline at end of file diff --git a/doc/html/dir_b27f91983daa7c88d19acbf32a947465.html b/doc/html/dir_b27f91983daa7c88d19acbf32a947465.html new file mode 100644 index 0000000..e15e064 --- /dev/null +++ b/doc/html/dir_b27f91983daa7c88d19acbf32a947465.html @@ -0,0 +1,113 @@ + + + + + + + +uTL: test/eclipse-cygwin/C++14 Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
C++14 Directory Reference
+
+
+ + + + + + +

+Directories

directory  lib
 
directory  source
 
+
+
+ + + + diff --git a/doc/html/dir_b27f91983daa7c88d19acbf32a947465.js b/doc/html/dir_b27f91983daa7c88d19acbf32a947465.js new file mode 100644 index 0000000..0be6f06 --- /dev/null +++ b/doc/html/dir_b27f91983daa7c88d19acbf32a947465.js @@ -0,0 +1,5 @@ +var dir_b27f91983daa7c88d19acbf32a947465 = +[ + [ "lib", "dir_8e256609955cbc0738929bb20e4749b4.html", "dir_8e256609955cbc0738929bb20e4749b4" ], + [ "source", "dir_ffc5af52851d01e73a12da661e220384.html", "dir_ffc5af52851d01e73a12da661e220384" ] +]; \ No newline at end of file diff --git a/doc/html/dir_b2ad3c1a6521a4924fa9194d98c323e2.html b/doc/html/dir_b2ad3c1a6521a4924fa9194d98c323e2.html new file mode 100644 index 0000000..9eaa19d --- /dev/null +++ b/doc/html/dir_b2ad3c1a6521a4924fa9194d98c323e2.html @@ -0,0 +1,130 @@ + + + + + + + +uTL: include/utl/com Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
com Directory Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +

+Files

file  _1wire.h [code]
 An 1-wire interface implementation.
 
file  _1wire_id.h [code]
 An 1-wire Rom ID type.
 
file  _1wire_uart.h [code]
 A 1-wire implementation using a microprocessor's uart for bit timing.
 
file  i2c.h [code]
 An Abstract base class interface for the i2c bus.
 
file  i2c_bb.h [code]
 A bit banking implementation of i2c bus inherited from i2c_i base class.
 
file  spi.h [code]
 An Abstract base class interface for the spi bus.
 
file  spi_bb.h [code]
 A bit banking implementation of spi bus inherited from spi_i base class.
 
+
+
+ + + + diff --git a/doc/html/dir_b2ad3c1a6521a4924fa9194d98c323e2.js b/doc/html/dir_b2ad3c1a6521a4924fa9194d98c323e2.js new file mode 100644 index 0000000..d867ad8 --- /dev/null +++ b/doc/html/dir_b2ad3c1a6521a4924fa9194d98c323e2.js @@ -0,0 +1,21 @@ +var dir_b2ad3c1a6521a4924fa9194d98c323e2 = +[ + [ "_1wire.h", "__1wire_8h.html", "__1wire_8h" ], + [ "_1wire_id.h", "__1wire__id_8h.html", [ + [ "_1wire_id_t", "classutl_1_1__1wire__id__t.html", "classutl_1_1__1wire__id__t" ] + ] ], + [ "_1wire_uart.h", "__1wire__uart_8h.html", [ + [ "_1wire_uart_i", "classutl_1_1__1wire__uart__i.html", "classutl_1_1__1wire__uart__i" ], + [ "_1wire_uart_i< virtual_tag >", "classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html", "classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4" ] + ] ], + [ "i2c.h", "i2c_8h.html", "i2c_8h" ], + [ "i2c_bb.h", "i2c__bb_8h.html", [ + [ "i2c_bb_i", "classutl_1_1i2c__bb__i.html", "classutl_1_1i2c__bb__i" ], + [ "i2c_bb_i< virtual_tag >", "classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html", "classutl_1_1i2c__bb__i_3_01virtual__tag_01_4" ] + ] ], + [ "spi.h", "spi_8h.html", "spi_8h" ], + [ "spi_bb.h", "spi__bb_8h.html", [ + [ "spi_bb_i", "classutl_1_1spi__bb__i.html", "classutl_1_1spi__bb__i" ], + [ "spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >", "classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html", "classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4" ] + ] ] +]; \ No newline at end of file diff --git a/doc/html/dir_c2811dd2f770757e67563302be4130d6.html b/doc/html/dir_c2811dd2f770757e67563302be4130d6.html new file mode 100644 index 0000000..6d30d73 --- /dev/null +++ b/doc/html/dir_c2811dd2f770757e67563302be4130d6.html @@ -0,0 +1,111 @@ + + + + + + + +uTL: test/eclipse-cygwin/lib Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
lib Directory Reference
+
+
+ + + + +

+Directories

directory  gtest
 
+
+
+ + + + diff --git a/doc/html/dir_c2811dd2f770757e67563302be4130d6.js b/doc/html/dir_c2811dd2f770757e67563302be4130d6.js new file mode 100644 index 0000000..6631e0f --- /dev/null +++ b/doc/html/dir_c2811dd2f770757e67563302be4130d6.js @@ -0,0 +1,4 @@ +var dir_c2811dd2f770757e67563302be4130d6 = +[ + [ "gtest", "dir_a96de09a69cea6234edc1a1514d133f0.html", "dir_a96de09a69cea6234edc1a1514d133f0" ] +]; \ No newline at end of file diff --git a/doc/html/dir_c6a55aeb35dd92d90cdd3b5869981960.html b/doc/html/dir_c6a55aeb35dd92d90cdd3b5869981960.html new file mode 100644 index 0000000..d180b39 --- /dev/null +++ b/doc/html/dir_c6a55aeb35dd92d90cdd3b5869981960.html @@ -0,0 +1,134 @@ + + + + + + + +uTL: include/utl/meta Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
meta Directory Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Files

file  detection.h [code]
 Detection idiom based on WG21's N4502 [n4502 1] from Walter E. Brown.
 
file  integral.h [code]
 
file  invoke.h [code]
 
file  meta.h [code]
 Include all meta library.
 
file  operations.h [code]
 Integral constant operations and logical operations.
 
file  selection.h [code]
 Template meta-programming type selections.
 
file  sfinae.h [code]
 Template meta-programming SFINAE helpers.
 
file  typelist.h [code]
 A template parameter "container".
 
file  useif.h [code]
 Template meta-programming SFINAE helpers.
 
+
+
+ + + + diff --git a/doc/html/dir_c6a55aeb35dd92d90cdd3b5869981960.js b/doc/html/dir_c6a55aeb35dd92d90cdd3b5869981960.js new file mode 100644 index 0000000..4c1446b --- /dev/null +++ b/doc/html/dir_c6a55aeb35dd92d90cdd3b5869981960.js @@ -0,0 +1,12 @@ +var dir_c6a55aeb35dd92d90cdd3b5869981960 = +[ + [ "detection.h", "detection_8h.html", "detection_8h" ], + [ "integral.h", "integral_8h.html", "integral_8h" ], + [ "invoke.h", "meta_2invoke_8h.html", "meta_2invoke_8h" ], + [ "meta.h", "meta_8h.html", null ], + [ "operations.h", "operations_8h.html", "operations_8h" ], + [ "selection.h", "selection_8h.html", "selection_8h" ], + [ "sfinae.h", "sfinae_8h.html", "sfinae_8h" ], + [ "typelist.h", "typelist_8h.html", "typelist_8h" ], + [ "useif.h", "useif_8h.html", "useif_8h" ] +]; \ No newline at end of file diff --git a/doc/html/dir_cd2b5ca7f5fdf6a80655358f064ed410.html b/doc/html/dir_cd2b5ca7f5fdf6a80655358f064ed410.html new file mode 100644 index 0000000..63dfc1d --- /dev/null +++ b/doc/html/dir_cd2b5ca7f5fdf6a80655358f064ed410.html @@ -0,0 +1,112 @@ + + + + + + + +uTL: include/utl/utility Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
utility Directory Reference
+
+
+ + + + + +

+Files

file  invoke.h [code]
 invoke() and invoke traits implementation
 
+
+
+ + + + diff --git a/doc/html/dir_cd2b5ca7f5fdf6a80655358f064ed410.js b/doc/html/dir_cd2b5ca7f5fdf6a80655358f064ed410.js new file mode 100644 index 0000000..959ab86 --- /dev/null +++ b/doc/html/dir_cd2b5ca7f5fdf6a80655358f064ed410.js @@ -0,0 +1,4 @@ +var dir_cd2b5ca7f5fdf6a80655358f064ed410 = +[ + [ "invoke.h", "utility_2invoke_8h.html", "utility_2invoke_8h" ] +]; \ No newline at end of file diff --git a/doc/html/dir_d44c64559bbebec7f509842c48db8b23.html b/doc/html/dir_d44c64559bbebec7f509842c48db8b23.html new file mode 100644 index 0000000..4ce03f1 --- /dev/null +++ b/doc/html/dir_d44c64559bbebec7f509842c48db8b23.html @@ -0,0 +1,111 @@ + + + + + + + +uTL: include Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
include Directory Reference
+
+
+ + + + +

+Directories

directory  utl
 
+
+
+ + + + diff --git a/doc/html/dir_d44c64559bbebec7f509842c48db8b23.js b/doc/html/dir_d44c64559bbebec7f509842c48db8b23.js new file mode 100644 index 0000000..a04f80f --- /dev/null +++ b/doc/html/dir_d44c64559bbebec7f509842c48db8b23.js @@ -0,0 +1,4 @@ +var dir_d44c64559bbebec7f509842c48db8b23 = +[ + [ "utl", "dir_82754f54d9380477ef02477185c1f103.html", "dir_82754f54d9380477ef02477185c1f103" ] +]; \ No newline at end of file diff --git a/doc/html/dir_d84abbe486a7f5f39e3c9088ffc1760a.html b/doc/html/dir_d84abbe486a7f5f39e3c9088ffc1760a.html new file mode 100644 index 0000000..4075fb7 --- /dev/null +++ b/doc/html/dir_d84abbe486a7f5f39e3c9088ffc1760a.html @@ -0,0 +1,127 @@ + + + + + + + +uTL: test/tests Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
tests Directory Reference
+
+
+ + + + + + + + + + + + + + + + + + + + +

+Files

file  TConcepts.cpp [code]
 
file  test_1w_impl.cpp [code]
 
file  test_i2c_impl.cpp [code]
 
file  test_ostream_dev.cpp [code]
 
file  test_spi_impl.cpp [code]
 
file  Tinvoke.cpp [code]
 
file  TmetaBasic.cpp [code]
 
file  TmetaDetection.cpp [code]
 
file  TmetaTypelist.cpp [code]
 
+
+
+ + + + diff --git a/doc/html/dir_d84abbe486a7f5f39e3c9088ffc1760a.js b/doc/html/dir_d84abbe486a7f5f39e3c9088ffc1760a.js new file mode 100644 index 0000000..3d9c49f --- /dev/null +++ b/doc/html/dir_d84abbe486a7f5f39e3c9088ffc1760a.js @@ -0,0 +1,12 @@ +var dir_d84abbe486a7f5f39e3c9088ffc1760a = +[ + [ "TConcepts.cpp", "_t_concepts_8cpp.html", "_t_concepts_8cpp" ], + [ "test_1w_impl.cpp", "test__1w__impl_8cpp.html", "test__1w__impl_8cpp" ], + [ "test_i2c_impl.cpp", "test__i2c__impl_8cpp.html", "test__i2c__impl_8cpp" ], + [ "test_ostream_dev.cpp", "test__ostream__dev_8cpp.html", "test__ostream__dev_8cpp" ], + [ "test_spi_impl.cpp", "test__spi__impl_8cpp.html", "test__spi__impl_8cpp" ], + [ "Tinvoke.cpp", "_tinvoke_8cpp.html", "_tinvoke_8cpp" ], + [ "TmetaBasic.cpp", "_tmeta_basic_8cpp.html", "_tmeta_basic_8cpp" ], + [ "TmetaDetection.cpp", "_tmeta_detection_8cpp.html", "_tmeta_detection_8cpp" ], + [ "TmetaTypelist.cpp", "_tmeta_typelist_8cpp.html", "_tmeta_typelist_8cpp" ] +]; \ No newline at end of file diff --git a/doc/html/dir_e9da18de27e34a68f4aee9f9a960d991.html b/doc/html/dir_e9da18de27e34a68f4aee9f9a960d991.html new file mode 100644 index 0000000..b6aa7aa --- /dev/null +++ b/doc/html/dir_e9da18de27e34a68f4aee9f9a960d991.html @@ -0,0 +1,127 @@ + + + + + + + +uTL: include/utl/dev Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
dev Directory Reference
+
+
+ + + + + + + + + + + + + + + + + + + + +

+Files

file  dev_iterators.h [code]
 Iterator collection for devices.
 
file  idx_dev.h [code]
 Abstract base class implementations for indexed devices interface of utl.
 
file  in_dev.h [code]
 Abstract base class interface for input devices of utl.
 
file  inbuf_dev.h [code]
 Abstract base class interface for input buffered devices of utl.
 
file  ostream_dev.h [code]
 Abstract base class interface for output devices of utl.
 
file  out_dev.h [code]
 Abstract base class interface for output devices of utl.
 
+
+
+ + + + diff --git a/doc/html/dir_e9da18de27e34a68f4aee9f9a960d991.js b/doc/html/dir_e9da18de27e34a68f4aee9f9a960d991.js new file mode 100644 index 0000000..517fce8 --- /dev/null +++ b/doc/html/dir_e9da18de27e34a68f4aee9f9a960d991.js @@ -0,0 +1,12 @@ +var dir_e9da18de27e34a68f4aee9f9a960d991 = +[ + [ "dev_iterators.h", "dev__iterators_8h.html", "dev__iterators_8h" ], + [ "idx_dev.h", "idx__dev_8h.html", "idx__dev_8h" ], + [ "in_dev.h", "in__dev_8h.html", "in__dev_8h" ], + [ "inbuf_dev.h", "inbuf__dev_8h.html", "inbuf__dev_8h" ], + [ "ostream_dev.h", "ostream__dev_8h.html", [ + [ "ostream_dev", "classutl_1_1ostream__dev.html", "classutl_1_1ostream__dev" ], + [ "ostream_dev< virtual_tag, data_t >", "classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html", "classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4" ] + ] ], + [ "out_dev.h", "out__dev_8h.html", "out__dev_8h" ] +]; \ No newline at end of file diff --git a/doc/html/dir_ec678fe2ad4670066af397af03cd2f43.html b/doc/html/dir_ec678fe2ad4670066af397af03cd2f43.html new file mode 100644 index 0000000..80c3578 --- /dev/null +++ b/doc/html/dir_ec678fe2ad4670066af397af03cd2f43.html @@ -0,0 +1,113 @@ + + + + + + + +uTL: test/eclipse-cygwin/C++14-Concepts Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
C++14-Concepts Directory Reference
+
+
+ + + + + + +

+Directories

directory  lib
 
directory  source
 
+
+
+ + + + diff --git a/doc/html/dir_ec678fe2ad4670066af397af03cd2f43.js b/doc/html/dir_ec678fe2ad4670066af397af03cd2f43.js new file mode 100644 index 0000000..1b4a0fc --- /dev/null +++ b/doc/html/dir_ec678fe2ad4670066af397af03cd2f43.js @@ -0,0 +1,5 @@ +var dir_ec678fe2ad4670066af397af03cd2f43 = +[ + [ "lib", "dir_5aedf2f82d2f4f13addc24fda7ca3c64.html", "dir_5aedf2f82d2f4f13addc24fda7ca3c64" ], + [ "source", "dir_ab041ef57e3839706d1cbf08a477bd80.html", "dir_ab041ef57e3839706d1cbf08a477bd80" ] +]; \ No newline at end of file diff --git a/doc/html/dir_ffc5af52851d01e73a12da661e220384.html b/doc/html/dir_ffc5af52851d01e73a12da661e220384.html new file mode 100644 index 0000000..3f09664 --- /dev/null +++ b/doc/html/dir_ffc5af52851d01e73a12da661e220384.html @@ -0,0 +1,116 @@ + + + + + + + +uTL: test/eclipse-cygwin/C++14/source Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
source Directory Reference
+
+
+ + + + +

+Directories

directory  tests
 
+ + + +

+Files

file  main.d [code]
 
+
+
+ + + + diff --git a/doc/html/dir_ffc5af52851d01e73a12da661e220384.js b/doc/html/dir_ffc5af52851d01e73a12da661e220384.js new file mode 100644 index 0000000..caae6aa --- /dev/null +++ b/doc/html/dir_ffc5af52851d01e73a12da661e220384.js @@ -0,0 +1,5 @@ +var dir_ffc5af52851d01e73a12da661e220384 = +[ + [ "tests", "dir_8411d781812971a63652b25f8ca24477.html", "dir_8411d781812971a63652b25f8ca24477" ], + [ "main.d", "source_2main_8d.html", null ] +]; \ No newline at end of file diff --git a/doc/html/doc.png b/doc/html/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..17edabff95f7b8da13c9516a04efe05493c29501 GIT binary patch literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t literal 0 HcmV?d00001 diff --git a/doc/html/doxygen.css b/doc/html/doxygen.css new file mode 100644 index 0000000..266c8b3 --- /dev/null +++ b/doc/html/doxygen.css @@ -0,0 +1,1596 @@ +/* The standard CSS for doxygen 1.8.14 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0px; + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +dl +{ + padding: 0 0 0 10px; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ +dl.section +{ + margin-left: 0px; + padding-left: 0px; +} + +dl.note +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00D000; +} + +dl.deprecated +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #505050; +} + +dl.todo +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00C0E0; +} + +dl.test +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #3030E0; +} + +dl.bug +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +/* +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTableHead tr { +} + +table.markdownTableBodyLeft td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft { + text-align: left +} + +th.markdownTableHeadRight { + text-align: right +} + +th.markdownTableHeadCenter { + text-align: center +} +*/ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + + +/* @end */ diff --git a/doc/html/doxygen.png b/doc/html/doxygen.png new file mode 100644 index 0000000000000000000000000000000000000000..3ff17d807fd8aa003bed8bb2a69e8f0909592fd1 GIT binary patch literal 3779 zcmV;!4m|ORP)tMIv#Q0*~7*`IBSO7_x;@a8#Zk6_PeKR_s92J&)(m+);m9Iz3blw)z#Gi zP!9lj4$%+*>Hz@HCmM9L9|8c+0u=!H$O3?R0Kgx|#WP<6fKfC8fM-CQZT|_r@`>VO zX^Hgb|9cJqpdJA5$MCEK`F_2@2Y@s>^+;pF`~jdI0Pvr|vl4`=C)EH@1IFe7pdJ8F zH(qGi004~QnF)Ggga~8v08kGAs2hKTATxr7pwfNk|4#_AaT>w8P6TV+R2kbS$v==} zAjf`s0g#V8lB+b3)5oEI*q+{Yt$MZDruD2^;$+(_%Qn+%v0X-bJO=;@kiJ^ygLBnC z?1OVv_%aex1M@jKU|Z~$eI?PoF4Vj>fDzyo zAiLfpXY*a^Sj-S5D0S3@#V$sRW)g)_1e#$%8xdM>Jm7?!h zu0P2X=xoN>^!4DoPRgph2(2va07yfpXF+WH7EOg1GY%Zn z7~1A<(z7Q$ktEXhW_?GMpHp9l_UL18F3KOsxu81pqoBiNbFSGsof-W z6~eloMoz=4?OOnl2J268x5rOY`dCk0us(uS#Ud4yqOr@?=Q57a}tit|BhY>}~frH1sP`ScHS_d)oqH^lYy zZ%VP`#10MlE~P?cE(%(#(AUSv_T{+;t@$U}El}(1ig`vZo`Rm;+5&(AYzJ^Ae=h2X z@Re%vHwZU>|f0NI&%$*4eJweC5OROQrpPMA@*w|o z()A==l}(@bv^&>H1Ob3C=<^|hob?0+xJ?QQ3-ueQC}zy&JQNib!OqSO@-=>XzxlSF zAZ^U*1l6EEmg3r};_HY>&Jo_{dOPEFTWPmt=U&F#+0(O59^UIlHbNX+eF8UzyDR*T z(=5X$VF3!gm@RooS-&iiUYGG^`hMR(07zr_xP`d!^BH?uD>Phl8Rdifx3Af^Zr`Ku ztL+~HkVeL#bJ)7;`=>;{KNRvjmc}1}c58Sr#Treq=4{xo!ATy|c>iRSp4`dzMMVd@ zL8?uwXDY}Wqgh4mH`|$BTXpUIu6A1-cSq%hJw;@^Zr8TP=GMh*p(m(tN7@!^D~sl$ zz^tf4II4|};+irE$Fnm4NTc5%p{PRA`%}Zk`CE5?#h3|xcyQsS#iONZ z6H(@^i9td!$z~bZiJLTax$o>r(p}3o@< zyD7%(>ZYvy=6$U3e!F{Z`uSaYy`xQyl?b{}eg|G3&fz*`QH@mDUn)1%#5u`0m$%D} z?;tZ0u(mWeMV0QtzjgN!lT*pNRj;6510Wwx?Yi_=tYw|J#7@(Xe7ifDzXuK;JB;QO z#bg~K$cgm$@{QiL_3yr}y&~wuv=P=#O&Tj=Sr)aCUlYmZMcw?)T?c%0rUe1cS+o!qs_ zQ6Gp)-{)V!;=q}llyK3|^WeLKyjf%y;xHku;9(vM!j|~<7w1c*Mk-;P{T&yG) z@C-8E?QPynNQ<8f01D`2qexcVEIOU?y}MG)TAE6&VT5`rK8s(4PE;uQ92LTXUQ<>^ ztyQ@=@kRdh@ebUG^Z6NWWIL;_IGJ2ST>$t!$m$qvtj0Qmw8moN6GUV^!QKNK zHBXCtUH8)RY9++gH_TUV4^=-j$t}dD3qsN7GclJ^Zc&(j6&a_!$jCf}%c5ey`pm~1)@{yI3 zTdWyB+*X{JFw#z;PwRr5evb2!ueWF;v`B0HoUu4-(~aL=z;OXUUEtG`_$)Oxw6FKg zEzY`CyKaSBK3xt#8gA|r_|Kehn_HYVBMpEwbn9-fI*!u*eTA1ef8Mkl1=!jV4oYwWYM}i`A>_F4nhmlCIC6WLa zY%;4&@AlnaG11ejl61Jev21|r*m+?Kru3;1tFDl}#!OzUp6c>go4{C|^erwpG*&h6bspUPJag}oOkN2912Y3I?(eRc@U9>z#HPBHC?nps7H5!zP``90!Q1n80jo+B3TWXp!8Pe zwuKuLLI6l3Gv@+QH*Y}2wPLPQ1^EZhT#+Ed8q8Wo z1pTmIBxv14-{l&QVKxAyQF#8Q@NeJwWdKk>?cpiJLkJr+aZ!Me+Cfp!?FWSRf^j2k z73BRR{WSKaMkJ>1Nbx5dan5hg^_}O{Tj6u%iV%#QGz0Q@j{R^Ik)Z*+(YvY2ziBG)?AmJa|JV%4UT$k`hcOg5r9R?5>?o~JzK zJCrj&{i#hG>N7!B4kNX(%igb%kDj0fOQThC-8mtfap82PNRXr1D>lbgg)dYTQ(kbx z`Ee5kXG~Bh+BHQBf|kJEy6(ga%WfhvdQNDuOfQoe377l#ht&DrMGeIsI5C<&ai zWG$|hop2@@q5YDa)_-A?B02W;#fH!%k`daQLEItaJJ8Yf1L%8x;kg?)k)00P-lH+w z)5$QNV6r2$YtnV(4o=0^3{kmaXn*Dm0F*fU(@o)yVVjk|ln8ea6BMy%vZAhW9|wvA z8RoDkVoMEz1d>|5(k0Nw>22ZT){V<3$^C-cN+|~hKt2)){+l-?3m@-$c?-dlzQ)q- zZ)j%n^gerV{|+t}9m1_&&Ly!9$rtG4XX|WQ8`xYzGC~U@nYh~g(z9)bdAl#xH)xd5a=@|qql z|FzEil{P5(@gy!4ek05i$>`E^G~{;pnf6ftpLh$h#W?^#4UkPfa;;?bsIe&kz!+40 zI|6`F2n020)-r`pFaZ38F!S-lJM-o&inOw|66=GMeP@xQU5ghQH{~5Uh~TMTd;I9` z>YhVB`e^EVj*S7JF39ZgNf}A-0DwOcTT63ydN$I3b?yBQtUI*_fae~kPvzoD$zjX3 zoqBe#>12im4WzZ=f^4+u=!lA|#r%1`WB0-6*3BL#at`47#ebPpR|D1b)3BjT34nYY z%Ds%d?5$|{LgOIaRO{{oC&RK`O91$fqwM0(C_TALcozu*fWHb%%q&p-q{_8*2Zsi^ zh1ZCnr^UYa;4vQEtHk{~zi>wwMC5o{S=$P0X681y`SXwFH?Ewn{x-MOZynmc)JT5v zuHLwh;tLfxRrr%|k370}GofLl7thg>ACWWY&msqaVu&ry+`7+Ss>NL^%T1|z{IGMA zW-SKl=V-^{(f!Kf^#3(|T2W47d(%JVCI4JgRrT1pNz>+ietmFToNv^`gzC@&O-)+i zPQ~RwK8%C_vf%;%e>NyTp~dM5;!C|N0Q^6|CEb7Bw=Vz~$1#FA;Z*?mKSC)Hl-20s t8QyHj(g6VK0RYbl8UjE)0O0w=e*@m04r>stuEhWV002ovPDHLkV1hl;dM*F} literal 0 HcmV?d00001 diff --git a/doc/html/dynsections.js b/doc/html/dynsections.js new file mode 100644 index 0000000..537e3e4 --- /dev/null +++ b/doc/html/dynsections.js @@ -0,0 +1,127 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +uTL: Examples + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/doc/html/examples.js b/doc/html/examples.js new file mode 100644 index 0000000..c266fa1 --- /dev/null +++ b/doc/html/examples.js @@ -0,0 +1,7 @@ +var examples = +[ + [ "W:/Work/Software/Libraries/utl/include/utl/concepts/defines.h", "_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2concepts_2defines_8h-example.html", null ], + [ "W:/Work/Software/Libraries/utl/include/utl/meta/detection.h", "_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2detection_8h-example.html", null ], + [ "W:/Work/Software/Libraries/utl/include/utl/meta/invoke.h", "_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example.html", null ], + [ "W:/Work/Software/Libraries/utl/include/utl/meta/typelist.h", "_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example.html", null ] +]; \ No newline at end of file diff --git a/doc/html/files.html b/doc/html/files.html new file mode 100644 index 0000000..576c5ab --- /dev/null +++ b/doc/html/files.html @@ -0,0 +1,150 @@ + + + + + + + +uTL: File List + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
File List
+
+
+
Here is a list of all files with brief descriptions:
+
[detail level 1234]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  include
  utl
  com
 _1wire.hAn 1-wire interface implementation
 _1wire_id.hAn 1-wire Rom ID type
 _1wire_uart.hA 1-wire implementation using a microprocessor's uart for bit timing
 i2c.hAn Abstract base class interface for the i2c bus
 i2c_bb.hA bit banking implementation of i2c bus inherited from i2c_i base class
 spi.hAn Abstract base class interface for the spi bus
 spi_bb.hA bit banking implementation of spi bus inherited from spi_i base class
  concepts
 concepts.hConcepts main include header
 defines.hConcepts defines
 iterators.h
 stl.hSTL's Concepts
  container
 array.h
 id.hA container for device IDs
  core
 crtp.h
 impl.hImplementation detail main forward header
 types.hBasic type alias support
 version.hVersion and cpp version checks
  dev
 dev_iterators.hIterator collection for devices
 idx_dev.hAbstract base class implementations for indexed devices interface of utl
 in_dev.hAbstract base class interface for input devices of utl
 inbuf_dev.hAbstract base class interface for input buffered devices of utl
 ostream_dev.hAbstract base class interface for output devices of utl
 out_dev.hAbstract base class interface for output devices of utl
  meta
 detection.hDetection idiom based on WG21's N4502 [n4502 1] from Walter E. Brown
 integral.h
 invoke.h
 meta.hInclude all meta library
 operations.hIntegral constant operations and logical operations
 selection.hTemplate meta-programming type selections
 sfinae.hTemplate meta-programming SFINAE helpers
 typelist.hA template parameter "container"
 useif.hTemplate meta-programming SFINAE helpers
  utility
 invoke.hInvoke() and invoke traits implementation
+
+
+
+ + + + diff --git a/doc/html/files_dup.js b/doc/html/files_dup.js new file mode 100644 index 0000000..f1749d9 --- /dev/null +++ b/doc/html/files_dup.js @@ -0,0 +1,4 @@ +var files_dup = +[ + [ "include", "dir_d44c64559bbebec7f509842c48db8b23.html", "dir_d44c64559bbebec7f509842c48db8b23" ] +]; \ No newline at end of file diff --git a/doc/html/folderclosed.png b/doc/html/folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8ab35edce8e97554e360005ee9fc5bffb36e66 GIT binary patch literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA literal 0 HcmV?d00001 diff --git a/doc/html/functions.html b/doc/html/functions.html new file mode 100644 index 0000000..59ad4dd --- /dev/null +++ b/doc/html/functions.html @@ -0,0 +1,218 @@ + + + + + + + +uTL: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- _ -

+
+
+ + + + diff --git a/doc/html/functions_0x7e.html b/doc/html/functions_0x7e.html new file mode 100644 index 0000000..679cc7e --- /dev/null +++ b/doc/html/functions_0x7e.html @@ -0,0 +1,151 @@ + + + + + + + +uTL: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/doc/html/functions_a.html b/doc/html/functions_a.html new file mode 100644 index 0000000..974d81b --- /dev/null +++ b/doc/html/functions_a.html @@ -0,0 +1,134 @@ + + + + + + + +uTL: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/doc/html/functions_b.html b/doc/html/functions_b.html new file mode 100644 index 0000000..6594685 --- /dev/null +++ b/doc/html/functions_b.html @@ -0,0 +1,154 @@ + + + + + + + +uTL: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/doc/html/functions_c.html b/doc/html/functions_c.html new file mode 100644 index 0000000..9e589a0 --- /dev/null +++ b/doc/html/functions_c.html @@ -0,0 +1,267 @@ + + + + + + + +uTL: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- c -

+
+
+ + + + diff --git a/doc/html/functions_d.html b/doc/html/functions_d.html new file mode 100644 index 0000000..9a03f2e --- /dev/null +++ b/doc/html/functions_d.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/doc/html/functions_dup.js b/doc/html/functions_dup.js new file mode 100644 index 0000000..e8c9c0d --- /dev/null +++ b/doc/html/functions_dup.js @@ -0,0 +1,23 @@ +var functions_dup = +[ + [ "_", "functions.html", null ], + [ "a", "functions_a.html", null ], + [ "b", "functions_b.html", null ], + [ "c", "functions_c.html", null ], + [ "d", "functions_d.html", null ], + [ "e", "functions_e.html", null ], + [ "f", "functions_f.html", null ], + [ "g", "functions_g.html", null ], + [ "h", "functions_h.html", null ], + [ "i", "functions_i.html", null ], + [ "m", "functions_m.html", null ], + [ "n", "functions_n.html", null ], + [ "o", "functions_o.html", null ], + [ "p", "functions_p.html", null ], + [ "r", "functions_r.html", null ], + [ "s", "functions_s.html", null ], + [ "t", "functions_t.html", null ], + [ "u", "functions_u.html", null ], + [ "v", "functions_v.html", null ], + [ "~", "functions_0x7e.html", null ] +]; \ No newline at end of file diff --git a/doc/html/functions_e.html b/doc/html/functions_e.html new file mode 100644 index 0000000..26bfb7c --- /dev/null +++ b/doc/html/functions_e.html @@ -0,0 +1,131 @@ + + + + + + + +uTL: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/doc/html/functions_enum.html b/doc/html/functions_enum.html new file mode 100644 index 0000000..b408211 --- /dev/null +++ b/doc/html/functions_enum.html @@ -0,0 +1,128 @@ + + + + + + + +uTL: Class Members - Enumerations + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/doc/html/functions_eval.html b/doc/html/functions_eval.html new file mode 100644 index 0000000..966910f --- /dev/null +++ b/doc/html/functions_eval.html @@ -0,0 +1,183 @@ + + + + + + + +uTL: Class Members - Enumerator + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/doc/html/functions_f.html b/doc/html/functions_f.html new file mode 100644 index 0000000..560d40e --- /dev/null +++ b/doc/html/functions_f.html @@ -0,0 +1,119 @@ + + + + + + + +uTL: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- f -

+
+
+ + + + diff --git a/doc/html/functions_func.html b/doc/html/functions_func.html new file mode 100644 index 0000000..7f7e4b1 --- /dev/null +++ b/doc/html/functions_func.html @@ -0,0 +1,179 @@ + + + + + + + +uTL: Class Members - Functions + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- _ -

+
+
+ + + + diff --git a/doc/html/functions_func.js b/doc/html/functions_func.js new file mode 100644 index 0000000..8bf3803 --- /dev/null +++ b/doc/html/functions_func.js @@ -0,0 +1,22 @@ +var functions_func = +[ + [ "_", "functions_func.html", null ], + [ "a", "functions_func_a.html", null ], + [ "b", "functions_func_b.html", null ], + [ "c", "functions_func_c.html", null ], + [ "d", "functions_func_d.html", null ], + [ "e", "functions_func_e.html", null ], + [ "f", "functions_func_f.html", null ], + [ "g", "functions_func_g.html", null ], + [ "i", "functions_func_i.html", null ], + [ "m", "functions_func_m.html", null ], + [ "n", "functions_func_n.html", null ], + [ "o", "functions_func_o.html", null ], + [ "p", "functions_func_p.html", null ], + [ "r", "functions_func_r.html", null ], + [ "s", "functions_func_s.html", null ], + [ "t", "functions_func_t.html", null ], + [ "u", "functions_func_u.html", null ], + [ "v", "functions_func_v.html", null ], + [ "~", "functions_func_0x7e.html", null ] +]; \ No newline at end of file diff --git a/doc/html/functions_func_0x7e.html b/doc/html/functions_func_0x7e.html new file mode 100644 index 0000000..39a4967 --- /dev/null +++ b/doc/html/functions_func_0x7e.html @@ -0,0 +1,151 @@ + + + + + + + +uTL: Class Members - Functions + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/doc/html/functions_func_a.html b/doc/html/functions_func_a.html new file mode 100644 index 0000000..5d751c9 --- /dev/null +++ b/doc/html/functions_func_a.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Class Members - Functions + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- a -

+
+
+ + + + diff --git a/doc/html/functions_func_b.html b/doc/html/functions_func_b.html new file mode 100644 index 0000000..2ff451d --- /dev/null +++ b/doc/html/functions_func_b.html @@ -0,0 +1,129 @@ + + + + + + + +uTL: Class Members - Functions + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/doc/html/functions_func_c.html b/doc/html/functions_func_c.html new file mode 100644 index 0000000..0d8608e --- /dev/null +++ b/doc/html/functions_func_c.html @@ -0,0 +1,177 @@ + + + + + + + +uTL: Class Members - Functions + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- c -

+
+
+ + + + diff --git a/doc/html/functions_func_d.html b/doc/html/functions_func_d.html new file mode 100644 index 0000000..4895f84 --- /dev/null +++ b/doc/html/functions_func_d.html @@ -0,0 +1,114 @@ + + + + + + + +uTL: Class Members - Functions + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/doc/html/functions_func_e.html b/doc/html/functions_func_e.html new file mode 100644 index 0000000..cadb093 --- /dev/null +++ b/doc/html/functions_func_e.html @@ -0,0 +1,123 @@ + + + + + + + +uTL: Class Members - Functions + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/doc/html/functions_func_f.html b/doc/html/functions_func_f.html new file mode 100644 index 0000000..bb859e3 --- /dev/null +++ b/doc/html/functions_func_f.html @@ -0,0 +1,119 @@ + + + + + + + +uTL: Class Members - Functions + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ + +
+ + + + diff --git a/doc/html/functions_func_g.html b/doc/html/functions_func_g.html new file mode 100644 index 0000000..c93b465 --- /dev/null +++ b/doc/html/functions_func_g.html @@ -0,0 +1,120 @@ + + + + + + + +uTL: Class Members - Functions + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/doc/html/functions_func_h.html b/doc/html/functions_func_h.html new file mode 100644 index 0000000..71cbaf6 --- /dev/null +++ b/doc/html/functions_func_h.html @@ -0,0 +1,127 @@ + + + + + + + +uTL: Class Members - Functions + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- h -

+
+
+ + + + diff --git a/doc/html/functions_func_i.html b/doc/html/functions_func_i.html new file mode 100644 index 0000000..04f3f43 --- /dev/null +++ b/doc/html/functions_func_i.html @@ -0,0 +1,141 @@ + + + + + + + +uTL: Class Members - Functions + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/doc/html/functions_func_k.html b/doc/html/functions_func_k.html new file mode 100644 index 0000000..677a07d --- /dev/null +++ b/doc/html/functions_func_k.html @@ -0,0 +1,107 @@ + + + + + + + +uTL: Class Members - Functions + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- k -

+
+
+ + + + diff --git a/doc/html/functions_func_l.html b/doc/html/functions_func_l.html new file mode 100644 index 0000000..d081f38 --- /dev/null +++ b/doc/html/functions_func_l.html @@ -0,0 +1,113 @@ + + + + + + + +uTL: Class Members - Functions + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- l -

+
+
+ + + + diff --git a/doc/html/functions_func_m.html b/doc/html/functions_func_m.html new file mode 100644 index 0000000..4a7e32c --- /dev/null +++ b/doc/html/functions_func_m.html @@ -0,0 +1,124 @@ + + + + + + + +uTL: Class Members - Functions + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/doc/html/functions_func_n.html b/doc/html/functions_func_n.html new file mode 100644 index 0000000..03b1012 --- /dev/null +++ b/doc/html/functions_func_n.html @@ -0,0 +1,114 @@ + + + + + + + +uTL: Class Members - Functions + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- n -

+
+
+ + + + diff --git a/doc/html/functions_func_o.html b/doc/html/functions_func_o.html new file mode 100644 index 0000000..38214f5 --- /dev/null +++ b/doc/html/functions_func_o.html @@ -0,0 +1,218 @@ + + + + + + + +uTL: Class Members - Functions + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- o -

+
+
+ + + + diff --git a/doc/html/functions_func_p.html b/doc/html/functions_func_p.html new file mode 100644 index 0000000..69a5e22 --- /dev/null +++ b/doc/html/functions_func_p.html @@ -0,0 +1,126 @@ + + + + + + + +uTL: Class Members - Functions + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/doc/html/functions_func_r.html b/doc/html/functions_func_r.html new file mode 100644 index 0000000..53d3476 --- /dev/null +++ b/doc/html/functions_func_r.html @@ -0,0 +1,130 @@ + + + + + + + +uTL: Class Members - Functions + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/doc/html/functions_func_s.html b/doc/html/functions_func_s.html new file mode 100644 index 0000000..798e3f1 --- /dev/null +++ b/doc/html/functions_func_s.html @@ -0,0 +1,162 @@ + + + + + + + +uTL: Class Members - Functions + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/doc/html/functions_func_t.html b/doc/html/functions_func_t.html new file mode 100644 index 0000000..8f24ac7 --- /dev/null +++ b/doc/html/functions_func_t.html @@ -0,0 +1,112 @@ + + + + + + + +uTL: Class Members - Functions + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/doc/html/functions_func_u.html b/doc/html/functions_func_u.html new file mode 100644 index 0000000..2b937ce --- /dev/null +++ b/doc/html/functions_func_u.html @@ -0,0 +1,112 @@ + + + + + + + +uTL: Class Members - Functions + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ + +
+ + + + diff --git a/doc/html/functions_func_v.html b/doc/html/functions_func_v.html new file mode 100644 index 0000000..2cdd1e4 --- /dev/null +++ b/doc/html/functions_func_v.html @@ -0,0 +1,110 @@ + + + + + + + +uTL: Class Members - Functions + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ + +
+ + + + diff --git a/doc/html/functions_g.html b/doc/html/functions_g.html new file mode 100644 index 0000000..4bb6c11 --- /dev/null +++ b/doc/html/functions_g.html @@ -0,0 +1,120 @@ + + + + + + + +uTL: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/doc/html/functions_h.html b/doc/html/functions_h.html new file mode 100644 index 0000000..4166628 --- /dev/null +++ b/doc/html/functions_h.html @@ -0,0 +1,107 @@ + + + + + + + +uTL: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- h -

+
+
+ + + + diff --git a/doc/html/functions_i.html b/doc/html/functions_i.html new file mode 100644 index 0000000..1b4d7b2 --- /dev/null +++ b/doc/html/functions_i.html @@ -0,0 +1,192 @@ + + + + + + + +uTL: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- i -

+
+
+ + + + diff --git a/doc/html/functions_k.html b/doc/html/functions_k.html new file mode 100644 index 0000000..2bb0361 --- /dev/null +++ b/doc/html/functions_k.html @@ -0,0 +1,131 @@ + + + + + + + +uTL: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- k -

+
+
+ + + + diff --git a/doc/html/functions_l.html b/doc/html/functions_l.html new file mode 100644 index 0000000..870e942 --- /dev/null +++ b/doc/html/functions_l.html @@ -0,0 +1,114 @@ + + + + + + + +uTL: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- l -

+
+
+ + + + diff --git a/doc/html/functions_m.html b/doc/html/functions_m.html new file mode 100644 index 0000000..1d76cf1 --- /dev/null +++ b/doc/html/functions_m.html @@ -0,0 +1,124 @@ + + + + + + + +uTL: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/doc/html/functions_n.html b/doc/html/functions_n.html new file mode 100644 index 0000000..abd15be --- /dev/null +++ b/doc/html/functions_n.html @@ -0,0 +1,121 @@ + + + + + + + +uTL: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- n -

+
+
+ + + + diff --git a/doc/html/functions_o.html b/doc/html/functions_o.html new file mode 100644 index 0000000..7209397 --- /dev/null +++ b/doc/html/functions_o.html @@ -0,0 +1,233 @@ + + + + + + + +uTL: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- o -

+
+
+ + + + diff --git a/doc/html/functions_p.html b/doc/html/functions_p.html new file mode 100644 index 0000000..7189887 --- /dev/null +++ b/doc/html/functions_p.html @@ -0,0 +1,152 @@ + + + + + + + +uTL: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- p -

+
+
+ + + + diff --git a/doc/html/functions_r.html b/doc/html/functions_r.html new file mode 100644 index 0000000..1f925cc --- /dev/null +++ b/doc/html/functions_r.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/doc/html/functions_rela.html b/doc/html/functions_rela.html new file mode 100644 index 0000000..1b3ccfc --- /dev/null +++ b/doc/html/functions_rela.html @@ -0,0 +1,130 @@ + + + + + + + +uTL: Class Members - Related Functions + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
+ + + + diff --git a/doc/html/functions_s.html b/doc/html/functions_s.html new file mode 100644 index 0000000..7018249 --- /dev/null +++ b/doc/html/functions_s.html @@ -0,0 +1,196 @@ + + + + + + + +uTL: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- s -

+
+
+ + + + diff --git a/doc/html/functions_t.html b/doc/html/functions_t.html new file mode 100644 index 0000000..c711076 --- /dev/null +++ b/doc/html/functions_t.html @@ -0,0 +1,218 @@ + + + + + + + +uTL: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- t -

+
+
+ + + + diff --git a/doc/html/functions_type.html b/doc/html/functions_type.html new file mode 100644 index 0000000..c59d17b --- /dev/null +++ b/doc/html/functions_type.html @@ -0,0 +1,130 @@ + + + + + + + +uTL: Class Members - Typedefs + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/doc/html/functions_type.js b/doc/html/functions_type.js new file mode 100644 index 0000000..24b94b1 --- /dev/null +++ b/doc/html/functions_type.js @@ -0,0 +1,14 @@ +var functions_type = +[ + [ "a", "functions_type.html", null ], + [ "c", "functions_type_c.html", null ], + [ "d", "functions_type_d.html", null ], + [ "h", "functions_type_h.html", null ], + [ "i", "functions_type_i.html", null ], + [ "o", "functions_type_o.html", null ], + [ "p", "functions_type_p.html", null ], + [ "r", "functions_type_r.html", null ], + [ "s", "functions_type_s.html", null ], + [ "t", "functions_type_t.html", null ], + [ "v", "functions_type_v.html", null ] +]; \ No newline at end of file diff --git a/doc/html/functions_type_b.html b/doc/html/functions_type_b.html new file mode 100644 index 0000000..9e23bca --- /dev/null +++ b/doc/html/functions_type_b.html @@ -0,0 +1,107 @@ + + + + + + + +uTL: Class Members - Typedefs + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- b -

+
+
+ + + + diff --git a/doc/html/functions_type_c.html b/doc/html/functions_type_c.html new file mode 100644 index 0000000..e3f2910 --- /dev/null +++ b/doc/html/functions_type_c.html @@ -0,0 +1,130 @@ + + + + + + + +uTL: Class Members - Typedefs + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/doc/html/functions_type_d.html b/doc/html/functions_type_d.html new file mode 100644 index 0000000..a59073c --- /dev/null +++ b/doc/html/functions_type_d.html @@ -0,0 +1,130 @@ + + + + + + + +uTL: Class Members - Typedefs + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/doc/html/functions_type_h.html b/doc/html/functions_type_h.html new file mode 100644 index 0000000..cc1e53e --- /dev/null +++ b/doc/html/functions_type_h.html @@ -0,0 +1,107 @@ + + + + + + + +uTL: Class Members - Typedefs + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ + +
+ + + + diff --git a/doc/html/functions_type_i.html b/doc/html/functions_type_i.html new file mode 100644 index 0000000..9696df6 --- /dev/null +++ b/doc/html/functions_type_i.html @@ -0,0 +1,149 @@ + + + + + + + +uTL: Class Members - Typedefs + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- i -

+
+
+ + + + diff --git a/doc/html/functions_type_o.html b/doc/html/functions_type_o.html new file mode 100644 index 0000000..f943181 --- /dev/null +++ b/doc/html/functions_type_o.html @@ -0,0 +1,112 @@ + + + + + + + +uTL: Class Members - Typedefs + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/doc/html/functions_type_p.html b/doc/html/functions_type_p.html new file mode 100644 index 0000000..78fc4ae --- /dev/null +++ b/doc/html/functions_type_p.html @@ -0,0 +1,126 @@ + + + + + + + +uTL: Class Members - Typedefs + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/doc/html/functions_type_r.html b/doc/html/functions_type_r.html new file mode 100644 index 0000000..d50cfa4 --- /dev/null +++ b/doc/html/functions_type_r.html @@ -0,0 +1,118 @@ + + + + + + + +uTL: Class Members - Typedefs + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/doc/html/functions_type_s.html b/doc/html/functions_type_s.html new file mode 100644 index 0000000..1a1865c --- /dev/null +++ b/doc/html/functions_type_s.html @@ -0,0 +1,116 @@ + + + + + + + +uTL: Class Members - Typedefs + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/doc/html/functions_type_t.html b/doc/html/functions_type_t.html new file mode 100644 index 0000000..f863bd2 --- /dev/null +++ b/doc/html/functions_type_t.html @@ -0,0 +1,210 @@ + + + + + + + +uTL: Class Members - Typedefs + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- t -

+
+
+ + + + diff --git a/doc/html/functions_type_u.html b/doc/html/functions_type_u.html new file mode 100644 index 0000000..b2325c7 --- /dev/null +++ b/doc/html/functions_type_u.html @@ -0,0 +1,109 @@ + + + + + + + +uTL: Class Members - Typedefs + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/doc/html/functions_type_v.html b/doc/html/functions_type_v.html new file mode 100644 index 0000000..eb11484 --- /dev/null +++ b/doc/html/functions_type_v.html @@ -0,0 +1,114 @@ + + + + + + + +uTL: Class Members - Typedefs + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/doc/html/functions_u.html b/doc/html/functions_u.html new file mode 100644 index 0000000..013baf1 --- /dev/null +++ b/doc/html/functions_u.html @@ -0,0 +1,116 @@ + + + + + + + +uTL: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- u -

+
+
+ + + + diff --git a/doc/html/functions_v.html b/doc/html/functions_v.html new file mode 100644 index 0000000..50b8cf3 --- /dev/null +++ b/doc/html/functions_v.html @@ -0,0 +1,131 @@ + + + + + + + +uTL: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ + + + + + diff --git a/doc/html/functions_vars.html b/doc/html/functions_vars.html new file mode 100644 index 0000000..a7570bd --- /dev/null +++ b/doc/html/functions_vars.html @@ -0,0 +1,209 @@ + + + + + + + +uTL: Class Members - Variables + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- _ -

+ + +

- c -

+ + +

- d -

+ + +

- i -

+ + +

- n -

+ + +

- o -

+ + +

- p -

+ + +

- s -

+ + +

- u -

+ + +

- v -

+
+
+ + + + diff --git a/doc/html/globals.html b/doc/html/globals.html new file mode 100644 index 0000000..0572529 --- /dev/null +++ b/doc/html/globals.html @@ -0,0 +1,156 @@ + + + + + + + +uTL: File Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all file members with links to the files they belong to:
+
+
+ + + + diff --git a/doc/html/globals_a.html b/doc/html/globals_a.html new file mode 100644 index 0000000..f6eabe1 --- /dev/null +++ b/doc/html/globals_a.html @@ -0,0 +1,200 @@ + + + + + + + +uTL: File Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- a -

+
+
+ + + + diff --git a/doc/html/globals_c.html b/doc/html/globals_c.html new file mode 100644 index 0000000..7c0f6a1 --- /dev/null +++ b/doc/html/globals_c.html @@ -0,0 +1,131 @@ + + + + + + + +uTL: File Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- c -

+
+
+ + + + diff --git a/doc/html/globals_defs.html b/doc/html/globals_defs.html new file mode 100644 index 0000000..d47d129 --- /dev/null +++ b/doc/html/globals_defs.html @@ -0,0 +1,156 @@ + + + + + + + +uTL: File Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
+ + + + diff --git a/doc/html/globals_defs.js b/doc/html/globals_defs.js new file mode 100644 index 0000000..0d3b7ab --- /dev/null +++ b/doc/html/globals_defs.js @@ -0,0 +1,13 @@ +var globals_defs = +[ + [ "_", "globals_defs.html", null ], + [ "a", "globals_defs_a.html", null ], + [ "c", "globals_defs_c.html", null ], + [ "e", "globals_defs_e.html", null ], + [ "f", "globals_defs_f.html", null ], + [ "g", "globals_defs_g.html", null ], + [ "i", "globals_defs_i.html", null ], + [ "s", "globals_defs_s.html", null ], + [ "t", "globals_defs_t.html", null ], + [ "u", "globals_defs_u.html", null ] +]; \ No newline at end of file diff --git a/doc/html/globals_defs_a.html b/doc/html/globals_defs_a.html new file mode 100644 index 0000000..3e867b9 --- /dev/null +++ b/doc/html/globals_defs_a.html @@ -0,0 +1,200 @@ + + + + + + + +uTL: File Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- a -

+
+
+ + + + diff --git a/doc/html/globals_defs_c.html b/doc/html/globals_defs_c.html new file mode 100644 index 0000000..9047fbd --- /dev/null +++ b/doc/html/globals_defs_c.html @@ -0,0 +1,131 @@ + + + + + + + +uTL: File Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- c -

+
+
+ + + + diff --git a/doc/html/globals_defs_e.html b/doc/html/globals_defs_e.html new file mode 100644 index 0000000..1e29a09 --- /dev/null +++ b/doc/html/globals_defs_e.html @@ -0,0 +1,206 @@ + + + + + + + +uTL: File Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- e -

+
+
+ + + + diff --git a/doc/html/globals_defs_f.html b/doc/html/globals_defs_f.html new file mode 100644 index 0000000..e82a749 --- /dev/null +++ b/doc/html/globals_defs_f.html @@ -0,0 +1,110 @@ + + + + + + + +uTL: File Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- f -

+
+
+ + + + diff --git a/doc/html/globals_defs_g.html b/doc/html/globals_defs_g.html new file mode 100644 index 0000000..28e5ed4 --- /dev/null +++ b/doc/html/globals_defs_g.html @@ -0,0 +1,513 @@ + + + + + + + +uTL: File Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- g -

    +
  • GTEST_ADD_REFERENCE_ +: gtest.h +
  • +
  • GTEST_AMBIGUOUS_ELSE_BLOCKER_ +: gtest.h +
  • +
  • GTEST_API_ +: gtest.h +
  • +
  • GTEST_ARRAY_SIZE_ +: gtest.h +
  • +
  • GTEST_ASSERT_ +: gtest.h +
  • +
  • GTEST_ASSERT_EQ +: gtest.h +
  • +
  • GTEST_ASSERT_GE +: gtest.h +
  • +
  • GTEST_ASSERT_GT +: gtest.h +
  • +
  • GTEST_ASSERT_LE +: gtest.h +
  • +
  • GTEST_ASSERT_LT +: gtest.h +
  • +
  • GTEST_ASSERT_NE +: gtest.h +
  • +
  • GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_ +: gtest.h +
  • +
  • GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_ +: gtest.h +
  • +
  • GTEST_ATTRIBUTE_NO_SANITIZE_THREAD_ +: gtest.h +
  • +
  • GTEST_ATTRIBUTE_PRINTF_ +: gtest.h +
  • +
  • GTEST_ATTRIBUTE_UNUSED_ +: gtest.h +
  • +
  • GTEST_CHECK_ +: gtest.h +
  • +
  • GTEST_CHECK_POSIX_SUCCESS_ +: gtest.h +
  • +
  • GTEST_COMPILE_ASSERT_ +: gtest.h +
  • +
  • GTEST_CONCAT_TOKEN_ +: gtest.h +
  • +
  • GTEST_CONCAT_TOKEN_IMPL_ +: gtest.h +
  • +
  • GTEST_DECLARE_bool_ +: gtest.h +
  • +
  • GTEST_DECLARE_int32_ +: gtest.h +
  • +
  • GTEST_DECLARE_STATIC_MUTEX_ +: gtest.h +
  • +
  • GTEST_DECLARE_string_ +: gtest.h +
  • +
  • GTEST_DEFAULT_DEATH_TEST_STYLE +: gtest.h +
  • +
  • GTEST_DEFINE_bool_ +: gtest.h +
  • +
  • GTEST_DEFINE_int32_ +: gtest.h +
  • +
  • GTEST_DEFINE_STATIC_MUTEX_ +: gtest.h +
  • +
  • GTEST_DEFINE_string_ +: gtest.h +
  • +
  • GTEST_DEV_EMAIL_ +: gtest.h +
  • +
  • GTEST_DISABLE_MSC_DEPRECATED_POP_ +: gtest.h +
  • +
  • GTEST_DISABLE_MSC_DEPRECATED_PUSH_ +: gtest.h +
  • +
  • GTEST_DISABLE_MSC_WARNINGS_POP_ +: gtest.h +
  • +
  • GTEST_DISABLE_MSC_WARNINGS_PUSH_ +: gtest.h +
  • +
  • GTEST_DISALLOW_ASSIGN_ +: gtest.h +
  • +
  • GTEST_DISALLOW_COPY_AND_ASSIGN_ +: gtest.h +
  • +
  • GTEST_EXCLUSIVE_LOCK_REQUIRED_ +: gtest.h +
  • +
  • GTEST_FAIL +: gtest.h +
  • +
  • GTEST_FATAL_FAILURE_ +: gtest.h +
  • +
  • GTEST_FLAG +: gtest.h +
  • +
  • GTEST_FLAG_PREFIX_ +: gtest.h +
  • +
  • GTEST_FLAG_PREFIX_DASH_ +: gtest.h +
  • +
  • GTEST_FLAG_PREFIX_UPPER_ +: gtest.h +
  • +
  • GTEST_FLAG_SAVER_ +: gtest.h +
  • +
  • GTEST_HAS_ALT_PATH_SEP_ +: gtest.h +
  • +
  • GTEST_HAS_CLONE +: gtest.h +
  • +
  • GTEST_HAS_CXXABI_H_ +: gtest.h +
  • +
  • GTEST_HAS_EXCEPTIONS +: gtest.h +
  • +
  • GTEST_HAS_GETTIMEOFDAY_ +: gtest-all.cc +
  • +
  • GTEST_HAS_GLOBAL_STRING +: gtest.h +
  • +
  • GTEST_HAS_GLOBAL_WSTRING +: gtest.h +
  • +
  • GTEST_HAS_POSIX_RE +: gtest.h +
  • +
  • GTEST_HAS_PTHREAD +: gtest.h +
  • +
  • GTEST_HAS_RTTI +: gtest.h +
  • +
  • GTEST_HAS_SEH +: gtest.h +
  • +
  • GTEST_HAS_STD_STRING +: gtest.h +
  • +
  • GTEST_HAS_STD_WSTRING +: gtest.h +
  • +
  • GTEST_HAS_STREAM_REDIRECTION +: gtest.h +
  • +
  • GTEST_IMPL_CMP_HELPER_ +: gtest-all.cc +, gtest.h +
  • +
  • GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_ +: gtest.h +
  • +
  • GTEST_IMPL_FORMAT_C_STRING_AS_STRING_ +: gtest.h +
  • +
  • GTEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_ +: gtest.h +
  • +
  • GTEST_INCLUDE_GTEST_GTEST_MATCHERS_H_ +: gtest.h +
  • +
  • GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_ +: gtest.h +
  • +
  • GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_ +: gtest.h +
  • +
  • GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_ +: gtest.h +
  • +
  • GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_ +: gtest.h +
  • +
  • GTEST_INCLUDE_GTEST_GTEST_PROD_H_ +: gtest.h +
  • +
  • GTEST_INCLUDE_GTEST_GTEST_SPI_H_ +: gtest-all.cc +
  • +
  • GTEST_INCLUDE_GTEST_GTEST_TEST_PART_H_ +: gtest.h +
  • +
  • GTEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_ +: gtest.h +
  • +
  • GTEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_PORT_H_ +: gtest.h +
  • +
  • GTEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_PRINTERS_H_ +: gtest.h +
  • +
  • GTEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_ +: gtest.h +
  • +
  • GTEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_ +: gtest.h +
  • +
  • GTEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_ +: gtest.h +
  • +
  • GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_ +: gtest.h +
  • +
  • GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_ +: gtest.h +
  • +
  • GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_ARCH_H_ +: gtest.h +
  • +
  • GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_ +: gtest.h +
  • +
  • GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_ +: gtest.h +
  • +
  • GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_ +: gtest.h +
  • +
  • GTEST_INIT_GOOGLE_TEST_NAME_ +: gtest.h +
  • +
  • GTEST_INTENTIONAL_CONST_COND_POP_ +: gtest.h +
  • +
  • GTEST_INTENTIONAL_CONST_COND_PUSH_ +: gtest.h +
  • +
  • GTEST_INTERNAL_DEPRECATED +: gtest.h +
  • +
  • GTEST_IS_NULL_LITERAL_ +: gtest.h +
  • +
  • GTEST_IS_THREADSAFE +: gtest.h +
  • +
  • GTEST_LOCK_EXCLUDED_ +: gtest.h +
  • +
  • GTEST_LOG_ +: gtest.h +
  • +
  • GTEST_MESSAGE_ +: gtest.h +
  • +
  • GTEST_MESSAGE_AT_ +: gtest.h +
  • +
  • GTEST_MUST_USE_RESULT_ +: gtest.h +
  • +
  • GTEST_NAME_ +: gtest.h +
  • +
  • GTEST_NO_INLINE_ +: gtest.h +
  • +
  • GTEST_NONFATAL_FAILURE_ +: gtest.h +
  • +
  • GTEST_PATH_MAX_ +: gtest-all.cc +
  • +
  • GTEST_PATH_SEP_ +: gtest.h +
  • +
  • GTEST_PRED1_ +: gtest.h +
  • +
  • GTEST_PRED2_ +: gtest.h +
  • +
  • GTEST_PRED3_ +: gtest.h +
  • +
  • GTEST_PRED4_ +: gtest.h +
  • +
  • GTEST_PRED5_ +: gtest.h +
  • +
  • GTEST_PRED_FORMAT1_ +: gtest.h +
  • +
  • GTEST_PRED_FORMAT2_ +: gtest.h +
  • +
  • GTEST_PRED_FORMAT3_ +: gtest.h +
  • +
  • GTEST_PRED_FORMAT4_ +: gtest.h +
  • +
  • GTEST_PRED_FORMAT5_ +: gtest.h +
  • +
  • GTEST_PROJECT_URL_ +: gtest.h +
  • +
  • GTEST_REFERENCE_TO_CONST_ +: gtest.h +
  • +
  • GTEST_REMOVE_CONST_ +: gtest.h +
  • +
  • GTEST_REMOVE_REFERENCE_ +: gtest.h +
  • +
  • GTEST_REMOVE_REFERENCE_AND_CONST_ +: gtest.h +
  • +
  • GTEST_REPEATER_METHOD_ +: gtest-all.cc +
  • +
  • GTEST_REVERSE_REPEATER_METHOD_ +: gtest-all.cc +
  • +
  • GTEST_SKIP +: gtest.h +
  • +
  • GTEST_SKIP_ +: gtest.h +
  • +
  • GTEST_SNPRINTF_ +: gtest.h +
  • +
  • GTEST_SRC_GTEST_INTERNAL_INL_H_ +: gtest-all.cc +
  • +
  • GTEST_STRINGIFY_ +: gtest.h +
  • +
  • GTEST_SUCCEED +: gtest.h +
  • +
  • GTEST_SUCCESS_ +: gtest.h +
  • +
  • GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_ +: gtest.h +
  • +
  • GTEST_TEST +: gtest.h +
  • +
  • GTEST_TEST_ +: gtest.h +
  • +
  • GTEST_TEST_ANY_THROW_ +: gtest.h +
  • +
  • GTEST_TEST_BOOLEAN_ +: gtest.h +
  • +
  • GTEST_TEST_CLASS_NAME_ +: gtest.h +
  • +
  • GTEST_TEST_NO_FATAL_FAILURE_ +: gtest.h +
  • +
  • GTEST_TEST_NO_THROW_ +: gtest.h +
  • +
  • GTEST_TEST_THROW_ +: gtest.h +
  • +
  • GTEST_UNSUPPORTED_DEATH_TEST +: gtest.h +
  • +
  • GTEST_USE_OWN_FLAGFILE_FLAG_ +: gtest.h +
  • +
  • GTEST_USES_POSIX_RE +: gtest.h +
  • +
  • GTEST_WIDE_STRING_USES_UTF16_ +: gtest.h +
  • +
+
+
+ + + + diff --git a/doc/html/globals_defs_i.html b/doc/html/globals_defs_i.html new file mode 100644 index 0000000..b71ff0f --- /dev/null +++ b/doc/html/globals_defs_i.html @@ -0,0 +1,110 @@ + + + + + + + +uTL: File Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- i -

    +
  • INSTANTIATE_TEST_CASE_P +: gtest.h +
  • +
  • INSTANTIATE_TEST_SUITE_P +: gtest.h +
  • +
+
+
+ + + + diff --git a/doc/html/globals_defs_s.html b/doc/html/globals_defs_s.html new file mode 100644 index 0000000..83d65e6 --- /dev/null +++ b/doc/html/globals_defs_s.html @@ -0,0 +1,110 @@ + + + + + + + +uTL: File Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- s -

+
+
+ + + + diff --git a/doc/html/globals_defs_t.html b/doc/html/globals_defs_t.html new file mode 100644 index 0000000..a2d2eb8 --- /dev/null +++ b/doc/html/globals_defs_t.html @@ -0,0 +1,113 @@ + + + + + + + +uTL: File Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- t -

+
+
+ + + + diff --git a/doc/html/globals_defs_u.html b/doc/html/globals_defs_u.html new file mode 100644 index 0000000..1a50424 --- /dev/null +++ b/doc/html/globals_defs_u.html @@ -0,0 +1,122 @@ + + + + + + + +uTL: File Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- u -

+
+
+ + + + diff --git a/doc/html/globals_dup.js b/doc/html/globals_dup.js new file mode 100644 index 0000000..f0b3aad --- /dev/null +++ b/doc/html/globals_dup.js @@ -0,0 +1,15 @@ +var globals_dup = +[ + [ "_", "globals.html", null ], + [ "a", "globals_a.html", null ], + [ "c", "globals_c.html", null ], + [ "e", "globals_e.html", null ], + [ "f", "globals_f.html", null ], + [ "g", "globals_g.html", null ], + [ "i", "globals_i.html", null ], + [ "m", "globals_m.html", null ], + [ "r", "globals_r.html", null ], + [ "s", "globals_s.html", null ], + [ "t", "globals_t.html", null ], + [ "u", "globals_u.html", null ] +]; \ No newline at end of file diff --git a/doc/html/globals_e.html b/doc/html/globals_e.html new file mode 100644 index 0000000..a4de6c2 --- /dev/null +++ b/doc/html/globals_e.html @@ -0,0 +1,206 @@ + + + + + + + +uTL: File Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- e -

+
+
+ + + + diff --git a/doc/html/globals_f.html b/doc/html/globals_f.html new file mode 100644 index 0000000..3a2a7d2 --- /dev/null +++ b/doc/html/globals_f.html @@ -0,0 +1,110 @@ + + + + + + + +uTL: File Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- f -

+
+
+ + + + diff --git a/doc/html/globals_func.html b/doc/html/globals_func.html new file mode 100644 index 0000000..4080d26 --- /dev/null +++ b/doc/html/globals_func.html @@ -0,0 +1,115 @@ + + + + + + + +uTL: File Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
+ + + + diff --git a/doc/html/globals_g.html b/doc/html/globals_g.html new file mode 100644 index 0000000..e9cab8e --- /dev/null +++ b/doc/html/globals_g.html @@ -0,0 +1,516 @@ + + + + + + + +uTL: File Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- g -

    +
  • GTEST_ADD_REFERENCE_ +: gtest.h +
  • +
  • GTEST_AMBIGUOUS_ELSE_BLOCKER_ +: gtest.h +
  • +
  • GTEST_API_ +: gtest.h +
  • +
  • GTEST_ARRAY_SIZE_ +: gtest.h +
  • +
  • GTEST_ASSERT_ +: gtest.h +
  • +
  • GTEST_ASSERT_EQ +: gtest.h +
  • +
  • GTEST_ASSERT_GE +: gtest.h +
  • +
  • GTEST_ASSERT_GT +: gtest.h +
  • +
  • GTEST_ASSERT_LE +: gtest.h +
  • +
  • GTEST_ASSERT_LT +: gtest.h +
  • +
  • GTEST_ASSERT_NE +: gtest.h +
  • +
  • GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_ +: gtest.h +
  • +
  • GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_ +: gtest.h +
  • +
  • GTEST_ATTRIBUTE_NO_SANITIZE_THREAD_ +: gtest.h +
  • +
  • GTEST_ATTRIBUTE_PRINTF_ +: gtest.h +
  • +
  • GTEST_ATTRIBUTE_UNUSED_ +: gtest.h +
  • +
  • GTEST_CHECK_ +: gtest.h +
  • +
  • GTEST_CHECK_POSIX_SUCCESS_ +: gtest.h +
  • +
  • GTEST_COMPILE_ASSERT_ +: gtest.h +
  • +
  • GTEST_CONCAT_TOKEN_ +: gtest.h +
  • +
  • GTEST_CONCAT_TOKEN_IMPL_ +: gtest.h +
  • +
  • GTEST_DECLARE_bool_ +: gtest.h +
  • +
  • GTEST_DECLARE_int32_ +: gtest.h +
  • +
  • GTEST_DECLARE_STATIC_MUTEX_ +: gtest.h +
  • +
  • GTEST_DECLARE_string_ +: gtest.h +
  • +
  • GTEST_DEFAULT_DEATH_TEST_STYLE +: gtest.h +
  • +
  • GTEST_DEFINE_bool_ +: gtest.h +
  • +
  • GTEST_DEFINE_int32_ +: gtest.h +
  • +
  • GTEST_DEFINE_STATIC_MUTEX_ +: gtest.h +
  • +
  • GTEST_DEFINE_string_ +: gtest.h +
  • +
  • GTEST_DEV_EMAIL_ +: gtest.h +
  • +
  • GTEST_DISABLE_MSC_DEPRECATED_POP_ +: gtest.h +
  • +
  • GTEST_DISABLE_MSC_DEPRECATED_PUSH_ +: gtest.h +
  • +
  • GTEST_DISABLE_MSC_WARNINGS_POP_ +: gtest.h +, gtest-all.cc +
  • +
  • GTEST_DISABLE_MSC_WARNINGS_PUSH_ +: gtest.h +, gtest-all.cc +, gtest.h +
  • +
  • GTEST_DISALLOW_ASSIGN_ +: gtest.h +
  • +
  • GTEST_DISALLOW_COPY_AND_ASSIGN_ +: gtest.h +
  • +
  • GTEST_EXCLUSIVE_LOCK_REQUIRED_ +: gtest.h +
  • +
  • GTEST_FAIL +: gtest.h +
  • +
  • GTEST_FATAL_FAILURE_ +: gtest.h +
  • +
  • GTEST_FLAG +: gtest.h +
  • +
  • GTEST_FLAG_PREFIX_ +: gtest.h +
  • +
  • GTEST_FLAG_PREFIX_DASH_ +: gtest.h +
  • +
  • GTEST_FLAG_PREFIX_UPPER_ +: gtest.h +
  • +
  • GTEST_FLAG_SAVER_ +: gtest.h +
  • +
  • GTEST_HAS_ALT_PATH_SEP_ +: gtest.h +
  • +
  • GTEST_HAS_CLONE +: gtest.h +
  • +
  • GTEST_HAS_CXXABI_H_ +: gtest.h +
  • +
  • GTEST_HAS_EXCEPTIONS +: gtest.h +
  • +
  • GTEST_HAS_GETTIMEOFDAY_ +: gtest-all.cc +
  • +
  • GTEST_HAS_GLOBAL_STRING +: gtest.h +
  • +
  • GTEST_HAS_GLOBAL_WSTRING +: gtest.h +
  • +
  • GTEST_HAS_POSIX_RE +: gtest.h +
  • +
  • GTEST_HAS_PTHREAD +: gtest.h +
  • +
  • GTEST_HAS_RTTI +: gtest.h +
  • +
  • GTEST_HAS_SEH +: gtest.h +
  • +
  • GTEST_HAS_STD_STRING +: gtest.h +
  • +
  • GTEST_HAS_STD_WSTRING +: gtest.h +
  • +
  • GTEST_HAS_STREAM_REDIRECTION +: gtest.h +
  • +
  • GTEST_IMPL_CMP_HELPER_ +: gtest.h +, gtest-all.cc +
  • +
  • GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_ +: gtest.h +
  • +
  • GTEST_IMPL_FORMAT_C_STRING_AS_STRING_ +: gtest.h +
  • +
  • GTEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_ +: gtest.h +
  • +
  • GTEST_INCLUDE_GTEST_GTEST_MATCHERS_H_ +: gtest.h +
  • +
  • GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_ +: gtest.h +
  • +
  • GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_ +: gtest.h +
  • +
  • GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_ +: gtest.h +
  • +
  • GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_ +: gtest.h +
  • +
  • GTEST_INCLUDE_GTEST_GTEST_PROD_H_ +: gtest.h +
  • +
  • GTEST_INCLUDE_GTEST_GTEST_SPI_H_ +: gtest-all.cc +
  • +
  • GTEST_INCLUDE_GTEST_GTEST_TEST_PART_H_ +: gtest.h +
  • +
  • GTEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_ +: gtest.h +
  • +
  • GTEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_PORT_H_ +: gtest.h +
  • +
  • GTEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_PRINTERS_H_ +: gtest.h +
  • +
  • GTEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_ +: gtest.h +
  • +
  • GTEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_ +: gtest.h +
  • +
  • GTEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_ +: gtest.h +
  • +
  • GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_ +: gtest.h +
  • +
  • GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_ +: gtest.h +
  • +
  • GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_ARCH_H_ +: gtest.h +
  • +
  • GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_ +: gtest.h +
  • +
  • GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_ +: gtest.h +
  • +
  • GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_ +: gtest.h +
  • +
  • GTEST_INIT_GOOGLE_TEST_NAME_ +: gtest.h +
  • +
  • GTEST_INTENTIONAL_CONST_COND_POP_ +: gtest.h +
  • +
  • GTEST_INTENTIONAL_CONST_COND_PUSH_ +: gtest.h +
  • +
  • GTEST_INTERNAL_DEPRECATED +: gtest.h +
  • +
  • GTEST_IS_NULL_LITERAL_ +: gtest.h +
  • +
  • GTEST_IS_THREADSAFE +: gtest.h +
  • +
  • GTEST_LOCK_EXCLUDED_ +: gtest.h +
  • +
  • GTEST_LOG_ +: gtest.h +
  • +
  • GTEST_MESSAGE_ +: gtest.h +
  • +
  • GTEST_MESSAGE_AT_ +: gtest.h +
  • +
  • GTEST_MUST_USE_RESULT_ +: gtest.h +
  • +
  • GTEST_NAME_ +: gtest.h +
  • +
  • GTEST_NO_INLINE_ +: gtest.h +
  • +
  • GTEST_NONFATAL_FAILURE_ +: gtest.h +
  • +
  • GTEST_PATH_MAX_ +: gtest-all.cc +
  • +
  • GTEST_PATH_SEP_ +: gtest.h +
  • +
  • GTEST_PRED1_ +: gtest.h +
  • +
  • GTEST_PRED2_ +: gtest.h +
  • +
  • GTEST_PRED3_ +: gtest.h +
  • +
  • GTEST_PRED4_ +: gtest.h +
  • +
  • GTEST_PRED5_ +: gtest.h +
  • +
  • GTEST_PRED_FORMAT1_ +: gtest.h +
  • +
  • GTEST_PRED_FORMAT2_ +: gtest.h +
  • +
  • GTEST_PRED_FORMAT3_ +: gtest.h +
  • +
  • GTEST_PRED_FORMAT4_ +: gtest.h +
  • +
  • GTEST_PRED_FORMAT5_ +: gtest.h +
  • +
  • GTEST_PROJECT_URL_ +: gtest.h +
  • +
  • GTEST_REFERENCE_TO_CONST_ +: gtest.h +
  • +
  • GTEST_REMOVE_CONST_ +: gtest.h +
  • +
  • GTEST_REMOVE_REFERENCE_ +: gtest.h +
  • +
  • GTEST_REMOVE_REFERENCE_AND_CONST_ +: gtest.h +
  • +
  • GTEST_REPEATER_METHOD_ +: gtest-all.cc +
  • +
  • GTEST_REVERSE_REPEATER_METHOD_ +: gtest-all.cc +
  • +
  • GTEST_SKIP +: gtest.h +
  • +
  • GTEST_SKIP_ +: gtest.h +
  • +
  • GTEST_SNPRINTF_ +: gtest.h +
  • +
  • GTEST_SRC_GTEST_INTERNAL_INL_H_ +: gtest-all.cc +
  • +
  • GTEST_STRINGIFY_ +: gtest.h +
  • +
  • GTEST_SUCCEED +: gtest.h +
  • +
  • GTEST_SUCCESS_ +: gtest.h +
  • +
  • GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_ +: gtest.h +
  • +
  • GTEST_TEST +: gtest.h +
  • +
  • GTEST_TEST_ +: gtest.h +
  • +
  • GTEST_TEST_ANY_THROW_ +: gtest.h +
  • +
  • GTEST_TEST_BOOLEAN_ +: gtest.h +
  • +
  • GTEST_TEST_CLASS_NAME_ +: gtest.h +
  • +
  • GTEST_TEST_NO_FATAL_FAILURE_ +: gtest.h +
  • +
  • GTEST_TEST_NO_THROW_ +: gtest.h +
  • +
  • GTEST_TEST_THROW_ +: gtest.h +
  • +
  • GTEST_UNSUPPORTED_DEATH_TEST +: gtest.h +
  • +
  • GTEST_USE_OWN_FLAGFILE_FLAG_ +: gtest.h +
  • +
  • GTEST_USES_POSIX_RE +: gtest.h +
  • +
  • GTEST_WIDE_STRING_USES_UTF16_ +: gtest.h +
  • +
+
+
+ + + + diff --git a/doc/html/globals_i.html b/doc/html/globals_i.html new file mode 100644 index 0000000..49f9d43 --- /dev/null +++ b/doc/html/globals_i.html @@ -0,0 +1,110 @@ + + + + + + + +uTL: File Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- i -

    +
  • INSTANTIATE_TEST_CASE_P +: gtest.h +
  • +
  • INSTANTIATE_TEST_SUITE_P +: gtest.h +
  • +
+
+
+ + + + diff --git a/doc/html/globals_m.html b/doc/html/globals_m.html new file mode 100644 index 0000000..b1bfdb1 --- /dev/null +++ b/doc/html/globals_m.html @@ -0,0 +1,107 @@ + + + + + + + +uTL: File Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- m -

+
+
+ + + + diff --git a/doc/html/globals_r.html b/doc/html/globals_r.html new file mode 100644 index 0000000..5b5efbc --- /dev/null +++ b/doc/html/globals_r.html @@ -0,0 +1,107 @@ + + + + + + + +uTL: File Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- r -

+
+
+ + + + diff --git a/doc/html/globals_s.html b/doc/html/globals_s.html new file mode 100644 index 0000000..26c88db --- /dev/null +++ b/doc/html/globals_s.html @@ -0,0 +1,110 @@ + + + + + + + +uTL: File Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- s -

+
+
+ + + + diff --git a/doc/html/globals_t.html b/doc/html/globals_t.html new file mode 100644 index 0000000..2604144 --- /dev/null +++ b/doc/html/globals_t.html @@ -0,0 +1,113 @@ + + + + + + + +uTL: File Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- t -

+
+
+ + + + diff --git a/doc/html/globals_u.html b/doc/html/globals_u.html new file mode 100644 index 0000000..14dc97c --- /dev/null +++ b/doc/html/globals_u.html @@ -0,0 +1,122 @@ + + + + + + + +uTL: File Members + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all file members with links to the files they belong to:
+ +

- u -

+
+
+ + + + diff --git a/doc/html/group__concepts.html b/doc/html/group__concepts.html new file mode 100644 index 0000000..cba8afd --- /dev/null +++ b/doc/html/group__concepts.html @@ -0,0 +1,179 @@ + + + + + + + +uTL: Concepts + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Concepts
+
+
+ + + + +

+Modules

 Iterators
 
+ + + + + + + + +

+Macros

#define utlConstrainType(_Concept_)   typename
 
#define _utlConcept   constexpr bool
 utl concept keyword syntax wrapper More...
 
#define CXX_LIB_INVOKE   0
 
+

Detailed Description

+

Macro Definition Documentation

+ +

◆ _utlConcept

+ +
+
+ + + + +
#define _utlConcept   constexpr bool
+
+ +

utl concept keyword syntax wrapper

+ +

Definition at line 56 of file defines.h.

+ +
+
+ +

◆ CXX_LIB_INVOKE

+ +
+
+ + + + +
#define CXX_LIB_INVOKE   0
+
+ +

Definition at line 63 of file defines.h.

+ +
+
+ +

◆ utlConstrainType

+ +
+
+ + + + + + + + +
#define utlConstrainType( _Concept_)   typename
+
+ +

Definition at line 43 of file defines.h.

+ +
+
+
+
+ + + + diff --git a/doc/html/group__concepts.js b/doc/html/group__concepts.js new file mode 100644 index 0000000..829c63f --- /dev/null +++ b/doc/html/group__concepts.js @@ -0,0 +1,7 @@ +var group__concepts = +[ + [ "Iterators", "group__iterators.html", "group__iterators" ], + [ "_utlConcept", "group__concepts.html#gaf81026787698cd63592563ab8223062b", null ], + [ "CXX_LIB_INVOKE", "group__concepts.html#gae575ec6bb237dd55f86ef2827c63d784", null ], + [ "utlConstrainType", "group__concepts.html#ga5d7d78bf161dcc8fb920fb522dc6f216", null ] +]; \ No newline at end of file diff --git a/doc/html/group__crtp.html b/doc/html/group__crtp.html new file mode 100644 index 0000000..e28b034 --- /dev/null +++ b/doc/html/group__crtp.html @@ -0,0 +1,115 @@ + + + + + + + +uTL: CRTP idiom support header + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
CRTP idiom support header
+
+
+ + + + + +

+Namespaces

 utl
 STL's core language concepts.
 
+

Detailed Description

+

utl supports both CRTP idiom and dynamic polymorphism. By default CRTP is the preferred way. If the user need virtuals then instead of CRTP type, the virtual_tag can passed to base class. The rest will handled by utl automatically.

+
+
+ + + + diff --git a/doc/html/group__crtp.js b/doc/html/group__crtp.js new file mode 100644 index 0000000..99e09a1 --- /dev/null +++ b/doc/html/group__crtp.js @@ -0,0 +1,4 @@ +var group__crtp = +[ + [ "utl", "namespaceutl.html", null ] +]; \ No newline at end of file diff --git a/doc/html/group__detection.html b/doc/html/group__detection.html new file mode 100644 index 0000000..1828d43 --- /dev/null +++ b/doc/html/group__detection.html @@ -0,0 +1,171 @@ + + + + + + + +uTL: Detection + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Detection
+
+
+ + + + + +

+Namespaces

 utl
 STL's core language concepts.
 
+ + + + + + + + + +

+Typedefs

template<typename... >
using utl::meta::void_ = void
 void_ type alias More...
 
template<typename... >
using utl::meta::void_t = void
 void_t type alias More...
 
+

Detailed Description

+

Detection idiom support header.

+

Typedef Documentation

+ +

◆ void_

+ +
+
+
+template<typename... >
+ + + + +
using utl::meta::void_ = typedef void
+
+ +

void_ type alias

+

void_t meta-function that maps a sequence of any types to the type void

+
Examples:
W:/Work/Software/Libraries/utl/include/utl/meta/detection.h.
+
+

Definition at line 53 of file detection.h.

+ +
+
+ +

◆ void_t

+ +
+
+
+template<typename... >
+ + + + +
using utl::meta::void_t = typedef void
+
+
+
+
+ + + + diff --git a/doc/html/group__detection.js b/doc/html/group__detection.js new file mode 100644 index 0000000..42d653c --- /dev/null +++ b/doc/html/group__detection.js @@ -0,0 +1,6 @@ +var group__detection = +[ + [ "utl", "namespaceutl.html", null ], + [ "void_", "group__detection.html#gac16d50de47cf57734433e9ea636522c5", null ], + [ "void_t", "group__detection.html#gae7373c997420d16cf37e542eb3cfa3ad", null ] +]; \ No newline at end of file diff --git a/doc/html/group__integral.html b/doc/html/group__integral.html new file mode 100644 index 0000000..42aa5f6 --- /dev/null +++ b/doc/html/group__integral.html @@ -0,0 +1,246 @@ + + + + + + + +uTL: operators + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
operators
+
+
+ + + + + + + +

+Namespaces

 utl
 STL's core language concepts.
 
 utl::meta::detail
 
+ + + + + +

+Classes

struct  utl::meta::same_< _T1, _T2 >
 
struct  utl::meta::same_< _Tp, _Tp >
 
+ + + + + + + + + + + + + + + + + + +

+Typedefs

template<bool B>
using utl::meta::not_c = bool_<!B >
 Negate the bool constant parameter. More...
 
template<typename _Tp >
using utl::meta::not_ = not_c< _Tp::type::value >
 not More...
 
template<typename... _Ts>
using utl::meta::or_ = eval< detail::_or_< _Ts... > >
 
template<typename... _Ts>
using utl::meta::and_ = eval< detail::_and_< _Ts... > >
 
template<typename _T1 , typename _T2 >
using utl::meta::not_same_ = not_< eval< same_< _T1, _T2 > >>
 
+

Detailed Description

+

integral constant support header

+

Type arithmetic and operators

+

Typedef Documentation

+ +

◆ and_

+ +
+
+
+template<typename... _Ts>
+ + + + +
using utl::meta::and_ = typedef eval<detail::_and_<_Ts...> >
+
+ +

Definition at line 96 of file operations.h.

+ +
+
+ +

◆ not_

+ +
+
+
+template<typename _Tp >
+ + + + +
using utl::meta::not_ = typedef not_c<_Tp::type::value>
+
+ +

not

+
Examples:
W:/Work/Software/Libraries/utl/include/utl/meta/typelist.h.
+
+

Definition at line 47 of file operations.h.

+ +
+
+ +

◆ not_c

+ +
+
+
+template<bool B>
+ + + + +
using utl::meta::not_c = typedef bool_<!B>
+
+ +

Negate the bool constant parameter.

+

Logical relation for types

+ +

Definition at line 43 of file operations.h.

+ +
+
+ +

◆ not_same_

+ +
+
+
+template<typename _T1 , typename _T2 >
+ + + + +
using utl::meta::not_same_ = typedef not_<eval<same_<_T1, _T2> >>
+
+

not same

+
Examples:
W:/Work/Software/Libraries/utl/include/utl/meta/invoke.h.
+
+

Definition at line 111 of file operations.h.

+ +
+
+ +

◆ or_

+ +
+
+
+template<typename... _Ts>
+ + + + +
using utl::meta::or_ = typedef eval<detail::_or_<_Ts...> >
+
+ +

Definition at line 70 of file operations.h.

+ +
+
+
+
+ + + + diff --git a/doc/html/group__integral.js b/doc/html/group__integral.js new file mode 100644 index 0000000..7c64d2a --- /dev/null +++ b/doc/html/group__integral.js @@ -0,0 +1,12 @@ +var group__integral = +[ + [ "utl", "namespaceutl.html", null ], + [ "detail", "namespaceutl_1_1meta_1_1detail.html", null ], + [ "same_", "structutl_1_1meta_1_1same__.html", null ], + [ "same_< _Tp, _Tp >", "structutl_1_1meta_1_1same___3_01___tp_00_01___tp_01_4.html", null ], + [ "and_", "group__integral.html#ga8e82f4758321e0e0b3705607f7d8e068", null ], + [ "not_", "group__integral.html#ga16df145331d3c62e624385c5949d90c4", null ], + [ "not_c", "group__integral.html#ga7de987520bd0973f03ff8bab3152361a", null ], + [ "not_same_", "group__integral.html#ga4dfaf054d891eb35d741662b077bbbd2", null ], + [ "or_", "group__integral.html#gac43f400cc93d54f5f79892e618069d9b", null ] +]; \ No newline at end of file diff --git a/doc/html/group__invoke.html b/doc/html/group__invoke.html new file mode 100644 index 0000000..9cde27e --- /dev/null +++ b/doc/html/group__invoke.html @@ -0,0 +1,114 @@ + + + + + + + +uTL: Invoke + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Invoke
+
+
+ + + + + +

+Namespaces

 utl
 STL's core language concepts.
 
+

Detailed Description

+
+
+ + + + diff --git a/doc/html/group__invoke.js b/doc/html/group__invoke.js new file mode 100644 index 0000000..6a15c90 --- /dev/null +++ b/doc/html/group__invoke.js @@ -0,0 +1,4 @@ +var group__invoke = +[ + [ "utl", "namespaceutl.html", null ] +]; \ No newline at end of file diff --git a/doc/html/group__iterators.html b/doc/html/group__iterators.html new file mode 100644 index 0000000..368730f --- /dev/null +++ b/doc/html/group__iterators.html @@ -0,0 +1,114 @@ + + + + + + + +uTL: Iterators + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Iterators
+
+
+ + + + + +

+Namespaces

 utl
 STL's core language concepts.
 
+

Detailed Description

+
+
+ + + + diff --git a/doc/html/group__iterators.js b/doc/html/group__iterators.js new file mode 100644 index 0000000..ae1fdb1 --- /dev/null +++ b/doc/html/group__iterators.js @@ -0,0 +1,4 @@ +var group__iterators = +[ + [ "utl", "namespaceutl.html", null ] +]; \ No newline at end of file diff --git a/doc/html/group__logic.html b/doc/html/group__logic.html new file mode 100644 index 0000000..0fd3425 --- /dev/null +++ b/doc/html/group__logic.html @@ -0,0 +1,115 @@ + + + + + + + +uTL: Logic + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Logic
+
+
+ + + + + +

+Namespaces

 utl
 STL's core language concepts.
 
+

Detailed Description

+

logic operators and type relations support

+
+
+ + + + diff --git a/doc/html/group__logic.js b/doc/html/group__logic.js new file mode 100644 index 0000000..61b9536 --- /dev/null +++ b/doc/html/group__logic.js @@ -0,0 +1,4 @@ +var group__logic = +[ + [ "utl", "namespaceutl.html", null ] +]; \ No newline at end of file diff --git a/doc/html/group__sfinae.html b/doc/html/group__sfinae.html new file mode 100644 index 0000000..80ccc26 --- /dev/null +++ b/doc/html/group__sfinae.html @@ -0,0 +1,116 @@ + + + + + + + +uTL: Sfinae + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Sfinae
+
+
+ + + + + +

+Namespaces

 utl
 STL's core language concepts.
 
+

Detailed Description

+

conditional use support header.

+

conditional use support header. This is a SFINAE wrapper

+
+
+ + + + diff --git a/doc/html/group__sfinae.js b/doc/html/group__sfinae.js new file mode 100644 index 0000000..ad21a4b --- /dev/null +++ b/doc/html/group__sfinae.js @@ -0,0 +1,4 @@ +var group__sfinae = +[ + [ "utl", "namespaceutl.html", null ] +]; \ No newline at end of file diff --git a/doc/html/group__type.html b/doc/html/group__type.html new file mode 100644 index 0000000..f6db26b --- /dev/null +++ b/doc/html/group__type.html @@ -0,0 +1,316 @@ + + + + + + + +uTL: selection + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
selection
+
+
+ + + + + + + +

+Namespaces

 utl
 STL's core language concepts.
 
 utl::meta::detail
 
+ + + + + + + + + +

+Classes

struct  utl::meta::detail::if_c_< If,... >
 
struct  utl::meta::detail::if_c_< true, Then >
 
struct  utl::meta::detail::if_c_< true, Then, Else >
 
struct  utl::meta::detail::if_c_< false, Then, Else >
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

using utl::meta::detail::if_c_< If,... >::type = nil_
 avoid ill formed result More...
 
using utl::meta::detail::if_c_< true, Then >::type = Then
 
using utl::meta::detail::if_c_< true, Then, Else >::type = Then
 
using utl::meta::detail::if_c_< false, Then, Else >::type = Else
 
template<bool B, typename... Args>
using utl::meta::if_c = eval< detail::if_c_< B, Args... > >
 Select one type or another depending on a compile-time Boolean. More...
 
template<typename If , typename... Args>
using utl::meta::if_ = if_c< If::type::value, Args... >
 Select one type or another depending on a compile-time Boolean type. More...
 
template<typename T1 , typename ... >
using utl::meta::first_of = T1
 Select the first type of a type sequence. More...
 
template<typename T1 , typename T2 , typename ... >
using utl::meta::second_of = T2
 Select the second type of a type sequence. More...
 
+

Detailed Description

+

Type selection support header

+

Typedef Documentation

+ +

◆ first_of

+ +
+
+
+template<typename T1 , typename ... >
+ + + + +
using utl::meta::first_of = typedef T1
+
+ +

Select the first type of a type sequence.

+

Named type selectors

+
Examples:
W:/Work/Software/Libraries/utl/include/utl/meta/invoke.h.
+
+

Definition at line 76 of file selection.h.

+ +
+
+ +

◆ if_

+ +
+
+
+template<typename If , typename... Args>
+ + + + +
using utl::meta::if_ = typedef if_c<If::type::value, Args...>
+
+ +

Select one type or another depending on a compile-time Boolean type.

+
Examples:
W:/Work/Software/Libraries/utl/include/utl/meta/invoke.h, and W:/Work/Software/Libraries/utl/include/utl/meta/typelist.h.
+
+

Definition at line 66 of file selection.h.

+ +
+
+ +

◆ if_c

+ +
+
+
+template<bool B, typename... Args>
+ + + + +
using utl::meta::if_c = typedef eval<detail::if_c_<B, Args...> >
+
+ +

Select one type or another depending on a compile-time Boolean.

+ +

Definition at line 62 of file selection.h.

+ +
+
+ +

◆ second_of

+ +
+
+
+template<typename T1 , typename T2 , typename ... >
+ + + + +
using utl::meta::second_of = typedef T2
+
+ +

Select the second type of a type sequence.

+ +

Definition at line 79 of file selection.h.

+ +
+
+ +

◆ type [1/4]

+ +
+
+
+template<bool If, typename... >
+ + + + +
using utl::meta::detail::if_c_< If,... >::type = nil_
+
+ +

avoid ill formed result

+ +

Definition at line 45 of file selection.h.

+ +
+
+ +

◆ type [2/4]

+ +
+
+
+template<typename Then >
+ + + + +
using utl::meta::detail::if_c_< true, Then >::type = Then
+
+ +

Definition at line 49 of file selection.h.

+ +
+
+ +

◆ type [3/4]

+ +
+
+
+template<typename Then , typename Else >
+ + + + +
using utl::meta::detail::if_c_< true, Then, Else >::type = Then
+
+ +

Definition at line 53 of file selection.h.

+ +
+
+ +

◆ type [4/4]

+ +
+
+
+template<typename Then , typename Else >
+ + + + +
using utl::meta::detail::if_c_< false, Then, Else >::type = Else
+
+ +

Definition at line 57 of file selection.h.

+ +
+
+
+
+ + + + diff --git a/doc/html/group__type.js b/doc/html/group__type.js new file mode 100644 index 0000000..dfb7d72 --- /dev/null +++ b/doc/html/group__type.js @@ -0,0 +1,25 @@ +var group__type = +[ + [ "utl", "namespaceutl.html", null ], + [ "detail", "namespaceutl_1_1meta_1_1detail.html", null ], + [ "if_c_", "structutl_1_1meta_1_1detail_1_1if__c__.html", [ + [ "type", "group__type.html#gaefeff9de7bff8811e49692343ce6187e", null ] + ] ], + [ "if_c_< true, Then >", "structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_01_4.html", [ + [ "type", "group__type.html#gaa7f24607990e92d8263246fc5f7003b7", null ] + ] ], + [ "if_c_< true, Then, Else >", "structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_00_01_else_01_4.html", [ + [ "type", "group__type.html#ga15100ac40785819517c5defacb19915c", null ] + ] ], + [ "if_c_< false, Then, Else >", "structutl_1_1meta_1_1detail_1_1if__c___3_01false_00_01_then_00_01_else_01_4.html", [ + [ "type", "group__type.html#ga2fbed149992c081ac85eefaf63a388ca", null ] + ] ], + [ "first_of", "group__type.html#gaf7089523d21cd405c76985643f31092a", null ], + [ "if_", "group__type.html#ga39cc4e727a8faa5ea176f543e62c05c0", null ], + [ "if_c", "group__type.html#gaa3812817ce749832da73fdf5d2a85380", null ], + [ "second_of", "group__type.html#ga422dd1b0895f0074ad9932d68d9edbc5", null ], + [ "type", "group__type.html#gaefeff9de7bff8811e49692343ce6187e", null ], + [ "type", "group__type.html#gaa7f24607990e92d8263246fc5f7003b7", null ], + [ "type", "group__type.html#ga15100ac40785819517c5defacb19915c", null ], + [ "type", "group__type.html#ga2fbed149992c081ac85eefaf63a388ca", null ] +]; \ No newline at end of file diff --git a/doc/html/group__typelist.html b/doc/html/group__typelist.html new file mode 100644 index 0000000..5dd5f10 --- /dev/null +++ b/doc/html/group__typelist.html @@ -0,0 +1,114 @@ + + + + + + + +uTL: Typelist + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Typelist
+
+
+ + + + + +

+Namespaces

 utl
 STL's core language concepts.
 
+

Detailed Description

+
+
+ + + + diff --git a/doc/html/group__typelist.js b/doc/html/group__typelist.js new file mode 100644 index 0000000..50c95c3 --- /dev/null +++ b/doc/html/group__typelist.js @@ -0,0 +1,4 @@ +var group__typelist = +[ + [ "utl", "namespaceutl.html", null ] +]; \ No newline at end of file diff --git a/doc/html/group__version.html b/doc/html/group__version.html new file mode 100644 index 0000000..1f53fa7 --- /dev/null +++ b/doc/html/group__version.html @@ -0,0 +1,365 @@ + + + + + + + +uTL: version + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
version
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Macros

#define UTL_VERSION   "0.1.0"
 utl version More...
 
#define UTL_VERSION_MAJOR   0
 
#define UTL_VERSION_MINOR   1
 
#define UTL_VERSION_PATCH   0
 
#define UTL_VERSION_VALUE
 
#define CXX_VER   __cplusplus
 C++ versions. More...
 
#define CXX_VER_STD_11   201103L
 
#define CXX_VER_STD_14   201402L
 
#define CXX_VER_STD_17   201703L
 
#define CXX_VARIABLE_TEMPLATES   (CXX_VER >= CXX_VER_STD_14)
 Check for variable templates. More...
 
#define CXX_CONCEPTS   0
 Check concepts. More...
 
#define CXX_INLINE_VARIABLES   (CXX_VER >= CXX_VER_STD_17)
 Check for inline variables. More...
 
#define CXX_FOLD_EXPRESSIONS   (CXX_VER >= CXX_VER_STD_17)
 
+

Detailed Description

+

Definitions of the utl version

+

Macro Definition Documentation

+ +

◆ CXX_CONCEPTS

+ +
+
+ + + + +
#define CXX_CONCEPTS   0
+
+ +

Check concepts.

+ +

Definition at line 57 of file version.h.

+ +
+
+ +

◆ CXX_FOLD_EXPRESSIONS

+ +
+
+ + + + +
#define CXX_FOLD_EXPRESSIONS   (CXX_VER >= CXX_VER_STD_17)
+
+ +

Definition at line 74 of file version.h.

+ +
+
+ +

◆ CXX_INLINE_VARIABLES

+ +
+
+ + + + +
#define CXX_INLINE_VARIABLES   (CXX_VER >= CXX_VER_STD_17)
+
+ +

Check for inline variables.

+ +

Definition at line 66 of file version.h.

+ +
+
+ +

◆ CXX_VARIABLE_TEMPLATES

+ +
+
+ + + + +
#define CXX_VARIABLE_TEMPLATES   (CXX_VER >= CXX_VER_STD_14)
+
+ +

Check for variable templates.

+ +

Definition at line 48 of file version.h.

+ +
+
+ +

◆ CXX_VER

+ +
+
+ + + + +
#define CXX_VER   __cplusplus
+
+ +

C++ versions.

+ +

Definition at line 38 of file version.h.

+ +
+
+ +

◆ CXX_VER_STD_11

+ +
+
+ + + + +
#define CXX_VER_STD_11   201103L
+
+ +

Definition at line 39 of file version.h.

+ +
+
+ +

◆ CXX_VER_STD_14

+ +
+
+ + + + +
#define CXX_VER_STD_14   201402L
+
+ +

Definition at line 40 of file version.h.

+ +
+
+ +

◆ CXX_VER_STD_17

+ +
+
+ + + + +
#define CXX_VER_STD_17   201703L
+
+ +

Definition at line 41 of file version.h.

+ +
+
+ +

◆ UTL_VERSION

+ +
+
+ + + + +
#define UTL_VERSION   "0.1.0"
+
+ +

utl version

+ +

Definition at line 29 of file version.h.

+ +
+
+ +

◆ UTL_VERSION_MAJOR

+ +
+
+ + + + +
#define UTL_VERSION_MAJOR   0
+
+ +

Definition at line 30 of file version.h.

+ +
+
+ +

◆ UTL_VERSION_MINOR

+ +
+
+ + + + +
#define UTL_VERSION_MINOR   1
+
+ +

Definition at line 31 of file version.h.

+ +
+
+ +

◆ UTL_VERSION_PATCH

+ +
+
+ + + + +
#define UTL_VERSION_PATCH   0
+
+ +

Definition at line 32 of file version.h.

+ +
+
+ +

◆ UTL_VERSION_VALUE

+ +
+
+ + + + +
#define UTL_VERSION_VALUE
+
+Value:
( (UTL_VERSION_MAJOR * 10000) \
+ (UTL_VERSION_MINOR * 100) \
#define UTL_VERSION_MINOR
Definition: version.h:31
+
#define UTL_VERSION_MAJOR
Definition: version.h:30
+
#define UTL_VERSION_PATCH
Definition: version.h:32
+
+

Definition at line 33 of file version.h.

+ +
+
+
+
+ + + + diff --git a/doc/html/group__version.js b/doc/html/group__version.js new file mode 100644 index 0000000..c49c4fc --- /dev/null +++ b/doc/html/group__version.js @@ -0,0 +1,16 @@ +var group__version = +[ + [ "CXX_CONCEPTS", "group__version.html#ga80d0fb430c83076ebe61d619a7e606a9", null ], + [ "CXX_FOLD_EXPRESSIONS", "group__version.html#gad8bb48d6d660495b6eb3d4bbecd7ec26", null ], + [ "CXX_INLINE_VARIABLES", "group__version.html#gad7f44253df62ec7f9455af26507a289b", null ], + [ "CXX_VARIABLE_TEMPLATES", "group__version.html#gaa3f471a65b0eb6118e8a2cb547a46d7a", null ], + [ "CXX_VER", "group__version.html#ga01247740b4b51ce21e9bb3c3c602996d", null ], + [ "CXX_VER_STD_11", "group__version.html#gabef125dbb6ab064efeef0491a2a43da6", null ], + [ "CXX_VER_STD_14", "group__version.html#gaaa8cecbe78cff8d75dba25e39d5205f9", null ], + [ "CXX_VER_STD_17", "group__version.html#ga20a6261e3bdd7cad0eb7850e29ddfbe0", null ], + [ "UTL_VERSION", "group__version.html#ga7665eee3bbd12a8d910e6237e59d3aee", null ], + [ "UTL_VERSION_MAJOR", "group__version.html#ga127ec85c06925fbd866584721188df32", null ], + [ "UTL_VERSION_MINOR", "group__version.html#ga9bc1d657cd305d09ffe825ab50672c2e", null ], + [ "UTL_VERSION_PATCH", "group__version.html#ga0ccbcd211a838107438ae0e194f871a9", null ], + [ "UTL_VERSION_VALUE", "group__version.html#ga7af1c603dc248e854fc773c26761ed83", null ] +]; \ No newline at end of file diff --git a/doc/html/gtest-all_8cc.html b/doc/html/gtest-all_8cc.html new file mode 100644 index 0000000..48abc79 --- /dev/null +++ b/doc/html/gtest-all_8cc.html @@ -0,0 +1,578 @@ + + + + + + + +uTL: test/eclipse-cygwin/lib/gtest/gtest-all.cc File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
gtest-all.cc File Reference
+
+
+
#include "gtest.h"
+#include <ctype.h>
+#include <math.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <time.h>
+#include <wchar.h>
+#include <wctype.h>
+#include <algorithm>
+#include <iomanip>
+#include <limits>
+#include <list>
+#include <map>
+#include <ostream>
+#include <sstream>
+#include <vector>
+#include <sys/time.h>
+#include <unistd.h>
+#include <errno.h>
+#include <stddef.h>
+#include <string.h>
+#include <memory>
+#include <string>
+#include <utility>
+#include <limits.h>
+#include <climits>
+#include <fstream>
+#include <cctype>
+#include <cwchar>
+
+

Go to the source code of this file.

+ + + + +

+Classes

class  testing::internal::CapturedStream
 
+ + + + + + + +

+Namespaces

 testing
 
 testing::internal
 
 testing::internal2
 
+ + + + + + + + + + + + + + + + + + + + + + + +

+Macros

#define GTEST_INCLUDE_GTEST_GTEST_SPI_H_
 
#define EXPECT_FATAL_FAILURE(statement, substr)
 
#define EXPECT_FATAL_FAILURE_ON_ALL_THREADS(statement, substr)
 
#define EXPECT_NONFATAL_FAILURE(statement, substr)
 
#define EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS(statement, substr)
 
#define GTEST_HAS_GETTIMEOFDAY_   1
 
#define GTEST_SRC_GTEST_INTERNAL_INL_H_
 
#define GTEST_IMPL_CMP_HELPER_(op_name, op)
 
#define GTEST_REPEATER_METHOD_(Name, Type)
 
#define GTEST_REVERSE_REPEATER_METHOD_(Name, Type)
 
#define GTEST_PATH_MAX_   _POSIX_PATH_MAX
 
+ + + +

+Enumerations

enum  testing::internal::CharFormat { testing::internal::kAsIs, +testing::internal::kHexEscape, +testing::internal::kSpecialEscape + }
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

 GTEST_DISABLE_MSC_WARNINGS_PUSH_ (4251) namespace testing
 
 GTEST_DISABLE_MSC_WARNINGS_POP_ () GTEST_DISABLE_MSC_WARNINGS_PUSH_(4251) namespace testing
 
 testing::GTEST_DEFINE_string_ (death_test_style, internal::StringFromGTestEnv("death_test_style", kDefaultDeathTestStyle), "Indicates how to run a death test in a forked child process: " "\hreadsafe\(child process re-executes the test binary " "from the beginning, running only the specific death test) or " "\ast\(child process runs the death test immediately " "after forking).")
 
 testing::GTEST_DEFINE_bool_ (death_test_use_fork, internal::BoolFromGTestEnv("death_test_use_fork", false), "Instructs to use fork()/_exit() instead of clone() in death tests. " "Ignored and always uses fork() on POSIX systems where clone() is not " "implemented. Useful when running under valgrind or similar tools if " "those do not support clone(). Valgrind 3.3.1 will just fail if " "it sees an unsupported combination of clone() flags. " "It is not recommended to use this flag w/o valgrind though it will " "work in 99% of the cases. Once valgrind is fixed, this flag will " "most likely be removed.")
 
 testing::internal::GTEST_DEFINE_string_ (internal_run_death_test, "", "Indicates the file, line number, temporal index of " "the single death test to run, and a file descriptor to " "which a success code may be sent, all separated by " "the '|' characters. This flag is specified if and only if the current " "process is a sub-process launched for running a thread-safe " "death test. FOR INTERNAL USE ONLY.")
 
size_t testing::internal::GetThreadCount ()
 
GTEST_API_ ::std::string testing::internal::FormatFileLocation (const char *file, int line)
 
GTEST_API_ ::std::string testing::internal::FormatCompilerIndependentFileLocation (const char *file, int line)
 
void testing::internal::CaptureStdout ()
 
void testing::internal::CaptureStderr ()
 
std::string testing::internal::GetCapturedStdout ()
 
std::string testing::internal::GetCapturedStderr ()
 
size_t testing::internal::GetFileSize (FILE *file)
 
std::string testing::internal::ReadEntireFile (FILE *file)
 
bool testing::internal::ParseInt32 (const Message &src_text, const char *str, Int32 *value)
 
bool testing::internal::BoolFromGTestEnv (const char *flag, bool default_value)
 
Int32 testing::internal::Int32FromGTestEnv (const char *flag, Int32 default_value)
 
std::string testing::internal::OutputFlagAlsoCheckEnvVar ()
 
const char * testing::internal::StringFromGTestEnv (const char *flag, const char *default_value)
 
void testing::internal2::PrintBytesInObjectTo (const unsigned char *obj_bytes, size_t count, ostream *os)
 
bool testing::internal::IsPrintableAscii (wchar_t c)
 
template<typename UnsignedChar , typename Char >
void testing::internal::PrintCharAndCodeTo (Char c, ostream *os)
 
void testing::internal::PrintTo (unsigned char c, ::std::ostream *os)
 
void testing::internal::PrintTo (signed char c, ::std::ostream *os)
 
void testing::internal::PrintTo (wchar_t wc, ostream *os)
 
void testing::internal::UniversalPrintArray (const char *begin, size_t len, ostream *os)
 
void testing::internal::UniversalPrintArray (const wchar_t *begin, size_t len, ostream *os)
 
void testing::internal::PrintTo (const char *s, ostream *os)
 
void testing::internal::PrintTo (const wchar_t *s, ostream *os)
 
void testing::internal::PrintStringTo (const ::std::string &s, ostream *os)
 
void testing::internal::PrintWideStringTo (const ::std::wstring &s, ostream *os)
 
std::ostream & testing::operator<< (std::ostream &os, const TestPartResult &result)
 
+ + + + + + + + + + + +

+Variables

const char testing::internal::kPathSeparator = '/'
 
const char testing::internal::kCurrentDirectoryString [] = "./"
 
const int testing::internal::kStdOutFileno = STDOUT_FILENO
 
const int testing::internal::kStdErrFileno = STDERR_FILENO
 
const char testing::internal::kUnknownFile [] = "unknown file"
 
+

Macro Definition Documentation

+ +

◆ EXPECT_FATAL_FAILURE

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define EXPECT_FATAL_FAILURE( statement,
 substr 
)
+
+Value:
do { \
class GTestExpectFatalFailureHelper {\
public:\
static void Execute() { statement; }\
};\
::testing::TestPartResultArray gtest_failures;\
::testing::internal::SingleFailureChecker gtest_checker(\
&gtest_failures, ::testing::TestPartResult::kFatalFailure, (substr));\
{\
::testing::ScopedFakeTestPartResultReporter gtest_reporter(\
::testing::ScopedFakeTestPartResultReporter:: \
INTERCEPT_ONLY_CURRENT_THREAD, &gtest_failures);\
GTestExpectFatalFailureHelper::Execute();\
}\
bool AlwaysFalse()
Definition: gtest.h:7260
+
+
+
+ +

◆ EXPECT_FATAL_FAILURE_ON_ALL_THREADS

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define EXPECT_FATAL_FAILURE_ON_ALL_THREADS( statement,
 substr 
)
+
+Value:
do { \
class GTestExpectFatalFailureHelper {\
public:\
static void Execute() { statement; }\
};\
::testing::TestPartResultArray gtest_failures;\
::testing::internal::SingleFailureChecker gtest_checker(\
&gtest_failures, ::testing::TestPartResult::kFatalFailure, (substr));\
{\
::testing::ScopedFakeTestPartResultReporter gtest_reporter(\
::testing::ScopedFakeTestPartResultReporter:: \
INTERCEPT_ALL_THREADS, &gtest_failures);\
GTestExpectFatalFailureHelper::Execute();\
}\
bool AlwaysFalse()
Definition: gtest.h:7260
+
+
+
+ +

◆ EXPECT_NONFATAL_FAILURE

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define EXPECT_NONFATAL_FAILURE( statement,
 substr 
)
+
+Value:
do {\
::testing::TestPartResultArray gtest_failures;\
::testing::internal::SingleFailureChecker gtest_checker(\
&gtest_failures, ::testing::TestPartResult::kNonFatalFailure, \
(substr));\
{\
::testing::ScopedFakeTestPartResultReporter gtest_reporter(\
::testing::ScopedFakeTestPartResultReporter:: \
INTERCEPT_ONLY_CURRENT_THREAD, &gtest_failures);\
if (::testing::internal::AlwaysTrue()) { statement; }\
}\
GTEST_API_ bool AlwaysTrue()
+
bool AlwaysFalse()
Definition: gtest.h:7260
+
+
+
+ +

◆ EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS( statement,
 substr 
)
+
+Value:
do {\
::testing::TestPartResultArray gtest_failures;\
::testing::internal::SingleFailureChecker gtest_checker(\
&gtest_failures, ::testing::TestPartResult::kNonFatalFailure, \
(substr));\
{\
::testing::ScopedFakeTestPartResultReporter gtest_reporter(\
::testing::ScopedFakeTestPartResultReporter::INTERCEPT_ALL_THREADS, \
&gtest_failures);\
if (::testing::internal::AlwaysTrue()) { statement; }\
}\
GTEST_API_ bool AlwaysTrue()
+
bool AlwaysFalse()
Definition: gtest.h:7260
+
+
+
+ +

◆ GTEST_HAS_GETTIMEOFDAY_

+ +
+
+ + + + +
#define GTEST_HAS_GETTIMEOFDAY_   1
+
+ +
+
+ +

◆ GTEST_IMPL_CMP_HELPER_

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define GTEST_IMPL_CMP_HELPER_( op_name,
 op 
)
+
+Value:
AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \
BiggestInt val1, BiggestInt val2) {\
if (val1 op val2) {\
return AssertionSuccess();\
} else {\
return AssertionFailure() \
<< "Expected: (" << expr1 << ") " #op " (" << expr2\
<< "), actual: " << FormatForComparisonFailureMessage(val1, val2)\
<< " vs " << FormatForComparisonFailureMessage(val2, val1);\
}\
}
std::string FormatForComparisonFailureMessage(const T1 &value, const T2 &)
Definition: gtest.h:8416
+
long long BiggestInt
Definition: gtest.h:2223
+
+
+
+ +

◆ GTEST_INCLUDE_GTEST_GTEST_SPI_H_

+ +
+
+ + + + +
#define GTEST_INCLUDE_GTEST_GTEST_SPI_H_
+
+ +

Definition at line 109 of file gtest-all.cc.

+ +
+
+ +

◆ GTEST_PATH_MAX_

+ +
+
+ + + + +
#define GTEST_PATH_MAX_   _POSIX_PATH_MAX
+
+ +

Definition at line 9221 of file gtest-all.cc.

+ +
+
+ +

◆ GTEST_REPEATER_METHOD_

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define GTEST_REPEATER_METHOD_( Name,
 Type 
)
+
+Value:
void TestEventRepeater::Name(const Type& parameter) { \
if (forwarding_enabled_) { \
for (size_t i = 0; i < listeners_.size(); i++) { \
listeners_[i]->Name(parameter); \
} \
} \
}
+
+
+ +

◆ GTEST_REVERSE_REPEATER_METHOD_

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define GTEST_REVERSE_REPEATER_METHOD_( Name,
 Type 
)
+
+Value:
void TestEventRepeater::Name(const Type& parameter) { \
if (forwarding_enabled_) { \
for (int i = static_cast<int>(listeners_.size()) - 1; i >= 0; i--) { \
listeners_[i]->Name(parameter); \
} \
} \
}
+
+
+ +

◆ GTEST_SRC_GTEST_INTERNAL_INL_H_

+ +
+
+ + + + +
#define GTEST_SRC_GTEST_INTERNAL_INL_H_
+
+ +
+
+

Function Documentation

+ +

◆ GTEST_DISABLE_MSC_WARNINGS_POP_()

+ +
+
+ + + + + + + +
GTEST_DISABLE_MSC_WARNINGS_POP_ ()
+
+ +

Definition at line 190 of file gtest-all.cc.

+ +
+
+ +

◆ GTEST_DISABLE_MSC_WARNINGS_PUSH_()

+ +
+
+ + + + + + + + +
GTEST_DISABLE_MSC_WARNINGS_PUSH_ (4251 5046)
+
+ +

Definition at line 112 of file gtest-all.cc.

+ +
+
+
+
+ + + + diff --git a/doc/html/gtest-all_8cc.js b/doc/html/gtest-all_8cc.js new file mode 100644 index 0000000..278ea73 --- /dev/null +++ b/doc/html/gtest-all_8cc.js @@ -0,0 +1,57 @@ +var gtest_all_8cc = +[ + [ "CapturedStream", "classtesting_1_1internal_1_1_captured_stream.html", "classtesting_1_1internal_1_1_captured_stream" ], + [ "EXPECT_FATAL_FAILURE", "gtest-all_8cc.html#a819a3fd7f8b8cf24b6f1b3a26708973d", null ], + [ "EXPECT_FATAL_FAILURE_ON_ALL_THREADS", "gtest-all_8cc.html#ad8aac5bc859b2ddc07583636ae4f45cf", null ], + [ "EXPECT_NONFATAL_FAILURE", "gtest-all_8cc.html#a8376fd6821bd88fd806697355e79e138", null ], + [ "EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS", "gtest-all_8cc.html#a9f4cf1f150fe9facfc4cbf0bae646ee9", null ], + [ "GTEST_HAS_GETTIMEOFDAY_", "gtest-all_8cc.html#a7c139c1711de5a69cbc934e8a082e4f9", null ], + [ "GTEST_IMPL_CMP_HELPER_", "gtest-all_8cc.html#a4a5b6fbde5dd05e05dd6846ac5e5c18e", null ], + [ "GTEST_INCLUDE_GTEST_GTEST_SPI_H_", "gtest-all_8cc.html#a2f159eaa9c00e7aa9fd6b296e520e35c", null ], + [ "GTEST_PATH_MAX_", "gtest-all_8cc.html#ad9d445747785a9271a57cf1d392b89ad", null ], + [ "GTEST_REPEATER_METHOD_", "gtest-all_8cc.html#a87a475ab9e81de8b49525787665b9229", null ], + [ "GTEST_REVERSE_REPEATER_METHOD_", "gtest-all_8cc.html#aa7da32fd7da6a8cceeed6b448cb7b5f2", null ], + [ "GTEST_SRC_GTEST_INTERNAL_INL_H_", "gtest-all_8cc.html#ab740e029f81d48cfba1b34cecce63fef", null ], + [ "CharFormat", "gtest-all_8cc.html#ae2ef98247c76a50cdc80ceb4a6c81793", [ + [ "kAsIs", "gtest-all_8cc.html#ae2ef98247c76a50cdc80ceb4a6c81793af7038866be92e9978360b831e376ffaa", null ], + [ "kHexEscape", "gtest-all_8cc.html#ae2ef98247c76a50cdc80ceb4a6c81793aebfa5293302338a8e8678744c103f113", null ], + [ "kSpecialEscape", "gtest-all_8cc.html#ae2ef98247c76a50cdc80ceb4a6c81793ae1211108e9f35f891d9951da64794d03", null ] + ] ], + [ "BoolFromGTestEnv", "gtest-all_8cc.html#a1055088bb9b867e1b7b8f096f519d7c5", null ], + [ "CaptureStderr", "gtest-all_8cc.html#a8ec00d458d0d442bd64af7b5f9c22dda", null ], + [ "CaptureStdout", "gtest-all_8cc.html#acba06d4f0343dec407738ba5544af990", null ], + [ "FormatCompilerIndependentFileLocation", "gtest-all_8cc.html#a1ee4cde97868c53e442d3182496a9f3c", null ], + [ "FormatFileLocation", "gtest-all_8cc.html#a31b7c3abed4a7c395f42c61e993989f4", null ], + [ "GetCapturedStderr", "gtest-all_8cc.html#a374156401da17704099d0c33fa53adfb", null ], + [ "GetCapturedStdout", "gtest-all_8cc.html#aed657219a9856a8d249a3230de0c54ce", null ], + [ "GetFileSize", "gtest-all_8cc.html#a40bcfd87e26aae36e0cc51e5db64fd89", null ], + [ "GetThreadCount", "gtest-all_8cc.html#a8cbd8bf820517923d7f3c4477b3af5fa", null ], + [ "GTEST_DEFINE_bool_", "gtest-all_8cc.html#a428e5944490e497df683cb8324ce4489", null ], + [ "GTEST_DEFINE_string_", "gtest-all_8cc.html#a8e954ed3f0f6ca2e90b043e419c74123", null ], + [ "GTEST_DEFINE_string_", "gtest-all_8cc.html#a20bfd9d47d8dd167ffc1c37a4c9ff73e", null ], + [ "GTEST_DISABLE_MSC_WARNINGS_POP_", "gtest-all_8cc.html#a789f37f9c345c2032699c194a58623d9", null ], + [ "GTEST_DISABLE_MSC_WARNINGS_PUSH_", "gtest-all_8cc.html#a88f79832f9d045112a76e9da8611cc13", null ], + [ "Int32FromGTestEnv", "gtest-all_8cc.html#a2196f070b2d28bceb45c7ad3b565b9ba", null ], + [ "IsPrintableAscii", "gtest-all_8cc.html#a744a6dd74c12d1e2c16b3c03e14ed4d4", null ], + [ "operator<<", "gtest-all_8cc.html#a266e39b7c4691fedb856047673a412d8", null ], + [ "OutputFlagAlsoCheckEnvVar", "gtest-all_8cc.html#a0c793c6d84760d900299916c077a1af4", null ], + [ "ParseInt32", "gtest-all_8cc.html#ac06fc81336a3d80755f4020d34321766", null ], + [ "PrintBytesInObjectTo", "gtest-all_8cc.html#abfb9aa80365f93b952e9a4bea09947a8", null ], + [ "PrintCharAndCodeTo", "gtest-all_8cc.html#a0c577e598e61d339ba45dd6643fb1969", null ], + [ "PrintStringTo", "gtest-all_8cc.html#ad609167d8d6792b0fb186539e0e159bd", null ], + [ "PrintTo", "gtest-all_8cc.html#aa7e70a85d66f0c109e3e69629ef577f2", null ], + [ "PrintTo", "gtest-all_8cc.html#abf6c518b437569187c1218166c702807", null ], + [ "PrintTo", "gtest-all_8cc.html#aa74ea9d64f76ce69eceb225ca5ebef58", null ], + [ "PrintTo", "gtest-all_8cc.html#adc6c98306d40b53fd07be4e295102a0a", null ], + [ "PrintTo", "gtest-all_8cc.html#afc20fb56b2547a8f91f9ff99650f2024", null ], + [ "PrintWideStringTo", "gtest-all_8cc.html#ac46308aa3c0294ae446a40115aeb32c6", null ], + [ "ReadEntireFile", "gtest-all_8cc.html#ab81b0af2a0131ea54dc11de00d5e6e51", null ], + [ "StringFromGTestEnv", "gtest-all_8cc.html#a0967cbf18fb1594f82512d8d822aba21", null ], + [ "UniversalPrintArray", "gtest-all_8cc.html#a070107e7a8205ad6ec4d538d52b15b38", null ], + [ "UniversalPrintArray", "gtest-all_8cc.html#a52394019018eb5079f9f1bcca23dcd60", null ], + [ "kCurrentDirectoryString", "gtest-all_8cc.html#a23a8e9527d0e544e7df2d64ad549ce3e", null ], + [ "kPathSeparator", "gtest-all_8cc.html#afcd71adaa9d1e6df7b282a17fc48125c", null ], + [ "kStdErrFileno", "gtest-all_8cc.html#a747eccfdbdee3ff8af3bedc476a57c85", null ], + [ "kStdOutFileno", "gtest-all_8cc.html#a24f0a3d50cac54a9132f4828ec9b96d9", null ], + [ "kUnknownFile", "gtest-all_8cc.html#abae7a5775c901f2fd12b058b00d09840", null ] +]; \ No newline at end of file diff --git a/doc/html/gtest-all_8cc_source.html b/doc/html/gtest-all_8cc_source.html new file mode 100644 index 0000000..f0b785e --- /dev/null +++ b/doc/html/gtest-all_8cc_source.html @@ -0,0 +1,284 @@ + + + + + + + +uTL: test/eclipse-cygwin/lib/gtest/gtest-all.cc Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
gtest-all.cc
+
+
+Go to the documentation of this file.
1 // Copyright 2008, Google Inc.
2 // All rights reserved.
3 //
4 // Redistribution and use in source and binary forms, with or without
5 // modification, are permitted provided that the following conditions are
6 // met:
7 //
8 // * Redistributions of source code must retain the above copyright
9 // notice, this list of conditions and the following disclaimer.
10 // * Redistributions in binary form must reproduce the above
11 // copyright notice, this list of conditions and the following disclaimer
12 // in the documentation and/or other materials provided with the
13 // distribution.
14 // * Neither the name of Google Inc. nor the names of its
15 // contributors may be used to endorse or promote products derived from
16 // this software without specific prior written permission.
17 //
18 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 
30 //
31 // Google C++ Testing and Mocking Framework (Google Test)
32 //
33 // Sometimes it's desirable to build Google Test by compiling a single file.
34 // This file serves this purpose.
35 
36 // This line ensures that gtest.h can be compiled on its own, even
37 // when it's fused.
38 #include "gtest.h"
39 
40 // The following lines pull in the real gtest *.cc files.
41 // Copyright 2005, Google Inc.
42 // All rights reserved.
43 //
44 // Redistribution and use in source and binary forms, with or without
45 // modification, are permitted provided that the following conditions are
46 // met:
47 //
48 // * Redistributions of source code must retain the above copyright
49 // notice, this list of conditions and the following disclaimer.
50 // * Redistributions in binary form must reproduce the above
51 // copyright notice, this list of conditions and the following disclaimer
52 // in the documentation and/or other materials provided with the
53 // distribution.
54 // * Neither the name of Google Inc. nor the names of its
55 // contributors may be used to endorse or promote products derived from
56 // this software without specific prior written permission.
57 //
58 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
59 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
60 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
61 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
62 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
63 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
64 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
65 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
66 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
67 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
68 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
69 
70 //
71 // The Google C++ Testing and Mocking Framework (Google Test)
72 
73 // Copyright 2007, Google Inc.
74 // All rights reserved.
75 //
76 // Redistribution and use in source and binary forms, with or without
77 // modification, are permitted provided that the following conditions are
78 // met:
79 //
80 // * Redistributions of source code must retain the above copyright
81 // notice, this list of conditions and the following disclaimer.
82 // * Redistributions in binary form must reproduce the above
83 // copyright notice, this list of conditions and the following disclaimer
84 // in the documentation and/or other materials provided with the
85 // distribution.
86 // * Neither the name of Google Inc. nor the names of its
87 // contributors may be used to endorse or promote products derived from
88 // this software without specific prior written permission.
89 //
90 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
91 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
92 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
93 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
94 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
95 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
96 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
97 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
98 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
99 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
100 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
101 
102 //
103 // Utilities for testing Google Test itself and code that uses Google Test
104 // (e.g. frameworks built on top of Google Test).
105 
106 // GOOGLETEST_CM0004 DO NOT DELETE
107 
108 #ifndef GTEST_INCLUDE_GTEST_GTEST_SPI_H_
109 #define GTEST_INCLUDE_GTEST_GTEST_SPI_H_
110 
111 
113 /* class A needs to have dll-interface to be used by clients of class B */)
114 
115 namespace testing {
116 
117 // This helper class can be used to mock out Google Test failure reporting
118 // so that we can test Google Test or code that builds on Google Test.
119 //
120 // An object of this class appends a TestPartResult object to the
121 // TestPartResultArray object given in the constructor whenever a Google Test
122 // failure is reported. It can either intercept only failures that are
123 // generated in the same thread that created this object or it can intercept
124 // all generated failures. The scope of this mock object can be controlled with
125 // the second argument to the two arguments constructor.
126 class GTEST_API_ ScopedFakeTestPartResultReporter
127  : public TestPartResultReporterInterface {
128  public:
129  // The two possible mocking modes of this object.
130  enum InterceptMode {
131  INTERCEPT_ONLY_CURRENT_THREAD, // Intercepts only thread local failures.
132  INTERCEPT_ALL_THREADS // Intercepts all failures.
133  };
134 
135  // The c'tor sets this object as the test part result reporter used
136  // by Google Test. The 'result' parameter specifies where to report the
137  // results. This reporter will only catch failures generated in the current
138  // thread. DEPRECATED
139  explicit ScopedFakeTestPartResultReporter(TestPartResultArray* result);
140 
141  // Same as above, but you can choose the interception scope of this object.
142  ScopedFakeTestPartResultReporter(InterceptMode intercept_mode,
143  TestPartResultArray* result);
144 
145  // The d'tor restores the previous test part result reporter.
146  ~ScopedFakeTestPartResultReporter() override;
147 
148  // Appends the TestPartResult object to the TestPartResultArray
149  // received in the constructor.
150  //
151  // This method is from the TestPartResultReporterInterface
152  // interface.
153  void ReportTestPartResult(const TestPartResult& result) override;
154 
155  private:
156  void Init();
157 
158  const InterceptMode intercept_mode_;
159  TestPartResultReporterInterface* old_reporter_;
160  TestPartResultArray* const result_;
161 
162  GTEST_DISALLOW_COPY_AND_ASSIGN_(ScopedFakeTestPartResultReporter);
163 };
164 
165 namespace internal {
166 
167 // A helper class for implementing EXPECT_FATAL_FAILURE() and
168 // EXPECT_NONFATAL_FAILURE(). Its destructor verifies that the given
169 // TestPartResultArray contains exactly one failure that has the given
170 // type and contains the given substring. If that's not the case, a
171 // non-fatal failure will be generated.
172 class GTEST_API_ SingleFailureChecker {
173  public:
174  // The constructor remembers the arguments.
175  SingleFailureChecker(const TestPartResultArray* results,
176  TestPartResult::Type type, const std::string& substr);
177  ~SingleFailureChecker();
178  private:
179  const TestPartResultArray* const results_;
180  const TestPartResult::Type type_;
181  const std::string substr_;
182 
183  GTEST_DISALLOW_COPY_AND_ASSIGN_(SingleFailureChecker);
184 };
185 
186 } // namespace internal
187 
188 } // namespace testing
189 
191 
192 // A set of macros for testing Google Test assertions or code that's expected
193 // to generate Google Test fatal failures. It verifies that the given
194 // statement will cause exactly one fatal Google Test failure with 'substr'
195 // being part of the failure message.
196 //
197 // There are two different versions of this macro. EXPECT_FATAL_FAILURE only
198 // affects and considers failures generated in the current thread and
199 // EXPECT_FATAL_FAILURE_ON_ALL_THREADS does the same but for all threads.
200 //
201 // The verification of the assertion is done correctly even when the statement
202 // throws an exception or aborts the current function.
203 //
204 // Known restrictions:
205 // - 'statement' cannot reference local non-static variables or
206 // non-static members of the current object.
207 // - 'statement' cannot return a value.
208 // - You cannot stream a failure message to this macro.
209 //
210 // Note that even though the implementations of the following two
211 // macros are much alike, we cannot refactor them to use a common
212 // helper macro, due to some peculiarity in how the preprocessor
213 // works. The AcceptsMacroThatExpandsToUnprotectedComma test in
214 // gtest_unittest.cc will fail to compile if we do that.
215 #define EXPECT_FATAL_FAILURE(statement, substr) \
216  do { \
217  class GTestExpectFatalFailureHelper {\
218  public:\
219  static void Execute() { statement; }\
220  };\
221  ::testing::TestPartResultArray gtest_failures;\
222  ::testing::internal::SingleFailureChecker gtest_checker(\
223  &gtest_failures, ::testing::TestPartResult::kFatalFailure, (substr));\
224  {\
225  ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\
226  ::testing::ScopedFakeTestPartResultReporter:: \
227  INTERCEPT_ONLY_CURRENT_THREAD, &gtest_failures);\
228  GTestExpectFatalFailureHelper::Execute();\
229  }\
230  } while (::testing::internal::AlwaysFalse())
231 
232 #define EXPECT_FATAL_FAILURE_ON_ALL_THREADS(statement, substr) \
233  do { \
234  class GTestExpectFatalFailureHelper {\
235  public:\
236  static void Execute() { statement; }\
237  };\
238  ::testing::TestPartResultArray gtest_failures;\
239  ::testing::internal::SingleFailureChecker gtest_checker(\
240  &gtest_failures, ::testing::TestPartResult::kFatalFailure, (substr));\
241  {\
242  ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\
243  ::testing::ScopedFakeTestPartResultReporter:: \
244  INTERCEPT_ALL_THREADS, &gtest_failures);\
245  GTestExpectFatalFailureHelper::Execute();\
246  }\
247  } while (::testing::internal::AlwaysFalse())
248 
249 // A macro for testing Google Test assertions or code that's expected to
250 // generate Google Test non-fatal failures. It asserts that the given
251 // statement will cause exactly one non-fatal Google Test failure with 'substr'
252 // being part of the failure message.
253 //
254 // There are two different versions of this macro. EXPECT_NONFATAL_FAILURE only
255 // affects and considers failures generated in the current thread and
256 // EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS does the same but for all threads.
257 //
258 // 'statement' is allowed to reference local variables and members of
259 // the current object.
260 //
261 // The verification of the assertion is done correctly even when the statement
262 // throws an exception or aborts the current function.
263 //
264 // Known restrictions:
265 // - You cannot stream a failure message to this macro.
266 //
267 // Note that even though the implementations of the following two
268 // macros are much alike, we cannot refactor them to use a common
269 // helper macro, due to some peculiarity in how the preprocessor
270 // works. If we do that, the code won't compile when the user gives
271 // EXPECT_NONFATAL_FAILURE() a statement that contains a macro that
272 // expands to code containing an unprotected comma. The
273 // AcceptsMacroThatExpandsToUnprotectedComma test in gtest_unittest.cc
274 // catches that.
275 //
276 // For the same reason, we have to write
277 // if (::testing::internal::AlwaysTrue()) { statement; }
278 // instead of
279 // GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement)
280 // to avoid an MSVC warning on unreachable code.
281 #define EXPECT_NONFATAL_FAILURE(statement, substr) \
282  do {\
283  ::testing::TestPartResultArray gtest_failures;\
284  ::testing::internal::SingleFailureChecker gtest_checker(\
285  &gtest_failures, ::testing::TestPartResult::kNonFatalFailure, \
286  (substr));\
287  {\
288  ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\
289  ::testing::ScopedFakeTestPartResultReporter:: \
290  INTERCEPT_ONLY_CURRENT_THREAD, &gtest_failures);\
291  if (::testing::internal::AlwaysTrue()) { statement; }\
292  }\
293  } while (::testing::internal::AlwaysFalse())
294 
295 #define EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS(statement, substr) \
296  do {\
297  ::testing::TestPartResultArray gtest_failures;\
298  ::testing::internal::SingleFailureChecker gtest_checker(\
299  &gtest_failures, ::testing::TestPartResult::kNonFatalFailure, \
300  (substr));\
301  {\
302  ::testing::ScopedFakeTestPartResultReporter gtest_reporter(\
303  ::testing::ScopedFakeTestPartResultReporter::INTERCEPT_ALL_THREADS, \
304  &gtest_failures);\
305  if (::testing::internal::AlwaysTrue()) { statement; }\
306  }\
307  } while (::testing::internal::AlwaysFalse())
308 
309 #endif // GTEST_INCLUDE_GTEST_GTEST_SPI_H_
310 
311 #include <ctype.h>
312 #include <math.h>
313 #include <stdarg.h>
314 #include <stdio.h>
315 #include <stdlib.h>
316 #include <time.h>
317 #include <wchar.h>
318 #include <wctype.h>
319 
320 #include <algorithm>
321 #include <iomanip>
322 #include <limits>
323 #include <list>
324 #include <map>
325 #include <ostream> // NOLINT
326 #include <sstream>
327 #include <vector>
328 
329 #if GTEST_OS_LINUX
330 
331 # define GTEST_HAS_GETTIMEOFDAY_ 1
332 
333 # include <fcntl.h> // NOLINT
334 # include <limits.h> // NOLINT
335 # include <sched.h> // NOLINT
336 // Declares vsnprintf(). This header is not available on Windows.
337 # include <strings.h> // NOLINT
338 # include <sys/mman.h> // NOLINT
339 # include <sys/time.h> // NOLINT
340 # include <unistd.h> // NOLINT
341 # include <string>
342 
343 #elif GTEST_OS_ZOS
344 # define GTEST_HAS_GETTIMEOFDAY_ 1
345 # include <sys/time.h> // NOLINT
346 
347 // On z/OS we additionally need strings.h for strcasecmp.
348 # include <strings.h> // NOLINT
349 
350 #elif GTEST_OS_WINDOWS_MOBILE // We are on Windows CE.
351 
352 # include <windows.h> // NOLINT
353 # undef min
354 
355 #elif GTEST_OS_WINDOWS // We are on Windows proper.
356 
357 # include <io.h> // NOLINT
358 # include <sys/timeb.h> // NOLINT
359 # include <sys/types.h> // NOLINT
360 # include <sys/stat.h> // NOLINT
361 
362 # if GTEST_OS_WINDOWS_MINGW
363 // MinGW has gettimeofday() but not _ftime64().
364 # define GTEST_HAS_GETTIMEOFDAY_ 1
365 # include <sys/time.h> // NOLINT
366 # endif // GTEST_OS_WINDOWS_MINGW
367 
368 // cpplint thinks that the header is already included, so we want to
369 // silence it.
370 # include <windows.h> // NOLINT
371 # undef min
372 
373 #else
374 
375 // Assume other platforms have gettimeofday().
376 # define GTEST_HAS_GETTIMEOFDAY_ 1
377 
378 // cpplint thinks that the header is already included, so we want to
379 // silence it.
380 # include <sys/time.h> // NOLINT
381 # include <unistd.h> // NOLINT
382 
383 #endif // GTEST_OS_LINUX
384 
385 #if GTEST_HAS_EXCEPTIONS
386 # include <stdexcept>
387 #endif
388 
389 #if GTEST_CAN_STREAM_RESULTS_
390 # include <arpa/inet.h> // NOLINT
391 # include <netdb.h> // NOLINT
392 # include <sys/socket.h> // NOLINT
393 # include <sys/types.h> // NOLINT
394 #endif
395 
396 // Copyright 2005, Google Inc.
397 // All rights reserved.
398 //
399 // Redistribution and use in source and binary forms, with or without
400 // modification, are permitted provided that the following conditions are
401 // met:
402 //
403 // * Redistributions of source code must retain the above copyright
404 // notice, this list of conditions and the following disclaimer.
405 // * Redistributions in binary form must reproduce the above
406 // copyright notice, this list of conditions and the following disclaimer
407 // in the documentation and/or other materials provided with the
408 // distribution.
409 // * Neither the name of Google Inc. nor the names of its
410 // contributors may be used to endorse or promote products derived from
411 // this software without specific prior written permission.
412 //
413 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
414 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
415 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
416 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
417 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
418 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
419 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
420 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
421 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
422 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
423 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
424 
425 // Utility functions and classes used by the Google C++ testing framework.//
426 // This file contains purely Google Test's internal implementation. Please
427 // DO NOT #INCLUDE IT IN A USER PROGRAM.
428 
429 #ifndef GTEST_SRC_GTEST_INTERNAL_INL_H_
430 #define GTEST_SRC_GTEST_INTERNAL_INL_H_
431 
432 #ifndef _WIN32_WCE
433 # include <errno.h>
434 #endif // !_WIN32_WCE
435 #include <stddef.h>
436 #include <stdlib.h> // For strtoll/_strtoul64/malloc/free.
437 #include <string.h> // For memmove.
438 
439 #include <algorithm>
440 #include <memory>
441 #include <string>
442 #include <vector>
443 
444 
445 #if GTEST_CAN_STREAM_RESULTS_
446 # include <arpa/inet.h> // NOLINT
447 # include <netdb.h> // NOLINT
448 #endif
449 
450 #if GTEST_OS_WINDOWS
451 # include <windows.h> // NOLINT
452 #endif // GTEST_OS_WINDOWS
453 
454 
456 /* class A needs to have dll-interface to be used by clients of class B */)
457 
458 namespace testing {
459 
460 // Declares the flags.
461 //
462 // We don't want the users to modify this flag in the code, but want
463 // Google Test's own unit tests to be able to access it. Therefore we
464 // declare it here as opposed to in gtest.h.
465 GTEST_DECLARE_bool_(death_test_use_fork);
466 
467 namespace internal {
468 
469 // The value of GetTestTypeId() as seen from within the Google Test
470 // library. This is solely for testing GetTestTypeId().
471 GTEST_API_ extern const TypeId kTestTypeIdInGoogleTest;
472 
473 // Names of the flags (needed for parsing Google Test flags).
474 const char kAlsoRunDisabledTestsFlag[] = "also_run_disabled_tests";
475 const char kBreakOnFailureFlag[] = "break_on_failure";
476 const char kCatchExceptionsFlag[] = "catch_exceptions";
477 const char kColorFlag[] = "color";
478 const char kFilterFlag[] = "filter";
479 const char kListTestsFlag[] = "list_tests";
480 const char kOutputFlag[] = "output";
481 const char kPrintTimeFlag[] = "print_time";
482 const char kPrintUTF8Flag[] = "print_utf8";
483 const char kRandomSeedFlag[] = "random_seed";
484 const char kRepeatFlag[] = "repeat";
485 const char kShuffleFlag[] = "shuffle";
486 const char kStackTraceDepthFlag[] = "stack_trace_depth";
487 const char kStreamResultToFlag[] = "stream_result_to";
488 const char kThrowOnFailureFlag[] = "throw_on_failure";
489 const char kFlagfileFlag[] = "flagfile";
490 
491 // A valid random seed must be in [1, kMaxRandomSeed].
492 const int kMaxRandomSeed = 99999;
493 
494 // g_help_flag is true iff the --help flag or an equivalent form is
495 // specified on the command line.
496 GTEST_API_ extern bool g_help_flag;
497 
498 // Returns the current time in milliseconds.
499 GTEST_API_ TimeInMillis GetTimeInMillis();
500 
501 // Returns true iff Google Test should use colors in the output.
502 GTEST_API_ bool ShouldUseColor(bool stdout_is_tty);
503 
504 // Formats the given time in milliseconds as seconds.
505 GTEST_API_ std::string FormatTimeInMillisAsSeconds(TimeInMillis ms);
506 
507 // Converts the given time in milliseconds to a date string in the ISO 8601
508 // format, without the timezone information. N.B.: due to the use the
509 // non-reentrant localtime() function, this function is not thread safe. Do
510 // not use it in any code that can be called from multiple threads.
511 GTEST_API_ std::string FormatEpochTimeInMillisAsIso8601(TimeInMillis ms);
512 
513 // Parses a string for an Int32 flag, in the form of "--flag=value".
514 //
515 // On success, stores the value of the flag in *value, and returns
516 // true. On failure, returns false without changing *value.
517 GTEST_API_ bool ParseInt32Flag(
518  const char* str, const char* flag, Int32* value);
519 
520 // Returns a random seed in range [1, kMaxRandomSeed] based on the
521 // given --gtest_random_seed flag value.
522 inline int GetRandomSeedFromFlag(Int32 random_seed_flag) {
523  const unsigned int raw_seed = (random_seed_flag == 0) ?
524  static_cast<unsigned int>(GetTimeInMillis()) :
525  static_cast<unsigned int>(random_seed_flag);
526 
527  // Normalizes the actual seed to range [1, kMaxRandomSeed] such that
528  // it's easy to type.
529  const int normalized_seed =
530  static_cast<int>((raw_seed - 1U) %
531  static_cast<unsigned int>(kMaxRandomSeed)) + 1;
532  return normalized_seed;
533 }
534 
535 // Returns the first valid random seed after 'seed'. The behavior is
536 // undefined if 'seed' is invalid. The seed after kMaxRandomSeed is
537 // considered to be 1.
538 inline int GetNextRandomSeed(int seed) {
539  GTEST_CHECK_(1 <= seed && seed <= kMaxRandomSeed)
540  << "Invalid random seed " << seed << " - must be in [1, "
541  << kMaxRandomSeed << "].";
542  const int next_seed = seed + 1;
543  return (next_seed > kMaxRandomSeed) ? 1 : next_seed;
544 }
545 
546 // This class saves the values of all Google Test flags in its c'tor, and
547 // restores them in its d'tor.
548 class GTestFlagSaver {
549  public:
550  // The c'tor.
551  GTestFlagSaver() {
552  also_run_disabled_tests_ = GTEST_FLAG(also_run_disabled_tests);
553  break_on_failure_ = GTEST_FLAG(break_on_failure);
554  catch_exceptions_ = GTEST_FLAG(catch_exceptions);
555  color_ = GTEST_FLAG(color);
556  death_test_style_ = GTEST_FLAG(death_test_style);
557  death_test_use_fork_ = GTEST_FLAG(death_test_use_fork);
558  filter_ = GTEST_FLAG(filter);
559  internal_run_death_test_ = GTEST_FLAG(internal_run_death_test);
560  list_tests_ = GTEST_FLAG(list_tests);
561  output_ = GTEST_FLAG(output);
562  print_time_ = GTEST_FLAG(print_time);
563  print_utf8_ = GTEST_FLAG(print_utf8);
564  random_seed_ = GTEST_FLAG(random_seed);
565  repeat_ = GTEST_FLAG(repeat);
566  shuffle_ = GTEST_FLAG(shuffle);
567  stack_trace_depth_ = GTEST_FLAG(stack_trace_depth);
568  stream_result_to_ = GTEST_FLAG(stream_result_to);
569  throw_on_failure_ = GTEST_FLAG(throw_on_failure);
570  }
571 
572  // The d'tor is not virtual. DO NOT INHERIT FROM THIS CLASS.
573  ~GTestFlagSaver() {
574  GTEST_FLAG(also_run_disabled_tests) = also_run_disabled_tests_;
575  GTEST_FLAG(break_on_failure) = break_on_failure_;
576  GTEST_FLAG(catch_exceptions) = catch_exceptions_;
577  GTEST_FLAG(color) = color_;
578  GTEST_FLAG(death_test_style) = death_test_style_;
579  GTEST_FLAG(death_test_use_fork) = death_test_use_fork_;
580  GTEST_FLAG(filter) = filter_;
581  GTEST_FLAG(internal_run_death_test) = internal_run_death_test_;
582  GTEST_FLAG(list_tests) = list_tests_;
583  GTEST_FLAG(output) = output_;
584  GTEST_FLAG(print_time) = print_time_;
585  GTEST_FLAG(print_utf8) = print_utf8_;
586  GTEST_FLAG(random_seed) = random_seed_;
587  GTEST_FLAG(repeat) = repeat_;
588  GTEST_FLAG(shuffle) = shuffle_;
589  GTEST_FLAG(stack_trace_depth) = stack_trace_depth_;
590  GTEST_FLAG(stream_result_to) = stream_result_to_;
591  GTEST_FLAG(throw_on_failure) = throw_on_failure_;
592  }
593 
594  private:
595  // Fields for saving the original values of flags.
596  bool also_run_disabled_tests_;
597  bool break_on_failure_;
598  bool catch_exceptions_;
599  std::string color_;
600  std::string death_test_style_;
601  bool death_test_use_fork_;
602  std::string filter_;
603  std::string internal_run_death_test_;
604  bool list_tests_;
605  std::string output_;
606  bool print_time_;
607  bool print_utf8_;
608  internal::Int32 random_seed_;
609  internal::Int32 repeat_;
610  bool shuffle_;
611  internal::Int32 stack_trace_depth_;
612  std::string stream_result_to_;
613  bool throw_on_failure_;
615 
616 // Converts a Unicode code point to a narrow string in UTF-8 encoding.
617 // code_point parameter is of type UInt32 because wchar_t may not be
618 // wide enough to contain a code point.
619 // If the code_point is not a valid Unicode code point
620 // (i.e. outside of Unicode range U+0 to U+10FFFF) it will be converted
621 // to "(Invalid Unicode 0xXXXXXXXX)".
622 GTEST_API_ std::string CodePointToUtf8(UInt32 code_point);
623 
624 // Converts a wide string to a narrow string in UTF-8 encoding.
625 // The wide string is assumed to have the following encoding:
626 // UTF-16 if sizeof(wchar_t) == 2 (on Windows, Cygwin)
627 // UTF-32 if sizeof(wchar_t) == 4 (on Linux)
628 // Parameter str points to a null-terminated wide string.
629 // Parameter num_chars may additionally limit the number
630 // of wchar_t characters processed. -1 is used when the entire string
631 // should be processed.
632 // If the string contains code points that are not valid Unicode code points
633 // (i.e. outside of Unicode range U+0 to U+10FFFF) they will be output
634 // as '(Invalid Unicode 0xXXXXXXXX)'. If the string is in UTF16 encoding
635 // and contains invalid UTF-16 surrogate pairs, values in those pairs
636 // will be encoded as individual Unicode characters from Basic Normal Plane.
637 GTEST_API_ std::string WideStringToUtf8(const wchar_t* str, int num_chars);
638 
639 // Reads the GTEST_SHARD_STATUS_FILE environment variable, and creates the file
640 // if the variable is present. If a file already exists at this location, this
641 // function will write over it. If the variable is present, but the file cannot
642 // be created, prints an error and exits.
643 void WriteToShardStatusFileIfNeeded();
644 
645 // Checks whether sharding is enabled by examining the relevant
646 // environment variable values. If the variables are present,
647 // but inconsistent (e.g., shard_index >= total_shards), prints
648 // an error and exits. If in_subprocess_for_death_test, sharding is
649 // disabled because it must only be applied to the original test
650 // process. Otherwise, we could filter out death tests we intended to execute.
651 GTEST_API_ bool ShouldShard(const char* total_shards_str,
652  const char* shard_index_str,
653  bool in_subprocess_for_death_test);
654 
655 // Parses the environment variable var as an Int32. If it is unset,
656 // returns default_val. If it is not an Int32, prints an error and
657 // and aborts.
658 GTEST_API_ Int32 Int32FromEnvOrDie(const char* env_var, Int32 default_val);
659 
660 // Given the total number of shards, the shard index, and the test id,
661 // returns true iff the test should be run on this shard. The test id is
662 // some arbitrary but unique non-negative integer assigned to each test
663 // method. Assumes that 0 <= shard_index < total_shards.
664 GTEST_API_ bool ShouldRunTestOnShard(
665  int total_shards, int shard_index, int test_id);
666 
667 // STL container utilities.
668 
669 // Returns the number of elements in the given container that satisfy
670 // the given predicate.
671 template <class Container, typename Predicate>
672 inline int CountIf(const Container& c, Predicate predicate) {
673  // Implemented as an explicit loop since std::count_if() in libCstd on
674  // Solaris has a non-standard signature.
675  int count = 0;
676  for (typename Container::const_iterator it = c.begin(); it != c.end(); ++it) {
677  if (predicate(*it))
678  ++count;
679  }
680  return count;
681 }
682 
683 // Applies a function/functor to each element in the container.
684 template <class Container, typename Functor>
685 void ForEach(const Container& c, Functor functor) {
686  std::for_each(c.begin(), c.end(), functor);
687 }
688 
689 // Returns the i-th element of the vector, or default_value if i is not
690 // in range [0, v.size()).
691 template <typename E>
692 inline E GetElementOr(const std::vector<E>& v, int i, E default_value) {
693  return (i < 0 || i >= static_cast<int>(v.size())) ? default_value : v[i];
694 }
695 
696 // Performs an in-place shuffle of a range of the vector's elements.
697 // 'begin' and 'end' are element indices as an STL-style range;
698 // i.e. [begin, end) are shuffled, where 'end' == size() means to
699 // shuffle to the end of the vector.
700 template <typename E>
701 void ShuffleRange(internal::Random* random, int begin, int end,
702  std::vector<E>* v) {
703  const int size = static_cast<int>(v->size());
704  GTEST_CHECK_(0 <= begin && begin <= size)
705  << "Invalid shuffle range start " << begin << ": must be in range [0, "
706  << size << "].";
707  GTEST_CHECK_(begin <= end && end <= size)
708  << "Invalid shuffle range finish " << end << ": must be in range ["
709  << begin << ", " << size << "].";
710 
711  // Fisher-Yates shuffle, from
712  // http://en.wikipedia.org/wiki/Fisher-Yates_shuffle
713  for (int range_width = end - begin; range_width >= 2; range_width--) {
714  const int last_in_range = begin + range_width - 1;
715  const int selected = begin + random->Generate(range_width);
716  std::swap((*v)[selected], (*v)[last_in_range]);
717  }
718 }
719 
720 // Performs an in-place shuffle of the vector's elements.
721 template <typename E>
722 inline void Shuffle(internal::Random* random, std::vector<E>* v) {
723  ShuffleRange(random, 0, static_cast<int>(v->size()), v);
724 }
725 
726 // A function for deleting an object. Handy for being used as a
727 // functor.
728 template <typename T>
729 static void Delete(T* x) {
730  delete x;
731 }
732 
733 // A predicate that checks the key of a TestProperty against a known key.
734 //
735 // TestPropertyKeyIs is copyable.
736 class TestPropertyKeyIs {
737  public:
738  // Constructor.
739  //
740  // TestPropertyKeyIs has NO default constructor.
741  explicit TestPropertyKeyIs(const std::string& key) : key_(key) {}
742 
743  // Returns true iff the test name of test property matches on key_.
744  bool operator()(const TestProperty& test_property) const {
745  return test_property.key() == key_;
746  }
747 
748  private:
749  std::string key_;
750 };
751 
752 // Class UnitTestOptions.
753 //
754 // This class contains functions for processing options the user
755 // specifies when running the tests. It has only static members.
756 //
757 // In most cases, the user can specify an option using either an
758 // environment variable or a command line flag. E.g. you can set the
759 // test filter using either GTEST_FILTER or --gtest_filter. If both
760 // the variable and the flag are present, the latter overrides the
761 // former.
762 class GTEST_API_ UnitTestOptions {
763  public:
764  // Functions for processing the gtest_output flag.
765 
766  // Returns the output format, or "" for normal printed output.
767  static std::string GetOutputFormat();
768 
769  // Returns the absolute path of the requested output file, or the
770  // default (test_detail.xml in the original working directory) if
771  // none was explicitly specified.
772  static std::string GetAbsolutePathToOutputFile();
773 
774  // Functions for processing the gtest_filter flag.
775 
776  // Returns true iff the wildcard pattern matches the string. The
777  // first ':' or '\0' character in pattern marks the end of it.
778  //
779  // This recursive algorithm isn't very efficient, but is clear and
780  // works well enough for matching test names, which are short.
781  static bool PatternMatchesString(const char *pattern, const char *str);
782 
783  // Returns true iff the user-specified filter matches the test suite
784  // name and the test name.
785  static bool FilterMatchesTest(const std::string& test_suite_name,
786  const std::string& test_name);
787 
788 #if GTEST_OS_WINDOWS
789  // Function for supporting the gtest_catch_exception flag.
790 
791  // Returns EXCEPTION_EXECUTE_HANDLER if Google Test should handle the
792  // given SEH exception, or EXCEPTION_CONTINUE_SEARCH otherwise.
793  // This function is useful as an __except condition.
794  static int GTestShouldProcessSEH(DWORD exception_code);
795 #endif // GTEST_OS_WINDOWS
796 
797  // Returns true if "name" matches the ':' separated list of glob-style
798  // filters in "filter".
799  static bool MatchesFilter(const std::string& name, const char* filter);
800 };
801 
802 // Returns the current application's name, removing directory path if that
803 // is present. Used by UnitTestOptions::GetOutputFile.
804 GTEST_API_ FilePath GetCurrentExecutableName();
805 
806 // The role interface for getting the OS stack trace as a string.
807 class OsStackTraceGetterInterface {
808  public:
809  OsStackTraceGetterInterface() {}
810  virtual ~OsStackTraceGetterInterface() {}
811 
812  // Returns the current OS stack trace as an std::string. Parameters:
813  //
814  // max_depth - the maximum number of stack frames to be included
815  // in the trace.
816  // skip_count - the number of top frames to be skipped; doesn't count
817  // against max_depth.
818  virtual std::string CurrentStackTrace(int max_depth, int skip_count) = 0;
819 
820  // UponLeavingGTest() should be called immediately before Google Test calls
821  // user code. It saves some information about the current stack that
822  // CurrentStackTrace() will use to find and hide Google Test stack frames.
823  virtual void UponLeavingGTest() = 0;
824 
825  // This string is inserted in place of stack frames that are part of
826  // Google Test's implementation.
827  static const char* const kElidedFramesMarker;
828 
829  private:
830  GTEST_DISALLOW_COPY_AND_ASSIGN_(OsStackTraceGetterInterface);
831 };
832 
833 // A working implementation of the OsStackTraceGetterInterface interface.
834 class OsStackTraceGetter : public OsStackTraceGetterInterface {
835  public:
836  OsStackTraceGetter() {}
837 
838  std::string CurrentStackTrace(int max_depth, int skip_count) override;
839  void UponLeavingGTest() override;
840 
841  private:
842 #if GTEST_HAS_ABSL
843  Mutex mutex_; // Protects all internal state.
844 
845  // We save the stack frame below the frame that calls user code.
846  // We do this because the address of the frame immediately below
847  // the user code changes between the call to UponLeavingGTest()
848  // and any calls to the stack trace code from within the user code.
849  void* caller_frame_ = nullptr;
850 #endif // GTEST_HAS_ABSL
851 
852  GTEST_DISALLOW_COPY_AND_ASSIGN_(OsStackTraceGetter);
853 };
854 
855 // Information about a Google Test trace point.
856 struct TraceInfo {
857  const char* file;
858  int line;
859  std::string message;
860 };
861 
862 // This is the default global test part result reporter used in UnitTestImpl.
863 // This class should only be used by UnitTestImpl.
864 class DefaultGlobalTestPartResultReporter
865  : public TestPartResultReporterInterface {
866  public:
867  explicit DefaultGlobalTestPartResultReporter(UnitTestImpl* unit_test);
868  // Implements the TestPartResultReporterInterface. Reports the test part
869  // result in the current test.
870  void ReportTestPartResult(const TestPartResult& result) override;
871 
872  private:
873  UnitTestImpl* const unit_test_;
874 
875  GTEST_DISALLOW_COPY_AND_ASSIGN_(DefaultGlobalTestPartResultReporter);
876 };
877 
878 // This is the default per thread test part result reporter used in
879 // UnitTestImpl. This class should only be used by UnitTestImpl.
880 class DefaultPerThreadTestPartResultReporter
881  : public TestPartResultReporterInterface {
882  public:
883  explicit DefaultPerThreadTestPartResultReporter(UnitTestImpl* unit_test);
884  // Implements the TestPartResultReporterInterface. The implementation just
885  // delegates to the current global test part result reporter of *unit_test_.
886  void ReportTestPartResult(const TestPartResult& result) override;
887 
888  private:
889  UnitTestImpl* const unit_test_;
890 
891  GTEST_DISALLOW_COPY_AND_ASSIGN_(DefaultPerThreadTestPartResultReporter);
892 };
893 
894 // The private implementation of the UnitTest class. We don't protect
895 // the methods under a mutex, as this class is not accessible by a
896 // user and the UnitTest class that delegates work to this class does
897 // proper locking.
898 class GTEST_API_ UnitTestImpl {
899  public:
900  explicit UnitTestImpl(UnitTest* parent);
901  virtual ~UnitTestImpl();
902 
903  // There are two different ways to register your own TestPartResultReporter.
904  // You can register your own repoter to listen either only for test results
905  // from the current thread or for results from all threads.
906  // By default, each per-thread test result repoter just passes a new
907  // TestPartResult to the global test result reporter, which registers the
908  // test part result for the currently running test.
909 
910  // Returns the global test part result reporter.
911  TestPartResultReporterInterface* GetGlobalTestPartResultReporter();
912 
913  // Sets the global test part result reporter.
914  void SetGlobalTestPartResultReporter(
915  TestPartResultReporterInterface* reporter);
916 
917  // Returns the test part result reporter for the current thread.
918  TestPartResultReporterInterface* GetTestPartResultReporterForCurrentThread();
919 
920  // Sets the test part result reporter for the current thread.
921  void SetTestPartResultReporterForCurrentThread(
922  TestPartResultReporterInterface* reporter);
923 
924  // Gets the number of successful test suites.
925  int successful_test_suite_count() const;
926 
927  // Gets the number of failed test suites.
928  int failed_test_suite_count() const;
929 
930  // Gets the number of all test suites.
931  int total_test_suite_count() const;
932 
933  // Gets the number of all test suites that contain at least one test
934  // that should run.
935  int test_suite_to_run_count() const;
936 
937  // Gets the number of successful tests.
938  int successful_test_count() const;
939 
940  // Gets the number of skipped tests.
941  int skipped_test_count() const;
942 
943  // Gets the number of failed tests.
944  int failed_test_count() const;
945 
946  // Gets the number of disabled tests that will be reported in the XML report.
947  int reportable_disabled_test_count() const;
948 
949  // Gets the number of disabled tests.
950  int disabled_test_count() const;
951 
952  // Gets the number of tests to be printed in the XML report.
953  int reportable_test_count() const;
954 
955  // Gets the number of all tests.
956  int total_test_count() const;
957 
958  // Gets the number of tests that should run.
959  int test_to_run_count() const;
960 
961  // Gets the time of the test program start, in ms from the start of the
962  // UNIX epoch.
963  TimeInMillis start_timestamp() const { return start_timestamp_; }
964 
965  // Gets the elapsed time, in milliseconds.
966  TimeInMillis elapsed_time() const { return elapsed_time_; }
967 
968  // Returns true iff the unit test passed (i.e. all test suites passed).
969  bool Passed() const { return !Failed(); }
970 
971  // Returns true iff the unit test failed (i.e. some test suite failed
972  // or something outside of all tests failed).
973  bool Failed() const {
974  return failed_test_suite_count() > 0 || ad_hoc_test_result()->Failed();
975  }
976 
977  // Gets the i-th test suite among all the test suites. i can range from 0 to
978  // total_test_suite_count() - 1. If i is not in that range, returns NULL.
979  const TestSuite* GetTestSuite(int i) const {
980  const int index = GetElementOr(test_suite_indices_, i, -1);
981  return index < 0 ? nullptr : test_suites_[i];
982  }
983 
984  // Legacy API is deprecated but still available
985 #ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
986  const TestCase* GetTestCase(int i) const { return GetTestSuite(i); }
987 #endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
988 
989  // Gets the i-th test suite among all the test suites. i can range from 0 to
990  // total_test_suite_count() - 1. If i is not in that range, returns NULL.
991  TestSuite* GetMutableSuiteCase(int i) {
992  const int index = GetElementOr(test_suite_indices_, i, -1);
993  return index < 0 ? nullptr : test_suites_[index];
994  }
995 
996  // Provides access to the event listener list.
997  TestEventListeners* listeners() { return &listeners_; }
998 
999  // Returns the TestResult for the test that's currently running, or
1000  // the TestResult for the ad hoc test if no test is running.
1001  TestResult* current_test_result();
1002 
1003  // Returns the TestResult for the ad hoc test.
1004  const TestResult* ad_hoc_test_result() const { return &ad_hoc_test_result_; }
1005 
1006  // Sets the OS stack trace getter.
1007  //
1008  // Does nothing if the input and the current OS stack trace getter
1009  // are the same; otherwise, deletes the old getter and makes the
1010  // input the current getter.
1011  void set_os_stack_trace_getter(OsStackTraceGetterInterface* getter);
1012 
1013  // Returns the current OS stack trace getter if it is not NULL;
1014  // otherwise, creates an OsStackTraceGetter, makes it the current
1015  // getter, and returns it.
1016  OsStackTraceGetterInterface* os_stack_trace_getter();
1017 
1018  // Returns the current OS stack trace as an std::string.
1019  //
1020  // The maximum number of stack frames to be included is specified by
1021  // the gtest_stack_trace_depth flag. The skip_count parameter
1022  // specifies the number of top frames to be skipped, which doesn't
1023  // count against the number of frames to be included.
1024  //
1025  // For example, if Foo() calls Bar(), which in turn calls
1026  // CurrentOsStackTraceExceptTop(1), Foo() will be included in the
1027  // trace but Bar() and CurrentOsStackTraceExceptTop() won't.
1028  std::string CurrentOsStackTraceExceptTop(int skip_count) GTEST_NO_INLINE_;
1029 
1030  // Finds and returns a TestSuite with the given name. If one doesn't
1031  // exist, creates one and returns it.
1032  //
1033  // Arguments:
1034  //
1035  // test_suite_name: name of the test suite
1036  // type_param: the name of the test's type parameter, or NULL if
1037  // this is not a typed or a type-parameterized test.
1038  // set_up_tc: pointer to the function that sets up the test suite
1039  // tear_down_tc: pointer to the function that tears down the test suite
1040  TestSuite* GetTestSuite(const char* test_suite_name, const char* type_param,
1041  internal::SetUpTestSuiteFunc set_up_tc,
1042  internal::TearDownTestSuiteFunc tear_down_tc);
1043 
1044 // Legacy API is deprecated but still available
1045 #ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
1046  TestCase* GetTestCase(const char* test_case_name, const char* type_param,
1047  internal::SetUpTestSuiteFunc set_up_tc,
1048  internal::TearDownTestSuiteFunc tear_down_tc) {
1049  return GetTestSuite(test_case_name, type_param, set_up_tc, tear_down_tc);
1050  }
1051 #endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
1052 
1053  // Adds a TestInfo to the unit test.
1054  //
1055  // Arguments:
1056  //
1057  // set_up_tc: pointer to the function that sets up the test suite
1058  // tear_down_tc: pointer to the function that tears down the test suite
1059  // test_info: the TestInfo object
1060  void AddTestInfo(internal::SetUpTestSuiteFunc set_up_tc,
1061  internal::TearDownTestSuiteFunc tear_down_tc,
1062  TestInfo* test_info) {
1063  // In order to support thread-safe death tests, we need to
1064  // remember the original working directory when the test program
1065  // was first invoked. We cannot do this in RUN_ALL_TESTS(), as
1066  // the user may have changed the current directory before calling
1067  // RUN_ALL_TESTS(). Therefore we capture the current directory in
1068  // AddTestInfo(), which is called to register a TEST or TEST_F
1069  // before main() is reached.
1070  if (original_working_dir_.IsEmpty()) {
1071  original_working_dir_.Set(FilePath::GetCurrentDir());
1072  GTEST_CHECK_(!original_working_dir_.IsEmpty())
1073  << "Failed to get the current working directory.";
1074  }
1075 
1076  GetTestSuite(test_info->test_suite_name(), test_info->type_param(),
1077  set_up_tc, tear_down_tc)
1078  ->AddTestInfo(test_info);
1079  }
1080 
1081  // Returns ParameterizedTestSuiteRegistry object used to keep track of
1082  // value-parameterized tests and instantiate and register them.
1083  internal::ParameterizedTestSuiteRegistry& parameterized_test_registry() {
1084  return parameterized_test_registry_;
1085  }
1086 
1087  // Sets the TestSuite object for the test that's currently running.
1088  void set_current_test_suite(TestSuite* a_current_test_suite) {
1089  current_test_suite_ = a_current_test_suite;
1090  }
1091 
1092  // Sets the TestInfo object for the test that's currently running. If
1093  // current_test_info is NULL, the assertion results will be stored in
1094  // ad_hoc_test_result_.
1095  void set_current_test_info(TestInfo* a_current_test_info) {
1096  current_test_info_ = a_current_test_info;
1097  }
1098 
1099  // Registers all parameterized tests defined using TEST_P and
1100  // INSTANTIATE_TEST_SUITE_P, creating regular tests for each test/parameter
1101  // combination. This method can be called more then once; it has guards
1102  // protecting from registering the tests more then once. If
1103  // value-parameterized tests are disabled, RegisterParameterizedTests is
1104  // present but does nothing.
1105  void RegisterParameterizedTests();
1106 
1107  // Runs all tests in this UnitTest object, prints the result, and
1108  // returns true if all tests are successful. If any exception is
1109  // thrown during a test, this test is considered to be failed, but
1110  // the rest of the tests will still be run.
1111  bool RunAllTests();
1112 
1113  // Clears the results of all tests, except the ad hoc tests.
1114  void ClearNonAdHocTestResult() {
1115  ForEach(test_suites_, TestSuite::ClearTestSuiteResult);
1116  }
1117 
1118  // Clears the results of ad-hoc test assertions.
1119  void ClearAdHocTestResult() {
1120  ad_hoc_test_result_.Clear();
1121  }
1122 
1123  // Adds a TestProperty to the current TestResult object when invoked in a
1124  // context of a test or a test suite, or to the global property set. If the
1125  // result already contains a property with the same key, the value will be
1126  // updated.
1127  void RecordProperty(const TestProperty& test_property);
1128 
1129  enum ReactionToSharding {
1130  HONOR_SHARDING_PROTOCOL,
1131  IGNORE_SHARDING_PROTOCOL
1132  };
1133 
1134  // Matches the full name of each test against the user-specified
1135  // filter to decide whether the test should run, then records the
1136  // result in each TestSuite and TestInfo object.
1137  // If shard_tests == HONOR_SHARDING_PROTOCOL, further filters tests
1138  // based on sharding variables in the environment.
1139  // Returns the number of tests that should run.
1140  int FilterTests(ReactionToSharding shard_tests);
1141 
1142  // Prints the names of the tests matching the user-specified filter flag.
1143  void ListTestsMatchingFilter();
1144 
1145  const TestSuite* current_test_suite() const { return current_test_suite_; }
1146  TestInfo* current_test_info() { return current_test_info_; }
1147  const TestInfo* current_test_info() const { return current_test_info_; }
1148 
1149  // Returns the vector of environments that need to be set-up/torn-down
1150  // before/after the tests are run.
1151  std::vector<Environment*>& environments() { return environments_; }
1152 
1153  // Getters for the per-thread Google Test trace stack.
1154  std::vector<TraceInfo>& gtest_trace_stack() {
1155  return *(gtest_trace_stack_.pointer());
1156  }
1157  const std::vector<TraceInfo>& gtest_trace_stack() const {
1158  return gtest_trace_stack_.get();
1159  }
1160 
1161 #if GTEST_HAS_DEATH_TEST
1162  void InitDeathTestSubprocessControlInfo() {
1163  internal_run_death_test_flag_.reset(ParseInternalRunDeathTestFlag());
1164  }
1165  // Returns a pointer to the parsed --gtest_internal_run_death_test
1166  // flag, or NULL if that flag was not specified.
1167  // This information is useful only in a death test child process.
1168  // Must not be called before a call to InitGoogleTest.
1169  const InternalRunDeathTestFlag* internal_run_death_test_flag() const {
1170  return internal_run_death_test_flag_.get();
1171  }
1172 
1173  // Returns a pointer to the current death test factory.
1174  internal::DeathTestFactory* death_test_factory() {
1175  return death_test_factory_.get();
1176  }
1177 
1178  void SuppressTestEventsIfInSubprocess();
1179 
1180  friend class ReplaceDeathTestFactory;
1181 #endif // GTEST_HAS_DEATH_TEST
1182 
1183  // Initializes the event listener performing XML output as specified by
1184  // UnitTestOptions. Must not be called before InitGoogleTest.
1185  void ConfigureXmlOutput();
1186 
1187 #if GTEST_CAN_STREAM_RESULTS_
1188  // Initializes the event listener for streaming test results to a socket.
1189  // Must not be called before InitGoogleTest.
1190  void ConfigureStreamingOutput();
1191 #endif
1192 
1193  // Performs initialization dependent upon flag values obtained in
1194  // ParseGoogleTestFlagsOnly. Is called from InitGoogleTest after the call to
1195  // ParseGoogleTestFlagsOnly. In case a user neglects to call InitGoogleTest
1196  // this function is also called from RunAllTests. Since this function can be
1197  // called more than once, it has to be idempotent.
1198  void PostFlagParsingInit();
1199 
1200  // Gets the random seed used at the start of the current test iteration.
1201  int random_seed() const { return random_seed_; }
1202 
1203  // Gets the random number generator.
1204  internal::Random* random() { return &random_; }
1205 
1206  // Shuffles all test suites, and the tests within each test suite,
1207  // making sure that death tests are still run first.
1208  void ShuffleTests();
1209 
1210  // Restores the test suites and tests to their order before the first shuffle.
1211  void UnshuffleTests();
1212 
1213  // Returns the value of GTEST_FLAG(catch_exceptions) at the moment
1214  // UnitTest::Run() starts.
1215  bool catch_exceptions() const { return catch_exceptions_; }
1216 
1217  private:
1218  friend class ::testing::UnitTest;
1219 
1220  // Used by UnitTest::Run() to capture the state of
1221  // GTEST_FLAG(catch_exceptions) at the moment it starts.
1222  void set_catch_exceptions(bool value) { catch_exceptions_ = value; }
1223 
1224  // The UnitTest object that owns this implementation object.
1225  UnitTest* const parent_;
1226 
1227  // The working directory when the first TEST() or TEST_F() was
1228  // executed.
1229  internal::FilePath original_working_dir_;
1230 
1231  // The default test part result reporters.
1232  DefaultGlobalTestPartResultReporter default_global_test_part_result_reporter_;
1233  DefaultPerThreadTestPartResultReporter
1234  default_per_thread_test_part_result_reporter_;
1235 
1236  // Points to (but doesn't own) the global test part result reporter.
1237  TestPartResultReporterInterface* global_test_part_result_repoter_;
1238 
1239  // Protects read and write access to global_test_part_result_reporter_.
1240  internal::Mutex global_test_part_result_reporter_mutex_;
1241 
1242  // Points to (but doesn't own) the per-thread test part result reporter.
1243  internal::ThreadLocal<TestPartResultReporterInterface*>
1244  per_thread_test_part_result_reporter_;
1245 
1246  // The vector of environments that need to be set-up/torn-down
1247  // before/after the tests are run.
1248  std::vector<Environment*> environments_;
1249 
1250  // The vector of TestSuites in their original order. It owns the
1251  // elements in the vector.
1252  std::vector<TestSuite*> test_suites_;
1253 
1254  // Provides a level of indirection for the test suite list to allow
1255  // easy shuffling and restoring the test suite order. The i-th
1256  // element of this vector is the index of the i-th test suite in the
1257  // shuffled order.
1258  std::vector<int> test_suite_indices_;
1259 
1260  // ParameterizedTestRegistry object used to register value-parameterized
1261  // tests.
1262  internal::ParameterizedTestSuiteRegistry parameterized_test_registry_;
1263 
1264  // Indicates whether RegisterParameterizedTests() has been called already.
1265  bool parameterized_tests_registered_;
1266 
1267  // Index of the last death test suite registered. Initially -1.
1268  int last_death_test_suite_;
1269 
1270  // This points to the TestSuite for the currently running test. It
1271  // changes as Google Test goes through one test suite after another.
1272  // When no test is running, this is set to NULL and Google Test
1273  // stores assertion results in ad_hoc_test_result_. Initially NULL.
1274  TestSuite* current_test_suite_;
1275 
1276  // This points to the TestInfo for the currently running test. It
1277  // changes as Google Test goes through one test after another. When
1278  // no test is running, this is set to NULL and Google Test stores
1279  // assertion results in ad_hoc_test_result_. Initially NULL.
1280  TestInfo* current_test_info_;
1281 
1282  // Normally, a user only writes assertions inside a TEST or TEST_F,
1283  // or inside a function called by a TEST or TEST_F. Since Google
1284  // Test keeps track of which test is current running, it can
1285  // associate such an assertion with the test it belongs to.
1286  //
1287  // If an assertion is encountered when no TEST or TEST_F is running,
1288  // Google Test attributes the assertion result to an imaginary "ad hoc"
1289  // test, and records the result in ad_hoc_test_result_.
1290  TestResult ad_hoc_test_result_;
1291 
1292  // The list of event listeners that can be used to track events inside
1293  // Google Test.
1294  TestEventListeners listeners_;
1295 
1296  // The OS stack trace getter. Will be deleted when the UnitTest
1297  // object is destructed. By default, an OsStackTraceGetter is used,
1298  // but the user can set this field to use a custom getter if that is
1299  // desired.
1300  OsStackTraceGetterInterface* os_stack_trace_getter_;
1301 
1302  // True iff PostFlagParsingInit() has been called.
1303  bool post_flag_parse_init_performed_;
1304 
1305  // The random number seed used at the beginning of the test run.
1306  int random_seed_;
1307 
1308  // Our random number generator.
1309  internal::Random random_;
1310 
1311  // The time of the test program start, in ms from the start of the
1312  // UNIX epoch.
1313  TimeInMillis start_timestamp_;
1314 
1315  // How long the test took to run, in milliseconds.
1316  TimeInMillis elapsed_time_;
1317 
1318 #if GTEST_HAS_DEATH_TEST
1319  // The decomposed components of the gtest_internal_run_death_test flag,
1320  // parsed when RUN_ALL_TESTS is called.
1321  std::unique_ptr<InternalRunDeathTestFlag> internal_run_death_test_flag_;
1322  std::unique_ptr<internal::DeathTestFactory> death_test_factory_;
1323 #endif // GTEST_HAS_DEATH_TEST
1324 
1325  // A per-thread stack of traces created by the SCOPED_TRACE() macro.
1326  internal::ThreadLocal<std::vector<TraceInfo> > gtest_trace_stack_;
1327 
1328  // The value of GTEST_FLAG(catch_exceptions) at the moment RunAllTests()
1329  // starts.
1330  bool catch_exceptions_;
1331 
1332  GTEST_DISALLOW_COPY_AND_ASSIGN_(UnitTestImpl);
1333 }; // class UnitTestImpl
1334 
1335 // Convenience function for accessing the global UnitTest
1336 // implementation object.
1337 inline UnitTestImpl* GetUnitTestImpl() {
1338  return UnitTest::GetInstance()->impl();
1339 }
1340 
1341 #if GTEST_USES_SIMPLE_RE
1342 
1343 // Internal helper functions for implementing the simple regular
1344 // expression matcher.
1345 GTEST_API_ bool IsInSet(char ch, const char* str);
1346 GTEST_API_ bool IsAsciiDigit(char ch);
1347 GTEST_API_ bool IsAsciiPunct(char ch);
1348 GTEST_API_ bool IsRepeat(char ch);
1349 GTEST_API_ bool IsAsciiWhiteSpace(char ch);
1350 GTEST_API_ bool IsAsciiWordChar(char ch);
1351 GTEST_API_ bool IsValidEscape(char ch);
1352 GTEST_API_ bool AtomMatchesChar(bool escaped, char pattern, char ch);
1353 GTEST_API_ bool ValidateRegex(const char* regex);
1354 GTEST_API_ bool MatchRegexAtHead(const char* regex, const char* str);
1355 GTEST_API_ bool MatchRepetitionAndRegexAtHead(
1356  bool escaped, char ch, char repeat, const char* regex, const char* str);
1357 GTEST_API_ bool MatchRegexAnywhere(const char* regex, const char* str);
1358 
1359 #endif // GTEST_USES_SIMPLE_RE
1360 
1361 // Parses the command line for Google Test flags, without initializing
1362 // other parts of Google Test.
1363 GTEST_API_ void ParseGoogleTestFlagsOnly(int* argc, char** argv);
1364 GTEST_API_ void ParseGoogleTestFlagsOnly(int* argc, wchar_t** argv);
1365 
1366 #if GTEST_HAS_DEATH_TEST
1367 
1368 // Returns the message describing the last system error, regardless of the
1369 // platform.
1370 GTEST_API_ std::string GetLastErrnoDescription();
1371 
1372 // Attempts to parse a string into a positive integer pointed to by the
1373 // number parameter. Returns true if that is possible.
1374 // GTEST_HAS_DEATH_TEST implies that we have ::std::string, so we can use
1375 // it here.
1376 template <typename Integer>
1377 bool ParseNaturalNumber(const ::std::string& str, Integer* number) {
1378  // Fail fast if the given string does not begin with a digit;
1379  // this bypasses strtoXXX's "optional leading whitespace and plus
1380  // or minus sign" semantics, which are undesirable here.
1381  if (str.empty() || !IsDigit(str[0])) {
1382  return false;
1383  }
1384  errno = 0;
1385 
1386  char* end;
1387  // BiggestConvertible is the largest integer type that system-provided
1388  // string-to-number conversion routines can return.
1389 
1390 # if GTEST_OS_WINDOWS && !defined(__GNUC__)
1391 
1392  // MSVC and C++ Builder define __int64 instead of the standard long long.
1393  typedef unsigned __int64 BiggestConvertible;
1394  const BiggestConvertible parsed = _strtoui64(str.c_str(), &end, 10);
1395 
1396 # else
1397 
1398  typedef unsigned long long BiggestConvertible; // NOLINT
1399  const BiggestConvertible parsed = strtoull(str.c_str(), &end, 10);
1400 
1401 # endif // GTEST_OS_WINDOWS && !defined(__GNUC__)
1402 
1403  const bool parse_success = *end == '\0' && errno == 0;
1404 
1405  GTEST_CHECK_(sizeof(Integer) <= sizeof(parsed));
1406 
1407  const Integer result = static_cast<Integer>(parsed);
1408  if (parse_success && static_cast<BiggestConvertible>(result) == parsed) {
1409  *number = result;
1410  return true;
1411  }
1412  return false;
1413 }
1414 #endif // GTEST_HAS_DEATH_TEST
1415 
1416 // TestResult contains some private methods that should be hidden from
1417 // Google Test user but are required for testing. This class allow our tests
1418 // to access them.
1419 //
1420 // This class is supplied only for the purpose of testing Google Test's own
1421 // constructs. Do not use it in user tests, either directly or indirectly.
1422 class TestResultAccessor {
1423  public:
1424  static void RecordProperty(TestResult* test_result,
1425  const std::string& xml_element,
1426  const TestProperty& property) {
1427  test_result->RecordProperty(xml_element, property);
1428  }
1429 
1430  static void ClearTestPartResults(TestResult* test_result) {
1431  test_result->ClearTestPartResults();
1432  }
1433 
1434  static const std::vector<testing::TestPartResult>& test_part_results(
1435  const TestResult& test_result) {
1436  return test_result.test_part_results();
1437  }
1438 };
1439 
1440 #if GTEST_CAN_STREAM_RESULTS_
1441 
1442 // Streams test results to the given port on the given host machine.
1443 class StreamingListener : public EmptyTestEventListener {
1444  public:
1445  // Abstract base class for writing strings to a socket.
1446  class AbstractSocketWriter {
1447  public:
1448  virtual ~AbstractSocketWriter() {}
1449 
1450  // Sends a string to the socket.
1451  virtual void Send(const std::string& message) = 0;
1452 
1453  // Closes the socket.
1454  virtual void CloseConnection() {}
1455 
1456  // Sends a string and a newline to the socket.
1457  void SendLn(const std::string& message) { Send(message + "\n"); }
1458  };
1459 
1460  // Concrete class for actually writing strings to a socket.
1461  class SocketWriter : public AbstractSocketWriter {
1462  public:
1463  SocketWriter(const std::string& host, const std::string& port)
1464  : sockfd_(-1), host_name_(host), port_num_(port) {
1465  MakeConnection();
1466  }
1467 
1468  ~SocketWriter() override {
1469  if (sockfd_ != -1)
1470  CloseConnection();
1471  }
1472 
1473  // Sends a string to the socket.
1474  void Send(const std::string& message) override {
1475  GTEST_CHECK_(sockfd_ != -1)
1476  << "Send() can be called only when there is a connection.";
1477 
1478  const int len = static_cast<int>(message.length());
1479  if (write(sockfd_, message.c_str(), len) != len) {
1480  GTEST_LOG_(WARNING)
1481  << "stream_result_to: failed to stream to "
1482  << host_name_ << ":" << port_num_;
1483  }
1484  }
1485 
1486  private:
1487  // Creates a client socket and connects to the server.
1488  void MakeConnection();
1489 
1490  // Closes the socket.
1491  void CloseConnection() override {
1492  GTEST_CHECK_(sockfd_ != -1)
1493  << "CloseConnection() can be called only when there is a connection.";
1494 
1495  close(sockfd_);
1496  sockfd_ = -1;
1497  }
1498 
1499  int sockfd_; // socket file descriptor
1500  const std::string host_name_;
1501  const std::string port_num_;
1502 
1503  GTEST_DISALLOW_COPY_AND_ASSIGN_(SocketWriter);
1504  }; // class SocketWriter
1505 
1506  // Escapes '=', '&', '%', and '\n' characters in str as "%xx".
1507  static std::string UrlEncode(const char* str);
1508 
1509  StreamingListener(const std::string& host, const std::string& port)
1510  : socket_writer_(new SocketWriter(host, port)) {
1511  Start();
1512  }
1513 
1514  explicit StreamingListener(AbstractSocketWriter* socket_writer)
1515  : socket_writer_(socket_writer) { Start(); }
1516 
1517  void OnTestProgramStart(const UnitTest& /* unit_test */) override {
1518  SendLn("event=TestProgramStart");
1519  }
1520 
1521  void OnTestProgramEnd(const UnitTest& unit_test) override {
1522  // Note that Google Test current only report elapsed time for each
1523  // test iteration, not for the entire test program.
1524  SendLn("event=TestProgramEnd&passed=" + FormatBool(unit_test.Passed()));
1525 
1526  // Notify the streaming server to stop.
1527  socket_writer_->CloseConnection();
1528  }
1529 
1530  void OnTestIterationStart(const UnitTest& /* unit_test */,
1531  int iteration) override {
1532  SendLn("event=TestIterationStart&iteration=" +
1533  StreamableToString(iteration));
1534  }
1535 
1536  void OnTestIterationEnd(const UnitTest& unit_test,
1537  int /* iteration */) override {
1538  SendLn("event=TestIterationEnd&passed=" +
1539  FormatBool(unit_test.Passed()) + "&elapsed_time=" +
1540  StreamableToString(unit_test.elapsed_time()) + "ms");
1541  }
1542 
1543  // Note that "event=TestCaseStart" is a wire format and has to remain
1544  // "case" for compatibilty
1545  void OnTestCaseStart(const TestCase& test_case) override {
1546  SendLn(std::string("event=TestCaseStart&name=") + test_case.name());
1547  }
1548 
1549  // Note that "event=TestCaseEnd" is a wire format and has to remain
1550  // "case" for compatibilty
1551  void OnTestCaseEnd(const TestCase& test_case) override {
1552  SendLn("event=TestCaseEnd&passed=" + FormatBool(test_case.Passed()) +
1553  "&elapsed_time=" + StreamableToString(test_case.elapsed_time()) +
1554  "ms");
1555  }
1556 
1557  void OnTestStart(const TestInfo& test_info) override {
1558  SendLn(std::string("event=TestStart&name=") + test_info.name());
1559  }
1560 
1561  void OnTestEnd(const TestInfo& test_info) override {
1562  SendLn("event=TestEnd&passed=" +
1563  FormatBool((test_info.result())->Passed()) +
1564  "&elapsed_time=" +
1565  StreamableToString((test_info.result())->elapsed_time()) + "ms");
1566  }
1567 
1568  void OnTestPartResult(const TestPartResult& test_part_result) override {
1569  const char* file_name = test_part_result.file_name();
1570  if (file_name == nullptr) file_name = "";
1571  SendLn("event=TestPartResult&file=" + UrlEncode(file_name) +
1572  "&line=" + StreamableToString(test_part_result.line_number()) +
1573  "&message=" + UrlEncode(test_part_result.message()));
1574  }
1575 
1576  private:
1577  // Sends the given message and a newline to the socket.
1578  void SendLn(const std::string& message) { socket_writer_->SendLn(message); }
1579 
1580  // Called at the start of streaming to notify the receiver what
1581  // protocol we are using.
1582  void Start() { SendLn("gtest_streaming_protocol_version=1.0"); }
1583 
1584  std::string FormatBool(bool value) { return value ? "1" : "0"; }
1585 
1586  const std::unique_ptr<AbstractSocketWriter> socket_writer_;
1587 
1588  GTEST_DISALLOW_COPY_AND_ASSIGN_(StreamingListener);
1589 }; // class StreamingListener
1590 
1591 #endif // GTEST_CAN_STREAM_RESULTS_
1592 
1593 } // namespace internal
1594 } // namespace testing
1595 
1597 
1598 #endif // GTEST_SRC_GTEST_INTERNAL_INL_H_
1599 
1600 #if GTEST_OS_WINDOWS
1601 # define vsnprintf _vsnprintf
1602 #endif // GTEST_OS_WINDOWS
1603 
1604 #if GTEST_OS_MAC
1605 #ifndef GTEST_OS_IOS
1606 #include <crt_externs.h>
1607 #endif
1608 #endif
1609 
1610 #if GTEST_HAS_ABSL
1611 #include "absl/debugging/failure_signal_handler.h"
1612 #include "absl/debugging/stacktrace.h"
1613 #include "absl/debugging/symbolize.h"
1614 #include "absl/strings/str_cat.h"
1615 #endif // GTEST_HAS_ABSL
1616 
1617 namespace testing {
1618 
1619 using internal::CountIf;
1620 using internal::ForEach;
1621 using internal::GetElementOr;
1622 using internal::Shuffle;
1623 
1624 // Constants.
1625 
1626 // A test whose test suite name or test name matches this filter is
1627 // disabled and not run.
1628 static const char kDisableTestFilter[] = "DISABLED_*:*/DISABLED_*";
1629 
1630 // A test suite whose name matches this filter is considered a death
1631 // test suite and will be run before test suites whose name doesn't
1632 // match this filter.
1633 static const char kDeathTestSuiteFilter[] = "*DeathTest:*DeathTest/*";
1634 
1635 // A test filter that matches everything.
1636 static const char kUniversalFilter[] = "*";
1637 
1638 // The default output format.
1639 static const char kDefaultOutputFormat[] = "xml";
1640 // The default output file.
1641 static const char kDefaultOutputFile[] = "test_detail";
1642 
1643 // The environment variable name for the test shard index.
1644 static const char kTestShardIndex[] = "GTEST_SHARD_INDEX";
1645 // The environment variable name for the total number of test shards.
1646 static const char kTestTotalShards[] = "GTEST_TOTAL_SHARDS";
1647 // The environment variable name for the test shard status file.
1648 static const char kTestShardStatusFile[] = "GTEST_SHARD_STATUS_FILE";
1649 
1650 namespace internal {
1651 
1652 // The text used in failure messages to indicate the start of the
1653 // stack trace.
1654 const char kStackTraceMarker[] = "\nStack trace:\n";
1655 
1656 // g_help_flag is true iff the --help flag or an equivalent form is
1657 // specified on the command line.
1658 bool g_help_flag = false;
1659 
1660 // Utilty function to Open File for Writing
1661 static FILE* OpenFileForWriting(const std::string& output_file) {
1662  FILE* fileout = nullptr;
1663  FilePath output_file_path(output_file);
1664  FilePath output_dir(output_file_path.RemoveFileName());
1665 
1666  if (output_dir.CreateDirectoriesRecursively()) {
1667  fileout = posix::FOpen(output_file.c_str(), "w");
1668  }
1669  if (fileout == nullptr) {
1670  GTEST_LOG_(FATAL) << "Unable to open file \"" << output_file << "\"";
1671  }
1672  return fileout;
1673 }
1674 
1675 } // namespace internal
1676 
1677 // Bazel passes in the argument to '--test_filter' via the TESTBRIDGE_TEST_ONLY
1678 // environment variable.
1679 static const char* GetDefaultFilter() {
1680  const char* const testbridge_test_only =
1681  internal::posix::GetEnv("TESTBRIDGE_TEST_ONLY");
1682  if (testbridge_test_only != nullptr) {
1683  return testbridge_test_only;
1684  }
1685  return kUniversalFilter;
1686 }
1687 
1689  also_run_disabled_tests,
1690  internal::BoolFromGTestEnv("also_run_disabled_tests", false),
1691  "Run disabled tests too, in addition to the tests normally being run.");
1692 
1694  break_on_failure,
1695  internal::BoolFromGTestEnv("break_on_failure", false),
1696  "True iff a failed assertion should be a debugger break-point.");
1697 
1699  catch_exceptions,
1700  internal::BoolFromGTestEnv("catch_exceptions", true),
1701  "True iff " GTEST_NAME_
1702  " should catch exceptions and treat them as test failures.");
1703 
1705  color,
1706  internal::StringFromGTestEnv("color", "auto"),
1707  "Whether to use colors in the output. Valid values: yes, no, "
1708  "and auto. 'auto' means to use colors if the output is "
1709  "being sent to a terminal and the TERM environment variable "
1710  "is set to a terminal type that supports colors.");
1711 
1713  filter,
1714  internal::StringFromGTestEnv("filter", GetDefaultFilter()),
1715  "A colon-separated list of glob (not regex) patterns "
1716  "for filtering the tests to run, optionally followed by a "
1717  "'-' and a : separated list of negative patterns (tests to "
1718  "exclude). A test is run if it matches one of the positive "
1719  "patterns and does not match any of the negative patterns.");
1720 
1722  install_failure_signal_handler,
1723  internal::BoolFromGTestEnv("install_failure_signal_handler", false),
1724  "If true and supported on the current platform, " GTEST_NAME_ " should "
1725  "install a signal handler that dumps debugging information when fatal "
1726  "signals are raised.");
1727 
1728 GTEST_DEFINE_bool_(list_tests, false,
1729  "List all tests without running them.");
1730 
1731 // The net priority order after flag processing is thus:
1732 // --gtest_output command line flag
1733 // GTEST_OUTPUT environment variable
1734 // XML_OUTPUT_FILE environment variable
1735 // ''
1737  output,
1740  "A format (defaults to \"xml\" but can be specified to be \"json\"), "
1741  "optionally followed by a colon and an output file name or directory. "
1742  "A directory is indicated by a trailing pathname separator. "
1743  "Examples: \"xml:filename.xml\", \"xml::directoryname/\". "
1744  "If a directory is specified, output files will be created "
1745  "within that directory, with file-names based on the test "
1746  "executable's name and, if necessary, made unique by adding "
1747  "digits.");
1748 
1750  print_time,
1751  internal::BoolFromGTestEnv("print_time", true),
1752  "True iff " GTEST_NAME_
1753  " should display elapsed time in text output.");
1754 
1756  print_utf8,
1757  internal::BoolFromGTestEnv("print_utf8", true),
1758  "True iff " GTEST_NAME_
1759  " prints UTF8 characters as text.");
1760 
1762  random_seed,
1763  internal::Int32FromGTestEnv("random_seed", 0),
1764  "Random number seed to use when shuffling test orders. Must be in range "
1765  "[1, 99999], or 0 to use a seed based on the current time.");
1766 
1768  repeat,
1769  internal::Int32FromGTestEnv("repeat", 1),
1770  "How many times to repeat each test. Specify a negative number "
1771  "for repeating forever. Useful for shaking out flaky tests.");
1772 
1774  show_internal_stack_frames, false,
1775  "True iff " GTEST_NAME_ " should include internal stack frames when "
1776  "printing test failure stack traces.");
1777 
1779  shuffle,
1780  internal::BoolFromGTestEnv("shuffle", false),
1781  "True iff " GTEST_NAME_
1782  " should randomize tests' order on every run.");
1783 
1785  stack_trace_depth,
1786  internal::Int32FromGTestEnv("stack_trace_depth", kMaxStackTraceDepth),
1787  "The maximum number of stack frames to print when an "
1788  "assertion fails. The valid range is 0 through 100, inclusive.");
1789 
1791  stream_result_to,
1792  internal::StringFromGTestEnv("stream_result_to", ""),
1793  "This flag specifies the host name and the port number on which to stream "
1794  "test results. Example: \"localhost:555\". The flag is effective only on "
1795  "Linux.");
1796 
1798  throw_on_failure,
1799  internal::BoolFromGTestEnv("throw_on_failure", false),
1800  "When this flag is specified, a failed assertion will throw an exception "
1801  "if exceptions are enabled or exit the program with a non-zero code "
1802  "otherwise. For use with an external test framework.");
1803 
1804 #if GTEST_USE_OWN_FLAGFILE_FLAG_
1806  flagfile,
1807  internal::StringFromGTestEnv("flagfile", ""),
1808  "This flag specifies the flagfile to read command-line flags from.");
1809 #endif // GTEST_USE_OWN_FLAGFILE_FLAG_
1810 
1811 namespace internal {
1812 
1813 // Generates a random number from [0, range), using a Linear
1814 // Congruential Generator (LCG). Crashes if 'range' is 0 or greater
1815 // than kMaxRange.
1817  // These constants are the same as are used in glibc's rand(3).
1818  // Use wider types than necessary to prevent unsigned overflow diagnostics.
1819  state_ = static_cast<UInt32>(1103515245ULL*state_ + 12345U) % kMaxRange;
1820 
1821  GTEST_CHECK_(range > 0)
1822  << "Cannot generate a number in the range [0, 0).";
1823  GTEST_CHECK_(range <= kMaxRange)
1824  << "Generation of a number in [0, " << range << ") was requested, "
1825  << "but this can only generate numbers in [0, " << kMaxRange << ").";
1826 
1827  // Converting via modulus introduces a bit of downward bias, but
1828  // it's simple, and a linear congruential generator isn't too good
1829  // to begin with.
1830  return state_ % range;
1831 }
1832 
1833 // GTestIsInitialized() returns true iff the user has initialized
1834 // Google Test. Useful for catching the user mistake of not initializing
1835 // Google Test before calling RUN_ALL_TESTS().
1836 static bool GTestIsInitialized() { return GetArgvs().size() > 0; }
1837 
1838 // Iterates over a vector of TestSuites, keeping a running sum of the
1839 // results of calling a given int-returning method on each.
1840 // Returns the sum.
1841 static int SumOverTestSuiteList(const std::vector<TestSuite*>& case_list,
1842  int (TestSuite::*method)() const) {
1843  int sum = 0;
1844  for (size_t i = 0; i < case_list.size(); i++) {
1845  sum += (case_list[i]->*method)();
1846  }
1847  return sum;
1848 }
1849 
1850 // Returns true iff the test suite passed.
1851 static bool TestSuitePassed(const TestSuite* test_suite) {
1852  return test_suite->should_run() && test_suite->Passed();
1853 }
1854 
1855 // Returns true iff the test suite failed.
1856 static bool TestSuiteFailed(const TestSuite* test_suite) {
1857  return test_suite->should_run() && test_suite->Failed();
1858 }
1859 
1860 // Returns true iff test_suite contains at least one test that should
1861 // run.
1862 static bool ShouldRunTestSuite(const TestSuite* test_suite) {
1863  return test_suite->should_run();
1864 }
1865 
1866 // AssertHelper constructor.
1867 AssertHelper::AssertHelper(TestPartResult::Type type,
1868  const char* file,
1869  int line,
1870  const char* message)
1871  : data_(new AssertHelperData(type, file, line, message)) {
1872 }
1873 
1874 AssertHelper::~AssertHelper() {
1875  delete data_;
1876 }
1877 
1878 // Message assignment, for assertion streaming support.
1879 void AssertHelper::operator=(const Message& message) const {
1880  UnitTest::GetInstance()->
1881  AddTestPartResult(data_->type, data_->file, data_->line,
1882  AppendUserMessage(data_->message, message),
1883  UnitTest::GetInstance()->impl()
1884  ->CurrentOsStackTraceExceptTop(1)
1885  // Skips the stack frame for this function itself.
1886  ); // NOLINT
1887 }
1888 
1889 // A copy of all command line arguments. Set by InitGoogleTest().
1890 static ::std::vector<std::string> g_argvs;
1891 
1892 ::std::vector<std::string> GetArgvs() {
1893 #if defined(GTEST_CUSTOM_GET_ARGVS_)
1894  // GTEST_CUSTOM_GET_ARGVS_() may return a container of std::string or
1895  // ::string. This code converts it to the appropriate type.
1896  const auto& custom = GTEST_CUSTOM_GET_ARGVS_();
1897  return ::std::vector<std::string>(custom.begin(), custom.end());
1898 #else // defined(GTEST_CUSTOM_GET_ARGVS_)
1899  return g_argvs;
1900 #endif // defined(GTEST_CUSTOM_GET_ARGVS_)
1901 }
1902 
1903 // Returns the current application's name, removing directory path if that
1904 // is present.
1905 FilePath GetCurrentExecutableName() {
1906  FilePath result;
1907 
1908 #if GTEST_OS_WINDOWS || GTEST_OS_OS2
1909  result.Set(FilePath(GetArgvs()[0]).RemoveExtension("exe"));
1910 #else
1911  result.Set(FilePath(GetArgvs()[0]));
1912 #endif // GTEST_OS_WINDOWS
1913 
1914  return result.RemoveDirectoryName();
1915 }
1916 
1917 // Functions for processing the gtest_output flag.
1918 
1919 // Returns the output format, or "" for normal printed output.
1920 std::string UnitTestOptions::GetOutputFormat() {
1921  const char* const gtest_output_flag = GTEST_FLAG(output).c_str();
1922  const char* const colon = strchr(gtest_output_flag, ':');
1923  return (colon == nullptr)
1924  ? std::string(gtest_output_flag)
1925  : std::string(gtest_output_flag, colon - gtest_output_flag);
1926 }
1927 
1928 // Returns the name of the requested output file, or the default if none
1929 // was explicitly specified.
1930 std::string UnitTestOptions::GetAbsolutePathToOutputFile() {
1931  const char* const gtest_output_flag = GTEST_FLAG(output).c_str();
1932 
1933  std::string format = GetOutputFormat();
1934  if (format.empty())
1935  format = std::string(kDefaultOutputFormat);
1936 
1937  const char* const colon = strchr(gtest_output_flag, ':');
1938  if (colon == nullptr)
1939  return internal::FilePath::MakeFileName(
1940  internal::FilePath(
1941  UnitTest::GetInstance()->original_working_dir()),
1942  internal::FilePath(kDefaultOutputFile), 0,
1943  format.c_str()).string();
1944 
1945  internal::FilePath output_name(colon + 1);
1946  if (!output_name.IsAbsolutePath())
1947  output_name = internal::FilePath::ConcatPaths(
1948  internal::FilePath(UnitTest::GetInstance()->original_working_dir()),
1949  internal::FilePath(colon + 1));
1950 
1951  if (!output_name.IsDirectory())
1952  return output_name.string();
1953 
1954  internal::FilePath result(internal::FilePath::GenerateUniqueFileName(
1955  output_name, internal::GetCurrentExecutableName(),
1956  GetOutputFormat().c_str()));
1957  return result.string();
1958 }
1959 
1960 // Returns true iff the wildcard pattern matches the string. The
1961 // first ':' or '\0' character in pattern marks the end of it.
1962 //
1963 // This recursive algorithm isn't very efficient, but is clear and
1964 // works well enough for matching test names, which are short.
1965 bool UnitTestOptions::PatternMatchesString(const char *pattern,
1966  const char *str) {
1967  switch (*pattern) {
1968  case '\0':
1969  case ':': // Either ':' or '\0' marks the end of the pattern.
1970  return *str == '\0';
1971  case '?': // Matches any single character.
1972  return *str != '\0' && PatternMatchesString(pattern + 1, str + 1);
1973  case '*': // Matches any string (possibly empty) of characters.
1974  return (*str != '\0' && PatternMatchesString(pattern, str + 1)) ||
1975  PatternMatchesString(pattern + 1, str);
1976  default: // Non-special character. Matches itself.
1977  return *pattern == *str &&
1978  PatternMatchesString(pattern + 1, str + 1);
1979  }
1980 }
1981 
1982 bool UnitTestOptions::MatchesFilter(
1983  const std::string& name, const char* filter) {
1984  const char *cur_pattern = filter;
1985  for (;;) {
1986  if (PatternMatchesString(cur_pattern, name.c_str())) {
1987  return true;
1988  }
1989 
1990  // Finds the next pattern in the filter.
1991  cur_pattern = strchr(cur_pattern, ':');
1992 
1993  // Returns if no more pattern can be found.
1994  if (cur_pattern == nullptr) {
1995  return false;
1996  }
1997 
1998  // Skips the pattern separater (the ':' character).
1999  cur_pattern++;
2000  }
2001 }
2002 
2003 // Returns true iff the user-specified filter matches the test suite
2004 // name and the test name.
2005 bool UnitTestOptions::FilterMatchesTest(const std::string& test_suite_name,
2006  const std::string& test_name) {
2007  const std::string& full_name = test_suite_name + "." + test_name.c_str();
2008 
2009  // Split --gtest_filter at '-', if there is one, to separate into
2010  // positive filter and negative filter portions
2011  const char* const p = GTEST_FLAG(filter).c_str();
2012  const char* const dash = strchr(p, '-');
2013  std::string positive;
2014  std::string negative;
2015  if (dash == nullptr) {
2016  positive = GTEST_FLAG(filter).c_str(); // Whole string is a positive filter
2017  negative = "";
2018  } else {
2019  positive = std::string(p, dash); // Everything up to the dash
2020  negative = std::string(dash + 1); // Everything after the dash
2021  if (positive.empty()) {
2022  // Treat '-test1' as the same as '*-test1'
2023  positive = kUniversalFilter;
2024  }
2025  }
2026 
2027  // A filter is a colon-separated list of patterns. It matches a
2028  // test if any pattern in it matches the test.
2029  return (MatchesFilter(full_name, positive.c_str()) &&
2030  !MatchesFilter(full_name, negative.c_str()));
2031 }
2032 
2033 #if GTEST_HAS_SEH
2034 // Returns EXCEPTION_EXECUTE_HANDLER if Google Test should handle the
2035 // given SEH exception, or EXCEPTION_CONTINUE_SEARCH otherwise.
2036 // This function is useful as an __except condition.
2037 int UnitTestOptions::GTestShouldProcessSEH(DWORD exception_code) {
2038  // Google Test should handle a SEH exception if:
2039  // 1. the user wants it to, AND
2040  // 2. this is not a breakpoint exception, AND
2041  // 3. this is not a C++ exception (VC++ implements them via SEH,
2042  // apparently).
2043  //
2044  // SEH exception code for C++ exceptions.
2045  // (see http://support.microsoft.com/kb/185294 for more information).
2046  const DWORD kCxxExceptionCode = 0xe06d7363;
2047 
2048  bool should_handle = true;
2049 
2050  if (!GTEST_FLAG(catch_exceptions))
2051  should_handle = false;
2052  else if (exception_code == EXCEPTION_BREAKPOINT)
2053  should_handle = false;
2054  else if (exception_code == kCxxExceptionCode)
2055  should_handle = false;
2056 
2057  return should_handle ? EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH;
2058 }
2059 #endif // GTEST_HAS_SEH
2060 
2061 } // namespace internal
2062 
2063 // The c'tor sets this object as the test part result reporter used by
2064 // Google Test. The 'result' parameter specifies where to report the
2065 // results. Intercepts only failures from the current thread.
2066 ScopedFakeTestPartResultReporter::ScopedFakeTestPartResultReporter(
2067  TestPartResultArray* result)
2068  : intercept_mode_(INTERCEPT_ONLY_CURRENT_THREAD),
2069  result_(result) {
2070  Init();
2071 }
2072 
2073 // The c'tor sets this object as the test part result reporter used by
2074 // Google Test. The 'result' parameter specifies where to report the
2075 // results.
2076 ScopedFakeTestPartResultReporter::ScopedFakeTestPartResultReporter(
2077  InterceptMode intercept_mode, TestPartResultArray* result)
2078  : intercept_mode_(intercept_mode),
2079  result_(result) {
2080  Init();
2081 }
2082 
2083 void ScopedFakeTestPartResultReporter::Init() {
2084  internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();
2085  if (intercept_mode_ == INTERCEPT_ALL_THREADS) {
2086  old_reporter_ = impl->GetGlobalTestPartResultReporter();
2087  impl->SetGlobalTestPartResultReporter(this);
2088  } else {
2089  old_reporter_ = impl->GetTestPartResultReporterForCurrentThread();
2090  impl->SetTestPartResultReporterForCurrentThread(this);
2091  }
2092 }
2093 
2094 // The d'tor restores the test part result reporter used by Google Test
2095 // before.
2096 ScopedFakeTestPartResultReporter::~ScopedFakeTestPartResultReporter() {
2097  internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();
2098  if (intercept_mode_ == INTERCEPT_ALL_THREADS) {
2099  impl->SetGlobalTestPartResultReporter(old_reporter_);
2100  } else {
2101  impl->SetTestPartResultReporterForCurrentThread(old_reporter_);
2102  }
2103 }
2104 
2105 // Increments the test part result count and remembers the result.
2106 // This method is from the TestPartResultReporterInterface interface.
2107 void ScopedFakeTestPartResultReporter::ReportTestPartResult(
2108  const TestPartResult& result) {
2109  result_->Append(result);
2110 }
2111 
2112 namespace internal {
2113 
2114 // Returns the type ID of ::testing::Test. We should always call this
2115 // instead of GetTypeId< ::testing::Test>() to get the type ID of
2116 // testing::Test. This is to work around a suspected linker bug when
2117 // using Google Test as a framework on Mac OS X. The bug causes
2118 // GetTypeId< ::testing::Test>() to return different values depending
2119 // on whether the call is from the Google Test framework itself or
2120 // from user test code. GetTestTypeId() is guaranteed to always
2121 // return the same value, as it always calls GetTypeId<>() from the
2122 // gtest.cc, which is within the Google Test framework.
2124  return GetTypeId<Test>();
2125 }
2126 
2127 // The value of GetTestTypeId() as seen from within the Google Test
2128 // library. This is solely for testing GetTestTypeId().
2129 extern const TypeId kTestTypeIdInGoogleTest = GetTestTypeId();
2130 
2131 // This predicate-formatter checks that 'results' contains a test part
2132 // failure of the given type and that the failure message contains the
2133 // given substring.
2134 static AssertionResult HasOneFailure(const char* /* results_expr */,
2135  const char* /* type_expr */,
2136  const char* /* substr_expr */,
2137  const TestPartResultArray& results,
2138  TestPartResult::Type type,
2139  const std::string& substr) {
2140  const std::string expected(type == TestPartResult::kFatalFailure ?
2141  "1 fatal failure" :
2142  "1 non-fatal failure");
2143  Message msg;
2144  if (results.size() != 1) {
2145  msg << "Expected: " << expected << "\n"
2146  << " Actual: " << results.size() << " failures";
2147  for (int i = 0; i < results.size(); i++) {
2148  msg << "\n" << results.GetTestPartResult(i);
2149  }
2150  return AssertionFailure() << msg;
2151  }
2152 
2153  const TestPartResult& r = results.GetTestPartResult(0);
2154  if (r.type() != type) {
2155  return AssertionFailure() << "Expected: " << expected << "\n"
2156  << " Actual:\n"
2157  << r;
2158  }
2159 
2160  if (strstr(r.message(), substr.c_str()) == nullptr) {
2161  return AssertionFailure() << "Expected: " << expected << " containing \""
2162  << substr << "\"\n"
2163  << " Actual:\n"
2164  << r;
2165  }
2166 
2167  return AssertionSuccess();
2168 }
2169 
2170 // The constructor of SingleFailureChecker remembers where to look up
2171 // test part results, what type of failure we expect, and what
2172 // substring the failure message should contain.
2173 SingleFailureChecker::SingleFailureChecker(const TestPartResultArray* results,
2174  TestPartResult::Type type,
2175  const std::string& substr)
2176  : results_(results), type_(type), substr_(substr) {}
2177 
2178 // The destructor of SingleFailureChecker verifies that the given
2179 // TestPartResultArray contains exactly one failure that has the given
2180 // type and contains the given substring. If that's not the case, a
2181 // non-fatal failure will be generated.
2182 SingleFailureChecker::~SingleFailureChecker() {
2183  EXPECT_PRED_FORMAT3(HasOneFailure, *results_, type_, substr_);
2184 }
2185 
2186 DefaultGlobalTestPartResultReporter::DefaultGlobalTestPartResultReporter(
2187  UnitTestImpl* unit_test) : unit_test_(unit_test) {}
2188 
2189 void DefaultGlobalTestPartResultReporter::ReportTestPartResult(
2190  const TestPartResult& result) {
2191  unit_test_->current_test_result()->AddTestPartResult(result);
2192  unit_test_->listeners()->repeater()->OnTestPartResult(result);
2193 }
2194 
2195 DefaultPerThreadTestPartResultReporter::DefaultPerThreadTestPartResultReporter(
2196  UnitTestImpl* unit_test) : unit_test_(unit_test) {}
2197 
2198 void DefaultPerThreadTestPartResultReporter::ReportTestPartResult(
2199  const TestPartResult& result) {
2200  unit_test_->GetGlobalTestPartResultReporter()->ReportTestPartResult(result);
2201 }
2202 
2203 // Returns the global test part result reporter.
2204 TestPartResultReporterInterface*
2205 UnitTestImpl::GetGlobalTestPartResultReporter() {
2206  internal::MutexLock lock(&global_test_part_result_reporter_mutex_);
2207  return global_test_part_result_repoter_;
2208 }
2209 
2210 // Sets the global test part result reporter.
2211 void UnitTestImpl::SetGlobalTestPartResultReporter(
2212  TestPartResultReporterInterface* reporter) {
2213  internal::MutexLock lock(&global_test_part_result_reporter_mutex_);
2214  global_test_part_result_repoter_ = reporter;
2215 }
2216 
2217 // Returns the test part result reporter for the current thread.
2218 TestPartResultReporterInterface*
2219 UnitTestImpl::GetTestPartResultReporterForCurrentThread() {
2220  return per_thread_test_part_result_reporter_.get();
2221 }
2222 
2223 // Sets the test part result reporter for the current thread.
2224 void UnitTestImpl::SetTestPartResultReporterForCurrentThread(
2225  TestPartResultReporterInterface* reporter) {
2226  per_thread_test_part_result_reporter_.set(reporter);
2227 }
2228 
2229 // Gets the number of successful test suites.
2230 int UnitTestImpl::successful_test_suite_count() const {
2231  return CountIf(test_suites_, TestSuitePassed);
2232 }
2233 
2234 // Gets the number of failed test suites.
2235 int UnitTestImpl::failed_test_suite_count() const {
2236  return CountIf(test_suites_, TestSuiteFailed);
2237 }
2238 
2239 // Gets the number of all test suites.
2240 int UnitTestImpl::total_test_suite_count() const {
2241  return static_cast<int>(test_suites_.size());
2242 }
2243 
2244 // Gets the number of all test suites that contain at least one test
2245 // that should run.
2246 int UnitTestImpl::test_suite_to_run_count() const {
2247  return CountIf(test_suites_, ShouldRunTestSuite);
2248 }
2249 
2250 // Gets the number of successful tests.
2251 int UnitTestImpl::successful_test_count() const {
2252  return SumOverTestSuiteList(test_suites_, &TestSuite::successful_test_count);
2253 }
2254 
2255 // Gets the number of skipped tests.
2256 int UnitTestImpl::skipped_test_count() const {
2257  return SumOverTestSuiteList(test_suites_, &TestSuite::skipped_test_count);
2258 }
2259 
2260 // Gets the number of failed tests.
2261 int UnitTestImpl::failed_test_count() const {
2262  return SumOverTestSuiteList(test_suites_, &TestSuite::failed_test_count);
2263 }
2264 
2265 // Gets the number of disabled tests that will be reported in the XML report.
2266 int UnitTestImpl::reportable_disabled_test_count() const {
2267  return SumOverTestSuiteList(test_suites_,
2268  &TestSuite::reportable_disabled_test_count);
2269 }
2270 
2271 // Gets the number of disabled tests.
2272 int UnitTestImpl::disabled_test_count() const {
2273  return SumOverTestSuiteList(test_suites_, &TestSuite::disabled_test_count);
2274 }
2275 
2276 // Gets the number of tests to be printed in the XML report.
2277 int UnitTestImpl::reportable_test_count() const {
2278  return SumOverTestSuiteList(test_suites_, &TestSuite::reportable_test_count);
2279 }
2280 
2281 // Gets the number of all tests.
2282 int UnitTestImpl::total_test_count() const {
2283  return SumOverTestSuiteList(test_suites_, &TestSuite::total_test_count);
2284 }
2285 
2286 // Gets the number of tests that should run.
2287 int UnitTestImpl::test_to_run_count() const {
2288  return SumOverTestSuiteList(test_suites_, &TestSuite::test_to_run_count);
2289 }
2290 
2291 // Returns the current OS stack trace as an std::string.
2292 //
2293 // The maximum number of stack frames to be included is specified by
2294 // the gtest_stack_trace_depth flag. The skip_count parameter
2295 // specifies the number of top frames to be skipped, which doesn't
2296 // count against the number of frames to be included.
2297 //
2298 // For example, if Foo() calls Bar(), which in turn calls
2299 // CurrentOsStackTraceExceptTop(1), Foo() will be included in the
2300 // trace but Bar() and CurrentOsStackTraceExceptTop() won't.
2301 std::string UnitTestImpl::CurrentOsStackTraceExceptTop(int skip_count) {
2302  return os_stack_trace_getter()->CurrentStackTrace(
2303  static_cast<int>(GTEST_FLAG(stack_trace_depth)),
2304  skip_count + 1
2305  // Skips the user-specified number of frames plus this function
2306  // itself.
2307  ); // NOLINT
2308 }
2309 
2310 // Returns the current time in milliseconds.
2311 TimeInMillis GetTimeInMillis() {
2312 #if GTEST_OS_WINDOWS_MOBILE || defined(__BORLANDC__)
2313  // Difference between 1970-01-01 and 1601-01-01 in milliseconds.
2314  // http://analogous.blogspot.com/2005/04/epoch.html
2315  const TimeInMillis kJavaEpochToWinFileTimeDelta =
2316  static_cast<TimeInMillis>(116444736UL) * 100000UL;
2317  const DWORD kTenthMicrosInMilliSecond = 10000;
2318 
2319  SYSTEMTIME now_systime;
2320  FILETIME now_filetime;
2321  ULARGE_INTEGER now_int64;
2322  GetSystemTime(&now_systime);
2323  if (SystemTimeToFileTime(&now_systime, &now_filetime)) {
2324  now_int64.LowPart = now_filetime.dwLowDateTime;
2325  now_int64.HighPart = now_filetime.dwHighDateTime;
2326  now_int64.QuadPart = (now_int64.QuadPart / kTenthMicrosInMilliSecond) -
2327  kJavaEpochToWinFileTimeDelta;
2328  return now_int64.QuadPart;
2329  }
2330  return 0;
2331 #elif GTEST_OS_WINDOWS && !GTEST_HAS_GETTIMEOFDAY_
2332  __timeb64 now;
2333 
2334  // MSVC 8 deprecates _ftime64(), so we want to suppress warning 4996
2335  // (deprecated function) there.
2337  _ftime64(&now);
2339 
2340  return static_cast<TimeInMillis>(now.time) * 1000 + now.millitm;
2341 #elif GTEST_HAS_GETTIMEOFDAY_
2342  struct timeval now;
2343  gettimeofday(&now, nullptr);
2344  return static_cast<TimeInMillis>(now.tv_sec) * 1000 + now.tv_usec / 1000;
2345 #else
2346 # error "Don't know how to get the current time on your system."
2347 #endif
2348 }
2349 
2350 // Utilities
2351 
2352 // class String.
2353 
2354 #if GTEST_OS_WINDOWS_MOBILE
2355 // Creates a UTF-16 wide string from the given ANSI string, allocating
2356 // memory using new. The caller is responsible for deleting the return
2357 // value using delete[]. Returns the wide string, or NULL if the
2358 // input is NULL.
2359 LPCWSTR String::AnsiToUtf16(const char* ansi) {
2360  if (!ansi) return nullptr;
2361  const int length = strlen(ansi);
2362  const int unicode_length =
2363  MultiByteToWideChar(CP_ACP, 0, ansi, length, nullptr, 0);
2364  WCHAR* unicode = new WCHAR[unicode_length + 1];
2365  MultiByteToWideChar(CP_ACP, 0, ansi, length,
2366  unicode, unicode_length);
2367  unicode[unicode_length] = 0;
2368  return unicode;
2369 }
2370 
2371 // Creates an ANSI string from the given wide string, allocating
2372 // memory using new. The caller is responsible for deleting the return
2373 // value using delete[]. Returns the ANSI string, or NULL if the
2374 // input is NULL.
2375 const char* String::Utf16ToAnsi(LPCWSTR utf16_str) {
2376  if (!utf16_str) return nullptr;
2377  const int ansi_length = WideCharToMultiByte(CP_ACP, 0, utf16_str, -1, nullptr,
2378  0, nullptr, nullptr);
2379  char* ansi = new char[ansi_length + 1];
2380  WideCharToMultiByte(CP_ACP, 0, utf16_str, -1, ansi, ansi_length, nullptr,
2381  nullptr);
2382  ansi[ansi_length] = 0;
2383  return ansi;
2384 }
2385 
2386 #endif // GTEST_OS_WINDOWS_MOBILE
2387 
2388 // Compares two C strings. Returns true iff they have the same content.
2389 //
2390 // Unlike strcmp(), this function can handle NULL argument(s). A NULL
2391 // C string is considered different to any non-NULL C string,
2392 // including the empty string.
2393 bool String::CStringEquals(const char * lhs, const char * rhs) {
2394  if (lhs == nullptr) return rhs == nullptr;
2395 
2396  if (rhs == nullptr) return false;
2397 
2398  return strcmp(lhs, rhs) == 0;
2399 }
2400 
2401 #if GTEST_HAS_STD_WSTRING || GTEST_HAS_GLOBAL_WSTRING
2402 
2403 // Converts an array of wide chars to a narrow string using the UTF-8
2404 // encoding, and streams the result to the given Message object.
2405 static void StreamWideCharsToMessage(const wchar_t* wstr, size_t length,
2406  Message* msg) {
2407  for (size_t i = 0; i != length; ) { // NOLINT
2408  if (wstr[i] != L'\0') {
2409  *msg << WideStringToUtf8(wstr + i, static_cast<int>(length - i));
2410  while (i != length && wstr[i] != L'\0')
2411  i++;
2412  } else {
2413  *msg << '\0';
2414  i++;
2415  }
2416  }
2417 }
2418 
2419 #endif // GTEST_HAS_STD_WSTRING || GTEST_HAS_GLOBAL_WSTRING
2420 
2421 void SplitString(const ::std::string& str, char delimiter,
2422  ::std::vector< ::std::string>* dest) {
2423  ::std::vector< ::std::string> parsed;
2424  ::std::string::size_type pos = 0;
2425  while (::testing::internal::AlwaysTrue()) {
2426  const ::std::string::size_type colon = str.find(delimiter, pos);
2427  if (colon == ::std::string::npos) {
2428  parsed.push_back(str.substr(pos));
2429  break;
2430  } else {
2431  parsed.push_back(str.substr(pos, colon - pos));
2432  pos = colon + 1;
2433  }
2434  }
2435  dest->swap(parsed);
2436 }
2437 
2438 } // namespace internal
2439 
2440 // Constructs an empty Message.
2441 // We allocate the stringstream separately because otherwise each use of
2442 // ASSERT/EXPECT in a procedure adds over 200 bytes to the procedure's
2443 // stack frame leading to huge stack frames in some cases; gcc does not reuse
2444 // the stack space.
2445 Message::Message() : ss_(new ::std::stringstream) {
2446  // By default, we want there to be enough precision when printing
2447  // a double to a Message.
2448  *ss_ << std::setprecision(std::numeric_limits<double>::digits10 + 2);
2449 }
2450 
2451 // These two overloads allow streaming a wide C string to a Message
2452 // using the UTF-8 encoding.
2453 Message& Message::operator <<(const wchar_t* wide_c_str) {
2454  return *this << internal::String::ShowWideCString(wide_c_str);
2455 }
2456 Message& Message::operator <<(wchar_t* wide_c_str) {
2457  return *this << internal::String::ShowWideCString(wide_c_str);
2458 }
2459 
2460 #if GTEST_HAS_STD_WSTRING
2461 // Converts the given wide string to a narrow string using the UTF-8
2462 // encoding, and streams the result to this Message object.
2464  internal::StreamWideCharsToMessage(wstr.c_str(), wstr.length(), this);
2465  return *this;
2466 }
2467 #endif // GTEST_HAS_STD_WSTRING
2468 
2469 #if GTEST_HAS_GLOBAL_WSTRING
2470 // Converts the given wide string to a narrow string using the UTF-8
2471 // encoding, and streams the result to this Message object.
2472 Message& Message::operator <<(const ::wstring& wstr) {
2473  internal::StreamWideCharsToMessage(wstr.c_str(), wstr.length(), this);
2474  return *this;
2475 }
2476 #endif // GTEST_HAS_GLOBAL_WSTRING
2477 
2478 // Gets the text streamed to this object so far as an std::string.
2479 // Each '\0' character in the buffer is replaced with "\\0".
2480 std::string Message::GetString() const {
2481  return internal::StringStreamToString(ss_.get());
2482 }
2483 
2484 // AssertionResult constructors.
2485 // Used in EXPECT_TRUE/FALSE(assertion_result).
2486 AssertionResult::AssertionResult(const AssertionResult& other)
2487  : success_(other.success_),
2488  message_(other.message_.get() != nullptr
2489  ? new ::std::string(*other.message_)
2490  : static_cast< ::std::string*>(nullptr)) {}
2491 
2492 // Swaps two AssertionResults.
2493 void AssertionResult::swap(AssertionResult& other) {
2494  using std::swap;
2495  swap(success_, other.success_);
2496  swap(message_, other.message_);
2497 }
2498 
2499 // Returns the assertion's negation. Used with EXPECT/ASSERT_FALSE.
2500 AssertionResult AssertionResult::operator!() const {
2501  AssertionResult negation(!success_);
2502  if (message_.get() != nullptr) negation << *message_;
2503  return negation;
2504 }
2505 
2506 // Makes a successful assertion result.
2507 AssertionResult AssertionSuccess() {
2508  return AssertionResult(true);
2509 }
2510 
2511 // Makes a failed assertion result.
2512 AssertionResult AssertionFailure() {
2513  return AssertionResult(false);
2514 }
2515 
2516 // Makes a failed assertion result with the given failure message.
2517 // Deprecated; use AssertionFailure() << message.
2518 AssertionResult AssertionFailure(const Message& message) {
2519  return AssertionFailure() << message;
2520 }
2521 
2522 namespace internal {
2523 
2524 namespace edit_distance {
2525 std::vector<EditType> CalculateOptimalEdits(const std::vector<size_t>& left,
2526  const std::vector<size_t>& right) {
2527  std::vector<std::vector<double> > costs(
2528  left.size() + 1, std::vector<double>(right.size() + 1));
2529  std::vector<std::vector<EditType> > best_move(
2530  left.size() + 1, std::vector<EditType>(right.size() + 1));
2531 
2532  // Populate for empty right.
2533  for (size_t l_i = 0; l_i < costs.size(); ++l_i) {
2534  costs[l_i][0] = static_cast<double>(l_i);
2535  best_move[l_i][0] = kRemove;
2536  }
2537  // Populate for empty left.
2538  for (size_t r_i = 1; r_i < costs[0].size(); ++r_i) {
2539  costs[0][r_i] = static_cast<double>(r_i);
2540  best_move[0][r_i] = kAdd;
2541  }
2542 
2543  for (size_t l_i = 0; l_i < left.size(); ++l_i) {
2544  for (size_t r_i = 0; r_i < right.size(); ++r_i) {
2545  if (left[l_i] == right[r_i]) {
2546  // Found a match. Consume it.
2547  costs[l_i + 1][r_i + 1] = costs[l_i][r_i];
2548  best_move[l_i + 1][r_i + 1] = kMatch;
2549  continue;
2550  }
2551 
2552  const double add = costs[l_i + 1][r_i];
2553  const double remove = costs[l_i][r_i + 1];
2554  const double replace = costs[l_i][r_i];
2555  if (add < remove && add < replace) {
2556  costs[l_i + 1][r_i + 1] = add + 1;
2557  best_move[l_i + 1][r_i + 1] = kAdd;
2558  } else if (remove < add && remove < replace) {
2559  costs[l_i + 1][r_i + 1] = remove + 1;
2560  best_move[l_i + 1][r_i + 1] = kRemove;
2561  } else {
2562  // We make replace a little more expensive than add/remove to lower
2563  // their priority.
2564  costs[l_i + 1][r_i + 1] = replace + 1.00001;
2565  best_move[l_i + 1][r_i + 1] = kReplace;
2566  }
2567  }
2568  }
2569 
2570  // Reconstruct the best path. We do it in reverse order.
2571  std::vector<EditType> best_path;
2572  for (size_t l_i = left.size(), r_i = right.size(); l_i > 0 || r_i > 0;) {
2573  EditType move = best_move[l_i][r_i];
2574  best_path.push_back(move);
2575  l_i -= move != kAdd;
2576  r_i -= move != kRemove;
2577  }
2578  std::reverse(best_path.begin(), best_path.end());
2579  return best_path;
2580 }
2581 
2582 namespace {
2583 
2584 // Helper class to convert string into ids with deduplication.
2585 class InternalStrings {
2586  public:
2587  size_t GetId(const std::string& str) {
2588  IdMap::iterator it = ids_.find(str);
2589  if (it != ids_.end()) return it->second;
2590  size_t id = ids_.size();
2591  return ids_[str] = id;
2592  }
2593 
2594  private:
2595  typedef std::map<std::string, size_t> IdMap;
2596  IdMap ids_;
2597 };
2598 
2599 } // namespace
2600 
2601 std::vector<EditType> CalculateOptimalEdits(
2602  const std::vector<std::string>& left,
2603  const std::vector<std::string>& right) {
2604  std::vector<size_t> left_ids, right_ids;
2605  {
2606  InternalStrings intern_table;
2607  for (size_t i = 0; i < left.size(); ++i) {
2608  left_ids.push_back(intern_table.GetId(left[i]));
2609  }
2610  for (size_t i = 0; i < right.size(); ++i) {
2611  right_ids.push_back(intern_table.GetId(right[i]));
2612  }
2613  }
2614  return CalculateOptimalEdits(left_ids, right_ids);
2615 }
2616 
2617 namespace {
2618 
2619 // Helper class that holds the state for one hunk and prints it out to the
2620 // stream.
2621 // It reorders adds/removes when possible to group all removes before all
2622 // adds. It also adds the hunk header before printint into the stream.
2623 class Hunk {
2624  public:
2625  Hunk(size_t left_start, size_t right_start)
2626  : left_start_(left_start),
2627  right_start_(right_start),
2628  adds_(),
2629  removes_(),
2630  common_() {}
2631 
2632  void PushLine(char edit, const char* line) {
2633  switch (edit) {
2634  case ' ':
2635  ++common_;
2636  FlushEdits();
2637  hunk_.push_back(std::make_pair(' ', line));
2638  break;
2639  case '-':
2640  ++removes_;
2641  hunk_removes_.push_back(std::make_pair('-', line));
2642  break;
2643  case '+':
2644  ++adds_;
2645  hunk_adds_.push_back(std::make_pair('+', line));
2646  break;
2647  }
2648  }
2649 
2650  void PrintTo(std::ostream* os) {
2651  PrintHeader(os);
2652  FlushEdits();
2653  for (std::list<std::pair<char, const char*> >::const_iterator it =
2654  hunk_.begin();
2655  it != hunk_.end(); ++it) {
2656  *os << it->first << it->second << "\n";
2657  }
2658  }
2659 
2660  bool has_edits() const { return adds_ || removes_; }
2661 
2662  private:
2663  void FlushEdits() {
2664  hunk_.splice(hunk_.end(), hunk_removes_);
2665  hunk_.splice(hunk_.end(), hunk_adds_);
2666  }
2667 
2668  // Print a unified diff header for one hunk.
2669  // The format is
2670  // "@@ -<left_start>,<left_length> +<right_start>,<right_length> @@"
2671  // where the left/right parts are omitted if unnecessary.
2672  void PrintHeader(std::ostream* ss) const {
2673  *ss << "@@ ";
2674  if (removes_) {
2675  *ss << "-" << left_start_ << "," << (removes_ + common_);
2676  }
2677  if (removes_ && adds_) {
2678  *ss << " ";
2679  }
2680  if (adds_) {
2681  *ss << "+" << right_start_ << "," << (adds_ + common_);
2682  }
2683  *ss << " @@\n";
2684  }
2685 
2686  size_t left_start_, right_start_;
2687  size_t adds_, removes_, common_;
2688  std::list<std::pair<char, const char*> > hunk_, hunk_adds_, hunk_removes_;
2689 };
2690 
2691 } // namespace
2692 
2693 // Create a list of diff hunks in Unified diff format.
2694 // Each hunk has a header generated by PrintHeader above plus a body with
2695 // lines prefixed with ' ' for no change, '-' for deletion and '+' for
2696 // addition.
2697 // 'context' represents the desired unchanged prefix/suffix around the diff.
2698 // If two hunks are close enough that their contexts overlap, then they are
2699 // joined into one hunk.
2700 std::string CreateUnifiedDiff(const std::vector<std::string>& left,
2701  const std::vector<std::string>& right,
2702  size_t context) {
2703  const std::vector<EditType> edits = CalculateOptimalEdits(left, right);
2704 
2705  size_t l_i = 0, r_i = 0, edit_i = 0;
2706  std::stringstream ss;
2707  while (edit_i < edits.size()) {
2708  // Find first edit.
2709  while (edit_i < edits.size() && edits[edit_i] == kMatch) {
2710  ++l_i;
2711  ++r_i;
2712  ++edit_i;
2713  }
2714 
2715  // Find the first line to include in the hunk.
2716  const size_t prefix_context = std::min(l_i, context);
2717  Hunk hunk(l_i - prefix_context + 1, r_i - prefix_context + 1);
2718  for (size_t i = prefix_context; i > 0; --i) {
2719  hunk.PushLine(' ', left[l_i - i].c_str());
2720  }
2721 
2722  // Iterate the edits until we found enough suffix for the hunk or the input
2723  // is over.
2724  size_t n_suffix = 0;
2725  for (; edit_i < edits.size(); ++edit_i) {
2726  if (n_suffix >= context) {
2727  // Continue only if the next hunk is very close.
2728  std::vector<EditType>::const_iterator it = edits.begin() + edit_i;
2729  while (it != edits.end() && *it == kMatch) ++it;
2730  if (it == edits.end() || (it - edits.begin()) - edit_i >= context) {
2731  // There is no next edit or it is too far away.
2732  break;
2733  }
2734  }
2735 
2736  EditType edit = edits[edit_i];
2737  // Reset count when a non match is found.
2738  n_suffix = edit == kMatch ? n_suffix + 1 : 0;
2739 
2740  if (edit == kMatch || edit == kRemove || edit == kReplace) {
2741  hunk.PushLine(edit == kMatch ? ' ' : '-', left[l_i].c_str());
2742  }
2743  if (edit == kAdd || edit == kReplace) {
2744  hunk.PushLine('+', right[r_i].c_str());
2745  }
2746 
2747  // Advance indices, depending on edit type.
2748  l_i += edit != kAdd;
2749  r_i += edit != kRemove;
2750  }
2751 
2752  if (!hunk.has_edits()) {
2753  // We are done. We don't want this hunk.
2754  break;
2755  }
2756 
2757  hunk.PrintTo(&ss);
2758  }
2759  return ss.str();
2760 }
2761 
2762 } // namespace edit_distance
2763 
2764 namespace {
2765 
2766 // The string representation of the values received in EqFailure() are already
2767 // escaped. Split them on escaped '\n' boundaries. Leave all other escaped
2768 // characters the same.
2769 std::vector<std::string> SplitEscapedString(const std::string& str) {
2770  std::vector<std::string> lines;
2771  size_t start = 0, end = str.size();
2772  if (end > 2 && str[0] == '"' && str[end - 1] == '"') {
2773  ++start;
2774  --end;
2775  }
2776  bool escaped = false;
2777  for (size_t i = start; i + 1 < end; ++i) {
2778  if (escaped) {
2779  escaped = false;
2780  if (str[i] == 'n') {
2781  lines.push_back(str.substr(start, i - start - 1));
2782  start = i + 1;
2783  }
2784  } else {
2785  escaped = str[i] == '\\';
2786  }
2787  }
2788  lines.push_back(str.substr(start, end - start));
2789  return lines;
2790 }
2791 
2792 } // namespace
2793 
2794 // Constructs and returns the message for an equality assertion
2795 // (e.g. ASSERT_EQ, EXPECT_STREQ, etc) failure.
2796 //
2797 // The first four parameters are the expressions used in the assertion
2798 // and their values, as strings. For example, for ASSERT_EQ(foo, bar)
2799 // where foo is 5 and bar is 6, we have:
2800 //
2801 // lhs_expression: "foo"
2802 // rhs_expression: "bar"
2803 // lhs_value: "5"
2804 // rhs_value: "6"
2805 //
2806 // The ignoring_case parameter is true iff the assertion is a
2807 // *_STRCASEEQ*. When it's true, the string "Ignoring case" will
2808 // be inserted into the message.
2809 AssertionResult EqFailure(const char* lhs_expression,
2810  const char* rhs_expression,
2811  const std::string& lhs_value,
2812  const std::string& rhs_value,
2813  bool ignoring_case) {
2814  Message msg;
2815  msg << "Expected equality of these values:";
2816  msg << "\n " << lhs_expression;
2817  if (lhs_value != lhs_expression) {
2818  msg << "\n Which is: " << lhs_value;
2819  }
2820  msg << "\n " << rhs_expression;
2821  if (rhs_value != rhs_expression) {
2822  msg << "\n Which is: " << rhs_value;
2823  }
2824 
2825  if (ignoring_case) {
2826  msg << "\nIgnoring case";
2827  }
2828 
2829  if (!lhs_value.empty() && !rhs_value.empty()) {
2830  const std::vector<std::string> lhs_lines =
2831  SplitEscapedString(lhs_value);
2832  const std::vector<std::string> rhs_lines =
2833  SplitEscapedString(rhs_value);
2834  if (lhs_lines.size() > 1 || rhs_lines.size() > 1) {
2835  msg << "\nWith diff:\n"
2836  << edit_distance::CreateUnifiedDiff(lhs_lines, rhs_lines);
2837  }
2838  }
2839 
2840  return AssertionFailure() << msg;
2841 }
2842 
2843 // Constructs a failure message for Boolean assertions such as EXPECT_TRUE.
2845  const AssertionResult& assertion_result,
2846  const char* expression_text,
2847  const char* actual_predicate_value,
2848  const char* expected_predicate_value) {
2849  const char* actual_message = assertion_result.message();
2850  Message msg;
2851  msg << "Value of: " << expression_text
2852  << "\n Actual: " << actual_predicate_value;
2853  if (actual_message[0] != '\0')
2854  msg << " (" << actual_message << ")";
2855  msg << "\nExpected: " << expected_predicate_value;
2856  return msg.GetString();
2857 }
2858 
2859 // Helper function for implementing ASSERT_NEAR.
2860 AssertionResult DoubleNearPredFormat(const char* expr1,
2861  const char* expr2,
2862  const char* abs_error_expr,
2863  double val1,
2864  double val2,
2865  double abs_error) {
2866  const double diff = fabs(val1 - val2);
2867  if (diff <= abs_error) return AssertionSuccess();
2868 
2869  return AssertionFailure()
2870  << "The difference between " << expr1 << " and " << expr2
2871  << " is " << diff << ", which exceeds " << abs_error_expr << ", where\n"
2872  << expr1 << " evaluates to " << val1 << ",\n"
2873  << expr2 << " evaluates to " << val2 << ", and\n"
2874  << abs_error_expr << " evaluates to " << abs_error << ".";
2875 }
2876 
2877 
2878 // Helper template for implementing FloatLE() and DoubleLE().
2879 template <typename RawType>
2880 AssertionResult FloatingPointLE(const char* expr1,
2881  const char* expr2,
2882  RawType val1,
2883  RawType val2) {
2884  // Returns success if val1 is less than val2,
2885  if (val1 < val2) {
2886  return AssertionSuccess();
2887  }
2888 
2889  // or if val1 is almost equal to val2.
2890  const FloatingPoint<RawType> lhs(val1), rhs(val2);
2891  if (lhs.AlmostEquals(rhs)) {
2892  return AssertionSuccess();
2893  }
2894 
2895  // Note that the above two checks will both fail if either val1 or
2896  // val2 is NaN, as the IEEE floating-point standard requires that
2897  // any predicate involving a NaN must return false.
2898 
2899  ::std::stringstream val1_ss;
2900  val1_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2)
2901  << val1;
2902 
2903  ::std::stringstream val2_ss;
2904  val2_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2)
2905  << val2;
2906 
2907  return AssertionFailure()
2908  << "Expected: (" << expr1 << ") <= (" << expr2 << ")\n"
2909  << " Actual: " << StringStreamToString(&val1_ss) << " vs "
2910  << StringStreamToString(&val2_ss);
2911 }
2912 
2913 } // namespace internal
2914 
2915 // Asserts that val1 is less than, or almost equal to, val2. Fails
2916 // otherwise. In particular, it fails if either val1 or val2 is NaN.
2917 AssertionResult FloatLE(const char* expr1, const char* expr2,
2918  float val1, float val2) {
2919  return internal::FloatingPointLE<float>(expr1, expr2, val1, val2);
2920 }
2921 
2922 // Asserts that val1 is less than, or almost equal to, val2. Fails
2923 // otherwise. In particular, it fails if either val1 or val2 is NaN.
2924 AssertionResult DoubleLE(const char* expr1, const char* expr2,
2925  double val1, double val2) {
2926  return internal::FloatingPointLE<double>(expr1, expr2, val1, val2);
2927 }
2928 
2929 namespace internal {
2930 
2931 // The helper function for {ASSERT|EXPECT}_EQ with int or enum
2932 // arguments.
2933 AssertionResult CmpHelperEQ(const char* lhs_expression,
2934  const char* rhs_expression,
2935  BiggestInt lhs,
2936  BiggestInt rhs) {
2937  if (lhs == rhs) {
2938  return AssertionSuccess();
2939  }
2940 
2941  return EqFailure(lhs_expression,
2942  rhs_expression,
2945  false);
2946 }
2947 
2948 // A macro for implementing the helper functions needed to implement
2949 // ASSERT_?? and EXPECT_?? with integer or enum arguments. It is here
2950 // just to avoid copy-and-paste of similar code.
2951 #define GTEST_IMPL_CMP_HELPER_(op_name, op)\
2952 AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \
2953  BiggestInt val1, BiggestInt val2) {\
2954  if (val1 op val2) {\
2955  return AssertionSuccess();\
2956  } else {\
2957  return AssertionFailure() \
2958  << "Expected: (" << expr1 << ") " #op " (" << expr2\
2959  << "), actual: " << FormatForComparisonFailureMessage(val1, val2)\
2960  << " vs " << FormatForComparisonFailureMessage(val2, val1);\
2961  }\
2962 }
2963 
2964 // Implements the helper function for {ASSERT|EXPECT}_NE with int or
2965 // enum arguments.
2966 GTEST_IMPL_CMP_HELPER_(NE, !=)
2967 // Implements the helper function for {ASSERT|EXPECT}_LE with int or
2968 // enum arguments.
2969 GTEST_IMPL_CMP_HELPER_(LE, <=)
2970 // Implements the helper function for {ASSERT|EXPECT}_LT with int or
2971 // enum arguments.
2972 GTEST_IMPL_CMP_HELPER_(LT, < )
2973 // Implements the helper function for {ASSERT|EXPECT}_GE with int or
2974 // enum arguments.
2975 GTEST_IMPL_CMP_HELPER_(GE, >=)
2976 // Implements the helper function for {ASSERT|EXPECT}_GT with int or
2977 // enum arguments.
2978 GTEST_IMPL_CMP_HELPER_(GT, > )
2979 
2980 #undef GTEST_IMPL_CMP_HELPER_
2981 
2982 // The helper function for {ASSERT|EXPECT}_STREQ.
2983 AssertionResult CmpHelperSTREQ(const char* lhs_expression,
2984  const char* rhs_expression,
2985  const char* lhs,
2986  const char* rhs) {
2987  if (String::CStringEquals(lhs, rhs)) {
2988  return AssertionSuccess();
2989  }
2990 
2991  return EqFailure(lhs_expression,
2992  rhs_expression,
2993  PrintToString(lhs),
2994  PrintToString(rhs),
2995  false);
2996 }
2997 
2998 // The helper function for {ASSERT|EXPECT}_STRCASEEQ.
2999 AssertionResult CmpHelperSTRCASEEQ(const char* lhs_expression,
3000  const char* rhs_expression,
3001  const char* lhs,
3002  const char* rhs) {
3003  if (String::CaseInsensitiveCStringEquals(lhs, rhs)) {
3004  return AssertionSuccess();
3005  }
3006 
3007  return EqFailure(lhs_expression,
3008  rhs_expression,
3009  PrintToString(lhs),
3010  PrintToString(rhs),
3011  true);
3012 }
3013 
3014 // The helper function for {ASSERT|EXPECT}_STRNE.
3015 AssertionResult CmpHelperSTRNE(const char* s1_expression,
3016  const char* s2_expression,
3017  const char* s1,
3018  const char* s2) {
3019  if (!String::CStringEquals(s1, s2)) {
3020  return AssertionSuccess();
3021  } else {
3022  return AssertionFailure() << "Expected: (" << s1_expression << ") != ("
3023  << s2_expression << "), actual: \""
3024  << s1 << "\" vs \"" << s2 << "\"";
3025  }
3026 }
3027 
3028 // The helper function for {ASSERT|EXPECT}_STRCASENE.
3029 AssertionResult CmpHelperSTRCASENE(const char* s1_expression,
3030  const char* s2_expression,
3031  const char* s1,
3032  const char* s2) {
3033  if (!String::CaseInsensitiveCStringEquals(s1, s2)) {
3034  return AssertionSuccess();
3035  } else {
3036  return AssertionFailure()
3037  << "Expected: (" << s1_expression << ") != ("
3038  << s2_expression << ") (ignoring case), actual: \""
3039  << s1 << "\" vs \"" << s2 << "\"";
3040  }
3041 }
3042 
3043 } // namespace internal
3044 
3045 namespace {
3046 
3047 // Helper functions for implementing IsSubString() and IsNotSubstring().
3048 
3049 // This group of overloaded functions return true iff needle is a
3050 // substring of haystack. NULL is considered a substring of itself
3051 // only.
3052 
3053 bool IsSubstringPred(const char* needle, const char* haystack) {
3054  if (needle == nullptr || haystack == nullptr) return needle == haystack;
3055 
3056  return strstr(haystack, needle) != nullptr;
3057 }
3058 
3059 bool IsSubstringPred(const wchar_t* needle, const wchar_t* haystack) {
3060  if (needle == nullptr || haystack == nullptr) return needle == haystack;
3061 
3062  return wcsstr(haystack, needle) != nullptr;
3063 }
3064 
3065 // StringType here can be either ::std::string or ::std::wstring.
3066 template <typename StringType>
3067 bool IsSubstringPred(const StringType& needle,
3068  const StringType& haystack) {
3069  return haystack.find(needle) != StringType::npos;
3070 }
3071 
3072 // This function implements either IsSubstring() or IsNotSubstring(),
3073 // depending on the value of the expected_to_be_substring parameter.
3074 // StringType here can be const char*, const wchar_t*, ::std::string,
3075 // or ::std::wstring.
3076 template <typename StringType>
3077 AssertionResult IsSubstringImpl(
3078  bool expected_to_be_substring,
3079  const char* needle_expr, const char* haystack_expr,
3080  const StringType& needle, const StringType& haystack) {
3081  if (IsSubstringPred(needle, haystack) == expected_to_be_substring)
3082  return AssertionSuccess();
3083 
3084  const bool is_wide_string = sizeof(needle[0]) > 1;
3085  const char* const begin_string_quote = is_wide_string ? "L\"" : "\"";
3086  return AssertionFailure()
3087  << "Value of: " << needle_expr << "\n"
3088  << " Actual: " << begin_string_quote << needle << "\"\n"
3089  << "Expected: " << (expected_to_be_substring ? "" : "not ")
3090  << "a substring of " << haystack_expr << "\n"
3091  << "Which is: " << begin_string_quote << haystack << "\"";
3092 }
3093 
3094 } // namespace
3095 
3096 // IsSubstring() and IsNotSubstring() check whether needle is a
3097 // substring of haystack (NULL is considered a substring of itself
3098 // only), and return an appropriate error message when they fail.
3099 
3100 AssertionResult IsSubstring(
3101  const char* needle_expr, const char* haystack_expr,
3102  const char* needle, const char* haystack) {
3103  return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack);
3104 }
3105 
3106 AssertionResult IsSubstring(
3107  const char* needle_expr, const char* haystack_expr,
3108  const wchar_t* needle, const wchar_t* haystack) {
3109  return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack);
3110 }
3111 
3112 AssertionResult IsNotSubstring(
3113  const char* needle_expr, const char* haystack_expr,
3114  const char* needle, const char* haystack) {
3115  return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack);
3116 }
3117 
3118 AssertionResult IsNotSubstring(
3119  const char* needle_expr, const char* haystack_expr,
3120  const wchar_t* needle, const wchar_t* haystack) {
3121  return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack);
3122 }
3123 
3124 AssertionResult IsSubstring(
3125  const char* needle_expr, const char* haystack_expr,
3126  const ::std::string& needle, const ::std::string& haystack) {
3127  return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack);
3128 }
3129 
3130 AssertionResult IsNotSubstring(
3131  const char* needle_expr, const char* haystack_expr,
3132  const ::std::string& needle, const ::std::string& haystack) {
3133  return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack);
3134 }
3135 
3136 #if GTEST_HAS_STD_WSTRING
3137 AssertionResult IsSubstring(
3138  const char* needle_expr, const char* haystack_expr,
3139  const ::std::wstring& needle, const ::std::wstring& haystack) {
3140  return IsSubstringImpl(true, needle_expr, haystack_expr, needle, haystack);
3141 }
3142 
3143 AssertionResult IsNotSubstring(
3144  const char* needle_expr, const char* haystack_expr,
3145  const ::std::wstring& needle, const ::std::wstring& haystack) {
3146  return IsSubstringImpl(false, needle_expr, haystack_expr, needle, haystack);
3147 }
3148 #endif // GTEST_HAS_STD_WSTRING
3149 
3150 namespace internal {
3151 
3152 #if GTEST_OS_WINDOWS
3153 
3154 namespace {
3155 
3156 // Helper function for IsHRESULT{SuccessFailure} predicates
3157 AssertionResult HRESULTFailureHelper(const char* expr,
3158  const char* expected,
3159  long hr) { // NOLINT
3160 # if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_WINDOWS_TV_TITLE
3161 
3162  // Windows CE doesn't support FormatMessage.
3163  const char error_text[] = "";
3164 
3165 # else
3166 
3167  // Looks up the human-readable system message for the HRESULT code
3168  // and since we're not passing any params to FormatMessage, we don't
3169  // want inserts expanded.
3170  const DWORD kFlags = FORMAT_MESSAGE_FROM_SYSTEM |
3171  FORMAT_MESSAGE_IGNORE_INSERTS;
3172  const DWORD kBufSize = 4096;
3173  // Gets the system's human readable message string for this HRESULT.
3174  char error_text[kBufSize] = { '\0' };
3175  DWORD message_length = ::FormatMessageA(kFlags,
3176  0, // no source, we're asking system
3177  hr, // the error
3178  0, // no line width restrictions
3179  error_text, // output buffer
3180  kBufSize, // buf size
3181  nullptr); // no arguments for inserts
3182  // Trims tailing white space (FormatMessage leaves a trailing CR-LF)
3183  for (; message_length && IsSpace(error_text[message_length - 1]);
3184  --message_length) {
3185  error_text[message_length - 1] = '\0';
3186  }
3187 
3188 # endif // GTEST_OS_WINDOWS_MOBILE
3189 
3190  const std::string error_hex("0x" + String::FormatHexInt(hr));
3191  return ::testing::AssertionFailure()
3192  << "Expected: " << expr << " " << expected << ".\n"
3193  << " Actual: " << error_hex << " " << error_text << "\n";
3194 }
3195 
3196 } // namespace
3197 
3198 AssertionResult IsHRESULTSuccess(const char* expr, long hr) { // NOLINT
3199  if (SUCCEEDED(hr)) {
3200  return AssertionSuccess();
3201  }
3202  return HRESULTFailureHelper(expr, "succeeds", hr);
3203 }
3204 
3205 AssertionResult IsHRESULTFailure(const char* expr, long hr) { // NOLINT
3206  if (FAILED(hr)) {
3207  return AssertionSuccess();
3208  }
3209  return HRESULTFailureHelper(expr, "fails", hr);
3210 }
3211 
3212 #endif // GTEST_OS_WINDOWS
3213 
3214 // Utility functions for encoding Unicode text (wide strings) in
3215 // UTF-8.
3216 
3217 // A Unicode code-point can have up to 21 bits, and is encoded in UTF-8
3218 // like this:
3219 //
3220 // Code-point length Encoding
3221 // 0 - 7 bits 0xxxxxxx
3222 // 8 - 11 bits 110xxxxx 10xxxxxx
3223 // 12 - 16 bits 1110xxxx 10xxxxxx 10xxxxxx
3224 // 17 - 21 bits 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
3225 
3226 // The maximum code-point a one-byte UTF-8 sequence can represent.
3227 const UInt32 kMaxCodePoint1 = (static_cast<UInt32>(1) << 7) - 1;
3228 
3229 // The maximum code-point a two-byte UTF-8 sequence can represent.
3230 const UInt32 kMaxCodePoint2 = (static_cast<UInt32>(1) << (5 + 6)) - 1;
3231 
3232 // The maximum code-point a three-byte UTF-8 sequence can represent.
3233 const UInt32 kMaxCodePoint3 = (static_cast<UInt32>(1) << (4 + 2*6)) - 1;
3234 
3235 // The maximum code-point a four-byte UTF-8 sequence can represent.
3236 const UInt32 kMaxCodePoint4 = (static_cast<UInt32>(1) << (3 + 3*6)) - 1;
3237 
3238 // Chops off the n lowest bits from a bit pattern. Returns the n
3239 // lowest bits. As a side effect, the original bit pattern will be
3240 // shifted to the right by n bits.
3241 inline UInt32 ChopLowBits(UInt32* bits, int n) {
3242  const UInt32 low_bits = *bits & ((static_cast<UInt32>(1) << n) - 1);
3243  *bits >>= n;
3244  return low_bits;
3245 }
3246 
3247 // Converts a Unicode code point to a narrow string in UTF-8 encoding.
3248 // code_point parameter is of type UInt32 because wchar_t may not be
3249 // wide enough to contain a code point.
3250 // If the code_point is not a valid Unicode code point
3251 // (i.e. outside of Unicode range U+0 to U+10FFFF) it will be converted
3252 // to "(Invalid Unicode 0xXXXXXXXX)".
3253 std::string CodePointToUtf8(UInt32 code_point) {
3254  if (code_point > kMaxCodePoint4) {
3255  return "(Invalid Unicode 0x" + String::FormatHexInt(code_point) + ")";
3256  }
3257 
3258  char str[5]; // Big enough for the largest valid code point.
3259  if (code_point <= kMaxCodePoint1) {
3260  str[1] = '\0';
3261  str[0] = static_cast<char>(code_point); // 0xxxxxxx
3262  } else if (code_point <= kMaxCodePoint2) {
3263  str[2] = '\0';
3264  str[1] = static_cast<char>(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx
3265  str[0] = static_cast<char>(0xC0 | code_point); // 110xxxxx
3266  } else if (code_point <= kMaxCodePoint3) {
3267  str[3] = '\0';
3268  str[2] = static_cast<char>(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx
3269  str[1] = static_cast<char>(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx
3270  str[0] = static_cast<char>(0xE0 | code_point); // 1110xxxx
3271  } else { // code_point <= kMaxCodePoint4
3272  str[4] = '\0';
3273  str[3] = static_cast<char>(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx
3274  str[2] = static_cast<char>(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx
3275  str[1] = static_cast<char>(0x80 | ChopLowBits(&code_point, 6)); // 10xxxxxx
3276  str[0] = static_cast<char>(0xF0 | code_point); // 11110xxx
3277  }
3278  return str;
3279 }
3280 
3281 // The following two functions only make sense if the system
3282 // uses UTF-16 for wide string encoding. All supported systems
3283 // with 16 bit wchar_t (Windows, Cygwin) do use UTF-16.
3284 
3285 // Determines if the arguments constitute UTF-16 surrogate pair
3286 // and thus should be combined into a single Unicode code point
3287 // using CreateCodePointFromUtf16SurrogatePair.
3288 inline bool IsUtf16SurrogatePair(wchar_t first, wchar_t second) {
3289  return sizeof(wchar_t) == 2 &&
3290  (first & 0xFC00) == 0xD800 && (second & 0xFC00) == 0xDC00;
3291 }
3292 
3293 // Creates a Unicode code point from UTF16 surrogate pair.
3294 inline UInt32 CreateCodePointFromUtf16SurrogatePair(wchar_t first,
3295  wchar_t second) {
3296  const UInt32 mask = (1 << 10) - 1;
3297  return (sizeof(wchar_t) == 2) ?
3298  (((first & mask) << 10) | (second & mask)) + 0x10000 :
3299  // This function should not be called when the condition is
3300  // false, but we provide a sensible default in case it is.
3301  static_cast<UInt32>(first);
3302 }
3303 
3304 // Converts a wide string to a narrow string in UTF-8 encoding.
3305 // The wide string is assumed to have the following encoding:
3306 // UTF-16 if sizeof(wchar_t) == 2 (on Windows, Cygwin)
3307 // UTF-32 if sizeof(wchar_t) == 4 (on Linux)
3308 // Parameter str points to a null-terminated wide string.
3309 // Parameter num_chars may additionally limit the number
3310 // of wchar_t characters processed. -1 is used when the entire string
3311 // should be processed.
3312 // If the string contains code points that are not valid Unicode code points
3313 // (i.e. outside of Unicode range U+0 to U+10FFFF) they will be output
3314 // as '(Invalid Unicode 0xXXXXXXXX)'. If the string is in UTF16 encoding
3315 // and contains invalid UTF-16 surrogate pairs, values in those pairs
3316 // will be encoded as individual Unicode characters from Basic Normal Plane.
3317 std::string WideStringToUtf8(const wchar_t* str, int num_chars) {
3318  if (num_chars == -1)
3319  num_chars = static_cast<int>(wcslen(str));
3320 
3321  ::std::stringstream stream;
3322  for (int i = 0; i < num_chars; ++i) {
3323  UInt32 unicode_code_point;
3324 
3325  if (str[i] == L'\0') {
3326  break;
3327  } else if (i + 1 < num_chars && IsUtf16SurrogatePair(str[i], str[i + 1])) {
3328  unicode_code_point = CreateCodePointFromUtf16SurrogatePair(str[i],
3329  str[i + 1]);
3330  i++;
3331  } else {
3332  unicode_code_point = static_cast<UInt32>(str[i]);
3333  }
3334 
3335  stream << CodePointToUtf8(unicode_code_point);
3336  }
3337  return StringStreamToString(&stream);
3338 }
3339 
3340 // Converts a wide C string to an std::string using the UTF-8 encoding.
3341 // NULL will be converted to "(null)".
3342 std::string String::ShowWideCString(const wchar_t * wide_c_str) {
3343  if (wide_c_str == nullptr) return "(null)";
3344 
3345  return internal::WideStringToUtf8(wide_c_str, -1);
3346 }
3347 
3348 // Compares two wide C strings. Returns true iff they have the same
3349 // content.
3350 //
3351 // Unlike wcscmp(), this function can handle NULL argument(s). A NULL
3352 // C string is considered different to any non-NULL C string,
3353 // including the empty string.
3354 bool String::WideCStringEquals(const wchar_t * lhs, const wchar_t * rhs) {
3355  if (lhs == nullptr) return rhs == nullptr;
3356 
3357  if (rhs == nullptr) return false;
3358 
3359  return wcscmp(lhs, rhs) == 0;
3360 }
3361 
3362 // Helper function for *_STREQ on wide strings.
3363 AssertionResult CmpHelperSTREQ(const char* lhs_expression,
3364  const char* rhs_expression,
3365  const wchar_t* lhs,
3366  const wchar_t* rhs) {
3367  if (String::WideCStringEquals(lhs, rhs)) {
3368  return AssertionSuccess();
3369  }
3370 
3371  return EqFailure(lhs_expression,
3372  rhs_expression,
3373  PrintToString(lhs),
3374  PrintToString(rhs),
3375  false);
3376 }
3377 
3378 // Helper function for *_STRNE on wide strings.
3379 AssertionResult CmpHelperSTRNE(const char* s1_expression,
3380  const char* s2_expression,
3381  const wchar_t* s1,
3382  const wchar_t* s2) {
3383  if (!String::WideCStringEquals(s1, s2)) {
3384  return AssertionSuccess();
3385  }
3386 
3387  return AssertionFailure() << "Expected: (" << s1_expression << ") != ("
3388  << s2_expression << "), actual: "
3389  << PrintToString(s1)
3390  << " vs " << PrintToString(s2);
3391 }
3392 
3393 // Compares two C strings, ignoring case. Returns true iff they have
3394 // the same content.
3395 //
3396 // Unlike strcasecmp(), this function can handle NULL argument(s). A
3397 // NULL C string is considered different to any non-NULL C string,
3398 // including the empty string.
3399 bool String::CaseInsensitiveCStringEquals(const char * lhs, const char * rhs) {
3400  if (lhs == nullptr) return rhs == nullptr;
3401  if (rhs == nullptr) return false;
3402  return posix::StrCaseCmp(lhs, rhs) == 0;
3403 }
3404 
3405  // Compares two wide C strings, ignoring case. Returns true iff they
3406  // have the same content.
3407  //
3408  // Unlike wcscasecmp(), this function can handle NULL argument(s).
3409  // A NULL C string is considered different to any non-NULL wide C string,
3410  // including the empty string.
3411  // NB: The implementations on different platforms slightly differ.
3412  // On windows, this method uses _wcsicmp which compares according to LC_CTYPE
3413  // environment variable. On GNU platform this method uses wcscasecmp
3414  // which compares according to LC_CTYPE category of the current locale.
3415  // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the
3416  // current locale.
3417 bool String::CaseInsensitiveWideCStringEquals(const wchar_t* lhs,
3418  const wchar_t* rhs) {
3419  if (lhs == nullptr) return rhs == nullptr;
3420 
3421  if (rhs == nullptr) return false;
3422 
3423 #if GTEST_OS_WINDOWS
3424  return _wcsicmp(lhs, rhs) == 0;
3425 #elif GTEST_OS_LINUX && !GTEST_OS_LINUX_ANDROID
3426  return wcscasecmp(lhs, rhs) == 0;
3427 #else
3428  // Android, Mac OS X and Cygwin don't define wcscasecmp.
3429  // Other unknown OSes may not define it either.
3430  wint_t left, right;
3431  do {
3432  left = towlower(*lhs++);
3433  right = towlower(*rhs++);
3434  } while (left && left == right);
3435  return left == right;
3436 #endif // OS selector
3437 }
3438 
3439 // Returns true iff str ends with the given suffix, ignoring case.
3440 // Any string is considered to end with an empty suffix.
3441 bool String::EndsWithCaseInsensitive(
3442  const std::string& str, const std::string& suffix) {
3443  const size_t str_len = str.length();
3444  const size_t suffix_len = suffix.length();
3445  return (str_len >= suffix_len) &&
3446  CaseInsensitiveCStringEquals(str.c_str() + str_len - suffix_len,
3447  suffix.c_str());
3448 }
3449 
3450 // Formats an int value as "%02d".
3451 std::string String::FormatIntWidth2(int value) {
3452  std::stringstream ss;
3453  ss << std::setfill('0') << std::setw(2) << value;
3454  return ss.str();
3455 }
3456 
3457 // Formats an int value as "%X".
3458 std::string String::FormatHexInt(int value) {
3459  std::stringstream ss;
3460  ss << std::hex << std::uppercase << value;
3461  return ss.str();
3462 }
3463 
3464 // Formats a byte as "%02X".
3465 std::string String::FormatByte(unsigned char value) {
3466  std::stringstream ss;
3467  ss << std::setfill('0') << std::setw(2) << std::hex << std::uppercase
3468  << static_cast<unsigned int>(value);
3469  return ss.str();
3470 }
3471 
3472 // Converts the buffer in a stringstream to an std::string, converting NUL
3473 // bytes to "\\0" along the way.
3474 std::string StringStreamToString(::std::stringstream* ss) {
3475  const ::std::string& str = ss->str();
3476  const char* const start = str.c_str();
3477  const char* const end = start + str.length();
3478 
3479  std::string result;
3480  result.reserve(2 * (end - start));
3481  for (const char* ch = start; ch != end; ++ch) {
3482  if (*ch == '\0') {
3483  result += "\\0"; // Replaces NUL with "\\0";
3484  } else {
3485  result += *ch;
3486  }
3487  }
3488 
3489  return result;
3490 }
3491 
3492 // Appends the user-supplied message to the Google-Test-generated message.
3493 std::string AppendUserMessage(const std::string& gtest_msg,
3494  const Message& user_msg) {
3495  // Appends the user message if it's non-empty.
3496  const std::string user_msg_string = user_msg.GetString();
3497  if (user_msg_string.empty()) {
3498  return gtest_msg;
3499  }
3500 
3501  return gtest_msg + "\n" + user_msg_string;
3502 }
3503 
3504 } // namespace internal
3505 
3506 // class TestResult
3507 
3508 // Creates an empty TestResult.
3509 TestResult::TestResult()
3510  : death_test_count_(0),
3511  elapsed_time_(0) {
3512 }
3513 
3514 // D'tor.
3515 TestResult::~TestResult() {
3516 }
3517 
3518 // Returns the i-th test part result among all the results. i can
3519 // range from 0 to total_part_count() - 1. If i is not in that range,
3520 // aborts the program.
3521 const TestPartResult& TestResult::GetTestPartResult(int i) const {
3522  if (i < 0 || i >= total_part_count())
3524  return test_part_results_.at(i);
3525 }
3526 
3527 // Returns the i-th test property. i can range from 0 to
3528 // test_property_count() - 1. If i is not in that range, aborts the
3529 // program.
3530 const TestProperty& TestResult::GetTestProperty(int i) const {
3531  if (i < 0 || i >= test_property_count())
3533  return test_properties_.at(i);
3534 }
3535 
3536 // Clears the test part results.
3537 void TestResult::ClearTestPartResults() {
3538  test_part_results_.clear();
3539 }
3540 
3541 // Adds a test part result to the list.
3542 void TestResult::AddTestPartResult(const TestPartResult& test_part_result) {
3543  test_part_results_.push_back(test_part_result);
3544 }
3545 
3546 // Adds a test property to the list. If a property with the same key as the
3547 // supplied property is already represented, the value of this test_property
3548 // replaces the old value for that key.
3549 void TestResult::RecordProperty(const std::string& xml_element,
3550  const TestProperty& test_property) {
3551  if (!ValidateTestProperty(xml_element, test_property)) {
3552  return;
3553  }
3554  internal::MutexLock lock(&test_properites_mutex_);
3555  const std::vector<TestProperty>::iterator property_with_matching_key =
3556  std::find_if(test_properties_.begin(), test_properties_.end(),
3557  internal::TestPropertyKeyIs(test_property.key()));
3558  if (property_with_matching_key == test_properties_.end()) {
3559  test_properties_.push_back(test_property);
3560  return;
3561  }
3562  property_with_matching_key->SetValue(test_property.value());
3563 }
3564 
3565 // The list of reserved attributes used in the <testsuites> element of XML
3566 // output.
3567 static const char* const kReservedTestSuitesAttributes[] = {
3568  "disabled",
3569  "errors",
3570  "failures",
3571  "name",
3572  "random_seed",
3573  "tests",
3574  "time",
3575  "timestamp"
3576 };
3577 
3578 // The list of reserved attributes used in the <testsuite> element of XML
3579 // output.
3580 static const char* const kReservedTestSuiteAttributes[] = {
3581  "disabled",
3582  "errors",
3583  "failures",
3584  "name",
3585  "tests",
3586  "time"
3587 };
3588 
3589 // The list of reserved attributes used in the <testcase> element of XML output.
3590 static const char* const kReservedTestCaseAttributes[] = {
3591  "classname", "name", "status", "time",
3592  "type_param", "value_param", "file", "line"};
3593 
3594 template <int kSize>
3595 std::vector<std::string> ArrayAsVector(const char* const (&array)[kSize]) {
3596  return std::vector<std::string>(array, array + kSize);
3597 }
3598 
3599 static std::vector<std::string> GetReservedAttributesForElement(
3600  const std::string& xml_element) {
3601  if (xml_element == "testsuites") {
3602  return ArrayAsVector(kReservedTestSuitesAttributes);
3603  } else if (xml_element == "testsuite") {
3604  return ArrayAsVector(kReservedTestSuiteAttributes);
3605  } else if (xml_element == "testcase") {
3606  return ArrayAsVector(kReservedTestCaseAttributes);
3607  } else {
3608  GTEST_CHECK_(false) << "Unrecognized xml_element provided: " << xml_element;
3609  }
3610  // This code is unreachable but some compilers may not realizes that.
3611  return std::vector<std::string>();
3612 }
3613 
3614 static std::string FormatWordList(const std::vector<std::string>& words) {
3615  Message word_list;
3616  for (size_t i = 0; i < words.size(); ++i) {
3617  if (i > 0 && words.size() > 2) {
3618  word_list << ", ";
3619  }
3620  if (i == words.size() - 1) {
3621  word_list << "and ";
3622  }
3623  word_list << "'" << words[i] << "'";
3624  }
3625  return word_list.GetString();
3626 }
3627 
3628 static bool ValidateTestPropertyName(
3629  const std::string& property_name,
3630  const std::vector<std::string>& reserved_names) {
3631  if (std::find(reserved_names.begin(), reserved_names.end(), property_name) !=
3632  reserved_names.end()) {
3633  ADD_FAILURE() << "Reserved key used in RecordProperty(): " << property_name
3634  << " (" << FormatWordList(reserved_names)
3635  << " are reserved by " << GTEST_NAME_ << ")";
3636  return false;
3637  }
3638  return true;
3639 }
3640 
3641 // Adds a failure if the key is a reserved attribute of the element named
3642 // xml_element. Returns true if the property is valid.
3643 bool TestResult::ValidateTestProperty(const std::string& xml_element,
3644  const TestProperty& test_property) {
3645  return ValidateTestPropertyName(test_property.key(),
3646  GetReservedAttributesForElement(xml_element));
3647 }
3648 
3649 // Clears the object.
3650 void TestResult::Clear() {
3651  test_part_results_.clear();
3652  test_properties_.clear();
3653  death_test_count_ = 0;
3654  elapsed_time_ = 0;
3655 }
3656 
3657 // Returns true off the test part was skipped.
3658 static bool TestPartSkipped(const TestPartResult& result) {
3659  return result.skipped();
3660 }
3661 
3662 // Returns true iff the test was skipped.
3663 bool TestResult::Skipped() const {
3664  return !Failed() && CountIf(test_part_results_, TestPartSkipped) > 0;
3665 }
3666 
3667 // Returns true iff the test failed.
3668 bool TestResult::Failed() const {
3669  for (int i = 0; i < total_part_count(); ++i) {
3670  if (GetTestPartResult(i).failed())
3671  return true;
3672  }
3673  return false;
3674 }
3675 
3676 // Returns true iff the test part fatally failed.
3677 static bool TestPartFatallyFailed(const TestPartResult& result) {
3678  return result.fatally_failed();
3679 }
3680 
3681 // Returns true iff the test fatally failed.
3682 bool TestResult::HasFatalFailure() const {
3683  return CountIf(test_part_results_, TestPartFatallyFailed) > 0;
3684 }
3685 
3686 // Returns true iff the test part non-fatally failed.
3687 static bool TestPartNonfatallyFailed(const TestPartResult& result) {
3688  return result.nonfatally_failed();
3689 }
3690 
3691 // Returns true iff the test has a non-fatal failure.
3692 bool TestResult::HasNonfatalFailure() const {
3693  return CountIf(test_part_results_, TestPartNonfatallyFailed) > 0;
3694 }
3695 
3696 // Gets the number of all test parts. This is the sum of the number
3697 // of successful test parts and the number of failed test parts.
3698 int TestResult::total_part_count() const {
3699  return static_cast<int>(test_part_results_.size());
3700 }
3701 
3702 // Returns the number of the test properties.
3703 int TestResult::test_property_count() const {
3704  return static_cast<int>(test_properties_.size());
3705 }
3706 
3707 // class Test
3708 
3709 // Creates a Test object.
3710 
3711 // The c'tor saves the states of all flags.
3712 Test::Test()
3713  : gtest_flag_saver_(new GTEST_FLAG_SAVER_) {
3714 }
3715 
3716 // The d'tor restores the states of all flags. The actual work is
3717 // done by the d'tor of the gtest_flag_saver_ field, and thus not
3718 // visible here.
3719 Test::~Test() {
3720 }
3721 
3722 // Sets up the test fixture.
3723 //
3724 // A sub-class may override this.
3725 void Test::SetUp() {
3726 }
3727 
3728 // Tears down the test fixture.
3729 //
3730 // A sub-class may override this.
3731 void Test::TearDown() {
3732 }
3733 
3734 // Allows user supplied key value pairs to be recorded for later output.
3735 void Test::RecordProperty(const std::string& key, const std::string& value) {
3736  UnitTest::GetInstance()->RecordProperty(key, value);
3737 }
3738 
3739 // Allows user supplied key value pairs to be recorded for later output.
3740 void Test::RecordProperty(const std::string& key, int value) {
3741  Message value_message;
3742  value_message << value;
3743  RecordProperty(key, value_message.GetString().c_str());
3744 }
3745 
3746 namespace internal {
3747 
3748 void ReportFailureInUnknownLocation(TestPartResult::Type result_type,
3749  const std::string& message) {
3750  // This function is a friend of UnitTest and as such has access to
3751  // AddTestPartResult.
3752  UnitTest::GetInstance()->AddTestPartResult(
3753  result_type,
3754  nullptr, // No info about the source file where the exception occurred.
3755  -1, // We have no info on which line caused the exception.
3756  message,
3757  ""); // No stack trace, either.
3758 }
3759 
3760 } // namespace internal
3761 
3762 // Google Test requires all tests in the same test suite to use the same test
3763 // fixture class. This function checks if the current test has the
3764 // same fixture class as the first test in the current test suite. If
3765 // yes, it returns true; otherwise it generates a Google Test failure and
3766 // returns false.
3767 bool Test::HasSameFixtureClass() {
3768  internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();
3769  const TestSuite* const test_suite = impl->current_test_suite();
3770 
3771  // Info about the first test in the current test suite.
3772  const TestInfo* const first_test_info = test_suite->test_info_list()[0];
3773  const internal::TypeId first_fixture_id = first_test_info->fixture_class_id_;
3774  const char* const first_test_name = first_test_info->name();
3775 
3776  // Info about the current test.
3777  const TestInfo* const this_test_info = impl->current_test_info();
3778  const internal::TypeId this_fixture_id = this_test_info->fixture_class_id_;
3779  const char* const this_test_name = this_test_info->name();
3780 
3781  if (this_fixture_id != first_fixture_id) {
3782  // Is the first test defined using TEST?
3783  const bool first_is_TEST = first_fixture_id == internal::GetTestTypeId();
3784  // Is this test defined using TEST?
3785  const bool this_is_TEST = this_fixture_id == internal::GetTestTypeId();
3786 
3787  if (first_is_TEST || this_is_TEST) {
3788  // Both TEST and TEST_F appear in same test suite, which is incorrect.
3789  // Tell the user how to fix this.
3790 
3791  // Gets the name of the TEST and the name of the TEST_F. Note
3792  // that first_is_TEST and this_is_TEST cannot both be true, as
3793  // the fixture IDs are different for the two tests.
3794  const char* const TEST_name =
3795  first_is_TEST ? first_test_name : this_test_name;
3796  const char* const TEST_F_name =
3797  first_is_TEST ? this_test_name : first_test_name;
3798 
3799  ADD_FAILURE()
3800  << "All tests in the same test suite must use the same test fixture\n"
3801  << "class, so mixing TEST_F and TEST in the same test suite is\n"
3802  << "illegal. In test suite " << this_test_info->test_suite_name()
3803  << ",\n"
3804  << "test " << TEST_F_name << " is defined using TEST_F but\n"
3805  << "test " << TEST_name << " is defined using TEST. You probably\n"
3806  << "want to change the TEST to TEST_F or move it to another test\n"
3807  << "case.";
3808  } else {
3809  // Two fixture classes with the same name appear in two different
3810  // namespaces, which is not allowed. Tell the user how to fix this.
3811  ADD_FAILURE()
3812  << "All tests in the same test suite must use the same test fixture\n"
3813  << "class. However, in test suite "
3814  << this_test_info->test_suite_name() << ",\n"
3815  << "you defined test " << first_test_name << " and test "
3816  << this_test_name << "\n"
3817  << "using two different test fixture classes. This can happen if\n"
3818  << "the two classes are from different namespaces or translation\n"
3819  << "units and have the same name. You should probably rename one\n"
3820  << "of the classes to put the tests into different test suites.";
3821  }
3822  return false;
3823  }
3824 
3825  return true;
3826 }
3827 
3828 #if GTEST_HAS_SEH
3829 
3830 // Adds an "exception thrown" fatal failure to the current test. This
3831 // function returns its result via an output parameter pointer because VC++
3832 // prohibits creation of objects with destructors on stack in functions
3833 // using __try (see error C2712).
3834 static std::string* FormatSehExceptionMessage(DWORD exception_code,
3835  const char* location) {
3836  Message message;
3837  message << "SEH exception with code 0x" << std::setbase(16) <<
3838  exception_code << std::setbase(10) << " thrown in " << location << ".";
3839 
3840  return new std::string(message.GetString());
3841 }
3842 
3843 #endif // GTEST_HAS_SEH
3844 
3845 namespace internal {
3846 
3847 #if GTEST_HAS_EXCEPTIONS
3848 
3849 // Adds an "exception thrown" fatal failure to the current test.
3850 static std::string FormatCxxExceptionMessage(const char* description,
3851  const char* location) {
3852  Message message;
3853  if (description != nullptr) {
3854  message << "C++ exception with description \"" << description << "\"";
3855  } else {
3856  message << "Unknown C++ exception";
3857  }
3858  message << " thrown in " << location << ".";
3859 
3860  return message.GetString();
3861 }
3862 
3863 static std::string PrintTestPartResultToString(
3864  const TestPartResult& test_part_result);
3865 
3866 GoogleTestFailureException::GoogleTestFailureException(
3867  const TestPartResult& failure)
3868  : ::std::runtime_error(PrintTestPartResultToString(failure).c_str()) {}
3869 
3870 #endif // GTEST_HAS_EXCEPTIONS
3871 
3872 // We put these helper functions in the internal namespace as IBM's xlC
3873 // compiler rejects the code if they were declared static.
3874 
3875 // Runs the given method and handles SEH exceptions it throws, when
3876 // SEH is supported; returns the 0-value for type Result in case of an
3877 // SEH exception. (Microsoft compilers cannot handle SEH and C++
3878 // exceptions in the same function. Therefore, we provide a separate
3879 // wrapper function for handling SEH exceptions.)
3880 template <class T, typename Result>
3881 Result HandleSehExceptionsInMethodIfSupported(
3882  T* object, Result (T::*method)(), const char* location) {
3883 #if GTEST_HAS_SEH
3884  __try {
3885  return (object->*method)();
3886  } __except (internal::UnitTestOptions::GTestShouldProcessSEH( // NOLINT
3887  GetExceptionCode())) {
3888  // We create the exception message on the heap because VC++ prohibits
3889  // creation of objects with destructors on stack in functions using __try
3890  // (see error C2712).
3891  std::string* exception_message = FormatSehExceptionMessage(
3892  GetExceptionCode(), location);
3893  internal::ReportFailureInUnknownLocation(TestPartResult::kFatalFailure,
3894  *exception_message);
3895  delete exception_message;
3896  return static_cast<Result>(0);
3897  }
3898 #else
3899  (void)location;
3900  return (object->*method)();
3901 #endif // GTEST_HAS_SEH
3902 }
3903 
3904 // Runs the given method and catches and reports C++ and/or SEH-style
3905 // exceptions, if they are supported; returns the 0-value for type
3906 // Result in case of an SEH exception.
3907 template <class T, typename Result>
3908 Result HandleExceptionsInMethodIfSupported(
3909  T* object, Result (T::*method)(), const char* location) {
3910  // NOTE: The user code can affect the way in which Google Test handles
3911  // exceptions by setting GTEST_FLAG(catch_exceptions), but only before
3912  // RUN_ALL_TESTS() starts. It is technically possible to check the flag
3913  // after the exception is caught and either report or re-throw the
3914  // exception based on the flag's value:
3915  //
3916  // try {
3917  // // Perform the test method.
3918  // } catch (...) {
3919  // if (GTEST_FLAG(catch_exceptions))
3920  // // Report the exception as failure.
3921  // else
3922  // throw; // Re-throws the original exception.
3923  // }
3924  //
3925  // However, the purpose of this flag is to allow the program to drop into
3926  // the debugger when the exception is thrown. On most platforms, once the
3927  // control enters the catch block, the exception origin information is
3928  // lost and the debugger will stop the program at the point of the
3929  // re-throw in this function -- instead of at the point of the original
3930  // throw statement in the code under test. For this reason, we perform
3931  // the check early, sacrificing the ability to affect Google Test's
3932  // exception handling in the method where the exception is thrown.
3933  if (internal::GetUnitTestImpl()->catch_exceptions()) {
3934 #if GTEST_HAS_EXCEPTIONS
3935  try {
3936  return HandleSehExceptionsInMethodIfSupported(object, method, location);
3937  } catch (const AssertionException&) { // NOLINT
3938  // This failure was reported already.
3939  } catch (const internal::GoogleTestFailureException&) { // NOLINT
3940  // This exception type can only be thrown by a failed Google
3941  // Test assertion with the intention of letting another testing
3942  // framework catch it. Therefore we just re-throw it.
3943  throw;
3944  } catch (const std::exception& e) { // NOLINT
3945  internal::ReportFailureInUnknownLocation(
3946  TestPartResult::kFatalFailure,
3947  FormatCxxExceptionMessage(e.what(), location));
3948  } catch (...) { // NOLINT
3949  internal::ReportFailureInUnknownLocation(
3950  TestPartResult::kFatalFailure,
3951  FormatCxxExceptionMessage(nullptr, location));
3952  }
3953  return static_cast<Result>(0);
3954 #else
3955  return HandleSehExceptionsInMethodIfSupported(object, method, location);
3956 #endif // GTEST_HAS_EXCEPTIONS
3957  } else {
3958  return (object->*method)();
3959  }
3960 }
3961 
3962 } // namespace internal
3963 
3964 // Runs the test and updates the test result.
3965 void Test::Run() {
3966  if (!HasSameFixtureClass()) return;
3967 
3968  internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();
3969  impl->os_stack_trace_getter()->UponLeavingGTest();
3970  internal::HandleExceptionsInMethodIfSupported(this, &Test::SetUp, "SetUp()");
3971  // We will run the test only if SetUp() was successful and didn't call
3972  // GTEST_SKIP().
3973  if (!HasFatalFailure() && !IsSkipped()) {
3974  impl->os_stack_trace_getter()->UponLeavingGTest();
3975  internal::HandleExceptionsInMethodIfSupported(
3976  this, &Test::TestBody, "the test body");
3977  }
3978 
3979  // However, we want to clean up as much as possible. Hence we will
3980  // always call TearDown(), even if SetUp() or the test body has
3981  // failed.
3982  impl->os_stack_trace_getter()->UponLeavingGTest();
3983  internal::HandleExceptionsInMethodIfSupported(
3984  this, &Test::TearDown, "TearDown()");
3985 }
3986 
3987 // Returns true iff the current test has a fatal failure.
3988 bool Test::HasFatalFailure() {
3989  return internal::GetUnitTestImpl()->current_test_result()->HasFatalFailure();
3990 }
3991 
3992 // Returns true iff the current test has a non-fatal failure.
3993 bool Test::HasNonfatalFailure() {
3994  return internal::GetUnitTestImpl()->current_test_result()->
3995  HasNonfatalFailure();
3996 }
3997 
3998 // Returns true iff the current test was skipped.
3999 bool Test::IsSkipped() {
4000  return internal::GetUnitTestImpl()->current_test_result()->Skipped();
4001 }
4002 
4003 // class TestInfo
4004 
4005 // Constructs a TestInfo object. It assumes ownership of the test factory
4006 // object.
4007 TestInfo::TestInfo(const std::string& a_test_suite_name,
4008  const std::string& a_name, const char* a_type_param,
4009  const char* a_value_param,
4010  internal::CodeLocation a_code_location,
4011  internal::TypeId fixture_class_id,
4012  internal::TestFactoryBase* factory)
4013  : test_suite_name_(a_test_suite_name),
4014  name_(a_name),
4015  type_param_(a_type_param ? new std::string(a_type_param) : nullptr),
4016  value_param_(a_value_param ? new std::string(a_value_param) : nullptr),
4017  location_(a_code_location),
4018  fixture_class_id_(fixture_class_id),
4019  should_run_(false),
4020  is_disabled_(false),
4021  matches_filter_(false),
4022  factory_(factory),
4023  result_() {}
4024 
4025 // Destructs a TestInfo object.
4026 TestInfo::~TestInfo() { delete factory_; }
4027 
4028 namespace internal {
4029 
4030 // Creates a new TestInfo object and registers it with Google Test;
4031 // returns the created object.
4032 //
4033 // Arguments:
4034 //
4035 // test_suite_name: name of the test suite
4036 // name: name of the test
4037 // type_param: the name of the test's type parameter, or NULL if
4038 // this is not a typed or a type-parameterized test.
4039 // value_param: text representation of the test's value parameter,
4040 // or NULL if this is not a value-parameterized test.
4041 // code_location: code location where the test is defined
4042 // fixture_class_id: ID of the test fixture class
4043 // set_up_tc: pointer to the function that sets up the test suite
4044 // tear_down_tc: pointer to the function that tears down the test suite
4045 // factory: pointer to the factory that creates a test object.
4046 // The newly created TestInfo instance will assume
4047 // ownership of the factory object.
4048 TestInfo* MakeAndRegisterTestInfo(
4049  const char* test_suite_name, const char* name, const char* type_param,
4050  const char* value_param, CodeLocation code_location,
4051  TypeId fixture_class_id, SetUpTestSuiteFunc set_up_tc,
4052  TearDownTestSuiteFunc tear_down_tc, TestFactoryBase* factory) {
4053  TestInfo* const test_info =
4054  new TestInfo(test_suite_name, name, type_param, value_param,
4055  code_location, fixture_class_id, factory);
4056  GetUnitTestImpl()->AddTestInfo(set_up_tc, tear_down_tc, test_info);
4057  return test_info;
4058 }
4059 
4060 void ReportInvalidTestSuiteType(const char* test_suite_name,
4061  CodeLocation code_location) {
4062  Message errors;
4063  errors
4064  << "Attempted redefinition of test suite " << test_suite_name << ".\n"
4065  << "All tests in the same test suite must use the same test fixture\n"
4066  << "class. However, in test suite " << test_suite_name << ", you tried\n"
4067  << "to define a test using a fixture class different from the one\n"
4068  << "used earlier. This can happen if the two fixture classes are\n"
4069  << "from different namespaces and have the same name. You should\n"
4070  << "probably rename one of the classes to put the tests into different\n"
4071  << "test suites.";
4072 
4073  GTEST_LOG_(ERROR) << FormatFileLocation(code_location.file.c_str(),
4074  code_location.line)
4075  << " " << errors.GetString();
4076 }
4077 } // namespace internal
4078 
4079 namespace {
4080 
4081 // A predicate that checks the test name of a TestInfo against a known
4082 // value.
4083 //
4084 // This is used for implementation of the TestSuite class only. We put
4085 // it in the anonymous namespace to prevent polluting the outer
4086 // namespace.
4087 //
4088 // TestNameIs is copyable.
4089 class TestNameIs {
4090  public:
4091  // Constructor.
4092  //
4093  // TestNameIs has NO default constructor.
4094  explicit TestNameIs(const char* name)
4095  : name_(name) {}
4096 
4097  // Returns true iff the test name of test_info matches name_.
4098  bool operator()(const TestInfo * test_info) const {
4099  return test_info && test_info->name() == name_;
4100  }
4101 
4102  private:
4103  std::string name_;
4104 };
4105 
4106 } // namespace
4107 
4108 namespace internal {
4109 
4110 // This method expands all parameterized tests registered with macros TEST_P
4111 // and INSTANTIATE_TEST_SUITE_P into regular tests and registers those.
4112 // This will be done just once during the program runtime.
4113 void UnitTestImpl::RegisterParameterizedTests() {
4114  if (!parameterized_tests_registered_) {
4115  parameterized_test_registry_.RegisterTests();
4116  parameterized_tests_registered_ = true;
4117  }
4118 }
4119 
4120 } // namespace internal
4121 
4122 // Creates the test object, runs it, records its result, and then
4123 // deletes it.
4124 void TestInfo::Run() {
4125  if (!should_run_) return;
4126 
4127  // Tells UnitTest where to store test result.
4128  internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();
4129  impl->set_current_test_info(this);
4130 
4131  TestEventListener* repeater = UnitTest::GetInstance()->listeners().repeater();
4132 
4133  // Notifies the unit test event listeners that a test is about to start.
4134  repeater->OnTestStart(*this);
4135 
4136  const TimeInMillis start = internal::GetTimeInMillis();
4137 
4138  impl->os_stack_trace_getter()->UponLeavingGTest();
4139 
4140  // Creates the test object.
4141  Test* const test = internal::HandleExceptionsInMethodIfSupported(
4142  factory_, &internal::TestFactoryBase::CreateTest,
4143  "the test fixture's constructor");
4144 
4145  // Runs the test if the constructor didn't generate a fatal failure or invoke
4146  // GTEST_SKIP().
4147  // Note that the object will not be null
4148  if (!Test::HasFatalFailure() && !Test::IsSkipped()) {
4149  // This doesn't throw as all user code that can throw are wrapped into
4150  // exception handling code.
4151  test->Run();
4152  }
4153 
4154  // Deletes the test object.
4155  impl->os_stack_trace_getter()->UponLeavingGTest();
4156  internal::HandleExceptionsInMethodIfSupported(
4157  test, &Test::DeleteSelf_, "the test fixture's destructor");
4158 
4159  result_.set_elapsed_time(internal::GetTimeInMillis() - start);
4160 
4161  // Notifies the unit test event listener that a test has just finished.
4162  repeater->OnTestEnd(*this);
4163 
4164  // Tells UnitTest to stop associating assertion results to this
4165  // test.
4166  impl->set_current_test_info(nullptr);
4167 }
4168 
4169 // class TestSuite
4170 
4171 // Gets the number of successful tests in this test suite.
4172 int TestSuite::successful_test_count() const {
4173  return CountIf(test_info_list_, TestPassed);
4174 }
4175 
4176 // Gets the number of successful tests in this test suite.
4177 int TestSuite::skipped_test_count() const {
4178  return CountIf(test_info_list_, TestSkipped);
4179 }
4180 
4181 // Gets the number of failed tests in this test suite.
4182 int TestSuite::failed_test_count() const {
4183  return CountIf(test_info_list_, TestFailed);
4184 }
4185 
4186 // Gets the number of disabled tests that will be reported in the XML report.
4187 int TestSuite::reportable_disabled_test_count() const {
4188  return CountIf(test_info_list_, TestReportableDisabled);
4189 }
4190 
4191 // Gets the number of disabled tests in this test suite.
4192 int TestSuite::disabled_test_count() const {
4193  return CountIf(test_info_list_, TestDisabled);
4194 }
4195 
4196 // Gets the number of tests to be printed in the XML report.
4197 int TestSuite::reportable_test_count() const {
4198  return CountIf(test_info_list_, TestReportable);
4199 }
4200 
4201 // Get the number of tests in this test suite that should run.
4202 int TestSuite::test_to_run_count() const {
4203  return CountIf(test_info_list_, ShouldRunTest);
4204 }
4205 
4206 // Gets the number of all tests.
4207 int TestSuite::total_test_count() const {
4208  return static_cast<int>(test_info_list_.size());
4209 }
4210 
4211 // Creates a TestSuite with the given name.
4212 //
4213 // Arguments:
4214 //
4215 // name: name of the test suite
4216 // a_type_param: the name of the test suite's type parameter, or NULL if
4217 // this is not a typed or a type-parameterized test suite.
4218 // set_up_tc: pointer to the function that sets up the test suite
4219 // tear_down_tc: pointer to the function that tears down the test suite
4220 TestSuite::TestSuite(const char* a_name, const char* a_type_param,
4221  internal::SetUpTestSuiteFunc set_up_tc,
4222  internal::TearDownTestSuiteFunc tear_down_tc)
4223  : name_(a_name),
4224  type_param_(a_type_param ? new std::string(a_type_param) : nullptr),
4225  set_up_tc_(set_up_tc),
4226  tear_down_tc_(tear_down_tc),
4227  should_run_(false),
4228  elapsed_time_(0) {}
4229 
4230 // Destructor of TestSuite.
4231 TestSuite::~TestSuite() {
4232  // Deletes every Test in the collection.
4233  ForEach(test_info_list_, internal::Delete<TestInfo>);
4234 }
4235 
4236 // Returns the i-th test among all the tests. i can range from 0 to
4237 // total_test_count() - 1. If i is not in that range, returns NULL.
4238 const TestInfo* TestSuite::GetTestInfo(int i) const {
4239  const int index = GetElementOr(test_indices_, i, -1);
4240  return index < 0 ? nullptr : test_info_list_[index];
4241 }
4242 
4243 // Returns the i-th test among all the tests. i can range from 0 to
4244 // total_test_count() - 1. If i is not in that range, returns NULL.
4245 TestInfo* TestSuite::GetMutableTestInfo(int i) {
4246  const int index = GetElementOr(test_indices_, i, -1);
4247  return index < 0 ? nullptr : test_info_list_[index];
4248 }
4249 
4250 // Adds a test to this test suite. Will delete the test upon
4251 // destruction of the TestSuite object.
4252 void TestSuite::AddTestInfo(TestInfo* test_info) {
4253  test_info_list_.push_back(test_info);
4254  test_indices_.push_back(static_cast<int>(test_indices_.size()));
4255 }
4256 
4257 // Runs every test in this TestSuite.
4258 void TestSuite::Run() {
4259  if (!should_run_) return;
4260 
4261  internal::UnitTestImpl* const impl = internal::GetUnitTestImpl();
4262  impl->set_current_test_suite(this);
4263 
4264  TestEventListener* repeater = UnitTest::GetInstance()->listeners().repeater();
4265 
4266  // Call both legacy and the new API
4267  repeater->OnTestSuiteStart(*this);
4268 // Legacy API is deprecated but still available
4269 #ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI
4270  repeater->OnTestCaseStart(*this);
4271 #endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI
4272 
4273  impl->os_stack_trace_getter()->UponLeavingGTest();
4274  internal::HandleExceptionsInMethodIfSupported(
4275  this, &TestSuite::RunSetUpTestSuite, "SetUpTestSuite()");
4276 
4277  const internal::TimeInMillis start = internal::GetTimeInMillis();
4278  for (int i = 0; i < total_test_count(); i++) {
4279  GetMutableTestInfo(i)->Run();
4280  }
4281  elapsed_time_ = internal::GetTimeInMillis() - start;
4282 
4283  impl->os_stack_trace_getter()->UponLeavingGTest();
4284  internal::HandleExceptionsInMethodIfSupported(
4285  this, &TestSuite::RunTearDownTestSuite, "TearDownTestSuite()");
4286 
4287  // Call both legacy and the new API
4288  repeater->OnTestSuiteEnd(*this);
4289 // Legacy API is deprecated but still available
4290 #ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI
4291  repeater->OnTestCaseEnd(*this);
4292 #endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI
4293 
4294  impl->set_current_test_suite(nullptr);
4295 }
4296 
4297 // Clears the results of all tests in this test suite.
4298 void TestSuite::ClearResult() {
4299  ad_hoc_test_result_.Clear();
4300  ForEach(test_info_list_, TestInfo::ClearTestResult);
4301 }
4302 
4303 // Shuffles the tests in this test suite.
4304 void TestSuite::ShuffleTests(internal::Random* random) {
4305  Shuffle(random, &test_indices_);
4306 }
4307 
4308 // Restores the test order to before the first shuffle.
4309 void TestSuite::UnshuffleTests() {
4310  for (size_t i = 0; i < test_indices_.size(); i++) {
4311  test_indices_[i] = static_cast<int>(i);
4312  }
4313 }
4314 
4315 // Formats a countable noun. Depending on its quantity, either the
4316 // singular form or the plural form is used. e.g.
4317 //
4318 // FormatCountableNoun(1, "formula", "formuli") returns "1 formula".
4319 // FormatCountableNoun(5, "book", "books") returns "5 books".
4320 static std::string FormatCountableNoun(int count,
4321  const char * singular_form,
4322  const char * plural_form) {
4323  return internal::StreamableToString(count) + " " +
4324  (count == 1 ? singular_form : plural_form);
4325 }
4326 
4327 // Formats the count of tests.
4328 static std::string FormatTestCount(int test_count) {
4329  return FormatCountableNoun(test_count, "test", "tests");
4330 }
4331 
4332 // Formats the count of test suites.
4333 static std::string FormatTestSuiteCount(int test_suite_count) {
4334  return FormatCountableNoun(test_suite_count, "test suite", "test suites");
4335 }
4336 
4337 // Converts a TestPartResult::Type enum to human-friendly string
4338 // representation. Both kNonFatalFailure and kFatalFailure are translated
4339 // to "Failure", as the user usually doesn't care about the difference
4340 // between the two when viewing the test result.
4341 static const char * TestPartResultTypeToString(TestPartResult::Type type) {
4342  switch (type) {
4343  case TestPartResult::kSkip:
4344  return "Skipped";
4345  case TestPartResult::kSuccess:
4346  return "Success";
4347 
4348  case TestPartResult::kNonFatalFailure:
4349  case TestPartResult::kFatalFailure:
4350 #ifdef _MSC_VER
4351  return "error: ";
4352 #else
4353  return "Failure\n";
4354 #endif
4355  default:
4356  return "Unknown result type";
4357  }
4358 }
4359 
4360 namespace internal {
4361 
4362 // Prints a TestPartResult to an std::string.
4363 static std::string PrintTestPartResultToString(
4364  const TestPartResult& test_part_result) {
4365  return (Message()
4366  << internal::FormatFileLocation(test_part_result.file_name(),
4367  test_part_result.line_number())
4368  << " " << TestPartResultTypeToString(test_part_result.type())
4369  << test_part_result.message()).GetString();
4370 }
4371 
4372 // Prints a TestPartResult.
4373 static void PrintTestPartResult(const TestPartResult& test_part_result) {
4374  const std::string& result =
4375  PrintTestPartResultToString(test_part_result);
4376  printf("%s\n", result.c_str());
4377  fflush(stdout);
4378  // If the test program runs in Visual Studio or a debugger, the
4379  // following statements add the test part result message to the Output
4380  // window such that the user can double-click on it to jump to the
4381  // corresponding source code location; otherwise they do nothing.
4382 #if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE
4383  // We don't call OutputDebugString*() on Windows Mobile, as printing
4384  // to stdout is done by OutputDebugString() there already - we don't
4385  // want the same message printed twice.
4386  ::OutputDebugStringA(result.c_str());
4387  ::OutputDebugStringA("\n");
4388 #endif
4389 }
4390 
4391 // class PrettyUnitTestResultPrinter
4392 #if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE && \
4393  !GTEST_OS_WINDOWS_PHONE && !GTEST_OS_WINDOWS_RT && !GTEST_OS_WINDOWS_MINGW
4394 
4395 // Returns the character attribute for the given color.
4396 static WORD GetColorAttribute(GTestColor color) {
4397  switch (color) {
4398  case COLOR_RED: return FOREGROUND_RED;
4399  case COLOR_GREEN: return FOREGROUND_GREEN;
4400  case COLOR_YELLOW: return FOREGROUND_RED | FOREGROUND_GREEN;
4401  default: return 0;
4402  }
4403 }
4404 
4405 static int GetBitOffset(WORD color_mask) {
4406  if (color_mask == 0) return 0;
4407 
4408  int bitOffset = 0;
4409  while ((color_mask & 1) == 0) {
4410  color_mask >>= 1;
4411  ++bitOffset;
4412  }
4413  return bitOffset;
4414 }
4415 
4416 static WORD GetNewColor(GTestColor color, WORD old_color_attrs) {
4417  // Let's reuse the BG
4418  static const WORD background_mask = BACKGROUND_BLUE | BACKGROUND_GREEN |
4419  BACKGROUND_RED | BACKGROUND_INTENSITY;
4420  static const WORD foreground_mask = FOREGROUND_BLUE | FOREGROUND_GREEN |
4421  FOREGROUND_RED | FOREGROUND_INTENSITY;
4422  const WORD existing_bg = old_color_attrs & background_mask;
4423 
4424  WORD new_color =
4425  GetColorAttribute(color) | existing_bg | FOREGROUND_INTENSITY;
4426  static const int bg_bitOffset = GetBitOffset(background_mask);
4427  static const int fg_bitOffset = GetBitOffset(foreground_mask);
4428 
4429  if (((new_color & background_mask) >> bg_bitOffset) ==
4430  ((new_color & foreground_mask) >> fg_bitOffset)) {
4431  new_color ^= FOREGROUND_INTENSITY; // invert intensity
4432  }
4433  return new_color;
4434 }
4435 
4436 #else
4437 
4438 // Returns the ANSI color code for the given color. COLOR_DEFAULT is
4439 // an invalid input.
4440 static const char* GetAnsiColorCode(GTestColor color) {
4441  switch (color) {
4442  case COLOR_RED: return "1";
4443  case COLOR_GREEN: return "2";
4444  case COLOR_YELLOW: return "3";
4445  default:
4446  return nullptr;
4447  };
4448 }
4449 
4450 #endif // GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE
4451 
4452 // Returns true iff Google Test should use colors in the output.
4453 bool ShouldUseColor(bool stdout_is_tty) {
4454  const char* const gtest_color = GTEST_FLAG(color).c_str();
4455 
4456  if (String::CaseInsensitiveCStringEquals(gtest_color, "auto")) {
4457 #if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MINGW
4458  // On Windows the TERM variable is usually not set, but the
4459  // console there does support colors.
4460  return stdout_is_tty;
4461 #else
4462  // On non-Windows platforms, we rely on the TERM variable.
4463  const char* const term = posix::GetEnv("TERM");
4464  const bool term_supports_color =
4465  String::CStringEquals(term, "xterm") ||
4466  String::CStringEquals(term, "xterm-color") ||
4467  String::CStringEquals(term, "xterm-256color") ||
4468  String::CStringEquals(term, "screen") ||
4469  String::CStringEquals(term, "screen-256color") ||
4470  String::CStringEquals(term, "tmux") ||
4471  String::CStringEquals(term, "tmux-256color") ||
4472  String::CStringEquals(term, "rxvt-unicode") ||
4473  String::CStringEquals(term, "rxvt-unicode-256color") ||
4474  String::CStringEquals(term, "linux") ||
4475  String::CStringEquals(term, "cygwin");
4476  return stdout_is_tty && term_supports_color;
4477 #endif // GTEST_OS_WINDOWS
4478  }
4479 
4480  return String::CaseInsensitiveCStringEquals(gtest_color, "yes") ||
4481  String::CaseInsensitiveCStringEquals(gtest_color, "true") ||
4482  String::CaseInsensitiveCStringEquals(gtest_color, "t") ||
4483  String::CStringEquals(gtest_color, "1");
4484  // We take "yes", "true", "t", and "1" as meaning "yes". If the
4485  // value is neither one of these nor "auto", we treat it as "no" to
4486  // be conservative.
4487 }
4488 
4489 // Helpers for printing colored strings to stdout. Note that on Windows, we
4490 // cannot simply emit special characters and have the terminal change colors.
4491 // This routine must actually emit the characters rather than return a string
4492 // that would be colored when printed, as can be done on Linux.
4493 void ColoredPrintf(GTestColor color, const char* fmt, ...) {
4494  va_list args;
4495  va_start(args, fmt);
4496 
4497 #if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_ZOS || GTEST_OS_IOS || \
4498  GTEST_OS_WINDOWS_PHONE || GTEST_OS_WINDOWS_RT
4499  const bool use_color = AlwaysFalse();
4500 #else
4501  static const bool in_color_mode =
4502  ShouldUseColor(posix::IsATTY(posix::FileNo(stdout)) != 0);
4503  const bool use_color = in_color_mode && (color != COLOR_DEFAULT);
4504 #endif // GTEST_OS_WINDOWS_MOBILE || GTEST_OS_ZOS
4505 
4506  if (!use_color) {
4507  vprintf(fmt, args);
4508  va_end(args);
4509  return;
4510  }
4511 
4512 #if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE && \
4513  !GTEST_OS_WINDOWS_PHONE && !GTEST_OS_WINDOWS_RT && !GTEST_OS_WINDOWS_MINGW
4514  const HANDLE stdout_handle = GetStdHandle(STD_OUTPUT_HANDLE);
4515 
4516  // Gets the current text color.
4517  CONSOLE_SCREEN_BUFFER_INFO buffer_info;
4518  GetConsoleScreenBufferInfo(stdout_handle, &buffer_info);
4519  const WORD old_color_attrs = buffer_info.wAttributes;
4520  const WORD new_color = GetNewColor(color, old_color_attrs);
4521 
4522  // We need to flush the stream buffers into the console before each
4523  // SetConsoleTextAttribute call lest it affect the text that is already
4524  // printed but has not yet reached the console.
4525  fflush(stdout);
4526  SetConsoleTextAttribute(stdout_handle, new_color);
4527 
4528  vprintf(fmt, args);
4529 
4530  fflush(stdout);
4531  // Restores the text color.
4532  SetConsoleTextAttribute(stdout_handle, old_color_attrs);
4533 #else
4534  printf("\033[0;3%sm", GetAnsiColorCode(color));
4535  vprintf(fmt, args);
4536  printf("\033[m"); // Resets the terminal to default.
4537 #endif // GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_MOBILE
4538  va_end(args);
4539 }
4540 
4541 // Text printed in Google Test's text output and --gtest_list_tests
4542 // output to label the type parameter and value parameter for a test.
4543 static const char kTypeParamLabel[] = "TypeParam";
4544 static const char kValueParamLabel[] = "GetParam()";
4545 
4546 static void PrintFullTestCommentIfPresent(const TestInfo& test_info) {
4547  const char* const type_param = test_info.type_param();
4548  const char* const value_param = test_info.value_param();
4549 
4550  if (type_param != nullptr || value_param != nullptr) {
4551  printf(", where ");
4552  if (type_param != nullptr) {
4553  printf("%s = %s", kTypeParamLabel, type_param);
4554  if (value_param != nullptr) printf(" and ");
4555  }
4556  if (value_param != nullptr) {
4557  printf("%s = %s", kValueParamLabel, value_param);
4558  }
4559  }
4560 }
4561 
4562 // This class implements the TestEventListener interface.
4563 //
4564 // Class PrettyUnitTestResultPrinter is copyable.
4565 class PrettyUnitTestResultPrinter : public TestEventListener {
4566  public:
4567  PrettyUnitTestResultPrinter() {}
4568  static void PrintTestName(const char* test_suite, const char* test) {
4569  printf("%s.%s", test_suite, test);
4570  }
4571 
4572  // The following methods override what's in the TestEventListener class.
4573  void OnTestProgramStart(const UnitTest& /*unit_test*/) override {}
4574  void OnTestIterationStart(const UnitTest& unit_test, int iteration) override;
4575  void OnEnvironmentsSetUpStart(const UnitTest& unit_test) override;
4576  void OnEnvironmentsSetUpEnd(const UnitTest& /*unit_test*/) override {}
4577  void OnTestCaseStart(const TestSuite& test_suite) override;
4578  void OnTestStart(const TestInfo& test_info) override;
4579  void OnTestPartResult(const TestPartResult& result) override;
4580  void OnTestEnd(const TestInfo& test_info) override;
4581  void OnTestCaseEnd(const TestSuite& test_suite) override;
4582  void OnEnvironmentsTearDownStart(const UnitTest& unit_test) override;
4583  void OnEnvironmentsTearDownEnd(const UnitTest& /*unit_test*/) override {}
4584  void OnTestIterationEnd(const UnitTest& unit_test, int iteration) override;
4585  void OnTestProgramEnd(const UnitTest& /*unit_test*/) override {}
4586 
4587  private:
4588  static void PrintFailedTests(const UnitTest& unit_test);
4589  static void PrintSkippedTests(const UnitTest& unit_test);
4590 };
4591 
4592  // Fired before each iteration of tests starts.
4593 void PrettyUnitTestResultPrinter::OnTestIterationStart(
4594  const UnitTest& unit_test, int iteration) {
4595  if (GTEST_FLAG(repeat) != 1)
4596  printf("\nRepeating all tests (iteration %d) . . .\n\n", iteration + 1);
4597 
4598  const char* const filter = GTEST_FLAG(filter).c_str();
4599 
4600  // Prints the filter if it's not *. This reminds the user that some
4601  // tests may be skipped.
4602  if (!String::CStringEquals(filter, kUniversalFilter)) {
4603  ColoredPrintf(COLOR_YELLOW,
4604  "Note: %s filter = %s\n", GTEST_NAME_, filter);
4605  }
4606 
4607  if (internal::ShouldShard(kTestTotalShards, kTestShardIndex, false)) {
4608  const Int32 shard_index = Int32FromEnvOrDie(kTestShardIndex, -1);
4609  ColoredPrintf(COLOR_YELLOW,
4610  "Note: This is test shard %d of %s.\n",
4611  static_cast<int>(shard_index) + 1,
4612  internal::posix::GetEnv(kTestTotalShards));
4613  }
4614 
4615  if (GTEST_FLAG(shuffle)) {
4616  ColoredPrintf(COLOR_YELLOW,
4617  "Note: Randomizing tests' orders with a seed of %d .\n",
4618  unit_test.random_seed());
4619  }
4620 
4621  ColoredPrintf(COLOR_GREEN, "[==========] ");
4622  printf("Running %s from %s.\n",
4623  FormatTestCount(unit_test.test_to_run_count()).c_str(),
4624  FormatTestSuiteCount(unit_test.test_suite_to_run_count()).c_str());
4625  fflush(stdout);
4626 }
4627 
4628 void PrettyUnitTestResultPrinter::OnEnvironmentsSetUpStart(
4629  const UnitTest& /*unit_test*/) {
4630  ColoredPrintf(COLOR_GREEN, "[----------] ");
4631  printf("Global test environment set-up.\n");
4632  fflush(stdout);
4633 }
4634 
4635 void PrettyUnitTestResultPrinter::OnTestCaseStart(const TestSuite& test_suite) {
4636  const std::string counts =
4637  FormatCountableNoun(test_suite.test_to_run_count(), "test", "tests");
4638  ColoredPrintf(COLOR_GREEN, "[----------] ");
4639  printf("%s from %s", counts.c_str(), test_suite.name());
4640  if (test_suite.type_param() == nullptr) {
4641  printf("\n");
4642  } else {
4643  printf(", where %s = %s\n", kTypeParamLabel, test_suite.type_param());
4644  }
4645  fflush(stdout);
4646 }
4647 
4648 void PrettyUnitTestResultPrinter::OnTestStart(const TestInfo& test_info) {
4649  ColoredPrintf(COLOR_GREEN, "[ RUN ] ");
4650  PrintTestName(test_info.test_suite_name(), test_info.name());
4651  printf("\n");
4652  fflush(stdout);
4653 }
4654 
4655 // Called after an assertion failure.
4656 void PrettyUnitTestResultPrinter::OnTestPartResult(
4657  const TestPartResult& result) {
4658  switch (result.type()) {
4659  // If the test part succeeded, or was skipped,
4660  // we don't need to do anything.
4661  case TestPartResult::kSkip:
4662  case TestPartResult::kSuccess:
4663  return;
4664  default:
4665  // Print failure message from the assertion
4666  // (e.g. expected this and got that).
4667  PrintTestPartResult(result);
4668  fflush(stdout);
4669  }
4670 }
4671 
4672 void PrettyUnitTestResultPrinter::OnTestEnd(const TestInfo& test_info) {
4673  if (test_info.result()->Passed()) {
4674  ColoredPrintf(COLOR_GREEN, "[ OK ] ");
4675  } else if (test_info.result()->Skipped()) {
4676  ColoredPrintf(COLOR_GREEN, "[ SKIPPED ] ");
4677  } else {
4678  ColoredPrintf(COLOR_RED, "[ FAILED ] ");
4679  }
4680  PrintTestName(test_info.test_suite_name(), test_info.name());
4681  if (test_info.result()->Failed())
4682  PrintFullTestCommentIfPresent(test_info);
4683 
4684  if (GTEST_FLAG(print_time)) {
4685  printf(" (%s ms)\n", internal::StreamableToString(
4686  test_info.result()->elapsed_time()).c_str());
4687  } else {
4688  printf("\n");
4689  }
4690  fflush(stdout);
4691 }
4692 
4693 void PrettyUnitTestResultPrinter::OnTestCaseEnd(const TestSuite& test_suite) {
4694  if (!GTEST_FLAG(print_time)) return;
4695 
4696  const std::string counts =
4697  FormatCountableNoun(test_suite.test_to_run_count(), "test", "tests");
4698  ColoredPrintf(COLOR_GREEN, "[----------] ");
4699  printf("%s from %s (%s ms total)\n\n", counts.c_str(), test_suite.name(),
4700  internal::StreamableToString(test_suite.elapsed_time()).c_str());
4701  fflush(stdout);
4702 }
4703 
4704 void PrettyUnitTestResultPrinter::OnEnvironmentsTearDownStart(
4705  const UnitTest& /*unit_test*/) {
4706  ColoredPrintf(COLOR_GREEN, "[----------] ");
4707  printf("Global test environment tear-down\n");
4708  fflush(stdout);
4709 }
4710 
4711 // Internal helper for printing the list of failed tests.
4712 void PrettyUnitTestResultPrinter::PrintFailedTests(const UnitTest& unit_test) {
4713  const int failed_test_count = unit_test.failed_test_count();
4714  if (failed_test_count == 0) {
4715  return;
4716  }
4717 
4718  for (int i = 0; i < unit_test.total_test_suite_count(); ++i) {
4719  const TestSuite& test_suite = *unit_test.GetTestSuite(i);
4720  if (!test_suite.should_run() || (test_suite.failed_test_count() == 0)) {
4721  continue;
4722  }
4723  for (int j = 0; j < test_suite.total_test_count(); ++j) {
4724  const TestInfo& test_info = *test_suite.GetTestInfo(j);
4725  if (!test_info.should_run() || !test_info.result()->Failed()) {
4726  continue;
4727  }
4728  ColoredPrintf(COLOR_RED, "[ FAILED ] ");
4729  printf("%s.%s", test_suite.name(), test_info.name());
4730  PrintFullTestCommentIfPresent(test_info);
4731  printf("\n");
4732  }
4733  }
4734 }
4735 
4736 // Internal helper for printing the list of skipped tests.
4737 void PrettyUnitTestResultPrinter::PrintSkippedTests(const UnitTest& unit_test) {
4738  const int skipped_test_count = unit_test.skipped_test_count();
4739  if (skipped_test_count == 0) {
4740  return;
4741  }
4742 
4743  for (int i = 0; i < unit_test.total_test_suite_count(); ++i) {
4744  const TestSuite& test_suite = *unit_test.GetTestSuite(i);
4745  if (!test_suite.should_run() || (test_suite.skipped_test_count() == 0)) {
4746  continue;
4747  }
4748  for (int j = 0; j < test_suite.total_test_count(); ++j) {
4749  const TestInfo& test_info = *test_suite.GetTestInfo(j);
4750  if (!test_info.should_run() || !test_info.result()->Skipped()) {
4751  continue;
4752  }
4753  ColoredPrintf(COLOR_GREEN, "[ SKIPPED ] ");
4754  printf("%s.%s", test_suite.name(), test_info.name());
4755  printf("\n");
4756  }
4757  }
4758 }
4759 
4760 void PrettyUnitTestResultPrinter::OnTestIterationEnd(const UnitTest& unit_test,
4761  int /*iteration*/) {
4762  ColoredPrintf(COLOR_GREEN, "[==========] ");
4763  printf("%s from %s ran.",
4764  FormatTestCount(unit_test.test_to_run_count()).c_str(),
4765  FormatTestSuiteCount(unit_test.test_suite_to_run_count()).c_str());
4766  if (GTEST_FLAG(print_time)) {
4767  printf(" (%s ms total)",
4768  internal::StreamableToString(unit_test.elapsed_time()).c_str());
4769  }
4770  printf("\n");
4771  ColoredPrintf(COLOR_GREEN, "[ PASSED ] ");
4772  printf("%s.\n", FormatTestCount(unit_test.successful_test_count()).c_str());
4773 
4774  const int skipped_test_count = unit_test.skipped_test_count();
4775  if (skipped_test_count > 0) {
4776  ColoredPrintf(COLOR_GREEN, "[ SKIPPED ] ");
4777  printf("%s, listed below:\n", FormatTestCount(skipped_test_count).c_str());
4778  PrintSkippedTests(unit_test);
4779  }
4780 
4781  int num_failures = unit_test.failed_test_count();
4782  if (!unit_test.Passed()) {
4783  const int failed_test_count = unit_test.failed_test_count();
4784  ColoredPrintf(COLOR_RED, "[ FAILED ] ");
4785  printf("%s, listed below:\n", FormatTestCount(failed_test_count).c_str());
4786  PrintFailedTests(unit_test);
4787  printf("\n%2d FAILED %s\n", num_failures,
4788  num_failures == 1 ? "TEST" : "TESTS");
4789  }
4790 
4791  int num_disabled = unit_test.reportable_disabled_test_count();
4792  if (num_disabled && !GTEST_FLAG(also_run_disabled_tests)) {
4793  if (!num_failures) {
4794  printf("\n"); // Add a spacer if no FAILURE banner is displayed.
4795  }
4796  ColoredPrintf(COLOR_YELLOW,
4797  " YOU HAVE %d DISABLED %s\n\n",
4798  num_disabled,
4799  num_disabled == 1 ? "TEST" : "TESTS");
4800  }
4801  // Ensure that Google Test output is printed before, e.g., heapchecker output.
4802  fflush(stdout);
4803 }
4804 
4805 // End PrettyUnitTestResultPrinter
4806 
4807 // class TestEventRepeater
4808 //
4809 // This class forwards events to other event listeners.
4810 class TestEventRepeater : public TestEventListener {
4811  public:
4812  TestEventRepeater() : forwarding_enabled_(true) {}
4813  ~TestEventRepeater() override;
4814  void Append(TestEventListener *listener);
4815  TestEventListener* Release(TestEventListener* listener);
4816 
4817  // Controls whether events will be forwarded to listeners_. Set to false
4818  // in death test child processes.
4819  bool forwarding_enabled() const { return forwarding_enabled_; }
4820  void set_forwarding_enabled(bool enable) { forwarding_enabled_ = enable; }
4821 
4822  void OnTestProgramStart(const UnitTest& unit_test) override;
4823  void OnTestIterationStart(const UnitTest& unit_test, int iteration) override;
4824  void OnEnvironmentsSetUpStart(const UnitTest& unit_test) override;
4825  void OnEnvironmentsSetUpEnd(const UnitTest& unit_test) override;
4826 // Legacy API is deprecated but still available
4827 #ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI
4828  void OnTestCaseStart(const TestSuite& parameter) override;
4829 #endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI
4830  void OnTestSuiteStart(const TestSuite& parameter) override;
4831  void OnTestStart(const TestInfo& test_info) override;
4832  void OnTestPartResult(const TestPartResult& result) override;
4833  void OnTestEnd(const TestInfo& test_info) override;
4834 // Legacy API is deprecated but still available
4835 #ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI
4836  void OnTestCaseEnd(const TestSuite& parameter) override;
4837 #endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI
4838  void OnTestSuiteEnd(const TestSuite& parameter) override;
4839  void OnEnvironmentsTearDownStart(const UnitTest& unit_test) override;
4840  void OnEnvironmentsTearDownEnd(const UnitTest& unit_test) override;
4841  void OnTestIterationEnd(const UnitTest& unit_test, int iteration) override;
4842  void OnTestProgramEnd(const UnitTest& unit_test) override;
4843 
4844  private:
4845  // Controls whether events will be forwarded to listeners_. Set to false
4846  // in death test child processes.
4847  bool forwarding_enabled_;
4848  // The list of listeners that receive events.
4849  std::vector<TestEventListener*> listeners_;
4850 
4851  GTEST_DISALLOW_COPY_AND_ASSIGN_(TestEventRepeater);
4852 };
4853 
4854 TestEventRepeater::~TestEventRepeater() {
4855  ForEach(listeners_, Delete<TestEventListener>);
4856 }
4857 
4858 void TestEventRepeater::Append(TestEventListener *listener) {
4859  listeners_.push_back(listener);
4860 }
4861 
4862 TestEventListener* TestEventRepeater::Release(TestEventListener *listener) {
4863  for (size_t i = 0; i < listeners_.size(); ++i) {
4864  if (listeners_[i] == listener) {
4865  listeners_.erase(listeners_.begin() + i);
4866  return listener;
4867  }
4868  }
4869 
4870  return nullptr;
4871 }
4872 
4873 // Since most methods are very similar, use macros to reduce boilerplate.
4874 // This defines a member that forwards the call to all listeners.
4875 #define GTEST_REPEATER_METHOD_(Name, Type) \
4876 void TestEventRepeater::Name(const Type& parameter) { \
4877  if (forwarding_enabled_) { \
4878  for (size_t i = 0; i < listeners_.size(); i++) { \
4879  listeners_[i]->Name(parameter); \
4880  } \
4881  } \
4882 }
4883 // This defines a member that forwards the call to all listeners in reverse
4884 // order.
4885 #define GTEST_REVERSE_REPEATER_METHOD_(Name, Type) \
4886 void TestEventRepeater::Name(const Type& parameter) { \
4887  if (forwarding_enabled_) { \
4888  for (int i = static_cast<int>(listeners_.size()) - 1; i >= 0; i--) { \
4889  listeners_[i]->Name(parameter); \
4890  } \
4891  } \
4892 }
4893 
4894 GTEST_REPEATER_METHOD_(OnTestProgramStart, UnitTest)
4895 GTEST_REPEATER_METHOD_(OnEnvironmentsSetUpStart, UnitTest)
4896 // Legacy API is deprecated but still available
4897 #ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
4898 GTEST_REPEATER_METHOD_(OnTestCaseStart, TestSuite)
4899 #endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
4900 GTEST_REPEATER_METHOD_(OnTestSuiteStart, TestSuite)
4901 GTEST_REPEATER_METHOD_(OnTestStart, TestInfo)
4902 GTEST_REPEATER_METHOD_(OnTestPartResult, TestPartResult)
4903 GTEST_REPEATER_METHOD_(OnEnvironmentsTearDownStart, UnitTest)
4904 GTEST_REVERSE_REPEATER_METHOD_(OnEnvironmentsSetUpEnd, UnitTest)
4905 GTEST_REVERSE_REPEATER_METHOD_(OnEnvironmentsTearDownEnd, UnitTest)
4906 GTEST_REVERSE_REPEATER_METHOD_(OnTestEnd, TestInfo)
4907 // Legacy API is deprecated but still available
4908 #ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
4909 GTEST_REVERSE_REPEATER_METHOD_(OnTestCaseEnd, TestSuite)
4910 #endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
4911 GTEST_REVERSE_REPEATER_METHOD_(OnTestSuiteEnd, TestSuite)
4912 GTEST_REVERSE_REPEATER_METHOD_(OnTestProgramEnd, UnitTest)
4913 
4914 #undef GTEST_REPEATER_METHOD_
4915 #undef GTEST_REVERSE_REPEATER_METHOD_
4916 
4917 void TestEventRepeater::OnTestIterationStart(const UnitTest& unit_test,
4918  int iteration) {
4919  if (forwarding_enabled_) {
4920  for (size_t i = 0; i < listeners_.size(); i++) {
4921  listeners_[i]->OnTestIterationStart(unit_test, iteration);
4922  }
4923  }
4924 }
4925 
4926 void TestEventRepeater::OnTestIterationEnd(const UnitTest& unit_test,
4927  int iteration) {
4928  if (forwarding_enabled_) {
4929  for (int i = static_cast<int>(listeners_.size()) - 1; i >= 0; i--) {
4930  listeners_[i]->OnTestIterationEnd(unit_test, iteration);
4931  }
4932  }
4933 }
4934 
4935 // End TestEventRepeater
4936 
4937 // This class generates an XML output file.
4938 class XmlUnitTestResultPrinter : public EmptyTestEventListener {
4939  public:
4940  explicit XmlUnitTestResultPrinter(const char* output_file);
4941 
4942  void OnTestIterationEnd(const UnitTest& unit_test, int iteration) override;
4943  void ListTestsMatchingFilter(const std::vector<TestSuite*>& test_suites);
4944 
4945  // Prints an XML summary of all unit tests.
4946  static void PrintXmlTestsList(std::ostream* stream,
4947  const std::vector<TestSuite*>& test_suites);
4948 
4949  private:
4950  // Is c a whitespace character that is normalized to a space character
4951  // when it appears in an XML attribute value?
4952  static bool IsNormalizableWhitespace(char c) {
4953  return c == 0x9 || c == 0xA || c == 0xD;
4954  }
4955 
4956  // May c appear in a well-formed XML document?
4957  static bool IsValidXmlCharacter(char c) {
4958  return IsNormalizableWhitespace(c) || c >= 0x20;
4959  }
4960 
4961  // Returns an XML-escaped copy of the input string str. If
4962  // is_attribute is true, the text is meant to appear as an attribute
4963  // value, and normalizable whitespace is preserved by replacing it
4964  // with character references.
4965  static std::string EscapeXml(const std::string& str, bool is_attribute);
4966 
4967  // Returns the given string with all characters invalid in XML removed.
4968  static std::string RemoveInvalidXmlCharacters(const std::string& str);
4969 
4970  // Convenience wrapper around EscapeXml when str is an attribute value.
4971  static std::string EscapeXmlAttribute(const std::string& str) {
4972  return EscapeXml(str, true);
4973  }
4974 
4975  // Convenience wrapper around EscapeXml when str is not an attribute value.
4976  static std::string EscapeXmlText(const char* str) {
4977  return EscapeXml(str, false);
4978  }
4979 
4980  // Verifies that the given attribute belongs to the given element and
4981  // streams the attribute as XML.
4982  static void OutputXmlAttribute(std::ostream* stream,
4983  const std::string& element_name,
4984  const std::string& name,
4985  const std::string& value);
4986 
4987  // Streams an XML CDATA section, escaping invalid CDATA sequences as needed.
4988  static void OutputXmlCDataSection(::std::ostream* stream, const char* data);
4989 
4990  // Streams an XML representation of a TestInfo object.
4991  static void OutputXmlTestInfo(::std::ostream* stream,
4992  const char* test_suite_name,
4993  const TestInfo& test_info);
4994 
4995  // Prints an XML representation of a TestSuite object
4996  static void PrintXmlTestSuite(::std::ostream* stream,
4997  const TestSuite& test_suite);
4998 
4999  // Prints an XML summary of unit_test to output stream out.
5000  static void PrintXmlUnitTest(::std::ostream* stream,
5001  const UnitTest& unit_test);
5002 
5003  // Produces a string representing the test properties in a result as space
5004  // delimited XML attributes based on the property key="value" pairs.
5005  // When the std::string is not empty, it includes a space at the beginning,
5006  // to delimit this attribute from prior attributes.
5007  static std::string TestPropertiesAsXmlAttributes(const TestResult& result);
5008 
5009  // Streams an XML representation of the test properties of a TestResult
5010  // object.
5011  static void OutputXmlTestProperties(std::ostream* stream,
5012  const TestResult& result);
5013 
5014  // The output file.
5015  const std::string output_file_;
5016 
5017  GTEST_DISALLOW_COPY_AND_ASSIGN_(XmlUnitTestResultPrinter);
5018 };
5019 
5020 // Creates a new XmlUnitTestResultPrinter.
5021 XmlUnitTestResultPrinter::XmlUnitTestResultPrinter(const char* output_file)
5022  : output_file_(output_file) {
5023  if (output_file_.empty()) {
5024  GTEST_LOG_(FATAL) << "XML output file may not be null";
5025  }
5026 }
5027 
5028 // Called after the unit test ends.
5029 void XmlUnitTestResultPrinter::OnTestIterationEnd(const UnitTest& unit_test,
5030  int /*iteration*/) {
5031  FILE* xmlout = OpenFileForWriting(output_file_);
5032  std::stringstream stream;
5033  PrintXmlUnitTest(&stream, unit_test);
5034  fprintf(xmlout, "%s", StringStreamToString(&stream).c_str());
5035  fclose(xmlout);
5036 }
5037 
5038 void XmlUnitTestResultPrinter::ListTestsMatchingFilter(
5039  const std::vector<TestSuite*>& test_suites) {
5040  FILE* xmlout = OpenFileForWriting(output_file_);
5041  std::stringstream stream;
5042  PrintXmlTestsList(&stream, test_suites);
5043  fprintf(xmlout, "%s", StringStreamToString(&stream).c_str());
5044  fclose(xmlout);
5045 }
5046 
5047 // Returns an XML-escaped copy of the input string str. If is_attribute
5048 // is true, the text is meant to appear as an attribute value, and
5049 // normalizable whitespace is preserved by replacing it with character
5050 // references.
5051 //
5052 // Invalid XML characters in str, if any, are stripped from the output.
5053 // It is expected that most, if not all, of the text processed by this
5054 // module will consist of ordinary English text.
5055 // If this module is ever modified to produce version 1.1 XML output,
5056 // most invalid characters can be retained using character references.
5057 std::string XmlUnitTestResultPrinter::EscapeXml(
5058  const std::string& str, bool is_attribute) {
5059  Message m;
5060 
5061  for (size_t i = 0; i < str.size(); ++i) {
5062  const char ch = str[i];
5063  switch (ch) {
5064  case '<':
5065  m << "&lt;";
5066  break;
5067  case '>':
5068  m << "&gt;";
5069  break;
5070  case '&':
5071  m << "&amp;";
5072  break;
5073  case '\'':
5074  if (is_attribute)
5075  m << "&apos;";
5076  else
5077  m << '\'';
5078  break;
5079  case '"':
5080  if (is_attribute)
5081  m << "&quot;";
5082  else
5083  m << '"';
5084  break;
5085  default:
5086  if (IsValidXmlCharacter(ch)) {
5087  if (is_attribute && IsNormalizableWhitespace(ch))
5088  m << "&#x" << String::FormatByte(static_cast<unsigned char>(ch))
5089  << ";";
5090  else
5091  m << ch;
5092  }
5093  break;
5094  }
5095  }
5096 
5097  return m.GetString();
5098 }
5099 
5100 // Returns the given string with all characters invalid in XML removed.
5101 // Currently invalid characters are dropped from the string. An
5102 // alternative is to replace them with certain characters such as . or ?.
5103 std::string XmlUnitTestResultPrinter::RemoveInvalidXmlCharacters(
5104  const std::string& str) {
5105  std::string output;
5106  output.reserve(str.size());
5107  for (std::string::const_iterator it = str.begin(); it != str.end(); ++it)
5108  if (IsValidXmlCharacter(*it))
5109  output.push_back(*it);
5110 
5111  return output;
5112 }
5113 
5114 // The following routines generate an XML representation of a UnitTest
5115 // object.
5116 // GOOGLETEST_CM0009 DO NOT DELETE
5117 //
5118 // This is how Google Test concepts map to the DTD:
5119 //
5120 // <testsuites name="AllTests"> <-- corresponds to a UnitTest object
5121 // <testsuite name="testcase-name"> <-- corresponds to a TestSuite object
5122 // <testcase name="test-name"> <-- corresponds to a TestInfo object
5123 // <failure message="...">...</failure>
5124 // <failure message="...">...</failure>
5125 // <failure message="...">...</failure>
5126 // <-- individual assertion failures
5127 // </testcase>
5128 // </testsuite>
5129 // </testsuites>
5130 
5131 // Formats the given time in milliseconds as seconds.
5132 std::string FormatTimeInMillisAsSeconds(TimeInMillis ms) {
5133  ::std::stringstream ss;
5134  ss << (static_cast<double>(ms) * 1e-3);
5135  return ss.str();
5136 }
5137 
5138 static bool PortableLocaltime(time_t seconds, struct tm* out) {
5139 #if defined(_MSC_VER)
5140  return localtime_s(out, &seconds) == 0;
5141 #elif defined(__MINGW32__) || defined(__MINGW64__)
5142  // MINGW <time.h> provides neither localtime_r nor localtime_s, but uses
5143  // Windows' localtime(), which has a thread-local tm buffer.
5144  struct tm* tm_ptr = localtime(&seconds); // NOLINT
5145  if (tm_ptr == nullptr) return false;
5146  *out = *tm_ptr;
5147  return true;
5148 #else
5149  return localtime_r(&seconds, out) != nullptr;
5150 #endif
5151 }
5152 
5153 // Converts the given epoch time in milliseconds to a date string in the ISO
5154 // 8601 format, without the timezone information.
5155 std::string FormatEpochTimeInMillisAsIso8601(TimeInMillis ms) {
5156  struct tm time_struct;
5157  if (!PortableLocaltime(static_cast<time_t>(ms / 1000), &time_struct))
5158  return "";
5159  // YYYY-MM-DDThh:mm:ss
5160  return StreamableToString(time_struct.tm_year + 1900) + "-" +
5161  String::FormatIntWidth2(time_struct.tm_mon + 1) + "-" +
5162  String::FormatIntWidth2(time_struct.tm_mday) + "T" +
5163  String::FormatIntWidth2(time_struct.tm_hour) + ":" +
5164  String::FormatIntWidth2(time_struct.tm_min) + ":" +
5165  String::FormatIntWidth2(time_struct.tm_sec);
5166 }
5167 
5168 // Streams an XML CDATA section, escaping invalid CDATA sequences as needed.
5169 void XmlUnitTestResultPrinter::OutputXmlCDataSection(::std::ostream* stream,
5170  const char* data) {
5171  const char* segment = data;
5172  *stream << "<![CDATA[";
5173  for (;;) {
5174  const char* const next_segment = strstr(segment, "]]>");
5175  if (next_segment != nullptr) {
5176  stream->write(
5177  segment, static_cast<std::streamsize>(next_segment - segment));
5178  *stream << "]]>]]&gt;<![CDATA[";
5179  segment = next_segment + strlen("]]>");
5180  } else {
5181  *stream << segment;
5182  break;
5183  }
5184  }
5185  *stream << "]]>";
5186 }
5187 
5188 void XmlUnitTestResultPrinter::OutputXmlAttribute(
5189  std::ostream* stream,
5190  const std::string& element_name,
5191  const std::string& name,
5192  const std::string& value) {
5193  const std::vector<std::string>& allowed_names =
5194  GetReservedAttributesForElement(element_name);
5195 
5196  GTEST_CHECK_(std::find(allowed_names.begin(), allowed_names.end(), name) !=
5197  allowed_names.end())
5198  << "Attribute " << name << " is not allowed for element <" << element_name
5199  << ">.";
5200 
5201  *stream << " " << name << "=\"" << EscapeXmlAttribute(value) << "\"";
5202 }
5203 
5204 // Prints an XML representation of a TestInfo object.
5205 void XmlUnitTestResultPrinter::OutputXmlTestInfo(::std::ostream* stream,
5206  const char* test_suite_name,
5207  const TestInfo& test_info) {
5208  const TestResult& result = *test_info.result();
5209  const std::string kTestsuite = "testcase";
5210 
5211  if (test_info.is_in_another_shard()) {
5212  return;
5213  }
5214 
5215  *stream << " <testcase";
5216  OutputXmlAttribute(stream, kTestsuite, "name", test_info.name());
5217 
5218  if (test_info.value_param() != nullptr) {
5219  OutputXmlAttribute(stream, kTestsuite, "value_param",
5220  test_info.value_param());
5221  }
5222  if (test_info.type_param() != nullptr) {
5223  OutputXmlAttribute(stream, kTestsuite, "type_param",
5224  test_info.type_param());
5225  }
5226  if (GTEST_FLAG(list_tests)) {
5227  OutputXmlAttribute(stream, kTestsuite, "file", test_info.file());
5228  OutputXmlAttribute(stream, kTestsuite, "line",
5229  StreamableToString(test_info.line()));
5230  *stream << " />\n";
5231  return;
5232  }
5233 
5234  OutputXmlAttribute(
5235  stream, kTestsuite, "status",
5236  result.Skipped() ? "skipped" : test_info.should_run() ? "run" : "notrun");
5237  OutputXmlAttribute(stream, kTestsuite, "time",
5238  FormatTimeInMillisAsSeconds(result.elapsed_time()));
5239  OutputXmlAttribute(stream, kTestsuite, "classname", test_suite_name);
5240 
5241  int failures = 0;
5242  for (int i = 0; i < result.total_part_count(); ++i) {
5243  const TestPartResult& part = result.GetTestPartResult(i);
5244  if (part.failed()) {
5245  if (++failures == 1) {
5246  *stream << ">\n";
5247  }
5248  const std::string location =
5250  part.line_number());
5251  const std::string summary = location + "\n" + part.summary();
5252  *stream << " <failure message=\""
5253  << EscapeXmlAttribute(summary.c_str())
5254  << "\" type=\"\">";
5255  const std::string detail = location + "\n" + part.message();
5256  OutputXmlCDataSection(stream, RemoveInvalidXmlCharacters(detail).c_str());
5257  *stream << "</failure>\n";
5258  }
5259  }
5260 
5261  if (failures == 0 && result.test_property_count() == 0) {
5262  *stream << " />\n";
5263  } else {
5264  if (failures == 0) {
5265  *stream << ">\n";
5266  }
5267  OutputXmlTestProperties(stream, result);
5268  *stream << " </testcase>\n";
5269  }
5270 }
5271 
5272 // Prints an XML representation of a TestSuite object
5273 void XmlUnitTestResultPrinter::PrintXmlTestSuite(std::ostream* stream,
5274  const TestSuite& test_suite) {
5275  const std::string kTestsuite = "testsuite";
5276  *stream << " <" << kTestsuite;
5277  OutputXmlAttribute(stream, kTestsuite, "name", test_suite.name());
5278  OutputXmlAttribute(stream, kTestsuite, "tests",
5279  StreamableToString(test_suite.reportable_test_count()));
5280  if (!GTEST_FLAG(list_tests)) {
5281  OutputXmlAttribute(stream, kTestsuite, "failures",
5282  StreamableToString(test_suite.failed_test_count()));
5283  OutputXmlAttribute(
5284  stream, kTestsuite, "disabled",
5285  StreamableToString(test_suite.reportable_disabled_test_count()));
5286  OutputXmlAttribute(stream, kTestsuite, "errors", "0");
5287  OutputXmlAttribute(stream, kTestsuite, "time",
5288  FormatTimeInMillisAsSeconds(test_suite.elapsed_time()));
5289  *stream << TestPropertiesAsXmlAttributes(test_suite.ad_hoc_test_result());
5290  }
5291  *stream << ">\n";
5292  for (int i = 0; i < test_suite.total_test_count(); ++i) {
5293  if (test_suite.GetTestInfo(i)->is_reportable())
5294  OutputXmlTestInfo(stream, test_suite.name(), *test_suite.GetTestInfo(i));
5295  }
5296  *stream << " </" << kTestsuite << ">\n";
5297 }
5298 
5299 // Prints an XML summary of unit_test to output stream out.
5300 void XmlUnitTestResultPrinter::PrintXmlUnitTest(std::ostream* stream,
5301  const UnitTest& unit_test) {
5302  const std::string kTestsuites = "testsuites";
5303 
5304  *stream << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
5305  *stream << "<" << kTestsuites;
5306 
5307  OutputXmlAttribute(stream, kTestsuites, "tests",
5308  StreamableToString(unit_test.reportable_test_count()));
5309  OutputXmlAttribute(stream, kTestsuites, "failures",
5310  StreamableToString(unit_test.failed_test_count()));
5311  OutputXmlAttribute(
5312  stream, kTestsuites, "disabled",
5313  StreamableToString(unit_test.reportable_disabled_test_count()));
5314  OutputXmlAttribute(stream, kTestsuites, "errors", "0");
5315  OutputXmlAttribute(
5316  stream, kTestsuites, "timestamp",
5317  FormatEpochTimeInMillisAsIso8601(unit_test.start_timestamp()));
5318  OutputXmlAttribute(stream, kTestsuites, "time",
5319  FormatTimeInMillisAsSeconds(unit_test.elapsed_time()));
5320 
5321  if (GTEST_FLAG(shuffle)) {
5322  OutputXmlAttribute(stream, kTestsuites, "random_seed",
5323  StreamableToString(unit_test.random_seed()));
5324  }
5325  *stream << TestPropertiesAsXmlAttributes(unit_test.ad_hoc_test_result());
5326 
5327  OutputXmlAttribute(stream, kTestsuites, "name", "AllTests");
5328  *stream << ">\n";
5329 
5330  for (int i = 0; i < unit_test.total_test_suite_count(); ++i) {
5331  if (unit_test.GetTestSuite(i)->reportable_test_count() > 0)
5332  PrintXmlTestSuite(stream, *unit_test.GetTestSuite(i));
5333  }
5334  *stream << "</" << kTestsuites << ">\n";
5335 }
5336 
5337 void XmlUnitTestResultPrinter::PrintXmlTestsList(
5338  std::ostream* stream, const std::vector<TestSuite*>& test_suites) {
5339  const std::string kTestsuites = "testsuites";
5340 
5341  *stream << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
5342  *stream << "<" << kTestsuites;
5343 
5344  int total_tests = 0;
5345  for (auto test_suite : test_suites) {
5346  total_tests += test_suite->total_test_count();
5347  }
5348  OutputXmlAttribute(stream, kTestsuites, "tests",
5349  StreamableToString(total_tests));
5350  OutputXmlAttribute(stream, kTestsuites, "name", "AllTests");
5351  *stream << ">\n";
5352 
5353  for (auto test_suite : test_suites) {
5354  PrintXmlTestSuite(stream, *test_suite);
5355  }
5356  *stream << "</" << kTestsuites << ">\n";
5357 }
5358 
5359 // Produces a string representing the test properties in a result as space
5360 // delimited XML attributes based on the property key="value" pairs.
5361 std::string XmlUnitTestResultPrinter::TestPropertiesAsXmlAttributes(
5362  const TestResult& result) {
5363  Message attributes;
5364  for (int i = 0; i < result.test_property_count(); ++i) {
5365  const TestProperty& property = result.GetTestProperty(i);
5366  attributes << " " << property.key() << "="
5367  << "\"" << EscapeXmlAttribute(property.value()) << "\"";
5368  }
5369  return attributes.GetString();
5370 }
5371 
5372 void XmlUnitTestResultPrinter::OutputXmlTestProperties(
5373  std::ostream* stream, const TestResult& result) {
5374  const std::string kProperties = "properties";
5375  const std::string kProperty = "property";
5376 
5377  if (result.test_property_count() <= 0) {
5378  return;
5379  }
5380 
5381  *stream << "<" << kProperties << ">\n";
5382  for (int i = 0; i < result.test_property_count(); ++i) {
5383  const TestProperty& property = result.GetTestProperty(i);
5384  *stream << "<" << kProperty;
5385  *stream << " name=\"" << EscapeXmlAttribute(property.key()) << "\"";
5386  *stream << " value=\"" << EscapeXmlAttribute(property.value()) << "\"";
5387  *stream << "/>\n";
5388  }
5389  *stream << "</" << kProperties << ">\n";
5390 }
5391 
5392 // End XmlUnitTestResultPrinter
5393 
5394 // This class generates an JSON output file.
5395 class JsonUnitTestResultPrinter : public EmptyTestEventListener {
5396  public:
5397  explicit JsonUnitTestResultPrinter(const char* output_file);
5398 
5399  void OnTestIterationEnd(const UnitTest& unit_test, int iteration) override;
5400 
5401  // Prints an JSON summary of all unit tests.
5402  static void PrintJsonTestList(::std::ostream* stream,
5403  const std::vector<TestSuite*>& test_suites);
5404 
5405  private:
5406  // Returns an JSON-escaped copy of the input string str.
5407  static std::string EscapeJson(const std::string& str);
5408 
5411  static void OutputJsonKey(std::ostream* stream,
5412  const std::string& element_name,
5413  const std::string& name,
5414  const std::string& value,
5415  const std::string& indent,
5416  bool comma = true);
5417  static void OutputJsonKey(std::ostream* stream,
5418  const std::string& element_name,
5419  const std::string& name,
5420  int value,
5421  const std::string& indent,
5422  bool comma = true);
5423 
5424  // Streams a JSON representation of a TestInfo object.
5425  static void OutputJsonTestInfo(::std::ostream* stream,
5426  const char* test_suite_name,
5427  const TestInfo& test_info);
5428 
5429  // Prints a JSON representation of a TestSuite object
5430  static void PrintJsonTestSuite(::std::ostream* stream,
5431  const TestSuite& test_suite);
5432 
5433  // Prints a JSON summary of unit_test to output stream out.
5434  static void PrintJsonUnitTest(::std::ostream* stream,
5435  const UnitTest& unit_test);
5436 
5437  // Produces a string representing the test properties in a result as
5438  // a JSON dictionary.
5439  static std::string TestPropertiesAsJson(const TestResult& result,
5440  const std::string& indent);
5441 
5442  // The output file.
5443  const std::string output_file_;
5444 
5445  GTEST_DISALLOW_COPY_AND_ASSIGN_(JsonUnitTestResultPrinter);
5446 };
5447 
5448 // Creates a new JsonUnitTestResultPrinter.
5449 JsonUnitTestResultPrinter::JsonUnitTestResultPrinter(const char* output_file)
5450  : output_file_(output_file) {
5451  if (output_file_.empty()) {
5452  GTEST_LOG_(FATAL) << "JSON output file may not be null";
5453  }
5454 }
5455 
5456 void JsonUnitTestResultPrinter::OnTestIterationEnd(const UnitTest& unit_test,
5457  int /*iteration*/) {
5458  FILE* jsonout = OpenFileForWriting(output_file_);
5459  std::stringstream stream;
5460  PrintJsonUnitTest(&stream, unit_test);
5461  fprintf(jsonout, "%s", StringStreamToString(&stream).c_str());
5462  fclose(jsonout);
5463 }
5464 
5465 // Returns an JSON-escaped copy of the input string str.
5466 std::string JsonUnitTestResultPrinter::EscapeJson(const std::string& str) {
5467  Message m;
5468 
5469  for (size_t i = 0; i < str.size(); ++i) {
5470  const char ch = str[i];
5471  switch (ch) {
5472  case '\\':
5473  case '"':
5474  case '/':
5475  m << '\\' << ch;
5476  break;
5477  case '\b':
5478  m << "\\b";
5479  break;
5480  case '\t':
5481  m << "\\t";
5482  break;
5483  case '\n':
5484  m << "\\n";
5485  break;
5486  case '\f':
5487  m << "\\f";
5488  break;
5489  case '\r':
5490  m << "\\r";
5491  break;
5492  default:
5493  if (ch < ' ') {
5494  m << "\\u00" << String::FormatByte(static_cast<unsigned char>(ch));
5495  } else {
5496  m << ch;
5497  }
5498  break;
5499  }
5500  }
5501 
5502  return m.GetString();
5503 }
5504 
5505 // The following routines generate an JSON representation of a UnitTest
5506 // object.
5507 
5508 // Formats the given time in milliseconds as seconds.
5509 static std::string FormatTimeInMillisAsDuration(TimeInMillis ms) {
5510  ::std::stringstream ss;
5511  ss << (static_cast<double>(ms) * 1e-3) << "s";
5512  return ss.str();
5513 }
5514 
5515 // Converts the given epoch time in milliseconds to a date string in the
5516 // RFC3339 format, without the timezone information.
5517 static std::string FormatEpochTimeInMillisAsRFC3339(TimeInMillis ms) {
5518  struct tm time_struct;
5519  if (!PortableLocaltime(static_cast<time_t>(ms / 1000), &time_struct))
5520  return "";
5521  // YYYY-MM-DDThh:mm:ss
5522  return StreamableToString(time_struct.tm_year + 1900) + "-" +
5523  String::FormatIntWidth2(time_struct.tm_mon + 1) + "-" +
5524  String::FormatIntWidth2(time_struct.tm_mday) + "T" +
5525  String::FormatIntWidth2(time_struct.tm_hour) + ":" +
5526  String::FormatIntWidth2(time_struct.tm_min) + ":" +
5527  String::FormatIntWidth2(time_struct.tm_sec) + "Z";
5528 }
5529 
5530 static inline std::string Indent(int width) {
5531  return std::string(width, ' ');
5532 }
5533 
5534 void JsonUnitTestResultPrinter::OutputJsonKey(
5535  std::ostream* stream,
5536  const std::string& element_name,
5537  const std::string& name,
5538  const std::string& value,
5539  const std::string& indent,
5540  bool comma) {
5541  const std::vector<std::string>& allowed_names =
5542  GetReservedAttributesForElement(element_name);
5543 
5544  GTEST_CHECK_(std::find(allowed_names.begin(), allowed_names.end(), name) !=
5545  allowed_names.end())
5546  << "Key \"" << name << "\" is not allowed for value \"" << element_name
5547  << "\".";
5548 
5549  *stream << indent << "\"" << name << "\": \"" << EscapeJson(value) << "\"";
5550  if (comma)
5551  *stream << ",\n";
5552 }
5553 
5554 void JsonUnitTestResultPrinter::OutputJsonKey(
5555  std::ostream* stream,
5556  const std::string& element_name,
5557  const std::string& name,
5558  int value,
5559  const std::string& indent,
5560  bool comma) {
5561  const std::vector<std::string>& allowed_names =
5562  GetReservedAttributesForElement(element_name);
5563 
5564  GTEST_CHECK_(std::find(allowed_names.begin(), allowed_names.end(), name) !=
5565  allowed_names.end())
5566  << "Key \"" << name << "\" is not allowed for value \"" << element_name
5567  << "\".";
5568 
5569  *stream << indent << "\"" << name << "\": " << StreamableToString(value);
5570  if (comma)
5571  *stream << ",\n";
5572 }
5573 
5574 // Prints a JSON representation of a TestInfo object.
5575 void JsonUnitTestResultPrinter::OutputJsonTestInfo(::std::ostream* stream,
5576  const char* test_suite_name,
5577  const TestInfo& test_info) {
5578  const TestResult& result = *test_info.result();
5579  const std::string kTestsuite = "testcase";
5580  const std::string kIndent = Indent(10);
5581 
5582  *stream << Indent(8) << "{\n";
5583  OutputJsonKey(stream, kTestsuite, "name", test_info.name(), kIndent);
5584 
5585  if (test_info.value_param() != nullptr) {
5586  OutputJsonKey(stream, kTestsuite, "value_param", test_info.value_param(),
5587  kIndent);
5588  }
5589  if (test_info.type_param() != nullptr) {
5590  OutputJsonKey(stream, kTestsuite, "type_param", test_info.type_param(),
5591  kIndent);
5592  }
5593  if (GTEST_FLAG(list_tests)) {
5594  OutputJsonKey(stream, kTestsuite, "file", test_info.file(), kIndent);
5595  OutputJsonKey(stream, kTestsuite, "line", test_info.line(), kIndent, false);
5596  *stream << "\n" << Indent(8) << "}";
5597  return;
5598  }
5599 
5600  OutputJsonKey(
5601  stream, kTestsuite, "status",
5602  result.Skipped() ? "SKIPPED" : test_info.should_run() ? "RUN" : "NOTRUN",
5603  kIndent);
5604  OutputJsonKey(stream, kTestsuite, "time",
5605  FormatTimeInMillisAsDuration(result.elapsed_time()), kIndent);
5606  OutputJsonKey(stream, kTestsuite, "classname", test_suite_name, kIndent,
5607  false);
5608  *stream << TestPropertiesAsJson(result, kIndent);
5609 
5610  int failures = 0;
5611  for (int i = 0; i < result.total_part_count(); ++i) {
5612  const TestPartResult& part = result.GetTestPartResult(i);
5613  if (part.failed()) {
5614  *stream << ",\n";
5615  if (++failures == 1) {
5616  *stream << kIndent << "\"" << "failures" << "\": [\n";
5617  }
5618  const std::string location =
5620  part.line_number());
5621  const std::string message = EscapeJson(location + "\n" + part.message());
5622  *stream << kIndent << " {\n"
5623  << kIndent << " \"failure\": \"" << message << "\",\n"
5624  << kIndent << " \"type\": \"\"\n"
5625  << kIndent << " }";
5626  }
5627  }
5628 
5629  if (failures > 0)
5630  *stream << "\n" << kIndent << "]";
5631  *stream << "\n" << Indent(8) << "}";
5632 }
5633 
5634 // Prints an JSON representation of a TestSuite object
5635 void JsonUnitTestResultPrinter::PrintJsonTestSuite(
5636  std::ostream* stream, const TestSuite& test_suite) {
5637  const std::string kTestsuite = "testsuite";
5638  const std::string kIndent = Indent(6);
5639 
5640  *stream << Indent(4) << "{\n";
5641  OutputJsonKey(stream, kTestsuite, "name", test_suite.name(), kIndent);
5642  OutputJsonKey(stream, kTestsuite, "tests", test_suite.reportable_test_count(),
5643  kIndent);
5644  if (!GTEST_FLAG(list_tests)) {
5645  OutputJsonKey(stream, kTestsuite, "failures",
5646  test_suite.failed_test_count(), kIndent);
5647  OutputJsonKey(stream, kTestsuite, "disabled",
5648  test_suite.reportable_disabled_test_count(), kIndent);
5649  OutputJsonKey(stream, kTestsuite, "errors", 0, kIndent);
5650  OutputJsonKey(stream, kTestsuite, "time",
5651  FormatTimeInMillisAsDuration(test_suite.elapsed_time()),
5652  kIndent, false);
5653  *stream << TestPropertiesAsJson(test_suite.ad_hoc_test_result(), kIndent)
5654  << ",\n";
5655  }
5656 
5657  *stream << kIndent << "\"" << kTestsuite << "\": [\n";
5658 
5659  bool comma = false;
5660  for (int i = 0; i < test_suite.total_test_count(); ++i) {
5661  if (test_suite.GetTestInfo(i)->is_reportable()) {
5662  if (comma) {
5663  *stream << ",\n";
5664  } else {
5665  comma = true;
5666  }
5667  OutputJsonTestInfo(stream, test_suite.name(), *test_suite.GetTestInfo(i));
5668  }
5669  }
5670  *stream << "\n" << kIndent << "]\n" << Indent(4) << "}";
5671 }
5672 
5673 // Prints a JSON summary of unit_test to output stream out.
5674 void JsonUnitTestResultPrinter::PrintJsonUnitTest(std::ostream* stream,
5675  const UnitTest& unit_test) {
5676  const std::string kTestsuites = "testsuites";
5677  const std::string kIndent = Indent(2);
5678  *stream << "{\n";
5679 
5680  OutputJsonKey(stream, kTestsuites, "tests", unit_test.reportable_test_count(),
5681  kIndent);
5682  OutputJsonKey(stream, kTestsuites, "failures", unit_test.failed_test_count(),
5683  kIndent);
5684  OutputJsonKey(stream, kTestsuites, "disabled",
5685  unit_test.reportable_disabled_test_count(), kIndent);
5686  OutputJsonKey(stream, kTestsuites, "errors", 0, kIndent);
5687  if (GTEST_FLAG(shuffle)) {
5688  OutputJsonKey(stream, kTestsuites, "random_seed", unit_test.random_seed(),
5689  kIndent);
5690  }
5691  OutputJsonKey(stream, kTestsuites, "timestamp",
5692  FormatEpochTimeInMillisAsRFC3339(unit_test.start_timestamp()),
5693  kIndent);
5694  OutputJsonKey(stream, kTestsuites, "time",
5695  FormatTimeInMillisAsDuration(unit_test.elapsed_time()), kIndent,
5696  false);
5697 
5698  *stream << TestPropertiesAsJson(unit_test.ad_hoc_test_result(), kIndent)
5699  << ",\n";
5700 
5701  OutputJsonKey(stream, kTestsuites, "name", "AllTests", kIndent);
5702  *stream << kIndent << "\"" << kTestsuites << "\": [\n";
5703 
5704  bool comma = false;
5705  for (int i = 0; i < unit_test.total_test_suite_count(); ++i) {
5706  if (unit_test.GetTestSuite(i)->reportable_test_count() > 0) {
5707  if (comma) {
5708  *stream << ",\n";
5709  } else {
5710  comma = true;
5711  }
5712  PrintJsonTestSuite(stream, *unit_test.GetTestSuite(i));
5713  }
5714  }
5715 
5716  *stream << "\n" << kIndent << "]\n" << "}\n";
5717 }
5718 
5719 void JsonUnitTestResultPrinter::PrintJsonTestList(
5720  std::ostream* stream, const std::vector<TestSuite*>& test_suites) {
5721  const std::string kTestsuites = "testsuites";
5722  const std::string kIndent = Indent(2);
5723  *stream << "{\n";
5724  int total_tests = 0;
5725  for (auto test_suite : test_suites) {
5726  total_tests += test_suite->total_test_count();
5727  }
5728  OutputJsonKey(stream, kTestsuites, "tests", total_tests, kIndent);
5729 
5730  OutputJsonKey(stream, kTestsuites, "name", "AllTests", kIndent);
5731  *stream << kIndent << "\"" << kTestsuites << "\": [\n";
5732 
5733  for (size_t i = 0; i < test_suites.size(); ++i) {
5734  if (i != 0) {
5735  *stream << ",\n";
5736  }
5737  PrintJsonTestSuite(stream, *test_suites[i]);
5738  }
5739 
5740  *stream << "\n"
5741  << kIndent << "]\n"
5742  << "}\n";
5743 }
5744 // Produces a string representing the test properties in a result as
5745 // a JSON dictionary.
5746 std::string JsonUnitTestResultPrinter::TestPropertiesAsJson(
5747  const TestResult& result, const std::string& indent) {
5748  Message attributes;
5749  for (int i = 0; i < result.test_property_count(); ++i) {
5750  const TestProperty& property = result.GetTestProperty(i);
5751  attributes << ",\n" << indent << "\"" << property.key() << "\": "
5752  << "\"" << EscapeJson(property.value()) << "\"";
5753  }
5754  return attributes.GetString();
5755 }
5756 
5757 // End JsonUnitTestResultPrinter
5758 
5759 #if GTEST_CAN_STREAM_RESULTS_
5760 
5761 // Checks if str contains '=', '&', '%' or '\n' characters. If yes,
5762 // replaces them by "%xx" where xx is their hexadecimal value. For
5763 // example, replaces "=" with "%3D". This algorithm is O(strlen(str))
5764 // in both time and space -- important as the input str may contain an
5765 // arbitrarily long test failure message and stack trace.
5766 std::string StreamingListener::UrlEncode(const char* str) {
5767  std::string result;
5768  result.reserve(strlen(str) + 1);
5769  for (char ch = *str; ch != '\0'; ch = *++str) {
5770  switch (ch) {
5771  case '%':
5772  case '=':
5773  case '&':
5774  case '\n':
5775  result.append("%" + String::FormatByte(static_cast<unsigned char>(ch)));
5776  break;
5777  default:
5778  result.push_back(ch);
5779  break;
5780  }
5781  }
5782  return result;
5783 }
5784 
5785 void StreamingListener::SocketWriter::MakeConnection() {
5786  GTEST_CHECK_(sockfd_ == -1)
5787  << "MakeConnection() can't be called when there is already a connection.";
5788 
5789  addrinfo hints;
5790  memset(&hints, 0, sizeof(hints));
5791  hints.ai_family = AF_UNSPEC; // To allow both IPv4 and IPv6 addresses.
5792  hints.ai_socktype = SOCK_STREAM;
5793  addrinfo* servinfo = nullptr;
5794 
5795  // Use the getaddrinfo() to get a linked list of IP addresses for
5796  // the given host name.
5797  const int error_num = getaddrinfo(
5798  host_name_.c_str(), port_num_.c_str(), &hints, &servinfo);
5799  if (error_num != 0) {
5800  GTEST_LOG_(WARNING) << "stream_result_to: getaddrinfo() failed: "
5801  << gai_strerror(error_num);
5802  }
5803 
5804  // Loop through all the results and connect to the first we can.
5805  for (addrinfo* cur_addr = servinfo; sockfd_ == -1 && cur_addr != nullptr;
5806  cur_addr = cur_addr->ai_next) {
5807  sockfd_ = socket(
5808  cur_addr->ai_family, cur_addr->ai_socktype, cur_addr->ai_protocol);
5809  if (sockfd_ != -1) {
5810  // Connect the client socket to the server socket.
5811  if (connect(sockfd_, cur_addr->ai_addr, cur_addr->ai_addrlen) == -1) {
5812  close(sockfd_);
5813  sockfd_ = -1;
5814  }
5815  }
5816  }
5817 
5818  freeaddrinfo(servinfo); // all done with this structure
5819 
5820  if (sockfd_ == -1) {
5821  GTEST_LOG_(WARNING) << "stream_result_to: failed to connect to "
5822  << host_name_ << ":" << port_num_;
5823  }
5824 }
5825 
5826 // End of class Streaming Listener
5827 #endif // GTEST_CAN_STREAM_RESULTS__
5828 
5829 // class OsStackTraceGetter
5830 
5831 const char* const OsStackTraceGetterInterface::kElidedFramesMarker =
5832  "... " GTEST_NAME_ " internal frames ...";
5833 
5834 std::string OsStackTraceGetter::CurrentStackTrace(int max_depth, int skip_count)
5835  GTEST_LOCK_EXCLUDED_(mutex_) {
5836 #if GTEST_HAS_ABSL
5837  std::string result;
5838 
5839  if (max_depth <= 0) {
5840  return result;
5841  }
5842 
5843  max_depth = std::min(max_depth, kMaxStackTraceDepth);
5844 
5845  std::vector<void*> raw_stack(max_depth);
5846  // Skips the frames requested by the caller, plus this function.
5847  const int raw_stack_size =
5848  absl::GetStackTrace(&raw_stack[0], max_depth, skip_count + 1);
5849 
5850  void* caller_frame = nullptr;
5851  {
5852  MutexLock lock(&mutex_);
5853  caller_frame = caller_frame_;
5854  }
5855 
5856  for (int i = 0; i < raw_stack_size; ++i) {
5857  if (raw_stack[i] == caller_frame &&
5858  !GTEST_FLAG(show_internal_stack_frames)) {
5859  // Add a marker to the trace and stop adding frames.
5860  absl::StrAppend(&result, kElidedFramesMarker, "\n");
5861  break;
5862  }
5863 
5864  char tmp[1024];
5865  const char* symbol = "(unknown)";
5866  if (absl::Symbolize(raw_stack[i], tmp, sizeof(tmp))) {
5867  symbol = tmp;
5868  }
5869 
5870  char line[1024];
5871  snprintf(line, sizeof(line), " %p: %s\n", raw_stack[i], symbol);
5872  result += line;
5873  }
5874 
5875  return result;
5876 
5877 #else // !GTEST_HAS_ABSL
5878  static_cast<void>(max_depth);
5879  static_cast<void>(skip_count);
5880  return "";
5881 #endif // GTEST_HAS_ABSL
5882 }
5883 
5884 void OsStackTraceGetter::UponLeavingGTest() GTEST_LOCK_EXCLUDED_(mutex_) {
5885 #if GTEST_HAS_ABSL
5886  void* caller_frame = nullptr;
5887  if (absl::GetStackTrace(&caller_frame, 1, 3) <= 0) {
5888  caller_frame = nullptr;
5889  }
5890 
5891  MutexLock lock(&mutex_);
5892  caller_frame_ = caller_frame;
5893 #endif // GTEST_HAS_ABSL
5894 }
5895 
5896 // A helper class that creates the premature-exit file in its
5897 // constructor and deletes the file in its destructor.
5898 class ScopedPrematureExitFile {
5899  public:
5900  explicit ScopedPrematureExitFile(const char* premature_exit_filepath)
5901  : premature_exit_filepath_(premature_exit_filepath ?
5902  premature_exit_filepath : "") {
5903  // If a path to the premature-exit file is specified...
5904  if (!premature_exit_filepath_.empty()) {
5905  // create the file with a single "0" character in it. I/O
5906  // errors are ignored as there's nothing better we can do and we
5907  // don't want to fail the test because of this.
5908  FILE* pfile = posix::FOpen(premature_exit_filepath, "w");
5909  fwrite("0", 1, 1, pfile);
5910  fclose(pfile);
5911  }
5912  }
5913 
5914  ~ScopedPrematureExitFile() {
5915  if (!premature_exit_filepath_.empty()) {
5916  int retval = remove(premature_exit_filepath_.c_str());
5917  if (retval) {
5918  GTEST_LOG_(ERROR) << "Failed to remove premature exit filepath \""
5919  << premature_exit_filepath_ << "\" with error "
5920  << retval;
5921  }
5922  }
5923  }
5924 
5925  private:
5926  const std::string premature_exit_filepath_;
5927 
5928  GTEST_DISALLOW_COPY_AND_ASSIGN_(ScopedPrematureExitFile);
5929 };
5930 
5931 } // namespace internal
5932 
5933 // class TestEventListeners
5934 
5935 TestEventListeners::TestEventListeners()
5936  : repeater_(new internal::TestEventRepeater()),
5937  default_result_printer_(nullptr),
5938  default_xml_generator_(nullptr) {}
5939 
5940 TestEventListeners::~TestEventListeners() { delete repeater_; }
5941 
5942 // Returns the standard listener responsible for the default console
5943 // output. Can be removed from the listeners list to shut down default
5944 // console output. Note that removing this object from the listener list
5945 // with Release transfers its ownership to the user.
5946 void TestEventListeners::Append(TestEventListener* listener) {
5947  repeater_->Append(listener);
5948 }
5949 
5950 // Removes the given event listener from the list and returns it. It then
5951 // becomes the caller's responsibility to delete the listener. Returns
5952 // NULL if the listener is not found in the list.
5953 TestEventListener* TestEventListeners::Release(TestEventListener* listener) {
5954  if (listener == default_result_printer_)
5955  default_result_printer_ = nullptr;
5956  else if (listener == default_xml_generator_)
5957  default_xml_generator_ = nullptr;
5958  return repeater_->Release(listener);
5959 }
5960 
5961 // Returns repeater that broadcasts the TestEventListener events to all
5962 // subscribers.
5963 TestEventListener* TestEventListeners::repeater() { return repeater_; }
5964 
5965 // Sets the default_result_printer attribute to the provided listener.
5966 // The listener is also added to the listener list and previous
5967 // default_result_printer is removed from it and deleted. The listener can
5968 // also be NULL in which case it will not be added to the list. Does
5969 // nothing if the previous and the current listener objects are the same.
5970 void TestEventListeners::SetDefaultResultPrinter(TestEventListener* listener) {
5971  if (default_result_printer_ != listener) {
5972  // It is an error to pass this method a listener that is already in the
5973  // list.
5974  delete Release(default_result_printer_);
5975  default_result_printer_ = listener;
5976  if (listener != nullptr) Append(listener);
5977  }
5978 }
5979 
5980 // Sets the default_xml_generator attribute to the provided listener. The
5981 // listener is also added to the listener list and previous
5982 // default_xml_generator is removed from it and deleted. The listener can
5983 // also be NULL in which case it will not be added to the list. Does
5984 // nothing if the previous and the current listener objects are the same.
5985 void TestEventListeners::SetDefaultXmlGenerator(TestEventListener* listener) {
5986  if (default_xml_generator_ != listener) {
5987  // It is an error to pass this method a listener that is already in the
5988  // list.
5989  delete Release(default_xml_generator_);
5990  default_xml_generator_ = listener;
5991  if (listener != nullptr) Append(listener);
5992  }
5993 }
5994 
5995 // Controls whether events will be forwarded by the repeater to the
5996 // listeners in the list.
5997 bool TestEventListeners::EventForwardingEnabled() const {
5998  return repeater_->forwarding_enabled();
5999 }
6000 
6001 void TestEventListeners::SuppressEventForwarding() {
6002  repeater_->set_forwarding_enabled(false);
6003 }
6004 
6005 // class UnitTest
6006 
6007 // Gets the singleton UnitTest object. The first time this method is
6008 // called, a UnitTest object is constructed and returned. Consecutive
6009 // calls will return the same object.
6010 //
6011 // We don't protect this under mutex_ as a user is not supposed to
6012 // call this before main() starts, from which point on the return
6013 // value will never change.
6014 UnitTest* UnitTest::GetInstance() {
6015  // CodeGear C++Builder insists on a public destructor for the
6016  // default implementation. Use this implementation to keep good OO
6017  // design with private destructor.
6018 
6019 #if defined(__BORLANDC__)
6020  static UnitTest* const instance = new UnitTest;
6021  return instance;
6022 #else
6023  static UnitTest instance;
6024  return &instance;
6025 #endif // defined(__BORLANDC__)
6026 }
6027 
6028 // Gets the number of successful test suites.
6029 int UnitTest::successful_test_suite_count() const {
6030  return impl()->successful_test_suite_count();
6031 }
6032 
6033 // Gets the number of failed test suites.
6034 int UnitTest::failed_test_suite_count() const {
6035  return impl()->failed_test_suite_count();
6036 }
6037 
6038 // Gets the number of all test suites.
6039 int UnitTest::total_test_suite_count() const {
6040  return impl()->total_test_suite_count();
6041 }
6042 
6043 // Gets the number of all test suites that contain at least one test
6044 // that should run.
6045 int UnitTest::test_suite_to_run_count() const {
6046  return impl()->test_suite_to_run_count();
6047 }
6048 
6049 // Legacy API is deprecated but still available
6050 #ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
6051 int UnitTest::successful_test_case_count() const {
6052  return impl()->successful_test_suite_count();
6053 }
6054 int UnitTest::failed_test_case_count() const {
6055  return impl()->failed_test_suite_count();
6056 }
6057 int UnitTest::total_test_case_count() const {
6058  return impl()->total_test_suite_count();
6059 }
6060 int UnitTest::test_case_to_run_count() const {
6061  return impl()->test_suite_to_run_count();
6062 }
6063 #endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
6064 
6065 // Gets the number of successful tests.
6066 int UnitTest::successful_test_count() const {
6067  return impl()->successful_test_count();
6068 }
6069 
6070 // Gets the number of skipped tests.
6071 int UnitTest::skipped_test_count() const {
6072  return impl()->skipped_test_count();
6073 }
6074 
6075 // Gets the number of failed tests.
6076 int UnitTest::failed_test_count() const { return impl()->failed_test_count(); }
6077 
6078 // Gets the number of disabled tests that will be reported in the XML report.
6079 int UnitTest::reportable_disabled_test_count() const {
6080  return impl()->reportable_disabled_test_count();
6081 }
6082 
6083 // Gets the number of disabled tests.
6084 int UnitTest::disabled_test_count() const {
6085  return impl()->disabled_test_count();
6086 }
6087 
6088 // Gets the number of tests to be printed in the XML report.
6089 int UnitTest::reportable_test_count() const {
6090  return impl()->reportable_test_count();
6091 }
6092 
6093 // Gets the number of all tests.
6094 int UnitTest::total_test_count() const { return impl()->total_test_count(); }
6095 
6096 // Gets the number of tests that should run.
6097 int UnitTest::test_to_run_count() const { return impl()->test_to_run_count(); }
6098 
6099 // Gets the time of the test program start, in ms from the start of the
6100 // UNIX epoch.
6101 internal::TimeInMillis UnitTest::start_timestamp() const {
6102  return impl()->start_timestamp();
6103 }
6104 
6105 // Gets the elapsed time, in milliseconds.
6106 internal::TimeInMillis UnitTest::elapsed_time() const {
6107  return impl()->elapsed_time();
6108 }
6109 
6110 // Returns true iff the unit test passed (i.e. all test suites passed).
6111 bool UnitTest::Passed() const { return impl()->Passed(); }
6112 
6113 // Returns true iff the unit test failed (i.e. some test suite failed
6114 // or something outside of all tests failed).
6115 bool UnitTest::Failed() const { return impl()->Failed(); }
6116 
6117 // Gets the i-th test suite among all the test suites. i can range from 0 to
6118 // total_test_suite_count() - 1. If i is not in that range, returns NULL.
6119 const TestSuite* UnitTest::GetTestSuite(int i) const {
6120  return impl()->GetTestSuite(i);
6121 }
6122 
6123 // Legacy API is deprecated but still available
6124 #ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
6125 const TestCase* UnitTest::GetTestCase(int i) const {
6126  return impl()->GetTestCase(i);
6127 }
6128 #endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
6129 
6130 // Returns the TestResult containing information on test failures and
6131 // properties logged outside of individual test suites.
6132 const TestResult& UnitTest::ad_hoc_test_result() const {
6133  return *impl()->ad_hoc_test_result();
6134 }
6135 
6136 // Gets the i-th test suite among all the test suites. i can range from 0 to
6137 // total_test_suite_count() - 1. If i is not in that range, returns NULL.
6138 TestSuite* UnitTest::GetMutableTestSuite(int i) {
6139  return impl()->GetMutableSuiteCase(i);
6140 }
6141 
6142 // Returns the list of event listeners that can be used to track events
6143 // inside Google Test.
6144 TestEventListeners& UnitTest::listeners() {
6145  return *impl()->listeners();
6146 }
6147 
6148 // Registers and returns a global test environment. When a test
6149 // program is run, all global test environments will be set-up in the
6150 // order they were registered. After all tests in the program have
6151 // finished, all global test environments will be torn-down in the
6152 // *reverse* order they were registered.
6153 //
6154 // The UnitTest object takes ownership of the given environment.
6155 //
6156 // We don't protect this under mutex_, as we only support calling it
6157 // from the main thread.
6158 Environment* UnitTest::AddEnvironment(Environment* env) {
6159  if (env == nullptr) {
6160  return nullptr;
6161  }
6162 
6163  impl_->environments().push_back(env);
6164  return env;
6165 }
6166 
6167 // Adds a TestPartResult to the current TestResult object. All Google Test
6168 // assertion macros (e.g. ASSERT_TRUE, EXPECT_EQ, etc) eventually call
6169 // this to report their results. The user code should use the
6170 // assertion macros instead of calling this directly.
6171 void UnitTest::AddTestPartResult(
6172  TestPartResult::Type result_type,
6173  const char* file_name,
6174  int line_number,
6175  const std::string& message,
6176  const std::string& os_stack_trace) GTEST_LOCK_EXCLUDED_(mutex_) {
6177  Message msg;
6178  msg << message;
6179 
6180  internal::MutexLock lock(&mutex_);
6181  if (impl_->gtest_trace_stack().size() > 0) {
6182  msg << "\n" << GTEST_NAME_ << " trace:";
6183 
6184  for (int i = static_cast<int>(impl_->gtest_trace_stack().size());
6185  i > 0; --i) {
6186  const internal::TraceInfo& trace = impl_->gtest_trace_stack()[i - 1];
6187  msg << "\n" << internal::FormatFileLocation(trace.file, trace.line)
6188  << " " << trace.message;
6189  }
6190  }
6191 
6192  if (os_stack_trace.c_str() != nullptr && !os_stack_trace.empty()) {
6193  msg << internal::kStackTraceMarker << os_stack_trace;
6194  }
6195 
6196  const TestPartResult result = TestPartResult(
6197  result_type, file_name, line_number, msg.GetString().c_str());
6198  impl_->GetTestPartResultReporterForCurrentThread()->
6199  ReportTestPartResult(result);
6200 
6201  if (result_type != TestPartResult::kSuccess &&
6202  result_type != TestPartResult::kSkip) {
6203  // gtest_break_on_failure takes precedence over
6204  // gtest_throw_on_failure. This allows a user to set the latter
6205  // in the code (perhaps in order to use Google Test assertions
6206  // with another testing framework) and specify the former on the
6207  // command line for debugging.
6208  if (GTEST_FLAG(break_on_failure)) {
6209 #if GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_PHONE && !GTEST_OS_WINDOWS_RT
6210  // Using DebugBreak on Windows allows gtest to still break into a debugger
6211  // when a failure happens and both the --gtest_break_on_failure and
6212  // the --gtest_catch_exceptions flags are specified.
6213  DebugBreak();
6214 #elif (!defined(__native_client__)) && \
6215  ((defined(__clang__) || defined(__GNUC__)) && \
6216  (defined(__x86_64__) || defined(__i386__)))
6217  // with clang/gcc we can achieve the same effect on x86 by invoking int3
6218  asm("int3");
6219 #else
6220  // Dereference nullptr through a volatile pointer to prevent the compiler
6221  // from removing. We use this rather than abort() or __builtin_trap() for
6222  // portability: some debuggers don't correctly trap abort().
6223  *static_cast<volatile int*>(nullptr) = 1;
6224 #endif // GTEST_OS_WINDOWS
6225  } else if (GTEST_FLAG(throw_on_failure)) {
6226 #if GTEST_HAS_EXCEPTIONS
6227  throw internal::GoogleTestFailureException(result);
6228 #else
6229  // We cannot call abort() as it generates a pop-up in debug mode
6230  // that cannot be suppressed in VC 7.1 or below.
6231  exit(1);
6232 #endif
6233  }
6234  }
6235 }
6236 
6237 // Adds a TestProperty to the current TestResult object when invoked from
6238 // inside a test, to current TestSuite's ad_hoc_test_result_ when invoked
6239 // from SetUpTestSuite or TearDownTestSuite, or to the global property set
6240 // when invoked elsewhere. If the result already contains a property with
6241 // the same key, the value will be updated.
6242 void UnitTest::RecordProperty(const std::string& key,
6243  const std::string& value) {
6244  impl_->RecordProperty(TestProperty(key, value));
6245 }
6246 
6247 // Runs all tests in this UnitTest object and prints the result.
6248 // Returns 0 if successful, or 1 otherwise.
6249 //
6250 // We don't protect this under mutex_, as we only support calling it
6251 // from the main thread.
6252 int UnitTest::Run() {
6253  const bool in_death_test_child_process =
6254  internal::GTEST_FLAG(internal_run_death_test).length() > 0;
6255 
6256  // Google Test implements this protocol for catching that a test
6257  // program exits before returning control to Google Test:
6258  //
6259  // 1. Upon start, Google Test creates a file whose absolute path
6260  // is specified by the environment variable
6261  // TEST_PREMATURE_EXIT_FILE.
6262  // 2. When Google Test has finished its work, it deletes the file.
6263  //
6264  // This allows a test runner to set TEST_PREMATURE_EXIT_FILE before
6265  // running a Google-Test-based test program and check the existence
6266  // of the file at the end of the test execution to see if it has
6267  // exited prematurely.
6268 
6269  // If we are in the child process of a death test, don't
6270  // create/delete the premature exit file, as doing so is unnecessary
6271  // and will confuse the parent process. Otherwise, create/delete
6272  // the file upon entering/leaving this function. If the program
6273  // somehow exits before this function has a chance to return, the
6274  // premature-exit file will be left undeleted, causing a test runner
6275  // that understands the premature-exit-file protocol to report the
6276  // test as having failed.
6277  const internal::ScopedPrematureExitFile premature_exit_file(
6278  in_death_test_child_process
6279  ? nullptr
6280  : internal::posix::GetEnv("TEST_PREMATURE_EXIT_FILE"));
6281 
6282  // Captures the value of GTEST_FLAG(catch_exceptions). This value will be
6283  // used for the duration of the program.
6284  impl()->set_catch_exceptions(GTEST_FLAG(catch_exceptions));
6285 
6286 #if GTEST_OS_WINDOWS
6287  // Either the user wants Google Test to catch exceptions thrown by the
6288  // tests or this is executing in the context of death test child
6289  // process. In either case the user does not want to see pop-up dialogs
6290  // about crashes - they are expected.
6291  if (impl()->catch_exceptions() || in_death_test_child_process) {
6292 # if !GTEST_OS_WINDOWS_MOBILE && !GTEST_OS_WINDOWS_PHONE && !GTEST_OS_WINDOWS_RT
6293  // SetErrorMode doesn't exist on CE.
6294  SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOALIGNMENTFAULTEXCEPT |
6295  SEM_NOGPFAULTERRORBOX | SEM_NOOPENFILEERRORBOX);
6296 # endif // !GTEST_OS_WINDOWS_MOBILE
6297 
6298 # if (defined(_MSC_VER) || GTEST_OS_WINDOWS_MINGW) && !GTEST_OS_WINDOWS_MOBILE
6299  // Death test children can be terminated with _abort(). On Windows,
6300  // _abort() can show a dialog with a warning message. This forces the
6301  // abort message to go to stderr instead.
6302  _set_error_mode(_OUT_TO_STDERR);
6303 # endif
6304 
6305 # if defined(_MSC_VER) && !GTEST_OS_WINDOWS_MOBILE
6306  // In the debug version, Visual Studio pops up a separate dialog
6307  // offering a choice to debug the aborted program. We need to suppress
6308  // this dialog or it will pop up for every EXPECT/ASSERT_DEATH statement
6309  // executed. Google Test will notify the user of any unexpected
6310  // failure via stderr.
6311  if (!GTEST_FLAG(break_on_failure))
6312  _set_abort_behavior(
6313  0x0, // Clear the following flags:
6314  _WRITE_ABORT_MSG | _CALL_REPORTFAULT); // pop-up window, core dump.
6315 # endif
6316  }
6317 #endif // GTEST_OS_WINDOWS
6318 
6319  return internal::HandleExceptionsInMethodIfSupported(
6320  impl(),
6321  &internal::UnitTestImpl::RunAllTests,
6322  "auxiliary test code (environments or event listeners)") ? 0 : 1;
6323 }
6324 
6325 // Returns the working directory when the first TEST() or TEST_F() was
6326 // executed.
6327 const char* UnitTest::original_working_dir() const {
6328  return impl_->original_working_dir_.c_str();
6329 }
6330 
6331 // Returns the TestSuite object for the test that's currently running,
6332 // or NULL if no test is running.
6333 const TestSuite* UnitTest::current_test_suite() const
6334  GTEST_LOCK_EXCLUDED_(mutex_) {
6335  internal::MutexLock lock(&mutex_);
6336  return impl_->current_test_suite();
6337 }
6338 
6339 // Legacy API is still available but deprecated
6340 #ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
6341 const TestCase* UnitTest::current_test_case() const
6342  GTEST_LOCK_EXCLUDED_(mutex_) {
6343  internal::MutexLock lock(&mutex_);
6344  return impl_->current_test_suite();
6345 }
6346 #endif
6347 
6348 // Returns the TestInfo object for the test that's currently running,
6349 // or NULL if no test is running.
6350 const TestInfo* UnitTest::current_test_info() const
6351  GTEST_LOCK_EXCLUDED_(mutex_) {
6352  internal::MutexLock lock(&mutex_);
6353  return impl_->current_test_info();
6354 }
6355 
6356 // Returns the random seed used at the start of the current test run.
6357 int UnitTest::random_seed() const { return impl_->random_seed(); }
6358 
6359 // Returns ParameterizedTestSuiteRegistry object used to keep track of
6360 // value-parameterized tests and instantiate and register them.
6361 internal::ParameterizedTestSuiteRegistry&
6362 UnitTest::parameterized_test_registry() GTEST_LOCK_EXCLUDED_(mutex_) {
6363  return impl_->parameterized_test_registry();
6364 }
6365 
6366 // Creates an empty UnitTest.
6367 UnitTest::UnitTest() {
6368  impl_ = new internal::UnitTestImpl(this);
6369 }
6370 
6371 // Destructor of UnitTest.
6372 UnitTest::~UnitTest() {
6373  delete impl_;
6374 }
6375 
6376 // Pushes a trace defined by SCOPED_TRACE() on to the per-thread
6377 // Google Test trace stack.
6378 void UnitTest::PushGTestTrace(const internal::TraceInfo& trace)
6379  GTEST_LOCK_EXCLUDED_(mutex_) {
6380  internal::MutexLock lock(&mutex_);
6381  impl_->gtest_trace_stack().push_back(trace);
6382 }
6383 
6384 // Pops a trace from the per-thread Google Test trace stack.
6385 void UnitTest::PopGTestTrace()
6386  GTEST_LOCK_EXCLUDED_(mutex_) {
6387  internal::MutexLock lock(&mutex_);
6388  impl_->gtest_trace_stack().pop_back();
6389 }
6390 
6391 namespace internal {
6392 
6393 UnitTestImpl::UnitTestImpl(UnitTest* parent)
6394  : parent_(parent),
6395  GTEST_DISABLE_MSC_WARNINGS_PUSH_(4355 /* using this in initializer */)
6396  default_global_test_part_result_reporter_(this),
6397  default_per_thread_test_part_result_reporter_(this),
6398  GTEST_DISABLE_MSC_WARNINGS_POP_() global_test_part_result_repoter_(
6399  &default_global_test_part_result_reporter_),
6400  per_thread_test_part_result_reporter_(
6401  &default_per_thread_test_part_result_reporter_),
6402  parameterized_test_registry_(),
6403  parameterized_tests_registered_(false),
6404  last_death_test_suite_(-1),
6405  current_test_suite_(nullptr),
6406  current_test_info_(nullptr),
6407  ad_hoc_test_result_(),
6408  os_stack_trace_getter_(nullptr),
6409  post_flag_parse_init_performed_(false),
6410  random_seed_(0), // Will be overridden by the flag before first use.
6411  random_(0), // Will be reseeded before first use.
6412  start_timestamp_(0),
6413  elapsed_time_(0),
6414 #if GTEST_HAS_DEATH_TEST
6415  death_test_factory_(new DefaultDeathTestFactory),
6416 #endif
6417  // Will be overridden by the flag before first use.
6418  catch_exceptions_(false) {
6419  listeners()->SetDefaultResultPrinter(new PrettyUnitTestResultPrinter);
6420 }
6421 
6422 UnitTestImpl::~UnitTestImpl() {
6423  // Deletes every TestSuite.
6424  ForEach(test_suites_, internal::Delete<TestSuite>);
6425 
6426  // Deletes every Environment.
6427  ForEach(environments_, internal::Delete<Environment>);
6428 
6429  delete os_stack_trace_getter_;
6430 }
6431 
6432 // Adds a TestProperty to the current TestResult object when invoked in a
6433 // context of a test, to current test suite's ad_hoc_test_result when invoke
6434 // from SetUpTestSuite/TearDownTestSuite, or to the global property set
6435 // otherwise. If the result already contains a property with the same key,
6436 // the value will be updated.
6437 void UnitTestImpl::RecordProperty(const TestProperty& test_property) {
6438  std::string xml_element;
6439  TestResult* test_result; // TestResult appropriate for property recording.
6440 
6441  if (current_test_info_ != nullptr) {
6442  xml_element = "testcase";
6443  test_result = &(current_test_info_->result_);
6444  } else if (current_test_suite_ != nullptr) {
6445  xml_element = "testsuite";
6446  test_result = &(current_test_suite_->ad_hoc_test_result_);
6447  } else {
6448  xml_element = "testsuites";
6449  test_result = &ad_hoc_test_result_;
6450  }
6451  test_result->RecordProperty(xml_element, test_property);
6452 }
6453 
6454 #if GTEST_HAS_DEATH_TEST
6455 // Disables event forwarding if the control is currently in a death test
6456 // subprocess. Must not be called before InitGoogleTest.
6457 void UnitTestImpl::SuppressTestEventsIfInSubprocess() {
6458  if (internal_run_death_test_flag_.get() != nullptr)
6459  listeners()->SuppressEventForwarding();
6460 }
6461 #endif // GTEST_HAS_DEATH_TEST
6462 
6463 // Initializes event listeners performing XML output as specified by
6464 // UnitTestOptions. Must not be called before InitGoogleTest.
6465 void UnitTestImpl::ConfigureXmlOutput() {
6466  const std::string& output_format = UnitTestOptions::GetOutputFormat();
6467  if (output_format == "xml") {
6468  listeners()->SetDefaultXmlGenerator(new XmlUnitTestResultPrinter(
6469  UnitTestOptions::GetAbsolutePathToOutputFile().c_str()));
6470  } else if (output_format == "json") {
6471  listeners()->SetDefaultXmlGenerator(new JsonUnitTestResultPrinter(
6472  UnitTestOptions::GetAbsolutePathToOutputFile().c_str()));
6473  } else if (output_format != "") {
6474  GTEST_LOG_(WARNING) << "WARNING: unrecognized output format \""
6475  << output_format << "\" ignored.";
6476  }
6477 }
6478 
6479 #if GTEST_CAN_STREAM_RESULTS_
6480 // Initializes event listeners for streaming test results in string form.
6481 // Must not be called before InitGoogleTest.
6482 void UnitTestImpl::ConfigureStreamingOutput() {
6483  const std::string& target = GTEST_FLAG(stream_result_to);
6484  if (!target.empty()) {
6485  const size_t pos = target.find(':');
6486  if (pos != std::string::npos) {
6487  listeners()->Append(new StreamingListener(target.substr(0, pos),
6488  target.substr(pos+1)));
6489  } else {
6490  GTEST_LOG_(WARNING) << "unrecognized streaming target \"" << target
6491  << "\" ignored.";
6492  }
6493  }
6494 }
6495 #endif // GTEST_CAN_STREAM_RESULTS_
6496 
6497 // Performs initialization dependent upon flag values obtained in
6498 // ParseGoogleTestFlagsOnly. Is called from InitGoogleTest after the call to
6499 // ParseGoogleTestFlagsOnly. In case a user neglects to call InitGoogleTest
6500 // this function is also called from RunAllTests. Since this function can be
6501 // called more than once, it has to be idempotent.
6502 void UnitTestImpl::PostFlagParsingInit() {
6503  // Ensures that this function does not execute more than once.
6504  if (!post_flag_parse_init_performed_) {
6505  post_flag_parse_init_performed_ = true;
6506 
6507 #if defined(GTEST_CUSTOM_TEST_EVENT_LISTENER_)
6508  // Register to send notifications about key process state changes.
6509  listeners()->Append(new GTEST_CUSTOM_TEST_EVENT_LISTENER_());
6510 #endif // defined(GTEST_CUSTOM_TEST_EVENT_LISTENER_)
6511 
6512 #if GTEST_HAS_DEATH_TEST
6513  InitDeathTestSubprocessControlInfo();
6514  SuppressTestEventsIfInSubprocess();
6515 #endif // GTEST_HAS_DEATH_TEST
6516 
6517  // Registers parameterized tests. This makes parameterized tests
6518  // available to the UnitTest reflection API without running
6519  // RUN_ALL_TESTS.
6520  RegisterParameterizedTests();
6521 
6522  // Configures listeners for XML output. This makes it possible for users
6523  // to shut down the default XML output before invoking RUN_ALL_TESTS.
6524  ConfigureXmlOutput();
6525 
6526 #if GTEST_CAN_STREAM_RESULTS_
6527  // Configures listeners for streaming test results to the specified server.
6528  ConfigureStreamingOutput();
6529 #endif // GTEST_CAN_STREAM_RESULTS_
6530 
6531 #if GTEST_HAS_ABSL
6532  if (GTEST_FLAG(install_failure_signal_handler)) {
6533  absl::FailureSignalHandlerOptions options;
6534  absl::InstallFailureSignalHandler(options);
6535  }
6536 #endif // GTEST_HAS_ABSL
6537  }
6538 }
6539 
6540 // A predicate that checks the name of a TestSuite against a known
6541 // value.
6542 //
6543 // This is used for implementation of the UnitTest class only. We put
6544 // it in the anonymous namespace to prevent polluting the outer
6545 // namespace.
6546 //
6547 // TestSuiteNameIs is copyable.
6548 class TestSuiteNameIs {
6549  public:
6550  // Constructor.
6551  explicit TestSuiteNameIs(const std::string& name) : name_(name) {}
6552 
6553  // Returns true iff the name of test_suite matches name_.
6554  bool operator()(const TestSuite* test_suite) const {
6555  return test_suite != nullptr &&
6556  strcmp(test_suite->name(), name_.c_str()) == 0;
6557  }
6558 
6559  private:
6560  std::string name_;
6561 };
6562 
6563 // Finds and returns a TestSuite with the given name. If one doesn't
6564 // exist, creates one and returns it. It's the CALLER'S
6565 // RESPONSIBILITY to ensure that this function is only called WHEN THE
6566 // TESTS ARE NOT SHUFFLED.
6567 //
6568 // Arguments:
6569 //
6570 // test_suite_name: name of the test suite
6571 // type_param: the name of the test suite's type parameter, or NULL if
6572 // this is not a typed or a type-parameterized test suite.
6573 // set_up_tc: pointer to the function that sets up the test suite
6574 // tear_down_tc: pointer to the function that tears down the test suite
6575 TestSuite* UnitTestImpl::GetTestSuite(
6576  const char* test_suite_name, const char* type_param,
6577  internal::SetUpTestSuiteFunc set_up_tc,
6578  internal::TearDownTestSuiteFunc tear_down_tc) {
6579  // Can we find a TestSuite with the given name?
6580  const auto test_suite =
6581  std::find_if(test_suites_.rbegin(), test_suites_.rend(),
6582  TestSuiteNameIs(test_suite_name));
6583 
6584  if (test_suite != test_suites_.rend()) return *test_suite;
6585 
6586  // No. Let's create one.
6587  auto* const new_test_suite =
6588  new TestSuite(test_suite_name, type_param, set_up_tc, tear_down_tc);
6589 
6590  // Is this a death test suite?
6591  if (internal::UnitTestOptions::MatchesFilter(test_suite_name,
6592  kDeathTestSuiteFilter)) {
6593  // Yes. Inserts the test suite after the last death test suite
6594  // defined so far. This only works when the test suites haven't
6595  // been shuffled. Otherwise we may end up running a death test
6596  // after a non-death test.
6597  ++last_death_test_suite_;
6598  test_suites_.insert(test_suites_.begin() + last_death_test_suite_,
6599  new_test_suite);
6600  } else {
6601  // No. Appends to the end of the list.
6602  test_suites_.push_back(new_test_suite);
6603  }
6604 
6605  test_suite_indices_.push_back(static_cast<int>(test_suite_indices_.size()));
6606  return new_test_suite;
6607 }
6608 
6609 // Helpers for setting up / tearing down the given environment. They
6610 // are for use in the ForEach() function.
6611 static void SetUpEnvironment(Environment* env) { env->SetUp(); }
6612 static void TearDownEnvironment(Environment* env) { env->TearDown(); }
6613 
6614 // Runs all tests in this UnitTest object, prints the result, and
6615 // returns true if all tests are successful. If any exception is
6616 // thrown during a test, the test is considered to be failed, but the
6617 // rest of the tests will still be run.
6618 //
6619 // When parameterized tests are enabled, it expands and registers
6620 // parameterized tests first in RegisterParameterizedTests().
6621 // All other functions called from RunAllTests() may safely assume that
6622 // parameterized tests are ready to be counted and run.
6623 bool UnitTestImpl::RunAllTests() {
6624  // True iff Google Test is initialized before RUN_ALL_TESTS() is called.
6625  const bool gtest_is_initialized_before_run_all_tests = GTestIsInitialized();
6626 
6627  // Do not run any test if the --help flag was specified.
6628  if (g_help_flag)
6629  return true;
6630 
6631  // Repeats the call to the post-flag parsing initialization in case the
6632  // user didn't call InitGoogleTest.
6633  PostFlagParsingInit();
6634 
6635  // Even if sharding is not on, test runners may want to use the
6636  // GTEST_SHARD_STATUS_FILE to query whether the test supports the sharding
6637  // protocol.
6638  internal::WriteToShardStatusFileIfNeeded();
6639 
6640  // True iff we are in a subprocess for running a thread-safe-style
6641  // death test.
6642  bool in_subprocess_for_death_test = false;
6643 
6644 #if GTEST_HAS_DEATH_TEST
6645  in_subprocess_for_death_test =
6646  (internal_run_death_test_flag_.get() != nullptr);
6647 # if defined(GTEST_EXTRA_DEATH_TEST_CHILD_SETUP_)
6648  if (in_subprocess_for_death_test) {
6649  GTEST_EXTRA_DEATH_TEST_CHILD_SETUP_();
6650  }
6651 # endif // defined(GTEST_EXTRA_DEATH_TEST_CHILD_SETUP_)
6652 #endif // GTEST_HAS_DEATH_TEST
6653 
6654  const bool should_shard = ShouldShard(kTestTotalShards, kTestShardIndex,
6655  in_subprocess_for_death_test);
6656 
6657  // Compares the full test names with the filter to decide which
6658  // tests to run.
6659  const bool has_tests_to_run = FilterTests(should_shard
6660  ? HONOR_SHARDING_PROTOCOL
6661  : IGNORE_SHARDING_PROTOCOL) > 0;
6662 
6663  // Lists the tests and exits if the --gtest_list_tests flag was specified.
6664  if (GTEST_FLAG(list_tests)) {
6665  // This must be called *after* FilterTests() has been called.
6666  ListTestsMatchingFilter();
6667  return true;
6668  }
6669 
6670  random_seed_ = GTEST_FLAG(shuffle) ?
6671  GetRandomSeedFromFlag(GTEST_FLAG(random_seed)) : 0;
6672 
6673  // True iff at least one test has failed.
6674  bool failed = false;
6675 
6676  TestEventListener* repeater = listeners()->repeater();
6677 
6678  start_timestamp_ = GetTimeInMillis();
6679  repeater->OnTestProgramStart(*parent_);
6680 
6681  // How many times to repeat the tests? We don't want to repeat them
6682  // when we are inside the subprocess of a death test.
6683  const int repeat = in_subprocess_for_death_test ? 1 : GTEST_FLAG(repeat);
6684  // Repeats forever if the repeat count is negative.
6685  const bool forever = repeat < 0;
6686  for (int i = 0; forever || i != repeat; i++) {
6687  // We want to preserve failures generated by ad-hoc test
6688  // assertions executed before RUN_ALL_TESTS().
6689  ClearNonAdHocTestResult();
6690 
6691  const TimeInMillis start = GetTimeInMillis();
6692 
6693  // Shuffles test suites and tests if requested.
6694  if (has_tests_to_run && GTEST_FLAG(shuffle)) {
6695  random()->Reseed(random_seed_);
6696  // This should be done before calling OnTestIterationStart(),
6697  // such that a test event listener can see the actual test order
6698  // in the event.
6699  ShuffleTests();
6700  }
6701 
6702  // Tells the unit test event listeners that the tests are about to start.
6703  repeater->OnTestIterationStart(*parent_, i);
6704 
6705  // Runs each test suite if there is at least one test to run.
6706  if (has_tests_to_run) {
6707  // Sets up all environments beforehand.
6708  repeater->OnEnvironmentsSetUpStart(*parent_);
6709  ForEach(environments_, SetUpEnvironment);
6710  repeater->OnEnvironmentsSetUpEnd(*parent_);
6711 
6712  // Runs the tests only if there was no fatal failure during global
6713  // set-up.
6714  if (!Test::HasFatalFailure()) {
6715  for (int test_index = 0; test_index < total_test_suite_count();
6716  test_index++) {
6717  GetMutableSuiteCase(test_index)->Run();
6718  }
6719  }
6720 
6721  // Tears down all environments in reverse order afterwards.
6722  repeater->OnEnvironmentsTearDownStart(*parent_);
6723  std::for_each(environments_.rbegin(), environments_.rend(),
6724  TearDownEnvironment);
6725  repeater->OnEnvironmentsTearDownEnd(*parent_);
6726  }
6727 
6728  elapsed_time_ = GetTimeInMillis() - start;
6729 
6730  // Tells the unit test event listener that the tests have just finished.
6731  repeater->OnTestIterationEnd(*parent_, i);
6732 
6733  // Gets the result and clears it.
6734  if (!Passed()) {
6735  failed = true;
6736  }
6737 
6738  // Restores the original test order after the iteration. This
6739  // allows the user to quickly repro a failure that happens in the
6740  // N-th iteration without repeating the first (N - 1) iterations.
6741  // This is not enclosed in "if (GTEST_FLAG(shuffle)) { ... }", in
6742  // case the user somehow changes the value of the flag somewhere
6743  // (it's always safe to unshuffle the tests).
6744  UnshuffleTests();
6745 
6746  if (GTEST_FLAG(shuffle)) {
6747  // Picks a new random seed for each iteration.
6748  random_seed_ = GetNextRandomSeed(random_seed_);
6749  }
6750  }
6751 
6752  repeater->OnTestProgramEnd(*parent_);
6753 
6754  if (!gtest_is_initialized_before_run_all_tests) {
6755  ColoredPrintf(
6756  COLOR_RED,
6757  "\nIMPORTANT NOTICE - DO NOT IGNORE:\n"
6758  "This test program did NOT call " GTEST_INIT_GOOGLE_TEST_NAME_
6759  "() before calling RUN_ALL_TESTS(). This is INVALID. Soon " GTEST_NAME_
6760  " will start to enforce the valid usage. "
6761  "Please fix it ASAP, or IT WILL START TO FAIL.\n"); // NOLINT
6762 #if GTEST_FOR_GOOGLE_
6763  ColoredPrintf(COLOR_RED,
6764  "For more details, see http://wiki/Main/ValidGUnitMain.\n");
6765 #endif // GTEST_FOR_GOOGLE_
6766  }
6767 
6768  return !failed;
6769 }
6770 
6771 // Reads the GTEST_SHARD_STATUS_FILE environment variable, and creates the file
6772 // if the variable is present. If a file already exists at this location, this
6773 // function will write over it. If the variable is present, but the file cannot
6774 // be created, prints an error and exits.
6775 void WriteToShardStatusFileIfNeeded() {
6776  const char* const test_shard_file = posix::GetEnv(kTestShardStatusFile);
6777  if (test_shard_file != nullptr) {
6778  FILE* const file = posix::FOpen(test_shard_file, "w");
6779  if (file == nullptr) {
6780  ColoredPrintf(COLOR_RED,
6781  "Could not write to the test shard status file \"%s\" "
6782  "specified by the %s environment variable.\n",
6783  test_shard_file, kTestShardStatusFile);
6784  fflush(stdout);
6785  exit(EXIT_FAILURE);
6786  }
6787  fclose(file);
6788  }
6789 }
6790 
6791 // Checks whether sharding is enabled by examining the relevant
6792 // environment variable values. If the variables are present,
6793 // but inconsistent (i.e., shard_index >= total_shards), prints
6794 // an error and exits. If in_subprocess_for_death_test, sharding is
6795 // disabled because it must only be applied to the original test
6796 // process. Otherwise, we could filter out death tests we intended to execute.
6797 bool ShouldShard(const char* total_shards_env,
6798  const char* shard_index_env,
6799  bool in_subprocess_for_death_test) {
6800  if (in_subprocess_for_death_test) {
6801  return false;
6802  }
6803 
6804  const Int32 total_shards = Int32FromEnvOrDie(total_shards_env, -1);
6805  const Int32 shard_index = Int32FromEnvOrDie(shard_index_env, -1);
6806 
6807  if (total_shards == -1 && shard_index == -1) {
6808  return false;
6809  } else if (total_shards == -1 && shard_index != -1) {
6810  const Message msg = Message()
6811  << "Invalid environment variables: you have "
6812  << kTestShardIndex << " = " << shard_index
6813  << ", but have left " << kTestTotalShards << " unset.\n";
6814  ColoredPrintf(COLOR_RED, "%s", msg.GetString().c_str());
6815  fflush(stdout);
6816  exit(EXIT_FAILURE);
6817  } else if (total_shards != -1 && shard_index == -1) {
6818  const Message msg = Message()
6819  << "Invalid environment variables: you have "
6820  << kTestTotalShards << " = " << total_shards
6821  << ", but have left " << kTestShardIndex << " unset.\n";
6822  ColoredPrintf(COLOR_RED, "%s", msg.GetString().c_str());
6823  fflush(stdout);
6824  exit(EXIT_FAILURE);
6825  } else if (shard_index < 0 || shard_index >= total_shards) {
6826  const Message msg = Message()
6827  << "Invalid environment variables: we require 0 <= "
6828  << kTestShardIndex << " < " << kTestTotalShards
6829  << ", but you have " << kTestShardIndex << "=" << shard_index
6830  << ", " << kTestTotalShards << "=" << total_shards << ".\n";
6831  ColoredPrintf(COLOR_RED, "%s", msg.GetString().c_str());
6832  fflush(stdout);
6833  exit(EXIT_FAILURE);
6834  }
6835 
6836  return total_shards > 1;
6837 }
6838 
6839 // Parses the environment variable var as an Int32. If it is unset,
6840 // returns default_val. If it is not an Int32, prints an error
6841 // and aborts.
6842 Int32 Int32FromEnvOrDie(const char* var, Int32 default_val) {
6843  const char* str_val = posix::GetEnv(var);
6844  if (str_val == nullptr) {
6845  return default_val;
6846  }
6847 
6848  Int32 result;
6849  if (!ParseInt32(Message() << "The value of environment variable " << var,
6850  str_val, &result)) {
6851  exit(EXIT_FAILURE);
6852  }
6853  return result;
6854 }
6855 
6856 // Given the total number of shards, the shard index, and the test id,
6857 // returns true iff the test should be run on this shard. The test id is
6858 // some arbitrary but unique non-negative integer assigned to each test
6859 // method. Assumes that 0 <= shard_index < total_shards.
6860 bool ShouldRunTestOnShard(int total_shards, int shard_index, int test_id) {
6861  return (test_id % total_shards) == shard_index;
6862 }
6863 
6864 // Compares the name of each test with the user-specified filter to
6865 // decide whether the test should be run, then records the result in
6866 // each TestSuite and TestInfo object.
6867 // If shard_tests == true, further filters tests based on sharding
6868 // variables in the environment - see
6869 // https://github.com/google/googletest/blob/master/googletest/docs/advanced.md
6870 // . Returns the number of tests that should run.
6871 int UnitTestImpl::FilterTests(ReactionToSharding shard_tests) {
6872  const Int32 total_shards = shard_tests == HONOR_SHARDING_PROTOCOL ?
6873  Int32FromEnvOrDie(kTestTotalShards, -1) : -1;
6874  const Int32 shard_index = shard_tests == HONOR_SHARDING_PROTOCOL ?
6875  Int32FromEnvOrDie(kTestShardIndex, -1) : -1;
6876 
6877  // num_runnable_tests are the number of tests that will
6878  // run across all shards (i.e., match filter and are not disabled).
6879  // num_selected_tests are the number of tests to be run on
6880  // this shard.
6881  int num_runnable_tests = 0;
6882  int num_selected_tests = 0;
6883  for (auto* test_suite : test_suites_) {
6884  const std::string& test_suite_name = test_suite->name();
6885  test_suite->set_should_run(false);
6886 
6887  for (size_t j = 0; j < test_suite->test_info_list().size(); j++) {
6888  TestInfo* const test_info = test_suite->test_info_list()[j];
6889  const std::string test_name(test_info->name());
6890  // A test is disabled if test suite name or test name matches
6891  // kDisableTestFilter.
6892  const bool is_disabled = internal::UnitTestOptions::MatchesFilter(
6893  test_suite_name, kDisableTestFilter) ||
6894  internal::UnitTestOptions::MatchesFilter(
6895  test_name, kDisableTestFilter);
6896  test_info->is_disabled_ = is_disabled;
6897 
6898  const bool matches_filter = internal::UnitTestOptions::FilterMatchesTest(
6899  test_suite_name, test_name);
6900  test_info->matches_filter_ = matches_filter;
6901 
6902  const bool is_runnable =
6903  (GTEST_FLAG(also_run_disabled_tests) || !is_disabled) &&
6904  matches_filter;
6905 
6906  const bool is_in_another_shard =
6907  shard_tests != IGNORE_SHARDING_PROTOCOL &&
6908  !ShouldRunTestOnShard(total_shards, shard_index, num_runnable_tests);
6909  test_info->is_in_another_shard_ = is_in_another_shard;
6910  const bool is_selected = is_runnable && !is_in_another_shard;
6911 
6912  num_runnable_tests += is_runnable;
6913  num_selected_tests += is_selected;
6914 
6915  test_info->should_run_ = is_selected;
6916  test_suite->set_should_run(test_suite->should_run() || is_selected);
6917  }
6918  }
6919  return num_selected_tests;
6920 }
6921 
6922 // Prints the given C-string on a single line by replacing all '\n'
6923 // characters with string "\\n". If the output takes more than
6924 // max_length characters, only prints the first max_length characters
6925 // and "...".
6926 static void PrintOnOneLine(const char* str, int max_length) {
6927  if (str != nullptr) {
6928  for (int i = 0; *str != '\0'; ++str) {
6929  if (i >= max_length) {
6930  printf("...");
6931  break;
6932  }
6933  if (*str == '\n') {
6934  printf("\\n");
6935  i += 2;
6936  } else {
6937  printf("%c", *str);
6938  ++i;
6939  }
6940  }
6941  }
6942 }
6943 
6944 // Prints the names of the tests matching the user-specified filter flag.
6945 void UnitTestImpl::ListTestsMatchingFilter() {
6946  // Print at most this many characters for each type/value parameter.
6947  const int kMaxParamLength = 250;
6948 
6949  for (auto* test_suite : test_suites_) {
6950  bool printed_test_suite_name = false;
6951 
6952  for (size_t j = 0; j < test_suite->test_info_list().size(); j++) {
6953  const TestInfo* const test_info = test_suite->test_info_list()[j];
6954  if (test_info->matches_filter_) {
6955  if (!printed_test_suite_name) {
6956  printed_test_suite_name = true;
6957  printf("%s.", test_suite->name());
6958  if (test_suite->type_param() != nullptr) {
6959  printf(" # %s = ", kTypeParamLabel);
6960  // We print the type parameter on a single line to make
6961  // the output easy to parse by a program.
6962  PrintOnOneLine(test_suite->type_param(), kMaxParamLength);
6963  }
6964  printf("\n");
6965  }
6966  printf(" %s", test_info->name());
6967  if (test_info->value_param() != nullptr) {
6968  printf(" # %s = ", kValueParamLabel);
6969  // We print the value parameter on a single line to make the
6970  // output easy to parse by a program.
6971  PrintOnOneLine(test_info->value_param(), kMaxParamLength);
6972  }
6973  printf("\n");
6974  }
6975  }
6976  }
6977  fflush(stdout);
6978  const std::string& output_format = UnitTestOptions::GetOutputFormat();
6979  if (output_format == "xml" || output_format == "json") {
6980  FILE* fileout = OpenFileForWriting(
6981  UnitTestOptions::GetAbsolutePathToOutputFile().c_str());
6982  std::stringstream stream;
6983  if (output_format == "xml") {
6984  XmlUnitTestResultPrinter(
6985  UnitTestOptions::GetAbsolutePathToOutputFile().c_str())
6986  .PrintXmlTestsList(&stream, test_suites_);
6987  } else if (output_format == "json") {
6988  JsonUnitTestResultPrinter(
6989  UnitTestOptions::GetAbsolutePathToOutputFile().c_str())
6990  .PrintJsonTestList(&stream, test_suites_);
6991  }
6992  fprintf(fileout, "%s", StringStreamToString(&stream).c_str());
6993  fclose(fileout);
6994  }
6995 }
6996 
6997 // Sets the OS stack trace getter.
6998 //
6999 // Does nothing if the input and the current OS stack trace getter are
7000 // the same; otherwise, deletes the old getter and makes the input the
7001 // current getter.
7002 void UnitTestImpl::set_os_stack_trace_getter(
7003  OsStackTraceGetterInterface* getter) {
7004  if (os_stack_trace_getter_ != getter) {
7005  delete os_stack_trace_getter_;
7006  os_stack_trace_getter_ = getter;
7007  }
7008 }
7009 
7010 // Returns the current OS stack trace getter if it is not NULL;
7011 // otherwise, creates an OsStackTraceGetter, makes it the current
7012 // getter, and returns it.
7013 OsStackTraceGetterInterface* UnitTestImpl::os_stack_trace_getter() {
7014  if (os_stack_trace_getter_ == nullptr) {
7015 #ifdef GTEST_OS_STACK_TRACE_GETTER_
7016  os_stack_trace_getter_ = new GTEST_OS_STACK_TRACE_GETTER_;
7017 #else
7018  os_stack_trace_getter_ = new OsStackTraceGetter;
7019 #endif // GTEST_OS_STACK_TRACE_GETTER_
7020  }
7021 
7022  return os_stack_trace_getter_;
7023 }
7024 
7025 // Returns the most specific TestResult currently running.
7026 TestResult* UnitTestImpl::current_test_result() {
7027  if (current_test_info_ != nullptr) {
7028  return &current_test_info_->result_;
7029  }
7030  if (current_test_suite_ != nullptr) {
7031  return &current_test_suite_->ad_hoc_test_result_;
7032  }
7033  return &ad_hoc_test_result_;
7034 }
7035 
7036 // Shuffles all test suites, and the tests within each test suite,
7037 // making sure that death tests are still run first.
7038 void UnitTestImpl::ShuffleTests() {
7039  // Shuffles the death test suites.
7040  ShuffleRange(random(), 0, last_death_test_suite_ + 1, &test_suite_indices_);
7041 
7042  // Shuffles the non-death test suites.
7043  ShuffleRange(random(), last_death_test_suite_ + 1,
7044  static_cast<int>(test_suites_.size()), &test_suite_indices_);
7045 
7046  // Shuffles the tests inside each test suite.
7047  for (auto& test_suite : test_suites_) {
7048  test_suite->ShuffleTests(random());
7049  }
7050 }
7051 
7052 // Restores the test suites and tests to their order before the first shuffle.
7053 void UnitTestImpl::UnshuffleTests() {
7054  for (size_t i = 0; i < test_suites_.size(); i++) {
7055  // Unshuffles the tests in each test suite.
7056  test_suites_[i]->UnshuffleTests();
7057  // Resets the index of each test suite.
7058  test_suite_indices_[i] = static_cast<int>(i);
7059  }
7060 }
7061 
7062 // Returns the current OS stack trace as an std::string.
7063 //
7064 // The maximum number of stack frames to be included is specified by
7065 // the gtest_stack_trace_depth flag. The skip_count parameter
7066 // specifies the number of top frames to be skipped, which doesn't
7067 // count against the number of frames to be included.
7068 //
7069 // For example, if Foo() calls Bar(), which in turn calls
7070 // GetCurrentOsStackTraceExceptTop(..., 1), Foo() will be included in
7071 // the trace but Bar() and GetCurrentOsStackTraceExceptTop() won't.
7072 std::string GetCurrentOsStackTraceExceptTop(UnitTest* /*unit_test*/,
7073  int skip_count) {
7074  // We pass skip_count + 1 to skip this wrapper function in addition
7075  // to what the user really wants to skip.
7076  return GetUnitTestImpl()->CurrentOsStackTraceExceptTop(skip_count + 1);
7077 }
7078 
7079 // Used by the GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_ macro to
7080 // suppress unreachable code warnings.
7081 namespace {
7082 class ClassUniqueToAlwaysTrue {};
7083 }
7084 
7085 bool IsTrue(bool condition) { return condition; }
7086 
7087 bool AlwaysTrue() {
7088 #if GTEST_HAS_EXCEPTIONS
7089  // This condition is always false so AlwaysTrue() never actually throws,
7090  // but it makes the compiler think that it may throw.
7091  if (IsTrue(false))
7092  throw ClassUniqueToAlwaysTrue();
7093 #endif // GTEST_HAS_EXCEPTIONS
7094  return true;
7095 }
7096 
7097 // If *pstr starts with the given prefix, modifies *pstr to be right
7098 // past the prefix and returns true; otherwise leaves *pstr unchanged
7099 // and returns false. None of pstr, *pstr, and prefix can be NULL.
7100 bool SkipPrefix(const char* prefix, const char** pstr) {
7101  const size_t prefix_len = strlen(prefix);
7102  if (strncmp(*pstr, prefix, prefix_len) == 0) {
7103  *pstr += prefix_len;
7104  return true;
7105  }
7106  return false;
7107 }
7108 
7109 // Parses a string as a command line flag. The string should have
7110 // the format "--flag=value". When def_optional is true, the "=value"
7111 // part can be omitted.
7112 //
7113 // Returns the value of the flag, or NULL if the parsing failed.
7114 static const char* ParseFlagValue(const char* str, const char* flag,
7115  bool def_optional) {
7116  // str and flag must not be NULL.
7117  if (str == nullptr || flag == nullptr) return nullptr;
7118 
7119  // The flag must start with "--" followed by GTEST_FLAG_PREFIX_.
7120  const std::string flag_str = std::string("--") + GTEST_FLAG_PREFIX_ + flag;
7121  const size_t flag_len = flag_str.length();
7122  if (strncmp(str, flag_str.c_str(), flag_len) != 0) return nullptr;
7123 
7124  // Skips the flag name.
7125  const char* flag_end = str + flag_len;
7126 
7127  // When def_optional is true, it's OK to not have a "=value" part.
7128  if (def_optional && (flag_end[0] == '\0')) {
7129  return flag_end;
7130  }
7131 
7132  // If def_optional is true and there are more characters after the
7133  // flag name, or if def_optional is false, there must be a '=' after
7134  // the flag name.
7135  if (flag_end[0] != '=') return nullptr;
7136 
7137  // Returns the string after "=".
7138  return flag_end + 1;
7139 }
7140 
7141 // Parses a string for a bool flag, in the form of either
7142 // "--flag=value" or "--flag".
7143 //
7144 // In the former case, the value is taken as true as long as it does
7145 // not start with '0', 'f', or 'F'.
7146 //
7147 // In the latter case, the value is taken as true.
7148 //
7149 // On success, stores the value of the flag in *value, and returns
7150 // true. On failure, returns false without changing *value.
7151 static bool ParseBoolFlag(const char* str, const char* flag, bool* value) {
7152  // Gets the value of the flag as a string.
7153  const char* const value_str = ParseFlagValue(str, flag, true);
7154 
7155  // Aborts if the parsing failed.
7156  if (value_str == nullptr) return false;
7157 
7158  // Converts the string value to a bool.
7159  *value = !(*value_str == '0' || *value_str == 'f' || *value_str == 'F');
7160  return true;
7161 }
7162 
7163 // Parses a string for an Int32 flag, in the form of
7164 // "--flag=value".
7165 //
7166 // On success, stores the value of the flag in *value, and returns
7167 // true. On failure, returns false without changing *value.
7168 bool ParseInt32Flag(const char* str, const char* flag, Int32* value) {
7169  // Gets the value of the flag as a string.
7170  const char* const value_str = ParseFlagValue(str, flag, false);
7171 
7172  // Aborts if the parsing failed.
7173  if (value_str == nullptr) return false;
7174 
7175  // Sets *value to the value of the flag.
7176  return ParseInt32(Message() << "The value of flag --" << flag,
7177  value_str, value);
7178 }
7179 
7180 // Parses a string for a string flag, in the form of
7181 // "--flag=value".
7182 //
7183 // On success, stores the value of the flag in *value, and returns
7184 // true. On failure, returns false without changing *value.
7185 template <typename String>
7186 static bool ParseStringFlag(const char* str, const char* flag, String* value) {
7187  // Gets the value of the flag as a string.
7188  const char* const value_str = ParseFlagValue(str, flag, false);
7189 
7190  // Aborts if the parsing failed.
7191  if (value_str == nullptr) return false;
7192 
7193  // Sets *value to the value of the flag.
7194  *value = value_str;
7195  return true;
7196 }
7197 
7198 // Determines whether a string has a prefix that Google Test uses for its
7199 // flags, i.e., starts with GTEST_FLAG_PREFIX_ or GTEST_FLAG_PREFIX_DASH_.
7200 // If Google Test detects that a command line flag has its prefix but is not
7201 // recognized, it will print its help message. Flags starting with
7202 // GTEST_INTERNAL_PREFIX_ followed by "internal_" are considered Google Test
7203 // internal flags and do not trigger the help message.
7204 static bool HasGoogleTestFlagPrefix(const char* str) {
7205  return (SkipPrefix("--", &str) ||
7206  SkipPrefix("-", &str) ||
7207  SkipPrefix("/", &str)) &&
7208  !SkipPrefix(GTEST_FLAG_PREFIX_ "internal_", &str) &&
7209  (SkipPrefix(GTEST_FLAG_PREFIX_, &str) ||
7211 }
7212 
7213 // Prints a string containing code-encoded text. The following escape
7214 // sequences can be used in the string to control the text color:
7215 //
7216 // @@ prints a single '@' character.
7217 // @R changes the color to red.
7218 // @G changes the color to green.
7219 // @Y changes the color to yellow.
7220 // @D changes to the default terminal text color.
7221 //
7222 static void PrintColorEncoded(const char* str) {
7223  GTestColor color = COLOR_DEFAULT; // The current color.
7224 
7225  // Conceptually, we split the string into segments divided by escape
7226  // sequences. Then we print one segment at a time. At the end of
7227  // each iteration, the str pointer advances to the beginning of the
7228  // next segment.
7229  for (;;) {
7230  const char* p = strchr(str, '@');
7231  if (p == nullptr) {
7232  ColoredPrintf(color, "%s", str);
7233  return;
7234  }
7235 
7236  ColoredPrintf(color, "%s", std::string(str, p).c_str());
7237 
7238  const char ch = p[1];
7239  str = p + 2;
7240  if (ch == '@') {
7241  ColoredPrintf(color, "@");
7242  } else if (ch == 'D') {
7243  color = COLOR_DEFAULT;
7244  } else if (ch == 'R') {
7245  color = COLOR_RED;
7246  } else if (ch == 'G') {
7247  color = COLOR_GREEN;
7248  } else if (ch == 'Y') {
7249  color = COLOR_YELLOW;
7250  } else {
7251  --str;
7252  }
7253  }
7254 }
7255 
7256 static const char kColorEncodedHelpMessage[] =
7257 "This program contains tests written using " GTEST_NAME_ ". You can use the\n"
7258 "following command line flags to control its behavior:\n"
7259 "\n"
7260 "Test Selection:\n"
7261 " @G--" GTEST_FLAG_PREFIX_ "list_tests@D\n"
7262 " List the names of all tests instead of running them. The name of\n"
7263 " TEST(Foo, Bar) is \"Foo.Bar\".\n"
7264 " @G--" GTEST_FLAG_PREFIX_ "filter=@YPOSTIVE_PATTERNS"
7265  "[@G-@YNEGATIVE_PATTERNS]@D\n"
7266 " Run only the tests whose name matches one of the positive patterns but\n"
7267 " none of the negative patterns. '?' matches any single character; '*'\n"
7268 " matches any substring; ':' separates two patterns.\n"
7269 " @G--" GTEST_FLAG_PREFIX_ "also_run_disabled_tests@D\n"
7270 " Run all disabled tests too.\n"
7271 "\n"
7272 "Test Execution:\n"
7273 " @G--" GTEST_FLAG_PREFIX_ "repeat=@Y[COUNT]@D\n"
7274 " Run the tests repeatedly; use a negative count to repeat forever.\n"
7275 " @G--" GTEST_FLAG_PREFIX_ "shuffle@D\n"
7276 " Randomize tests' orders on every iteration.\n"
7277 " @G--" GTEST_FLAG_PREFIX_ "random_seed=@Y[NUMBER]@D\n"
7278 " Random number seed to use for shuffling test orders (between 1 and\n"
7279 " 99999, or 0 to use a seed based on the current time).\n"
7280 "\n"
7281 "Test Output:\n"
7282 " @G--" GTEST_FLAG_PREFIX_ "color=@Y(@Gyes@Y|@Gno@Y|@Gauto@Y)@D\n"
7283 " Enable/disable colored output. The default is @Gauto@D.\n"
7284 " -@G-" GTEST_FLAG_PREFIX_ "print_time=0@D\n"
7285 " Don't print the elapsed time of each test.\n"
7286 " @G--" GTEST_FLAG_PREFIX_ "output=@Y(@Gjson@Y|@Gxml@Y)[@G:@YDIRECTORY_PATH@G"
7287  GTEST_PATH_SEP_ "@Y|@G:@YFILE_PATH]@D\n"
7288 " Generate a JSON or XML report in the given directory or with the given\n"
7289 " file name. @YFILE_PATH@D defaults to @Gtest_detail.xml@D.\n"
7290 # if GTEST_CAN_STREAM_RESULTS_
7291 " @G--" GTEST_FLAG_PREFIX_ "stream_result_to=@YHOST@G:@YPORT@D\n"
7292 " Stream test results to the given server.\n"
7293 # endif // GTEST_CAN_STREAM_RESULTS_
7294 "\n"
7295 "Assertion Behavior:\n"
7296 # if GTEST_HAS_DEATH_TEST && !GTEST_OS_WINDOWS
7297 " @G--" GTEST_FLAG_PREFIX_ "death_test_style=@Y(@Gfast@Y|@Gthreadsafe@Y)@D\n"
7298 " Set the default death test style.\n"
7299 # endif // GTEST_HAS_DEATH_TEST && !GTEST_OS_WINDOWS
7300 " @G--" GTEST_FLAG_PREFIX_ "break_on_failure@D\n"
7301 " Turn assertion failures into debugger break-points.\n"
7302 " @G--" GTEST_FLAG_PREFIX_ "throw_on_failure@D\n"
7303 " Turn assertion failures into C++ exceptions for use by an external\n"
7304 " test framework.\n"
7305 " @G--" GTEST_FLAG_PREFIX_ "catch_exceptions=0@D\n"
7306 " Do not report exceptions as test failures. Instead, allow them\n"
7307 " to crash the program or throw a pop-up (on Windows).\n"
7308 "\n"
7309 "Except for @G--" GTEST_FLAG_PREFIX_ "list_tests@D, you can alternatively set "
7310  "the corresponding\n"
7311 "environment variable of a flag (all letters in upper-case). For example, to\n"
7312 "disable colored text output, you can either specify @G--" GTEST_FLAG_PREFIX_
7313  "color=no@D or set\n"
7314 "the @G" GTEST_FLAG_PREFIX_UPPER_ "COLOR@D environment variable to @Gno@D.\n"
7315 "\n"
7316 "For more information, please read the " GTEST_NAME_ " documentation at\n"
7317 "@G" GTEST_PROJECT_URL_ "@D. If you find a bug in " GTEST_NAME_ "\n"
7318 "(not one in your own code or tests), please report it to\n"
7319 "@G<" GTEST_DEV_EMAIL_ ">@D.\n";
7320 
7321 static bool ParseGoogleTestFlag(const char* const arg) {
7322  return ParseBoolFlag(arg, kAlsoRunDisabledTestsFlag,
7323  &GTEST_FLAG(also_run_disabled_tests)) ||
7324  ParseBoolFlag(arg, kBreakOnFailureFlag,
7325  &GTEST_FLAG(break_on_failure)) ||
7326  ParseBoolFlag(arg, kCatchExceptionsFlag,
7327  &GTEST_FLAG(catch_exceptions)) ||
7328  ParseStringFlag(arg, kColorFlag, &GTEST_FLAG(color)) ||
7329  ParseStringFlag(arg, kDeathTestStyleFlag,
7330  &GTEST_FLAG(death_test_style)) ||
7331  ParseBoolFlag(arg, kDeathTestUseFork,
7332  &GTEST_FLAG(death_test_use_fork)) ||
7333  ParseStringFlag(arg, kFilterFlag, &GTEST_FLAG(filter)) ||
7334  ParseStringFlag(arg, kInternalRunDeathTestFlag,
7335  &GTEST_FLAG(internal_run_death_test)) ||
7336  ParseBoolFlag(arg, kListTestsFlag, &GTEST_FLAG(list_tests)) ||
7337  ParseStringFlag(arg, kOutputFlag, &GTEST_FLAG(output)) ||
7338  ParseBoolFlag(arg, kPrintTimeFlag, &GTEST_FLAG(print_time)) ||
7339  ParseBoolFlag(arg, kPrintUTF8Flag, &GTEST_FLAG(print_utf8)) ||
7340  ParseInt32Flag(arg, kRandomSeedFlag, &GTEST_FLAG(random_seed)) ||
7341  ParseInt32Flag(arg, kRepeatFlag, &GTEST_FLAG(repeat)) ||
7342  ParseBoolFlag(arg, kShuffleFlag, &GTEST_FLAG(shuffle)) ||
7343  ParseInt32Flag(arg, kStackTraceDepthFlag,
7344  &GTEST_FLAG(stack_trace_depth)) ||
7345  ParseStringFlag(arg, kStreamResultToFlag,
7346  &GTEST_FLAG(stream_result_to)) ||
7347  ParseBoolFlag(arg, kThrowOnFailureFlag,
7348  &GTEST_FLAG(throw_on_failure));
7349 }
7350 
7351 #if GTEST_USE_OWN_FLAGFILE_FLAG_
7352 static void LoadFlagsFromFile(const std::string& path) {
7353  FILE* flagfile = posix::FOpen(path.c_str(), "r");
7354  if (!flagfile) {
7355  GTEST_LOG_(FATAL) << "Unable to open file \"" << GTEST_FLAG(flagfile)
7356  << "\"";
7357  }
7358  std::string contents(ReadEntireFile(flagfile));
7359  posix::FClose(flagfile);
7360  std::vector<std::string> lines;
7361  SplitString(contents, '\n', &lines);
7362  for (size_t i = 0; i < lines.size(); ++i) {
7363  if (lines[i].empty())
7364  continue;
7365  if (!ParseGoogleTestFlag(lines[i].c_str()))
7366  g_help_flag = true;
7367  }
7368 }
7369 #endif // GTEST_USE_OWN_FLAGFILE_FLAG_
7370 
7371 // Parses the command line for Google Test flags, without initializing
7372 // other parts of Google Test. The type parameter CharType can be
7373 // instantiated to either char or wchar_t.
7374 template <typename CharType>
7375 void ParseGoogleTestFlagsOnlyImpl(int* argc, CharType** argv) {
7376  for (int i = 1; i < *argc; i++) {
7377  const std::string arg_string = StreamableToString(argv[i]);
7378  const char* const arg = arg_string.c_str();
7379 
7380  using internal::ParseBoolFlag;
7381  using internal::ParseInt32Flag;
7382  using internal::ParseStringFlag;
7383 
7384  bool remove_flag = false;
7385  if (ParseGoogleTestFlag(arg)) {
7386  remove_flag = true;
7387 #if GTEST_USE_OWN_FLAGFILE_FLAG_
7388  } else if (ParseStringFlag(arg, kFlagfileFlag, &GTEST_FLAG(flagfile))) {
7389  LoadFlagsFromFile(GTEST_FLAG(flagfile));
7390  remove_flag = true;
7391 #endif // GTEST_USE_OWN_FLAGFILE_FLAG_
7392  } else if (arg_string == "--help" || arg_string == "-h" ||
7393  arg_string == "-?" || arg_string == "/?" ||
7394  HasGoogleTestFlagPrefix(arg)) {
7395  // Both help flag and unrecognized Google Test flags (excluding
7396  // internal ones) trigger help display.
7397  g_help_flag = true;
7398  }
7399 
7400  if (remove_flag) {
7401  // Shift the remainder of the argv list left by one. Note
7402  // that argv has (*argc + 1) elements, the last one always being
7403  // NULL. The following loop moves the trailing NULL element as
7404  // well.
7405  for (int j = i; j != *argc; j++) {
7406  argv[j] = argv[j + 1];
7407  }
7408 
7409  // Decrements the argument count.
7410  (*argc)--;
7411 
7412  // We also need to decrement the iterator as we just removed
7413  // an element.
7414  i--;
7415  }
7416  }
7417 
7418  if (g_help_flag) {
7419  // We print the help here instead of in RUN_ALL_TESTS(), as the
7420  // latter may not be called at all if the user is using Google
7421  // Test with another testing framework.
7422  PrintColorEncoded(kColorEncodedHelpMessage);
7423  }
7424 }
7425 
7426 // Parses the command line for Google Test flags, without initializing
7427 // other parts of Google Test.
7428 void ParseGoogleTestFlagsOnly(int* argc, char** argv) {
7429  ParseGoogleTestFlagsOnlyImpl(argc, argv);
7430 
7431  // Fix the value of *_NSGetArgc() on macOS, but iff
7432  // *_NSGetArgv() == argv
7433  // Only applicable to char** version of argv
7434 #if GTEST_OS_MAC
7435 #ifndef GTEST_OS_IOS
7436  if (*_NSGetArgv() == argv) {
7437  *_NSGetArgc() = *argc;
7438  }
7439 #endif
7440 #endif
7441 }
7442 void ParseGoogleTestFlagsOnly(int* argc, wchar_t** argv) {
7443  ParseGoogleTestFlagsOnlyImpl(argc, argv);
7444 }
7445 
7446 // The internal implementation of InitGoogleTest().
7447 //
7448 // The type parameter CharType can be instantiated to either char or
7449 // wchar_t.
7450 template <typename CharType>
7451 void InitGoogleTestImpl(int* argc, CharType** argv) {
7452  // We don't want to run the initialization code twice.
7453  if (GTestIsInitialized()) return;
7454 
7455  if (*argc <= 0) return;
7456 
7457  g_argvs.clear();
7458  for (int i = 0; i != *argc; i++) {
7459  g_argvs.push_back(StreamableToString(argv[i]));
7460  }
7461 
7462 #if GTEST_HAS_ABSL
7463  absl::InitializeSymbolizer(g_argvs[0].c_str());
7464 #endif // GTEST_HAS_ABSL
7465 
7466  ParseGoogleTestFlagsOnly(argc, argv);
7467  GetUnitTestImpl()->PostFlagParsingInit();
7468 }
7469 
7470 } // namespace internal
7471 
7472 // Initializes Google Test. This must be called before calling
7473 // RUN_ALL_TESTS(). In particular, it parses a command line for the
7474 // flags that Google Test recognizes. Whenever a Google Test flag is
7475 // seen, it is removed from argv, and *argc is decremented.
7476 //
7477 // No value is returned. Instead, the Google Test flag variables are
7478 // updated.
7479 //
7480 // Calling the function for the second time has no user-visible effect.
7481 void InitGoogleTest(int* argc, char** argv) {
7482 #if defined(GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_)
7483  GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_(argc, argv);
7484 #else // defined(GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_)
7485  internal::InitGoogleTestImpl(argc, argv);
7486 #endif // defined(GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_)
7487 }
7488 
7489 // This overloaded version can be used in Windows programs compiled in
7490 // UNICODE mode.
7491 void InitGoogleTest(int* argc, wchar_t** argv) {
7492 #if defined(GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_)
7493  GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_(argc, argv);
7494 #else // defined(GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_)
7495  internal::InitGoogleTestImpl(argc, argv);
7496 #endif // defined(GTEST_CUSTOM_INIT_GOOGLE_TEST_FUNCTION_)
7497 }
7498 
7499 std::string TempDir() {
7500 #if defined(GTEST_CUSTOM_TEMPDIR_FUNCTION_)
7501  return GTEST_CUSTOM_TEMPDIR_FUNCTION_();
7502 #endif
7503 
7504 #if GTEST_OS_WINDOWS_MOBILE
7505  return "\\temp\\";
7506 #elif GTEST_OS_WINDOWS
7507  const char* temp_dir = internal::posix::GetEnv("TEMP");
7508  if (temp_dir == nullptr || temp_dir[0] == '\0')
7509  return "\\temp\\";
7510  else if (temp_dir[strlen(temp_dir) - 1] == '\\')
7511  return temp_dir;
7512  else
7513  return std::string(temp_dir) + "\\";
7514 #elif GTEST_OS_LINUX_ANDROID
7515  return "/sdcard/";
7516 #else
7517  return "/tmp/";
7518 #endif // GTEST_OS_WINDOWS_MOBILE
7519 }
7520 
7521 // Class ScopedTrace
7522 
7523 // Pushes the given source file location and message onto a per-thread
7524 // trace stack maintained by Google Test.
7525 void ScopedTrace::PushTrace(const char* file, int line, std::string message) {
7526  internal::TraceInfo trace;
7527  trace.file = file;
7528  trace.line = line;
7529  trace.message.swap(message);
7530 
7531  UnitTest::GetInstance()->PushGTestTrace(trace);
7532 }
7533 
7534 // Pops the info pushed by the c'tor.
7535 ScopedTrace::~ScopedTrace()
7536  GTEST_LOCK_EXCLUDED_(&UnitTest::mutex_) {
7537  UnitTest::GetInstance()->PopGTestTrace();
7538 }
7539 
7540 } // namespace testing
7541 // Copyright 2005, Google Inc.
7542 // All rights reserved.
7543 //
7544 // Redistribution and use in source and binary forms, with or without
7545 // modification, are permitted provided that the following conditions are
7546 // met:
7547 //
7548 // * Redistributions of source code must retain the above copyright
7549 // notice, this list of conditions and the following disclaimer.
7550 // * Redistributions in binary form must reproduce the above
7551 // copyright notice, this list of conditions and the following disclaimer
7552 // in the documentation and/or other materials provided with the
7553 // distribution.
7554 // * Neither the name of Google Inc. nor the names of its
7555 // contributors may be used to endorse or promote products derived from
7556 // this software without specific prior written permission.
7557 //
7558 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
7559 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
7560 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
7561 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
7562 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
7563 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
7564 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
7565 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
7566 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
7567 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
7568 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
7569 
7570 //
7571 // This file implements death tests.
7572 
7573 
7574 #include <utility>
7575 
7576 
7577 #if GTEST_HAS_DEATH_TEST
7578 
7579 # if GTEST_OS_MAC
7580 # include <crt_externs.h>
7581 # endif // GTEST_OS_MAC
7582 
7583 # include <errno.h>
7584 # include <fcntl.h>
7585 # include <limits.h>
7586 
7587 # if GTEST_OS_LINUX
7588 # include <signal.h>
7589 # endif // GTEST_OS_LINUX
7590 
7591 # include <stdarg.h>
7592 
7593 # if GTEST_OS_WINDOWS
7594 # include <windows.h>
7595 # else
7596 # include <sys/mman.h>
7597 # include <sys/wait.h>
7598 # endif // GTEST_OS_WINDOWS
7599 
7600 # if GTEST_OS_QNX
7601 # include <spawn.h>
7602 # endif // GTEST_OS_QNX
7603 
7604 # if GTEST_OS_FUCHSIA
7605 # include <lib/fdio/io.h>
7606 # include <lib/fdio/spawn.h>
7607 # include <lib/fdio/util.h>
7608 # include <lib/zx/socket.h>
7609 # include <lib/zx/port.h>
7610 # include <lib/zx/process.h>
7611 # include <zircon/processargs.h>
7612 # include <zircon/syscalls.h>
7613 # include <zircon/syscalls/policy.h>
7614 # include <zircon/syscalls/port.h>
7615 # endif // GTEST_OS_FUCHSIA
7616 
7617 #endif // GTEST_HAS_DEATH_TEST
7618 
7619 
7620 namespace testing {
7621 
7622 // Constants.
7623 
7624 // The default death test style.
7625 //
7626 // This is defined in internal/gtest-port.h as "fast", but can be overridden by
7627 // a definition in internal/custom/gtest-port.h. The recommended value, which is
7628 // used internally at Google, is "threadsafe".
7629 static const char kDefaultDeathTestStyle[] = GTEST_DEFAULT_DEATH_TEST_STYLE;
7630 
7632  death_test_style,
7633  internal::StringFromGTestEnv("death_test_style", kDefaultDeathTestStyle),
7634  "Indicates how to run a death test in a forked child process: "
7635  "\"threadsafe\" (child process re-executes the test binary "
7636  "from the beginning, running only the specific death test) or "
7637  "\"fast\" (child process runs the death test immediately "
7638  "after forking).");
7639 
7641  death_test_use_fork,
7642  internal::BoolFromGTestEnv("death_test_use_fork", false),
7643  "Instructs to use fork()/_exit() instead of clone() in death tests. "
7644  "Ignored and always uses fork() on POSIX systems where clone() is not "
7645  "implemented. Useful when running under valgrind or similar tools if "
7646  "those do not support clone(). Valgrind 3.3.1 will just fail if "
7647  "it sees an unsupported combination of clone() flags. "
7648  "It is not recommended to use this flag w/o valgrind though it will "
7649  "work in 99% of the cases. Once valgrind is fixed, this flag will "
7650  "most likely be removed.");
7651 
7652 namespace internal {
7654  internal_run_death_test, "",
7655  "Indicates the file, line number, temporal index of "
7656  "the single death test to run, and a file descriptor to "
7657  "which a success code may be sent, all separated by "
7658  "the '|' characters. This flag is specified if and only if the current "
7659  "process is a sub-process launched for running a thread-safe "
7660  "death test. FOR INTERNAL USE ONLY.");
7661 } // namespace internal
7662 
7663 #if GTEST_HAS_DEATH_TEST
7664 
7665 namespace internal {
7666 
7667 // Valid only for fast death tests. Indicates the code is running in the
7668 // child process of a fast style death test.
7669 # if !GTEST_OS_WINDOWS && !GTEST_OS_FUCHSIA
7670 static bool g_in_fast_death_test_child = false;
7671 # endif
7672 
7673 // Returns a Boolean value indicating whether the caller is currently
7674 // executing in the context of the death test child process. Tools such as
7675 // Valgrind heap checkers may need this to modify their behavior in death
7676 // tests. IMPORTANT: This is an internal utility. Using it may break the
7677 // implementation of death tests. User code MUST NOT use it.
7678 bool InDeathTestChild() {
7679 # if GTEST_OS_WINDOWS || GTEST_OS_FUCHSIA
7680 
7681  // On Windows and Fuchsia, death tests are thread-safe regardless of the value
7682  // of the death_test_style flag.
7683  return !GTEST_FLAG(internal_run_death_test).empty();
7684 
7685 # else
7686 
7687  if (GTEST_FLAG(death_test_style) == "threadsafe")
7688  return !GTEST_FLAG(internal_run_death_test).empty();
7689  else
7690  return g_in_fast_death_test_child;
7691 #endif
7692 }
7693 
7694 } // namespace internal
7695 
7696 // ExitedWithCode constructor.
7697 ExitedWithCode::ExitedWithCode(int exit_code) : exit_code_(exit_code) {
7698 }
7699 
7700 // ExitedWithCode function-call operator.
7701 bool ExitedWithCode::operator()(int exit_status) const {
7702 # if GTEST_OS_WINDOWS || GTEST_OS_FUCHSIA
7703 
7704  return exit_status == exit_code_;
7705 
7706 # else
7707 
7708  return WIFEXITED(exit_status) && WEXITSTATUS(exit_status) == exit_code_;
7709 
7710 # endif // GTEST_OS_WINDOWS || GTEST_OS_FUCHSIA
7711 }
7712 
7713 # if !GTEST_OS_WINDOWS && !GTEST_OS_FUCHSIA
7714 // KilledBySignal constructor.
7715 KilledBySignal::KilledBySignal(int signum) : signum_(signum) {
7716 }
7717 
7718 // KilledBySignal function-call operator.
7719 bool KilledBySignal::operator()(int exit_status) const {
7720 # if defined(GTEST_KILLED_BY_SIGNAL_OVERRIDE_)
7721  {
7722  bool result;
7723  if (GTEST_KILLED_BY_SIGNAL_OVERRIDE_(signum_, exit_status, &result)) {
7724  return result;
7725  }
7726  }
7727 # endif // defined(GTEST_KILLED_BY_SIGNAL_OVERRIDE_)
7728  return WIFSIGNALED(exit_status) && WTERMSIG(exit_status) == signum_;
7729 }
7730 # endif // !GTEST_OS_WINDOWS && !GTEST_OS_FUCHSIA
7731 
7732 namespace internal {
7733 
7734 // Utilities needed for death tests.
7735 
7736 // Generates a textual description of a given exit code, in the format
7737 // specified by wait(2).
7738 static std::string ExitSummary(int exit_code) {
7739  Message m;
7740 
7741 # if GTEST_OS_WINDOWS || GTEST_OS_FUCHSIA
7742 
7743  m << "Exited with exit status " << exit_code;
7744 
7745 # else
7746 
7747  if (WIFEXITED(exit_code)) {
7748  m << "Exited with exit status " << WEXITSTATUS(exit_code);
7749  } else if (WIFSIGNALED(exit_code)) {
7750  m << "Terminated by signal " << WTERMSIG(exit_code);
7751  }
7752 # ifdef WCOREDUMP
7753  if (WCOREDUMP(exit_code)) {
7754  m << " (core dumped)";
7755  }
7756 # endif
7757 # endif // GTEST_OS_WINDOWS || GTEST_OS_FUCHSIA
7758 
7759  return m.GetString();
7760 }
7761 
7762 // Returns true if exit_status describes a process that was terminated
7763 // by a signal, or exited normally with a nonzero exit code.
7764 bool ExitedUnsuccessfully(int exit_status) {
7765  return !ExitedWithCode(0)(exit_status);
7766 }
7767 
7768 # if !GTEST_OS_WINDOWS && !GTEST_OS_FUCHSIA
7769 // Generates a textual failure message when a death test finds more than
7770 // one thread running, or cannot determine the number of threads, prior
7771 // to executing the given statement. It is the responsibility of the
7772 // caller not to pass a thread_count of 1.
7773 static std::string DeathTestThreadWarning(size_t thread_count) {
7774  Message msg;
7775  msg << "Death tests use fork(), which is unsafe particularly"
7776  << " in a threaded context. For this test, " << GTEST_NAME_ << " ";
7777  if (thread_count == 0) {
7778  msg << "couldn't detect the number of threads.";
7779  } else {
7780  msg << "detected " << thread_count << " threads.";
7781  }
7782  msg << " See "
7783  "https://github.com/google/googletest/blob/master/googletest/docs/"
7784  "advanced.md#death-tests-and-threads"
7785  << " for more explanation and suggested solutions, especially if"
7786  << " this is the last message you see before your test times out.";
7787  return msg.GetString();
7788 }
7789 # endif // !GTEST_OS_WINDOWS && !GTEST_OS_FUCHSIA
7790 
7791 // Flag characters for reporting a death test that did not die.
7792 static const char kDeathTestLived = 'L';
7793 static const char kDeathTestReturned = 'R';
7794 static const char kDeathTestThrew = 'T';
7795 static const char kDeathTestInternalError = 'I';
7796 
7797 #if GTEST_OS_FUCHSIA
7798 
7799 // File descriptor used for the pipe in the child process.
7800 static const int kFuchsiaReadPipeFd = 3;
7801 
7802 #endif
7803 
7804 // An enumeration describing all of the possible ways that a death test can
7805 // conclude. DIED means that the process died while executing the test
7806 // code; LIVED means that process lived beyond the end of the test code;
7807 // RETURNED means that the test statement attempted to execute a return
7808 // statement, which is not allowed; THREW means that the test statement
7809 // returned control by throwing an exception. IN_PROGRESS means the test
7810 // has not yet concluded.
7811 enum DeathTestOutcome { IN_PROGRESS, DIED, LIVED, RETURNED, THREW };
7812 
7813 // Routine for aborting the program which is safe to call from an
7814 // exec-style death test child process, in which case the error
7815 // message is propagated back to the parent process. Otherwise, the
7816 // message is simply printed to stderr. In either case, the program
7817 // then exits with status 1.
7818 static void DeathTestAbort(const std::string& message) {
7819  // On a POSIX system, this function may be called from a threadsafe-style
7820  // death test child process, which operates on a very small stack. Use
7821  // the heap for any additional non-minuscule memory requirements.
7822  const InternalRunDeathTestFlag* const flag =
7823  GetUnitTestImpl()->internal_run_death_test_flag();
7824  if (flag != nullptr) {
7825  FILE* parent = posix::FDOpen(flag->write_fd(), "w");
7826  fputc(kDeathTestInternalError, parent);
7827  fprintf(parent, "%s", message.c_str());
7828  fflush(parent);
7829  _exit(1);
7830  } else {
7831  fprintf(stderr, "%s", message.c_str());
7832  fflush(stderr);
7833  posix::Abort();
7834  }
7835 }
7836 
7837 // A replacement for CHECK that calls DeathTestAbort if the assertion
7838 // fails.
7839 # define GTEST_DEATH_TEST_CHECK_(expression) \
7840  do { \
7841  if (!::testing::internal::IsTrue(expression)) { \
7842  DeathTestAbort( \
7843  ::std::string("CHECK failed: File ") + __FILE__ + ", line " \
7844  + ::testing::internal::StreamableToString(__LINE__) + ": " \
7845  + #expression); \
7846  } \
7847  } while (::testing::internal::AlwaysFalse())
7848 
7849 // This macro is similar to GTEST_DEATH_TEST_CHECK_, but it is meant for
7850 // evaluating any system call that fulfills two conditions: it must return
7851 // -1 on failure, and set errno to EINTR when it is interrupted and
7852 // should be tried again. The macro expands to a loop that repeatedly
7853 // evaluates the expression as long as it evaluates to -1 and sets
7854 // errno to EINTR. If the expression evaluates to -1 but errno is
7855 // something other than EINTR, DeathTestAbort is called.
7856 # define GTEST_DEATH_TEST_CHECK_SYSCALL_(expression) \
7857  do { \
7858  int gtest_retval; \
7859  do { \
7860  gtest_retval = (expression); \
7861  } while (gtest_retval == -1 && errno == EINTR); \
7862  if (gtest_retval == -1) { \
7863  DeathTestAbort( \
7864  ::std::string("CHECK failed: File ") + __FILE__ + ", line " \
7865  + ::testing::internal::StreamableToString(__LINE__) + ": " \
7866  + #expression + " != -1"); \
7867  } \
7868  } while (::testing::internal::AlwaysFalse())
7869 
7870 // Returns the message describing the last system error in errno.
7871 std::string GetLastErrnoDescription() {
7872  return errno == 0 ? "" : posix::StrError(errno);
7873 }
7874 
7875 // This is called from a death test parent process to read a failure
7876 // message from the death test child process and log it with the FATAL
7877 // severity. On Windows, the message is read from a pipe handle. On other
7878 // platforms, it is read from a file descriptor.
7879 static void FailFromInternalError(int fd) {
7880  Message error;
7881  char buffer[256];
7882  int num_read;
7883 
7884  do {
7885  while ((num_read = posix::Read(fd, buffer, 255)) > 0) {
7886  buffer[num_read] = '\0';
7887  error << buffer;
7888  }
7889  } while (num_read == -1 && errno == EINTR);
7890 
7891  if (num_read == 0) {
7892  GTEST_LOG_(FATAL) << error.GetString();
7893  } else {
7894  const int last_error = errno;
7895  GTEST_LOG_(FATAL) << "Error while reading death test internal: "
7896  << GetLastErrnoDescription() << " [" << last_error << "]";
7897  }
7898 }
7899 
7900 // Death test constructor. Increments the running death test count
7901 // for the current test.
7902 DeathTest::DeathTest() {
7903  TestInfo* const info = GetUnitTestImpl()->current_test_info();
7904  if (info == nullptr) {
7905  DeathTestAbort("Cannot run a death test outside of a TEST or "
7906  "TEST_F construct");
7907  }
7908 }
7909 
7910 // Creates and returns a death test by dispatching to the current
7911 // death test factory.
7912 bool DeathTest::Create(const char* statement,
7913  Matcher<const std::string&> matcher, const char* file,
7914  int line, DeathTest** test) {
7915  return GetUnitTestImpl()->death_test_factory()->Create(
7916  statement, std::move(matcher), file, line, test);
7917 }
7918 
7919 const char* DeathTest::LastMessage() {
7920  return last_death_test_message_.c_str();
7921 }
7922 
7923 void DeathTest::set_last_death_test_message(const std::string& message) {
7924  last_death_test_message_ = message;
7925 }
7926 
7927 std::string DeathTest::last_death_test_message_;
7928 
7929 // Provides cross platform implementation for some death functionality.
7930 class DeathTestImpl : public DeathTest {
7931  protected:
7932  DeathTestImpl(const char* a_statement, Matcher<const std::string&> matcher)
7933  : statement_(a_statement),
7934  matcher_(std::move(matcher)),
7935  spawned_(false),
7936  status_(-1),
7937  outcome_(IN_PROGRESS),
7938  read_fd_(-1),
7939  write_fd_(-1) {}
7940 
7941  // read_fd_ is expected to be closed and cleared by a derived class.
7942  ~DeathTestImpl() override { GTEST_DEATH_TEST_CHECK_(read_fd_ == -1); }
7943 
7944  void Abort(AbortReason reason) override;
7945  bool Passed(bool status_ok) override;
7946 
7947  const char* statement() const { return statement_; }
7948  bool spawned() const { return spawned_; }
7949  void set_spawned(bool is_spawned) { spawned_ = is_spawned; }
7950  int status() const { return status_; }
7951  void set_status(int a_status) { status_ = a_status; }
7952  DeathTestOutcome outcome() const { return outcome_; }
7953  void set_outcome(DeathTestOutcome an_outcome) { outcome_ = an_outcome; }
7954  int read_fd() const { return read_fd_; }
7955  void set_read_fd(int fd) { read_fd_ = fd; }
7956  int write_fd() const { return write_fd_; }
7957  void set_write_fd(int fd) { write_fd_ = fd; }
7958 
7959  // Called in the parent process only. Reads the result code of the death
7960  // test child process via a pipe, interprets it to set the outcome_
7961  // member, and closes read_fd_. Outputs diagnostics and terminates in
7962  // case of unexpected codes.
7963  void ReadAndInterpretStatusByte();
7964 
7965  // Returns stderr output from the child process.
7966  virtual std::string GetErrorLogs();
7967 
7968  private:
7969  // The textual content of the code this object is testing. This class
7970  // doesn't own this string and should not attempt to delete it.
7971  const char* const statement_;
7972  // A matcher that's expected to match the stderr output by the child process.
7973  Matcher<const std::string&> matcher_;
7974  // True if the death test child process has been successfully spawned.
7975  bool spawned_;
7976  // The exit status of the child process.
7977  int status_;
7978  // How the death test concluded.
7979  DeathTestOutcome outcome_;
7980  // Descriptor to the read end of the pipe to the child process. It is
7981  // always -1 in the child process. The child keeps its write end of the
7982  // pipe in write_fd_.
7983  int read_fd_;
7984  // Descriptor to the child's write end of the pipe to the parent process.
7985  // It is always -1 in the parent process. The parent keeps its end of the
7986  // pipe in read_fd_.
7987  int write_fd_;
7988 };
7989 
7990 // Called in the parent process only. Reads the result code of the death
7991 // test child process via a pipe, interprets it to set the outcome_
7992 // member, and closes read_fd_. Outputs diagnostics and terminates in
7993 // case of unexpected codes.
7994 void DeathTestImpl::ReadAndInterpretStatusByte() {
7995  char flag;
7996  int bytes_read;
7997 
7998  // The read() here blocks until data is available (signifying the
7999  // failure of the death test) or until the pipe is closed (signifying
8000  // its success), so it's okay to call this in the parent before
8001  // the child process has exited.
8002  do {
8003  bytes_read = posix::Read(read_fd(), &flag, 1);
8004  } while (bytes_read == -1 && errno == EINTR);
8005 
8006  if (bytes_read == 0) {
8007  set_outcome(DIED);
8008  } else if (bytes_read == 1) {
8009  switch (flag) {
8010  case kDeathTestReturned:
8011  set_outcome(RETURNED);
8012  break;
8013  case kDeathTestThrew:
8014  set_outcome(THREW);
8015  break;
8016  case kDeathTestLived:
8017  set_outcome(LIVED);
8018  break;
8019  case kDeathTestInternalError:
8020  FailFromInternalError(read_fd()); // Does not return.
8021  break;
8022  default:
8023  GTEST_LOG_(FATAL) << "Death test child process reported "
8024  << "unexpected status byte ("
8025  << static_cast<unsigned int>(flag) << ")";
8026  }
8027  } else {
8028  GTEST_LOG_(FATAL) << "Read from death test child process failed: "
8029  << GetLastErrnoDescription();
8030  }
8031  GTEST_DEATH_TEST_CHECK_SYSCALL_(posix::Close(read_fd()));
8032  set_read_fd(-1);
8033 }
8034 
8035 std::string DeathTestImpl::GetErrorLogs() {
8036  return GetCapturedStderr();
8037 }
8038 
8039 // Signals that the death test code which should have exited, didn't.
8040 // Should be called only in a death test child process.
8041 // Writes a status byte to the child's status file descriptor, then
8042 // calls _exit(1).
8043 void DeathTestImpl::Abort(AbortReason reason) {
8044  // The parent process considers the death test to be a failure if
8045  // it finds any data in our pipe. So, here we write a single flag byte
8046  // to the pipe, then exit.
8047  const char status_ch =
8048  reason == TEST_DID_NOT_DIE ? kDeathTestLived :
8049  reason == TEST_THREW_EXCEPTION ? kDeathTestThrew : kDeathTestReturned;
8050 
8051  GTEST_DEATH_TEST_CHECK_SYSCALL_(posix::Write(write_fd(), &status_ch, 1));
8052  // We are leaking the descriptor here because on some platforms (i.e.,
8053  // when built as Windows DLL), destructors of global objects will still
8054  // run after calling _exit(). On such systems, write_fd_ will be
8055  // indirectly closed from the destructor of UnitTestImpl, causing double
8056  // close if it is also closed here. On debug configurations, double close
8057  // may assert. As there are no in-process buffers to flush here, we are
8058  // relying on the OS to close the descriptor after the process terminates
8059  // when the destructors are not run.
8060  _exit(1); // Exits w/o any normal exit hooks (we were supposed to crash)
8061 }
8062 
8063 // Returns an indented copy of stderr output for a death test.
8064 // This makes distinguishing death test output lines from regular log lines
8065 // much easier.
8066 static ::std::string FormatDeathTestOutput(const ::std::string& output) {
8067  ::std::string ret;
8068  for (size_t at = 0; ; ) {
8069  const size_t line_end = output.find('\n', at);
8070  ret += "[ DEATH ] ";
8071  if (line_end == ::std::string::npos) {
8072  ret += output.substr(at);
8073  break;
8074  }
8075  ret += output.substr(at, line_end + 1 - at);
8076  at = line_end + 1;
8077  }
8078  return ret;
8079 }
8080 
8081 // Assesses the success or failure of a death test, using both private
8082 // members which have previously been set, and one argument:
8083 //
8084 // Private data members:
8085 // outcome: An enumeration describing how the death test
8086 // concluded: DIED, LIVED, THREW, or RETURNED. The death test
8087 // fails in the latter three cases.
8088 // status: The exit status of the child process. On *nix, it is in the
8089 // in the format specified by wait(2). On Windows, this is the
8090 // value supplied to the ExitProcess() API or a numeric code
8091 // of the exception that terminated the program.
8092 // matcher_: A matcher that's expected to match the stderr output by the child
8093 // process.
8094 //
8095 // Argument:
8096 // status_ok: true if exit_status is acceptable in the context of
8097 // this particular death test, which fails if it is false
8098 //
8099 // Returns true iff all of the above conditions are met. Otherwise, the
8100 // first failing condition, in the order given above, is the one that is
8101 // reported. Also sets the last death test message string.
8102 bool DeathTestImpl::Passed(bool status_ok) {
8103  if (!spawned())
8104  return false;
8105 
8106  const std::string error_message = GetErrorLogs();
8107 
8108  bool success = false;
8109  Message buffer;
8110 
8111  buffer << "Death test: " << statement() << "\n";
8112  switch (outcome()) {
8113  case LIVED:
8114  buffer << " Result: failed to die.\n"
8115  << " Error msg:\n" << FormatDeathTestOutput(error_message);
8116  break;
8117  case THREW:
8118  buffer << " Result: threw an exception.\n"
8119  << " Error msg:\n" << FormatDeathTestOutput(error_message);
8120  break;
8121  case RETURNED:
8122  buffer << " Result: illegal return in test statement.\n"
8123  << " Error msg:\n" << FormatDeathTestOutput(error_message);
8124  break;
8125  case DIED:
8126  if (status_ok) {
8127  if (matcher_.Matches(error_message)) {
8128  success = true;
8129  } else {
8130  std::ostringstream stream;
8131  matcher_.DescribeTo(&stream);
8132  buffer << " Result: died but not with expected error.\n"
8133  << " Expected: " << stream.str() << "\n"
8134  << "Actual msg:\n"
8135  << FormatDeathTestOutput(error_message);
8136  }
8137  } else {
8138  buffer << " Result: died but not with expected exit code:\n"
8139  << " " << ExitSummary(status()) << "\n"
8140  << "Actual msg:\n" << FormatDeathTestOutput(error_message);
8141  }
8142  break;
8143  case IN_PROGRESS:
8144  default:
8145  GTEST_LOG_(FATAL)
8146  << "DeathTest::Passed somehow called before conclusion of test";
8147  }
8148 
8149  DeathTest::set_last_death_test_message(buffer.GetString());
8150  return success;
8151 }
8152 
8153 # if GTEST_OS_WINDOWS
8154 // WindowsDeathTest implements death tests on Windows. Due to the
8155 // specifics of starting new processes on Windows, death tests there are
8156 // always threadsafe, and Google Test considers the
8157 // --gtest_death_test_style=fast setting to be equivalent to
8158 // --gtest_death_test_style=threadsafe there.
8159 //
8160 // A few implementation notes: Like the Linux version, the Windows
8161 // implementation uses pipes for child-to-parent communication. But due to
8162 // the specifics of pipes on Windows, some extra steps are required:
8163 //
8164 // 1. The parent creates a communication pipe and stores handles to both
8165 // ends of it.
8166 // 2. The parent starts the child and provides it with the information
8167 // necessary to acquire the handle to the write end of the pipe.
8168 // 3. The child acquires the write end of the pipe and signals the parent
8169 // using a Windows event.
8170 // 4. Now the parent can release the write end of the pipe on its side. If
8171 // this is done before step 3, the object's reference count goes down to
8172 // 0 and it is destroyed, preventing the child from acquiring it. The
8173 // parent now has to release it, or read operations on the read end of
8174 // the pipe will not return when the child terminates.
8175 // 5. The parent reads child's output through the pipe (outcome code and
8176 // any possible error messages) from the pipe, and its stderr and then
8177 // determines whether to fail the test.
8178 //
8179 // Note: to distinguish Win32 API calls from the local method and function
8180 // calls, the former are explicitly resolved in the global namespace.
8181 //
8182 class WindowsDeathTest : public DeathTestImpl {
8183  public:
8184  WindowsDeathTest(const char* a_statement, Matcher<const std::string&> matcher,
8185  const char* file, int line)
8186  : DeathTestImpl(a_statement, std::move(matcher)),
8187  file_(file),
8188  line_(line) {}
8189 
8190  // All of these virtual functions are inherited from DeathTest.
8191  virtual int Wait();
8192  virtual TestRole AssumeRole();
8193 
8194  private:
8195  // The name of the file in which the death test is located.
8196  const char* const file_;
8197  // The line number on which the death test is located.
8198  const int line_;
8199  // Handle to the write end of the pipe to the child process.
8200  AutoHandle write_handle_;
8201  // Child process handle.
8202  AutoHandle child_handle_;
8203  // Event the child process uses to signal the parent that it has
8204  // acquired the handle to the write end of the pipe. After seeing this
8205  // event the parent can release its own handles to make sure its
8206  // ReadFile() calls return when the child terminates.
8207  AutoHandle event_handle_;
8208 };
8209 
8210 // Waits for the child in a death test to exit, returning its exit
8211 // status, or 0 if no child process exists. As a side effect, sets the
8212 // outcome data member.
8213 int WindowsDeathTest::Wait() {
8214  if (!spawned())
8215  return 0;
8216 
8217  // Wait until the child either signals that it has acquired the write end
8218  // of the pipe or it dies.
8219  const HANDLE wait_handles[2] = { child_handle_.Get(), event_handle_.Get() };
8220  switch (::WaitForMultipleObjects(2,
8221  wait_handles,
8222  FALSE, // Waits for any of the handles.
8223  INFINITE)) {
8224  case WAIT_OBJECT_0:
8225  case WAIT_OBJECT_0 + 1:
8226  break;
8227  default:
8228  GTEST_DEATH_TEST_CHECK_(false); // Should not get here.
8229  }
8230 
8231  // The child has acquired the write end of the pipe or exited.
8232  // We release the handle on our side and continue.
8233  write_handle_.Reset();
8234  event_handle_.Reset();
8235 
8236  ReadAndInterpretStatusByte();
8237 
8238  // Waits for the child process to exit if it haven't already. This
8239  // returns immediately if the child has already exited, regardless of
8240  // whether previous calls to WaitForMultipleObjects synchronized on this
8241  // handle or not.
8242  GTEST_DEATH_TEST_CHECK_(
8243  WAIT_OBJECT_0 == ::WaitForSingleObject(child_handle_.Get(),
8244  INFINITE));
8245  DWORD status_code;
8246  GTEST_DEATH_TEST_CHECK_(
8247  ::GetExitCodeProcess(child_handle_.Get(), &status_code) != FALSE);
8248  child_handle_.Reset();
8249  set_status(static_cast<int>(status_code));
8250  return status();
8251 }
8252 
8253 // The AssumeRole process for a Windows death test. It creates a child
8254 // process with the same executable as the current process to run the
8255 // death test. The child process is given the --gtest_filter and
8256 // --gtest_internal_run_death_test flags such that it knows to run the
8257 // current death test only.
8258 DeathTest::TestRole WindowsDeathTest::AssumeRole() {
8259  const UnitTestImpl* const impl = GetUnitTestImpl();
8260  const InternalRunDeathTestFlag* const flag =
8261  impl->internal_run_death_test_flag();
8262  const TestInfo* const info = impl->current_test_info();
8263  const int death_test_index = info->result()->death_test_count();
8264 
8265  if (flag != nullptr) {
8266  // ParseInternalRunDeathTestFlag() has performed all the necessary
8267  // processing.
8268  set_write_fd(flag->write_fd());
8269  return EXECUTE_TEST;
8270  }
8271 
8272  // WindowsDeathTest uses an anonymous pipe to communicate results of
8273  // a death test.
8274  SECURITY_ATTRIBUTES handles_are_inheritable = {sizeof(SECURITY_ATTRIBUTES),
8275  nullptr, TRUE};
8276  HANDLE read_handle, write_handle;
8277  GTEST_DEATH_TEST_CHECK_(
8278  ::CreatePipe(&read_handle, &write_handle, &handles_are_inheritable,
8279  0) // Default buffer size.
8280  != FALSE);
8281  set_read_fd(::_open_osfhandle(reinterpret_cast<intptr_t>(read_handle),
8282  O_RDONLY));
8283  write_handle_.Reset(write_handle);
8284  event_handle_.Reset(::CreateEvent(
8285  &handles_are_inheritable,
8286  TRUE, // The event will automatically reset to non-signaled state.
8287  FALSE, // The initial state is non-signalled.
8288  nullptr)); // The even is unnamed.
8289  GTEST_DEATH_TEST_CHECK_(event_handle_.Get() != nullptr);
8290  const std::string filter_flag = std::string("--") + GTEST_FLAG_PREFIX_ +
8291  kFilterFlag + "=" + info->test_suite_name() +
8292  "." + info->name();
8293  const std::string internal_flag =
8294  std::string("--") + GTEST_FLAG_PREFIX_ + kInternalRunDeathTestFlag +
8295  "=" + file_ + "|" + StreamableToString(line_) + "|" +
8296  StreamableToString(death_test_index) + "|" +
8297  StreamableToString(static_cast<unsigned int>(::GetCurrentProcessId())) +
8298  // size_t has the same width as pointers on both 32-bit and 64-bit
8299  // Windows platforms.
8300  // See http://msdn.microsoft.com/en-us/library/tcxf1dw6.aspx.
8301  "|" + StreamableToString(reinterpret_cast<size_t>(write_handle)) +
8302  "|" + StreamableToString(reinterpret_cast<size_t>(event_handle_.Get()));
8303 
8304  char executable_path[_MAX_PATH + 1]; // NOLINT
8305  GTEST_DEATH_TEST_CHECK_(_MAX_PATH + 1 != ::GetModuleFileNameA(nullptr,
8306  executable_path,
8307  _MAX_PATH));
8308 
8309  std::string command_line =
8310  std::string(::GetCommandLineA()) + " " + filter_flag + " \"" +
8311  internal_flag + "\"";
8312 
8313  DeathTest::set_last_death_test_message("");
8314 
8315  CaptureStderr();
8316  // Flush the log buffers since the log streams are shared with the child.
8317  FlushInfoLog();
8318 
8319  // The child process will share the standard handles with the parent.
8320  STARTUPINFOA startup_info;
8321  memset(&startup_info, 0, sizeof(STARTUPINFO));
8322  startup_info.dwFlags = STARTF_USESTDHANDLES;
8323  startup_info.hStdInput = ::GetStdHandle(STD_INPUT_HANDLE);
8324  startup_info.hStdOutput = ::GetStdHandle(STD_OUTPUT_HANDLE);
8325  startup_info.hStdError = ::GetStdHandle(STD_ERROR_HANDLE);
8326 
8327  PROCESS_INFORMATION process_info;
8328  GTEST_DEATH_TEST_CHECK_(
8329  ::CreateProcessA(
8330  executable_path, const_cast<char*>(command_line.c_str()),
8331  nullptr, // Retuned process handle is not inheritable.
8332  nullptr, // Retuned thread handle is not inheritable.
8333  TRUE, // Child inherits all inheritable handles (for write_handle_).
8334  0x0, // Default creation flags.
8335  nullptr, // Inherit the parent's environment.
8336  UnitTest::GetInstance()->original_working_dir(), &startup_info,
8337  &process_info) != FALSE);
8338  child_handle_.Reset(process_info.hProcess);
8339  ::CloseHandle(process_info.hThread);
8340  set_spawned(true);
8341  return OVERSEE_TEST;
8342 }
8343 
8344 # elif GTEST_OS_FUCHSIA
8345 
8346 class FuchsiaDeathTest : public DeathTestImpl {
8347  public:
8348  FuchsiaDeathTest(const char* a_statement, Matcher<const std::string&> matcher,
8349  const char* file, int line)
8350  : DeathTestImpl(a_statement, std::move(matcher)),
8351  file_(file),
8352  line_(line) {}
8353 
8354  // All of these virtual functions are inherited from DeathTest.
8355  int Wait() override;
8356  TestRole AssumeRole() override;
8357  std::string GetErrorLogs() override;
8358 
8359  private:
8360  // The name of the file in which the death test is located.
8361  const char* const file_;
8362  // The line number on which the death test is located.
8363  const int line_;
8364  // The stderr data captured by the child process.
8365  std::string captured_stderr_;
8366 
8367  zx::process child_process_;
8368  zx::port port_;
8369  zx::socket stderr_socket_;
8370 };
8371 
8372 // Utility class for accumulating command-line arguments.
8373 class Arguments {
8374  public:
8375  Arguments() { args_.push_back(nullptr); }
8376 
8377  ~Arguments() {
8378  for (std::vector<char*>::iterator i = args_.begin(); i != args_.end();
8379  ++i) {
8380  free(*i);
8381  }
8382  }
8383  void AddArgument(const char* argument) {
8384  args_.insert(args_.end() - 1, posix::StrDup(argument));
8385  }
8386 
8387  template <typename Str>
8388  void AddArguments(const ::std::vector<Str>& arguments) {
8389  for (typename ::std::vector<Str>::const_iterator i = arguments.begin();
8390  i != arguments.end();
8391  ++i) {
8392  args_.insert(args_.end() - 1, posix::StrDup(i->c_str()));
8393  }
8394  }
8395  char* const* Argv() {
8396  return &args_[0];
8397  }
8398 
8399  int size() {
8400  return args_.size() - 1;
8401  }
8402 
8403  private:
8404  std::vector<char*> args_;
8405 };
8406 
8407 // Waits for the child in a death test to exit, returning its exit
8408 // status, or 0 if no child process exists. As a side effect, sets the
8409 // outcome data member.
8410 int FuchsiaDeathTest::Wait() {
8411  const int kProcessKey = 0;
8412  const int kSocketKey = 1;
8413 
8414  if (!spawned())
8415  return 0;
8416 
8417  // Register to wait for the child process to terminate.
8418  zx_status_t status_zx;
8419  status_zx = child_process_.wait_async(
8420  port_, kProcessKey, ZX_PROCESS_TERMINATED, ZX_WAIT_ASYNC_ONCE);
8421  GTEST_DEATH_TEST_CHECK_(status_zx == ZX_OK);
8422  // Register to wait for the socket to be readable or closed.
8423  status_zx = stderr_socket_.wait_async(
8424  port_, kSocketKey, ZX_SOCKET_READABLE | ZX_SOCKET_PEER_CLOSED,
8425  ZX_WAIT_ASYNC_REPEATING);
8426  GTEST_DEATH_TEST_CHECK_(status_zx == ZX_OK);
8427 
8428  bool process_terminated = false;
8429  bool socket_closed = false;
8430  do {
8431  zx_port_packet_t packet = {};
8432  status_zx = port_.wait(zx::time::infinite(), &packet);
8433  GTEST_DEATH_TEST_CHECK_(status_zx == ZX_OK);
8434 
8435  if (packet.key == kProcessKey) {
8436  if (ZX_PKT_IS_EXCEPTION(packet.type)) {
8437  // Process encountered an exception. Kill it directly rather than
8438  // letting other handlers process the event. We will get a second
8439  // kProcessKey event when the process actually terminates.
8440  status_zx = child_process_.kill();
8441  GTEST_DEATH_TEST_CHECK_(status_zx == ZX_OK);
8442  } else {
8443  // Process terminated.
8444  GTEST_DEATH_TEST_CHECK_(ZX_PKT_IS_SIGNAL_ONE(packet.type));
8445  GTEST_DEATH_TEST_CHECK_(packet.signal.observed & ZX_PROCESS_TERMINATED);
8446  process_terminated = true;
8447  }
8448  } else if (packet.key == kSocketKey) {
8449  GTEST_DEATH_TEST_CHECK_(ZX_PKT_IS_SIGNAL_REP(packet.type));
8450  if (packet.signal.observed & ZX_SOCKET_READABLE) {
8451  // Read data from the socket.
8452  constexpr size_t kBufferSize = 1024;
8453  do {
8454  size_t old_length = captured_stderr_.length();
8455  size_t bytes_read = 0;
8456  captured_stderr_.resize(old_length + kBufferSize);
8457  status_zx = stderr_socket_.read(
8458  0, &captured_stderr_.front() + old_length, kBufferSize,
8459  &bytes_read);
8460  captured_stderr_.resize(old_length + bytes_read);
8461  } while (status_zx == ZX_OK);
8462  if (status_zx == ZX_ERR_PEER_CLOSED) {
8463  socket_closed = true;
8464  } else {
8465  GTEST_DEATH_TEST_CHECK_(status_zx == ZX_ERR_SHOULD_WAIT);
8466  }
8467  } else {
8468  GTEST_DEATH_TEST_CHECK_(packet.signal.observed & ZX_SOCKET_PEER_CLOSED);
8469  socket_closed = true;
8470  }
8471  }
8472  } while (!process_terminated && !socket_closed);
8473 
8474  ReadAndInterpretStatusByte();
8475 
8476  zx_info_process_t buffer;
8477  status_zx = child_process_.get_info(
8478  ZX_INFO_PROCESS, &buffer, sizeof(buffer), nullptr, nullptr);
8479  GTEST_DEATH_TEST_CHECK_(status_zx == ZX_OK);
8480 
8481  GTEST_DEATH_TEST_CHECK_(buffer.exited);
8482  set_status(buffer.return_code);
8483  return status();
8484 }
8485 
8486 // The AssumeRole process for a Fuchsia death test. It creates a child
8487 // process with the same executable as the current process to run the
8488 // death test. The child process is given the --gtest_filter and
8489 // --gtest_internal_run_death_test flags such that it knows to run the
8490 // current death test only.
8491 DeathTest::TestRole FuchsiaDeathTest::AssumeRole() {
8492  const UnitTestImpl* const impl = GetUnitTestImpl();
8493  const InternalRunDeathTestFlag* const flag =
8494  impl->internal_run_death_test_flag();
8495  const TestInfo* const info = impl->current_test_info();
8496  const int death_test_index = info->result()->death_test_count();
8497 
8498  if (flag != nullptr) {
8499  // ParseInternalRunDeathTestFlag() has performed all the necessary
8500  // processing.
8501  set_write_fd(kFuchsiaReadPipeFd);
8502  return EXECUTE_TEST;
8503  }
8504 
8505  // Flush the log buffers since the log streams are shared with the child.
8506  FlushInfoLog();
8507 
8508  // Build the child process command line.
8509  const std::string filter_flag = std::string("--") + GTEST_FLAG_PREFIX_ +
8510  kFilterFlag + "=" + info->test_suite_name() +
8511  "." + info->name();
8512  const std::string internal_flag =
8513  std::string("--") + GTEST_FLAG_PREFIX_ + kInternalRunDeathTestFlag + "="
8514  + file_ + "|"
8515  + StreamableToString(line_) + "|"
8516  + StreamableToString(death_test_index);
8517  Arguments args;
8518  args.AddArguments(GetInjectableArgvs());
8519  args.AddArgument(filter_flag.c_str());
8520  args.AddArgument(internal_flag.c_str());
8521 
8522  // Build the pipe for communication with the child.
8523  zx_status_t status;
8524  zx_handle_t child_pipe_handle;
8525  uint32_t type;
8526  status = fdio_pipe_half(&child_pipe_handle, &type);
8527  GTEST_DEATH_TEST_CHECK_(status >= 0);
8528  set_read_fd(status);
8529 
8530  // Set the pipe handle for the child.
8531  fdio_spawn_action_t spawn_actions[2] = {};
8532  fdio_spawn_action_t* add_handle_action = &spawn_actions[0];
8533  add_handle_action->action = FDIO_SPAWN_ACTION_ADD_HANDLE;
8534  add_handle_action->h.id = PA_HND(type, kFuchsiaReadPipeFd);
8535  add_handle_action->h.handle = child_pipe_handle;
8536 
8537  // Create a socket pair will be used to receive the child process' stderr.
8538  zx::socket stderr_producer_socket;
8539  status =
8540  zx::socket::create(0, &stderr_producer_socket, &stderr_socket_);
8541  GTEST_DEATH_TEST_CHECK_(status >= 0);
8542  int stderr_producer_fd = -1;
8543  zx_handle_t producer_handle[1] = { stderr_producer_socket.release() };
8544  uint32_t producer_handle_type[1] = { PA_FDIO_SOCKET };
8545  status = fdio_create_fd(
8546  producer_handle, producer_handle_type, 1, &stderr_producer_fd);
8547  GTEST_DEATH_TEST_CHECK_(status >= 0);
8548 
8549  // Make the stderr socket nonblocking.
8550  GTEST_DEATH_TEST_CHECK_(fcntl(stderr_producer_fd, F_SETFL, 0) == 0);
8551 
8552  fdio_spawn_action_t* add_stderr_action = &spawn_actions[1];
8553  add_stderr_action->action = FDIO_SPAWN_ACTION_CLONE_FD;
8554  add_stderr_action->fd.local_fd = stderr_producer_fd;
8555  add_stderr_action->fd.target_fd = STDERR_FILENO;
8556 
8557  // Create a child job.
8558  zx_handle_t child_job = ZX_HANDLE_INVALID;
8559  status = zx_job_create(zx_job_default(), 0, & child_job);
8560  GTEST_DEATH_TEST_CHECK_(status == ZX_OK);
8561  zx_policy_basic_t policy;
8562  policy.condition = ZX_POL_NEW_ANY;
8563  policy.policy = ZX_POL_ACTION_ALLOW;
8564  status = zx_job_set_policy(
8565  child_job, ZX_JOB_POL_RELATIVE, ZX_JOB_POL_BASIC, &policy, 1);
8566  GTEST_DEATH_TEST_CHECK_(status == ZX_OK);
8567 
8568  // Create an exception port and attach it to the |child_job|, to allow
8569  // us to suppress the system default exception handler from firing.
8570  status = zx::port::create(0, &port_);
8571  GTEST_DEATH_TEST_CHECK_(status == ZX_OK);
8572  status = zx_task_bind_exception_port(
8573  child_job, port_.get(), 0 /* key */, 0 /*options */);
8574  GTEST_DEATH_TEST_CHECK_(status == ZX_OK);
8575 
8576  // Spawn the child process.
8577  status = fdio_spawn_etc(
8578  child_job, FDIO_SPAWN_CLONE_ALL, args.Argv()[0], args.Argv(), nullptr,
8579  2, spawn_actions, child_process_.reset_and_get_address(), nullptr);
8580  GTEST_DEATH_TEST_CHECK_(status == ZX_OK);
8581 
8582  set_spawned(true);
8583  return OVERSEE_TEST;
8584 }
8585 
8586 std::string FuchsiaDeathTest::GetErrorLogs() {
8587  return captured_stderr_;
8588 }
8589 
8590 #else // We are neither on Windows, nor on Fuchsia.
8591 
8592 // ForkingDeathTest provides implementations for most of the abstract
8593 // methods of the DeathTest interface. Only the AssumeRole method is
8594 // left undefined.
8595 class ForkingDeathTest : public DeathTestImpl {
8596  public:
8597  ForkingDeathTest(const char* statement, Matcher<const std::string&> matcher);
8598 
8599  // All of these virtual functions are inherited from DeathTest.
8600  int Wait() override;
8601 
8602  protected:
8603  void set_child_pid(pid_t child_pid) { child_pid_ = child_pid; }
8604 
8605  private:
8606  // PID of child process during death test; 0 in the child process itself.
8607  pid_t child_pid_;
8608 };
8609 
8610 // Constructs a ForkingDeathTest.
8611 ForkingDeathTest::ForkingDeathTest(const char* a_statement,
8612  Matcher<const std::string&> matcher)
8613  : DeathTestImpl(a_statement, std::move(matcher)), child_pid_(-1) {}
8614 
8615 // Waits for the child in a death test to exit, returning its exit
8616 // status, or 0 if no child process exists. As a side effect, sets the
8617 // outcome data member.
8618 int ForkingDeathTest::Wait() {
8619  if (!spawned())
8620  return 0;
8621 
8622  ReadAndInterpretStatusByte();
8623 
8624  int status_value;
8625  GTEST_DEATH_TEST_CHECK_SYSCALL_(waitpid(child_pid_, &status_value, 0));
8626  set_status(status_value);
8627  return status_value;
8628 }
8629 
8630 // A concrete death test class that forks, then immediately runs the test
8631 // in the child process.
8632 class NoExecDeathTest : public ForkingDeathTest {
8633  public:
8634  NoExecDeathTest(const char* a_statement, Matcher<const std::string&> matcher)
8635  : ForkingDeathTest(a_statement, std::move(matcher)) {}
8636  TestRole AssumeRole() override;
8637 };
8638 
8639 // The AssumeRole process for a fork-and-run death test. It implements a
8640 // straightforward fork, with a simple pipe to transmit the status byte.
8641 DeathTest::TestRole NoExecDeathTest::AssumeRole() {
8642  const size_t thread_count = GetThreadCount();
8643  if (thread_count != 1) {
8644  GTEST_LOG_(WARNING) << DeathTestThreadWarning(thread_count);
8645  }
8646 
8647  int pipe_fd[2];
8648  GTEST_DEATH_TEST_CHECK_(pipe(pipe_fd) != -1);
8649 
8650  DeathTest::set_last_death_test_message("");
8651  CaptureStderr();
8652  // When we fork the process below, the log file buffers are copied, but the
8653  // file descriptors are shared. We flush all log files here so that closing
8654  // the file descriptors in the child process doesn't throw off the
8655  // synchronization between descriptors and buffers in the parent process.
8656  // This is as close to the fork as possible to avoid a race condition in case
8657  // there are multiple threads running before the death test, and another
8658  // thread writes to the log file.
8659  FlushInfoLog();
8660 
8661  const pid_t child_pid = fork();
8662  GTEST_DEATH_TEST_CHECK_(child_pid != -1);
8663  set_child_pid(child_pid);
8664  if (child_pid == 0) {
8665  GTEST_DEATH_TEST_CHECK_SYSCALL_(close(pipe_fd[0]));
8666  set_write_fd(pipe_fd[1]);
8667  // Redirects all logging to stderr in the child process to prevent
8668  // concurrent writes to the log files. We capture stderr in the parent
8669  // process and append the child process' output to a log.
8670  LogToStderr();
8671  // Event forwarding to the listeners of event listener API mush be shut
8672  // down in death test subprocesses.
8673  GetUnitTestImpl()->listeners()->SuppressEventForwarding();
8674  g_in_fast_death_test_child = true;
8675  return EXECUTE_TEST;
8676  } else {
8677  GTEST_DEATH_TEST_CHECK_SYSCALL_(close(pipe_fd[1]));
8678  set_read_fd(pipe_fd[0]);
8679  set_spawned(true);
8680  return OVERSEE_TEST;
8681  }
8682 }
8683 
8684 // A concrete death test class that forks and re-executes the main
8685 // program from the beginning, with command-line flags set that cause
8686 // only this specific death test to be run.
8687 class ExecDeathTest : public ForkingDeathTest {
8688  public:
8689  ExecDeathTest(const char* a_statement, Matcher<const std::string&> matcher,
8690  const char* file, int line)
8691  : ForkingDeathTest(a_statement, std::move(matcher)),
8692  file_(file),
8693  line_(line) {}
8694  TestRole AssumeRole() override;
8695 
8696  private:
8697  static ::std::vector<std::string> GetArgvsForDeathTestChildProcess() {
8698  ::std::vector<std::string> args = GetInjectableArgvs();
8699 # if defined(GTEST_EXTRA_DEATH_TEST_COMMAND_LINE_ARGS_)
8700  ::std::vector<std::string> extra_args =
8701  GTEST_EXTRA_DEATH_TEST_COMMAND_LINE_ARGS_();
8702  args.insert(args.end(), extra_args.begin(), extra_args.end());
8703 # endif // defined(GTEST_EXTRA_DEATH_TEST_COMMAND_LINE_ARGS_)
8704  return args;
8705  }
8706  // The name of the file in which the death test is located.
8707  const char* const file_;
8708  // The line number on which the death test is located.
8709  const int line_;
8710 };
8711 
8712 // Utility class for accumulating command-line arguments.
8713 class Arguments {
8714  public:
8715  Arguments() { args_.push_back(nullptr); }
8716 
8717  ~Arguments() {
8718  for (std::vector<char*>::iterator i = args_.begin(); i != args_.end();
8719  ++i) {
8720  free(*i);
8721  }
8722  }
8723  void AddArgument(const char* argument) {
8724  args_.insert(args_.end() - 1, posix::StrDup(argument));
8725  }
8726 
8727  template <typename Str>
8728  void AddArguments(const ::std::vector<Str>& arguments) {
8729  for (typename ::std::vector<Str>::const_iterator i = arguments.begin();
8730  i != arguments.end();
8731  ++i) {
8732  args_.insert(args_.end() - 1, posix::StrDup(i->c_str()));
8733  }
8734  }
8735  char* const* Argv() {
8736  return &args_[0];
8737  }
8738 
8739  private:
8740  std::vector<char*> args_;
8741 };
8742 
8743 // A struct that encompasses the arguments to the child process of a
8744 // threadsafe-style death test process.
8745 struct ExecDeathTestArgs {
8746  char* const* argv; // Command-line arguments for the child's call to exec
8747  int close_fd; // File descriptor to close; the read end of a pipe
8748 };
8749 
8750 # if GTEST_OS_MAC
8751 inline char** GetEnviron() {
8752  // When Google Test is built as a framework on MacOS X, the environ variable
8753  // is unavailable. Apple's documentation (man environ) recommends using
8754  // _NSGetEnviron() instead.
8755  return *_NSGetEnviron();
8756 }
8757 # else
8758 // Some POSIX platforms expect you to declare environ. extern "C" makes
8759 // it reside in the global namespace.
8760 extern "C" char** environ;
8761 inline char** GetEnviron() { return environ; }
8762 # endif // GTEST_OS_MAC
8763 
8764 # if !GTEST_OS_QNX
8765 // The main function for a threadsafe-style death test child process.
8766 // This function is called in a clone()-ed process and thus must avoid
8767 // any potentially unsafe operations like malloc or libc functions.
8768 static int ExecDeathTestChildMain(void* child_arg) {
8769  ExecDeathTestArgs* const args = static_cast<ExecDeathTestArgs*>(child_arg);
8770  GTEST_DEATH_TEST_CHECK_SYSCALL_(close(args->close_fd));
8771 
8772  // We need to execute the test program in the same environment where
8773  // it was originally invoked. Therefore we change to the original
8774  // working directory first.
8775  const char* const original_dir =
8777  // We can safely call chdir() as it's a direct system call.
8778  if (chdir(original_dir) != 0) {
8779  DeathTestAbort(std::string("chdir(\"") + original_dir + "\") failed: " +
8780  GetLastErrnoDescription());
8781  return EXIT_FAILURE;
8782  }
8783 
8784  // We can safely call execve() as it's a direct system call. We
8785  // cannot use execvp() as it's a libc function and thus potentially
8786  // unsafe. Since execve() doesn't search the PATH, the user must
8787  // invoke the test program via a valid path that contains at least
8788  // one path separator.
8789  execve(args->argv[0], args->argv, GetEnviron());
8790  DeathTestAbort(std::string("execve(") + args->argv[0] + ", ...) in " +
8791  original_dir + " failed: " +
8792  GetLastErrnoDescription());
8793  return EXIT_FAILURE;
8794 }
8795 # endif // !GTEST_OS_QNX
8796 
8797 # if GTEST_HAS_CLONE
8798 // Two utility routines that together determine the direction the stack
8799 // grows.
8800 // This could be accomplished more elegantly by a single recursive
8801 // function, but we want to guard against the unlikely possibility of
8802 // a smart compiler optimizing the recursion away.
8803 //
8804 // GTEST_NO_INLINE_ is required to prevent GCC 4.6 from inlining
8805 // StackLowerThanAddress into StackGrowsDown, which then doesn't give
8806 // correct answer.
8807 static void StackLowerThanAddress(const void* ptr,
8808  bool* result) GTEST_NO_INLINE_;
8809 static void StackLowerThanAddress(const void* ptr, bool* result) {
8810  int dummy;
8811  *result = (&dummy < ptr);
8812 }
8813 
8814 // Make sure AddressSanitizer does not tamper with the stack here.
8816 static bool StackGrowsDown() {
8817  int dummy;
8818  bool result;
8819  StackLowerThanAddress(&dummy, &result);
8820  return result;
8821 }
8822 # endif // GTEST_HAS_CLONE
8823 
8824 // Spawns a child process with the same executable as the current process in
8825 // a thread-safe manner and instructs it to run the death test. The
8826 // implementation uses fork(2) + exec. On systems where clone(2) is
8827 // available, it is used instead, being slightly more thread-safe. On QNX,
8828 // fork supports only single-threaded environments, so this function uses
8829 // spawn(2) there instead. The function dies with an error message if
8830 // anything goes wrong.
8831 static pid_t ExecDeathTestSpawnChild(char* const* argv, int close_fd) {
8832  ExecDeathTestArgs args = { argv, close_fd };
8833  pid_t child_pid = -1;
8834 
8835 # if GTEST_OS_QNX
8836  // Obtains the current directory and sets it to be closed in the child
8837  // process.
8838  const int cwd_fd = open(".", O_RDONLY);
8839  GTEST_DEATH_TEST_CHECK_(cwd_fd != -1);
8840  GTEST_DEATH_TEST_CHECK_SYSCALL_(fcntl(cwd_fd, F_SETFD, FD_CLOEXEC));
8841  // We need to execute the test program in the same environment where
8842  // it was originally invoked. Therefore we change to the original
8843  // working directory first.
8844  const char* const original_dir =
8846  // We can safely call chdir() as it's a direct system call.
8847  if (chdir(original_dir) != 0) {
8848  DeathTestAbort(std::string("chdir(\"") + original_dir + "\") failed: " +
8849  GetLastErrnoDescription());
8850  return EXIT_FAILURE;
8851  }
8852 
8853  int fd_flags;
8854  // Set close_fd to be closed after spawn.
8855  GTEST_DEATH_TEST_CHECK_SYSCALL_(fd_flags = fcntl(close_fd, F_GETFD));
8856  GTEST_DEATH_TEST_CHECK_SYSCALL_(fcntl(close_fd, F_SETFD,
8857  fd_flags | FD_CLOEXEC));
8858  struct inheritance inherit = {0};
8859  // spawn is a system call.
8860  child_pid =
8861  spawn(args.argv[0], 0, nullptr, &inherit, args.argv, GetEnviron());
8862  // Restores the current working directory.
8863  GTEST_DEATH_TEST_CHECK_(fchdir(cwd_fd) != -1);
8864  GTEST_DEATH_TEST_CHECK_SYSCALL_(close(cwd_fd));
8865 
8866 # else // GTEST_OS_QNX
8867 # if GTEST_OS_LINUX
8868  // When a SIGPROF signal is received while fork() or clone() are executing,
8869  // the process may hang. To avoid this, we ignore SIGPROF here and re-enable
8870  // it after the call to fork()/clone() is complete.
8871  struct sigaction saved_sigprof_action;
8872  struct sigaction ignore_sigprof_action;
8873  memset(&ignore_sigprof_action, 0, sizeof(ignore_sigprof_action));
8874  sigemptyset(&ignore_sigprof_action.sa_mask);
8875  ignore_sigprof_action.sa_handler = SIG_IGN;
8876  GTEST_DEATH_TEST_CHECK_SYSCALL_(sigaction(
8877  SIGPROF, &ignore_sigprof_action, &saved_sigprof_action));
8878 # endif // GTEST_OS_LINUX
8879 
8880 # if GTEST_HAS_CLONE
8881  const bool use_fork = GTEST_FLAG(death_test_use_fork);
8882 
8883  if (!use_fork) {
8884  static const bool stack_grows_down = StackGrowsDown();
8885  const size_t stack_size = getpagesize();
8886  // MMAP_ANONYMOUS is not defined on Mac, so we use MAP_ANON instead.
8887  void* const stack = mmap(nullptr, stack_size, PROT_READ | PROT_WRITE,
8888  MAP_ANON | MAP_PRIVATE, -1, 0);
8889  GTEST_DEATH_TEST_CHECK_(stack != MAP_FAILED);
8890 
8891  // Maximum stack alignment in bytes: For a downward-growing stack, this
8892  // amount is subtracted from size of the stack space to get an address
8893  // that is within the stack space and is aligned on all systems we care
8894  // about. As far as I know there is no ABI with stack alignment greater
8895  // than 64. We assume stack and stack_size already have alignment of
8896  // kMaxStackAlignment.
8897  const size_t kMaxStackAlignment = 64;
8898  void* const stack_top =
8899  static_cast<char*>(stack) +
8900  (stack_grows_down ? stack_size - kMaxStackAlignment : 0);
8901  GTEST_DEATH_TEST_CHECK_(stack_size > kMaxStackAlignment &&
8902  reinterpret_cast<intptr_t>(stack_top) % kMaxStackAlignment == 0);
8903 
8904  child_pid = clone(&ExecDeathTestChildMain, stack_top, SIGCHLD, &args);
8905 
8906  GTEST_DEATH_TEST_CHECK_(munmap(stack, stack_size) != -1);
8907  }
8908 # else
8909  const bool use_fork = true;
8910 # endif // GTEST_HAS_CLONE
8911 
8912  if (use_fork && (child_pid = fork()) == 0) {
8913  ExecDeathTestChildMain(&args);
8914  _exit(0);
8915  }
8916 # endif // GTEST_OS_QNX
8917 # if GTEST_OS_LINUX
8918  GTEST_DEATH_TEST_CHECK_SYSCALL_(
8919  sigaction(SIGPROF, &saved_sigprof_action, nullptr));
8920 # endif // GTEST_OS_LINUX
8921 
8922  GTEST_DEATH_TEST_CHECK_(child_pid != -1);
8923  return child_pid;
8924 }
8925 
8926 // The AssumeRole process for a fork-and-exec death test. It re-executes the
8927 // main program from the beginning, setting the --gtest_filter
8928 // and --gtest_internal_run_death_test flags to cause only the current
8929 // death test to be re-run.
8930 DeathTest::TestRole ExecDeathTest::AssumeRole() {
8931  const UnitTestImpl* const impl = GetUnitTestImpl();
8932  const InternalRunDeathTestFlag* const flag =
8933  impl->internal_run_death_test_flag();
8934  const TestInfo* const info = impl->current_test_info();
8935  const int death_test_index = info->result()->death_test_count();
8936 
8937  if (flag != nullptr) {
8938  set_write_fd(flag->write_fd());
8939  return EXECUTE_TEST;
8940  }
8941 
8942  int pipe_fd[2];
8943  GTEST_DEATH_TEST_CHECK_(pipe(pipe_fd) != -1);
8944  // Clear the close-on-exec flag on the write end of the pipe, lest
8945  // it be closed when the child process does an exec:
8946  GTEST_DEATH_TEST_CHECK_(fcntl(pipe_fd[1], F_SETFD, 0) != -1);
8947 
8948  const std::string filter_flag = std::string("--") + GTEST_FLAG_PREFIX_ +
8949  kFilterFlag + "=" + info->test_suite_name() +
8950  "." + info->name();
8951  const std::string internal_flag =
8952  std::string("--") + GTEST_FLAG_PREFIX_ + kInternalRunDeathTestFlag + "="
8953  + file_ + "|" + StreamableToString(line_) + "|"
8954  + StreamableToString(death_test_index) + "|"
8955  + StreamableToString(pipe_fd[1]);
8956  Arguments args;
8957  args.AddArguments(GetArgvsForDeathTestChildProcess());
8958  args.AddArgument(filter_flag.c_str());
8959  args.AddArgument(internal_flag.c_str());
8960 
8961  DeathTest::set_last_death_test_message("");
8962 
8963  CaptureStderr();
8964  // See the comment in NoExecDeathTest::AssumeRole for why the next line
8965  // is necessary.
8966  FlushInfoLog();
8967 
8968  const pid_t child_pid = ExecDeathTestSpawnChild(args.Argv(), pipe_fd[0]);
8969  GTEST_DEATH_TEST_CHECK_SYSCALL_(close(pipe_fd[1]));
8970  set_child_pid(child_pid);
8971  set_read_fd(pipe_fd[0]);
8972  set_spawned(true);
8973  return OVERSEE_TEST;
8974 }
8975 
8976 # endif // !GTEST_OS_WINDOWS
8977 
8978 // Creates a concrete DeathTest-derived class that depends on the
8979 // --gtest_death_test_style flag, and sets the pointer pointed to
8980 // by the "test" argument to its address. If the test should be
8981 // skipped, sets that pointer to NULL. Returns true, unless the
8982 // flag is set to an invalid value.
8983 bool DefaultDeathTestFactory::Create(const char* statement,
8984  Matcher<const std::string&> matcher,
8985  const char* file, int line,
8986  DeathTest** test) {
8987  UnitTestImpl* const impl = GetUnitTestImpl();
8988  const InternalRunDeathTestFlag* const flag =
8989  impl->internal_run_death_test_flag();
8990  const int death_test_index = impl->current_test_info()
8991  ->increment_death_test_count();
8992 
8993  if (flag != nullptr) {
8994  if (death_test_index > flag->index()) {
8995  DeathTest::set_last_death_test_message(
8996  "Death test count (" + StreamableToString(death_test_index)
8997  + ") somehow exceeded expected maximum ("
8998  + StreamableToString(flag->index()) + ")");
8999  return false;
9000  }
9001 
9002  if (!(flag->file() == file && flag->line() == line &&
9003  flag->index() == death_test_index)) {
9004  *test = nullptr;
9005  return true;
9006  }
9007  }
9008 
9009 # if GTEST_OS_WINDOWS
9010 
9011  if (GTEST_FLAG(death_test_style) == "threadsafe" ||
9012  GTEST_FLAG(death_test_style) == "fast") {
9013  *test = new WindowsDeathTest(statement, std::move(matcher), file, line);
9014  }
9015 
9016 # elif GTEST_OS_FUCHSIA
9017 
9018  if (GTEST_FLAG(death_test_style) == "threadsafe" ||
9019  GTEST_FLAG(death_test_style) == "fast") {
9020  *test = new FuchsiaDeathTest(statement, std::move(matcher), file, line);
9021  }
9022 
9023 # else
9024 
9025  if (GTEST_FLAG(death_test_style) == "threadsafe") {
9026  *test = new ExecDeathTest(statement, std::move(matcher), file, line);
9027  } else if (GTEST_FLAG(death_test_style) == "fast") {
9028  *test = new NoExecDeathTest(statement, std::move(matcher));
9029  }
9030 
9031 # endif // GTEST_OS_WINDOWS
9032 
9033  else { // NOLINT - this is more readable than unbalanced brackets inside #if.
9034  DeathTest::set_last_death_test_message(
9035  "Unknown death test style \"" + GTEST_FLAG(death_test_style)
9036  + "\" encountered");
9037  return false;
9038  }
9039 
9040  return true;
9041 }
9042 
9043 # if GTEST_OS_WINDOWS
9044 // Recreates the pipe and event handles from the provided parameters,
9045 // signals the event, and returns a file descriptor wrapped around the pipe
9046 // handle. This function is called in the child process only.
9047 static int GetStatusFileDescriptor(unsigned int parent_process_id,
9048  size_t write_handle_as_size_t,
9049  size_t event_handle_as_size_t) {
9050  AutoHandle parent_process_handle(::OpenProcess(PROCESS_DUP_HANDLE,
9051  FALSE, // Non-inheritable.
9052  parent_process_id));
9053  if (parent_process_handle.Get() == INVALID_HANDLE_VALUE) {
9054  DeathTestAbort("Unable to open parent process " +
9055  StreamableToString(parent_process_id));
9056  }
9057 
9058  GTEST_CHECK_(sizeof(HANDLE) <= sizeof(size_t));
9059 
9060  const HANDLE write_handle =
9061  reinterpret_cast<HANDLE>(write_handle_as_size_t);
9062  HANDLE dup_write_handle;
9063 
9064  // The newly initialized handle is accessible only in the parent
9065  // process. To obtain one accessible within the child, we need to use
9066  // DuplicateHandle.
9067  if (!::DuplicateHandle(parent_process_handle.Get(), write_handle,
9068  ::GetCurrentProcess(), &dup_write_handle,
9069  0x0, // Requested privileges ignored since
9070  // DUPLICATE_SAME_ACCESS is used.
9071  FALSE, // Request non-inheritable handler.
9072  DUPLICATE_SAME_ACCESS)) {
9073  DeathTestAbort("Unable to duplicate the pipe handle " +
9074  StreamableToString(write_handle_as_size_t) +
9075  " from the parent process " +
9076  StreamableToString(parent_process_id));
9077  }
9078 
9079  const HANDLE event_handle = reinterpret_cast<HANDLE>(event_handle_as_size_t);
9080  HANDLE dup_event_handle;
9081 
9082  if (!::DuplicateHandle(parent_process_handle.Get(), event_handle,
9083  ::GetCurrentProcess(), &dup_event_handle,
9084  0x0,
9085  FALSE,
9086  DUPLICATE_SAME_ACCESS)) {
9087  DeathTestAbort("Unable to duplicate the event handle " +
9088  StreamableToString(event_handle_as_size_t) +
9089  " from the parent process " +
9090  StreamableToString(parent_process_id));
9091  }
9092 
9093  const int write_fd =
9094  ::_open_osfhandle(reinterpret_cast<intptr_t>(dup_write_handle), O_APPEND);
9095  if (write_fd == -1) {
9096  DeathTestAbort("Unable to convert pipe handle " +
9097  StreamableToString(write_handle_as_size_t) +
9098  " to a file descriptor");
9099  }
9100 
9101  // Signals the parent that the write end of the pipe has been acquired
9102  // so the parent can release its own write end.
9103  ::SetEvent(dup_event_handle);
9104 
9105  return write_fd;
9106 }
9107 # endif // GTEST_OS_WINDOWS
9108 
9109 // Returns a newly created InternalRunDeathTestFlag object with fields
9110 // initialized from the GTEST_FLAG(internal_run_death_test) flag if
9111 // the flag is specified; otherwise returns NULL.
9112 InternalRunDeathTestFlag* ParseInternalRunDeathTestFlag() {
9113  if (GTEST_FLAG(internal_run_death_test) == "") return nullptr;
9114 
9115  // GTEST_HAS_DEATH_TEST implies that we have ::std::string, so we
9116  // can use it here.
9117  int line = -1;
9118  int index = -1;
9119  ::std::vector< ::std::string> fields;
9120  SplitString(GTEST_FLAG(internal_run_death_test).c_str(), '|', &fields);
9121  int write_fd = -1;
9122 
9123 # if GTEST_OS_WINDOWS
9124 
9125  unsigned int parent_process_id = 0;
9126  size_t write_handle_as_size_t = 0;
9127  size_t event_handle_as_size_t = 0;
9128 
9129  if (fields.size() != 6
9130  || !ParseNaturalNumber(fields[1], &line)
9131  || !ParseNaturalNumber(fields[2], &index)
9132  || !ParseNaturalNumber(fields[3], &parent_process_id)
9133  || !ParseNaturalNumber(fields[4], &write_handle_as_size_t)
9134  || !ParseNaturalNumber(fields[5], &event_handle_as_size_t)) {
9135  DeathTestAbort("Bad --gtest_internal_run_death_test flag: " +
9136  GTEST_FLAG(internal_run_death_test));
9137  }
9138  write_fd = GetStatusFileDescriptor(parent_process_id,
9139  write_handle_as_size_t,
9140  event_handle_as_size_t);
9141 
9142 # elif GTEST_OS_FUCHSIA
9143 
9144  if (fields.size() != 3
9145  || !ParseNaturalNumber(fields[1], &line)
9146  || !ParseNaturalNumber(fields[2], &index)) {
9147  DeathTestAbort("Bad --gtest_internal_run_death_test flag: "
9148  + GTEST_FLAG(internal_run_death_test));
9149  }
9150 
9151 # else
9152 
9153  if (fields.size() != 4
9154  || !ParseNaturalNumber(fields[1], &line)
9155  || !ParseNaturalNumber(fields[2], &index)
9156  || !ParseNaturalNumber(fields[3], &write_fd)) {
9157  DeathTestAbort("Bad --gtest_internal_run_death_test flag: "
9158  + GTEST_FLAG(internal_run_death_test));
9159  }
9160 
9161 # endif // GTEST_OS_WINDOWS
9162 
9163  return new InternalRunDeathTestFlag(fields[0], line, index, write_fd);
9164 }
9165 
9166 } // namespace internal
9167 
9168 #endif // GTEST_HAS_DEATH_TEST
9169 
9170 } // namespace testing
9171 // Copyright 2008, Google Inc.
9172 // All rights reserved.
9173 //
9174 // Redistribution and use in source and binary forms, with or without
9175 // modification, are permitted provided that the following conditions are
9176 // met:
9177 //
9178 // * Redistributions of source code must retain the above copyright
9179 // notice, this list of conditions and the following disclaimer.
9180 // * Redistributions in binary form must reproduce the above
9181 // copyright notice, this list of conditions and the following disclaimer
9182 // in the documentation and/or other materials provided with the
9183 // distribution.
9184 // * Neither the name of Google Inc. nor the names of its
9185 // contributors may be used to endorse or promote products derived from
9186 // this software without specific prior written permission.
9187 //
9188 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
9189 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
9190 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
9191 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
9192 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
9193 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
9194 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
9195 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
9196 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
9197 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
9198 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
9199 
9200 
9201 #include <stdlib.h>
9202 
9203 #if GTEST_OS_WINDOWS_MOBILE
9204 # include <windows.h>
9205 #elif GTEST_OS_WINDOWS
9206 # include <direct.h>
9207 # include <io.h>
9208 #else
9209 # include <limits.h>
9210 # include <climits> // Some Linux distributions define PATH_MAX here.
9211 #endif // GTEST_OS_WINDOWS_MOBILE
9212 
9213 
9214 #if GTEST_OS_WINDOWS
9215 # define GTEST_PATH_MAX_ _MAX_PATH
9216 #elif defined(PATH_MAX)
9217 # define GTEST_PATH_MAX_ PATH_MAX
9218 #elif defined(_XOPEN_PATH_MAX)
9219 # define GTEST_PATH_MAX_ _XOPEN_PATH_MAX
9220 #else
9221 # define GTEST_PATH_MAX_ _POSIX_PATH_MAX
9222 #endif // GTEST_OS_WINDOWS
9223 
9224 namespace testing {
9225 namespace internal {
9226 
9227 #if GTEST_OS_WINDOWS
9228 // On Windows, '\\' is the standard path separator, but many tools and the
9229 // Windows API also accept '/' as an alternate path separator. Unless otherwise
9230 // noted, a file path can contain either kind of path separators, or a mixture
9231 // of them.
9232 const char kPathSeparator = '\\';
9233 const char kAlternatePathSeparator = '/';
9234 const char kAlternatePathSeparatorString[] = "/";
9235 # if GTEST_OS_WINDOWS_MOBILE
9236 // Windows CE doesn't have a current directory. You should not use
9237 // the current directory in tests on Windows CE, but this at least
9238 // provides a reasonable fallback.
9239 const char kCurrentDirectoryString[] = "\\";
9240 // Windows CE doesn't define INVALID_FILE_ATTRIBUTES
9241 const DWORD kInvalidFileAttributes = 0xffffffff;
9242 # else
9243 const char kCurrentDirectoryString[] = ".\\";
9244 # endif // GTEST_OS_WINDOWS_MOBILE
9245 #else
9246 const char kPathSeparator = '/';
9247 const char kCurrentDirectoryString[] = "./";
9248 #endif // GTEST_OS_WINDOWS
9249 
9250 // Returns whether the given character is a valid path separator.
9251 static bool IsPathSeparator(char c) {
9252 #if GTEST_HAS_ALT_PATH_SEP_
9253  return (c == kPathSeparator) || (c == kAlternatePathSeparator);
9254 #else
9255  return c == kPathSeparator;
9256 #endif
9257 }
9258 
9259 // Returns the current working directory, or "" if unsuccessful.
9260 FilePath FilePath::GetCurrentDir() {
9261 #if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_WINDOWS_PHONE || GTEST_OS_WINDOWS_RT
9262  // Windows CE doesn't have a current directory, so we just return
9263  // something reasonable.
9264  return FilePath(kCurrentDirectoryString);
9265 #elif GTEST_OS_WINDOWS
9266  char cwd[GTEST_PATH_MAX_ + 1] = { '\0' };
9267  return FilePath(_getcwd(cwd, sizeof(cwd)) == nullptr ? "" : cwd);
9268 #else
9269  char cwd[GTEST_PATH_MAX_ + 1] = { '\0' };
9270  char* result = getcwd(cwd, sizeof(cwd));
9271 # if GTEST_OS_NACL
9272  // getcwd will likely fail in NaCl due to the sandbox, so return something
9273  // reasonable. The user may have provided a shim implementation for getcwd,
9274  // however, so fallback only when failure is detected.
9275  return FilePath(result == nullptr ? kCurrentDirectoryString : cwd);
9276 # endif // GTEST_OS_NACL
9277  return FilePath(result == nullptr ? "" : cwd);
9278 #endif // GTEST_OS_WINDOWS_MOBILE
9279 }
9280 
9281 // Returns a copy of the FilePath with the case-insensitive extension removed.
9282 // Example: FilePath("dir/file.exe").RemoveExtension("EXE") returns
9283 // FilePath("dir/file"). If a case-insensitive extension is not
9284 // found, returns a copy of the original FilePath.
9285 FilePath FilePath::RemoveExtension(const char* extension) const {
9286  const std::string dot_extension = std::string(".") + extension;
9287  if (String::EndsWithCaseInsensitive(pathname_, dot_extension)) {
9288  return FilePath(pathname_.substr(
9289  0, pathname_.length() - dot_extension.length()));
9290  }
9291  return *this;
9292 }
9293 
9294 // Returns a pointer to the last occurrence of a valid path separator in
9295 // the FilePath. On Windows, for example, both '/' and '\' are valid path
9296 // separators. Returns NULL if no path separator was found.
9297 const char* FilePath::FindLastPathSeparator() const {
9298  const char* const last_sep = strrchr(c_str(), kPathSeparator);
9299 #if GTEST_HAS_ALT_PATH_SEP_
9300  const char* const last_alt_sep = strrchr(c_str(), kAlternatePathSeparator);
9301  // Comparing two pointers of which only one is NULL is undefined.
9302  if (last_alt_sep != nullptr &&
9303  (last_sep == nullptr || last_alt_sep > last_sep)) {
9304  return last_alt_sep;
9305  }
9306 #endif
9307  return last_sep;
9308 }
9309 
9310 // Returns a copy of the FilePath with the directory part removed.
9311 // Example: FilePath("path/to/file").RemoveDirectoryName() returns
9312 // FilePath("file"). If there is no directory part ("just_a_file"), it returns
9313 // the FilePath unmodified. If there is no file part ("just_a_dir/") it
9314 // returns an empty FilePath ("").
9315 // On Windows platform, '\' is the path separator, otherwise it is '/'.
9316 FilePath FilePath::RemoveDirectoryName() const {
9317  const char* const last_sep = FindLastPathSeparator();
9318  return last_sep ? FilePath(last_sep + 1) : *this;
9319 }
9320 
9321 // RemoveFileName returns the directory path with the filename removed.
9322 // Example: FilePath("path/to/file").RemoveFileName() returns "path/to/".
9323 // If the FilePath is "a_file" or "/a_file", RemoveFileName returns
9324 // FilePath("./") or, on Windows, FilePath(".\\"). If the filepath does
9325 // not have a file, like "just/a/dir/", it returns the FilePath unmodified.
9326 // On Windows platform, '\' is the path separator, otherwise it is '/'.
9327 FilePath FilePath::RemoveFileName() const {
9328  const char* const last_sep = FindLastPathSeparator();
9329  std::string dir;
9330  if (last_sep) {
9331  dir = std::string(c_str(), last_sep + 1 - c_str());
9332  } else {
9334  }
9335  return FilePath(dir);
9336 }
9337 
9338 // Helper functions for naming files in a directory for xml output.
9339 
9340 // Given directory = "dir", base_name = "test", number = 0,
9341 // extension = "xml", returns "dir/test.xml". If number is greater
9342 // than zero (e.g., 12), returns "dir/test_12.xml".
9343 // On Windows platform, uses \ as the separator rather than /.
9344 FilePath FilePath::MakeFileName(const FilePath& directory,
9345  const FilePath& base_name,
9346  int number,
9347  const char* extension) {
9348  std::string file;
9349  if (number == 0) {
9350  file = base_name.string() + "." + extension;
9351  } else {
9352  file = base_name.string() + "_" + StreamableToString(number)
9353  + "." + extension;
9354  }
9355  return ConcatPaths(directory, FilePath(file));
9356 }
9357 
9358 // Given directory = "dir", relative_path = "test.xml", returns "dir/test.xml".
9359 // On Windows, uses \ as the separator rather than /.
9360 FilePath FilePath::ConcatPaths(const FilePath& directory,
9361  const FilePath& relative_path) {
9362  if (directory.IsEmpty())
9363  return relative_path;
9364  const FilePath dir(directory.RemoveTrailingPathSeparator());
9365  return FilePath(dir.string() + kPathSeparator + relative_path.string());
9366 }
9367 
9368 // Returns true if pathname describes something findable in the file-system,
9369 // either a file, directory, or whatever.
9370 bool FilePath::FileOrDirectoryExists() const {
9371 #if GTEST_OS_WINDOWS_MOBILE
9372  LPCWSTR unicode = String::AnsiToUtf16(pathname_.c_str());
9373  const DWORD attributes = GetFileAttributes(unicode);
9374  delete [] unicode;
9375  return attributes != kInvalidFileAttributes;
9376 #else
9377  posix::StatStruct file_stat;
9378  return posix::Stat(pathname_.c_str(), &file_stat) == 0;
9379 #endif // GTEST_OS_WINDOWS_MOBILE
9380 }
9381 
9382 // Returns true if pathname describes a directory in the file-system
9383 // that exists.
9384 bool FilePath::DirectoryExists() const {
9385  bool result = false;
9386 #if GTEST_OS_WINDOWS
9387  // Don't strip off trailing separator if path is a root directory on
9388  // Windows (like "C:\\").
9389  const FilePath& path(IsRootDirectory() ? *this :
9390  RemoveTrailingPathSeparator());
9391 #else
9392  const FilePath& path(*this);
9393 #endif
9394 
9395 #if GTEST_OS_WINDOWS_MOBILE
9396  LPCWSTR unicode = String::AnsiToUtf16(path.c_str());
9397  const DWORD attributes = GetFileAttributes(unicode);
9398  delete [] unicode;
9399  if ((attributes != kInvalidFileAttributes) &&
9400  (attributes & FILE_ATTRIBUTE_DIRECTORY)) {
9401  result = true;
9402  }
9403 #else
9404  posix::StatStruct file_stat;
9405  result = posix::Stat(path.c_str(), &file_stat) == 0 &&
9406  posix::IsDir(file_stat);
9407 #endif // GTEST_OS_WINDOWS_MOBILE
9408 
9409  return result;
9410 }
9411 
9412 // Returns true if pathname describes a root directory. (Windows has one
9413 // root directory per disk drive.)
9414 bool FilePath::IsRootDirectory() const {
9415 #if GTEST_OS_WINDOWS
9416  return pathname_.length() == 3 && IsAbsolutePath();
9417 #else
9418  return pathname_.length() == 1 && IsPathSeparator(pathname_.c_str()[0]);
9419 #endif
9420 }
9421 
9422 // Returns true if pathname describes an absolute path.
9423 bool FilePath::IsAbsolutePath() const {
9424  const char* const name = pathname_.c_str();
9425 #if GTEST_OS_WINDOWS
9426  return pathname_.length() >= 3 &&
9427  ((name[0] >= 'a' && name[0] <= 'z') ||
9428  (name[0] >= 'A' && name[0] <= 'Z')) &&
9429  name[1] == ':' &&
9430  IsPathSeparator(name[2]);
9431 #else
9432  return IsPathSeparator(name[0]);
9433 #endif
9434 }
9435 
9436 // Returns a pathname for a file that does not currently exist. The pathname
9437 // will be directory/base_name.extension or
9438 // directory/base_name_<number>.extension if directory/base_name.extension
9439 // already exists. The number will be incremented until a pathname is found
9440 // that does not already exist.
9441 // Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'.
9442 // There could be a race condition if two or more processes are calling this
9443 // function at the same time -- they could both pick the same filename.
9444 FilePath FilePath::GenerateUniqueFileName(const FilePath& directory,
9445  const FilePath& base_name,
9446  const char* extension) {
9447  FilePath full_pathname;
9448  int number = 0;
9449  do {
9450  full_pathname.Set(MakeFileName(directory, base_name, number++, extension));
9451  } while (full_pathname.FileOrDirectoryExists());
9452  return full_pathname;
9453 }
9454 
9455 // Returns true if FilePath ends with a path separator, which indicates that
9456 // it is intended to represent a directory. Returns false otherwise.
9457 // This does NOT check that a directory (or file) actually exists.
9458 bool FilePath::IsDirectory() const {
9459  return !pathname_.empty() &&
9460  IsPathSeparator(pathname_.c_str()[pathname_.length() - 1]);
9461 }
9462 
9463 // Create directories so that path exists. Returns true if successful or if
9464 // the directories already exist; returns false if unable to create directories
9465 // for any reason.
9466 bool FilePath::CreateDirectoriesRecursively() const {
9467  if (!this->IsDirectory()) {
9468  return false;
9469  }
9470 
9471  if (pathname_.length() == 0 || this->DirectoryExists()) {
9472  return true;
9473  }
9474 
9475  const FilePath parent(this->RemoveTrailingPathSeparator().RemoveFileName());
9476  return parent.CreateDirectoriesRecursively() && this->CreateFolder();
9477 }
9478 
9479 // Create the directory so that path exists. Returns true if successful or
9480 // if the directory already exists; returns false if unable to create the
9481 // directory for any reason, including if the parent directory does not
9482 // exist. Not named "CreateDirectory" because that's a macro on Windows.
9483 bool FilePath::CreateFolder() const {
9484 #if GTEST_OS_WINDOWS_MOBILE
9485  FilePath removed_sep(this->RemoveTrailingPathSeparator());
9486  LPCWSTR unicode = String::AnsiToUtf16(removed_sep.c_str());
9487  int result = CreateDirectory(unicode, nullptr) ? 0 : -1;
9488  delete [] unicode;
9489 #elif GTEST_OS_WINDOWS
9490  int result = _mkdir(pathname_.c_str());
9491 #else
9492  int result = mkdir(pathname_.c_str(), 0777);
9493 #endif // GTEST_OS_WINDOWS_MOBILE
9494 
9495  if (result == -1) {
9496  return this->DirectoryExists(); // An error is OK if the directory exists.
9497  }
9498  return true; // No error.
9499 }
9500 
9501 // If input name has a trailing separator character, remove it and return the
9502 // name, otherwise return the name string unmodified.
9503 // On Windows platform, uses \ as the separator, other platforms use /.
9504 FilePath FilePath::RemoveTrailingPathSeparator() const {
9505  return IsDirectory()
9506  ? FilePath(pathname_.substr(0, pathname_.length() - 1))
9507  : *this;
9508 }
9509 
9510 // Removes any redundant separators that might be in the pathname.
9511 // For example, "bar///foo" becomes "bar/foo". Does not eliminate other
9512 // redundancies that might be in a pathname involving "." or "..".
9513 void FilePath::Normalize() {
9514  if (pathname_.c_str() == nullptr) {
9515  pathname_ = "";
9516  return;
9517  }
9518  const char* src = pathname_.c_str();
9519  char* const dest = new char[pathname_.length() + 1];
9520  char* dest_ptr = dest;
9521  memset(dest_ptr, 0, pathname_.length() + 1);
9522 
9523  while (*src != '\0') {
9524  *dest_ptr = *src;
9525  if (!IsPathSeparator(*src)) {
9526  src++;
9527  } else {
9528 #if GTEST_HAS_ALT_PATH_SEP_
9529  if (*dest_ptr == kAlternatePathSeparator) {
9530  *dest_ptr = kPathSeparator;
9531  }
9532 #endif
9533  while (IsPathSeparator(*src))
9534  src++;
9535  }
9536  dest_ptr++;
9537  }
9538  *dest_ptr = '\0';
9539  pathname_ = dest;
9540  delete[] dest;
9541 }
9542 
9543 } // namespace internal
9544 } // namespace testing
9545 // Copyright 2007, Google Inc.
9546 // All rights reserved.
9547 //
9548 // Redistribution and use in source and binary forms, with or without
9549 // modification, are permitted provided that the following conditions are
9550 // met:
9551 //
9552 // * Redistributions of source code must retain the above copyright
9553 // notice, this list of conditions and the following disclaimer.
9554 // * Redistributions in binary form must reproduce the above
9555 // copyright notice, this list of conditions and the following disclaimer
9556 // in the documentation and/or other materials provided with the
9557 // distribution.
9558 // * Neither the name of Google Inc. nor the names of its
9559 // contributors may be used to endorse or promote products derived from
9560 // this software without specific prior written permission.
9561 //
9562 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
9563 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
9564 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
9565 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
9566 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
9567 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
9568 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
9569 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
9570 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
9571 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
9572 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
9573 
9574 // The Google C++ Testing and Mocking Framework (Google Test)
9575 //
9576 // This file implements just enough of the matcher interface to allow
9577 // EXPECT_DEATH and friends to accept a matcher argument.
9578 
9579 
9580 #include <string>
9581 
9582 namespace testing {
9583 
9584 // Constructs a matcher that matches a const std::string& whose value is
9585 // equal to s.
9586 Matcher<const std::string&>::Matcher(const std::string& s) { *this = Eq(s); }
9587 
9588 #if GTEST_HAS_GLOBAL_STRING
9589 // Constructs a matcher that matches a const std::string& whose value is
9590 // equal to s.
9591 Matcher<const std::string&>::Matcher(const ::string& s) {
9592  *this = Eq(static_cast<std::string>(s));
9593 }
9594 #endif // GTEST_HAS_GLOBAL_STRING
9595 
9596 // Constructs a matcher that matches a const std::string& whose value is
9597 // equal to s.
9598 Matcher<const std::string&>::Matcher(const char* s) {
9599  *this = Eq(std::string(s));
9600 }
9601 
9602 // Constructs a matcher that matches a std::string whose value is equal to
9603 // s.
9604 Matcher<std::string>::Matcher(const std::string& s) { *this = Eq(s); }
9605 
9606 #if GTEST_HAS_GLOBAL_STRING
9607 // Constructs a matcher that matches a std::string whose value is equal to
9608 // s.
9609 Matcher<std::string>::Matcher(const ::string& s) {
9610  *this = Eq(static_cast<std::string>(s));
9611 }
9612 #endif // GTEST_HAS_GLOBAL_STRING
9613 
9614 // Constructs a matcher that matches a std::string whose value is equal to
9615 // s.
9616 Matcher<std::string>::Matcher(const char* s) { *this = Eq(std::string(s)); }
9617 
9618 #if GTEST_HAS_GLOBAL_STRING
9619 // Constructs a matcher that matches a const ::string& whose value is
9620 // equal to s.
9621 Matcher<const ::string&>::Matcher(const std::string& s) {
9622  *this = Eq(static_cast<::string>(s));
9623 }
9624 
9625 // Constructs a matcher that matches a const ::string& whose value is
9626 // equal to s.
9627 Matcher<const ::string&>::Matcher(const ::string& s) { *this = Eq(s); }
9628 
9629 // Constructs a matcher that matches a const ::string& whose value is
9630 // equal to s.
9631 Matcher<const ::string&>::Matcher(const char* s) { *this = Eq(::string(s)); }
9632 
9633 // Constructs a matcher that matches a ::string whose value is equal to s.
9634 Matcher<::string>::Matcher(const std::string& s) {
9635  *this = Eq(static_cast<::string>(s));
9636 }
9637 
9638 // Constructs a matcher that matches a ::string whose value is equal to s.
9639 Matcher<::string>::Matcher(const ::string& s) { *this = Eq(s); }
9640 
9641 // Constructs a matcher that matches a string whose value is equal to s.
9642 Matcher<::string>::Matcher(const char* s) { *this = Eq(::string(s)); }
9643 #endif // GTEST_HAS_GLOBAL_STRING
9644 
9645 #if GTEST_HAS_ABSL
9646 // Constructs a matcher that matches a const absl::string_view& whose value is
9647 // equal to s.
9648 Matcher<const absl::string_view&>::Matcher(const std::string& s) {
9649  *this = Eq(s);
9650 }
9651 
9652 #if GTEST_HAS_GLOBAL_STRING
9653 // Constructs a matcher that matches a const absl::string_view& whose value is
9654 // equal to s.
9655 Matcher<const absl::string_view&>::Matcher(const ::string& s) { *this = Eq(s); }
9656 #endif // GTEST_HAS_GLOBAL_STRING
9657 
9658 // Constructs a matcher that matches a const absl::string_view& whose value is
9659 // equal to s.
9660 Matcher<const absl::string_view&>::Matcher(const char* s) {
9661  *this = Eq(std::string(s));
9662 }
9663 
9664 // Constructs a matcher that matches a const absl::string_view& whose value is
9665 // equal to s.
9666 Matcher<const absl::string_view&>::Matcher(absl::string_view s) {
9667  *this = Eq(std::string(s));
9668 }
9669 
9670 // Constructs a matcher that matches a absl::string_view whose value is equal to
9671 // s.
9672 Matcher<absl::string_view>::Matcher(const std::string& s) { *this = Eq(s); }
9673 
9674 #if GTEST_HAS_GLOBAL_STRING
9675 // Constructs a matcher that matches a absl::string_view whose value is equal to
9676 // s.
9677 Matcher<absl::string_view>::Matcher(const ::string& s) { *this = Eq(s); }
9678 #endif // GTEST_HAS_GLOBAL_STRING
9679 
9680 // Constructs a matcher that matches a absl::string_view whose value is equal to
9681 // s.
9682 Matcher<absl::string_view>::Matcher(const char* s) {
9683  *this = Eq(std::string(s));
9684 }
9685 
9686 // Constructs a matcher that matches a absl::string_view whose value is equal to
9687 // s.
9688 Matcher<absl::string_view>::Matcher(absl::string_view s) {
9689  *this = Eq(std::string(s));
9690 }
9691 #endif // GTEST_HAS_ABSL
9692 
9693 } // namespace testing
9694 // Copyright 2008, Google Inc.
9695 // All rights reserved.
9696 //
9697 // Redistribution and use in source and binary forms, with or without
9698 // modification, are permitted provided that the following conditions are
9699 // met:
9700 //
9701 // * Redistributions of source code must retain the above copyright
9702 // notice, this list of conditions and the following disclaimer.
9703 // * Redistributions in binary form must reproduce the above
9704 // copyright notice, this list of conditions and the following disclaimer
9705 // in the documentation and/or other materials provided with the
9706 // distribution.
9707 // * Neither the name of Google Inc. nor the names of its
9708 // contributors may be used to endorse or promote products derived from
9709 // this software without specific prior written permission.
9710 //
9711 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
9712 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
9713 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
9714 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
9715 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
9716 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
9717 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
9718 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
9719 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
9720 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
9721 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
9722 
9723 
9724 
9725 #include <limits.h>
9726 #include <stdio.h>
9727 #include <stdlib.h>
9728 #include <string.h>
9729 #include <fstream>
9730 #include <memory>
9731 
9732 #if GTEST_OS_WINDOWS
9733 # include <windows.h>
9734 # include <io.h>
9735 # include <sys/stat.h>
9736 # include <map> // Used in ThreadLocal.
9737 # ifdef _MSC_VER
9738 # include <crtdbg.h>
9739 # endif // _MSC_VER
9740 #else
9741 # include <unistd.h>
9742 #endif // GTEST_OS_WINDOWS
9743 
9744 #if GTEST_OS_MAC
9745 # include <mach/mach_init.h>
9746 # include <mach/task.h>
9747 # include <mach/vm_map.h>
9748 #endif // GTEST_OS_MAC
9749 
9750 #if GTEST_OS_QNX
9751 # include <devctl.h>
9752 # include <fcntl.h>
9753 # include <sys/procfs.h>
9754 #endif // GTEST_OS_QNX
9755 
9756 #if GTEST_OS_AIX
9757 # include <procinfo.h>
9758 # include <sys/types.h>
9759 #endif // GTEST_OS_AIX
9760 
9761 #if GTEST_OS_FUCHSIA
9762 # include <zircon/process.h>
9763 # include <zircon/syscalls.h>
9764 #endif // GTEST_OS_FUCHSIA
9765 
9766 
9767 namespace testing {
9768 namespace internal {
9769 
9770 #if defined(_MSC_VER) || defined(__BORLANDC__)
9771 // MSVC and C++Builder do not provide a definition of STDERR_FILENO.
9772 const int kStdOutFileno = 1;
9773 const int kStdErrFileno = 2;
9774 #else
9775 const int kStdOutFileno = STDOUT_FILENO;
9776 const int kStdErrFileno = STDERR_FILENO;
9777 #endif // _MSC_VER
9778 
9779 #if GTEST_OS_LINUX
9780 
9781 namespace {
9782 template <typename T>
9783 T ReadProcFileField(const std::string& filename, int field) {
9784  std::string dummy;
9785  std::ifstream file(filename.c_str());
9786  while (field-- > 0) {
9787  file >> dummy;
9788  }
9789  T output = 0;
9790  file >> output;
9791  return output;
9792 }
9793 } // namespace
9794 
9795 // Returns the number of active threads, or 0 when there is an error.
9796 size_t GetThreadCount() {
9797  const std::string filename =
9798  (Message() << "/proc/" << getpid() << "/stat").GetString();
9799  return ReadProcFileField<int>(filename, 19);
9800 }
9801 
9802 #elif GTEST_OS_MAC
9803 
9804 size_t GetThreadCount() {
9805  const task_t task = mach_task_self();
9806  mach_msg_type_number_t thread_count;
9807  thread_act_array_t thread_list;
9808  const kern_return_t status = task_threads(task, &thread_list, &thread_count);
9809  if (status == KERN_SUCCESS) {
9810  // task_threads allocates resources in thread_list and we need to free them
9811  // to avoid leaks.
9812  vm_deallocate(task,
9813  reinterpret_cast<vm_address_t>(thread_list),
9814  sizeof(thread_t) * thread_count);
9815  return static_cast<size_t>(thread_count);
9816  } else {
9817  return 0;
9818  }
9819 }
9820 
9821 #elif GTEST_OS_QNX
9822 
9823 // Returns the number of threads running in the process, or 0 to indicate that
9824 // we cannot detect it.
9825 size_t GetThreadCount() {
9826  const int fd = open("/proc/self/as", O_RDONLY);
9827  if (fd < 0) {
9828  return 0;
9829  }
9830  procfs_info process_info;
9831  const int status =
9832  devctl(fd, DCMD_PROC_INFO, &process_info, sizeof(process_info), nullptr);
9833  close(fd);
9834  if (status == EOK) {
9835  return static_cast<size_t>(process_info.num_threads);
9836  } else {
9837  return 0;
9838  }
9839 }
9840 
9841 #elif GTEST_OS_AIX
9842 
9843 size_t GetThreadCount() {
9844  struct procentry64 entry;
9845  pid_t pid = getpid();
9846  int status = getprocs64(&entry, sizeof(entry), nullptr, 0, &pid, 1);
9847  if (status == 1) {
9848  return entry.pi_thcount;
9849  } else {
9850  return 0;
9851  }
9852 }
9853 
9854 #elif GTEST_OS_FUCHSIA
9855 
9856 size_t GetThreadCount() {
9857  int dummy_buffer;
9858  size_t avail;
9859  zx_status_t status = zx_object_get_info(
9860  zx_process_self(),
9861  ZX_INFO_PROCESS_THREADS,
9862  &dummy_buffer,
9863  0,
9864  nullptr,
9865  &avail);
9866  if (status == ZX_OK) {
9867  return avail;
9868  } else {
9869  return 0;
9870  }
9871 }
9872 
9873 #else
9874 
9875 size_t GetThreadCount() {
9876  // There's no portable way to detect the number of threads, so we just
9877  // return 0 to indicate that we cannot detect it.
9878  return 0;
9879 }
9880 
9881 #endif // GTEST_OS_LINUX
9882 
9883 #if GTEST_IS_THREADSAFE && GTEST_OS_WINDOWS
9884 
9885 void SleepMilliseconds(int n) {
9886  ::Sleep(n);
9887 }
9888 
9889 AutoHandle::AutoHandle()
9890  : handle_(INVALID_HANDLE_VALUE) {}
9891 
9892 AutoHandle::AutoHandle(Handle handle)
9893  : handle_(handle) {}
9894 
9895 AutoHandle::~AutoHandle() {
9896  Reset();
9897 }
9898 
9899 AutoHandle::Handle AutoHandle::Get() const {
9900  return handle_;
9901 }
9902 
9903 void AutoHandle::Reset() {
9904  Reset(INVALID_HANDLE_VALUE);
9905 }
9906 
9907 void AutoHandle::Reset(HANDLE handle) {
9908  // Resetting with the same handle we already own is invalid.
9909  if (handle_ != handle) {
9910  if (IsCloseable()) {
9911  ::CloseHandle(handle_);
9912  }
9913  handle_ = handle;
9914  } else {
9915  GTEST_CHECK_(!IsCloseable())
9916  << "Resetting a valid handle to itself is likely a programmer error "
9917  "and thus not allowed.";
9918  }
9919 }
9920 
9921 bool AutoHandle::IsCloseable() const {
9922  // Different Windows APIs may use either of these values to represent an
9923  // invalid handle.
9924  return handle_ != nullptr && handle_ != INVALID_HANDLE_VALUE;
9925 }
9926 
9927 Notification::Notification()
9928  : event_(::CreateEvent(nullptr, // Default security attributes.
9929  TRUE, // Do not reset automatically.
9930  FALSE, // Initially unset.
9931  nullptr)) { // Anonymous event.
9932  GTEST_CHECK_(event_.Get() != nullptr);
9933 }
9934 
9935 void Notification::Notify() {
9936  GTEST_CHECK_(::SetEvent(event_.Get()) != FALSE);
9937 }
9938 
9939 void Notification::WaitForNotification() {
9940  GTEST_CHECK_(
9941  ::WaitForSingleObject(event_.Get(), INFINITE) == WAIT_OBJECT_0);
9942 }
9943 
9944 Mutex::Mutex()
9945  : owner_thread_id_(0),
9946  type_(kDynamic),
9947  critical_section_init_phase_(0),
9948  critical_section_(new CRITICAL_SECTION) {
9949  ::InitializeCriticalSection(critical_section_);
9950 }
9951 
9952 Mutex::~Mutex() {
9953  // Static mutexes are leaked intentionally. It is not thread-safe to try
9954  // to clean them up.
9955  if (type_ == kDynamic) {
9956  ::DeleteCriticalSection(critical_section_);
9957  delete critical_section_;
9958  critical_section_ = nullptr;
9959  }
9960 }
9961 
9962 void Mutex::Lock() {
9963  ThreadSafeLazyInit();
9964  ::EnterCriticalSection(critical_section_);
9965  owner_thread_id_ = ::GetCurrentThreadId();
9966 }
9967 
9968 void Mutex::Unlock() {
9969  ThreadSafeLazyInit();
9970  // We don't protect writing to owner_thread_id_ here, as it's the
9971  // caller's responsibility to ensure that the current thread holds the
9972  // mutex when this is called.
9973  owner_thread_id_ = 0;
9974  ::LeaveCriticalSection(critical_section_);
9975 }
9976 
9977 // Does nothing if the current thread holds the mutex. Otherwise, crashes
9978 // with high probability.
9979 void Mutex::AssertHeld() {
9980  ThreadSafeLazyInit();
9981  GTEST_CHECK_(owner_thread_id_ == ::GetCurrentThreadId())
9982  << "The current thread is not holding the mutex @" << this;
9983 }
9984 
9985 namespace {
9986 
9987 // Use the RAII idiom to flag mem allocs that are intentionally never
9988 // deallocated. The motivation is to silence the false positive mem leaks
9989 // that are reported by the debug version of MS's CRT which can only detect
9990 // if an alloc is missing a matching deallocation.
9991 // Example:
9992 // MemoryIsNotDeallocated memory_is_not_deallocated;
9993 // critical_section_ = new CRITICAL_SECTION;
9994 //
9995 class MemoryIsNotDeallocated
9996 {
9997  public:
9998  MemoryIsNotDeallocated() : old_crtdbg_flag_(0) {
9999 #ifdef _MSC_VER
10000  old_crtdbg_flag_ = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG);
10001  // Set heap allocation block type to _IGNORE_BLOCK so that MS debug CRT
10002  // doesn't report mem leak if there's no matching deallocation.
10003  _CrtSetDbgFlag(old_crtdbg_flag_ & ~_CRTDBG_ALLOC_MEM_DF);
10004 #endif // _MSC_VER
10005  }
10006 
10007  ~MemoryIsNotDeallocated() {
10008 #ifdef _MSC_VER
10009  // Restore the original _CRTDBG_ALLOC_MEM_DF flag
10010  _CrtSetDbgFlag(old_crtdbg_flag_);
10011 #endif // _MSC_VER
10012  }
10013 
10014  private:
10015  int old_crtdbg_flag_;
10016 
10017  GTEST_DISALLOW_COPY_AND_ASSIGN_(MemoryIsNotDeallocated);
10018 };
10019 
10020 } // namespace
10021 
10022 // Initializes owner_thread_id_ and critical_section_ in static mutexes.
10023 void Mutex::ThreadSafeLazyInit() {
10024  // Dynamic mutexes are initialized in the constructor.
10025  if (type_ == kStatic) {
10026  switch (
10027  ::InterlockedCompareExchange(&critical_section_init_phase_, 1L, 0L)) {
10028  case 0:
10029  // If critical_section_init_phase_ was 0 before the exchange, we
10030  // are the first to test it and need to perform the initialization.
10031  owner_thread_id_ = 0;
10032  {
10033  // Use RAII to flag that following mem alloc is never deallocated.
10034  MemoryIsNotDeallocated memory_is_not_deallocated;
10035  critical_section_ = new CRITICAL_SECTION;
10036  }
10037  ::InitializeCriticalSection(critical_section_);
10038  // Updates the critical_section_init_phase_ to 2 to signal
10039  // initialization complete.
10040  GTEST_CHECK_(::InterlockedCompareExchange(
10041  &critical_section_init_phase_, 2L, 1L) ==
10042  1L);
10043  break;
10044  case 1:
10045  // Somebody else is already initializing the mutex; spin until they
10046  // are done.
10047  while (::InterlockedCompareExchange(&critical_section_init_phase_,
10048  2L,
10049  2L) != 2L) {
10050  // Possibly yields the rest of the thread's time slice to other
10051  // threads.
10052  ::Sleep(0);
10053  }
10054  break;
10055 
10056  case 2:
10057  break; // The mutex is already initialized and ready for use.
10058 
10059  default:
10060  GTEST_CHECK_(false)
10061  << "Unexpected value of critical_section_init_phase_ "
10062  << "while initializing a static mutex.";
10063  }
10064  }
10065 }
10066 
10067 namespace {
10068 
10069 class ThreadWithParamSupport : public ThreadWithParamBase {
10070  public:
10071  static HANDLE CreateThread(Runnable* runnable,
10072  Notification* thread_can_start) {
10073  ThreadMainParam* param = new ThreadMainParam(runnable, thread_can_start);
10074  DWORD thread_id;
10075  HANDLE thread_handle = ::CreateThread(
10076  nullptr, // Default security.
10077  0, // Default stack size.
10078  &ThreadWithParamSupport::ThreadMain,
10079  param, // Parameter to ThreadMainStatic
10080  0x0, // Default creation flags.
10081  &thread_id); // Need a valid pointer for the call to work under Win98.
10082  GTEST_CHECK_(thread_handle != nullptr)
10083  << "CreateThread failed with error " << ::GetLastError() << ".";
10084  if (thread_handle == nullptr) {
10085  delete param;
10086  }
10087  return thread_handle;
10088  }
10089 
10090  private:
10091  struct ThreadMainParam {
10092  ThreadMainParam(Runnable* runnable, Notification* thread_can_start)
10093  : runnable_(runnable),
10094  thread_can_start_(thread_can_start) {
10095  }
10096  std::unique_ptr<Runnable> runnable_;
10097  // Does not own.
10098  Notification* thread_can_start_;
10099  };
10100 
10101  static DWORD WINAPI ThreadMain(void* ptr) {
10102  // Transfers ownership.
10103  std::unique_ptr<ThreadMainParam> param(static_cast<ThreadMainParam*>(ptr));
10104  if (param->thread_can_start_ != nullptr)
10105  param->thread_can_start_->WaitForNotification();
10106  param->runnable_->Run();
10107  return 0;
10108  }
10109 
10110  // Prohibit instantiation.
10111  ThreadWithParamSupport();
10112 
10113  GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadWithParamSupport);
10114 };
10115 
10116 } // namespace
10117 
10118 ThreadWithParamBase::ThreadWithParamBase(Runnable *runnable,
10119  Notification* thread_can_start)
10120  : thread_(ThreadWithParamSupport::CreateThread(runnable,
10121  thread_can_start)) {
10122 }
10123 
10124 ThreadWithParamBase::~ThreadWithParamBase() {
10125  Join();
10126 }
10127 
10128 void ThreadWithParamBase::Join() {
10129  GTEST_CHECK_(::WaitForSingleObject(thread_.Get(), INFINITE) == WAIT_OBJECT_0)
10130  << "Failed to join the thread with error " << ::GetLastError() << ".";
10131 }
10132 
10133 // Maps a thread to a set of ThreadIdToThreadLocals that have values
10134 // instantiated on that thread and notifies them when the thread exits. A
10135 // ThreadLocal instance is expected to persist until all threads it has
10136 // values on have terminated.
10137 class ThreadLocalRegistryImpl {
10138  public:
10139  // Registers thread_local_instance as having value on the current thread.
10140  // Returns a value that can be used to identify the thread from other threads.
10141  static ThreadLocalValueHolderBase* GetValueOnCurrentThread(
10142  const ThreadLocalBase* thread_local_instance) {
10143  DWORD current_thread = ::GetCurrentThreadId();
10144  MutexLock lock(&mutex_);
10145  ThreadIdToThreadLocals* const thread_to_thread_locals =
10146  GetThreadLocalsMapLocked();
10147  ThreadIdToThreadLocals::iterator thread_local_pos =
10148  thread_to_thread_locals->find(current_thread);
10149  if (thread_local_pos == thread_to_thread_locals->end()) {
10150  thread_local_pos = thread_to_thread_locals->insert(
10151  std::make_pair(current_thread, ThreadLocalValues())).first;
10152  StartWatcherThreadFor(current_thread);
10153  }
10154  ThreadLocalValues& thread_local_values = thread_local_pos->second;
10155  ThreadLocalValues::iterator value_pos =
10156  thread_local_values.find(thread_local_instance);
10157  if (value_pos == thread_local_values.end()) {
10158  value_pos =
10159  thread_local_values
10160  .insert(std::make_pair(
10161  thread_local_instance,
10162  std::shared_ptr<ThreadLocalValueHolderBase>(
10163  thread_local_instance->NewValueForCurrentThread())))
10164  .first;
10165  }
10166  return value_pos->second.get();
10167  }
10168 
10169  static void OnThreadLocalDestroyed(
10170  const ThreadLocalBase* thread_local_instance) {
10171  std::vector<std::shared_ptr<ThreadLocalValueHolderBase> > value_holders;
10172  // Clean up the ThreadLocalValues data structure while holding the lock, but
10173  // defer the destruction of the ThreadLocalValueHolderBases.
10174  {
10175  MutexLock lock(&mutex_);
10176  ThreadIdToThreadLocals* const thread_to_thread_locals =
10177  GetThreadLocalsMapLocked();
10178  for (ThreadIdToThreadLocals::iterator it =
10179  thread_to_thread_locals->begin();
10180  it != thread_to_thread_locals->end();
10181  ++it) {
10182  ThreadLocalValues& thread_local_values = it->second;
10183  ThreadLocalValues::iterator value_pos =
10184  thread_local_values.find(thread_local_instance);
10185  if (value_pos != thread_local_values.end()) {
10186  value_holders.push_back(value_pos->second);
10187  thread_local_values.erase(value_pos);
10188  // This 'if' can only be successful at most once, so theoretically we
10189  // could break out of the loop here, but we don't bother doing so.
10190  }
10191  }
10192  }
10193  // Outside the lock, let the destructor for 'value_holders' deallocate the
10194  // ThreadLocalValueHolderBases.
10195  }
10196 
10197  static void OnThreadExit(DWORD thread_id) {
10198  GTEST_CHECK_(thread_id != 0) << ::GetLastError();
10199  std::vector<std::shared_ptr<ThreadLocalValueHolderBase> > value_holders;
10200  // Clean up the ThreadIdToThreadLocals data structure while holding the
10201  // lock, but defer the destruction of the ThreadLocalValueHolderBases.
10202  {
10203  MutexLock lock(&mutex_);
10204  ThreadIdToThreadLocals* const thread_to_thread_locals =
10205  GetThreadLocalsMapLocked();
10206  ThreadIdToThreadLocals::iterator thread_local_pos =
10207  thread_to_thread_locals->find(thread_id);
10208  if (thread_local_pos != thread_to_thread_locals->end()) {
10209  ThreadLocalValues& thread_local_values = thread_local_pos->second;
10210  for (ThreadLocalValues::iterator value_pos =
10211  thread_local_values.begin();
10212  value_pos != thread_local_values.end();
10213  ++value_pos) {
10214  value_holders.push_back(value_pos->second);
10215  }
10216  thread_to_thread_locals->erase(thread_local_pos);
10217  }
10218  }
10219  // Outside the lock, let the destructor for 'value_holders' deallocate the
10220  // ThreadLocalValueHolderBases.
10221  }
10222 
10223  private:
10224  // In a particular thread, maps a ThreadLocal object to its value.
10225  typedef std::map<const ThreadLocalBase*,
10226  std::shared_ptr<ThreadLocalValueHolderBase> >
10227  ThreadLocalValues;
10228  // Stores all ThreadIdToThreadLocals having values in a thread, indexed by
10229  // thread's ID.
10230  typedef std::map<DWORD, ThreadLocalValues> ThreadIdToThreadLocals;
10231 
10232  // Holds the thread id and thread handle that we pass from
10233  // StartWatcherThreadFor to WatcherThreadFunc.
10234  typedef std::pair<DWORD, HANDLE> ThreadIdAndHandle;
10235 
10236  static void StartWatcherThreadFor(DWORD thread_id) {
10237  // The returned handle will be kept in thread_map and closed by
10238  // watcher_thread in WatcherThreadFunc.
10239  HANDLE thread = ::OpenThread(SYNCHRONIZE | THREAD_QUERY_INFORMATION,
10240  FALSE,
10241  thread_id);
10242  GTEST_CHECK_(thread != nullptr);
10243  // We need to pass a valid thread ID pointer into CreateThread for it
10244  // to work correctly under Win98.
10245  DWORD watcher_thread_id;
10246  HANDLE watcher_thread = ::CreateThread(
10247  nullptr, // Default security.
10248  0, // Default stack size
10249  &ThreadLocalRegistryImpl::WatcherThreadFunc,
10250  reinterpret_cast<LPVOID>(new ThreadIdAndHandle(thread_id, thread)),
10251  CREATE_SUSPENDED, &watcher_thread_id);
10252  GTEST_CHECK_(watcher_thread != nullptr);
10253  // Give the watcher thread the same priority as ours to avoid being
10254  // blocked by it.
10255  ::SetThreadPriority(watcher_thread,
10256  ::GetThreadPriority(::GetCurrentThread()));
10257  ::ResumeThread(watcher_thread);
10258  ::CloseHandle(watcher_thread);
10259  }
10260 
10261  // Monitors exit from a given thread and notifies those
10262  // ThreadIdToThreadLocals about thread termination.
10263  static DWORD WINAPI WatcherThreadFunc(LPVOID param) {
10264  const ThreadIdAndHandle* tah =
10265  reinterpret_cast<const ThreadIdAndHandle*>(param);
10266  GTEST_CHECK_(
10267  ::WaitForSingleObject(tah->second, INFINITE) == WAIT_OBJECT_0);
10268  OnThreadExit(tah->first);
10269  ::CloseHandle(tah->second);
10270  delete tah;
10271  return 0;
10272  }
10273 
10274  // Returns map of thread local instances.
10275  static ThreadIdToThreadLocals* GetThreadLocalsMapLocked() {
10276  mutex_.AssertHeld();
10277  MemoryIsNotDeallocated memory_is_not_deallocated;
10278  static ThreadIdToThreadLocals* map = new ThreadIdToThreadLocals();
10279  return map;
10280  }
10281 
10282  // Protects access to GetThreadLocalsMapLocked() and its return value.
10283  static Mutex mutex_;
10284  // Protects access to GetThreadMapLocked() and its return value.
10285  static Mutex thread_map_mutex_;
10286 };
10287 
10288 Mutex ThreadLocalRegistryImpl::mutex_(Mutex::kStaticMutex);
10289 Mutex ThreadLocalRegistryImpl::thread_map_mutex_(Mutex::kStaticMutex);
10290 
10291 ThreadLocalValueHolderBase* ThreadLocalRegistry::GetValueOnCurrentThread(
10292  const ThreadLocalBase* thread_local_instance) {
10293  return ThreadLocalRegistryImpl::GetValueOnCurrentThread(
10294  thread_local_instance);
10295 }
10296 
10297 void ThreadLocalRegistry::OnThreadLocalDestroyed(
10298  const ThreadLocalBase* thread_local_instance) {
10299  ThreadLocalRegistryImpl::OnThreadLocalDestroyed(thread_local_instance);
10300 }
10301 
10302 #endif // GTEST_IS_THREADSAFE && GTEST_OS_WINDOWS
10303 
10304 #if GTEST_USES_POSIX_RE
10305 
10306 // Implements RE. Currently only needed for death tests.
10307 
10308 RE::~RE() {
10309  if (is_valid_) {
10310  // regfree'ing an invalid regex might crash because the content
10311  // of the regex is undefined. Since the regex's are essentially
10312  // the same, one cannot be valid (or invalid) without the other
10313  // being so too.
10314  regfree(&partial_regex_);
10315  regfree(&full_regex_);
10316  }
10317  free(const_cast<char*>(pattern_));
10318 }
10319 
10320 // Returns true iff regular expression re matches the entire str.
10321 bool RE::FullMatch(const char* str, const RE& re) {
10322  if (!re.is_valid_) return false;
10323 
10324  regmatch_t match;
10325  return regexec(&re.full_regex_, str, 1, &match, 0) == 0;
10326 }
10327 
10328 // Returns true iff regular expression re matches a substring of str
10329 // (including str itself).
10330 bool RE::PartialMatch(const char* str, const RE& re) {
10331  if (!re.is_valid_) return false;
10332 
10333  regmatch_t match;
10334  return regexec(&re.partial_regex_, str, 1, &match, 0) == 0;
10335 }
10336 
10337 // Initializes an RE from its string representation.
10338 void RE::Init(const char* regex) {
10339  pattern_ = posix::StrDup(regex);
10340 
10341  // Reserves enough bytes to hold the regular expression used for a
10342  // full match.
10343  const size_t full_regex_len = strlen(regex) + 10;
10344  char* const full_pattern = new char[full_regex_len];
10345 
10346  snprintf(full_pattern, full_regex_len, "^(%s)$", regex);
10347  is_valid_ = regcomp(&full_regex_, full_pattern, REG_EXTENDED) == 0;
10348  // We want to call regcomp(&partial_regex_, ...) even if the
10349  // previous expression returns false. Otherwise partial_regex_ may
10350  // not be properly initialized can may cause trouble when it's
10351  // freed.
10352  //
10353  // Some implementation of POSIX regex (e.g. on at least some
10354  // versions of Cygwin) doesn't accept the empty string as a valid
10355  // regex. We change it to an equivalent form "()" to be safe.
10356  if (is_valid_) {
10357  const char* const partial_regex = (*regex == '\0') ? "()" : regex;
10358  is_valid_ = regcomp(&partial_regex_, partial_regex, REG_EXTENDED) == 0;
10359  }
10360  EXPECT_TRUE(is_valid_)
10361  << "Regular expression \"" << regex
10362  << "\" is not a valid POSIX Extended regular expression.";
10363 
10364  delete[] full_pattern;
10365 }
10366 
10367 #elif GTEST_USES_SIMPLE_RE
10368 
10369 // Returns true iff ch appears anywhere in str (excluding the
10370 // terminating '\0' character).
10371 bool IsInSet(char ch, const char* str) {
10372  return ch != '\0' && strchr(str, ch) != nullptr;
10373 }
10374 
10375 // Returns true iff ch belongs to the given classification. Unlike
10376 // similar functions in <ctype.h>, these aren't affected by the
10377 // current locale.
10378 bool IsAsciiDigit(char ch) { return '0' <= ch && ch <= '9'; }
10379 bool IsAsciiPunct(char ch) {
10380  return IsInSet(ch, "^-!\"#$%&'()*+,./:;<=>?@[\\]_`{|}~");
10381 }
10382 bool IsRepeat(char ch) { return IsInSet(ch, "?*+"); }
10383 bool IsAsciiWhiteSpace(char ch) { return IsInSet(ch, " \f\n\r\t\v"); }
10384 bool IsAsciiWordChar(char ch) {
10385  return ('a' <= ch && ch <= 'z') || ('A' <= ch && ch <= 'Z') ||
10386  ('0' <= ch && ch <= '9') || ch == '_';
10387 }
10388 
10389 // Returns true iff "\\c" is a supported escape sequence.
10390 bool IsValidEscape(char c) {
10391  return (IsAsciiPunct(c) || IsInSet(c, "dDfnrsStvwW"));
10392 }
10393 
10394 // Returns true iff the given atom (specified by escaped and pattern)
10395 // matches ch. The result is undefined if the atom is invalid.
10396 bool AtomMatchesChar(bool escaped, char pattern_char, char ch) {
10397  if (escaped) { // "\\p" where p is pattern_char.
10398  switch (pattern_char) {
10399  case 'd': return IsAsciiDigit(ch);
10400  case 'D': return !IsAsciiDigit(ch);
10401  case 'f': return ch == '\f';
10402  case 'n': return ch == '\n';
10403  case 'r': return ch == '\r';
10404  case 's': return IsAsciiWhiteSpace(ch);
10405  case 'S': return !IsAsciiWhiteSpace(ch);
10406  case 't': return ch == '\t';
10407  case 'v': return ch == '\v';
10408  case 'w': return IsAsciiWordChar(ch);
10409  case 'W': return !IsAsciiWordChar(ch);
10410  }
10411  return IsAsciiPunct(pattern_char) && pattern_char == ch;
10412  }
10413 
10414  return (pattern_char == '.' && ch != '\n') || pattern_char == ch;
10415 }
10416 
10417 // Helper function used by ValidateRegex() to format error messages.
10418 static std::string FormatRegexSyntaxError(const char* regex, int index) {
10419  return (Message() << "Syntax error at index " << index
10420  << " in simple regular expression \"" << regex << "\": ").GetString();
10421 }
10422 
10423 // Generates non-fatal failures and returns false if regex is invalid;
10424 // otherwise returns true.
10425 bool ValidateRegex(const char* regex) {
10426  if (regex == nullptr) {
10427  ADD_FAILURE() << "NULL is not a valid simple regular expression.";
10428  return false;
10429  }
10430 
10431  bool is_valid = true;
10432 
10433  // True iff ?, *, or + can follow the previous atom.
10434  bool prev_repeatable = false;
10435  for (int i = 0; regex[i]; i++) {
10436  if (regex[i] == '\\') { // An escape sequence
10437  i++;
10438  if (regex[i] == '\0') {
10439  ADD_FAILURE() << FormatRegexSyntaxError(regex, i - 1)
10440  << "'\\' cannot appear at the end.";
10441  return false;
10442  }
10443 
10444  if (!IsValidEscape(regex[i])) {
10445  ADD_FAILURE() << FormatRegexSyntaxError(regex, i - 1)
10446  << "invalid escape sequence \"\\" << regex[i] << "\".";
10447  is_valid = false;
10448  }
10449  prev_repeatable = true;
10450  } else { // Not an escape sequence.
10451  const char ch = regex[i];
10452 
10453  if (ch == '^' && i > 0) {
10454  ADD_FAILURE() << FormatRegexSyntaxError(regex, i)
10455  << "'^' can only appear at the beginning.";
10456  is_valid = false;
10457  } else if (ch == '$' && regex[i + 1] != '\0') {
10458  ADD_FAILURE() << FormatRegexSyntaxError(regex, i)
10459  << "'$' can only appear at the end.";
10460  is_valid = false;
10461  } else if (IsInSet(ch, "()[]{}|")) {
10462  ADD_FAILURE() << FormatRegexSyntaxError(regex, i)
10463  << "'" << ch << "' is unsupported.";
10464  is_valid = false;
10465  } else if (IsRepeat(ch) && !prev_repeatable) {
10466  ADD_FAILURE() << FormatRegexSyntaxError(regex, i)
10467  << "'" << ch << "' can only follow a repeatable token.";
10468  is_valid = false;
10469  }
10470 
10471  prev_repeatable = !IsInSet(ch, "^$?*+");
10472  }
10473  }
10474 
10475  return is_valid;
10476 }
10477 
10478 // Matches a repeated regex atom followed by a valid simple regular
10479 // expression. The regex atom is defined as c if escaped is false,
10480 // or \c otherwise. repeat is the repetition meta character (?, *,
10481 // or +). The behavior is undefined if str contains too many
10482 // characters to be indexable by size_t, in which case the test will
10483 // probably time out anyway. We are fine with this limitation as
10484 // std::string has it too.
10485 bool MatchRepetitionAndRegexAtHead(
10486  bool escaped, char c, char repeat, const char* regex,
10487  const char* str) {
10488  const size_t min_count = (repeat == '+') ? 1 : 0;
10489  const size_t max_count = (repeat == '?') ? 1 :
10490  static_cast<size_t>(-1) - 1;
10491  // We cannot call numeric_limits::max() as it conflicts with the
10492  // max() macro on Windows.
10493 
10494  for (size_t i = 0; i <= max_count; ++i) {
10495  // We know that the atom matches each of the first i characters in str.
10496  if (i >= min_count && MatchRegexAtHead(regex, str + i)) {
10497  // We have enough matches at the head, and the tail matches too.
10498  // Since we only care about *whether* the pattern matches str
10499  // (as opposed to *how* it matches), there is no need to find a
10500  // greedy match.
10501  return true;
10502  }
10503  if (str[i] == '\0' || !AtomMatchesChar(escaped, c, str[i]))
10504  return false;
10505  }
10506  return false;
10507 }
10508 
10509 // Returns true iff regex matches a prefix of str. regex must be a
10510 // valid simple regular expression and not start with "^", or the
10511 // result is undefined.
10512 bool MatchRegexAtHead(const char* regex, const char* str) {
10513  if (*regex == '\0') // An empty regex matches a prefix of anything.
10514  return true;
10515 
10516  // "$" only matches the end of a string. Note that regex being
10517  // valid guarantees that there's nothing after "$" in it.
10518  if (*regex == '$')
10519  return *str == '\0';
10520 
10521  // Is the first thing in regex an escape sequence?
10522  const bool escaped = *regex == '\\';
10523  if (escaped)
10524  ++regex;
10525  if (IsRepeat(regex[1])) {
10526  // MatchRepetitionAndRegexAtHead() calls MatchRegexAtHead(), so
10527  // here's an indirect recursion. It terminates as the regex gets
10528  // shorter in each recursion.
10529  return MatchRepetitionAndRegexAtHead(
10530  escaped, regex[0], regex[1], regex + 2, str);
10531  } else {
10532  // regex isn't empty, isn't "$", and doesn't start with a
10533  // repetition. We match the first atom of regex with the first
10534  // character of str and recurse.
10535  return (*str != '\0') && AtomMatchesChar(escaped, *regex, *str) &&
10536  MatchRegexAtHead(regex + 1, str + 1);
10537  }
10538 }
10539 
10540 // Returns true iff regex matches any substring of str. regex must be
10541 // a valid simple regular expression, or the result is undefined.
10542 //
10543 // The algorithm is recursive, but the recursion depth doesn't exceed
10544 // the regex length, so we won't need to worry about running out of
10545 // stack space normally. In rare cases the time complexity can be
10546 // exponential with respect to the regex length + the string length,
10547 // but usually it's must faster (often close to linear).
10548 bool MatchRegexAnywhere(const char* regex, const char* str) {
10549  if (regex == nullptr || str == nullptr) return false;
10550 
10551  if (*regex == '^')
10552  return MatchRegexAtHead(regex + 1, str);
10553 
10554  // A successful match can be anywhere in str.
10555  do {
10556  if (MatchRegexAtHead(regex, str))
10557  return true;
10558  } while (*str++ != '\0');
10559  return false;
10560 }
10561 
10562 // Implements the RE class.
10563 
10564 RE::~RE() {
10565  free(const_cast<char*>(pattern_));
10566  free(const_cast<char*>(full_pattern_));
10567 }
10568 
10569 // Returns true iff regular expression re matches the entire str.
10570 bool RE::FullMatch(const char* str, const RE& re) {
10571  return re.is_valid_ && MatchRegexAnywhere(re.full_pattern_, str);
10572 }
10573 
10574 // Returns true iff regular expression re matches a substring of str
10575 // (including str itself).
10576 bool RE::PartialMatch(const char* str, const RE& re) {
10577  return re.is_valid_ && MatchRegexAnywhere(re.pattern_, str);
10578 }
10579 
10580 // Initializes an RE from its string representation.
10581 void RE::Init(const char* regex) {
10582  pattern_ = full_pattern_ = nullptr;
10583  if (regex != nullptr) {
10584  pattern_ = posix::StrDup(regex);
10585  }
10586 
10587  is_valid_ = ValidateRegex(regex);
10588  if (!is_valid_) {
10589  // No need to calculate the full pattern when the regex is invalid.
10590  return;
10591  }
10592 
10593  const size_t len = strlen(regex);
10594  // Reserves enough bytes to hold the regular expression used for a
10595  // full match: we need space to prepend a '^', append a '$', and
10596  // terminate the string with '\0'.
10597  char* buffer = static_cast<char*>(malloc(len + 3));
10598  full_pattern_ = buffer;
10599 
10600  if (*regex != '^')
10601  *buffer++ = '^'; // Makes sure full_pattern_ starts with '^'.
10602 
10603  // We don't use snprintf or strncpy, as they trigger a warning when
10604  // compiled with VC++ 8.0.
10605  memcpy(buffer, regex, len);
10606  buffer += len;
10607 
10608  if (len == 0 || regex[len - 1] != '$')
10609  *buffer++ = '$'; // Makes sure full_pattern_ ends with '$'.
10610 
10611  *buffer = '\0';
10612 }
10613 
10614 #endif // GTEST_USES_POSIX_RE
10615 
10616 const char kUnknownFile[] = "unknown file";
10617 
10618 // Formats a source file path and a line number as they would appear
10619 // in an error message from the compiler used to compile this code.
10620 GTEST_API_ ::std::string FormatFileLocation(const char* file, int line) {
10621  const std::string file_name(file == nullptr ? kUnknownFile : file);
10622 
10623  if (line < 0) {
10624  return file_name + ":";
10625  }
10626 #ifdef _MSC_VER
10627  return file_name + "(" + StreamableToString(line) + "):";
10628 #else
10629  return file_name + ":" + StreamableToString(line) + ":";
10630 #endif // _MSC_VER
10631 }
10632 
10633 // Formats a file location for compiler-independent XML output.
10634 // Although this function is not platform dependent, we put it next to
10635 // FormatFileLocation in order to contrast the two functions.
10636 // Note that FormatCompilerIndependentFileLocation() does NOT append colon
10637 // to the file location it produces, unlike FormatFileLocation().
10639  const char* file, int line) {
10640  const std::string file_name(file == nullptr ? kUnknownFile : file);
10641 
10642  if (line < 0)
10643  return file_name;
10644  else
10645  return file_name + ":" + StreamableToString(line);
10646 }
10647 
10648 GTestLog::GTestLog(GTestLogSeverity severity, const char* file, int line)
10649  : severity_(severity) {
10650  const char* const marker =
10651  severity == GTEST_INFO ? "[ INFO ]" :
10652  severity == GTEST_WARNING ? "[WARNING]" :
10653  severity == GTEST_ERROR ? "[ ERROR ]" : "[ FATAL ]";
10654  GetStream() << ::std::endl << marker << " "
10655  << FormatFileLocation(file, line).c_str() << ": ";
10656 }
10657 
10658 // Flushes the buffers and, if severity is GTEST_FATAL, aborts the program.
10660  GetStream() << ::std::endl;
10661  if (severity_ == GTEST_FATAL) {
10662  fflush(stderr);
10663  posix::Abort();
10664  }
10665 }
10666 
10667 // Disable Microsoft deprecation warnings for POSIX functions called from
10668 // this class (creat, dup, dup2, and close)
10670 
10671 #if GTEST_HAS_STREAM_REDIRECTION
10672 
10673 // Object that captures an output stream (stdout/stderr).
10675  public:
10676  // The ctor redirects the stream to a temporary file.
10677  explicit CapturedStream(int fd) : fd_(fd), uncaptured_fd_(dup(fd)) {
10678 # if GTEST_OS_WINDOWS
10679  char temp_dir_path[MAX_PATH + 1] = { '\0' }; // NOLINT
10680  char temp_file_path[MAX_PATH + 1] = { '\0' }; // NOLINT
10681 
10682  ::GetTempPathA(sizeof(temp_dir_path), temp_dir_path);
10683  const UINT success = ::GetTempFileNameA(temp_dir_path,
10684  "gtest_redir",
10685  0, // Generate unique file name.
10686  temp_file_path);
10687  GTEST_CHECK_(success != 0)
10688  << "Unable to create a temporary file in " << temp_dir_path;
10689  const int captured_fd = creat(temp_file_path, _S_IREAD | _S_IWRITE);
10690  GTEST_CHECK_(captured_fd != -1) << "Unable to open temporary file "
10691  << temp_file_path;
10692  filename_ = temp_file_path;
10693 # else
10694  // There's no guarantee that a test has write access to the current
10695  // directory, so we create the temporary file in the /tmp directory
10696  // instead. We use /tmp on most systems, and /sdcard on Android.
10697  // That's because Android doesn't have /tmp.
10698 # if GTEST_OS_LINUX_ANDROID
10699  // Note: Android applications are expected to call the framework's
10700  // Context.getExternalStorageDirectory() method through JNI to get
10701  // the location of the world-writable SD Card directory. However,
10702  // this requires a Context handle, which cannot be retrieved
10703  // globally from native code. Doing so also precludes running the
10704  // code as part of a regular standalone executable, which doesn't
10705  // run in a Dalvik process (e.g. when running it through 'adb shell').
10706  //
10707  // The location /sdcard is directly accessible from native code
10708  // and is the only location (unofficially) supported by the Android
10709  // team. It's generally a symlink to the real SD Card mount point
10710  // which can be /mnt/sdcard, /mnt/sdcard0, /system/media/sdcard, or
10711  // other OEM-customized locations. Never rely on these, and always
10712  // use /sdcard.
10713  char name_template[] = "/sdcard/gtest_captured_stream.XXXXXX";
10714 # else
10715  char name_template[] = "/tmp/captured_stream.XXXXXX";
10716 # endif // GTEST_OS_LINUX_ANDROID
10717  const int captured_fd = mkstemp(name_template);
10718  filename_ = name_template;
10719 # endif // GTEST_OS_WINDOWS
10720  fflush(nullptr);
10721  dup2(captured_fd, fd_);
10722  close(captured_fd);
10723  }
10724 
10726  remove(filename_.c_str());
10727  }
10728 
10730  if (uncaptured_fd_ != -1) {
10731  // Restores the original stream.
10732  fflush(nullptr);
10733  dup2(uncaptured_fd_, fd_);
10734  close(uncaptured_fd_);
10735  uncaptured_fd_ = -1;
10736  }
10737 
10738  FILE* const file = posix::FOpen(filename_.c_str(), "r");
10739  const std::string content = ReadEntireFile(file);
10740  posix::FClose(file);
10741  return content;
10742  }
10743 
10744  private:
10745  const int fd_; // A stream to capture.
10746  int uncaptured_fd_;
10747  // Name of the temporary file holding the stderr output.
10748  ::std::string filename_;
10749 
10750  GTEST_DISALLOW_COPY_AND_ASSIGN_(CapturedStream);
10751 };
10752 
10754 
10755 static CapturedStream* g_captured_stderr = nullptr;
10756 static CapturedStream* g_captured_stdout = nullptr;
10757 
10758 // Starts capturing an output stream (stdout/stderr).
10759 static void CaptureStream(int fd, const char* stream_name,
10760  CapturedStream** stream) {
10761  if (*stream != nullptr) {
10762  GTEST_LOG_(FATAL) << "Only one " << stream_name
10763  << " capturer can exist at a time.";
10764  }
10765  *stream = new CapturedStream(fd);
10766 }
10767 
10768 // Stops capturing the output stream and returns the captured string.
10769 static std::string GetCapturedStream(CapturedStream** captured_stream) {
10770  const std::string content = (*captured_stream)->GetCapturedString();
10771 
10772  delete *captured_stream;
10773  *captured_stream = nullptr;
10774 
10775  return content;
10776 }
10777 
10778 // Starts capturing stdout.
10780  CaptureStream(kStdOutFileno, "stdout", &g_captured_stdout);
10781 }
10782 
10783 // Starts capturing stderr.
10785  CaptureStream(kStdErrFileno, "stderr", &g_captured_stderr);
10786 }
10787 
10788 // Stops capturing stdout and returns the captured string.
10790  return GetCapturedStream(&g_captured_stdout);
10791 }
10792 
10793 // Stops capturing stderr and returns the captured string.
10795  return GetCapturedStream(&g_captured_stderr);
10796 }
10797 
10798 #endif // GTEST_HAS_STREAM_REDIRECTION
10799 
10800 
10801 
10802 
10803 
10804 size_t GetFileSize(FILE* file) {
10805  fseek(file, 0, SEEK_END);
10806  return static_cast<size_t>(ftell(file));
10807 }
10808 
10810  const size_t file_size = GetFileSize(file);
10811  char* const buffer = new char[file_size];
10812 
10813  size_t bytes_last_read = 0; // # of bytes read in the last fread()
10814  size_t bytes_read = 0; // # of bytes read so far
10815 
10816  fseek(file, 0, SEEK_SET);
10817 
10818  // Keeps reading the file until we cannot read further or the
10819  // pre-determined file size is reached.
10820  do {
10821  bytes_last_read = fread(buffer+bytes_read, 1, file_size-bytes_read, file);
10822  bytes_read += bytes_last_read;
10823  } while (bytes_last_read > 0 && bytes_read < file_size);
10824 
10825  const std::string content(buffer, bytes_read);
10826  delete[] buffer;
10827 
10828  return content;
10829 }
10830 
10831 #if GTEST_HAS_DEATH_TEST
10832 static const std::vector<std::string>* g_injected_test_argvs =
10833  nullptr; // Owned.
10834 
10835 std::vector<std::string> GetInjectableArgvs() {
10836  if (g_injected_test_argvs != nullptr) {
10837  return *g_injected_test_argvs;
10838  }
10839  return GetArgvs();
10840 }
10841 
10842 void SetInjectableArgvs(const std::vector<std::string>* new_argvs) {
10843  if (g_injected_test_argvs != new_argvs) delete g_injected_test_argvs;
10844  g_injected_test_argvs = new_argvs;
10845 }
10846 
10847 void SetInjectableArgvs(const std::vector<std::string>& new_argvs) {
10848  SetInjectableArgvs(
10849  new std::vector<std::string>(new_argvs.begin(), new_argvs.end()));
10850 }
10851 
10852 #if GTEST_HAS_GLOBAL_STRING
10853 void SetInjectableArgvs(const std::vector< ::string>& new_argvs) {
10854  SetInjectableArgvs(
10855  new std::vector<std::string>(new_argvs.begin(), new_argvs.end()));
10856 }
10857 #endif // GTEST_HAS_GLOBAL_STRING
10858 
10859 void ClearInjectableArgvs() {
10860  delete g_injected_test_argvs;
10861  g_injected_test_argvs = nullptr;
10862 }
10863 #endif // GTEST_HAS_DEATH_TEST
10864 
10865 #if GTEST_OS_WINDOWS_MOBILE
10866 namespace posix {
10867 void Abort() {
10868  DebugBreak();
10869  TerminateProcess(GetCurrentProcess(), 1);
10870 }
10871 } // namespace posix
10872 #endif // GTEST_OS_WINDOWS_MOBILE
10873 
10874 // Returns the name of the environment variable corresponding to the
10875 // given flag. For example, FlagToEnvVar("foo") will return
10876 // "GTEST_FOO" in the open-source version.
10877 static std::string FlagToEnvVar(const char* flag) {
10878  const std::string full_flag =
10879  (Message() << GTEST_FLAG_PREFIX_ << flag).GetString();
10880 
10881  Message env_var;
10882  for (size_t i = 0; i != full_flag.length(); i++) {
10883  env_var << ToUpper(full_flag.c_str()[i]);
10884  }
10885 
10886  return env_var.GetString();
10887 }
10888 
10889 // Parses 'str' for a 32-bit signed integer. If successful, writes
10890 // the result to *value and returns true; otherwise leaves *value
10891 // unchanged and returns false.
10892 bool ParseInt32(const Message& src_text, const char* str, Int32* value) {
10893  // Parses the environment variable as a decimal integer.
10894  char* end = nullptr;
10895  const long long_value = strtol(str, &end, 10); // NOLINT
10896 
10897  // Has strtol() consumed all characters in the string?
10898  if (*end != '\0') {
10899  // No - an invalid character was encountered.
10900  Message msg;
10901  msg << "WARNING: " << src_text
10902  << " is expected to be a 32-bit integer, but actually"
10903  << " has value \"" << str << "\".\n";
10904  printf("%s", msg.GetString().c_str());
10905  fflush(stdout);
10906  return false;
10907  }
10908 
10909  // Is the parsed value in the range of an Int32?
10910  const Int32 result = static_cast<Int32>(long_value);
10911  if (long_value == LONG_MAX || long_value == LONG_MIN ||
10912  // The parsed value overflows as a long. (strtol() returns
10913  // LONG_MAX or LONG_MIN when the input overflows.)
10914  result != long_value
10915  // The parsed value overflows as an Int32.
10916  ) {
10917  Message msg;
10918  msg << "WARNING: " << src_text
10919  << " is expected to be a 32-bit integer, but actually"
10920  << " has value " << str << ", which overflows.\n";
10921  printf("%s", msg.GetString().c_str());
10922  fflush(stdout);
10923  return false;
10924  }
10925 
10926  *value = result;
10927  return true;
10928 }
10929 
10930 // Reads and returns the Boolean environment variable corresponding to
10931 // the given flag; if it's not set, returns default_value.
10932 //
10933 // The value is considered true iff it's not "0".
10934 bool BoolFromGTestEnv(const char* flag, bool default_value) {
10935 #if defined(GTEST_GET_BOOL_FROM_ENV_)
10936  return GTEST_GET_BOOL_FROM_ENV_(flag, default_value);
10937 #else
10938  const std::string env_var = FlagToEnvVar(flag);
10939  const char* const string_value = posix::GetEnv(env_var.c_str());
10940  return string_value == nullptr ? default_value
10941  : strcmp(string_value, "0") != 0;
10942 #endif // defined(GTEST_GET_BOOL_FROM_ENV_)
10943 }
10944 
10945 // Reads and returns a 32-bit integer stored in the environment
10946 // variable corresponding to the given flag; if it isn't set or
10947 // doesn't represent a valid 32-bit integer, returns default_value.
10948 Int32 Int32FromGTestEnv(const char* flag, Int32 default_value) {
10949 #if defined(GTEST_GET_INT32_FROM_ENV_)
10950  return GTEST_GET_INT32_FROM_ENV_(flag, default_value);
10951 #else
10952  const std::string env_var = FlagToEnvVar(flag);
10953  const char* const string_value = posix::GetEnv(env_var.c_str());
10954  if (string_value == nullptr) {
10955  // The environment variable is not set.
10956  return default_value;
10957  }
10958 
10959  Int32 result = default_value;
10960  if (!ParseInt32(Message() << "Environment variable " << env_var,
10961  string_value, &result)) {
10962  printf("The default value %s is used.\n",
10963  (Message() << default_value).GetString().c_str());
10964  fflush(stdout);
10965  return default_value;
10966  }
10967 
10968  return result;
10969 #endif // defined(GTEST_GET_INT32_FROM_ENV_)
10970 }
10971 
10972 // As a special case for the 'output' flag, if GTEST_OUTPUT is not
10973 // set, we look for XML_OUTPUT_FILE, which is set by the Bazel build
10974 // system. The value of XML_OUTPUT_FILE is a filename without the
10975 // "xml:" prefix of GTEST_OUTPUT.
10976 // Note that this is meant to be called at the call site so it does
10977 // not check that the flag is 'output'
10978 // In essence this checks an env variable called XML_OUTPUT_FILE
10979 // and if it is set we prepend "xml:" to its value, if it not set we return ""
10981  std::string default_value_for_output_flag = "";
10982  const char* xml_output_file_env = posix::GetEnv("XML_OUTPUT_FILE");
10983  if (nullptr != xml_output_file_env) {
10984  default_value_for_output_flag = std::string("xml:") + xml_output_file_env;
10985  }
10986  return default_value_for_output_flag;
10987 }
10988 
10989 // Reads and returns the string environment variable corresponding to
10990 // the given flag; if it's not set, returns default_value.
10991 const char* StringFromGTestEnv(const char* flag, const char* default_value) {
10992 #if defined(GTEST_GET_STRING_FROM_ENV_)
10993  return GTEST_GET_STRING_FROM_ENV_(flag, default_value);
10994 #else
10995  const std::string env_var = FlagToEnvVar(flag);
10996  const char* const value = posix::GetEnv(env_var.c_str());
10997  return value == nullptr ? default_value : value;
10998 #endif // defined(GTEST_GET_STRING_FROM_ENV_)
10999 }
11000 
11001 } // namespace internal
11002 } // namespace testing
11003 // Copyright 2007, Google Inc.
11004 // All rights reserved.
11005 //
11006 // Redistribution and use in source and binary forms, with or without
11007 // modification, are permitted provided that the following conditions are
11008 // met:
11009 //
11010 // * Redistributions of source code must retain the above copyright
11011 // notice, this list of conditions and the following disclaimer.
11012 // * Redistributions in binary form must reproduce the above
11013 // copyright notice, this list of conditions and the following disclaimer
11014 // in the documentation and/or other materials provided with the
11015 // distribution.
11016 // * Neither the name of Google Inc. nor the names of its
11017 // contributors may be used to endorse or promote products derived from
11018 // this software without specific prior written permission.
11019 //
11020 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
11021 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
11022 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
11023 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
11024 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
11025 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
11026 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
11027 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
11028 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
11029 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
11030 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
11031 
11032 
11033 // Google Test - The Google C++ Testing and Mocking Framework
11034 //
11035 // This file implements a universal value printer that can print a
11036 // value of any type T:
11037 //
11038 // void ::testing::internal::UniversalPrinter<T>::Print(value, ostream_ptr);
11039 //
11040 // It uses the << operator when possible, and prints the bytes in the
11041 // object otherwise. A user can override its behavior for a class
11042 // type Foo by defining either operator<<(::std::ostream&, const Foo&)
11043 // or void PrintTo(const Foo&, ::std::ostream*) in the namespace that
11044 // defines Foo.
11045 
11046 #include <stdio.h>
11047 #include <cctype>
11048 #include <cwchar>
11049 #include <ostream> // NOLINT
11050 #include <string>
11051 
11052 namespace testing {
11053 
11054 namespace {
11055 
11056 using ::std::ostream;
11057 
11058 // Prints a segment of bytes in the given object.
11062 void PrintByteSegmentInObjectTo(const unsigned char* obj_bytes, size_t start,
11063  size_t count, ostream* os) {
11064  char text[5] = "";
11065  for (size_t i = 0; i != count; i++) {
11066  const size_t j = start + i;
11067  if (i != 0) {
11068  // Organizes the bytes into groups of 2 for easy parsing by
11069  // human.
11070  if ((j % 2) == 0)
11071  *os << ' ';
11072  else
11073  *os << '-';
11074  }
11075  GTEST_SNPRINTF_(text, sizeof(text), "%02X", obj_bytes[j]);
11076  *os << text;
11077  }
11078 }
11079 
11080 // Prints the bytes in the given value to the given ostream.
11081 void PrintBytesInObjectToImpl(const unsigned char* obj_bytes, size_t count,
11082  ostream* os) {
11083  // Tells the user how big the object is.
11084  *os << count << "-byte object <";
11085 
11086  const size_t kThreshold = 132;
11087  const size_t kChunkSize = 64;
11088  // If the object size is bigger than kThreshold, we'll have to omit
11089  // some details by printing only the first and the last kChunkSize
11090  // bytes.
11091  if (count < kThreshold) {
11092  PrintByteSegmentInObjectTo(obj_bytes, 0, count, os);
11093  } else {
11094  PrintByteSegmentInObjectTo(obj_bytes, 0, kChunkSize, os);
11095  *os << " ... ";
11096  // Rounds up to 2-byte boundary.
11097  const size_t resume_pos = (count - kChunkSize + 1)/2*2;
11098  PrintByteSegmentInObjectTo(obj_bytes, resume_pos, count - resume_pos, os);
11099  }
11100  *os << ">";
11101 }
11102 
11103 } // namespace
11104 
11105 namespace internal2 {
11106 
11107 // Delegates to PrintBytesInObjectToImpl() to print the bytes in the
11108 // given object. The delegation simplifies the implementation, which
11109 // uses the << operator and thus is easier done outside of the
11110 // ::testing::internal namespace, which contains a << operator that
11111 // sometimes conflicts with the one in STL.
11112 void PrintBytesInObjectTo(const unsigned char* obj_bytes, size_t count,
11113  ostream* os) {
11114  PrintBytesInObjectToImpl(obj_bytes, count, os);
11115 }
11116 
11117 } // namespace internal2
11118 
11119 namespace internal {
11120 
11121 // Depending on the value of a char (or wchar_t), we print it in one
11122 // of three formats:
11123 // - as is if it's a printable ASCII (e.g. 'a', '2', ' '),
11124 // - as a hexadecimal escape sequence (e.g. '\x7F'), or
11125 // - as a special escape sequence (e.g. '\r', '\n').
11130 };
11131 
11132 // Returns true if c is a printable ASCII character. We test the
11133 // value of c directly instead of calling isprint(), which is buggy on
11134 // Windows Mobile.
11135 inline bool IsPrintableAscii(wchar_t c) {
11136  return 0x20 <= c && c <= 0x7E;
11137 }
11138 
11139 // Prints a wide or narrow char c as a character literal without the
11140 // quotes, escaping it when necessary; returns how c was formatted.
11141 // The template argument UnsignedChar is the unsigned version of Char,
11142 // which is the type of c.
11143 template <typename UnsignedChar, typename Char>
11144 static CharFormat PrintAsCharLiteralTo(Char c, ostream* os) {
11145  switch (static_cast<wchar_t>(c)) {
11146  case L'\0':
11147  *os << "\\0";
11148  break;
11149  case L'\'':
11150  *os << "\\'";
11151  break;
11152  case L'\\':
11153  *os << "\\\\";
11154  break;
11155  case L'\a':
11156  *os << "\\a";
11157  break;
11158  case L'\b':
11159  *os << "\\b";
11160  break;
11161  case L'\f':
11162  *os << "\\f";
11163  break;
11164  case L'\n':
11165  *os << "\\n";
11166  break;
11167  case L'\r':
11168  *os << "\\r";
11169  break;
11170  case L'\t':
11171  *os << "\\t";
11172  break;
11173  case L'\v':
11174  *os << "\\v";
11175  break;
11176  default:
11177  if (IsPrintableAscii(c)) {
11178  *os << static_cast<char>(c);
11179  return kAsIs;
11180  } else {
11181  ostream::fmtflags flags = os->flags();
11182  *os << "\\x" << std::hex << std::uppercase
11183  << static_cast<int>(static_cast<UnsignedChar>(c));
11184  os->flags(flags);
11185  return kHexEscape;
11186  }
11187  }
11188  return kSpecialEscape;
11189 }
11190 
11191 // Prints a wchar_t c as if it's part of a string literal, escaping it when
11192 // necessary; returns how c was formatted.
11193 static CharFormat PrintAsStringLiteralTo(wchar_t c, ostream* os) {
11194  switch (c) {
11195  case L'\'':
11196  *os << "'";
11197  return kAsIs;
11198  case L'"':
11199  *os << "\\\"";
11200  return kSpecialEscape;
11201  default:
11202  return PrintAsCharLiteralTo<wchar_t>(c, os);
11203  }
11204 }
11205 
11206 // Prints a char c as if it's part of a string literal, escaping it when
11207 // necessary; returns how c was formatted.
11208 static CharFormat PrintAsStringLiteralTo(char c, ostream* os) {
11209  return PrintAsStringLiteralTo(
11210  static_cast<wchar_t>(static_cast<unsigned char>(c)), os);
11211 }
11212 
11213 // Prints a wide or narrow character c and its code. '\0' is printed
11214 // as "'\\0'", other unprintable characters are also properly escaped
11215 // using the standard C++ escape sequence. The template argument
11216 // UnsignedChar is the unsigned version of Char, which is the type of c.
11217 template <typename UnsignedChar, typename Char>
11218 void PrintCharAndCodeTo(Char c, ostream* os) {
11219  // First, print c as a literal in the most readable form we can find.
11220  *os << ((sizeof(c) > 1) ? "L'" : "'");
11221  const CharFormat format = PrintAsCharLiteralTo<UnsignedChar>(c, os);
11222  *os << "'";
11223 
11224  // To aid user debugging, we also print c's code in decimal, unless
11225  // it's 0 (in which case c was printed as '\\0', making the code
11226  // obvious).
11227  if (c == 0)
11228  return;
11229  *os << " (" << static_cast<int>(c);
11230 
11231  // For more convenience, we print c's code again in hexadecimal,
11232  // unless c was already printed in the form '\x##' or the code is in
11233  // [1, 9].
11234  if (format == kHexEscape || (1 <= c && c <= 9)) {
11235  // Do nothing.
11236  } else {
11237  *os << ", 0x" << String::FormatHexInt(static_cast<UnsignedChar>(c));
11238  }
11239  *os << ")";
11240 }
11241 
11242 void PrintTo(unsigned char c, ::std::ostream* os) {
11243  PrintCharAndCodeTo<unsigned char>(c, os);
11244 }
11245 void PrintTo(signed char c, ::std::ostream* os) {
11246  PrintCharAndCodeTo<unsigned char>(c, os);
11247 }
11248 
11249 // Prints a wchar_t as a symbol if it is printable or as its internal
11250 // code otherwise and also as its code. L'\0' is printed as "L'\\0'".
11251 void PrintTo(wchar_t wc, ostream* os) {
11252  PrintCharAndCodeTo<wchar_t>(wc, os);
11253 }
11254 
11255 // Prints the given array of characters to the ostream. CharType must be either
11256 // char or wchar_t.
11257 // The array starts at begin, the length is len, it may include '\0' characters
11258 // and may not be NUL-terminated.
11259 template <typename CharType>
11263 static CharFormat PrintCharsAsStringTo(
11264  const CharType* begin, size_t len, ostream* os) {
11265  const char* const kQuoteBegin = sizeof(CharType) == 1 ? "\"" : "L\"";
11266  *os << kQuoteBegin;
11267  bool is_previous_hex = false;
11268  CharFormat print_format = kAsIs;
11269  for (size_t index = 0; index < len; ++index) {
11270  const CharType cur = begin[index];
11271  if (is_previous_hex && IsXDigit(cur)) {
11272  // Previous character is of '\x..' form and this character can be
11273  // interpreted as another hexadecimal digit in its number. Break string to
11274  // disambiguate.
11275  *os << "\" " << kQuoteBegin;
11276  }
11277  is_previous_hex = PrintAsStringLiteralTo(cur, os) == kHexEscape;
11278  // Remember if any characters required hex escaping.
11279  if (is_previous_hex) {
11280  print_format = kHexEscape;
11281  }
11282  }
11283  *os << "\"";
11284  return print_format;
11285 }
11286 
11287 // Prints a (const) char/wchar_t array of 'len' elements, starting at address
11288 // 'begin'. CharType must be either char or wchar_t.
11289 template <typename CharType>
11293 static void UniversalPrintCharArray(
11294  const CharType* begin, size_t len, ostream* os) {
11295  // The code
11296  // const char kFoo[] = "foo";
11297  // generates an array of 4, not 3, elements, with the last one being '\0'.
11298  //
11299  // Therefore when printing a char array, we don't print the last element if
11300  // it's '\0', such that the output matches the string literal as it's
11301  // written in the source code.
11302  if (len > 0 && begin[len - 1] == '\0') {
11303  PrintCharsAsStringTo(begin, len - 1, os);
11304  return;
11305  }
11306 
11307  // If, however, the last element in the array is not '\0', e.g.
11308  // const char kFoo[] = { 'f', 'o', 'o' };
11309  // we must print the entire array. We also print a message to indicate
11310  // that the array is not NUL-terminated.
11311  PrintCharsAsStringTo(begin, len, os);
11312  *os << " (no terminating NUL)";
11313 }
11314 
11315 // Prints a (const) char array of 'len' elements, starting at address 'begin'.
11316 void UniversalPrintArray(const char* begin, size_t len, ostream* os) {
11317  UniversalPrintCharArray(begin, len, os);
11318 }
11319 
11320 // Prints a (const) wchar_t array of 'len' elements, starting at address
11321 // 'begin'.
11322 void UniversalPrintArray(const wchar_t* begin, size_t len, ostream* os) {
11323  UniversalPrintCharArray(begin, len, os);
11324 }
11325 
11326 // Prints the given C string to the ostream.
11327 void PrintTo(const char* s, ostream* os) {
11328  if (s == nullptr) {
11329  *os << "NULL";
11330  } else {
11331  *os << ImplicitCast_<const void*>(s) << " pointing to ";
11332  PrintCharsAsStringTo(s, strlen(s), os);
11333  }
11334 }
11335 
11336 // MSVC compiler can be configured to define whar_t as a typedef
11337 // of unsigned short. Defining an overload for const wchar_t* in that case
11338 // would cause pointers to unsigned shorts be printed as wide strings,
11339 // possibly accessing more memory than intended and causing invalid
11340 // memory accesses. MSVC defines _NATIVE_WCHAR_T_DEFINED symbol when
11341 // wchar_t is implemented as a native type.
11342 #if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED)
11343 // Prints the given wide C string to the ostream.
11344 void PrintTo(const wchar_t* s, ostream* os) {
11345  if (s == nullptr) {
11346  *os << "NULL";
11347  } else {
11348  *os << ImplicitCast_<const void*>(s) << " pointing to ";
11349  PrintCharsAsStringTo(s, wcslen(s), os);
11350  }
11351 }
11352 #endif // wchar_t is native
11353 
11354 namespace {
11355 
11356 bool ContainsUnprintableControlCodes(const char* str, size_t length) {
11357  const unsigned char *s = reinterpret_cast<const unsigned char *>(str);
11358 
11359  for (size_t i = 0; i < length; i++) {
11360  unsigned char ch = *s++;
11361  if (std::iscntrl(ch)) {
11362  switch (ch) {
11363  case '\t':
11364  case '\n':
11365  case '\r':
11366  break;
11367  default:
11368  return true;
11369  }
11370  }
11371  }
11372  return false;
11373 }
11374 
11375 bool IsUTF8TrailByte(unsigned char t) { return 0x80 <= t && t<= 0xbf; }
11376 
11377 bool IsValidUTF8(const char* str, size_t length) {
11378  const unsigned char *s = reinterpret_cast<const unsigned char *>(str);
11379 
11380  for (size_t i = 0; i < length;) {
11381  unsigned char lead = s[i++];
11382 
11383  if (lead <= 0x7f) {
11384  continue; // single-byte character (ASCII) 0..7F
11385  }
11386  if (lead < 0xc2) {
11387  return false; // trail byte or non-shortest form
11388  } else if (lead <= 0xdf && (i + 1) <= length && IsUTF8TrailByte(s[i])) {
11389  ++i; // 2-byte character
11390  } else if (0xe0 <= lead && lead <= 0xef && (i + 2) <= length &&
11391  IsUTF8TrailByte(s[i]) &&
11392  IsUTF8TrailByte(s[i + 1]) &&
11393  // check for non-shortest form and surrogate
11394  (lead != 0xe0 || s[i] >= 0xa0) &&
11395  (lead != 0xed || s[i] < 0xa0)) {
11396  i += 2; // 3-byte character
11397  } else if (0xf0 <= lead && lead <= 0xf4 && (i + 3) <= length &&
11398  IsUTF8TrailByte(s[i]) &&
11399  IsUTF8TrailByte(s[i + 1]) &&
11400  IsUTF8TrailByte(s[i + 2]) &&
11401  // check for non-shortest form
11402  (lead != 0xf0 || s[i] >= 0x90) &&
11403  (lead != 0xf4 || s[i] < 0x90)) {
11404  i += 3; // 4-byte character
11405  } else {
11406  return false;
11407  }
11408  }
11409  return true;
11410 }
11411 
11412 void ConditionalPrintAsText(const char* str, size_t length, ostream* os) {
11413  if (!ContainsUnprintableControlCodes(str, length) &&
11414  IsValidUTF8(str, length)) {
11415  *os << "\n As Text: \"" << str << "\"";
11416  }
11417 }
11418 
11419 } // anonymous namespace
11420 
11421 // Prints a ::string object.
11422 #if GTEST_HAS_GLOBAL_STRING
11423 void PrintStringTo(const ::string& s, ostream* os) {
11424  if (PrintCharsAsStringTo(s.data(), s.size(), os) == kHexEscape) {
11425  if (GTEST_FLAG(print_utf8)) {
11426  ConditionalPrintAsText(s.data(), s.size(), os);
11427  }
11428  }
11429 }
11430 #endif // GTEST_HAS_GLOBAL_STRING
11431 
11432 void PrintStringTo(const ::std::string& s, ostream* os) {
11433  if (PrintCharsAsStringTo(s.data(), s.size(), os) == kHexEscape) {
11434  if (GTEST_FLAG(print_utf8)) {
11435  ConditionalPrintAsText(s.data(), s.size(), os);
11436  }
11437  }
11438 }
11439 
11440 // Prints a ::wstring object.
11441 #if GTEST_HAS_GLOBAL_WSTRING
11442 void PrintWideStringTo(const ::wstring& s, ostream* os) {
11443  PrintCharsAsStringTo(s.data(), s.size(), os);
11444 }
11445 #endif // GTEST_HAS_GLOBAL_WSTRING
11446 
11447 #if GTEST_HAS_STD_WSTRING
11449  PrintCharsAsStringTo(s.data(), s.size(), os);
11450 }
11451 #endif // GTEST_HAS_STD_WSTRING
11452 
11453 } // namespace internal
11454 
11455 } // namespace testing
11456 // Copyright 2008, Google Inc.
11457 // All rights reserved.
11458 //
11459 // Redistribution and use in source and binary forms, with or without
11460 // modification, are permitted provided that the following conditions are
11461 // met:
11462 //
11463 // * Redistributions of source code must retain the above copyright
11464 // notice, this list of conditions and the following disclaimer.
11465 // * Redistributions in binary form must reproduce the above
11466 // copyright notice, this list of conditions and the following disclaimer
11467 // in the documentation and/or other materials provided with the
11468 // distribution.
11469 // * Neither the name of Google Inc. nor the names of its
11470 // contributors may be used to endorse or promote products derived from
11471 // this software without specific prior written permission.
11472 //
11473 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
11474 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
11475 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
11476 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
11477 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
11478 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
11479 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
11480 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
11481 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
11482 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
11483 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
11484 
11485 //
11486 // The Google C++ Testing and Mocking Framework (Google Test)
11487 
11488 
11489 namespace testing {
11490 
11491 using internal::GetUnitTestImpl;
11492 
11493 // Gets the summary of the failure message by omitting the stack trace
11494 // in it.
11495 std::string TestPartResult::ExtractSummary(const char* message) {
11496  const char* const stack_trace = strstr(message, internal::kStackTraceMarker);
11497  return stack_trace == nullptr ? message : std::string(message, stack_trace);
11498 }
11499 
11500 // Prints a TestPartResult object.
11501 std::ostream& operator<<(std::ostream& os, const TestPartResult& result) {
11502  return os << result.file_name() << ":" << result.line_number() << ": "
11503  << (result.type() == TestPartResult::kSuccess
11504  ? "Success"
11505  : result.type() == TestPartResult::kSkip
11506  ? "Skipped"
11507  : result.type() == TestPartResult::kFatalFailure
11508  ? "Fatal failure"
11509  : "Non-fatal failure")
11510  << ":\n"
11511  << result.message() << std::endl;
11512 }
11513 
11514 // Appends a TestPartResult to the array.
11515 void TestPartResultArray::Append(const TestPartResult& result) {
11516  array_.push_back(result);
11517 }
11518 
11519 // Returns the TestPartResult at the given index (0-based).
11520 const TestPartResult& TestPartResultArray::GetTestPartResult(int index) const {
11521  if (index < 0 || index >= size()) {
11522  printf("\nInvalid index (%d) into TestPartResultArray.\n", index);
11524  }
11525 
11526  return array_[index];
11527 }
11528 
11529 // Returns the number of TestPartResult objects in the array.
11530 int TestPartResultArray::size() const {
11531  return static_cast<int>(array_.size());
11532 }
11533 
11534 namespace internal {
11535 
11536 HasNewFatalFailureHelper::HasNewFatalFailureHelper()
11537  : has_new_fatal_failure_(false),
11538  original_reporter_(GetUnitTestImpl()->
11539  GetTestPartResultReporterForCurrentThread()) {
11540  GetUnitTestImpl()->SetTestPartResultReporterForCurrentThread(this);
11541 }
11542 
11543 HasNewFatalFailureHelper::~HasNewFatalFailureHelper() {
11544  GetUnitTestImpl()->SetTestPartResultReporterForCurrentThread(
11545  original_reporter_);
11546 }
11547 
11548 void HasNewFatalFailureHelper::ReportTestPartResult(
11549  const TestPartResult& result) {
11550  if (result.fatally_failed())
11551  has_new_fatal_failure_ = true;
11552  original_reporter_->ReportTestPartResult(result);
11553 }
11554 
11555 } // namespace internal
11556 
11557 } // namespace testing
11558 // Copyright 2008 Google Inc.
11559 // All Rights Reserved.
11560 //
11561 // Redistribution and use in source and binary forms, with or without
11562 // modification, are permitted provided that the following conditions are
11563 // met:
11564 //
11565 // * Redistributions of source code must retain the above copyright
11566 // notice, this list of conditions and the following disclaimer.
11567 // * Redistributions in binary form must reproduce the above
11568 // copyright notice, this list of conditions and the following disclaimer
11569 // in the documentation and/or other materials provided with the
11570 // distribution.
11571 // * Neither the name of Google Inc. nor the names of its
11572 // contributors may be used to endorse or promote products derived from
11573 // this software without specific prior written permission.
11574 //
11575 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
11576 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
11577 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
11578 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
11579 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
11580 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
11581 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
11582 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
11583 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
11584 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
11585 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
11586 
11587 
11588 
11589 
11590 namespace testing {
11591 namespace internal {
11592 
11593 #if GTEST_HAS_TYPED_TEST_P
11594 
11595 // Skips to the first non-space char in str. Returns an empty string if str
11596 // contains only whitespace characters.
11597 static const char* SkipSpaces(const char* str) {
11598  while (IsSpace(*str))
11599  str++;
11600  return str;
11601 }
11602 
11603 static std::vector<std::string> SplitIntoTestNames(const char* src) {
11604  std::vector<std::string> name_vec;
11605  src = SkipSpaces(src);
11606  for (; src != nullptr; src = SkipComma(src)) {
11607  name_vec.push_back(StripTrailingSpaces(GetPrefixUntilComma(src)));
11608  }
11609  return name_vec;
11610 }
11611 
11612 // Verifies that registered_tests match the test names in
11613 // registered_tests_; returns registered_tests if successful, or
11614 // aborts the program otherwise.
11615 const char* TypedTestSuitePState::VerifyRegisteredTestNames(
11616  const char* file, int line, const char* registered_tests) {
11617  typedef RegisteredTestsMap::const_iterator RegisteredTestIter;
11618  registered_ = true;
11619 
11620  std::vector<std::string> name_vec = SplitIntoTestNames(registered_tests);
11621 
11622  Message errors;
11623 
11624  std::set<std::string> tests;
11625  for (std::vector<std::string>::const_iterator name_it = name_vec.begin();
11626  name_it != name_vec.end(); ++name_it) {
11627  const std::string& name = *name_it;
11628  if (tests.count(name) != 0) {
11629  errors << "Test " << name << " is listed more than once.\n";
11630  continue;
11631  }
11632 
11633  bool found = false;
11634  for (RegisteredTestIter it = registered_tests_.begin();
11635  it != registered_tests_.end();
11636  ++it) {
11637  if (name == it->first) {
11638  found = true;
11639  break;
11640  }
11641  }
11642 
11643  if (found) {
11644  tests.insert(name);
11645  } else {
11646  errors << "No test named " << name
11647  << " can be found in this test suite.\n";
11648  }
11649  }
11650 
11651  for (RegisteredTestIter it = registered_tests_.begin();
11652  it != registered_tests_.end();
11653  ++it) {
11654  if (tests.count(it->first) == 0) {
11655  errors << "You forgot to list test " << it->first << ".\n";
11656  }
11657  }
11658 
11659  const std::string& errors_str = errors.GetString();
11660  if (errors_str != "") {
11661  fprintf(stderr, "%s %s", FormatFileLocation(file, line).c_str(),
11662  errors_str.c_str());
11663  fflush(stderr);
11664  posix::Abort();
11665  }
11666 
11667  return registered_tests;
11668 }
11669 
11670 #endif // GTEST_HAS_TYPED_TEST_P
11671 
11672 } // namespace internal
11673 } // namespace testing
bool IsXDigit(char ch)
Definition: gtest.h:2251
+
void PrintCharAndCodeTo(Char c, ostream *os)
Definition: gtest-all.cc:11218
+
GTEST_API_ AssertionResult DoubleLE(const char *expr1, const char *expr2, double val1, double val2)
+
GTEST_API_ bool AlwaysTrue()
+
std::string GetCapturedStdout()
Definition: gtest-all.cc:10789
+
GTEST_API_ AssertionResult DoubleNearPredFormat(const char *expr1, const char *expr2, const char *abs_error_expr, double val1, double val2, double abs_error)
+
std::string GetCapturedStderr()
Definition: gtest-all.cc:10794
+ +
GTEST_API_ std::string GetCurrentOsStackTraceExceptTop(UnitTest *unit_test, int skip_count)
+
void(*)() SetUpTestSuiteFunc
Definition: gtest.h:6926
+
#define GTEST_INIT_GOOGLE_TEST_NAME_
Definition: gtest.h:522
+
GTEST_API_ bool SkipPrefix(const char *prefix, const char **pstr)
+
#define GTEST_DEFINE_int32_(name, default_val, doc)
Definition: gtest.h:2505
+
#define GTEST_FLAG_PREFIX_DASH_
Definition: gtest.h:515
+
int FClose(FILE *fp)
Definition: gtest.h:2358
+ +
#define GTEST_PATH_MAX_
Definition: gtest-all.cc:9221
+
size_t GetThreadCount()
Definition: gtest-all.cc:9875
+
#define GTEST_NO_INLINE_
Definition: gtest.h:1009
+
eval< filter_impl::filter_< List, Pred, typelist<> > > filter
Definition: typelist.h:800
+
AssertionResult CmpHelperEQ(const char *lhs_expression, const char *rhs_expression, const T1 &lhs, const T2 &rhs)
Definition: gtest.h:16111
+
#define GTEST_DEV_EMAIL_
Definition: gtest.h:513
+
GTEST_API_ bool IsTrue(bool condition)
+
::std::string PrintToString(const T &value)
Definition: gtest.h:8969
+ +
std::string ReadEntireFile(FILE *file)
Definition: gtest-all.cc:10809
+
#define GTEST_DISABLE_MSC_DEPRECATED_POP_()
Definition: gtest.h:561
+ +
GTEST_API_ AssertionResult CmpHelperSTRNE(const char *s1_expression, const char *s2_expression, const char *s1, const char *s2)
+
bool BoolFromGTestEnv(const char *flag, bool default_value)
Definition: gtest-all.cc:10934
+
GTEST_API_ AssertionResult IsSubstring(const char *needle_expr, const char *haystack_expr, const char *needle, const char *haystack)
+
GTEST_API_ ::std::string FormatFileLocation(const char *file, int line)
Definition: gtest-all.cc:10620
+ +
int IsATTY(int fd)
Definition: gtest.h:2323
+
::std::string string
Definition: gtest.h:1115
+
#define GTEST_SNPRINTF_
Definition: gtest.h:2410
+
Int32 Int32FromGTestEnv(const char *flag, Int32 default_value)
Definition: gtest-all.cc:10948
+
#define GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_
Definition: gtest.h:1031
+
GTEST_DISABLE_MSC_WARNINGS_PUSH_(4251) namespace testing
Definition: gtest-all.cc:112
+
GTEST_API_ std::vector< EditType > CalculateOptimalEdits(const std::vector< size_t > &left, const std::vector< size_t > &right)
+
#define GTEST_DEFAULT_DEATH_TEST_STYLE
Definition: gtest.h:1002
+
bool ParseInt32(const Message &src_text, const char *str, Int32 *value)
Definition: gtest-all.cc:10892
+
size_< List::size()> size
Definition: typelist.h:129
+
::std::wstring wstring
Definition: gtest.h:1121
+
bool IsDigit(char ch)
Definition: gtest.h:2239
+ +
int Stat(const char *path, StatStruct *buf)
Definition: gtest.h:2324
+
#define GTEST_PATH_SEP_
Definition: gtest.h:2221
+
GTEST_API_ AssertionResult IsNotSubstring(const char *needle_expr, const char *haystack_expr, const char *needle, const char *haystack)
+
at_c< List, N::type::value > at
Definition: typelist.h:253
+
GTEST_DISABLE_MSC_WARNINGS_POP_() GTEST_DISABLE_MSC_WARNINGS_PUSH_(4251) namespace testing
Definition: gtest-all.cc:190
+
eval< reverse_impl::reverse_< List > > reverse
Definition: typelist.h:479
+ +
repeat_c< N::type::value, Ts... > repeat
Definition: typelist.h:161
+ +
const char * GetEnv(const char *name)
Definition: gtest.h:2369
+
void PrintStringTo(const ::std::string &s, ostream *os)
Definition: gtest-all.cc:11432
+ + +
std::string FormatForComparisonFailureMessage(const T1 &value, const T2 &)
Definition: gtest.h:8416
+
#define GTEST_DISABLE_MSC_DEPRECATED_PUSH_()
Definition: gtest.h:559
+
TypeWithSize< 8 >::Int TimeInMillis
Definition: gtest.h:2479
+ +
eval< replace_if< List, same_as< T >, U > > replace
Definition: typelist.h:848
+
GTEST_API_ AssertionResult EqFailure(const char *expected_expression, const char *actual_expression, const std::string &expected_value, const std::string &actual_value, bool ignoring_case)
+
find_if< List, same_as< T > > find
Definition: typelist.h:663
+ +
std::ostream & operator<<(std::ostream &os, const TestPartResult &result)
Definition: gtest-all.cc:11501
+
const char kCurrentDirectoryString[]
Definition: gtest-all.cc:9247
+
#define GTEST_DECLARE_bool_(name)
Definition: gtest.h:2496
+
size_t GetFileSize(FILE *file)
Definition: gtest-all.cc:10804
+
std::string StreamableToString(const T &streamable)
Definition: gtest.h:2769
+
count_if< List, same_as< T > > count
Definition: typelist.h:761
+
#define GTEST_LOG_(severity)
Definition: gtest.h:1246
+
#define GTEST_API_
Definition: gtest.h:998
+
TypeWithSize< 4 >::UInt UInt32
Definition: gtest.h:2476
+
const void * TypeId
Definition: gtest.h:6854
+
const char * StringFromGTestEnv(const char *flag, const char *default_value)
Definition: gtest-all.cc:10991
+
int Write(int fd, const void *buf, unsigned int count)
Definition: gtest.h:2363
+
void PrintBytesInObjectTo(const unsigned char *obj_bytes, size_t count, ostream *os)
Definition: gtest-all.cc:11112
+
GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char *s1_expression, const char *s2_expression, const char *s1, const char *s2)
+
TypeWithSize< 4 >::Int Int32
Definition: gtest.h:2475
+
#define GTEST_REVERSE_REPEATER_METHOD_(Name, Type)
+
bool IsSpace(char ch)
Definition: gtest.h:2245
+
integral_< decltype(_Tp1()+_Tp2()), _Tp1()+_Tp2() > add
Addition.
Definition: operations.h:144
+
GTEST_API_ const char * fmt
Definition: gtest.h:16430
+
GTEST_API_ std::string TempDir()
+
void PrintTo(const wchar_t *s, ostream *os)
Definition: gtest-all.cc:11344
+
GTEST_API_ const char kStackTraceMarker[]
+
GTEST_DEFINE_string_(death_test_style, internal::StringFromGTestEnv("death_test_style", kDefaultDeathTestStyle), "Indicates how to run a death test in a forked child process: " "\hreadsafe\(child process re-executes the test binary " "from the beginning, running only the specific death test) or " "\ast\(child process runs the death test immediately " "after forking).")
+
::std::ostream & GetStream()
Definition: gtest.h:1236
+ +
GTEST_DEFINE_string_(internal_run_death_test, "", "Indicates the file, line number, temporal index of " "the single death test to run, and a file descriptor to " "which a success code may be sent, all separated by " "the '|' characters. This flag is specified if and only if the current " "process is a sub-process launched for running a thread-safe " "death test. FOR INTERNAL USE ONLY.")
+
#define GTEST_IMPL_CMP_HELPER_(op_name, op)
+
#define GTEST_FLAG(name)
Definition: gtest.h:2485
+
GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char *s1_expression, const char *s2_expression, const char *s1, const char *s2)
+ +
void(*)() TearDownTestSuiteFunc
Definition: gtest.h:6927
+
struct stat StatStruct
Definition: gtest.h:2320
+
GTEST_API_ void InitGoogleTest(int *argc, char **argv)
+ + +
#define GTEST_REPEATER_METHOD_(Name, Type)
+
void LogToStderr()
Definition: gtest.h:1250
+
GTEST_API_ std::vector< std::string > GetArgvs()
+
GTEST_API_ TestInfo * MakeAndRegisterTestInfo(const char *test_suite_name, const char *name, const char *type_param, const char *value_param, CodeLocation code_location, TypeId fixture_class_id, SetUpTestSuiteFunc set_up_tc, TearDownTestSuiteFunc tear_down_tc, TestFactoryBase *factory)
+
int Read(int fd, void *buf, unsigned int count)
Definition: gtest.h:2360
+
_utlConcept Predicate
Definition: stl.h:759
+
#define GTEST_CHECK_(condition)
Definition: gtest.h:1270
+
bool AlwaysFalse()
Definition: gtest.h:7260
+
GTestMutexLock MutexLock
Definition: gtest.h:2162
+ + +
#define EXPECT_PRED_FORMAT3(pred_format, v1, v2, v3)
Definition: gtest.h:14846
+
int StrCaseCmp(const char *s1, const char *s2)
Definition: gtest.h:2325
+ +
static const UInt32 kMaxRange
Definition: gtest.h:7278
+
long long BiggestInt
Definition: gtest.h:2223
+ +
#define GTEST_NAME_
Definition: gtest.h:517
+
bool IsDir(const StatStruct &st)
Definition: gtest.h:2330
+ +
bool IsPrintableAscii(wchar_t c)
Definition: gtest-all.cc:11135
+
#define GTEST_DISALLOW_COPY_AND_ASSIGN_(type)
Definition: gtest.h:927
+ + +
#define GTEST_FLAG_PREFIX_UPPER_
Definition: gtest.h:516
+
void PrintTo(unsigned char c, ::std::ostream *os)
Definition: gtest-all.cc:11242
+
int FileNo(FILE *file)
Definition: gtest.h:2322
+
GTEST_API_ std::string GetBoolAssertionFailureMessage(const AssertionResult &assertion_result, const char *expression_text, const char *actual_predicate_value, const char *expected_predicate_value)
+
GTEST_API_ ::std::string FormatCompilerIndependentFileLocation(const char *file, int line)
Definition: gtest-all.cc:10638
+ +
FILE * FOpen(const char *path, const char *mode)
Definition: gtest.h:2349
+
int Close(int fd)
Definition: gtest.h:2366
+
const char kUnknownFile[]
Definition: gtest-all.cc:10616
+
#define GTEST_FLAG_PREFIX_
Definition: gtest.h:514
+
GTEST_DEFINE_bool_(death_test_use_fork, internal::BoolFromGTestEnv("death_test_use_fork", false), "Instructs to use fork()/_exit() instead of clone() in death tests. " "Ignored and always uses fork() on POSIX systems where clone() is not " "implemented. Useful when running under valgrind or similar tools if " "those do not support clone(). Valgrind 3.3.1 will just fail if " "it sees an unsupported combination of clone() flags. " "It is not recommended to use this flag w/o valgrind though it will " "work in 99% of the cases. Once valgrind is fixed, this flag will " "most likely be removed.")
+
void UniversalPrintArray(const char *begin, size_t len, ostream *os)
Definition: gtest-all.cc:11316
+
const char * original_working_dir() const
+
eval< find_if_impl::find_if_< List, Pred, 0 > > find_if
Definition: typelist.h:657
+ +
GTEST_API_ void ReportInvalidTestSuiteType(const char *test_suite_name, CodeLocation code_location)
+
GTEST_API_ std::string AppendUserMessage(const std::string &gtest_msg, const Message &user_msg)
+
UInt32 Generate(UInt32 range)
+
GTEST_API_ AssertionResult CmpHelperSTREQ(const char *s1_expression, const char *s2_expression, const char *s1, const char *s2)
+
char ToUpper(char ch)
Definition: gtest.h:2262
+
GTEST_API_ AssertionResult FloatLE(const char *expr1, const char *expr2, float val1, float val2)
+
AssertHelper(TestPartResult::Type type, const char *file, int line, const char *message)
+ + + +
#define GTEST_ATTRIBUTE_UNUSED_
Definition: gtest.h:899
+
void FlushInfoLog()
Definition: gtest.h:1251
+
#define GTEST_LOCK_EXCLUDED_(locks)
Definition: gtest.h:2515
+
const int kStdErrFileno
Definition: gtest-all.cc:9776
+
void PrintWideStringTo(const ::std::wstring &s, ostream *os)
Definition: gtest-all.cc:11448
+ +
const int kStdOutFileno
Definition: gtest-all.cc:9775
+
#define EXPECT_TRUE(condition)
Definition: gtest.h:16584
+ +
#define ADD_FAILURE()
Definition: gtest.h:16533
+
#define GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_
Definition: gtest.h:1043
+
#define GTEST_FLAG_SAVER_
Definition: gtest.h:2493
+
GTEST_API_ std::string CreateUnifiedDiff(const std::vector< std::string > &left, const std::vector< std::string > &right, size_t context=2)
+
void swap(array< _Tp, _Nm > &lhs, array< _Tp, _Nm > &rhs) noexcept(noexcept(lhs.swap(rhs)))
Definition: array.h:214
+
FILE * FDOpen(int fd, const char *mode)
Definition: gtest.h:2356
+
static UnitTest * GetInstance()
+
#define GTEST_ATTRIBUTE_NO_SANITIZE_THREAD_
Definition: gtest.h:1055
+
char * StrDup(const char *src)
Definition: gtest.h:2328
+
const char * StrError(int errnum)
Definition: gtest.h:2367
+
std::string OutputFlagAlsoCheckEnvVar()
Definition: gtest-all.cc:10980
+
GTEST_API_ TypeId GetTestTypeId()
+
#define GTEST_PROJECT_URL_
Definition: gtest.h:518
+
std::string StripTrailingSpaces(std::string str)
Definition: gtest.h:2266
+ +
bool_< List::empty()> empty
Definition: typelist.h:140
+
std::string GetString() const
+
const char kPathSeparator
Definition: gtest-all.cc:9246
+
constexpr _Tp & get(array< _Tp, _Nm > &arr) noexcept
Definition: array.h:220
+
+
+ + + + diff --git a/doc/html/gtest_8h.html b/doc/html/gtest_8h.html new file mode 100644 index 0000000..13b4ebd --- /dev/null +++ b/doc/html/gtest_8h.html @@ -0,0 +1,6734 @@ + + + + + + + +uTL: test/eclipse-cygwin/lib/gtest/gtest.h File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
gtest.h File Reference
+
+
+
#include <limits>
+#include <memory>
+#include <ostream>
+#include <vector>
+#include <ctype.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <type_traits>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <string>
+#include <algorithm>
+#include <iostream>
+#include <sstream>
+#include <tuple>
+#include <utility>
+#include <unistd.h>
+#include <strings.h>
+#include <regex.h>
+#include <typeinfo>
+#include <float.h>
+#include <iomanip>
+#include <map>
+#include <set>
+#include <functional>
+#include <iterator>
+#include <assert.h>
+#include <iosfwd>
+
+

Go to the source code of this file.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Classes

struct  testing::internal::StaticAssertTypeEqHelper< T1, T2 >
 
struct  testing::internal::StaticAssertTypeEqHelper< T, T >
 
struct  testing::internal::IsSame< T, U >
 
struct  testing::internal::IsSame< T, T >
 
class  testing::internal::RE
 
class  testing::internal::GTestLog
 
struct  testing::internal::AddReference< T >
 
struct  testing::internal::AddReference< T & >
 
struct  testing::internal::ConstRef< T >
 
struct  testing::internal::ConstRef< T & >
 
class  testing::internal::Mutex
 
class  testing::internal::GTestMutexLock
 
class  testing::internal::ThreadLocal< T >
 
struct  testing::internal::bool_constant< bool_value >
 
struct  testing::internal::is_same< T, U >
 
struct  testing::internal::is_same< T, T >
 
struct  testing::internal::IteratorTraits< Iterator >
 
struct  testing::internal::IteratorTraits< T * >
 
struct  testing::internal::IteratorTraits< const T * >
 
class  testing::internal::TypeWithSize< size >
 
class  testing::internal::TypeWithSize< 4 >
 
class  testing::internal::TypeWithSize< 8 >
 
class  testing::Message
 
class  testing::internal::IgnoredValue
 
class  testing::internal::FloatingPoint< RawType >
 
class  testing::internal::TypeIdHelper< T >
 
class  testing::internal::TestFactoryBase
 
class  testing::internal::TestFactoryImpl< TestClass >
 
struct  testing::internal::CodeLocation
 
struct  testing::internal::SuiteApiResolver< T >
 
struct  testing::internal::ConstCharPtr
 
class  testing::internal::Random
 
struct  testing::internal::CompileAssertTypesEqual< T1, T2 >
 
struct  testing::internal::CompileAssertTypesEqual< T, T >
 
struct  testing::internal::RemoveReference< T >
 
struct  testing::internal::RemoveReference< T & >
 
struct  testing::internal::RemoveConst< T >
 
struct  testing::internal::RemoveConst< const T >
 
struct  testing::internal::RemoveConst< const T[N]>
 
class  testing::internal::ImplicitlyConvertible< From, To >
 
struct  testing::internal::IsAProtocolMessage< T >
 
struct  testing::internal::IsHashTable< T >
 
struct  testing::internal::IsRecursiveContainerImpl< C, bool >
 
struct  testing::internal::IsRecursiveContainerImpl< C, false >
 
struct  testing::internal::IsRecursiveContainerImpl< C, true >
 
struct  testing::internal::IsRecursiveContainer< C >
 
struct  testing::internal::EnableIf< bool >
 
struct  testing::internal::EnableIf< true >
 
struct  testing::internal::RelationToSourceReference
 
struct  testing::internal::RelationToSourceCopy
 
class  testing::internal::NativeArray< Element >
 
struct  testing::internal::IndexSequence< Is >
 
struct  testing::internal::DoubleSequence< plus_one, T, sizeofT >
 
struct  testing::internal::DoubleSequence< true, IndexSequence< I... >, sizeofT >
 
struct  testing::internal::DoubleSequence< false, IndexSequence< I... >, sizeofT >
 
struct  testing::internal::MakeIndexSequence< N >
 
struct  testing::internal::MakeIndexSequence< 0 >
 
struct  testing::internal::ElemFromListImpl< T, size_t, size_t >
 
struct  testing::internal::ElemFromListImpl< T, I, I >
 
struct  testing::internal::ElemFromList< N, I, T >
 
struct  testing::internal::ElemFromList< N, IndexSequence< I... >, T... >
 
class  testing::internal::FlatTuple< T >
 
struct  testing::internal::FlatTupleElemBase< Derived, I >
 
struct  testing::internal::FlatTupleElemBase< FlatTuple< T... >, I >
 
struct  testing::internal::FlatTupleBase< Derived, Idx >
 
struct  testing::internal::FlatTupleBase< FlatTuple< T... >, IndexSequence< Idx... > >
 
class  testing::internal::FlatTuple< T >
 
class  testing::internal2::TypeWithoutFormatter< T, kTypeKind >
 
class  testing::internal2::TypeWithoutFormatter< T, kProtobuf >
 
class  testing::internal2::TypeWithoutFormatter< T, kConvertibleToInteger >
 
class  testing::internal::FormatForComparison< ToPrint, OtherOperand >
 
class  testing::internal::FormatForComparison< ToPrint[N], OtherOperand >
 
class  testing::internal::UniversalPrinter< T >
 
struct  testing::internal::WrapPrinterType< type >
 
class  testing::internal::UniversalPrinter< T >
 
class  testing::internal::UniversalPrinter< T[N]>
 
class  testing::internal::UniversalPrinter< T & >
 
class  testing::internal::UniversalTersePrinter< T >
 
class  testing::internal::UniversalTersePrinter< T & >
 
class  testing::internal::UniversalTersePrinter< T[N]>
 
class  testing::internal::UniversalTersePrinter< const char * >
 
class  testing::internal::UniversalTersePrinter< char * >
 
class  testing::internal::UniversalTersePrinter< const wchar_t * >
 
class  testing::internal::UniversalTersePrinter< wchar_t * >
 
struct  testing::TestParamInfo< ParamType >
 
struct  testing::PrintToStringParamName
 
class  testing::internal::ParamGeneratorInterface< T >
 
class  testing::internal::ParamGenerator< T >
 
class  testing::internal::ParamIteratorInterface< T >
 
class  testing::internal::ParamIterator< T >
 
class  testing::internal::ParamGeneratorInterface< T >
 
class  testing::internal::ParamGenerator< T >
 
class  testing::internal::RangeGenerator< T, IncrementT >
 
class  testing::internal::ValuesInIteratorRangeGenerator< T >
 
struct  testing::internal::ParamNameGenFunc< ParamType >
 
class  testing::internal::ParameterizedTestFactory< TestClass >
 
class  testing::internal::TestMetaFactoryBase< ParamType >
 
class  testing::internal::TestMetaFactory< TestSuite >
 
class  testing::internal::ParameterizedTestSuiteInfoBase
 
class  testing::internal::ParameterizedTestSuiteInfo< TestSuite >
 
class  testing::internal::ParameterizedTestSuiteRegistry
 
class  testing::internal::ValueArray< Ts >
 
class  testing::internal::CartesianProductGenerator2< T1, T2 >
 
class  testing::internal::CartesianProductGenerator3< T1, T2, T3 >
 
class  testing::internal::CartesianProductGenerator4< T1, T2, T3, T4 >
 
class  testing::internal::CartesianProductGenerator5< T1, T2, T3, T4, T5 >
 
class  testing::internal::CartesianProductGenerator6< T1, T2, T3, T4, T5, T6 >
 
class  testing::internal::CartesianProductGenerator7< T1, T2, T3, T4, T5, T6, T7 >
 
class  testing::internal::CartesianProductGenerator8< T1, T2, T3, T4, T5, T6, T7, T8 >
 
class  testing::internal::CartesianProductGenerator9< T1, T2, T3, T4, T5, T6, T7, T8, T9 >
 
class  testing::internal::CartesianProductGenerator10< T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >
 
class  testing::internal::CartesianProductHolder2< Generator1, Generator2 >
 
class  testing::internal::CartesianProductHolder3< Generator1, Generator2, Generator3 >
 
class  testing::internal::CartesianProductHolder4< Generator1, Generator2, Generator3, Generator4 >
 
class  testing::internal::CartesianProductHolder5< Generator1, Generator2, Generator3, Generator4, Generator5 >
 
class  testing::internal::CartesianProductHolder6< Generator1, Generator2, Generator3, Generator4, Generator5, Generator6 >
 
class  testing::internal::CartesianProductHolder7< Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7 >
 
class  testing::internal::CartesianProductHolder8< Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8 >
 
class  testing::internal::CartesianProductHolder9< Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8, Generator9 >
 
class  testing::internal::CartesianProductHolder10< Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8, Generator9, Generator10 >
 
class  testing::Test
 
class  testing::TestProperty
 
class  testing::TestResult
 
class  testing::TestInfo
 
class  testing::TestSuite
 
class  testing::Environment
 
class  testing::TestEventListener
 
class  testing::EmptyTestEventListener
 
class  testing::TestEventListeners
 
class  testing::UnitTest
 
struct  testing::internal::faketype
 
class  testing::internal::EqHelper< lhs_is_null_literal >
 
class  testing::internal::EqHelper< true >
 
class  testing::internal::AssertHelper
 
class  testing::WithParamInterface< T >
 
class  testing::TestWithParam< T >
 
class  testing::ScopedTrace
 
+ + + + + + + + + + + + + + + +

+Namespaces

 testing
 
 testing::internal
 
 testing::internal::posix
 
 proto2
 
 testing::internal::edit_distance
 
 testing::internal2
 
 testing_internal
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Macros

#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_
 
#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_
 
#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_ARCH_H_
 
#define GTEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_PORT_H_
 
#define GTEST_DEV_EMAIL_   "googletestframework@@googlegroups.com"
 
#define GTEST_FLAG_PREFIX_   "gtest_"
 
#define GTEST_FLAG_PREFIX_DASH_   "gtest-"
 
#define GTEST_FLAG_PREFIX_UPPER_   "GTEST_"
 
#define GTEST_NAME_   "Google Test"
 
#define GTEST_PROJECT_URL_   "https://github.com/google/googletest/"
 
#define GTEST_INIT_GOOGLE_TEST_NAME_   "testing::InitGoogleTest"
 
#define GTEST_DISABLE_MSC_WARNINGS_PUSH_(warnings)
 
#define GTEST_DISABLE_MSC_WARNINGS_POP_()
 
#define GTEST_DISABLE_MSC_DEPRECATED_PUSH_()   GTEST_DISABLE_MSC_WARNINGS_PUSH_(4996)
 
#define GTEST_DISABLE_MSC_DEPRECATED_POP_()   GTEST_DISABLE_MSC_WARNINGS_POP_()
 
#define GTEST_HAS_POSIX_RE   (!GTEST_OS_WINDOWS)
 
#define GTEST_USES_POSIX_RE   1
 
#define GTEST_HAS_EXCEPTIONS   0
 
#define GTEST_HAS_STD_STRING   1
 
#define GTEST_HAS_GLOBAL_STRING   0
 
#define GTEST_HAS_STD_WSTRING   (!(GTEST_OS_LINUX_ANDROID || GTEST_OS_CYGWIN || GTEST_OS_SOLARIS))
 
#define GTEST_HAS_GLOBAL_WSTRING   (GTEST_HAS_STD_WSTRING && GTEST_HAS_GLOBAL_STRING)
 
#define GTEST_HAS_RTTI   1
 
#define GTEST_HAS_PTHREAD
 
#define GTEST_HAS_CLONE   0
 
#define GTEST_HAS_STREAM_REDIRECTION   1
 
#define GTEST_WIDE_STRING_USES_UTF16_   (GTEST_OS_WINDOWS || GTEST_OS_CYGWIN || GTEST_OS_AIX || GTEST_OS_OS2)
 
#define GTEST_AMBIGUOUS_ELSE_BLOCKER_   switch (0) case 0: default:
 
#define GTEST_ATTRIBUTE_UNUSED_
 
#define GTEST_ATTRIBUTE_PRINTF_(string_index, first_to_check)
 
#define GTEST_DISALLOW_ASSIGN_(type)   void operator=(type const &) = delete
 
#define GTEST_DISALLOW_COPY_AND_ASSIGN_(type)
 
#define GTEST_MUST_USE_RESULT_
 
#define GTEST_INTENTIONAL_CONST_COND_PUSH_()   GTEST_DISABLE_MSC_WARNINGS_PUSH_(4127)
 
#define GTEST_INTENTIONAL_CONST_COND_POP_()   GTEST_DISABLE_MSC_WARNINGS_POP_()
 
#define GTEST_HAS_SEH   0
 
#define GTEST_IS_THREADSAFE
 
#define GTEST_API_
 
#define GTEST_DEFAULT_DEATH_TEST_STYLE   "fast"
 
#define GTEST_NO_INLINE_
 
#define GTEST_HAS_CXXABI_H_   0
 
#define GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_
 
#define GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_
 
#define GTEST_ATTRIBUTE_NO_SANITIZE_THREAD_
 
#define GTEST_COMPILE_ASSERT_(expr, msg)   static_assert(expr, #msg)
 
#define GTEST_ARRAY_SIZE_(array)   (sizeof(array) / sizeof(array[0]))
 
#define GTEST_LOG_(severity)
 
#define GTEST_CHECK_(condition)
 
#define GTEST_CHECK_POSIX_SUCCESS_(posix_call)
 
#define GTEST_ADD_REFERENCE_(T)   typename ::testing::internal::AddReference<T>::type
 
#define GTEST_REFERENCE_TO_CONST_(T)   typename ::testing::internal::ConstRef<T>::type
 
#define GTEST_DECLARE_STATIC_MUTEX_(mutex)   extern ::testing::internal::Mutex mutex
 
#define GTEST_DEFINE_STATIC_MUTEX_(mutex)   ::testing::internal::Mutex mutex
 
#define GTEST_PATH_SEP_   "/"
 
#define GTEST_HAS_ALT_PATH_SEP_   0
 
#define GTEST_SNPRINTF_   snprintf
 
#define GTEST_FLAG(name)   FLAGS_gtest_##name
 
#define GTEST_USE_OWN_FLAGFILE_FLAG_   1
 
#define GTEST_FLAG_SAVER_   ::testing::internal::GTestFlagSaver
 
#define GTEST_DECLARE_bool_(name)   GTEST_API_ extern bool GTEST_FLAG(name)
 
#define GTEST_DECLARE_int32_(name)   GTEST_API_ extern ::testing::internal::Int32 GTEST_FLAG(name)
 
#define GTEST_DECLARE_string_(name)   GTEST_API_ extern ::std::string GTEST_FLAG(name)
 
#define GTEST_DEFINE_bool_(name, default_val, doc)   GTEST_API_ bool GTEST_FLAG(name) = (default_val)
 
#define GTEST_DEFINE_int32_(name, default_val, doc)   GTEST_API_ ::testing::internal::Int32 GTEST_FLAG(name) = (default_val)
 
#define GTEST_DEFINE_string_(name, default_val, doc)   GTEST_API_ ::std::string GTEST_FLAG(name) = (default_val)
 
#define GTEST_EXCLUSIVE_LOCK_REQUIRED_(locks)
 
#define GTEST_LOCK_EXCLUDED_(locks)
 
#define GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_
 
#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_
 
#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_
 
#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_
 
#define GTEST_CONCAT_TOKEN_(foo, bar)   GTEST_CONCAT_TOKEN_IMPL_(foo, bar)
 
#define GTEST_CONCAT_TOKEN_IMPL_(foo, bar)   foo ## bar
 
#define GTEST_STRINGIFY_(name)   #name
 
#define GTEST_IS_NULL_LITERAL_(x)   decltype(::testing::internal::IsNullLiteralHelper(x))::value
 
#define GTEST_REMOVE_REFERENCE_(T)   typename ::testing::internal::RemoveReference<T>::type
 
#define GTEST_REMOVE_CONST_(T)   typename ::testing::internal::RemoveConst<T>::type
 
#define GTEST_REMOVE_REFERENCE_AND_CONST_(T)   GTEST_REMOVE_CONST_(GTEST_REMOVE_REFERENCE_(T))
 
#define GTEST_MESSAGE_AT_(file, line, message, result_type)
 
#define GTEST_MESSAGE_(message, result_type)   GTEST_MESSAGE_AT_(__FILE__, __LINE__, message, result_type)
 
#define GTEST_FATAL_FAILURE_(message)   return GTEST_MESSAGE_(message, ::testing::TestPartResult::kFatalFailure)
 
#define GTEST_NONFATAL_FAILURE_(message)   GTEST_MESSAGE_(message, ::testing::TestPartResult::kNonFatalFailure)
 
#define GTEST_SUCCESS_(message)   GTEST_MESSAGE_(message, ::testing::TestPartResult::kSuccess)
 
#define GTEST_SKIP_(message)   return GTEST_MESSAGE_(message, ::testing::TestPartResult::kSkip)
 
#define GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement)   if (::testing::internal::AlwaysTrue()) { statement; }
 
#define GTEST_TEST_THROW_(statement, expected_exception, fail)
 
#define GTEST_TEST_NO_THROW_(statement, fail)
 
#define GTEST_TEST_ANY_THROW_(statement, fail)
 
#define GTEST_TEST_BOOLEAN_(expression, text, actual, expected, fail)
 
#define GTEST_TEST_NO_FATAL_FAILURE_(statement, fail)
 
#define GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)   test_suite_name##_##test_name##_Test
 
#define GTEST_TEST_(test_suite_name, test_name, parent_class, parent_id)
 
#define GTEST_INTERNAL_DEPRECATED(message)
 
#define GTEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_
 
#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_
 
#define GTEST_INCLUDE_GTEST_GTEST_MATCHERS_H_
 
#define GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_
 
#define GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(CharType)
 
#define GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(CharType, OtherStringType)
 
#define GTEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_PRINTERS_H_
 
#define GTEST_UNSUPPORTED_DEATH_TEST(statement, regex, terminator)
 
#define EXPECT_DEATH_IF_SUPPORTED(statement, regex)   GTEST_UNSUPPORTED_DEATH_TEST(statement, regex, )
 
#define ASSERT_DEATH_IF_SUPPORTED(statement, regex)   GTEST_UNSUPPORTED_DEATH_TEST(statement, regex, return)
 
#define GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
 
#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_
 
#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_
 
#define TEST_P(test_suite_name, test_name)
 
#define INSTANTIATE_TEST_SUITE_P(prefix, test_suite_name, generator, ...)
 
#define INSTANTIATE_TEST_CASE_P   INSTANTIATE_TEST_SUITE_P
 
#define GTEST_INCLUDE_GTEST_GTEST_PROD_H_
 
#define FRIEND_TEST(test_case_name, test_name)   friend class test_case_name##_##test_name##_Test
 
#define GTEST_INCLUDE_GTEST_GTEST_TEST_PART_H_
 
#define GTEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_
 
#define GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_
 
#define GTEST_ASSERT_(expression, on_failure)
 
#define GTEST_PRED_FORMAT1_(pred_format, v1, on_failure)
 
#define GTEST_PRED1_(pred, v1, on_failure)
 
#define EXPECT_PRED_FORMAT1(pred_format, v1)   GTEST_PRED_FORMAT1_(pred_format, v1, GTEST_NONFATAL_FAILURE_)
 
#define EXPECT_PRED1(pred, v1)   GTEST_PRED1_(pred, v1, GTEST_NONFATAL_FAILURE_)
 
#define ASSERT_PRED_FORMAT1(pred_format, v1)   GTEST_PRED_FORMAT1_(pred_format, v1, GTEST_FATAL_FAILURE_)
 
#define ASSERT_PRED1(pred, v1)   GTEST_PRED1_(pred, v1, GTEST_FATAL_FAILURE_)
 
#define GTEST_PRED_FORMAT2_(pred_format, v1, v2, on_failure)
 
#define GTEST_PRED2_(pred, v1, v2, on_failure)
 
#define EXPECT_PRED_FORMAT2(pred_format, v1, v2)   GTEST_PRED_FORMAT2_(pred_format, v1, v2, GTEST_NONFATAL_FAILURE_)
 
#define EXPECT_PRED2(pred, v1, v2)   GTEST_PRED2_(pred, v1, v2, GTEST_NONFATAL_FAILURE_)
 
#define ASSERT_PRED_FORMAT2(pred_format, v1, v2)   GTEST_PRED_FORMAT2_(pred_format, v1, v2, GTEST_FATAL_FAILURE_)
 
#define ASSERT_PRED2(pred, v1, v2)   GTEST_PRED2_(pred, v1, v2, GTEST_FATAL_FAILURE_)
 
#define GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, on_failure)
 
#define GTEST_PRED3_(pred, v1, v2, v3, on_failure)
 
#define EXPECT_PRED_FORMAT3(pred_format, v1, v2, v3)   GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, GTEST_NONFATAL_FAILURE_)
 
#define EXPECT_PRED3(pred, v1, v2, v3)   GTEST_PRED3_(pred, v1, v2, v3, GTEST_NONFATAL_FAILURE_)
 
#define ASSERT_PRED_FORMAT3(pred_format, v1, v2, v3)   GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, GTEST_FATAL_FAILURE_)
 
#define ASSERT_PRED3(pred, v1, v2, v3)   GTEST_PRED3_(pred, v1, v2, v3, GTEST_FATAL_FAILURE_)
 
#define GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, on_failure)
 
#define GTEST_PRED4_(pred, v1, v2, v3, v4, on_failure)
 
#define EXPECT_PRED_FORMAT4(pred_format, v1, v2, v3, v4)   GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, GTEST_NONFATAL_FAILURE_)
 
#define EXPECT_PRED4(pred, v1, v2, v3, v4)   GTEST_PRED4_(pred, v1, v2, v3, v4, GTEST_NONFATAL_FAILURE_)
 
#define ASSERT_PRED_FORMAT4(pred_format, v1, v2, v3, v4)   GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, GTEST_FATAL_FAILURE_)
 
#define ASSERT_PRED4(pred, v1, v2, v3, v4)   GTEST_PRED4_(pred, v1, v2, v3, v4, GTEST_FATAL_FAILURE_)
 
#define GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, on_failure)
 
#define GTEST_PRED5_(pred, v1, v2, v3, v4, v5, on_failure)
 
#define EXPECT_PRED_FORMAT5(pred_format, v1, v2, v3, v4, v5)   GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, GTEST_NONFATAL_FAILURE_)
 
#define EXPECT_PRED5(pred, v1, v2, v3, v4, v5)   GTEST_PRED5_(pred, v1, v2, v3, v4, v5, GTEST_NONFATAL_FAILURE_)
 
#define ASSERT_PRED_FORMAT5(pred_format, v1, v2, v3, v4, v5)   GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, GTEST_FATAL_FAILURE_)
 
#define ASSERT_PRED5(pred, v1, v2, v3, v4, v5)   GTEST_PRED5_(pred, v1, v2, v3, v4, v5, GTEST_FATAL_FAILURE_)
 
#define GTEST_IMPL_CMP_HELPER_(op_name, op)
 
#define GTEST_SKIP()   GTEST_SKIP_("Skipped")
 
#define ADD_FAILURE()   GTEST_NONFATAL_FAILURE_("Failed")
 
#define ADD_FAILURE_AT(file, line)
 
#define GTEST_FAIL()   GTEST_FATAL_FAILURE_("Failed")
 
#define FAIL()   GTEST_FAIL()
 
#define GTEST_SUCCEED()   GTEST_SUCCESS_("Succeeded")
 
#define SUCCEED()   GTEST_SUCCEED()
 
#define EXPECT_THROW(statement, expected_exception)   GTEST_TEST_THROW_(statement, expected_exception, GTEST_NONFATAL_FAILURE_)
 
#define EXPECT_NO_THROW(statement)   GTEST_TEST_NO_THROW_(statement, GTEST_NONFATAL_FAILURE_)
 
#define EXPECT_ANY_THROW(statement)   GTEST_TEST_ANY_THROW_(statement, GTEST_NONFATAL_FAILURE_)
 
#define ASSERT_THROW(statement, expected_exception)   GTEST_TEST_THROW_(statement, expected_exception, GTEST_FATAL_FAILURE_)
 
#define ASSERT_NO_THROW(statement)   GTEST_TEST_NO_THROW_(statement, GTEST_FATAL_FAILURE_)
 
#define ASSERT_ANY_THROW(statement)   GTEST_TEST_ANY_THROW_(statement, GTEST_FATAL_FAILURE_)
 
#define EXPECT_TRUE(condition)
 
#define EXPECT_FALSE(condition)
 
#define ASSERT_TRUE(condition)
 
#define ASSERT_FALSE(condition)
 
#define EXPECT_EQ(val1, val2)
 
#define EXPECT_NE(val1, val2)   EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperNE, val1, val2)
 
#define EXPECT_LE(val1, val2)   EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperLE, val1, val2)
 
#define EXPECT_LT(val1, val2)   EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperLT, val1, val2)
 
#define EXPECT_GE(val1, val2)   EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperGE, val1, val2)
 
#define EXPECT_GT(val1, val2)   EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperGT, val1, val2)
 
#define GTEST_ASSERT_EQ(val1, val2)
 
#define GTEST_ASSERT_NE(val1, val2)   ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperNE, val1, val2)
 
#define GTEST_ASSERT_LE(val1, val2)   ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperLE, val1, val2)
 
#define GTEST_ASSERT_LT(val1, val2)   ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperLT, val1, val2)
 
#define GTEST_ASSERT_GE(val1, val2)   ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperGE, val1, val2)
 
#define GTEST_ASSERT_GT(val1, val2)   ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperGT, val1, val2)
 
#define ASSERT_EQ(val1, val2)   GTEST_ASSERT_EQ(val1, val2)
 
#define ASSERT_NE(val1, val2)   GTEST_ASSERT_NE(val1, val2)
 
#define ASSERT_LE(val1, val2)   GTEST_ASSERT_LE(val1, val2)
 
#define ASSERT_LT(val1, val2)   GTEST_ASSERT_LT(val1, val2)
 
#define ASSERT_GE(val1, val2)   GTEST_ASSERT_GE(val1, val2)
 
#define ASSERT_GT(val1, val2)   GTEST_ASSERT_GT(val1, val2)
 
#define EXPECT_STREQ(s1, s2)   EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTREQ, s1, s2)
 
#define EXPECT_STRNE(s1, s2)   EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRNE, s1, s2)
 
#define EXPECT_STRCASEEQ(s1, s2)   EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASEEQ, s1, s2)
 
#define EXPECT_STRCASENE(s1, s2)   EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASENE, s1, s2)
 
#define ASSERT_STREQ(s1, s2)   ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTREQ, s1, s2)
 
#define ASSERT_STRNE(s1, s2)   ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRNE, s1, s2)
 
#define ASSERT_STRCASEEQ(s1, s2)   ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASEEQ, s1, s2)
 
#define ASSERT_STRCASENE(s1, s2)   ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASENE, s1, s2)
 
#define EXPECT_FLOAT_EQ(val1, val2)
 
#define EXPECT_DOUBLE_EQ(val1, val2)
 
#define ASSERT_FLOAT_EQ(val1, val2)
 
#define ASSERT_DOUBLE_EQ(val1, val2)
 
#define EXPECT_NEAR(val1, val2, abs_error)
 
#define ASSERT_NEAR(val1, val2, abs_error)
 
#define ASSERT_NO_FATAL_FAILURE(statement)   GTEST_TEST_NO_FATAL_FAILURE_(statement, GTEST_FATAL_FAILURE_)
 
#define EXPECT_NO_FATAL_FAILURE(statement)   GTEST_TEST_NO_FATAL_FAILURE_(statement, GTEST_NONFATAL_FAILURE_)
 
#define SCOPED_TRACE(message)
 
#define GTEST_TEST(test_suite_name, test_name)
 
#define TEST(test_suite_name, test_name)   GTEST_TEST(test_suite_name, test_name)
 
#define TEST_F(test_fixture, test_name)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

typedef ::std::string testing::internal::string
 
typedef ::std::wstring testing::internal::wstring
 
typedef GTestMutexLock testing::internal::MutexLock
 
typedef bool_constant< false > testing::internal::false_type
 
typedef bool_constant< true > testing::internal::true_type
 
typedef long long testing::internal::BiggestInt
 
typedef struct stat testing::internal::posix::StatStruct
 
typedef TypeWithSize< 4 >::Int testing::internal::Int32
 
typedef TypeWithSize< 4 >::UInt testing::internal::UInt32
 
typedef TypeWithSize< 8 >::Int testing::internal::Int64
 
typedef TypeWithSize< 8 >::UInt testing::internal::UInt64
 
typedef TypeWithSize< 8 >::Int testing::internal::TimeInMillis
 
typedef FloatingPoint< float > testing::internal::Float
 
typedef FloatingPoint< double > testing::internal::Double
 
typedef const void * testing::internal::TypeId
 
using testing::internal::SetUpTestSuiteFunc = void(*)()
 
using testing::internal::TearDownTestSuiteFunc = void(*)()
 
using testing::internal::SetUpTearDownSuiteFuncType = void(*)()
 
typedef int testing::internal::IsContainer
 
typedef char testing::internal::IsNotContainer
 
typedef ::std::vector< ::std::string > testing::internal::Strings
 
template<class TestCase >
using testing::internal::ParameterizedTestCaseInfo = ParameterizedTestSuiteInfo< TestCase >
 
typedef internal::TimeInMillis testing::TimeInMillis
 
+ + + + + + + + + + + +

+Enumerations

enum  testing::internal::GTestLogSeverity { testing::internal::GTEST_INFO, +testing::internal::GTEST_WARNING, +testing::internal::GTEST_ERROR, +testing::internal::GTEST_FATAL + }
 
enum  testing::internal::edit_distance::EditType { testing::internal::edit_distance::kMatch, +testing::internal::edit_distance::kAdd, +testing::internal::edit_distance::kRemove, +testing::internal::edit_distance::kReplace + }
 
enum  testing::internal2::TypeKind { testing::internal2::kProtobuf, +testing::internal2::kConvertibleToInteger, +testing::internal2::kOtherType + }
 
enum  testing::internal::DefaultPrinterType { testing::internal::kPrintContainer, +testing::internal::kPrintPointer, +testing::internal::kPrintFunctionPointer, +testing::internal::kPrintOther + }
 
enum  testing::internal::GTestColor { testing::internal::COLOR_DEFAULT, +testing::internal::COLOR_RED, +testing::internal::COLOR_GREEN, +testing::internal::COLOR_YELLOW + }
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Functions

GTEST_API_ bool testing::internal::IsTrue (bool condition)
 
GTEST_API_ ::std::string testing::internal::FormatFileLocation (const char *file, int line)
 
GTEST_API_ ::std::string testing::internal::FormatCompilerIndependentFileLocation (const char *file, int line)
 
void testing::internal::LogToStderr ()
 
void testing::internal::FlushInfoLog ()
 
template<typename To >
To testing::internal::ImplicitCast_ (To x)
 
template<typename To , typename From >
To testing::internal::DownCast_ (From *f)
 
template<class Derived , class Base >
Derived * testing::internal::CheckedDowncastToActualType (Base *base)
 
void testing::internal::CaptureStdout ()
 
std::string testing::internal::GetCapturedStdout ()
 
void testing::internal::CaptureStderr ()
 
std::string testing::internal::GetCapturedStderr ()
 
size_t testing::internal::GetFileSize (FILE *file)
 
std::string testing::internal::ReadEntireFile (FILE *file)
 
GTEST_API_ std::vector< std::string > testing::internal::GetArgvs ()
 
size_t testing::internal::GetThreadCount ()
 
bool testing::internal::IsAlpha (char ch)
 
bool testing::internal::IsAlNum (char ch)
 
bool testing::internal::IsDigit (char ch)
 
bool testing::internal::IsLower (char ch)
 
bool testing::internal::IsSpace (char ch)
 
bool testing::internal::IsUpper (char ch)
 
bool testing::internal::IsXDigit (char ch)
 
bool testing::internal::IsXDigit (wchar_t ch)
 
char testing::internal::ToLower (char ch)
 
char testing::internal::ToUpper (char ch)
 
std::string testing::internal::StripTrailingSpaces (std::string str)
 
int testing::internal::posix::FileNo (FILE *file)
 
int testing::internal::posix::IsATTY (int fd)
 
int testing::internal::posix::Stat (const char *path, StatStruct *buf)
 
int testing::internal::posix::StrCaseCmp (const char *s1, const char *s2)
 
char * testing::internal::posix::StrDup (const char *src)
 
int testing::internal::posix::RmDir (const char *dir)
 
bool testing::internal::posix::IsDir (const StatStruct &st)
 
const char * testing::internal::posix::StrNCpy (char *dest, const char *src, size_t n)
 
int testing::internal::posix::ChDir (const char *dir)
 
FILE * testing::internal::posix::FOpen (const char *path, const char *mode)
 
FILE * testing::internal::posix::FReopen (const char *path, const char *mode, FILE *stream)
 
FILE * testing::internal::posix::FDOpen (int fd, const char *mode)
 
int testing::internal::posix::FClose (FILE *fp)
 
int testing::internal::posix::Read (int fd, void *buf, unsigned int count)
 
int testing::internal::posix::Write (int fd, const void *buf, unsigned int count)
 
int testing::internal::posix::Close (int fd)
 
const char * testing::internal::posix::StrError (int errnum)
 
const char * testing::internal::posix::GetEnv (const char *name)
 
void testing::internal::posix::Abort ()
 
bool testing::internal::ParseInt32 (const Message &src_text, const char *str, Int32 *value)
 
bool testing::internal::BoolFromGTestEnv (const char *flag, bool default_value)
 
Int32 testing::internal::Int32FromGTestEnv (const char *flag, Int32 default_value)
 
std::string testing::internal::OutputFlagAlsoCheckEnvVar ()
 
const char * testing::internal::StringFromGTestEnv (const char *flag, const char *default_value)
 
std::ostream & testing::operator<< (std::ostream &os, const Message &sb)
 
template<typename T >
std::string testing::internal::StreamableToString (const T &streamable)
 
 GTEST_DISABLE_MSC_WARNINGS_PUSH_ (4251) namespace testing
 
template<typename T >
::std::string testing::PrintToString (const T &value)
 
std::true_type testing::internal::IsNullLiteralHelper (Secret *)
 
std::false_type testing::internal::IsNullLiteralHelper (IgnoredValue)
 
GTEST_API_ std::string testing::internal::AppendUserMessage (const std::string &gtest_msg, const Message &user_msg)
 
GTEST_API_ std::vector< EditType > testing::internal::edit_distance::CalculateOptimalEdits (const std::vector< size_t > &left, const std::vector< size_t > &right)
 
GTEST_API_ std::vector< EditType > testing::internal::edit_distance::CalculateOptimalEdits (const std::vector< std::string > &left, const std::vector< std::string > &right)
 
GTEST_API_ std::string testing::internal::edit_distance::CreateUnifiedDiff (const std::vector< std::string > &left, const std::vector< std::string > &right, size_t context=2)
 
GTEST_API_ std::string testing::internal::DiffStrings (const std::string &left, const std::string &right, size_t *total_line_count)
 
GTEST_API_ AssertionResult testing::internal::EqFailure (const char *expected_expression, const char *actual_expression, const std::string &expected_value, const std::string &actual_value, bool ignoring_case)
 
GTEST_API_ std::string testing::internal::GetBoolAssertionFailureMessage (const AssertionResult &assertion_result, const char *expression_text, const char *actual_predicate_value, const char *expected_predicate_value)
 
template<typename T >
TypeId testing::internal::GetTypeId ()
 
GTEST_API_ TypeId testing::internal::GetTestTypeId ()
 
SetUpTearDownSuiteFuncType testing::internal::GetNotDefaultOrNull (SetUpTearDownSuiteFuncType a, SetUpTearDownSuiteFuncType def)
 
GTEST_API_ TestInfo * testing::internal::MakeAndRegisterTestInfo (const char *test_suite_name, const char *name, const char *type_param, const char *value_param, CodeLocation code_location, TypeId fixture_class_id, SetUpTestSuiteFunc set_up_tc, TearDownTestSuiteFunc tear_down_tc, TestFactoryBase *factory)
 
GTEST_API_ bool testing::internal::SkipPrefix (const char *prefix, const char **pstr)
 
GTEST_API_ std::string testing::internal::GetCurrentOsStackTraceExceptTop (UnitTest *unit_test, int skip_count)
 
GTEST_API_ bool testing::internal::AlwaysTrue ()
 
bool testing::internal::AlwaysFalse ()
 
template<class C , class Iterator = decltype(::std::declval<const C&>().begin()), class = decltype(::std::declval<const C&>().end()), class = decltype(++::std::declval<Iterator&>()), class = decltype(*::std::declval<Iterator>()), class = typename C::const_iterator>
IsContainer testing::internal::IsContainerTest (int)
 
template<class C >
IsNotContainer testing::internal::IsContainerTest (long)
 
template<typename T , typename U >
bool testing::internal::ArrayEq (const T *lhs, size_t size, const U *rhs)
 
template<typename T , typename U >
bool testing::internal::ArrayEq (const T &lhs, const U &rhs)
 
template<typename T , typename U , size_t N>
bool testing::internal::ArrayEq (const T(&lhs)[N], const U(&rhs)[N])
 
template<typename Iter , typename Element >
Iter testing::internal::ArrayAwareFind (Iter begin, Iter end, const Element &elem)
 
template<typename T , typename U >
void testing::internal::CopyArray (const T *from, size_t size, U *to)
 
template<typename T , typename U >
void testing::internal::CopyArray (const T &from, U *to)
 
template<typename T , typename U , size_t N>
void testing::internal::CopyArray (const T(&from)[N], U(*to)[N])
 
GTEST_API_ void testing::internal2::PrintBytesInObjectTo (const unsigned char *obj_bytes, size_t count, ::std::ostream *os)
 
template<typename Char , typename CharTraits , typename T >
::std::basic_ostream< Char, CharTraits > & testing::internal2::operator<< (::std::basic_ostream< Char, CharTraits > &os, const T &x)
 
template<typename T >
void testing_internal::DefaultPrintNonContainerTo (const T &value, ::std::ostream *os)
 
 testing::internal::GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_ (char)
 
 testing::internal::GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_ (wchar_t)
 
 testing::internal::GTEST_IMPL_FORMAT_C_STRING_AS_STRING_ (char, ::std::string)
 
 testing::internal::GTEST_IMPL_FORMAT_C_STRING_AS_STRING_ (wchar_t, ::std::wstring)
 
template<typename T1 , typename T2 >
std::string testing::internal::FormatForComparisonFailureMessage (const T1 &value, const T2 &)
 
template<typename T >
void testing::internal::UniversalPrint (const T &value, ::std::ostream *os)
 
template<typename C >
void testing::internal::DefaultPrintTo (WrapPrinterType< kPrintContainer >, const C &container, ::std::ostream *os)
 
template<typename T >
void testing::internal::DefaultPrintTo (WrapPrinterType< kPrintPointer >, T *p, ::std::ostream *os)
 
template<typename T >
void testing::internal::DefaultPrintTo (WrapPrinterType< kPrintFunctionPointer >, T *p, ::std::ostream *os)
 
template<typename T >
void testing::internal::DefaultPrintTo (WrapPrinterType< kPrintOther >, const T &value, ::std::ostream *os)
 
template<typename T >
void testing::internal::PrintTo (const T &value, ::std::ostream *os)
 
void testing::internal::PrintTo (unsigned char c, ::std::ostream *os)
 
void testing::internal::PrintTo (signed char c, ::std::ostream *os)
 
void testing::internal::PrintTo (char c, ::std::ostream *os)
 
void testing::internal::PrintTo (bool x, ::std::ostream *os)
 
GTEST_API_ void testing::internal::PrintTo (wchar_t wc, ::std::ostream *os)
 
GTEST_API_ void testing::internal::PrintTo (const char *s, ::std::ostream *os)
 
void testing::internal::PrintTo (char *s, ::std::ostream *os)
 
void testing::internal::PrintTo (const signed char *s, ::std::ostream *os)
 
void testing::internal::PrintTo (signed char *s, ::std::ostream *os)
 
void testing::internal::PrintTo (const unsigned char *s, ::std::ostream *os)
 
void testing::internal::PrintTo (unsigned char *s, ::std::ostream *os)
 
GTEST_API_ void testing::internal::PrintTo (const wchar_t *s, ::std::ostream *os)
 
void testing::internal::PrintTo (wchar_t *s, ::std::ostream *os)
 
template<typename T >
void testing::internal::PrintRawArrayTo (const T a[], size_t count, ::std::ostream *os)
 
GTEST_API_ void testing::internal::PrintStringTo (const ::std::string &s, ::std::ostream *os)
 
void testing::internal::PrintTo (const ::std::string &s, ::std::ostream *os)
 
GTEST_API_ void testing::internal::PrintWideStringTo (const ::std::wstring &s, ::std::ostream *os)
 
void testing::internal::PrintTo (const ::std::wstring &s, ::std::ostream *os)
 
void testing::internal::PrintTo (std::nullptr_t, ::std::ostream *os)
 
template<typename T >
void testing::internal::PrintTo (std::reference_wrapper< T > ref, ::std::ostream *os)
 
template<typename T >
void testing::internal::PrintTupleTo (const T &, std::integral_constant< size_t, 0 >, ::std::ostream *)
 
template<typename T , size_t I>
void testing::internal::PrintTupleTo (const T &t, std::integral_constant< size_t, I >, ::std::ostream *os)
 
template<typename... Types>
void testing::internal::PrintTo (const ::std::tuple< Types... > &t, ::std::ostream *os)
 
template<typename T1 , typename T2 >
void testing::internal::PrintTo (const ::std::pair< T1, T2 > &value, ::std::ostream *os)
 
template<typename T >
void testing::internal::UniversalPrintArray (const T *begin, size_t len, ::std::ostream *os)
 
GTEST_API_ void testing::internal::UniversalPrintArray (const char *begin, size_t len, ::std::ostream *os)
 
GTEST_API_ void testing::internal::UniversalPrintArray (const wchar_t *begin, size_t len, ::std::ostream *os)
 
template<typename T >
void testing::internal::UniversalTersePrint (const T &value, ::std::ostream *os)
 
template<typename Tuple >
void testing::internal::TersePrintPrefixToStrings (const Tuple &, std::integral_constant< size_t, 0 >, Strings *)
 
template<typename Tuple , size_t I>
void testing::internal::TersePrintPrefixToStrings (const Tuple &t, std::integral_constant< size_t, I >, Strings *strings)
 
template<typename Tuple >
Strings testing::internal::UniversalTersePrintTupleFieldsToStrings (const Tuple &value)
 
 testing::GTEST_DECLARE_string_ (death_test_style)
 
GTEST_API_ void testing::internal::ReportInvalidTestSuiteType (const char *test_suite_name, CodeLocation code_location)
 
template<class ParamType >
std::string testing::internal::DefaultParamName (const TestParamInfo< ParamType > &info)
 
template<class ParamType , class ParamNameGenFunctor >
ParamNameGenFunctor testing::internal::GetParamNameGen (ParamNameGenFunctor func)
 
template<class ParamType >
ParamNameGenFunc< ParamType >::Type * testing::internal::GetParamNameGen ()
 
template<class Container >
internal::ParamGenerator< typename Container::value_type > testing::ValuesIn (const Container &container)
 
template<typename T , typename IncrementT >
internal::ParamGenerator< T > testing::Range (T start, T end, IncrementT step)
 
template<typename T >
internal::ParamGenerator< T > testing::Range (T start, T end)
 
template<typename ForwardIterator >
internal::ParamGenerator< typename ::testing::internal::IteratorTraits< ForwardIterator >::value_type > testing::ValuesIn (ForwardIterator begin, ForwardIterator end)
 
template<typename T , size_t N>
internal::ParamGenerator< T > testing::ValuesIn (const T(&array)[N])
 
template<typename... T>
internal::ValueArray< T... > testing::Values (T... v)
 
internal::ParamGenerator< bool > testing::Bool ()
 
template<typename Generator1 , typename Generator2 >
internal::CartesianProductHolder2< Generator1, Generator2 > testing::Combine (const Generator1 &g1, const Generator2 &g2)
 
template<typename Generator1 , typename Generator2 , typename Generator3 >
internal::CartesianProductHolder3< Generator1, Generator2, Generator3 > testing::Combine (const Generator1 &g1, const Generator2 &g2, const Generator3 &g3)
 
template<typename Generator1 , typename Generator2 , typename Generator3 , typename Generator4 >
internal::CartesianProductHolder4< Generator1, Generator2, Generator3, Generator4 > testing::Combine (const Generator1 &g1, const Generator2 &g2, const Generator3 &g3, const Generator4 &g4)
 
template<typename Generator1 , typename Generator2 , typename Generator3 , typename Generator4 , typename Generator5 >
internal::CartesianProductHolder5< Generator1, Generator2, Generator3, Generator4, Generator5 > testing::Combine (const Generator1 &g1, const Generator2 &g2, const Generator3 &g3, const Generator4 &g4, const Generator5 &g5)
 
template<typename Generator1 , typename Generator2 , typename Generator3 , typename Generator4 , typename Generator5 , typename Generator6 >
internal::CartesianProductHolder6< Generator1, Generator2, Generator3, Generator4, Generator5, Generator6 > testing::Combine (const Generator1 &g1, const Generator2 &g2, const Generator3 &g3, const Generator4 &g4, const Generator5 &g5, const Generator6 &g6)
 
template<typename Generator1 , typename Generator2 , typename Generator3 , typename Generator4 , typename Generator5 , typename Generator6 , typename Generator7 >
internal::CartesianProductHolder7< Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7 > testing::Combine (const Generator1 &g1, const Generator2 &g2, const Generator3 &g3, const Generator4 &g4, const Generator5 &g5, const Generator6 &g6, const Generator7 &g7)
 
template<typename Generator1 , typename Generator2 , typename Generator3 , typename Generator4 , typename Generator5 , typename Generator6 , typename Generator7 , typename Generator8 >
internal::CartesianProductHolder8< Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8 > testing::Combine (const Generator1 &g1, const Generator2 &g2, const Generator3 &g3, const Generator4 &g4, const Generator5 &g5, const Generator6 &g6, const Generator7 &g7, const Generator8 &g8)
 
template<typename Generator1 , typename Generator2 , typename Generator3 , typename Generator4 , typename Generator5 , typename Generator6 , typename Generator7 , typename Generator8 , typename Generator9 >
internal::CartesianProductHolder9< Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8, Generator9 > testing::Combine (const Generator1 &g1, const Generator2 &g2, const Generator3 &g3, const Generator4 &g4, const Generator5 &g5, const Generator6 &g6, const Generator7 &g7, const Generator8 &g8, const Generator9 &g9)
 
template<typename Generator1 , typename Generator2 , typename Generator3 , typename Generator4 , typename Generator5 , typename Generator6 , typename Generator7 , typename Generator8 , typename Generator9 , typename Generator10 >
internal::CartesianProductHolder10< Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8, Generator9, Generator10 > testing::Combine (const Generator1 &g1, const Generator2 &g2, const Generator3 &g3, const Generator4 &g4, const Generator5 &g5, const Generator6 &g6, const Generator7 &g7, const Generator8 &g8, const Generator9 &g9, const Generator10 &g10)
 
template<typename Pred , typename T1 >
AssertionResult testing::AssertPred1Helper (const char *pred_text, const char *e1, Pred pred, const T1 &v1)
 
template<typename Pred , typename T1 , typename T2 >
AssertionResult testing::AssertPred2Helper (const char *pred_text, const char *e1, const char *e2, Pred pred, const T1 &v1, const T2 &v2)
 
template<typename Pred , typename T1 , typename T2 , typename T3 >
AssertionResult testing::AssertPred3Helper (const char *pred_text, const char *e1, const char *e2, const char *e3, Pred pred, const T1 &v1, const T2 &v2, const T3 &v3)
 
template<typename Pred , typename T1 , typename T2 , typename T3 , typename T4 >
AssertionResult testing::AssertPred4Helper (const char *pred_text, const char *e1, const char *e2, const char *e3, const char *e4, Pred pred, const T1 &v1, const T2 &v2, const T3 &v3, const T4 &v4)
 
template<typename Pred , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 >
AssertionResult testing::AssertPred5Helper (const char *pred_text, const char *e1, const char *e2, const char *e3, const char *e4, const char *e5, Pred pred, const T1 &v1, const T2 &v2, const T3 &v3, const T4 &v4, const T5 &v5)
 
Environment * testing::AddGlobalTestEnvironment (Environment *env)
 
GTEST_API_ void testing::InitGoogleTest (int *argc, char **argv)
 
GTEST_API_ void testing::InitGoogleTest (int *argc, wchar_t **argv)
 
template<typename T1 , typename T2 >
AssertionResult testing::internal::CmpHelperEQFailure (const char *lhs_expression, const char *rhs_expression, const T1 &lhs, const T2 &rhs)
 
bool testing::internal::operator== (faketype, faketype)
 
bool testing::internal::operator!= (faketype, faketype)
 
template<typename T1 , typename T2 >
AssertionResult testing::internal::CmpHelperEQ (const char *lhs_expression, const char *rhs_expression, const T1 &lhs, const T2 &rhs)
 
GTEST_API_ AssertionResult testing::internal::CmpHelperEQ (const char *lhs_expression, const char *rhs_expression, BiggestInt lhs, BiggestInt rhs)
 
template<typename T1 , typename T2 >
AssertionResult testing::internal::CmpHelperOpFailure (const char *expr1, const char *expr2, const T1 &val1, const T2 &val2, const char *op)
 
 testing::internal::GTEST_IMPL_CMP_HELPER_ (NE, !=)
 
 testing::internal::GTEST_IMPL_CMP_HELPER_ (LE,<=)
 
 testing::internal::GTEST_IMPL_CMP_HELPER_ (LT,<)
 
 testing::internal::GTEST_IMPL_CMP_HELPER_ (GE, >=)
 
 testing::internal::GTEST_IMPL_CMP_HELPER_ (GT, >)
 
GTEST_API_ AssertionResult testing::internal::CmpHelperSTREQ (const char *s1_expression, const char *s2_expression, const char *s1, const char *s2)
 
GTEST_API_ AssertionResult testing::internal::CmpHelperSTRCASEEQ (const char *s1_expression, const char *s2_expression, const char *s1, const char *s2)
 
GTEST_API_ AssertionResult testing::internal::CmpHelperSTRNE (const char *s1_expression, const char *s2_expression, const char *s1, const char *s2)
 
GTEST_API_ AssertionResult testing::internal::CmpHelperSTRCASENE (const char *s1_expression, const char *s2_expression, const char *s1, const char *s2)
 
GTEST_API_ AssertionResult testing::internal::CmpHelperSTREQ (const char *s1_expression, const char *s2_expression, const wchar_t *s1, const wchar_t *s2)
 
GTEST_API_ AssertionResult testing::internal::CmpHelperSTRNE (const char *s1_expression, const char *s2_expression, const wchar_t *s1, const wchar_t *s2)
 
GTEST_API_ AssertionResult testing::IsSubstring (const char *needle_expr, const char *haystack_expr, const char *needle, const char *haystack)
 
GTEST_API_ AssertionResult testing::IsSubstring (const char *needle_expr, const char *haystack_expr, const wchar_t *needle, const wchar_t *haystack)
 
GTEST_API_ AssertionResult testing::IsNotSubstring (const char *needle_expr, const char *haystack_expr, const char *needle, const char *haystack)
 
GTEST_API_ AssertionResult testing::IsNotSubstring (const char *needle_expr, const char *haystack_expr, const wchar_t *needle, const wchar_t *haystack)
 
GTEST_API_ AssertionResult testing::IsSubstring (const char *needle_expr, const char *haystack_expr, const ::std::string &needle, const ::std::string &haystack)
 
GTEST_API_ AssertionResult testing::IsNotSubstring (const char *needle_expr, const char *haystack_expr, const ::std::string &needle, const ::std::string &haystack)
 
GTEST_API_ AssertionResult testing::IsSubstring (const char *needle_expr, const char *haystack_expr, const ::std::wstring &needle, const ::std::wstring &haystack)
 
GTEST_API_ AssertionResult testing::IsNotSubstring (const char *needle_expr, const char *haystack_expr, const ::std::wstring &needle, const ::std::wstring &haystack)
 
template<typename RawType >
AssertionResult testing::internal::CmpHelperFloatingPointEQ (const char *lhs_expression, const char *rhs_expression, RawType lhs_value, RawType rhs_value)
 
GTEST_API_ AssertionResult testing::internal::DoubleNearPredFormat (const char *expr1, const char *expr2, const char *abs_error_expr, double val1, double val2, double abs_error)
 
GTEST_API_ testing::internal::GTEST_ATTRIBUTE_PRINTF_ (2, 3) void ColoredPrintf(GTestColor color
 
GTEST_API_ AssertionResult testing::FloatLE (const char *expr1, const char *expr2, float val1, float val2)
 
GTEST_API_ AssertionResult testing::DoubleLE (const char *expr1, const char *expr2, double val1, double val2)
 
template<typename T1 , typename T2 >
bool testing::StaticAssertTypeEq ()
 
GTEST_API_ std::string testing::TempDir ()
 
template<int &... ExplicitParameterBarrier, typename Factory >
TestInfo * testing::RegisterTest (const char *test_suite_name, const char *test_name, const char *type_param, const char *value_param, const char *file, int line, Factory factory)
 
int RUN_ALL_TESTS () GTEST_MUST_USE_RESULT_
 
+ + + + + + + + + + + +

+Variables

const BiggestInt testing::internal::kMaxBiggestInt
 
GTEST_API_ const char testing::internal::kStackTraceMarker []
 
const size_t testing::internal2::kProtobufOneLinerMaxLength = 50
 
GTEST_API_ const char * testing::internal::fmt
 
class GTEST_API_ testing::ScopedTrace testing::GTEST_ATTRIBUTE_UNUSED_
 
+

Macro Definition Documentation

+ +

◆ ADD_FAILURE

+ +
+
+ + + + + + + +
#define ADD_FAILURE()   GTEST_NONFATAL_FAILURE_("Failed")
+
+ +

Definition at line 16533 of file gtest.h.

+ +
+
+ +

◆ ADD_FAILURE_AT

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define ADD_FAILURE_AT( file,
 line 
)
+
+Value:
GTEST_MESSAGE_AT_(file, line, "Failed", \
::testing::TestPartResult::kNonFatalFailure)
#define GTEST_MESSAGE_AT_(file, line, message, result_type)
Definition: gtest.h:7753
+
+

Definition at line 16537 of file gtest.h.

+ +
+
+ +

◆ ASSERT_ANY_THROW

+ +
+
+ + + + + + + + +
#define ASSERT_ANY_THROW( statement)   GTEST_TEST_ANY_THROW_(statement, GTEST_FATAL_FAILURE_)
+
+ +

Definition at line 16578 of file gtest.h.

+ +
+
+ +

◆ ASSERT_DEATH_IF_SUPPORTED

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define ASSERT_DEATH_IF_SUPPORTED( statement,
 regex 
)   GTEST_UNSUPPORTED_DEATH_TEST(statement, regex, return)
+
+ +

Definition at line 10354 of file gtest.h.

+ +
+
+ +

◆ ASSERT_DOUBLE_EQ

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define ASSERT_DOUBLE_EQ( val1,
 val2 
)
+
+Value:
ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<double>, \
val1, val2)
#define ASSERT_PRED_FORMAT2(pred_format, v1, v2)
Definition: gtest.h:14795
+
+

Definition at line 16760 of file gtest.h.

+ +
+
+ +

◆ ASSERT_EQ

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define ASSERT_EQ( val1,
 val2 
)   GTEST_ASSERT_EQ(val1, val2)
+
+ +

Definition at line 16677 of file gtest.h.

+ +
+
+ +

◆ ASSERT_FALSE

+ +
+
+ + + + + + + + +
#define ASSERT_FALSE( condition)
+
+Value:
GTEST_TEST_BOOLEAN_(!(condition), #condition, true, false, \
#define GTEST_FATAL_FAILURE_(message)
Definition: gtest.h:7760
+
#define GTEST_TEST_BOOLEAN_(expression, text, actual, expected, fail)
Definition: gtest.h:7840
+
+

Definition at line 16593 of file gtest.h.

+ +
+
+ +

◆ ASSERT_FLOAT_EQ

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define ASSERT_FLOAT_EQ( val1,
 val2 
)
+
+Value:
ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<float>, \
val1, val2)
#define ASSERT_PRED_FORMAT2(pred_format, v1, v2)
Definition: gtest.h:14795
+
+

Definition at line 16756 of file gtest.h.

+ +
+
+ +

◆ ASSERT_GE

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define ASSERT_GE( val1,
 val2 
)   GTEST_ASSERT_GE(val1, val2)
+
+ +

Definition at line 16693 of file gtest.h.

+ +
+
+ +

◆ ASSERT_GT

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define ASSERT_GT( val1,
 val2 
)   GTEST_ASSERT_GT(val1, val2)
+
+ +

Definition at line 16697 of file gtest.h.

+ +
+
+ +

◆ ASSERT_LE

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define ASSERT_LE( val1,
 val2 
)   GTEST_ASSERT_LE(val1, val2)
+
+ +

Definition at line 16685 of file gtest.h.

+ +
+
+ +

◆ ASSERT_LT

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define ASSERT_LT( val1,
 val2 
)   GTEST_ASSERT_LT(val1, val2)
+
+ +

Definition at line 16689 of file gtest.h.

+ +
+
+ +

◆ ASSERT_NE

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define ASSERT_NE( val1,
 val2 
)   GTEST_ASSERT_NE(val1, val2)
+
+ +

Definition at line 16681 of file gtest.h.

+ +
+
+ +

◆ ASSERT_NEAR

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
#define ASSERT_NEAR( val1,
 val2,
 abs_error 
)
+
+Value:
val1, val2, abs_error)
GTEST_API_ AssertionResult DoubleNearPredFormat(const char *expr1, const char *expr2, const char *abs_error_expr, double val1, double val2, double abs_error)
+
#define ASSERT_PRED_FORMAT3(pred_format, v1, v2, v3)
Definition: gtest.h:14850
+
+

Definition at line 16768 of file gtest.h.

+ +
+
+ +

◆ ASSERT_NO_FATAL_FAILURE

+ +
+
+ + + + + + + + +
#define ASSERT_NO_FATAL_FAILURE( statement)   GTEST_TEST_NO_FATAL_FAILURE_(statement, GTEST_FATAL_FAILURE_)
+
+ +

Definition at line 16820 of file gtest.h.

+ +
+
+ +

◆ ASSERT_NO_THROW

+ +
+
+ + + + + + + + +
#define ASSERT_NO_THROW( statement)   GTEST_TEST_NO_THROW_(statement, GTEST_FATAL_FAILURE_)
+
+ +

Definition at line 16576 of file gtest.h.

+ +
+
+ +

◆ ASSERT_PRED1

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define ASSERT_PRED1( pred,
 v1 
)   GTEST_PRED1_(pred, v1, GTEST_FATAL_FAILURE_)
+
+ +

Definition at line 14748 of file gtest.h.

+ +
+
+ +

◆ ASSERT_PRED2

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
#define ASSERT_PRED2( pred,
 v1,
 v2 
)   GTEST_PRED2_(pred, v1, v2, GTEST_FATAL_FAILURE_)
+
+ +

Definition at line 14797 of file gtest.h.

+ +
+
+ +

◆ ASSERT_PRED3

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define ASSERT_PRED3( pred,
 v1,
 v2,
 v3 
)   GTEST_PRED3_(pred, v1, v2, v3, GTEST_FATAL_FAILURE_)
+
+ +

Definition at line 14852 of file gtest.h.

+ +
+
+ +

◆ ASSERT_PRED4

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define ASSERT_PRED4( pred,
 v1,
 v2,
 v3,
 v4 
)   GTEST_PRED4_(pred, v1, v2, v3, v4, GTEST_FATAL_FAILURE_)
+
+ +

Definition at line 14913 of file gtest.h.

+ +
+
+ +

◆ ASSERT_PRED5

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define ASSERT_PRED5( pred,
 v1,
 v2,
 v3,
 v4,
 v5 
)   GTEST_PRED5_(pred, v1, v2, v3, v4, v5, GTEST_FATAL_FAILURE_)
+
+ +

Definition at line 14980 of file gtest.h.

+ +
+
+ +

◆ ASSERT_PRED_FORMAT1

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define ASSERT_PRED_FORMAT1( pred_format,
 v1 
)   GTEST_PRED_FORMAT1_(pred_format, v1, GTEST_FATAL_FAILURE_)
+
+ +

Definition at line 14746 of file gtest.h.

+ +
+
+ +

◆ ASSERT_PRED_FORMAT2

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
#define ASSERT_PRED_FORMAT2( pred_format,
 v1,
 v2 
)   GTEST_PRED_FORMAT2_(pred_format, v1, v2, GTEST_FATAL_FAILURE_)
+
+ +

Definition at line 14795 of file gtest.h.

+ +
+
+ +

◆ ASSERT_PRED_FORMAT3

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define ASSERT_PRED_FORMAT3( pred_format,
 v1,
 v2,
 v3 
)   GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, GTEST_FATAL_FAILURE_)
+
+ +

Definition at line 14850 of file gtest.h.

+ +
+
+ +

◆ ASSERT_PRED_FORMAT4

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define ASSERT_PRED_FORMAT4( pred_format,
 v1,
 v2,
 v3,
 v4 
)   GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, GTEST_FATAL_FAILURE_)
+
+ +

Definition at line 14911 of file gtest.h.

+ +
+
+ +

◆ ASSERT_PRED_FORMAT5

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define ASSERT_PRED_FORMAT5( pred_format,
 v1,
 v2,
 v3,
 v4,
 v5 
)   GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, GTEST_FATAL_FAILURE_)
+
+ +

Definition at line 14978 of file gtest.h.

+ +
+
+ +

◆ ASSERT_STRCASEEQ

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define ASSERT_STRCASEEQ( s1,
 s2 
)   ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASEEQ, s1, s2)
+
+ +

Definition at line 16729 of file gtest.h.

+ +
+
+ +

◆ ASSERT_STRCASENE

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define ASSERT_STRCASENE( s1,
 s2 
)   ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASENE, s1, s2)
+
+ +

Definition at line 16731 of file gtest.h.

+ +
+
+ +

◆ ASSERT_STREQ

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define ASSERT_STREQ( s1,
 s2 
)   ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTREQ, s1, s2)
+
+ +

Definition at line 16725 of file gtest.h.

+ +
+
+ +

◆ ASSERT_STRNE

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define ASSERT_STRNE( s1,
 s2 
)   ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRNE, s1, s2)
+
+ +

Definition at line 16727 of file gtest.h.

+ +
+
+ +

◆ ASSERT_THROW

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define ASSERT_THROW( statement,
 expected_exception 
)   GTEST_TEST_THROW_(statement, expected_exception, GTEST_FATAL_FAILURE_)
+
+ +

Definition at line 16574 of file gtest.h.

+ +
+
+ +

◆ ASSERT_TRUE

+ +
+
+ + + + + + + + +
#define ASSERT_TRUE( condition)
+
+Value:
GTEST_TEST_BOOLEAN_(condition, #condition, false, true, \
#define GTEST_FATAL_FAILURE_(message)
Definition: gtest.h:7760
+
#define GTEST_TEST_BOOLEAN_(expression, text, actual, expected, fail)
Definition: gtest.h:7840
+
+

Definition at line 16590 of file gtest.h.

+ +
+
+ +

◆ EXPECT_ANY_THROW

+ +
+
+ + + + + + + + +
#define EXPECT_ANY_THROW( statement)   GTEST_TEST_ANY_THROW_(statement, GTEST_NONFATAL_FAILURE_)
+
+ +

Definition at line 16572 of file gtest.h.

+ +
+
+ +

◆ EXPECT_DEATH_IF_SUPPORTED

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define EXPECT_DEATH_IF_SUPPORTED( statement,
 regex 
)   GTEST_UNSUPPORTED_DEATH_TEST(statement, regex, )
+
+ +

Definition at line 10352 of file gtest.h.

+ +
+
+ +

◆ EXPECT_DOUBLE_EQ

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define EXPECT_DOUBLE_EQ( val1,
 val2 
)
+
+Value:
EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<double>, \
val1, val2)
#define EXPECT_PRED_FORMAT2(pred_format, v1, v2)
Definition: gtest.h:14791
+
+

Definition at line 16752 of file gtest.h.

+ +
+
+ +

◆ EXPECT_EQ

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define EXPECT_EQ( val1,
 val2 
)
+
+Value:
EqHelper<GTEST_IS_NULL_LITERAL_(val1)>::Compare, \
val1, val2)
#define GTEST_IS_NULL_LITERAL_(x)
Definition: gtest.h:6572
+
#define EXPECT_PRED_FORMAT2(pred_format, v1, v2)
Definition: gtest.h:14791
+ +
+

Definition at line 16643 of file gtest.h.

+ +
+
+ +

◆ EXPECT_FALSE

+ +
+
+ + + + + + + + +
#define EXPECT_FALSE( condition)
+
+Value:
GTEST_TEST_BOOLEAN_(!(condition), #condition, true, false, \
#define GTEST_NONFATAL_FAILURE_(message)
Definition: gtest.h:7763
+
#define GTEST_TEST_BOOLEAN_(expression, text, actual, expected, fail)
Definition: gtest.h:7840
+
+

Definition at line 16587 of file gtest.h.

+ +
+
+ +

◆ EXPECT_FLOAT_EQ

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define EXPECT_FLOAT_EQ( val1,
 val2 
)
+
+Value:
EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<float>, \
val1, val2)
#define EXPECT_PRED_FORMAT2(pred_format, v1, v2)
Definition: gtest.h:14791
+
+

Definition at line 16748 of file gtest.h.

+ +
+
+ +

◆ EXPECT_GE

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define EXPECT_GE( val1,
 val2 
)   EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperGE, val1, val2)
+
+ +

Definition at line 16653 of file gtest.h.

+ +
+
+ +

◆ EXPECT_GT

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define EXPECT_GT( val1,
 val2 
)   EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperGT, val1, val2)
+
+ +

Definition at line 16655 of file gtest.h.

+ +
+
+ +

◆ EXPECT_LE

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define EXPECT_LE( val1,
 val2 
)   EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperLE, val1, val2)
+
+ +

Definition at line 16649 of file gtest.h.

+ +
+
+ +

◆ EXPECT_LT

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define EXPECT_LT( val1,
 val2 
)   EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperLT, val1, val2)
+
+ +

Definition at line 16651 of file gtest.h.

+ +
+
+ +

◆ EXPECT_NE

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define EXPECT_NE( val1,
 val2 
)   EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperNE, val1, val2)
+
+ +

Definition at line 16647 of file gtest.h.

+ +
+
+ +

◆ EXPECT_NEAR

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
#define EXPECT_NEAR( val1,
 val2,
 abs_error 
)
+
+Value:
val1, val2, abs_error)
GTEST_API_ AssertionResult DoubleNearPredFormat(const char *expr1, const char *expr2, const char *abs_error_expr, double val1, double val2, double abs_error)
+
#define EXPECT_PRED_FORMAT3(pred_format, v1, v2, v3)
Definition: gtest.h:14846
+
+

Definition at line 16764 of file gtest.h.

+ +
+
+ +

◆ EXPECT_NO_FATAL_FAILURE

+ +
+
+ + + + + + + + +
#define EXPECT_NO_FATAL_FAILURE( statement)   GTEST_TEST_NO_FATAL_FAILURE_(statement, GTEST_NONFATAL_FAILURE_)
+
+ +

Definition at line 16822 of file gtest.h.

+ +
+
+ +

◆ EXPECT_NO_THROW

+ +
+
+ + + + + + + + +
#define EXPECT_NO_THROW( statement)   GTEST_TEST_NO_THROW_(statement, GTEST_NONFATAL_FAILURE_)
+
+ +

Definition at line 16570 of file gtest.h.

+ +
+
+ +

◆ EXPECT_PRED1

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define EXPECT_PRED1( pred,
 v1 
)   GTEST_PRED1_(pred, v1, GTEST_NONFATAL_FAILURE_)
+
+ +

Definition at line 14744 of file gtest.h.

+ +
+
+ +

◆ EXPECT_PRED2

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
#define EXPECT_PRED2( pred,
 v1,
 v2 
)   GTEST_PRED2_(pred, v1, v2, GTEST_NONFATAL_FAILURE_)
+
+ +

Definition at line 14793 of file gtest.h.

+ +
+
+ +

◆ EXPECT_PRED3

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define EXPECT_PRED3( pred,
 v1,
 v2,
 v3 
)   GTEST_PRED3_(pred, v1, v2, v3, GTEST_NONFATAL_FAILURE_)
+
+ +

Definition at line 14848 of file gtest.h.

+ +
+
+ +

◆ EXPECT_PRED4

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define EXPECT_PRED4( pred,
 v1,
 v2,
 v3,
 v4 
)   GTEST_PRED4_(pred, v1, v2, v3, v4, GTEST_NONFATAL_FAILURE_)
+
+ +

Definition at line 14909 of file gtest.h.

+ +
+
+ +

◆ EXPECT_PRED5

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define EXPECT_PRED5( pred,
 v1,
 v2,
 v3,
 v4,
 v5 
)   GTEST_PRED5_(pred, v1, v2, v3, v4, v5, GTEST_NONFATAL_FAILURE_)
+
+ +

Definition at line 14976 of file gtest.h.

+ +
+
+ +

◆ EXPECT_PRED_FORMAT1

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define EXPECT_PRED_FORMAT1( pred_format,
 v1 
)   GTEST_PRED_FORMAT1_(pred_format, v1, GTEST_NONFATAL_FAILURE_)
+
+ +

Definition at line 14742 of file gtest.h.

+ +
+
+ +

◆ EXPECT_PRED_FORMAT2

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
#define EXPECT_PRED_FORMAT2( pred_format,
 v1,
 v2 
)   GTEST_PRED_FORMAT2_(pred_format, v1, v2, GTEST_NONFATAL_FAILURE_)
+
+ +

Definition at line 14791 of file gtest.h.

+ +
+
+ +

◆ EXPECT_PRED_FORMAT3

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define EXPECT_PRED_FORMAT3( pred_format,
 v1,
 v2,
 v3 
)   GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, GTEST_NONFATAL_FAILURE_)
+
+ +

Definition at line 14846 of file gtest.h.

+ +
+
+ +

◆ EXPECT_PRED_FORMAT4

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define EXPECT_PRED_FORMAT4( pred_format,
 v1,
 v2,
 v3,
 v4 
)   GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, GTEST_NONFATAL_FAILURE_)
+
+ +

Definition at line 14907 of file gtest.h.

+ +
+
+ +

◆ EXPECT_PRED_FORMAT5

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define EXPECT_PRED_FORMAT5( pred_format,
 v1,
 v2,
 v3,
 v4,
 v5 
)   GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, GTEST_NONFATAL_FAILURE_)
+
+ +

Definition at line 14974 of file gtest.h.

+ +
+
+ +

◆ EXPECT_STRCASEEQ

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define EXPECT_STRCASEEQ( s1,
 s2 
)   EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASEEQ, s1, s2)
+
+ +

Definition at line 16720 of file gtest.h.

+ +
+
+ +

◆ EXPECT_STRCASENE

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define EXPECT_STRCASENE( s1,
 s2 
)   EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASENE, s1, s2)
+
+ +

Definition at line 16722 of file gtest.h.

+ +
+
+ +

◆ EXPECT_STREQ

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define EXPECT_STREQ( s1,
 s2 
)   EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTREQ, s1, s2)
+
+ +

Definition at line 16716 of file gtest.h.

+ +
+
+ +

◆ EXPECT_STRNE

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define EXPECT_STRNE( s1,
 s2 
)   EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRNE, s1, s2)
+
+ +

Definition at line 16718 of file gtest.h.

+ +
+
+ +

◆ EXPECT_THROW

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define EXPECT_THROW( statement,
 expected_exception 
)   GTEST_TEST_THROW_(statement, expected_exception, GTEST_NONFATAL_FAILURE_)
+
+ +

Definition at line 16568 of file gtest.h.

+ +
+
+ +

◆ EXPECT_TRUE

+ +
+
+ + + + + + + + +
#define EXPECT_TRUE( condition)
+
+Value:
GTEST_TEST_BOOLEAN_(condition, #condition, false, true, \
#define GTEST_NONFATAL_FAILURE_(message)
Definition: gtest.h:7763
+
#define GTEST_TEST_BOOLEAN_(expression, text, actual, expected, fail)
Definition: gtest.h:7840
+
+

Definition at line 16584 of file gtest.h.

+ +
+
+ +

◆ FAIL

+ +
+
+ + + + + + + +
#define FAIL()   GTEST_FAIL()
+
+ +

Definition at line 16547 of file gtest.h.

+ +
+
+ +

◆ FRIEND_TEST

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define FRIEND_TEST( test_case_name,
 test_name 
)   friend class test_case_name##_##test_name##_Test
+
+ +

Definition at line 13802 of file gtest.h.

+ +
+
+ +

◆ GTEST_ADD_REFERENCE_

+ +
+
+ + + + + + + + +
#define GTEST_ADD_REFERENCE_( T)   typename ::testing::internal::AddReference<T>::type
+
+ +

Definition at line 1298 of file gtest.h.

+ +
+
+ +

◆ GTEST_AMBIGUOUS_ELSE_BLOCKER_

+ +
+
+ + + + +
#define GTEST_AMBIGUOUS_ELSE_BLOCKER_   switch (0) case 0: default:
+
+ +

Definition at line 877 of file gtest.h.

+ +
+
+ +

◆ GTEST_API_

+ +
+
+ + + + +
#define GTEST_API_
+
+ +

Definition at line 998 of file gtest.h.

+ +
+
+ +

◆ GTEST_ARRAY_SIZE_

+ +
+
+ + + + + + + + +
#define GTEST_ARRAY_SIZE_( array)   (sizeof(array) / sizeof(array[0]))
+
+ +

Definition at line 1110 of file gtest.h.

+ +
+
+ +

◆ GTEST_ASSERT_

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define GTEST_ASSERT_( expression,
 on_failure 
)
+
+Value:
GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
if (const ::testing::AssertionResult gtest_ar = (expression)) \
; \
else \
on_failure(gtest_ar.failure_message())
+

Definition at line 14703 of file gtest.h.

+ +
+
+ +

◆ GTEST_ASSERT_EQ

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define GTEST_ASSERT_EQ( val1,
 val2 
)
+
+Value:
EqHelper<GTEST_IS_NULL_LITERAL_(val1)>::Compare, \
val1, val2)
#define ASSERT_PRED_FORMAT2(pred_format, v1, v2)
Definition: gtest.h:14795
+
#define GTEST_IS_NULL_LITERAL_(x)
Definition: gtest.h:6572
+ +
+

Definition at line 16658 of file gtest.h.

+ +
+
+ +

◆ GTEST_ASSERT_GE

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define GTEST_ASSERT_GE( val1,
 val2 
)   ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperGE, val1, val2)
+
+ +

Definition at line 16668 of file gtest.h.

+ +
+
+ +

◆ GTEST_ASSERT_GT

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define GTEST_ASSERT_GT( val1,
 val2 
)   ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperGT, val1, val2)
+
+ +

Definition at line 16670 of file gtest.h.

+ +
+
+ +

◆ GTEST_ASSERT_LE

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define GTEST_ASSERT_LE( val1,
 val2 
)   ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperLE, val1, val2)
+
+ +

Definition at line 16664 of file gtest.h.

+ +
+
+ +

◆ GTEST_ASSERT_LT

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define GTEST_ASSERT_LT( val1,
 val2 
)   ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperLT, val1, val2)
+
+ +

Definition at line 16666 of file gtest.h.

+ +
+
+ +

◆ GTEST_ASSERT_NE

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define GTEST_ASSERT_NE( val1,
 val2 
)   ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperNE, val1, val2)
+
+ +

Definition at line 16662 of file gtest.h.

+ +
+
+ +

◆ GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_

+ +
+
+ + + + +
#define GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_
+
+ +

Definition at line 1043 of file gtest.h.

+ +
+
+ +

◆ GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_

+ +
+
+ + + + +
#define GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_
+
+ +

Definition at line 1031 of file gtest.h.

+ +
+
+ +

◆ GTEST_ATTRIBUTE_NO_SANITIZE_THREAD_

+ +
+
+ + + + +
#define GTEST_ATTRIBUTE_NO_SANITIZE_THREAD_
+
+ +

Definition at line 1055 of file gtest.h.

+ +
+
+ +

◆ GTEST_ATTRIBUTE_PRINTF_

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define GTEST_ATTRIBUTE_PRINTF_( string_index,
 first_to_check 
)
+
+ +

Definition at line 916 of file gtest.h.

+ +
+
+ +

◆ GTEST_ATTRIBUTE_UNUSED_

+ +
+
+ + + + +
#define GTEST_ATTRIBUTE_UNUSED_
+
+ +

Definition at line 899 of file gtest.h.

+ +
+
+ +

◆ GTEST_CHECK_

+ +
+
+ + + + + + + + +
#define GTEST_CHECK_( condition)
+
+Value:
GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
if (::testing::internal::IsTrue(condition)) \
; \
GTEST_LOG_(FATAL) << "Condition " #condition " failed. "
GTEST_API_ bool IsTrue(bool condition)
+
#define GTEST_LOG_(severity)
Definition: gtest.h:1246
+
+

Definition at line 1270 of file gtest.h.

+ +
+
+ +

◆ GTEST_CHECK_POSIX_SUCCESS_

+ +
+
+ + + + + + + + +
#define GTEST_CHECK_POSIX_SUCCESS_( posix_call)
+
+Value:
if (const int gtest_error = (posix_call)) \
GTEST_LOG_(FATAL) << #posix_call << "failed with error " \
<< gtest_error
+

Definition at line 1283 of file gtest.h.

+ +
+
+ +

◆ GTEST_COMPILE_ASSERT_

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define GTEST_COMPILE_ASSERT_( expr,
 msg 
)   static_assert(expr, #msg)
+
+ +

Definition at line 1086 of file gtest.h.

+ +
+
+ +

◆ GTEST_CONCAT_TOKEN_

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define GTEST_CONCAT_TOKEN_( foo,
 bar 
)   GTEST_CONCAT_TOKEN_IMPL_(foo, bar)
+
+ +

Definition at line 6510 of file gtest.h.

+ +
+
+ +

◆ GTEST_CONCAT_TOKEN_IMPL_

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define GTEST_CONCAT_TOKEN_IMPL_( foo,
 bar 
)   foo ## bar
+
+ +

Definition at line 6511 of file gtest.h.

+ +
+
+ +

◆ GTEST_DECLARE_bool_

+ +
+
+ + + + + + + + +
#define GTEST_DECLARE_bool_( name)   GTEST_API_ extern bool GTEST_FLAG(name)
+
+ +

Definition at line 2496 of file gtest.h.

+ +
+
+ +

◆ GTEST_DECLARE_int32_

+ +
+
+ + + + + + + + +
#define GTEST_DECLARE_int32_( name)   GTEST_API_ extern ::testing::internal::Int32 GTEST_FLAG(name)
+
+ +

Definition at line 2497 of file gtest.h.

+ +
+
+ +

◆ GTEST_DECLARE_STATIC_MUTEX_

+ +
+
+ + + + + + + + +
#define GTEST_DECLARE_STATIC_MUTEX_( mutex)   extern ::testing::internal::Mutex mutex
+
+ +

Definition at line 2147 of file gtest.h.

+ +
+
+ +

◆ GTEST_DECLARE_string_

+ +
+
+ + + + + + + + +
#define GTEST_DECLARE_string_( name)   GTEST_API_ extern ::std::string GTEST_FLAG(name)
+
+ +

Definition at line 2499 of file gtest.h.

+ +
+
+ +

◆ GTEST_DEFAULT_DEATH_TEST_STYLE

+ +
+
+ + + + +
#define GTEST_DEFAULT_DEATH_TEST_STYLE   "fast"
+
+ +

Definition at line 1002 of file gtest.h.

+ +
+
+ +

◆ GTEST_DEFINE_bool_

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
#define GTEST_DEFINE_bool_( name,
 default_val,
 doc 
)   GTEST_API_ bool GTEST_FLAG(name) = (default_val)
+
+ +

Definition at line 2503 of file gtest.h.

+ +
+
+ +

◆ GTEST_DEFINE_int32_

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
#define GTEST_DEFINE_int32_( name,
 default_val,
 doc 
)   GTEST_API_ ::testing::internal::Int32 GTEST_FLAG(name) = (default_val)
+
+ +

Definition at line 2505 of file gtest.h.

+ +
+
+ +

◆ GTEST_DEFINE_STATIC_MUTEX_

+ +
+
+ + + + + + + + +
#define GTEST_DEFINE_STATIC_MUTEX_( mutex)   ::testing::internal::Mutex mutex
+
+ +

Definition at line 2150 of file gtest.h.

+ +
+
+ +

◆ GTEST_DEFINE_string_

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
#define GTEST_DEFINE_string_( name,
 default_val,
 doc 
)   GTEST_API_ ::std::string GTEST_FLAG(name) = (default_val)
+
+ +

Definition at line 2507 of file gtest.h.

+ +
+
+ +

◆ GTEST_DEV_EMAIL_

+ +
+
+ + + + +
#define GTEST_DEV_EMAIL_   "googletestframework@@googlegroups.com"
+
+ +

Definition at line 513 of file gtest.h.

+ +
+
+ +

◆ GTEST_DISABLE_MSC_DEPRECATED_POP_

+ +
+
+ + + + + + + +
#define GTEST_DISABLE_MSC_DEPRECATED_POP_()   GTEST_DISABLE_MSC_WARNINGS_POP_()
+
+ +

Definition at line 561 of file gtest.h.

+ +
+
+ +

◆ GTEST_DISABLE_MSC_DEPRECATED_PUSH_

+ +
+
+ + + + + + + +
#define GTEST_DISABLE_MSC_DEPRECATED_PUSH_()   GTEST_DISABLE_MSC_WARNINGS_PUSH_(4996)
+
+ +

Definition at line 559 of file gtest.h.

+ +
+
+ +

◆ GTEST_DISABLE_MSC_WARNINGS_POP_

+ +
+
+ + + + + + + +
GTEST_DISABLE_MSC_WARNINGS_POP_()
+
+ +

Definition at line 546 of file gtest.h.

+ +
+
+ +

◆ GTEST_DISABLE_MSC_WARNINGS_PUSH_

+ +
+
+ + + + + + + + +
#define GTEST_DISABLE_MSC_WARNINGS_PUSH_( warnings)
+
+ +

Definition at line 545 of file gtest.h.

+ +
+
+ +

◆ GTEST_DISALLOW_ASSIGN_

+ +
+
+ + + + + + + + +
#define GTEST_DISALLOW_ASSIGN_( type)   void operator=(type const &) = delete
+
+ +

Definition at line 922 of file gtest.h.

+ +
+
+ +

◆ GTEST_DISALLOW_COPY_AND_ASSIGN_

+ +
+
+ + + + + + + + +
#define GTEST_DISALLOW_COPY_AND_ASSIGN_( type)
+
+Value:
type(type const &) = delete; \
GTEST_DISALLOW_ASSIGN_(type)
+

Definition at line 927 of file gtest.h.

+ +
+
+ +

◆ GTEST_EXCLUSIVE_LOCK_REQUIRED_

+ +
+
+ + + + + + + + +
#define GTEST_EXCLUSIVE_LOCK_REQUIRED_( locks)
+
+ +

Definition at line 2514 of file gtest.h.

+ +
+
+ +

◆ GTEST_FAIL

+ +
+
+ + + + + + + +
#define GTEST_FAIL()   GTEST_FATAL_FAILURE_("Failed")
+
+ +

Definition at line 16542 of file gtest.h.

+ +
+
+ +

◆ GTEST_FATAL_FAILURE_

+ +
+
+ + + + + + + + +
#define GTEST_FATAL_FAILURE_( message)   return GTEST_MESSAGE_(message, ::testing::TestPartResult::kFatalFailure)
+
+ +

Definition at line 7760 of file gtest.h.

+ +
+
+ +

◆ GTEST_FLAG

+ +
+
+ + + + + + + + +
#define GTEST_FLAG( name)   FLAGS_gtest_##name
+
+ +

Definition at line 2485 of file gtest.h.

+ +
+
+ +

◆ GTEST_FLAG_PREFIX_

+ +
+
+ + + + +
#define GTEST_FLAG_PREFIX_   "gtest_"
+
+ +

Definition at line 514 of file gtest.h.

+ +
+
+ +

◆ GTEST_FLAG_PREFIX_DASH_

+ +
+
+ + + + +
#define GTEST_FLAG_PREFIX_DASH_   "gtest-"
+
+ +

Definition at line 515 of file gtest.h.

+ +
+
+ +

◆ GTEST_FLAG_PREFIX_UPPER_

+ +
+
+ + + + +
#define GTEST_FLAG_PREFIX_UPPER_   "GTEST_"
+
+ +

Definition at line 516 of file gtest.h.

+ +
+
+ +

◆ GTEST_FLAG_SAVER_

+ +
+
+ + + + +
#define GTEST_FLAG_SAVER_   ::testing::internal::GTestFlagSaver
+
+ +

Definition at line 2493 of file gtest.h.

+ +
+
+ +

◆ GTEST_HAS_ALT_PATH_SEP_

+ +
+
+ + + + +
#define GTEST_HAS_ALT_PATH_SEP_   0
+
+ +

Definition at line 2222 of file gtest.h.

+ +
+
+ +

◆ GTEST_HAS_CLONE

+ +
+
+ + + + +
#define GTEST_HAS_CLONE   0
+
+ +

Definition at line 817 of file gtest.h.

+ +
+
+ +

◆ GTEST_HAS_CXXABI_H_

+ +
+
+ + + + +
#define GTEST_HAS_CXXABI_H_   0
+
+ +

Definition at line 1017 of file gtest.h.

+ +
+
+ +

◆ GTEST_HAS_EXCEPTIONS

+ +
+
+ + + + +
#define GTEST_HAS_EXCEPTIONS   0
+
+ +

Definition at line 675 of file gtest.h.

+ +
+
+ +

◆ GTEST_HAS_GLOBAL_STRING

+ +
+
+ + + + +
#define GTEST_HAS_GLOBAL_STRING   0
+
+ +

Definition at line 689 of file gtest.h.

+ +
+
+ +

◆ GTEST_HAS_GLOBAL_WSTRING

+ +
+
+ + + + +
#define GTEST_HAS_GLOBAL_WSTRING   (GTEST_HAS_STD_WSTRING && GTEST_HAS_GLOBAL_STRING)
+
+ +

Definition at line 706 of file gtest.h.

+ +
+
+ +

◆ GTEST_HAS_POSIX_RE

+ +
+
+ + + + +
#define GTEST_HAS_POSIX_RE   (!GTEST_OS_WINDOWS)
+
+ +

Definition at line 603 of file gtest.h.

+ +
+
+ +

◆ GTEST_HAS_PTHREAD

+ +
+
+ + + + +
#define GTEST_HAS_PTHREAD
+
+Value:
(GTEST_OS_LINUX || GTEST_OS_MAC || GTEST_OS_HPUX || GTEST_OS_QNX || \
GTEST_OS_FREEBSD || GTEST_OS_NACL || GTEST_OS_NETBSD || GTEST_OS_FUCHSIA)
+

Definition at line 780 of file gtest.h.

+ +
+
+ +

◆ GTEST_HAS_RTTI

+ +
+
+ + + + +
#define GTEST_HAS_RTTI   1
+
+ +

Definition at line 761 of file gtest.h.

+ +
+
+ +

◆ GTEST_HAS_SEH

+ +
+
+ + + + +
#define GTEST_HAS_SEH   0
+
+ +

Definition at line 966 of file gtest.h.

+ +
+
+ +

◆ GTEST_HAS_STD_STRING

+ +
+
+ + + + +
#define GTEST_HAS_STD_STRING   1
+
+ +

Definition at line 682 of file gtest.h.

+ +
+
+ +

◆ GTEST_HAS_STD_WSTRING

+ +
+
+ + + + +
#define GTEST_HAS_STD_WSTRING   (!(GTEST_OS_LINUX_ANDROID || GTEST_OS_CYGWIN || GTEST_OS_SOLARIS))
+
+ +

Definition at line 698 of file gtest.h.

+ +
+
+ +

◆ GTEST_HAS_STREAM_REDIRECTION

+ +
+
+ + + + +
#define GTEST_HAS_STREAM_REDIRECTION   1
+
+ +

Definition at line 830 of file gtest.h.

+ +
+
+ +

◆ GTEST_IMPL_CMP_HELPER_

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define GTEST_IMPL_CMP_HELPER_( op_name,
 op 
)
+
+Value:
template <typename T1, typename T2>\
AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \
const T1& val1, const T2& val2) {\
if (val1 op val2) {\
return AssertionSuccess();\
} else {\
return CmpHelperOpFailure(expr1, expr2, val1, val2, #op);\
}\
}\
GTEST_API_ AssertionResult CmpHelper##op_name(\
const char* expr1, const char* expr2, BiggestInt val1, BiggestInt val2)
AssertionResult CmpHelperOpFailure(const char *expr1, const char *expr2, const T1 &val1, const T2 &val2, const char *op)
Definition: gtest.h:16206
+
long long BiggestInt
Definition: gtest.h:2223
+
+

Definition at line 16226 of file gtest.h.

+ +
+
+ +

◆ GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_

+ +
+
+ + + + + + + + +
#define GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_( CharType)
+
+Value:
template <typename OtherOperand> \
class FormatForComparison<CharType*, OtherOperand> { \
public: \
static ::std::string Format(CharType* value) { \
return ::testing::PrintToString(static_cast<const void*>(value)); \
} \
}
::std::string PrintToString(const T &value)
Definition: gtest.h:8969
+
::std::string string
Definition: gtest.h:1115
+
+

Definition at line 8359 of file gtest.h.

+ +
+
+ +

◆ GTEST_IMPL_FORMAT_C_STRING_AS_STRING_

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define GTEST_IMPL_FORMAT_C_STRING_AS_STRING_( CharType,
 OtherStringType 
)
+
+Value:
template <> \
class FormatForComparison<CharType*, OtherStringType> { \
public: \
static ::std::string Format(CharType* value) { \
} \
}
::std::string PrintToString(const T &value)
Definition: gtest.h:8969
+
::std::string string
Definition: gtest.h:1115
+
+

Definition at line 8378 of file gtest.h.

+ +
+
+ +

◆ GTEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_

+ +
+
+ + + + +
#define GTEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_
+
+ +

Definition at line 7948 of file gtest.h.

+ +
+
+ +

◆ GTEST_INCLUDE_GTEST_GTEST_MATCHERS_H_

+ +
+
+ + + + +
#define GTEST_INCLUDE_GTEST_GTEST_MATCHERS_H_
+
+ +

Definition at line 8027 of file gtest.h.

+ +
+
+ +

◆ GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_

+ +
+
+ + + + +
#define GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_
+
+ +

Definition at line 2603 of file gtest.h.

+ +
+
+ +

◆ GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_

+ +
+
+ + + + +
#define GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
+
+ +

Definition at line 10401 of file gtest.h.

+ +
+
+ +

◆ GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_

+ +
+
+ + + + +
#define GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_
+
+ +

Definition at line 14666 of file gtest.h.

+ +
+
+ +

◆ GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_

+ +
+
+ + + + +
#define GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_
+
+ +

Definition at line 8133 of file gtest.h.

+ +
+
+ +

◆ GTEST_INCLUDE_GTEST_GTEST_PROD_H_

+ +
+
+ + + + +
#define GTEST_INCLUDE_GTEST_GTEST_PROD_H_
+
+ +

Definition at line 13779 of file gtest.h.

+ +
+
+ +

◆ GTEST_INCLUDE_GTEST_GTEST_TEST_PART_H_

+ +
+
+ + + + +
#define GTEST_INCLUDE_GTEST_GTEST_TEST_PART_H_
+
+ +

Definition at line 13838 of file gtest.h.

+ +
+
+ +

◆ GTEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_

+ +
+
+ + + + +
#define GTEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_
+
+ +
+
+ +

◆ GTEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_PORT_H_

+ +
+
+ + + + +
#define GTEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_PORT_H_
+
+ +

Definition at line 508 of file gtest.h.

+ +
+
+ +

◆ GTEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_PRINTERS_H_

+ +
+
+ + + + +
#define GTEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_PRINTERS_H_
+
+ +

Definition at line 9019 of file gtest.h.

+ +
+
+ +

◆ GTEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_

+ +
+
+ + + + +
#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_
+
+ +

Definition at line 7986 of file gtest.h.

+ +
+
+ +

◆ GTEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_

+ +
+
+ + + + +
#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_
+
+ +
+
+ +

◆ GTEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_

+ +
+
+ + + + +
#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_
+
+ +

Definition at line 97 of file gtest.h.

+ +
+
+ +

◆ GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_

+ +
+
+ + + + +
#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_
+
+ +

Definition at line 11353 of file gtest.h.

+ +
+
+ +

◆ GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_

+ +
+
+ + + + +
#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_
+
+ +

Definition at line 10578 of file gtest.h.

+ +
+
+ +

◆ GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_ARCH_H_

+ +
+
+ + + + +
#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_ARCH_H_
+
+ +

Definition at line 408 of file gtest.h.

+ +
+
+ +

◆ GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_

+ +
+
+ + + + +
#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_
+
+ +

Definition at line 142 of file gtest.h.

+ +
+
+ +

◆ GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_

+ +
+
+ + + + +
#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_
+
+ +
+
+ +

◆ GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_

+ +
+
+ + + + +
#define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_
+
+ +
+
+ +

◆ GTEST_INIT_GOOGLE_TEST_NAME_

+ +
+
+ + + + +
#define GTEST_INIT_GOOGLE_TEST_NAME_   "testing::InitGoogleTest"
+
+ +

Definition at line 522 of file gtest.h.

+ +
+
+ +

◆ GTEST_INTENTIONAL_CONST_COND_POP_

+ +
+
+ + + + + + + +
#define GTEST_INTENTIONAL_CONST_COND_POP_()   GTEST_DISABLE_MSC_WARNINGS_POP_()
+
+ +

Definition at line 952 of file gtest.h.

+ +
+
+ +

◆ GTEST_INTENTIONAL_CONST_COND_PUSH_

+ +
+
+ + + + + + + +
#define GTEST_INTENTIONAL_CONST_COND_PUSH_()   GTEST_DISABLE_MSC_WARNINGS_PUSH_(4127)
+
+ +

Definition at line 950 of file gtest.h.

+ +
+
+ +

◆ GTEST_INTERNAL_DEPRECATED

+ +
+
+ + + + + + + + +
#define GTEST_INTERNAL_DEPRECATED( message)
+
+ +

Definition at line 7907 of file gtest.h.

+ +
+
+ +

◆ GTEST_IS_NULL_LITERAL_

+ +
+
+ + + + + + + + +
#define GTEST_IS_NULL_LITERAL_( x)   decltype(::testing::internal::IsNullLiteralHelper(x))::value
+
+ +

Definition at line 6572 of file gtest.h.

+ +
+
+ +

◆ GTEST_IS_THREADSAFE

+ +
+
+ + + + +
#define GTEST_IS_THREADSAFE
+
+Value:
(GTEST_HAS_MUTEX_AND_THREAD_LOCAL_ || \
(GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_PHONE && !GTEST_OS_WINDOWS_RT) || \
#define GTEST_HAS_PTHREAD
Definition: gtest.h:780
+
+

Definition at line 973 of file gtest.h.

+ +
+
+ +

◆ GTEST_LOCK_EXCLUDED_

+ +
+
+ + + + + + + + +
#define GTEST_LOCK_EXCLUDED_( locks)
+
+ +

Definition at line 2515 of file gtest.h.

+ +
+
+ +

◆ GTEST_LOG_

+ +
+
+ + + + + + + + +
#define GTEST_LOG_( severity)
+
+Value:
::testing::internal::GTestLog(::testing::internal::GTEST_##severity, \
__FILE__, __LINE__).GetStream()
+
::std::ostream & GetStream()
Definition: gtest.h:1236
+
+

Definition at line 1246 of file gtest.h.

+ +
+
+ +

◆ GTEST_MESSAGE_

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define GTEST_MESSAGE_( message,
 result_type 
)   GTEST_MESSAGE_AT_(__FILE__, __LINE__, message, result_type)
+
+ +

Definition at line 7757 of file gtest.h.

+ +
+
+ +

◆ GTEST_MESSAGE_AT_

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define GTEST_MESSAGE_AT_( file,
 line,
 message,
 result_type 
)
+
+Value: +

Definition at line 7753 of file gtest.h.

+ +
+
+ +

◆ GTEST_MUST_USE_RESULT_

+ +
+
+ + + + +
#define GTEST_MUST_USE_RESULT_
+
+ +

Definition at line 939 of file gtest.h.

+ +
+
+ +

◆ GTEST_NAME_

+ +
+
+ + + + +
#define GTEST_NAME_   "Google Test"
+
+ +

Definition at line 517 of file gtest.h.

+ +
+
+ +

◆ GTEST_NO_INLINE_

+ +
+
+ + + + +
#define GTEST_NO_INLINE_
+
+ +

Definition at line 1009 of file gtest.h.

+ +
+
+ +

◆ GTEST_NONFATAL_FAILURE_

+ +
+
+ + + + + + + + +
#define GTEST_NONFATAL_FAILURE_( message)   GTEST_MESSAGE_(message, ::testing::TestPartResult::kNonFatalFailure)
+
+ +

Definition at line 7763 of file gtest.h.

+ +
+
+ +

◆ GTEST_PATH_SEP_

+ +
+
+ + + + +
#define GTEST_PATH_SEP_   "/"
+
+ +

Definition at line 2221 of file gtest.h.

+ +
+
+ +

◆ GTEST_PRED1_

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
#define GTEST_PRED1_( pred,
 v1,
 on_failure 
)
+
+Value:
#v1, \
pred, \
v1), on_failure)
AssertionResult AssertPred1Helper(const char *pred_text, const char *e1, Pred pred, const T1 &v1)
Definition: gtest.h:14715
+
#define GTEST_ASSERT_(expression, on_failure)
Definition: gtest.h:14703
+
+

Definition at line 14735 of file gtest.h.

+ +
+
+ +

◆ GTEST_PRED2_

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define GTEST_PRED2_( pred,
 v1,
 v2,
 on_failure 
)
+
+Value:
#v1, \
#v2, \
pred, \
v1, \
v2), on_failure)
AssertionResult AssertPred2Helper(const char *pred_text, const char *e1, const char *e2, Pred pred, const T1 &v1, const T2 &v2)
Definition: gtest.h:14758
+
#define GTEST_ASSERT_(expression, on_failure)
Definition: gtest.h:14703
+
+

Definition at line 14782 of file gtest.h.

+ +
+
+ +

◆ GTEST_PRED3_

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define GTEST_PRED3_( pred,
 v1,
 v2,
 v3,
 on_failure 
)
+
+Value:
#v1, \
#v2, \
#v3, \
pred, \
v1, \
v2, \
v3), on_failure)
AssertionResult AssertPred3Helper(const char *pred_text, const char *e1, const char *e2, const char *e3, Pred pred, const T1 &v1, const T2 &v2, const T3 &v3)
Definition: gtest.h:14808
+
#define GTEST_ASSERT_(expression, on_failure)
Definition: gtest.h:14703
+
+

Definition at line 14835 of file gtest.h.

+ +
+
+ +

◆ GTEST_PRED4_

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define GTEST_PRED4_( pred,
 v1,
 v2,
 v3,
 v4,
 on_failure 
)
+
+Value:
#v1, \
#v2, \
#v3, \
#v4, \
pred, \
v1, \
v2, \
v3, \
v4), on_failure)
#define GTEST_ASSERT_(expression, on_failure)
Definition: gtest.h:14703
+
AssertionResult AssertPred4Helper(const char *pred_text, const char *e1, const char *e2, const char *e3, const char *e4, Pred pred, const T1 &v1, const T2 &v2, const T3 &v3, const T4 &v4)
Definition: gtest.h:14864
+
+

Definition at line 14894 of file gtest.h.

+ +
+
+ +

◆ GTEST_PRED5_

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define GTEST_PRED5_( pred,
 v1,
 v2,
 v3,
 v4,
 v5,
 on_failure 
)
+
+Value:
#v1, \
#v2, \
#v3, \
#v4, \
#v5, \
pred, \
v1, \
v2, \
v3, \
v4, \
v5), on_failure)
AssertionResult AssertPred5Helper(const char *pred_text, const char *e1, const char *e2, const char *e3, const char *e4, const char *e5, Pred pred, const T1 &v1, const T2 &v2, const T3 &v3, const T4 &v4, const T5 &v5)
Definition: gtest.h:14926
+
#define GTEST_ASSERT_(expression, on_failure)
Definition: gtest.h:14703
+
+

Definition at line 14959 of file gtest.h.

+ +
+
+ +

◆ GTEST_PRED_FORMAT1_

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
#define GTEST_PRED_FORMAT1_( pred_format,
 v1,
 on_failure 
)
+
+Value:
GTEST_ASSERT_(pred_format(#v1, v1), \
on_failure)
#define GTEST_ASSERT_(expression, on_failure)
Definition: gtest.h:14703
+
+

Definition at line 14729 of file gtest.h.

+ +
+
+ +

◆ GTEST_PRED_FORMAT2_

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define GTEST_PRED_FORMAT2_( pred_format,
 v1,
 v2,
 on_failure 
)
+
+Value:
GTEST_ASSERT_(pred_format(#v1, #v2, v1, v2), \
on_failure)
#define GTEST_ASSERT_(expression, on_failure)
Definition: gtest.h:14703
+
+

Definition at line 14776 of file gtest.h.

+ +
+
+ +

◆ GTEST_PRED_FORMAT3_

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define GTEST_PRED_FORMAT3_( pred_format,
 v1,
 v2,
 v3,
 on_failure 
)
+
+Value:
GTEST_ASSERT_(pred_format(#v1, #v2, #v3, v1, v2, v3), \
on_failure)
#define GTEST_ASSERT_(expression, on_failure)
Definition: gtest.h:14703
+
+

Definition at line 14829 of file gtest.h.

+ +
+
+ +

◆ GTEST_PRED_FORMAT4_

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define GTEST_PRED_FORMAT4_( pred_format,
 v1,
 v2,
 v3,
 v4,
 on_failure 
)
+
+Value:
GTEST_ASSERT_(pred_format(#v1, #v2, #v3, #v4, v1, v2, v3, v4), \
on_failure)
#define GTEST_ASSERT_(expression, on_failure)
Definition: gtest.h:14703
+
+

Definition at line 14888 of file gtest.h.

+ +
+
+ +

◆ GTEST_PRED_FORMAT5_

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define GTEST_PRED_FORMAT5_( pred_format,
 v1,
 v2,
 v3,
 v4,
 v5,
 on_failure 
)
+
+Value:
GTEST_ASSERT_(pred_format(#v1, #v2, #v3, #v4, #v5, v1, v2, v3, v4, v5), \
on_failure)
#define GTEST_ASSERT_(expression, on_failure)
Definition: gtest.h:14703
+
+

Definition at line 14953 of file gtest.h.

+ +
+
+ +

◆ GTEST_PROJECT_URL_

+ +
+
+ + + + +
#define GTEST_PROJECT_URL_   "https://github.com/google/googletest/"
+
+ +

Definition at line 518 of file gtest.h.

+ +
+
+ +

◆ GTEST_REFERENCE_TO_CONST_

+ +
+
+ + + + + + + + +
#define GTEST_REFERENCE_TO_CONST_( T)   typename ::testing::internal::ConstRef<T>::type
+
+ +

Definition at line 1318 of file gtest.h.

+ +
+
+ +

◆ GTEST_REMOVE_CONST_

+ +
+
+ + + + + + + + +
#define GTEST_REMOVE_CONST_( T)   typename ::testing::internal::RemoveConst<T>::type
+
+ +

Definition at line 7333 of file gtest.h.

+ +
+
+ +

◆ GTEST_REMOVE_REFERENCE_

+ +
+
+ + + + + + + + +
#define GTEST_REMOVE_REFERENCE_( T)   typename ::testing::internal::RemoveReference<T>::type
+
+ +

Definition at line 7312 of file gtest.h.

+ +
+
+ +

◆ GTEST_REMOVE_REFERENCE_AND_CONST_

+ +
+
+ + + + + + + + +
#define GTEST_REMOVE_REFERENCE_AND_CONST_( T)   GTEST_REMOVE_CONST_(GTEST_REMOVE_REFERENCE_(T))
+
+ +

Definition at line 7337 of file gtest.h.

+ +
+
+ +

◆ GTEST_SKIP

+ +
+
+ + + + + + + +
#define GTEST_SKIP()   GTEST_SKIP_("Skipped")
+
+ +

Definition at line 16513 of file gtest.h.

+ +
+
+ +

◆ GTEST_SKIP_

+ +
+
+ + + + + + + + +
#define GTEST_SKIP_( message)   return GTEST_MESSAGE_(message, ::testing::TestPartResult::kSkip)
+
+ +

Definition at line 7769 of file gtest.h.

+ +
+
+ +

◆ GTEST_SNPRINTF_

+ +
+
+ + + + +
#define GTEST_SNPRINTF_   snprintf
+
+ +

Definition at line 2410 of file gtest.h.

+ +
+
+ +

◆ GTEST_STRINGIFY_

+ +
+
+ + + + + + + + +
#define GTEST_STRINGIFY_( name)   #name
+
+ +

Definition at line 6514 of file gtest.h.

+ +
+
+ +

◆ GTEST_SUCCEED

+ +
+
+ + + + + + + +
#define GTEST_SUCCEED()   GTEST_SUCCESS_("Succeeded")
+
+ +

Definition at line 16551 of file gtest.h.

+ +
+
+ +

◆ GTEST_SUCCESS_

+ +
+
+ + + + + + + + +
#define GTEST_SUCCESS_( message)   GTEST_MESSAGE_(message, ::testing::TestPartResult::kSuccess)
+
+ +

Definition at line 7766 of file gtest.h.

+ +
+
+ +

◆ GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_

+ +
+
+ + + + + + + + +
#define GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_( statement)   if (::testing::internal::AlwaysTrue()) { statement; }
+
+ +

Definition at line 7775 of file gtest.h.

+ +
+
+ +

◆ GTEST_TEST

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define GTEST_TEST( test_suite_name,
 test_name 
)
+
+Value:
GTEST_TEST_(test_suite_name, test_name, ::testing::Test, \
#define GTEST_TEST_(test_suite_name, test_name, parent_class, parent_id)
Definition: gtest.h:7868
+ +
GTEST_API_ TypeId GetTestTypeId()
+
+

Definition at line 16957 of file gtest.h.

+ +
+
+ +

◆ GTEST_TEST_

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define GTEST_TEST_( test_suite_name,
 test_name,
 parent_class,
 parent_id 
)
+
+Value:
class GTEST_TEST_CLASS_NAME_(test_suite_name, test_name) \
: public parent_class { \
public: \
GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)() {} \
\
private: \
virtual void TestBody(); \
static ::testing::TestInfo* const test_info_ GTEST_ATTRIBUTE_UNUSED_; \
GTEST_DISALLOW_COPY_AND_ASSIGN_(GTEST_TEST_CLASS_NAME_(test_suite_name, \
test_name)); \
}; \
\
::testing::TestInfo* const GTEST_TEST_CLASS_NAME_(test_suite_name, \
test_name)::test_info_ = \
#test_suite_name, #test_name, nullptr, nullptr, \
::testing::internal::CodeLocation(__FILE__, __LINE__), (parent_id), \
::testing::internal::SuiteApiResolver< \
parent_class>::GetSetUpCaseOrSuite(), \
::testing::internal::SuiteApiResolver< \
parent_class>::GetTearDownCaseOrSuite(), \
new ::testing::internal::TestFactoryImpl<GTEST_TEST_CLASS_NAME_( \
test_suite_name, test_name)>); \
void GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)::TestBody()
+ +
#define GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)
Definition: gtest.h:7864
+
GTEST_API_ TestInfo * MakeAndRegisterTestInfo(const char *test_suite_name, const char *name, const char *type_param, const char *value_param, CodeLocation code_location, TypeId fixture_class_id, SetUpTestSuiteFunc set_up_tc, TearDownTestSuiteFunc tear_down_tc, TestFactoryBase *factory)
+
#define GTEST_ATTRIBUTE_UNUSED_
Definition: gtest.h:899
+
+

Definition at line 7868 of file gtest.h.

+ +
+
+ +

◆ GTEST_TEST_ANY_THROW_

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define GTEST_TEST_ANY_THROW_( statement,
 fail 
)
+
+Value:
GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
bool gtest_caught_any = false; \
try { \
GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
} \
catch (...) { \
gtest_caught_any = true; \
} \
if (!gtest_caught_any) { \
goto GTEST_CONCAT_TOKEN_(gtest_label_testanythrow_, __LINE__); \
} \
GTEST_CONCAT_TOKEN_(gtest_label_testanythrow_, __LINE__): \
fail("Expected: " #statement " throws an exception.\n" \
" Actual: it doesn't.")
GTEST_API_ bool AlwaysTrue()
+
#define GTEST_CONCAT_TOKEN_(foo, bar)
Definition: gtest.h:6510
+
+

Definition at line 7818 of file gtest.h.

+ +
+
+ +

◆ GTEST_TEST_BOOLEAN_

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define GTEST_TEST_BOOLEAN_( expression,
 text,
 actual,
 expected,
 fail 
)
+
+Value:
GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
if (const ::testing::AssertionResult gtest_ar_ = \
::testing::AssertionResult(expression)) \
; \
else \
gtest_ar_, text, #actual, #expected).c_str())
GTEST_API_ std::string GetBoolAssertionFailureMessage(const AssertionResult &assertion_result, const char *expression_text, const char *actual_predicate_value, const char *expected_predicate_value)
+
+

Definition at line 7840 of file gtest.h.

+ +
+
+ +

◆ GTEST_TEST_CLASS_NAME_

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define GTEST_TEST_CLASS_NAME_( test_suite_name,
 test_name 
)   test_suite_name##_##test_name##_Test
+
+ +

Definition at line 7864 of file gtest.h.

+ +
+
+ +

◆ GTEST_TEST_NO_FATAL_FAILURE_

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define GTEST_TEST_NO_FATAL_FAILURE_( statement,
 fail 
)
+
+Value:
GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
::testing::internal::HasNewFatalFailureHelper gtest_fatal_failure_checker; \
GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
if (gtest_fatal_failure_checker.has_new_fatal_failure()) { \
goto GTEST_CONCAT_TOKEN_(gtest_label_testnofatal_, __LINE__); \
} \
GTEST_CONCAT_TOKEN_(gtest_label_testnofatal_, __LINE__): \
fail("Expected: " #statement " doesn't generate new fatal " \
"failures in the current thread.\n" \
" Actual: it does.")
GTEST_API_ bool AlwaysTrue()
+
#define GTEST_CONCAT_TOKEN_(foo, bar)
Definition: gtest.h:6510
+
+

Definition at line 7849 of file gtest.h.

+ +
+
+ +

◆ GTEST_TEST_NO_THROW_

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define GTEST_TEST_NO_THROW_( statement,
 fail 
)
+
+Value:
GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
try { \
GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
} \
catch (...) { \
goto GTEST_CONCAT_TOKEN_(gtest_label_testnothrow_, __LINE__); \
} \
GTEST_CONCAT_TOKEN_(gtest_label_testnothrow_, __LINE__): \
fail("Expected: " #statement " doesn't throw an exception.\n" \
" Actual: it throws.")
GTEST_API_ bool AlwaysTrue()
+
#define GTEST_CONCAT_TOKEN_(foo, bar)
Definition: gtest.h:6510
+
+

Definition at line 7804 of file gtest.h.

+ +
+
+ +

◆ GTEST_TEST_THROW_

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
#define GTEST_TEST_THROW_( statement,
 expected_exception,
 fail 
)
+
+Value:
GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
if (::testing::internal::ConstCharPtr gtest_msg = "") { \
bool gtest_caught_expected = false; \
try { \
GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
} \
catch (expected_exception const&) { \
gtest_caught_expected = true; \
} \
catch (...) { \
gtest_msg.value = \
"Expected: " #statement " throws an exception of type " \
#expected_exception ".\n Actual: it throws a different type."; \
goto GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__); \
} \
if (!gtest_caught_expected) { \
gtest_msg.value = \
"Expected: " #statement " throws an exception of type " \
#expected_exception ".\n Actual: it throws nothing."; \
goto GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__); \
} \
} else \
GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__): \
fail(gtest_msg.value)
+
+

Definition at line 7778 of file gtest.h.

+ +
+
+ +

◆ GTEST_UNSUPPORTED_DEATH_TEST

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
#define GTEST_UNSUPPORTED_DEATH_TEST( statement,
 regex,
 terminator 
)
+
+Value:
GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
GTEST_LOG_(WARNING) \
<< "Death tests are not supported on this platform.\n" \
<< "Statement '" #statement "' cannot be verified."; \
GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
terminator; \
} else \
::testing::Message()
GTEST_API_ bool AlwaysTrue()
+
static bool PartialMatch(const ::std::string &str, const RE &re)
Definition: gtest.h:1164
+
bool AlwaysFalse()
Definition: gtest.h:7260
+
+

Definition at line 10328 of file gtest.h.

+ +
+
+ +

◆ GTEST_USE_OWN_FLAGFILE_FLAG_

+ +
+
+ + + + +
#define GTEST_USE_OWN_FLAGFILE_FLAG_   1
+
+ +

Definition at line 2489 of file gtest.h.

+ +
+
+ +

◆ GTEST_USES_POSIX_RE

+ +
+
+ + + + +
#define GTEST_USES_POSIX_RE   1
+
+ +

Definition at line 618 of file gtest.h.

+ +
+
+ +

◆ GTEST_WIDE_STRING_USES_UTF16_

+ +
+
+ + + + +
#define GTEST_WIDE_STRING_USES_UTF16_   (GTEST_OS_WINDOWS || GTEST_OS_CYGWIN || GTEST_OS_AIX || GTEST_OS_OS2)
+
+ +

Definition at line 856 of file gtest.h.

+ +
+
+ +

◆ INSTANTIATE_TEST_CASE_P

+ +
+
+ + + + +
#define INSTANTIATE_TEST_CASE_P   INSTANTIATE_TEST_SUITE_P
+
+ +

Definition at line 13739 of file gtest.h.

+ +
+
+ +

◆ INSTANTIATE_TEST_SUITE_P

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
#define INSTANTIATE_TEST_SUITE_P( prefix,
 test_suite_name,
 generator,
 ... 
)
+
+Value:
static ::testing::internal::ParamGenerator<test_suite_name::ParamType> \
gtest_##prefix##test_suite_name##_EvalGenerator_() { \
return generator; \
} \
static ::std::string gtest_##prefix##test_suite_name##_EvalGenerateName_( \
const ::testing::TestParamInfo<test_suite_name::ParamType>& info) { \
return ::testing::internal::GetParamNameGen<test_suite_name::ParamType>( \
__VA_ARGS__)(info); \
} \
static int gtest_##prefix##test_suite_name##_dummy_ \
GTEST_ATTRIBUTE_UNUSED_ = \
.GetTestSuitePatternHolder<test_suite_name>( \
#test_suite_name, \
::testing::internal::CodeLocation(__FILE__, __LINE__)) \
->AddTestSuiteInstantiation( \
#prefix, &gtest_##prefix##test_suite_name##_EvalGenerator_, \
&gtest_##prefix##test_suite_name##_EvalGenerateName_, \
__FILE__, __LINE__)
::std::string string
Definition: gtest.h:1115
+
internal::ParameterizedTestSuiteRegistry & parameterized_test_registry() GTEST_LOCK_EXCLUDED_(mutex_)
+
ParameterizedTestSuiteInfo< TestSuite > * GetTestSuitePatternHolder(const char *test_suite_name, CodeLocation code_location)
Definition: gtest.h:11217
+
static UnitTest * GetInstance()
+
+

Definition at line 13715 of file gtest.h.

+ +
+
+ +

◆ SCOPED_TRACE

+ +
+
+ + + + + + + + +
#define SCOPED_TRACE( message)
+
+Value:
__FILE__, __LINE__, (message))
+
#define GTEST_CONCAT_TOKEN_(foo, bar)
Definition: gtest.h:6510
+
+

Definition at line 16891 of file gtest.h.

+ +
+
+ +

◆ SUCCEED

+ +
+
+ + + + + + + +
#define SUCCEED()   GTEST_SUCCEED()
+
+ +

Definition at line 16556 of file gtest.h.

+ +
+
+ +

◆ TEST

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define TEST( test_suite_name,
 test_name 
)   GTEST_TEST(test_suite_name, test_name)
+
+ +

Definition at line 16964 of file gtest.h.

+ +
+
+ +

◆ TEST_F

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define TEST_F( test_fixture,
 test_name 
)
+
+Value:
GTEST_TEST_(test_fixture, test_name, test_fixture, \
::testing::internal::GetTypeId<test_fixture>())
#define GTEST_TEST_(test_suite_name, test_name, parent_class, parent_id)
Definition: gtest.h:7868
+
+

Definition at line 16993 of file gtest.h.

+ +
+
+ +

◆ TEST_P

+ +
+
+ + + + + + + + + + + + + + + + + + +
#define TEST_P( test_suite_name,
 test_name 
)
+
+Value:
class GTEST_TEST_CLASS_NAME_(test_suite_name, test_name) \
: public test_suite_name { \
public: \
GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)() {} \
virtual void TestBody(); \
\
private: \
static int AddToRegistry() { \
.GetTestSuitePatternHolder<test_suite_name>( \
#test_suite_name, \
::testing::internal::CodeLocation(__FILE__, __LINE__)) \
->AddTestPattern( \
GTEST_STRINGIFY_(test_suite_name), GTEST_STRINGIFY_(test_name), \
new ::testing::internal::TestMetaFactory<GTEST_TEST_CLASS_NAME_( \
test_suite_name, test_name)>()); \
return 0; \
} \
static int gtest_registering_dummy_ GTEST_ATTRIBUTE_UNUSED_; \
GTEST_DISALLOW_COPY_AND_ASSIGN_(GTEST_TEST_CLASS_NAME_(test_suite_name, \
test_name)); \
}; \
int GTEST_TEST_CLASS_NAME_(test_suite_name, \
test_name)::gtest_registering_dummy_ = \
GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)::AddToRegistry(); \
void GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)::TestBody()
#define GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)
Definition: gtest.h:7864
+
internal::ParameterizedTestSuiteRegistry & parameterized_test_registry() GTEST_LOCK_EXCLUDED_(mutex_)
+
ParameterizedTestSuiteInfo< TestSuite > * GetTestSuitePatternHolder(const char *test_suite_name, CodeLocation code_location)
Definition: gtest.h:11217
+
static UnitTest * GetInstance()
+
+

Definition at line 13674 of file gtest.h.

+ +
+
+

Function Documentation

+ +

◆ GTEST_DISABLE_MSC_WARNINGS_PUSH_()

+ +
+
+ + + + + + + + +
GTEST_DISABLE_MSC_WARNINGS_PUSH_ (4251 5046)
+
+ +

Definition at line 2988 of file gtest.h.

+ +
+
+ +

◆ RUN_ALL_TESTS()

+ +
+
+ + + + + +
+ + + + + + + +
int RUN_ALL_TESTS ()
+
+inline
+
+ +

Definition at line 17097 of file gtest.h.

+ +
+
+
+
+ + + + diff --git a/doc/html/gtest_8h.js b/doc/html/gtest_8h.js new file mode 100644 index 0000000..15be15d --- /dev/null +++ b/doc/html/gtest_8h.js @@ -0,0 +1,587 @@ +var gtest_8h = +[ + [ "StaticAssertTypeEqHelper", "structtesting_1_1internal_1_1_static_assert_type_eq_helper.html", null ], + [ "StaticAssertTypeEqHelper< T, T >", "structtesting_1_1internal_1_1_static_assert_type_eq_helper_3_01_t_00_01_t_01_4.html", "structtesting_1_1internal_1_1_static_assert_type_eq_helper_3_01_t_00_01_t_01_4" ], + [ "IsSame", "structtesting_1_1internal_1_1_is_same.html", "structtesting_1_1internal_1_1_is_same" ], + [ "IsSame< T, T >", "structtesting_1_1internal_1_1_is_same_3_01_t_00_01_t_01_4.html", "structtesting_1_1internal_1_1_is_same_3_01_t_00_01_t_01_4" ], + [ "RE", "classtesting_1_1internal_1_1_r_e.html", "classtesting_1_1internal_1_1_r_e" ], + [ "GTestLog", "classtesting_1_1internal_1_1_g_test_log.html", "classtesting_1_1internal_1_1_g_test_log" ], + [ "AddReference", "structtesting_1_1internal_1_1_add_reference.html", "structtesting_1_1internal_1_1_add_reference" ], + [ "AddReference< T & >", "structtesting_1_1internal_1_1_add_reference_3_01_t_01_6_01_4.html", "structtesting_1_1internal_1_1_add_reference_3_01_t_01_6_01_4" ], + [ "ConstRef", "structtesting_1_1internal_1_1_const_ref.html", "structtesting_1_1internal_1_1_const_ref" ], + [ "ConstRef< T & >", "structtesting_1_1internal_1_1_const_ref_3_01_t_01_6_01_4.html", "structtesting_1_1internal_1_1_const_ref_3_01_t_01_6_01_4" ], + [ "Mutex", "classtesting_1_1internal_1_1_mutex.html", "classtesting_1_1internal_1_1_mutex" ], + [ "GTestMutexLock", "classtesting_1_1internal_1_1_g_test_mutex_lock.html", "classtesting_1_1internal_1_1_g_test_mutex_lock" ], + [ "ThreadLocal", "classtesting_1_1internal_1_1_thread_local.html", "classtesting_1_1internal_1_1_thread_local" ], + [ "bool_constant", "structtesting_1_1internal_1_1bool__constant.html", "structtesting_1_1internal_1_1bool__constant" ], + [ "is_same", "structtesting_1_1internal_1_1is__same.html", null ], + [ "is_same< T, T >", "structtesting_1_1internal_1_1is__same_3_01_t_00_01_t_01_4.html", null ], + [ "IteratorTraits", "structtesting_1_1internal_1_1_iterator_traits.html", "structtesting_1_1internal_1_1_iterator_traits" ], + [ "IteratorTraits< T * >", "structtesting_1_1internal_1_1_iterator_traits_3_01_t_01_5_01_4.html", "structtesting_1_1internal_1_1_iterator_traits_3_01_t_01_5_01_4" ], + [ "IteratorTraits< const T * >", "structtesting_1_1internal_1_1_iterator_traits_3_01const_01_t_01_5_01_4.html", "structtesting_1_1internal_1_1_iterator_traits_3_01const_01_t_01_5_01_4" ], + [ "TypeWithSize", "classtesting_1_1internal_1_1_type_with_size.html", "classtesting_1_1internal_1_1_type_with_size" ], + [ "TypeWithSize< 4 >", "classtesting_1_1internal_1_1_type_with_size_3_014_01_4.html", "classtesting_1_1internal_1_1_type_with_size_3_014_01_4" ], + [ "TypeWithSize< 8 >", "classtesting_1_1internal_1_1_type_with_size_3_018_01_4.html", "classtesting_1_1internal_1_1_type_with_size_3_018_01_4" ], + [ "Message", "classtesting_1_1_message.html", "classtesting_1_1_message" ], + [ "IgnoredValue", "classtesting_1_1internal_1_1_ignored_value.html", "classtesting_1_1internal_1_1_ignored_value" ], + [ "FloatingPoint", "classtesting_1_1internal_1_1_floating_point.html", "classtesting_1_1internal_1_1_floating_point" ], + [ "TypeIdHelper", "classtesting_1_1internal_1_1_type_id_helper.html", null ], + [ "TestFactoryBase", "classtesting_1_1internal_1_1_test_factory_base.html", "classtesting_1_1internal_1_1_test_factory_base" ], + [ "TestFactoryImpl", "classtesting_1_1internal_1_1_test_factory_impl.html", "classtesting_1_1internal_1_1_test_factory_impl" ], + [ "CodeLocation", "structtesting_1_1internal_1_1_code_location.html", "structtesting_1_1internal_1_1_code_location" ], + [ "SuiteApiResolver", "structtesting_1_1internal_1_1_suite_api_resolver.html", "structtesting_1_1internal_1_1_suite_api_resolver" ], + [ "ConstCharPtr", "structtesting_1_1internal_1_1_const_char_ptr.html", "structtesting_1_1internal_1_1_const_char_ptr" ], + [ "Random", "classtesting_1_1internal_1_1_random.html", "classtesting_1_1internal_1_1_random" ], + [ "CompileAssertTypesEqual", "structtesting_1_1internal_1_1_compile_assert_types_equal.html", null ], + [ "CompileAssertTypesEqual< T, T >", "structtesting_1_1internal_1_1_compile_assert_types_equal_3_01_t_00_01_t_01_4.html", null ], + [ "RemoveReference", "structtesting_1_1internal_1_1_remove_reference.html", "structtesting_1_1internal_1_1_remove_reference" ], + [ "RemoveReference< T & >", "structtesting_1_1internal_1_1_remove_reference_3_01_t_01_6_01_4.html", "structtesting_1_1internal_1_1_remove_reference_3_01_t_01_6_01_4" ], + [ "RemoveConst", "structtesting_1_1internal_1_1_remove_const.html", "structtesting_1_1internal_1_1_remove_const" ], + [ "RemoveConst< const T >", "structtesting_1_1internal_1_1_remove_const_3_01const_01_t_01_4.html", "structtesting_1_1internal_1_1_remove_const_3_01const_01_t_01_4" ], + [ "RemoveConst< const T[N]>", "structtesting_1_1internal_1_1_remove_const_3_01const_01_t[_n]_4.html", "structtesting_1_1internal_1_1_remove_const_3_01const_01_t[_n]_4" ], + [ "ImplicitlyConvertible", "classtesting_1_1internal_1_1_implicitly_convertible.html", null ], + [ "IsAProtocolMessage", "structtesting_1_1internal_1_1_is_a_protocol_message.html", null ], + [ "IsHashTable", "structtesting_1_1internal_1_1_is_hash_table.html", null ], + [ "IsRecursiveContainerImpl", "structtesting_1_1internal_1_1_is_recursive_container_impl.html", null ], + [ "IsRecursiveContainerImpl< C, false >", "structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01false_01_4.html", null ], + [ "IsRecursiveContainerImpl< C, true >", "structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01true_01_4.html", "structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01true_01_4" ], + [ "IsRecursiveContainer", "structtesting_1_1internal_1_1_is_recursive_container.html", null ], + [ "EnableIf", "structtesting_1_1internal_1_1_enable_if.html", null ], + [ "EnableIf< true >", "structtesting_1_1internal_1_1_enable_if_3_01true_01_4.html", "structtesting_1_1internal_1_1_enable_if_3_01true_01_4" ], + [ "RelationToSourceReference", "structtesting_1_1internal_1_1_relation_to_source_reference.html", null ], + [ "RelationToSourceCopy", "structtesting_1_1internal_1_1_relation_to_source_copy.html", null ], + [ "NativeArray", "classtesting_1_1internal_1_1_native_array.html", "classtesting_1_1internal_1_1_native_array" ], + [ "IndexSequence", "structtesting_1_1internal_1_1_index_sequence.html", "structtesting_1_1internal_1_1_index_sequence" ], + [ "DoubleSequence", "structtesting_1_1internal_1_1_double_sequence.html", null ], + [ "DoubleSequence< true, IndexSequence< I... >, sizeofT >", "structtesting_1_1internal_1_1_double_sequence_3_01true_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4.html", "structtesting_1_1internal_1_1_double_sequence_3_01true_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4" ], + [ "DoubleSequence< false, IndexSequence< I... >, sizeofT >", "structtesting_1_1internal_1_1_double_sequence_3_01false_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4.html", "structtesting_1_1internal_1_1_double_sequence_3_01false_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4" ], + [ "MakeIndexSequence", "structtesting_1_1internal_1_1_make_index_sequence.html", null ], + [ "MakeIndexSequence< 0 >", "structtesting_1_1internal_1_1_make_index_sequence_3_010_01_4.html", null ], + [ "ElemFromListImpl", "structtesting_1_1internal_1_1_elem_from_list_impl.html", null ], + [ "ElemFromListImpl< T, I, I >", "structtesting_1_1internal_1_1_elem_from_list_impl_3_01_t_00_01_i_00_01_i_01_4.html", "structtesting_1_1internal_1_1_elem_from_list_impl_3_01_t_00_01_i_00_01_i_01_4" ], + [ "ElemFromList", "structtesting_1_1internal_1_1_elem_from_list.html", null ], + [ "ElemFromList< N, IndexSequence< I... >, T... >", "structtesting_1_1internal_1_1_elem_from_list_3_01_n_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01_t_8_8_8_01_4.html", null ], + [ "FlatTuple", "classtesting_1_1internal_1_1_flat_tuple.html", "classtesting_1_1internal_1_1_flat_tuple" ], + [ "FlatTupleElemBase", "structtesting_1_1internal_1_1_flat_tuple_elem_base.html", null ], + [ "FlatTupleElemBase< FlatTuple< T... >, I >", "structtesting_1_1internal_1_1_flat_tuple_elem_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_i_01_4.html", "structtesting_1_1internal_1_1_flat_tuple_elem_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_i_01_4" ], + [ "FlatTupleBase", "structtesting_1_1internal_1_1_flat_tuple_base.html", null ], + [ "FlatTupleBase< FlatTuple< T... >, IndexSequence< Idx... > >", "structtesting_1_1internal_1_1_flat_tuple_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_index_sequence_3_01_idx_8_8_8_01_4_01_4.html", "structtesting_1_1internal_1_1_flat_tuple_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_index_sequence_3_01_idx_8_8_8_01_4_01_4" ], + [ "FlatTuple", "classtesting_1_1internal_1_1_flat_tuple.html", "classtesting_1_1internal_1_1_flat_tuple" ], + [ "TypeWithoutFormatter", "classtesting_1_1internal2_1_1_type_without_formatter.html", null ], + [ "TypeWithoutFormatter< T, kProtobuf >", "classtesting_1_1internal2_1_1_type_without_formatter_3_01_t_00_01k_protobuf_01_4.html", null ], + [ "TypeWithoutFormatter< T, kConvertibleToInteger >", "classtesting_1_1internal2_1_1_type_without_formatter_3_01_t_00_01k_convertible_to_integer_01_4.html", null ], + [ "FormatForComparison", "classtesting_1_1internal_1_1_format_for_comparison.html", null ], + [ "FormatForComparison< ToPrint[N], OtherOperand >", "classtesting_1_1internal_1_1_format_for_comparison_3_01_to_print[_n]_00_01_other_operand_01_4.html", null ], + [ "UniversalPrinter", "classtesting_1_1internal_1_1_universal_printer.html", null ], + [ "WrapPrinterType", "structtesting_1_1internal_1_1_wrap_printer_type.html", null ], + [ "UniversalPrinter", "classtesting_1_1internal_1_1_universal_printer.html", null ], + [ "UniversalPrinter< T[N]>", "classtesting_1_1internal_1_1_universal_printer_3_01_t[_n]_4.html", null ], + [ "UniversalPrinter< T & >", "classtesting_1_1internal_1_1_universal_printer_3_01_t_01_6_01_4.html", null ], + [ "UniversalTersePrinter", "classtesting_1_1internal_1_1_universal_terse_printer.html", null ], + [ "UniversalTersePrinter< T & >", "classtesting_1_1internal_1_1_universal_terse_printer_3_01_t_01_6_01_4.html", null ], + [ "UniversalTersePrinter< T[N]>", "classtesting_1_1internal_1_1_universal_terse_printer_3_01_t[_n]_4.html", null ], + [ "UniversalTersePrinter< const char * >", "classtesting_1_1internal_1_1_universal_terse_printer_3_01const_01char_01_5_01_4.html", null ], + [ "UniversalTersePrinter< char * >", "classtesting_1_1internal_1_1_universal_terse_printer_3_01char_01_5_01_4.html", null ], + [ "UniversalTersePrinter< const wchar_t * >", "classtesting_1_1internal_1_1_universal_terse_printer_3_01const_01wchar__t_01_5_01_4.html", null ], + [ "UniversalTersePrinter< wchar_t * >", "classtesting_1_1internal_1_1_universal_terse_printer_3_01wchar__t_01_5_01_4.html", null ], + [ "TestParamInfo", "structtesting_1_1_test_param_info.html", "structtesting_1_1_test_param_info" ], + [ "PrintToStringParamName", "structtesting_1_1_print_to_string_param_name.html", "structtesting_1_1_print_to_string_param_name" ], + [ "ParamGeneratorInterface", "classtesting_1_1internal_1_1_param_generator_interface.html", "classtesting_1_1internal_1_1_param_generator_interface" ], + [ "ParamGenerator", "classtesting_1_1internal_1_1_param_generator.html", "classtesting_1_1internal_1_1_param_generator" ], + [ "ParamIteratorInterface", "classtesting_1_1internal_1_1_param_iterator_interface.html", "classtesting_1_1internal_1_1_param_iterator_interface" ], + [ "ParamIterator", "classtesting_1_1internal_1_1_param_iterator.html", "classtesting_1_1internal_1_1_param_iterator" ], + [ "ParamGeneratorInterface", "classtesting_1_1internal_1_1_param_generator_interface.html", "classtesting_1_1internal_1_1_param_generator_interface" ], + [ "ParamGenerator", "classtesting_1_1internal_1_1_param_generator.html", "classtesting_1_1internal_1_1_param_generator" ], + [ "RangeGenerator", "classtesting_1_1internal_1_1_range_generator.html", "classtesting_1_1internal_1_1_range_generator" ], + [ "ValuesInIteratorRangeGenerator", "classtesting_1_1internal_1_1_values_in_iterator_range_generator.html", "classtesting_1_1internal_1_1_values_in_iterator_range_generator" ], + [ "ParamNameGenFunc", "structtesting_1_1internal_1_1_param_name_gen_func.html", "structtesting_1_1internal_1_1_param_name_gen_func" ], + [ "ParameterizedTestFactory", "classtesting_1_1internal_1_1_parameterized_test_factory.html", "classtesting_1_1internal_1_1_parameterized_test_factory" ], + [ "TestMetaFactoryBase", "classtesting_1_1internal_1_1_test_meta_factory_base.html", "classtesting_1_1internal_1_1_test_meta_factory_base" ], + [ "TestMetaFactory", "classtesting_1_1internal_1_1_test_meta_factory.html", "classtesting_1_1internal_1_1_test_meta_factory" ], + [ "ParameterizedTestSuiteInfoBase", "classtesting_1_1internal_1_1_parameterized_test_suite_info_base.html", "classtesting_1_1internal_1_1_parameterized_test_suite_info_base" ], + [ "ParameterizedTestSuiteInfo", "classtesting_1_1internal_1_1_parameterized_test_suite_info.html", "classtesting_1_1internal_1_1_parameterized_test_suite_info" ], + [ "ParameterizedTestSuiteRegistry", "classtesting_1_1internal_1_1_parameterized_test_suite_registry.html", "classtesting_1_1internal_1_1_parameterized_test_suite_registry" ], + [ "ValueArray", "classtesting_1_1internal_1_1_value_array.html", "classtesting_1_1internal_1_1_value_array" ], + [ "CartesianProductGenerator2", "classtesting_1_1internal_1_1_cartesian_product_generator2.html", "classtesting_1_1internal_1_1_cartesian_product_generator2" ], + [ "CartesianProductGenerator3", "classtesting_1_1internal_1_1_cartesian_product_generator3.html", "classtesting_1_1internal_1_1_cartesian_product_generator3" ], + [ "CartesianProductGenerator4", "classtesting_1_1internal_1_1_cartesian_product_generator4.html", "classtesting_1_1internal_1_1_cartesian_product_generator4" ], + [ "CartesianProductGenerator5", "classtesting_1_1internal_1_1_cartesian_product_generator5.html", "classtesting_1_1internal_1_1_cartesian_product_generator5" ], + [ "CartesianProductGenerator6", "classtesting_1_1internal_1_1_cartesian_product_generator6.html", "classtesting_1_1internal_1_1_cartesian_product_generator6" ], + [ "CartesianProductGenerator7", "classtesting_1_1internal_1_1_cartesian_product_generator7.html", "classtesting_1_1internal_1_1_cartesian_product_generator7" ], + [ "CartesianProductGenerator8", "classtesting_1_1internal_1_1_cartesian_product_generator8.html", "classtesting_1_1internal_1_1_cartesian_product_generator8" ], + [ "CartesianProductGenerator9", "classtesting_1_1internal_1_1_cartesian_product_generator9.html", "classtesting_1_1internal_1_1_cartesian_product_generator9" ], + [ "CartesianProductGenerator10", "classtesting_1_1internal_1_1_cartesian_product_generator10.html", "classtesting_1_1internal_1_1_cartesian_product_generator10" ], + [ "CartesianProductHolder2", "classtesting_1_1internal_1_1_cartesian_product_holder2.html", "classtesting_1_1internal_1_1_cartesian_product_holder2" ], + [ "CartesianProductHolder3", "classtesting_1_1internal_1_1_cartesian_product_holder3.html", "classtesting_1_1internal_1_1_cartesian_product_holder3" ], + [ "CartesianProductHolder4", "classtesting_1_1internal_1_1_cartesian_product_holder4.html", "classtesting_1_1internal_1_1_cartesian_product_holder4" ], + [ "CartesianProductHolder5", "classtesting_1_1internal_1_1_cartesian_product_holder5.html", "classtesting_1_1internal_1_1_cartesian_product_holder5" ], + [ "CartesianProductHolder6", "classtesting_1_1internal_1_1_cartesian_product_holder6.html", "classtesting_1_1internal_1_1_cartesian_product_holder6" ], + [ "CartesianProductHolder7", "classtesting_1_1internal_1_1_cartesian_product_holder7.html", "classtesting_1_1internal_1_1_cartesian_product_holder7" ], + [ "CartesianProductHolder8", "classtesting_1_1internal_1_1_cartesian_product_holder8.html", "classtesting_1_1internal_1_1_cartesian_product_holder8" ], + [ "CartesianProductHolder9", "classtesting_1_1internal_1_1_cartesian_product_holder9.html", "classtesting_1_1internal_1_1_cartesian_product_holder9" ], + [ "CartesianProductHolder10", "classtesting_1_1internal_1_1_cartesian_product_holder10.html", "classtesting_1_1internal_1_1_cartesian_product_holder10" ], + [ "Test", "classtesting_1_1_test.html", "classtesting_1_1_test" ], + [ "TestProperty", "classtesting_1_1_test_property.html", "classtesting_1_1_test_property" ], + [ "TestResult", "classtesting_1_1_test_result.html", "classtesting_1_1_test_result" ], + [ "TestInfo", "classtesting_1_1_test_info.html", "classtesting_1_1_test_info" ], + [ "TestSuite", "classtesting_1_1_test_suite.html", "classtesting_1_1_test_suite" ], + [ "Environment", "classtesting_1_1_environment.html", "classtesting_1_1_environment" ], + [ "TestEventListener", "classtesting_1_1_test_event_listener.html", "classtesting_1_1_test_event_listener" ], + [ "EmptyTestEventListener", "classtesting_1_1_empty_test_event_listener.html", "classtesting_1_1_empty_test_event_listener" ], + [ "TestEventListeners", "classtesting_1_1_test_event_listeners.html", "classtesting_1_1_test_event_listeners" ], + [ "UnitTest", "classtesting_1_1_unit_test.html", "classtesting_1_1_unit_test" ], + [ "faketype", "structtesting_1_1internal_1_1faketype.html", null ], + [ "EqHelper", "classtesting_1_1internal_1_1_eq_helper.html", null ], + [ "EqHelper< true >", "classtesting_1_1internal_1_1_eq_helper_3_01true_01_4.html", null ], + [ "AssertHelper", "classtesting_1_1internal_1_1_assert_helper.html", "classtesting_1_1internal_1_1_assert_helper" ], + [ "WithParamInterface", "classtesting_1_1_with_param_interface.html", "classtesting_1_1_with_param_interface" ], + [ "TestWithParam", "classtesting_1_1_test_with_param.html", null ], + [ "ScopedTrace", "classtesting_1_1_scoped_trace.html", "classtesting_1_1_scoped_trace" ], + [ "ADD_FAILURE", "gtest_8h.html#adc16b5b0a740c39084ea5c9e960e3063", null ], + [ "ADD_FAILURE_AT", "gtest_8h.html#a448d7e5105b640e892fd8153fbee0b7f", null ], + [ "ASSERT_ANY_THROW", "gtest_8h.html#affadeef9379fe5aabf6f28d9eab9d3c0", null ], + [ "ASSERT_DEATH_IF_SUPPORTED", "gtest_8h.html#ab2f0f25b46353767179a49ebd15b7345", null ], + [ "ASSERT_DOUBLE_EQ", "gtest_8h.html#a6617da62e5ae5490995a3bfca1f331a9", null ], + [ "ASSERT_EQ", "gtest_8h.html#a1a6db8b1338ee7040329322b77779086", null ], + [ "ASSERT_FALSE", "gtest_8h.html#a8197fa52f3538588d20d8af4834c9003", null ], + [ "ASSERT_FLOAT_EQ", "gtest_8h.html#a4663ffbf844baa54bdb29f9148fd0f96", null ], + [ "ASSERT_GE", "gtest_8h.html#af4ff5dc71479fcb374b6bc2ed195bcc4", null ], + [ "ASSERT_GT", "gtest_8h.html#a16a882d4eafc9f8643867aea40879140", null ], + [ "ASSERT_LE", "gtest_8h.html#a775643748feff0b490aae651d041e971", null ], + [ "ASSERT_LT", "gtest_8h.html#affc4f9cae4c3aabfe60fced83737b42c", null ], + [ "ASSERT_NE", "gtest_8h.html#aa866c8dece57912e6f51495ed3e8d8d5", null ], + [ "ASSERT_NEAR", "gtest_8h.html#a73cce6b752d204f91a36bef2f8e663b3", null ], + [ "ASSERT_NO_FATAL_FAILURE", "gtest_8h.html#a5034fda3490aad5a93942ac83f4cea49", null ], + [ "ASSERT_NO_THROW", "gtest_8h.html#a895c34d9b192cdc2ba46d2680623485d", null ], + [ "ASSERT_PRED1", "gtest_8h.html#a7d72f779b7d39b8f73a563ebc6d0604b", null ], + [ "ASSERT_PRED2", "gtest_8h.html#a4e9b777cce4e5423f4c2e491be7aa818", null ], + [ "ASSERT_PRED3", "gtest_8h.html#aa7688f3ab9f09a2c1dbf13bd1f29d8fd", null ], + [ "ASSERT_PRED4", "gtest_8h.html#addc030c521775610e4619a01541a2167", null ], + [ "ASSERT_PRED5", "gtest_8h.html#af8e510af2b4a14d90eef66ace17d1c30", null ], + [ "ASSERT_PRED_FORMAT1", "gtest_8h.html#a3771ca0d1a72013aebc3d66e046491ed", null ], + [ "ASSERT_PRED_FORMAT2", "gtest_8h.html#ac452685a1a98ea3d96eb956a062ee210", null ], + [ "ASSERT_PRED_FORMAT3", "gtest_8h.html#a494e3b8dc22f4765f7e041f16c930e3d", null ], + [ "ASSERT_PRED_FORMAT4", "gtest_8h.html#a1842593c1dfb13c9a4b33b01540a8b40", null ], + [ "ASSERT_PRED_FORMAT5", "gtest_8h.html#abd7cb4f36d6aa2cb346ab3ac812568f3", null ], + [ "ASSERT_STRCASEEQ", "gtest_8h.html#a58847dd696200a3268361401dfcd0fa0", null ], + [ "ASSERT_STRCASENE", "gtest_8h.html#ac3d2c3836b103068a050f32585b2aaad", null ], + [ "ASSERT_STREQ", "gtest_8h.html#a74f4189ea570bab9a65d47104659ef9c", null ], + [ "ASSERT_STRNE", "gtest_8h.html#a3d679660ac1b2f9f6e6c7608452af923", null ], + [ "ASSERT_THROW", "gtest_8h.html#aedb1eddae6c2a2430b0e7b7e03b4f052", null ], + [ "ASSERT_TRUE", "gtest_8h.html#ae9244bfbda562e8b798789b001993fa5", null ], + [ "EXPECT_ANY_THROW", "gtest_8h.html#a9be43f44d148e8a8d6a89c864bf4e461", null ], + [ "EXPECT_DEATH_IF_SUPPORTED", "gtest_8h.html#a8564de0e012dd0898949c513d1571f8b", null ], + [ "EXPECT_DOUBLE_EQ", "gtest_8h.html#ab4852f9430cf656690256ea7fe6323b8", null ], + [ "EXPECT_EQ", "gtest_8h.html#a4159019abda84f5366acdb7604ff220a", null ], + [ "EXPECT_FALSE", "gtest_8h.html#aeb6c7ae89f440c90c1a1815951c836da", null ], + [ "EXPECT_FLOAT_EQ", "gtest_8h.html#a981e552322fb084042d02d6dfa9860ca", null ], + [ "EXPECT_GE", "gtest_8h.html#ab7a0ff4bfa4d9b27baa118d8b0756ca0", null ], + [ "EXPECT_GT", "gtest_8h.html#aa8bc8320813e1abb0016129b636e3b27", null ], + [ "EXPECT_LE", "gtest_8h.html#ae0f265632323b4a07b585dcfde10f60a", null ], + [ "EXPECT_LT", "gtest_8h.html#af28c06b2b5e8dee151896f299f6610cf", null ], + [ "EXPECT_NE", "gtest_8h.html#a6ae7443947f25abc58bfcfcfc56b0d75", null ], + [ "EXPECT_NEAR", "gtest_8h.html#a88cd7978af0e7dbd42cd606dfabdcc6f", null ], + [ "EXPECT_NO_FATAL_FAILURE", "gtest_8h.html#a067c02ccaf3171d6e1781cd0f8cdcf74", null ], + [ "EXPECT_NO_THROW", "gtest_8h.html#a2743a1438137ad857aa3f9fec3ff67ec", null ], + [ "EXPECT_PRED1", "gtest_8h.html#a6d09aa83f8d297481380c7c073c9f070", null ], + [ "EXPECT_PRED2", "gtest_8h.html#a14e74e655e502914d3d07e083145ac91", null ], + [ "EXPECT_PRED3", "gtest_8h.html#a0a0aff2564ea84c7eb3517ac8eda04da", null ], + [ "EXPECT_PRED4", "gtest_8h.html#a4fd2b1bad63eb752bc2ff2b6bb3f4569", null ], + [ "EXPECT_PRED5", "gtest_8h.html#adbfcc13f3b3d14c42a7fbd41573932bf", null ], + [ "EXPECT_PRED_FORMAT1", "gtest_8h.html#a07132aa62cf4902e50e68d0265f573b6", null ], + [ "EXPECT_PRED_FORMAT2", "gtest_8h.html#af0141918615a5e2d5247e9cda8324dae", null ], + [ "EXPECT_PRED_FORMAT3", "gtest_8h.html#a7285708fa5d37d6d8ed5b5e59da08bae", null ], + [ "EXPECT_PRED_FORMAT4", "gtest_8h.html#a3354347de0f2445400b509cf39dce1dc", null ], + [ "EXPECT_PRED_FORMAT5", "gtest_8h.html#a74beddf9661e4460f9969fe211b9e80e", null ], + [ "EXPECT_STRCASEEQ", "gtest_8h.html#a740cab7e3eec5c178a64b4f558bde66e", null ], + [ "EXPECT_STRCASENE", "gtest_8h.html#a07d0b5cbd3b5f7c8b6f44c609046ff07", null ], + [ "EXPECT_STREQ", "gtest_8h.html#ad20f7b94ac5081e16f0005b94e95f0c6", null ], + [ "EXPECT_STRNE", "gtest_8h.html#aee7e9c42f55549dbc0dfc42391eb9775", null ], + [ "EXPECT_THROW", "gtest_8h.html#a789842b4475eed948e6fd18390d5a859", null ], + [ "EXPECT_TRUE", "gtest_8h.html#ac33e7cdfb5d44a7a0f0ab552eb5c3c6a", null ], + [ "FAIL", "gtest_8h.html#a3e26a8d27caa386ed0ea7ce9d5b7c4ed", null ], + [ "FRIEND_TEST", "gtest_8h.html#a8d443b4cc1d87a7a17943b8fbdbf3910", null ], + [ "GTEST_ADD_REFERENCE_", "gtest_8h.html#ab389953fc1f7e4efae30d182a0e0a13b", null ], + [ "GTEST_AMBIGUOUS_ELSE_BLOCKER_", "gtest_8h.html#a00b3684a621ce1422b55a0e7e8a6aecb", null ], + [ "GTEST_API_", "gtest_8h.html#aa73be6f0ba4a7456180a94904ce17790", null ], + [ "GTEST_ARRAY_SIZE_", "gtest_8h.html#ab71a3e9a908b7b6acc0e8bddc0ecb3fe", null ], + [ "GTEST_ASSERT_", "gtest_8h.html#a8c09939dd67f1bb5b68c9f6a44ea75db", null ], + [ "GTEST_ASSERT_EQ", "gtest_8h.html#a8a7a47387090810cdfe78933d348182d", null ], + [ "GTEST_ASSERT_GE", "gtest_8h.html#a55373d99c079ff1b894e2eb5bcd15c5a", null ], + [ "GTEST_ASSERT_GT", "gtest_8h.html#a088b9056fd1c1f316b41c22f64deb33a", null ], + [ "GTEST_ASSERT_LE", "gtest_8h.html#abef04dcd4a0259d378de7b3b3ffb6730", null ], + [ "GTEST_ASSERT_LT", "gtest_8h.html#a5a75667e637febd18e5f7d4f3abf55e8", null ], + [ "GTEST_ASSERT_NE", "gtest_8h.html#a6fa9bb2b6731eba8f481e40e9e4931b3", null ], + [ "GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_", "gtest_8h.html#af18b465f4ba6e36eea7a8d2d79521873", null ], + [ "GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_", "gtest_8h.html#a2a83dd79037e53814a509cc3f5702650", null ], + [ "GTEST_ATTRIBUTE_NO_SANITIZE_THREAD_", "gtest_8h.html#abf30a6b1b3a12ecb2cc1bc1a6f5f9646", null ], + [ "GTEST_ATTRIBUTE_PRINTF_", "gtest_8h.html#ae29b00ca46783509cc900cd03d61ef37", null ], + [ "GTEST_ATTRIBUTE_UNUSED_", "gtest_8h.html#acdd47601a9376161c349a5881ccc6918", null ], + [ "GTEST_CHECK_", "gtest_8h.html#ab54343f0a36dc4cb0ce8a478dd7847b8", null ], + [ "GTEST_CHECK_POSIX_SUCCESS_", "gtest_8h.html#a38f6151210e363ad7c69a836b13cf0af", null ], + [ "GTEST_COMPILE_ASSERT_", "gtest_8h.html#ae1f37dc71d5daa6fb49ca1b6047d4a8c", null ], + [ "GTEST_CONCAT_TOKEN_", "gtest_8h.html#ae3c336cbe1ae2bd1b1d019333e4428a0", null ], + [ "GTEST_CONCAT_TOKEN_IMPL_", "gtest_8h.html#aa39fb5346d3573feebe4257cb3a01fde", null ], + [ "GTEST_DECLARE_bool_", "gtest_8h.html#a14eb0e9c6e0df765d1fbfd2db6966d14", null ], + [ "GTEST_DECLARE_int32_", "gtest_8h.html#aab2ee98cb616054b1d3a7dc71efe81fc", null ], + [ "GTEST_DECLARE_STATIC_MUTEX_", "gtest_8h.html#af0970cdea09f16dbb1dbfccdaa693eeb", null ], + [ "GTEST_DECLARE_string_", "gtest_8h.html#a9f74eee05f7ee5534139a622fe7da7dd", null ], + [ "GTEST_DEFAULT_DEATH_TEST_STYLE", "gtest_8h.html#a491d09ee62f1c9cfeafa3dbf75aaa9e2", null ], + [ "GTEST_DEFINE_bool_", "gtest_8h.html#a48e05814779e5a2f432b06a12618a760", null ], + [ "GTEST_DEFINE_int32_", "gtest_8h.html#a88ee2f19589ffff86ca742fd33611358", null ], + [ "GTEST_DEFINE_STATIC_MUTEX_", "gtest_8h.html#a85d5cd679fdbe87383e7dfd1c6651eaa", null ], + [ "GTEST_DEFINE_string_", "gtest_8h.html#a885e18fe217a6e85553d408b99252c12", null ], + [ "GTEST_DEV_EMAIL_", "gtest_8h.html#a21086d276b1a64d6763ee8a94b12c1b8", null ], + [ "GTEST_DISABLE_MSC_DEPRECATED_POP_", "gtest_8h.html#aa0dc86dc9837f1610e91da65458f53b3", null ], + [ "GTEST_DISABLE_MSC_DEPRECATED_PUSH_", "gtest_8h.html#a5b130138db254deaf29dbe3dffa1a2a8", null ], + [ "GTEST_DISABLE_MSC_WARNINGS_POP_", "gtest_8h.html#aebf8277c9069c1e124f9a5bbe2948061", null ], + [ "GTEST_DISABLE_MSC_WARNINGS_PUSH_", "gtest_8h.html#a86994cc68e844d8b82089c70408dfc61", null ], + [ "GTEST_DISALLOW_ASSIGN_", "gtest_8h.html#ac593b50ce24257d5b6aa84845c344c9e", null ], + [ "GTEST_DISALLOW_COPY_AND_ASSIGN_", "gtest_8h.html#aed8c1888c32b588b0681e88b95031e29", null ], + [ "GTEST_EXCLUSIVE_LOCK_REQUIRED_", "gtest_8h.html#a149f693bd59fa1bc937af54c0cdcb32f", null ], + [ "GTEST_FAIL", "gtest_8h.html#a636231436707c30d6778f79ae96f5dc6", null ], + [ "GTEST_FATAL_FAILURE_", "gtest_8h.html#a0f9a4c3ea82cc7bf4478eaffdc168358", null ], + [ "GTEST_FLAG", "gtest_8h.html#a828f4e34a1c4b510da50ec1563e3562a", null ], + [ "GTEST_FLAG_PREFIX_", "gtest_8h.html#a088e84784c589ba9b1fc48602ad8eabf", null ], + [ "GTEST_FLAG_PREFIX_DASH_", "gtest_8h.html#a4251ff898f9f94ec6b8b9402c3436759", null ], + [ "GTEST_FLAG_PREFIX_UPPER_", "gtest_8h.html#a4018b7f288f974d022df397e2730633a", null ], + [ "GTEST_FLAG_SAVER_", "gtest_8h.html#a3749ef4fba6b3c3993609b336031644d", null ], + [ "GTEST_HAS_ALT_PATH_SEP_", "gtest_8h.html#acf0ee1851e6d342237bb64806ee1fd27", null ], + [ "GTEST_HAS_CLONE", "gtest_8h.html#a40c075a7f969a694e59532356be59fd5", null ], + [ "GTEST_HAS_CXXABI_H_", "gtest_8h.html#ae6239a8ccf4c230008d1db1ea8bd738e", null ], + [ "GTEST_HAS_EXCEPTIONS", "gtest_8h.html#aedcf220690e6589d0fc2bd3db768ea66", null ], + [ "GTEST_HAS_GLOBAL_STRING", "gtest_8h.html#a6ab57c4a17233dd4ed30c2926bb99cc5", null ], + [ "GTEST_HAS_GLOBAL_WSTRING", "gtest_8h.html#afca9ecaf5846561187a15b75013aa85b", null ], + [ "GTEST_HAS_POSIX_RE", "gtest_8h.html#af5c4295ea1d76f07f65934f659792431", null ], + [ "GTEST_HAS_PTHREAD", "gtest_8h.html#a3341397e1952de0b9cd88762d4d3ae4b", null ], + [ "GTEST_HAS_RTTI", "gtest_8h.html#a9ba781217167f905bff2f1c410a97930", null ], + [ "GTEST_HAS_SEH", "gtest_8h.html#a8f6a84e8be3c94cd1f6f46a136df2c62", null ], + [ "GTEST_HAS_STD_STRING", "gtest_8h.html#adba1121430c11cee8ba0c74e8cf6aa40", null ], + [ "GTEST_HAS_STD_WSTRING", "gtest_8h.html#a6e087748d8bbd2ca57c487b6ad268670", null ], + [ "GTEST_HAS_STREAM_REDIRECTION", "gtest_8h.html#add695166eb7b691f93777525d5881062", null ], + [ "GTEST_IMPL_CMP_HELPER_", "gtest_8h.html#a4a5b6fbde5dd05e05dd6846ac5e5c18e", null ], + [ "GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_", "gtest_8h.html#a79d4724b4bc2a1dd8493c366b5ca626a", null ], + [ "GTEST_IMPL_FORMAT_C_STRING_AS_STRING_", "gtest_8h.html#ad6102ed2a0571d5196e606a061c16a10", null ], + [ "GTEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_", "gtest_8h.html#a9be22723f67d5ad4d6d26214a84a19f9", null ], + [ "GTEST_INCLUDE_GTEST_GTEST_MATCHERS_H_", "gtest_8h.html#ac5d82b7725576c4a54ae99ce1cc861e0", null ], + [ "GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_", "gtest_8h.html#a5c2d86823d7f9ffac3e3766da17091dd", null ], + [ "GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_", "gtest_8h.html#a15b9e83e56cafef0ddd12e2444772908", null ], + [ "GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_", "gtest_8h.html#a36afb7e44e600d2da0e6d8f4f739ea3b", null ], + [ "GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_", "gtest_8h.html#a146e4a81159ecfdc33030e147a024346", null ], + [ "GTEST_INCLUDE_GTEST_GTEST_PROD_H_", "gtest_8h.html#a61e419ca2f3cc78bbae47d074c5d4400", null ], + [ "GTEST_INCLUDE_GTEST_GTEST_TEST_PART_H_", "gtest_8h.html#a6454a5e01489b59f55be53c206ca929b", null ], + [ "GTEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_", "gtest_8h.html#adddef1e04ac44c9721ce3716c1b8a09e", null ], + [ "GTEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_PORT_H_", "gtest_8h.html#aae632b050088c635963f553c4a5157b0", null ], + [ "GTEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_PRINTERS_H_", "gtest_8h.html#a790dd922b87864bf5b8d93a22853933c", null ], + [ "GTEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_", "gtest_8h.html#a83e03f206a1c53a656f7eac87c122d16", null ], + [ "GTEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_", "gtest_8h.html#aa6f5334cb6792f48ac5621193b41bb61", null ], + [ "GTEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_", "gtest_8h.html#a508d33581439542ea940eacbf306ad2a", null ], + [ "GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_", "gtest_8h.html#a34b82ce6255f2f5666647d35498f4c65", null ], + [ "GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_", "gtest_8h.html#a83cf5c299fc04d9f8e555cb42a97aa47", null ], + [ "GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_ARCH_H_", "gtest_8h.html#a0392ac662f9547fb26a0d23c26d09fa6", null ], + [ "GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_", "gtest_8h.html#a6d13def13619ff1647c90e3354a65732", null ], + [ "GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_", "gtest_8h.html#af7adda0fee2a48fec4d8628cbaedec76", null ], + [ "GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_", "gtest_8h.html#aff22afce4bffd0181c178e2e4d848c97", null ], + [ "GTEST_INIT_GOOGLE_TEST_NAME_", "gtest_8h.html#aa5e27ad4f88278501ef71bd9ddbb44c6", null ], + [ "GTEST_INTENTIONAL_CONST_COND_POP_", "gtest_8h.html#ad115e2c466f7e8a32f1cf23ef2e5f220", null ], + [ "GTEST_INTENTIONAL_CONST_COND_PUSH_", "gtest_8h.html#a69b0cadb05bf2a1ef96151243c6b6241", null ], + [ "GTEST_INTERNAL_DEPRECATED", "gtest_8h.html#a6aa594029905b65753d0e85f2db521ab", null ], + [ "GTEST_IS_NULL_LITERAL_", "gtest_8h.html#ae5dd8e23090e08856613878fa1ff6fca", null ], + [ "GTEST_IS_THREADSAFE", "gtest_8h.html#a727149862f53b2fb21f6d33cd9323886", null ], + [ "GTEST_LOCK_EXCLUDED_", "gtest_8h.html#a69abff5a4efdd07bd5faebe3dd318d06", null ], + [ "GTEST_LOG_", "gtest_8h.html#a8ef4cb4c465db8c15464aecc6d9510ef", null ], + [ "GTEST_MESSAGE_", "gtest_8h.html#a94c73d5368ec946bc354d0992ad00810", null ], + [ "GTEST_MESSAGE_AT_", "gtest_8h.html#a8d70025c45a47a493780746dfd66d565", null ], + [ "GTEST_MUST_USE_RESULT_", "gtest_8h.html#a8e5aab8276b2645f64f41c9e3021b935", null ], + [ "GTEST_NAME_", "gtest_8h.html#a13d98c217176bd8722c395b9225fc19d", null ], + [ "GTEST_NO_INLINE_", "gtest_8h.html#a9945cbd967fbccb15f8de711f58955c7", null ], + [ "GTEST_NONFATAL_FAILURE_", "gtest_8h.html#a6cb7482cfa03661a91c698eb5895f642", null ], + [ "GTEST_PATH_SEP_", "gtest_8h.html#afbb636e91bdd50267dbef11a50490b29", null ], + [ "GTEST_PRED1_", "gtest_8h.html#ad44cf322952076d85305bbdf39769ac1", null ], + [ "GTEST_PRED2_", "gtest_8h.html#ac560264104bd030b64034505d294a7b6", null ], + [ "GTEST_PRED3_", "gtest_8h.html#af30518f03233bc4486b55284b0827eb8", null ], + [ "GTEST_PRED4_", "gtest_8h.html#a14e8c70455104fac032efec097ef668b", null ], + [ "GTEST_PRED5_", "gtest_8h.html#a2c42692f7d910dc2fe57869883190e6c", null ], + [ "GTEST_PRED_FORMAT1_", "gtest_8h.html#aa3e3bfe04bb0e54d7f0e57e2f991d1eb", null ], + [ "GTEST_PRED_FORMAT2_", "gtest_8h.html#a115c18d1f752b7f091d577fb69cac372", null ], + [ "GTEST_PRED_FORMAT3_", "gtest_8h.html#a49cdf8707268ee932bb772d879a226cc", null ], + [ "GTEST_PRED_FORMAT4_", "gtest_8h.html#abd207ed869491ba4bba29f8df37b7355", null ], + [ "GTEST_PRED_FORMAT5_", "gtest_8h.html#a107623ee191560f703a3fdc983803c8e", null ], + [ "GTEST_PROJECT_URL_", "gtest_8h.html#a5aa3c938fc1d049f1d9c5332f6a0b1d4", null ], + [ "GTEST_REFERENCE_TO_CONST_", "gtest_8h.html#a9f91fcd24cae0b48fdaeb19102dac525", null ], + [ "GTEST_REMOVE_CONST_", "gtest_8h.html#a2ffec8c60510eb130af387f5ce9a756a", null ], + [ "GTEST_REMOVE_REFERENCE_", "gtest_8h.html#a84c72f25a6a6600e3ff8381ca6982ae9", null ], + [ "GTEST_REMOVE_REFERENCE_AND_CONST_", "gtest_8h.html#a874567b176266188fabfffb8393267ce", null ], + [ "GTEST_SKIP", "gtest_8h.html#a3c0bbb980d533108ecc23c3534527d3c", null ], + [ "GTEST_SKIP_", "gtest_8h.html#ab75ed7a6cd9e466944ce680c1c07ab47", null ], + [ "GTEST_SNPRINTF_", "gtest_8h.html#aed1cc8143222d7a845a1269448ec203e", null ], + [ "GTEST_STRINGIFY_", "gtest_8h.html#affa935d4361fa573644e9c739dde2b14", null ], + [ "GTEST_SUCCEED", "gtest_8h.html#a2690441c38202728f4159ac2462d9720", null ], + [ "GTEST_SUCCESS_", "gtest_8h.html#abe012b550eb3807e8c49f7e161bd1567", null ], + [ "GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_", "gtest_8h.html#a2e66f7dfc5cb87e0fa0289f653173c69", null ], + [ "GTEST_TEST", "gtest_8h.html#a216a746d9241b1f42fdd4449698a4d8d", null ], + [ "GTEST_TEST_", "gtest_8h.html#ab43103f7842de04474e362689f782a46", null ], + [ "GTEST_TEST_ANY_THROW_", "gtest_8h.html#af48bbd26d54d4afc5e4cef39b1c76ba3", null ], + [ "GTEST_TEST_BOOLEAN_", "gtest_8h.html#ae8912365e1d00a7a2bd248268c64aa1a", null ], + [ "GTEST_TEST_CLASS_NAME_", "gtest_8h.html#ad4bc4ec847a06e7de981e81c9bb116cf", null ], + [ "GTEST_TEST_NO_FATAL_FAILURE_", "gtest_8h.html#a1b37a3c446836d33040f3266a6236081", null ], + [ "GTEST_TEST_NO_THROW_", "gtest_8h.html#a9a109d026b5a904646437d7570e13581", null ], + [ "GTEST_TEST_THROW_", "gtest_8h.html#a3f71db93eaf30b0cfca9612b9ac32106", null ], + [ "GTEST_UNSUPPORTED_DEATH_TEST", "gtest_8h.html#aa5f42ab29859b7f49a901770d2e66855", null ], + [ "GTEST_USE_OWN_FLAGFILE_FLAG_", "gtest_8h.html#aa2315948dda8dba4fc516575657f193c", null ], + [ "GTEST_USES_POSIX_RE", "gtest_8h.html#acecef794eeb09598cd47da764271cb18", null ], + [ "GTEST_WIDE_STRING_USES_UTF16_", "gtest_8h.html#a0e3904ca8d62334ab5f29c057dceb6a1", null ], + [ "INSTANTIATE_TEST_CASE_P", "gtest_8h.html#acc356fe00725fe8bf8b95791c0ffacbd", null ], + [ "INSTANTIATE_TEST_SUITE_P", "gtest_8h.html#a016124361c862c0db315e4c9dc4d911a", null ], + [ "SCOPED_TRACE", "gtest_8h.html#a4dac08f15adc8cb1ee0e5c1bfb0f440d", null ], + [ "SUCCEED", "gtest_8h.html#a75adcdf89f69b0b615e395daafc315af", null ], + [ "TEST", "gtest_8h.html#ab5540a6d621853916be8240ff51819cf", null ], + [ "TEST_F", "gtest_8h.html#a0ee66d464d1a06c20c1929cae09d8758", null ], + [ "TEST_P", "gtest_8h.html#a1adc861b311e3fbd97bcc72e0b0f5962", null ], + [ "BiggestInt", "gtest_8h.html#a05c6bd9ede5ccdf25191a590d610dcc6", null ], + [ "Double", "gtest_8h.html#a66a7579b1893b260c31dad577f7a5c48", null ], + [ "false_type", "gtest_8h.html#abb1d0789f19bdde21affccbd1078b525", null ], + [ "Float", "gtest_8h.html#a02e1981f5ff70609e6ac06e006ff519a", null ], + [ "Int32", "gtest_8h.html#a8ee38faaf875f133358abaf9bc056cec", null ], + [ "Int64", "gtest_8h.html#a271c563fec38b804ddab0677f51f70a8", null ], + [ "IsContainer", "gtest_8h.html#ad8f0c2883245f1df2a53618a49f0deb3", null ], + [ "IsNotContainer", "gtest_8h.html#abf080521ce135deb510e0a7830fd3d33", null ], + [ "MutexLock", "gtest_8h.html#a08b187c6cc4e28400aadf9a32fccc8de", null ], + [ "ParameterizedTestCaseInfo", "gtest_8h.html#aac31682b6b41997d6cc610a5787dc8bc", null ], + [ "SetUpTearDownSuiteFuncType", "gtest_8h.html#a04786aa10f8b0bf38a5ead94d00475f4", null ], + [ "SetUpTestSuiteFunc", "gtest_8h.html#a83e4e0732ac6a9dcfe6ee299dc1b9fa2", null ], + [ "StatStruct", "gtest_8h.html#a8eb9f08d3af29941c2d2a964cfff3ecb", null ], + [ "string", "gtest_8h.html#a8e8ff5b11e64078831112677156cb111", null ], + [ "Strings", "gtest_8h.html#a50003bb76ec2934be1062be11efba8bf", null ], + [ "TearDownTestSuiteFunc", "gtest_8h.html#a8257a87aa42cebaa54b0c48a6ae657a5", null ], + [ "TimeInMillis", "gtest_8h.html#a66a845df404b38fe85c5e14a069f255a", null ], + [ "TimeInMillis", "gtest_8h.html#a992de1d091ce660f451d1e8b3ce30fd6", null ], + [ "true_type", "gtest_8h.html#a62f917c3424d8841de9b49b5ec28edb4", null ], + [ "TypeId", "gtest_8h.html#ab1114197d3c657d8b7f8e0c5caa12d00", null ], + [ "UInt32", "gtest_8h.html#a40d4fffcd2bf56f18b1c380615aa85e3", null ], + [ "UInt64", "gtest_8h.html#aa6a1ac454e6d7e550fa4925c62c35caa", null ], + [ "wstring", "gtest_8h.html#a3f543179329c353aee1d7b54a9a8e335", null ], + [ "DefaultPrinterType", "gtest_8h.html#a17fb8f0125fa92404a249ed38a43faa4", [ + [ "kPrintContainer", "gtest_8h.html#a17fb8f0125fa92404a249ed38a43faa4a945a19e59155ce1d335e8c3bcbdf61db", null ], + [ "kPrintPointer", "gtest_8h.html#a17fb8f0125fa92404a249ed38a43faa4a8eaa6fff4a58832b30027df49f73dcbf", null ], + [ "kPrintFunctionPointer", "gtest_8h.html#a17fb8f0125fa92404a249ed38a43faa4a5a066cde30e276c6460ba10d123d0c2c", null ], + [ "kPrintOther", "gtest_8h.html#a17fb8f0125fa92404a249ed38a43faa4a6f88d77d9d763d8a009caf950cfbab28", null ] + ] ], + [ "EditType", "gtest_8h.html#ad46aa6da12aec1a3f166310478b53a08", [ + [ "kMatch", "gtest_8h.html#ad46aa6da12aec1a3f166310478b53a08a7bdb9c74613a94f21b7489e0b5640a63", null ], + [ "kAdd", "gtest_8h.html#ad46aa6da12aec1a3f166310478b53a08a63400b073f5b311a87d568b5ae27ffe8", null ], + [ "kRemove", "gtest_8h.html#ad46aa6da12aec1a3f166310478b53a08a814768ef6cd0264a0a10b1e701a63e78", null ], + [ "kReplace", "gtest_8h.html#ad46aa6da12aec1a3f166310478b53a08afdbf30ecf9f32f60c646a34a358615f2", null ] + ] ], + [ "GTestColor", "gtest_8h.html#a648c1bc94c2ef9e868ff3f9dff0f9c4e", [ + [ "COLOR_DEFAULT", "gtest_8h.html#a648c1bc94c2ef9e868ff3f9dff0f9c4eafcd8803dc9e37e374d5a4486afc230b7", null ], + [ "COLOR_RED", "gtest_8h.html#a648c1bc94c2ef9e868ff3f9dff0f9c4ea9ebb3ddab9391781f6ee5021e1e443c3", null ], + [ "COLOR_GREEN", "gtest_8h.html#a648c1bc94c2ef9e868ff3f9dff0f9c4ea3b1e81f5b14a17b35a8672d57d166507", null ], + [ "COLOR_YELLOW", "gtest_8h.html#a648c1bc94c2ef9e868ff3f9dff0f9c4ea2cca441161aca75a208ff08d07f5b1a5", null ] + ] ], + [ "GTestLogSeverity", "gtest_8h.html#aa6255ef3b023c5b4e1a2198d887fb977", [ + [ "GTEST_INFO", "gtest_8h.html#aa6255ef3b023c5b4e1a2198d887fb977aff315e0913fcda86fe4de882bf5e33e9", null ], + [ "GTEST_WARNING", "gtest_8h.html#aa6255ef3b023c5b4e1a2198d887fb977a7a051bc2794f15a4bf0eab40562a304c", null ], + [ "GTEST_ERROR", "gtest_8h.html#aa6255ef3b023c5b4e1a2198d887fb977a651e9cd2a904e0c8210536271b875f75", null ], + [ "GTEST_FATAL", "gtest_8h.html#aa6255ef3b023c5b4e1a2198d887fb977a75063567740f6bf7da419b1b9197b12e", null ] + ] ], + [ "TypeKind", "gtest_8h.html#aeb8161b0b3ee503347b0662d7028fd57", [ + [ "kProtobuf", "gtest_8h.html#aeb8161b0b3ee503347b0662d7028fd57a14aaf98a2547ecf43eef0868d54b1383", null ], + [ "kConvertibleToInteger", "gtest_8h.html#aeb8161b0b3ee503347b0662d7028fd57a9bdcf3f1548f498b2b7f097306ea0224", null ], + [ "kOtherType", "gtest_8h.html#aeb8161b0b3ee503347b0662d7028fd57abe8aaea44751d6ebd0cdf5bd94451db1", null ] + ] ], + [ "Abort", "gtest_8h.html#a69b8278c59359dd6a6f941b4643db9fb", null ], + [ "AddGlobalTestEnvironment", "gtest_8h.html#a460d7b998622e332392c1e00be3a60d5", null ], + [ "AlwaysFalse", "gtest_8h.html#a4b24c851ab13569b1b15b3d259b60d2e", null ], + [ "AlwaysTrue", "gtest_8h.html#a4d46f09c3bfe68700b7f728d2cc3782f", null ], + [ "AppendUserMessage", "gtest_8h.html#af69e146a989e8d48def39a0cc59461c9", null ], + [ "ArrayAwareFind", "gtest_8h.html#a94a857fe6ff32cf4fdc4769a4071f239", null ], + [ "ArrayEq", "gtest_8h.html#af4bebf36baf0b0a5b26d051dde55fa47", null ], + [ "ArrayEq", "gtest_8h.html#a49b4d0ee49c0f8c93bab29ebd20630cc", null ], + [ "ArrayEq", "gtest_8h.html#a5cb6f81ee827130024261121c742b26c", null ], + [ "AssertPred1Helper", "gtest_8h.html#a7f73180474723be6e92185d6fa9e7c9f", null ], + [ "AssertPred2Helper", "gtest_8h.html#aa6587938029dd8733ecb885068f08247", null ], + [ "AssertPred3Helper", "gtest_8h.html#ac92dcbd00a0ffb2913e65d286e321a22", null ], + [ "AssertPred4Helper", "gtest_8h.html#ae90c778d69db4682e8fd8baaa0a9f9cd", null ], + [ "AssertPred5Helper", "gtest_8h.html#addcf52b273ce17269cbf4956cfe600a6", null ], + [ "Bool", "gtest_8h.html#aa9f9150ed43f949c8a6bacf3f04c03ce", null ], + [ "BoolFromGTestEnv", "gtest_8h.html#a1055088bb9b867e1b7b8f096f519d7c5", null ], + [ "CalculateOptimalEdits", "gtest_8h.html#ad28f23b77f716200bc6644bfc7413a63", null ], + [ "CalculateOptimalEdits", "gtest_8h.html#ad2258c5c811f8f262335f58641b33544", null ], + [ "CaptureStderr", "gtest_8h.html#a8ec00d458d0d442bd64af7b5f9c22dda", null ], + [ "CaptureStdout", "gtest_8h.html#acba06d4f0343dec407738ba5544af990", null ], + [ "ChDir", "gtest_8h.html#a1ddc8a4fc6bb21da372307485591a212", null ], + [ "CheckedDowncastToActualType", "gtest_8h.html#abfe9bfb020d38aa4e0e12c001911b22b", null ], + [ "Close", "gtest_8h.html#a15e5b8f2a535ef1b2529b85b861e4846", null ], + [ "CmpHelperEQ", "gtest_8h.html#a4638c74d9b32e971f9b321af6fafc2f1", null ], + [ "CmpHelperEQ", "gtest_8h.html#a1edf90480571c0659a39d13e3777d9ce", null ], + [ "CmpHelperEQFailure", "gtest_8h.html#a1def8ec9393360a1b34a20528703e7f7", null ], + [ "CmpHelperFloatingPointEQ", "gtest_8h.html#a98ce463e5dbe0c6120fa817e1f8f2944", null ], + [ "CmpHelperOpFailure", "gtest_8h.html#a894ffccd936d78fd555f490020c27f0a", null ], + [ "CmpHelperSTRCASEEQ", "gtest_8h.html#a00c3d012df6173622ef558a131bfb95d", null ], + [ "CmpHelperSTRCASENE", "gtest_8h.html#a5f74b933606b0a742cd5a8ad2d7087e0", null ], + [ "CmpHelperSTREQ", "gtest_8h.html#a93eb9d61cac7faf1faff6301ae5f4a46", null ], + [ "CmpHelperSTREQ", "gtest_8h.html#ad40d557f9c157790160d6e4f2b0d9bab", null ], + [ "CmpHelperSTRNE", "gtest_8h.html#a6b485231a046ff760844a0321c04870b", null ], + [ "CmpHelperSTRNE", "gtest_8h.html#a6e700804399b6694d8d6157e3a141b17", null ], + [ "Combine", "gtest_8h.html#a4917922963bacef3e301e67366c41df3", null ], + [ "Combine", "gtest_8h.html#a77b89180fd846e275236409d9704eda2", null ], + [ "Combine", "gtest_8h.html#abf420810fcd8190a98c2927862805a3f", null ], + [ "Combine", "gtest_8h.html#a81505186d64f5b5763a0e268bc2e5650", null ], + [ "Combine", "gtest_8h.html#adccda33f9b3ad18896cb341979fe12b4", null ], + [ "Combine", "gtest_8h.html#a314759a93c251ca78b75c7f3ae8eda80", null ], + [ "Combine", "gtest_8h.html#ac5508abb9d05e22332c792d101c13b2b", null ], + [ "Combine", "gtest_8h.html#a928ed7d1e8dd1dde0da5d7d3838384d2", null ], + [ "Combine", "gtest_8h.html#a0590cd15c5bafaea9f5d2b1061e0a28b", null ], + [ "CopyArray", "gtest_8h.html#afb1b9728aaaf6d9fe6246a19cfe3f7f5", null ], + [ "CopyArray", "gtest_8h.html#a84d0e746ba0827cc52b53d22000de0e8", null ], + [ "CopyArray", "gtest_8h.html#a1e7ae855686720615dcd5754c8181c62", null ], + [ "CreateUnifiedDiff", "gtest_8h.html#a48cffebc6d3169ad1df7849b5f7fb5ff", null ], + [ "DefaultParamName", "gtest_8h.html#a954ec4a8a932dac7743e77e459ffefdc", null ], + [ "DefaultPrintNonContainerTo", "gtest_8h.html#a3f49d3d0c996242f9d383c850097a656", null ], + [ "DefaultPrintTo", "gtest_8h.html#a2e96c98d5bd8ee4a1b92f8e3cde7dd40", null ], + [ "DefaultPrintTo", "gtest_8h.html#a074522dd8d77d61878a042b8d05cc64a", null ], + [ "DefaultPrintTo", "gtest_8h.html#a7729c07abcae6c69b9b370c39db61409", null ], + [ "DefaultPrintTo", "gtest_8h.html#a72b1a69d96be8ea6382539f5c4fcac6d", null ], + [ "DiffStrings", "gtest_8h.html#a513107ff8defa97d949937fc1350a56c", null ], + [ "DoubleLE", "gtest_8h.html#a84c020b981d0eb4eabfb0feda155aaaf", null ], + [ "DoubleNearPredFormat", "gtest_8h.html#aea60207c4cedc8946a70ada62e38da8f", null ], + [ "DownCast_", "gtest_8h.html#a1a1a1aed3fe00908b8a45d5ab4a33665", null ], + [ "EqFailure", "gtest_8h.html#ac61e2ba2cbf259fd6ee5ffd4e49c9445", null ], + [ "FClose", "gtest_8h.html#af4beeaaa8d62916d5e3b644a1ddfbd6b", null ], + [ "FDOpen", "gtest_8h.html#af7c268eba32d5a718b36b6b3801302e0", null ], + [ "FileNo", "gtest_8h.html#a3117b067e1f942a2031e666953120ccc", null ], + [ "FloatLE", "gtest_8h.html#a69106491c2e7f50e50da0ce5e8ae4374", null ], + [ "FlushInfoLog", "gtest_8h.html#a2135f223bf6b527729aeaa651115183b", null ], + [ "FOpen", "gtest_8h.html#a4042201dcc4932641d484e7ddf94de7d", null ], + [ "FormatCompilerIndependentFileLocation", "gtest_8h.html#a1ee4cde97868c53e442d3182496a9f3c", null ], + [ "FormatFileLocation", "gtest_8h.html#a31b7c3abed4a7c395f42c61e993989f4", null ], + [ "FormatForComparisonFailureMessage", "gtest_8h.html#a91ab078f10adc669f09b7f604975c518", null ], + [ "FReopen", "gtest_8h.html#a9ef6d089cdae03f9d9e0e6d379c40703", null ], + [ "GetArgvs", "gtest_8h.html#a8d8ed3acadedd9c0db28d35a188973ea", null ], + [ "GetBoolAssertionFailureMessage", "gtest_8h.html#aed8d3ad4341f8f2de53440e39c995632", null ], + [ "GetCapturedStderr", "gtest_8h.html#a374156401da17704099d0c33fa53adfb", null ], + [ "GetCapturedStdout", "gtest_8h.html#aed657219a9856a8d249a3230de0c54ce", null ], + [ "GetCurrentOsStackTraceExceptTop", "gtest_8h.html#ae7ae495d3207e26968dfbd537c5e6dee", null ], + [ "GetEnv", "gtest_8h.html#a1d5e3da5a27eed25986859fa83cafe95", null ], + [ "GetFileSize", "gtest_8h.html#a40bcfd87e26aae36e0cc51e5db64fd89", null ], + [ "GetNotDefaultOrNull", "gtest_8h.html#a9579a78c229ea302caded45d65f77336", null ], + [ "GetParamNameGen", "gtest_8h.html#abc0f0626877188afba6ad122d502f088", null ], + [ "GetParamNameGen", "gtest_8h.html#a27d6ea7d401e877cb0fbddf4206ebbe4", null ], + [ "GetTestTypeId", "gtest_8h.html#a1e85cf16bb95b60f879d48ba1fbfc1c9", null ], + [ "GetThreadCount", "gtest_8h.html#a8cbd8bf820517923d7f3c4477b3af5fa", null ], + [ "GetTypeId", "gtest_8h.html#a6b108e56fdc68ea937ffb3759fb55ab0", null ], + [ "GTEST_ATTRIBUTE_PRINTF_", "gtest_8h.html#a5fd9f88035bd7f38979a2b15aead2bab", null ], + [ "GTEST_DECLARE_string_", "gtest_8h.html#a37b7e87f0a5f502c6918f37d1768c1f3", null ], + [ "GTEST_DISABLE_MSC_WARNINGS_PUSH_", "gtest_8h.html#a88f79832f9d045112a76e9da8611cc13", null ], + [ "GTEST_IMPL_CMP_HELPER_", "gtest_8h.html#aa14e3caa94126d7fb8e06bfb3d24ae4a", null ], + [ "GTEST_IMPL_CMP_HELPER_", "gtest_8h.html#ade60646b18728043fff84d7b4125de2c", null ], + [ "GTEST_IMPL_CMP_HELPER_", "gtest_8h.html#aabcbff15eac496f8487699d19f42c274", null ], + [ "GTEST_IMPL_CMP_HELPER_", "gtest_8h.html#af969886067930ce70f6405cd5aa8b06b", null ], + [ "GTEST_IMPL_CMP_HELPER_", "gtest_8h.html#a7fdb4fc164db83c51dfad17640bfeae9", null ], + [ "GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_", "gtest_8h.html#a3682f962ae0ec1c0eca6444ca0a09e91", null ], + [ "GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_", "gtest_8h.html#a85e08f00d443221e529a0a85a90fbaeb", null ], + [ "GTEST_IMPL_FORMAT_C_STRING_AS_STRING_", "gtest_8h.html#aeac30230dcc362221bdd07d61eaa4ec1", null ], + [ "GTEST_IMPL_FORMAT_C_STRING_AS_STRING_", "gtest_8h.html#a12070f3d771e37e1c3f2539692af0ce0", null ], + [ "ImplicitCast_", "gtest_8h.html#a982df3f369643b175f79cda4048bc3b9", null ], + [ "InitGoogleTest", "gtest_8h.html#aee3f6f99df893f576f705f66c0559482", null ], + [ "InitGoogleTest", "gtest_8h.html#a6e9d83553f1d10818d698d45689d8adb", null ], + [ "Int32FromGTestEnv", "gtest_8h.html#a2196f070b2d28bceb45c7ad3b565b9ba", null ], + [ "IsAlNum", "gtest_8h.html#a83802e7f23324cd512232203662e1a98", null ], + [ "IsAlpha", "gtest_8h.html#aeb957087fd6bbf9db98ab7cd41b0c129", null ], + [ "IsATTY", "gtest_8h.html#a16ebe936b3a8ea462a94191635aedc27", null ], + [ "IsContainerTest", "gtest_8h.html#a764748b94f628bdd1dcd39dc81e8b71f", null ], + [ "IsContainerTest", "gtest_8h.html#af545a2ae928b8a9e7581978234464275", null ], + [ "IsDigit", "gtest_8h.html#a4bd96b7fa6486802d33ddc217af55a39", null ], + [ "IsDir", "gtest_8h.html#af0d04ed5baeed28353fa38742748a421", null ], + [ "IsLower", "gtest_8h.html#ac26ce3883bc8919c27074975e958f3b7", null ], + [ "IsNotSubstring", "gtest_8h.html#ab553b649b06ef2339cbd90f8dfa119f0", null ], + [ "IsNotSubstring", "gtest_8h.html#a28868925c50d541c8568a540b6457e54", null ], + [ "IsNotSubstring", "gtest_8h.html#a645d822e47dc64b9923e78c880807f12", null ], + [ "IsNotSubstring", "gtest_8h.html#a2205435db77abd191fb8209bba41862a", null ], + [ "IsNullLiteralHelper", "gtest_8h.html#a3db36c62f31a9439117c41c2b13f4941", null ], + [ "IsNullLiteralHelper", "gtest_8h.html#a1404fbe8d1164f614f6358b314ec3cf4", null ], + [ "IsSpace", "gtest_8h.html#af429e04f70f9c10f6aa76a5d1ccd389f", null ], + [ "IsSubstring", "gtest_8h.html#a5c90a86562b2470213c07742e0eeb0fe", null ], + [ "IsSubstring", "gtest_8h.html#a08ce65847491b27a38cbac3ac15e3035", null ], + [ "IsSubstring", "gtest_8h.html#a32718fab95b2833ab5ffc9cfc9f5c8b0", null ], + [ "IsSubstring", "gtest_8h.html#a2ff5c4d0c112d92b20232bd0cf173904", null ], + [ "IsTrue", "gtest_8h.html#ab2709373c78eb8b1c22a6ba30cceba52", null ], + [ "IsUpper", "gtest_8h.html#a84f3baa379fec6bf5947cb5165aa8cc9", null ], + [ "IsXDigit", "gtest_8h.html#aa234ef141278263fb143b616c74c86e7", null ], + [ "IsXDigit", "gtest_8h.html#a6ab68a30f8291c09b2289c132bbe3b16", null ], + [ "LogToStderr", "gtest_8h.html#a06b1b20029fbd1dbeb59752f914fab84", null ], + [ "MakeAndRegisterTestInfo", "gtest_8h.html#a7ab4072540184e26119ad853f45059f7", null ], + [ "operator!=", "gtest_8h.html#afa44fdec84edfc155ef63e4f0d4287cc", null ], + [ "operator<<", "gtest_8h.html#a7b802e532fd68749765cb7dc156130db", null ], + [ "operator<<", "gtest_8h.html#a07dbe129beb8952074f04b599dfce39b", null ], + [ "operator==", "gtest_8h.html#a5e3e473798de3189e9343132bcfd4fea", null ], + [ "OutputFlagAlsoCheckEnvVar", "gtest_8h.html#a0c793c6d84760d900299916c077a1af4", null ], + [ "ParseInt32", "gtest_8h.html#ac06fc81336a3d80755f4020d34321766", null ], + [ "PrintBytesInObjectTo", "gtest_8h.html#a9fbf8e07c0f94dc74d6ef5e56cd3c553", null ], + [ "PrintRawArrayTo", "gtest_8h.html#ad3013b6b4c825edee9fe18ff1d982faa", null ], + [ "PrintStringTo", "gtest_8h.html#a8b53e46cea3f8bdfc9342057c4f6ba62", null ], + [ "PrintTo", "gtest_8h.html#adb3c27150dbe661db0e0c4be27533460", null ], + [ "PrintTo", "gtest_8h.html#a476bd3d411d4f129620aaf8999c257c0", null ], + [ "PrintTo", "gtest_8h.html#a2979ac1ad3e05c51dcd7dca2eb34e6ce", null ], + [ "PrintTo", "gtest_8h.html#a6c50fd437a2ae2ff6f182ccd6c2744dd", null ], + [ "PrintTo", "gtest_8h.html#ac226053b96d7d61f9407e3b75bab07d9", null ], + [ "PrintTo", "gtest_8h.html#a553eec7bb50de01c9e91cac4accc606f", null ], + [ "PrintTo", "gtest_8h.html#a792cc5665a34619ed7a6d54711433456", null ], + [ "PrintTo", "gtest_8h.html#a1320096b116f8cc4b688acbd5b783051", null ], + [ "PrintTo", "gtest_8h.html#a42c591f2164ad105b502a9262333aed2", null ], + [ "PrintTo", "gtest_8h.html#a7fae797c500d66d0f5a9db4f205e3416", null ], + [ "PrintTo", "gtest_8h.html#afb038075e9e2166d1d9158a19e0eed23", null ], + [ "PrintTo", "gtest_8h.html#a8d41baa371fad3eb5a3dbe1bbc02c290", null ], + [ "PrintTo", "gtest_8h.html#af59b4f5d83276cd807c45063b14bad44", null ], + [ "PrintTo", "gtest_8h.html#a8d5be499966aeff68d4690db7d57f38a", null ], + [ "PrintTo", "gtest_8h.html#a76f564cf23190dbd5c9e088defdd092b", null ], + [ "PrintTo", "gtest_8h.html#a5587d09db034bc597870ae86bd8c01f8", null ], + [ "PrintTo", "gtest_8h.html#a5628347cba9a345f56087fdb70930fc8", null ], + [ "PrintTo", "gtest_8h.html#af2c33928facbf2edf7af564278724d98", null ], + [ "PrintTo", "gtest_8h.html#aa7e70a85d66f0c109e3e69629ef577f2", null ], + [ "PrintTo", "gtest_8h.html#abf6c518b437569187c1218166c702807", null ], + [ "PrintToString", "gtest_8h.html#aa5717bb1144edd1d262d310ba70c82ed", null ], + [ "PrintTupleTo", "gtest_8h.html#a7174fbf5d6ba458afae675022c9aae1e", null ], + [ "PrintTupleTo", "gtest_8h.html#a3580971ab4571dc9a00f4ed0e17fd777", null ], + [ "PrintWideStringTo", "gtest_8h.html#ae38089f9d4093cb7cf93396251fd2d66", null ], + [ "Range", "gtest_8h.html#a265ed70a86cf2d6641582c45ad9529e2", null ], + [ "Range", "gtest_8h.html#a56a45f85a1238dfc92e6fca03eb3a2e4", null ], + [ "Read", "gtest_8h.html#a3c6ab13e581a56f1b02f3eb7536c97fd", null ], + [ "ReadEntireFile", "gtest_8h.html#ab81b0af2a0131ea54dc11de00d5e6e51", null ], + [ "RegisterTest", "gtest_8h.html#a302c84bdc88f2138696da2a4756b6466", null ], + [ "ReportInvalidTestSuiteType", "gtest_8h.html#a5d3e97443d23bf1824f87feb172efd39", null ], + [ "RmDir", "gtest_8h.html#acbad5d4ea5b73fd1765f5f760642932a", null ], + [ "RUN_ALL_TESTS", "gtest_8h.html#a853a3792807489591d3d4a2f2ff9359f", null ], + [ "SkipPrefix", "gtest_8h.html#aac72b20299ad4a99554ce161e1769560", null ], + [ "Stat", "gtest_8h.html#a2b87b7ff647a128614daf50667eb9304", null ], + [ "StaticAssertTypeEq", "gtest_8h.html#a661e70fc6afeb5c085eed3716aa45059", null ], + [ "StrCaseCmp", "gtest_8h.html#a1ef2385a7f8e4c706054da35967e76bd", null ], + [ "StrDup", "gtest_8h.html#a8e352884793a65ae8be144676f1a9136", null ], + [ "StreamableToString", "gtest_8h.html#aad4beed95d0846e6ffc5da0978ef3bb9", null ], + [ "StrError", "gtest_8h.html#a4b77b14af6f4d18f83d303b98e9349c4", null ], + [ "StringFromGTestEnv", "gtest_8h.html#a0967cbf18fb1594f82512d8d822aba21", null ], + [ "StripTrailingSpaces", "gtest_8h.html#aa6afda12e567c353e2e9b9c2e8cae14f", null ], + [ "StrNCpy", "gtest_8h.html#a36fca815713332e5c6dc92c98b6b2574", null ], + [ "TempDir", "gtest_8h.html#abcf5181cecc3c07915dceb3de46ab07f", null ], + [ "TersePrintPrefixToStrings", "gtest_8h.html#a6300aa1440d0019cf08d9a1f6efd4382", null ], + [ "TersePrintPrefixToStrings", "gtest_8h.html#ab244273c02742a3fac45cc241befc536", null ], + [ "ToLower", "gtest_8h.html#ad9c627ef2a94245e3fd69e7ab3d49b42", null ], + [ "ToUpper", "gtest_8h.html#ac1b876a8133895bd553d4780ecaa1e3a", null ], + [ "UniversalPrint", "gtest_8h.html#a30708fa2bacf11895b03bdb21eb72309", null ], + [ "UniversalPrintArray", "gtest_8h.html#ad79d71c3110f8eb24ab352d68f29436a", null ], + [ "UniversalPrintArray", "gtest_8h.html#a72c997dbd2c562110b2cb56c359decfa", null ], + [ "UniversalPrintArray", "gtest_8h.html#ae31e146c35fd75afc6a9cc73ae2692d1", null ], + [ "UniversalTersePrint", "gtest_8h.html#afa92f5a284929dc3723e654a25feb7b9", null ], + [ "UniversalTersePrintTupleFieldsToStrings", "gtest_8h.html#a7e60d1478b074801c766eeee9be6c772", null ], + [ "Values", "gtest_8h.html#a374d4e5fbb4c938058fbe81d4c7ff6a6", null ], + [ "ValuesIn", "gtest_8h.html#aa67d0c8470c5f69fcfcacc9e775fa982", null ], + [ "ValuesIn", "gtest_8h.html#a96240380ae4d3b4855d07de3b84fb336", null ], + [ "ValuesIn", "gtest_8h.html#a0b9ea6594ac06ad5d9eba2511ffa0fb7", null ], + [ "Write", "gtest_8h.html#af4acf9f78d55f815a18b43786511abef", null ], + [ "fmt", "gtest_8h.html#a40b2a93ff318f5975eb8246b01221ce8", null ], + [ "GTEST_ATTRIBUTE_UNUSED_", "gtest_8h.html#aa09221196f0a830d5bf1c63ffce69dc3", null ], + [ "kMaxBiggestInt", "gtest_8h.html#ad901880198832bc166d2493096b451f7", null ], + [ "kProtobufOneLinerMaxLength", "gtest_8h.html#a140c8efd51e63a3def98445bff107518", null ], + [ "kStackTraceMarker", "gtest_8h.html#a999c7ef9ff01b6d2d76669372c444aa3", null ] +]; \ No newline at end of file diff --git a/doc/html/gtest_8h_source.html b/doc/html/gtest_8h_source.html new file mode 100644 index 0000000..24605a9 --- /dev/null +++ b/doc/html/gtest_8h_source.html @@ -0,0 +1,723 @@ + + + + + + + +uTL: test/eclipse-cygwin/lib/gtest/gtest.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
gtest.h
+
+
+Go to the documentation of this file.
1 // Copyright 2005, Google Inc.
2 // All rights reserved.
3 //
4 // Redistribution and use in source and binary forms, with or without
5 // modification, are permitted provided that the following conditions are
6 // met:
7 //
8 // * Redistributions of source code must retain the above copyright
9 // notice, this list of conditions and the following disclaimer.
10 // * Redistributions in binary form must reproduce the above
11 // copyright notice, this list of conditions and the following disclaimer
12 // in the documentation and/or other materials provided with the
13 // distribution.
14 // * Neither the name of Google Inc. nor the names of its
15 // contributors may be used to endorse or promote products derived from
16 // this software without specific prior written permission.
17 //
18 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 
30 //
31 // The Google C++ Testing and Mocking Framework (Google Test)
32 //
33 // This header file defines the public API for Google Test. It should be
34 // included by any test program that uses Google Test.
35 //
36 // IMPORTANT NOTE: Due to limitation of the C++ language, we have to
37 // leave some internal implementation details in this header file.
38 // They are clearly marked by comments like this:
39 //
40 // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
41 //
42 // Such code is NOT meant to be used by a user directly, and is subject
43 // to CHANGE WITHOUT NOTICE. Therefore DO NOT DEPEND ON IT in a user
44 // program!
45 //
46 // Acknowledgment: Google Test borrowed the idea of automatic test
47 // registration from Barthelemy Dagenais' (barthelemy@prologique.com)
48 // easyUnit framework.
49 
50 // GOOGLETEST_CM0001 DO NOT DELETE
51 
52 #ifndef GTEST_INCLUDE_GTEST_GTEST_H_
53 #define GTEST_INCLUDE_GTEST_GTEST_H_
54 
55 #include <limits>
56 #include <memory>
57 #include <ostream>
58 #include <vector>
59 
60 // Copyright 2005, Google Inc.
61 // All rights reserved.
62 //
63 // Redistribution and use in source and binary forms, with or without
64 // modification, are permitted provided that the following conditions are
65 // met:
66 //
67 // * Redistributions of source code must retain the above copyright
68 // notice, this list of conditions and the following disclaimer.
69 // * Redistributions in binary form must reproduce the above
70 // copyright notice, this list of conditions and the following disclaimer
71 // in the documentation and/or other materials provided with the
72 // distribution.
73 // * Neither the name of Google Inc. nor the names of its
74 // contributors may be used to endorse or promote products derived from
75 // this software without specific prior written permission.
76 //
77 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
78 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
79 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
80 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
81 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
82 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
83 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
84 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
85 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
86 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
87 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
88 //
89 // The Google C++ Testing and Mocking Framework (Google Test)
90 //
91 // This header file declares functions and macros used internally by
92 // Google Test. They are subject to change without notice.
93 
94 // GOOGLETEST_CM0001 DO NOT DELETE
95 
96 #ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_
97 #define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_
98 
99 // Copyright 2005, Google Inc.
100 // All rights reserved.
101 //
102 // Redistribution and use in source and binary forms, with or without
103 // modification, are permitted provided that the following conditions are
104 // met:
105 //
106 // * Redistributions of source code must retain the above copyright
107 // notice, this list of conditions and the following disclaimer.
108 // * Redistributions in binary form must reproduce the above
109 // copyright notice, this list of conditions and the following disclaimer
110 // in the documentation and/or other materials provided with the
111 // distribution.
112 // * Neither the name of Google Inc. nor the names of its
113 // contributors may be used to endorse or promote products derived from
114 // this software without specific prior written permission.
115 //
116 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
117 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
118 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
119 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
120 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
121 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
122 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
123 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
124 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
125 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
126 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
127 //
128 // Low-level types and utilities for porting Google Test to various
129 // platforms. All macros ending with _ and symbols defined in an
130 // internal namespace are subject to change without notice. Code
131 // outside Google Test MUST NOT USE THEM DIRECTLY. Macros that don't
132 // end with _ are part of Google Test's public API and can be used by
133 // code outside Google Test.
134 //
135 // This file is fundamental to Google Test. All other Google Test source
136 // files are expected to #include this. Therefore, it cannot #include
137 // any other Google Test header.
138 
139 // GOOGLETEST_CM0001 DO NOT DELETE
140 
141 #ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_
142 #define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_
143 
144 // Environment-describing macros
145 // -----------------------------
146 //
147 // Google Test can be used in many different environments. Macros in
148 // this section tell Google Test what kind of environment it is being
149 // used in, such that Google Test can provide environment-specific
150 // features and implementations.
151 //
152 // Google Test tries to automatically detect the properties of its
153 // environment, so users usually don't need to worry about these
154 // macros. However, the automatic detection is not perfect.
155 // Sometimes it's necessary for a user to define some of the following
156 // macros in the build script to override Google Test's decisions.
157 //
158 // If the user doesn't define a macro in the list, Google Test will
159 // provide a default definition. After this header is #included, all
160 // macros in this list will be defined to either 1 or 0.
161 //
162 // Notes to maintainers:
163 // - Each macro here is a user-tweakable knob; do not grow the list
164 // lightly.
165 // - Use #if to key off these macros. Don't use #ifdef or "#if
166 // defined(...)", which will not work as these macros are ALWAYS
167 // defined.
168 //
169 // GTEST_HAS_CLONE - Define it to 1/0 to indicate that clone(2)
170 // is/isn't available.
171 // GTEST_HAS_EXCEPTIONS - Define it to 1/0 to indicate that exceptions
172 // are enabled.
173 // GTEST_HAS_GLOBAL_STRING - Define it to 1/0 to indicate that ::string
174 // is/isn't available
175 // GTEST_HAS_GLOBAL_WSTRING - Define it to 1/0 to indicate that ::wstring
176 // is/isn't available
177 // GTEST_HAS_POSIX_RE - Define it to 1/0 to indicate that POSIX regular
178 // expressions are/aren't available.
179 // GTEST_HAS_PTHREAD - Define it to 1/0 to indicate that <pthread.h>
180 // is/isn't available.
181 // GTEST_HAS_RTTI - Define it to 1/0 to indicate that RTTI is/isn't
182 // enabled.
183 // GTEST_HAS_STD_WSTRING - Define it to 1/0 to indicate that
184 // std::wstring does/doesn't work (Google Test can
185 // be used where std::wstring is unavailable).
186 // GTEST_HAS_SEH - Define it to 1/0 to indicate whether the
187 // compiler supports Microsoft's "Structured
188 // Exception Handling".
189 // GTEST_HAS_STREAM_REDIRECTION
190 // - Define it to 1/0 to indicate whether the
191 // platform supports I/O stream redirection using
192 // dup() and dup2().
193 // GTEST_LINKED_AS_SHARED_LIBRARY
194 // - Define to 1 when compiling tests that use
195 // Google Test as a shared library (known as
196 // DLL on Windows).
197 // GTEST_CREATE_SHARED_LIBRARY
198 // - Define to 1 when compiling Google Test itself
199 // as a shared library.
200 // GTEST_DEFAULT_DEATH_TEST_STYLE
201 // - The default value of --gtest_death_test_style.
202 // The legacy default has been "fast" in the open
203 // source version since 2008. The recommended value
204 // is "threadsafe", and can be set in
205 // custom/gtest-port.h.
206 
207 // Platform-indicating macros
208 // --------------------------
209 //
210 // Macros indicating the platform on which Google Test is being used
211 // (a macro is defined to 1 if compiled on the given platform;
212 // otherwise UNDEFINED -- it's never defined to 0.). Google Test
213 // defines these macros automatically. Code outside Google Test MUST
214 // NOT define them.
215 //
216 // GTEST_OS_AIX - IBM AIX
217 // GTEST_OS_CYGWIN - Cygwin
218 // GTEST_OS_FREEBSD - FreeBSD
219 // GTEST_OS_FUCHSIA - Fuchsia
220 // GTEST_OS_HPUX - HP-UX
221 // GTEST_OS_LINUX - Linux
222 // GTEST_OS_LINUX_ANDROID - Google Android
223 // GTEST_OS_MAC - Mac OS X
224 // GTEST_OS_IOS - iOS
225 // GTEST_OS_NACL - Google Native Client (NaCl)
226 // GTEST_OS_NETBSD - NetBSD
227 // GTEST_OS_OPENBSD - OpenBSD
228 // GTEST_OS_OS2 - OS/2
229 // GTEST_OS_QNX - QNX
230 // GTEST_OS_SOLARIS - Sun Solaris
231 // GTEST_OS_WINDOWS - Windows (Desktop, MinGW, or Mobile)
232 // GTEST_OS_WINDOWS_DESKTOP - Windows Desktop
233 // GTEST_OS_WINDOWS_MINGW - MinGW
234 // GTEST_OS_WINDOWS_MOBILE - Windows Mobile
235 // GTEST_OS_WINDOWS_PHONE - Windows Phone
236 // GTEST_OS_WINDOWS_RT - Windows Store App/WinRT
237 // GTEST_OS_ZOS - z/OS
238 //
239 // Among the platforms, Cygwin, Linux, Max OS X, and Windows have the
240 // most stable support. Since core members of the Google Test project
241 // don't have access to other platforms, support for them may be less
242 // stable. If you notice any problems on your platform, please notify
243 // googletestframework@googlegroups.com (patches for fixing them are
244 // even more welcome!).
245 //
246 // It is possible that none of the GTEST_OS_* macros are defined.
247 
248 // Feature-indicating macros
249 // -------------------------
250 //
251 // Macros indicating which Google Test features are available (a macro
252 // is defined to 1 if the corresponding feature is supported;
253 // otherwise UNDEFINED -- it's never defined to 0.). Google Test
254 // defines these macros automatically. Code outside Google Test MUST
255 // NOT define them.
256 //
257 // These macros are public so that portable tests can be written.
258 // Such tests typically surround code using a feature with an #if
259 // which controls that code. For example:
260 //
261 // #if GTEST_HAS_DEATH_TEST
262 // EXPECT_DEATH(DoSomethingDeadly());
263 // #endif
264 //
265 // GTEST_HAS_DEATH_TEST - death tests
266 // GTEST_HAS_TYPED_TEST - typed tests
267 // GTEST_HAS_TYPED_TEST_P - type-parameterized tests
268 // GTEST_IS_THREADSAFE - Google Test is thread-safe.
269 // GOOGLETEST_CM0007 DO NOT DELETE
270 // GTEST_USES_POSIX_RE - enhanced POSIX regex is used. Do not confuse with
271 // GTEST_HAS_POSIX_RE (see above) which users can
272 // define themselves.
273 // GTEST_USES_SIMPLE_RE - our own simple regex is used;
274 // the above RE\b(s) are mutually exclusive.
275 
276 // Misc public macros
277 // ------------------
278 //
279 // GTEST_FLAG(flag_name) - references the variable corresponding to
280 // the given Google Test flag.
281 
282 // Internal utilities
283 // ------------------
284 //
285 // The following macros and utilities are for Google Test's INTERNAL
286 // use only. Code outside Google Test MUST NOT USE THEM DIRECTLY.
287 //
288 // Macros for basic C++ coding:
289 // GTEST_AMBIGUOUS_ELSE_BLOCKER_ - for disabling a gcc warning.
290 // GTEST_ATTRIBUTE_UNUSED_ - declares that a class' instances or a
291 // variable don't have to be used.
292 // GTEST_DISALLOW_ASSIGN_ - disables operator=.
293 // GTEST_DISALLOW_COPY_AND_ASSIGN_ - disables copy ctor and operator=.
294 // GTEST_MUST_USE_RESULT_ - declares that a function's result must be used.
295 // GTEST_INTENTIONAL_CONST_COND_PUSH_ - start code section where MSVC C4127 is
296 // suppressed (constant conditional).
297 // GTEST_INTENTIONAL_CONST_COND_POP_ - finish code section where MSVC C4127
298 // is suppressed.
299 //
300 // Synchronization:
301 // Mutex, MutexLock, ThreadLocal, GetThreadCount()
302 // - synchronization primitives.
303 //
304 // Template meta programming:
305 // IteratorTraits - partial implementation of std::iterator_traits, which
306 // is not available in libCstd when compiled with Sun C++.
307 //
308 //
309 // Regular expressions:
310 // RE - a simple regular expression class using the POSIX
311 // Extended Regular Expression syntax on UNIX-like platforms
312 // GOOGLETEST_CM0008 DO NOT DELETE
313 // or a reduced regular exception syntax on other
314 // platforms, including Windows.
315 // Logging:
316 // GTEST_LOG_() - logs messages at the specified severity level.
317 // LogToStderr() - directs all log messages to stderr.
318 // FlushInfoLog() - flushes informational log messages.
319 //
320 // Stdout and stderr capturing:
321 // CaptureStdout() - starts capturing stdout.
322 // GetCapturedStdout() - stops capturing stdout and returns the captured
323 // string.
324 // CaptureStderr() - starts capturing stderr.
325 // GetCapturedStderr() - stops capturing stderr and returns the captured
326 // string.
327 //
328 // Integer types:
329 // TypeWithSize - maps an integer to a int type.
330 // Int32, UInt32, Int64, UInt64, TimeInMillis
331 // - integers of known sizes.
332 // BiggestInt - the biggest signed integer type.
333 //
334 // Command-line utilities:
335 // GTEST_DECLARE_*() - declares a flag.
336 // GTEST_DEFINE_*() - defines a flag.
337 // GetInjectableArgvs() - returns the command line as a vector of strings.
338 //
339 // Environment variable utilities:
340 // GetEnv() - gets the value of an environment variable.
341 // BoolFromGTestEnv() - parses a bool environment variable.
342 // Int32FromGTestEnv() - parses an Int32 environment variable.
343 // StringFromGTestEnv() - parses a string environment variable.
344 
345 #include <ctype.h> // for isspace, etc
346 #include <stddef.h> // for ptrdiff_t
347 #include <stdio.h>
348 #include <stdlib.h>
349 #include <string.h>
350 #include <memory>
351 #include <type_traits>
352 
353 #ifndef _WIN32_WCE
354 # include <sys/types.h>
355 # include <sys/stat.h>
356 #endif // !_WIN32_WCE
357 
358 #if defined __APPLE__
359 # include <AvailabilityMacros.h>
360 # include <TargetConditionals.h>
361 #endif
362 
363 // Brings in the definition of HAS_GLOBAL_STRING. This must be done
364 // BEFORE we test HAS_GLOBAL_STRING.
365 #include <string> // NOLINT
366 #include <algorithm> // NOLINT
367 #include <iostream> // NOLINT
368 #include <sstream> // NOLINT
369 #include <tuple>
370 #include <utility>
371 #include <vector> // NOLINT
372 
373 // Copyright 2015, Google Inc.
374 // All rights reserved.
375 //
376 // Redistribution and use in source and binary forms, with or without
377 // modification, are permitted provided that the following conditions are
378 // met:
379 //
380 // * Redistributions of source code must retain the above copyright
381 // notice, this list of conditions and the following disclaimer.
382 // * Redistributions in binary form must reproduce the above
383 // copyright notice, this list of conditions and the following disclaimer
384 // in the documentation and/or other materials provided with the
385 // distribution.
386 // * Neither the name of Google Inc. nor the names of its
387 // contributors may be used to endorse or promote products derived from
388 // this software without specific prior written permission.
389 //
390 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
391 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
392 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
393 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
394 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
395 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
396 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
397 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
398 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
399 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
400 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
401 //
402 // The Google C++ Testing and Mocking Framework (Google Test)
403 //
404 // This header file defines the GTEST_OS_* macro.
405 // It is separate from gtest-port.h so that custom/gtest-port.h can include it.
406 
407 #ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_ARCH_H_
408 #define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_ARCH_H_
409 
410 // Determines the platform on which Google Test is compiled.
411 #ifdef __CYGWIN__
412 # define GTEST_OS_CYGWIN 1
413 # elif defined(__MINGW__) || defined(__MINGW32__) || defined(__MINGW64__)
414 # define GTEST_OS_WINDOWS_MINGW 1
415 # define GTEST_OS_WINDOWS 1
416 #elif defined _WIN32
417 # define GTEST_OS_WINDOWS 1
418 # ifdef _WIN32_WCE
419 # define GTEST_OS_WINDOWS_MOBILE 1
420 # elif defined(WINAPI_FAMILY)
421 # include <winapifamily.h>
422 # if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
423 # define GTEST_OS_WINDOWS_DESKTOP 1
424 # elif WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_PHONE_APP)
425 # define GTEST_OS_WINDOWS_PHONE 1
426 # elif WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
427 # define GTEST_OS_WINDOWS_RT 1
428 # elif WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_TV_TITLE)
429 # define GTEST_OS_WINDOWS_PHONE 1
430 # define GTEST_OS_WINDOWS_TV_TITLE 1
431 # else
432  // WINAPI_FAMILY defined but no known partition matched.
433  // Default to desktop.
434 # define GTEST_OS_WINDOWS_DESKTOP 1
435 # endif
436 # else
437 # define GTEST_OS_WINDOWS_DESKTOP 1
438 # endif // _WIN32_WCE
439 #elif defined __OS2__
440 # define GTEST_OS_OS2 1
441 #elif defined __APPLE__
442 # define GTEST_OS_MAC 1
443 # if TARGET_OS_IPHONE
444 # define GTEST_OS_IOS 1
445 # endif
446 #elif defined __FreeBSD__
447 # define GTEST_OS_FREEBSD 1
448 #elif defined __Fuchsia__
449 # define GTEST_OS_FUCHSIA 1
450 #elif defined __linux__
451 # define GTEST_OS_LINUX 1
452 # if defined __ANDROID__
453 # define GTEST_OS_LINUX_ANDROID 1
454 # endif
455 #elif defined __MVS__
456 # define GTEST_OS_ZOS 1
457 #elif defined(__sun) && defined(__SVR4)
458 # define GTEST_OS_SOLARIS 1
459 #elif defined(_AIX)
460 # define GTEST_OS_AIX 1
461 #elif defined(__hpux)
462 # define GTEST_OS_HPUX 1
463 #elif defined __native_client__
464 # define GTEST_OS_NACL 1
465 #elif defined __NetBSD__
466 # define GTEST_OS_NETBSD 1
467 #elif defined __OpenBSD__
468 # define GTEST_OS_OPENBSD 1
469 #elif defined __QNX__
470 # define GTEST_OS_QNX 1
471 #endif // __CYGWIN__
472 
473 #endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_ARCH_H_
474 // Copyright 2015, Google Inc.
475 // All rights reserved.
476 //
477 // Redistribution and use in source and binary forms, with or without
478 // modification, are permitted provided that the following conditions are
479 // met:
480 //
481 // * Redistributions of source code must retain the above copyright
482 // notice, this list of conditions and the following disclaimer.
483 // * Redistributions in binary form must reproduce the above
484 // copyright notice, this list of conditions and the following disclaimer
485 // in the documentation and/or other materials provided with the
486 // distribution.
487 // * Neither the name of Google Inc. nor the names of its
488 // contributors may be used to endorse or promote products derived from
489 // this software without specific prior written permission.
490 //
491 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
492 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
493 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
494 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
495 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
496 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
497 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
498 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
499 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
500 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
501 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
502 //
503 // Injection point for custom user configurations. See README for details
504 //
505 // ** Custom implementation starts here **
506 
507 #ifndef GTEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_PORT_H_
508 #define GTEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_PORT_H_
509 
510 #endif // GTEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_PORT_H_
511 
512 #if !defined(GTEST_DEV_EMAIL_)
513 # define GTEST_DEV_EMAIL_ "googletestframework@@googlegroups.com"
514 # define GTEST_FLAG_PREFIX_ "gtest_"
515 # define GTEST_FLAG_PREFIX_DASH_ "gtest-"
516 # define GTEST_FLAG_PREFIX_UPPER_ "GTEST_"
517 # define GTEST_NAME_ "Google Test"
518 # define GTEST_PROJECT_URL_ "https://github.com/google/googletest/"
519 #endif // !defined(GTEST_DEV_EMAIL_)
520 
521 #if !defined(GTEST_INIT_GOOGLE_TEST_NAME_)
522 # define GTEST_INIT_GOOGLE_TEST_NAME_ "testing::InitGoogleTest"
523 #endif // !defined(GTEST_INIT_GOOGLE_TEST_NAME_)
524 
525 // Determines the version of gcc that is used to compile this.
526 #ifdef __GNUC__
527 // 40302 means version 4.3.2.
528 # define GTEST_GCC_VER_ \
529  (__GNUC__*10000 + __GNUC_MINOR__*100 + __GNUC_PATCHLEVEL__)
530 #endif // __GNUC__
531 
532 // Macros for disabling Microsoft Visual C++ warnings.
533 //
534 // GTEST_DISABLE_MSC_WARNINGS_PUSH_(4800 4385)
535 // /* code that triggers warnings C4800 and C4385 */
536 // GTEST_DISABLE_MSC_WARNINGS_POP_()
537 #if defined(_MSC_VER)
538 # define GTEST_DISABLE_MSC_WARNINGS_PUSH_(warnings) \
539  __pragma(warning(push)) \
540  __pragma(warning(disable: warnings))
541 # define GTEST_DISABLE_MSC_WARNINGS_POP_() \
542  __pragma(warning(pop))
543 #else
544 // Not all compilers are MSVC
545 # define GTEST_DISABLE_MSC_WARNINGS_PUSH_(warnings)
546 # define GTEST_DISABLE_MSC_WARNINGS_POP_()
547 #endif
548 
549 // Clang on Windows does not understand MSVC's pragma warning.
550 // We need clang-specific way to disable function deprecation warning.
551 #ifdef __clang__
552 # define GTEST_DISABLE_MSC_DEPRECATED_PUSH_() \
553  _Pragma("clang diagnostic push") \
554  _Pragma("clang diagnostic ignored \"-Wdeprecated-declarations\"") \
555  _Pragma("clang diagnostic ignored \"-Wdeprecated-implementations\"")
556 #define GTEST_DISABLE_MSC_DEPRECATED_POP_() \
557  _Pragma("clang diagnostic pop")
558 #else
559 # define GTEST_DISABLE_MSC_DEPRECATED_PUSH_() \
560  GTEST_DISABLE_MSC_WARNINGS_PUSH_(4996)
561 # define GTEST_DISABLE_MSC_DEPRECATED_POP_() \
562  GTEST_DISABLE_MSC_WARNINGS_POP_()
563 #endif
564 
565 // Brings in definitions for functions used in the testing::internal::posix
566 // namespace (read, write, close, chdir, isatty, stat). We do not currently
567 // use them on Windows Mobile.
568 #if GTEST_OS_WINDOWS
569 # if !GTEST_OS_WINDOWS_MOBILE
570 # include <direct.h>
571 # include <io.h>
572 # endif
573 // In order to avoid having to include <windows.h>, use forward declaration
574 #if GTEST_OS_WINDOWS_MINGW && !defined(__MINGW64_VERSION_MAJOR)
575 // MinGW defined _CRITICAL_SECTION and _RTL_CRITICAL_SECTION as two
576 // separate (equivalent) structs, instead of using typedef
577 typedef struct _CRITICAL_SECTION GTEST_CRITICAL_SECTION;
578 #else
579 // Assume CRITICAL_SECTION is a typedef of _RTL_CRITICAL_SECTION.
580 // This assumption is verified by
581 // WindowsTypesTest.CRITICAL_SECTIONIs_RTL_CRITICAL_SECTION.
582 typedef struct _RTL_CRITICAL_SECTION GTEST_CRITICAL_SECTION;
583 #endif
584 #else
585 // This assumes that non-Windows OSes provide unistd.h. For OSes where this
586 // is not the case, we need to include headers that provide the functions
587 // mentioned above.
588 # include <unistd.h>
589 # include <strings.h>
590 #endif // GTEST_OS_WINDOWS
591 
592 #if GTEST_OS_LINUX_ANDROID
593 // Used to define __ANDROID_API__ matching the target NDK API level.
594 # include <android/api-level.h> // NOLINT
595 #endif
596 
597 // Defines this to true iff Google Test can use POSIX regular expressions.
598 #ifndef GTEST_HAS_POSIX_RE
599 # if GTEST_OS_LINUX_ANDROID
600 // On Android, <regex.h> is only available starting with Gingerbread.
601 # define GTEST_HAS_POSIX_RE (__ANDROID_API__ >= 9)
602 # else
603 # define GTEST_HAS_POSIX_RE (!GTEST_OS_WINDOWS)
604 # endif
605 #endif
606 
607 #if GTEST_USES_PCRE
608 // The appropriate headers have already been included.
609 
610 #elif GTEST_HAS_POSIX_RE
611 
612 // On some platforms, <regex.h> needs someone to define size_t, and
613 // won't compile otherwise. We can #include it here as we already
614 // included <stdlib.h>, which is guaranteed to define size_t through
615 // <stddef.h>.
616 # include <regex.h> // NOLINT
617 
618 # define GTEST_USES_POSIX_RE 1
619 
620 #elif GTEST_OS_WINDOWS
621 
622 // <regex.h> is not available on Windows. Use our own simple regex
623 // implementation instead.
624 # define GTEST_USES_SIMPLE_RE 1
625 
626 #else
627 
628 // <regex.h> may not be available on this platform. Use our own
629 // simple regex implementation instead.
630 # define GTEST_USES_SIMPLE_RE 1
631 
632 #endif // GTEST_USES_PCRE
633 
634 #ifndef GTEST_HAS_EXCEPTIONS
635 // The user didn't tell us whether exceptions are enabled, so we need
636 // to figure it out.
637 # if defined(_MSC_VER) && defined(_CPPUNWIND)
638 // MSVC defines _CPPUNWIND to 1 iff exceptions are enabled.
639 # define GTEST_HAS_EXCEPTIONS 1
640 # elif defined(__BORLANDC__)
641 // C++Builder's implementation of the STL uses the _HAS_EXCEPTIONS
642 // macro to enable exceptions, so we'll do the same.
643 // Assumes that exceptions are enabled by default.
644 # ifndef _HAS_EXCEPTIONS
645 # define _HAS_EXCEPTIONS 1
646 # endif // _HAS_EXCEPTIONS
647 # define GTEST_HAS_EXCEPTIONS _HAS_EXCEPTIONS
648 # elif defined(__clang__)
649 // clang defines __EXCEPTIONS iff exceptions are enabled before clang 220714,
650 // but iff cleanups are enabled after that. In Obj-C++ files, there can be
651 // cleanups for ObjC exceptions which also need cleanups, even if C++ exceptions
652 // are disabled. clang has __has_feature(cxx_exceptions) which checks for C++
653 // exceptions starting at clang r206352, but which checked for cleanups prior to
654 // that. To reliably check for C++ exception availability with clang, check for
655 // __EXCEPTIONS && __has_feature(cxx_exceptions).
656 # define GTEST_HAS_EXCEPTIONS (__EXCEPTIONS && __has_feature(cxx_exceptions))
657 # elif defined(__GNUC__) && __EXCEPTIONS
658 // gcc defines __EXCEPTIONS to 1 iff exceptions are enabled.
659 # define GTEST_HAS_EXCEPTIONS 1
660 # elif defined(__SUNPRO_CC)
661 // Sun Pro CC supports exceptions. However, there is no compile-time way of
662 // detecting whether they are enabled or not. Therefore, we assume that
663 // they are enabled unless the user tells us otherwise.
664 # define GTEST_HAS_EXCEPTIONS 1
665 # elif defined(__IBMCPP__) && __EXCEPTIONS
666 // xlC defines __EXCEPTIONS to 1 iff exceptions are enabled.
667 # define GTEST_HAS_EXCEPTIONS 1
668 # elif defined(__HP_aCC)
669 // Exception handling is in effect by default in HP aCC compiler. It has to
670 // be turned of by +noeh compiler option if desired.
671 # define GTEST_HAS_EXCEPTIONS 1
672 # else
673 // For other compilers, we assume exceptions are disabled to be
674 // conservative.
675 # define GTEST_HAS_EXCEPTIONS 0
676 # endif // defined(_MSC_VER) || defined(__BORLANDC__)
677 #endif // GTEST_HAS_EXCEPTIONS
678 
679 #if !defined(GTEST_HAS_STD_STRING)
680 // Even though we don't use this macro any longer, we keep it in case
681 // some clients still depend on it.
682 # define GTEST_HAS_STD_STRING 1
683 #elif !GTEST_HAS_STD_STRING
684 // The user told us that ::std::string isn't available.
685 # error "::std::string isn't available."
686 #endif // !defined(GTEST_HAS_STD_STRING)
687 
688 #ifndef GTEST_HAS_GLOBAL_STRING
689 # define GTEST_HAS_GLOBAL_STRING 0
690 #endif // GTEST_HAS_GLOBAL_STRING
691 
692 #ifndef GTEST_HAS_STD_WSTRING
693 // The user didn't tell us whether ::std::wstring is available, so we need
694 // to figure it out.
695 // Cygwin 1.7 and below doesn't support ::std::wstring.
696 // Solaris' libc++ doesn't support it either. Android has
697 // no support for it at least as recent as Froyo (2.2).
698 # define GTEST_HAS_STD_WSTRING \
699  (!(GTEST_OS_LINUX_ANDROID || GTEST_OS_CYGWIN || GTEST_OS_SOLARIS))
700 
701 #endif // GTEST_HAS_STD_WSTRING
702 
703 #ifndef GTEST_HAS_GLOBAL_WSTRING
704 // The user didn't tell us whether ::wstring is available, so we need
705 // to figure it out.
706 # define GTEST_HAS_GLOBAL_WSTRING \
707  (GTEST_HAS_STD_WSTRING && GTEST_HAS_GLOBAL_STRING)
708 #endif // GTEST_HAS_GLOBAL_WSTRING
709 
710 // Determines whether RTTI is available.
711 #ifndef GTEST_HAS_RTTI
712 // The user didn't tell us whether RTTI is enabled, so we need to
713 // figure it out.
714 
715 # ifdef _MSC_VER
716 
717 # ifdef _CPPRTTI // MSVC defines this macro iff RTTI is enabled.
718 # define GTEST_HAS_RTTI 1
719 # else
720 # define GTEST_HAS_RTTI 0
721 # endif
722 
723 // Starting with version 4.3.2, gcc defines __GXX_RTTI iff RTTI is enabled.
724 # elif defined(__GNUC__)
725 
726 # ifdef __GXX_RTTI
727 // When building against STLport with the Android NDK and with
728 // -frtti -fno-exceptions, the build fails at link time with undefined
729 // references to __cxa_bad_typeid. Note sure if STL or toolchain bug,
730 // so disable RTTI when detected.
731 # if GTEST_OS_LINUX_ANDROID && defined(_STLPORT_MAJOR) && \
732  !defined(__EXCEPTIONS)
733 # define GTEST_HAS_RTTI 0
734 # else
735 # define GTEST_HAS_RTTI 1
736 # endif // GTEST_OS_LINUX_ANDROID && __STLPORT_MAJOR && !__EXCEPTIONS
737 # else
738 # define GTEST_HAS_RTTI 0
739 # endif // __GXX_RTTI
740 
741 // Clang defines __GXX_RTTI starting with version 3.0, but its manual recommends
742 // using has_feature instead. has_feature(cxx_rtti) is supported since 2.7, the
743 // first version with C++ support.
744 # elif defined(__clang__)
745 
746 # define GTEST_HAS_RTTI __has_feature(cxx_rtti)
747 
748 // Starting with version 9.0 IBM Visual Age defines __RTTI_ALL__ to 1 if
749 // both the typeid and dynamic_cast features are present.
750 # elif defined(__IBMCPP__) && (__IBMCPP__ >= 900)
751 
752 # ifdef __RTTI_ALL__
753 # define GTEST_HAS_RTTI 1
754 # else
755 # define GTEST_HAS_RTTI 0
756 # endif
757 
758 # else
759 
760 // For all other compilers, we assume RTTI is enabled.
761 # define GTEST_HAS_RTTI 1
762 
763 # endif // _MSC_VER
764 
765 #endif // GTEST_HAS_RTTI
766 
767 // It's this header's responsibility to #include <typeinfo> when RTTI
768 // is enabled.
769 #if GTEST_HAS_RTTI
770 # include <typeinfo>
771 #endif
772 
773 // Determines whether Google Test can use the pthreads library.
774 #ifndef GTEST_HAS_PTHREAD
775 // The user didn't tell us explicitly, so we make reasonable assumptions about
776 // which platforms have pthreads support.
777 //
778 // To disable threading support in Google Test, add -DGTEST_HAS_PTHREAD=0
779 // to your compiler flags.
780 #define GTEST_HAS_PTHREAD \
781  (GTEST_OS_LINUX || GTEST_OS_MAC || GTEST_OS_HPUX || GTEST_OS_QNX || \
782  GTEST_OS_FREEBSD || GTEST_OS_NACL || GTEST_OS_NETBSD || GTEST_OS_FUCHSIA)
783 #endif // GTEST_HAS_PTHREAD
784 
785 #if GTEST_HAS_PTHREAD
786 // gtest-port.h guarantees to #include <pthread.h> when GTEST_HAS_PTHREAD is
787 // true.
788 # include <pthread.h> // NOLINT
789 
790 // For timespec and nanosleep, used below.
791 # include <time.h> // NOLINT
792 #endif
793 
794 // Determines whether clone(2) is supported.
795 // Usually it will only be available on Linux, excluding
796 // Linux on the Itanium architecture.
797 // Also see http://linux.die.net/man/2/clone.
798 #ifndef GTEST_HAS_CLONE
799 // The user didn't tell us, so we need to figure it out.
800 
801 # if GTEST_OS_LINUX && !defined(__ia64__)
802 # if GTEST_OS_LINUX_ANDROID
803 // On Android, clone() became available at different API levels for each 32-bit
804 // architecture.
805 # if defined(__LP64__) || \
806  (defined(__arm__) && __ANDROID_API__ >= 9) || \
807  (defined(__mips__) && __ANDROID_API__ >= 12) || \
808  (defined(__i386__) && __ANDROID_API__ >= 17)
809 # define GTEST_HAS_CLONE 1
810 # else
811 # define GTEST_HAS_CLONE 0
812 # endif
813 # else
814 # define GTEST_HAS_CLONE 1
815 # endif
816 # else
817 # define GTEST_HAS_CLONE 0
818 # endif // GTEST_OS_LINUX && !defined(__ia64__)
819 
820 #endif // GTEST_HAS_CLONE
821 
822 // Determines whether to support stream redirection. This is used to test
823 // output correctness and to implement death tests.
824 #ifndef GTEST_HAS_STREAM_REDIRECTION
825 // By default, we assume that stream redirection is supported on all
826 // platforms except known mobile ones.
827 # if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_WINDOWS_PHONE || GTEST_OS_WINDOWS_RT
828 # define GTEST_HAS_STREAM_REDIRECTION 0
829 # else
830 # define GTEST_HAS_STREAM_REDIRECTION 1
831 # endif // !GTEST_OS_WINDOWS_MOBILE
832 #endif // GTEST_HAS_STREAM_REDIRECTION
833 
834 // Determines whether to support death tests.
835 // pops up a dialog window that cannot be suppressed programmatically.
836 #if (GTEST_OS_LINUX || GTEST_OS_CYGWIN || GTEST_OS_SOLARIS || \
837  (GTEST_OS_MAC && !GTEST_OS_IOS) || \
838  (GTEST_OS_WINDOWS_DESKTOP && _MSC_VER) || \
839  GTEST_OS_WINDOWS_MINGW || GTEST_OS_AIX || GTEST_OS_HPUX || \
840  GTEST_OS_OPENBSD || GTEST_OS_QNX || GTEST_OS_FREEBSD || \
841  GTEST_OS_NETBSD || GTEST_OS_FUCHSIA)
842 # define GTEST_HAS_DEATH_TEST 1
843 #endif
844 
845 // Determines whether to support type-driven tests.
846 
847 // Typed tests need <typeinfo> and variadic macros, which GCC, VC++ 8.0,
848 // Sun Pro CC, IBM Visual Age, and HP aCC support.
849 #if defined(__GNUC__) || defined(_MSC_VER) || defined(__SUNPRO_CC) || \
850  defined(__IBMCPP__) || defined(__HP_aCC)
851 # define GTEST_HAS_TYPED_TEST 1
852 # define GTEST_HAS_TYPED_TEST_P 1
853 #endif
854 
855 // Determines whether the system compiler uses UTF-16 for encoding wide strings.
856 #define GTEST_WIDE_STRING_USES_UTF16_ \
857  (GTEST_OS_WINDOWS || GTEST_OS_CYGWIN || GTEST_OS_AIX || GTEST_OS_OS2)
858 
859 // Determines whether test results can be streamed to a socket.
860 #if GTEST_OS_LINUX
861 # define GTEST_CAN_STREAM_RESULTS_ 1
862 #endif
863 
864 // Defines some utility macros.
865 
866 // The GNU compiler emits a warning if nested "if" statements are followed by
867 // an "else" statement and braces are not used to explicitly disambiguate the
868 // "else" binding. This leads to problems with code like:
869 //
870 // if (gate)
871 // ASSERT_*(condition) << "Some message";
872 //
873 // The "switch (0) case 0:" idiom is used to suppress this.
874 #ifdef __INTEL_COMPILER
875 # define GTEST_AMBIGUOUS_ELSE_BLOCKER_
876 #else
877 # define GTEST_AMBIGUOUS_ELSE_BLOCKER_ switch (0) case 0: default: // NOLINT
878 #endif
879 
880 // Use this annotation at the end of a struct/class definition to
881 // prevent the compiler from optimizing away instances that are never
882 // used. This is useful when all interesting logic happens inside the
883 // c'tor and / or d'tor. Example:
884 //
885 // struct Foo {
886 // Foo() { ... }
887 // } GTEST_ATTRIBUTE_UNUSED_;
888 //
889 // Also use it after a variable or parameter declaration to tell the
890 // compiler the variable/parameter does not have to be used.
891 #if defined(__GNUC__) && !defined(COMPILER_ICC)
892 # define GTEST_ATTRIBUTE_UNUSED_ __attribute__ ((unused))
893 #elif defined(__clang__)
894 # if __has_attribute(unused)
895 # define GTEST_ATTRIBUTE_UNUSED_ __attribute__ ((unused))
896 # endif
897 #endif
898 #ifndef GTEST_ATTRIBUTE_UNUSED_
899 # define GTEST_ATTRIBUTE_UNUSED_
900 #endif
901 
902 // Use this annotation before a function that takes a printf format string.
903 #if (defined(__GNUC__) || defined(__clang__)) && !defined(COMPILER_ICC)
904 # if defined(__MINGW_PRINTF_FORMAT)
905 // MinGW has two different printf implementations. Ensure the format macro
906 // matches the selected implementation. See
907 // https://sourceforge.net/p/mingw-w64/wiki2/gnu%20printf/.
908 # define GTEST_ATTRIBUTE_PRINTF_(string_index, first_to_check) \
909  __attribute__((__format__(__MINGW_PRINTF_FORMAT, string_index, \
910  first_to_check)))
911 # else
912 # define GTEST_ATTRIBUTE_PRINTF_(string_index, first_to_check) \
913  __attribute__((__format__(__printf__, string_index, first_to_check)))
914 # endif
915 #else
916 # define GTEST_ATTRIBUTE_PRINTF_(string_index, first_to_check)
917 #endif
918 
919 
920 // A macro to disallow operator=
921 // This should be used in the private: declarations for a class.
922 #define GTEST_DISALLOW_ASSIGN_(type) \
923  void operator=(type const &) = delete
924 
925 // A macro to disallow copy constructor and operator=
926 // This should be used in the private: declarations for a class.
927 #define GTEST_DISALLOW_COPY_AND_ASSIGN_(type) \
928  type(type const &) = delete; \
929  GTEST_DISALLOW_ASSIGN_(type)
930 
931 // Tell the compiler to warn about unused return values for functions declared
932 // with this macro. The macro should be used on function declarations
933 // following the argument list:
934 //
935 // Sprocket* AllocateSprocket() GTEST_MUST_USE_RESULT_;
936 #if defined(__GNUC__) && !defined(COMPILER_ICC)
937 # define GTEST_MUST_USE_RESULT_ __attribute__ ((warn_unused_result))
938 #else
939 # define GTEST_MUST_USE_RESULT_
940 #endif // __GNUC__ && !COMPILER_ICC
941 
942 // MS C++ compiler emits warning when a conditional expression is compile time
943 // constant. In some contexts this warning is false positive and needs to be
944 // suppressed. Use the following two macros in such cases:
945 //
946 // GTEST_INTENTIONAL_CONST_COND_PUSH_()
947 // while (true) {
948 // GTEST_INTENTIONAL_CONST_COND_POP_()
949 // }
950 # define GTEST_INTENTIONAL_CONST_COND_PUSH_() \
951  GTEST_DISABLE_MSC_WARNINGS_PUSH_(4127)
952 # define GTEST_INTENTIONAL_CONST_COND_POP_() \
953  GTEST_DISABLE_MSC_WARNINGS_POP_()
954 
955 // Determine whether the compiler supports Microsoft's Structured Exception
956 // Handling. This is supported by several Windows compilers but generally
957 // does not exist on any other system.
958 #ifndef GTEST_HAS_SEH
959 // The user didn't tell us, so we need to figure it out.
960 
961 # if defined(_MSC_VER) || defined(__BORLANDC__)
962 // These two compilers are known to support SEH.
963 # define GTEST_HAS_SEH 1
964 # else
965 // Assume no SEH.
966 # define GTEST_HAS_SEH 0
967 # endif
968 
969 #endif // GTEST_HAS_SEH
970 
971 #ifndef GTEST_IS_THREADSAFE
972 
973 #define GTEST_IS_THREADSAFE \
974  (GTEST_HAS_MUTEX_AND_THREAD_LOCAL_ || \
975  (GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_PHONE && !GTEST_OS_WINDOWS_RT) || \
976  GTEST_HAS_PTHREAD)
977 
978 #endif // GTEST_IS_THREADSAFE
979 
980 // GTEST_API_ qualifies all symbols that must be exported. The definitions below
981 // are guarded by #ifndef to give embedders a chance to define GTEST_API_ in
982 // gtest/internal/custom/gtest-port.h
983 #ifndef GTEST_API_
984 
985 #ifdef _MSC_VER
986 # if GTEST_LINKED_AS_SHARED_LIBRARY
987 # define GTEST_API_ __declspec(dllimport)
988 # elif GTEST_CREATE_SHARED_LIBRARY
989 # define GTEST_API_ __declspec(dllexport)
990 # endif
991 #elif __GNUC__ >= 4 || defined(__clang__)
992 # define GTEST_API_ __attribute__((visibility ("default")))
993 #endif // _MSC_VER
994 
995 #endif // GTEST_API_
996 
997 #ifndef GTEST_API_
998 # define GTEST_API_
999 #endif // GTEST_API_
1000 
1001 #ifndef GTEST_DEFAULT_DEATH_TEST_STYLE
1002 # define GTEST_DEFAULT_DEATH_TEST_STYLE "fast"
1003 #endif // GTEST_DEFAULT_DEATH_TEST_STYLE
1004 
1005 #ifdef __GNUC__
1006 // Ask the compiler to never inline a given function.
1007 # define GTEST_NO_INLINE_ __attribute__((noinline))
1008 #else
1009 # define GTEST_NO_INLINE_
1010 #endif
1011 
1012 // _LIBCPP_VERSION is defined by the libc++ library from the LLVM project.
1013 #if !defined(GTEST_HAS_CXXABI_H_)
1014 # if defined(__GLIBCXX__) || (defined(_LIBCPP_VERSION) && !defined(_MSC_VER))
1015 # define GTEST_HAS_CXXABI_H_ 1
1016 # else
1017 # define GTEST_HAS_CXXABI_H_ 0
1018 # endif
1019 #endif
1020 
1021 // A function level attribute to disable checking for use of uninitialized
1022 // memory when built with MemorySanitizer.
1023 #if defined(__clang__)
1024 # if __has_feature(memory_sanitizer)
1025 # define GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_ \
1026  __attribute__((no_sanitize_memory))
1027 # else
1028 # define GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_
1029 # endif // __has_feature(memory_sanitizer)
1030 #else
1031 # define GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_
1032 #endif // __clang__
1033 
1034 // A function level attribute to disable AddressSanitizer instrumentation.
1035 #if defined(__clang__)
1036 # if __has_feature(address_sanitizer)
1037 # define GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_ \
1038  __attribute__((no_sanitize_address))
1039 # else
1040 # define GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_
1041 # endif // __has_feature(address_sanitizer)
1042 #else
1043 # define GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_
1044 #endif // __clang__
1045 
1046 // A function level attribute to disable ThreadSanitizer instrumentation.
1047 #if defined(__clang__)
1048 # if __has_feature(thread_sanitizer)
1049 # define GTEST_ATTRIBUTE_NO_SANITIZE_THREAD_ \
1050  __attribute__((no_sanitize_thread))
1051 # else
1052 # define GTEST_ATTRIBUTE_NO_SANITIZE_THREAD_
1053 # endif // __has_feature(thread_sanitizer)
1054 #else
1055 # define GTEST_ATTRIBUTE_NO_SANITIZE_THREAD_
1056 #endif // __clang__
1057 
1058 namespace testing {
1059 
1060 class Message;
1061 
1062 // Legacy imports for backwards compatibility.
1063 // New code should use std:: names directly.
1064 using std::get;
1065 using std::make_tuple;
1066 using std::tuple;
1067 using std::tuple_element;
1068 using std::tuple_size;
1069 
1070 namespace internal {
1071 
1072 // A secret type that Google Test users don't know about. It has no
1073 // definition on purpose. Therefore it's impossible to create a
1074 // Secret object, which is what we want.
1075 class Secret;
1076 
1077 // The GTEST_COMPILE_ASSERT_ is a legacy macro used to verify that a compile
1078 // time expression is true (in new code, use static_assert instead). For
1079 // example, you could use it to verify the size of a static array:
1080 //
1081 // GTEST_COMPILE_ASSERT_(GTEST_ARRAY_SIZE_(names) == NUM_NAMES,
1082 // names_incorrect_size);
1083 //
1084 // The second argument to the macro must be a valid C++ identifier. If the
1085 // expression is false, compiler will issue an error containing this identifier.
1086 #define GTEST_COMPILE_ASSERT_(expr, msg) static_assert(expr, #msg)
1087 
1088 // StaticAssertTypeEqHelper is used by StaticAssertTypeEq defined in gtest.h.
1089 //
1090 // This template is declared, but intentionally undefined.
1091 template <typename T1, typename T2>
1093 
1094 template <typename T>
1096  enum { value = true };
1097 };
1098 
1099 // Same as std::is_same<>.
1100 template <typename T, typename U>
1101 struct IsSame {
1102  enum { value = false };
1103 };
1104 template <typename T>
1105 struct IsSame<T, T> {
1106  enum { value = true };
1107 };
1108 
1109 // Evaluates to the number of elements in 'array'.
1110 #define GTEST_ARRAY_SIZE_(array) (sizeof(array) / sizeof(array[0]))
1111 
1112 #if GTEST_HAS_GLOBAL_STRING
1114 #else
1116 #endif // GTEST_HAS_GLOBAL_STRING
1117 
1118 #if GTEST_HAS_GLOBAL_WSTRING
1120 #elif GTEST_HAS_STD_WSTRING
1122 #endif // GTEST_HAS_GLOBAL_WSTRING
1123 
1124 // A helper for suppressing warnings on constant condition. It just
1125 // returns 'condition'.
1126 GTEST_API_ bool IsTrue(bool condition);
1127 
1128 // Defines RE.
1129 
1130 #if GTEST_USES_PCRE
1131 // if used, PCRE is injected by custom/gtest-port.h
1132 #elif GTEST_USES_POSIX_RE || GTEST_USES_SIMPLE_RE
1133 
1134 // A simple C++ wrapper for <regex.h>. It uses the POSIX Extended
1135 // Regular Expression syntax.
1137  public:
1138  // A copy constructor is required by the Standard to initialize object
1139  // references from r-values.
1140  RE(const RE& other) { Init(other.pattern()); }
1141 
1142  // Constructs an RE from a string.
1143  RE(const ::std::string& regex) { Init(regex.c_str()); } // NOLINT
1144 
1145 # if GTEST_HAS_GLOBAL_STRING
1146 
1147  RE(const ::string& regex) { Init(regex.c_str()); } // NOLINT
1148 
1149 # endif // GTEST_HAS_GLOBAL_STRING
1150 
1151  RE(const char* regex) { Init(regex); } // NOLINT
1152  ~RE();
1153 
1154  // Returns the string representation of the regex.
1155  const char* pattern() const { return pattern_; }
1156 
1157  // FullMatch(str, re) returns true iff regular expression re matches
1158  // the entire str.
1159  // PartialMatch(str, re) returns true iff regular expression re
1160  // matches a substring of str (including str itself).
1161  static bool FullMatch(const ::std::string& str, const RE& re) {
1162  return FullMatch(str.c_str(), re);
1163  }
1164  static bool PartialMatch(const ::std::string& str, const RE& re) {
1165  return PartialMatch(str.c_str(), re);
1166  }
1167 
1168 # if GTEST_HAS_GLOBAL_STRING
1169 
1170  static bool FullMatch(const ::string& str, const RE& re) {
1171  return FullMatch(str.c_str(), re);
1172  }
1173  static bool PartialMatch(const ::string& str, const RE& re) {
1174  return PartialMatch(str.c_str(), re);
1175  }
1176 
1177 # endif // GTEST_HAS_GLOBAL_STRING
1178 
1179  static bool FullMatch(const char* str, const RE& re);
1180  static bool PartialMatch(const char* str, const RE& re);
1181 
1182  private:
1183  void Init(const char* regex);
1184  const char* pattern_;
1185  bool is_valid_;
1186 
1187 # if GTEST_USES_POSIX_RE
1188 
1189  regex_t full_regex_; // For FullMatch().
1190  regex_t partial_regex_; // For PartialMatch().
1191 
1192 # else // GTEST_USES_SIMPLE_RE
1193 
1194  const char* full_pattern_; // For FullMatch();
1195 
1196 # endif
1197 
1199 };
1200 
1201 #endif // GTEST_USES_PCRE
1202 
1203 // Formats a source file path and a line number as they would appear
1204 // in an error message from the compiler used to compile this code.
1205 GTEST_API_ ::std::string FormatFileLocation(const char* file, int line);
1206 
1207 // Formats a file location for compiler-independent XML output.
1208 // Although this function is not platform dependent, we put it next to
1209 // FormatFileLocation in order to contrast the two functions.
1211  int line);
1212 
1213 // Defines logging utilities:
1214 // GTEST_LOG_(severity) - logs messages at the specified severity level. The
1215 // message itself is streamed into the macro.
1216 // LogToStderr() - directs all log messages to stderr.
1217 // FlushInfoLog() - flushes informational log messages.
1218 
1224 };
1225 
1226 // Formats log entry severity, provides a stream object for streaming the
1227 // log message, and terminates the message with a newline when going out of
1228 // scope.
1230  public:
1231  GTestLog(GTestLogSeverity severity, const char* file, int line);
1232 
1233  // Flushes the buffers and, if severity is GTEST_FATAL, aborts the program.
1234  ~GTestLog();
1235 
1236  ::std::ostream& GetStream() { return ::std::cerr; }
1237 
1238  private:
1239  const GTestLogSeverity severity_;
1240 
1242 };
1243 
1244 #if !defined(GTEST_LOG_)
1245 
1246 # define GTEST_LOG_(severity) \
1247  ::testing::internal::GTestLog(::testing::internal::GTEST_##severity, \
1248  __FILE__, __LINE__).GetStream()
1249 
1250 inline void LogToStderr() {}
1251 inline void FlushInfoLog() { fflush(nullptr); }
1252 
1253 #endif // !defined(GTEST_LOG_)
1254 
1255 #if !defined(GTEST_CHECK_)
1256 // INTERNAL IMPLEMENTATION - DO NOT USE.
1257 //
1258 // GTEST_CHECK_ is an all-mode assert. It aborts the program if the condition
1259 // is not satisfied.
1260 // Synopsys:
1261 // GTEST_CHECK_(boolean_condition);
1262 // or
1263 // GTEST_CHECK_(boolean_condition) << "Additional message";
1264 //
1265 // This checks the condition and if the condition is not satisfied
1266 // it prints message about the condition violation, including the
1267 // condition itself, plus additional message streamed into it, if any,
1268 // and then it aborts the program. It aborts the program irrespective of
1269 // whether it is built in the debug mode or not.
1270 # define GTEST_CHECK_(condition) \
1271  GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
1272  if (::testing::internal::IsTrue(condition)) \
1273  ; \
1274  else \
1275  GTEST_LOG_(FATAL) << "Condition " #condition " failed. "
1276 #endif // !defined(GTEST_CHECK_)
1277 
1278 // An all-mode assert to verify that the given POSIX-style function
1279 // call returns 0 (indicating success). Known limitation: this
1280 // doesn't expand to a balanced 'if' statement, so enclose the macro
1281 // in {} if you need to use it as the only statement in an 'if'
1282 // branch.
1283 #define GTEST_CHECK_POSIX_SUCCESS_(posix_call) \
1284  if (const int gtest_error = (posix_call)) \
1285  GTEST_LOG_(FATAL) << #posix_call << "failed with error " \
1286  << gtest_error
1287 
1288 // Adds reference to a type if it is not a reference type,
1289 // otherwise leaves it unchanged. This is the same as
1290 // tr1::add_reference, which is not widely available yet.
1291 template <typename T>
1292 struct AddReference { typedef T& type; }; // NOLINT
1293 template <typename T>
1294 struct AddReference<T&> { typedef T& type; }; // NOLINT
1295 
1296 // A handy wrapper around AddReference that works when the argument T
1297 // depends on template parameters.
1298 #define GTEST_ADD_REFERENCE_(T) \
1299  typename ::testing::internal::AddReference<T>::type
1300 
1301 // Transforms "T" into "const T&" according to standard reference collapsing
1302 // rules (this is only needed as a backport for C++98 compilers that do not
1303 // support reference collapsing). Specifically, it transforms:
1304 //
1305 // char ==> const char&
1306 // const char ==> const char&
1307 // char& ==> char&
1308 // const char& ==> const char&
1309 //
1310 // Note that the non-const reference will not have "const" added. This is
1311 // standard, and necessary so that "T" can always bind to "const T&".
1312 template <typename T>
1313 struct ConstRef { typedef const T& type; };
1314 template <typename T>
1315 struct ConstRef<T&> { typedef T& type; };
1316 
1317 // The argument T must depend on some template parameters.
1318 #define GTEST_REFERENCE_TO_CONST_(T) \
1319  typename ::testing::internal::ConstRef<T>::type
1320 
1321 // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
1322 //
1323 // Use ImplicitCast_ as a safe version of static_cast for upcasting in
1324 // the type hierarchy (e.g. casting a Foo* to a SuperclassOfFoo* or a
1325 // const Foo*). When you use ImplicitCast_, the compiler checks that
1326 // the cast is safe. Such explicit ImplicitCast_s are necessary in
1327 // surprisingly many situations where C++ demands an exact type match
1328 // instead of an argument type convertable to a target type.
1329 //
1330 // The syntax for using ImplicitCast_ is the same as for static_cast:
1331 //
1332 // ImplicitCast_<ToType>(expr)
1333 //
1334 // ImplicitCast_ would have been part of the C++ standard library,
1335 // but the proposal was submitted too late. It will probably make
1336 // its way into the language in the future.
1337 //
1338 // This relatively ugly name is intentional. It prevents clashes with
1339 // similar functions users may have (e.g., implicit_cast). The internal
1340 // namespace alone is not enough because the function can be found by ADL.
1341 template<typename To>
1342 inline To ImplicitCast_(To x) { return x; }
1343 
1344 // When you upcast (that is, cast a pointer from type Foo to type
1345 // SuperclassOfFoo), it's fine to use ImplicitCast_<>, since upcasts
1346 // always succeed. When you downcast (that is, cast a pointer from
1347 // type Foo to type SubclassOfFoo), static_cast<> isn't safe, because
1348 // how do you know the pointer is really of type SubclassOfFoo? It
1349 // could be a bare Foo, or of type DifferentSubclassOfFoo. Thus,
1350 // when you downcast, you should use this macro. In debug mode, we
1351 // use dynamic_cast<> to double-check the downcast is legal (we die
1352 // if it's not). In normal mode, we do the efficient static_cast<>
1353 // instead. Thus, it's important to test in debug mode to make sure
1354 // the cast is legal!
1355 // This is the only place in the code we should use dynamic_cast<>.
1356 // In particular, you SHOULDN'T be using dynamic_cast<> in order to
1357 // do RTTI (eg code like this:
1358 // if (dynamic_cast<Subclass1>(foo)) HandleASubclass1Object(foo);
1359 // if (dynamic_cast<Subclass2>(foo)) HandleASubclass2Object(foo);
1360 // You should design the code some other way not to need this.
1361 //
1362 // This relatively ugly name is intentional. It prevents clashes with
1363 // similar functions users may have (e.g., down_cast). The internal
1364 // namespace alone is not enough because the function can be found by ADL.
1365 template<typename To, typename From> // use like this: DownCast_<T*>(foo);
1366 inline To DownCast_(From* f) { // so we only accept pointers
1367  // Ensures that To is a sub-type of From *. This test is here only
1368  // for compile-time type checking, and has no overhead in an
1369  // optimized build at run-time, as it will be optimized away
1370  // completely.
1372  if (false) {
1374  const To to = nullptr;
1375  ::testing::internal::ImplicitCast_<From*>(to);
1376  }
1377 
1378 #if GTEST_HAS_RTTI
1379  // RTTI: debug mode only!
1380  GTEST_CHECK_(f == nullptr || dynamic_cast<To>(f) != nullptr);
1381 #endif
1382  return static_cast<To>(f);
1383 }
1384 
1385 // Downcasts the pointer of type Base to Derived.
1386 // Derived must be a subclass of Base. The parameter MUST
1387 // point to a class of type Derived, not any subclass of it.
1388 // When RTTI is available, the function performs a runtime
1389 // check to enforce this.
1390 template <class Derived, class Base>
1391 Derived* CheckedDowncastToActualType(Base* base) {
1392 #if GTEST_HAS_RTTI
1393  GTEST_CHECK_(typeid(*base) == typeid(Derived));
1394 #endif
1395 
1396 #if GTEST_HAS_DOWNCAST_
1397  return ::down_cast<Derived*>(base);
1398 #elif GTEST_HAS_RTTI
1399  return dynamic_cast<Derived*>(base); // NOLINT
1400 #else
1401  return static_cast<Derived*>(base); // Poor man's downcast.
1402 #endif
1403 }
1404 
1405 #if GTEST_HAS_STREAM_REDIRECTION
1406 
1407 // Defines the stderr capturer:
1408 // CaptureStdout - starts capturing stdout.
1409 // GetCapturedStdout - stops capturing stdout and returns the captured string.
1410 // CaptureStderr - starts capturing stderr.
1411 // GetCapturedStderr - stops capturing stderr and returns the captured string.
1412 //
1413 GTEST_API_ void CaptureStdout();
1415 GTEST_API_ void CaptureStderr();
1417 
1418 #endif // GTEST_HAS_STREAM_REDIRECTION
1419 // Returns the size (in bytes) of a file.
1420 GTEST_API_ size_t GetFileSize(FILE* file);
1421 
1422 // Reads the entire content of a file as a string.
1424 
1425 // All command line arguments.
1426 GTEST_API_ std::vector<std::string> GetArgvs();
1427 
1428 #if GTEST_HAS_DEATH_TEST
1429 
1430 std::vector<std::string> GetInjectableArgvs();
1431 // Deprecated: pass the args vector by value instead.
1432 void SetInjectableArgvs(const std::vector<std::string>* new_argvs);
1433 void SetInjectableArgvs(const std::vector<std::string>& new_argvs);
1434 #if GTEST_HAS_GLOBAL_STRING
1435 void SetInjectableArgvs(const std::vector< ::string>& new_argvs);
1436 #endif // GTEST_HAS_GLOBAL_STRING
1437 void ClearInjectableArgvs();
1438 
1439 #endif // GTEST_HAS_DEATH_TEST
1440 
1441 // Defines synchronization primitives.
1442 #if GTEST_IS_THREADSAFE
1443 # if GTEST_HAS_PTHREAD
1444 // Sleeps for (roughly) n milliseconds. This function is only for testing
1445 // Google Test's own constructs. Don't use it in user tests, either
1446 // directly or indirectly.
1447 inline void SleepMilliseconds(int n) {
1448  const timespec time = {
1449  0, // 0 seconds.
1450  n * 1000L * 1000L, // And n ms.
1451  };
1452  nanosleep(&time, nullptr);
1453 }
1454 # endif // GTEST_HAS_PTHREAD
1455 
1456 # if GTEST_HAS_NOTIFICATION_
1457 // Notification has already been imported into the namespace.
1458 // Nothing to do here.
1459 
1460 # elif GTEST_HAS_PTHREAD
1461 // Allows a controller thread to pause execution of newly created
1462 // threads until notified. Instances of this class must be created
1463 // and destroyed in the controller thread.
1464 //
1465 // This class is only for testing Google Test's own constructs. Do not
1466 // use it in user tests, either directly or indirectly.
1467 class Notification {
1468  public:
1469  Notification() : notified_(false) {
1470  GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_init(&mutex_, nullptr));
1471  }
1472  ~Notification() {
1473  pthread_mutex_destroy(&mutex_);
1474  }
1475 
1476  // Notifies all threads created with this notification to start. Must
1477  // be called from the controller thread.
1478  void Notify() {
1479  pthread_mutex_lock(&mutex_);
1480  notified_ = true;
1481  pthread_mutex_unlock(&mutex_);
1482  }
1483 
1484  // Blocks until the controller thread notifies. Must be called from a test
1485  // thread.
1486  void WaitForNotification() {
1487  for (;;) {
1488  pthread_mutex_lock(&mutex_);
1489  const bool notified = notified_;
1490  pthread_mutex_unlock(&mutex_);
1491  if (notified)
1492  break;
1493  SleepMilliseconds(10);
1494  }
1495  }
1496 
1497  private:
1498  pthread_mutex_t mutex_;
1499  bool notified_;
1500 
1501  GTEST_DISALLOW_COPY_AND_ASSIGN_(Notification);
1502 };
1503 
1504 # elif GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_PHONE && !GTEST_OS_WINDOWS_RT
1505 
1506 GTEST_API_ void SleepMilliseconds(int n);
1507 
1508 // Provides leak-safe Windows kernel handle ownership.
1509 // Used in death tests and in threading support.
1510 class GTEST_API_ AutoHandle {
1511  public:
1512  // Assume that Win32 HANDLE type is equivalent to void*. Doing so allows us to
1513  // avoid including <windows.h> in this header file. Including <windows.h> is
1514  // undesirable because it defines a lot of symbols and macros that tend to
1515  // conflict with client code. This assumption is verified by
1516  // WindowsTypesTest.HANDLEIsVoidStar.
1517  typedef void* Handle;
1518  AutoHandle();
1519  explicit AutoHandle(Handle handle);
1520 
1521  ~AutoHandle();
1522 
1523  Handle Get() const;
1524  void Reset();
1525  void Reset(Handle handle);
1526 
1527  private:
1528  // Returns true iff the handle is a valid handle object that can be closed.
1529  bool IsCloseable() const;
1530 
1531  Handle handle_;
1532 
1533  GTEST_DISALLOW_COPY_AND_ASSIGN_(AutoHandle);
1534 };
1535 
1536 // Allows a controller thread to pause execution of newly created
1537 // threads until notified. Instances of this class must be created
1538 // and destroyed in the controller thread.
1539 //
1540 // This class is only for testing Google Test's own constructs. Do not
1541 // use it in user tests, either directly or indirectly.
1542 class GTEST_API_ Notification {
1543  public:
1544  Notification();
1545  void Notify();
1546  void WaitForNotification();
1547 
1548  private:
1549  AutoHandle event_;
1550 
1551  GTEST_DISALLOW_COPY_AND_ASSIGN_(Notification);
1552 };
1553 # endif // GTEST_HAS_NOTIFICATION_
1554 
1555 // On MinGW, we can have both GTEST_OS_WINDOWS and GTEST_HAS_PTHREAD
1556 // defined, but we don't want to use MinGW's pthreads implementation, which
1557 // has conformance problems with some versions of the POSIX standard.
1558 # if GTEST_HAS_PTHREAD && !GTEST_OS_WINDOWS_MINGW
1559 
1560 // As a C-function, ThreadFuncWithCLinkage cannot be templated itself.
1561 // Consequently, it cannot select a correct instantiation of ThreadWithParam
1562 // in order to call its Run(). Introducing ThreadWithParamBase as a
1563 // non-templated base class for ThreadWithParam allows us to bypass this
1564 // problem.
1565 class ThreadWithParamBase {
1566  public:
1567  virtual ~ThreadWithParamBase() {}
1568  virtual void Run() = 0;
1569 };
1570 
1571 // pthread_create() accepts a pointer to a function type with the C linkage.
1572 // According to the Standard (7.5/1), function types with different linkages
1573 // are different even if they are otherwise identical. Some compilers (for
1574 // example, SunStudio) treat them as different types. Since class methods
1575 // cannot be defined with C-linkage we need to define a free C-function to
1576 // pass into pthread_create().
1577 extern "C" inline void* ThreadFuncWithCLinkage(void* thread) {
1578  static_cast<ThreadWithParamBase*>(thread)->Run();
1579  return nullptr;
1580 }
1581 
1582 // Helper class for testing Google Test's multi-threading constructs.
1583 // To use it, write:
1584 //
1585 // void ThreadFunc(int param) { /* Do things with param */ }
1586 // Notification thread_can_start;
1587 // ...
1588 // // The thread_can_start parameter is optional; you can supply NULL.
1589 // ThreadWithParam<int> thread(&ThreadFunc, 5, &thread_can_start);
1590 // thread_can_start.Notify();
1591 //
1592 // These classes are only for testing Google Test's own constructs. Do
1593 // not use them in user tests, either directly or indirectly.
1594 template <typename T>
1595 class ThreadWithParam : public ThreadWithParamBase {
1596  public:
1597  typedef void UserThreadFunc(T);
1598 
1599  ThreadWithParam(UserThreadFunc* func, T param, Notification* thread_can_start)
1600  : func_(func),
1601  param_(param),
1602  thread_can_start_(thread_can_start),
1603  finished_(false) {
1604  ThreadWithParamBase* const base = this;
1605  // The thread can be created only after all fields except thread_
1606  // have been initialized.
1608  pthread_create(&thread_, nullptr, &ThreadFuncWithCLinkage, base));
1609  }
1610  ~ThreadWithParam() override { Join(); }
1611 
1612  void Join() {
1613  if (!finished_) {
1614  GTEST_CHECK_POSIX_SUCCESS_(pthread_join(thread_, nullptr));
1615  finished_ = true;
1616  }
1617  }
1618 
1619  void Run() override {
1620  if (thread_can_start_ != nullptr) thread_can_start_->WaitForNotification();
1621  func_(param_);
1622  }
1623 
1624  private:
1625  UserThreadFunc* const func_; // User-supplied thread function.
1626  const T param_; // User-supplied parameter to the thread function.
1627  // When non-NULL, used to block execution until the controller thread
1628  // notifies.
1629  Notification* const thread_can_start_;
1630  bool finished_; // true iff we know that the thread function has finished.
1631  pthread_t thread_; // The native thread object.
1632 
1633  GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadWithParam);
1634 };
1635 # endif // !GTEST_OS_WINDOWS && GTEST_HAS_PTHREAD ||
1636  // GTEST_HAS_MUTEX_AND_THREAD_LOCAL_
1637 
1638 # if GTEST_HAS_MUTEX_AND_THREAD_LOCAL_
1639 // Mutex and ThreadLocal have already been imported into the namespace.
1640 // Nothing to do here.
1641 
1642 # elif GTEST_OS_WINDOWS && !GTEST_OS_WINDOWS_PHONE && !GTEST_OS_WINDOWS_RT
1643 
1644 // Mutex implements mutex on Windows platforms. It is used in conjunction
1645 // with class MutexLock:
1646 //
1647 // Mutex mutex;
1648 // ...
1649 // MutexLock lock(&mutex); // Acquires the mutex and releases it at the
1650 // // end of the current scope.
1651 //
1652 // A static Mutex *must* be defined or declared using one of the following
1653 // macros:
1654 // GTEST_DEFINE_STATIC_MUTEX_(g_some_mutex);
1655 // GTEST_DECLARE_STATIC_MUTEX_(g_some_mutex);
1656 //
1657 // (A non-static Mutex is defined/declared in the usual way).
1658 class GTEST_API_ Mutex {
1659  public:
1660  enum MutexType { kStatic = 0, kDynamic = 1 };
1661  // We rely on kStaticMutex being 0 as it is to what the linker initializes
1662  // type_ in static mutexes. critical_section_ will be initialized lazily
1663  // in ThreadSafeLazyInit().
1664  enum StaticConstructorSelector { kStaticMutex = 0 };
1665 
1666  // This constructor intentionally does nothing. It relies on type_ being
1667  // statically initialized to 0 (effectively setting it to kStatic) and on
1668  // ThreadSafeLazyInit() to lazily initialize the rest of the members.
1669  explicit Mutex(StaticConstructorSelector /*dummy*/) {}
1670 
1671  Mutex();
1672  ~Mutex();
1673 
1674  void Lock();
1675 
1676  void Unlock();
1677 
1678  // Does nothing if the current thread holds the mutex. Otherwise, crashes
1679  // with high probability.
1680  void AssertHeld();
1681 
1682  private:
1683  // Initializes owner_thread_id_ and critical_section_ in static mutexes.
1684  void ThreadSafeLazyInit();
1685 
1686  // Per https://blogs.msdn.microsoft.com/oldnewthing/20040223-00/?p=40503,
1687  // we assume that 0 is an invalid value for thread IDs.
1688  unsigned int owner_thread_id_;
1689 
1690  // For static mutexes, we rely on these members being initialized to zeros
1691  // by the linker.
1692  MutexType type_;
1693  long critical_section_init_phase_; // NOLINT
1694  GTEST_CRITICAL_SECTION* critical_section_;
1695 
1697 };
1698 
1699 # define GTEST_DECLARE_STATIC_MUTEX_(mutex) \
1700  extern ::testing::internal::Mutex mutex
1701 
1702 # define GTEST_DEFINE_STATIC_MUTEX_(mutex) \
1703  ::testing::internal::Mutex mutex(::testing::internal::Mutex::kStaticMutex)
1704 
1705 // We cannot name this class MutexLock because the ctor declaration would
1706 // conflict with a macro named MutexLock, which is defined on some
1707 // platforms. That macro is used as a defensive measure to prevent against
1708 // inadvertent misuses of MutexLock like "MutexLock(&mu)" rather than
1709 // "MutexLock l(&mu)". Hence the typedef trick below.
1710 class GTestMutexLock {
1711  public:
1712  explicit GTestMutexLock(Mutex* mutex)
1713  : mutex_(mutex) { mutex_->Lock(); }
1714 
1715  ~GTestMutexLock() { mutex_->Unlock(); }
1716 
1717  private:
1718  Mutex* const mutex_;
1719 
1721 };
1722 
1723 typedef GTestMutexLock MutexLock;
1724 
1725 // Base class for ValueHolder<T>. Allows a caller to hold and delete a value
1726 // without knowing its type.
1727 class ThreadLocalValueHolderBase {
1728  public:
1729  virtual ~ThreadLocalValueHolderBase() {}
1730 };
1731 
1732 // Provides a way for a thread to send notifications to a ThreadLocal
1733 // regardless of its parameter type.
1734 class ThreadLocalBase {
1735  public:
1736  // Creates a new ValueHolder<T> object holding a default value passed to
1737  // this ThreadLocal<T>'s constructor and returns it. It is the caller's
1738  // responsibility not to call this when the ThreadLocal<T> instance already
1739  // has a value on the current thread.
1740  virtual ThreadLocalValueHolderBase* NewValueForCurrentThread() const = 0;
1741 
1742  protected:
1743  ThreadLocalBase() {}
1744  virtual ~ThreadLocalBase() {}
1745 
1746  private:
1747  GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadLocalBase);
1748 };
1749 
1750 // Maps a thread to a set of ThreadLocals that have values instantiated on that
1751 // thread and notifies them when the thread exits. A ThreadLocal instance is
1752 // expected to persist until all threads it has values on have terminated.
1753 class GTEST_API_ ThreadLocalRegistry {
1754  public:
1755  // Registers thread_local_instance as having value on the current thread.
1756  // Returns a value that can be used to identify the thread from other threads.
1757  static ThreadLocalValueHolderBase* GetValueOnCurrentThread(
1758  const ThreadLocalBase* thread_local_instance);
1759 
1760  // Invoked when a ThreadLocal instance is destroyed.
1761  static void OnThreadLocalDestroyed(
1762  const ThreadLocalBase* thread_local_instance);
1763 };
1764 
1765 class GTEST_API_ ThreadWithParamBase {
1766  public:
1767  void Join();
1768 
1769  protected:
1770  class Runnable {
1771  public:
1772  virtual ~Runnable() {}
1773  virtual void Run() = 0;
1774  };
1775 
1776  ThreadWithParamBase(Runnable *runnable, Notification* thread_can_start);
1777  virtual ~ThreadWithParamBase();
1778 
1779  private:
1780  AutoHandle thread_;
1781 };
1782 
1783 // Helper class for testing Google Test's multi-threading constructs.
1784 template <typename T>
1785 class ThreadWithParam : public ThreadWithParamBase {
1786  public:
1787  typedef void UserThreadFunc(T);
1788 
1789  ThreadWithParam(UserThreadFunc* func, T param, Notification* thread_can_start)
1790  : ThreadWithParamBase(new RunnableImpl(func, param), thread_can_start) {
1791  }
1792  virtual ~ThreadWithParam() {}
1793 
1794  private:
1795  class RunnableImpl : public Runnable {
1796  public:
1797  RunnableImpl(UserThreadFunc* func, T param)
1798  : func_(func),
1799  param_(param) {
1800  }
1801  virtual ~RunnableImpl() {}
1802  virtual void Run() {
1803  func_(param_);
1804  }
1805 
1806  private:
1807  UserThreadFunc* const func_;
1808  const T param_;
1809 
1810  GTEST_DISALLOW_COPY_AND_ASSIGN_(RunnableImpl);
1811  };
1812 
1813  GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadWithParam);
1814 };
1815 
1816 // Implements thread-local storage on Windows systems.
1817 //
1818 // // Thread 1
1819 // ThreadLocal<int> tl(100); // 100 is the default value for each thread.
1820 //
1821 // // Thread 2
1822 // tl.set(150); // Changes the value for thread 2 only.
1823 // EXPECT_EQ(150, tl.get());
1824 //
1825 // // Thread 1
1826 // EXPECT_EQ(100, tl.get()); // In thread 1, tl has the original value.
1827 // tl.set(200);
1828 // EXPECT_EQ(200, tl.get());
1829 //
1830 // The template type argument T must have a public copy constructor.
1831 // In addition, the default ThreadLocal constructor requires T to have
1832 // a public default constructor.
1833 //
1834 // The users of a TheadLocal instance have to make sure that all but one
1835 // threads (including the main one) using that instance have exited before
1836 // destroying it. Otherwise, the per-thread objects managed for them by the
1837 // ThreadLocal instance are not guaranteed to be destroyed on all platforms.
1838 //
1839 // Google Test only uses global ThreadLocal objects. That means they
1840 // will die after main() has returned. Therefore, no per-thread
1841 // object managed by Google Test will be leaked as long as all threads
1842 // using Google Test have exited when main() returns.
1843 template <typename T>
1844 class ThreadLocal : public ThreadLocalBase {
1845  public:
1846  ThreadLocal() : default_factory_(new DefaultValueHolderFactory()) {}
1847  explicit ThreadLocal(const T& value)
1848  : default_factory_(new InstanceValueHolderFactory(value)) {}
1849 
1850  ~ThreadLocal() { ThreadLocalRegistry::OnThreadLocalDestroyed(this); }
1851 
1852  T* pointer() { return GetOrCreateValue(); }
1853  const T* pointer() const { return GetOrCreateValue(); }
1854  const T& get() const { return *pointer(); }
1855  void set(const T& value) { *pointer() = value; }
1856 
1857  private:
1858  // Holds a value of T. Can be deleted via its base class without the caller
1859  // knowing the type of T.
1860  class ValueHolder : public ThreadLocalValueHolderBase {
1861  public:
1862  ValueHolder() : value_() {}
1863  explicit ValueHolder(const T& value) : value_(value) {}
1864 
1865  T* pointer() { return &value_; }
1866 
1867  private:
1868  T value_;
1869  GTEST_DISALLOW_COPY_AND_ASSIGN_(ValueHolder);
1870  };
1871 
1872 
1873  T* GetOrCreateValue() const {
1874  return static_cast<ValueHolder*>(
1875  ThreadLocalRegistry::GetValueOnCurrentThread(this))->pointer();
1876  }
1877 
1878  virtual ThreadLocalValueHolderBase* NewValueForCurrentThread() const {
1879  return default_factory_->MakeNewHolder();
1880  }
1881 
1882  class ValueHolderFactory {
1883  public:
1884  ValueHolderFactory() {}
1885  virtual ~ValueHolderFactory() {}
1886  virtual ValueHolder* MakeNewHolder() const = 0;
1887 
1888  private:
1889  GTEST_DISALLOW_COPY_AND_ASSIGN_(ValueHolderFactory);
1890  };
1891 
1892  class DefaultValueHolderFactory : public ValueHolderFactory {
1893  public:
1894  DefaultValueHolderFactory() {}
1895  virtual ValueHolder* MakeNewHolder() const { return new ValueHolder(); }
1896 
1897  private:
1898  GTEST_DISALLOW_COPY_AND_ASSIGN_(DefaultValueHolderFactory);
1899  };
1900 
1901  class InstanceValueHolderFactory : public ValueHolderFactory {
1902  public:
1903  explicit InstanceValueHolderFactory(const T& value) : value_(value) {}
1904  virtual ValueHolder* MakeNewHolder() const {
1905  return new ValueHolder(value_);
1906  }
1907 
1908  private:
1909  const T value_; // The value for each thread.
1910 
1911  GTEST_DISALLOW_COPY_AND_ASSIGN_(InstanceValueHolderFactory);
1912  };
1913 
1914  std::unique_ptr<ValueHolderFactory> default_factory_;
1915 
1917 };
1918 
1919 # elif GTEST_HAS_PTHREAD
1920 
1921 // MutexBase and Mutex implement mutex on pthreads-based platforms.
1922 class MutexBase {
1923  public:
1924  // Acquires this mutex.
1925  void Lock() {
1926  GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_lock(&mutex_));
1927  owner_ = pthread_self();
1928  has_owner_ = true;
1929  }
1930 
1931  // Releases this mutex.
1932  void Unlock() {
1933  // Since the lock is being released the owner_ field should no longer be
1934  // considered valid. We don't protect writing to has_owner_ here, as it's
1935  // the caller's responsibility to ensure that the current thread holds the
1936  // mutex when this is called.
1937  has_owner_ = false;
1938  GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_unlock(&mutex_));
1939  }
1940 
1941  // Does nothing if the current thread holds the mutex. Otherwise, crashes
1942  // with high probability.
1943  void AssertHeld() const {
1944  GTEST_CHECK_(has_owner_ && pthread_equal(owner_, pthread_self()))
1945  << "The current thread is not holding the mutex @" << this;
1946  }
1947 
1948  // A static mutex may be used before main() is entered. It may even
1949  // be used before the dynamic initialization stage. Therefore we
1950  // must be able to initialize a static mutex object at link time.
1951  // This means MutexBase has to be a POD and its member variables
1952  // have to be public.
1953  public:
1954  pthread_mutex_t mutex_; // The underlying pthread mutex.
1955  // has_owner_ indicates whether the owner_ field below contains a valid thread
1956  // ID and is therefore safe to inspect (e.g., to use in pthread_equal()). All
1957  // accesses to the owner_ field should be protected by a check of this field.
1958  // An alternative might be to memset() owner_ to all zeros, but there's no
1959  // guarantee that a zero'd pthread_t is necessarily invalid or even different
1960  // from pthread_self().
1961  bool has_owner_;
1962  pthread_t owner_; // The thread holding the mutex.
1963 };
1964 
1965 // Forward-declares a static mutex.
1966 # define GTEST_DECLARE_STATIC_MUTEX_(mutex) \
1967  extern ::testing::internal::MutexBase mutex
1968 
1969 // Defines and statically (i.e. at link time) initializes a static mutex.
1970 // The initialization list here does not explicitly initialize each field,
1971 // instead relying on default initialization for the unspecified fields. In
1972 // particular, the owner_ field (a pthread_t) is not explicitly initialized.
1973 // This allows initialization to work whether pthread_t is a scalar or struct.
1974 // The flag -Wmissing-field-initializers must not be specified for this to work.
1975 #define GTEST_DEFINE_STATIC_MUTEX_(mutex) \
1976  ::testing::internal::MutexBase mutex = {PTHREAD_MUTEX_INITIALIZER, false, 0}
1977 
1978 // The Mutex class can only be used for mutexes created at runtime. It
1979 // shares its API with MutexBase otherwise.
1980 class Mutex : public MutexBase {
1981  public:
1982  Mutex() {
1983  GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_init(&mutex_, nullptr));
1984  has_owner_ = false;
1985  }
1986  ~Mutex() {
1987  GTEST_CHECK_POSIX_SUCCESS_(pthread_mutex_destroy(&mutex_));
1988  }
1989 
1990  private:
1992 };
1993 
1994 // We cannot name this class MutexLock because the ctor declaration would
1995 // conflict with a macro named MutexLock, which is defined on some
1996 // platforms. That macro is used as a defensive measure to prevent against
1997 // inadvertent misuses of MutexLock like "MutexLock(&mu)" rather than
1998 // "MutexLock l(&mu)". Hence the typedef trick below.
1999 class GTestMutexLock {
2000  public:
2001  explicit GTestMutexLock(MutexBase* mutex)
2002  : mutex_(mutex) { mutex_->Lock(); }
2003 
2004  ~GTestMutexLock() { mutex_->Unlock(); }
2005 
2006  private:
2007  MutexBase* const mutex_;
2008 
2010 };
2011 
2012 typedef GTestMutexLock MutexLock;
2013 
2014 // Helpers for ThreadLocal.
2015 
2016 // pthread_key_create() requires DeleteThreadLocalValue() to have
2017 // C-linkage. Therefore it cannot be templatized to access
2018 // ThreadLocal<T>. Hence the need for class
2019 // ThreadLocalValueHolderBase.
2020 class ThreadLocalValueHolderBase {
2021  public:
2022  virtual ~ThreadLocalValueHolderBase() {}
2023 };
2024 
2025 // Called by pthread to delete thread-local data stored by
2026 // pthread_setspecific().
2027 extern "C" inline void DeleteThreadLocalValue(void* value_holder) {
2028  delete static_cast<ThreadLocalValueHolderBase*>(value_holder);
2029 }
2030 
2031 // Implements thread-local storage on pthreads-based systems.
2032 template <typename T>
2033 class GTEST_API_ ThreadLocal {
2034  public:
2035  ThreadLocal()
2036  : key_(CreateKey()), default_factory_(new DefaultValueHolderFactory()) {}
2037  explicit ThreadLocal(const T& value)
2038  : key_(CreateKey()),
2039  default_factory_(new InstanceValueHolderFactory(value)) {}
2040 
2041  ~ThreadLocal() {
2042  // Destroys the managed object for the current thread, if any.
2043  DeleteThreadLocalValue(pthread_getspecific(key_));
2044 
2045  // Releases resources associated with the key. This will *not*
2046  // delete managed objects for other threads.
2047  GTEST_CHECK_POSIX_SUCCESS_(pthread_key_delete(key_));
2048  }
2049 
2050  T* pointer() { return GetOrCreateValue(); }
2051  const T* pointer() const { return GetOrCreateValue(); }
2052  const T& get() const { return *pointer(); }
2053  void set(const T& value) { *pointer() = value; }
2054 
2055  private:
2056  // Holds a value of type T.
2057  class ValueHolder : public ThreadLocalValueHolderBase {
2058  public:
2059  ValueHolder() : value_() {}
2060  explicit ValueHolder(const T& value) : value_(value) {}
2061 
2062  T* pointer() { return &value_; }
2063 
2064  private:
2065  T value_;
2066  GTEST_DISALLOW_COPY_AND_ASSIGN_(ValueHolder);
2067  };
2068 
2069  static pthread_key_t CreateKey() {
2070  pthread_key_t key;
2071  // When a thread exits, DeleteThreadLocalValue() will be called on
2072  // the object managed for that thread.
2074  pthread_key_create(&key, &DeleteThreadLocalValue));
2075  return key;
2076  }
2077 
2078  T* GetOrCreateValue() const {
2079  ThreadLocalValueHolderBase* const holder =
2080  static_cast<ThreadLocalValueHolderBase*>(pthread_getspecific(key_));
2081  if (holder != nullptr) {
2082  return CheckedDowncastToActualType<ValueHolder>(holder)->pointer();
2083  }
2084 
2085  ValueHolder* const new_holder = default_factory_->MakeNewHolder();
2086  ThreadLocalValueHolderBase* const holder_base = new_holder;
2087  GTEST_CHECK_POSIX_SUCCESS_(pthread_setspecific(key_, holder_base));
2088  return new_holder->pointer();
2089  }
2090 
2091  class ValueHolderFactory {
2092  public:
2093  ValueHolderFactory() {}
2094  virtual ~ValueHolderFactory() {}
2095  virtual ValueHolder* MakeNewHolder() const = 0;
2096 
2097  private:
2098  GTEST_DISALLOW_COPY_AND_ASSIGN_(ValueHolderFactory);
2099  };
2100 
2101  class DefaultValueHolderFactory : public ValueHolderFactory {
2102  public:
2103  DefaultValueHolderFactory() {}
2104  virtual ValueHolder* MakeNewHolder() const { return new ValueHolder(); }
2105 
2106  private:
2107  GTEST_DISALLOW_COPY_AND_ASSIGN_(DefaultValueHolderFactory);
2108  };
2109 
2110  class InstanceValueHolderFactory : public ValueHolderFactory {
2111  public:
2112  explicit InstanceValueHolderFactory(const T& value) : value_(value) {}
2113  virtual ValueHolder* MakeNewHolder() const {
2114  return new ValueHolder(value_);
2115  }
2116 
2117  private:
2118  const T value_; // The value for each thread.
2119 
2120  GTEST_DISALLOW_COPY_AND_ASSIGN_(InstanceValueHolderFactory);
2121  };
2122 
2123  // A key pthreads uses for looking up per-thread values.
2124  const pthread_key_t key_;
2125  std::unique_ptr<ValueHolderFactory> default_factory_;
2126 
2127  GTEST_DISALLOW_COPY_AND_ASSIGN_(ThreadLocal);
2128 };
2129 
2130 # endif // GTEST_HAS_MUTEX_AND_THREAD_LOCAL_
2131 
2132 #else // GTEST_IS_THREADSAFE
2133 
2134 // A dummy implementation of synchronization primitives (mutex, lock,
2135 // and thread-local variable). Necessary for compiling Google Test where
2136 // mutex is not supported - using Google Test in multiple threads is not
2137 // supported on such platforms.
2138 
2139 class Mutex {
2140  public:
2141  Mutex() {}
2142  void Lock() {}
2143  void Unlock() {}
2144  void AssertHeld() const {}
2145 };
2146 
2147 # define GTEST_DECLARE_STATIC_MUTEX_(mutex) \
2148  extern ::testing::internal::Mutex mutex
2149 
2150 # define GTEST_DEFINE_STATIC_MUTEX_(mutex) ::testing::internal::Mutex mutex
2151 
2152 // We cannot name this class MutexLock because the ctor declaration would
2153 // conflict with a macro named MutexLock, which is defined on some
2154 // platforms. That macro is used as a defensive measure to prevent against
2155 // inadvertent misuses of MutexLock like "MutexLock(&mu)" rather than
2156 // "MutexLock l(&mu)". Hence the typedef trick below.
2158  public:
2159  explicit GTestMutexLock(Mutex*) {} // NOLINT
2160 };
2161 
2163 
2164 template <typename T>
2166  public:
2167  ThreadLocal() : value_() {}
2168  explicit ThreadLocal(const T& value) : value_(value) {}
2169  T* pointer() { return &value_; }
2170  const T* pointer() const { return &value_; }
2171  const T& get() const { return value_; }
2172  void set(const T& value) { value_ = value; }
2173  private:
2174  T value_;
2175 };
2176 
2177 #endif // GTEST_IS_THREADSAFE
2178 
2179 // Returns the number of threads running in the process, or 0 to indicate that
2180 // we cannot detect it.
2181 GTEST_API_ size_t GetThreadCount();
2182 
2183 template <bool bool_value>
2186  static const bool value = bool_value;
2187 };
2188 template <bool bool_value> const bool bool_constant<bool_value>::value;
2189 
2192 
2193 template <typename T, typename U>
2194 struct is_same : public false_type {};
2195 
2196 template <typename T>
2197 struct is_same<T, T> : public true_type {};
2198 
2199 template <typename Iterator>
2201  typedef typename Iterator::value_type value_type;
2202 };
2203 
2204 
2205 template <typename T>
2206 struct IteratorTraits<T*> {
2207  typedef T value_type;
2208 };
2209 
2210 template <typename T>
2211 struct IteratorTraits<const T*> {
2212  typedef T value_type;
2213 };
2214 
2215 #if GTEST_OS_WINDOWS
2216 # define GTEST_PATH_SEP_ "\\"
2217 # define GTEST_HAS_ALT_PATH_SEP_ 1
2218 // The biggest signed integer type the compiler supports.
2219 typedef __int64 BiggestInt;
2220 #else
2221 # define GTEST_PATH_SEP_ "/"
2222 # define GTEST_HAS_ALT_PATH_SEP_ 0
2223 typedef long long BiggestInt; // NOLINT
2224 #endif // GTEST_OS_WINDOWS
2225 
2226 // Utilities for char.
2227 
2228 // isspace(int ch) and friends accept an unsigned char or EOF. char
2229 // may be signed, depending on the compiler (or compiler flags).
2230 // Therefore we need to cast a char to unsigned char before calling
2231 // isspace(), etc.
2232 
2233 inline bool IsAlpha(char ch) {
2234  return isalpha(static_cast<unsigned char>(ch)) != 0;
2235 }
2236 inline bool IsAlNum(char ch) {
2237  return isalnum(static_cast<unsigned char>(ch)) != 0;
2238 }
2239 inline bool IsDigit(char ch) {
2240  return isdigit(static_cast<unsigned char>(ch)) != 0;
2241 }
2242 inline bool IsLower(char ch) {
2243  return islower(static_cast<unsigned char>(ch)) != 0;
2244 }
2245 inline bool IsSpace(char ch) {
2246  return isspace(static_cast<unsigned char>(ch)) != 0;
2247 }
2248 inline bool IsUpper(char ch) {
2249  return isupper(static_cast<unsigned char>(ch)) != 0;
2250 }
2251 inline bool IsXDigit(char ch) {
2252  return isxdigit(static_cast<unsigned char>(ch)) != 0;
2253 }
2254 inline bool IsXDigit(wchar_t ch) {
2255  const unsigned char low_byte = static_cast<unsigned char>(ch);
2256  return ch == low_byte && isxdigit(low_byte) != 0;
2257 }
2258 
2259 inline char ToLower(char ch) {
2260  return static_cast<char>(tolower(static_cast<unsigned char>(ch)));
2261 }
2262 inline char ToUpper(char ch) {
2263  return static_cast<char>(toupper(static_cast<unsigned char>(ch)));
2264 }
2265 
2267  std::string::iterator it = str.end();
2268  while (it != str.begin() && IsSpace(*--it))
2269  it = str.erase(it);
2270  return str;
2271 }
2272 
2273 // The testing::internal::posix namespace holds wrappers for common
2274 // POSIX functions. These wrappers hide the differences between
2275 // Windows/MSVC and POSIX systems. Since some compilers define these
2276 // standard functions as macros, the wrapper cannot have the same name
2277 // as the wrapped function.
2278 
2279 namespace posix {
2280 
2281 // Functions with a different name on Windows.
2282 
2283 #if GTEST_OS_WINDOWS
2284 
2285 typedef struct _stat StatStruct;
2286 
2287 # ifdef __BORLANDC__
2288 inline int IsATTY(int fd) { return isatty(fd); }
2289 inline int StrCaseCmp(const char* s1, const char* s2) {
2290  return stricmp(s1, s2);
2291 }
2292 inline char* StrDup(const char* src) { return strdup(src); }
2293 # else // !__BORLANDC__
2294 # if GTEST_OS_WINDOWS_MOBILE
2295 inline int IsATTY(int /* fd */) { return 0; }
2296 # else
2297 inline int IsATTY(int fd) { return _isatty(fd); }
2298 # endif // GTEST_OS_WINDOWS_MOBILE
2299 inline int StrCaseCmp(const char* s1, const char* s2) {
2300  return _stricmp(s1, s2);
2301 }
2302 inline char* StrDup(const char* src) { return _strdup(src); }
2303 # endif // __BORLANDC__
2304 
2305 # if GTEST_OS_WINDOWS_MOBILE
2306 inline int FileNo(FILE* file) { return reinterpret_cast<int>(_fileno(file)); }
2307 // Stat(), RmDir(), and IsDir() are not needed on Windows CE at this
2308 // time and thus not defined there.
2309 # else
2310 inline int FileNo(FILE* file) { return _fileno(file); }
2311 inline int Stat(const char* path, StatStruct* buf) { return _stat(path, buf); }
2312 inline int RmDir(const char* dir) { return _rmdir(dir); }
2313 inline bool IsDir(const StatStruct& st) {
2314  return (_S_IFDIR & st.st_mode) != 0;
2315 }
2316 # endif // GTEST_OS_WINDOWS_MOBILE
2317 
2318 #else
2319 
2320 typedef struct stat StatStruct;
2321 
2322 inline int FileNo(FILE* file) { return fileno(file); }
2323 inline int IsATTY(int fd) { return isatty(fd); }
2324 inline int Stat(const char* path, StatStruct* buf) { return stat(path, buf); }
2325 inline int StrCaseCmp(const char* s1, const char* s2) {
2326  return strcasecmp(s1, s2);
2327 }
2328 inline char* StrDup(const char* src) { return strdup(src); }
2329 inline int RmDir(const char* dir) { return rmdir(dir); }
2330 inline bool IsDir(const StatStruct& st) { return S_ISDIR(st.st_mode); }
2331 
2332 #endif // GTEST_OS_WINDOWS
2333 
2334 // Functions deprecated by MSVC 8.0.
2335 
2337 
2338 inline const char* StrNCpy(char* dest, const char* src, size_t n) {
2339  return strncpy(dest, src, n);
2340 }
2341 
2342 // ChDir(), FReopen(), FDOpen(), Read(), Write(), Close(), and
2343 // StrError() aren't needed on Windows CE at this time and thus not
2344 // defined there.
2345 
2346 #if !GTEST_OS_WINDOWS_MOBILE && !GTEST_OS_WINDOWS_PHONE && !GTEST_OS_WINDOWS_RT
2347 inline int ChDir(const char* dir) { return chdir(dir); }
2348 #endif
2349 inline FILE* FOpen(const char* path, const char* mode) {
2350  return fopen(path, mode);
2351 }
2352 #if !GTEST_OS_WINDOWS_MOBILE
2353 inline FILE *FReopen(const char* path, const char* mode, FILE* stream) {
2354  return freopen(path, mode, stream);
2355 }
2356 inline FILE* FDOpen(int fd, const char* mode) { return fdopen(fd, mode); }
2357 #endif
2358 inline int FClose(FILE* fp) { return fclose(fp); }
2359 #if !GTEST_OS_WINDOWS_MOBILE
2360 inline int Read(int fd, void* buf, unsigned int count) {
2361  return static_cast<int>(read(fd, buf, count));
2362 }
2363 inline int Write(int fd, const void* buf, unsigned int count) {
2364  return static_cast<int>(write(fd, buf, count));
2365 }
2366 inline int Close(int fd) { return close(fd); }
2367 inline const char* StrError(int errnum) { return strerror(errnum); }
2368 #endif
2369 inline const char* GetEnv(const char* name) {
2370 #if GTEST_OS_WINDOWS_MOBILE || GTEST_OS_WINDOWS_PHONE || GTEST_OS_WINDOWS_RT
2371  // We are on Windows CE, which has no environment variables.
2372  static_cast<void>(name); // To prevent 'unused argument' warning.
2373  return nullptr;
2374 #elif defined(__BORLANDC__) || defined(__SunOS_5_8) || defined(__SunOS_5_9)
2375  // Environment variables which we programmatically clear will be set to the
2376  // empty string rather than unset (NULL). Handle that case.
2377  const char* const env = getenv(name);
2378  return (env != nullptr && env[0] != '\0') ? env : nullptr;
2379 #else
2380  return getenv(name);
2381 #endif
2382 }
2383 
2385 
2386 #if GTEST_OS_WINDOWS_MOBILE
2387 // Windows CE has no C library. The abort() function is used in
2388 // several places in Google Test. This implementation provides a reasonable
2389 // imitation of standard behaviour.
2390 [[noreturn]] void Abort();
2391 #else
2392 [[noreturn]] inline void Abort() { abort(); }
2393 #endif // GTEST_OS_WINDOWS_MOBILE
2394 
2395 } // namespace posix
2396 
2397 // MSVC "deprecates" snprintf and issues warnings wherever it is used. In
2398 // order to avoid these warnings, we need to use _snprintf or _snprintf_s on
2399 // MSVC-based platforms. We map the GTEST_SNPRINTF_ macro to the appropriate
2400 // function in order to achieve that. We use macro definition here because
2401 // snprintf is a variadic function.
2402 #if _MSC_VER && !GTEST_OS_WINDOWS_MOBILE
2403 // MSVC 2005 and above support variadic macros.
2404 # define GTEST_SNPRINTF_(buffer, size, format, ...) \
2405  _snprintf_s(buffer, size, size, format, __VA_ARGS__)
2406 #elif defined(_MSC_VER)
2407 // Windows CE does not define _snprintf_s
2408 # define GTEST_SNPRINTF_ _snprintf
2409 #else
2410 # define GTEST_SNPRINTF_ snprintf
2411 #endif
2412 
2413 // The maximum number a BiggestInt can represent. This definition
2414 // works no matter BiggestInt is represented in one's complement or
2415 // two's complement.
2416 //
2417 // We cannot rely on numeric_limits in STL, as __int64 and long long
2418 // are not part of standard C++ and numeric_limits doesn't need to be
2419 // defined for them.
2421  ~(static_cast<BiggestInt>(1) << (8*sizeof(BiggestInt) - 1));
2422 
2423 // This template class serves as a compile-time function from size to
2424 // type. It maps a size in bytes to a primitive type with that
2425 // size. e.g.
2426 //
2427 // TypeWithSize<4>::UInt
2428 //
2429 // is typedef-ed to be unsigned int (unsigned integer made up of 4
2430 // bytes).
2431 //
2432 // Such functionality should belong to STL, but I cannot find it
2433 // there.
2434 //
2435 // Google Test uses this class in the implementation of floating-point
2436 // comparison.
2437 //
2438 // For now it only handles UInt (unsigned int) as that's all Google Test
2439 // needs. Other types can be easily added in the future if need
2440 // arises.
2441 template <size_t size>
2443  public:
2444  // This prevents the user from using TypeWithSize<N> with incorrect
2445  // values of N.
2446  typedef void UInt;
2447 };
2448 
2449 // The specialization for size 4.
2450 template <>
2451 class TypeWithSize<4> {
2452  public:
2453  // unsigned int has size 4 in both gcc and MSVC.
2454  //
2455  // As base/basictypes.h doesn't compile on Windows, we cannot use
2456  // uint32, uint64, and etc here.
2457  typedef int Int;
2458  typedef unsigned int UInt;
2459 };
2460 
2461 // The specialization for size 8.
2462 template <>
2463 class TypeWithSize<8> {
2464  public:
2465 #if GTEST_OS_WINDOWS
2466  typedef __int64 Int;
2467  typedef unsigned __int64 UInt;
2468 #else
2469  typedef long long Int; // NOLINT
2470  typedef unsigned long long UInt; // NOLINT
2471 #endif // GTEST_OS_WINDOWS
2472 };
2473 
2474 // Integer types of known sizes.
2479 typedef TypeWithSize<8>::Int TimeInMillis; // Represents time in milliseconds.
2480 
2481 // Utilities for command line flags and environment variables.
2482 
2483 // Macro for referencing flags.
2484 #if !defined(GTEST_FLAG)
2485 # define GTEST_FLAG(name) FLAGS_gtest_##name
2486 #endif // !defined(GTEST_FLAG)
2487 
2488 #if !defined(GTEST_USE_OWN_FLAGFILE_FLAG_)
2489 # define GTEST_USE_OWN_FLAGFILE_FLAG_ 1
2490 #endif // !defined(GTEST_USE_OWN_FLAGFILE_FLAG_)
2491 
2492 #if !defined(GTEST_DECLARE_bool_)
2493 # define GTEST_FLAG_SAVER_ ::testing::internal::GTestFlagSaver
2494 
2495 // Macros for declaring flags.
2496 # define GTEST_DECLARE_bool_(name) GTEST_API_ extern bool GTEST_FLAG(name)
2497 # define GTEST_DECLARE_int32_(name) \
2498  GTEST_API_ extern ::testing::internal::Int32 GTEST_FLAG(name)
2499 # define GTEST_DECLARE_string_(name) \
2500  GTEST_API_ extern ::std::string GTEST_FLAG(name)
2501 
2502 // Macros for defining flags.
2503 # define GTEST_DEFINE_bool_(name, default_val, doc) \
2504  GTEST_API_ bool GTEST_FLAG(name) = (default_val)
2505 # define GTEST_DEFINE_int32_(name, default_val, doc) \
2506  GTEST_API_ ::testing::internal::Int32 GTEST_FLAG(name) = (default_val)
2507 # define GTEST_DEFINE_string_(name, default_val, doc) \
2508  GTEST_API_ ::std::string GTEST_FLAG(name) = (default_val)
2509 
2510 #endif // !defined(GTEST_DECLARE_bool_)
2511 
2512 // Thread annotations
2513 #if !defined(GTEST_EXCLUSIVE_LOCK_REQUIRED_)
2514 # define GTEST_EXCLUSIVE_LOCK_REQUIRED_(locks)
2515 # define GTEST_LOCK_EXCLUDED_(locks)
2516 #endif // !defined(GTEST_EXCLUSIVE_LOCK_REQUIRED_)
2517 
2518 // Parses 'str' for a 32-bit signed integer. If successful, writes the result
2519 // to *value and returns true; otherwise leaves *value unchanged and returns
2520 // false.
2521 bool ParseInt32(const Message& src_text, const char* str, Int32* value);
2522 
2523 // Parses a bool/Int32/string from the environment variable
2524 // corresponding to the given Google Test flag.
2525 bool BoolFromGTestEnv(const char* flag, bool default_val);
2526 GTEST_API_ Int32 Int32FromGTestEnv(const char* flag, Int32 default_val);
2528 const char* StringFromGTestEnv(const char* flag, const char* default_val);
2529 
2530 } // namespace internal
2531 } // namespace testing
2532 
2533 #endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_
2534 
2535 #if GTEST_OS_LINUX
2536 # include <stdlib.h>
2537 # include <sys/types.h>
2538 # include <sys/wait.h>
2539 # include <unistd.h>
2540 #endif // GTEST_OS_LINUX
2541 
2542 #if GTEST_HAS_EXCEPTIONS
2543 # include <stdexcept>
2544 #endif
2545 
2546 #include <ctype.h>
2547 #include <float.h>
2548 #include <string.h>
2549 #include <iomanip>
2550 #include <limits>
2551 #include <map>
2552 #include <set>
2553 #include <string>
2554 #include <vector>
2555 
2556 // Copyright 2005, Google Inc.
2557 // All rights reserved.
2558 //
2559 // Redistribution and use in source and binary forms, with or without
2560 // modification, are permitted provided that the following conditions are
2561 // met:
2562 //
2563 // * Redistributions of source code must retain the above copyright
2564 // notice, this list of conditions and the following disclaimer.
2565 // * Redistributions in binary form must reproduce the above
2566 // copyright notice, this list of conditions and the following disclaimer
2567 // in the documentation and/or other materials provided with the
2568 // distribution.
2569 // * Neither the name of Google Inc. nor the names of its
2570 // contributors may be used to endorse or promote products derived from
2571 // this software without specific prior written permission.
2572 //
2573 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
2574 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
2575 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
2576 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
2577 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
2578 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
2579 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
2580 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
2581 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
2582 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
2583 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2584 
2585 //
2586 // The Google C++ Testing and Mocking Framework (Google Test)
2587 //
2588 // This header file defines the Message class.
2589 //
2590 // IMPORTANT NOTE: Due to limitation of the C++ language, we have to
2591 // leave some internal implementation details in this header file.
2592 // They are clearly marked by comments like this:
2593 //
2594 // // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
2595 //
2596 // Such code is NOT meant to be used by a user directly, and is subject
2597 // to CHANGE WITHOUT NOTICE. Therefore DO NOT DEPEND ON IT in a user
2598 // program!
2599 
2600 // GOOGLETEST_CM0001 DO NOT DELETE
2601 
2602 #ifndef GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_
2603 #define GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_
2604 
2605 #include <limits>
2606 #include <memory>
2607 
2608 
2610 /* class A needs to have dll-interface to be used by clients of class B */)
2611 
2612 // Ensures that there is at least one operator<< in the global namespace.
2613 // See Message& operator<<(...) below for why.
2614 void operator<<(const testing::internal::Secret&, int);
2615 
2616 namespace testing {
2617 
2618 // The Message class works like an ostream repeater.
2619 //
2620 // Typical usage:
2621 //
2622 // 1. You stream a bunch of values to a Message object.
2623 // It will remember the text in a stringstream.
2624 // 2. Then you stream the Message object to an ostream.
2625 // This causes the text in the Message to be streamed
2626 // to the ostream.
2627 //
2628 // For example;
2629 //
2630 // testing::Message foo;
2631 // foo << 1 << " != " << 2;
2632 // std::cout << foo;
2633 //
2634 // will print "1 != 2".
2635 //
2636 // Message is not intended to be inherited from. In particular, its
2637 // destructor is not virtual.
2638 //
2639 // Note that stringstream behaves differently in gcc and in MSVC. You
2640 // can stream a NULL char pointer to it in the former, but not in the
2641 // latter (it causes an access violation if you do). The Message
2642 // class hides this difference by treating a NULL char pointer as
2643 // "(null)".
2645  private:
2646  // The type of basic IO manipulators (endl, ends, and flush) for
2647  // narrow streams.
2648  typedef std::ostream& (*BasicNarrowIoManip)(std::ostream&);
2649 
2650  public:
2651  // Constructs an empty Message.
2652  Message();
2653 
2654  // Copy constructor.
2655  Message(const Message& msg) : ss_(new ::std::stringstream) { // NOLINT
2656  *ss_ << msg.GetString();
2657  }
2658 
2659  // Constructs a Message from a C-string.
2660  explicit Message(const char* str) : ss_(new ::std::stringstream) {
2661  *ss_ << str;
2662  }
2663 
2664  // Streams a non-pointer value to this object.
2665  template <typename T>
2666  inline Message& operator <<(const T& val) {
2667  // Some libraries overload << for STL containers. These
2668  // overloads are defined in the global namespace instead of ::std.
2669  //
2670  // C++'s symbol lookup rule (i.e. Koenig lookup) says that these
2671  // overloads are visible in either the std namespace or the global
2672  // namespace, but not other namespaces, including the testing
2673  // namespace which Google Test's Message class is in.
2674  //
2675  // To allow STL containers (and other types that has a << operator
2676  // defined in the global namespace) to be used in Google Test
2677  // assertions, testing::Message must access the custom << operator
2678  // from the global namespace. With this using declaration,
2679  // overloads of << defined in the global namespace and those
2680  // visible via Koenig lookup are both exposed in this function.
2681  using ::operator <<;
2682  *ss_ << val;
2683  return *this;
2684  }
2685 
2686  // Streams a pointer value to this object.
2687  //
2688  // This function is an overload of the previous one. When you
2689  // stream a pointer to a Message, this definition will be used as it
2690  // is more specialized. (The C++ Standard, section
2691  // [temp.func.order].) If you stream a non-pointer, then the
2692  // previous definition will be used.
2693  //
2694  // The reason for this overload is that streaming a NULL pointer to
2695  // ostream is undefined behavior. Depending on the compiler, you
2696  // may get "0", "(nil)", "(null)", or an access violation. To
2697  // ensure consistent result across compilers, we always treat NULL
2698  // as "(null)".
2699  template <typename T>
2700  inline Message& operator <<(T* const& pointer) { // NOLINT
2701  if (pointer == nullptr) {
2702  *ss_ << "(null)";
2703  } else {
2704  *ss_ << pointer;
2705  }
2706  return *this;
2707  }
2708 
2709  // Since the basic IO manipulators are overloaded for both narrow
2710  // and wide streams, we have to provide this specialized definition
2711  // of operator <<, even though its body is the same as the
2712  // templatized version above. Without this definition, streaming
2713  // endl or other basic IO manipulators to Message will confuse the
2714  // compiler.
2715  Message& operator <<(BasicNarrowIoManip val) {
2716  *ss_ << val;
2717  return *this;
2718  }
2719 
2720  // Instead of 1/0, we want to see true/false for bool values.
2722  return *this << (b ? "true" : "false");
2723  }
2724 
2725  // These two overloads allow streaming a wide C string to a Message
2726  // using the UTF-8 encoding.
2727  Message& operator <<(const wchar_t* wide_c_str);
2728  Message& operator <<(wchar_t* wide_c_str);
2729 
2730 #if GTEST_HAS_STD_WSTRING
2731  // Converts the given wide string to a narrow string using the UTF-8
2732  // encoding, and streams the result to this Message object.
2734 #endif // GTEST_HAS_STD_WSTRING
2735 
2736 #if GTEST_HAS_GLOBAL_WSTRING
2737  // Converts the given wide string to a narrow string using the UTF-8
2738  // encoding, and streams the result to this Message object.
2740 #endif // GTEST_HAS_GLOBAL_WSTRING
2741 
2742  // Gets the text streamed to this object so far as an std::string.
2743  // Each '\0' character in the buffer is replaced with "\\0".
2744  //
2745  // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
2746  std::string GetString() const;
2747 
2748  private:
2749  // We'll hold the text streamed to this object here.
2750  const std::unique_ptr< ::std::stringstream> ss_;
2751 
2752  // We declare (but don't implement) this to prevent the compiler
2753  // from implementing the assignment operator.
2754  void operator=(const Message&);
2755 };
2756 
2757 // Streams a Message to an ostream.
2758 inline std::ostream& operator <<(std::ostream& os, const Message& sb) {
2759  return os << sb.GetString();
2760 }
2761 
2762 namespace internal {
2763 
2764 // Converts a streamable value to an std::string. A NULL pointer is
2765 // converted to "(null)". When the input value is a ::string,
2766 // ::std::string, ::wstring, or ::std::wstring object, each NUL
2767 // character in it is replaced with "\\0".
2768 template <typename T>
2769 std::string StreamableToString(const T& streamable) {
2770  return (Message() << streamable).GetString();
2771 }
2772 
2773 } // namespace internal
2774 } // namespace testing
2775 
2777 
2778 #endif // GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_
2779 // Copyright 2008, Google Inc.
2780 // All rights reserved.
2781 //
2782 // Redistribution and use in source and binary forms, with or without
2783 // modification, are permitted provided that the following conditions are
2784 // met:
2785 //
2786 // * Redistributions of source code must retain the above copyright
2787 // notice, this list of conditions and the following disclaimer.
2788 // * Redistributions in binary form must reproduce the above
2789 // copyright notice, this list of conditions and the following disclaimer
2790 // in the documentation and/or other materials provided with the
2791 // distribution.
2792 // * Neither the name of Google Inc. nor the names of its
2793 // contributors may be used to endorse or promote products derived from
2794 // this software without specific prior written permission.
2795 //
2796 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
2797 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
2798 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
2799 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
2800 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
2801 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
2802 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
2803 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
2804 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
2805 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
2806 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2807 //
2808 // Google Test filepath utilities
2809 //
2810 // This header file declares classes and functions used internally by
2811 // Google Test. They are subject to change without notice.
2812 //
2813 // This file is #included in gtest/internal/gtest-internal.h.
2814 // Do not include this header file separately!
2815 
2816 // GOOGLETEST_CM0001 DO NOT DELETE
2817 
2818 #ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_
2819 #define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_
2820 
2821 // Copyright 2005, Google Inc.
2822 // All rights reserved.
2823 //
2824 // Redistribution and use in source and binary forms, with or without
2825 // modification, are permitted provided that the following conditions are
2826 // met:
2827 //
2828 // * Redistributions of source code must retain the above copyright
2829 // notice, this list of conditions and the following disclaimer.
2830 // * Redistributions in binary form must reproduce the above
2831 // copyright notice, this list of conditions and the following disclaimer
2832 // in the documentation and/or other materials provided with the
2833 // distribution.
2834 // * Neither the name of Google Inc. nor the names of its
2835 // contributors may be used to endorse or promote products derived from
2836 // this software without specific prior written permission.
2837 //
2838 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
2839 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
2840 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
2841 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
2842 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
2843 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
2844 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
2845 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
2846 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
2847 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
2848 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2849 //
2850 // The Google C++ Testing and Mocking Framework (Google Test)
2851 //
2852 // This header file declares the String class and functions used internally by
2853 // Google Test. They are subject to change without notice. They should not used
2854 // by code external to Google Test.
2855 //
2856 // This header file is #included by gtest-internal.h.
2857 // It should not be #included by other files.
2858 
2859 // GOOGLETEST_CM0001 DO NOT DELETE
2860 
2861 #ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_
2862 #define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_
2863 
2864 #ifdef __BORLANDC__
2865 // string.h is not guaranteed to provide strcpy on C++ Builder.
2866 # include <mem.h>
2867 #endif
2868 
2869 #include <string.h>
2870 #include <string>
2871 
2872 
2873 namespace testing {
2874 namespace internal {
2875 
2876 // String - an abstract class holding static string utilities.
2877 class GTEST_API_ String {
2878  public:
2879  // Static utility methods
2880 
2881  // Clones a 0-terminated C string, allocating memory using new. The
2882  // caller is responsible for deleting the return value using
2883  // delete[]. Returns the cloned string, or NULL if the input is
2884  // NULL.
2885  //
2886  // This is different from strdup() in string.h, which allocates
2887  // memory using malloc().
2888  static const char* CloneCString(const char* c_str);
2889 
2890 #if GTEST_OS_WINDOWS_MOBILE
2891  // Windows CE does not have the 'ANSI' versions of Win32 APIs. To be
2892  // able to pass strings to Win32 APIs on CE we need to convert them
2893  // to 'Unicode', UTF-16.
2894 
2895  // Creates a UTF-16 wide string from the given ANSI string, allocating
2896  // memory using new. The caller is responsible for deleting the return
2897  // value using delete[]. Returns the wide string, or NULL if the
2898  // input is NULL.
2899  //
2900  // The wide string is created using the ANSI codepage (CP_ACP) to
2901  // match the behaviour of the ANSI versions of Win32 calls and the
2902  // C runtime.
2903  static LPCWSTR AnsiToUtf16(const char* c_str);
2904 
2905  // Creates an ANSI string from the given wide string, allocating
2906  // memory using new. The caller is responsible for deleting the return
2907  // value using delete[]. Returns the ANSI string, or NULL if the
2908  // input is NULL.
2909  //
2910  // The returned string is created using the ANSI codepage (CP_ACP) to
2911  // match the behaviour of the ANSI versions of Win32 calls and the
2912  // C runtime.
2913  static const char* Utf16ToAnsi(LPCWSTR utf16_str);
2914 #endif
2915 
2916  // Compares two C strings. Returns true iff they have the same content.
2917  //
2918  // Unlike strcmp(), this function can handle NULL argument(s). A
2919  // NULL C string is considered different to any non-NULL C string,
2920  // including the empty string.
2921  static bool CStringEquals(const char* lhs, const char* rhs);
2922 
2923  // Converts a wide C string to a String using the UTF-8 encoding.
2924  // NULL will be converted to "(null)". If an error occurred during
2925  // the conversion, "(failed to convert from wide string)" is
2926  // returned.
2927  static std::string ShowWideCString(const wchar_t* wide_c_str);
2928 
2929  // Compares two wide C strings. Returns true iff they have the same
2930  // content.
2931  //
2932  // Unlike wcscmp(), this function can handle NULL argument(s). A
2933  // NULL C string is considered different to any non-NULL C string,
2934  // including the empty string.
2935  static bool WideCStringEquals(const wchar_t* lhs, const wchar_t* rhs);
2936 
2937  // Compares two C strings, ignoring case. Returns true iff they
2938  // have the same content.
2939  //
2940  // Unlike strcasecmp(), this function can handle NULL argument(s).
2941  // A NULL C string is considered different to any non-NULL C string,
2942  // including the empty string.
2943  static bool CaseInsensitiveCStringEquals(const char* lhs,
2944  const char* rhs);
2945 
2946  // Compares two wide C strings, ignoring case. Returns true iff they
2947  // have the same content.
2948  //
2949  // Unlike wcscasecmp(), this function can handle NULL argument(s).
2950  // A NULL C string is considered different to any non-NULL wide C string,
2951  // including the empty string.
2952  // NB: The implementations on different platforms slightly differ.
2953  // On windows, this method uses _wcsicmp which compares according to LC_CTYPE
2954  // environment variable. On GNU platform this method uses wcscasecmp
2955  // which compares according to LC_CTYPE category of the current locale.
2956  // On MacOS X, it uses towlower, which also uses LC_CTYPE category of the
2957  // current locale.
2958  static bool CaseInsensitiveWideCStringEquals(const wchar_t* lhs,
2959  const wchar_t* rhs);
2960 
2961  // Returns true iff the given string ends with the given suffix, ignoring
2962  // case. Any string is considered to end with an empty suffix.
2963  static bool EndsWithCaseInsensitive(
2964  const std::string& str, const std::string& suffix);
2965 
2966  // Formats an int value as "%02d".
2967  static std::string FormatIntWidth2(int value); // "%02d" for width == 2
2968 
2969  // Formats an int value as "%X".
2970  static std::string FormatHexInt(int value);
2971 
2972  // Formats a byte as "%02X".
2973  static std::string FormatByte(unsigned char value);
2974 
2975  private:
2976  String(); // Not meant to be instantiated.
2977 }; // class String
2978 
2979 // Gets the content of the stringstream's buffer as an std::string. Each '\0'
2980 // character in the buffer is replaced with "\\0".
2981 GTEST_API_ std::string StringStreamToString(::std::stringstream* stream);
2982 
2983 } // namespace internal
2984 } // namespace testing
2985 
2986 #endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_
2987 
2989 /* class A needs to have dll-interface to be used by clients of class B */)
2990 
2991 namespace testing {
2992 namespace internal {
2993 
2994 // FilePath - a class for file and directory pathname manipulation which
2995 // handles platform-specific conventions (like the pathname separator).
2996 // Used for helper functions for naming files in a directory for xml output.
2997 // Except for Set methods, all methods are const or static, which provides an
2998 // "immutable value object" -- useful for peace of mind.
2999 // A FilePath with a value ending in a path separator ("like/this/") represents
3000 // a directory, otherwise it is assumed to represent a file. In either case,
3001 // it may or may not represent an actual file or directory in the file system.
3002 // Names are NOT checked for syntax correctness -- no checking for illegal
3003 // characters, malformed paths, etc.
3004 
3005 class GTEST_API_ FilePath {
3006  public:
3007  FilePath() : pathname_("") { }
3008  FilePath(const FilePath& rhs) : pathname_(rhs.pathname_) { }
3009 
3010  explicit FilePath(const std::string& pathname) : pathname_(pathname) {
3011  Normalize();
3012  }
3013 
3014  FilePath& operator=(const FilePath& rhs) {
3015  Set(rhs);
3016  return *this;
3017  }
3018 
3019  void Set(const FilePath& rhs) {
3020  pathname_ = rhs.pathname_;
3021  }
3022 
3023  const std::string& string() const { return pathname_; }
3024  const char* c_str() const { return pathname_.c_str(); }
3025 
3026  // Returns the current working directory, or "" if unsuccessful.
3027  static FilePath GetCurrentDir();
3028 
3029  // Given directory = "dir", base_name = "test", number = 0,
3030  // extension = "xml", returns "dir/test.xml". If number is greater
3031  // than zero (e.g., 12), returns "dir/test_12.xml".
3032  // On Windows platform, uses \ as the separator rather than /.
3033  static FilePath MakeFileName(const FilePath& directory,
3034  const FilePath& base_name,
3035  int number,
3036  const char* extension);
3037 
3038  // Given directory = "dir", relative_path = "test.xml",
3039  // returns "dir/test.xml".
3040  // On Windows, uses \ as the separator rather than /.
3041  static FilePath ConcatPaths(const FilePath& directory,
3042  const FilePath& relative_path);
3043 
3044  // Returns a pathname for a file that does not currently exist. The pathname
3045  // will be directory/base_name.extension or
3046  // directory/base_name_<number>.extension if directory/base_name.extension
3047  // already exists. The number will be incremented until a pathname is found
3048  // that does not already exist.
3049  // Examples: 'dir/foo_test.xml' or 'dir/foo_test_1.xml'.
3050  // There could be a race condition if two or more processes are calling this
3051  // function at the same time -- they could both pick the same filename.
3052  static FilePath GenerateUniqueFileName(const FilePath& directory,
3053  const FilePath& base_name,
3054  const char* extension);
3055 
3056  // Returns true iff the path is "".
3057  bool IsEmpty() const { return pathname_.empty(); }
3058 
3059  // If input name has a trailing separator character, removes it and returns
3060  // the name, otherwise return the name string unmodified.
3061  // On Windows platform, uses \ as the separator, other platforms use /.
3062  FilePath RemoveTrailingPathSeparator() const;
3063 
3064  // Returns a copy of the FilePath with the directory part removed.
3065  // Example: FilePath("path/to/file").RemoveDirectoryName() returns
3066  // FilePath("file"). If there is no directory part ("just_a_file"), it returns
3067  // the FilePath unmodified. If there is no file part ("just_a_dir/") it
3068  // returns an empty FilePath ("").
3069  // On Windows platform, '\' is the path separator, otherwise it is '/'.
3070  FilePath RemoveDirectoryName() const;
3071 
3072  // RemoveFileName returns the directory path with the filename removed.
3073  // Example: FilePath("path/to/file").RemoveFileName() returns "path/to/".
3074  // If the FilePath is "a_file" or "/a_file", RemoveFileName returns
3075  // FilePath("./") or, on Windows, FilePath(".\\"). If the filepath does
3076  // not have a file, like "just/a/dir/", it returns the FilePath unmodified.
3077  // On Windows platform, '\' is the path separator, otherwise it is '/'.
3078  FilePath RemoveFileName() const;
3079 
3080  // Returns a copy of the FilePath with the case-insensitive extension removed.
3081  // Example: FilePath("dir/file.exe").RemoveExtension("EXE") returns
3082  // FilePath("dir/file"). If a case-insensitive extension is not
3083  // found, returns a copy of the original FilePath.
3084  FilePath RemoveExtension(const char* extension) const;
3085 
3086  // Creates directories so that path exists. Returns true if successful or if
3087  // the directories already exist; returns false if unable to create
3088  // directories for any reason. Will also return false if the FilePath does
3089  // not represent a directory (that is, it doesn't end with a path separator).
3090  bool CreateDirectoriesRecursively() const;
3091 
3092  // Create the directory so that path exists. Returns true if successful or
3093  // if the directory already exists; returns false if unable to create the
3094  // directory for any reason, including if the parent directory does not
3095  // exist. Not named "CreateDirectory" because that's a macro on Windows.
3096  bool CreateFolder() const;
3097 
3098  // Returns true if FilePath describes something in the file-system,
3099  // either a file, directory, or whatever, and that something exists.
3100  bool FileOrDirectoryExists() const;
3101 
3102  // Returns true if pathname describes a directory in the file-system
3103  // that exists.
3104  bool DirectoryExists() const;
3105 
3106  // Returns true if FilePath ends with a path separator, which indicates that
3107  // it is intended to represent a directory. Returns false otherwise.
3108  // This does NOT check that a directory (or file) actually exists.
3109  bool IsDirectory() const;
3110 
3111  // Returns true if pathname describes a root directory. (Windows has one
3112  // root directory per disk drive.)
3113  bool IsRootDirectory() const;
3114 
3115  // Returns true if pathname describes an absolute path.
3116  bool IsAbsolutePath() const;
3117 
3118  private:
3119  // Replaces multiple consecutive separators with a single separator.
3120  // For example, "bar///foo" becomes "bar/foo". Does not eliminate other
3121  // redundancies that might be in a pathname involving "." or "..".
3122  //
3123  // A pathname with multiple consecutive separators may occur either through
3124  // user error or as a result of some scripts or APIs that generate a pathname
3125  // with a trailing separator. On other platforms the same API or script
3126  // may NOT generate a pathname with a trailing "/". Then elsewhere that
3127  // pathname may have another "/" and pathname components added to it,
3128  // without checking for the separator already being there.
3129  // The script language and operating system may allow paths like "foo//bar"
3130  // but some of the functions in FilePath will not handle that correctly. In
3131  // particular, RemoveTrailingPathSeparator() only removes one separator, and
3132  // it is called in CreateDirectoriesRecursively() assuming that it will change
3133  // a pathname from directory syntax (trailing separator) to filename syntax.
3134  //
3135  // On Windows this method also replaces the alternate path separator '/' with
3136  // the primary path separator '\\', so that for example "bar\\/\\foo" becomes
3137  // "bar\\foo".
3138 
3139  void Normalize();
3140 
3141  // Returns a pointer to the last occurence of a valid path separator in
3142  // the FilePath. On Windows, for example, both '/' and '\' are valid path
3143  // separators. Returns NULL if no path separator was found.
3144  const char* FindLastPathSeparator() const;
3145 
3146  std::string pathname_;
3147 }; // class FilePath
3148 
3149 } // namespace internal
3150 } // namespace testing
3151 
3153 
3154 #endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_
3155 // This file was GENERATED by command:
3156 // pump.py gtest-type-util.h.pump
3157 // DO NOT EDIT BY HAND!!!
3158 
3159 // Copyright 2008 Google Inc.
3160 // All Rights Reserved.
3161 //
3162 // Redistribution and use in source and binary forms, with or without
3163 // modification, are permitted provided that the following conditions are
3164 // met:
3165 //
3166 // * Redistributions of source code must retain the above copyright
3167 // notice, this list of conditions and the following disclaimer.
3168 // * Redistributions in binary form must reproduce the above
3169 // copyright notice, this list of conditions and the following disclaimer
3170 // in the documentation and/or other materials provided with the
3171 // distribution.
3172 // * Neither the name of Google Inc. nor the names of its
3173 // contributors may be used to endorse or promote products derived from
3174 // this software without specific prior written permission.
3175 //
3176 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
3177 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
3178 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
3179 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
3180 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
3181 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
3182 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
3183 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
3184 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
3185 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
3186 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
3187 
3188 // Type utilities needed for implementing typed and type-parameterized
3189 // tests. This file is generated by a SCRIPT. DO NOT EDIT BY HAND!
3190 //
3191 // Currently we support at most 50 types in a list, and at most 50
3192 // type-parameterized tests in one type-parameterized test suite.
3193 // Please contact googletestframework@googlegroups.com if you need
3194 // more.
3195 
3196 // GOOGLETEST_CM0001 DO NOT DELETE
3197 
3198 #ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_
3199 #define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_
3200 
3201 
3202 // #ifdef __GNUC__ is too general here. It is possible to use gcc without using
3203 // libstdc++ (which is where cxxabi.h comes from).
3204 # if GTEST_HAS_CXXABI_H_
3205 # include <cxxabi.h>
3206 # elif defined(__HP_aCC)
3207 # include <acxx_demangle.h>
3208 # endif // GTEST_HASH_CXXABI_H_
3209 
3210 namespace testing {
3211 namespace internal {
3212 
3213 // Canonicalizes a given name with respect to the Standard C++ Library.
3214 // This handles removing the inline namespace within `std` that is
3215 // used by various standard libraries (e.g., `std::__1`). Names outside
3216 // of namespace std are returned unmodified.
3217 inline std::string CanonicalizeForStdLibVersioning(std::string s) {
3218  static const char prefix[] = "std::__";
3219  if (s.compare(0, strlen(prefix), prefix) == 0) {
3220  std::string::size_type end = s.find("::", strlen(prefix));
3221  if (end != s.npos) {
3222  // Erase everything between the initial `std` and the second `::`.
3223  s.erase(strlen("std"), end - strlen("std"));
3224  }
3225  }
3226  return s;
3227 }
3228 
3229 // GetTypeName<T>() returns a human-readable name of type T.
3230 // NB: This function is also used in Google Mock, so don't move it inside of
3231 // the typed-test-only section below.
3232 template <typename T>
3233 std::string GetTypeName() {
3234 # if GTEST_HAS_RTTI
3235 
3236  const char* const name = typeid(T).name();
3237 # if GTEST_HAS_CXXABI_H_ || defined(__HP_aCC)
3238  int status = 0;
3239  // gcc's implementation of typeid(T).name() mangles the type name,
3240  // so we have to demangle it.
3241 # if GTEST_HAS_CXXABI_H_
3242  using abi::__cxa_demangle;
3243 # endif // GTEST_HAS_CXXABI_H_
3244  char* const readable_name = __cxa_demangle(name, nullptr, nullptr, &status);
3245  const std::string name_str(status == 0 ? readable_name : name);
3246  free(readable_name);
3247  return CanonicalizeForStdLibVersioning(name_str);
3248 # else
3249  return name;
3250 # endif // GTEST_HAS_CXXABI_H_ || __HP_aCC
3251 
3252 # else
3253 
3254  return "<type>";
3255 
3256 # endif // GTEST_HAS_RTTI
3257 }
3258 
3259 #if GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P
3260 
3261 // AssertyTypeEq<T1, T2>::type is defined iff T1 and T2 are the same
3262 // type. This can be used as a compile-time assertion to ensure that
3263 // two types are equal.
3264 
3265 template <typename T1, typename T2>
3266 struct AssertTypeEq;
3267 
3268 template <typename T>
3269 struct AssertTypeEq<T, T> {
3270  typedef bool type;
3271 };
3272 
3273 // A unique type used as the default value for the arguments of class
3274 // template Types. This allows us to simulate variadic templates
3275 // (e.g. Types<int>, Type<int, double>, and etc), which C++ doesn't
3276 // support directly.
3277 struct None {};
3278 
3279 // The following family of struct and struct templates are used to
3280 // represent type lists. In particular, TypesN<T1, T2, ..., TN>
3281 // represents a type list with N types (T1, T2, ..., and TN) in it.
3282 // Except for Types0, every struct in the family has two member types:
3283 // Head for the first type in the list, and Tail for the rest of the
3284 // list.
3285 
3286 // The empty type list.
3287 struct Types0 {};
3288 
3289 // Type lists of length 1, 2, 3, and so on.
3290 
3291 template <typename T1>
3292 struct Types1 {
3293  typedef T1 Head;
3294  typedef Types0 Tail;
3295 };
3296 template <typename T1, typename T2>
3297 struct Types2 {
3298  typedef T1 Head;
3299  typedef Types1<T2> Tail;
3300 };
3301 
3302 template <typename T1, typename T2, typename T3>
3303 struct Types3 {
3304  typedef T1 Head;
3305  typedef Types2<T2, T3> Tail;
3306 };
3307 
3308 template <typename T1, typename T2, typename T3, typename T4>
3309 struct Types4 {
3310  typedef T1 Head;
3311  typedef Types3<T2, T3, T4> Tail;
3312 };
3313 
3314 template <typename T1, typename T2, typename T3, typename T4, typename T5>
3315 struct Types5 {
3316  typedef T1 Head;
3317  typedef Types4<T2, T3, T4, T5> Tail;
3318 };
3319 
3320 template <typename T1, typename T2, typename T3, typename T4, typename T5,
3321  typename T6>
3322 struct Types6 {
3323  typedef T1 Head;
3324  typedef Types5<T2, T3, T4, T5, T6> Tail;
3325 };
3326 
3327 template <typename T1, typename T2, typename T3, typename T4, typename T5,
3328  typename T6, typename T7>
3329 struct Types7 {
3330  typedef T1 Head;
3331  typedef Types6<T2, T3, T4, T5, T6, T7> Tail;
3332 };
3333 
3334 template <typename T1, typename T2, typename T3, typename T4, typename T5,
3335  typename T6, typename T7, typename T8>
3336 struct Types8 {
3337  typedef T1 Head;
3338  typedef Types7<T2, T3, T4, T5, T6, T7, T8> Tail;
3339 };
3340 
3341 template <typename T1, typename T2, typename T3, typename T4, typename T5,
3342  typename T6, typename T7, typename T8, typename T9>
3343 struct Types9 {
3344  typedef T1 Head;
3345  typedef Types8<T2, T3, T4, T5, T6, T7, T8, T9> Tail;
3346 };
3347 
3348 template <typename T1, typename T2, typename T3, typename T4, typename T5,
3349  typename T6, typename T7, typename T8, typename T9, typename T10>
3350 struct Types10 {
3351  typedef T1 Head;
3352  typedef Types9<T2, T3, T4, T5, T6, T7, T8, T9, T10> Tail;
3353 };
3354 
3355 template <typename T1, typename T2, typename T3, typename T4, typename T5,
3356  typename T6, typename T7, typename T8, typename T9, typename T10,
3357  typename T11>
3358 struct Types11 {
3359  typedef T1 Head;
3360  typedef Types10<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Tail;
3361 };
3362 
3363 template <typename T1, typename T2, typename T3, typename T4, typename T5,
3364  typename T6, typename T7, typename T8, typename T9, typename T10,
3365  typename T11, typename T12>
3366 struct Types12 {
3367  typedef T1 Head;
3368  typedef Types11<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Tail;
3369 };
3370 
3371 template <typename T1, typename T2, typename T3, typename T4, typename T5,
3372  typename T6, typename T7, typename T8, typename T9, typename T10,
3373  typename T11, typename T12, typename T13>
3374 struct Types13 {
3375  typedef T1 Head;
3376  typedef Types12<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> Tail;
3377 };
3378 
3379 template <typename T1, typename T2, typename T3, typename T4, typename T5,
3380  typename T6, typename T7, typename T8, typename T9, typename T10,
3381  typename T11, typename T12, typename T13, typename T14>
3382 struct Types14 {
3383  typedef T1 Head;
3384  typedef Types13<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> Tail;
3385 };
3386 
3387 template <typename T1, typename T2, typename T3, typename T4, typename T5,
3388  typename T6, typename T7, typename T8, typename T9, typename T10,
3389  typename T11, typename T12, typename T13, typename T14, typename T15>
3390 struct Types15 {
3391  typedef T1 Head;
3392  typedef Types14<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
3393  T15> Tail;
3394 };
3395 
3396 template <typename T1, typename T2, typename T3, typename T4, typename T5,
3397  typename T6, typename T7, typename T8, typename T9, typename T10,
3398  typename T11, typename T12, typename T13, typename T14, typename T15,
3399  typename T16>
3400 struct Types16 {
3401  typedef T1 Head;
3402  typedef Types15<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
3403  T16> Tail;
3404 };
3405 
3406 template <typename T1, typename T2, typename T3, typename T4, typename T5,
3407  typename T6, typename T7, typename T8, typename T9, typename T10,
3408  typename T11, typename T12, typename T13, typename T14, typename T15,
3409  typename T16, typename T17>
3410 struct Types17 {
3411  typedef T1 Head;
3412  typedef Types16<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
3413  T16, T17> Tail;
3414 };
3415 
3416 template <typename T1, typename T2, typename T3, typename T4, typename T5,
3417  typename T6, typename T7, typename T8, typename T9, typename T10,
3418  typename T11, typename T12, typename T13, typename T14, typename T15,
3419  typename T16, typename T17, typename T18>
3420 struct Types18 {
3421  typedef T1 Head;
3422  typedef Types17<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
3423  T16, T17, T18> Tail;
3424 };
3425 
3426 template <typename T1, typename T2, typename T3, typename T4, typename T5,
3427  typename T6, typename T7, typename T8, typename T9, typename T10,
3428  typename T11, typename T12, typename T13, typename T14, typename T15,
3429  typename T16, typename T17, typename T18, typename T19>
3430 struct Types19 {
3431  typedef T1 Head;
3432  typedef Types18<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
3433  T16, T17, T18, T19> Tail;
3434 };
3435 
3436 template <typename T1, typename T2, typename T3, typename T4, typename T5,
3437  typename T6, typename T7, typename T8, typename T9, typename T10,
3438  typename T11, typename T12, typename T13, typename T14, typename T15,
3439  typename T16, typename T17, typename T18, typename T19, typename T20>
3440 struct Types20 {
3441  typedef T1 Head;
3442  typedef Types19<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
3443  T16, T17, T18, T19, T20> Tail;
3444 };
3445 
3446 template <typename T1, typename T2, typename T3, typename T4, typename T5,
3447  typename T6, typename T7, typename T8, typename T9, typename T10,
3448  typename T11, typename T12, typename T13, typename T14, typename T15,
3449  typename T16, typename T17, typename T18, typename T19, typename T20,
3450  typename T21>
3451 struct Types21 {
3452  typedef T1 Head;
3453  typedef Types20<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
3454  T16, T17, T18, T19, T20, T21> Tail;
3455 };
3456 
3457 template <typename T1, typename T2, typename T3, typename T4, typename T5,
3458  typename T6, typename T7, typename T8, typename T9, typename T10,
3459  typename T11, typename T12, typename T13, typename T14, typename T15,
3460  typename T16, typename T17, typename T18, typename T19, typename T20,
3461  typename T21, typename T22>
3462 struct Types22 {
3463  typedef T1 Head;
3464  typedef Types21<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
3465  T16, T17, T18, T19, T20, T21, T22> Tail;
3466 };
3467 
3468 template <typename T1, typename T2, typename T3, typename T4, typename T5,
3469  typename T6, typename T7, typename T8, typename T9, typename T10,
3470  typename T11, typename T12, typename T13, typename T14, typename T15,
3471  typename T16, typename T17, typename T18, typename T19, typename T20,
3472  typename T21, typename T22, typename T23>
3473 struct Types23 {
3474  typedef T1 Head;
3475  typedef Types22<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
3476  T16, T17, T18, T19, T20, T21, T22, T23> Tail;
3477 };
3478 
3479 template <typename T1, typename T2, typename T3, typename T4, typename T5,
3480  typename T6, typename T7, typename T8, typename T9, typename T10,
3481  typename T11, typename T12, typename T13, typename T14, typename T15,
3482  typename T16, typename T17, typename T18, typename T19, typename T20,
3483  typename T21, typename T22, typename T23, typename T24>
3484 struct Types24 {
3485  typedef T1 Head;
3486  typedef Types23<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
3487  T16, T17, T18, T19, T20, T21, T22, T23, T24> Tail;
3488 };
3489 
3490 template <typename T1, typename T2, typename T3, typename T4, typename T5,
3491  typename T6, typename T7, typename T8, typename T9, typename T10,
3492  typename T11, typename T12, typename T13, typename T14, typename T15,
3493  typename T16, typename T17, typename T18, typename T19, typename T20,
3494  typename T21, typename T22, typename T23, typename T24, typename T25>
3495 struct Types25 {
3496  typedef T1 Head;
3497  typedef Types24<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
3498  T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> Tail;
3499 };
3500 
3501 template <typename T1, typename T2, typename T3, typename T4, typename T5,
3502  typename T6, typename T7, typename T8, typename T9, typename T10,
3503  typename T11, typename T12, typename T13, typename T14, typename T15,
3504  typename T16, typename T17, typename T18, typename T19, typename T20,
3505  typename T21, typename T22, typename T23, typename T24, typename T25,
3506  typename T26>
3507 struct Types26 {
3508  typedef T1 Head;
3509  typedef Types25<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
3510  T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26> Tail;
3511 };
3512 
3513 template <typename T1, typename T2, typename T3, typename T4, typename T5,
3514  typename T6, typename T7, typename T8, typename T9, typename T10,
3515  typename T11, typename T12, typename T13, typename T14, typename T15,
3516  typename T16, typename T17, typename T18, typename T19, typename T20,
3517  typename T21, typename T22, typename T23, typename T24, typename T25,
3518  typename T26, typename T27>
3519 struct Types27 {
3520  typedef T1 Head;
3521  typedef Types26<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
3522  T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27> Tail;
3523 };
3524 
3525 template <typename T1, typename T2, typename T3, typename T4, typename T5,
3526  typename T6, typename T7, typename T8, typename T9, typename T10,
3527  typename T11, typename T12, typename T13, typename T14, typename T15,
3528  typename T16, typename T17, typename T18, typename T19, typename T20,
3529  typename T21, typename T22, typename T23, typename T24, typename T25,
3530  typename T26, typename T27, typename T28>
3531 struct Types28 {
3532  typedef T1 Head;
3533  typedef Types27<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
3534  T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28> Tail;
3535 };
3536 
3537 template <typename T1, typename T2, typename T3, typename T4, typename T5,
3538  typename T6, typename T7, typename T8, typename T9, typename T10,
3539  typename T11, typename T12, typename T13, typename T14, typename T15,
3540  typename T16, typename T17, typename T18, typename T19, typename T20,
3541  typename T21, typename T22, typename T23, typename T24, typename T25,
3542  typename T26, typename T27, typename T28, typename T29>
3543 struct Types29 {
3544  typedef T1 Head;
3545  typedef Types28<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
3546  T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
3547  T29> Tail;
3548 };
3549 
3550 template <typename T1, typename T2, typename T3, typename T4, typename T5,
3551  typename T6, typename T7, typename T8, typename T9, typename T10,
3552  typename T11, typename T12, typename T13, typename T14, typename T15,
3553  typename T16, typename T17, typename T18, typename T19, typename T20,
3554  typename T21, typename T22, typename T23, typename T24, typename T25,
3555  typename T26, typename T27, typename T28, typename T29, typename T30>
3556 struct Types30 {
3557  typedef T1 Head;
3558  typedef Types29<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
3559  T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
3560  T30> Tail;
3561 };
3562 
3563 template <typename T1, typename T2, typename T3, typename T4, typename T5,
3564  typename T6, typename T7, typename T8, typename T9, typename T10,
3565  typename T11, typename T12, typename T13, typename T14, typename T15,
3566  typename T16, typename T17, typename T18, typename T19, typename T20,
3567  typename T21, typename T22, typename T23, typename T24, typename T25,
3568  typename T26, typename T27, typename T28, typename T29, typename T30,
3569  typename T31>
3570 struct Types31 {
3571  typedef T1 Head;
3572  typedef Types30<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
3573  T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
3574  T30, T31> Tail;
3575 };
3576 
3577 template <typename T1, typename T2, typename T3, typename T4, typename T5,
3578  typename T6, typename T7, typename T8, typename T9, typename T10,
3579  typename T11, typename T12, typename T13, typename T14, typename T15,
3580  typename T16, typename T17, typename T18, typename T19, typename T20,
3581  typename T21, typename T22, typename T23, typename T24, typename T25,
3582  typename T26, typename T27, typename T28, typename T29, typename T30,
3583  typename T31, typename T32>
3584 struct Types32 {
3585  typedef T1 Head;
3586  typedef Types31<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
3587  T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
3588  T30, T31, T32> Tail;
3589 };
3590 
3591 template <typename T1, typename T2, typename T3, typename T4, typename T5,
3592  typename T6, typename T7, typename T8, typename T9, typename T10,
3593  typename T11, typename T12, typename T13, typename T14, typename T15,
3594  typename T16, typename T17, typename T18, typename T19, typename T20,
3595  typename T21, typename T22, typename T23, typename T24, typename T25,
3596  typename T26, typename T27, typename T28, typename T29, typename T30,
3597  typename T31, typename T32, typename T33>
3598 struct Types33 {
3599  typedef T1 Head;
3600  typedef Types32<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
3601  T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
3602  T30, T31, T32, T33> Tail;
3603 };
3604 
3605 template <typename T1, typename T2, typename T3, typename T4, typename T5,
3606  typename T6, typename T7, typename T8, typename T9, typename T10,
3607  typename T11, typename T12, typename T13, typename T14, typename T15,
3608  typename T16, typename T17, typename T18, typename T19, typename T20,
3609  typename T21, typename T22, typename T23, typename T24, typename T25,
3610  typename T26, typename T27, typename T28, typename T29, typename T30,
3611  typename T31, typename T32, typename T33, typename T34>
3612 struct Types34 {
3613  typedef T1 Head;
3614  typedef Types33<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
3615  T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
3616  T30, T31, T32, T33, T34> Tail;
3617 };
3618 
3619 template <typename T1, typename T2, typename T3, typename T4, typename T5,
3620  typename T6, typename T7, typename T8, typename T9, typename T10,
3621  typename T11, typename T12, typename T13, typename T14, typename T15,
3622  typename T16, typename T17, typename T18, typename T19, typename T20,
3623  typename T21, typename T22, typename T23, typename T24, typename T25,
3624  typename T26, typename T27, typename T28, typename T29, typename T30,
3625  typename T31, typename T32, typename T33, typename T34, typename T35>
3626 struct Types35 {
3627  typedef T1 Head;
3628  typedef Types34<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
3629  T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
3630  T30, T31, T32, T33, T34, T35> Tail;
3631 };
3632 
3633 template <typename T1, typename T2, typename T3, typename T4, typename T5,
3634  typename T6, typename T7, typename T8, typename T9, typename T10,
3635  typename T11, typename T12, typename T13, typename T14, typename T15,
3636  typename T16, typename T17, typename T18, typename T19, typename T20,
3637  typename T21, typename T22, typename T23, typename T24, typename T25,
3638  typename T26, typename T27, typename T28, typename T29, typename T30,
3639  typename T31, typename T32, typename T33, typename T34, typename T35,
3640  typename T36>
3641 struct Types36 {
3642  typedef T1 Head;
3643  typedef Types35<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
3644  T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
3645  T30, T31, T32, T33, T34, T35, T36> Tail;
3646 };
3647 
3648 template <typename T1, typename T2, typename T3, typename T4, typename T5,
3649  typename T6, typename T7, typename T8, typename T9, typename T10,
3650  typename T11, typename T12, typename T13, typename T14, typename T15,
3651  typename T16, typename T17, typename T18, typename T19, typename T20,
3652  typename T21, typename T22, typename T23, typename T24, typename T25,
3653  typename T26, typename T27, typename T28, typename T29, typename T30,
3654  typename T31, typename T32, typename T33, typename T34, typename T35,
3655  typename T36, typename T37>
3656 struct Types37 {
3657  typedef T1 Head;
3658  typedef Types36<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
3659  T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
3660  T30, T31, T32, T33, T34, T35, T36, T37> Tail;
3661 };
3662 
3663 template <typename T1, typename T2, typename T3, typename T4, typename T5,
3664  typename T6, typename T7, typename T8, typename T9, typename T10,
3665  typename T11, typename T12, typename T13, typename T14, typename T15,
3666  typename T16, typename T17, typename T18, typename T19, typename T20,
3667  typename T21, typename T22, typename T23, typename T24, typename T25,
3668  typename T26, typename T27, typename T28, typename T29, typename T30,
3669  typename T31, typename T32, typename T33, typename T34, typename T35,
3670  typename T36, typename T37, typename T38>
3671 struct Types38 {
3672  typedef T1 Head;
3673  typedef Types37<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
3674  T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
3675  T30, T31, T32, T33, T34, T35, T36, T37, T38> Tail;
3676 };
3677 
3678 template <typename T1, typename T2, typename T3, typename T4, typename T5,
3679  typename T6, typename T7, typename T8, typename T9, typename T10,
3680  typename T11, typename T12, typename T13, typename T14, typename T15,
3681  typename T16, typename T17, typename T18, typename T19, typename T20,
3682  typename T21, typename T22, typename T23, typename T24, typename T25,
3683  typename T26, typename T27, typename T28, typename T29, typename T30,
3684  typename T31, typename T32, typename T33, typename T34, typename T35,
3685  typename T36, typename T37, typename T38, typename T39>
3686 struct Types39 {
3687  typedef T1 Head;
3688  typedef Types38<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
3689  T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
3690  T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> Tail;
3691 };
3692 
3693 template <typename T1, typename T2, typename T3, typename T4, typename T5,
3694  typename T6, typename T7, typename T8, typename T9, typename T10,
3695  typename T11, typename T12, typename T13, typename T14, typename T15,
3696  typename T16, typename T17, typename T18, typename T19, typename T20,
3697  typename T21, typename T22, typename T23, typename T24, typename T25,
3698  typename T26, typename T27, typename T28, typename T29, typename T30,
3699  typename T31, typename T32, typename T33, typename T34, typename T35,
3700  typename T36, typename T37, typename T38, typename T39, typename T40>
3701 struct Types40 {
3702  typedef T1 Head;
3703  typedef Types39<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
3704  T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
3705  T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> Tail;
3706 };
3707 
3708 template <typename T1, typename T2, typename T3, typename T4, typename T5,
3709  typename T6, typename T7, typename T8, typename T9, typename T10,
3710  typename T11, typename T12, typename T13, typename T14, typename T15,
3711  typename T16, typename T17, typename T18, typename T19, typename T20,
3712  typename T21, typename T22, typename T23, typename T24, typename T25,
3713  typename T26, typename T27, typename T28, typename T29, typename T30,
3714  typename T31, typename T32, typename T33, typename T34, typename T35,
3715  typename T36, typename T37, typename T38, typename T39, typename T40,
3716  typename T41>
3717 struct Types41 {
3718  typedef T1 Head;
3719  typedef Types40<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
3720  T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
3721  T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41> Tail;
3722 };
3723 
3724 template <typename T1, typename T2, typename T3, typename T4, typename T5,
3725  typename T6, typename T7, typename T8, typename T9, typename T10,
3726  typename T11, typename T12, typename T13, typename T14, typename T15,
3727  typename T16, typename T17, typename T18, typename T19, typename T20,
3728  typename T21, typename T22, typename T23, typename T24, typename T25,
3729  typename T26, typename T27, typename T28, typename T29, typename T30,
3730  typename T31, typename T32, typename T33, typename T34, typename T35,
3731  typename T36, typename T37, typename T38, typename T39, typename T40,
3732  typename T41, typename T42>
3733 struct Types42 {
3734  typedef T1 Head;
3735  typedef Types41<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
3736  T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
3737  T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42> Tail;
3738 };
3739 
3740 template <typename T1, typename T2, typename T3, typename T4, typename T5,
3741  typename T6, typename T7, typename T8, typename T9, typename T10,
3742  typename T11, typename T12, typename T13, typename T14, typename T15,
3743  typename T16, typename T17, typename T18, typename T19, typename T20,
3744  typename T21, typename T22, typename T23, typename T24, typename T25,
3745  typename T26, typename T27, typename T28, typename T29, typename T30,
3746  typename T31, typename T32, typename T33, typename T34, typename T35,
3747  typename T36, typename T37, typename T38, typename T39, typename T40,
3748  typename T41, typename T42, typename T43>
3749 struct Types43 {
3750  typedef T1 Head;
3751  typedef Types42<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
3752  T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
3753  T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
3754  T43> Tail;
3755 };
3756 
3757 template <typename T1, typename T2, typename T3, typename T4, typename T5,
3758  typename T6, typename T7, typename T8, typename T9, typename T10,
3759  typename T11, typename T12, typename T13, typename T14, typename T15,
3760  typename T16, typename T17, typename T18, typename T19, typename T20,
3761  typename T21, typename T22, typename T23, typename T24, typename T25,
3762  typename T26, typename T27, typename T28, typename T29, typename T30,
3763  typename T31, typename T32, typename T33, typename T34, typename T35,
3764  typename T36, typename T37, typename T38, typename T39, typename T40,
3765  typename T41, typename T42, typename T43, typename T44>
3766 struct Types44 {
3767  typedef T1 Head;
3768  typedef Types43<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
3769  T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
3770  T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
3771  T44> Tail;
3772 };
3773 
3774 template <typename T1, typename T2, typename T3, typename T4, typename T5,
3775  typename T6, typename T7, typename T8, typename T9, typename T10,
3776  typename T11, typename T12, typename T13, typename T14, typename T15,
3777  typename T16, typename T17, typename T18, typename T19, typename T20,
3778  typename T21, typename T22, typename T23, typename T24, typename T25,
3779  typename T26, typename T27, typename T28, typename T29, typename T30,
3780  typename T31, typename T32, typename T33, typename T34, typename T35,
3781  typename T36, typename T37, typename T38, typename T39, typename T40,
3782  typename T41, typename T42, typename T43, typename T44, typename T45>
3783 struct Types45 {
3784  typedef T1 Head;
3785  typedef Types44<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
3786  T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
3787  T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
3788  T44, T45> Tail;
3789 };
3790 
3791 template <typename T1, typename T2, typename T3, typename T4, typename T5,
3792  typename T6, typename T7, typename T8, typename T9, typename T10,
3793  typename T11, typename T12, typename T13, typename T14, typename T15,
3794  typename T16, typename T17, typename T18, typename T19, typename T20,
3795  typename T21, typename T22, typename T23, typename T24, typename T25,
3796  typename T26, typename T27, typename T28, typename T29, typename T30,
3797  typename T31, typename T32, typename T33, typename T34, typename T35,
3798  typename T36, typename T37, typename T38, typename T39, typename T40,
3799  typename T41, typename T42, typename T43, typename T44, typename T45,
3800  typename T46>
3801 struct Types46 {
3802  typedef T1 Head;
3803  typedef Types45<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
3804  T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
3805  T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
3806  T44, T45, T46> Tail;
3807 };
3808 
3809 template <typename T1, typename T2, typename T3, typename T4, typename T5,
3810  typename T6, typename T7, typename T8, typename T9, typename T10,
3811  typename T11, typename T12, typename T13, typename T14, typename T15,
3812  typename T16, typename T17, typename T18, typename T19, typename T20,
3813  typename T21, typename T22, typename T23, typename T24, typename T25,
3814  typename T26, typename T27, typename T28, typename T29, typename T30,
3815  typename T31, typename T32, typename T33, typename T34, typename T35,
3816  typename T36, typename T37, typename T38, typename T39, typename T40,
3817  typename T41, typename T42, typename T43, typename T44, typename T45,
3818  typename T46, typename T47>
3819 struct Types47 {
3820  typedef T1 Head;
3821  typedef Types46<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
3822  T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
3823  T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
3824  T44, T45, T46, T47> Tail;
3825 };
3826 
3827 template <typename T1, typename T2, typename T3, typename T4, typename T5,
3828  typename T6, typename T7, typename T8, typename T9, typename T10,
3829  typename T11, typename T12, typename T13, typename T14, typename T15,
3830  typename T16, typename T17, typename T18, typename T19, typename T20,
3831  typename T21, typename T22, typename T23, typename T24, typename T25,
3832  typename T26, typename T27, typename T28, typename T29, typename T30,
3833  typename T31, typename T32, typename T33, typename T34, typename T35,
3834  typename T36, typename T37, typename T38, typename T39, typename T40,
3835  typename T41, typename T42, typename T43, typename T44, typename T45,
3836  typename T46, typename T47, typename T48>
3837 struct Types48 {
3838  typedef T1 Head;
3839  typedef Types47<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
3840  T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
3841  T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
3842  T44, T45, T46, T47, T48> Tail;
3843 };
3844 
3845 template <typename T1, typename T2, typename T3, typename T4, typename T5,
3846  typename T6, typename T7, typename T8, typename T9, typename T10,
3847  typename T11, typename T12, typename T13, typename T14, typename T15,
3848  typename T16, typename T17, typename T18, typename T19, typename T20,
3849  typename T21, typename T22, typename T23, typename T24, typename T25,
3850  typename T26, typename T27, typename T28, typename T29, typename T30,
3851  typename T31, typename T32, typename T33, typename T34, typename T35,
3852  typename T36, typename T37, typename T38, typename T39, typename T40,
3853  typename T41, typename T42, typename T43, typename T44, typename T45,
3854  typename T46, typename T47, typename T48, typename T49>
3855 struct Types49 {
3856  typedef T1 Head;
3857  typedef Types48<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
3858  T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
3859  T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
3860  T44, T45, T46, T47, T48, T49> Tail;
3861 };
3862 
3863 template <typename T1, typename T2, typename T3, typename T4, typename T5,
3864  typename T6, typename T7, typename T8, typename T9, typename T10,
3865  typename T11, typename T12, typename T13, typename T14, typename T15,
3866  typename T16, typename T17, typename T18, typename T19, typename T20,
3867  typename T21, typename T22, typename T23, typename T24, typename T25,
3868  typename T26, typename T27, typename T28, typename T29, typename T30,
3869  typename T31, typename T32, typename T33, typename T34, typename T35,
3870  typename T36, typename T37, typename T38, typename T39, typename T40,
3871  typename T41, typename T42, typename T43, typename T44, typename T45,
3872  typename T46, typename T47, typename T48, typename T49, typename T50>
3873 struct Types50 {
3874  typedef T1 Head;
3875  typedef Types49<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
3876  T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
3877  T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
3878  T44, T45, T46, T47, T48, T49, T50> Tail;
3879 };
3880 
3881 
3882 } // namespace internal
3883 
3884 // We don't want to require the users to write TypesN<...> directly,
3885 // as that would require them to count the length. Types<...> is much
3886 // easier to write, but generates horrible messages when there is a
3887 // compiler error, as gcc insists on printing out each template
3888 // argument, even if it has the default value (this means Types<int>
3889 // will appear as Types<int, None, None, ..., None> in the compiler
3890 // errors).
3891 //
3892 // Our solution is to combine the best part of the two approaches: a
3893 // user would write Types<T1, ..., TN>, and Google Test will translate
3894 // that to TypesN<T1, ..., TN> internally to make error messages
3895 // readable. The translation is done by the 'type' member of the
3896 // Types template.
3897 template <typename T1 = internal::None, typename T2 = internal::None,
3898  typename T3 = internal::None, typename T4 = internal::None,
3899  typename T5 = internal::None, typename T6 = internal::None,
3900  typename T7 = internal::None, typename T8 = internal::None,
3901  typename T9 = internal::None, typename T10 = internal::None,
3902  typename T11 = internal::None, typename T12 = internal::None,
3903  typename T13 = internal::None, typename T14 = internal::None,
3904  typename T15 = internal::None, typename T16 = internal::None,
3905  typename T17 = internal::None, typename T18 = internal::None,
3906  typename T19 = internal::None, typename T20 = internal::None,
3907  typename T21 = internal::None, typename T22 = internal::None,
3908  typename T23 = internal::None, typename T24 = internal::None,
3909  typename T25 = internal::None, typename T26 = internal::None,
3910  typename T27 = internal::None, typename T28 = internal::None,
3911  typename T29 = internal::None, typename T30 = internal::None,
3912  typename T31 = internal::None, typename T32 = internal::None,
3913  typename T33 = internal::None, typename T34 = internal::None,
3914  typename T35 = internal::None, typename T36 = internal::None,
3915  typename T37 = internal::None, typename T38 = internal::None,
3916  typename T39 = internal::None, typename T40 = internal::None,
3917  typename T41 = internal::None, typename T42 = internal::None,
3918  typename T43 = internal::None, typename T44 = internal::None,
3919  typename T45 = internal::None, typename T46 = internal::None,
3920  typename T47 = internal::None, typename T48 = internal::None,
3921  typename T49 = internal::None, typename T50 = internal::None>
3922 struct Types {
3923  typedef internal::Types50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
3924  T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
3925  T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
3926  T41, T42, T43, T44, T45, T46, T47, T48, T49, T50> type;
3927 };
3928 
3929 template <>
3930 struct Types<internal::None, internal::None, internal::None, internal::None,
3931  internal::None, internal::None, internal::None, internal::None,
3932  internal::None, internal::None, internal::None, internal::None,
3933  internal::None, internal::None, internal::None, internal::None,
3934  internal::None, internal::None, internal::None, internal::None,
3935  internal::None, internal::None, internal::None, internal::None,
3936  internal::None, internal::None, internal::None, internal::None,
3937  internal::None, internal::None, internal::None, internal::None,
3938  internal::None, internal::None, internal::None, internal::None,
3939  internal::None, internal::None, internal::None, internal::None,
3940  internal::None, internal::None, internal::None, internal::None,
3941  internal::None, internal::None, internal::None, internal::None,
3942  internal::None, internal::None> {
3943  typedef internal::Types0 type;
3944 };
3945 template <typename T1>
3946 struct Types<T1, internal::None, internal::None, internal::None,
3947  internal::None, internal::None, internal::None, internal::None,
3948  internal::None, internal::None, internal::None, internal::None,
3949  internal::None, internal::None, internal::None, internal::None,
3950  internal::None, internal::None, internal::None, internal::None,
3951  internal::None, internal::None, internal::None, internal::None,
3952  internal::None, internal::None, internal::None, internal::None,
3953  internal::None, internal::None, internal::None, internal::None,
3954  internal::None, internal::None, internal::None, internal::None,
3955  internal::None, internal::None, internal::None, internal::None,
3956  internal::None, internal::None, internal::None, internal::None,
3957  internal::None, internal::None, internal::None, internal::None,
3958  internal::None, internal::None> {
3959  typedef internal::Types1<T1> type;
3960 };
3961 template <typename T1, typename T2>
3962 struct Types<T1, T2, internal::None, internal::None, internal::None,
3963  internal::None, internal::None, internal::None, internal::None,
3964  internal::None, internal::None, internal::None, internal::None,
3965  internal::None, internal::None, internal::None, internal::None,
3966  internal::None, internal::None, internal::None, internal::None,
3967  internal::None, internal::None, internal::None, internal::None,
3968  internal::None, internal::None, internal::None, internal::None,
3969  internal::None, internal::None, internal::None, internal::None,
3970  internal::None, internal::None, internal::None, internal::None,
3971  internal::None, internal::None, internal::None, internal::None,
3972  internal::None, internal::None, internal::None, internal::None,
3973  internal::None, internal::None, internal::None, internal::None,
3974  internal::None> {
3975  typedef internal::Types2<T1, T2> type;
3976 };
3977 template <typename T1, typename T2, typename T3>
3978 struct Types<T1, T2, T3, internal::None, internal::None, internal::None,
3979  internal::None, internal::None, internal::None, internal::None,
3980  internal::None, internal::None, internal::None, internal::None,
3981  internal::None, internal::None, internal::None, internal::None,
3982  internal::None, internal::None, internal::None, internal::None,
3983  internal::None, internal::None, internal::None, internal::None,
3984  internal::None, internal::None, internal::None, internal::None,
3985  internal::None, internal::None, internal::None, internal::None,
3986  internal::None, internal::None, internal::None, internal::None,
3987  internal::None, internal::None, internal::None, internal::None,
3988  internal::None, internal::None, internal::None, internal::None,
3989  internal::None, internal::None, internal::None, internal::None> {
3990  typedef internal::Types3<T1, T2, T3> type;
3991 };
3992 template <typename T1, typename T2, typename T3, typename T4>
3993 struct Types<T1, T2, T3, T4, internal::None, internal::None, internal::None,
3994  internal::None, internal::None, internal::None, internal::None,
3995  internal::None, internal::None, internal::None, internal::None,
3996  internal::None, internal::None, internal::None, internal::None,
3997  internal::None, internal::None, internal::None, internal::None,
3998  internal::None, internal::None, internal::None, internal::None,
3999  internal::None, internal::None, internal::None, internal::None,
4000  internal::None, internal::None, internal::None, internal::None,
4001  internal::None, internal::None, internal::None, internal::None,
4002  internal::None, internal::None, internal::None, internal::None,
4003  internal::None, internal::None, internal::None, internal::None,
4004  internal::None, internal::None, internal::None> {
4005  typedef internal::Types4<T1, T2, T3, T4> type;
4006 };
4007 template <typename T1, typename T2, typename T3, typename T4, typename T5>
4008 struct Types<T1, T2, T3, T4, T5, internal::None, internal::None,
4009  internal::None, internal::None, internal::None, internal::None,
4010  internal::None, internal::None, internal::None, internal::None,
4011  internal::None, internal::None, internal::None, internal::None,
4012  internal::None, internal::None, internal::None, internal::None,
4013  internal::None, internal::None, internal::None, internal::None,
4014  internal::None, internal::None, internal::None, internal::None,
4015  internal::None, internal::None, internal::None, internal::None,
4016  internal::None, internal::None, internal::None, internal::None,
4017  internal::None, internal::None, internal::None, internal::None,
4018  internal::None, internal::None, internal::None, internal::None,
4019  internal::None, internal::None, internal::None> {
4020  typedef internal::Types5<T1, T2, T3, T4, T5> type;
4021 };
4022 template <typename T1, typename T2, typename T3, typename T4, typename T5,
4023  typename T6>
4024 struct Types<T1, T2, T3, T4, T5, T6, internal::None, internal::None,
4025  internal::None, internal::None, internal::None, internal::None,
4026  internal::None, internal::None, internal::None, internal::None,
4027  internal::None, internal::None, internal::None, internal::None,
4028  internal::None, internal::None, internal::None, internal::None,
4029  internal::None, internal::None, internal::None, internal::None,
4030  internal::None, internal::None, internal::None, internal::None,
4031  internal::None, internal::None, internal::None, internal::None,
4032  internal::None, internal::None, internal::None, internal::None,
4033  internal::None, internal::None, internal::None, internal::None,
4034  internal::None, internal::None, internal::None, internal::None,
4035  internal::None, internal::None> {
4036  typedef internal::Types6<T1, T2, T3, T4, T5, T6> type;
4037 };
4038 template <typename T1, typename T2, typename T3, typename T4, typename T5,
4039  typename T6, typename T7>
4040 struct Types<T1, T2, T3, T4, T5, T6, T7, internal::None, internal::None,
4041  internal::None, internal::None, internal::None, internal::None,
4042  internal::None, internal::None, internal::None, internal::None,
4043  internal::None, internal::None, internal::None, internal::None,
4044  internal::None, internal::None, internal::None, internal::None,
4045  internal::None, internal::None, internal::None, internal::None,
4046  internal::None, internal::None, internal::None, internal::None,
4047  internal::None, internal::None, internal::None, internal::None,
4048  internal::None, internal::None, internal::None, internal::None,
4049  internal::None, internal::None, internal::None, internal::None,
4050  internal::None, internal::None, internal::None, internal::None,
4051  internal::None> {
4052  typedef internal::Types7<T1, T2, T3, T4, T5, T6, T7> type;
4053 };
4054 template <typename T1, typename T2, typename T3, typename T4, typename T5,
4055  typename T6, typename T7, typename T8>
4056 struct Types<T1, T2, T3, T4, T5, T6, T7, T8, internal::None, internal::None,
4057  internal::None, internal::None, internal::None, internal::None,
4058  internal::None, internal::None, internal::None, internal::None,
4059  internal::None, internal::None, internal::None, internal::None,
4060  internal::None, internal::None, internal::None, internal::None,
4061  internal::None, internal::None, internal::None, internal::None,
4062  internal::None, internal::None, internal::None, internal::None,
4063  internal::None, internal::None, internal::None, internal::None,
4064  internal::None, internal::None, internal::None, internal::None,
4065  internal::None, internal::None, internal::None, internal::None,
4066  internal::None, internal::None, internal::None, internal::None> {
4067  typedef internal::Types8<T1, T2, T3, T4, T5, T6, T7, T8> type;
4068 };
4069 template <typename T1, typename T2, typename T3, typename T4, typename T5,
4070  typename T6, typename T7, typename T8, typename T9>
4071 struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, internal::None,
4072  internal::None, internal::None, internal::None, internal::None,
4073  internal::None, internal::None, internal::None, internal::None,
4074  internal::None, internal::None, internal::None, internal::None,
4075  internal::None, internal::None, internal::None, internal::None,
4076  internal::None, internal::None, internal::None, internal::None,
4077  internal::None, internal::None, internal::None, internal::None,
4078  internal::None, internal::None, internal::None, internal::None,
4079  internal::None, internal::None, internal::None, internal::None,
4080  internal::None, internal::None, internal::None, internal::None,
4081  internal::None, internal::None, internal::None, internal::None> {
4082  typedef internal::Types9<T1, T2, T3, T4, T5, T6, T7, T8, T9> type;
4083 };
4084 template <typename T1, typename T2, typename T3, typename T4, typename T5,
4085  typename T6, typename T7, typename T8, typename T9, typename T10>
4086 struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, internal::None,
4087  internal::None, internal::None, internal::None, internal::None,
4088  internal::None, internal::None, internal::None, internal::None,
4089  internal::None, internal::None, internal::None, internal::None,
4090  internal::None, internal::None, internal::None, internal::None,
4091  internal::None, internal::None, internal::None, internal::None,
4092  internal::None, internal::None, internal::None, internal::None,
4093  internal::None, internal::None, internal::None, internal::None,
4094  internal::None, internal::None, internal::None, internal::None,
4095  internal::None, internal::None, internal::None, internal::None,
4096  internal::None, internal::None, internal::None> {
4097  typedef internal::Types10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> type;
4098 };
4099 template <typename T1, typename T2, typename T3, typename T4, typename T5,
4100  typename T6, typename T7, typename T8, typename T9, typename T10,
4101  typename T11>
4102 struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, internal::None,
4103  internal::None, internal::None, internal::None, internal::None,
4104  internal::None, internal::None, internal::None, internal::None,
4105  internal::None, internal::None, internal::None, internal::None,
4106  internal::None, internal::None, internal::None, internal::None,
4107  internal::None, internal::None, internal::None, internal::None,
4108  internal::None, internal::None, internal::None, internal::None,
4109  internal::None, internal::None, internal::None, internal::None,
4110  internal::None, internal::None, internal::None, internal::None,
4111  internal::None, internal::None, internal::None, internal::None,
4112  internal::None, internal::None> {
4113  typedef internal::Types11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> type;
4114 };
4115 template <typename T1, typename T2, typename T3, typename T4, typename T5,
4116  typename T6, typename T7, typename T8, typename T9, typename T10,
4117  typename T11, typename T12>
4118 struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, internal::None,
4119  internal::None, internal::None, internal::None, internal::None,
4120  internal::None, internal::None, internal::None, internal::None,
4121  internal::None, internal::None, internal::None, internal::None,
4122  internal::None, internal::None, internal::None, internal::None,
4123  internal::None, internal::None, internal::None, internal::None,
4124  internal::None, internal::None, internal::None, internal::None,
4125  internal::None, internal::None, internal::None, internal::None,
4126  internal::None, internal::None, internal::None, internal::None,
4127  internal::None, internal::None, internal::None, internal::None,
4128  internal::None> {
4129  typedef internal::Types12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
4130  T12> type;
4131 };
4132 template <typename T1, typename T2, typename T3, typename T4, typename T5,
4133  typename T6, typename T7, typename T8, typename T9, typename T10,
4134  typename T11, typename T12, typename T13>
4135 struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
4136  internal::None, internal::None, internal::None, internal::None,
4137  internal::None, internal::None, internal::None, internal::None,
4138  internal::None, internal::None, internal::None, internal::None,
4139  internal::None, internal::None, internal::None, internal::None,
4140  internal::None, internal::None, internal::None, internal::None,
4141  internal::None, internal::None, internal::None, internal::None,
4142  internal::None, internal::None, internal::None, internal::None,
4143  internal::None, internal::None, internal::None, internal::None,
4144  internal::None, internal::None, internal::None, internal::None,
4145  internal::None> {
4146  typedef internal::Types13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
4147  T13> type;
4148 };
4149 template <typename T1, typename T2, typename T3, typename T4, typename T5,
4150  typename T6, typename T7, typename T8, typename T9, typename T10,
4151  typename T11, typename T12, typename T13, typename T14>
4152 struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
4153  internal::None, internal::None, internal::None, internal::None,
4154  internal::None, internal::None, internal::None, internal::None,
4155  internal::None, internal::None, internal::None, internal::None,
4156  internal::None, internal::None, internal::None, internal::None,
4157  internal::None, internal::None, internal::None, internal::None,
4158  internal::None, internal::None, internal::None, internal::None,
4159  internal::None, internal::None, internal::None, internal::None,
4160  internal::None, internal::None, internal::None, internal::None,
4161  internal::None, internal::None, internal::None, internal::None> {
4162  typedef internal::Types14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
4163  T13, T14> type;
4164 };
4165 template <typename T1, typename T2, typename T3, typename T4, typename T5,
4166  typename T6, typename T7, typename T8, typename T9, typename T10,
4167  typename T11, typename T12, typename T13, typename T14, typename T15>
4168 struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4169  internal::None, internal::None, internal::None, internal::None,
4170  internal::None, internal::None, internal::None, internal::None,
4171  internal::None, internal::None, internal::None, internal::None,
4172  internal::None, internal::None, internal::None, internal::None,
4173  internal::None, internal::None, internal::None, internal::None,
4174  internal::None, internal::None, internal::None, internal::None,
4175  internal::None, internal::None, internal::None, internal::None,
4176  internal::None, internal::None, internal::None, internal::None,
4177  internal::None, internal::None, internal::None> {
4178  typedef internal::Types15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
4179  T13, T14, T15> type;
4180 };
4181 template <typename T1, typename T2, typename T3, typename T4, typename T5,
4182  typename T6, typename T7, typename T8, typename T9, typename T10,
4183  typename T11, typename T12, typename T13, typename T14, typename T15,
4184  typename T16>
4185 struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4186  T16, internal::None, internal::None, internal::None, internal::None,
4187  internal::None, internal::None, internal::None, internal::None,
4188  internal::None, internal::None, internal::None, internal::None,
4189  internal::None, internal::None, internal::None, internal::None,
4190  internal::None, internal::None, internal::None, internal::None,
4191  internal::None, internal::None, internal::None, internal::None,
4192  internal::None, internal::None, internal::None, internal::None,
4193  internal::None, internal::None, internal::None, internal::None,
4194  internal::None, internal::None> {
4195  typedef internal::Types16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
4196  T13, T14, T15, T16> type;
4197 };
4198 template <typename T1, typename T2, typename T3, typename T4, typename T5,
4199  typename T6, typename T7, typename T8, typename T9, typename T10,
4200  typename T11, typename T12, typename T13, typename T14, typename T15,
4201  typename T16, typename T17>
4202 struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4203  T16, T17, internal::None, internal::None, internal::None, internal::None,
4204  internal::None, internal::None, internal::None, internal::None,
4205  internal::None, internal::None, internal::None, internal::None,
4206  internal::None, internal::None, internal::None, internal::None,
4207  internal::None, internal::None, internal::None, internal::None,
4208  internal::None, internal::None, internal::None, internal::None,
4209  internal::None, internal::None, internal::None, internal::None,
4210  internal::None, internal::None, internal::None, internal::None,
4211  internal::None> {
4212  typedef internal::Types17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
4213  T13, T14, T15, T16, T17> type;
4214 };
4215 template <typename T1, typename T2, typename T3, typename T4, typename T5,
4216  typename T6, typename T7, typename T8, typename T9, typename T10,
4217  typename T11, typename T12, typename T13, typename T14, typename T15,
4218  typename T16, typename T17, typename T18>
4219 struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4220  T16, T17, T18, internal::None, internal::None, internal::None,
4221  internal::None, internal::None, internal::None, internal::None,
4222  internal::None, internal::None, internal::None, internal::None,
4223  internal::None, internal::None, internal::None, internal::None,
4224  internal::None, internal::None, internal::None, internal::None,
4225  internal::None, internal::None, internal::None, internal::None,
4226  internal::None, internal::None, internal::None, internal::None,
4227  internal::None, internal::None, internal::None, internal::None,
4228  internal::None> {
4229  typedef internal::Types18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
4230  T13, T14, T15, T16, T17, T18> type;
4231 };
4232 template <typename T1, typename T2, typename T3, typename T4, typename T5,
4233  typename T6, typename T7, typename T8, typename T9, typename T10,
4234  typename T11, typename T12, typename T13, typename T14, typename T15,
4235  typename T16, typename T17, typename T18, typename T19>
4236 struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4237  T16, T17, T18, T19, internal::None, internal::None, internal::None,
4238  internal::None, internal::None, internal::None, internal::None,
4239  internal::None, internal::None, internal::None, internal::None,
4240  internal::None, internal::None, internal::None, internal::None,
4241  internal::None, internal::None, internal::None, internal::None,
4242  internal::None, internal::None, internal::None, internal::None,
4243  internal::None, internal::None, internal::None, internal::None,
4244  internal::None, internal::None, internal::None, internal::None> {
4245  typedef internal::Types19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
4246  T13, T14, T15, T16, T17, T18, T19> type;
4247 };
4248 template <typename T1, typename T2, typename T3, typename T4, typename T5,
4249  typename T6, typename T7, typename T8, typename T9, typename T10,
4250  typename T11, typename T12, typename T13, typename T14, typename T15,
4251  typename T16, typename T17, typename T18, typename T19, typename T20>
4252 struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4253  T16, T17, T18, T19, T20, internal::None, internal::None, internal::None,
4254  internal::None, internal::None, internal::None, internal::None,
4255  internal::None, internal::None, internal::None, internal::None,
4256  internal::None, internal::None, internal::None, internal::None,
4257  internal::None, internal::None, internal::None, internal::None,
4258  internal::None, internal::None, internal::None, internal::None,
4259  internal::None, internal::None, internal::None, internal::None,
4260  internal::None, internal::None, internal::None> {
4261  typedef internal::Types20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
4262  T13, T14, T15, T16, T17, T18, T19, T20> type;
4263 };
4264 template <typename T1, typename T2, typename T3, typename T4, typename T5,
4265  typename T6, typename T7, typename T8, typename T9, typename T10,
4266  typename T11, typename T12, typename T13, typename T14, typename T15,
4267  typename T16, typename T17, typename T18, typename T19, typename T20,
4268  typename T21>
4269 struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4270  T16, T17, T18, T19, T20, T21, internal::None, internal::None,
4271  internal::None, internal::None, internal::None, internal::None,
4272  internal::None, internal::None, internal::None, internal::None,
4273  internal::None, internal::None, internal::None, internal::None,
4274  internal::None, internal::None, internal::None, internal::None,
4275  internal::None, internal::None, internal::None, internal::None,
4276  internal::None, internal::None, internal::None, internal::None,
4277  internal::None, internal::None, internal::None> {
4278  typedef internal::Types21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
4279  T13, T14, T15, T16, T17, T18, T19, T20, T21> type;
4280 };
4281 template <typename T1, typename T2, typename T3, typename T4, typename T5,
4282  typename T6, typename T7, typename T8, typename T9, typename T10,
4283  typename T11, typename T12, typename T13, typename T14, typename T15,
4284  typename T16, typename T17, typename T18, typename T19, typename T20,
4285  typename T21, typename T22>
4286 struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4287  T16, T17, T18, T19, T20, T21, T22, internal::None, internal::None,
4288  internal::None, internal::None, internal::None, internal::None,
4289  internal::None, internal::None, internal::None, internal::None,
4290  internal::None, internal::None, internal::None, internal::None,
4291  internal::None, internal::None, internal::None, internal::None,
4292  internal::None, internal::None, internal::None, internal::None,
4293  internal::None, internal::None, internal::None, internal::None,
4294  internal::None, internal::None> {
4295  typedef internal::Types22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
4296  T13, T14, T15, T16, T17, T18, T19, T20, T21, T22> type;
4297 };
4298 template <typename T1, typename T2, typename T3, typename T4, typename T5,
4299  typename T6, typename T7, typename T8, typename T9, typename T10,
4300  typename T11, typename T12, typename T13, typename T14, typename T15,
4301  typename T16, typename T17, typename T18, typename T19, typename T20,
4302  typename T21, typename T22, typename T23>
4303 struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4304  T16, T17, T18, T19, T20, T21, T22, T23, internal::None, internal::None,
4305  internal::None, internal::None, internal::None, internal::None,
4306  internal::None, internal::None, internal::None, internal::None,
4307  internal::None, internal::None, internal::None, internal::None,
4308  internal::None, internal::None, internal::None, internal::None,
4309  internal::None, internal::None, internal::None, internal::None,
4310  internal::None, internal::None, internal::None, internal::None,
4311  internal::None> {
4312  typedef internal::Types23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
4313  T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23> type;
4314 };
4315 template <typename T1, typename T2, typename T3, typename T4, typename T5,
4316  typename T6, typename T7, typename T8, typename T9, typename T10,
4317  typename T11, typename T12, typename T13, typename T14, typename T15,
4318  typename T16, typename T17, typename T18, typename T19, typename T20,
4319  typename T21, typename T22, typename T23, typename T24>
4320 struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4321  T16, T17, T18, T19, T20, T21, T22, T23, T24, internal::None,
4322  internal::None, internal::None, internal::None, internal::None,
4323  internal::None, internal::None, internal::None, internal::None,
4324  internal::None, internal::None, internal::None, internal::None,
4325  internal::None, internal::None, internal::None, internal::None,
4326  internal::None, internal::None, internal::None, internal::None,
4327  internal::None, internal::None, internal::None, internal::None,
4328  internal::None> {
4329  typedef internal::Types24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
4330  T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> type;
4331 };
4332 template <typename T1, typename T2, typename T3, typename T4, typename T5,
4333  typename T6, typename T7, typename T8, typename T9, typename T10,
4334  typename T11, typename T12, typename T13, typename T14, typename T15,
4335  typename T16, typename T17, typename T18, typename T19, typename T20,
4336  typename T21, typename T22, typename T23, typename T24, typename T25>
4337 struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4338  T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, internal::None,
4339  internal::None, internal::None, internal::None, internal::None,
4340  internal::None, internal::None, internal::None, internal::None,
4341  internal::None, internal::None, internal::None, internal::None,
4342  internal::None, internal::None, internal::None, internal::None,
4343  internal::None, internal::None, internal::None, internal::None,
4344  internal::None, internal::None, internal::None, internal::None> {
4345  typedef internal::Types25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
4346  T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> type;
4347 };
4348 template <typename T1, typename T2, typename T3, typename T4, typename T5,
4349  typename T6, typename T7, typename T8, typename T9, typename T10,
4350  typename T11, typename T12, typename T13, typename T14, typename T15,
4351  typename T16, typename T17, typename T18, typename T19, typename T20,
4352  typename T21, typename T22, typename T23, typename T24, typename T25,
4353  typename T26>
4354 struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4355  T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, internal::None,
4356  internal::None, internal::None, internal::None, internal::None,
4357  internal::None, internal::None, internal::None, internal::None,
4358  internal::None, internal::None, internal::None, internal::None,
4359  internal::None, internal::None, internal::None, internal::None,
4360  internal::None, internal::None, internal::None, internal::None,
4361  internal::None, internal::None, internal::None> {
4362  typedef internal::Types26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
4363  T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25,
4364  T26> type;
4365 };
4366 template <typename T1, typename T2, typename T3, typename T4, typename T5,
4367  typename T6, typename T7, typename T8, typename T9, typename T10,
4368  typename T11, typename T12, typename T13, typename T14, typename T15,
4369  typename T16, typename T17, typename T18, typename T19, typename T20,
4370  typename T21, typename T22, typename T23, typename T24, typename T25,
4371  typename T26, typename T27>
4372 struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4373  T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, internal::None,
4374  internal::None, internal::None, internal::None, internal::None,
4375  internal::None, internal::None, internal::None, internal::None,
4376  internal::None, internal::None, internal::None, internal::None,
4377  internal::None, internal::None, internal::None, internal::None,
4378  internal::None, internal::None, internal::None, internal::None,
4379  internal::None, internal::None> {
4380  typedef internal::Types27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
4381  T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
4382  T27> type;
4383 };
4384 template <typename T1, typename T2, typename T3, typename T4, typename T5,
4385  typename T6, typename T7, typename T8, typename T9, typename T10,
4386  typename T11, typename T12, typename T13, typename T14, typename T15,
4387  typename T16, typename T17, typename T18, typename T19, typename T20,
4388  typename T21, typename T22, typename T23, typename T24, typename T25,
4389  typename T26, typename T27, typename T28>
4390 struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4391  T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
4392  internal::None, internal::None, internal::None, internal::None,
4393  internal::None, internal::None, internal::None, internal::None,
4394  internal::None, internal::None, internal::None, internal::None,
4395  internal::None, internal::None, internal::None, internal::None,
4396  internal::None, internal::None, internal::None, internal::None,
4397  internal::None, internal::None> {
4398  typedef internal::Types28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
4399  T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
4400  T27, T28> type;
4401 };
4402 template <typename T1, typename T2, typename T3, typename T4, typename T5,
4403  typename T6, typename T7, typename T8, typename T9, typename T10,
4404  typename T11, typename T12, typename T13, typename T14, typename T15,
4405  typename T16, typename T17, typename T18, typename T19, typename T20,
4406  typename T21, typename T22, typename T23, typename T24, typename T25,
4407  typename T26, typename T27, typename T28, typename T29>
4408 struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4409  T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
4410  internal::None, internal::None, internal::None, internal::None,
4411  internal::None, internal::None, internal::None, internal::None,
4412  internal::None, internal::None, internal::None, internal::None,
4413  internal::None, internal::None, internal::None, internal::None,
4414  internal::None, internal::None, internal::None, internal::None,
4415  internal::None> {
4416  typedef internal::Types29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
4417  T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
4418  T27, T28, T29> type;
4419 };
4420 template <typename T1, typename T2, typename T3, typename T4, typename T5,
4421  typename T6, typename T7, typename T8, typename T9, typename T10,
4422  typename T11, typename T12, typename T13, typename T14, typename T15,
4423  typename T16, typename T17, typename T18, typename T19, typename T20,
4424  typename T21, typename T22, typename T23, typename T24, typename T25,
4425  typename T26, typename T27, typename T28, typename T29, typename T30>
4426 struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4427  T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
4428  internal::None, internal::None, internal::None, internal::None,
4429  internal::None, internal::None, internal::None, internal::None,
4430  internal::None, internal::None, internal::None, internal::None,
4431  internal::None, internal::None, internal::None, internal::None,
4432  internal::None, internal::None, internal::None, internal::None> {
4433  typedef internal::Types30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
4434  T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
4435  T27, T28, T29, T30> type;
4436 };
4437 template <typename T1, typename T2, typename T3, typename T4, typename T5,
4438  typename T6, typename T7, typename T8, typename T9, typename T10,
4439  typename T11, typename T12, typename T13, typename T14, typename T15,
4440  typename T16, typename T17, typename T18, typename T19, typename T20,
4441  typename T21, typename T22, typename T23, typename T24, typename T25,
4442  typename T26, typename T27, typename T28, typename T29, typename T30,
4443  typename T31>
4444 struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4445  T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
4446  T31, internal::None, internal::None, internal::None, internal::None,
4447  internal::None, internal::None, internal::None, internal::None,
4448  internal::None, internal::None, internal::None, internal::None,
4449  internal::None, internal::None, internal::None, internal::None,
4450  internal::None, internal::None, internal::None> {
4451  typedef internal::Types31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
4452  T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
4453  T27, T28, T29, T30, T31> type;
4454 };
4455 template <typename T1, typename T2, typename T3, typename T4, typename T5,
4456  typename T6, typename T7, typename T8, typename T9, typename T10,
4457  typename T11, typename T12, typename T13, typename T14, typename T15,
4458  typename T16, typename T17, typename T18, typename T19, typename T20,
4459  typename T21, typename T22, typename T23, typename T24, typename T25,
4460  typename T26, typename T27, typename T28, typename T29, typename T30,
4461  typename T31, typename T32>
4462 struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4463  T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
4464  T31, T32, internal::None, internal::None, internal::None, internal::None,
4465  internal::None, internal::None, internal::None, internal::None,
4466  internal::None, internal::None, internal::None, internal::None,
4467  internal::None, internal::None, internal::None, internal::None,
4468  internal::None, internal::None> {
4469  typedef internal::Types32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
4470  T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
4471  T27, T28, T29, T30, T31, T32> type;
4472 };
4473 template <typename T1, typename T2, typename T3, typename T4, typename T5,
4474  typename T6, typename T7, typename T8, typename T9, typename T10,
4475  typename T11, typename T12, typename T13, typename T14, typename T15,
4476  typename T16, typename T17, typename T18, typename T19, typename T20,
4477  typename T21, typename T22, typename T23, typename T24, typename T25,
4478  typename T26, typename T27, typename T28, typename T29, typename T30,
4479  typename T31, typename T32, typename T33>
4480 struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4481  T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
4482  T31, T32, T33, internal::None, internal::None, internal::None,
4483  internal::None, internal::None, internal::None, internal::None,
4484  internal::None, internal::None, internal::None, internal::None,
4485  internal::None, internal::None, internal::None, internal::None,
4486  internal::None, internal::None> {
4487  typedef internal::Types33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
4488  T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
4489  T27, T28, T29, T30, T31, T32, T33> type;
4490 };
4491 template <typename T1, typename T2, typename T3, typename T4, typename T5,
4492  typename T6, typename T7, typename T8, typename T9, typename T10,
4493  typename T11, typename T12, typename T13, typename T14, typename T15,
4494  typename T16, typename T17, typename T18, typename T19, typename T20,
4495  typename T21, typename T22, typename T23, typename T24, typename T25,
4496  typename T26, typename T27, typename T28, typename T29, typename T30,
4497  typename T31, typename T32, typename T33, typename T34>
4498 struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4499  T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
4500  T31, T32, T33, T34, internal::None, internal::None, internal::None,
4501  internal::None, internal::None, internal::None, internal::None,
4502  internal::None, internal::None, internal::None, internal::None,
4503  internal::None, internal::None, internal::None, internal::None,
4504  internal::None> {
4505  typedef internal::Types34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
4506  T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
4507  T27, T28, T29, T30, T31, T32, T33, T34> type;
4508 };
4509 template <typename T1, typename T2, typename T3, typename T4, typename T5,
4510  typename T6, typename T7, typename T8, typename T9, typename T10,
4511  typename T11, typename T12, typename T13, typename T14, typename T15,
4512  typename T16, typename T17, typename T18, typename T19, typename T20,
4513  typename T21, typename T22, typename T23, typename T24, typename T25,
4514  typename T26, typename T27, typename T28, typename T29, typename T30,
4515  typename T31, typename T32, typename T33, typename T34, typename T35>
4516 struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4517  T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
4518  T31, T32, T33, T34, T35, internal::None, internal::None, internal::None,
4519  internal::None, internal::None, internal::None, internal::None,
4520  internal::None, internal::None, internal::None, internal::None,
4521  internal::None, internal::None, internal::None, internal::None> {
4522  typedef internal::Types35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
4523  T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
4524  T27, T28, T29, T30, T31, T32, T33, T34, T35> type;
4525 };
4526 template <typename T1, typename T2, typename T3, typename T4, typename T5,
4527  typename T6, typename T7, typename T8, typename T9, typename T10,
4528  typename T11, typename T12, typename T13, typename T14, typename T15,
4529  typename T16, typename T17, typename T18, typename T19, typename T20,
4530  typename T21, typename T22, typename T23, typename T24, typename T25,
4531  typename T26, typename T27, typename T28, typename T29, typename T30,
4532  typename T31, typename T32, typename T33, typename T34, typename T35,
4533  typename T36>
4534 struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4535  T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
4536  T31, T32, T33, T34, T35, T36, internal::None, internal::None,
4537  internal::None, internal::None, internal::None, internal::None,
4538  internal::None, internal::None, internal::None, internal::None,
4539  internal::None, internal::None, internal::None, internal::None> {
4540  typedef internal::Types36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
4541  T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
4542  T27, T28, T29, T30, T31, T32, T33, T34, T35, T36> type;
4543 };
4544 template <typename T1, typename T2, typename T3, typename T4, typename T5,
4545  typename T6, typename T7, typename T8, typename T9, typename T10,
4546  typename T11, typename T12, typename T13, typename T14, typename T15,
4547  typename T16, typename T17, typename T18, typename T19, typename T20,
4548  typename T21, typename T22, typename T23, typename T24, typename T25,
4549  typename T26, typename T27, typename T28, typename T29, typename T30,
4550  typename T31, typename T32, typename T33, typename T34, typename T35,
4551  typename T36, typename T37>
4552 struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4553  T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
4554  T31, T32, T33, T34, T35, T36, T37, internal::None, internal::None,
4555  internal::None, internal::None, internal::None, internal::None,
4556  internal::None, internal::None, internal::None, internal::None,
4557  internal::None, internal::None, internal::None> {
4558  typedef internal::Types37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
4559  T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
4560  T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37> type;
4561 };
4562 template <typename T1, typename T2, typename T3, typename T4, typename T5,
4563  typename T6, typename T7, typename T8, typename T9, typename T10,
4564  typename T11, typename T12, typename T13, typename T14, typename T15,
4565  typename T16, typename T17, typename T18, typename T19, typename T20,
4566  typename T21, typename T22, typename T23, typename T24, typename T25,
4567  typename T26, typename T27, typename T28, typename T29, typename T30,
4568  typename T31, typename T32, typename T33, typename T34, typename T35,
4569  typename T36, typename T37, typename T38>
4570 struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4571  T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
4572  T31, T32, T33, T34, T35, T36, T37, T38, internal::None, internal::None,
4573  internal::None, internal::None, internal::None, internal::None,
4574  internal::None, internal::None, internal::None, internal::None,
4575  internal::None, internal::None> {
4576  typedef internal::Types38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
4577  T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
4578  T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> type;
4579 };
4580 template <typename T1, typename T2, typename T3, typename T4, typename T5,
4581  typename T6, typename T7, typename T8, typename T9, typename T10,
4582  typename T11, typename T12, typename T13, typename T14, typename T15,
4583  typename T16, typename T17, typename T18, typename T19, typename T20,
4584  typename T21, typename T22, typename T23, typename T24, typename T25,
4585  typename T26, typename T27, typename T28, typename T29, typename T30,
4586  typename T31, typename T32, typename T33, typename T34, typename T35,
4587  typename T36, typename T37, typename T38, typename T39>
4588 struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4589  T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
4590  T31, T32, T33, T34, T35, T36, T37, T38, T39, internal::None,
4591  internal::None, internal::None, internal::None, internal::None,
4592  internal::None, internal::None, internal::None, internal::None,
4593  internal::None, internal::None> {
4594  typedef internal::Types39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
4595  T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
4596  T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> type;
4597 };
4598 template <typename T1, typename T2, typename T3, typename T4, typename T5,
4599  typename T6, typename T7, typename T8, typename T9, typename T10,
4600  typename T11, typename T12, typename T13, typename T14, typename T15,
4601  typename T16, typename T17, typename T18, typename T19, typename T20,
4602  typename T21, typename T22, typename T23, typename T24, typename T25,
4603  typename T26, typename T27, typename T28, typename T29, typename T30,
4604  typename T31, typename T32, typename T33, typename T34, typename T35,
4605  typename T36, typename T37, typename T38, typename T39, typename T40>
4606 struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4607  T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
4608  T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, internal::None,
4609  internal::None, internal::None, internal::None, internal::None,
4610  internal::None, internal::None, internal::None, internal::None,
4611  internal::None> {
4612  typedef internal::Types40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
4613  T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
4614  T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39,
4615  T40> type;
4616 };
4617 template <typename T1, typename T2, typename T3, typename T4, typename T5,
4618  typename T6, typename T7, typename T8, typename T9, typename T10,
4619  typename T11, typename T12, typename T13, typename T14, typename T15,
4620  typename T16, typename T17, typename T18, typename T19, typename T20,
4621  typename T21, typename T22, typename T23, typename T24, typename T25,
4622  typename T26, typename T27, typename T28, typename T29, typename T30,
4623  typename T31, typename T32, typename T33, typename T34, typename T35,
4624  typename T36, typename T37, typename T38, typename T39, typename T40,
4625  typename T41>
4626 struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4627  T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
4628  T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, internal::None,
4629  internal::None, internal::None, internal::None, internal::None,
4630  internal::None, internal::None, internal::None, internal::None> {
4631  typedef internal::Types41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
4632  T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
4633  T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
4634  T41> type;
4635 };
4636 template <typename T1, typename T2, typename T3, typename T4, typename T5,
4637  typename T6, typename T7, typename T8, typename T9, typename T10,
4638  typename T11, typename T12, typename T13, typename T14, typename T15,
4639  typename T16, typename T17, typename T18, typename T19, typename T20,
4640  typename T21, typename T22, typename T23, typename T24, typename T25,
4641  typename T26, typename T27, typename T28, typename T29, typename T30,
4642  typename T31, typename T32, typename T33, typename T34, typename T35,
4643  typename T36, typename T37, typename T38, typename T39, typename T40,
4644  typename T41, typename T42>
4645 struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4646  T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
4647  T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, internal::None,
4648  internal::None, internal::None, internal::None, internal::None,
4649  internal::None, internal::None, internal::None> {
4650  typedef internal::Types42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
4651  T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
4652  T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
4653  T41, T42> type;
4654 };
4655 template <typename T1, typename T2, typename T3, typename T4, typename T5,
4656  typename T6, typename T7, typename T8, typename T9, typename T10,
4657  typename T11, typename T12, typename T13, typename T14, typename T15,
4658  typename T16, typename T17, typename T18, typename T19, typename T20,
4659  typename T21, typename T22, typename T23, typename T24, typename T25,
4660  typename T26, typename T27, typename T28, typename T29, typename T30,
4661  typename T31, typename T32, typename T33, typename T34, typename T35,
4662  typename T36, typename T37, typename T38, typename T39, typename T40,
4663  typename T41, typename T42, typename T43>
4664 struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4665  T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
4666  T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
4667  internal::None, internal::None, internal::None, internal::None,
4668  internal::None, internal::None, internal::None> {
4669  typedef internal::Types43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
4670  T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
4671  T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
4672  T41, T42, T43> type;
4673 };
4674 template <typename T1, typename T2, typename T3, typename T4, typename T5,
4675  typename T6, typename T7, typename T8, typename T9, typename T10,
4676  typename T11, typename T12, typename T13, typename T14, typename T15,
4677  typename T16, typename T17, typename T18, typename T19, typename T20,
4678  typename T21, typename T22, typename T23, typename T24, typename T25,
4679  typename T26, typename T27, typename T28, typename T29, typename T30,
4680  typename T31, typename T32, typename T33, typename T34, typename T35,
4681  typename T36, typename T37, typename T38, typename T39, typename T40,
4682  typename T41, typename T42, typename T43, typename T44>
4683 struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4684  T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
4685  T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
4686  internal::None, internal::None, internal::None, internal::None,
4687  internal::None, internal::None> {
4688  typedef internal::Types44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
4689  T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
4690  T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
4691  T41, T42, T43, T44> type;
4692 };
4693 template <typename T1, typename T2, typename T3, typename T4, typename T5,
4694  typename T6, typename T7, typename T8, typename T9, typename T10,
4695  typename T11, typename T12, typename T13, typename T14, typename T15,
4696  typename T16, typename T17, typename T18, typename T19, typename T20,
4697  typename T21, typename T22, typename T23, typename T24, typename T25,
4698  typename T26, typename T27, typename T28, typename T29, typename T30,
4699  typename T31, typename T32, typename T33, typename T34, typename T35,
4700  typename T36, typename T37, typename T38, typename T39, typename T40,
4701  typename T41, typename T42, typename T43, typename T44, typename T45>
4702 struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4703  T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
4704  T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45,
4705  internal::None, internal::None, internal::None, internal::None,
4706  internal::None> {
4707  typedef internal::Types45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
4708  T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
4709  T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
4710  T41, T42, T43, T44, T45> type;
4711 };
4712 template <typename T1, typename T2, typename T3, typename T4, typename T5,
4713  typename T6, typename T7, typename T8, typename T9, typename T10,
4714  typename T11, typename T12, typename T13, typename T14, typename T15,
4715  typename T16, typename T17, typename T18, typename T19, typename T20,
4716  typename T21, typename T22, typename T23, typename T24, typename T25,
4717  typename T26, typename T27, typename T28, typename T29, typename T30,
4718  typename T31, typename T32, typename T33, typename T34, typename T35,
4719  typename T36, typename T37, typename T38, typename T39, typename T40,
4720  typename T41, typename T42, typename T43, typename T44, typename T45,
4721  typename T46>
4722 struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4723  T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
4724  T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45,
4725  T46, internal::None, internal::None, internal::None, internal::None> {
4726  typedef internal::Types46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
4727  T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
4728  T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
4729  T41, T42, T43, T44, T45, T46> type;
4730 };
4731 template <typename T1, typename T2, typename T3, typename T4, typename T5,
4732  typename T6, typename T7, typename T8, typename T9, typename T10,
4733  typename T11, typename T12, typename T13, typename T14, typename T15,
4734  typename T16, typename T17, typename T18, typename T19, typename T20,
4735  typename T21, typename T22, typename T23, typename T24, typename T25,
4736  typename T26, typename T27, typename T28, typename T29, typename T30,
4737  typename T31, typename T32, typename T33, typename T34, typename T35,
4738  typename T36, typename T37, typename T38, typename T39, typename T40,
4739  typename T41, typename T42, typename T43, typename T44, typename T45,
4740  typename T46, typename T47>
4741 struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4742  T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
4743  T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45,
4744  T46, T47, internal::None, internal::None, internal::None> {
4745  typedef internal::Types47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
4746  T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
4747  T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
4748  T41, T42, T43, T44, T45, T46, T47> type;
4749 };
4750 template <typename T1, typename T2, typename T3, typename T4, typename T5,
4751  typename T6, typename T7, typename T8, typename T9, typename T10,
4752  typename T11, typename T12, typename T13, typename T14, typename T15,
4753  typename T16, typename T17, typename T18, typename T19, typename T20,
4754  typename T21, typename T22, typename T23, typename T24, typename T25,
4755  typename T26, typename T27, typename T28, typename T29, typename T30,
4756  typename T31, typename T32, typename T33, typename T34, typename T35,
4757  typename T36, typename T37, typename T38, typename T39, typename T40,
4758  typename T41, typename T42, typename T43, typename T44, typename T45,
4759  typename T46, typename T47, typename T48>
4760 struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4761  T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
4762  T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45,
4763  T46, T47, T48, internal::None, internal::None> {
4764  typedef internal::Types48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
4765  T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
4766  T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
4767  T41, T42, T43, T44, T45, T46, T47, T48> type;
4768 };
4769 template <typename T1, typename T2, typename T3, typename T4, typename T5,
4770  typename T6, typename T7, typename T8, typename T9, typename T10,
4771  typename T11, typename T12, typename T13, typename T14, typename T15,
4772  typename T16, typename T17, typename T18, typename T19, typename T20,
4773  typename T21, typename T22, typename T23, typename T24, typename T25,
4774  typename T26, typename T27, typename T28, typename T29, typename T30,
4775  typename T31, typename T32, typename T33, typename T34, typename T35,
4776  typename T36, typename T37, typename T38, typename T39, typename T40,
4777  typename T41, typename T42, typename T43, typename T44, typename T45,
4778  typename T46, typename T47, typename T48, typename T49>
4779 struct Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15,
4780  T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29, T30,
4781  T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44, T45,
4782  T46, T47, T48, T49, internal::None> {
4783  typedef internal::Types49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
4784  T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
4785  T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
4786  T41, T42, T43, T44, T45, T46, T47, T48, T49> type;
4787 };
4788 
4789 namespace internal {
4790 
4791 # define GTEST_TEMPLATE_ template <typename T> class
4792 
4793 // The template "selector" struct TemplateSel<Tmpl> is used to
4794 // represent Tmpl, which must be a class template with one type
4795 // parameter, as a type. TemplateSel<Tmpl>::Bind<T>::type is defined
4796 // as the type Tmpl<T>. This allows us to actually instantiate the
4797 // template "selected" by TemplateSel<Tmpl>.
4798 //
4799 // This trick is necessary for simulating typedef for class templates,
4800 // which C++ doesn't support directly.
4801 template <GTEST_TEMPLATE_ Tmpl>
4802 struct TemplateSel {
4803  template <typename T>
4804  struct Bind {
4805  typedef Tmpl<T> type;
4806  };
4807 };
4808 
4809 # define GTEST_BIND_(TmplSel, T) \
4810  TmplSel::template Bind<T>::type
4811 
4812 // A unique struct template used as the default value for the
4813 // arguments of class template Templates. This allows us to simulate
4814 // variadic templates (e.g. Templates<int>, Templates<int, double>,
4815 // and etc), which C++ doesn't support directly.
4816 template <typename T>
4817 struct NoneT {};
4818 
4819 // The following family of struct and struct templates are used to
4820 // represent template lists. In particular, TemplatesN<T1, T2, ...,
4821 // TN> represents a list of N templates (T1, T2, ..., and TN). Except
4822 // for Templates0, every struct in the family has two member types:
4823 // Head for the selector of the first template in the list, and Tail
4824 // for the rest of the list.
4825 
4826 // The empty template list.
4827 struct Templates0 {};
4828 
4829 // Template lists of length 1, 2, 3, and so on.
4830 
4831 template <GTEST_TEMPLATE_ T1>
4832 struct Templates1 {
4833  typedef TemplateSel<T1> Head;
4834  typedef Templates0 Tail;
4835 };
4836 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2>
4837 struct Templates2 {
4838  typedef TemplateSel<T1> Head;
4839  typedef Templates1<T2> Tail;
4840 };
4841 
4842 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3>
4843 struct Templates3 {
4844  typedef TemplateSel<T1> Head;
4845  typedef Templates2<T2, T3> Tail;
4846 };
4847 
4848 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
4849  GTEST_TEMPLATE_ T4>
4850 struct Templates4 {
4851  typedef TemplateSel<T1> Head;
4852  typedef Templates3<T2, T3, T4> Tail;
4853 };
4854 
4855 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
4856  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5>
4857 struct Templates5 {
4858  typedef TemplateSel<T1> Head;
4859  typedef Templates4<T2, T3, T4, T5> Tail;
4860 };
4861 
4862 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
4863  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6>
4864 struct Templates6 {
4865  typedef TemplateSel<T1> Head;
4866  typedef Templates5<T2, T3, T4, T5, T6> Tail;
4867 };
4868 
4869 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
4870  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
4871  GTEST_TEMPLATE_ T7>
4872 struct Templates7 {
4873  typedef TemplateSel<T1> Head;
4874  typedef Templates6<T2, T3, T4, T5, T6, T7> Tail;
4875 };
4876 
4877 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
4878  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
4879  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8>
4880 struct Templates8 {
4881  typedef TemplateSel<T1> Head;
4882  typedef Templates7<T2, T3, T4, T5, T6, T7, T8> Tail;
4883 };
4884 
4885 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
4886  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
4887  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9>
4888 struct Templates9 {
4889  typedef TemplateSel<T1> Head;
4890  typedef Templates8<T2, T3, T4, T5, T6, T7, T8, T9> Tail;
4891 };
4892 
4893 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
4894  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
4895  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
4896  GTEST_TEMPLATE_ T10>
4897 struct Templates10 {
4898  typedef TemplateSel<T1> Head;
4899  typedef Templates9<T2, T3, T4, T5, T6, T7, T8, T9, T10> Tail;
4900 };
4901 
4902 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
4903  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
4904  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
4905  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11>
4906 struct Templates11 {
4907  typedef TemplateSel<T1> Head;
4908  typedef Templates10<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> Tail;
4909 };
4910 
4911 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
4912  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
4913  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
4914  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12>
4915 struct Templates12 {
4916  typedef TemplateSel<T1> Head;
4917  typedef Templates11<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> Tail;
4918 };
4919 
4920 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
4921  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
4922  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
4923  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
4924  GTEST_TEMPLATE_ T13>
4925 struct Templates13 {
4926  typedef TemplateSel<T1> Head;
4927  typedef Templates12<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> Tail;
4928 };
4929 
4930 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
4931  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
4932  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
4933  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
4934  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14>
4935 struct Templates14 {
4936  typedef TemplateSel<T1> Head;
4937  typedef Templates13<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
4938  T14> Tail;
4939 };
4940 
4941 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
4942  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
4943  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
4944  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
4945  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15>
4946 struct Templates15 {
4947  typedef TemplateSel<T1> Head;
4948  typedef Templates14<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
4949  T15> Tail;
4950 };
4951 
4952 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
4953  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
4954  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
4955  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
4956  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
4957  GTEST_TEMPLATE_ T16>
4958 struct Templates16 {
4959  typedef TemplateSel<T1> Head;
4960  typedef Templates15<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
4961  T15, T16> Tail;
4962 };
4963 
4964 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
4965  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
4966  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
4967  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
4968  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
4969  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17>
4970 struct Templates17 {
4971  typedef TemplateSel<T1> Head;
4972  typedef Templates16<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
4973  T15, T16, T17> Tail;
4974 };
4975 
4976 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
4977  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
4978  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
4979  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
4980  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
4981  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18>
4982 struct Templates18 {
4983  typedef TemplateSel<T1> Head;
4984  typedef Templates17<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
4985  T15, T16, T17, T18> Tail;
4986 };
4987 
4988 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
4989  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
4990  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
4991  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
4992  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
4993  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
4994  GTEST_TEMPLATE_ T19>
4995 struct Templates19 {
4996  typedef TemplateSel<T1> Head;
4997  typedef Templates18<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
4998  T15, T16, T17, T18, T19> Tail;
4999 };
5000 
5001 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5002  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5003  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5004  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5005  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5006  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5007  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20>
5008 struct Templates20 {
5009  typedef TemplateSel<T1> Head;
5010  typedef Templates19<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5011  T15, T16, T17, T18, T19, T20> Tail;
5012 };
5013 
5014 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5015  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5016  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5017  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5018  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5019  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5020  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21>
5021 struct Templates21 {
5022  typedef TemplateSel<T1> Head;
5023  typedef Templates20<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5024  T15, T16, T17, T18, T19, T20, T21> Tail;
5025 };
5026 
5027 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5028  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5029  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5030  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5031  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5032  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5033  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5034  GTEST_TEMPLATE_ T22>
5035 struct Templates22 {
5036  typedef TemplateSel<T1> Head;
5037  typedef Templates21<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5038  T15, T16, T17, T18, T19, T20, T21, T22> Tail;
5039 };
5040 
5041 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5042  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5043  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5044  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5045  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5046  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5047  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5048  GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23>
5049 struct Templates23 {
5050  typedef TemplateSel<T1> Head;
5051  typedef Templates22<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5052  T15, T16, T17, T18, T19, T20, T21, T22, T23> Tail;
5053 };
5054 
5055 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5056  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5057  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5058  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5059  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5060  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5061  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5062  GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24>
5063 struct Templates24 {
5064  typedef TemplateSel<T1> Head;
5065  typedef Templates23<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5066  T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> Tail;
5067 };
5068 
5069 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5070  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5071  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5072  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5073  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5074  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5075  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5076  GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
5077  GTEST_TEMPLATE_ T25>
5078 struct Templates25 {
5079  typedef TemplateSel<T1> Head;
5080  typedef Templates24<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5081  T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> Tail;
5082 };
5083 
5084 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5085  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5086  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5087  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5088  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5089  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5090  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5091  GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
5092  GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26>
5093 struct Templates26 {
5094  typedef TemplateSel<T1> Head;
5095  typedef Templates25<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5096  T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26> Tail;
5097 };
5098 
5099 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5100  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5101  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5102  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5103  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5104  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5105  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5106  GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
5107  GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27>
5108 struct Templates27 {
5109  typedef TemplateSel<T1> Head;
5110  typedef Templates26<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5111  T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27> Tail;
5112 };
5113 
5114 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5115  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5116  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5117  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5118  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5119  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5120  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5121  GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
5122  GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
5123  GTEST_TEMPLATE_ T28>
5124 struct Templates28 {
5125  typedef TemplateSel<T1> Head;
5126  typedef Templates27<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5127  T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
5128  T28> Tail;
5129 };
5130 
5131 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5132  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5133  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5134  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5135  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5136  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5137  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5138  GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
5139  GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
5140  GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29>
5141 struct Templates29 {
5142  typedef TemplateSel<T1> Head;
5143  typedef Templates28<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5144  T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
5145  T29> Tail;
5146 };
5147 
5148 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5149  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5150  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5151  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5152  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5153  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5154  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5155  GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
5156  GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
5157  GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30>
5158 struct Templates30 {
5159  typedef TemplateSel<T1> Head;
5160  typedef Templates29<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5161  T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
5162  T29, T30> Tail;
5163 };
5164 
5165 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5166  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5167  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5168  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5169  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5170  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5171  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5172  GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
5173  GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
5174  GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
5175  GTEST_TEMPLATE_ T31>
5176 struct Templates31 {
5177  typedef TemplateSel<T1> Head;
5178  typedef Templates30<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5179  T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
5180  T29, T30, T31> Tail;
5181 };
5182 
5183 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5184  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5185  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5186  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5187  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5188  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5189  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5190  GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
5191  GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
5192  GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
5193  GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32>
5194 struct Templates32 {
5195  typedef TemplateSel<T1> Head;
5196  typedef Templates31<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5197  T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
5198  T29, T30, T31, T32> Tail;
5199 };
5200 
5201 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5202  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5203  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5204  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5205  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5206  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5207  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5208  GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
5209  GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
5210  GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
5211  GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33>
5212 struct Templates33 {
5213  typedef TemplateSel<T1> Head;
5214  typedef Templates32<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5215  T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
5216  T29, T30, T31, T32, T33> Tail;
5217 };
5218 
5219 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5220  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5221  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5222  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5223  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5224  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5225  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5226  GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
5227  GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
5228  GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
5229  GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
5230  GTEST_TEMPLATE_ T34>
5231 struct Templates34 {
5232  typedef TemplateSel<T1> Head;
5233  typedef Templates33<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5234  T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
5235  T29, T30, T31, T32, T33, T34> Tail;
5236 };
5237 
5238 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5239  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5240  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5241  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5242  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5243  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5244  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5245  GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
5246  GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
5247  GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
5248  GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
5249  GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35>
5250 struct Templates35 {
5251  typedef TemplateSel<T1> Head;
5252  typedef Templates34<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5253  T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
5254  T29, T30, T31, T32, T33, T34, T35> Tail;
5255 };
5256 
5257 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5258  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5259  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5260  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5261  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5262  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5263  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5264  GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
5265  GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
5266  GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
5267  GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
5268  GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36>
5269 struct Templates36 {
5270  typedef TemplateSel<T1> Head;
5271  typedef Templates35<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5272  T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
5273  T29, T30, T31, T32, T33, T34, T35, T36> Tail;
5274 };
5275 
5276 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5277  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5278  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5279  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5280  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5281  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5282  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5283  GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
5284  GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
5285  GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
5286  GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
5287  GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
5288  GTEST_TEMPLATE_ T37>
5289 struct Templates37 {
5290  typedef TemplateSel<T1> Head;
5291  typedef Templates36<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5292  T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
5293  T29, T30, T31, T32, T33, T34, T35, T36, T37> Tail;
5294 };
5295 
5296 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5297  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5298  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5299  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5300  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5301  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5302  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5303  GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
5304  GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
5305  GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
5306  GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
5307  GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
5308  GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38>
5309 struct Templates38 {
5310  typedef TemplateSel<T1> Head;
5311  typedef Templates37<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5312  T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
5313  T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> Tail;
5314 };
5315 
5316 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5317  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5318  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5319  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5320  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5321  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5322  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5323  GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
5324  GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
5325  GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
5326  GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
5327  GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
5328  GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39>
5329 struct Templates39 {
5330  typedef TemplateSel<T1> Head;
5331  typedef Templates38<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5332  T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
5333  T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> Tail;
5334 };
5335 
5336 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5337  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5338  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5339  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5340  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5341  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5342  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5343  GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
5344  GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
5345  GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
5346  GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
5347  GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
5348  GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
5349  GTEST_TEMPLATE_ T40>
5350 struct Templates40 {
5351  typedef TemplateSel<T1> Head;
5352  typedef Templates39<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5353  T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
5354  T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> Tail;
5355 };
5356 
5357 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5358  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5359  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5360  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5361  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5362  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5363  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5364  GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
5365  GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
5366  GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
5367  GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
5368  GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
5369  GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
5370  GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41>
5371 struct Templates41 {
5372  typedef TemplateSel<T1> Head;
5373  typedef Templates40<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5374  T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
5375  T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41> Tail;
5376 };
5377 
5378 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5379  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5380  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5381  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5382  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5383  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5384  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5385  GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
5386  GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
5387  GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
5388  GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
5389  GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
5390  GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
5391  GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42>
5392 struct Templates42 {
5393  typedef TemplateSel<T1> Head;
5394  typedef Templates41<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5395  T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
5396  T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
5397  T42> Tail;
5398 };
5399 
5400 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5401  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5402  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5403  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5404  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5405  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5406  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5407  GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
5408  GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
5409  GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
5410  GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
5411  GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
5412  GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
5413  GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
5414  GTEST_TEMPLATE_ T43>
5415 struct Templates43 {
5416  typedef TemplateSel<T1> Head;
5417  typedef Templates42<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5418  T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
5419  T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
5420  T43> Tail;
5421 };
5422 
5423 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5424  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5425  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5426  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5427  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5428  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5429  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5430  GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
5431  GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
5432  GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
5433  GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
5434  GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
5435  GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
5436  GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
5437  GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44>
5438 struct Templates44 {
5439  typedef TemplateSel<T1> Head;
5440  typedef Templates43<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5441  T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
5442  T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
5443  T43, T44> Tail;
5444 };
5445 
5446 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5447  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5448  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5449  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5450  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5451  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5452  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5453  GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
5454  GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
5455  GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
5456  GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
5457  GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
5458  GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
5459  GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
5460  GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45>
5461 struct Templates45 {
5462  typedef TemplateSel<T1> Head;
5463  typedef Templates44<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5464  T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
5465  T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
5466  T43, T44, T45> Tail;
5467 };
5468 
5469 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5470  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5471  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5472  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5473  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5474  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5475  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5476  GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
5477  GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
5478  GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
5479  GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
5480  GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
5481  GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
5482  GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
5483  GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
5484  GTEST_TEMPLATE_ T46>
5485 struct Templates46 {
5486  typedef TemplateSel<T1> Head;
5487  typedef Templates45<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5488  T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
5489  T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
5490  T43, T44, T45, T46> Tail;
5491 };
5492 
5493 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5494  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5495  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5496  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5497  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5498  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5499  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5500  GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
5501  GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
5502  GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
5503  GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
5504  GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
5505  GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
5506  GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
5507  GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
5508  GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47>
5509 struct Templates47 {
5510  typedef TemplateSel<T1> Head;
5511  typedef Templates46<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5512  T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
5513  T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
5514  T43, T44, T45, T46, T47> Tail;
5515 };
5516 
5517 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5518  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5519  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5520  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5521  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5522  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5523  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5524  GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
5525  GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
5526  GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
5527  GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
5528  GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
5529  GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
5530  GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
5531  GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
5532  GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47, GTEST_TEMPLATE_ T48>
5533 struct Templates48 {
5534  typedef TemplateSel<T1> Head;
5535  typedef Templates47<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5536  T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
5537  T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
5538  T43, T44, T45, T46, T47, T48> Tail;
5539 };
5540 
5541 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5542  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5543  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5544  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5545  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5546  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5547  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5548  GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
5549  GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
5550  GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
5551  GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
5552  GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
5553  GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
5554  GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
5555  GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
5556  GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47, GTEST_TEMPLATE_ T48,
5557  GTEST_TEMPLATE_ T49>
5558 struct Templates49 {
5559  typedef TemplateSel<T1> Head;
5560  typedef Templates48<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5561  T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
5562  T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
5563  T43, T44, T45, T46, T47, T48, T49> Tail;
5564 };
5565 
5566 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5567  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5568  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5569  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5570  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5571  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5572  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5573  GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
5574  GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
5575  GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
5576  GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
5577  GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
5578  GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
5579  GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
5580  GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
5581  GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47, GTEST_TEMPLATE_ T48,
5582  GTEST_TEMPLATE_ T49, GTEST_TEMPLATE_ T50>
5583 struct Templates50 {
5584  typedef TemplateSel<T1> Head;
5585  typedef Templates49<T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5586  T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
5587  T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42,
5588  T43, T44, T45, T46, T47, T48, T49, T50> Tail;
5589 };
5590 
5591 
5592 // We don't want to require the users to write TemplatesN<...> directly,
5593 // as that would require them to count the length. Templates<...> is much
5594 // easier to write, but generates horrible messages when there is a
5595 // compiler error, as gcc insists on printing out each template
5596 // argument, even if it has the default value (this means Templates<list>
5597 // will appear as Templates<list, NoneT, NoneT, ..., NoneT> in the compiler
5598 // errors).
5599 //
5600 // Our solution is to combine the best part of the two approaches: a
5601 // user would write Templates<T1, ..., TN>, and Google Test will translate
5602 // that to TemplatesN<T1, ..., TN> internally to make error messages
5603 // readable. The translation is done by the 'type' member of the
5604 // Templates template.
5605 template <GTEST_TEMPLATE_ T1 = NoneT, GTEST_TEMPLATE_ T2 = NoneT,
5606  GTEST_TEMPLATE_ T3 = NoneT, GTEST_TEMPLATE_ T4 = NoneT,
5607  GTEST_TEMPLATE_ T5 = NoneT, GTEST_TEMPLATE_ T6 = NoneT,
5608  GTEST_TEMPLATE_ T7 = NoneT, GTEST_TEMPLATE_ T8 = NoneT,
5609  GTEST_TEMPLATE_ T9 = NoneT, GTEST_TEMPLATE_ T10 = NoneT,
5610  GTEST_TEMPLATE_ T11 = NoneT, GTEST_TEMPLATE_ T12 = NoneT,
5611  GTEST_TEMPLATE_ T13 = NoneT, GTEST_TEMPLATE_ T14 = NoneT,
5612  GTEST_TEMPLATE_ T15 = NoneT, GTEST_TEMPLATE_ T16 = NoneT,
5613  GTEST_TEMPLATE_ T17 = NoneT, GTEST_TEMPLATE_ T18 = NoneT,
5614  GTEST_TEMPLATE_ T19 = NoneT, GTEST_TEMPLATE_ T20 = NoneT,
5615  GTEST_TEMPLATE_ T21 = NoneT, GTEST_TEMPLATE_ T22 = NoneT,
5616  GTEST_TEMPLATE_ T23 = NoneT, GTEST_TEMPLATE_ T24 = NoneT,
5617  GTEST_TEMPLATE_ T25 = NoneT, GTEST_TEMPLATE_ T26 = NoneT,
5618  GTEST_TEMPLATE_ T27 = NoneT, GTEST_TEMPLATE_ T28 = NoneT,
5619  GTEST_TEMPLATE_ T29 = NoneT, GTEST_TEMPLATE_ T30 = NoneT,
5620  GTEST_TEMPLATE_ T31 = NoneT, GTEST_TEMPLATE_ T32 = NoneT,
5621  GTEST_TEMPLATE_ T33 = NoneT, GTEST_TEMPLATE_ T34 = NoneT,
5622  GTEST_TEMPLATE_ T35 = NoneT, GTEST_TEMPLATE_ T36 = NoneT,
5623  GTEST_TEMPLATE_ T37 = NoneT, GTEST_TEMPLATE_ T38 = NoneT,
5624  GTEST_TEMPLATE_ T39 = NoneT, GTEST_TEMPLATE_ T40 = NoneT,
5625  GTEST_TEMPLATE_ T41 = NoneT, GTEST_TEMPLATE_ T42 = NoneT,
5626  GTEST_TEMPLATE_ T43 = NoneT, GTEST_TEMPLATE_ T44 = NoneT,
5627  GTEST_TEMPLATE_ T45 = NoneT, GTEST_TEMPLATE_ T46 = NoneT,
5628  GTEST_TEMPLATE_ T47 = NoneT, GTEST_TEMPLATE_ T48 = NoneT,
5629  GTEST_TEMPLATE_ T49 = NoneT, GTEST_TEMPLATE_ T50 = NoneT>
5630 struct Templates {
5631  typedef Templates50<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
5632  T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
5633  T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
5634  T42, T43, T44, T45, T46, T47, T48, T49, T50> type;
5635 };
5636 
5637 template <>
5638 struct Templates<NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5639  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5640  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5641  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5642  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5643  NoneT> {
5644  typedef Templates0 type;
5645 };
5646 template <GTEST_TEMPLATE_ T1>
5647 struct Templates<T1, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5648  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5649  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5650  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5651  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5652  NoneT> {
5653  typedef Templates1<T1> type;
5654 };
5655 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2>
5656 struct Templates<T1, T2, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5657  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5658  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5659  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5660  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5661  NoneT> {
5662  typedef Templates2<T1, T2> type;
5663 };
5664 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3>
5665 struct Templates<T1, T2, T3, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5666  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5667  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5668  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5669  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
5670  typedef Templates3<T1, T2, T3> type;
5671 };
5672 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5673  GTEST_TEMPLATE_ T4>
5674 struct Templates<T1, T2, T3, T4, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5675  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5676  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5677  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5678  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
5679  typedef Templates4<T1, T2, T3, T4> type;
5680 };
5681 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5682  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5>
5683 struct Templates<T1, T2, T3, T4, T5, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5684  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5685  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5686  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5687  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
5688  typedef Templates5<T1, T2, T3, T4, T5> type;
5689 };
5690 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5691  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6>
5692 struct Templates<T1, T2, T3, T4, T5, T6, NoneT, NoneT, NoneT, NoneT, NoneT,
5693  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5694  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5695  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5696  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
5697  typedef Templates6<T1, T2, T3, T4, T5, T6> type;
5698 };
5699 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5700  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5701  GTEST_TEMPLATE_ T7>
5702 struct Templates<T1, T2, T3, T4, T5, T6, T7, NoneT, NoneT, NoneT, NoneT, NoneT,
5703  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5704  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5705  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5706  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
5707  typedef Templates7<T1, T2, T3, T4, T5, T6, T7> type;
5708 };
5709 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5710  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5711  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8>
5712 struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, NoneT, NoneT, NoneT, NoneT,
5713  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5714  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5715  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5716  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
5717  typedef Templates8<T1, T2, T3, T4, T5, T6, T7, T8> type;
5718 };
5719 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5720  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5721  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9>
5722 struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, NoneT, NoneT, NoneT,
5723  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5724  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5725  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5726  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
5727  typedef Templates9<T1, T2, T3, T4, T5, T6, T7, T8, T9> type;
5728 };
5729 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5730  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5731  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5732  GTEST_TEMPLATE_ T10>
5733 struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, NoneT, NoneT, NoneT,
5734  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5735  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5736  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5737  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
5738  typedef Templates10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> type;
5739 };
5740 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5741  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5742  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5743  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11>
5744 struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, NoneT, NoneT,
5745  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5746  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5747  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5748  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
5749  typedef Templates11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> type;
5750 };
5751 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5752  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5753  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5754  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12>
5755 struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, NoneT,
5756  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5757  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5758  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5759  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
5760  typedef Templates12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> type;
5761 };
5762 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5763  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5764  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5765  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5766  GTEST_TEMPLATE_ T13>
5767 struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, NoneT,
5768  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5769  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5770  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5771  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
5772  typedef Templates13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
5773  T13> type;
5774 };
5775 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5776  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5777  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5778  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5779  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14>
5780 struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5781  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5782  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5783  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5784  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
5785  typedef Templates14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
5786  T14> type;
5787 };
5788 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5789  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5790  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5791  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5792  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15>
5793 struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5794  T15, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5795  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5796  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5797  NoneT, NoneT, NoneT, NoneT, NoneT> {
5798  typedef Templates15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
5799  T14, T15> type;
5800 };
5801 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5802  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5803  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5804  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5805  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5806  GTEST_TEMPLATE_ T16>
5807 struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5808  T15, T16, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5809  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5810  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5811  NoneT, NoneT, NoneT, NoneT, NoneT> {
5812  typedef Templates16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
5813  T14, T15, T16> type;
5814 };
5815 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5816  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5817  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5818  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5819  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5820  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17>
5821 struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5822  T15, T16, T17, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5823  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5824  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5825  NoneT, NoneT, NoneT, NoneT, NoneT> {
5826  typedef Templates17<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
5827  T14, T15, T16, T17> type;
5828 };
5829 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5830  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5831  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5832  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5833  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5834  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18>
5835 struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5836  T15, T16, T17, T18, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5837  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5838  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5839  NoneT, NoneT, NoneT, NoneT> {
5840  typedef Templates18<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
5841  T14, T15, T16, T17, T18> type;
5842 };
5843 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5844  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5845  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5846  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5847  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5848  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5849  GTEST_TEMPLATE_ T19>
5850 struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5851  T15, T16, T17, T18, T19, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5852  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5853  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5854  NoneT, NoneT, NoneT, NoneT> {
5855  typedef Templates19<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
5856  T14, T15, T16, T17, T18, T19> type;
5857 };
5858 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5859  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5860  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5861  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5862  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5863  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5864  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20>
5865 struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5866  T15, T16, T17, T18, T19, T20, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5867  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5868  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5869  NoneT, NoneT, NoneT, NoneT> {
5870  typedef Templates20<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
5871  T14, T15, T16, T17, T18, T19, T20> type;
5872 };
5873 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5874  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5875  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5876  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5877  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5878  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5879  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21>
5880 struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5881  T15, T16, T17, T18, T19, T20, T21, NoneT, NoneT, NoneT, NoneT, NoneT,
5882  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5883  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5884  NoneT, NoneT, NoneT, NoneT> {
5885  typedef Templates21<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
5886  T14, T15, T16, T17, T18, T19, T20, T21> type;
5887 };
5888 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5889  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5890  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5891  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5892  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5893  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5894  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5895  GTEST_TEMPLATE_ T22>
5896 struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5897  T15, T16, T17, T18, T19, T20, T21, T22, NoneT, NoneT, NoneT, NoneT, NoneT,
5898  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5899  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5900  NoneT, NoneT, NoneT> {
5901  typedef Templates22<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
5902  T14, T15, T16, T17, T18, T19, T20, T21, T22> type;
5903 };
5904 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5905  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5906  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5907  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5908  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5909  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5910  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5911  GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23>
5912 struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5913  T15, T16, T17, T18, T19, T20, T21, T22, T23, NoneT, NoneT, NoneT, NoneT,
5914  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5915  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5916  NoneT, NoneT, NoneT> {
5917  typedef Templates23<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
5918  T14, T15, T16, T17, T18, T19, T20, T21, T22, T23> type;
5919 };
5920 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5921  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5922  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5923  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5924  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5925  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5926  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5927  GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24>
5928 struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5929  T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, NoneT, NoneT, NoneT,
5930  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5931  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5932  NoneT, NoneT, NoneT> {
5933  typedef Templates24<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
5934  T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24> type;
5935 };
5936 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5937  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5938  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5939  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5940  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5941  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5942  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5943  GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
5944  GTEST_TEMPLATE_ T25>
5945 struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5946  T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, NoneT, NoneT, NoneT,
5947  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5948  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5949  NoneT, NoneT> {
5950  typedef Templates25<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
5951  T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25> type;
5952 };
5953 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5954  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5955  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5956  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5957  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5958  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5959  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5960  GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
5961  GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26>
5962 struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5963  T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, NoneT, NoneT,
5964  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5965  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5966  NoneT, NoneT> {
5967  typedef Templates26<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
5968  T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26> type;
5969 };
5970 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5971  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5972  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5973  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5974  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5975  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5976  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5977  GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
5978  GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27>
5979 struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5980  T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, NoneT,
5981  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5982  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
5983  NoneT, NoneT> {
5984  typedef Templates27<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
5985  T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
5986  T27> type;
5987 };
5988 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
5989  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
5990  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
5991  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
5992  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
5993  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
5994  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
5995  GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
5996  GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
5997  GTEST_TEMPLATE_ T28>
5998 struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
5999  T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
6000  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6001  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6002  NoneT, NoneT> {
6003  typedef Templates28<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6004  T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
6005  T28> type;
6006 };
6007 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6008  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6009  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6010  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6011  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6012  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6013  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
6014  GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
6015  GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
6016  GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29>
6017 struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6018  T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
6019  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6020  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6021  NoneT> {
6022  typedef Templates29<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6023  T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
6024  T28, T29> type;
6025 };
6026 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6027  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6028  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6029  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6030  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6031  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6032  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
6033  GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
6034  GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
6035  GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30>
6036 struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6037  T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
6038  T30, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6039  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
6040  typedef Templates30<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6041  T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
6042  T28, T29, T30> type;
6043 };
6044 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6045  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6046  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6047  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6048  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6049  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6050  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
6051  GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
6052  GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
6053  GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
6054  GTEST_TEMPLATE_ T31>
6055 struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6056  T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
6057  T30, T31, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6058  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
6059  typedef Templates31<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6060  T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
6061  T28, T29, T30, T31> type;
6062 };
6063 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6064  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6065  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6066  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6067  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6068  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6069  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
6070  GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
6071  GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
6072  GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
6073  GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32>
6074 struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6075  T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
6076  T30, T31, T32, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6077  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
6078  typedef Templates32<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6079  T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
6080  T28, T29, T30, T31, T32> type;
6081 };
6082 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6083  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6084  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6085  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6086  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6087  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6088  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
6089  GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
6090  GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
6091  GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
6092  GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33>
6093 struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6094  T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
6095  T30, T31, T32, T33, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6096  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
6097  typedef Templates33<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6098  T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
6099  T28, T29, T30, T31, T32, T33> type;
6100 };
6101 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6102  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6103  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6104  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6105  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6106  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6107  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
6108  GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
6109  GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
6110  GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
6111  GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
6112  GTEST_TEMPLATE_ T34>
6113 struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6114  T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
6115  T30, T31, T32, T33, T34, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6116  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
6117  typedef Templates34<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6118  T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
6119  T28, T29, T30, T31, T32, T33, T34> type;
6120 };
6121 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6122  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6123  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6124  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6125  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6126  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6127  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
6128  GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
6129  GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
6130  GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
6131  GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
6132  GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35>
6133 struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6134  T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
6135  T30, T31, T32, T33, T34, T35, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT,
6136  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
6137  typedef Templates35<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6138  T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
6139  T28, T29, T30, T31, T32, T33, T34, T35> type;
6140 };
6141 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6142  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6143  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6144  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6145  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6146  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6147  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
6148  GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
6149  GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
6150  GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
6151  GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
6152  GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36>
6153 struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6154  T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
6155  T30, T31, T32, T33, T34, T35, T36, NoneT, NoneT, NoneT, NoneT, NoneT,
6156  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
6157  typedef Templates36<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6158  T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
6159  T28, T29, T30, T31, T32, T33, T34, T35, T36> type;
6160 };
6161 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6162  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6163  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6164  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6165  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6166  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6167  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
6168  GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
6169  GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
6170  GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
6171  GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
6172  GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
6173  GTEST_TEMPLATE_ T37>
6174 struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6175  T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
6176  T30, T31, T32, T33, T34, T35, T36, T37, NoneT, NoneT, NoneT, NoneT, NoneT,
6177  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
6178  typedef Templates37<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6179  T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
6180  T28, T29, T30, T31, T32, T33, T34, T35, T36, T37> type;
6181 };
6182 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6183  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6184  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6185  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6186  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6187  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6188  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
6189  GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
6190  GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
6191  GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
6192  GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
6193  GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
6194  GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38>
6195 struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6196  T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
6197  T30, T31, T32, T33, T34, T35, T36, T37, T38, NoneT, NoneT, NoneT, NoneT,
6198  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
6199  typedef Templates38<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6200  T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
6201  T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38> type;
6202 };
6203 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6204  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6205  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6206  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6207  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6208  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6209  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
6210  GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
6211  GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
6212  GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
6213  GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
6214  GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
6215  GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39>
6216 struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6217  T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
6218  T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, NoneT, NoneT, NoneT,
6219  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
6220  typedef Templates39<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6221  T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
6222  T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39> type;
6223 };
6224 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6225  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6226  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6227  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6228  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6229  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6230  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
6231  GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
6232  GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
6233  GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
6234  GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
6235  GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
6236  GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
6237  GTEST_TEMPLATE_ T40>
6238 struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6239  T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
6240  T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, NoneT, NoneT, NoneT,
6241  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
6242  typedef Templates40<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6243  T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
6244  T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40> type;
6245 };
6246 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6247  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6248  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6249  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6250  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6251  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6252  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
6253  GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
6254  GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
6255  GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
6256  GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
6257  GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
6258  GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
6259  GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41>
6260 struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6261  T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
6262  T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, NoneT, NoneT,
6263  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
6264  typedef Templates41<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6265  T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
6266  T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
6267  T41> type;
6268 };
6269 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6270  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6271  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6272  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6273  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6274  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6275  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
6276  GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
6277  GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
6278  GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
6279  GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
6280  GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
6281  GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
6282  GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42>
6283 struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6284  T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
6285  T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, NoneT,
6286  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
6287  typedef Templates42<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6288  T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
6289  T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
6290  T42> type;
6291 };
6292 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6293  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6294  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6295  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6296  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6297  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6298  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
6299  GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
6300  GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
6301  GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
6302  GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
6303  GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
6304  GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
6305  GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
6306  GTEST_TEMPLATE_ T43>
6307 struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6308  T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
6309  T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
6310  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
6311  typedef Templates43<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6312  T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
6313  T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
6314  T42, T43> type;
6315 };
6316 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6317  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6318  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6319  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6320  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6321  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6322  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
6323  GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
6324  GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
6325  GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
6326  GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
6327  GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
6328  GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
6329  GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
6330  GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44>
6331 struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6332  T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
6333  T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
6334  NoneT, NoneT, NoneT, NoneT, NoneT, NoneT> {
6335  typedef Templates44<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6336  T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
6337  T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
6338  T42, T43, T44> type;
6339 };
6340 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6341  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6342  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6343  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6344  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6345  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6346  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
6347  GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
6348  GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
6349  GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
6350  GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
6351  GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
6352  GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
6353  GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
6354  GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45>
6355 struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6356  T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
6357  T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
6358  T45, NoneT, NoneT, NoneT, NoneT, NoneT> {
6359  typedef Templates45<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6360  T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
6361  T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
6362  T42, T43, T44, T45> type;
6363 };
6364 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6365  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6366  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6367  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6368  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6369  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6370  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
6371  GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
6372  GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
6373  GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
6374  GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
6375  GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
6376  GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
6377  GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
6378  GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
6379  GTEST_TEMPLATE_ T46>
6380 struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6381  T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
6382  T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
6383  T45, T46, NoneT, NoneT, NoneT, NoneT> {
6384  typedef Templates46<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6385  T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
6386  T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
6387  T42, T43, T44, T45, T46> type;
6388 };
6389 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6390  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6391  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6392  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6393  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6394  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6395  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
6396  GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
6397  GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
6398  GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
6399  GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
6400  GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
6401  GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
6402  GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
6403  GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
6404  GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47>
6405 struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6406  T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
6407  T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
6408  T45, T46, T47, NoneT, NoneT, NoneT> {
6409  typedef Templates47<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6410  T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
6411  T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
6412  T42, T43, T44, T45, T46, T47> type;
6413 };
6414 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6415  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6416  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6417  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6418  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6419  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6420  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
6421  GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
6422  GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
6423  GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
6424  GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
6425  GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
6426  GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
6427  GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
6428  GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
6429  GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47, GTEST_TEMPLATE_ T48>
6430 struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6431  T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
6432  T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
6433  T45, T46, T47, T48, NoneT, NoneT> {
6434  typedef Templates48<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6435  T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
6436  T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
6437  T42, T43, T44, T45, T46, T47, T48> type;
6438 };
6439 template <GTEST_TEMPLATE_ T1, GTEST_TEMPLATE_ T2, GTEST_TEMPLATE_ T3,
6440  GTEST_TEMPLATE_ T4, GTEST_TEMPLATE_ T5, GTEST_TEMPLATE_ T6,
6441  GTEST_TEMPLATE_ T7, GTEST_TEMPLATE_ T8, GTEST_TEMPLATE_ T9,
6442  GTEST_TEMPLATE_ T10, GTEST_TEMPLATE_ T11, GTEST_TEMPLATE_ T12,
6443  GTEST_TEMPLATE_ T13, GTEST_TEMPLATE_ T14, GTEST_TEMPLATE_ T15,
6444  GTEST_TEMPLATE_ T16, GTEST_TEMPLATE_ T17, GTEST_TEMPLATE_ T18,
6445  GTEST_TEMPLATE_ T19, GTEST_TEMPLATE_ T20, GTEST_TEMPLATE_ T21,
6446  GTEST_TEMPLATE_ T22, GTEST_TEMPLATE_ T23, GTEST_TEMPLATE_ T24,
6447  GTEST_TEMPLATE_ T25, GTEST_TEMPLATE_ T26, GTEST_TEMPLATE_ T27,
6448  GTEST_TEMPLATE_ T28, GTEST_TEMPLATE_ T29, GTEST_TEMPLATE_ T30,
6449  GTEST_TEMPLATE_ T31, GTEST_TEMPLATE_ T32, GTEST_TEMPLATE_ T33,
6450  GTEST_TEMPLATE_ T34, GTEST_TEMPLATE_ T35, GTEST_TEMPLATE_ T36,
6451  GTEST_TEMPLATE_ T37, GTEST_TEMPLATE_ T38, GTEST_TEMPLATE_ T39,
6452  GTEST_TEMPLATE_ T40, GTEST_TEMPLATE_ T41, GTEST_TEMPLATE_ T42,
6453  GTEST_TEMPLATE_ T43, GTEST_TEMPLATE_ T44, GTEST_TEMPLATE_ T45,
6454  GTEST_TEMPLATE_ T46, GTEST_TEMPLATE_ T47, GTEST_TEMPLATE_ T48,
6455  GTEST_TEMPLATE_ T49>
6456 struct Templates<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14,
6457  T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28, T29,
6458  T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43, T44,
6459  T45, T46, T47, T48, T49, NoneT> {
6460  typedef Templates49<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6461  T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27,
6462  T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41,
6463  T42, T43, T44, T45, T46, T47, T48, T49> type;
6464 };
6465 
6466 // The TypeList template makes it possible to use either a single type
6467 // or a Types<...> list in TYPED_TEST_SUITE() and
6468 // INSTANTIATE_TYPED_TEST_SUITE_P().
6469 
6470 template <typename T>
6471 struct TypeList {
6472  typedef Types1<T> type;
6473 };
6474 
6475 template <typename T1, typename T2, typename T3, typename T4, typename T5,
6476  typename T6, typename T7, typename T8, typename T9, typename T10,
6477  typename T11, typename T12, typename T13, typename T14, typename T15,
6478  typename T16, typename T17, typename T18, typename T19, typename T20,
6479  typename T21, typename T22, typename T23, typename T24, typename T25,
6480  typename T26, typename T27, typename T28, typename T29, typename T30,
6481  typename T31, typename T32, typename T33, typename T34, typename T35,
6482  typename T36, typename T37, typename T38, typename T39, typename T40,
6483  typename T41, typename T42, typename T43, typename T44, typename T45,
6484  typename T46, typename T47, typename T48, typename T49, typename T50>
6485 struct TypeList<Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13,
6486  T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26, T27, T28,
6487  T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40, T41, T42, T43,
6488  T44, T45, T46, T47, T48, T49, T50> > {
6489  typedef typename Types<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12,
6490  T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25, T26,
6491  T27, T28, T29, T30, T31, T32, T33, T34, T35, T36, T37, T38, T39, T40,
6492  T41, T42, T43, T44, T45, T46, T47, T48, T49, T50>::type type;
6493 };
6494 
6495 #endif // GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P
6496 
6497 } // namespace internal
6498 } // namespace testing
6499 
6500 #endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_
6501 
6502 // Due to C++ preprocessor weirdness, we need double indirection to
6503 // concatenate two tokens when one of them is __LINE__. Writing
6504 //
6505 // foo ## __LINE__
6506 //
6507 // will result in the token foo__LINE__, instead of foo followed by
6508 // the current line number. For more details, see
6509 // http://www.parashift.com/c++-faq-lite/misc-technical-issues.html#faq-39.6
6510 #define GTEST_CONCAT_TOKEN_(foo, bar) GTEST_CONCAT_TOKEN_IMPL_(foo, bar)
6511 #define GTEST_CONCAT_TOKEN_IMPL_(foo, bar) foo ## bar
6512 
6513 // Stringifies its argument.
6514 #define GTEST_STRINGIFY_(name) #name
6515 
6516 class ProtocolMessage;
6517 namespace proto2 { class Message; }
6518 
6519 namespace testing {
6520 
6521 // Forward declarations.
6522 
6523 class AssertionResult; // Result of an assertion.
6524 class Message; // Represents a failure message.
6525 class Test; // Represents a test.
6526 class TestInfo; // Information about a test.
6527 class TestPartResult; // Result of a test part.
6528 class UnitTest; // A collection of test suites.
6529 
6530 template <typename T>
6531 ::std::string PrintToString(const T& value);
6532 
6533 namespace internal {
6534 
6535 struct TraceInfo; // Information about a trace point.
6536 class TestInfoImpl; // Opaque implementation of TestInfo
6537 class UnitTestImpl; // Opaque implementation of UnitTest
6538 
6539 // The text used in failure messages to indicate the start of the
6540 // stack trace.
6541 GTEST_API_ extern const char kStackTraceMarker[];
6542 
6543 // An IgnoredValue object can be implicitly constructed from ANY value.
6545  public:
6546  // This constructor template allows any value to be implicitly
6547  // converted to IgnoredValue. The object has no data member and
6548  // doesn't try to remember anything about the argument. We
6549  // deliberately omit the 'explicit' keyword in order to allow the
6550  // conversion to be implicit.
6551  template <typename T>
6552  IgnoredValue(const T& /* ignored */) {} // NOLINT(runtime/explicit)
6553 };
6554 
6555 // Two overloaded helpers for checking at compile time whether an
6556 // expression is a null pointer literal (i.e. NULL or any 0-valued
6557 // compile-time integral constant). These helpers have no
6558 // implementations, as we only need their signatures.
6559 //
6560 // Given IsNullLiteralHelper(x), the compiler will pick the first
6561 // version if x can be implicitly converted to Secret*, and pick the
6562 // second version otherwise. Since Secret is a secret and incomplete
6563 // type, the only expression a user can write that has type Secret* is
6564 // a null pointer literal. Therefore, we know that x is a null
6565 // pointer literal if and only if the first version is picked by the
6566 // compiler.
6568 std::false_type IsNullLiteralHelper(IgnoredValue);
6569 
6570 // A compile-time bool constant that is true if and only if x is a null pointer
6571 // literal (i.e. nullptr, NULL or any 0-valued compile-time integral constant).
6572 #define GTEST_IS_NULL_LITERAL_(x) \
6573  decltype(::testing::internal::IsNullLiteralHelper(x))::value
6574 
6575 // Appends the user-supplied message to the Google-Test-generated message.
6577  const std::string& gtest_msg, const Message& user_msg);
6578 
6579 #if GTEST_HAS_EXCEPTIONS
6580 
6582 /* an exported class was derived from a class that was not exported */)
6583 
6584 // This exception is thrown by (and only by) a failed Google Test
6585 // assertion when GTEST_FLAG(throw_on_failure) is true (if exceptions
6586 // are enabled). We derive it from std::runtime_error, which is for
6587 // errors presumably detectable only at run time. Since
6588 // std::runtime_error inherits from std::exception, many testing
6589 // frameworks know how to extract and print the message inside it.
6590 class GTEST_API_ GoogleTestFailureException : public ::std::runtime_error {
6591  public:
6592  explicit GoogleTestFailureException(const TestPartResult& failure);
6593 };
6594 
6596 
6597 #endif // GTEST_HAS_EXCEPTIONS
6598 
6599 namespace edit_distance {
6600 // Returns the optimal edits to go from 'left' to 'right'.
6601 // All edits cost the same, with replace having lower priority than
6602 // add/remove.
6603 // Simple implementation of the Wagner-Fischer algorithm.
6604 // See http://en.wikipedia.org/wiki/Wagner-Fischer_algorithm
6606 GTEST_API_ std::vector<EditType> CalculateOptimalEdits(
6607  const std::vector<size_t>& left, const std::vector<size_t>& right);
6608 
6609 // Same as above, but the input is represented as strings.
6610 GTEST_API_ std::vector<EditType> CalculateOptimalEdits(
6611  const std::vector<std::string>& left,
6612  const std::vector<std::string>& right);
6613 
6614 // Create a diff of the input strings in Unified diff format.
6615 GTEST_API_ std::string CreateUnifiedDiff(const std::vector<std::string>& left,
6616  const std::vector<std::string>& right,
6617  size_t context = 2);
6618 
6619 } // namespace edit_distance
6620 
6621 // Calculate the diff between 'left' and 'right' and return it in unified diff
6622 // format.
6623 // If not null, stores in 'total_line_count' the total number of lines found
6624 // in left + right.
6626  const std::string& right,
6627  size_t* total_line_count);
6628 
6629 // Constructs and returns the message for an equality assertion
6630 // (e.g. ASSERT_EQ, EXPECT_STREQ, etc) failure.
6631 //
6632 // The first four parameters are the expressions used in the assertion
6633 // and their values, as strings. For example, for ASSERT_EQ(foo, bar)
6634 // where foo is 5 and bar is 6, we have:
6635 //
6636 // expected_expression: "foo"
6637 // actual_expression: "bar"
6638 // expected_value: "5"
6639 // actual_value: "6"
6640 //
6641 // The ignoring_case parameter is true iff the assertion is a
6642 // *_STRCASEEQ*. When it's true, the string " (ignoring case)" will
6643 // be inserted into the message.
6644 GTEST_API_ AssertionResult EqFailure(const char* expected_expression,
6645  const char* actual_expression,
6646  const std::string& expected_value,
6647  const std::string& actual_value,
6648  bool ignoring_case);
6649 
6650 // Constructs a failure message for Boolean assertions such as EXPECT_TRUE.
6652  const AssertionResult& assertion_result,
6653  const char* expression_text,
6654  const char* actual_predicate_value,
6655  const char* expected_predicate_value);
6656 
6657 // This template class represents an IEEE floating-point number
6658 // (either single-precision or double-precision, depending on the
6659 // template parameters).
6660 //
6661 // The purpose of this class is to do more sophisticated number
6662 // comparison. (Due to round-off error, etc, it's very unlikely that
6663 // two floating-points will be equal exactly. Hence a naive
6664 // comparison by the == operation often doesn't work.)
6665 //
6666 // Format of IEEE floating-point:
6667 //
6668 // The most-significant bit being the leftmost, an IEEE
6669 // floating-point looks like
6670 //
6671 // sign_bit exponent_bits fraction_bits
6672 //
6673 // Here, sign_bit is a single bit that designates the sign of the
6674 // number.
6675 //
6676 // For float, there are 8 exponent bits and 23 fraction bits.
6677 //
6678 // For double, there are 11 exponent bits and 52 fraction bits.
6679 //
6680 // More details can be found at
6681 // http://en.wikipedia.org/wiki/IEEE_floating-point_standard.
6682 //
6683 // Template parameter:
6684 //
6685 // RawType: the raw floating-point type (either float or double)
6686 template <typename RawType>
6688  public:
6689  // Defines the unsigned integer type that has the same size as the
6690  // floating point number.
6692 
6693  // Constants.
6694 
6695  // # of bits in a number.
6696  static const size_t kBitCount = 8*sizeof(RawType);
6697 
6698  // # of fraction bits in a number.
6699  static const size_t kFractionBitCount =
6700  std::numeric_limits<RawType>::digits - 1;
6701 
6702  // # of exponent bits in a number.
6703  static const size_t kExponentBitCount = kBitCount - 1 - kFractionBitCount;
6704 
6705  // The mask for the sign bit.
6706  static const Bits kSignBitMask = static_cast<Bits>(1) << (kBitCount - 1);
6707 
6708  // The mask for the fraction bits.
6709  static const Bits kFractionBitMask =
6710  ~static_cast<Bits>(0) >> (kExponentBitCount + 1);
6711 
6712  // The mask for the exponent bits.
6714 
6715  // How many ULP's (Units in the Last Place) we want to tolerate when
6716  // comparing two numbers. The larger the value, the more error we
6717  // allow. A 0 value means that two numbers must be exactly the same
6718  // to be considered equal.
6719  //
6720  // The maximum error of a single floating-point operation is 0.5
6721  // units in the last place. On Intel CPU's, all floating-point
6722  // calculations are done with 80-bit precision, while double has 64
6723  // bits. Therefore, 4 should be enough for ordinary use.
6724  //
6725  // See the following article for more details on ULP:
6726  // http://randomascii.wordpress.com/2012/02/25/comparing-floating-point-numbers-2012-edition/
6727  static const size_t kMaxUlps = 4;
6728 
6729  // Constructs a FloatingPoint from a raw floating-point number.
6730  //
6731  // On an Intel CPU, passing a non-normalized NAN (Not a Number)
6732  // around may change its bits, although the new value is guaranteed
6733  // to be also a NAN. Therefore, don't expect this constructor to
6734  // preserve the bits in x when x is a NAN.
6735  explicit FloatingPoint(const RawType& x) { u_.value_ = x; }
6736 
6737  // Static methods
6738 
6739  // Reinterprets a bit pattern as a floating-point number.
6740  //
6741  // This function is needed to test the AlmostEquals() method.
6742  static RawType ReinterpretBits(const Bits bits) {
6743  FloatingPoint fp(0);
6744  fp.u_.bits_ = bits;
6745  return fp.u_.value_;
6746  }
6747 
6748  // Returns the floating-point number that represent positive infinity.
6749  static RawType Infinity() {
6751  }
6752 
6753  // Returns the maximum representable finite floating-point number.
6754  static RawType Max();
6755 
6756  // Non-static methods
6757 
6758  // Returns the bits that represents this number.
6759  const Bits &bits() const { return u_.bits_; }
6760 
6761  // Returns the exponent bits of this number.
6762  Bits exponent_bits() const { return kExponentBitMask & u_.bits_; }
6763 
6764  // Returns the fraction bits of this number.
6765  Bits fraction_bits() const { return kFractionBitMask & u_.bits_; }
6766 
6767  // Returns the sign bit of this number.
6768  Bits sign_bit() const { return kSignBitMask & u_.bits_; }
6769 
6770  // Returns true iff this is NAN (not a number).
6771  bool is_nan() const {
6772  // It's a NAN if the exponent bits are all ones and the fraction
6773  // bits are not entirely zeros.
6774  return (exponent_bits() == kExponentBitMask) && (fraction_bits() != 0);
6775  }
6776 
6777  // Returns true iff this number is at most kMaxUlps ULP's away from
6778  // rhs. In particular, this function:
6779  //
6780  // - returns false if either number is (or both are) NAN.
6781  // - treats really large numbers as almost equal to infinity.
6782  // - thinks +0.0 and -0.0 are 0 DLP's apart.
6783  bool AlmostEquals(const FloatingPoint& rhs) const {
6784  // The IEEE standard says that any comparison operation involving
6785  // a NAN must return false.
6786  if (is_nan() || rhs.is_nan()) return false;
6787 
6788  return DistanceBetweenSignAndMagnitudeNumbers(u_.bits_, rhs.u_.bits_)
6789  <= kMaxUlps;
6790  }
6791 
6792  private:
6793  // The data type used to store the actual floating-point number.
6794  union FloatingPointUnion {
6795  RawType value_; // The raw floating-point number.
6796  Bits bits_; // The bits that represent the number.
6797  };
6798 
6799  // Converts an integer from the sign-and-magnitude representation to
6800  // the biased representation. More precisely, let N be 2 to the
6801  // power of (kBitCount - 1), an integer x is represented by the
6802  // unsigned number x + N.
6803  //
6804  // For instance,
6805  //
6806  // -N + 1 (the most negative number representable using
6807  // sign-and-magnitude) is represented by 1;
6808  // 0 is represented by N; and
6809  // N - 1 (the biggest number representable using
6810  // sign-and-magnitude) is represented by 2N - 1.
6811  //
6812  // Read http://en.wikipedia.org/wiki/Signed_number_representations
6813  // for more details on signed number representations.
6814  static Bits SignAndMagnitudeToBiased(const Bits &sam) {
6815  if (kSignBitMask & sam) {
6816  // sam represents a negative number.
6817  return ~sam + 1;
6818  } else {
6819  // sam represents a positive number.
6820  return kSignBitMask | sam;
6821  }
6822  }
6823 
6824  // Given two numbers in the sign-and-magnitude representation,
6825  // returns the distance between them as an unsigned number.
6826  static Bits DistanceBetweenSignAndMagnitudeNumbers(const Bits &sam1,
6827  const Bits &sam2) {
6828  const Bits biased1 = SignAndMagnitudeToBiased(sam1);
6829  const Bits biased2 = SignAndMagnitudeToBiased(sam2);
6830  return (biased1 >= biased2) ? (biased1 - biased2) : (biased2 - biased1);
6831  }
6832 
6833  FloatingPointUnion u_;
6834 };
6835 
6836 // We cannot use std::numeric_limits<T>::max() as it clashes with the max()
6837 // macro defined by <windows.h>.
6838 template <>
6839 inline float FloatingPoint<float>::Max() { return FLT_MAX; }
6840 template <>
6841 inline double FloatingPoint<double>::Max() { return DBL_MAX; }
6842 
6843 // Typedefs the instances of the FloatingPoint template class that we
6844 // care to use.
6847 
6848 // In order to catch the mistake of putting tests that use different
6849 // test fixture classes in the same test suite, we need to assign
6850 // unique IDs to fixture classes and compare them. The TypeId type is
6851 // used to hold such IDs. The user should treat TypeId as an opaque
6852 // type: the only operation allowed on TypeId values is to compare
6853 // them for equality using the == operator.
6854 typedef const void* TypeId;
6855 
6856 template <typename T>
6858  public:
6859  // dummy_ must not have a const type. Otherwise an overly eager
6860  // compiler (e.g. MSVC 7.1 & 8.0) may try to merge
6861  // TypeIdHelper<T>::dummy_ for different Ts as an "optimization".
6862  static bool dummy_;
6863 };
6864 
6865 template <typename T>
6866 bool TypeIdHelper<T>::dummy_ = false;
6867 
6868 // GetTypeId<T>() returns the ID of type T. Different values will be
6869 // returned for different types. Calling the function twice with the
6870 // same type argument is guaranteed to return the same ID.
6871 template <typename T>
6873  // The compiler is required to allocate a different
6874  // TypeIdHelper<T>::dummy_ variable for each T used to instantiate
6875  // the template. Therefore, the address of dummy_ is guaranteed to
6876  // be unique.
6877  return &(TypeIdHelper<T>::dummy_);
6878 }
6879 
6880 // Returns the type ID of ::testing::Test. Always call this instead
6881 // of GetTypeId< ::testing::Test>() to get the type ID of
6882 // ::testing::Test, as the latter may give the wrong result due to a
6883 // suspected linker bug when compiling Google Test as a Mac OS X
6884 // framework.
6886 
6887 // Defines the abstract factory interface that creates instances
6888 // of a Test object.
6890  public:
6891  virtual ~TestFactoryBase() {}
6892 
6893  // Creates a test instance to run. The instance is both created and destroyed
6894  // within TestInfoImpl::Run()
6895  virtual Test* CreateTest() = 0;
6896 
6897  protected:
6899 
6900  private:
6901  GTEST_DISALLOW_COPY_AND_ASSIGN_(TestFactoryBase);
6902 };
6903 
6904 // This class provides implementation of TeastFactoryBase interface.
6905 // It is used in TEST and TEST_F macros.
6906 template <class TestClass>
6908  public:
6909  Test* CreateTest() override { return new TestClass; }
6910 };
6911 
6912 #if GTEST_OS_WINDOWS
6913 
6914 // Predicate-formatters for implementing the HRESULT checking macros
6915 // {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}
6916 // We pass a long instead of HRESULT to avoid causing an
6917 // include dependency for the HRESULT type.
6918 GTEST_API_ AssertionResult IsHRESULTSuccess(const char* expr,
6919  long hr); // NOLINT
6920 GTEST_API_ AssertionResult IsHRESULTFailure(const char* expr,
6921  long hr); // NOLINT
6922 
6923 #endif // GTEST_OS_WINDOWS
6924 
6925 // Types of SetUpTestSuite() and TearDownTestSuite() functions.
6926 using SetUpTestSuiteFunc = void (*)();
6927 using TearDownTestSuiteFunc = void (*)();
6928 
6930  CodeLocation(const std::string& a_file, int a_line)
6931  : file(a_file), line(a_line) {}
6932 
6934  int line;
6935 };
6936 
6937 // Helper to identify which setup function for TestCase / TestSuite to call.
6938 // Only one function is allowed, either TestCase or TestSute but not both.
6939 
6940 // Utility functions to help SuiteApiResolver
6941 using SetUpTearDownSuiteFuncType = void (*)();
6942 
6945  return a == def ? nullptr : a;
6946 }
6947 
6948 template <typename T>
6949 // Note that SuiteApiResolver inherits from T because
6950 // SetUpTestSuite()/TearDownTestSuite() could be protected. Ths way
6951 // SuiteApiResolver can access them.
6952 struct SuiteApiResolver : T {
6953  // testing::Test is only forward declared at this point. So we make it a
6954  // dependend class for the compiler to be OK with it.
6955  using Test =
6956  typename std::conditional<sizeof(T) != 0, ::testing::Test, void>::type;
6957 
6959  SetUpTearDownSuiteFuncType test_case_fp =
6960  GetNotDefaultOrNull(&T::SetUpTestCase, &Test::SetUpTestCase);
6961  SetUpTearDownSuiteFuncType test_suite_fp =
6962  GetNotDefaultOrNull(&T::SetUpTestSuite, &Test::SetUpTestSuite);
6963 
6964  GTEST_CHECK_(!test_case_fp || !test_suite_fp)
6965  << "Test can not provide both SetUpTestSuite and SetUpTestCase, please "
6966  "make sure there is only one present ";
6967 
6968  return test_case_fp != nullptr ? test_case_fp : test_suite_fp;
6969  }
6970 
6972  SetUpTearDownSuiteFuncType test_case_fp =
6973  GetNotDefaultOrNull(&T::TearDownTestCase, &Test::TearDownTestCase);
6974  SetUpTearDownSuiteFuncType test_suite_fp =
6975  GetNotDefaultOrNull(&T::TearDownTestSuite, &Test::TearDownTestSuite);
6976 
6977  GTEST_CHECK_(!test_case_fp || !test_suite_fp)
6978  << "Test can not provide both TearDownTestSuite and TearDownTestCase,"
6979  " please make sure there is only one present ";
6980 
6981  return test_case_fp != nullptr ? test_case_fp : test_suite_fp;
6982  }
6983 };
6984 
6985 // Creates a new TestInfo object and registers it with Google Test;
6986 // returns the created object.
6987 //
6988 // Arguments:
6989 //
6990 // test_suite_name: name of the test suite
6991 // name: name of the test
6992 // type_param the name of the test's type parameter, or NULL if
6993 // this is not a typed or a type-parameterized test.
6994 // value_param text representation of the test's value parameter,
6995 // or NULL if this is not a type-parameterized test.
6996 // code_location: code location where the test is defined
6997 // fixture_class_id: ID of the test fixture class
6998 // set_up_tc: pointer to the function that sets up the test suite
6999 // tear_down_tc: pointer to the function that tears down the test suite
7000 // factory: pointer to the factory that creates a test object.
7001 // The newly created TestInfo instance will assume
7002 // ownership of the factory object.
7004  const char* test_suite_name, const char* name, const char* type_param,
7005  const char* value_param, CodeLocation code_location,
7006  TypeId fixture_class_id, SetUpTestSuiteFunc set_up_tc,
7007  TearDownTestSuiteFunc tear_down_tc, TestFactoryBase* factory);
7008 
7009 // If *pstr starts with the given prefix, modifies *pstr to be right
7010 // past the prefix and returns true; otherwise leaves *pstr unchanged
7011 // and returns false. None of pstr, *pstr, and prefix can be NULL.
7012 GTEST_API_ bool SkipPrefix(const char* prefix, const char** pstr);
7013 
7014 #if GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P
7015 
7017 /* class A needs to have dll-interface to be used by clients of class B */)
7018 
7019 // State of the definition of a type-parameterized test suite.
7020 class GTEST_API_ TypedTestSuitePState {
7021  public:
7022  TypedTestSuitePState() : registered_(false) {}
7023 
7024  // Adds the given test name to defined_test_names_ and return true
7025  // if the test suite hasn't been registered; otherwise aborts the
7026  // program.
7027  bool AddTestName(const char* file, int line, const char* case_name,
7028  const char* test_name) {
7029  if (registered_) {
7030  fprintf(stderr,
7031  "%s Test %s must be defined before "
7032  "REGISTER_TYPED_TEST_SUITE_P(%s, ...).\n",
7033  FormatFileLocation(file, line).c_str(), test_name, case_name);
7034  fflush(stderr);
7035  posix::Abort();
7036  }
7037  registered_tests_.insert(
7038  ::std::make_pair(test_name, CodeLocation(file, line)));
7039  return true;
7040  }
7041 
7042  bool TestExists(const std::string& test_name) const {
7043  return registered_tests_.count(test_name) > 0;
7044  }
7045 
7046  const CodeLocation& GetCodeLocation(const std::string& test_name) const {
7047  RegisteredTestsMap::const_iterator it = registered_tests_.find(test_name);
7048  GTEST_CHECK_(it != registered_tests_.end());
7049  return it->second;
7050  }
7051 
7052  // Verifies that registered_tests match the test names in
7053  // defined_test_names_; returns registered_tests if successful, or
7054  // aborts the program otherwise.
7055  const char* VerifyRegisteredTestNames(
7056  const char* file, int line, const char* registered_tests);
7057 
7058  private:
7059  typedef ::std::map<std::string, CodeLocation> RegisteredTestsMap;
7060 
7061  bool registered_;
7062  RegisteredTestsMap registered_tests_;
7063 };
7064 
7065 // Legacy API is deprecated but still available
7066 #ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
7067 using TypedTestCasePState = TypedTestSuitePState;
7068 #endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
7069 
7071 
7072 // Skips to the first non-space char after the first comma in 'str';
7073 // returns NULL if no comma is found in 'str'.
7074 inline const char* SkipComma(const char* str) {
7075  const char* comma = strchr(str, ',');
7076  if (comma == nullptr) {
7077  return nullptr;
7078  }
7079  while (IsSpace(*(++comma))) {}
7080  return comma;
7081 }
7082 
7083 // Returns the prefix of 'str' before the first comma in it; returns
7084 // the entire string if it contains no comma.
7085 inline std::string GetPrefixUntilComma(const char* str) {
7086  const char* comma = strchr(str, ',');
7087  return comma == nullptr ? str : std::string(str, comma);
7088 }
7089 
7090 // Splits a given string on a given delimiter, populating a given
7091 // vector with the fields.
7092 void SplitString(const ::std::string& str, char delimiter,
7093  ::std::vector< ::std::string>* dest);
7094 
7095 // The default argument to the template below for the case when the user does
7096 // not provide a name generator.
7097 struct DefaultNameGenerator {
7098  template <typename T>
7099  static std::string GetName(int i) {
7100  return StreamableToString(i);
7101  }
7102 };
7103 
7104 template <typename Provided = DefaultNameGenerator>
7105 struct NameGeneratorSelector {
7106  typedef Provided type;
7107 };
7108 
7109 template <typename NameGenerator>
7110 void GenerateNamesRecursively(Types0, std::vector<std::string>*, int) {}
7111 
7112 template <typename NameGenerator, typename Types>
7113 void GenerateNamesRecursively(Types, std::vector<std::string>* result, int i) {
7114  result->push_back(NameGenerator::template GetName<typename Types::Head>(i));
7115  GenerateNamesRecursively<NameGenerator>(typename Types::Tail(), result,
7116  i + 1);
7117 }
7118 
7119 template <typename NameGenerator, typename Types>
7120 std::vector<std::string> GenerateNames() {
7121  std::vector<std::string> result;
7122  GenerateNamesRecursively<NameGenerator>(Types(), &result, 0);
7123  return result;
7124 }
7125 
7126 // TypeParameterizedTest<Fixture, TestSel, Types>::Register()
7127 // registers a list of type-parameterized tests with Google Test. The
7128 // return value is insignificant - we just need to return something
7129 // such that we can call this function in a namespace scope.
7130 //
7131 // Implementation note: The GTEST_TEMPLATE_ macro declares a template
7132 // template parameter. It's defined in gtest-type-util.h.
7133 template <GTEST_TEMPLATE_ Fixture, class TestSel, typename Types>
7134 class TypeParameterizedTest {
7135  public:
7136  // 'index' is the index of the test in the type list 'Types'
7137  // specified in INSTANTIATE_TYPED_TEST_SUITE_P(Prefix, TestSuite,
7138  // Types). Valid values for 'index' are [0, N - 1] where N is the
7139  // length of Types.
7140  static bool Register(const char* prefix, const CodeLocation& code_location,
7141  const char* case_name, const char* test_names, int index,
7142  const std::vector<std::string>& type_names =
7143  GenerateNames<DefaultNameGenerator, Types>()) {
7144  typedef typename Types::Head Type;
7145  typedef Fixture<Type> FixtureClass;
7146  typedef typename GTEST_BIND_(TestSel, Type) TestClass;
7147 
7148  // First, registers the first type-parameterized test in the type
7149  // list.
7151  (std::string(prefix) + (prefix[0] == '\0' ? "" : "/") + case_name +
7152  "/" + type_names[index])
7153  .c_str(),
7154  StripTrailingSpaces(GetPrefixUntilComma(test_names)).c_str(),
7155  GetTypeName<Type>().c_str(),
7156  nullptr, // No value parameter.
7157  code_location, GetTypeId<FixtureClass>(),
7160  new TestFactoryImpl<TestClass>);
7161 
7162  // Next, recurses (at compile time) with the tail of the type list.
7163  return TypeParameterizedTest<Fixture, TestSel,
7164  typename Types::Tail>::Register(prefix,
7165  code_location,
7166  case_name,
7167  test_names,
7168  index + 1,
7169  type_names);
7170  }
7171 };
7172 
7173 // The base case for the compile time recursion.
7174 template <GTEST_TEMPLATE_ Fixture, class TestSel>
7175 class TypeParameterizedTest<Fixture, TestSel, Types0> {
7176  public:
7177  static bool Register(const char* /*prefix*/, const CodeLocation&,
7178  const char* /*case_name*/, const char* /*test_names*/,
7179  int /*index*/,
7180  const std::vector<std::string>& =
7181  std::vector<std::string>() /*type_names*/) {
7182  return true;
7183  }
7184 };
7185 
7186 // TypeParameterizedTestSuite<Fixture, Tests, Types>::Register()
7187 // registers *all combinations* of 'Tests' and 'Types' with Google
7188 // Test. The return value is insignificant - we just need to return
7189 // something such that we can call this function in a namespace scope.
7190 template <GTEST_TEMPLATE_ Fixture, typename Tests, typename Types>
7191 class TypeParameterizedTestSuite {
7192  public:
7193  static bool Register(const char* prefix, CodeLocation code_location,
7194  const TypedTestSuitePState* state, const char* case_name,
7195  const char* test_names,
7196  const std::vector<std::string>& type_names =
7197  GenerateNames<DefaultNameGenerator, Types>()) {
7198  std::string test_name = StripTrailingSpaces(
7199  GetPrefixUntilComma(test_names));
7200  if (!state->TestExists(test_name)) {
7201  fprintf(stderr, "Failed to get code location for test %s.%s at %s.",
7202  case_name, test_name.c_str(),
7203  FormatFileLocation(code_location.file.c_str(),
7204  code_location.line).c_str());
7205  fflush(stderr);
7206  posix::Abort();
7207  }
7208  const CodeLocation& test_location = state->GetCodeLocation(test_name);
7209 
7210  typedef typename Tests::Head Head;
7211 
7212  // First, register the first test in 'Test' for each type in 'Types'.
7213  TypeParameterizedTest<Fixture, Head, Types>::Register(
7214  prefix, test_location, case_name, test_names, 0, type_names);
7215 
7216  // Next, recurses (at compile time) with the tail of the test list.
7217  return TypeParameterizedTestSuite<Fixture, typename Tests::Tail,
7218  Types>::Register(prefix, code_location,
7219  state, case_name,
7220  SkipComma(test_names),
7221  type_names);
7222  }
7223 };
7224 
7225 // The base case for the compile time recursion.
7226 template <GTEST_TEMPLATE_ Fixture, typename Types>
7227 class TypeParameterizedTestSuite<Fixture, Templates0, Types> {
7228  public:
7229  static bool Register(const char* /*prefix*/, const CodeLocation&,
7230  const TypedTestSuitePState* /*state*/,
7231  const char* /*case_name*/, const char* /*test_names*/,
7232  const std::vector<std::string>& =
7233  std::vector<std::string>() /*type_names*/) {
7234  return true;
7235  }
7236 };
7237 
7238 #endif // GTEST_HAS_TYPED_TEST || GTEST_HAS_TYPED_TEST_P
7239 
7240 // Returns the current OS stack trace as an std::string.
7241 //
7242 // The maximum number of stack frames to be included is specified by
7243 // the gtest_stack_trace_depth flag. The skip_count parameter
7244 // specifies the number of top frames to be skipped, which doesn't
7245 // count against the number of frames to be included.
7246 //
7247 // For example, if Foo() calls Bar(), which in turn calls
7248 // GetCurrentOsStackTraceExceptTop(..., 1), Foo() will be included in
7249 // the trace but Bar() and GetCurrentOsStackTraceExceptTop() won't.
7251  UnitTest* unit_test, int skip_count);
7252 
7253 // Helpers for suppressing warnings on unreachable code or constant
7254 // condition.
7255 
7256 // Always returns true.
7257 GTEST_API_ bool AlwaysTrue();
7258 
7259 // Always returns false.
7260 inline bool AlwaysFalse() { return !AlwaysTrue(); }
7261 
7262 // Helper for suppressing false warning from Clang on a const char*
7263 // variable declared in a conditional expression always being NULL in
7264 // the else branch.
7266  ConstCharPtr(const char* str) : value(str) {}
7267  operator bool() const { return true; }
7268  const char* value;
7269 };
7270 
7271 // A simple Linear Congruential Generator for generating random
7272 // numbers with a uniform distribution. Unlike rand() and srand(), it
7273 // doesn't use global state (and therefore can't interfere with user
7274 // code). Unlike rand_r(), it's portable. An LCG isn't very random,
7275 // but it's good enough for our purposes.
7277  public:
7278  static const UInt32 kMaxRange = 1u << 31;
7279 
7280  explicit Random(UInt32 seed) : state_(seed) {}
7281 
7282  void Reseed(UInt32 seed) { state_ = seed; }
7283 
7284  // Generates a random number from [0, range). Crashes if 'range' is
7285  // 0 or greater than kMaxRange.
7286  UInt32 Generate(UInt32 range);
7287 
7288  private:
7289  UInt32 state_;
7291 };
7292 
7293 // Defining a variable of type CompileAssertTypesEqual<T1, T2> will cause a
7294 // compiler error iff T1 and T2 are different types.
7295 template <typename T1, typename T2>
7297 
7298 template <typename T>
7300 };
7301 
7302 // Removes the reference from a type if it is a reference type,
7303 // otherwise leaves it unchanged. This is the same as
7304 // tr1::remove_reference, which is not widely available yet.
7305 template <typename T>
7306 struct RemoveReference { typedef T type; }; // NOLINT
7307 template <typename T>
7308 struct RemoveReference<T&> { typedef T type; }; // NOLINT
7309 
7310 // A handy wrapper around RemoveReference that works when the argument
7311 // T depends on template parameters.
7312 #define GTEST_REMOVE_REFERENCE_(T) \
7313  typename ::testing::internal::RemoveReference<T>::type
7314 
7315 // Removes const from a type if it is a const type, otherwise leaves
7316 // it unchanged. This is the same as tr1::remove_const, which is not
7317 // widely available yet.
7318 template <typename T>
7319 struct RemoveConst { typedef T type; }; // NOLINT
7320 template <typename T>
7321 struct RemoveConst<const T> { typedef T type; }; // NOLINT
7322 
7323 // MSVC 8.0, Sun C++, and IBM XL C++ have a bug which causes the above
7324 // definition to fail to remove the const in 'const int[3]' and 'const
7325 // char[3][4]'. The following specialization works around the bug.
7326 template <typename T, size_t N>
7327 struct RemoveConst<const T[N]> {
7328  typedef typename RemoveConst<T>::type type[N];
7329 };
7330 
7331 // A handy wrapper around RemoveConst that works when the argument
7332 // T depends on template parameters.
7333 #define GTEST_REMOVE_CONST_(T) \
7334  typename ::testing::internal::RemoveConst<T>::type
7335 
7336 // Turns const U&, U&, const U, and U all into U.
7337 #define GTEST_REMOVE_REFERENCE_AND_CONST_(T) \
7338  GTEST_REMOVE_CONST_(GTEST_REMOVE_REFERENCE_(T))
7339 
7340 // ImplicitlyConvertible<From, To>::value is a compile-time bool
7341 // constant that's true iff type From can be implicitly converted to
7342 // type To.
7343 template <typename From, typename To>
7345  private:
7346  // We need the following helper functions only for their types.
7347  // They have no implementations.
7348 
7349  // MakeFrom() is an expression whose type is From. We cannot simply
7350  // use From(), as the type From may not have a public default
7351  // constructor.
7352  static typename AddReference<From>::type MakeFrom();
7353 
7354  // These two functions are overloaded. Given an expression
7355  // Helper(x), the compiler will pick the first version if x can be
7356  // implicitly converted to type To; otherwise it will pick the
7357  // second version.
7358  //
7359  // The first version returns a value of size 1, and the second
7360  // version returns a value of size 2. Therefore, by checking the
7361  // size of Helper(x), which can be done at compile time, we can tell
7362  // which version of Helper() is used, and hence whether x can be
7363  // implicitly converted to type To.
7364  static char Helper(To);
7365  static char (&Helper(...))[2]; // NOLINT
7366 
7367  // We have to put the 'public' section after the 'private' section,
7368  // or MSVC refuses to compile the code.
7369  public:
7370 #if defined(__BORLANDC__)
7371  // C++Builder cannot use member overload resolution during template
7372  // instantiation. The simplest workaround is to use its C++0x type traits
7373  // functions (C++Builder 2009 and above only).
7374  static const bool value = __is_convertible(From, To);
7375 #else
7376  // MSVC warns about implicitly converting from double to int for
7377  // possible loss of data, so we need to temporarily disable the
7378  // warning.
7380  static const bool value =
7381  sizeof(Helper(ImplicitlyConvertible::MakeFrom())) == 1;
7383 #endif // __BORLANDC__
7384 };
7385 template <typename From, typename To>
7387 
7388 // IsAProtocolMessage<T>::value is a compile-time bool constant that's
7389 // true iff T is type ProtocolMessage, proto2::Message, or a subclass
7390 // of those.
7391 template <typename T>
7393  : public bool_constant<
7394  ImplicitlyConvertible<const T*, const ::ProtocolMessage*>::value ||
7395  ImplicitlyConvertible<const T*, const ::proto2::Message*>::value> {
7396 };
7397 
7398 // When the compiler sees expression IsContainerTest<C>(0), if C is an
7399 // STL-style container class, the first overload of IsContainerTest
7400 // will be viable (since both C::iterator* and C::const_iterator* are
7401 // valid types and NULL can be implicitly converted to them). It will
7402 // be picked over the second overload as 'int' is a perfect match for
7403 // the type of argument 0. If C::iterator or C::const_iterator is not
7404 // a valid type, the first overload is not viable, and the second
7405 // overload will be picked. Therefore, we can determine whether C is
7406 // a container class by checking the type of IsContainerTest<C>(0).
7407 // The value of the expression is insignificant.
7408 //
7409 // In C++11 mode we check the existence of a const_iterator and that an
7410 // iterator is properly implemented for the container.
7411 //
7412 // For pre-C++11 that we look for both C::iterator and C::const_iterator.
7413 // The reason is that C++ injects the name of a class as a member of the
7414 // class itself (e.g. you can refer to class iterator as either
7415 // 'iterator' or 'iterator::iterator'). If we look for C::iterator
7416 // only, for example, we would mistakenly think that a class named
7417 // iterator is an STL container.
7418 //
7419 // Also note that the simpler approach of overloading
7420 // IsContainerTest(typename C::const_iterator*) and
7421 // IsContainerTest(...) doesn't work with Visual Age C++ and Sun C++.
7422 typedef int IsContainer;
7423 template <class C,
7424  class Iterator = decltype(::std::declval<const C&>().begin()),
7425  class = decltype(::std::declval<const C&>().end()),
7426  class = decltype(++::std::declval<Iterator&>()),
7427  class = decltype(*::std::declval<Iterator>()),
7428  class = typename C::const_iterator>
7429 IsContainer IsContainerTest(int /* dummy */) {
7430  return 0;
7431 }
7432 
7433 typedef char IsNotContainer;
7434 template <class C>
7435 IsNotContainer IsContainerTest(long /* dummy */) { return '\0'; }
7436 
7437 // Trait to detect whether a type T is a hash table.
7438 // The heuristic used is that the type contains an inner type `hasher` and does
7439 // not contain an inner type `reverse_iterator`.
7440 // If the container is iterable in reverse, then order might actually matter.
7441 template <typename T>
7442 struct IsHashTable {
7443  private:
7444  template <typename U>
7445  static char test(typename U::hasher*, typename U::reverse_iterator*);
7446  template <typename U>
7447  static int test(typename U::hasher*, ...);
7448  template <typename U>
7449  static char test(...);
7450 
7451  public:
7452  static const bool value = sizeof(test<T>(nullptr, nullptr)) == sizeof(int);
7453 };
7454 
7455 template <typename T>
7456 const bool IsHashTable<T>::value;
7457 
7458 template <typename C,
7459  bool = sizeof(IsContainerTest<C>(0)) == sizeof(IsContainer)>
7461 
7462 template <typename C>
7464 
7465 // Since the IsRecursiveContainerImpl depends on the IsContainerTest we need to
7466 // obey the same inconsistencies as the IsContainerTest, namely check if
7467 // something is a container is relying on only const_iterator in C++11 and
7468 // is relying on both const_iterator and iterator otherwise
7469 template <typename C>
7471  using value_type = decltype(*std::declval<typename C::const_iterator>());
7472  using type =
7473  is_same<typename std::remove_const<
7474  typename std::remove_reference<value_type>::type>::type,
7475  C>;
7476 };
7477 
7478 // IsRecursiveContainer<Type> is a unary compile-time predicate that
7479 // evaluates whether C is a recursive container type. A recursive container
7480 // type is a container type whose value_type is equal to the container type
7481 // itself. An example for a recursive container type is
7482 // boost::filesystem::path, whose iterator has a value_type that is equal to
7483 // boost::filesystem::path.
7484 template <typename C>
7486 
7487 // EnableIf<condition>::type is void when 'Cond' is true, and
7488 // undefined when 'Cond' is false. To use SFINAE to make a function
7489 // overload only apply when a particular expression is true, add
7490 // "typename EnableIf<expression>::type* = 0" as the last parameter.
7491 template<bool> struct EnableIf;
7492 template<> struct EnableIf<true> { typedef void type; }; // NOLINT
7493 
7494 // Utilities for native arrays.
7495 
7496 // ArrayEq() compares two k-dimensional native arrays using the
7497 // elements' operator==, where k can be any integer >= 0. When k is
7498 // 0, ArrayEq() degenerates into comparing a single pair of values.
7499 
7500 template <typename T, typename U>
7501 bool ArrayEq(const T* lhs, size_t size, const U* rhs);
7502 
7503 // This generic version is used when k is 0.
7504 template <typename T, typename U>
7505 inline bool ArrayEq(const T& lhs, const U& rhs) { return lhs == rhs; }
7506 
7507 // This overload is used when k >= 1.
7508 template <typename T, typename U, size_t N>
7509 inline bool ArrayEq(const T(&lhs)[N], const U(&rhs)[N]) {
7510  return internal::ArrayEq(lhs, N, rhs);
7511 }
7512 
7513 // This helper reduces code bloat. If we instead put its logic inside
7514 // the previous ArrayEq() function, arrays with different sizes would
7515 // lead to different copies of the template code.
7516 template <typename T, typename U>
7517 bool ArrayEq(const T* lhs, size_t size, const U* rhs) {
7518  for (size_t i = 0; i != size; i++) {
7519  if (!internal::ArrayEq(lhs[i], rhs[i]))
7520  return false;
7521  }
7522  return true;
7523 }
7524 
7525 // Finds the first element in the iterator range [begin, end) that
7526 // equals elem. Element may be a native array type itself.
7527 template <typename Iter, typename Element>
7528 Iter ArrayAwareFind(Iter begin, Iter end, const Element& elem) {
7529  for (Iter it = begin; it != end; ++it) {
7530  if (internal::ArrayEq(*it, elem))
7531  return it;
7532  }
7533  return end;
7534 }
7535 
7536 // CopyArray() copies a k-dimensional native array using the elements'
7537 // operator=, where k can be any integer >= 0. When k is 0,
7538 // CopyArray() degenerates into copying a single value.
7539 
7540 template <typename T, typename U>
7541 void CopyArray(const T* from, size_t size, U* to);
7542 
7543 // This generic version is used when k is 0.
7544 template <typename T, typename U>
7545 inline void CopyArray(const T& from, U* to) { *to = from; }
7546 
7547 // This overload is used when k >= 1.
7548 template <typename T, typename U, size_t N>
7549 inline void CopyArray(const T(&from)[N], U(*to)[N]) {
7550  internal::CopyArray(from, N, *to);
7551 }
7552 
7553 // This helper reduces code bloat. If we instead put its logic inside
7554 // the previous CopyArray() function, arrays with different sizes
7555 // would lead to different copies of the template code.
7556 template <typename T, typename U>
7557 void CopyArray(const T* from, size_t size, U* to) {
7558  for (size_t i = 0; i != size; i++) {
7559  internal::CopyArray(from[i], to + i);
7560  }
7561 }
7562 
7563 // The relation between an NativeArray object (see below) and the
7564 // native array it represents.
7565 // We use 2 different structs to allow non-copyable types to be used, as long
7566 // as RelationToSourceReference() is passed.
7569 
7570 // Adapts a native array to a read-only STL-style container. Instead
7571 // of the complete STL container concept, this adaptor only implements
7572 // members useful for Google Mock's container matchers. New members
7573 // should be added as needed. To simplify the implementation, we only
7574 // support Element being a raw type (i.e. having no top-level const or
7575 // reference modifier). It's the client's responsibility to satisfy
7576 // this requirement. Element can be an array type itself (hence
7577 // multi-dimensional arrays are supported).
7578 template <typename Element>
7580  public:
7581  // STL-style container typedefs.
7582  typedef Element value_type;
7583  typedef Element* iterator;
7584  typedef const Element* const_iterator;
7585 
7586  // Constructs from a native array. References the source.
7587  NativeArray(const Element* array, size_t count, RelationToSourceReference) {
7588  InitRef(array, count);
7589  }
7590 
7591  // Constructs from a native array. Copies the source.
7592  NativeArray(const Element* array, size_t count, RelationToSourceCopy) {
7593  InitCopy(array, count);
7594  }
7595 
7596  // Copy constructor.
7597  NativeArray(const NativeArray& rhs) {
7598  (this->*rhs.clone_)(rhs.array_, rhs.size_);
7599  }
7600 
7602  if (clone_ != &NativeArray::InitRef)
7603  delete[] array_;
7604  }
7605 
7606  // STL-style container methods.
7607  size_t size() const { return size_; }
7608  const_iterator begin() const { return array_; }
7609  const_iterator end() const { return array_ + size_; }
7610  bool operator==(const NativeArray& rhs) const {
7611  return size() == rhs.size() &&
7612  ArrayEq(begin(), size(), rhs.begin());
7613  }
7614 
7615  private:
7616  enum {
7617  kCheckTypeIsNotConstOrAReference = StaticAssertTypeEqHelper<
7618  Element, GTEST_REMOVE_REFERENCE_AND_CONST_(Element)>::value
7619  };
7620 
7621  // Initializes this object with a copy of the input.
7622  void InitCopy(const Element* array, size_t a_size) {
7623  Element* const copy = new Element[a_size];
7624  CopyArray(array, a_size, copy);
7625  array_ = copy;
7626  size_ = a_size;
7627  clone_ = &NativeArray::InitCopy;
7628  }
7629 
7630  // Initializes this object with a reference of the input.
7631  void InitRef(const Element* array, size_t a_size) {
7632  array_ = array;
7633  size_ = a_size;
7634  clone_ = &NativeArray::InitRef;
7635  }
7636 
7637  const Element* array_;
7638  size_t size_;
7639  void (NativeArray::*clone_)(const Element*, size_t);
7640 
7641  GTEST_DISALLOW_ASSIGN_(NativeArray);
7642 };
7643 
7644 // Backport of std::index_sequence.
7645 template <size_t... Is>
7648 };
7649 
7650 // Double the IndexSequence, and one if plus_one is true.
7651 template <bool plus_one, typename T, size_t sizeofT>
7653 template <size_t... I, size_t sizeofT>
7654 struct DoubleSequence<true, IndexSequence<I...>, sizeofT> {
7655  using type = IndexSequence<I..., (sizeofT + I)..., 2 * sizeofT>;
7656 };
7657 template <size_t... I, size_t sizeofT>
7658 struct DoubleSequence<false, IndexSequence<I...>, sizeofT> {
7659  using type = IndexSequence<I..., (sizeofT + I)...>;
7660 };
7661 
7662 // Backport of std::make_index_sequence.
7663 // It uses O(ln(N)) instantiation depth.
7664 template <size_t N>
7666  : DoubleSequence<N % 2 == 1, typename MakeIndexSequence<N / 2>::type,
7667  N / 2>::type {};
7668 
7669 template <>
7671 
7672 // FIXME: This implementation of ElemFromList is O(1) in instantiation depth,
7673 // but it is O(N^2) in total instantiations. Not sure if this is the best
7674 // tradeoff, as it will make it somewhat slow to compile.
7675 template <typename T, size_t, size_t>
7677 
7678 template <typename T, size_t I>
7679 struct ElemFromListImpl<T, I, I> {
7680  using type = T;
7681 };
7682 
7683 // Get the Nth element from T...
7684 // It uses O(1) instantiation depth.
7685 template <size_t N, typename I, typename... T>
7687 
7688 template <size_t N, size_t... I, typename... T>
7689 struct ElemFromList<N, IndexSequence<I...>, T...>
7690  : ElemFromListImpl<T, N, I>... {};
7691 
7692 template <typename... T>
7694 
7695 template <typename Derived, size_t I>
7697 
7698 template <typename... T, size_t I>
7699 struct FlatTupleElemBase<FlatTuple<T...>, I> {
7700  using value_type =
7701  typename ElemFromList<I, typename MakeIndexSequence<sizeof...(T)>::type,
7702  T...>::type;
7703  FlatTupleElemBase() = default;
7704  explicit FlatTupleElemBase(value_type t) : value(std::move(t)) {}
7706 };
7707 
7708 template <typename Derived, typename Idx>
7710 
7711 template <size_t... Idx, typename... T>
7712 struct FlatTupleBase<FlatTuple<T...>, IndexSequence<Idx...>>
7713  : FlatTupleElemBase<FlatTuple<T...>, Idx>... {
7714  using Indices = IndexSequence<Idx...>;
7715  FlatTupleBase() = default;
7716  explicit FlatTupleBase(T... t)
7717  : FlatTupleElemBase<FlatTuple<T...>, Idx>(std::move(t))... {}
7718 };
7719 
7720 // Analog to std::tuple but with different tradeoffs.
7721 // This class minimizes the template instantiation depth, thus allowing more
7722 // elements that std::tuple would. std::tuple has been seen to require an
7723 // instantiation depth of more than 10x the number of elements in some
7724 // implementations.
7725 // FlatTuple and ElemFromList are not recursive and have a fixed depth
7726 // regardless of T...
7727 // MakeIndexSequence, on the other hand, it is recursive but with an
7728 // instantiation depth of O(ln(N)).
7729 template <typename... T>
7730 class FlatTuple
7731  : private FlatTupleBase<FlatTuple<T...>,
7732  typename MakeIndexSequence<sizeof...(T)>::type> {
7733  using Indices = typename FlatTuple::FlatTupleBase::Indices;
7734 
7735  public:
7736  FlatTuple() = default;
7737  explicit FlatTuple(T... t) : FlatTuple::FlatTupleBase(std::move(t)...) {}
7738 
7739  template <size_t I>
7740  const typename ElemFromList<I, Indices, T...>::type& Get() const {
7741  return static_cast<const FlatTupleElemBase<FlatTuple, I>*>(this)->value;
7742  }
7743 
7744  template <size_t I>
7745  typename ElemFromList<I, Indices, T...>::type& Get() {
7746  return static_cast<FlatTupleElemBase<FlatTuple, I>*>(this)->value;
7747  }
7748 };
7749 
7750 } // namespace internal
7751 } // namespace testing
7752 
7753 #define GTEST_MESSAGE_AT_(file, line, message, result_type) \
7754  ::testing::internal::AssertHelper(result_type, file, line, message) \
7755  = ::testing::Message()
7756 
7757 #define GTEST_MESSAGE_(message, result_type) \
7758  GTEST_MESSAGE_AT_(__FILE__, __LINE__, message, result_type)
7759 
7760 #define GTEST_FATAL_FAILURE_(message) \
7761  return GTEST_MESSAGE_(message, ::testing::TestPartResult::kFatalFailure)
7762 
7763 #define GTEST_NONFATAL_FAILURE_(message) \
7764  GTEST_MESSAGE_(message, ::testing::TestPartResult::kNonFatalFailure)
7765 
7766 #define GTEST_SUCCESS_(message) \
7767  GTEST_MESSAGE_(message, ::testing::TestPartResult::kSuccess)
7768 
7769 #define GTEST_SKIP_(message) \
7770  return GTEST_MESSAGE_(message, ::testing::TestPartResult::kSkip)
7771 
7772 // Suppress MSVC warning 4072 (unreachable code) for the code following
7773 // statement if it returns or throws (or doesn't return or throw in some
7774 // situations).
7775 #define GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement) \
7776  if (::testing::internal::AlwaysTrue()) { statement; }
7777 
7778 #define GTEST_TEST_THROW_(statement, expected_exception, fail) \
7779  GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
7780  if (::testing::internal::ConstCharPtr gtest_msg = "") { \
7781  bool gtest_caught_expected = false; \
7782  try { \
7783  GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
7784  } \
7785  catch (expected_exception const&) { \
7786  gtest_caught_expected = true; \
7787  } \
7788  catch (...) { \
7789  gtest_msg.value = \
7790  "Expected: " #statement " throws an exception of type " \
7791  #expected_exception ".\n Actual: it throws a different type."; \
7792  goto GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__); \
7793  } \
7794  if (!gtest_caught_expected) { \
7795  gtest_msg.value = \
7796  "Expected: " #statement " throws an exception of type " \
7797  #expected_exception ".\n Actual: it throws nothing."; \
7798  goto GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__); \
7799  } \
7800  } else \
7801  GTEST_CONCAT_TOKEN_(gtest_label_testthrow_, __LINE__): \
7802  fail(gtest_msg.value)
7803 
7804 #define GTEST_TEST_NO_THROW_(statement, fail) \
7805  GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
7806  if (::testing::internal::AlwaysTrue()) { \
7807  try { \
7808  GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
7809  } \
7810  catch (...) { \
7811  goto GTEST_CONCAT_TOKEN_(gtest_label_testnothrow_, __LINE__); \
7812  } \
7813  } else \
7814  GTEST_CONCAT_TOKEN_(gtest_label_testnothrow_, __LINE__): \
7815  fail("Expected: " #statement " doesn't throw an exception.\n" \
7816  " Actual: it throws.")
7817 
7818 #define GTEST_TEST_ANY_THROW_(statement, fail) \
7819  GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
7820  if (::testing::internal::AlwaysTrue()) { \
7821  bool gtest_caught_any = false; \
7822  try { \
7823  GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
7824  } \
7825  catch (...) { \
7826  gtest_caught_any = true; \
7827  } \
7828  if (!gtest_caught_any) { \
7829  goto GTEST_CONCAT_TOKEN_(gtest_label_testanythrow_, __LINE__); \
7830  } \
7831  } else \
7832  GTEST_CONCAT_TOKEN_(gtest_label_testanythrow_, __LINE__): \
7833  fail("Expected: " #statement " throws an exception.\n" \
7834  " Actual: it doesn't.")
7835 
7836 
7837 // Implements Boolean test assertions such as EXPECT_TRUE. expression can be
7838 // either a boolean expression or an AssertionResult. text is a textual
7839 // represenation of expression as it was passed into the EXPECT_TRUE.
7840 #define GTEST_TEST_BOOLEAN_(expression, text, actual, expected, fail) \
7841  GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
7842  if (const ::testing::AssertionResult gtest_ar_ = \
7843  ::testing::AssertionResult(expression)) \
7844  ; \
7845  else \
7846  fail(::testing::internal::GetBoolAssertionFailureMessage(\
7847  gtest_ar_, text, #actual, #expected).c_str())
7848 
7849 #define GTEST_TEST_NO_FATAL_FAILURE_(statement, fail) \
7850  GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
7851  if (::testing::internal::AlwaysTrue()) { \
7852  ::testing::internal::HasNewFatalFailureHelper gtest_fatal_failure_checker; \
7853  GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
7854  if (gtest_fatal_failure_checker.has_new_fatal_failure()) { \
7855  goto GTEST_CONCAT_TOKEN_(gtest_label_testnofatal_, __LINE__); \
7856  } \
7857  } else \
7858  GTEST_CONCAT_TOKEN_(gtest_label_testnofatal_, __LINE__): \
7859  fail("Expected: " #statement " doesn't generate new fatal " \
7860  "failures in the current thread.\n" \
7861  " Actual: it does.")
7862 
7863 // Expands to the name of the class that implements the given test.
7864 #define GTEST_TEST_CLASS_NAME_(test_suite_name, test_name) \
7865  test_suite_name##_##test_name##_Test
7866 
7867 // Helper macro for defining tests.
7868 #define GTEST_TEST_(test_suite_name, test_name, parent_class, parent_id) \
7869  class GTEST_TEST_CLASS_NAME_(test_suite_name, test_name) \
7870  : public parent_class { \
7871  public: \
7872  GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)() {} \
7873  \
7874  private: \
7875  virtual void TestBody(); \
7876  static ::testing::TestInfo* const test_info_ GTEST_ATTRIBUTE_UNUSED_; \
7877  GTEST_DISALLOW_COPY_AND_ASSIGN_(GTEST_TEST_CLASS_NAME_(test_suite_name, \
7878  test_name)); \
7879  }; \
7880  \
7881  ::testing::TestInfo* const GTEST_TEST_CLASS_NAME_(test_suite_name, \
7882  test_name)::test_info_ = \
7883  ::testing::internal::MakeAndRegisterTestInfo( \
7884  #test_suite_name, #test_name, nullptr, nullptr, \
7885  ::testing::internal::CodeLocation(__FILE__, __LINE__), (parent_id), \
7886  ::testing::internal::SuiteApiResolver< \
7887  parent_class>::GetSetUpCaseOrSuite(), \
7888  ::testing::internal::SuiteApiResolver< \
7889  parent_class>::GetTearDownCaseOrSuite(), \
7890  new ::testing::internal::TestFactoryImpl<GTEST_TEST_CLASS_NAME_( \
7891  test_suite_name, test_name)>); \
7892  void GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)::TestBody()
7893 
7894 // Internal Macro to mark an API deprecated, for googletest usage only
7895 // Usage: class GTEST_INTERNAL_DEPRECATED(message) MyClass or
7896 // GTEST_INTERNAL_DEPRECATED(message) <return_type> myFunction(); Every usage of
7897 // a deprecated entity will trigger a warning when compiled with
7898 // `-Wdeprecated-declarations` option (clang, gcc, any __GNUC__ compiler).
7899 // For msvc /W3 option will need to be used
7900 // Note that for 'other' compilers this macro evaluates to nothing to prevent
7901 // compilations errors.
7902 #if defined(_MSC_VER)
7903 #define GTEST_INTERNAL_DEPRECATED(message) __declspec(deprecated(message))
7904 #elif defined(__GNUC__)
7905 #define GTEST_INTERNAL_DEPRECATED(message) __attribute__((deprecated(message)))
7906 #else
7907 #define GTEST_INTERNAL_DEPRECATED(message)
7908 #endif
7909 #endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_
7910 // Copyright 2005, Google Inc.
7911 // All rights reserved.
7912 //
7913 // Redistribution and use in source and binary forms, with or without
7914 // modification, are permitted provided that the following conditions are
7915 // met:
7916 //
7917 // * Redistributions of source code must retain the above copyright
7918 // notice, this list of conditions and the following disclaimer.
7919 // * Redistributions in binary form must reproduce the above
7920 // copyright notice, this list of conditions and the following disclaimer
7921 // in the documentation and/or other materials provided with the
7922 // distribution.
7923 // * Neither the name of Google Inc. nor the names of its
7924 // contributors may be used to endorse or promote products derived from
7925 // this software without specific prior written permission.
7926 //
7927 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
7928 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
7929 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
7930 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
7931 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
7932 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
7933 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
7934 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
7935 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
7936 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
7937 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
7938 
7939 //
7940 // The Google C++ Testing and Mocking Framework (Google Test)
7941 //
7942 // This header file defines the public API for death tests. It is
7943 // #included by gtest.h so a user doesn't need to include this
7944 // directly.
7945 // GOOGLETEST_CM0001 DO NOT DELETE
7946 
7947 #ifndef GTEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_
7948 #define GTEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_
7949 
7950 // Copyright 2005, Google Inc.
7951 // All rights reserved.
7952 //
7953 // Redistribution and use in source and binary forms, with or without
7954 // modification, are permitted provided that the following conditions are
7955 // met:
7956 //
7957 // * Redistributions of source code must retain the above copyright
7958 // notice, this list of conditions and the following disclaimer.
7959 // * Redistributions in binary form must reproduce the above
7960 // copyright notice, this list of conditions and the following disclaimer
7961 // in the documentation and/or other materials provided with the
7962 // distribution.
7963 // * Neither the name of Google Inc. nor the names of its
7964 // contributors may be used to endorse or promote products derived from
7965 // this software without specific prior written permission.
7966 //
7967 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
7968 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
7969 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
7970 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
7971 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
7972 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
7973 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
7974 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
7975 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
7976 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
7977 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
7978 //
7979 // The Google C++ Testing and Mocking Framework (Google Test)
7980 //
7981 // This header file defines internal utilities needed for implementing
7982 // death tests. They are subject to change without notice.
7983 // GOOGLETEST_CM0001 DO NOT DELETE
7984 
7985 #ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_
7986 #define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_
7987 
7988 // Copyright 2007, Google Inc.
7989 // All rights reserved.
7990 //
7991 // Redistribution and use in source and binary forms, with or without
7992 // modification, are permitted provided that the following conditions are
7993 // met:
7994 //
7995 // * Redistributions of source code must retain the above copyright
7996 // notice, this list of conditions and the following disclaimer.
7997 // * Redistributions in binary form must reproduce the above
7998 // copyright notice, this list of conditions and the following disclaimer
7999 // in the documentation and/or other materials provided with the
8000 // distribution.
8001 // * Neither the name of Google Inc. nor the names of its
8002 // contributors may be used to endorse or promote products derived from
8003 // this software without specific prior written permission.
8004 //
8005 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
8006 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
8007 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
8008 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
8009 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
8010 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
8011 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
8012 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
8013 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
8014 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
8015 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
8016 
8017 // The Google C++ Testing and Mocking Framework (Google Test)
8018 //
8019 // This file implements just enough of the matcher interface to allow
8020 // EXPECT_DEATH and friends to accept a matcher argument.
8021 
8022 // IWYU pragma: private, include "testing/base/public/gunit.h"
8023 // IWYU pragma: friend third_party/googletest/googlemock/.*
8024 // IWYU pragma: friend third_party/googletest/googletest/.*
8025 
8026 #ifndef GTEST_INCLUDE_GTEST_GTEST_MATCHERS_H_
8027 #define GTEST_INCLUDE_GTEST_GTEST_MATCHERS_H_
8028 
8029 #include <memory>
8030 #include <ostream>
8031 #include <string>
8032 
8033 // Copyright 2007, Google Inc.
8034 // All rights reserved.
8035 //
8036 // Redistribution and use in source and binary forms, with or without
8037 // modification, are permitted provided that the following conditions are
8038 // met:
8039 //
8040 // * Redistributions of source code must retain the above copyright
8041 // notice, this list of conditions and the following disclaimer.
8042 // * Redistributions in binary form must reproduce the above
8043 // copyright notice, this list of conditions and the following disclaimer
8044 // in the documentation and/or other materials provided with the
8045 // distribution.
8046 // * Neither the name of Google Inc. nor the names of its
8047 // contributors may be used to endorse or promote products derived from
8048 // this software without specific prior written permission.
8049 //
8050 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
8051 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
8052 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
8053 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
8054 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
8055 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
8056 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
8057 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
8058 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
8059 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
8060 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
8061 
8062 
8063 // Google Test - The Google C++ Testing and Mocking Framework
8064 //
8065 // This file implements a universal value printer that can print a
8066 // value of any type T:
8067 //
8068 // void ::testing::internal::UniversalPrinter<T>::Print(value, ostream_ptr);
8069 //
8070 // A user can teach this function how to print a class type T by
8071 // defining either operator<<() or PrintTo() in the namespace that
8072 // defines T. More specifically, the FIRST defined function in the
8073 // following list will be used (assuming T is defined in namespace
8074 // foo):
8075 //
8076 // 1. foo::PrintTo(const T&, ostream*)
8077 // 2. operator<<(ostream&, const T&) defined in either foo or the
8078 // global namespace.
8079 //
8080 // However if T is an STL-style container then it is printed element-wise
8081 // unless foo::PrintTo(const T&, ostream*) is defined. Note that
8082 // operator<<() is ignored for container types.
8083 //
8084 // If none of the above is defined, it will print the debug string of
8085 // the value if it is a protocol buffer, or print the raw bytes in the
8086 // value otherwise.
8087 //
8088 // To aid debugging: when T is a reference type, the address of the
8089 // value is also printed; when T is a (const) char pointer, both the
8090 // pointer value and the NUL-terminated string it points to are
8091 // printed.
8092 //
8093 // We also provide some convenient wrappers:
8094 //
8095 // // Prints a value to a string. For a (const or not) char
8096 // // pointer, the NUL-terminated string (but not the pointer) is
8097 // // printed.
8098 // std::string ::testing::PrintToString(const T& value);
8099 //
8100 // // Prints a value tersely: for a reference type, the referenced
8101 // // value (but not the address) is printed; for a (const or not) char
8102 // // pointer, the NUL-terminated string (but not the pointer) is
8103 // // printed.
8104 // void ::testing::internal::UniversalTersePrint(const T& value, ostream*);
8105 //
8106 // // Prints value using the type inferred by the compiler. The difference
8107 // // from UniversalTersePrint() is that this function prints both the
8108 // // pointer and the NUL-terminated string for a (const or not) char pointer.
8109 // void ::testing::internal::UniversalPrint(const T& value, ostream*);
8110 //
8111 // // Prints the fields of a tuple tersely to a string vector, one
8112 // // element for each field. Tuple support must be enabled in
8113 // // gtest-port.h.
8114 // std::vector<string> UniversalTersePrintTupleFieldsToStrings(
8115 // const Tuple& value);
8116 //
8117 // Known limitation:
8118 //
8119 // The print primitives print the elements of an STL-style container
8120 // using the compiler-inferred type of *iter where iter is a
8121 // const_iterator of the container. When const_iterator is an input
8122 // iterator but not a forward iterator, this inferred type may not
8123 // match value_type, and the print output may be incorrect. In
8124 // practice, this is rarely a problem as for most containers
8125 // const_iterator is a forward iterator. We'll fix this if there's an
8126 // actual need for it. Note that this fix cannot rely on value_type
8127 // being defined as many user-defined container types don't have
8128 // value_type.
8129 
8130 // GOOGLETEST_CM0001 DO NOT DELETE
8131 
8132 #ifndef GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_
8133 #define GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_
8134 
8135 #include <functional>
8136 #include <ostream> // NOLINT
8137 #include <sstream>
8138 #include <string>
8139 #include <tuple>
8140 #include <type_traits>
8141 #include <utility>
8142 #include <vector>
8143 
8144 #if GTEST_HAS_ABSL
8145 #include "absl/strings/string_view.h"
8146 #include "absl/types/optional.h"
8147 #include "absl/types/variant.h"
8148 #endif // GTEST_HAS_ABSL
8149 
8150 namespace testing {
8151 
8152 // Definitions in the 'internal' and 'internal2' name spaces are
8153 // subject to change without notice. DO NOT USE THEM IN USER CODE!
8154 namespace internal2 {
8155 
8156 // Prints the given number of bytes in the given object to the given
8157 // ostream.
8158 GTEST_API_ void PrintBytesInObjectTo(const unsigned char* obj_bytes,
8159  size_t count,
8160  ::std::ostream* os);
8161 
8162 // For selecting which printer to use when a given type has neither <<
8163 // nor PrintTo().
8164 enum TypeKind {
8165  kProtobuf, // a protobuf type
8166  kConvertibleToInteger, // a type implicitly convertible to BiggestInt
8167  // (e.g. a named or unnamed enum type)
8168 #if GTEST_HAS_ABSL
8169  kConvertibleToStringView, // a type implicitly convertible to
8170  // absl::string_view
8171 #endif
8172  kOtherType // anything else
8173 };
8174 
8175 // TypeWithoutFormatter<T, kTypeKind>::PrintValue(value, os) is called
8176 // by the universal printer to print a value of type T when neither
8177 // operator<< nor PrintTo() is defined for T, where kTypeKind is the
8178 // "kind" of T as defined by enum TypeKind.
8179 template <typename T, TypeKind kTypeKind>
8181  public:
8182  // This default version is called when kTypeKind is kOtherType.
8183  static void PrintValue(const T& value, ::std::ostream* os) {
8184  PrintBytesInObjectTo(static_cast<const unsigned char*>(
8185  reinterpret_cast<const void*>(&value)),
8186  sizeof(value), os);
8187  }
8188 };
8189 
8190 // We print a protobuf using its ShortDebugString() when the string
8191 // doesn't exceed this many characters; otherwise we print it using
8192 // DebugString() for better readability.
8193 const size_t kProtobufOneLinerMaxLength = 50;
8194 
8195 template <typename T>
8197  public:
8198  static void PrintValue(const T& value, ::std::ostream* os) {
8199  std::string pretty_str = value.ShortDebugString();
8200  if (pretty_str.length() > kProtobufOneLinerMaxLength) {
8201  pretty_str = "\n" + value.DebugString();
8202  }
8203  *os << ("<" + pretty_str + ">");
8204  }
8205 };
8206 
8207 template <typename T>
8209  public:
8210  // Since T has no << operator or PrintTo() but can be implicitly
8211  // converted to BiggestInt, we print it as a BiggestInt.
8212  //
8213  // Most likely T is an enum type (either named or unnamed), in which
8214  // case printing it as an integer is the desired behavior. In case
8215  // T is not an enum, printing it as an integer is the best we can do
8216  // given that it has no user-defined printer.
8217  static void PrintValue(const T& value, ::std::ostream* os) {
8218  const internal::BiggestInt kBigInt = value;
8219  *os << kBigInt;
8220  }
8221 };
8222 
8223 #if GTEST_HAS_ABSL
8224 template <typename T>
8225 class TypeWithoutFormatter<T, kConvertibleToStringView> {
8226  public:
8227  // Since T has neither operator<< nor PrintTo() but can be implicitly
8228  // converted to absl::string_view, we print it as a absl::string_view.
8229  //
8230  // Note: the implementation is further below, as it depends on
8231  // internal::PrintTo symbol which is defined later in the file.
8232  static void PrintValue(const T& value, ::std::ostream* os);
8233 };
8234 #endif
8235 
8236 // Prints the given value to the given ostream. If the value is a
8237 // protocol message, its debug string is printed; if it's an enum or
8238 // of a type implicitly convertible to BiggestInt, it's printed as an
8239 // integer; otherwise the bytes in the value are printed. This is
8240 // what UniversalPrinter<T>::Print() does when it knows nothing about
8241 // type T and T has neither << operator nor PrintTo().
8242 //
8243 // A user can override this behavior for a class type Foo by defining
8244 // a << operator in the namespace where Foo is defined.
8245 //
8246 // We put this operator in namespace 'internal2' instead of 'internal'
8247 // to simplify the implementation, as much code in 'internal' needs to
8248 // use << in STL, which would conflict with our own << were it defined
8249 // in 'internal'.
8250 //
8251 // Note that this operator<< takes a generic std::basic_ostream<Char,
8252 // CharTraits> type instead of the more restricted std::ostream. If
8253 // we define it to take an std::ostream instead, we'll get an
8254 // "ambiguous overloads" compiler error when trying to print a type
8255 // Foo that supports streaming to std::basic_ostream<Char,
8256 // CharTraits>, as the compiler cannot tell whether
8257 // operator<<(std::ostream&, const T&) or
8258 // operator<<(std::basic_stream<Char, CharTraits>, const Foo&) is more
8259 // specific.
8260 template <typename Char, typename CharTraits, typename T>
8261 ::std::basic_ostream<Char, CharTraits>& operator<<(
8262  ::std::basic_ostream<Char, CharTraits>& os, const T& x) {
8264  ? kProtobuf
8266  const T&, internal::BiggestInt>::value
8268  :
8269 #if GTEST_HAS_ABSL
8271  const T&, absl::string_view>::value
8272  ? kConvertibleToStringView
8273  :
8274 #endif
8275  kOtherType)>::PrintValue(x, &os);
8276  return os;
8277 }
8278 
8279 } // namespace internal2
8280 } // namespace testing
8281 
8282 // This namespace MUST NOT BE NESTED IN ::testing, or the name look-up
8283 // magic needed for implementing UniversalPrinter won't work.
8284 namespace testing_internal {
8285 
8286 // Used to print a value that is not an STL-style container when the
8287 // user doesn't define PrintTo() for it.
8288 template <typename T>
8289 void DefaultPrintNonContainerTo(const T& value, ::std::ostream* os) {
8290  // With the following statement, during unqualified name lookup,
8291  // testing::internal2::operator<< appears as if it was declared in
8292  // the nearest enclosing namespace that contains both
8293  // ::testing_internal and ::testing::internal2, i.e. the global
8294  // namespace. For more details, refer to the C++ Standard section
8295  // 7.3.4-1 [namespace.udir]. This allows us to fall back onto
8296  // testing::internal2::operator<< in case T doesn't come with a <<
8297  // operator.
8298  //
8299  // We cannot write 'using ::testing::internal2::operator<<;', which
8300  // gcc 3.3 fails to compile due to a compiler bug.
8301  using namespace ::testing::internal2; // NOLINT
8302 
8303  // Assuming T is defined in namespace foo, in the next statement,
8304  // the compiler will consider all of:
8305  //
8306  // 1. foo::operator<< (thanks to Koenig look-up),
8307  // 2. ::operator<< (as the current namespace is enclosed in ::),
8308  // 3. testing::internal2::operator<< (thanks to the using statement above).
8309  //
8310  // The operator<< whose type matches T best will be picked.
8311  //
8312  // We deliberately allow #2 to be a candidate, as sometimes it's
8313  // impossible to define #1 (e.g. when foo is ::std, defining
8314  // anything in it is undefined behavior unless you are a compiler
8315  // vendor.).
8316  *os << value;
8317 }
8318 
8319 } // namespace testing_internal
8320 
8321 namespace testing {
8322 namespace internal {
8323 
8324 // FormatForComparison<ToPrint, OtherOperand>::Format(value) formats a
8325 // value of type ToPrint that is an operand of a comparison assertion
8326 // (e.g. ASSERT_EQ). OtherOperand is the type of the other operand in
8327 // the comparison, and is used to help determine the best way to
8328 // format the value. In particular, when the value is a C string
8329 // (char pointer) and the other operand is an STL string object, we
8330 // want to format the C string as a string, since we know it is
8331 // compared by value with the string object. If the value is a char
8332 // pointer but the other operand is not an STL string object, we don't
8333 // know whether the pointer is supposed to point to a NUL-terminated
8334 // string, and thus want to print it as a pointer to be safe.
8335 //
8336 // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
8337 
8338 // The default case.
8339 template <typename ToPrint, typename OtherOperand>
8341  public:
8342  static ::std::string Format(const ToPrint& value) {
8344  }
8345 };
8346 
8347 // Array.
8348 template <typename ToPrint, size_t N, typename OtherOperand>
8349 class FormatForComparison<ToPrint[N], OtherOperand> {
8350  public:
8351  static ::std::string Format(const ToPrint* value) {
8353  }
8354 };
8355 
8356 // By default, print C string as pointers to be safe, as we don't know
8357 // whether they actually point to a NUL-terminated string.
8358 
8359 #define GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(CharType) \
8360  template <typename OtherOperand> \
8361  class FormatForComparison<CharType*, OtherOperand> { \
8362  public: \
8363  static ::std::string Format(CharType* value) { \
8364  return ::testing::PrintToString(static_cast<const void*>(value)); \
8365  } \
8366  }
8367 
8372 
8373 #undef GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_
8374 
8375 // If a C string is compared with an STL string object, we know it's meant
8376 // to point to a NUL-terminated string, and thus can print it as a string.
8377 
8378 #define GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(CharType, OtherStringType) \
8379  template <> \
8380  class FormatForComparison<CharType*, OtherStringType> { \
8381  public: \
8382  static ::std::string Format(CharType* value) { \
8383  return ::testing::PrintToString(value); \
8384  } \
8385  }
8386 
8389 
8390 #if GTEST_HAS_GLOBAL_STRING
8392 GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(const char, ::string);
8393 #endif
8394 
8395 #if GTEST_HAS_GLOBAL_WSTRING
8398 #endif
8399 
8400 #if GTEST_HAS_STD_WSTRING
8403 #endif
8404 
8405 #undef GTEST_IMPL_FORMAT_C_STRING_AS_STRING_
8406 
8407 // Formats a comparison assertion (e.g. ASSERT_EQ, EXPECT_LT, and etc)
8408 // operand to be used in a failure message. The type (but not value)
8409 // of the other operand may affect the format. This allows us to
8410 // print a char* as a raw pointer when it is compared against another
8411 // char* or void*, and print it as a C string when it is compared
8412 // against an std::string object, for example.
8413 //
8414 // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
8415 template <typename T1, typename T2>
8417  const T1& value, const T2& /* other_operand */) {
8419 }
8420 
8421 // UniversalPrinter<T>::Print(value, ostream_ptr) prints the given
8422 // value to the given ostream. The caller must ensure that
8423 // 'ostream_ptr' is not NULL, or the behavior is undefined.
8424 //
8425 // We define UniversalPrinter as a class template (as opposed to a
8426 // function template), as we need to partially specialize it for
8427 // reference types, which cannot be done with function templates.
8428 template <typename T>
8430 
8431 template <typename T>
8432 void UniversalPrint(const T& value, ::std::ostream* os);
8433 
8439 };
8440 template <DefaultPrinterType type> struct WrapPrinterType {};
8441 
8442 // Used to print an STL-style container when the user doesn't define
8443 // a PrintTo() for it.
8444 template <typename C>
8446  const C& container, ::std::ostream* os) {
8447  const size_t kMaxCount = 32; // The maximum number of elements to print.
8448  *os << '{';
8449  size_t count = 0;
8450  for (typename C::const_iterator it = container.begin();
8451  it != container.end(); ++it, ++count) {
8452  if (count > 0) {
8453  *os << ',';
8454  if (count == kMaxCount) { // Enough has been printed.
8455  *os << " ...";
8456  break;
8457  }
8458  }
8459  *os << ' ';
8460  // We cannot call PrintTo(*it, os) here as PrintTo() doesn't
8461  // handle *it being a native array.
8462  internal::UniversalPrint(*it, os);
8463  }
8464 
8465  if (count > 0) {
8466  *os << ' ';
8467  }
8468  *os << '}';
8469 }
8470 
8471 // Used to print a pointer that is neither a char pointer nor a member
8472 // pointer, when the user doesn't define PrintTo() for it. (A member
8473 // variable pointer or member function pointer doesn't really point to
8474 // a location in the address space. Their representation is
8475 // implementation-defined. Therefore they will be printed as raw
8476 // bytes.)
8477 template <typename T>
8479  T* p, ::std::ostream* os) {
8480  if (p == nullptr) {
8481  *os << "NULL";
8482  } else {
8483  // T is not a function type. We just call << to print p,
8484  // relying on ADL to pick up user-defined << for their pointer
8485  // types, if any.
8486  *os << p;
8487  }
8488 }
8489 template <typename T>
8491  T* p, ::std::ostream* os) {
8492  if (p == nullptr) {
8493  *os << "NULL";
8494  } else {
8495  // T is a function type, so '*os << p' doesn't do what we want
8496  // (it just prints p as bool). We want to print p as a const
8497  // void*.
8498  *os << reinterpret_cast<const void*>(p);
8499  }
8500 }
8501 
8502 // Used to print a non-container, non-pointer value when the user
8503 // doesn't define PrintTo() for it.
8504 template <typename T>
8506  const T& value, ::std::ostream* os) {
8508 }
8509 
8510 // Prints the given value using the << operator if it has one;
8511 // otherwise prints the bytes in it. This is what
8512 // UniversalPrinter<T>::Print() does when PrintTo() is not specialized
8513 // or overloaded for type T.
8514 //
8515 // A user can override this behavior for a class type Foo by defining
8516 // an overload of PrintTo() in the namespace where Foo is defined. We
8517 // give the user this option as sometimes defining a << operator for
8518 // Foo is not desirable (e.g. the coding style may prevent doing it,
8519 // or there is already a << operator but it doesn't do what the user
8520 // wants).
8521 template <typename T>
8522 void PrintTo(const T& value, ::std::ostream* os) {
8523  // DefaultPrintTo() is overloaded. The type of its first argument
8524  // determines which version will be picked.
8525  //
8526  // Note that we check for container types here, prior to we check
8527  // for protocol message types in our operator<<. The rationale is:
8528  //
8529  // For protocol messages, we want to give people a chance to
8530  // override Google Mock's format by defining a PrintTo() or
8531  // operator<<. For STL containers, other formats can be
8532  // incompatible with Google Mock's format for the container
8533  // elements; therefore we check for container types here to ensure
8534  // that our format is used.
8535  //
8536  // Note that MSVC and clang-cl do allow an implicit conversion from
8537  // pointer-to-function to pointer-to-object, but clang-cl warns on it.
8538  // So don't use ImplicitlyConvertible if it can be helped since it will
8539  // cause this warning, and use a separate overload of DefaultPrintTo for
8540  // function pointers so that the `*os << p` in the object pointer overload
8541  // doesn't cause that warning either.
8543  WrapPrinterType <
8544  (sizeof(IsContainerTest<T>(0)) == sizeof(IsContainer)) &&
8546  ? kPrintContainer
8547  : !std::is_pointer<T>::value
8548  ? kPrintOther
8549  : std::is_function<typename std::remove_pointer<T>::type>::value
8551  : kPrintPointer > (),
8552  value, os);
8553 }
8554 
8555 // The following list of PrintTo() overloads tells
8556 // UniversalPrinter<T>::Print() how to print standard types (built-in
8557 // types, strings, plain arrays, and pointers).
8558 
8559 // Overloads for various char types.
8560 GTEST_API_ void PrintTo(unsigned char c, ::std::ostream* os);
8561 GTEST_API_ void PrintTo(signed char c, ::std::ostream* os);
8562 inline void PrintTo(char c, ::std::ostream* os) {
8563  // When printing a plain char, we always treat it as unsigned. This
8564  // way, the output won't be affected by whether the compiler thinks
8565  // char is signed or not.
8566  PrintTo(static_cast<unsigned char>(c), os);
8567 }
8568 
8569 // Overloads for other simple built-in types.
8570 inline void PrintTo(bool x, ::std::ostream* os) {
8571  *os << (x ? "true" : "false");
8572 }
8573 
8574 // Overload for wchar_t type.
8575 // Prints a wchar_t as a symbol if it is printable or as its internal
8576 // code otherwise and also as its decimal code (except for L'\0').
8577 // The L'\0' char is printed as "L'\\0'". The decimal code is printed
8578 // as signed integer when wchar_t is implemented by the compiler
8579 // as a signed type and is printed as an unsigned integer when wchar_t
8580 // is implemented as an unsigned type.
8581 GTEST_API_ void PrintTo(wchar_t wc, ::std::ostream* os);
8582 
8583 // Overloads for C strings.
8584 GTEST_API_ void PrintTo(const char* s, ::std::ostream* os);
8585 inline void PrintTo(char* s, ::std::ostream* os) {
8586  PrintTo(ImplicitCast_<const char*>(s), os);
8587 }
8588 
8589 // signed/unsigned char is often used for representing binary data, so
8590 // we print pointers to it as void* to be safe.
8591 inline void PrintTo(const signed char* s, ::std::ostream* os) {
8592  PrintTo(ImplicitCast_<const void*>(s), os);
8593 }
8594 inline void PrintTo(signed char* s, ::std::ostream* os) {
8595  PrintTo(ImplicitCast_<const void*>(s), os);
8596 }
8597 inline void PrintTo(const unsigned char* s, ::std::ostream* os) {
8598  PrintTo(ImplicitCast_<const void*>(s), os);
8599 }
8600 inline void PrintTo(unsigned char* s, ::std::ostream* os) {
8601  PrintTo(ImplicitCast_<const void*>(s), os);
8602 }
8603 
8604 // MSVC can be configured to define wchar_t as a typedef of unsigned
8605 // short. It defines _NATIVE_WCHAR_T_DEFINED when wchar_t is a native
8606 // type. When wchar_t is a typedef, defining an overload for const
8607 // wchar_t* would cause unsigned short* be printed as a wide string,
8608 // possibly causing invalid memory accesses.
8609 #if !defined(_MSC_VER) || defined(_NATIVE_WCHAR_T_DEFINED)
8610 // Overloads for wide C strings
8611 GTEST_API_ void PrintTo(const wchar_t* s, ::std::ostream* os);
8612 inline void PrintTo(wchar_t* s, ::std::ostream* os) {
8613  PrintTo(ImplicitCast_<const wchar_t*>(s), os);
8614 }
8615 #endif
8616 
8617 // Overload for C arrays. Multi-dimensional arrays are printed
8618 // properly.
8619 
8620 // Prints the given number of elements in an array, without printing
8621 // the curly braces.
8622 template <typename T>
8623 void PrintRawArrayTo(const T a[], size_t count, ::std::ostream* os) {
8624  UniversalPrint(a[0], os);
8625  for (size_t i = 1; i != count; i++) {
8626  *os << ", ";
8627  UniversalPrint(a[i], os);
8628  }
8629 }
8630 
8631 // Overloads for ::string and ::std::string.
8632 #if GTEST_HAS_GLOBAL_STRING
8633 GTEST_API_ void PrintStringTo(const ::string&s, ::std::ostream* os);
8634 inline void PrintTo(const ::string& s, ::std::ostream* os) {
8635  PrintStringTo(s, os);
8636 }
8637 #endif // GTEST_HAS_GLOBAL_STRING
8638 
8639 GTEST_API_ void PrintStringTo(const ::std::string&s, ::std::ostream* os);
8640 inline void PrintTo(const ::std::string& s, ::std::ostream* os) {
8641  PrintStringTo(s, os);
8642 }
8643 
8644 // Overloads for ::wstring and ::std::wstring.
8645 #if GTEST_HAS_GLOBAL_WSTRING
8646 GTEST_API_ void PrintWideStringTo(const ::wstring&s, ::std::ostream* os);
8647 inline void PrintTo(const ::wstring& s, ::std::ostream* os) {
8648  PrintWideStringTo(s, os);
8649 }
8650 #endif // GTEST_HAS_GLOBAL_WSTRING
8651 
8652 #if GTEST_HAS_STD_WSTRING
8653 GTEST_API_ void PrintWideStringTo(const ::std::wstring&s, ::std::ostream* os);
8654 inline void PrintTo(const ::std::wstring& s, ::std::ostream* os) {
8655  PrintWideStringTo(s, os);
8656 }
8657 #endif // GTEST_HAS_STD_WSTRING
8658 
8659 #if GTEST_HAS_ABSL
8660 // Overload for absl::string_view.
8661 inline void PrintTo(absl::string_view sp, ::std::ostream* os) {
8662  PrintTo(::std::string(sp), os);
8663 }
8664 #endif // GTEST_HAS_ABSL
8665 
8666 inline void PrintTo(std::nullptr_t, ::std::ostream* os) { *os << "(nullptr)"; }
8667 
8668 template <typename T>
8669 void PrintTo(std::reference_wrapper<T> ref, ::std::ostream* os) {
8670  // Delegate to wrapped value.
8671  PrintTo(ref.get(), os);
8672 }
8673 
8674 // Helper function for printing a tuple. T must be instantiated with
8675 // a tuple type.
8676 template <typename T>
8677 void PrintTupleTo(const T&, std::integral_constant<size_t, 0>,
8678  ::std::ostream*) {}
8679 
8680 template <typename T, size_t I>
8681 void PrintTupleTo(const T& t, std::integral_constant<size_t, I>,
8682  ::std::ostream* os) {
8683  PrintTupleTo(t, std::integral_constant<size_t, I - 1>(), os);
8685  if (I > 1) {
8687  *os << ", ";
8688  }
8689  UniversalPrinter<typename std::tuple_element<I - 1, T>::type>::Print(
8690  std::get<I - 1>(t), os);
8691 }
8692 
8693 template <typename... Types>
8694 void PrintTo(const ::std::tuple<Types...>& t, ::std::ostream* os) {
8695  *os << "(";
8696  PrintTupleTo(t, std::integral_constant<size_t, sizeof...(Types)>(), os);
8697  *os << ")";
8698 }
8699 
8700 // Overload for std::pair.
8701 template <typename T1, typename T2>
8702 void PrintTo(const ::std::pair<T1, T2>& value, ::std::ostream* os) {
8703  *os << '(';
8704  // We cannot use UniversalPrint(value.first, os) here, as T1 may be
8705  // a reference type. The same for printing value.second.
8706  UniversalPrinter<T1>::Print(value.first, os);
8707  *os << ", ";
8708  UniversalPrinter<T2>::Print(value.second, os);
8709  *os << ')';
8710 }
8711 
8712 // Implements printing a non-reference type T by letting the compiler
8713 // pick the right overload of PrintTo() for T.
8714 template <typename T>
8715 class UniversalPrinter {
8716  public:
8717  // MSVC warns about adding const to a function type, so we want to
8718  // disable the warning.
8720 
8721  // Note: we deliberately don't call this PrintTo(), as that name
8722  // conflicts with ::testing::internal::PrintTo in the body of the
8723  // function.
8724  static void Print(const T& value, ::std::ostream* os) {
8725  // By default, ::testing::internal::PrintTo() is used for printing
8726  // the value.
8727  //
8728  // Thanks to Koenig look-up, if T is a class and has its own
8729  // PrintTo() function defined in its namespace, that function will
8730  // be visible here. Since it is more specific than the generic ones
8731  // in ::testing::internal, it will be picked by the compiler in the
8732  // following statement - exactly what we want.
8733  PrintTo(value, os);
8734  }
8735 
8737 };
8738 
8739 #if GTEST_HAS_ABSL
8740 
8741 // Printer for absl::optional
8742 
8743 template <typename T>
8744 class UniversalPrinter<::absl::optional<T>> {
8745  public:
8746  static void Print(const ::absl::optional<T>& value, ::std::ostream* os) {
8747  *os << '(';
8748  if (!value) {
8749  *os << "nullopt";
8750  } else {
8751  UniversalPrint(*value, os);
8752  }
8753  *os << ')';
8754  }
8755 };
8756 
8757 // Printer for absl::variant
8758 
8759 template <typename... T>
8760 class UniversalPrinter<::absl::variant<T...>> {
8761  public:
8762  static void Print(const ::absl::variant<T...>& value, ::std::ostream* os) {
8763  *os << '(';
8764  absl::visit(Visitor{os}, value);
8765  *os << ')';
8766  }
8767 
8768  private:
8769  struct Visitor {
8770  template <typename U>
8771  void operator()(const U& u) const {
8772  *os << "'" << GetTypeName<U>() << "' with value ";
8773  UniversalPrint(u, os);
8774  }
8775  ::std::ostream* os;
8776  };
8777 };
8778 
8779 #endif // GTEST_HAS_ABSL
8780 
8781 // UniversalPrintArray(begin, len, os) prints an array of 'len'
8782 // elements, starting at address 'begin'.
8783 template <typename T>
8784 void UniversalPrintArray(const T* begin, size_t len, ::std::ostream* os) {
8785  if (len == 0) {
8786  *os << "{}";
8787  } else {
8788  *os << "{ ";
8789  const size_t kThreshold = 18;
8790  const size_t kChunkSize = 8;
8791  // If the array has more than kThreshold elements, we'll have to
8792  // omit some details by printing only the first and the last
8793  // kChunkSize elements.
8794  if (len <= kThreshold) {
8795  PrintRawArrayTo(begin, len, os);
8796  } else {
8797  PrintRawArrayTo(begin, kChunkSize, os);
8798  *os << ", ..., ";
8799  PrintRawArrayTo(begin + len - kChunkSize, kChunkSize, os);
8800  }
8801  *os << " }";
8802  }
8803 }
8804 // This overload prints a (const) char array compactly.
8806  const char* begin, size_t len, ::std::ostream* os);
8807 
8808 // This overload prints a (const) wchar_t array compactly.
8810  const wchar_t* begin, size_t len, ::std::ostream* os);
8811 
8812 // Implements printing an array type T[N].
8813 template <typename T, size_t N>
8814 class UniversalPrinter<T[N]> {
8815  public:
8816  // Prints the given array, omitting some elements when there are too
8817  // many.
8818  static void Print(const T (&a)[N], ::std::ostream* os) {
8819  UniversalPrintArray(a, N, os);
8820  }
8821 };
8822 
8823 // Implements printing a reference type T&.
8824 template <typename T>
8825 class UniversalPrinter<T&> {
8826  public:
8827  // MSVC warns about adding const to a function type, so we want to
8828  // disable the warning.
8830 
8831  static void Print(const T& value, ::std::ostream* os) {
8832  // Prints the address of the value. We use reinterpret_cast here
8833  // as static_cast doesn't compile when T is a function type.
8834  *os << "@" << reinterpret_cast<const void*>(&value) << " ";
8835 
8836  // Then prints the value itself.
8837  UniversalPrint(value, os);
8838  }
8839 
8841 };
8842 
8843 // Prints a value tersely: for a reference type, the referenced value
8844 // (but not the address) is printed; for a (const) char pointer, the
8845 // NUL-terminated string (but not the pointer) is printed.
8846 
8847 template <typename T>
8849  public:
8850  static void Print(const T& value, ::std::ostream* os) {
8851  UniversalPrint(value, os);
8852  }
8853 };
8854 template <typename T>
8856  public:
8857  static void Print(const T& value, ::std::ostream* os) {
8858  UniversalPrint(value, os);
8859  }
8860 };
8861 template <typename T, size_t N>
8863  public:
8864  static void Print(const T (&value)[N], ::std::ostream* os) {
8865  UniversalPrinter<T[N]>::Print(value, os);
8866  }
8867 };
8868 template <>
8869 class UniversalTersePrinter<const char*> {
8870  public:
8871  static void Print(const char* str, ::std::ostream* os) {
8872  if (str == nullptr) {
8873  *os << "NULL";
8874  } else {
8875  UniversalPrint(std::string(str), os);
8876  }
8877  }
8878 };
8879 template <>
8881  public:
8882  static void Print(char* str, ::std::ostream* os) {
8884  }
8885 };
8886 
8887 #if GTEST_HAS_STD_WSTRING
8888 template <>
8889 class UniversalTersePrinter<const wchar_t*> {
8890  public:
8891  static void Print(const wchar_t* str, ::std::ostream* os) {
8892  if (str == nullptr) {
8893  *os << "NULL";
8894  } else {
8895  UniversalPrint(::std::wstring(str), os);
8896  }
8897  }
8898 };
8899 #endif
8900 
8901 template <>
8902 class UniversalTersePrinter<wchar_t*> {
8903  public:
8904  static void Print(wchar_t* str, ::std::ostream* os) {
8906  }
8907 };
8908 
8909 template <typename T>
8910 void UniversalTersePrint(const T& value, ::std::ostream* os) {
8912 }
8913 
8914 // Prints a value using the type inferred by the compiler. The
8915 // difference between this and UniversalTersePrint() is that for a
8916 // (const) char pointer, this prints both the pointer and the
8917 // NUL-terminated string.
8918 template <typename T>
8919 void UniversalPrint(const T& value, ::std::ostream* os) {
8920  // A workarond for the bug in VC++ 7.1 that prevents us from instantiating
8921  // UniversalPrinter with T directly.
8922  typedef T T1;
8923  UniversalPrinter<T1>::Print(value, os);
8924 }
8925 
8926 typedef ::std::vector< ::std::string> Strings;
8927 
8928  // Tersely prints the first N fields of a tuple to a string vector,
8929  // one element for each field.
8930 template <typename Tuple>
8931 void TersePrintPrefixToStrings(const Tuple&, std::integral_constant<size_t, 0>,
8932  Strings*) {}
8933 template <typename Tuple, size_t I>
8934 void TersePrintPrefixToStrings(const Tuple& t,
8935  std::integral_constant<size_t, I>,
8936  Strings* strings) {
8937  TersePrintPrefixToStrings(t, std::integral_constant<size_t, I - 1>(),
8938  strings);
8939  ::std::stringstream ss;
8940  UniversalTersePrint(std::get<I - 1>(t), &ss);
8941  strings->push_back(ss.str());
8942 }
8943 
8944 // Prints the fields of a tuple tersely to a string vector, one
8945 // element for each field. See the comment before
8946 // UniversalTersePrint() for how we define "tersely".
8947 template <typename Tuple>
8949  Strings result;
8951  value, std::integral_constant<size_t, std::tuple_size<Tuple>::value>(),
8952  &result);
8953  return result;
8954 }
8955 
8956 } // namespace internal
8957 
8958 #if GTEST_HAS_ABSL
8959 namespace internal2 {
8960 template <typename T>
8962  const T& value, ::std::ostream* os) {
8963  internal::PrintTo(absl::string_view(value), os);
8964 }
8965 } // namespace internal2
8966 #endif
8967 
8968 template <typename T>
8969 ::std::string PrintToString(const T& value) {
8970  ::std::stringstream ss;
8972  return ss.str();
8973 }
8974 
8975 } // namespace testing
8976 
8977 // Include any custom printer added by the local installation.
8978 // We must include this header at the end to make sure it can use the
8979 // declarations from this file.
8980 // Copyright 2015, Google Inc.
8981 // All rights reserved.
8982 //
8983 // Redistribution and use in source and binary forms, with or without
8984 // modification, are permitted provided that the following conditions are
8985 // met:
8986 //
8987 // * Redistributions of source code must retain the above copyright
8988 // notice, this list of conditions and the following disclaimer.
8989 // * Redistributions in binary form must reproduce the above
8990 // copyright notice, this list of conditions and the following disclaimer
8991 // in the documentation and/or other materials provided with the
8992 // distribution.
8993 // * Neither the name of Google Inc. nor the names of its
8994 // contributors may be used to endorse or promote products derived from
8995 // this software without specific prior written permission.
8996 //
8997 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
8998 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
8999 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
9000 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
9001 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
9002 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
9003 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
9004 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
9005 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
9006 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
9007 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
9008 //
9009 // This file provides an injection point for custom printers in a local
9010 // installation of gTest.
9011 // It will be included from gtest-printers.h and the overrides in this file
9012 // will be visible to everyone.
9013 //
9014 // Injection point for custom user configurations. See README for details
9015 //
9016 // ** Custom implementation starts here **
9017 
9018 #ifndef GTEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_PRINTERS_H_
9019 #define GTEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_PRINTERS_H_
9020 
9021 #endif // GTEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_PRINTERS_H_
9022 
9023 #endif // GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_
9024 
9026  4251 5046 /* class A needs to have dll-interface to be used by clients of
9027  class B */
9028  /* Symbol involving type with internal linkage not defined */)
9029 
9030 namespace testing {
9031 
9032 // To implement a matcher Foo for type T, define:
9033 // 1. a class FooMatcherImpl that implements the
9034 // MatcherInterface<T> interface, and
9035 // 2. a factory function that creates a Matcher<T> object from a
9036 // FooMatcherImpl*.
9037 //
9038 // The two-level delegation design makes it possible to allow a user
9039 // to write "v" instead of "Eq(v)" where a Matcher is expected, which
9040 // is impossible if we pass matchers by pointers. It also eases
9041 // ownership management as Matcher objects can now be copied like
9042 // plain values.
9043 
9044 // MatchResultListener is an abstract class. Its << operator can be
9045 // used by a matcher to explain why a value matches or doesn't match.
9046 //
9047 class MatchResultListener {
9048  public:
9049  // Creates a listener object with the given underlying ostream. The
9050  // listener does not own the ostream, and does not dereference it
9051  // in the constructor or destructor.
9052  explicit MatchResultListener(::std::ostream* os) : stream_(os) {}
9053  virtual ~MatchResultListener() = 0; // Makes this class abstract.
9054 
9055  // Streams x to the underlying ostream; does nothing if the ostream
9056  // is NULL.
9057  template <typename T>
9058  MatchResultListener& operator<<(const T& x) {
9059  if (stream_ != nullptr) *stream_ << x;
9060  return *this;
9061  }
9062 
9063  // Returns the underlying ostream.
9064  ::std::ostream* stream() { return stream_; }
9065 
9066  // Returns true iff the listener is interested in an explanation of
9067  // the match result. A matcher's MatchAndExplain() method can use
9068  // this information to avoid generating the explanation when no one
9069  // intends to hear it.
9070  bool IsInterested() const { return stream_ != nullptr; }
9071 
9072  private:
9073  ::std::ostream* const stream_;
9074 
9075  GTEST_DISALLOW_COPY_AND_ASSIGN_(MatchResultListener);
9076 };
9077 
9078 inline MatchResultListener::~MatchResultListener() {
9079 }
9080 
9081 // An instance of a subclass of this knows how to describe itself as a
9082 // matcher.
9083 class MatcherDescriberInterface {
9084  public:
9085  virtual ~MatcherDescriberInterface() {}
9086 
9087  // Describes this matcher to an ostream. The function should print
9088  // a verb phrase that describes the property a value matching this
9089  // matcher should have. The subject of the verb phrase is the value
9090  // being matched. For example, the DescribeTo() method of the Gt(7)
9091  // matcher prints "is greater than 7".
9092  virtual void DescribeTo(::std::ostream* os) const = 0;
9093 
9094  // Describes the negation of this matcher to an ostream. For
9095  // example, if the description of this matcher is "is greater than
9096  // 7", the negated description could be "is not greater than 7".
9097  // You are not required to override this when implementing
9098  // MatcherInterface, but it is highly advised so that your matcher
9099  // can produce good error messages.
9100  virtual void DescribeNegationTo(::std::ostream* os) const {
9101  *os << "not (";
9102  DescribeTo(os);
9103  *os << ")";
9104  }
9105 };
9106 
9107 // The implementation of a matcher.
9108 template <typename T>
9109 class MatcherInterface : public MatcherDescriberInterface {
9110  public:
9111  // Returns true iff the matcher matches x; also explains the match
9112  // result to 'listener' if necessary (see the next paragraph), in
9113  // the form of a non-restrictive relative clause ("which ...",
9114  // "whose ...", etc) that describes x. For example, the
9115  // MatchAndExplain() method of the Pointee(...) matcher should
9116  // generate an explanation like "which points to ...".
9117  //
9118  // Implementations of MatchAndExplain() should add an explanation of
9119  // the match result *if and only if* they can provide additional
9120  // information that's not already present (or not obvious) in the
9121  // print-out of x and the matcher's description. Whether the match
9122  // succeeds is not a factor in deciding whether an explanation is
9123  // needed, as sometimes the caller needs to print a failure message
9124  // when the match succeeds (e.g. when the matcher is used inside
9125  // Not()).
9126  //
9127  // For example, a "has at least 10 elements" matcher should explain
9128  // what the actual element count is, regardless of the match result,
9129  // as it is useful information to the reader; on the other hand, an
9130  // "is empty" matcher probably only needs to explain what the actual
9131  // size is when the match fails, as it's redundant to say that the
9132  // size is 0 when the value is already known to be empty.
9133  //
9134  // You should override this method when defining a new matcher.
9135  //
9136  // It's the responsibility of the caller (Google Test) to guarantee
9137  // that 'listener' is not NULL. This helps to simplify a matcher's
9138  // implementation when it doesn't care about the performance, as it
9139  // can talk to 'listener' without checking its validity first.
9140  // However, in order to implement dummy listeners efficiently,
9141  // listener->stream() may be NULL.
9142  virtual bool MatchAndExplain(T x, MatchResultListener* listener) const = 0;
9143 
9144  // Inherits these methods from MatcherDescriberInterface:
9145  // virtual void DescribeTo(::std::ostream* os) const = 0;
9146  // virtual void DescribeNegationTo(::std::ostream* os) const;
9147 };
9148 
9149 namespace internal {
9150 
9151 // Converts a MatcherInterface<T> to a MatcherInterface<const T&>.
9152 template <typename T>
9153 class MatcherInterfaceAdapter : public MatcherInterface<const T&> {
9154  public:
9155  explicit MatcherInterfaceAdapter(const MatcherInterface<T>* impl)
9156  : impl_(impl) {}
9157  ~MatcherInterfaceAdapter() override { delete impl_; }
9158 
9159  void DescribeTo(::std::ostream* os) const override { impl_->DescribeTo(os); }
9160 
9161  void DescribeNegationTo(::std::ostream* os) const override {
9162  impl_->DescribeNegationTo(os);
9163  }
9164 
9165  bool MatchAndExplain(const T& x,
9166  MatchResultListener* listener) const override {
9167  return impl_->MatchAndExplain(x, listener);
9168  }
9169 
9170  private:
9171  const MatcherInterface<T>* const impl_;
9172 
9173  GTEST_DISALLOW_COPY_AND_ASSIGN_(MatcherInterfaceAdapter);
9174 };
9175 
9176 struct AnyEq {
9177  template <typename A, typename B>
9178  bool operator()(const A& a, const B& b) const { return a == b; }
9179 };
9180 struct AnyNe {
9181  template <typename A, typename B>
9182  bool operator()(const A& a, const B& b) const { return a != b; }
9183 };
9184 struct AnyLt {
9185  template <typename A, typename B>
9186  bool operator()(const A& a, const B& b) const { return a < b; }
9187 };
9188 struct AnyGt {
9189  template <typename A, typename B>
9190  bool operator()(const A& a, const B& b) const { return a > b; }
9191 };
9192 struct AnyLe {
9193  template <typename A, typename B>
9194  bool operator()(const A& a, const B& b) const { return a <= b; }
9195 };
9196 struct AnyGe {
9197  template <typename A, typename B>
9198  bool operator()(const A& a, const B& b) const { return a >= b; }
9199 };
9200 
9201 // A match result listener that ignores the explanation.
9202 class DummyMatchResultListener : public MatchResultListener {
9203  public:
9204  DummyMatchResultListener() : MatchResultListener(nullptr) {}
9205 
9206  private:
9207  GTEST_DISALLOW_COPY_AND_ASSIGN_(DummyMatchResultListener);
9208 };
9209 
9210 // A match result listener that forwards the explanation to a given
9211 // ostream. The difference between this and MatchResultListener is
9212 // that the former is concrete.
9213 class StreamMatchResultListener : public MatchResultListener {
9214  public:
9215  explicit StreamMatchResultListener(::std::ostream* os)
9216  : MatchResultListener(os) {}
9217 
9218  private:
9219  GTEST_DISALLOW_COPY_AND_ASSIGN_(StreamMatchResultListener);
9220 };
9221 
9222 // An internal class for implementing Matcher<T>, which will derive
9223 // from it. We put functionalities common to all Matcher<T>
9224 // specializations here to avoid code duplication.
9225 template <typename T>
9226 class MatcherBase {
9227  public:
9228  // Returns true iff the matcher matches x; also explains the match
9229  // result to 'listener'.
9230  bool MatchAndExplain(const T& x, MatchResultListener* listener) const {
9231  return impl_->MatchAndExplain(x, listener);
9232  }
9233 
9234  // Returns true iff this matcher matches x.
9235  bool Matches(const T& x) const {
9236  DummyMatchResultListener dummy;
9237  return MatchAndExplain(x, &dummy);
9238  }
9239 
9240  // Describes this matcher to an ostream.
9241  void DescribeTo(::std::ostream* os) const { impl_->DescribeTo(os); }
9242 
9243  // Describes the negation of this matcher to an ostream.
9244  void DescribeNegationTo(::std::ostream* os) const {
9245  impl_->DescribeNegationTo(os);
9246  }
9247 
9248  // Explains why x matches, or doesn't match, the matcher.
9249  void ExplainMatchResultTo(const T& x, ::std::ostream* os) const {
9250  StreamMatchResultListener listener(os);
9251  MatchAndExplain(x, &listener);
9252  }
9253 
9254  // Returns the describer for this matcher object; retains ownership
9255  // of the describer, which is only guaranteed to be alive when
9256  // this matcher object is alive.
9257  const MatcherDescriberInterface* GetDescriber() const {
9258  return impl_.get();
9259  }
9260 
9261  protected:
9262  MatcherBase() {}
9263 
9264  // Constructs a matcher from its implementation.
9265  explicit MatcherBase(const MatcherInterface<const T&>* impl) : impl_(impl) {}
9266 
9267  template <typename U>
9268  explicit MatcherBase(
9269  const MatcherInterface<U>* impl,
9270  typename internal::EnableIf<
9271  !internal::IsSame<U, const U&>::value>::type* = nullptr)
9272  : impl_(new internal::MatcherInterfaceAdapter<U>(impl)) {}
9273 
9274  virtual ~MatcherBase() {}
9275 
9276  private:
9277  std::shared_ptr<const MatcherInterface<const T&>> impl_;
9278 };
9279 
9280 } // namespace internal
9281 
9282 // A Matcher<T> is a copyable and IMMUTABLE (except by assignment)
9283 // object that can check whether a value of type T matches. The
9284 // implementation of Matcher<T> is just a std::shared_ptr to const
9285 // MatcherInterface<T>. Don't inherit from Matcher!
9286 template <typename T>
9287 class Matcher : public internal::MatcherBase<T> {
9288  public:
9289  // Constructs a null matcher. Needed for storing Matcher objects in STL
9290  // containers. A default-constructed matcher is not yet initialized. You
9291  // cannot use it until a valid value has been assigned to it.
9292  explicit Matcher() {} // NOLINT
9293 
9294  // Constructs a matcher from its implementation.
9295  explicit Matcher(const MatcherInterface<const T&>* impl)
9296  : internal::MatcherBase<T>(impl) {}
9297 
9298  template <typename U>
9299  explicit Matcher(const MatcherInterface<U>* impl,
9300  typename internal::EnableIf<
9301  !internal::IsSame<U, const U&>::value>::type* = nullptr)
9302  : internal::MatcherBase<T>(impl) {}
9303 
9304  // Implicit constructor here allows people to write
9305  // EXPECT_CALL(foo, Bar(5)) instead of EXPECT_CALL(foo, Bar(Eq(5))) sometimes
9306  Matcher(T value); // NOLINT
9307 };
9308 
9309 // The following two specializations allow the user to write str
9310 // instead of Eq(str) and "foo" instead of Eq("foo") when a std::string
9311 // matcher is expected.
9312 template <>
9313 class GTEST_API_ Matcher<const std::string&>
9314  : public internal::MatcherBase<const std::string&> {
9315  public:
9316  Matcher() {}
9317 
9318  explicit Matcher(const MatcherInterface<const std::string&>* impl)
9319  : internal::MatcherBase<const std::string&>(impl) {}
9320 
9321  // Allows the user to write str instead of Eq(str) sometimes, where
9322  // str is a std::string object.
9323  Matcher(const std::string& s); // NOLINT
9324 
9325 #if GTEST_HAS_GLOBAL_STRING
9326  // Allows the user to write str instead of Eq(str) sometimes, where
9327  // str is a ::string object.
9328  Matcher(const ::string& s); // NOLINT
9329 #endif // GTEST_HAS_GLOBAL_STRING
9330 
9331  // Allows the user to write "foo" instead of Eq("foo") sometimes.
9332  Matcher(const char* s); // NOLINT
9333 };
9334 
9335 template <>
9336 class GTEST_API_ Matcher<std::string>
9337  : public internal::MatcherBase<std::string> {
9338  public:
9339  Matcher() {}
9340 
9341  explicit Matcher(const MatcherInterface<const std::string&>* impl)
9342  : internal::MatcherBase<std::string>(impl) {}
9343  explicit Matcher(const MatcherInterface<std::string>* impl)
9344  : internal::MatcherBase<std::string>(impl) {}
9345 
9346  // Allows the user to write str instead of Eq(str) sometimes, where
9347  // str is a string object.
9348  Matcher(const std::string& s); // NOLINT
9349 
9350 #if GTEST_HAS_GLOBAL_STRING
9351  // Allows the user to write str instead of Eq(str) sometimes, where
9352  // str is a ::string object.
9353  Matcher(const ::string& s); // NOLINT
9354 #endif // GTEST_HAS_GLOBAL_STRING
9355 
9356  // Allows the user to write "foo" instead of Eq("foo") sometimes.
9357  Matcher(const char* s); // NOLINT
9358 };
9359 
9360 #if GTEST_HAS_GLOBAL_STRING
9361 // The following two specializations allow the user to write str
9362 // instead of Eq(str) and "foo" instead of Eq("foo") when a ::string
9363 // matcher is expected.
9364 template <>
9365 class GTEST_API_ Matcher<const ::string&>
9366  : public internal::MatcherBase<const ::string&> {
9367  public:
9368  Matcher() {}
9369 
9370  explicit Matcher(const MatcherInterface<const ::string&>* impl)
9371  : internal::MatcherBase<const ::string&>(impl) {}
9372 
9373  // Allows the user to write str instead of Eq(str) sometimes, where
9374  // str is a std::string object.
9375  Matcher(const std::string& s); // NOLINT
9376 
9377  // Allows the user to write str instead of Eq(str) sometimes, where
9378  // str is a ::string object.
9379  Matcher(const ::string& s); // NOLINT
9380 
9381  // Allows the user to write "foo" instead of Eq("foo") sometimes.
9382  Matcher(const char* s); // NOLINT
9383 };
9384 
9385 template <>
9386 class GTEST_API_ Matcher< ::string>
9387  : public internal::MatcherBase< ::string> {
9388  public:
9389  Matcher() {}
9390 
9391  explicit Matcher(const MatcherInterface<const ::string&>* impl)
9392  : internal::MatcherBase< ::string>(impl) {}
9393  explicit Matcher(const MatcherInterface< ::string>* impl)
9394  : internal::MatcherBase< ::string>(impl) {}
9395 
9396  // Allows the user to write str instead of Eq(str) sometimes, where
9397  // str is a std::string object.
9398  Matcher(const std::string& s); // NOLINT
9399 
9400  // Allows the user to write str instead of Eq(str) sometimes, where
9401  // str is a ::string object.
9402  Matcher(const ::string& s); // NOLINT
9403 
9404  // Allows the user to write "foo" instead of Eq("foo") sometimes.
9405  Matcher(const char* s); // NOLINT
9406 };
9407 #endif // GTEST_HAS_GLOBAL_STRING
9408 
9409 #if GTEST_HAS_ABSL
9410 // The following two specializations allow the user to write str
9411 // instead of Eq(str) and "foo" instead of Eq("foo") when a absl::string_view
9412 // matcher is expected.
9413 template <>
9414 class GTEST_API_ Matcher<const absl::string_view&>
9415  : public internal::MatcherBase<const absl::string_view&> {
9416  public:
9417  Matcher() {}
9418 
9419  explicit Matcher(const MatcherInterface<const absl::string_view&>* impl)
9420  : internal::MatcherBase<const absl::string_view&>(impl) {}
9421 
9422  // Allows the user to write str instead of Eq(str) sometimes, where
9423  // str is a std::string object.
9424  Matcher(const std::string& s); // NOLINT
9425 
9426 #if GTEST_HAS_GLOBAL_STRING
9427  // Allows the user to write str instead of Eq(str) sometimes, where
9428  // str is a ::string object.
9429  Matcher(const ::string& s); // NOLINT
9430 #endif // GTEST_HAS_GLOBAL_STRING
9431 
9432  // Allows the user to write "foo" instead of Eq("foo") sometimes.
9433  Matcher(const char* s); // NOLINT
9434 
9435  // Allows the user to pass absl::string_views directly.
9436  Matcher(absl::string_view s); // NOLINT
9437 };
9438 
9439 template <>
9440 class GTEST_API_ Matcher<absl::string_view>
9441  : public internal::MatcherBase<absl::string_view> {
9442  public:
9443  Matcher() {}
9444 
9445  explicit Matcher(const MatcherInterface<const absl::string_view&>* impl)
9446  : internal::MatcherBase<absl::string_view>(impl) {}
9447  explicit Matcher(const MatcherInterface<absl::string_view>* impl)
9448  : internal::MatcherBase<absl::string_view>(impl) {}
9449 
9450  // Allows the user to write str instead of Eq(str) sometimes, where
9451  // str is a std::string object.
9452  Matcher(const std::string& s); // NOLINT
9453 
9454 #if GTEST_HAS_GLOBAL_STRING
9455  // Allows the user to write str instead of Eq(str) sometimes, where
9456  // str is a ::string object.
9457  Matcher(const ::string& s); // NOLINT
9458 #endif // GTEST_HAS_GLOBAL_STRING
9459 
9460  // Allows the user to write "foo" instead of Eq("foo") sometimes.
9461  Matcher(const char* s); // NOLINT
9462 
9463  // Allows the user to pass absl::string_views directly.
9464  Matcher(absl::string_view s); // NOLINT
9465 };
9466 #endif // GTEST_HAS_ABSL
9467 
9468 // Prints a matcher in a human-readable format.
9469 template <typename T>
9470 std::ostream& operator<<(std::ostream& os, const Matcher<T>& matcher) {
9471  matcher.DescribeTo(&os);
9472  return os;
9473 }
9474 
9475 // The PolymorphicMatcher class template makes it easy to implement a
9476 // polymorphic matcher (i.e. a matcher that can match values of more
9477 // than one type, e.g. Eq(n) and NotNull()).
9478 //
9479 // To define a polymorphic matcher, a user should provide an Impl
9480 // class that has a DescribeTo() method and a DescribeNegationTo()
9481 // method, and define a member function (or member function template)
9482 //
9483 // bool MatchAndExplain(const Value& value,
9484 // MatchResultListener* listener) const;
9485 //
9486 // See the definition of NotNull() for a complete example.
9487 template <class Impl>
9488 class PolymorphicMatcher {
9489  public:
9490  explicit PolymorphicMatcher(const Impl& an_impl) : impl_(an_impl) {}
9491 
9492  // Returns a mutable reference to the underlying matcher
9493  // implementation object.
9494  Impl& mutable_impl() { return impl_; }
9495 
9496  // Returns an immutable reference to the underlying matcher
9497  // implementation object.
9498  const Impl& impl() const { return impl_; }
9499 
9500  template <typename T>
9501  operator Matcher<T>() const {
9502  return Matcher<T>(new MonomorphicImpl<const T&>(impl_));
9503  }
9504 
9505  private:
9506  template <typename T>
9507  class MonomorphicImpl : public MatcherInterface<T> {
9508  public:
9509  explicit MonomorphicImpl(const Impl& impl) : impl_(impl) {}
9510 
9511  virtual void DescribeTo(::std::ostream* os) const { impl_.DescribeTo(os); }
9512 
9513  virtual void DescribeNegationTo(::std::ostream* os) const {
9514  impl_.DescribeNegationTo(os);
9515  }
9516 
9517  virtual bool MatchAndExplain(T x, MatchResultListener* listener) const {
9518  return impl_.MatchAndExplain(x, listener);
9519  }
9520 
9521  private:
9522  const Impl impl_;
9523 
9524  GTEST_DISALLOW_ASSIGN_(MonomorphicImpl);
9525  };
9526 
9527  Impl impl_;
9528 
9529  GTEST_DISALLOW_ASSIGN_(PolymorphicMatcher);
9530 };
9531 
9532 // Creates a matcher from its implementation. This is easier to use
9533 // than the Matcher<T> constructor as it doesn't require you to
9534 // explicitly write the template argument, e.g.
9535 //
9536 // MakeMatcher(foo);
9537 // vs
9538 // Matcher<const string&>(foo);
9539 template <typename T>
9540 inline Matcher<T> MakeMatcher(const MatcherInterface<T>* impl) {
9541  return Matcher<T>(impl);
9542 }
9543 
9544 // Creates a polymorphic matcher from its implementation. This is
9545 // easier to use than the PolymorphicMatcher<Impl> constructor as it
9546 // doesn't require you to explicitly write the template argument, e.g.
9547 //
9548 // MakePolymorphicMatcher(foo);
9549 // vs
9550 // PolymorphicMatcher<TypeOfFoo>(foo);
9551 template <class Impl>
9552 inline PolymorphicMatcher<Impl> MakePolymorphicMatcher(const Impl& impl) {
9553  return PolymorphicMatcher<Impl>(impl);
9554 }
9555 
9556 namespace internal {
9557 // Implements a matcher that compares a given value with a
9558 // pre-supplied value using one of the ==, <=, <, etc, operators. The
9559 // two values being compared don't have to have the same type.
9560 //
9561 // The matcher defined here is polymorphic (for example, Eq(5) can be
9562 // used to match an int, a short, a double, etc). Therefore we use
9563 // a template type conversion operator in the implementation.
9564 //
9565 // The following template definition assumes that the Rhs parameter is
9566 // a "bare" type (i.e. neither 'const T' nor 'T&').
9567 template <typename D, typename Rhs, typename Op>
9568 class ComparisonBase {
9569  public:
9570  explicit ComparisonBase(const Rhs& rhs) : rhs_(rhs) {}
9571  template <typename Lhs>
9572  operator Matcher<Lhs>() const {
9573  return MakeMatcher(new Impl<Lhs>(rhs_));
9574  }
9575 
9576  private:
9577  template <typename Lhs>
9578  class Impl : public MatcherInterface<Lhs> {
9579  public:
9580  explicit Impl(const Rhs& rhs) : rhs_(rhs) {}
9581  bool MatchAndExplain(Lhs lhs,
9582  MatchResultListener* /* listener */) const override {
9583  return Op()(lhs, rhs_);
9584  }
9585  void DescribeTo(::std::ostream* os) const override {
9586  *os << D::Desc() << " ";
9587  UniversalPrint(rhs_, os);
9588  }
9589  void DescribeNegationTo(::std::ostream* os) const override {
9590  *os << D::NegatedDesc() << " ";
9591  UniversalPrint(rhs_, os);
9592  }
9593 
9594  private:
9595  Rhs rhs_;
9596  GTEST_DISALLOW_ASSIGN_(Impl);
9597  };
9598  Rhs rhs_;
9599  GTEST_DISALLOW_ASSIGN_(ComparisonBase);
9600 };
9601 
9602 template <typename Rhs>
9603 class EqMatcher : public ComparisonBase<EqMatcher<Rhs>, Rhs, AnyEq> {
9604  public:
9605  explicit EqMatcher(const Rhs& rhs)
9606  : ComparisonBase<EqMatcher<Rhs>, Rhs, AnyEq>(rhs) { }
9607  static const char* Desc() { return "is equal to"; }
9608  static const char* NegatedDesc() { return "isn't equal to"; }
9609 };
9610 template <typename Rhs>
9611 class NeMatcher : public ComparisonBase<NeMatcher<Rhs>, Rhs, AnyNe> {
9612  public:
9613  explicit NeMatcher(const Rhs& rhs)
9614  : ComparisonBase<NeMatcher<Rhs>, Rhs, AnyNe>(rhs) { }
9615  static const char* Desc() { return "isn't equal to"; }
9616  static const char* NegatedDesc() { return "is equal to"; }
9617 };
9618 template <typename Rhs>
9619 class LtMatcher : public ComparisonBase<LtMatcher<Rhs>, Rhs, AnyLt> {
9620  public:
9621  explicit LtMatcher(const Rhs& rhs)
9622  : ComparisonBase<LtMatcher<Rhs>, Rhs, AnyLt>(rhs) { }
9623  static const char* Desc() { return "is <"; }
9624  static const char* NegatedDesc() { return "isn't <"; }
9625 };
9626 template <typename Rhs>
9627 class GtMatcher : public ComparisonBase<GtMatcher<Rhs>, Rhs, AnyGt> {
9628  public:
9629  explicit GtMatcher(const Rhs& rhs)
9630  : ComparisonBase<GtMatcher<Rhs>, Rhs, AnyGt>(rhs) { }
9631  static const char* Desc() { return "is >"; }
9632  static const char* NegatedDesc() { return "isn't >"; }
9633 };
9634 template <typename Rhs>
9635 class LeMatcher : public ComparisonBase<LeMatcher<Rhs>, Rhs, AnyLe> {
9636  public:
9637  explicit LeMatcher(const Rhs& rhs)
9638  : ComparisonBase<LeMatcher<Rhs>, Rhs, AnyLe>(rhs) { }
9639  static const char* Desc() { return "is <="; }
9640  static const char* NegatedDesc() { return "isn't <="; }
9641 };
9642 template <typename Rhs>
9643 class GeMatcher : public ComparisonBase<GeMatcher<Rhs>, Rhs, AnyGe> {
9644  public:
9645  explicit GeMatcher(const Rhs& rhs)
9646  : ComparisonBase<GeMatcher<Rhs>, Rhs, AnyGe>(rhs) { }
9647  static const char* Desc() { return "is >="; }
9648  static const char* NegatedDesc() { return "isn't >="; }
9649 };
9650 
9651 // Implements polymorphic matchers MatchesRegex(regex) and
9652 // ContainsRegex(regex), which can be used as a Matcher<T> as long as
9653 // T can be converted to a string.
9654 class MatchesRegexMatcher {
9655  public:
9656  MatchesRegexMatcher(const RE* regex, bool full_match)
9657  : regex_(regex), full_match_(full_match) {}
9658 
9659 #if GTEST_HAS_ABSL
9660  bool MatchAndExplain(const absl::string_view& s,
9661  MatchResultListener* listener) const {
9662  return MatchAndExplain(string(s), listener);
9663  }
9664 #endif // GTEST_HAS_ABSL
9665 
9666  // Accepts pointer types, particularly:
9667  // const char*
9668  // char*
9669  // const wchar_t*
9670  // wchar_t*
9671  template <typename CharType>
9672  bool MatchAndExplain(CharType* s, MatchResultListener* listener) const {
9673  return s != nullptr && MatchAndExplain(std::string(s), listener);
9674  }
9675 
9676  // Matches anything that can convert to std::string.
9677  //
9678  // This is a template, not just a plain function with const std::string&,
9679  // because absl::string_view has some interfering non-explicit constructors.
9680  template <class MatcheeStringType>
9681  bool MatchAndExplain(const MatcheeStringType& s,
9682  MatchResultListener* /* listener */) const {
9683  const std::string& s2(s);
9684  return full_match_ ? RE::FullMatch(s2, *regex_)
9685  : RE::PartialMatch(s2, *regex_);
9686  }
9687 
9688  void DescribeTo(::std::ostream* os) const {
9689  *os << (full_match_ ? "matches" : "contains") << " regular expression ";
9690  UniversalPrinter<std::string>::Print(regex_->pattern(), os);
9691  }
9692 
9693  void DescribeNegationTo(::std::ostream* os) const {
9694  *os << "doesn't " << (full_match_ ? "match" : "contain")
9695  << " regular expression ";
9696  UniversalPrinter<std::string>::Print(regex_->pattern(), os);
9697  }
9698 
9699  private:
9700  const std::shared_ptr<const RE> regex_;
9701  const bool full_match_;
9702 
9703  GTEST_DISALLOW_ASSIGN_(MatchesRegexMatcher);
9704 };
9705 } // namespace internal
9706 
9707 // Matches a string that fully matches regular expression 'regex'.
9708 // The matcher takes ownership of 'regex'.
9709 inline PolymorphicMatcher<internal::MatchesRegexMatcher> MatchesRegex(
9710  const internal::RE* regex) {
9711  return MakePolymorphicMatcher(internal::MatchesRegexMatcher(regex, true));
9712 }
9713 inline PolymorphicMatcher<internal::MatchesRegexMatcher> MatchesRegex(
9714  const std::string& regex) {
9715  return MatchesRegex(new internal::RE(regex));
9716 }
9717 
9718 // Matches a string that contains regular expression 'regex'.
9719 // The matcher takes ownership of 'regex'.
9720 inline PolymorphicMatcher<internal::MatchesRegexMatcher> ContainsRegex(
9721  const internal::RE* regex) {
9722  return MakePolymorphicMatcher(internal::MatchesRegexMatcher(regex, false));
9723 }
9724 inline PolymorphicMatcher<internal::MatchesRegexMatcher> ContainsRegex(
9725  const std::string& regex) {
9726  return ContainsRegex(new internal::RE(regex));
9727 }
9728 
9729 // Creates a polymorphic matcher that matches anything equal to x.
9730 // Note: if the parameter of Eq() were declared as const T&, Eq("foo")
9731 // wouldn't compile.
9732 template <typename T>
9733 inline internal::EqMatcher<T> Eq(T x) { return internal::EqMatcher<T>(x); }
9734 
9735 // Constructs a Matcher<T> from a 'value' of type T. The constructed
9736 // matcher matches any value that's equal to 'value'.
9737 template <typename T>
9738 Matcher<T>::Matcher(T value) { *this = Eq(value); }
9739 
9740 // Creates a monomorphic matcher that matches anything with type Lhs
9741 // and equal to rhs. A user may need to use this instead of Eq(...)
9742 // in order to resolve an overloading ambiguity.
9743 //
9744 // TypedEq<T>(x) is just a convenient short-hand for Matcher<T>(Eq(x))
9745 // or Matcher<T>(x), but more readable than the latter.
9746 //
9747 // We could define similar monomorphic matchers for other comparison
9748 // operations (e.g. TypedLt, TypedGe, and etc), but decided not to do
9749 // it yet as those are used much less than Eq() in practice. A user
9750 // can always write Matcher<T>(Lt(5)) to be explicit about the type,
9751 // for example.
9752 template <typename Lhs, typename Rhs>
9753 inline Matcher<Lhs> TypedEq(const Rhs& rhs) { return Eq(rhs); }
9754 
9755 // Creates a polymorphic matcher that matches anything >= x.
9756 template <typename Rhs>
9757 inline internal::GeMatcher<Rhs> Ge(Rhs x) {
9758  return internal::GeMatcher<Rhs>(x);
9759 }
9760 
9761 // Creates a polymorphic matcher that matches anything > x.
9762 template <typename Rhs>
9763 inline internal::GtMatcher<Rhs> Gt(Rhs x) {
9764  return internal::GtMatcher<Rhs>(x);
9765 }
9766 
9767 // Creates a polymorphic matcher that matches anything <= x.
9768 template <typename Rhs>
9769 inline internal::LeMatcher<Rhs> Le(Rhs x) {
9770  return internal::LeMatcher<Rhs>(x);
9771 }
9772 
9773 // Creates a polymorphic matcher that matches anything < x.
9774 template <typename Rhs>
9775 inline internal::LtMatcher<Rhs> Lt(Rhs x) {
9776  return internal::LtMatcher<Rhs>(x);
9777 }
9778 
9779 // Creates a polymorphic matcher that matches anything != x.
9780 template <typename Rhs>
9781 inline internal::NeMatcher<Rhs> Ne(Rhs x) {
9782  return internal::NeMatcher<Rhs>(x);
9783 }
9784 } // namespace testing
9785 
9786 GTEST_DISABLE_MSC_WARNINGS_POP_() // 4251 5046
9787 
9788 #endif // GTEST_INCLUDE_GTEST_GTEST_MATCHERS_H_
9789 
9790 #include <stdio.h>
9791 #include <memory>
9792 
9793 namespace testing {
9794 namespace internal {
9795 
9796 GTEST_DECLARE_string_(internal_run_death_test);
9797 
9798 // Names of the flags (needed for parsing Google Test flags).
9799 const char kDeathTestStyleFlag[] = "death_test_style";
9800 const char kDeathTestUseFork[] = "death_test_use_fork";
9801 const char kInternalRunDeathTestFlag[] = "internal_run_death_test";
9802 
9803 #if GTEST_HAS_DEATH_TEST
9804 
9806 /* class A needs to have dll-interface to be used by clients of class B */)
9807 
9808 // DeathTest is a class that hides much of the complexity of the
9809 // GTEST_DEATH_TEST_ macro. It is abstract; its static Create method
9810 // returns a concrete class that depends on the prevailing death test
9811 // style, as defined by the --gtest_death_test_style and/or
9812 // --gtest_internal_run_death_test flags.
9813 
9814 // In describing the results of death tests, these terms are used with
9815 // the corresponding definitions:
9816 //
9817 // exit status: The integer exit information in the format specified
9818 // by wait(2)
9819 // exit code: The integer code passed to exit(3), _exit(2), or
9820 // returned from main()
9821 class GTEST_API_ DeathTest {
9822  public:
9823  // Create returns false if there was an error determining the
9824  // appropriate action to take for the current death test; for example,
9825  // if the gtest_death_test_style flag is set to an invalid value.
9826  // The LastMessage method will return a more detailed message in that
9827  // case. Otherwise, the DeathTest pointer pointed to by the "test"
9828  // argument is set. If the death test should be skipped, the pointer
9829  // is set to NULL; otherwise, it is set to the address of a new concrete
9830  // DeathTest object that controls the execution of the current test.
9831  static bool Create(const char* statement, Matcher<const std::string&> matcher,
9832  const char* file, int line, DeathTest** test);
9833  DeathTest();
9834  virtual ~DeathTest() { }
9835 
9836  // A helper class that aborts a death test when it's deleted.
9837  class ReturnSentinel {
9838  public:
9839  explicit ReturnSentinel(DeathTest* test) : test_(test) { }
9840  ~ReturnSentinel() { test_->Abort(TEST_ENCOUNTERED_RETURN_STATEMENT); }
9841  private:
9842  DeathTest* const test_;
9843  GTEST_DISALLOW_COPY_AND_ASSIGN_(ReturnSentinel);
9845 
9846  // An enumeration of possible roles that may be taken when a death
9847  // test is encountered. EXECUTE means that the death test logic should
9848  // be executed immediately. OVERSEE means that the program should prepare
9849  // the appropriate environment for a child process to execute the death
9850  // test, then wait for it to complete.
9851  enum TestRole { OVERSEE_TEST, EXECUTE_TEST };
9852 
9853  // An enumeration of the three reasons that a test might be aborted.
9854  enum AbortReason {
9855  TEST_ENCOUNTERED_RETURN_STATEMENT,
9856  TEST_THREW_EXCEPTION,
9857  TEST_DID_NOT_DIE
9858  };
9859 
9860  // Assumes one of the above roles.
9861  virtual TestRole AssumeRole() = 0;
9862 
9863  // Waits for the death test to finish and returns its status.
9864  virtual int Wait() = 0;
9865 
9866  // Returns true if the death test passed; that is, the test process
9867  // exited during the test, its exit status matches a user-supplied
9868  // predicate, and its stderr output matches a user-supplied regular
9869  // expression.
9870  // The user-supplied predicate may be a macro expression rather
9871  // than a function pointer or functor, or else Wait and Passed could
9872  // be combined.
9873  virtual bool Passed(bool exit_status_ok) = 0;
9874 
9875  // Signals that the death test did not die as expected.
9876  virtual void Abort(AbortReason reason) = 0;
9877 
9878  // Returns a human-readable outcome message regarding the outcome of
9879  // the last death test.
9880  static const char* LastMessage();
9881 
9882  static void set_last_death_test_message(const std::string& message);
9883 
9884  private:
9885  // A string containing a description of the outcome of the last death test.
9886  static std::string last_death_test_message_;
9887 
9889 };
9890 
9892 
9893 // Factory interface for death tests. May be mocked out for testing.
9894 class DeathTestFactory {
9895  public:
9896  virtual ~DeathTestFactory() { }
9897  virtual bool Create(const char* statement,
9898  Matcher<const std::string&> matcher, const char* file,
9899  int line, DeathTest** test) = 0;
9900 };
9901 
9902 // A concrete DeathTestFactory implementation for normal use.
9903 class DefaultDeathTestFactory : public DeathTestFactory {
9904  public:
9905  bool Create(const char* statement, Matcher<const std::string&> matcher,
9906  const char* file, int line, DeathTest** test) override;
9907 };
9908 
9909 // Returns true if exit_status describes a process that was terminated
9910 // by a signal, or exited normally with a nonzero exit code.
9911 GTEST_API_ bool ExitedUnsuccessfully(int exit_status);
9912 
9913 // A string passed to EXPECT_DEATH (etc.) is caught by one of these overloads
9914 // and interpreted as a regex (rather than an Eq matcher) for legacy
9915 // compatibility.
9916 inline Matcher<const ::std::string&> MakeDeathTestMatcher(
9917  ::testing::internal::RE regex) {
9918  return ContainsRegex(regex.pattern());
9919 }
9920 inline Matcher<const ::std::string&> MakeDeathTestMatcher(const char* regex) {
9921  return ContainsRegex(regex);
9922 }
9923 inline Matcher<const ::std::string&> MakeDeathTestMatcher(
9924  const ::std::string& regex) {
9925  return ContainsRegex(regex);
9926 }
9927 #if GTEST_HAS_GLOBAL_STRING
9928 inline Matcher<const ::std::string&> MakeDeathTestMatcher(
9929  const ::string& regex) {
9930  return ContainsRegex(regex);
9931 }
9932 #endif
9933 
9934 // If a Matcher<const ::std::string&> is passed to EXPECT_DEATH (etc.), it's
9935 // used directly.
9936 inline Matcher<const ::std::string&> MakeDeathTestMatcher(
9937  Matcher<const ::std::string&> matcher) {
9938  return matcher;
9939 }
9940 
9941 // Traps C++ exceptions escaping statement and reports them as test
9942 // failures. Note that trapping SEH exceptions is not implemented here.
9943 # if GTEST_HAS_EXCEPTIONS
9944 # define GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, death_test) \
9945  try { \
9946  GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
9947  } catch (const ::std::exception& gtest_exception) { \
9948  fprintf(\
9949  stderr, \
9950  "\n%s: Caught std::exception-derived exception escaping the " \
9951  "death test statement. Exception message: %s\n", \
9952  ::testing::internal::FormatFileLocation(__FILE__, __LINE__).c_str(), \
9953  gtest_exception.what()); \
9954  fflush(stderr); \
9955  death_test->Abort(::testing::internal::DeathTest::TEST_THREW_EXCEPTION); \
9956  } catch (...) { \
9957  death_test->Abort(::testing::internal::DeathTest::TEST_THREW_EXCEPTION); \
9958  }
9959 
9960 # else
9961 # define GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, death_test) \
9962  GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement)
9963 
9964 # endif
9965 
9966 // This macro is for implementing ASSERT_DEATH*, EXPECT_DEATH*,
9967 // ASSERT_EXIT*, and EXPECT_EXIT*.
9968 #define GTEST_DEATH_TEST_(statement, predicate, regex_or_matcher, fail) \
9969  GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
9970  if (::testing::internal::AlwaysTrue()) { \
9971  ::testing::internal::DeathTest* gtest_dt; \
9972  if (!::testing::internal::DeathTest::Create( \
9973  #statement, \
9974  ::testing::internal::MakeDeathTestMatcher(regex_or_matcher), \
9975  __FILE__, __LINE__, &gtest_dt)) { \
9976  goto GTEST_CONCAT_TOKEN_(gtest_label_, __LINE__); \
9977  } \
9978  if (gtest_dt != nullptr) { \
9979  std::unique_ptr< ::testing::internal::DeathTest> gtest_dt_ptr(gtest_dt); \
9980  switch (gtest_dt->AssumeRole()) { \
9981  case ::testing::internal::DeathTest::OVERSEE_TEST: \
9982  if (!gtest_dt->Passed(predicate(gtest_dt->Wait()))) { \
9983  goto GTEST_CONCAT_TOKEN_(gtest_label_, __LINE__); \
9984  } \
9985  break; \
9986  case ::testing::internal::DeathTest::EXECUTE_TEST: { \
9987  ::testing::internal::DeathTest::ReturnSentinel gtest_sentinel( \
9988  gtest_dt); \
9989  GTEST_EXECUTE_DEATH_TEST_STATEMENT_(statement, gtest_dt); \
9990  gtest_dt->Abort(::testing::internal::DeathTest::TEST_DID_NOT_DIE); \
9991  break; \
9992  } \
9993  default: \
9994  break; \
9995  } \
9996  } \
9997  } else \
9998  GTEST_CONCAT_TOKEN_(gtest_label_, __LINE__) \
9999  : fail(::testing::internal::DeathTest::LastMessage())
10000 // The symbol "fail" here expands to something into which a message
10001 // can be streamed.
10002 
10003 // This macro is for implementing ASSERT/EXPECT_DEBUG_DEATH when compiled in
10004 // NDEBUG mode. In this case we need the statements to be executed and the macro
10005 // must accept a streamed message even though the message is never printed.
10006 // The regex object is not evaluated, but it is used to prevent "unused"
10007 // warnings and to avoid an expression that doesn't compile in debug mode.
10008 #define GTEST_EXECUTE_STATEMENT_(statement, regex_or_matcher) \
10009  GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
10010  if (::testing::internal::AlwaysTrue()) { \
10011  GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
10012  } else if (!::testing::internal::AlwaysTrue()) { \
10013  ::testing::internal::MakeDeathTestMatcher(regex_or_matcher); \
10014  } else \
10015  ::testing::Message()
10016 
10017 // A class representing the parsed contents of the
10018 // --gtest_internal_run_death_test flag, as it existed when
10019 // RUN_ALL_TESTS was called.
10020 class InternalRunDeathTestFlag {
10021  public:
10022  InternalRunDeathTestFlag(const std::string& a_file,
10023  int a_line,
10024  int an_index,
10025  int a_write_fd)
10026  : file_(a_file), line_(a_line), index_(an_index),
10027  write_fd_(a_write_fd) {}
10028 
10029  ~InternalRunDeathTestFlag() {
10030  if (write_fd_ >= 0)
10031  posix::Close(write_fd_);
10032  }
10033 
10034  const std::string& file() const { return file_; }
10035  int line() const { return line_; }
10036  int index() const { return index_; }
10037  int write_fd() const { return write_fd_; }
10038 
10039  private:
10040  std::string file_;
10041  int line_;
10042  int index_;
10043  int write_fd_;
10044 
10045  GTEST_DISALLOW_COPY_AND_ASSIGN_(InternalRunDeathTestFlag);
10046 };
10047 
10048 // Returns a newly created InternalRunDeathTestFlag object with fields
10049 // initialized from the GTEST_FLAG(internal_run_death_test) flag if
10050 // the flag is specified; otherwise returns NULL.
10051 InternalRunDeathTestFlag* ParseInternalRunDeathTestFlag();
10052 
10053 #endif // GTEST_HAS_DEATH_TEST
10054 
10055 } // namespace internal
10056 } // namespace testing
10057 
10058 #endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_
10059 
10060 namespace testing {
10061 
10062 // This flag controls the style of death tests. Valid values are "threadsafe",
10063 // meaning that the death test child process will re-execute the test binary
10064 // from the start, running only a single death test, or "fast",
10065 // meaning that the child process will execute the test logic immediately
10066 // after forking.
10067 GTEST_DECLARE_string_(death_test_style);
10068 
10069 #if GTEST_HAS_DEATH_TEST
10070 
10071 namespace internal {
10072 
10073 // Returns a Boolean value indicating whether the caller is currently
10074 // executing in the context of the death test child process. Tools such as
10075 // Valgrind heap checkers may need this to modify their behavior in death
10076 // tests. IMPORTANT: This is an internal utility. Using it may break the
10077 // implementation of death tests. User code MUST NOT use it.
10078 GTEST_API_ bool InDeathTestChild();
10079 
10080 } // namespace internal
10081 
10082 // The following macros are useful for writing death tests.
10083 
10084 // Here's what happens when an ASSERT_DEATH* or EXPECT_DEATH* is
10085 // executed:
10086 //
10087 // 1. It generates a warning if there is more than one active
10088 // thread. This is because it's safe to fork() or clone() only
10089 // when there is a single thread.
10090 //
10091 // 2. The parent process clone()s a sub-process and runs the death
10092 // test in it; the sub-process exits with code 0 at the end of the
10093 // death test, if it hasn't exited already.
10094 //
10095 // 3. The parent process waits for the sub-process to terminate.
10096 //
10097 // 4. The parent process checks the exit code and error message of
10098 // the sub-process.
10099 //
10100 // Examples:
10101 //
10102 // ASSERT_DEATH(server.SendMessage(56, "Hello"), "Invalid port number");
10103 // for (int i = 0; i < 5; i++) {
10104 // EXPECT_DEATH(server.ProcessRequest(i),
10105 // "Invalid request .* in ProcessRequest()")
10106 // << "Failed to die on request " << i;
10107 // }
10108 //
10109 // ASSERT_EXIT(server.ExitNow(), ::testing::ExitedWithCode(0), "Exiting");
10110 //
10111 // bool KilledBySIGHUP(int exit_code) {
10112 // return WIFSIGNALED(exit_code) && WTERMSIG(exit_code) == SIGHUP;
10113 // }
10114 //
10115 // ASSERT_EXIT(client.HangUpServer(), KilledBySIGHUP, "Hanging up!");
10116 //
10117 // On the regular expressions used in death tests:
10118 //
10119 // GOOGLETEST_CM0005 DO NOT DELETE
10120 // On POSIX-compliant systems (*nix), we use the <regex.h> library,
10121 // which uses the POSIX extended regex syntax.
10122 //
10123 // On other platforms (e.g. Windows or Mac), we only support a simple regex
10124 // syntax implemented as part of Google Test. This limited
10125 // implementation should be enough most of the time when writing
10126 // death tests; though it lacks many features you can find in PCRE
10127 // or POSIX extended regex syntax. For example, we don't support
10128 // union ("x|y"), grouping ("(xy)"), brackets ("[xy]"), and
10129 // repetition count ("x{5,7}"), among others.
10130 //
10131 // Below is the syntax that we do support. We chose it to be a
10132 // subset of both PCRE and POSIX extended regex, so it's easy to
10133 // learn wherever you come from. In the following: 'A' denotes a
10134 // literal character, period (.), or a single \\ escape sequence;
10135 // 'x' and 'y' denote regular expressions; 'm' and 'n' are for
10136 // natural numbers.
10137 //
10138 // c matches any literal character c
10139 // \\d matches any decimal digit
10140 // \\D matches any character that's not a decimal digit
10141 // \\f matches \f
10142 // \\n matches \n
10143 // \\r matches \r
10144 // \\s matches any ASCII whitespace, including \n
10145 // \\S matches any character that's not a whitespace
10146 // \\t matches \t
10147 // \\v matches \v
10148 // \\w matches any letter, _, or decimal digit
10149 // \\W matches any character that \\w doesn't match
10150 // \\c matches any literal character c, which must be a punctuation
10151 // . matches any single character except \n
10152 // A? matches 0 or 1 occurrences of A
10153 // A* matches 0 or many occurrences of A
10154 // A+ matches 1 or many occurrences of A
10155 // ^ matches the beginning of a string (not that of each line)
10156 // $ matches the end of a string (not that of each line)
10157 // xy matches x followed by y
10158 //
10159 // If you accidentally use PCRE or POSIX extended regex features
10160 // not implemented by us, you will get a run-time failure. In that
10161 // case, please try to rewrite your regular expression within the
10162 // above syntax.
10163 //
10164 // This implementation is *not* meant to be as highly tuned or robust
10165 // as a compiled regex library, but should perform well enough for a
10166 // death test, which already incurs significant overhead by launching
10167 // a child process.
10168 //
10169 // Known caveats:
10170 //
10171 // A "threadsafe" style death test obtains the path to the test
10172 // program from argv[0] and re-executes it in the sub-process. For
10173 // simplicity, the current implementation doesn't search the PATH
10174 // when launching the sub-process. This means that the user must
10175 // invoke the test program via a path that contains at least one
10176 // path separator (e.g. path/to/foo_test and
10177 // /absolute/path/to/bar_test are fine, but foo_test is not). This
10178 // is rarely a problem as people usually don't put the test binary
10179 // directory in PATH.
10180 //
10181 
10182 // Asserts that a given statement causes the program to exit, with an
10183 // integer exit status that satisfies predicate, and emitting error output
10184 // that matches regex.
10185 # define ASSERT_EXIT(statement, predicate, regex) \
10186  GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_FATAL_FAILURE_)
10187 
10188 // Like ASSERT_EXIT, but continues on to successive tests in the
10189 // test suite, if any:
10190 # define EXPECT_EXIT(statement, predicate, regex) \
10191  GTEST_DEATH_TEST_(statement, predicate, regex, GTEST_NONFATAL_FAILURE_)
10192 
10193 // Asserts that a given statement causes the program to exit, either by
10194 // explicitly exiting with a nonzero exit code or being killed by a
10195 // signal, and emitting error output that matches regex.
10196 # define ASSERT_DEATH(statement, regex) \
10197  ASSERT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
10198 
10199 // Like ASSERT_DEATH, but continues on to successive tests in the
10200 // test suite, if any:
10201 # define EXPECT_DEATH(statement, regex) \
10202  EXPECT_EXIT(statement, ::testing::internal::ExitedUnsuccessfully, regex)
10203 
10204 // Two predicate classes that can be used in {ASSERT,EXPECT}_EXIT*:
10205 
10206 // Tests that an exit code describes a normal exit with a given exit code.
10207 class GTEST_API_ ExitedWithCode {
10208  public:
10209  explicit ExitedWithCode(int exit_code);
10210  bool operator()(int exit_status) const;
10211  private:
10212  // No implementation - assignment is unsupported.
10213  void operator=(const ExitedWithCode& other);
10214 
10215  const int exit_code_;
10216 };
10217 
10218 # if !GTEST_OS_WINDOWS && !GTEST_OS_FUCHSIA
10219 // Tests that an exit code describes an exit due to termination by a
10220 // given signal.
10221 // GOOGLETEST_CM0006 DO NOT DELETE
10222 class GTEST_API_ KilledBySignal {
10223  public:
10224  explicit KilledBySignal(int signum);
10225  bool operator()(int exit_status) const;
10226  private:
10227  const int signum_;
10228 };
10229 # endif // !GTEST_OS_WINDOWS
10230 
10231 // EXPECT_DEBUG_DEATH asserts that the given statements die in debug mode.
10232 // The death testing framework causes this to have interesting semantics,
10233 // since the sideeffects of the call are only visible in opt mode, and not
10234 // in debug mode.
10235 //
10236 // In practice, this can be used to test functions that utilize the
10237 // LOG(DFATAL) macro using the following style:
10238 //
10239 // int DieInDebugOr12(int* sideeffect) {
10240 // if (sideeffect) {
10241 // *sideeffect = 12;
10242 // }
10243 // LOG(DFATAL) << "death";
10244 // return 12;
10245 // }
10246 //
10247 // TEST(TestSuite, TestDieOr12WorksInDgbAndOpt) {
10248 // int sideeffect = 0;
10249 // // Only asserts in dbg.
10250 // EXPECT_DEBUG_DEATH(DieInDebugOr12(&sideeffect), "death");
10251 //
10252 // #ifdef NDEBUG
10253 // // opt-mode has sideeffect visible.
10254 // EXPECT_EQ(12, sideeffect);
10255 // #else
10256 // // dbg-mode no visible sideeffect.
10257 // EXPECT_EQ(0, sideeffect);
10258 // #endif
10259 // }
10260 //
10261 // This will assert that DieInDebugReturn12InOpt() crashes in debug
10262 // mode, usually due to a DCHECK or LOG(DFATAL), but returns the
10263 // appropriate fallback value (12 in this case) in opt mode. If you
10264 // need to test that a function has appropriate side-effects in opt
10265 // mode, include assertions against the side-effects. A general
10266 // pattern for this is:
10267 //
10268 // EXPECT_DEBUG_DEATH({
10269 // // Side-effects here will have an effect after this statement in
10270 // // opt mode, but none in debug mode.
10271 // EXPECT_EQ(12, DieInDebugOr12(&sideeffect));
10272 // }, "death");
10273 //
10274 # ifdef NDEBUG
10275 
10276 # define EXPECT_DEBUG_DEATH(statement, regex) \
10277  GTEST_EXECUTE_STATEMENT_(statement, regex)
10278 
10279 # define ASSERT_DEBUG_DEATH(statement, regex) \
10280  GTEST_EXECUTE_STATEMENT_(statement, regex)
10281 
10282 # else
10283 
10284 # define EXPECT_DEBUG_DEATH(statement, regex) \
10285  EXPECT_DEATH(statement, regex)
10286 
10287 # define ASSERT_DEBUG_DEATH(statement, regex) \
10288  ASSERT_DEATH(statement, regex)
10289 
10290 # endif // NDEBUG for EXPECT_DEBUG_DEATH
10291 #endif // GTEST_HAS_DEATH_TEST
10292 
10293 // This macro is used for implementing macros such as
10294 // EXPECT_DEATH_IF_SUPPORTED and ASSERT_DEATH_IF_SUPPORTED on systems where
10295 // death tests are not supported. Those macros must compile on such systems
10296 // iff EXPECT_DEATH and ASSERT_DEATH compile with the same parameters on
10297 // systems that support death tests. This allows one to write such a macro
10298 // on a system that does not support death tests and be sure that it will
10299 // compile on a death-test supporting system. It is exposed publicly so that
10300 // systems that have death-tests with stricter requirements than
10301 // GTEST_HAS_DEATH_TEST can write their own equivalent of
10302 // EXPECT_DEATH_IF_SUPPORTED and ASSERT_DEATH_IF_SUPPORTED.
10303 //
10304 // Parameters:
10305 // statement - A statement that a macro such as EXPECT_DEATH would test
10306 // for program termination. This macro has to make sure this
10307 // statement is compiled but not executed, to ensure that
10308 // EXPECT_DEATH_IF_SUPPORTED compiles with a certain
10309 // parameter iff EXPECT_DEATH compiles with it.
10310 // regex - A regex that a macro such as EXPECT_DEATH would use to test
10311 // the output of statement. This parameter has to be
10312 // compiled but not evaluated by this macro, to ensure that
10313 // this macro only accepts expressions that a macro such as
10314 // EXPECT_DEATH would accept.
10315 // terminator - Must be an empty statement for EXPECT_DEATH_IF_SUPPORTED
10316 // and a return statement for ASSERT_DEATH_IF_SUPPORTED.
10317 // This ensures that ASSERT_DEATH_IF_SUPPORTED will not
10318 // compile inside functions where ASSERT_DEATH doesn't
10319 // compile.
10320 //
10321 // The branch that has an always false condition is used to ensure that
10322 // statement and regex are compiled (and thus syntactically correct) but
10323 // never executed. The unreachable code macro protects the terminator
10324 // statement from generating an 'unreachable code' warning in case
10325 // statement unconditionally returns or throws. The Message constructor at
10326 // the end allows the syntax of streaming additional messages into the
10327 // macro, for compilational compatibility with EXPECT_DEATH/ASSERT_DEATH.
10328 # define GTEST_UNSUPPORTED_DEATH_TEST(statement, regex, terminator) \
10329  GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
10330  if (::testing::internal::AlwaysTrue()) { \
10331  GTEST_LOG_(WARNING) \
10332  << "Death tests are not supported on this platform.\n" \
10333  << "Statement '" #statement "' cannot be verified."; \
10334  } else if (::testing::internal::AlwaysFalse()) { \
10335  ::testing::internal::RE::PartialMatch(".*", (regex)); \
10336  GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_(statement); \
10337  terminator; \
10338  } else \
10339  ::testing::Message()
10340 
10341 // EXPECT_DEATH_IF_SUPPORTED(statement, regex) and
10342 // ASSERT_DEATH_IF_SUPPORTED(statement, regex) expand to real death tests if
10343 // death tests are supported; otherwise they just issue a warning. This is
10344 // useful when you are combining death test assertions with normal test
10345 // assertions in one test.
10346 #if GTEST_HAS_DEATH_TEST
10347 # define EXPECT_DEATH_IF_SUPPORTED(statement, regex) \
10348  EXPECT_DEATH(statement, regex)
10349 # define ASSERT_DEATH_IF_SUPPORTED(statement, regex) \
10350  ASSERT_DEATH(statement, regex)
10351 #else
10352 # define EXPECT_DEATH_IF_SUPPORTED(statement, regex) \
10353  GTEST_UNSUPPORTED_DEATH_TEST(statement, regex, )
10354 # define ASSERT_DEATH_IF_SUPPORTED(statement, regex) \
10355  GTEST_UNSUPPORTED_DEATH_TEST(statement, regex, return)
10356 #endif
10357 
10358 } // namespace testing
10359 
10360 #endif // GTEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_
10361 // This file was GENERATED by command:
10362 // pump.py gtest-param-test.h.pump
10363 // DO NOT EDIT BY HAND!!!
10364 
10365 // Copyright 2008, Google Inc.
10366 // All rights reserved.
10367 //
10368 // Redistribution and use in source and binary forms, with or without
10369 // modification, are permitted provided that the following conditions are
10370 // met:
10371 //
10372 // * Redistributions of source code must retain the above copyright
10373 // notice, this list of conditions and the following disclaimer.
10374 // * Redistributions in binary form must reproduce the above
10375 // copyright notice, this list of conditions and the following disclaimer
10376 // in the documentation and/or other materials provided with the
10377 // distribution.
10378 // * Neither the name of Google Inc. nor the names of its
10379 // contributors may be used to endorse or promote products derived from
10380 // this software without specific prior written permission.
10381 //
10382 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
10383 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
10384 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
10385 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
10386 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
10387 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
10388 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
10389 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
10390 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
10391 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
10392 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
10393 //
10394 // Macros and functions for implementing parameterized tests
10395 // in Google C++ Testing and Mocking Framework (Google Test)
10396 //
10397 // This file is generated by a SCRIPT. DO NOT EDIT BY HAND!
10398 //
10399 // GOOGLETEST_CM0001 DO NOT DELETE
10400 #ifndef GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
10401 #define GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
10402 
10403 
10404 // Value-parameterized tests allow you to test your code with different
10405 // parameters without writing multiple copies of the same test.
10406 //
10407 // Here is how you use value-parameterized tests:
10408 
10409 #if 0
10410 
10411 // To write value-parameterized tests, first you should define a fixture
10412 // class. It is usually derived from testing::TestWithParam<T> (see below for
10413 // another inheritance scheme that's sometimes useful in more complicated
10414 // class hierarchies), where the type of your parameter values.
10415 // TestWithParam<T> is itself derived from testing::Test. T can be any
10416 // copyable type. If it's a raw pointer, you are responsible for managing the
10417 // lifespan of the pointed values.
10418 
10419 class FooTest : public ::testing::TestWithParam<const char*> {
10420  // You can implement all the usual class fixture members here.
10421 };
10422 
10423 // Then, use the TEST_P macro to define as many parameterized tests
10424 // for this fixture as you want. The _P suffix is for "parameterized"
10425 // or "pattern", whichever you prefer to think.
10426 
10427 TEST_P(FooTest, DoesBlah) {
10428  // Inside a test, access the test parameter with the GetParam() method
10429  // of the TestWithParam<T> class:
10430  EXPECT_TRUE(foo.Blah(GetParam()));
10431  ...
10432 }
10433 
10434 TEST_P(FooTest, HasBlahBlah) {
10435  ...
10436 }
10437 
10438 // Finally, you can use INSTANTIATE_TEST_SUITE_P to instantiate the test
10439 // case with any set of parameters you want. Google Test defines a number
10440 // of functions for generating test parameters. They return what we call
10441 // (surprise!) parameter generators. Here is a summary of them, which
10442 // are all in the testing namespace:
10443 //
10444 //
10445 // Range(begin, end [, step]) - Yields values {begin, begin+step,
10446 // begin+step+step, ...}. The values do not
10447 // include end. step defaults to 1.
10448 // Values(v1, v2, ..., vN) - Yields values {v1, v2, ..., vN}.
10449 // ValuesIn(container) - Yields values from a C-style array, an STL
10450 // ValuesIn(begin,end) container, or an iterator range [begin, end).
10451 // Bool() - Yields sequence {false, true}.
10452 // Combine(g1, g2, ..., gN) - Yields all combinations (the Cartesian product
10453 // for the math savvy) of the values generated
10454 // by the N generators.
10455 //
10456 // For more details, see comments at the definitions of these functions below
10457 // in this file.
10458 //
10459 // The following statement will instantiate tests from the FooTest test suite
10460 // each with parameter values "meeny", "miny", and "moe".
10461 
10462 INSTANTIATE_TEST_SUITE_P(InstantiationName,
10463  FooTest,
10464  Values("meeny", "miny", "moe"));
10465 
10466 // To distinguish different instances of the pattern, (yes, you
10467 // can instantiate it more then once) the first argument to the
10468 // INSTANTIATE_TEST_SUITE_P macro is a prefix that will be added to the
10469 // actual test suite name. Remember to pick unique prefixes for different
10470 // instantiations. The tests from the instantiation above will have
10471 // these names:
10472 //
10473 // * InstantiationName/FooTest.DoesBlah/0 for "meeny"
10474 // * InstantiationName/FooTest.DoesBlah/1 for "miny"
10475 // * InstantiationName/FooTest.DoesBlah/2 for "moe"
10476 // * InstantiationName/FooTest.HasBlahBlah/0 for "meeny"
10477 // * InstantiationName/FooTest.HasBlahBlah/1 for "miny"
10478 // * InstantiationName/FooTest.HasBlahBlah/2 for "moe"
10479 //
10480 // You can use these names in --gtest_filter.
10481 //
10482 // This statement will instantiate all tests from FooTest again, each
10483 // with parameter values "cat" and "dog":
10484 
10485 const char* pets[] = {"cat", "dog"};
10486 INSTANTIATE_TEST_SUITE_P(AnotherInstantiationName, FooTest, ValuesIn(pets));
10487 
10488 // The tests from the instantiation above will have these names:
10489 //
10490 // * AnotherInstantiationName/FooTest.DoesBlah/0 for "cat"
10491 // * AnotherInstantiationName/FooTest.DoesBlah/1 for "dog"
10492 // * AnotherInstantiationName/FooTest.HasBlahBlah/0 for "cat"
10493 // * AnotherInstantiationName/FooTest.HasBlahBlah/1 for "dog"
10494 //
10495 // Please note that INSTANTIATE_TEST_SUITE_P will instantiate all tests
10496 // in the given test suite, whether their definitions come before or
10497 // AFTER the INSTANTIATE_TEST_SUITE_P statement.
10498 //
10499 // Please also note that generator expressions (including parameters to the
10500 // generators) are evaluated in InitGoogleTest(), after main() has started.
10501 // This allows the user on one hand, to adjust generator parameters in order
10502 // to dynamically determine a set of tests to run and on the other hand,
10503 // give the user a chance to inspect the generated tests with Google Test
10504 // reflection API before RUN_ALL_TESTS() is executed.
10505 //
10506 // You can see samples/sample7_unittest.cc and samples/sample8_unittest.cc
10507 // for more examples.
10508 //
10509 // In the future, we plan to publish the API for defining new parameter
10510 // generators. But for now this interface remains part of the internal
10511 // implementation and is subject to change.
10512 //
10513 //
10514 // A parameterized test fixture must be derived from testing::Test and from
10515 // testing::WithParamInterface<T>, where T is the type of the parameter
10516 // values. Inheriting from TestWithParam<T> satisfies that requirement because
10517 // TestWithParam<T> inherits from both Test and WithParamInterface. In more
10518 // complicated hierarchies, however, it is occasionally useful to inherit
10519 // separately from Test and WithParamInterface. For example:
10520 
10521 class BaseTest : public ::testing::Test {
10522  // You can inherit all the usual members for a non-parameterized test
10523  // fixture here.
10524 };
10525 
10526 class DerivedTest : public BaseTest, public ::testing::WithParamInterface<int> {
10527  // The usual test fixture members go here too.
10528 };
10529 
10530 TEST_F(BaseTest, HasFoo) {
10531  // This is an ordinary non-parameterized test.
10532 }
10533 
10534 TEST_P(DerivedTest, DoesBlah) {
10535  // GetParam works just the same here as if you inherit from TestWithParam.
10536  EXPECT_TRUE(foo.Blah(GetParam()));
10537 }
10538 
10539 #endif // 0
10540 
10541 #include <utility>
10542 
10543 // Copyright 2008 Google Inc.
10544 // All Rights Reserved.
10545 //
10546 // Redistribution and use in source and binary forms, with or without
10547 // modification, are permitted provided that the following conditions are
10548 // met:
10549 //
10550 // * Redistributions of source code must retain the above copyright
10551 // notice, this list of conditions and the following disclaimer.
10552 // * Redistributions in binary form must reproduce the above
10553 // copyright notice, this list of conditions and the following disclaimer
10554 // in the documentation and/or other materials provided with the
10555 // distribution.
10556 // * Neither the name of Google Inc. nor the names of its
10557 // contributors may be used to endorse or promote products derived from
10558 // this software without specific prior written permission.
10559 //
10560 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
10561 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
10562 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
10563 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
10564 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
10565 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
10566 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
10567 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
10568 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
10569 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
10570 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
10571 
10572 
10573 // Type and function utilities for implementing parameterized tests.
10574 
10575 // GOOGLETEST_CM0001 DO NOT DELETE
10576 
10577 #ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_
10578 #define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_
10579 
10580 #include <ctype.h>
10581 
10582 #include <iterator>
10583 #include <memory>
10584 #include <set>
10585 #include <tuple>
10586 #include <utility>
10587 #include <vector>
10588 
10589 
10590 namespace testing {
10591 // Input to a parameterized test name generator, describing a test parameter.
10592 // Consists of the parameter value and the integer parameter index.
10593 template <class ParamType>
10595  TestParamInfo(const ParamType& a_param, size_t an_index) :
10596  param(a_param),
10597  index(an_index) {}
10598  ParamType param;
10599  size_t index;
10600 };
10601 
10602 // A builtin parameterized test name generator which returns the result of
10603 // testing::PrintToString.
10605  template <class ParamType>
10607  return PrintToString(info.param);
10608  }
10609 };
10610 
10611 namespace internal {
10612 
10613 // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
10614 // Utility Functions
10615 
10616 // Outputs a message explaining invalid registration of different
10617 // fixture class for the same test suite. This may happen when
10618 // TEST_P macro is used to define two tests with the same name
10619 // but in different namespaces.
10620 GTEST_API_ void ReportInvalidTestSuiteType(const char* test_suite_name,
10621  CodeLocation code_location);
10622 
10623 template <typename> class ParamGeneratorInterface;
10624 template <typename> class ParamGenerator;
10625 
10626 // Interface for iterating over elements provided by an implementation
10627 // of ParamGeneratorInterface<T>.
10628 template <typename T>
10630  public:
10632  // A pointer to the base generator instance.
10633  // Used only for the purposes of iterator comparison
10634  // to make sure that two iterators belong to the same generator.
10635  virtual const ParamGeneratorInterface<T>* BaseGenerator() const = 0;
10636  // Advances iterator to point to the next element
10637  // provided by the generator. The caller is responsible
10638  // for not calling Advance() on an iterator equal to
10639  // BaseGenerator()->End().
10640  virtual void Advance() = 0;
10641  // Clones the iterator object. Used for implementing copy semantics
10642  // of ParamIterator<T>.
10643  virtual ParamIteratorInterface* Clone() const = 0;
10644  // Dereferences the current iterator and provides (read-only) access
10645  // to the pointed value. It is the caller's responsibility not to call
10646  // Current() on an iterator equal to BaseGenerator()->End().
10647  // Used for implementing ParamGenerator<T>::operator*().
10648  virtual const T* Current() const = 0;
10649  // Determines whether the given iterator and other point to the same
10650  // element in the sequence generated by the generator.
10651  // Used for implementing ParamGenerator<T>::operator==().
10652  virtual bool Equals(const ParamIteratorInterface& other) const = 0;
10653 };
10654 
10655 // Class iterating over elements provided by an implementation of
10656 // ParamGeneratorInterface<T>. It wraps ParamIteratorInterface<T>
10657 // and implements the const forward iterator concept.
10658 template <typename T>
10660  public:
10661  typedef T value_type;
10662  typedef const T& reference;
10664 
10665  // ParamIterator assumes ownership of the impl_ pointer.
10666  ParamIterator(const ParamIterator& other) : impl_(other.impl_->Clone()) {}
10668  if (this != &other)
10669  impl_.reset(other.impl_->Clone());
10670  return *this;
10671  }
10672 
10673  const T& operator*() const { return *impl_->Current(); }
10674  const T* operator->() const { return impl_->Current(); }
10675  // Prefix version of operator++.
10677  impl_->Advance();
10678  return *this;
10679  }
10680  // Postfix version of operator++.
10681  ParamIterator operator++(int /*unused*/) {
10682  ParamIteratorInterface<T>* clone = impl_->Clone();
10683  impl_->Advance();
10684  return ParamIterator(clone);
10685  }
10686  bool operator==(const ParamIterator& other) const {
10687  return impl_.get() == other.impl_.get() || impl_->Equals(*other.impl_);
10688  }
10689  bool operator!=(const ParamIterator& other) const {
10690  return !(*this == other);
10691  }
10692 
10693  private:
10694  friend class ParamGenerator<T>;
10695  explicit ParamIterator(ParamIteratorInterface<T>* impl) : impl_(impl) {}
10696  std::unique_ptr<ParamIteratorInterface<T> > impl_;
10697 };
10698 
10699 // ParamGeneratorInterface<T> is the binary interface to access generators
10700 // defined in other translation units.
10701 template <typename T>
10702 class ParamGeneratorInterface {
10703  public:
10704  typedef T ParamType;
10705 
10707 
10708  // Generator interface definition
10709  virtual ParamIteratorInterface<T>* Begin() const = 0;
10710  virtual ParamIteratorInterface<T>* End() const = 0;
10711 };
10712 
10713 // Wraps ParamGeneratorInterface<T> and provides general generator syntax
10714 // compatible with the STL Container concept.
10715 // This class implements copy initialization semantics and the contained
10716 // ParamGeneratorInterface<T> instance is shared among all copies
10717 // of the original object. This is possible because that instance is immutable.
10718 template<typename T>
10719 class ParamGenerator {
10720  public:
10722 
10723  explicit ParamGenerator(ParamGeneratorInterface<T>* impl) : impl_(impl) {}
10724  ParamGenerator(const ParamGenerator& other) : impl_(other.impl_) {}
10725 
10727  impl_ = other.impl_;
10728  return *this;
10729  }
10730 
10731  iterator begin() const { return iterator(impl_->Begin()); }
10732  iterator end() const { return iterator(impl_->End()); }
10733 
10734  private:
10735  std::shared_ptr<const ParamGeneratorInterface<T> > impl_;
10736 };
10737 
10738 // Generates values from a range of two comparable values. Can be used to
10739 // generate sequences of user-defined types that implement operator+() and
10740 // operator<().
10741 // This class is used in the Range() function.
10742 template <typename T, typename IncrementT>
10744  public:
10745  RangeGenerator(T begin, T end, IncrementT step)
10746  : begin_(begin), end_(end),
10747  step_(step), end_index_(CalculateEndIndex(begin, end, step)) {}
10748  ~RangeGenerator() override {}
10749 
10750  ParamIteratorInterface<T>* Begin() const override {
10751  return new Iterator(this, begin_, 0, step_);
10752  }
10753  ParamIteratorInterface<T>* End() const override {
10754  return new Iterator(this, end_, end_index_, step_);
10755  }
10756 
10757  private:
10758  class Iterator : public ParamIteratorInterface<T> {
10759  public:
10760  Iterator(const ParamGeneratorInterface<T>* base, T value, int index,
10761  IncrementT step)
10762  : base_(base), value_(value), index_(index), step_(step) {}
10763  ~Iterator() override {}
10764 
10765  const ParamGeneratorInterface<T>* BaseGenerator() const override {
10766  return base_;
10767  }
10768  void Advance() override {
10769  value_ = static_cast<T>(value_ + step_);
10770  index_++;
10771  }
10772  ParamIteratorInterface<T>* Clone() const override {
10773  return new Iterator(*this);
10774  }
10775  const T* Current() const override { return &value_; }
10776  bool Equals(const ParamIteratorInterface<T>& other) const override {
10777  // Having the same base generator guarantees that the other
10778  // iterator is of the same type and we can downcast.
10779  GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
10780  << "The program attempted to compare iterators "
10781  << "from different generators." << std::endl;
10782  const int other_index =
10783  CheckedDowncastToActualType<const Iterator>(&other)->index_;
10784  return index_ == other_index;
10785  }
10786 
10787  private:
10788  Iterator(const Iterator& other)
10789  : ParamIteratorInterface<T>(),
10790  base_(other.base_), value_(other.value_), index_(other.index_),
10791  step_(other.step_) {}
10792 
10793  // No implementation - assignment is unsupported.
10794  void operator=(const Iterator& other);
10795 
10796  const ParamGeneratorInterface<T>* const base_;
10797  T value_;
10798  int index_;
10799  const IncrementT step_;
10800  }; // class RangeGenerator::Iterator
10801 
10802  static int CalculateEndIndex(const T& begin,
10803  const T& end,
10804  const IncrementT& step) {
10805  int end_index = 0;
10806  for (T i = begin; i < end; i = static_cast<T>(i + step))
10807  end_index++;
10808  return end_index;
10809  }
10810 
10811  // No implementation - assignment is unsupported.
10812  void operator=(const RangeGenerator& other);
10813 
10814  const T begin_;
10815  const T end_;
10816  const IncrementT step_;
10817  // The index for the end() iterator. All the elements in the generated
10818  // sequence are indexed (0-based) to aid iterator comparison.
10819  const int end_index_;
10820 }; // class RangeGenerator
10821 
10822 
10823 // Generates values from a pair of STL-style iterators. Used in the
10824 // ValuesIn() function. The elements are copied from the source range
10825 // since the source can be located on the stack, and the generator
10826 // is likely to persist beyond that stack frame.
10827 template <typename T>
10829  public:
10830  template <typename ForwardIterator>
10831  ValuesInIteratorRangeGenerator(ForwardIterator begin, ForwardIterator end)
10832  : container_(begin, end) {}
10834 
10835  ParamIteratorInterface<T>* Begin() const override {
10836  return new Iterator(this, container_.begin());
10837  }
10838  ParamIteratorInterface<T>* End() const override {
10839  return new Iterator(this, container_.end());
10840  }
10841 
10842  private:
10843  typedef typename ::std::vector<T> ContainerType;
10844 
10845  class Iterator : public ParamIteratorInterface<T> {
10846  public:
10847  Iterator(const ParamGeneratorInterface<T>* base,
10848  typename ContainerType::const_iterator iterator)
10849  : base_(base), iterator_(iterator) {}
10850  ~Iterator() override {}
10851 
10852  const ParamGeneratorInterface<T>* BaseGenerator() const override {
10853  return base_;
10854  }
10855  void Advance() override {
10856  ++iterator_;
10857  value_.reset();
10858  }
10859  ParamIteratorInterface<T>* Clone() const override {
10860  return new Iterator(*this);
10861  }
10862  // We need to use cached value referenced by iterator_ because *iterator_
10863  // can return a temporary object (and of type other then T), so just
10864  // having "return &*iterator_;" doesn't work.
10865  // value_ is updated here and not in Advance() because Advance()
10866  // can advance iterator_ beyond the end of the range, and we cannot
10867  // detect that fact. The client code, on the other hand, is
10868  // responsible for not calling Current() on an out-of-range iterator.
10869  const T* Current() const override {
10870  if (value_.get() == nullptr) value_.reset(new T(*iterator_));
10871  return value_.get();
10872  }
10873  bool Equals(const ParamIteratorInterface<T>& other) const override {
10874  // Having the same base generator guarantees that the other
10875  // iterator is of the same type and we can downcast.
10876  GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
10877  << "The program attempted to compare iterators "
10878  << "from different generators." << std::endl;
10879  return iterator_ ==
10880  CheckedDowncastToActualType<const Iterator>(&other)->iterator_;
10881  }
10882 
10883  private:
10884  Iterator(const Iterator& other)
10885  // The explicit constructor call suppresses a false warning
10886  // emitted by gcc when supplied with the -Wextra option.
10887  : ParamIteratorInterface<T>(),
10888  base_(other.base_),
10889  iterator_(other.iterator_) {}
10890 
10891  const ParamGeneratorInterface<T>* const base_;
10892  typename ContainerType::const_iterator iterator_;
10893  // A cached value of *iterator_. We keep it here to allow access by
10894  // pointer in the wrapping iterator's operator->().
10895  // value_ needs to be mutable to be accessed in Current().
10896  // Use of std::unique_ptr helps manage cached value's lifetime,
10897  // which is bound by the lifespan of the iterator itself.
10898  mutable std::unique_ptr<const T> value_;
10899  }; // class ValuesInIteratorRangeGenerator::Iterator
10900 
10901  // No implementation - assignment is unsupported.
10902  void operator=(const ValuesInIteratorRangeGenerator& other);
10903 
10904  const ContainerType container_;
10905 }; // class ValuesInIteratorRangeGenerator
10906 
10907 // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
10908 //
10909 // Default parameterized test name generator, returns a string containing the
10910 // integer test parameter index.
10911 template <class ParamType>
10913  Message name_stream;
10914  name_stream << info.index;
10915  return name_stream.GetString();
10916 }
10917 
10918 // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
10919 //
10920 // Parameterized test name overload helpers, which help the
10921 // INSTANTIATE_TEST_SUITE_P macro choose between the default parameterized
10922 // test name generator and user param name generator.
10923 template <class ParamType, class ParamNameGenFunctor>
10924 ParamNameGenFunctor GetParamNameGen(ParamNameGenFunctor func) {
10925  return func;
10926 }
10927 
10928 template <class ParamType>
10931 };
10932 
10933 template <class ParamType>
10935  return &DefaultParamName;
10936 }
10937 
10938 // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
10939 //
10940 // Stores a parameter value and later creates tests parameterized with that
10941 // value.
10942 template <class TestClass>
10944  public:
10945  typedef typename TestClass::ParamType ParamType;
10946  explicit ParameterizedTestFactory(ParamType parameter) :
10947  parameter_(parameter) {}
10948  Test* CreateTest() override {
10949  TestClass::SetParam(&parameter_);
10950  return new TestClass();
10951  }
10952 
10953  private:
10954  const ParamType parameter_;
10955 
10956  GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestFactory);
10957 };
10958 
10959 // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
10960 //
10961 // TestMetaFactoryBase is a base class for meta-factories that create
10962 // test factories for passing into MakeAndRegisterTestInfo function.
10963 template <class ParamType>
10965  public:
10967 
10968  virtual TestFactoryBase* CreateTestFactory(ParamType parameter) = 0;
10969 };
10970 
10971 // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
10972 //
10973 // TestMetaFactory creates test factories for passing into
10974 // MakeAndRegisterTestInfo function. Since MakeAndRegisterTestInfo receives
10975 // ownership of test factory pointer, same factory object cannot be passed
10976 // into that method twice. But ParameterizedTestSuiteInfo is going to call
10977 // it for each Test/Parameter value combination. Thus it needs meta factory
10978 // creator class.
10979 template <class TestSuite>
10981  : public TestMetaFactoryBase<typename TestSuite::ParamType> {
10982  public:
10983  using ParamType = typename TestSuite::ParamType;
10984 
10986 
10988  return new ParameterizedTestFactory<TestSuite>(parameter);
10989  }
10990 
10991  private:
10992  GTEST_DISALLOW_COPY_AND_ASSIGN_(TestMetaFactory);
10993 };
10994 
10995 // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
10996 //
10997 // ParameterizedTestSuiteInfoBase is a generic interface
10998 // to ParameterizedTestSuiteInfo classes. ParameterizedTestSuiteInfoBase
10999 // accumulates test information provided by TEST_P macro invocations
11000 // and generators provided by INSTANTIATE_TEST_SUITE_P macro invocations
11001 // and uses that information to register all resulting test instances
11002 // in RegisterTests method. The ParameterizeTestSuiteRegistry class holds
11003 // a collection of pointers to the ParameterizedTestSuiteInfo objects
11004 // and calls RegisterTests() on each of them when asked.
11006  public:
11008 
11009  // Base part of test suite name for display purposes.
11010  virtual const std::string& GetTestSuiteName() const = 0;
11011  // Test case id to verify identity.
11012  virtual TypeId GetTestSuiteTypeId() const = 0;
11013  // UnitTest class invokes this method to register tests in this
11014  // test suite right before running them in RUN_ALL_TESTS macro.
11015  // This method should not be called more then once on any single
11016  // instance of a ParameterizedTestSuiteInfoBase derived class.
11017  virtual void RegisterTests() = 0;
11018 
11019  protected:
11021 
11022  private:
11023  GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestSuiteInfoBase);
11024 };
11025 
11026 // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
11027 //
11028 // ParameterizedTestSuiteInfo accumulates tests obtained from TEST_P
11029 // macro invocations for a particular test suite and generators
11030 // obtained from INSTANTIATE_TEST_SUITE_P macro invocations for that
11031 // test suite. It registers tests with all values generated by all
11032 // generators when asked.
11033 template <class TestSuite>
11035  public:
11036  // ParamType and GeneratorCreationFunc are private types but are required
11037  // for declarations of public methods AddTestPattern() and
11038  // AddTestSuiteInstantiation().
11039  using ParamType = typename TestSuite::ParamType;
11040  // A function that returns an instance of appropriate generator type.
11041  typedef ParamGenerator<ParamType>(GeneratorCreationFunc)();
11043 
11044  explicit ParameterizedTestSuiteInfo(const char* name,
11045  CodeLocation code_location)
11046  : test_suite_name_(name), code_location_(code_location) {}
11047 
11048  // Test case base name for display purposes.
11049  const std::string& GetTestSuiteName() const override {
11050  return test_suite_name_;
11051  }
11052  // Test case id to verify identity.
11053  TypeId GetTestSuiteTypeId() const override { return GetTypeId<TestSuite>(); }
11054  // TEST_P macro uses AddTestPattern() to record information
11055  // about a single test in a LocalTestInfo structure.
11056  // test_suite_name is the base name of the test suite (without invocation
11057  // prefix). test_base_name is the name of an individual test without
11058  // parameter index. For the test SequenceA/FooTest.DoBar/1 FooTest is
11059  // test suite base name and DoBar is test base name.
11060  void AddTestPattern(const char* test_suite_name, const char* test_base_name,
11061  TestMetaFactoryBase<ParamType>* meta_factory) {
11062  tests_.push_back(std::shared_ptr<TestInfo>(
11063  new TestInfo(test_suite_name, test_base_name, meta_factory)));
11064  }
11065  // INSTANTIATE_TEST_SUITE_P macro uses AddGenerator() to record information
11066  // about a generator.
11067  int AddTestSuiteInstantiation(const std::string& instantiation_name,
11068  GeneratorCreationFunc* func,
11069  ParamNameGeneratorFunc* name_func,
11070  const char* file, int line) {
11071  instantiations_.push_back(
11072  InstantiationInfo(instantiation_name, func, name_func, file, line));
11073  return 0; // Return value used only to run this method in namespace scope.
11074  }
11075  // UnitTest class invokes this method to register tests in this test suite
11076  // test suites right before running tests in RUN_ALL_TESTS macro.
11077  // This method should not be called more then once on any single
11078  // instance of a ParameterizedTestSuiteInfoBase derived class.
11079  // UnitTest has a guard to prevent from calling this method more then once.
11080  void RegisterTests() override {
11081  for (typename TestInfoContainer::iterator test_it = tests_.begin();
11082  test_it != tests_.end(); ++test_it) {
11083  std::shared_ptr<TestInfo> test_info = *test_it;
11084  for (typename InstantiationContainer::iterator gen_it =
11085  instantiations_.begin(); gen_it != instantiations_.end();
11086  ++gen_it) {
11087  const std::string& instantiation_name = gen_it->name;
11088  ParamGenerator<ParamType> generator((*gen_it->generator)());
11089  ParamNameGeneratorFunc* name_func = gen_it->name_func;
11090  const char* file = gen_it->file;
11091  int line = gen_it->line;
11092 
11093  std::string test_suite_name;
11094  if ( !instantiation_name.empty() )
11095  test_suite_name = instantiation_name + "/";
11096  test_suite_name += test_info->test_suite_base_name;
11097 
11098  size_t i = 0;
11099  std::set<std::string> test_param_names;
11100  for (typename ParamGenerator<ParamType>::iterator param_it =
11101  generator.begin();
11102  param_it != generator.end(); ++param_it, ++i) {
11103  Message test_name_stream;
11104 
11105  std::string param_name = name_func(
11106  TestParamInfo<ParamType>(*param_it, i));
11107 
11108  GTEST_CHECK_(IsValidParamName(param_name))
11109  << "Parameterized test name '" << param_name
11110  << "' is invalid, in " << file
11111  << " line " << line << std::endl;
11112 
11113  GTEST_CHECK_(test_param_names.count(param_name) == 0)
11114  << "Duplicate parameterized test name '" << param_name
11115  << "', in " << file << " line " << line << std::endl;
11116 
11117  test_param_names.insert(param_name);
11118 
11119  test_name_stream << test_info->test_base_name << "/" << param_name;
11121  test_suite_name.c_str(), test_name_stream.GetString().c_str(),
11122  nullptr, // No type parameter.
11123  PrintToString(*param_it).c_str(), code_location_,
11127  test_info->test_meta_factory->CreateTestFactory(*param_it));
11128  } // for param_it
11129  } // for gen_it
11130  } // for test_it
11131  } // RegisterTests
11132 
11133  private:
11134  // LocalTestInfo structure keeps information about a single test registered
11135  // with TEST_P macro.
11136  struct TestInfo {
11137  TestInfo(const char* a_test_suite_base_name, const char* a_test_base_name,
11138  TestMetaFactoryBase<ParamType>* a_test_meta_factory)
11139  : test_suite_base_name(a_test_suite_base_name),
11140  test_base_name(a_test_base_name),
11141  test_meta_factory(a_test_meta_factory) {}
11142 
11143  const std::string test_suite_base_name;
11144  const std::string test_base_name;
11145  const std::unique_ptr<TestMetaFactoryBase<ParamType> > test_meta_factory;
11146  };
11147  using TestInfoContainer = ::std::vector<std::shared_ptr<TestInfo> >;
11148  // Records data received from INSTANTIATE_TEST_SUITE_P macros:
11149  // <Instantiation name, Sequence generator creation function,
11150  // Name generator function, Source file, Source line>
11151  struct InstantiationInfo {
11152  InstantiationInfo(const std::string &name_in,
11153  GeneratorCreationFunc* generator_in,
11154  ParamNameGeneratorFunc* name_func_in,
11155  const char* file_in,
11156  int line_in)
11157  : name(name_in),
11158  generator(generator_in),
11159  name_func(name_func_in),
11160  file(file_in),
11161  line(line_in) {}
11162 
11163  std::string name;
11164  GeneratorCreationFunc* generator;
11165  ParamNameGeneratorFunc* name_func;
11166  const char* file;
11167  int line;
11168  };
11169  typedef ::std::vector<InstantiationInfo> InstantiationContainer;
11170 
11171  static bool IsValidParamName(const std::string& name) {
11172  // Check for empty string
11173  if (name.empty())
11174  return false;
11175 
11176  // Check for invalid characters
11177  for (std::string::size_type index = 0; index < name.size(); ++index) {
11178  if (!isalnum(name[index]) && name[index] != '_')
11179  return false;
11180  }
11181 
11182  return true;
11183  }
11184 
11185  const std::string test_suite_name_;
11186  CodeLocation code_location_;
11187  TestInfoContainer tests_;
11188  InstantiationContainer instantiations_;
11189 
11190  GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestSuiteInfo);
11191 }; // class ParameterizedTestSuiteInfo
11192 
11193 // Legacy API is deprecated but still available
11194 #ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
11195 template <class TestCase>
11197 #endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
11198 
11199 // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
11200 //
11201 // ParameterizedTestSuiteRegistry contains a map of
11202 // ParameterizedTestSuiteInfoBase classes accessed by test suite names. TEST_P
11203 // and INSTANTIATE_TEST_SUITE_P macros use it to locate their corresponding
11204 // ParameterizedTestSuiteInfo descriptors.
11206  public:
11209  for (auto& test_suite_info : test_suite_infos_) {
11210  delete test_suite_info;
11211  }
11212  }
11213 
11214  // Looks up or creates and returns a structure containing information about
11215  // tests and instantiations of a particular test suite.
11216  template <class TestSuite>
11218  const char* test_suite_name, CodeLocation code_location) {
11219  ParameterizedTestSuiteInfo<TestSuite>* typed_test_info = nullptr;
11220  for (auto& test_suite_info : test_suite_infos_) {
11221  if (test_suite_info->GetTestSuiteName() == test_suite_name) {
11222  if (test_suite_info->GetTestSuiteTypeId() != GetTypeId<TestSuite>()) {
11223  // Complain about incorrect usage of Google Test facilities
11224  // and terminate the program since we cannot guaranty correct
11225  // test suite setup and tear-down in this case.
11226  ReportInvalidTestSuiteType(test_suite_name, code_location);
11227  posix::Abort();
11228  } else {
11229  // At this point we are sure that the object we found is of the same
11230  // type we are looking for, so we downcast it to that type
11231  // without further checks.
11232  typed_test_info = CheckedDowncastToActualType<
11233  ParameterizedTestSuiteInfo<TestSuite> >(test_suite_info);
11234  }
11235  break;
11236  }
11237  }
11238  if (typed_test_info == nullptr) {
11239  typed_test_info = new ParameterizedTestSuiteInfo<TestSuite>(
11240  test_suite_name, code_location);
11241  test_suite_infos_.push_back(typed_test_info);
11242  }
11243  return typed_test_info;
11244  }
11245  void RegisterTests() {
11246  for (auto& test_suite_info : test_suite_infos_) {
11247  test_suite_info->RegisterTests();
11248  }
11249  }
11250 // Legacy API is deprecated but still available
11251 #ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
11252  template <class TestCase>
11254  const char* test_case_name, CodeLocation code_location) {
11255  return GetTestSuitePatternHolder<TestCase>(test_case_name, code_location);
11256  }
11257 
11258 #endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
11259 
11260  private:
11261  using TestSuiteInfoContainer = ::std::vector<ParameterizedTestSuiteInfoBase*>;
11262 
11263  TestSuiteInfoContainer test_suite_infos_;
11264 
11265  GTEST_DISALLOW_COPY_AND_ASSIGN_(ParameterizedTestSuiteRegistry);
11266 };
11267 
11268 } // namespace internal
11269 
11270 // Forward declarations of ValuesIn(), which is implemented in
11271 // include/gtest/gtest-param-test.h.
11272 template <class Container>
11273 internal::ParamGenerator<typename Container::value_type> ValuesIn(
11274  const Container& container);
11275 
11276 namespace internal {
11277 // Used in the Values() function to provide polymorphic capabilities.
11278 
11279 template <typename... Ts>
11280 class ValueArray {
11281  public:
11282  ValueArray(Ts... v) : v_{std::move(v)...} {}
11283 
11284  template <typename T>
11285  operator ParamGenerator<T>() const { // NOLINT
11286  return ValuesIn(MakeVector<T>(MakeIndexSequence<sizeof...(Ts)>()));
11287  }
11288 
11289  private:
11290  template <typename T, size_t... I>
11291  std::vector<T> MakeVector(IndexSequence<I...>) const {
11292  return std::vector<T>{static_cast<T>(v_.template Get<I>())...};
11293  }
11294 
11295  FlatTuple<Ts...> v_;
11296 };
11297 
11298 } // namespace internal
11299 } // namespace testing
11300 
11301 #endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_
11302 // This file was GENERATED by command:
11303 // pump.py gtest-param-util-generated.h.pump
11304 // DO NOT EDIT BY HAND!!!
11305 
11306 // Copyright 2008 Google Inc.
11307 // All Rights Reserved.
11308 //
11309 // Redistribution and use in source and binary forms, with or without
11310 // modification, are permitted provided that the following conditions are
11311 // met:
11312 //
11313 // * Redistributions of source code must retain the above copyright
11314 // notice, this list of conditions and the following disclaimer.
11315 // * Redistributions in binary form must reproduce the above
11316 // copyright notice, this list of conditions and the following disclaimer
11317 // in the documentation and/or other materials provided with the
11318 // distribution.
11319 // * Neither the name of Google Inc. nor the names of its
11320 // contributors may be used to endorse or promote products derived from
11321 // this software without specific prior written permission.
11322 //
11323 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
11324 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
11325 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
11326 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
11327 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
11328 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
11329 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
11330 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
11331 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
11332 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
11333 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
11334 
11335 
11336 // Type and function utilities for implementing parameterized tests.
11337 // This file is generated by a SCRIPT. DO NOT EDIT BY HAND!
11338 //
11339 // Currently Google Test supports at most 50 arguments in Values,
11340 // and at most 10 arguments in Combine. Please contact
11341 // googletestframework@googlegroups.com if you need more.
11342 // Please note that the number of arguments to Combine is limited
11343 // by the maximum arity of the implementation of tuple which is
11344 // currently set at 10.
11345 
11346 // GOOGLETEST_CM0001 DO NOT DELETE
11347 
11348 #include <assert.h>
11349 
11350 #include <memory>
11351 
11352 #ifndef GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_
11353 #define GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_
11354 
11355 
11356 namespace testing {
11357 
11358 namespace internal {
11359 // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
11360 //
11361 // Generates values from the Cartesian product of values produced
11362 // by the argument generators.
11363 //
11364 template <typename T1, typename T2>
11366  : public ParamGeneratorInterface< ::std::tuple<T1, T2> > {
11367  public:
11368  typedef ::std::tuple<T1, T2> ParamType;
11369 
11371  const ParamGenerator<T2>& g2)
11372  : g1_(g1), g2_(g2) {}
11374 
11376  return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin());
11377  }
11379  return new Iterator(this, g1_, g1_.end(), g2_, g2_.end());
11380  }
11381 
11382  private:
11383  class Iterator : public ParamIteratorInterface<ParamType> {
11384  public:
11385  Iterator(const ParamGeneratorInterface<ParamType>* base,
11386  const ParamGenerator<T1>& g1,
11387  const typename ParamGenerator<T1>::iterator& current1,
11388  const ParamGenerator<T2>& g2,
11389  const typename ParamGenerator<T2>::iterator& current2)
11390  : base_(base),
11391  begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
11392  begin2_(g2.begin()), end2_(g2.end()), current2_(current2) {
11393  ComputeCurrentValue();
11394  }
11395  ~Iterator() override {}
11396 
11397  const ParamGeneratorInterface<ParamType>* BaseGenerator() const override {
11398  return base_;
11399  }
11400  // Advance should not be called on beyond-of-range iterators
11401  // so no component iterators must be beyond end of range, either.
11402  void Advance() override {
11403  assert(!AtEnd());
11404  ++current2_;
11405  if (current2_ == end2_) {
11406  current2_ = begin2_;
11407  ++current1_;
11408  }
11409  ComputeCurrentValue();
11410  }
11411  ParamIteratorInterface<ParamType>* Clone() const override {
11412  return new Iterator(*this);
11413  }
11414  const ParamType* Current() const override { return current_value_.get(); }
11415  bool Equals(const ParamIteratorInterface<ParamType>& other) const override {
11416  // Having the same base generator guarantees that the other
11417  // iterator is of the same type and we can downcast.
11418  GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
11419  << "The program attempted to compare iterators "
11420  << "from different generators." << std::endl;
11421  const Iterator* typed_other =
11422  CheckedDowncastToActualType<const Iterator>(&other);
11423  // We must report iterators equal if they both point beyond their
11424  // respective ranges. That can happen in a variety of fashions,
11425  // so we have to consult AtEnd().
11426  return (AtEnd() && typed_other->AtEnd()) ||
11427  (
11428  current1_ == typed_other->current1_ &&
11429  current2_ == typed_other->current2_);
11430  }
11431 
11432  private:
11433  Iterator(const Iterator& other)
11434  : base_(other.base_),
11435  begin1_(other.begin1_),
11436  end1_(other.end1_),
11437  current1_(other.current1_),
11438  begin2_(other.begin2_),
11439  end2_(other.end2_),
11440  current2_(other.current2_) {
11441  ComputeCurrentValue();
11442  }
11443 
11444  void ComputeCurrentValue() {
11445  if (!AtEnd())
11446  current_value_.reset(new ParamType(*current1_, *current2_));
11447  }
11448  bool AtEnd() const {
11449  // We must report iterator past the end of the range when either of the
11450  // component iterators has reached the end of its range.
11451  return
11452  current1_ == end1_ ||
11453  current2_ == end2_;
11454  }
11455 
11456  // No implementation - assignment is unsupported.
11457  void operator=(const Iterator& other);
11458 
11459  const ParamGeneratorInterface<ParamType>* const base_;
11460  // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
11461  // current[i]_ is the actual traversing iterator.
11462  const typename ParamGenerator<T1>::iterator begin1_;
11463  const typename ParamGenerator<T1>::iterator end1_;
11464  typename ParamGenerator<T1>::iterator current1_;
11465  const typename ParamGenerator<T2>::iterator begin2_;
11466  const typename ParamGenerator<T2>::iterator end2_;
11467  typename ParamGenerator<T2>::iterator current2_;
11468  std::shared_ptr<ParamType> current_value_;
11469  }; // class CartesianProductGenerator2::Iterator
11470 
11471  // No implementation - assignment is unsupported.
11472  void operator=(const CartesianProductGenerator2& other);
11473 
11474  const ParamGenerator<T1> g1_;
11475  const ParamGenerator<T2> g2_;
11476 }; // class CartesianProductGenerator2
11477 
11478 
11479 template <typename T1, typename T2, typename T3>
11481  : public ParamGeneratorInterface< ::std::tuple<T1, T2, T3> > {
11482  public:
11483  typedef ::std::tuple<T1, T2, T3> ParamType;
11484 
11486  const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3)
11487  : g1_(g1), g2_(g2), g3_(g3) {}
11489 
11491  return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
11492  g3_.begin());
11493  }
11495  return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end());
11496  }
11497 
11498  private:
11499  class Iterator : public ParamIteratorInterface<ParamType> {
11500  public:
11501  Iterator(const ParamGeneratorInterface<ParamType>* base,
11502  const ParamGenerator<T1>& g1,
11503  const typename ParamGenerator<T1>::iterator& current1,
11504  const ParamGenerator<T2>& g2,
11505  const typename ParamGenerator<T2>::iterator& current2,
11506  const ParamGenerator<T3>& g3,
11507  const typename ParamGenerator<T3>::iterator& current3)
11508  : base_(base),
11509  begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
11510  begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
11511  begin3_(g3.begin()), end3_(g3.end()), current3_(current3) {
11512  ComputeCurrentValue();
11513  }
11514  ~Iterator() override {}
11515 
11516  const ParamGeneratorInterface<ParamType>* BaseGenerator() const override {
11517  return base_;
11518  }
11519  // Advance should not be called on beyond-of-range iterators
11520  // so no component iterators must be beyond end of range, either.
11521  void Advance() override {
11522  assert(!AtEnd());
11523  ++current3_;
11524  if (current3_ == end3_) {
11525  current3_ = begin3_;
11526  ++current2_;
11527  }
11528  if (current2_ == end2_) {
11529  current2_ = begin2_;
11530  ++current1_;
11531  }
11532  ComputeCurrentValue();
11533  }
11534  ParamIteratorInterface<ParamType>* Clone() const override {
11535  return new Iterator(*this);
11536  }
11537  const ParamType* Current() const override { return current_value_.get(); }
11538  bool Equals(const ParamIteratorInterface<ParamType>& other) const override {
11539  // Having the same base generator guarantees that the other
11540  // iterator is of the same type and we can downcast.
11541  GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
11542  << "The program attempted to compare iterators "
11543  << "from different generators." << std::endl;
11544  const Iterator* typed_other =
11545  CheckedDowncastToActualType<const Iterator>(&other);
11546  // We must report iterators equal if they both point beyond their
11547  // respective ranges. That can happen in a variety of fashions,
11548  // so we have to consult AtEnd().
11549  return (AtEnd() && typed_other->AtEnd()) ||
11550  (
11551  current1_ == typed_other->current1_ &&
11552  current2_ == typed_other->current2_ &&
11553  current3_ == typed_other->current3_);
11554  }
11555 
11556  private:
11557  Iterator(const Iterator& other)
11558  : base_(other.base_),
11559  begin1_(other.begin1_),
11560  end1_(other.end1_),
11561  current1_(other.current1_),
11562  begin2_(other.begin2_),
11563  end2_(other.end2_),
11564  current2_(other.current2_),
11565  begin3_(other.begin3_),
11566  end3_(other.end3_),
11567  current3_(other.current3_) {
11568  ComputeCurrentValue();
11569  }
11570 
11571  void ComputeCurrentValue() {
11572  if (!AtEnd())
11573  current_value_.reset(new ParamType(*current1_, *current2_, *current3_));
11574  }
11575  bool AtEnd() const {
11576  // We must report iterator past the end of the range when either of the
11577  // component iterators has reached the end of its range.
11578  return
11579  current1_ == end1_ ||
11580  current2_ == end2_ ||
11581  current3_ == end3_;
11582  }
11583 
11584  // No implementation - assignment is unsupported.
11585  void operator=(const Iterator& other);
11586 
11587  const ParamGeneratorInterface<ParamType>* const base_;
11588  // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
11589  // current[i]_ is the actual traversing iterator.
11590  const typename ParamGenerator<T1>::iterator begin1_;
11591  const typename ParamGenerator<T1>::iterator end1_;
11592  typename ParamGenerator<T1>::iterator current1_;
11593  const typename ParamGenerator<T2>::iterator begin2_;
11594  const typename ParamGenerator<T2>::iterator end2_;
11595  typename ParamGenerator<T2>::iterator current2_;
11596  const typename ParamGenerator<T3>::iterator begin3_;
11597  const typename ParamGenerator<T3>::iterator end3_;
11598  typename ParamGenerator<T3>::iterator current3_;
11599  std::shared_ptr<ParamType> current_value_;
11600  }; // class CartesianProductGenerator3::Iterator
11601 
11602  // No implementation - assignment is unsupported.
11603  void operator=(const CartesianProductGenerator3& other);
11604 
11605  const ParamGenerator<T1> g1_;
11606  const ParamGenerator<T2> g2_;
11607  const ParamGenerator<T3> g3_;
11608 }; // class CartesianProductGenerator3
11609 
11610 
11611 template <typename T1, typename T2, typename T3, typename T4>
11613  : public ParamGeneratorInterface< ::std::tuple<T1, T2, T3, T4> > {
11614  public:
11615  typedef ::std::tuple<T1, T2, T3, T4> ParamType;
11616 
11618  const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,
11619  const ParamGenerator<T4>& g4)
11620  : g1_(g1), g2_(g2), g3_(g3), g4_(g4) {}
11622 
11624  return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
11625  g3_.begin(), g4_, g4_.begin());
11626  }
11628  return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
11629  g4_, g4_.end());
11630  }
11631 
11632  private:
11633  class Iterator : public ParamIteratorInterface<ParamType> {
11634  public:
11635  Iterator(const ParamGeneratorInterface<ParamType>* base,
11636  const ParamGenerator<T1>& g1,
11637  const typename ParamGenerator<T1>::iterator& current1,
11638  const ParamGenerator<T2>& g2,
11639  const typename ParamGenerator<T2>::iterator& current2,
11640  const ParamGenerator<T3>& g3,
11641  const typename ParamGenerator<T3>::iterator& current3,
11642  const ParamGenerator<T4>& g4,
11643  const typename ParamGenerator<T4>::iterator& current4)
11644  : base_(base),
11645  begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
11646  begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
11647  begin3_(g3.begin()), end3_(g3.end()), current3_(current3),
11648  begin4_(g4.begin()), end4_(g4.end()), current4_(current4) {
11649  ComputeCurrentValue();
11650  }
11651  ~Iterator() override {}
11652 
11653  const ParamGeneratorInterface<ParamType>* BaseGenerator() const override {
11654  return base_;
11655  }
11656  // Advance should not be called on beyond-of-range iterators
11657  // so no component iterators must be beyond end of range, either.
11658  void Advance() override {
11659  assert(!AtEnd());
11660  ++current4_;
11661  if (current4_ == end4_) {
11662  current4_ = begin4_;
11663  ++current3_;
11664  }
11665  if (current3_ == end3_) {
11666  current3_ = begin3_;
11667  ++current2_;
11668  }
11669  if (current2_ == end2_) {
11670  current2_ = begin2_;
11671  ++current1_;
11672  }
11673  ComputeCurrentValue();
11674  }
11675  ParamIteratorInterface<ParamType>* Clone() const override {
11676  return new Iterator(*this);
11677  }
11678  const ParamType* Current() const override { return current_value_.get(); }
11679  bool Equals(const ParamIteratorInterface<ParamType>& other) const override {
11680  // Having the same base generator guarantees that the other
11681  // iterator is of the same type and we can downcast.
11682  GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
11683  << "The program attempted to compare iterators "
11684  << "from different generators." << std::endl;
11685  const Iterator* typed_other =
11686  CheckedDowncastToActualType<const Iterator>(&other);
11687  // We must report iterators equal if they both point beyond their
11688  // respective ranges. That can happen in a variety of fashions,
11689  // so we have to consult AtEnd().
11690  return (AtEnd() && typed_other->AtEnd()) ||
11691  (
11692  current1_ == typed_other->current1_ &&
11693  current2_ == typed_other->current2_ &&
11694  current3_ == typed_other->current3_ &&
11695  current4_ == typed_other->current4_);
11696  }
11697 
11698  private:
11699  Iterator(const Iterator& other)
11700  : base_(other.base_),
11701  begin1_(other.begin1_),
11702  end1_(other.end1_),
11703  current1_(other.current1_),
11704  begin2_(other.begin2_),
11705  end2_(other.end2_),
11706  current2_(other.current2_),
11707  begin3_(other.begin3_),
11708  end3_(other.end3_),
11709  current3_(other.current3_),
11710  begin4_(other.begin4_),
11711  end4_(other.end4_),
11712  current4_(other.current4_) {
11713  ComputeCurrentValue();
11714  }
11715 
11716  void ComputeCurrentValue() {
11717  if (!AtEnd())
11718  current_value_.reset(new ParamType(*current1_, *current2_, *current3_,
11719  *current4_));
11720  }
11721  bool AtEnd() const {
11722  // We must report iterator past the end of the range when either of the
11723  // component iterators has reached the end of its range.
11724  return
11725  current1_ == end1_ ||
11726  current2_ == end2_ ||
11727  current3_ == end3_ ||
11728  current4_ == end4_;
11729  }
11730 
11731  // No implementation - assignment is unsupported.
11732  void operator=(const Iterator& other);
11733 
11734  const ParamGeneratorInterface<ParamType>* const base_;
11735  // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
11736  // current[i]_ is the actual traversing iterator.
11737  const typename ParamGenerator<T1>::iterator begin1_;
11738  const typename ParamGenerator<T1>::iterator end1_;
11739  typename ParamGenerator<T1>::iterator current1_;
11740  const typename ParamGenerator<T2>::iterator begin2_;
11741  const typename ParamGenerator<T2>::iterator end2_;
11742  typename ParamGenerator<T2>::iterator current2_;
11743  const typename ParamGenerator<T3>::iterator begin3_;
11744  const typename ParamGenerator<T3>::iterator end3_;
11745  typename ParamGenerator<T3>::iterator current3_;
11746  const typename ParamGenerator<T4>::iterator begin4_;
11747  const typename ParamGenerator<T4>::iterator end4_;
11748  typename ParamGenerator<T4>::iterator current4_;
11749  std::shared_ptr<ParamType> current_value_;
11750  }; // class CartesianProductGenerator4::Iterator
11751 
11752  // No implementation - assignment is unsupported.
11753  void operator=(const CartesianProductGenerator4& other);
11754 
11755  const ParamGenerator<T1> g1_;
11756  const ParamGenerator<T2> g2_;
11757  const ParamGenerator<T3> g3_;
11758  const ParamGenerator<T4> g4_;
11759 }; // class CartesianProductGenerator4
11760 
11761 
11762 template <typename T1, typename T2, typename T3, typename T4, typename T5>
11764  : public ParamGeneratorInterface< ::std::tuple<T1, T2, T3, T4, T5> > {
11765  public:
11766  typedef ::std::tuple<T1, T2, T3, T4, T5> ParamType;
11767 
11769  const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,
11770  const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5)
11771  : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5) {}
11773 
11775  return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
11776  g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin());
11777  }
11779  return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
11780  g4_, g4_.end(), g5_, g5_.end());
11781  }
11782 
11783  private:
11784  class Iterator : public ParamIteratorInterface<ParamType> {
11785  public:
11786  Iterator(const ParamGeneratorInterface<ParamType>* base,
11787  const ParamGenerator<T1>& g1,
11788  const typename ParamGenerator<T1>::iterator& current1,
11789  const ParamGenerator<T2>& g2,
11790  const typename ParamGenerator<T2>::iterator& current2,
11791  const ParamGenerator<T3>& g3,
11792  const typename ParamGenerator<T3>::iterator& current3,
11793  const ParamGenerator<T4>& g4,
11794  const typename ParamGenerator<T4>::iterator& current4,
11795  const ParamGenerator<T5>& g5,
11796  const typename ParamGenerator<T5>::iterator& current5)
11797  : base_(base),
11798  begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
11799  begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
11800  begin3_(g3.begin()), end3_(g3.end()), current3_(current3),
11801  begin4_(g4.begin()), end4_(g4.end()), current4_(current4),
11802  begin5_(g5.begin()), end5_(g5.end()), current5_(current5) {
11803  ComputeCurrentValue();
11804  }
11805  ~Iterator() override {}
11806 
11807  const ParamGeneratorInterface<ParamType>* BaseGenerator() const override {
11808  return base_;
11809  }
11810  // Advance should not be called on beyond-of-range iterators
11811  // so no component iterators must be beyond end of range, either.
11812  void Advance() override {
11813  assert(!AtEnd());
11814  ++current5_;
11815  if (current5_ == end5_) {
11816  current5_ = begin5_;
11817  ++current4_;
11818  }
11819  if (current4_ == end4_) {
11820  current4_ = begin4_;
11821  ++current3_;
11822  }
11823  if (current3_ == end3_) {
11824  current3_ = begin3_;
11825  ++current2_;
11826  }
11827  if (current2_ == end2_) {
11828  current2_ = begin2_;
11829  ++current1_;
11830  }
11831  ComputeCurrentValue();
11832  }
11833  ParamIteratorInterface<ParamType>* Clone() const override {
11834  return new Iterator(*this);
11835  }
11836  const ParamType* Current() const override { return current_value_.get(); }
11837  bool Equals(const ParamIteratorInterface<ParamType>& other) const override {
11838  // Having the same base generator guarantees that the other
11839  // iterator is of the same type and we can downcast.
11840  GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
11841  << "The program attempted to compare iterators "
11842  << "from different generators." << std::endl;
11843  const Iterator* typed_other =
11844  CheckedDowncastToActualType<const Iterator>(&other);
11845  // We must report iterators equal if they both point beyond their
11846  // respective ranges. That can happen in a variety of fashions,
11847  // so we have to consult AtEnd().
11848  return (AtEnd() && typed_other->AtEnd()) ||
11849  (
11850  current1_ == typed_other->current1_ &&
11851  current2_ == typed_other->current2_ &&
11852  current3_ == typed_other->current3_ &&
11853  current4_ == typed_other->current4_ &&
11854  current5_ == typed_other->current5_);
11855  }
11856 
11857  private:
11858  Iterator(const Iterator& other)
11859  : base_(other.base_),
11860  begin1_(other.begin1_),
11861  end1_(other.end1_),
11862  current1_(other.current1_),
11863  begin2_(other.begin2_),
11864  end2_(other.end2_),
11865  current2_(other.current2_),
11866  begin3_(other.begin3_),
11867  end3_(other.end3_),
11868  current3_(other.current3_),
11869  begin4_(other.begin4_),
11870  end4_(other.end4_),
11871  current4_(other.current4_),
11872  begin5_(other.begin5_),
11873  end5_(other.end5_),
11874  current5_(other.current5_) {
11875  ComputeCurrentValue();
11876  }
11877 
11878  void ComputeCurrentValue() {
11879  if (!AtEnd())
11880  current_value_.reset(new ParamType(*current1_, *current2_, *current3_,
11881  *current4_, *current5_));
11882  }
11883  bool AtEnd() const {
11884  // We must report iterator past the end of the range when either of the
11885  // component iterators has reached the end of its range.
11886  return
11887  current1_ == end1_ ||
11888  current2_ == end2_ ||
11889  current3_ == end3_ ||
11890  current4_ == end4_ ||
11891  current5_ == end5_;
11892  }
11893 
11894  // No implementation - assignment is unsupported.
11895  void operator=(const Iterator& other);
11896 
11897  const ParamGeneratorInterface<ParamType>* const base_;
11898  // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
11899  // current[i]_ is the actual traversing iterator.
11900  const typename ParamGenerator<T1>::iterator begin1_;
11901  const typename ParamGenerator<T1>::iterator end1_;
11902  typename ParamGenerator<T1>::iterator current1_;
11903  const typename ParamGenerator<T2>::iterator begin2_;
11904  const typename ParamGenerator<T2>::iterator end2_;
11905  typename ParamGenerator<T2>::iterator current2_;
11906  const typename ParamGenerator<T3>::iterator begin3_;
11907  const typename ParamGenerator<T3>::iterator end3_;
11908  typename ParamGenerator<T3>::iterator current3_;
11909  const typename ParamGenerator<T4>::iterator begin4_;
11910  const typename ParamGenerator<T4>::iterator end4_;
11911  typename ParamGenerator<T4>::iterator current4_;
11912  const typename ParamGenerator<T5>::iterator begin5_;
11913  const typename ParamGenerator<T5>::iterator end5_;
11914  typename ParamGenerator<T5>::iterator current5_;
11915  std::shared_ptr<ParamType> current_value_;
11916  }; // class CartesianProductGenerator5::Iterator
11917 
11918  // No implementation - assignment is unsupported.
11919  void operator=(const CartesianProductGenerator5& other);
11920 
11921  const ParamGenerator<T1> g1_;
11922  const ParamGenerator<T2> g2_;
11923  const ParamGenerator<T3> g3_;
11924  const ParamGenerator<T4> g4_;
11925  const ParamGenerator<T5> g5_;
11926 }; // class CartesianProductGenerator5
11927 
11928 
11929 template <typename T1, typename T2, typename T3, typename T4, typename T5,
11930  typename T6>
11932  : public ParamGeneratorInterface< ::std::tuple<T1, T2, T3, T4, T5, T6> > {
11933  public:
11934  typedef ::std::tuple<T1, T2, T3, T4, T5, T6> ParamType;
11935 
11937  const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,
11938  const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5,
11939  const ParamGenerator<T6>& g6)
11940  : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6) {}
11942 
11944  return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
11945  g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin());
11946  }
11948  return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
11949  g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end());
11950  }
11951 
11952  private:
11953  class Iterator : public ParamIteratorInterface<ParamType> {
11954  public:
11955  Iterator(const ParamGeneratorInterface<ParamType>* base,
11956  const ParamGenerator<T1>& g1,
11957  const typename ParamGenerator<T1>::iterator& current1,
11958  const ParamGenerator<T2>& g2,
11959  const typename ParamGenerator<T2>::iterator& current2,
11960  const ParamGenerator<T3>& g3,
11961  const typename ParamGenerator<T3>::iterator& current3,
11962  const ParamGenerator<T4>& g4,
11963  const typename ParamGenerator<T4>::iterator& current4,
11964  const ParamGenerator<T5>& g5,
11965  const typename ParamGenerator<T5>::iterator& current5,
11966  const ParamGenerator<T6>& g6,
11967  const typename ParamGenerator<T6>::iterator& current6)
11968  : base_(base),
11969  begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
11970  begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
11971  begin3_(g3.begin()), end3_(g3.end()), current3_(current3),
11972  begin4_(g4.begin()), end4_(g4.end()), current4_(current4),
11973  begin5_(g5.begin()), end5_(g5.end()), current5_(current5),
11974  begin6_(g6.begin()), end6_(g6.end()), current6_(current6) {
11975  ComputeCurrentValue();
11976  }
11977  ~Iterator() override {}
11978 
11979  const ParamGeneratorInterface<ParamType>* BaseGenerator() const override {
11980  return base_;
11981  }
11982  // Advance should not be called on beyond-of-range iterators
11983  // so no component iterators must be beyond end of range, either.
11984  void Advance() override {
11985  assert(!AtEnd());
11986  ++current6_;
11987  if (current6_ == end6_) {
11988  current6_ = begin6_;
11989  ++current5_;
11990  }
11991  if (current5_ == end5_) {
11992  current5_ = begin5_;
11993  ++current4_;
11994  }
11995  if (current4_ == end4_) {
11996  current4_ = begin4_;
11997  ++current3_;
11998  }
11999  if (current3_ == end3_) {
12000  current3_ = begin3_;
12001  ++current2_;
12002  }
12003  if (current2_ == end2_) {
12004  current2_ = begin2_;
12005  ++current1_;
12006  }
12007  ComputeCurrentValue();
12008  }
12009  ParamIteratorInterface<ParamType>* Clone() const override {
12010  return new Iterator(*this);
12011  }
12012  const ParamType* Current() const override { return current_value_.get(); }
12013  bool Equals(const ParamIteratorInterface<ParamType>& other) const override {
12014  // Having the same base generator guarantees that the other
12015  // iterator is of the same type and we can downcast.
12016  GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
12017  << "The program attempted to compare iterators "
12018  << "from different generators." << std::endl;
12019  const Iterator* typed_other =
12020  CheckedDowncastToActualType<const Iterator>(&other);
12021  // We must report iterators equal if they both point beyond their
12022  // respective ranges. That can happen in a variety of fashions,
12023  // so we have to consult AtEnd().
12024  return (AtEnd() && typed_other->AtEnd()) ||
12025  (
12026  current1_ == typed_other->current1_ &&
12027  current2_ == typed_other->current2_ &&
12028  current3_ == typed_other->current3_ &&
12029  current4_ == typed_other->current4_ &&
12030  current5_ == typed_other->current5_ &&
12031  current6_ == typed_other->current6_);
12032  }
12033 
12034  private:
12035  Iterator(const Iterator& other)
12036  : base_(other.base_),
12037  begin1_(other.begin1_),
12038  end1_(other.end1_),
12039  current1_(other.current1_),
12040  begin2_(other.begin2_),
12041  end2_(other.end2_),
12042  current2_(other.current2_),
12043  begin3_(other.begin3_),
12044  end3_(other.end3_),
12045  current3_(other.current3_),
12046  begin4_(other.begin4_),
12047  end4_(other.end4_),
12048  current4_(other.current4_),
12049  begin5_(other.begin5_),
12050  end5_(other.end5_),
12051  current5_(other.current5_),
12052  begin6_(other.begin6_),
12053  end6_(other.end6_),
12054  current6_(other.current6_) {
12055  ComputeCurrentValue();
12056  }
12057 
12058  void ComputeCurrentValue() {
12059  if (!AtEnd())
12060  current_value_.reset(new ParamType(*current1_, *current2_, *current3_,
12061  *current4_, *current5_, *current6_));
12062  }
12063  bool AtEnd() const {
12064  // We must report iterator past the end of the range when either of the
12065  // component iterators has reached the end of its range.
12066  return
12067  current1_ == end1_ ||
12068  current2_ == end2_ ||
12069  current3_ == end3_ ||
12070  current4_ == end4_ ||
12071  current5_ == end5_ ||
12072  current6_ == end6_;
12073  }
12074 
12075  // No implementation - assignment is unsupported.
12076  void operator=(const Iterator& other);
12077 
12078  const ParamGeneratorInterface<ParamType>* const base_;
12079  // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
12080  // current[i]_ is the actual traversing iterator.
12081  const typename ParamGenerator<T1>::iterator begin1_;
12082  const typename ParamGenerator<T1>::iterator end1_;
12083  typename ParamGenerator<T1>::iterator current1_;
12084  const typename ParamGenerator<T2>::iterator begin2_;
12085  const typename ParamGenerator<T2>::iterator end2_;
12086  typename ParamGenerator<T2>::iterator current2_;
12087  const typename ParamGenerator<T3>::iterator begin3_;
12088  const typename ParamGenerator<T3>::iterator end3_;
12089  typename ParamGenerator<T3>::iterator current3_;
12090  const typename ParamGenerator<T4>::iterator begin4_;
12091  const typename ParamGenerator<T4>::iterator end4_;
12092  typename ParamGenerator<T4>::iterator current4_;
12093  const typename ParamGenerator<T5>::iterator begin5_;
12094  const typename ParamGenerator<T5>::iterator end5_;
12095  typename ParamGenerator<T5>::iterator current5_;
12096  const typename ParamGenerator<T6>::iterator begin6_;
12097  const typename ParamGenerator<T6>::iterator end6_;
12098  typename ParamGenerator<T6>::iterator current6_;
12099  std::shared_ptr<ParamType> current_value_;
12100  }; // class CartesianProductGenerator6::Iterator
12101 
12102  // No implementation - assignment is unsupported.
12103  void operator=(const CartesianProductGenerator6& other);
12104 
12105  const ParamGenerator<T1> g1_;
12106  const ParamGenerator<T2> g2_;
12107  const ParamGenerator<T3> g3_;
12108  const ParamGenerator<T4> g4_;
12109  const ParamGenerator<T5> g5_;
12110  const ParamGenerator<T6> g6_;
12111 }; // class CartesianProductGenerator6
12112 
12113 
12114 template <typename T1, typename T2, typename T3, typename T4, typename T5,
12115  typename T6, typename T7>
12117  : public ParamGeneratorInterface< ::std::tuple<T1, T2, T3, T4, T5, T6,
12118  T7> > {
12119  public:
12120  typedef ::std::tuple<T1, T2, T3, T4, T5, T6, T7> ParamType;
12121 
12123  const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,
12124  const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5,
12125  const ParamGenerator<T6>& g6, const ParamGenerator<T7>& g7)
12126  : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7) {}
12128 
12130  return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
12131  g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_,
12132  g7_.begin());
12133  }
12135  return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
12136  g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end());
12137  }
12138 
12139  private:
12140  class Iterator : public ParamIteratorInterface<ParamType> {
12141  public:
12142  Iterator(const ParamGeneratorInterface<ParamType>* base,
12143  const ParamGenerator<T1>& g1,
12144  const typename ParamGenerator<T1>::iterator& current1,
12145  const ParamGenerator<T2>& g2,
12146  const typename ParamGenerator<T2>::iterator& current2,
12147  const ParamGenerator<T3>& g3,
12148  const typename ParamGenerator<T3>::iterator& current3,
12149  const ParamGenerator<T4>& g4,
12150  const typename ParamGenerator<T4>::iterator& current4,
12151  const ParamGenerator<T5>& g5,
12152  const typename ParamGenerator<T5>::iterator& current5,
12153  const ParamGenerator<T6>& g6,
12154  const typename ParamGenerator<T6>::iterator& current6,
12155  const ParamGenerator<T7>& g7,
12156  const typename ParamGenerator<T7>::iterator& current7)
12157  : base_(base),
12158  begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
12159  begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
12160  begin3_(g3.begin()), end3_(g3.end()), current3_(current3),
12161  begin4_(g4.begin()), end4_(g4.end()), current4_(current4),
12162  begin5_(g5.begin()), end5_(g5.end()), current5_(current5),
12163  begin6_(g6.begin()), end6_(g6.end()), current6_(current6),
12164  begin7_(g7.begin()), end7_(g7.end()), current7_(current7) {
12165  ComputeCurrentValue();
12166  }
12167  ~Iterator() override {}
12168 
12169  const ParamGeneratorInterface<ParamType>* BaseGenerator() const override {
12170  return base_;
12171  }
12172  // Advance should not be called on beyond-of-range iterators
12173  // so no component iterators must be beyond end of range, either.
12174  void Advance() override {
12175  assert(!AtEnd());
12176  ++current7_;
12177  if (current7_ == end7_) {
12178  current7_ = begin7_;
12179  ++current6_;
12180  }
12181  if (current6_ == end6_) {
12182  current6_ = begin6_;
12183  ++current5_;
12184  }
12185  if (current5_ == end5_) {
12186  current5_ = begin5_;
12187  ++current4_;
12188  }
12189  if (current4_ == end4_) {
12190  current4_ = begin4_;
12191  ++current3_;
12192  }
12193  if (current3_ == end3_) {
12194  current3_ = begin3_;
12195  ++current2_;
12196  }
12197  if (current2_ == end2_) {
12198  current2_ = begin2_;
12199  ++current1_;
12200  }
12201  ComputeCurrentValue();
12202  }
12203  ParamIteratorInterface<ParamType>* Clone() const override {
12204  return new Iterator(*this);
12205  }
12206  const ParamType* Current() const override { return current_value_.get(); }
12207  bool Equals(const ParamIteratorInterface<ParamType>& other) const override {
12208  // Having the same base generator guarantees that the other
12209  // iterator is of the same type and we can downcast.
12210  GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
12211  << "The program attempted to compare iterators "
12212  << "from different generators." << std::endl;
12213  const Iterator* typed_other =
12214  CheckedDowncastToActualType<const Iterator>(&other);
12215  // We must report iterators equal if they both point beyond their
12216  // respective ranges. That can happen in a variety of fashions,
12217  // so we have to consult AtEnd().
12218  return (AtEnd() && typed_other->AtEnd()) ||
12219  (
12220  current1_ == typed_other->current1_ &&
12221  current2_ == typed_other->current2_ &&
12222  current3_ == typed_other->current3_ &&
12223  current4_ == typed_other->current4_ &&
12224  current5_ == typed_other->current5_ &&
12225  current6_ == typed_other->current6_ &&
12226  current7_ == typed_other->current7_);
12227  }
12228 
12229  private:
12230  Iterator(const Iterator& other)
12231  : base_(other.base_),
12232  begin1_(other.begin1_),
12233  end1_(other.end1_),
12234  current1_(other.current1_),
12235  begin2_(other.begin2_),
12236  end2_(other.end2_),
12237  current2_(other.current2_),
12238  begin3_(other.begin3_),
12239  end3_(other.end3_),
12240  current3_(other.current3_),
12241  begin4_(other.begin4_),
12242  end4_(other.end4_),
12243  current4_(other.current4_),
12244  begin5_(other.begin5_),
12245  end5_(other.end5_),
12246  current5_(other.current5_),
12247  begin6_(other.begin6_),
12248  end6_(other.end6_),
12249  current6_(other.current6_),
12250  begin7_(other.begin7_),
12251  end7_(other.end7_),
12252  current7_(other.current7_) {
12253  ComputeCurrentValue();
12254  }
12255 
12256  void ComputeCurrentValue() {
12257  if (!AtEnd())
12258  current_value_.reset(new ParamType(*current1_, *current2_, *current3_,
12259  *current4_, *current5_, *current6_, *current7_));
12260  }
12261  bool AtEnd() const {
12262  // We must report iterator past the end of the range when either of the
12263  // component iterators has reached the end of its range.
12264  return
12265  current1_ == end1_ ||
12266  current2_ == end2_ ||
12267  current3_ == end3_ ||
12268  current4_ == end4_ ||
12269  current5_ == end5_ ||
12270  current6_ == end6_ ||
12271  current7_ == end7_;
12272  }
12273 
12274  // No implementation - assignment is unsupported.
12275  void operator=(const Iterator& other);
12276 
12277  const ParamGeneratorInterface<ParamType>* const base_;
12278  // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
12279  // current[i]_ is the actual traversing iterator.
12280  const typename ParamGenerator<T1>::iterator begin1_;
12281  const typename ParamGenerator<T1>::iterator end1_;
12282  typename ParamGenerator<T1>::iterator current1_;
12283  const typename ParamGenerator<T2>::iterator begin2_;
12284  const typename ParamGenerator<T2>::iterator end2_;
12285  typename ParamGenerator<T2>::iterator current2_;
12286  const typename ParamGenerator<T3>::iterator begin3_;
12287  const typename ParamGenerator<T3>::iterator end3_;
12288  typename ParamGenerator<T3>::iterator current3_;
12289  const typename ParamGenerator<T4>::iterator begin4_;
12290  const typename ParamGenerator<T4>::iterator end4_;
12291  typename ParamGenerator<T4>::iterator current4_;
12292  const typename ParamGenerator<T5>::iterator begin5_;
12293  const typename ParamGenerator<T5>::iterator end5_;
12294  typename ParamGenerator<T5>::iterator current5_;
12295  const typename ParamGenerator<T6>::iterator begin6_;
12296  const typename ParamGenerator<T6>::iterator end6_;
12297  typename ParamGenerator<T6>::iterator current6_;
12298  const typename ParamGenerator<T7>::iterator begin7_;
12299  const typename ParamGenerator<T7>::iterator end7_;
12300  typename ParamGenerator<T7>::iterator current7_;
12301  std::shared_ptr<ParamType> current_value_;
12302  }; // class CartesianProductGenerator7::Iterator
12303 
12304  // No implementation - assignment is unsupported.
12305  void operator=(const CartesianProductGenerator7& other);
12306 
12307  const ParamGenerator<T1> g1_;
12308  const ParamGenerator<T2> g2_;
12309  const ParamGenerator<T3> g3_;
12310  const ParamGenerator<T4> g4_;
12311  const ParamGenerator<T5> g5_;
12312  const ParamGenerator<T6> g6_;
12313  const ParamGenerator<T7> g7_;
12314 }; // class CartesianProductGenerator7
12315 
12316 
12317 template <typename T1, typename T2, typename T3, typename T4, typename T5,
12318  typename T6, typename T7, typename T8>
12320  : public ParamGeneratorInterface< ::std::tuple<T1, T2, T3, T4, T5, T6, T7,
12321  T8> > {
12322  public:
12323  typedef ::std::tuple<T1, T2, T3, T4, T5, T6, T7, T8> ParamType;
12324 
12326  const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,
12327  const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5,
12328  const ParamGenerator<T6>& g6, const ParamGenerator<T7>& g7,
12329  const ParamGenerator<T8>& g8)
12330  : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7),
12331  g8_(g8) {}
12333 
12335  return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
12336  g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_,
12337  g7_.begin(), g8_, g8_.begin());
12338  }
12340  return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
12341  g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_,
12342  g8_.end());
12343  }
12344 
12345  private:
12346  class Iterator : public ParamIteratorInterface<ParamType> {
12347  public:
12348  Iterator(const ParamGeneratorInterface<ParamType>* base,
12349  const ParamGenerator<T1>& g1,
12350  const typename ParamGenerator<T1>::iterator& current1,
12351  const ParamGenerator<T2>& g2,
12352  const typename ParamGenerator<T2>::iterator& current2,
12353  const ParamGenerator<T3>& g3,
12354  const typename ParamGenerator<T3>::iterator& current3,
12355  const ParamGenerator<T4>& g4,
12356  const typename ParamGenerator<T4>::iterator& current4,
12357  const ParamGenerator<T5>& g5,
12358  const typename ParamGenerator<T5>::iterator& current5,
12359  const ParamGenerator<T6>& g6,
12360  const typename ParamGenerator<T6>::iterator& current6,
12361  const ParamGenerator<T7>& g7,
12362  const typename ParamGenerator<T7>::iterator& current7,
12363  const ParamGenerator<T8>& g8,
12364  const typename ParamGenerator<T8>::iterator& current8)
12365  : base_(base),
12366  begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
12367  begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
12368  begin3_(g3.begin()), end3_(g3.end()), current3_(current3),
12369  begin4_(g4.begin()), end4_(g4.end()), current4_(current4),
12370  begin5_(g5.begin()), end5_(g5.end()), current5_(current5),
12371  begin6_(g6.begin()), end6_(g6.end()), current6_(current6),
12372  begin7_(g7.begin()), end7_(g7.end()), current7_(current7),
12373  begin8_(g8.begin()), end8_(g8.end()), current8_(current8) {
12374  ComputeCurrentValue();
12375  }
12376  ~Iterator() override {}
12377 
12378  const ParamGeneratorInterface<ParamType>* BaseGenerator() const override {
12379  return base_;
12380  }
12381  // Advance should not be called on beyond-of-range iterators
12382  // so no component iterators must be beyond end of range, either.
12383  void Advance() override {
12384  assert(!AtEnd());
12385  ++current8_;
12386  if (current8_ == end8_) {
12387  current8_ = begin8_;
12388  ++current7_;
12389  }
12390  if (current7_ == end7_) {
12391  current7_ = begin7_;
12392  ++current6_;
12393  }
12394  if (current6_ == end6_) {
12395  current6_ = begin6_;
12396  ++current5_;
12397  }
12398  if (current5_ == end5_) {
12399  current5_ = begin5_;
12400  ++current4_;
12401  }
12402  if (current4_ == end4_) {
12403  current4_ = begin4_;
12404  ++current3_;
12405  }
12406  if (current3_ == end3_) {
12407  current3_ = begin3_;
12408  ++current2_;
12409  }
12410  if (current2_ == end2_) {
12411  current2_ = begin2_;
12412  ++current1_;
12413  }
12414  ComputeCurrentValue();
12415  }
12416  ParamIteratorInterface<ParamType>* Clone() const override {
12417  return new Iterator(*this);
12418  }
12419  const ParamType* Current() const override { return current_value_.get(); }
12420  bool Equals(const ParamIteratorInterface<ParamType>& other) const override {
12421  // Having the same base generator guarantees that the other
12422  // iterator is of the same type and we can downcast.
12423  GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
12424  << "The program attempted to compare iterators "
12425  << "from different generators." << std::endl;
12426  const Iterator* typed_other =
12427  CheckedDowncastToActualType<const Iterator>(&other);
12428  // We must report iterators equal if they both point beyond their
12429  // respective ranges. That can happen in a variety of fashions,
12430  // so we have to consult AtEnd().
12431  return (AtEnd() && typed_other->AtEnd()) ||
12432  (
12433  current1_ == typed_other->current1_ &&
12434  current2_ == typed_other->current2_ &&
12435  current3_ == typed_other->current3_ &&
12436  current4_ == typed_other->current4_ &&
12437  current5_ == typed_other->current5_ &&
12438  current6_ == typed_other->current6_ &&
12439  current7_ == typed_other->current7_ &&
12440  current8_ == typed_other->current8_);
12441  }
12442 
12443  private:
12444  Iterator(const Iterator& other)
12445  : base_(other.base_),
12446  begin1_(other.begin1_),
12447  end1_(other.end1_),
12448  current1_(other.current1_),
12449  begin2_(other.begin2_),
12450  end2_(other.end2_),
12451  current2_(other.current2_),
12452  begin3_(other.begin3_),
12453  end3_(other.end3_),
12454  current3_(other.current3_),
12455  begin4_(other.begin4_),
12456  end4_(other.end4_),
12457  current4_(other.current4_),
12458  begin5_(other.begin5_),
12459  end5_(other.end5_),
12460  current5_(other.current5_),
12461  begin6_(other.begin6_),
12462  end6_(other.end6_),
12463  current6_(other.current6_),
12464  begin7_(other.begin7_),
12465  end7_(other.end7_),
12466  current7_(other.current7_),
12467  begin8_(other.begin8_),
12468  end8_(other.end8_),
12469  current8_(other.current8_) {
12470  ComputeCurrentValue();
12471  }
12472 
12473  void ComputeCurrentValue() {
12474  if (!AtEnd())
12475  current_value_.reset(new ParamType(*current1_, *current2_, *current3_,
12476  *current4_, *current5_, *current6_, *current7_, *current8_));
12477  }
12478  bool AtEnd() const {
12479  // We must report iterator past the end of the range when either of the
12480  // component iterators has reached the end of its range.
12481  return
12482  current1_ == end1_ ||
12483  current2_ == end2_ ||
12484  current3_ == end3_ ||
12485  current4_ == end4_ ||
12486  current5_ == end5_ ||
12487  current6_ == end6_ ||
12488  current7_ == end7_ ||
12489  current8_ == end8_;
12490  }
12491 
12492  // No implementation - assignment is unsupported.
12493  void operator=(const Iterator& other);
12494 
12495  const ParamGeneratorInterface<ParamType>* const base_;
12496  // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
12497  // current[i]_ is the actual traversing iterator.
12498  const typename ParamGenerator<T1>::iterator begin1_;
12499  const typename ParamGenerator<T1>::iterator end1_;
12500  typename ParamGenerator<T1>::iterator current1_;
12501  const typename ParamGenerator<T2>::iterator begin2_;
12502  const typename ParamGenerator<T2>::iterator end2_;
12503  typename ParamGenerator<T2>::iterator current2_;
12504  const typename ParamGenerator<T3>::iterator begin3_;
12505  const typename ParamGenerator<T3>::iterator end3_;
12506  typename ParamGenerator<T3>::iterator current3_;
12507  const typename ParamGenerator<T4>::iterator begin4_;
12508  const typename ParamGenerator<T4>::iterator end4_;
12509  typename ParamGenerator<T4>::iterator current4_;
12510  const typename ParamGenerator<T5>::iterator begin5_;
12511  const typename ParamGenerator<T5>::iterator end5_;
12512  typename ParamGenerator<T5>::iterator current5_;
12513  const typename ParamGenerator<T6>::iterator begin6_;
12514  const typename ParamGenerator<T6>::iterator end6_;
12515  typename ParamGenerator<T6>::iterator current6_;
12516  const typename ParamGenerator<T7>::iterator begin7_;
12517  const typename ParamGenerator<T7>::iterator end7_;
12518  typename ParamGenerator<T7>::iterator current7_;
12519  const typename ParamGenerator<T8>::iterator begin8_;
12520  const typename ParamGenerator<T8>::iterator end8_;
12521  typename ParamGenerator<T8>::iterator current8_;
12522  std::shared_ptr<ParamType> current_value_;
12523  }; // class CartesianProductGenerator8::Iterator
12524 
12525  // No implementation - assignment is unsupported.
12526  void operator=(const CartesianProductGenerator8& other);
12527 
12528  const ParamGenerator<T1> g1_;
12529  const ParamGenerator<T2> g2_;
12530  const ParamGenerator<T3> g3_;
12531  const ParamGenerator<T4> g4_;
12532  const ParamGenerator<T5> g5_;
12533  const ParamGenerator<T6> g6_;
12534  const ParamGenerator<T7> g7_;
12535  const ParamGenerator<T8> g8_;
12536 }; // class CartesianProductGenerator8
12537 
12538 
12539 template <typename T1, typename T2, typename T3, typename T4, typename T5,
12540  typename T6, typename T7, typename T8, typename T9>
12542  : public ParamGeneratorInterface< ::std::tuple<T1, T2, T3, T4, T5, T6, T7,
12543  T8, T9> > {
12544  public:
12545  typedef ::std::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9> ParamType;
12546 
12548  const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,
12549  const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5,
12550  const ParamGenerator<T6>& g6, const ParamGenerator<T7>& g7,
12551  const ParamGenerator<T8>& g8, const ParamGenerator<T9>& g9)
12552  : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8),
12553  g9_(g9) {}
12555 
12557  return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
12558  g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_,
12559  g7_.begin(), g8_, g8_.begin(), g9_, g9_.begin());
12560  }
12562  return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
12563  g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_,
12564  g8_.end(), g9_, g9_.end());
12565  }
12566 
12567  private:
12568  class Iterator : public ParamIteratorInterface<ParamType> {
12569  public:
12570  Iterator(const ParamGeneratorInterface<ParamType>* base,
12571  const ParamGenerator<T1>& g1,
12572  const typename ParamGenerator<T1>::iterator& current1,
12573  const ParamGenerator<T2>& g2,
12574  const typename ParamGenerator<T2>::iterator& current2,
12575  const ParamGenerator<T3>& g3,
12576  const typename ParamGenerator<T3>::iterator& current3,
12577  const ParamGenerator<T4>& g4,
12578  const typename ParamGenerator<T4>::iterator& current4,
12579  const ParamGenerator<T5>& g5,
12580  const typename ParamGenerator<T5>::iterator& current5,
12581  const ParamGenerator<T6>& g6,
12582  const typename ParamGenerator<T6>::iterator& current6,
12583  const ParamGenerator<T7>& g7,
12584  const typename ParamGenerator<T7>::iterator& current7,
12585  const ParamGenerator<T8>& g8,
12586  const typename ParamGenerator<T8>::iterator& current8,
12587  const ParamGenerator<T9>& g9,
12588  const typename ParamGenerator<T9>::iterator& current9)
12589  : base_(base),
12590  begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
12591  begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
12592  begin3_(g3.begin()), end3_(g3.end()), current3_(current3),
12593  begin4_(g4.begin()), end4_(g4.end()), current4_(current4),
12594  begin5_(g5.begin()), end5_(g5.end()), current5_(current5),
12595  begin6_(g6.begin()), end6_(g6.end()), current6_(current6),
12596  begin7_(g7.begin()), end7_(g7.end()), current7_(current7),
12597  begin8_(g8.begin()), end8_(g8.end()), current8_(current8),
12598  begin9_(g9.begin()), end9_(g9.end()), current9_(current9) {
12599  ComputeCurrentValue();
12600  }
12601  ~Iterator() override {}
12602 
12603  const ParamGeneratorInterface<ParamType>* BaseGenerator() const override {
12604  return base_;
12605  }
12606  // Advance should not be called on beyond-of-range iterators
12607  // so no component iterators must be beyond end of range, either.
12608  void Advance() override {
12609  assert(!AtEnd());
12610  ++current9_;
12611  if (current9_ == end9_) {
12612  current9_ = begin9_;
12613  ++current8_;
12614  }
12615  if (current8_ == end8_) {
12616  current8_ = begin8_;
12617  ++current7_;
12618  }
12619  if (current7_ == end7_) {
12620  current7_ = begin7_;
12621  ++current6_;
12622  }
12623  if (current6_ == end6_) {
12624  current6_ = begin6_;
12625  ++current5_;
12626  }
12627  if (current5_ == end5_) {
12628  current5_ = begin5_;
12629  ++current4_;
12630  }
12631  if (current4_ == end4_) {
12632  current4_ = begin4_;
12633  ++current3_;
12634  }
12635  if (current3_ == end3_) {
12636  current3_ = begin3_;
12637  ++current2_;
12638  }
12639  if (current2_ == end2_) {
12640  current2_ = begin2_;
12641  ++current1_;
12642  }
12643  ComputeCurrentValue();
12644  }
12645  ParamIteratorInterface<ParamType>* Clone() const override {
12646  return new Iterator(*this);
12647  }
12648  const ParamType* Current() const override { return current_value_.get(); }
12649  bool Equals(const ParamIteratorInterface<ParamType>& other) const override {
12650  // Having the same base generator guarantees that the other
12651  // iterator is of the same type and we can downcast.
12652  GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
12653  << "The program attempted to compare iterators "
12654  << "from different generators." << std::endl;
12655  const Iterator* typed_other =
12656  CheckedDowncastToActualType<const Iterator>(&other);
12657  // We must report iterators equal if they both point beyond their
12658  // respective ranges. That can happen in a variety of fashions,
12659  // so we have to consult AtEnd().
12660  return (AtEnd() && typed_other->AtEnd()) ||
12661  (
12662  current1_ == typed_other->current1_ &&
12663  current2_ == typed_other->current2_ &&
12664  current3_ == typed_other->current3_ &&
12665  current4_ == typed_other->current4_ &&
12666  current5_ == typed_other->current5_ &&
12667  current6_ == typed_other->current6_ &&
12668  current7_ == typed_other->current7_ &&
12669  current8_ == typed_other->current8_ &&
12670  current9_ == typed_other->current9_);
12671  }
12672 
12673  private:
12674  Iterator(const Iterator& other)
12675  : base_(other.base_),
12676  begin1_(other.begin1_),
12677  end1_(other.end1_),
12678  current1_(other.current1_),
12679  begin2_(other.begin2_),
12680  end2_(other.end2_),
12681  current2_(other.current2_),
12682  begin3_(other.begin3_),
12683  end3_(other.end3_),
12684  current3_(other.current3_),
12685  begin4_(other.begin4_),
12686  end4_(other.end4_),
12687  current4_(other.current4_),
12688  begin5_(other.begin5_),
12689  end5_(other.end5_),
12690  current5_(other.current5_),
12691  begin6_(other.begin6_),
12692  end6_(other.end6_),
12693  current6_(other.current6_),
12694  begin7_(other.begin7_),
12695  end7_(other.end7_),
12696  current7_(other.current7_),
12697  begin8_(other.begin8_),
12698  end8_(other.end8_),
12699  current8_(other.current8_),
12700  begin9_(other.begin9_),
12701  end9_(other.end9_),
12702  current9_(other.current9_) {
12703  ComputeCurrentValue();
12704  }
12705 
12706  void ComputeCurrentValue() {
12707  if (!AtEnd())
12708  current_value_.reset(new ParamType(*current1_, *current2_, *current3_,
12709  *current4_, *current5_, *current6_, *current7_, *current8_,
12710  *current9_));
12711  }
12712  bool AtEnd() const {
12713  // We must report iterator past the end of the range when either of the
12714  // component iterators has reached the end of its range.
12715  return
12716  current1_ == end1_ ||
12717  current2_ == end2_ ||
12718  current3_ == end3_ ||
12719  current4_ == end4_ ||
12720  current5_ == end5_ ||
12721  current6_ == end6_ ||
12722  current7_ == end7_ ||
12723  current8_ == end8_ ||
12724  current9_ == end9_;
12725  }
12726 
12727  // No implementation - assignment is unsupported.
12728  void operator=(const Iterator& other);
12729 
12730  const ParamGeneratorInterface<ParamType>* const base_;
12731  // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
12732  // current[i]_ is the actual traversing iterator.
12733  const typename ParamGenerator<T1>::iterator begin1_;
12734  const typename ParamGenerator<T1>::iterator end1_;
12735  typename ParamGenerator<T1>::iterator current1_;
12736  const typename ParamGenerator<T2>::iterator begin2_;
12737  const typename ParamGenerator<T2>::iterator end2_;
12738  typename ParamGenerator<T2>::iterator current2_;
12739  const typename ParamGenerator<T3>::iterator begin3_;
12740  const typename ParamGenerator<T3>::iterator end3_;
12741  typename ParamGenerator<T3>::iterator current3_;
12742  const typename ParamGenerator<T4>::iterator begin4_;
12743  const typename ParamGenerator<T4>::iterator end4_;
12744  typename ParamGenerator<T4>::iterator current4_;
12745  const typename ParamGenerator<T5>::iterator begin5_;
12746  const typename ParamGenerator<T5>::iterator end5_;
12747  typename ParamGenerator<T5>::iterator current5_;
12748  const typename ParamGenerator<T6>::iterator begin6_;
12749  const typename ParamGenerator<T6>::iterator end6_;
12750  typename ParamGenerator<T6>::iterator current6_;
12751  const typename ParamGenerator<T7>::iterator begin7_;
12752  const typename ParamGenerator<T7>::iterator end7_;
12753  typename ParamGenerator<T7>::iterator current7_;
12754  const typename ParamGenerator<T8>::iterator begin8_;
12755  const typename ParamGenerator<T8>::iterator end8_;
12756  typename ParamGenerator<T8>::iterator current8_;
12757  const typename ParamGenerator<T9>::iterator begin9_;
12758  const typename ParamGenerator<T9>::iterator end9_;
12759  typename ParamGenerator<T9>::iterator current9_;
12760  std::shared_ptr<ParamType> current_value_;
12761  }; // class CartesianProductGenerator9::Iterator
12762 
12763  // No implementation - assignment is unsupported.
12764  void operator=(const CartesianProductGenerator9& other);
12765 
12766  const ParamGenerator<T1> g1_;
12767  const ParamGenerator<T2> g2_;
12768  const ParamGenerator<T3> g3_;
12769  const ParamGenerator<T4> g4_;
12770  const ParamGenerator<T5> g5_;
12771  const ParamGenerator<T6> g6_;
12772  const ParamGenerator<T7> g7_;
12773  const ParamGenerator<T8> g8_;
12774  const ParamGenerator<T9> g9_;
12775 }; // class CartesianProductGenerator9
12776 
12777 
12778 template <typename T1, typename T2, typename T3, typename T4, typename T5,
12779  typename T6, typename T7, typename T8, typename T9, typename T10>
12781  : public ParamGeneratorInterface< ::std::tuple<T1, T2, T3, T4, T5, T6, T7,
12782  T8, T9, T10> > {
12783  public:
12784  typedef ::std::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> ParamType;
12785 
12787  const ParamGenerator<T2>& g2, const ParamGenerator<T3>& g3,
12788  const ParamGenerator<T4>& g4, const ParamGenerator<T5>& g5,
12789  const ParamGenerator<T6>& g6, const ParamGenerator<T7>& g7,
12790  const ParamGenerator<T8>& g8, const ParamGenerator<T9>& g9,
12791  const ParamGenerator<T10>& g10)
12792  : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8),
12793  g9_(g9), g10_(g10) {}
12795 
12797  return new Iterator(this, g1_, g1_.begin(), g2_, g2_.begin(), g3_,
12798  g3_.begin(), g4_, g4_.begin(), g5_, g5_.begin(), g6_, g6_.begin(), g7_,
12799  g7_.begin(), g8_, g8_.begin(), g9_, g9_.begin(), g10_, g10_.begin());
12800  }
12802  return new Iterator(this, g1_, g1_.end(), g2_, g2_.end(), g3_, g3_.end(),
12803  g4_, g4_.end(), g5_, g5_.end(), g6_, g6_.end(), g7_, g7_.end(), g8_,
12804  g8_.end(), g9_, g9_.end(), g10_, g10_.end());
12805  }
12806 
12807  private:
12808  class Iterator : public ParamIteratorInterface<ParamType> {
12809  public:
12810  Iterator(const ParamGeneratorInterface<ParamType>* base,
12811  const ParamGenerator<T1>& g1,
12812  const typename ParamGenerator<T1>::iterator& current1,
12813  const ParamGenerator<T2>& g2,
12814  const typename ParamGenerator<T2>::iterator& current2,
12815  const ParamGenerator<T3>& g3,
12816  const typename ParamGenerator<T3>::iterator& current3,
12817  const ParamGenerator<T4>& g4,
12818  const typename ParamGenerator<T4>::iterator& current4,
12819  const ParamGenerator<T5>& g5,
12820  const typename ParamGenerator<T5>::iterator& current5,
12821  const ParamGenerator<T6>& g6,
12822  const typename ParamGenerator<T6>::iterator& current6,
12823  const ParamGenerator<T7>& g7,
12824  const typename ParamGenerator<T7>::iterator& current7,
12825  const ParamGenerator<T8>& g8,
12826  const typename ParamGenerator<T8>::iterator& current8,
12827  const ParamGenerator<T9>& g9,
12828  const typename ParamGenerator<T9>::iterator& current9,
12829  const ParamGenerator<T10>& g10,
12830  const typename ParamGenerator<T10>::iterator& current10)
12831  : base_(base),
12832  begin1_(g1.begin()), end1_(g1.end()), current1_(current1),
12833  begin2_(g2.begin()), end2_(g2.end()), current2_(current2),
12834  begin3_(g3.begin()), end3_(g3.end()), current3_(current3),
12835  begin4_(g4.begin()), end4_(g4.end()), current4_(current4),
12836  begin5_(g5.begin()), end5_(g5.end()), current5_(current5),
12837  begin6_(g6.begin()), end6_(g6.end()), current6_(current6),
12838  begin7_(g7.begin()), end7_(g7.end()), current7_(current7),
12839  begin8_(g8.begin()), end8_(g8.end()), current8_(current8),
12840  begin9_(g9.begin()), end9_(g9.end()), current9_(current9),
12841  begin10_(g10.begin()), end10_(g10.end()), current10_(current10) {
12842  ComputeCurrentValue();
12843  }
12844  ~Iterator() override {}
12845 
12846  const ParamGeneratorInterface<ParamType>* BaseGenerator() const override {
12847  return base_;
12848  }
12849  // Advance should not be called on beyond-of-range iterators
12850  // so no component iterators must be beyond end of range, either.
12851  void Advance() override {
12852  assert(!AtEnd());
12853  ++current10_;
12854  if (current10_ == end10_) {
12855  current10_ = begin10_;
12856  ++current9_;
12857  }
12858  if (current9_ == end9_) {
12859  current9_ = begin9_;
12860  ++current8_;
12861  }
12862  if (current8_ == end8_) {
12863  current8_ = begin8_;
12864  ++current7_;
12865  }
12866  if (current7_ == end7_) {
12867  current7_ = begin7_;
12868  ++current6_;
12869  }
12870  if (current6_ == end6_) {
12871  current6_ = begin6_;
12872  ++current5_;
12873  }
12874  if (current5_ == end5_) {
12875  current5_ = begin5_;
12876  ++current4_;
12877  }
12878  if (current4_ == end4_) {
12879  current4_ = begin4_;
12880  ++current3_;
12881  }
12882  if (current3_ == end3_) {
12883  current3_ = begin3_;
12884  ++current2_;
12885  }
12886  if (current2_ == end2_) {
12887  current2_ = begin2_;
12888  ++current1_;
12889  }
12890  ComputeCurrentValue();
12891  }
12892  ParamIteratorInterface<ParamType>* Clone() const override {
12893  return new Iterator(*this);
12894  }
12895  const ParamType* Current() const override { return current_value_.get(); }
12896  bool Equals(const ParamIteratorInterface<ParamType>& other) const override {
12897  // Having the same base generator guarantees that the other
12898  // iterator is of the same type and we can downcast.
12899  GTEST_CHECK_(BaseGenerator() == other.BaseGenerator())
12900  << "The program attempted to compare iterators "
12901  << "from different generators." << std::endl;
12902  const Iterator* typed_other =
12903  CheckedDowncastToActualType<const Iterator>(&other);
12904  // We must report iterators equal if they both point beyond their
12905  // respective ranges. That can happen in a variety of fashions,
12906  // so we have to consult AtEnd().
12907  return (AtEnd() && typed_other->AtEnd()) ||
12908  (
12909  current1_ == typed_other->current1_ &&
12910  current2_ == typed_other->current2_ &&
12911  current3_ == typed_other->current3_ &&
12912  current4_ == typed_other->current4_ &&
12913  current5_ == typed_other->current5_ &&
12914  current6_ == typed_other->current6_ &&
12915  current7_ == typed_other->current7_ &&
12916  current8_ == typed_other->current8_ &&
12917  current9_ == typed_other->current9_ &&
12918  current10_ == typed_other->current10_);
12919  }
12920 
12921  private:
12922  Iterator(const Iterator& other)
12923  : base_(other.base_),
12924  begin1_(other.begin1_),
12925  end1_(other.end1_),
12926  current1_(other.current1_),
12927  begin2_(other.begin2_),
12928  end2_(other.end2_),
12929  current2_(other.current2_),
12930  begin3_(other.begin3_),
12931  end3_(other.end3_),
12932  current3_(other.current3_),
12933  begin4_(other.begin4_),
12934  end4_(other.end4_),
12935  current4_(other.current4_),
12936  begin5_(other.begin5_),
12937  end5_(other.end5_),
12938  current5_(other.current5_),
12939  begin6_(other.begin6_),
12940  end6_(other.end6_),
12941  current6_(other.current6_),
12942  begin7_(other.begin7_),
12943  end7_(other.end7_),
12944  current7_(other.current7_),
12945  begin8_(other.begin8_),
12946  end8_(other.end8_),
12947  current8_(other.current8_),
12948  begin9_(other.begin9_),
12949  end9_(other.end9_),
12950  current9_(other.current9_),
12951  begin10_(other.begin10_),
12952  end10_(other.end10_),
12953  current10_(other.current10_) {
12954  ComputeCurrentValue();
12955  }
12956 
12957  void ComputeCurrentValue() {
12958  if (!AtEnd())
12959  current_value_.reset(new ParamType(*current1_, *current2_, *current3_,
12960  *current4_, *current5_, *current6_, *current7_, *current8_,
12961  *current9_, *current10_));
12962  }
12963  bool AtEnd() const {
12964  // We must report iterator past the end of the range when either of the
12965  // component iterators has reached the end of its range.
12966  return
12967  current1_ == end1_ ||
12968  current2_ == end2_ ||
12969  current3_ == end3_ ||
12970  current4_ == end4_ ||
12971  current5_ == end5_ ||
12972  current6_ == end6_ ||
12973  current7_ == end7_ ||
12974  current8_ == end8_ ||
12975  current9_ == end9_ ||
12976  current10_ == end10_;
12977  }
12978 
12979  // No implementation - assignment is unsupported.
12980  void operator=(const Iterator& other);
12981 
12982  const ParamGeneratorInterface<ParamType>* const base_;
12983  // begin[i]_ and end[i]_ define the i-th range that Iterator traverses.
12984  // current[i]_ is the actual traversing iterator.
12985  const typename ParamGenerator<T1>::iterator begin1_;
12986  const typename ParamGenerator<T1>::iterator end1_;
12987  typename ParamGenerator<T1>::iterator current1_;
12988  const typename ParamGenerator<T2>::iterator begin2_;
12989  const typename ParamGenerator<T2>::iterator end2_;
12990  typename ParamGenerator<T2>::iterator current2_;
12991  const typename ParamGenerator<T3>::iterator begin3_;
12992  const typename ParamGenerator<T3>::iterator end3_;
12993  typename ParamGenerator<T3>::iterator current3_;
12994  const typename ParamGenerator<T4>::iterator begin4_;
12995  const typename ParamGenerator<T4>::iterator end4_;
12996  typename ParamGenerator<T4>::iterator current4_;
12997  const typename ParamGenerator<T5>::iterator begin5_;
12998  const typename ParamGenerator<T5>::iterator end5_;
12999  typename ParamGenerator<T5>::iterator current5_;
13000  const typename ParamGenerator<T6>::iterator begin6_;
13001  const typename ParamGenerator<T6>::iterator end6_;
13002  typename ParamGenerator<T6>::iterator current6_;
13003  const typename ParamGenerator<T7>::iterator begin7_;
13004  const typename ParamGenerator<T7>::iterator end7_;
13005  typename ParamGenerator<T7>::iterator current7_;
13006  const typename ParamGenerator<T8>::iterator begin8_;
13007  const typename ParamGenerator<T8>::iterator end8_;
13008  typename ParamGenerator<T8>::iterator current8_;
13009  const typename ParamGenerator<T9>::iterator begin9_;
13010  const typename ParamGenerator<T9>::iterator end9_;
13011  typename ParamGenerator<T9>::iterator current9_;
13012  const typename ParamGenerator<T10>::iterator begin10_;
13013  const typename ParamGenerator<T10>::iterator end10_;
13014  typename ParamGenerator<T10>::iterator current10_;
13015  std::shared_ptr<ParamType> current_value_;
13016  }; // class CartesianProductGenerator10::Iterator
13017 
13018  // No implementation - assignment is unsupported.
13019  void operator=(const CartesianProductGenerator10& other);
13020 
13021  const ParamGenerator<T1> g1_;
13022  const ParamGenerator<T2> g2_;
13023  const ParamGenerator<T3> g3_;
13024  const ParamGenerator<T4> g4_;
13025  const ParamGenerator<T5> g5_;
13026  const ParamGenerator<T6> g6_;
13027  const ParamGenerator<T7> g7_;
13028  const ParamGenerator<T8> g8_;
13029  const ParamGenerator<T9> g9_;
13030  const ParamGenerator<T10> g10_;
13031 }; // class CartesianProductGenerator10
13032 
13033 
13034 // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
13035 //
13036 // Helper classes providing Combine() with polymorphic features. They allow
13037 // casting CartesianProductGeneratorN<T> to ParamGenerator<U> if T is
13038 // convertible to U.
13039 //
13040 template <class Generator1, class Generator2>
13042  public:
13043 CartesianProductHolder2(const Generator1& g1, const Generator2& g2)
13044  : g1_(g1), g2_(g2) {}
13045  template <typename T1, typename T2>
13049  static_cast<ParamGenerator<T1> >(g1_),
13050  static_cast<ParamGenerator<T2> >(g2_)));
13051  }
13052 
13053  private:
13054  // No implementation - assignment is unsupported.
13055  void operator=(const CartesianProductHolder2& other);
13056 
13057  const Generator1 g1_;
13058  const Generator2 g2_;
13059 }; // class CartesianProductHolder2
13060 
13061 template <class Generator1, class Generator2, class Generator3>
13063  public:
13064 CartesianProductHolder3(const Generator1& g1, const Generator2& g2,
13065  const Generator3& g3)
13066  : g1_(g1), g2_(g2), g3_(g3) {}
13067  template <typename T1, typename T2, typename T3>
13071  static_cast<ParamGenerator<T1> >(g1_),
13072  static_cast<ParamGenerator<T2> >(g2_),
13073  static_cast<ParamGenerator<T3> >(g3_)));
13074  }
13075 
13076  private:
13077  // No implementation - assignment is unsupported.
13078  void operator=(const CartesianProductHolder3& other);
13079 
13080  const Generator1 g1_;
13081  const Generator2 g2_;
13082  const Generator3 g3_;
13083 }; // class CartesianProductHolder3
13084 
13085 template <class Generator1, class Generator2, class Generator3,
13086  class Generator4>
13088  public:
13089 CartesianProductHolder4(const Generator1& g1, const Generator2& g2,
13090  const Generator3& g3, const Generator4& g4)
13091  : g1_(g1), g2_(g2), g3_(g3), g4_(g4) {}
13092  template <typename T1, typename T2, typename T3, typename T4>
13096  static_cast<ParamGenerator<T1> >(g1_),
13097  static_cast<ParamGenerator<T2> >(g2_),
13098  static_cast<ParamGenerator<T3> >(g3_),
13099  static_cast<ParamGenerator<T4> >(g4_)));
13100  }
13101 
13102  private:
13103  // No implementation - assignment is unsupported.
13104  void operator=(const CartesianProductHolder4& other);
13105 
13106  const Generator1 g1_;
13107  const Generator2 g2_;
13108  const Generator3 g3_;
13109  const Generator4 g4_;
13110 }; // class CartesianProductHolder4
13111 
13112 template <class Generator1, class Generator2, class Generator3,
13113  class Generator4, class Generator5>
13115  public:
13116 CartesianProductHolder5(const Generator1& g1, const Generator2& g2,
13117  const Generator3& g3, const Generator4& g4, const Generator5& g5)
13118  : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5) {}
13119  template <typename T1, typename T2, typename T3, typename T4, typename T5>
13123  static_cast<ParamGenerator<T1> >(g1_),
13124  static_cast<ParamGenerator<T2> >(g2_),
13125  static_cast<ParamGenerator<T3> >(g3_),
13126  static_cast<ParamGenerator<T4> >(g4_),
13127  static_cast<ParamGenerator<T5> >(g5_)));
13128  }
13129 
13130  private:
13131  // No implementation - assignment is unsupported.
13132  void operator=(const CartesianProductHolder5& other);
13133 
13134  const Generator1 g1_;
13135  const Generator2 g2_;
13136  const Generator3 g3_;
13137  const Generator4 g4_;
13138  const Generator5 g5_;
13139 }; // class CartesianProductHolder5
13140 
13141 template <class Generator1, class Generator2, class Generator3,
13142  class Generator4, class Generator5, class Generator6>
13144  public:
13145 CartesianProductHolder6(const Generator1& g1, const Generator2& g2,
13146  const Generator3& g3, const Generator4& g4, const Generator5& g5,
13147  const Generator6& g6)
13148  : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6) {}
13149  template <typename T1, typename T2, typename T3, typename T4, typename T5,
13150  typename T6>
13154  static_cast<ParamGenerator<T1> >(g1_),
13155  static_cast<ParamGenerator<T2> >(g2_),
13156  static_cast<ParamGenerator<T3> >(g3_),
13157  static_cast<ParamGenerator<T4> >(g4_),
13158  static_cast<ParamGenerator<T5> >(g5_),
13159  static_cast<ParamGenerator<T6> >(g6_)));
13160  }
13161 
13162  private:
13163  // No implementation - assignment is unsupported.
13164  void operator=(const CartesianProductHolder6& other);
13165 
13166  const Generator1 g1_;
13167  const Generator2 g2_;
13168  const Generator3 g3_;
13169  const Generator4 g4_;
13170  const Generator5 g5_;
13171  const Generator6 g6_;
13172 }; // class CartesianProductHolder6
13173 
13174 template <class Generator1, class Generator2, class Generator3,
13175  class Generator4, class Generator5, class Generator6, class Generator7>
13177  public:
13178 CartesianProductHolder7(const Generator1& g1, const Generator2& g2,
13179  const Generator3& g3, const Generator4& g4, const Generator5& g5,
13180  const Generator6& g6, const Generator7& g7)
13181  : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7) {}
13182  template <typename T1, typename T2, typename T3, typename T4, typename T5,
13183  typename T6, typename T7>
13187  static_cast<ParamGenerator<T1> >(g1_),
13188  static_cast<ParamGenerator<T2> >(g2_),
13189  static_cast<ParamGenerator<T3> >(g3_),
13190  static_cast<ParamGenerator<T4> >(g4_),
13191  static_cast<ParamGenerator<T5> >(g5_),
13192  static_cast<ParamGenerator<T6> >(g6_),
13193  static_cast<ParamGenerator<T7> >(g7_)));
13194  }
13195 
13196  private:
13197  // No implementation - assignment is unsupported.
13198  void operator=(const CartesianProductHolder7& other);
13199 
13200  const Generator1 g1_;
13201  const Generator2 g2_;
13202  const Generator3 g3_;
13203  const Generator4 g4_;
13204  const Generator5 g5_;
13205  const Generator6 g6_;
13206  const Generator7 g7_;
13207 }; // class CartesianProductHolder7
13208 
13209 template <class Generator1, class Generator2, class Generator3,
13210  class Generator4, class Generator5, class Generator6, class Generator7,
13211  class Generator8>
13213  public:
13214 CartesianProductHolder8(const Generator1& g1, const Generator2& g2,
13215  const Generator3& g3, const Generator4& g4, const Generator5& g5,
13216  const Generator6& g6, const Generator7& g7, const Generator8& g8)
13217  : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7),
13218  g8_(g8) {}
13219  template <typename T1, typename T2, typename T3, typename T4, typename T5,
13220  typename T6, typename T7, typename T8>
13221  operator ParamGenerator< ::std::tuple<T1, T2, T3, T4, T5, T6, T7,
13222  T8> >() const {
13225  static_cast<ParamGenerator<T1> >(g1_),
13226  static_cast<ParamGenerator<T2> >(g2_),
13227  static_cast<ParamGenerator<T3> >(g3_),
13228  static_cast<ParamGenerator<T4> >(g4_),
13229  static_cast<ParamGenerator<T5> >(g5_),
13230  static_cast<ParamGenerator<T6> >(g6_),
13231  static_cast<ParamGenerator<T7> >(g7_),
13232  static_cast<ParamGenerator<T8> >(g8_)));
13233  }
13234 
13235  private:
13236  // No implementation - assignment is unsupported.
13237  void operator=(const CartesianProductHolder8& other);
13238 
13239  const Generator1 g1_;
13240  const Generator2 g2_;
13241  const Generator3 g3_;
13242  const Generator4 g4_;
13243  const Generator5 g5_;
13244  const Generator6 g6_;
13245  const Generator7 g7_;
13246  const Generator8 g8_;
13247 }; // class CartesianProductHolder8
13248 
13249 template <class Generator1, class Generator2, class Generator3,
13250  class Generator4, class Generator5, class Generator6, class Generator7,
13251  class Generator8, class Generator9>
13253  public:
13254 CartesianProductHolder9(const Generator1& g1, const Generator2& g2,
13255  const Generator3& g3, const Generator4& g4, const Generator5& g5,
13256  const Generator6& g6, const Generator7& g7, const Generator8& g8,
13257  const Generator9& g9)
13258  : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8),
13259  g9_(g9) {}
13260  template <typename T1, typename T2, typename T3, typename T4, typename T5,
13261  typename T6, typename T7, typename T8, typename T9>
13262  operator ParamGenerator< ::std::tuple<T1, T2, T3, T4, T5, T6, T7, T8,
13263  T9> >() const {
13266  static_cast<ParamGenerator<T1> >(g1_),
13267  static_cast<ParamGenerator<T2> >(g2_),
13268  static_cast<ParamGenerator<T3> >(g3_),
13269  static_cast<ParamGenerator<T4> >(g4_),
13270  static_cast<ParamGenerator<T5> >(g5_),
13271  static_cast<ParamGenerator<T6> >(g6_),
13272  static_cast<ParamGenerator<T7> >(g7_),
13273  static_cast<ParamGenerator<T8> >(g8_),
13274  static_cast<ParamGenerator<T9> >(g9_)));
13275  }
13276 
13277  private:
13278  // No implementation - assignment is unsupported.
13279  void operator=(const CartesianProductHolder9& other);
13280 
13281  const Generator1 g1_;
13282  const Generator2 g2_;
13283  const Generator3 g3_;
13284  const Generator4 g4_;
13285  const Generator5 g5_;
13286  const Generator6 g6_;
13287  const Generator7 g7_;
13288  const Generator8 g8_;
13289  const Generator9 g9_;
13290 }; // class CartesianProductHolder9
13291 
13292 template <class Generator1, class Generator2, class Generator3,
13293  class Generator4, class Generator5, class Generator6, class Generator7,
13294  class Generator8, class Generator9, class Generator10>
13296  public:
13297 CartesianProductHolder10(const Generator1& g1, const Generator2& g2,
13298  const Generator3& g3, const Generator4& g4, const Generator5& g5,
13299  const Generator6& g6, const Generator7& g7, const Generator8& g8,
13300  const Generator9& g9, const Generator10& g10)
13301  : g1_(g1), g2_(g2), g3_(g3), g4_(g4), g5_(g5), g6_(g6), g7_(g7), g8_(g8),
13302  g9_(g9), g10_(g10) {}
13303  template <typename T1, typename T2, typename T3, typename T4, typename T5,
13304  typename T6, typename T7, typename T8, typename T9, typename T10>
13305  operator ParamGenerator< ::std::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9,
13306  T10> >() const {
13307  return ParamGenerator< ::std::tuple<T1, T2, T3, T4, T5, T6, T7, T8, T9,
13308  T10> >(
13309  new CartesianProductGenerator10<T1, T2, T3, T4, T5, T6, T7, T8, T9,
13310  T10>(
13311  static_cast<ParamGenerator<T1> >(g1_),
13312  static_cast<ParamGenerator<T2> >(g2_),
13313  static_cast<ParamGenerator<T3> >(g3_),
13314  static_cast<ParamGenerator<T4> >(g4_),
13315  static_cast<ParamGenerator<T5> >(g5_),
13316  static_cast<ParamGenerator<T6> >(g6_),
13317  static_cast<ParamGenerator<T7> >(g7_),
13318  static_cast<ParamGenerator<T8> >(g8_),
13319  static_cast<ParamGenerator<T9> >(g9_),
13320  static_cast<ParamGenerator<T10> >(g10_)));
13321  }
13322 
13323  private:
13324  // No implementation - assignment is unsupported.
13325  void operator=(const CartesianProductHolder10& other);
13326 
13327  const Generator1 g1_;
13328  const Generator2 g2_;
13329  const Generator3 g3_;
13330  const Generator4 g4_;
13331  const Generator5 g5_;
13332  const Generator6 g6_;
13333  const Generator7 g7_;
13334  const Generator8 g8_;
13335  const Generator9 g9_;
13336  const Generator10 g10_;
13337 }; // class CartesianProductHolder10
13338 
13339 } // namespace internal
13340 } // namespace testing
13341 
13342 #endif // GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_
13343 
13344 namespace testing {
13345 
13346 // Functions producing parameter generators.
13347 //
13348 // Google Test uses these generators to produce parameters for value-
13349 // parameterized tests. When a parameterized test suite is instantiated
13350 // with a particular generator, Google Test creates and runs tests
13351 // for each element in the sequence produced by the generator.
13352 //
13353 // In the following sample, tests from test suite FooTest are instantiated
13354 // each three times with parameter values 3, 5, and 8:
13355 //
13356 // class FooTest : public TestWithParam<int> { ... };
13357 //
13358 // TEST_P(FooTest, TestThis) {
13359 // }
13360 // TEST_P(FooTest, TestThat) {
13361 // }
13362 // INSTANTIATE_TEST_SUITE_P(TestSequence, FooTest, Values(3, 5, 8));
13363 //
13364 
13365 // Range() returns generators providing sequences of values in a range.
13366 //
13367 // Synopsis:
13368 // Range(start, end)
13369 // - returns a generator producing a sequence of values {start, start+1,
13370 // start+2, ..., }.
13371 // Range(start, end, step)
13372 // - returns a generator producing a sequence of values {start, start+step,
13373 // start+step+step, ..., }.
13374 // Notes:
13375 // * The generated sequences never include end. For example, Range(1, 5)
13376 // returns a generator producing a sequence {1, 2, 3, 4}. Range(1, 9, 2)
13377 // returns a generator producing {1, 3, 5, 7}.
13378 // * start and end must have the same type. That type may be any integral or
13379 // floating-point type or a user defined type satisfying these conditions:
13380 // * It must be assignable (have operator=() defined).
13381 // * It must have operator+() (operator+(int-compatible type) for
13382 // two-operand version).
13383 // * It must have operator<() defined.
13384 // Elements in the resulting sequences will also have that type.
13385 // * Condition start < end must be satisfied in order for resulting sequences
13386 // to contain any elements.
13387 //
13388 template <typename T, typename IncrementT>
13389 internal::ParamGenerator<T> Range(T start, T end, IncrementT step) {
13391  new internal::RangeGenerator<T, IncrementT>(start, end, step));
13392 }
13393 
13394 template <typename T>
13396  return Range(start, end, 1);
13397 }
13398 
13399 // ValuesIn() function allows generation of tests with parameters coming from
13400 // a container.
13401 //
13402 // Synopsis:
13403 // ValuesIn(const T (&array)[N])
13404 // - returns a generator producing sequences with elements from
13405 // a C-style array.
13406 // ValuesIn(const Container& container)
13407 // - returns a generator producing sequences with elements from
13408 // an STL-style container.
13409 // ValuesIn(Iterator begin, Iterator end)
13410 // - returns a generator producing sequences with elements from
13411 // a range [begin, end) defined by a pair of STL-style iterators. These
13412 // iterators can also be plain C pointers.
13413 //
13414 // Please note that ValuesIn copies the values from the containers
13415 // passed in and keeps them to generate tests in RUN_ALL_TESTS().
13416 //
13417 // Examples:
13418 //
13419 // This instantiates tests from test suite StringTest
13420 // each with C-string values of "foo", "bar", and "baz":
13421 //
13422 // const char* strings[] = {"foo", "bar", "baz"};
13423 // INSTANTIATE_TEST_SUITE_P(StringSequence, StringTest, ValuesIn(strings));
13424 //
13425 // This instantiates tests from test suite StlStringTest
13426 // each with STL strings with values "a" and "b":
13427 //
13428 // ::std::vector< ::std::string> GetParameterStrings() {
13429 // ::std::vector< ::std::string> v;
13430 // v.push_back("a");
13431 // v.push_back("b");
13432 // return v;
13433 // }
13434 //
13435 // INSTANTIATE_TEST_SUITE_P(CharSequence,
13436 // StlStringTest,
13437 // ValuesIn(GetParameterStrings()));
13438 //
13439 //
13440 // This will also instantiate tests from CharTest
13441 // each with parameter values 'a' and 'b':
13442 //
13443 // ::std::list<char> GetParameterChars() {
13444 // ::std::list<char> list;
13445 // list.push_back('a');
13446 // list.push_back('b');
13447 // return list;
13448 // }
13449 // ::std::list<char> l = GetParameterChars();
13450 // INSTANTIATE_TEST_SUITE_P(CharSequence2,
13451 // CharTest,
13452 // ValuesIn(l.begin(), l.end()));
13453 //
13454 template <typename ForwardIterator>
13455 internal::ParamGenerator<
13456  typename ::testing::internal::IteratorTraits<ForwardIterator>::value_type>
13457 ValuesIn(ForwardIterator begin, ForwardIterator end) {
13458  typedef typename ::testing::internal::IteratorTraits<ForwardIterator>
13459  ::value_type ParamType;
13462 }
13463 
13464 template <typename T, size_t N>
13466  return ValuesIn(array, array + N);
13467 }
13468 
13469 template <class Container>
13471  const Container& container) {
13472  return ValuesIn(container.begin(), container.end());
13473 }
13474 
13475 // Values() allows generating tests from explicitly specified list of
13476 // parameters.
13477 //
13478 // Synopsis:
13479 // Values(T v1, T v2, ..., T vN)
13480 // - returns a generator producing sequences with elements v1, v2, ..., vN.
13481 //
13482 // For example, this instantiates tests from test suite BarTest each
13483 // with values "one", "two", and "three":
13484 //
13485 // INSTANTIATE_TEST_SUITE_P(NumSequence,
13486 // BarTest,
13487 // Values("one", "two", "three"));
13488 //
13489 // This instantiates tests from test suite BazTest each with values 1, 2, 3.5.
13490 // The exact type of values will depend on the type of parameter in BazTest.
13491 //
13492 // INSTANTIATE_TEST_SUITE_P(FloatingNumbers, BazTest, Values(1, 2, 3.5));
13493 //
13494 //
13495 template <typename... T>
13497  return internal::ValueArray<T...>(std::move(v)...);
13498 }
13499 
13500 // Bool() allows generating tests with parameters in a set of (false, true).
13501 //
13502 // Synopsis:
13503 // Bool()
13504 // - returns a generator producing sequences with elements {false, true}.
13505 //
13506 // It is useful when testing code that depends on Boolean flags. Combinations
13507 // of multiple flags can be tested when several Bool()'s are combined using
13508 // Combine() function.
13509 //
13510 // In the following example all tests in the test suite FlagDependentTest
13511 // will be instantiated twice with parameters false and true.
13512 //
13513 // class FlagDependentTest : public testing::TestWithParam<bool> {
13514 // virtual void SetUp() {
13515 // external_flag = GetParam();
13516 // }
13517 // }
13518 // INSTANTIATE_TEST_SUITE_P(BoolSequence, FlagDependentTest, Bool());
13519 //
13521  return Values(false, true);
13522 }
13523 
13524 // Combine() allows the user to combine two or more sequences to produce
13525 // values of a Cartesian product of those sequences' elements.
13526 //
13527 // Synopsis:
13528 // Combine(gen1, gen2, ..., genN)
13529 // - returns a generator producing sequences with elements coming from
13530 // the Cartesian product of elements from the sequences generated by
13531 // gen1, gen2, ..., genN. The sequence elements will have a type of
13532 // std::tuple<T1, T2, ..., TN> where T1, T2, ..., TN are the types
13533 // of elements from sequences produces by gen1, gen2, ..., genN.
13534 //
13535 // Combine can have up to 10 arguments.
13536 //
13537 // Example:
13538 //
13539 // This will instantiate tests in test suite AnimalTest each one with
13540 // the parameter values tuple("cat", BLACK), tuple("cat", WHITE),
13541 // tuple("dog", BLACK), and tuple("dog", WHITE):
13542 //
13543 // enum Color { BLACK, GRAY, WHITE };
13544 // class AnimalTest
13545 // : public testing::TestWithParam<std::tuple<const char*, Color> > {...};
13546 //
13547 // TEST_P(AnimalTest, AnimalLooksNice) {...}
13548 //
13549 // INSTANTIATE_TEST_SUITE_P(AnimalVariations, AnimalTest,
13550 // Combine(Values("cat", "dog"),
13551 // Values(BLACK, WHITE)));
13552 //
13553 // This will instantiate tests in FlagDependentTest with all variations of two
13554 // Boolean flags:
13555 //
13556 // class FlagDependentTest
13557 // : public testing::TestWithParam<std::tuple<bool, bool> > {
13558 // virtual void SetUp() {
13559 // // Assigns external_flag_1 and external_flag_2 values from the tuple.
13560 // std::tie(external_flag_1, external_flag_2) = GetParam();
13561 // }
13562 // };
13563 //
13564 // TEST_P(FlagDependentTest, TestFeature1) {
13565 // // Test your code using external_flag_1 and external_flag_2 here.
13566 // }
13567 // INSTANTIATE_TEST_SUITE_P(TwoBoolSequence, FlagDependentTest,
13568 // Combine(Bool(), Bool()));
13569 //
13570 template <typename Generator1, typename Generator2>
13572  const Generator1& g1, const Generator2& g2) {
13574  g1, g2);
13575 }
13576 
13577 template <typename Generator1, typename Generator2, typename Generator3>
13579  const Generator1& g1, const Generator2& g2, const Generator3& g3) {
13581  g1, g2, g3);
13582 }
13583 
13584 template <typename Generator1, typename Generator2, typename Generator3,
13585  typename Generator4>
13586 internal::CartesianProductHolder4<Generator1, Generator2, Generator3,
13587  Generator4> Combine(
13588  const Generator1& g1, const Generator2& g2, const Generator3& g3,
13589  const Generator4& g4) {
13590  return internal::CartesianProductHolder4<Generator1, Generator2, Generator3,
13591  Generator4>(
13592  g1, g2, g3, g4);
13593 }
13594 
13595 template <typename Generator1, typename Generator2, typename Generator3,
13596  typename Generator4, typename Generator5>
13597 internal::CartesianProductHolder5<Generator1, Generator2, Generator3,
13598  Generator4, Generator5> Combine(
13599  const Generator1& g1, const Generator2& g2, const Generator3& g3,
13600  const Generator4& g4, const Generator5& g5) {
13601  return internal::CartesianProductHolder5<Generator1, Generator2, Generator3,
13602  Generator4, Generator5>(
13603  g1, g2, g3, g4, g5);
13604 }
13605 
13606 template <typename Generator1, typename Generator2, typename Generator3,
13607  typename Generator4, typename Generator5, typename Generator6>
13608 internal::CartesianProductHolder6<Generator1, Generator2, Generator3,
13609  Generator4, Generator5, Generator6> Combine(
13610  const Generator1& g1, const Generator2& g2, const Generator3& g3,
13611  const Generator4& g4, const Generator5& g5, const Generator6& g6) {
13612  return internal::CartesianProductHolder6<Generator1, Generator2, Generator3,
13613  Generator4, Generator5, Generator6>(
13614  g1, g2, g3, g4, g5, g6);
13615 }
13616 
13617 template <typename Generator1, typename Generator2, typename Generator3,
13618  typename Generator4, typename Generator5, typename Generator6,
13619  typename Generator7>
13620 internal::CartesianProductHolder7<Generator1, Generator2, Generator3,
13621  Generator4, Generator5, Generator6, Generator7> Combine(
13622  const Generator1& g1, const Generator2& g2, const Generator3& g3,
13623  const Generator4& g4, const Generator5& g5, const Generator6& g6,
13624  const Generator7& g7) {
13625  return internal::CartesianProductHolder7<Generator1, Generator2, Generator3,
13626  Generator4, Generator5, Generator6, Generator7>(
13627  g1, g2, g3, g4, g5, g6, g7);
13628 }
13629 
13630 template <typename Generator1, typename Generator2, typename Generator3,
13631  typename Generator4, typename Generator5, typename Generator6,
13632  typename Generator7, typename Generator8>
13633 internal::CartesianProductHolder8<Generator1, Generator2, Generator3,
13634  Generator4, Generator5, Generator6, Generator7, Generator8> Combine(
13635  const Generator1& g1, const Generator2& g2, const Generator3& g3,
13636  const Generator4& g4, const Generator5& g5, const Generator6& g6,
13637  const Generator7& g7, const Generator8& g8) {
13638  return internal::CartesianProductHolder8<Generator1, Generator2, Generator3,
13639  Generator4, Generator5, Generator6, Generator7, Generator8>(
13640  g1, g2, g3, g4, g5, g6, g7, g8);
13641 }
13642 
13643 template <typename Generator1, typename Generator2, typename Generator3,
13644  typename Generator4, typename Generator5, typename Generator6,
13645  typename Generator7, typename Generator8, typename Generator9>
13646 internal::CartesianProductHolder9<Generator1, Generator2, Generator3,
13647  Generator4, Generator5, Generator6, Generator7, Generator8,
13648  Generator9> Combine(
13649  const Generator1& g1, const Generator2& g2, const Generator3& g3,
13650  const Generator4& g4, const Generator5& g5, const Generator6& g6,
13651  const Generator7& g7, const Generator8& g8, const Generator9& g9) {
13652  return internal::CartesianProductHolder9<Generator1, Generator2, Generator3,
13653  Generator4, Generator5, Generator6, Generator7, Generator8, Generator9>(
13654  g1, g2, g3, g4, g5, g6, g7, g8, g9);
13655 }
13656 
13657 template <typename Generator1, typename Generator2, typename Generator3,
13658  typename Generator4, typename Generator5, typename Generator6,
13659  typename Generator7, typename Generator8, typename Generator9,
13660  typename Generator10>
13661 internal::CartesianProductHolder10<Generator1, Generator2, Generator3,
13662  Generator4, Generator5, Generator6, Generator7, Generator8, Generator9,
13663  Generator10> Combine(
13664  const Generator1& g1, const Generator2& g2, const Generator3& g3,
13665  const Generator4& g4, const Generator5& g5, const Generator6& g6,
13666  const Generator7& g7, const Generator8& g8, const Generator9& g9,
13667  const Generator10& g10) {
13668  return internal::CartesianProductHolder10<Generator1, Generator2, Generator3,
13669  Generator4, Generator5, Generator6, Generator7, Generator8, Generator9,
13670  Generator10>(
13671  g1, g2, g3, g4, g5, g6, g7, g8, g9, g10);
13672 }
13673 
13674 #define TEST_P(test_suite_name, test_name) \
13675  class GTEST_TEST_CLASS_NAME_(test_suite_name, test_name) \
13676  : public test_suite_name { \
13677  public: \
13678  GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)() {} \
13679  virtual void TestBody(); \
13680  \
13681  private: \
13682  static int AddToRegistry() { \
13683  ::testing::UnitTest::GetInstance() \
13684  ->parameterized_test_registry() \
13685  .GetTestSuitePatternHolder<test_suite_name>( \
13686  #test_suite_name, \
13687  ::testing::internal::CodeLocation(__FILE__, __LINE__)) \
13688  ->AddTestPattern( \
13689  GTEST_STRINGIFY_(test_suite_name), GTEST_STRINGIFY_(test_name), \
13690  new ::testing::internal::TestMetaFactory<GTEST_TEST_CLASS_NAME_( \
13691  test_suite_name, test_name)>()); \
13692  return 0; \
13693  } \
13694  static int gtest_registering_dummy_ GTEST_ATTRIBUTE_UNUSED_; \
13695  GTEST_DISALLOW_COPY_AND_ASSIGN_(GTEST_TEST_CLASS_NAME_(test_suite_name, \
13696  test_name)); \
13697  }; \
13698  int GTEST_TEST_CLASS_NAME_(test_suite_name, \
13699  test_name)::gtest_registering_dummy_ = \
13700  GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)::AddToRegistry(); \
13701  void GTEST_TEST_CLASS_NAME_(test_suite_name, test_name)::TestBody()
13702 
13703 // The optional last argument to INSTANTIATE_TEST_SUITE_P allows the user
13704 // to specify a function or functor that generates custom test name suffixes
13705 // based on the test parameters. The function should accept one argument of
13706 // type testing::TestParamInfo<class ParamType>, and return std::string.
13707 //
13708 // testing::PrintToStringParamName is a builtin test suffix generator that
13709 // returns the value of testing::PrintToString(GetParam()).
13710 //
13711 // Note: test names must be non-empty, unique, and may only contain ASCII
13712 // alphanumeric characters or underscore. Because PrintToString adds quotes
13713 // to std::string and C strings, it won't work for these types.
13714 
13715 #define INSTANTIATE_TEST_SUITE_P(prefix, test_suite_name, generator, ...) \
13716  static ::testing::internal::ParamGenerator<test_suite_name::ParamType> \
13717  gtest_##prefix##test_suite_name##_EvalGenerator_() { \
13718  return generator; \
13719  } \
13720  static ::std::string gtest_##prefix##test_suite_name##_EvalGenerateName_( \
13721  const ::testing::TestParamInfo<test_suite_name::ParamType>& info) { \
13722  return ::testing::internal::GetParamNameGen<test_suite_name::ParamType>( \
13723  __VA_ARGS__)(info); \
13724  } \
13725  static int gtest_##prefix##test_suite_name##_dummy_ \
13726  GTEST_ATTRIBUTE_UNUSED_ = \
13727  ::testing::UnitTest::GetInstance() \
13728  ->parameterized_test_registry() \
13729  .GetTestSuitePatternHolder<test_suite_name>( \
13730  #test_suite_name, \
13731  ::testing::internal::CodeLocation(__FILE__, __LINE__)) \
13732  ->AddTestSuiteInstantiation( \
13733  #prefix, &gtest_##prefix##test_suite_name##_EvalGenerator_, \
13734  &gtest_##prefix##test_suite_name##_EvalGenerateName_, \
13735  __FILE__, __LINE__)
13736 
13737 // Legacy API is deprecated but still available
13738 #ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
13739 #define INSTANTIATE_TEST_CASE_P INSTANTIATE_TEST_SUITE_P
13740 #endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
13741 
13742 } // namespace testing
13743 
13744 #endif // GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_
13745 // Copyright 2006, Google Inc.
13746 // All rights reserved.
13747 //
13748 // Redistribution and use in source and binary forms, with or without
13749 // modification, are permitted provided that the following conditions are
13750 // met:
13751 //
13752 // * Redistributions of source code must retain the above copyright
13753 // notice, this list of conditions and the following disclaimer.
13754 // * Redistributions in binary form must reproduce the above
13755 // copyright notice, this list of conditions and the following disclaimer
13756 // in the documentation and/or other materials provided with the
13757 // distribution.
13758 // * Neither the name of Google Inc. nor the names of its
13759 // contributors may be used to endorse or promote products derived from
13760 // this software without specific prior written permission.
13761 //
13762 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
13763 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
13764 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
13765 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
13766 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
13767 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
13768 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
13769 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
13770 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
13771 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
13772 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
13773 
13774 //
13775 // Google C++ Testing and Mocking Framework definitions useful in production code.
13776 // GOOGLETEST_CM0003 DO NOT DELETE
13777 
13778 #ifndef GTEST_INCLUDE_GTEST_GTEST_PROD_H_
13779 #define GTEST_INCLUDE_GTEST_GTEST_PROD_H_
13780 
13781 // When you need to test the private or protected members of a class,
13782 // use the FRIEND_TEST macro to declare your tests as friends of the
13783 // class. For example:
13784 //
13785 // class MyClass {
13786 // private:
13787 // void PrivateMethod();
13788 // FRIEND_TEST(MyClassTest, PrivateMethodWorks);
13789 // };
13790 //
13791 // class MyClassTest : public testing::Test {
13792 // // ...
13793 // };
13794 //
13795 // TEST_F(MyClassTest, PrivateMethodWorks) {
13796 // // Can call MyClass::PrivateMethod() here.
13797 // }
13798 //
13799 // Note: The test class must be in the same namespace as the class being tested.
13800 // For example, putting MyClassTest in an anonymous namespace will not work.
13801 
13802 #define FRIEND_TEST(test_case_name, test_name)\
13803 friend class test_case_name##_##test_name##_Test
13804 
13805 #endif // GTEST_INCLUDE_GTEST_GTEST_PROD_H_
13806 // Copyright 2008, Google Inc.
13807 // All rights reserved.
13808 //
13809 // Redistribution and use in source and binary forms, with or without
13810 // modification, are permitted provided that the following conditions are
13811 // met:
13812 //
13813 // * Redistributions of source code must retain the above copyright
13814 // notice, this list of conditions and the following disclaimer.
13815 // * Redistributions in binary form must reproduce the above
13816 // copyright notice, this list of conditions and the following disclaimer
13817 // in the documentation and/or other materials provided with the
13818 // distribution.
13819 // * Neither the name of Google Inc. nor the names of its
13820 // contributors may be used to endorse or promote products derived from
13821 // this software without specific prior written permission.
13822 //
13823 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
13824 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
13825 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
13826 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
13827 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
13828 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
13829 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
13830 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
13831 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
13832 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
13833 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
13834 //
13835 // GOOGLETEST_CM0001 DO NOT DELETE
13836 
13837 #ifndef GTEST_INCLUDE_GTEST_GTEST_TEST_PART_H_
13838 #define GTEST_INCLUDE_GTEST_GTEST_TEST_PART_H_
13839 
13840 #include <iosfwd>
13841 #include <vector>
13842 
13844 /* class A needs to have dll-interface to be used by clients of class B */)
13845 
13846 namespace testing {
13847 
13848 // A copyable object representing the result of a test part (i.e. an
13849 // assertion or an explicit FAIL(), ADD_FAILURE(), or SUCCESS()).
13850 //
13851 // Don't inherit from TestPartResult as its destructor is not virtual.
13852 class GTEST_API_ TestPartResult {
13853  public:
13854  // The possible outcomes of a test part (i.e. an assertion or an
13855  // explicit SUCCEED(), FAIL(), or ADD_FAILURE()).
13856  enum Type {
13857  kSuccess, // Succeeded.
13858  kNonFatalFailure, // Failed but the test can continue.
13859  kFatalFailure, // Failed and the test should be terminated.
13860  kSkip // Skipped.
13861  };
13862 
13863  // C'tor. TestPartResult does NOT have a default constructor.
13864  // Always use this constructor (with parameters) to create a
13865  // TestPartResult object.
13866  TestPartResult(Type a_type, const char* a_file_name, int a_line_number,
13867  const char* a_message)
13868  : type_(a_type),
13869  file_name_(a_file_name == nullptr ? "" : a_file_name),
13870  line_number_(a_line_number),
13871  summary_(ExtractSummary(a_message)),
13872  message_(a_message) {}
13873 
13874  // Gets the outcome of the test part.
13875  Type type() const { return type_; }
13876 
13877  // Gets the name of the source file where the test part took place, or
13878  // NULL if it's unknown.
13879  const char* file_name() const {
13880  return file_name_.empty() ? nullptr : file_name_.c_str();
13881  }
13882 
13883  // Gets the line in the source file where the test part took place,
13884  // or -1 if it's unknown.
13885  int line_number() const { return line_number_; }
13886 
13887  // Gets the summary of the failure message.
13888  const char* summary() const { return summary_.c_str(); }
13889 
13890  // Gets the message associated with the test part.
13891  const char* message() const { return message_.c_str(); }
13892 
13893  // Returns true iff the test part was skipped.
13894  bool skipped() const { return type_ == kSkip; }
13895 
13896  // Returns true iff the test part passed.
13897  bool passed() const { return type_ == kSuccess; }
13898 
13899  // Returns true iff the test part non-fatally failed.
13900  bool nonfatally_failed() const { return type_ == kNonFatalFailure; }
13901 
13902  // Returns true iff the test part fatally failed.
13903  bool fatally_failed() const { return type_ == kFatalFailure; }
13904 
13905  // Returns true iff the test part failed.
13906  bool failed() const { return fatally_failed() || nonfatally_failed(); }
13907 
13908  private:
13909  Type type_;
13910 
13911  // Gets the summary of the failure message by omitting the stack
13912  // trace in it.
13913  static std::string ExtractSummary(const char* message);
13914 
13915  // The name of the source file where the test part took place, or
13916  // "" if the source file is unknown.
13917  std::string file_name_;
13918  // The line in the source file where the test part took place, or -1
13919  // if the line number is unknown.
13920  int line_number_;
13921  std::string summary_; // The test failure summary.
13922  std::string message_; // The test failure message.
13923 };
13924 
13925 // Prints a TestPartResult object.
13926 std::ostream& operator<<(std::ostream& os, const TestPartResult& result);
13927 
13928 // An array of TestPartResult objects.
13929 //
13930 // Don't inherit from TestPartResultArray as its destructor is not
13931 // virtual.
13932 class GTEST_API_ TestPartResultArray {
13933  public:
13934  TestPartResultArray() {}
13935 
13936  // Appends the given TestPartResult to the array.
13937  void Append(const TestPartResult& result);
13938 
13939  // Returns the TestPartResult at the given index (0-based).
13940  const TestPartResult& GetTestPartResult(int index) const;
13941 
13942  // Returns the number of TestPartResult objects in the array.
13943  int size() const;
13944 
13945  private:
13946  std::vector<TestPartResult> array_;
13947 
13948  GTEST_DISALLOW_COPY_AND_ASSIGN_(TestPartResultArray);
13949 };
13950 
13951 // This interface knows how to report a test part result.
13952 class GTEST_API_ TestPartResultReporterInterface {
13953  public:
13954  virtual ~TestPartResultReporterInterface() {}
13955 
13956  virtual void ReportTestPartResult(const TestPartResult& result) = 0;
13957 };
13958 
13959 namespace internal {
13960 
13961 // This helper class is used by {ASSERT|EXPECT}_NO_FATAL_FAILURE to check if a
13962 // statement generates new fatal failures. To do so it registers itself as the
13963 // current test part result reporter. Besides checking if fatal failures were
13964 // reported, it only delegates the reporting to the former result reporter.
13965 // The original result reporter is restored in the destructor.
13966 // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
13967 class GTEST_API_ HasNewFatalFailureHelper
13968  : public TestPartResultReporterInterface {
13969  public:
13970  HasNewFatalFailureHelper();
13971  ~HasNewFatalFailureHelper() override;
13972  void ReportTestPartResult(const TestPartResult& result) override;
13973  bool has_new_fatal_failure() const { return has_new_fatal_failure_; }
13974  private:
13975  bool has_new_fatal_failure_;
13976  TestPartResultReporterInterface* original_reporter_;
13977 
13978  GTEST_DISALLOW_COPY_AND_ASSIGN_(HasNewFatalFailureHelper);
13979 };
13980 
13981 } // namespace internal
13982 
13983 } // namespace testing
13984 
13986 
13987 #endif // GTEST_INCLUDE_GTEST_GTEST_TEST_PART_H_
13988 // Copyright 2008 Google Inc.
13989 // All Rights Reserved.
13990 //
13991 // Redistribution and use in source and binary forms, with or without
13992 // modification, are permitted provided that the following conditions are
13993 // met:
13994 //
13995 // * Redistributions of source code must retain the above copyright
13996 // notice, this list of conditions and the following disclaimer.
13997 // * Redistributions in binary form must reproduce the above
13998 // copyright notice, this list of conditions and the following disclaimer
13999 // in the documentation and/or other materials provided with the
14000 // distribution.
14001 // * Neither the name of Google Inc. nor the names of its
14002 // contributors may be used to endorse or promote products derived from
14003 // this software without specific prior written permission.
14004 //
14005 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
14006 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
14007 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
14008 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
14009 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
14010 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
14011 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
14012 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
14013 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
14014 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
14015 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
14016 
14017 
14018 // GOOGLETEST_CM0001 DO NOT DELETE
14019 
14020 #ifndef GTEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_
14021 #define GTEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_
14022 
14023 // This header implements typed tests and type-parameterized tests.
14024 
14025 // Typed (aka type-driven) tests repeat the same test for types in a
14026 // list. You must know which types you want to test with when writing
14027 // typed tests. Here's how you do it:
14028 
14029 #if 0
14030 
14031 // First, define a fixture class template. It should be parameterized
14032 // by a type. Remember to derive it from testing::Test.
14033 template <typename T>
14034 class FooTest : public testing::Test {
14035  public:
14036  ...
14037  typedef std::list<T> List;
14038  static T shared_;
14039  T value_;
14040 };
14041 
14042 // Next, associate a list of types with the test suite, which will be
14043 // repeated for each type in the list. The typedef is necessary for
14044 // the macro to parse correctly.
14045 typedef testing::Types<char, int, unsigned int> MyTypes;
14046 TYPED_TEST_SUITE(FooTest, MyTypes);
14047 
14048 // If the type list contains only one type, you can write that type
14049 // directly without Types<...>:
14050 // TYPED_TEST_SUITE(FooTest, int);
14051 
14052 // Then, use TYPED_TEST() instead of TEST_F() to define as many typed
14053 // tests for this test suite as you want.
14054 TYPED_TEST(FooTest, DoesBlah) {
14055  // Inside a test, refer to TypeParam to get the type parameter.
14056  // Since we are inside a derived class template, C++ requires use to
14057  // visit the members of FooTest via 'this'.
14058  TypeParam n = this->value_;
14059 
14060  // To visit static members of the fixture, add the TestFixture::
14061  // prefix.
14062  n += TestFixture::shared_;
14063 
14064  // To refer to typedefs in the fixture, add the "typename
14065  // TestFixture::" prefix.
14066  typename TestFixture::List values;
14067  values.push_back(n);
14068  ...
14069 }
14070 
14071 TYPED_TEST(FooTest, HasPropertyA) { ... }
14072 
14073 // TYPED_TEST_SUITE takes an optional third argument which allows to specify a
14074 // class that generates custom test name suffixes based on the type. This should
14075 // be a class which has a static template function GetName(int index) returning
14076 // a string for each type. The provided integer index equals the index of the
14077 // type in the provided type list. In many cases the index can be ignored.
14078 //
14079 // For example:
14080 // class MyTypeNames {
14081 // public:
14082 // template <typename T>
14083 // static std::string GetName(int) {
14084 // if (std::is_same<T, char>()) return "char";
14085 // if (std::is_same<T, int>()) return "int";
14086 // if (std::is_same<T, unsigned int>()) return "unsignedInt";
14087 // }
14088 // };
14089 // TYPED_TEST_SUITE(FooTest, MyTypes, MyTypeNames);
14090 
14091 #endif // 0
14092 
14093 // Type-parameterized tests are abstract test patterns parameterized
14094 // by a type. Compared with typed tests, type-parameterized tests
14095 // allow you to define the test pattern without knowing what the type
14096 // parameters are. The defined pattern can be instantiated with
14097 // different types any number of times, in any number of translation
14098 // units.
14099 //
14100 // If you are designing an interface or concept, you can define a
14101 // suite of type-parameterized tests to verify properties that any
14102 // valid implementation of the interface/concept should have. Then,
14103 // each implementation can easily instantiate the test suite to verify
14104 // that it conforms to the requirements, without having to write
14105 // similar tests repeatedly. Here's an example:
14106 
14107 #if 0
14108 
14109 // First, define a fixture class template. It should be parameterized
14110 // by a type. Remember to derive it from testing::Test.
14111 template <typename T>
14112 class FooTest : public testing::Test {
14113  ...
14114 };
14115 
14116 // Next, declare that you will define a type-parameterized test suite
14117 // (the _P suffix is for "parameterized" or "pattern", whichever you
14118 // prefer):
14119 TYPED_TEST_SUITE_P(FooTest);
14120 
14121 // Then, use TYPED_TEST_P() to define as many type-parameterized tests
14122 // for this type-parameterized test suite as you want.
14123 TYPED_TEST_P(FooTest, DoesBlah) {
14124  // Inside a test, refer to TypeParam to get the type parameter.
14125  TypeParam n = 0;
14126  ...
14127 }
14128 
14129 TYPED_TEST_P(FooTest, HasPropertyA) { ... }
14130 
14131 // Now the tricky part: you need to register all test patterns before
14132 // you can instantiate them. The first argument of the macro is the
14133 // test suite name; the rest are the names of the tests in this test
14134 // case.
14135 REGISTER_TYPED_TEST_SUITE_P(FooTest,
14136  DoesBlah, HasPropertyA);
14137 
14138 // Finally, you are free to instantiate the pattern with the types you
14139 // want. If you put the above code in a header file, you can #include
14140 // it in multiple C++ source files and instantiate it multiple times.
14141 //
14142 // To distinguish different instances of the pattern, the first
14143 // argument to the INSTANTIATE_* macro is a prefix that will be added
14144 // to the actual test suite name. Remember to pick unique prefixes for
14145 // different instances.
14146 typedef testing::Types<char, int, unsigned int> MyTypes;
14147 INSTANTIATE_TYPED_TEST_SUITE_P(My, FooTest, MyTypes);
14148 
14149 // If the type list contains only one type, you can write that type
14150 // directly without Types<...>:
14151 // INSTANTIATE_TYPED_TEST_SUITE_P(My, FooTest, int);
14152 //
14153 // Similar to the optional argument of TYPED_TEST_SUITE above,
14154 // INSTANTIATE_TEST_SUITE_P takes an optional fourth argument which allows to
14155 // generate custom names.
14156 // INSTANTIATE_TYPED_TEST_SUITE_P(My, FooTest, MyTypes, MyTypeNames);
14157 
14158 #endif // 0
14159 
14160 
14161 // Implements typed tests.
14162 
14163 #if GTEST_HAS_TYPED_TEST
14164 
14165 // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
14166 //
14167 // Expands to the name of the typedef for the type parameters of the
14168 // given test suite.
14169 #define GTEST_TYPE_PARAMS_(TestSuiteName) gtest_type_params_##TestSuiteName##_
14170 
14171 // Expands to the name of the typedef for the NameGenerator, responsible for
14172 // creating the suffixes of the name.
14173 #define GTEST_NAME_GENERATOR_(TestSuiteName) \
14174  gtest_type_params_##TestSuiteName##_NameGenerator
14175 
14176 // The 'Types' template argument below must have spaces around it
14177 // since some compilers may choke on '>>' when passing a template
14178 // instance (e.g. Types<int>)
14179 #define TYPED_TEST_SUITE(CaseName, Types, ...) \
14180  typedef ::testing::internal::TypeList<Types>::type GTEST_TYPE_PARAMS_( \
14181  CaseName); \
14182  typedef ::testing::internal::NameGeneratorSelector<__VA_ARGS__>::type \
14183  GTEST_NAME_GENERATOR_(CaseName)
14184 
14185 # define TYPED_TEST(CaseName, TestName) \
14186  template <typename gtest_TypeParam_> \
14187  class GTEST_TEST_CLASS_NAME_(CaseName, TestName) \
14188  : public CaseName<gtest_TypeParam_> { \
14189  private: \
14190  typedef CaseName<gtest_TypeParam_> TestFixture; \
14191  typedef gtest_TypeParam_ TypeParam; \
14192  virtual void TestBody(); \
14193  }; \
14194  static bool gtest_##CaseName##_##TestName##_registered_ \
14195  GTEST_ATTRIBUTE_UNUSED_ = \
14196  ::testing::internal::TypeParameterizedTest< \
14197  CaseName, \
14198  ::testing::internal::TemplateSel<GTEST_TEST_CLASS_NAME_(CaseName, \
14199  TestName)>, \
14200  GTEST_TYPE_PARAMS_( \
14201  CaseName)>::Register("", \
14202  ::testing::internal::CodeLocation( \
14203  __FILE__, __LINE__), \
14204  #CaseName, #TestName, 0, \
14205  ::testing::internal::GenerateNames< \
14206  GTEST_NAME_GENERATOR_(CaseName), \
14207  GTEST_TYPE_PARAMS_(CaseName)>()); \
14208  template <typename gtest_TypeParam_> \
14209  void GTEST_TEST_CLASS_NAME_(CaseName, \
14210  TestName)<gtest_TypeParam_>::TestBody()
14211 
14212 // Legacy API is deprecated but still available
14213 #ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
14214 #define TYPED_TEST_CASE TYPED_TEST_SUITE
14215 #endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
14216 
14217 #endif // GTEST_HAS_TYPED_TEST
14218 
14219 // Implements type-parameterized tests.
14220 
14221 #if GTEST_HAS_TYPED_TEST_P
14222 
14223 // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
14224 //
14225 // Expands to the namespace name that the type-parameterized tests for
14226 // the given type-parameterized test suite are defined in. The exact
14227 // name of the namespace is subject to change without notice.
14228 #define GTEST_SUITE_NAMESPACE_(TestSuiteName) gtest_suite_##TestSuiteName##_
14229 
14230 // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
14231 //
14232 // Expands to the name of the variable used to remember the names of
14233 // the defined tests in the given test suite.
14234 #define GTEST_TYPED_TEST_SUITE_P_STATE_(TestSuiteName) \
14235  gtest_typed_test_suite_p_state_##TestSuiteName##_
14236 
14237 // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE DIRECTLY.
14238 //
14239 // Expands to the name of the variable used to remember the names of
14240 // the registered tests in the given test suite.
14241 #define GTEST_REGISTERED_TEST_NAMES_(TestSuiteName) \
14242  gtest_registered_test_names_##TestSuiteName##_
14243 
14244 // The variables defined in the type-parameterized test macros are
14245 // static as typically these macros are used in a .h file that can be
14246 // #included in multiple translation units linked together.
14247 #define TYPED_TEST_SUITE_P(SuiteName) \
14248  static ::testing::internal::TypedTestSuitePState \
14249  GTEST_TYPED_TEST_SUITE_P_STATE_(SuiteName)
14250 
14251 // Legacy API is deprecated but still available
14252 #ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
14253 #define TYPED_TEST_CASE_P TYPED_TEST_SUITE_P
14254 #endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
14255 
14256 #define TYPED_TEST_P(SuiteName, TestName) \
14257  namespace GTEST_SUITE_NAMESPACE_(SuiteName) { \
14258  template <typename gtest_TypeParam_> \
14259  class TestName : public SuiteName<gtest_TypeParam_> { \
14260  private: \
14261  typedef SuiteName<gtest_TypeParam_> TestFixture; \
14262  typedef gtest_TypeParam_ TypeParam; \
14263  virtual void TestBody(); \
14264  }; \
14265  static bool gtest_##TestName##_defined_ GTEST_ATTRIBUTE_UNUSED_ = \
14266  GTEST_TYPED_TEST_SUITE_P_STATE_(SuiteName).AddTestName( \
14267  __FILE__, __LINE__, #SuiteName, #TestName); \
14268  } \
14269  template <typename gtest_TypeParam_> \
14270  void GTEST_SUITE_NAMESPACE_( \
14271  SuiteName)::TestName<gtest_TypeParam_>::TestBody()
14272 
14273 #define REGISTER_TYPED_TEST_SUITE_P(SuiteName, ...) \
14274  namespace GTEST_SUITE_NAMESPACE_(SuiteName) { \
14275  typedef ::testing::internal::Templates<__VA_ARGS__>::type gtest_AllTests_; \
14276  } \
14277  static const char* const GTEST_REGISTERED_TEST_NAMES_( \
14278  SuiteName) GTEST_ATTRIBUTE_UNUSED_ = \
14279  GTEST_TYPED_TEST_SUITE_P_STATE_(SuiteName).VerifyRegisteredTestNames( \
14280  __FILE__, __LINE__, #__VA_ARGS__)
14281 
14282 // Legacy API is deprecated but still available
14283 #ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
14284 #define REGISTER_TYPED_TEST_CASE_P REGISTER_TYPED_TEST_SUITE_P
14285 #endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
14286 
14287 // The 'Types' template argument below must have spaces around it
14288 // since some compilers may choke on '>>' when passing a template
14289 // instance (e.g. Types<int>)
14290 #define INSTANTIATE_TYPED_TEST_SUITE_P(Prefix, SuiteName, Types, ...) \
14291  static bool gtest_##Prefix##_##SuiteName GTEST_ATTRIBUTE_UNUSED_ = \
14292  ::testing::internal::TypeParameterizedTestSuite< \
14293  SuiteName, GTEST_SUITE_NAMESPACE_(SuiteName)::gtest_AllTests_, \
14294  ::testing::internal::TypeList<Types>::type>:: \
14295  Register(#Prefix, \
14296  ::testing::internal::CodeLocation(__FILE__, __LINE__), \
14297  &GTEST_TYPED_TEST_SUITE_P_STATE_(SuiteName), #SuiteName, \
14298  GTEST_REGISTERED_TEST_NAMES_(SuiteName), \
14299  ::testing::internal::GenerateNames< \
14300  ::testing::internal::NameGeneratorSelector< \
14301  __VA_ARGS__>::type, \
14302  ::testing::internal::TypeList<Types>::type>())
14303 
14304 // Legacy API is deprecated but still available
14305 #ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
14306 #define INSTANTIATE_TYPED_TEST_CASE_P INSTANTIATE_TYPED_TEST_SUITE_P
14307 #endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
14308 
14309 #endif // GTEST_HAS_TYPED_TEST_P
14310 
14311 #endif // GTEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_
14312 
14314 /* class A needs to have dll-interface to be used by clients of class B */)
14315 
14316 // Depending on the platform, different string classes are available.
14317 // On Linux, in addition to ::std::string, Google also makes use of
14318 // class ::string, which has the same interface as ::std::string, but
14319 // has a different implementation.
14320 //
14321 // You can define GTEST_HAS_GLOBAL_STRING to 1 to indicate that
14322 // ::string is available AND is a distinct type to ::std::string, or
14323 // define it to 0 to indicate otherwise.
14324 //
14325 // If ::std::string and ::string are the same class on your platform
14326 // due to aliasing, you should define GTEST_HAS_GLOBAL_STRING to 0.
14327 //
14328 // If you do not define GTEST_HAS_GLOBAL_STRING, it is defined
14329 // heuristically.
14330 
14331 namespace testing {
14332 
14333 // Silence C4100 (unreferenced formal parameter) and 4805
14334 // unsafe mix of type 'const int' and type 'const bool'
14335 #ifdef _MSC_VER
14336 # pragma warning(push)
14337 # pragma warning(disable:4805)
14338 # pragma warning(disable:4100)
14339 #endif
14340 
14341 
14342 // Declares the flags.
14343 
14344 // This flag temporary enables the disabled tests.
14345 GTEST_DECLARE_bool_(also_run_disabled_tests);
14346 
14347 // This flag brings the debugger on an assertion failure.
14348 GTEST_DECLARE_bool_(break_on_failure);
14349 
14350 // This flag controls whether Google Test catches all test-thrown exceptions
14351 // and logs them as failures.
14352 GTEST_DECLARE_bool_(catch_exceptions);
14353 
14354 // This flag enables using colors in terminal output. Available values are
14355 // "yes" to enable colors, "no" (disable colors), or "auto" (the default)
14356 // to let Google Test decide.
14357 GTEST_DECLARE_string_(color);
14358 
14359 // This flag sets up the filter to select by name using a glob pattern
14360 // the tests to run. If the filter is not given all tests are executed.
14362 
14363 // This flag controls whether Google Test installs a signal handler that dumps
14364 // debugging information when fatal signals are raised.
14365 GTEST_DECLARE_bool_(install_failure_signal_handler);
14366 
14367 // This flag causes the Google Test to list tests. None of the tests listed
14368 // are actually run if the flag is provided.
14369 GTEST_DECLARE_bool_(list_tests);
14370 
14371 // This flag controls whether Google Test emits a detailed XML report to a file
14372 // in addition to its normal textual output.
14373 GTEST_DECLARE_string_(output);
14374 
14375 // This flags control whether Google Test prints the elapsed time for each
14376 // test.
14377 GTEST_DECLARE_bool_(print_time);
14378 
14379 // This flags control whether Google Test prints UTF8 characters as text.
14380 GTEST_DECLARE_bool_(print_utf8);
14381 
14382 // This flag specifies the random number seed.
14383 GTEST_DECLARE_int32_(random_seed);
14384 
14385 // This flag sets how many times the tests are repeated. The default value
14386 // is 1. If the value is -1 the tests are repeating forever.
14388 
14389 // This flag controls whether Google Test includes Google Test internal
14390 // stack frames in failure stack traces.
14391 GTEST_DECLARE_bool_(show_internal_stack_frames);
14392 
14393 // When this flag is specified, tests' order is randomized on every iteration.
14394 GTEST_DECLARE_bool_(shuffle);
14395 
14396 // This flag specifies the maximum number of stack frames to be
14397 // printed in a failure message.
14398 GTEST_DECLARE_int32_(stack_trace_depth);
14399 
14400 // When this flag is specified, a failed assertion will throw an
14401 // exception if exceptions are enabled, or exit the program with a
14402 // non-zero code otherwise. For use with an external test framework.
14403 GTEST_DECLARE_bool_(throw_on_failure);
14404 
14405 // When this flag is set with a "host:port" string, on supported
14406 // platforms test results are streamed to the specified port on
14407 // the specified host machine.
14408 GTEST_DECLARE_string_(stream_result_to);
14409 
14410 #if GTEST_USE_OWN_FLAGFILE_FLAG_
14411 GTEST_DECLARE_string_(flagfile);
14412 #endif // GTEST_USE_OWN_FLAGFILE_FLAG_
14413 
14414 // The upper limit for valid stack trace depths.
14415 const int kMaxStackTraceDepth = 100;
14416 
14417 namespace internal {
14418 
14419 class AssertHelper;
14420 class DefaultGlobalTestPartResultReporter;
14421 class ExecDeathTest;
14422 class NoExecDeathTest;
14423 class FinalSuccessChecker;
14424 class GTestFlagSaver;
14425 class StreamingListenerTest;
14426 class TestResultAccessor;
14427 class TestEventListenersAccessor;
14428 class TestEventRepeater;
14429 class UnitTestRecordPropertyTestHelper;
14430 class WindowsDeathTest;
14431 class FuchsiaDeathTest;
14432 class UnitTestImpl* GetUnitTestImpl();
14433 void ReportFailureInUnknownLocation(TestPartResult::Type result_type,
14434  const std::string& message);
14435 
14436 } // namespace internal
14437 
14438 // The friend relationship of some of these classes is cyclic.
14439 // If we don't forward declare them the compiler might confuse the classes
14440 // in friendship clauses with same named classes on the scope.
14441 class Test;
14442 class TestSuite;
14443 
14444 // Old API is still available but deprecated
14445 #ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
14446 using TestCase = TestSuite;
14447 #endif
14448 class TestInfo;
14449 class UnitTest;
14450 
14451 // A class for indicating whether an assertion was successful. When
14452 // the assertion wasn't successful, the AssertionResult object
14453 // remembers a non-empty message that describes how it failed.
14454 //
14455 // To create an instance of this class, use one of the factory functions
14456 // (AssertionSuccess() and AssertionFailure()).
14457 //
14458 // This class is useful for two purposes:
14459 // 1. Defining predicate functions to be used with Boolean test assertions
14460 // EXPECT_TRUE/EXPECT_FALSE and their ASSERT_ counterparts
14461 // 2. Defining predicate-format functions to be
14462 // used with predicate assertions (ASSERT_PRED_FORMAT*, etc).
14463 //
14464 // For example, if you define IsEven predicate:
14465 //
14466 // testing::AssertionResult IsEven(int n) {
14467 // if ((n % 2) == 0)
14468 // return testing::AssertionSuccess();
14469 // else
14470 // return testing::AssertionFailure() << n << " is odd";
14471 // }
14472 //
14473 // Then the failed expectation EXPECT_TRUE(IsEven(Fib(5)))
14474 // will print the message
14475 //
14476 // Value of: IsEven(Fib(5))
14477 // Actual: false (5 is odd)
14478 // Expected: true
14479 //
14480 // instead of a more opaque
14481 //
14482 // Value of: IsEven(Fib(5))
14483 // Actual: false
14484 // Expected: true
14485 //
14486 // in case IsEven is a simple Boolean predicate.
14487 //
14488 // If you expect your predicate to be reused and want to support informative
14489 // messages in EXPECT_FALSE and ASSERT_FALSE (negative assertions show up
14490 // about half as often as positive ones in our tests), supply messages for
14491 // both success and failure cases:
14492 //
14493 // testing::AssertionResult IsEven(int n) {
14494 // if ((n % 2) == 0)
14495 // return testing::AssertionSuccess() << n << " is even";
14496 // else
14497 // return testing::AssertionFailure() << n << " is odd";
14498 // }
14499 //
14500 // Then a statement EXPECT_FALSE(IsEven(Fib(6))) will print
14501 //
14502 // Value of: IsEven(Fib(6))
14503 // Actual: true (8 is even)
14504 // Expected: false
14505 //
14506 // NB: Predicates that support negative Boolean assertions have reduced
14507 // performance in positive ones so be careful not to use them in tests
14508 // that have lots (tens of thousands) of positive Boolean assertions.
14509 //
14510 // To use this class with EXPECT_PRED_FORMAT assertions such as:
14511 //
14512 // // Verifies that Foo() returns an even number.
14513 // EXPECT_PRED_FORMAT1(IsEven, Foo());
14514 //
14515 // you need to define:
14516 //
14517 // testing::AssertionResult IsEven(const char* expr, int n) {
14518 // if ((n % 2) == 0)
14519 // return testing::AssertionSuccess();
14520 // else
14521 // return testing::AssertionFailure()
14522 // << "Expected: " << expr << " is even\n Actual: it's " << n;
14523 // }
14524 //
14525 // If Foo() returns 5, you will see the following message:
14526 //
14527 // Expected: Foo() is even
14528 // Actual: it's 5
14529 //
14530 class GTEST_API_ AssertionResult {
14531  public:
14532  // Copy constructor.
14533  // Used in EXPECT_TRUE/FALSE(assertion_result).
14534  AssertionResult(const AssertionResult& other);
14535 
14536 #if defined(_MSC_VER) && _MSC_VER < 1910
14537  GTEST_DISABLE_MSC_WARNINGS_PUSH_(4800 /* forcing value to bool */)
14538 #endif
14539 
14540  // Used in the EXPECT_TRUE/FALSE(bool_expression).
14541  //
14542  // T must be contextually convertible to bool.
14543  //
14544  // The second parameter prevents this overload from being considered if
14545  // the argument is implicitly convertible to AssertionResult. In that case
14546  // we want AssertionResult's copy constructor to be used.
14547  template <typename T>
14548  explicit AssertionResult(
14549  const T& success,
14550  typename internal::EnableIf<
14551  !internal::ImplicitlyConvertible<T, AssertionResult>::value>::type*
14552  /*enabler*/
14553  = nullptr)
14554  : success_(success) {}
14555 
14556 #if defined(_MSC_VER) && _MSC_VER < 1910
14558 #endif
14559 
14560  // Assignment operator.
14561  AssertionResult& operator=(AssertionResult other) {
14562  swap(other);
14563  return *this;
14564  }
14565 
14566  // Returns true iff the assertion succeeded.
14567  operator bool() const { return success_; } // NOLINT
14568 
14569  // Returns the assertion's negation. Used with EXPECT/ASSERT_FALSE.
14570  AssertionResult operator!() const;
14571 
14572  // Returns the text streamed into this AssertionResult. Test assertions
14573  // use it when they fail (i.e., the predicate's outcome doesn't match the
14574  // assertion's expectation). When nothing has been streamed into the
14575  // object, returns an empty string.
14576  const char* message() const {
14577  return message_.get() != nullptr ? message_->c_str() : "";
14578  }
14579  // Deprecated; please use message() instead.
14580  const char* failure_message() const { return message(); }
14581 
14582  // Streams a custom failure message into this object.
14583  template <typename T> AssertionResult& operator<<(const T& value) {
14584  AppendMessage(Message() << value);
14585  return *this;
14586  }
14587 
14588  // Allows streaming basic output manipulators such as endl or flush into
14589  // this object.
14590  AssertionResult& operator<<(
14591  ::std::ostream& (*basic_manipulator)(::std::ostream& stream)) {
14592  AppendMessage(Message() << basic_manipulator);
14593  return *this;
14594  }
14595 
14596  private:
14597  // Appends the contents of message to message_.
14598  void AppendMessage(const Message& a_message) {
14599  if (message_.get() == nullptr) message_.reset(new ::std::string);
14600  message_->append(a_message.GetString().c_str());
14601  }
14602 
14603  // Swap the contents of this AssertionResult with other.
14604  void swap(AssertionResult& other);
14605 
14606  // Stores result of the assertion predicate.
14607  bool success_;
14608  // Stores the message describing the condition in case the expectation
14609  // construct is not satisfied with the predicate's outcome.
14610  // Referenced via a pointer to avoid taking too much stack frame space
14611  // with test assertions.
14612  std::unique_ptr< ::std::string> message_;
14613 };
14614 
14615 // Makes a successful assertion result.
14616 GTEST_API_ AssertionResult AssertionSuccess();
14617 
14618 // Makes a failed assertion result.
14619 GTEST_API_ AssertionResult AssertionFailure();
14620 
14621 // Makes a failed assertion result with the given failure message.
14622 // Deprecated; use AssertionFailure() << msg.
14623 GTEST_API_ AssertionResult AssertionFailure(const Message& msg);
14624 
14625 } // namespace testing
14626 
14627 // Includes the auto-generated header that implements a family of generic
14628 // predicate assertion macros. This include comes late because it relies on
14629 // APIs declared above.
14630 // Copyright 2006, Google Inc.
14631 // All rights reserved.
14632 //
14633 // Redistribution and use in source and binary forms, with or without
14634 // modification, are permitted provided that the following conditions are
14635 // met:
14636 //
14637 // * Redistributions of source code must retain the above copyright
14638 // notice, this list of conditions and the following disclaimer.
14639 // * Redistributions in binary form must reproduce the above
14640 // copyright notice, this list of conditions and the following disclaimer
14641 // in the documentation and/or other materials provided with the
14642 // distribution.
14643 // * Neither the name of Google Inc. nor the names of its
14644 // contributors may be used to endorse or promote products derived from
14645 // this software without specific prior written permission.
14646 //
14647 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
14648 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
14649 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
14650 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
14651 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
14652 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
14653 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
14654 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
14655 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
14656 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
14657 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
14658 
14659 // This file is AUTOMATICALLY GENERATED on 01/02/2019 by command
14660 // 'gen_gtest_pred_impl.py 5'. DO NOT EDIT BY HAND!
14661 //
14662 // Implements a family of generic predicate assertion macros.
14663 // GOOGLETEST_CM0001 DO NOT DELETE
14664 
14665 #ifndef GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_
14666 #define GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_
14667 
14668 
14669 namespace testing {
14670 
14671 // This header implements a family of generic predicate assertion
14672 // macros:
14673 //
14674 // ASSERT_PRED_FORMAT1(pred_format, v1)
14675 // ASSERT_PRED_FORMAT2(pred_format, v1, v2)
14676 // ...
14677 //
14678 // where pred_format is a function or functor that takes n (in the
14679 // case of ASSERT_PRED_FORMATn) values and their source expression
14680 // text, and returns a testing::AssertionResult. See the definition
14681 // of ASSERT_EQ in gtest.h for an example.
14682 //
14683 // If you don't care about formatting, you can use the more
14684 // restrictive version:
14685 //
14686 // ASSERT_PRED1(pred, v1)
14687 // ASSERT_PRED2(pred, v1, v2)
14688 // ...
14689 //
14690 // where pred is an n-ary function or functor that returns bool,
14691 // and the values v1, v2, ..., must support the << operator for
14692 // streaming to std::ostream.
14693 //
14694 // We also define the EXPECT_* variations.
14695 //
14696 // For now we only support predicates whose arity is at most 5.
14697 // Please email googletestframework@googlegroups.com if you need
14698 // support for higher arities.
14699 
14700 // GTEST_ASSERT_ is the basic statement to which all of the assertions
14701 // in this file reduce. Don't use this in your code.
14702 
14703 #define GTEST_ASSERT_(expression, on_failure) \
14704  GTEST_AMBIGUOUS_ELSE_BLOCKER_ \
14705  if (const ::testing::AssertionResult gtest_ar = (expression)) \
14706  ; \
14707  else \
14708  on_failure(gtest_ar.failure_message())
14709 
14710 
14711 // Helper function for implementing {EXPECT|ASSERT}_PRED1. Don't use
14712 // this in your code.
14713 template <typename Pred,
14714  typename T1>
14715 AssertionResult AssertPred1Helper(const char* pred_text,
14716  const char* e1,
14717  Pred pred,
14718  const T1& v1) {
14719  if (pred(v1)) return AssertionSuccess();
14720 
14721  return AssertionFailure()
14722  << pred_text << "(" << e1 << ") evaluates to false, where"
14723  << "\n"
14724  << e1 << " evaluates to " << ::testing::PrintToString(v1);
14725 }
14726 
14727 // Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT1.
14728 // Don't use this in your code.
14729 #define GTEST_PRED_FORMAT1_(pred_format, v1, on_failure)\
14730  GTEST_ASSERT_(pred_format(#v1, v1), \
14731  on_failure)
14732 
14733 // Internal macro for implementing {EXPECT|ASSERT}_PRED1. Don't use
14734 // this in your code.
14735 #define GTEST_PRED1_(pred, v1, on_failure)\
14736  GTEST_ASSERT_(::testing::AssertPred1Helper(#pred, \
14737  #v1, \
14738  pred, \
14739  v1), on_failure)
14740 
14741 // Unary predicate assertion macros.
14742 #define EXPECT_PRED_FORMAT1(pred_format, v1) \
14743  GTEST_PRED_FORMAT1_(pred_format, v1, GTEST_NONFATAL_FAILURE_)
14744 #define EXPECT_PRED1(pred, v1) \
14745  GTEST_PRED1_(pred, v1, GTEST_NONFATAL_FAILURE_)
14746 #define ASSERT_PRED_FORMAT1(pred_format, v1) \
14747  GTEST_PRED_FORMAT1_(pred_format, v1, GTEST_FATAL_FAILURE_)
14748 #define ASSERT_PRED1(pred, v1) \
14749  GTEST_PRED1_(pred, v1, GTEST_FATAL_FAILURE_)
14750 
14751 
14752 
14753 // Helper function for implementing {EXPECT|ASSERT}_PRED2. Don't use
14754 // this in your code.
14755 template <typename Pred,
14756  typename T1,
14757  typename T2>
14758 AssertionResult AssertPred2Helper(const char* pred_text,
14759  const char* e1,
14760  const char* e2,
14761  Pred pred,
14762  const T1& v1,
14763  const T2& v2) {
14764  if (pred(v1, v2)) return AssertionSuccess();
14765 
14766  return AssertionFailure()
14767  << pred_text << "(" << e1 << ", " << e2
14768  << ") evaluates to false, where"
14769  << "\n"
14770  << e1 << " evaluates to " << ::testing::PrintToString(v1) << "\n"
14771  << e2 << " evaluates to " << ::testing::PrintToString(v2);
14772 }
14773 
14774 // Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT2.
14775 // Don't use this in your code.
14776 #define GTEST_PRED_FORMAT2_(pred_format, v1, v2, on_failure)\
14777  GTEST_ASSERT_(pred_format(#v1, #v2, v1, v2), \
14778  on_failure)
14779 
14780 // Internal macro for implementing {EXPECT|ASSERT}_PRED2. Don't use
14781 // this in your code.
14782 #define GTEST_PRED2_(pred, v1, v2, on_failure)\
14783  GTEST_ASSERT_(::testing::AssertPred2Helper(#pred, \
14784  #v1, \
14785  #v2, \
14786  pred, \
14787  v1, \
14788  v2), on_failure)
14789 
14790 // Binary predicate assertion macros.
14791 #define EXPECT_PRED_FORMAT2(pred_format, v1, v2) \
14792  GTEST_PRED_FORMAT2_(pred_format, v1, v2, GTEST_NONFATAL_FAILURE_)
14793 #define EXPECT_PRED2(pred, v1, v2) \
14794  GTEST_PRED2_(pred, v1, v2, GTEST_NONFATAL_FAILURE_)
14795 #define ASSERT_PRED_FORMAT2(pred_format, v1, v2) \
14796  GTEST_PRED_FORMAT2_(pred_format, v1, v2, GTEST_FATAL_FAILURE_)
14797 #define ASSERT_PRED2(pred, v1, v2) \
14798  GTEST_PRED2_(pred, v1, v2, GTEST_FATAL_FAILURE_)
14799 
14800 
14801 
14802 // Helper function for implementing {EXPECT|ASSERT}_PRED3. Don't use
14803 // this in your code.
14804 template <typename Pred,
14805  typename T1,
14806  typename T2,
14807  typename T3>
14808 AssertionResult AssertPred3Helper(const char* pred_text,
14809  const char* e1,
14810  const char* e2,
14811  const char* e3,
14812  Pred pred,
14813  const T1& v1,
14814  const T2& v2,
14815  const T3& v3) {
14816  if (pred(v1, v2, v3)) return AssertionSuccess();
14817 
14818  return AssertionFailure()
14819  << pred_text << "(" << e1 << ", " << e2 << ", " << e3
14820  << ") evaluates to false, where"
14821  << "\n"
14822  << e1 << " evaluates to " << ::testing::PrintToString(v1) << "\n"
14823  << e2 << " evaluates to " << ::testing::PrintToString(v2) << "\n"
14824  << e3 << " evaluates to " << ::testing::PrintToString(v3);
14825 }
14826 
14827 // Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT3.
14828 // Don't use this in your code.
14829 #define GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, on_failure)\
14830  GTEST_ASSERT_(pred_format(#v1, #v2, #v3, v1, v2, v3), \
14831  on_failure)
14832 
14833 // Internal macro for implementing {EXPECT|ASSERT}_PRED3. Don't use
14834 // this in your code.
14835 #define GTEST_PRED3_(pred, v1, v2, v3, on_failure)\
14836  GTEST_ASSERT_(::testing::AssertPred3Helper(#pred, \
14837  #v1, \
14838  #v2, \
14839  #v3, \
14840  pred, \
14841  v1, \
14842  v2, \
14843  v3), on_failure)
14844 
14845 // Ternary predicate assertion macros.
14846 #define EXPECT_PRED_FORMAT3(pred_format, v1, v2, v3) \
14847  GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, GTEST_NONFATAL_FAILURE_)
14848 #define EXPECT_PRED3(pred, v1, v2, v3) \
14849  GTEST_PRED3_(pred, v1, v2, v3, GTEST_NONFATAL_FAILURE_)
14850 #define ASSERT_PRED_FORMAT3(pred_format, v1, v2, v3) \
14851  GTEST_PRED_FORMAT3_(pred_format, v1, v2, v3, GTEST_FATAL_FAILURE_)
14852 #define ASSERT_PRED3(pred, v1, v2, v3) \
14853  GTEST_PRED3_(pred, v1, v2, v3, GTEST_FATAL_FAILURE_)
14854 
14855 
14856 
14857 // Helper function for implementing {EXPECT|ASSERT}_PRED4. Don't use
14858 // this in your code.
14859 template <typename Pred,
14860  typename T1,
14861  typename T2,
14862  typename T3,
14863  typename T4>
14864 AssertionResult AssertPred4Helper(const char* pred_text,
14865  const char* e1,
14866  const char* e2,
14867  const char* e3,
14868  const char* e4,
14869  Pred pred,
14870  const T1& v1,
14871  const T2& v2,
14872  const T3& v3,
14873  const T4& v4) {
14874  if (pred(v1, v2, v3, v4)) return AssertionSuccess();
14875 
14876  return AssertionFailure()
14877  << pred_text << "(" << e1 << ", " << e2 << ", " << e3 << ", " << e4
14878  << ") evaluates to false, where"
14879  << "\n"
14880  << e1 << " evaluates to " << ::testing::PrintToString(v1) << "\n"
14881  << e2 << " evaluates to " << ::testing::PrintToString(v2) << "\n"
14882  << e3 << " evaluates to " << ::testing::PrintToString(v3) << "\n"
14883  << e4 << " evaluates to " << ::testing::PrintToString(v4);
14884 }
14885 
14886 // Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT4.
14887 // Don't use this in your code.
14888 #define GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, on_failure)\
14889  GTEST_ASSERT_(pred_format(#v1, #v2, #v3, #v4, v1, v2, v3, v4), \
14890  on_failure)
14891 
14892 // Internal macro for implementing {EXPECT|ASSERT}_PRED4. Don't use
14893 // this in your code.
14894 #define GTEST_PRED4_(pred, v1, v2, v3, v4, on_failure)\
14895  GTEST_ASSERT_(::testing::AssertPred4Helper(#pred, \
14896  #v1, \
14897  #v2, \
14898  #v3, \
14899  #v4, \
14900  pred, \
14901  v1, \
14902  v2, \
14903  v3, \
14904  v4), on_failure)
14905 
14906 // 4-ary predicate assertion macros.
14907 #define EXPECT_PRED_FORMAT4(pred_format, v1, v2, v3, v4) \
14908  GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, GTEST_NONFATAL_FAILURE_)
14909 #define EXPECT_PRED4(pred, v1, v2, v3, v4) \
14910  GTEST_PRED4_(pred, v1, v2, v3, v4, GTEST_NONFATAL_FAILURE_)
14911 #define ASSERT_PRED_FORMAT4(pred_format, v1, v2, v3, v4) \
14912  GTEST_PRED_FORMAT4_(pred_format, v1, v2, v3, v4, GTEST_FATAL_FAILURE_)
14913 #define ASSERT_PRED4(pred, v1, v2, v3, v4) \
14914  GTEST_PRED4_(pred, v1, v2, v3, v4, GTEST_FATAL_FAILURE_)
14915 
14916 
14917 
14918 // Helper function for implementing {EXPECT|ASSERT}_PRED5. Don't use
14919 // this in your code.
14920 template <typename Pred,
14921  typename T1,
14922  typename T2,
14923  typename T3,
14924  typename T4,
14925  typename T5>
14926 AssertionResult AssertPred5Helper(const char* pred_text,
14927  const char* e1,
14928  const char* e2,
14929  const char* e3,
14930  const char* e4,
14931  const char* e5,
14932  Pred pred,
14933  const T1& v1,
14934  const T2& v2,
14935  const T3& v3,
14936  const T4& v4,
14937  const T5& v5) {
14938  if (pred(v1, v2, v3, v4, v5)) return AssertionSuccess();
14939 
14940  return AssertionFailure()
14941  << pred_text << "(" << e1 << ", " << e2 << ", " << e3 << ", " << e4
14942  << ", " << e5 << ") evaluates to false, where"
14943  << "\n"
14944  << e1 << " evaluates to " << ::testing::PrintToString(v1) << "\n"
14945  << e2 << " evaluates to " << ::testing::PrintToString(v2) << "\n"
14946  << e3 << " evaluates to " << ::testing::PrintToString(v3) << "\n"
14947  << e4 << " evaluates to " << ::testing::PrintToString(v4) << "\n"
14948  << e5 << " evaluates to " << ::testing::PrintToString(v5);
14949 }
14950 
14951 // Internal macro for implementing {EXPECT|ASSERT}_PRED_FORMAT5.
14952 // Don't use this in your code.
14953 #define GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, on_failure)\
14954  GTEST_ASSERT_(pred_format(#v1, #v2, #v3, #v4, #v5, v1, v2, v3, v4, v5), \
14955  on_failure)
14956 
14957 // Internal macro for implementing {EXPECT|ASSERT}_PRED5. Don't use
14958 // this in your code.
14959 #define GTEST_PRED5_(pred, v1, v2, v3, v4, v5, on_failure)\
14960  GTEST_ASSERT_(::testing::AssertPred5Helper(#pred, \
14961  #v1, \
14962  #v2, \
14963  #v3, \
14964  #v4, \
14965  #v5, \
14966  pred, \
14967  v1, \
14968  v2, \
14969  v3, \
14970  v4, \
14971  v5), on_failure)
14972 
14973 // 5-ary predicate assertion macros.
14974 #define EXPECT_PRED_FORMAT5(pred_format, v1, v2, v3, v4, v5) \
14975  GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, GTEST_NONFATAL_FAILURE_)
14976 #define EXPECT_PRED5(pred, v1, v2, v3, v4, v5) \
14977  GTEST_PRED5_(pred, v1, v2, v3, v4, v5, GTEST_NONFATAL_FAILURE_)
14978 #define ASSERT_PRED_FORMAT5(pred_format, v1, v2, v3, v4, v5) \
14979  GTEST_PRED_FORMAT5_(pred_format, v1, v2, v3, v4, v5, GTEST_FATAL_FAILURE_)
14980 #define ASSERT_PRED5(pred, v1, v2, v3, v4, v5) \
14981  GTEST_PRED5_(pred, v1, v2, v3, v4, v5, GTEST_FATAL_FAILURE_)
14982 
14983 
14984 
14985 } // namespace testing
14986 
14987 #endif // GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_
14988 
14989 namespace testing {
14990 
14991 // The abstract class that all tests inherit from.
14992 //
14993 // In Google Test, a unit test program contains one or many TestSuites, and
14994 // each TestSuite contains one or many Tests.
14995 //
14996 // When you define a test using the TEST macro, you don't need to
14997 // explicitly derive from Test - the TEST macro automatically does
14998 // this for you.
14999 //
15000 // The only time you derive from Test is when defining a test fixture
15001 // to be used in a TEST_F. For example:
15002 //
15003 // class FooTest : public testing::Test {
15004 // protected:
15005 // void SetUp() override { ... }
15006 // void TearDown() override { ... }
15007 // ...
15008 // };
15009 //
15010 // TEST_F(FooTest, Bar) { ... }
15011 // TEST_F(FooTest, Baz) { ... }
15012 //
15013 // Test is not copyable.
15015  public:
15016  friend class TestInfo;
15017 
15018  // The d'tor is virtual as we intend to inherit from Test.
15019  virtual ~Test();
15020 
15021  // Sets up the stuff shared by all tests in this test case.
15022  //
15023  // Google Test will call Foo::SetUpTestSuite() before running the first
15024  // test in test case Foo. Hence a sub-class can define its own
15025  // SetUpTestSuite() method to shadow the one defined in the super
15026  // class.
15027  static void SetUpTestSuite() {}
15028 
15029  // Tears down the stuff shared by all tests in this test case.
15030  //
15031  // Google Test will call Foo::TearDownTestSuite() after running the last
15032  // test in test case Foo. Hence a sub-class can define its own
15033  // TearDownTestSuite() method to shadow the one defined in the super
15034  // class.
15035  static void TearDownTestSuite() {}
15036 
15037  // Legacy API is deprecated but still available
15038 #ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
15039  static void TearDownTestCase() {}
15040  static void SetUpTestCase() {}
15041 #endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
15042 
15043  // Returns true iff the current test has a fatal failure.
15044  static bool HasFatalFailure();
15045 
15046  // Returns true iff the current test has a non-fatal failure.
15047  static bool HasNonfatalFailure();
15048 
15049  // Returns true iff the current test was skipped.
15050  static bool IsSkipped();
15051 
15052  // Returns true iff the current test has a (either fatal or
15053  // non-fatal) failure.
15054  static bool HasFailure() { return HasFatalFailure() || HasNonfatalFailure(); }
15055 
15056  // Logs a property for the current test, test suite, or for the entire
15057  // invocation of the test program when used outside of the context of a
15058  // test suite. Only the last value for a given key is remembered. These
15059  // are public static so they can be called from utility functions that are
15060  // not members of the test fixture. Calls to RecordProperty made during
15061  // lifespan of the test (from the moment its constructor starts to the
15062  // moment its destructor finishes) will be output in XML as attributes of
15063  // the <testcase> element. Properties recorded from fixture's
15064  // SetUpTestSuite or TearDownTestSuite are logged as attributes of the
15065  // corresponding <testsuite> element. Calls to RecordProperty made in the
15066  // global context (before or after invocation of RUN_ALL_TESTS and from
15067  // SetUp/TearDown method of Environment objects registered with Google
15068  // Test) will be output as attributes of the <testsuites> element.
15069  static void RecordProperty(const std::string& key, const std::string& value);
15070  static void RecordProperty(const std::string& key, int value);
15071 
15072  protected:
15073  // Creates a Test object.
15074  Test();
15075 
15076  // Sets up the test fixture.
15077  virtual void SetUp();
15078 
15079  // Tears down the test fixture.
15080  virtual void TearDown();
15081 
15082  private:
15083  // Returns true iff the current test has the same fixture class as
15084  // the first test in the current test suite.
15085  static bool HasSameFixtureClass();
15086 
15087  // Runs the test after the test fixture has been set up.
15088  //
15089  // A sub-class must implement this to define the test logic.
15090  //
15091  // DO NOT OVERRIDE THIS FUNCTION DIRECTLY IN A USER PROGRAM.
15092  // Instead, use the TEST or TEST_F macro.
15093  virtual void TestBody() = 0;
15094 
15095  // Sets up, executes, and tears down the test.
15096  void Run();
15097 
15098  // Deletes self. We deliberately pick an unusual name for this
15099  // internal method to avoid clashing with names used in user TESTs.
15100  void DeleteSelf_() { delete this; }
15101 
15102  const std::unique_ptr<GTEST_FLAG_SAVER_> gtest_flag_saver_;
15103 
15104  // Often a user misspells SetUp() as Setup() and spends a long time
15105  // wondering why it is never called by Google Test. The declaration of
15106  // the following method is solely for catching such an error at
15107  // compile time:
15108  //
15109  // - The return type is deliberately chosen to be not void, so it
15110  // will be a conflict if void Setup() is declared in the user's
15111  // test fixture.
15112  //
15113  // - This method is private, so it will be another compiler error
15114  // if the method is called from the user's test fixture.
15115  //
15116  // DO NOT OVERRIDE THIS FUNCTION.
15117  //
15118  // If you see an error about overriding the following function or
15119  // about it being private, you have mis-spelled SetUp() as Setup().
15120  struct Setup_should_be_spelled_SetUp {};
15121  virtual Setup_should_be_spelled_SetUp* Setup() { return nullptr; }
15122 
15123  // We disallow copying Tests.
15125 };
15126 
15128 
15129 // A copyable object representing a user specified test property which can be
15130 // output as a key/value string pair.
15131 //
15132 // Don't inherit from TestProperty as its destructor is not virtual.
15134  public:
15135  // C'tor. TestProperty does NOT have a default constructor.
15136  // Always use this constructor (with parameters) to create a
15137  // TestProperty object.
15138  TestProperty(const std::string& a_key, const std::string& a_value) :
15139  key_(a_key), value_(a_value) {
15140  }
15141 
15142  // Gets the user supplied key.
15143  const char* key() const {
15144  return key_.c_str();
15145  }
15146 
15147  // Gets the user supplied value.
15148  const char* value() const {
15149  return value_.c_str();
15150  }
15151 
15152  // Sets a new value, overriding the one supplied in the constructor.
15153  void SetValue(const std::string& new_value) {
15154  value_ = new_value;
15155  }
15156 
15157  private:
15158  // The key supplied by the user.
15159  std::string key_;
15160  // The value supplied by the user.
15161  std::string value_;
15162 };
15163 
15164 // The result of a single Test. This includes a list of
15165 // TestPartResults, a list of TestProperties, a count of how many
15166 // death tests there are in the Test, and how much time it took to run
15167 // the Test.
15168 //
15169 // TestResult is not copyable.
15171  public:
15172  // Creates an empty TestResult.
15173  TestResult();
15174 
15175  // D'tor. Do not inherit from TestResult.
15176  ~TestResult();
15177 
15178  // Gets the number of all test parts. This is the sum of the number
15179  // of successful test parts and the number of failed test parts.
15180  int total_part_count() const;
15181 
15182  // Returns the number of the test properties.
15183  int test_property_count() const;
15184 
15185  // Returns true iff the test passed (i.e. no test part failed).
15186  bool Passed() const { return !Skipped() && !Failed(); }
15187 
15188  // Returns true iff the test was skipped.
15189  bool Skipped() const;
15190 
15191  // Returns true iff the test failed.
15192  bool Failed() const;
15193 
15194  // Returns true iff the test fatally failed.
15195  bool HasFatalFailure() const;
15196 
15197  // Returns true iff the test has a non-fatal failure.
15198  bool HasNonfatalFailure() const;
15199 
15200  // Returns the elapsed time, in milliseconds.
15201  TimeInMillis elapsed_time() const { return elapsed_time_; }
15202 
15203  // Returns the i-th test part result among all the results. i can range from 0
15204  // to total_part_count() - 1. If i is not in that range, aborts the program.
15205  const TestPartResult& GetTestPartResult(int i) const;
15206 
15207  // Returns the i-th test property. i can range from 0 to
15208  // test_property_count() - 1. If i is not in that range, aborts the
15209  // program.
15210  const TestProperty& GetTestProperty(int i) const;
15211 
15212  private:
15213  friend class TestInfo;
15214  friend class TestSuite;
15215  friend class UnitTest;
15216  friend class internal::DefaultGlobalTestPartResultReporter;
15217  friend class internal::ExecDeathTest;
15218  friend class internal::TestResultAccessor;
15219  friend class internal::UnitTestImpl;
15220  friend class internal::WindowsDeathTest;
15221  friend class internal::FuchsiaDeathTest;
15222 
15223  // Gets the vector of TestPartResults.
15224  const std::vector<TestPartResult>& test_part_results() const {
15225  return test_part_results_;
15226  }
15227 
15228  // Gets the vector of TestProperties.
15229  const std::vector<TestProperty>& test_properties() const {
15230  return test_properties_;
15231  }
15232 
15233  // Sets the elapsed time.
15234  void set_elapsed_time(TimeInMillis elapsed) { elapsed_time_ = elapsed; }
15235 
15236  // Adds a test property to the list. The property is validated and may add
15237  // a non-fatal failure if invalid (e.g., if it conflicts with reserved
15238  // key names). If a property is already recorded for the same key, the
15239  // value will be updated, rather than storing multiple values for the same
15240  // key. xml_element specifies the element for which the property is being
15241  // recorded and is used for validation.
15242  void RecordProperty(const std::string& xml_element,
15243  const TestProperty& test_property);
15244 
15245  // Adds a failure if the key is a reserved attribute of Google Test
15246  // testsuite tags. Returns true if the property is valid.
15247  // FIXME: Validate attribute names are legal and human readable.
15248  static bool ValidateTestProperty(const std::string& xml_element,
15249  const TestProperty& test_property);
15250 
15251  // Adds a test part result to the list.
15252  void AddTestPartResult(const TestPartResult& test_part_result);
15253 
15254  // Returns the death test count.
15255  int death_test_count() const { return death_test_count_; }
15256 
15257  // Increments the death test count, returning the new count.
15258  int increment_death_test_count() { return ++death_test_count_; }
15259 
15260  // Clears the test part results.
15261  void ClearTestPartResults();
15262 
15263  // Clears the object.
15264  void Clear();
15265 
15266  // Protects mutable state of the property vector and of owned
15267  // properties, whose values may be updated.
15268  internal::Mutex test_properites_mutex_;
15269 
15270  // The vector of TestPartResults
15271  std::vector<TestPartResult> test_part_results_;
15272  // The vector of TestProperties
15273  std::vector<TestProperty> test_properties_;
15274  // Running count of death tests.
15275  int death_test_count_;
15276  // The elapsed time, in milliseconds.
15277  TimeInMillis elapsed_time_;
15278 
15279  // We disallow copying TestResult.
15280  GTEST_DISALLOW_COPY_AND_ASSIGN_(TestResult);
15281 }; // class TestResult
15282 
15283 // A TestInfo object stores the following information about a test:
15284 //
15285 // Test suite name
15286 // Test name
15287 // Whether the test should be run
15288 // A function pointer that creates the test object when invoked
15289 // Test result
15290 //
15291 // The constructor of TestInfo registers itself with the UnitTest
15292 // singleton such that the RUN_ALL_TESTS() macro knows which tests to
15293 // run.
15295  public:
15296  // Destructs a TestInfo object. This function is not virtual, so
15297  // don't inherit from TestInfo.
15298  ~TestInfo();
15299 
15300  // Returns the test suite name.
15301  const char* test_suite_name() const { return test_suite_name_.c_str(); }
15302 
15303 // Legacy API is deprecated but still available
15304 #ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
15305  const char* test_case_name() const { return test_suite_name(); }
15306 #endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
15307 
15308  // Returns the test name.
15309  const char* name() const { return name_.c_str(); }
15310 
15311  // Returns the name of the parameter type, or NULL if this is not a typed
15312  // or a type-parameterized test.
15313  const char* type_param() const {
15314  if (type_param_.get() != nullptr) return type_param_->c_str();
15315  return nullptr;
15316  }
15317 
15318  // Returns the text representation of the value parameter, or NULL if this
15319  // is not a value-parameterized test.
15320  const char* value_param() const {
15321  if (value_param_.get() != nullptr) return value_param_->c_str();
15322  return nullptr;
15323  }
15324 
15325  // Returns the file name where this test is defined.
15326  const char* file() const { return location_.file.c_str(); }
15327 
15328  // Returns the line where this test is defined.
15329  int line() const { return location_.line; }
15330 
15331  // Return true if this test should not be run because it's in another shard.
15332  bool is_in_another_shard() const { return is_in_another_shard_; }
15333 
15334  // Returns true if this test should run, that is if the test is not
15335  // disabled (or it is disabled but the also_run_disabled_tests flag has
15336  // been specified) and its full name matches the user-specified filter.
15337  //
15338  // Google Test allows the user to filter the tests by their full names.
15339  // The full name of a test Bar in test suite Foo is defined as
15340  // "Foo.Bar". Only the tests that match the filter will run.
15341  //
15342  // A filter is a colon-separated list of glob (not regex) patterns,
15343  // optionally followed by a '-' and a colon-separated list of
15344  // negative patterns (tests to exclude). A test is run if it
15345  // matches one of the positive patterns and does not match any of
15346  // the negative patterns.
15347  //
15348  // For example, *A*:Foo.* is a filter that matches any string that
15349  // contains the character 'A' or starts with "Foo.".
15350  bool should_run() const { return should_run_; }
15351 
15352  // Returns true iff this test will appear in the XML report.
15353  bool is_reportable() const {
15354  // The XML report includes tests matching the filter, excluding those
15355  // run in other shards.
15356  return matches_filter_ && !is_in_another_shard_;
15357  }
15358 
15359  // Returns the result of the test.
15360  const TestResult* result() const { return &result_; }
15361 
15362  private:
15363 #if GTEST_HAS_DEATH_TEST
15364  friend class internal::DefaultDeathTestFactory;
15365 #endif // GTEST_HAS_DEATH_TEST
15366  friend class Test;
15367  friend class TestSuite;
15368  friend class internal::UnitTestImpl;
15369  friend class internal::StreamingListenerTest;
15371  const char* test_suite_name, const char* name, const char* type_param,
15372  const char* value_param, internal::CodeLocation code_location,
15373  internal::TypeId fixture_class_id, internal::SetUpTestSuiteFunc set_up_tc,
15374  internal::TearDownTestSuiteFunc tear_down_tc,
15375  internal::TestFactoryBase* factory);
15376 
15377  // Constructs a TestInfo object. The newly constructed instance assumes
15378  // ownership of the factory object.
15379  TestInfo(const std::string& test_suite_name, const std::string& name,
15380  const char* a_type_param, // NULL if not a type-parameterized test
15381  const char* a_value_param, // NULL if not a value-parameterized test
15382  internal::CodeLocation a_code_location,
15383  internal::TypeId fixture_class_id,
15384  internal::TestFactoryBase* factory);
15385 
15386  // Increments the number of death tests encountered in this test so
15387  // far.
15388  int increment_death_test_count() {
15389  return result_.increment_death_test_count();
15390  }
15391 
15392  // Creates the test object, runs it, records its result, and then
15393  // deletes it.
15394  void Run();
15395 
15396  static void ClearTestResult(TestInfo* test_info) {
15397  test_info->result_.Clear();
15398  }
15399 
15400  // These fields are immutable properties of the test.
15401  const std::string test_suite_name_; // test suite name
15402  const std::string name_; // Test name
15403  // Name of the parameter type, or NULL if this is not a typed or a
15404  // type-parameterized test.
15405  const std::unique_ptr<const ::std::string> type_param_;
15406  // Text representation of the value parameter, or NULL if this is not a
15407  // value-parameterized test.
15408  const std::unique_ptr<const ::std::string> value_param_;
15409  internal::CodeLocation location_;
15410  const internal::TypeId fixture_class_id_; // ID of the test fixture class
15411  bool should_run_; // True iff this test should run
15412  bool is_disabled_; // True iff this test is disabled
15413  bool matches_filter_; // True if this test matches the
15414  // user-specified filter.
15415  bool is_in_another_shard_; // Will be run in another shard.
15416  internal::TestFactoryBase* const factory_; // The factory that creates
15417  // the test object
15418 
15419  // This field is mutable and needs to be reset before running the
15420  // test for the second time.
15421  TestResult result_;
15422 
15424 };
15425 
15426 // A test suite, which consists of a vector of TestInfos.
15427 //
15428 // TestSuite is not copyable.
15430  public:
15431  // Creates a TestSuite with the given name.
15432  //
15433  // TestSuite does NOT have a default constructor. Always use this
15434  // constructor to create a TestSuite object.
15435  //
15436  // Arguments:
15437  //
15438  // name: name of the test suite
15439  // a_type_param: the name of the test's type parameter, or NULL if
15440  // this is not a type-parameterized test.
15441  // set_up_tc: pointer to the function that sets up the test suite
15442  // tear_down_tc: pointer to the function that tears down the test suite
15443  TestSuite(const char* name, const char* a_type_param,
15444  internal::SetUpTestSuiteFunc set_up_tc,
15445  internal::TearDownTestSuiteFunc tear_down_tc);
15446 
15447  // Destructor of TestSuite.
15448  virtual ~TestSuite();
15449 
15450  // Gets the name of the TestSuite.
15451  const char* name() const { return name_.c_str(); }
15452 
15453  // Returns the name of the parameter type, or NULL if this is not a
15454  // type-parameterized test suite.
15455  const char* type_param() const {
15456  if (type_param_.get() != nullptr) return type_param_->c_str();
15457  return nullptr;
15458  }
15459 
15460  // Returns true if any test in this test suite should run.
15461  bool should_run() const { return should_run_; }
15462 
15463  // Gets the number of successful tests in this test suite.
15464  int successful_test_count() const;
15465 
15466  // Gets the number of skipped tests in this test suite.
15467  int skipped_test_count() const;
15468 
15469  // Gets the number of failed tests in this test suite.
15470  int failed_test_count() const;
15471 
15472  // Gets the number of disabled tests that will be reported in the XML report.
15473  int reportable_disabled_test_count() const;
15474 
15475  // Gets the number of disabled tests in this test suite.
15476  int disabled_test_count() const;
15477 
15478  // Gets the number of tests to be printed in the XML report.
15479  int reportable_test_count() const;
15480 
15481  // Get the number of tests in this test suite that should run.
15482  int test_to_run_count() const;
15483 
15484  // Gets the number of all tests in this test suite.
15485  int total_test_count() const;
15486 
15487  // Returns true iff the test suite passed.
15488  bool Passed() const { return !Failed(); }
15489 
15490  // Returns true iff the test suite failed.
15491  bool Failed() const { return failed_test_count() > 0; }
15492 
15493  // Returns the elapsed time, in milliseconds.
15494  TimeInMillis elapsed_time() const { return elapsed_time_; }
15495 
15496  // Returns the i-th test among all the tests. i can range from 0 to
15497  // total_test_count() - 1. If i is not in that range, returns NULL.
15498  const TestInfo* GetTestInfo(int i) const;
15499 
15500  // Returns the TestResult that holds test properties recorded during
15501  // execution of SetUpTestSuite and TearDownTestSuite.
15502  const TestResult& ad_hoc_test_result() const { return ad_hoc_test_result_; }
15503 
15504  private:
15505  friend class Test;
15506  friend class internal::UnitTestImpl;
15507 
15508  // Gets the (mutable) vector of TestInfos in this TestSuite.
15509  std::vector<TestInfo*>& test_info_list() { return test_info_list_; }
15510 
15511  // Gets the (immutable) vector of TestInfos in this TestSuite.
15512  const std::vector<TestInfo*>& test_info_list() const {
15513  return test_info_list_;
15514  }
15515 
15516  // Returns the i-th test among all the tests. i can range from 0 to
15517  // total_test_count() - 1. If i is not in that range, returns NULL.
15518  TestInfo* GetMutableTestInfo(int i);
15519 
15520  // Sets the should_run member.
15521  void set_should_run(bool should) { should_run_ = should; }
15522 
15523  // Adds a TestInfo to this test suite. Will delete the TestInfo upon
15524  // destruction of the TestSuite object.
15525  void AddTestInfo(TestInfo * test_info);
15526 
15527  // Clears the results of all tests in this test suite.
15528  void ClearResult();
15529 
15530  // Clears the results of all tests in the given test suite.
15531  static void ClearTestSuiteResult(TestSuite* test_suite) {
15532  test_suite->ClearResult();
15533  }
15534 
15535  // Runs every test in this TestSuite.
15536  void Run();
15537 
15538  // Runs SetUpTestSuite() for this TestSuite. This wrapper is needed
15539  // for catching exceptions thrown from SetUpTestSuite().
15540  void RunSetUpTestSuite() {
15541  if (set_up_tc_ != nullptr) {
15542  (*set_up_tc_)();
15543  }
15544  }
15545 
15546  // Runs TearDownTestSuite() for this TestSuite. This wrapper is
15547  // needed for catching exceptions thrown from TearDownTestSuite().
15548  void RunTearDownTestSuite() {
15549  if (tear_down_tc_ != nullptr) {
15550  (*tear_down_tc_)();
15551  }
15552  }
15553 
15554  // Returns true iff test passed.
15555  static bool TestPassed(const TestInfo* test_info) {
15556  return test_info->should_run() && test_info->result()->Passed();
15557  }
15558 
15559  // Returns true iff test skipped.
15560  static bool TestSkipped(const TestInfo* test_info) {
15561  return test_info->should_run() && test_info->result()->Skipped();
15562  }
15563 
15564  // Returns true iff test failed.
15565  static bool TestFailed(const TestInfo* test_info) {
15566  return test_info->should_run() && test_info->result()->Failed();
15567  }
15568 
15569  // Returns true iff the test is disabled and will be reported in the XML
15570  // report.
15571  static bool TestReportableDisabled(const TestInfo* test_info) {
15572  return test_info->is_reportable() && test_info->is_disabled_;
15573  }
15574 
15575  // Returns true iff test is disabled.
15576  static bool TestDisabled(const TestInfo* test_info) {
15577  return test_info->is_disabled_;
15578  }
15579 
15580  // Returns true iff this test will appear in the XML report.
15581  static bool TestReportable(const TestInfo* test_info) {
15582  return test_info->is_reportable();
15583  }
15584 
15585  // Returns true if the given test should run.
15586  static bool ShouldRunTest(const TestInfo* test_info) {
15587  return test_info->should_run();
15588  }
15589 
15590  // Shuffles the tests in this test suite.
15591  void ShuffleTests(internal::Random* random);
15592 
15593  // Restores the test order to before the first shuffle.
15594  void UnshuffleTests();
15595 
15596  // Name of the test suite.
15597  std::string name_;
15598  // Name of the parameter type, or NULL if this is not a typed or a
15599  // type-parameterized test.
15600  const std::unique_ptr<const ::std::string> type_param_;
15601  // The vector of TestInfos in their original order. It owns the
15602  // elements in the vector.
15603  std::vector<TestInfo*> test_info_list_;
15604  // Provides a level of indirection for the test list to allow easy
15605  // shuffling and restoring the test order. The i-th element in this
15606  // vector is the index of the i-th test in the shuffled test list.
15607  std::vector<int> test_indices_;
15608  // Pointer to the function that sets up the test suite.
15609  internal::SetUpTestSuiteFunc set_up_tc_;
15610  // Pointer to the function that tears down the test suite.
15611  internal::TearDownTestSuiteFunc tear_down_tc_;
15612  // True iff any test in this test suite should run.
15613  bool should_run_;
15614  // Elapsed time, in milliseconds.
15615  TimeInMillis elapsed_time_;
15616  // Holds test properties recorded during execution of SetUpTestSuite and
15617  // TearDownTestSuite.
15618  TestResult ad_hoc_test_result_;
15619 
15620  // We disallow copying TestSuites.
15622 };
15623 
15624 // An Environment object is capable of setting up and tearing down an
15625 // environment. You should subclass this to define your own
15626 // environment(s).
15627 //
15628 // An Environment object does the set-up and tear-down in virtual
15629 // methods SetUp() and TearDown() instead of the constructor and the
15630 // destructor, as:
15631 //
15632 // 1. You cannot safely throw from a destructor. This is a problem
15633 // as in some cases Google Test is used where exceptions are enabled, and
15634 // we may want to implement ASSERT_* using exceptions where they are
15635 // available.
15636 // 2. You cannot use ASSERT_* directly in a constructor or
15637 // destructor.
15639  public:
15640  // The d'tor is virtual as we need to subclass Environment.
15641  virtual ~Environment() {}
15642 
15643  // Override this to define how to set up the environment.
15644  virtual void SetUp() {}
15645 
15646  // Override this to define how to tear down the environment.
15647  virtual void TearDown() {}
15648  private:
15649  // If you see an error about overriding the following function or
15650  // about it being private, you have mis-spelled SetUp() as Setup().
15651  struct Setup_should_be_spelled_SetUp {};
15652  virtual Setup_should_be_spelled_SetUp* Setup() { return nullptr; }
15653 };
15654 
15655 #if GTEST_HAS_EXCEPTIONS
15656 
15657 // Exception which can be thrown from TestEventListener::OnTestPartResult.
15658 class GTEST_API_ AssertionException
15659  : public internal::GoogleTestFailureException {
15660  public:
15661  explicit AssertionException(const TestPartResult& result)
15662  : GoogleTestFailureException(result) {}
15663 };
15664 
15665 #endif // GTEST_HAS_EXCEPTIONS
15666 
15667 // The interface for tracing execution of tests. The methods are organized in
15668 // the order the corresponding events are fired.
15670  public:
15671  virtual ~TestEventListener() {}
15672 
15673  // Fired before any test activity starts.
15674  virtual void OnTestProgramStart(const UnitTest& unit_test) = 0;
15675 
15676  // Fired before each iteration of tests starts. There may be more than
15677  // one iteration if GTEST_FLAG(repeat) is set. iteration is the iteration
15678  // index, starting from 0.
15679  virtual void OnTestIterationStart(const UnitTest& unit_test,
15680  int iteration) = 0;
15681 
15682  // Fired before environment set-up for each iteration of tests starts.
15683  virtual void OnEnvironmentsSetUpStart(const UnitTest& unit_test) = 0;
15684 
15685  // Fired after environment set-up for each iteration of tests ends.
15686  virtual void OnEnvironmentsSetUpEnd(const UnitTest& unit_test) = 0;
15687 
15688  // Fired before the test suite starts.
15689  virtual void OnTestSuiteStart(const TestSuite& test_suite) {}
15690 
15691  // Legacy API is deprecated but still available
15692 #ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
15693  virtual void OnTestCaseStart(const TestCase& test_case) {}
15694 #endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
15695 
15696  // Fired before the test starts.
15697  virtual void OnTestStart(const TestInfo& test_info) = 0;
15698 
15699  // Fired after a failed assertion or a SUCCEED() invocation.
15700  // If you want to throw an exception from this function to skip to the next
15701  // TEST, it must be AssertionException defined above, or inherited from it.
15702  virtual void OnTestPartResult(const TestPartResult& test_part_result) = 0;
15703 
15704  // Fired after the test ends.
15705  virtual void OnTestEnd(const TestInfo& test_info) = 0;
15706 
15707  // Fired after the test suite ends.
15708  virtual void OnTestSuiteEnd(const TestSuite& test_suite) {}
15709 
15710 // Legacy API is deprecated but still available
15711 #ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
15712  virtual void OnTestCaseEnd(const TestCase& test_case) {}
15713 #endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
15714 
15715  // Fired before environment tear-down for each iteration of tests starts.
15716  virtual void OnEnvironmentsTearDownStart(const UnitTest& unit_test) = 0;
15717 
15718  // Fired after environment tear-down for each iteration of tests ends.
15719  virtual void OnEnvironmentsTearDownEnd(const UnitTest& unit_test) = 0;
15720 
15721  // Fired after each iteration of tests finishes.
15722  virtual void OnTestIterationEnd(const UnitTest& unit_test,
15723  int iteration) = 0;
15724 
15725  // Fired after all test activities have ended.
15726  virtual void OnTestProgramEnd(const UnitTest& unit_test) = 0;
15727 };
15728 
15729 // The convenience class for users who need to override just one or two
15730 // methods and are not concerned that a possible change to a signature of
15731 // the methods they override will not be caught during the build. For
15732 // comments about each method please see the definition of TestEventListener
15733 // above.
15735  public:
15736  void OnTestProgramStart(const UnitTest& /*unit_test*/) override {}
15737  void OnTestIterationStart(const UnitTest& /*unit_test*/,
15738  int /*iteration*/) override {}
15739  void OnEnvironmentsSetUpStart(const UnitTest& /*unit_test*/) override {}
15740  void OnEnvironmentsSetUpEnd(const UnitTest& /*unit_test*/) override {}
15741  void OnTestSuiteStart(const TestSuite& /*test_suite*/) override {}
15742 // Legacy API is deprecated but still available
15743 #ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
15744  void OnTestCaseStart(const TestCase& tc /*test_suite*/) override {}
15745 #endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
15746 
15747  void OnTestStart(const TestInfo& /*test_info*/) override {}
15748  void OnTestPartResult(const TestPartResult& /*test_part_result*/) override {}
15749  void OnTestEnd(const TestInfo& /*test_info*/) override {}
15750  void OnTestSuiteEnd(const TestSuite& /*test_suite*/) override {}
15751 #ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
15752  void OnTestCaseEnd(const TestCase& tc /*test_suite*/) override {}
15753 #endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
15754 
15755  void OnEnvironmentsTearDownStart(const UnitTest& /*unit_test*/) override {}
15756  void OnEnvironmentsTearDownEnd(const UnitTest& /*unit_test*/) override {}
15757  void OnTestIterationEnd(const UnitTest& /*unit_test*/,
15758  int /*iteration*/) override {}
15759  void OnTestProgramEnd(const UnitTest& /*unit_test*/) override {}
15760 };
15761 
15762 // TestEventListeners lets users add listeners to track events in Google Test.
15764  public:
15766  ~TestEventListeners();
15767 
15768  // Appends an event listener to the end of the list. Google Test assumes
15769  // the ownership of the listener (i.e. it will delete the listener when
15770  // the test program finishes).
15771  void Append(TestEventListener* listener);
15772 
15773  // Removes the given event listener from the list and returns it. It then
15774  // becomes the caller's responsibility to delete the listener. Returns
15775  // NULL if the listener is not found in the list.
15776  TestEventListener* Release(TestEventListener* listener);
15777 
15778  // Returns the standard listener responsible for the default console
15779  // output. Can be removed from the listeners list to shut down default
15780  // console output. Note that removing this object from the listener list
15781  // with Release transfers its ownership to the caller and makes this
15782  // function return NULL the next time.
15784  return default_result_printer_;
15785  }
15786 
15787  // Returns the standard listener responsible for the default XML output
15788  // controlled by the --gtest_output=xml flag. Can be removed from the
15789  // listeners list by users who want to shut down the default XML output
15790  // controlled by this flag and substitute it with custom one. Note that
15791  // removing this object from the listener list with Release transfers its
15792  // ownership to the caller and makes this function return NULL the next
15793  // time.
15795  return default_xml_generator_;
15796  }
15797 
15798  private:
15799  friend class TestSuite;
15800  friend class TestInfo;
15801  friend class internal::DefaultGlobalTestPartResultReporter;
15802  friend class internal::NoExecDeathTest;
15803  friend class internal::TestEventListenersAccessor;
15804  friend class internal::UnitTestImpl;
15805 
15806  // Returns repeater that broadcasts the TestEventListener events to all
15807  // subscribers.
15808  TestEventListener* repeater();
15809 
15810  // Sets the default_result_printer attribute to the provided listener.
15811  // The listener is also added to the listener list and previous
15812  // default_result_printer is removed from it and deleted. The listener can
15813  // also be NULL in which case it will not be added to the list. Does
15814  // nothing if the previous and the current listener objects are the same.
15815  void SetDefaultResultPrinter(TestEventListener* listener);
15816 
15817  // Sets the default_xml_generator attribute to the provided listener. The
15818  // listener is also added to the listener list and previous
15819  // default_xml_generator is removed from it and deleted. The listener can
15820  // also be NULL in which case it will not be added to the list. Does
15821  // nothing if the previous and the current listener objects are the same.
15822  void SetDefaultXmlGenerator(TestEventListener* listener);
15823 
15824  // Controls whether events will be forwarded by the repeater to the
15825  // listeners in the list.
15826  bool EventForwardingEnabled() const;
15827  void SuppressEventForwarding();
15828 
15829  // The actual list of listeners.
15830  internal::TestEventRepeater* repeater_;
15831  // Listener responsible for the standard result output.
15832  TestEventListener* default_result_printer_;
15833  // Listener responsible for the creation of the XML output file.
15834  TestEventListener* default_xml_generator_;
15835 
15836  // We disallow copying TestEventListeners.
15838 };
15839 
15840 // A UnitTest consists of a vector of TestSuites.
15841 //
15842 // This is a singleton class. The only instance of UnitTest is
15843 // created when UnitTest::GetInstance() is first called. This
15844 // instance is never deleted.
15845 //
15846 // UnitTest is not copyable.
15847 //
15848 // This class is thread-safe as long as the methods are called
15849 // according to their specification.
15851  public:
15852  // Gets the singleton UnitTest object. The first time this method
15853  // is called, a UnitTest object is constructed and returned.
15854  // Consecutive calls will return the same object.
15855  static UnitTest* GetInstance();
15856 
15857  // Runs all tests in this UnitTest object and prints the result.
15858  // Returns 0 if successful, or 1 otherwise.
15859  //
15860  // This method can only be called from the main thread.
15861  //
15862  // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
15863  int Run() GTEST_MUST_USE_RESULT_;
15864 
15865  // Returns the working directory when the first TEST() or TEST_F()
15866  // was executed. The UnitTest object owns the string.
15867  const char* original_working_dir() const;
15868 
15869  // Returns the TestSuite object for the test that's currently running,
15870  // or NULL if no test is running.
15871  const TestSuite* current_test_suite() const GTEST_LOCK_EXCLUDED_(mutex_);
15872 
15873 // Legacy API is still available but deprecated
15874 #ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
15875  const TestCase* current_test_case() const GTEST_LOCK_EXCLUDED_(mutex_);
15876 #endif
15877 
15878  // Returns the TestInfo object for the test that's currently running,
15879  // or NULL if no test is running.
15880  const TestInfo* current_test_info() const
15881  GTEST_LOCK_EXCLUDED_(mutex_);
15882 
15883  // Returns the random seed used at the start of the current test run.
15884  int random_seed() const;
15885 
15886  // Returns the ParameterizedTestSuiteRegistry object used to keep track of
15887  // value-parameterized tests and instantiate and register them.
15888  //
15889  // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
15890  internal::ParameterizedTestSuiteRegistry& parameterized_test_registry()
15891  GTEST_LOCK_EXCLUDED_(mutex_);
15892 
15893  // Gets the number of successful test suites.
15894  int successful_test_suite_count() const;
15895 
15896  // Gets the number of failed test suites.
15897  int failed_test_suite_count() const;
15898 
15899  // Gets the number of all test suites.
15900  int total_test_suite_count() const;
15901 
15902  // Gets the number of all test suites that contain at least one test
15903  // that should run.
15904  int test_suite_to_run_count() const;
15905 
15906  // Legacy API is deprecated but still available
15907 #ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
15908  int successful_test_case_count() const;
15909  int failed_test_case_count() const;
15910  int total_test_case_count() const;
15911  int test_case_to_run_count() const;
15912 #endif // EMOVE_LEGACY_TEST_CASEAPI
15913 
15914  // Gets the number of successful tests.
15915  int successful_test_count() const;
15916 
15917  // Gets the number of skipped tests.
15918  int skipped_test_count() const;
15919 
15920  // Gets the number of failed tests.
15921  int failed_test_count() const;
15922 
15923  // Gets the number of disabled tests that will be reported in the XML report.
15924  int reportable_disabled_test_count() const;
15925 
15926  // Gets the number of disabled tests.
15927  int disabled_test_count() const;
15928 
15929  // Gets the number of tests to be printed in the XML report.
15930  int reportable_test_count() const;
15931 
15932  // Gets the number of all tests.
15933  int total_test_count() const;
15934 
15935  // Gets the number of tests that should run.
15936  int test_to_run_count() const;
15937 
15938  // Gets the time of the test program start, in ms from the start of the
15939  // UNIX epoch.
15940  TimeInMillis start_timestamp() const;
15941 
15942  // Gets the elapsed time, in milliseconds.
15943  TimeInMillis elapsed_time() const;
15944 
15945  // Returns true iff the unit test passed (i.e. all test suites passed).
15946  bool Passed() const;
15947 
15948  // Returns true iff the unit test failed (i.e. some test suite failed
15949  // or something outside of all tests failed).
15950  bool Failed() const;
15951 
15952  // Gets the i-th test suite among all the test suites. i can range from 0 to
15953  // total_test_suite_count() - 1. If i is not in that range, returns NULL.
15954  const TestSuite* GetTestSuite(int i) const;
15955 
15956 // Legacy API is deprecated but still available
15957 #ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_
15958  const TestCase* GetTestCase(int i) const;
15959 #endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_
15960 
15961  // Returns the TestResult containing information on test failures and
15962  // properties logged outside of individual test suites.
15963  const TestResult& ad_hoc_test_result() const;
15964 
15965  // Returns the list of event listeners that can be used to track events
15966  // inside Google Test.
15967  TestEventListeners& listeners();
15968 
15969  private:
15970  // Registers and returns a global test environment. When a test
15971  // program is run, all global test environments will be set-up in
15972  // the order they were registered. After all tests in the program
15973  // have finished, all global test environments will be torn-down in
15974  // the *reverse* order they were registered.
15975  //
15976  // The UnitTest object takes ownership of the given environment.
15977  //
15978  // This method can only be called from the main thread.
15979  Environment* AddEnvironment(Environment* env);
15980 
15981  // Adds a TestPartResult to the current TestResult object. All
15982  // Google Test assertion macros (e.g. ASSERT_TRUE, EXPECT_EQ, etc)
15983  // eventually call this to report their results. The user code
15984  // should use the assertion macros instead of calling this directly.
15985  void AddTestPartResult(TestPartResult::Type result_type,
15986  const char* file_name,
15987  int line_number,
15988  const std::string& message,
15989  const std::string& os_stack_trace)
15990  GTEST_LOCK_EXCLUDED_(mutex_);
15991 
15992  // Adds a TestProperty to the current TestResult object when invoked from
15993  // inside a test, to current TestSuite's ad_hoc_test_result_ when invoked
15994  // from SetUpTestSuite or TearDownTestSuite, or to the global property set
15995  // when invoked elsewhere. If the result already contains a property with
15996  // the same key, the value will be updated.
15997  void RecordProperty(const std::string& key, const std::string& value);
15998 
15999  // Gets the i-th test suite among all the test suites. i can range from 0 to
16000  // total_test_suite_count() - 1. If i is not in that range, returns NULL.
16001  TestSuite* GetMutableTestSuite(int i);
16002 
16003  // Accessors for the implementation object.
16004  internal::UnitTestImpl* impl() { return impl_; }
16005  const internal::UnitTestImpl* impl() const { return impl_; }
16006 
16007  // These classes and functions are friends as they need to access private
16008  // members of UnitTest.
16009  friend class ScopedTrace;
16010  friend class Test;
16012  friend class internal::StreamingListenerTest;
16013  friend class internal::UnitTestRecordPropertyTestHelper;
16015  friend internal::UnitTestImpl* internal::GetUnitTestImpl();
16016  friend void internal::ReportFailureInUnknownLocation(
16017  TestPartResult::Type result_type,
16018  const std::string& message);
16019 
16020  // Creates an empty UnitTest.
16021  UnitTest();
16022 
16023  // D'tor
16024  virtual ~UnitTest();
16025 
16026  // Pushes a trace defined by SCOPED_TRACE() on to the per-thread
16027  // Google Test trace stack.
16028  void PushGTestTrace(const internal::TraceInfo& trace)
16029  GTEST_LOCK_EXCLUDED_(mutex_);
16030 
16031  // Pops a trace from the per-thread Google Test trace stack.
16032  void PopGTestTrace()
16033  GTEST_LOCK_EXCLUDED_(mutex_);
16034 
16035  // Protects mutable state in *impl_. This is mutable as some const
16036  // methods need to lock it too.
16037  mutable internal::Mutex mutex_;
16038 
16039  // Opaque implementation object. This field is never changed once
16040  // the object is constructed. We don't mark it as const here, as
16041  // doing so will cause a warning in the constructor of UnitTest.
16042  // Mutable state in *impl_ is protected by mutex_.
16043  internal::UnitTestImpl* impl_;
16044 
16045  // We disallow copying UnitTest.
16047 };
16048 
16049 // A convenient wrapper for adding an environment for the test
16050 // program.
16051 //
16052 // You should call this before RUN_ALL_TESTS() is called, probably in
16053 // main(). If you use gtest_main, you need to call this before main()
16054 // starts for it to take effect. For example, you can define a global
16055 // variable like this:
16056 //
16057 // testing::Environment* const foo_env =
16058 // testing::AddGlobalTestEnvironment(new FooEnvironment);
16059 //
16060 // However, we strongly recommend you to write your own main() and
16061 // call AddGlobalTestEnvironment() there, as relying on initialization
16062 // of global variables makes the code harder to read and may cause
16063 // problems when you register multiple environments from different
16064 // translation units and the environments have dependencies among them
16065 // (remember that the compiler doesn't guarantee the order in which
16066 // global variables from different translation units are initialized).
16068  return UnitTest::GetInstance()->AddEnvironment(env);
16069 }
16070 
16071 // Initializes Google Test. This must be called before calling
16072 // RUN_ALL_TESTS(). In particular, it parses a command line for the
16073 // flags that Google Test recognizes. Whenever a Google Test flag is
16074 // seen, it is removed from argv, and *argc is decremented.
16075 //
16076 // No value is returned. Instead, the Google Test flag variables are
16077 // updated.
16078 //
16079 // Calling the function for the second time has no user-visible effect.
16080 GTEST_API_ void InitGoogleTest(int* argc, char** argv);
16081 
16082 // This overloaded version can be used in Windows programs compiled in
16083 // UNICODE mode.
16084 GTEST_API_ void InitGoogleTest(int* argc, wchar_t** argv);
16085 
16086 namespace internal {
16087 
16088 // Separate the error generating code from the code path to reduce the stack
16089 // frame size of CmpHelperEQ. This helps reduce the overhead of some sanitizers
16090 // when calling EXPECT_* in a tight loop.
16091 template <typename T1, typename T2>
16092 AssertionResult CmpHelperEQFailure(const char* lhs_expression,
16093  const char* rhs_expression,
16094  const T1& lhs, const T2& rhs) {
16095  return EqFailure(lhs_expression,
16096  rhs_expression,
16099  false);
16100 }
16101 
16102 // This block of code defines operator==/!=
16103 // to block lexical scope lookup.
16104 // It prevents using invalid operator==/!= defined at namespace scope.
16105 struct faketype {};
16106 inline bool operator==(faketype, faketype) { return true; }
16107 inline bool operator!=(faketype, faketype) { return false; }
16108 
16109 // The helper function for {ASSERT|EXPECT}_EQ.
16110 template <typename T1, typename T2>
16111 AssertionResult CmpHelperEQ(const char* lhs_expression,
16112  const char* rhs_expression,
16113  const T1& lhs,
16114  const T2& rhs) {
16115  if (lhs == rhs) {
16116  return AssertionSuccess();
16117  }
16118 
16119  return CmpHelperEQFailure(lhs_expression, rhs_expression, lhs, rhs);
16120 }
16121 
16122 // With this overloaded version, we allow anonymous enums to be used
16123 // in {ASSERT|EXPECT}_EQ when compiled with gcc 4, as anonymous enums
16124 // can be implicitly cast to BiggestInt.
16125 GTEST_API_ AssertionResult CmpHelperEQ(const char* lhs_expression,
16126  const char* rhs_expression,
16127  BiggestInt lhs,
16128  BiggestInt rhs);
16129 
16130 // The helper class for {ASSERT|EXPECT}_EQ. The template argument
16131 // lhs_is_null_literal is true iff the first argument to ASSERT_EQ()
16132 // is a null pointer literal. The following default implementation is
16133 // for lhs_is_null_literal being false.
16134 template <bool lhs_is_null_literal>
16135 class EqHelper {
16136  public:
16137  // This templatized version is for the general case.
16138  template <typename T1, typename T2>
16139  static AssertionResult Compare(const char* lhs_expression,
16140  const char* rhs_expression,
16141  const T1& lhs,
16142  const T2& rhs) {
16143  return CmpHelperEQ(lhs_expression, rhs_expression, lhs, rhs);
16144  }
16145 
16146  // With this overloaded version, we allow anonymous enums to be used
16147  // in {ASSERT|EXPECT}_EQ when compiled with gcc 4, as anonymous
16148  // enums can be implicitly cast to BiggestInt.
16149  //
16150  // Even though its body looks the same as the above version, we
16151  // cannot merge the two, as it will make anonymous enums unhappy.
16152  static AssertionResult Compare(const char* lhs_expression,
16153  const char* rhs_expression,
16154  BiggestInt lhs,
16155  BiggestInt rhs) {
16156  return CmpHelperEQ(lhs_expression, rhs_expression, lhs, rhs);
16157  }
16158 };
16159 
16160 // This specialization is used when the first argument to ASSERT_EQ()
16161 // is a null pointer literal, like NULL, false, or 0.
16162 template <>
16163 class EqHelper<true> {
16164  public:
16165  // We define two overloaded versions of Compare(). The first
16166  // version will be picked when the second argument to ASSERT_EQ() is
16167  // NOT a pointer, e.g. ASSERT_EQ(0, AnIntFunction()) or
16168  // EXPECT_EQ(false, a_bool).
16169  template <typename T1, typename T2>
16170  static AssertionResult Compare(
16171  const char* lhs_expression, const char* rhs_expression, const T1& lhs,
16172  const T2& rhs,
16173  // The following line prevents this overload from being considered if T2
16174  // is not a pointer type. We need this because ASSERT_EQ(NULL, my_ptr)
16175  // expands to Compare("", "", NULL, my_ptr), which requires a conversion
16176  // to match the Secret* in the other overload, which would otherwise make
16177  // this template match better.
16178  typename EnableIf<!std::is_pointer<T2>::value>::type* = nullptr) {
16179  return CmpHelperEQ(lhs_expression, rhs_expression, lhs, rhs);
16180  }
16181 
16182  // This version will be picked when the second argument to ASSERT_EQ() is a
16183  // pointer, e.g. ASSERT_EQ(NULL, a_pointer).
16184  template <typename T>
16185  static AssertionResult Compare(
16186  const char* lhs_expression,
16187  const char* rhs_expression,
16188  // We used to have a second template parameter instead of Secret*. That
16189  // template parameter would deduce to 'long', making this a better match
16190  // than the first overload even without the first overload's EnableIf.
16191  // Unfortunately, gcc with -Wconversion-null warns when "passing NULL to
16192  // non-pointer argument" (even a deduced integral argument), so the old
16193  // implementation caused warnings in user code.
16194  Secret* /* lhs (NULL) */,
16195  T* rhs) {
16196  // We already know that 'lhs' is a null pointer.
16197  return CmpHelperEQ(lhs_expression, rhs_expression, static_cast<T*>(nullptr),
16198  rhs);
16199  }
16200 };
16201 
16202 // Separate the error generating code from the code path to reduce the stack
16203 // frame size of CmpHelperOP. This helps reduce the overhead of some sanitizers
16204 // when calling EXPECT_OP in a tight loop.
16205 template <typename T1, typename T2>
16206 AssertionResult CmpHelperOpFailure(const char* expr1, const char* expr2,
16207  const T1& val1, const T2& val2,
16208  const char* op) {
16209  return AssertionFailure()
16210  << "Expected: (" << expr1 << ") " << op << " (" << expr2
16211  << "), actual: " << FormatForComparisonFailureMessage(val1, val2)
16212  << " vs " << FormatForComparisonFailureMessage(val2, val1);
16213 }
16214 
16215 // A macro for implementing the helper functions needed to implement
16216 // ASSERT_?? and EXPECT_??. It is here just to avoid copy-and-paste
16217 // of similar code.
16218 //
16219 // For each templatized helper function, we also define an overloaded
16220 // version for BiggestInt in order to reduce code bloat and allow
16221 // anonymous enums to be used with {ASSERT|EXPECT}_?? when compiled
16222 // with gcc 4.
16223 //
16224 // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
16225 
16226 #define GTEST_IMPL_CMP_HELPER_(op_name, op)\
16227 template <typename T1, typename T2>\
16228 AssertionResult CmpHelper##op_name(const char* expr1, const char* expr2, \
16229  const T1& val1, const T2& val2) {\
16230  if (val1 op val2) {\
16231  return AssertionSuccess();\
16232  } else {\
16233  return CmpHelperOpFailure(expr1, expr2, val1, val2, #op);\
16234  }\
16235 }\
16236 GTEST_API_ AssertionResult CmpHelper##op_name(\
16237  const char* expr1, const char* expr2, BiggestInt val1, BiggestInt val2)
16238 
16239 // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
16240 
16241 // Implements the helper function for {ASSERT|EXPECT}_NE
16242 GTEST_IMPL_CMP_HELPER_(NE, !=);
16243 // Implements the helper function for {ASSERT|EXPECT}_LE
16244 GTEST_IMPL_CMP_HELPER_(LE, <=);
16245 // Implements the helper function for {ASSERT|EXPECT}_LT
16246 GTEST_IMPL_CMP_HELPER_(LT, <);
16247 // Implements the helper function for {ASSERT|EXPECT}_GE
16248 GTEST_IMPL_CMP_HELPER_(GE, >=);
16249 // Implements the helper function for {ASSERT|EXPECT}_GT
16250 GTEST_IMPL_CMP_HELPER_(GT, >);
16251 
16252 #undef GTEST_IMPL_CMP_HELPER_
16253 
16254 // The helper function for {ASSERT|EXPECT}_STREQ.
16255 //
16256 // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
16257 GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression,
16258  const char* s2_expression,
16259  const char* s1,
16260  const char* s2);
16261 
16262 // The helper function for {ASSERT|EXPECT}_STRCASEEQ.
16263 //
16264 // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
16265 GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char* s1_expression,
16266  const char* s2_expression,
16267  const char* s1,
16268  const char* s2);
16269 
16270 // The helper function for {ASSERT|EXPECT}_STRNE.
16271 //
16272 // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
16273 GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression,
16274  const char* s2_expression,
16275  const char* s1,
16276  const char* s2);
16277 
16278 // The helper function for {ASSERT|EXPECT}_STRCASENE.
16279 //
16280 // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
16281 GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char* s1_expression,
16282  const char* s2_expression,
16283  const char* s1,
16284  const char* s2);
16285 
16286 
16287 // Helper function for *_STREQ on wide strings.
16288 //
16289 // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
16290 GTEST_API_ AssertionResult CmpHelperSTREQ(const char* s1_expression,
16291  const char* s2_expression,
16292  const wchar_t* s1,
16293  const wchar_t* s2);
16294 
16295 // Helper function for *_STRNE on wide strings.
16296 //
16297 // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
16298 GTEST_API_ AssertionResult CmpHelperSTRNE(const char* s1_expression,
16299  const char* s2_expression,
16300  const wchar_t* s1,
16301  const wchar_t* s2);
16302 
16303 } // namespace internal
16304 
16305 // IsSubstring() and IsNotSubstring() are intended to be used as the
16306 // first argument to {EXPECT,ASSERT}_PRED_FORMAT2(), not by
16307 // themselves. They check whether needle is a substring of haystack
16308 // (NULL is considered a substring of itself only), and return an
16309 // appropriate error message when they fail.
16310 //
16311 // The {needle,haystack}_expr arguments are the stringified
16312 // expressions that generated the two real arguments.
16313 GTEST_API_ AssertionResult IsSubstring(
16314  const char* needle_expr, const char* haystack_expr,
16315  const char* needle, const char* haystack);
16316 GTEST_API_ AssertionResult IsSubstring(
16317  const char* needle_expr, const char* haystack_expr,
16318  const wchar_t* needle, const wchar_t* haystack);
16319 GTEST_API_ AssertionResult IsNotSubstring(
16320  const char* needle_expr, const char* haystack_expr,
16321  const char* needle, const char* haystack);
16322 GTEST_API_ AssertionResult IsNotSubstring(
16323  const char* needle_expr, const char* haystack_expr,
16324  const wchar_t* needle, const wchar_t* haystack);
16325 GTEST_API_ AssertionResult IsSubstring(
16326  const char* needle_expr, const char* haystack_expr,
16327  const ::std::string& needle, const ::std::string& haystack);
16328 GTEST_API_ AssertionResult IsNotSubstring(
16329  const char* needle_expr, const char* haystack_expr,
16330  const ::std::string& needle, const ::std::string& haystack);
16331 
16332 #if GTEST_HAS_STD_WSTRING
16333 GTEST_API_ AssertionResult IsSubstring(
16334  const char* needle_expr, const char* haystack_expr,
16335  const ::std::wstring& needle, const ::std::wstring& haystack);
16336 GTEST_API_ AssertionResult IsNotSubstring(
16337  const char* needle_expr, const char* haystack_expr,
16338  const ::std::wstring& needle, const ::std::wstring& haystack);
16339 #endif // GTEST_HAS_STD_WSTRING
16340 
16341 namespace internal {
16342 
16343 // Helper template function for comparing floating-points.
16344 //
16345 // Template parameter:
16346 //
16347 // RawType: the raw floating-point type (either float or double)
16348 //
16349 // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
16350 template <typename RawType>
16351 AssertionResult CmpHelperFloatingPointEQ(const char* lhs_expression,
16352  const char* rhs_expression,
16353  RawType lhs_value,
16354  RawType rhs_value) {
16355  const FloatingPoint<RawType> lhs(lhs_value), rhs(rhs_value);
16356 
16357  if (lhs.AlmostEquals(rhs)) {
16358  return AssertionSuccess();
16359  }
16360 
16361  ::std::stringstream lhs_ss;
16362  lhs_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2)
16363  << lhs_value;
16364 
16365  ::std::stringstream rhs_ss;
16366  rhs_ss << std::setprecision(std::numeric_limits<RawType>::digits10 + 2)
16367  << rhs_value;
16368 
16369  return EqFailure(lhs_expression,
16370  rhs_expression,
16371  StringStreamToString(&lhs_ss),
16372  StringStreamToString(&rhs_ss),
16373  false);
16374 }
16375 
16376 // Helper function for implementing ASSERT_NEAR.
16377 //
16378 // INTERNAL IMPLEMENTATION - DO NOT USE IN A USER PROGRAM.
16379 GTEST_API_ AssertionResult DoubleNearPredFormat(const char* expr1,
16380  const char* expr2,
16381  const char* abs_error_expr,
16382  double val1,
16383  double val2,
16384  double abs_error);
16385 
16386 // INTERNAL IMPLEMENTATION - DO NOT USE IN USER CODE.
16387 // A class that enables one to stream messages to assertion macros
16389  public:
16390  // Constructor.
16391  AssertHelper(TestPartResult::Type type,
16392  const char* file,
16393  int line,
16394  const char* message);
16395  ~AssertHelper();
16396 
16397  // Message assignment is a semantic trick to enable assertion
16398  // streaming; see the GTEST_MESSAGE_ macro below.
16399  void operator=(const Message& message) const;
16400 
16401  private:
16402  // We put our data in a struct so that the size of the AssertHelper class can
16403  // be as small as possible. This is important because gcc is incapable of
16404  // re-using stack space even for temporary variables, so every EXPECT_EQ
16405  // reserves stack space for another AssertHelper.
16406  struct AssertHelperData {
16407  AssertHelperData(TestPartResult::Type t,
16408  const char* srcfile,
16409  int line_num,
16410  const char* msg)
16411  : type(t), file(srcfile), line(line_num), message(msg) { }
16412 
16413  TestPartResult::Type const type;
16414  const char* const file;
16415  int const line;
16416  std::string const message;
16417 
16418  private:
16419  GTEST_DISALLOW_COPY_AND_ASSIGN_(AssertHelperData);
16420  };
16421 
16422  AssertHelperData* const data_;
16423 
16425 };
16426 
16428 
16429 GTEST_API_ GTEST_ATTRIBUTE_PRINTF_(2, 3) void ColoredPrintf(GTestColor color,
16430  const char* fmt,
16431  ...);
16432 
16433 } // namespace internal
16434 
16435 // The pure interface class that all value-parameterized tests inherit from.
16436 // A value-parameterized class must inherit from both ::testing::Test and
16437 // ::testing::WithParamInterface. In most cases that just means inheriting
16438 // from ::testing::TestWithParam, but more complicated test hierarchies
16439 // may need to inherit from Test and WithParamInterface at different levels.
16440 //
16441 // This interface has support for accessing the test parameter value via
16442 // the GetParam() method.
16443 //
16444 // Use it with one of the parameter generator defining functions, like Range(),
16445 // Values(), ValuesIn(), Bool(), and Combine().
16446 //
16447 // class FooTest : public ::testing::TestWithParam<int> {
16448 // protected:
16449 // FooTest() {
16450 // // Can use GetParam() here.
16451 // }
16452 // virtual ~FooTest() {
16453 // // Can use GetParam() here.
16454 // }
16455 // virtual void SetUp() {
16456 // // Can use GetParam() here.
16457 // }
16458 // virtual void TearDown {
16459 // // Can use GetParam() here.
16460 // }
16461 // };
16462 // TEST_P(FooTest, DoesBar) {
16463 // // Can use GetParam() method here.
16464 // Foo foo;
16465 // ASSERT_TRUE(foo.DoesBar(GetParam()));
16466 // }
16467 // INSTANTIATE_TEST_SUITE_P(OneToTenRange, FooTest, ::testing::Range(1, 10));
16468 
16469 template <typename T>
16471  public:
16472  typedef T ParamType;
16473  virtual ~WithParamInterface() {}
16474 
16475  // The current parameter value. Is also available in the test fixture's
16476  // constructor.
16477  static const ParamType& GetParam() {
16478  GTEST_CHECK_(parameter_ != nullptr)
16479  << "GetParam() can only be called inside a value-parameterized test "
16480  << "-- did you intend to write TEST_P instead of TEST_F?";
16481  return *parameter_;
16482  }
16483 
16484  private:
16485  // Sets parameter value. The caller is responsible for making sure the value
16486  // remains alive and unchanged throughout the current test.
16487  static void SetParam(const ParamType* parameter) {
16488  parameter_ = parameter;
16489  }
16490 
16491  // Static value used for accessing parameter during a test lifetime.
16492  static const ParamType* parameter_;
16493 
16494  // TestClass must be a subclass of WithParamInterface<T> and Test.
16495  template <class TestClass> friend class internal::ParameterizedTestFactory;
16496 };
16497 
16498 template <typename T>
16499 const T* WithParamInterface<T>::parameter_ = nullptr;
16500 
16501 // Most value-parameterized classes can ignore the existence of
16502 // WithParamInterface, and can just inherit from ::testing::TestWithParam.
16503 
16504 template <typename T>
16505 class TestWithParam : public Test, public WithParamInterface<T> {
16506 };
16507 
16508 // Macros for indicating success/failure in test code.
16509 
16510 // Skips test in runtime.
16511 // Skipping test aborts current function.
16512 // Skipped tests are neither successful nor failed.
16513 #define GTEST_SKIP() GTEST_SKIP_("Skipped")
16514 
16515 // ADD_FAILURE unconditionally adds a failure to the current test.
16516 // SUCCEED generates a success - it doesn't automatically make the
16517 // current test successful, as a test is only successful when it has
16518 // no failure.
16519 //
16520 // EXPECT_* verifies that a certain condition is satisfied. If not,
16521 // it behaves like ADD_FAILURE. In particular:
16522 //
16523 // EXPECT_TRUE verifies that a Boolean condition is true.
16524 // EXPECT_FALSE verifies that a Boolean condition is false.
16525 //
16526 // FAIL and ASSERT_* are similar to ADD_FAILURE and EXPECT_*, except
16527 // that they will also abort the current function on failure. People
16528 // usually want the fail-fast behavior of FAIL and ASSERT_*, but those
16529 // writing data-driven tests often find themselves using ADD_FAILURE
16530 // and EXPECT_* more.
16531 
16532 // Generates a nonfatal failure with a generic message.
16533 #define ADD_FAILURE() GTEST_NONFATAL_FAILURE_("Failed")
16534 
16535 // Generates a nonfatal failure at the given source file location with
16536 // a generic message.
16537 #define ADD_FAILURE_AT(file, line) \
16538  GTEST_MESSAGE_AT_(file, line, "Failed", \
16539  ::testing::TestPartResult::kNonFatalFailure)
16540 
16541 // Generates a fatal failure with a generic message.
16542 #define GTEST_FAIL() GTEST_FATAL_FAILURE_("Failed")
16543 
16544 // Define this macro to 1 to omit the definition of FAIL(), which is a
16545 // generic name and clashes with some other libraries.
16546 #if !GTEST_DONT_DEFINE_FAIL
16547 # define FAIL() GTEST_FAIL()
16548 #endif
16549 
16550 // Generates a success with a generic message.
16551 #define GTEST_SUCCEED() GTEST_SUCCESS_("Succeeded")
16552 
16553 // Define this macro to 1 to omit the definition of SUCCEED(), which
16554 // is a generic name and clashes with some other libraries.
16555 #if !GTEST_DONT_DEFINE_SUCCEED
16556 # define SUCCEED() GTEST_SUCCEED()
16557 #endif
16558 
16559 // Macros for testing exceptions.
16560 //
16561 // * {ASSERT|EXPECT}_THROW(statement, expected_exception):
16562 // Tests that the statement throws the expected exception.
16563 // * {ASSERT|EXPECT}_NO_THROW(statement):
16564 // Tests that the statement doesn't throw any exception.
16565 // * {ASSERT|EXPECT}_ANY_THROW(statement):
16566 // Tests that the statement throws an exception.
16567 
16568 #define EXPECT_THROW(statement, expected_exception) \
16569  GTEST_TEST_THROW_(statement, expected_exception, GTEST_NONFATAL_FAILURE_)
16570 #define EXPECT_NO_THROW(statement) \
16571  GTEST_TEST_NO_THROW_(statement, GTEST_NONFATAL_FAILURE_)
16572 #define EXPECT_ANY_THROW(statement) \
16573  GTEST_TEST_ANY_THROW_(statement, GTEST_NONFATAL_FAILURE_)
16574 #define ASSERT_THROW(statement, expected_exception) \
16575  GTEST_TEST_THROW_(statement, expected_exception, GTEST_FATAL_FAILURE_)
16576 #define ASSERT_NO_THROW(statement) \
16577  GTEST_TEST_NO_THROW_(statement, GTEST_FATAL_FAILURE_)
16578 #define ASSERT_ANY_THROW(statement) \
16579  GTEST_TEST_ANY_THROW_(statement, GTEST_FATAL_FAILURE_)
16580 
16581 // Boolean assertions. Condition can be either a Boolean expression or an
16582 // AssertionResult. For more information on how to use AssertionResult with
16583 // these macros see comments on that class.
16584 #define EXPECT_TRUE(condition) \
16585  GTEST_TEST_BOOLEAN_(condition, #condition, false, true, \
16586  GTEST_NONFATAL_FAILURE_)
16587 #define EXPECT_FALSE(condition) \
16588  GTEST_TEST_BOOLEAN_(!(condition), #condition, true, false, \
16589  GTEST_NONFATAL_FAILURE_)
16590 #define ASSERT_TRUE(condition) \
16591  GTEST_TEST_BOOLEAN_(condition, #condition, false, true, \
16592  GTEST_FATAL_FAILURE_)
16593 #define ASSERT_FALSE(condition) \
16594  GTEST_TEST_BOOLEAN_(!(condition), #condition, true, false, \
16595  GTEST_FATAL_FAILURE_)
16596 
16597 // Macros for testing equalities and inequalities.
16598 //
16599 // * {ASSERT|EXPECT}_EQ(v1, v2): Tests that v1 == v2
16600 // * {ASSERT|EXPECT}_NE(v1, v2): Tests that v1 != v2
16601 // * {ASSERT|EXPECT}_LT(v1, v2): Tests that v1 < v2
16602 // * {ASSERT|EXPECT}_LE(v1, v2): Tests that v1 <= v2
16603 // * {ASSERT|EXPECT}_GT(v1, v2): Tests that v1 > v2
16604 // * {ASSERT|EXPECT}_GE(v1, v2): Tests that v1 >= v2
16605 //
16606 // When they are not, Google Test prints both the tested expressions and
16607 // their actual values. The values must be compatible built-in types,
16608 // or you will get a compiler error. By "compatible" we mean that the
16609 // values can be compared by the respective operator.
16610 //
16611 // Note:
16612 //
16613 // 1. It is possible to make a user-defined type work with
16614 // {ASSERT|EXPECT}_??(), but that requires overloading the
16615 // comparison operators and is thus discouraged by the Google C++
16616 // Usage Guide. Therefore, you are advised to use the
16617 // {ASSERT|EXPECT}_TRUE() macro to assert that two objects are
16618 // equal.
16619 //
16620 // 2. The {ASSERT|EXPECT}_??() macros do pointer comparisons on
16621 // pointers (in particular, C strings). Therefore, if you use it
16622 // with two C strings, you are testing how their locations in memory
16623 // are related, not how their content is related. To compare two C
16624 // strings by content, use {ASSERT|EXPECT}_STR*().
16625 //
16626 // 3. {ASSERT|EXPECT}_EQ(v1, v2) is preferred to
16627 // {ASSERT|EXPECT}_TRUE(v1 == v2), as the former tells you
16628 // what the actual value is when it fails, and similarly for the
16629 // other comparisons.
16630 //
16631 // 4. Do not depend on the order in which {ASSERT|EXPECT}_??()
16632 // evaluate their arguments, which is undefined.
16633 //
16634 // 5. These macros evaluate their arguments exactly once.
16635 //
16636 // Examples:
16637 //
16638 // EXPECT_NE(Foo(), 5);
16639 // EXPECT_EQ(a_pointer, NULL);
16640 // ASSERT_LT(i, array_size);
16641 // ASSERT_GT(records.size(), 0) << "There is no record left.";
16642 
16643 #define EXPECT_EQ(val1, val2) \
16644  EXPECT_PRED_FORMAT2(::testing::internal:: \
16645  EqHelper<GTEST_IS_NULL_LITERAL_(val1)>::Compare, \
16646  val1, val2)
16647 #define EXPECT_NE(val1, val2) \
16648  EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperNE, val1, val2)
16649 #define EXPECT_LE(val1, val2) \
16650  EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperLE, val1, val2)
16651 #define EXPECT_LT(val1, val2) \
16652  EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperLT, val1, val2)
16653 #define EXPECT_GE(val1, val2) \
16654  EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperGE, val1, val2)
16655 #define EXPECT_GT(val1, val2) \
16656  EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperGT, val1, val2)
16657 
16658 #define GTEST_ASSERT_EQ(val1, val2) \
16659  ASSERT_PRED_FORMAT2(::testing::internal:: \
16660  EqHelper<GTEST_IS_NULL_LITERAL_(val1)>::Compare, \
16661  val1, val2)
16662 #define GTEST_ASSERT_NE(val1, val2) \
16663  ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperNE, val1, val2)
16664 #define GTEST_ASSERT_LE(val1, val2) \
16665  ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperLE, val1, val2)
16666 #define GTEST_ASSERT_LT(val1, val2) \
16667  ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperLT, val1, val2)
16668 #define GTEST_ASSERT_GE(val1, val2) \
16669  ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperGE, val1, val2)
16670 #define GTEST_ASSERT_GT(val1, val2) \
16671  ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperGT, val1, val2)
16672 
16673 // Define macro GTEST_DONT_DEFINE_ASSERT_XY to 1 to omit the definition of
16674 // ASSERT_XY(), which clashes with some users' own code.
16675 
16676 #if !GTEST_DONT_DEFINE_ASSERT_EQ
16677 # define ASSERT_EQ(val1, val2) GTEST_ASSERT_EQ(val1, val2)
16678 #endif
16679 
16680 #if !GTEST_DONT_DEFINE_ASSERT_NE
16681 # define ASSERT_NE(val1, val2) GTEST_ASSERT_NE(val1, val2)
16682 #endif
16683 
16684 #if !GTEST_DONT_DEFINE_ASSERT_LE
16685 # define ASSERT_LE(val1, val2) GTEST_ASSERT_LE(val1, val2)
16686 #endif
16687 
16688 #if !GTEST_DONT_DEFINE_ASSERT_LT
16689 # define ASSERT_LT(val1, val2) GTEST_ASSERT_LT(val1, val2)
16690 #endif
16691 
16692 #if !GTEST_DONT_DEFINE_ASSERT_GE
16693 # define ASSERT_GE(val1, val2) GTEST_ASSERT_GE(val1, val2)
16694 #endif
16695 
16696 #if !GTEST_DONT_DEFINE_ASSERT_GT
16697 # define ASSERT_GT(val1, val2) GTEST_ASSERT_GT(val1, val2)
16698 #endif
16699 
16700 // C-string Comparisons. All tests treat NULL and any non-NULL string
16701 // as different. Two NULLs are equal.
16702 //
16703 // * {ASSERT|EXPECT}_STREQ(s1, s2): Tests that s1 == s2
16704 // * {ASSERT|EXPECT}_STRNE(s1, s2): Tests that s1 != s2
16705 // * {ASSERT|EXPECT}_STRCASEEQ(s1, s2): Tests that s1 == s2, ignoring case
16706 // * {ASSERT|EXPECT}_STRCASENE(s1, s2): Tests that s1 != s2, ignoring case
16707 //
16708 // For wide or narrow string objects, you can use the
16709 // {ASSERT|EXPECT}_??() macros.
16710 //
16711 // Don't depend on the order in which the arguments are evaluated,
16712 // which is undefined.
16713 //
16714 // These macros evaluate their arguments exactly once.
16715 
16716 #define EXPECT_STREQ(s1, s2) \
16717  EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTREQ, s1, s2)
16718 #define EXPECT_STRNE(s1, s2) \
16719  EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRNE, s1, s2)
16720 #define EXPECT_STRCASEEQ(s1, s2) \
16721  EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASEEQ, s1, s2)
16722 #define EXPECT_STRCASENE(s1, s2)\
16723  EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASENE, s1, s2)
16724 
16725 #define ASSERT_STREQ(s1, s2) \
16726  ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTREQ, s1, s2)
16727 #define ASSERT_STRNE(s1, s2) \
16728  ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRNE, s1, s2)
16729 #define ASSERT_STRCASEEQ(s1, s2) \
16730  ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASEEQ, s1, s2)
16731 #define ASSERT_STRCASENE(s1, s2)\
16732  ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperSTRCASENE, s1, s2)
16733 
16734 // Macros for comparing floating-point numbers.
16735 //
16736 // * {ASSERT|EXPECT}_FLOAT_EQ(val1, val2):
16737 // Tests that two float values are almost equal.
16738 // * {ASSERT|EXPECT}_DOUBLE_EQ(val1, val2):
16739 // Tests that two double values are almost equal.
16740 // * {ASSERT|EXPECT}_NEAR(v1, v2, abs_error):
16741 // Tests that v1 and v2 are within the given distance to each other.
16742 //
16743 // Google Test uses ULP-based comparison to automatically pick a default
16744 // error bound that is appropriate for the operands. See the
16745 // FloatingPoint template class in gtest-internal.h if you are
16746 // interested in the implementation details.
16747 
16748 #define EXPECT_FLOAT_EQ(val1, val2)\
16749  EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<float>, \
16750  val1, val2)
16751 
16752 #define EXPECT_DOUBLE_EQ(val1, val2)\
16753  EXPECT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<double>, \
16754  val1, val2)
16755 
16756 #define ASSERT_FLOAT_EQ(val1, val2)\
16757  ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<float>, \
16758  val1, val2)
16759 
16760 #define ASSERT_DOUBLE_EQ(val1, val2)\
16761  ASSERT_PRED_FORMAT2(::testing::internal::CmpHelperFloatingPointEQ<double>, \
16762  val1, val2)
16763 
16764 #define EXPECT_NEAR(val1, val2, abs_error)\
16765  EXPECT_PRED_FORMAT3(::testing::internal::DoubleNearPredFormat, \
16766  val1, val2, abs_error)
16767 
16768 #define ASSERT_NEAR(val1, val2, abs_error)\
16769  ASSERT_PRED_FORMAT3(::testing::internal::DoubleNearPredFormat, \
16770  val1, val2, abs_error)
16771 
16772 // These predicate format functions work on floating-point values, and
16773 // can be used in {ASSERT|EXPECT}_PRED_FORMAT2*(), e.g.
16774 //
16775 // EXPECT_PRED_FORMAT2(testing::DoubleLE, Foo(), 5.0);
16776 
16777 // Asserts that val1 is less than, or almost equal to, val2. Fails
16778 // otherwise. In particular, it fails if either val1 or val2 is NaN.
16779 GTEST_API_ AssertionResult FloatLE(const char* expr1, const char* expr2,
16780  float val1, float val2);
16781 GTEST_API_ AssertionResult DoubleLE(const char* expr1, const char* expr2,
16782  double val1, double val2);
16783 
16784 
16785 #if GTEST_OS_WINDOWS
16786 
16787 // Macros that test for HRESULT failure and success, these are only useful
16788 // on Windows, and rely on Windows SDK macros and APIs to compile.
16789 //
16790 // * {ASSERT|EXPECT}_HRESULT_{SUCCEEDED|FAILED}(expr)
16791 //
16792 // When expr unexpectedly fails or succeeds, Google Test prints the
16793 // expected result and the actual result with both a human-readable
16794 // string representation of the error, if available, as well as the
16795 // hex result code.
16796 # define EXPECT_HRESULT_SUCCEEDED(expr) \
16797  EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr))
16798 
16799 # define ASSERT_HRESULT_SUCCEEDED(expr) \
16800  ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTSuccess, (expr))
16801 
16802 # define EXPECT_HRESULT_FAILED(expr) \
16803  EXPECT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
16804 
16805 # define ASSERT_HRESULT_FAILED(expr) \
16806  ASSERT_PRED_FORMAT1(::testing::internal::IsHRESULTFailure, (expr))
16807 
16808 #endif // GTEST_OS_WINDOWS
16809 
16810 // Macros that execute statement and check that it doesn't generate new fatal
16811 // failures in the current thread.
16812 //
16813 // * {ASSERT|EXPECT}_NO_FATAL_FAILURE(statement);
16814 //
16815 // Examples:
16816 //
16817 // EXPECT_NO_FATAL_FAILURE(Process());
16818 // ASSERT_NO_FATAL_FAILURE(Process()) << "Process() failed";
16819 //
16820 #define ASSERT_NO_FATAL_FAILURE(statement) \
16821  GTEST_TEST_NO_FATAL_FAILURE_(statement, GTEST_FATAL_FAILURE_)
16822 #define EXPECT_NO_FATAL_FAILURE(statement) \
16823  GTEST_TEST_NO_FATAL_FAILURE_(statement, GTEST_NONFATAL_FAILURE_)
16824 
16825 // Causes a trace (including the given source file path and line number,
16826 // and the given message) to be included in every test failure message generated
16827 // by code in the scope of the lifetime of an instance of this class. The effect
16828 // is undone with the destruction of the instance.
16829 //
16830 // The message argument can be anything streamable to std::ostream.
16831 //
16832 // Example:
16833 // testing::ScopedTrace trace("file.cc", 123, "message");
16834 //
16836  public:
16837  // The c'tor pushes the given source file location and message onto
16838  // a trace stack maintained by Google Test.
16839 
16840  // Template version. Uses Message() to convert the values into strings.
16841  // Slow, but flexible.
16842  template <typename T>
16843  ScopedTrace(const char* file, int line, const T& message) {
16844  PushTrace(file, line, (Message() << message).GetString());
16845  }
16846 
16847  // Optimize for some known types.
16848  ScopedTrace(const char* file, int line, const char* message) {
16849  PushTrace(file, line, message ? message : "(null)");
16850  }
16851 
16852 #if GTEST_HAS_GLOBAL_STRING
16853  ScopedTrace(const char* file, int line, const ::string& message) {
16854  PushTrace(file, line, message);
16855  }
16856 #endif
16857 
16858  ScopedTrace(const char* file, int line, const std::string& message) {
16859  PushTrace(file, line, message);
16860  }
16861 
16862  // The d'tor pops the info pushed by the c'tor.
16863  //
16864  // Note that the d'tor is not virtual in order to be efficient.
16865  // Don't inherit from ScopedTrace!
16866  ~ScopedTrace();
16867 
16868  private:
16869  void PushTrace(const char* file, int line, std::string message);
16870 
16872 } GTEST_ATTRIBUTE_UNUSED_; // A ScopedTrace object does its job in its
16873  // c'tor and d'tor. Therefore it doesn't
16874  // need to be used otherwise.
16875 
16876 // Causes a trace (including the source file path, the current line
16877 // number, and the given message) to be included in every test failure
16878 // message generated by code in the current scope. The effect is
16879 // undone when the control leaves the current scope.
16880 //
16881 // The message argument can be anything streamable to std::ostream.
16882 //
16883 // In the implementation, we include the current line number as part
16884 // of the dummy variable name, thus allowing multiple SCOPED_TRACE()s
16885 // to appear in the same block - as long as they are on different
16886 // lines.
16887 //
16888 // Assuming that each thread maintains its own stack of traces.
16889 // Therefore, a SCOPED_TRACE() would (correctly) only affect the
16890 // assertions in its own thread.
16891 #define SCOPED_TRACE(message) \
16892  ::testing::ScopedTrace GTEST_CONCAT_TOKEN_(gtest_trace_, __LINE__)(\
16893  __FILE__, __LINE__, (message))
16894 
16895 
16896 // Compile-time assertion for type equality.
16897 // StaticAssertTypeEq<type1, type2>() compiles iff type1 and type2 are
16898 // the same type. The value it returns is not interesting.
16899 //
16900 // Instead of making StaticAssertTypeEq a class template, we make it a
16901 // function template that invokes a helper class template. This
16902 // prevents a user from misusing StaticAssertTypeEq<T1, T2> by
16903 // defining objects of that type.
16904 //
16905 // CAVEAT:
16906 //
16907 // When used inside a method of a class template,
16908 // StaticAssertTypeEq<T1, T2>() is effective ONLY IF the method is
16909 // instantiated. For example, given:
16910 //
16911 // template <typename T> class Foo {
16912 // public:
16913 // void Bar() { testing::StaticAssertTypeEq<int, T>(); }
16914 // };
16915 //
16916 // the code:
16917 //
16918 // void Test1() { Foo<bool> foo; }
16919 //
16920 // will NOT generate a compiler error, as Foo<bool>::Bar() is never
16921 // actually instantiated. Instead, you need:
16922 //
16923 // void Test2() { Foo<bool> foo; foo.Bar(); }
16924 //
16925 // to cause a compiler error.
16926 template <typename T1, typename T2>
16929  return true;
16930 }
16931 
16932 // Defines a test.
16933 //
16934 // The first parameter is the name of the test suite, and the second
16935 // parameter is the name of the test within the test suite.
16936 //
16937 // The convention is to end the test suite name with "Test". For
16938 // example, a test suite for the Foo class can be named FooTest.
16939 //
16940 // Test code should appear between braces after an invocation of
16941 // this macro. Example:
16942 //
16943 // TEST(FooTest, InitializesCorrectly) {
16944 // Foo foo;
16945 // EXPECT_TRUE(foo.StatusIsOK());
16946 // }
16947 
16948 // Note that we call GetTestTypeId() instead of GetTypeId<
16949 // ::testing::Test>() here to get the type ID of testing::Test. This
16950 // is to work around a suspected linker bug when using Google Test as
16951 // a framework on Mac OS X. The bug causes GetTypeId<
16952 // ::testing::Test>() to return different values depending on whether
16953 // the call is from the Google Test framework itself or from user test
16954 // code. GetTestTypeId() is guaranteed to always return the same
16955 // value, as it always calls GetTypeId<>() from the Google Test
16956 // framework.
16957 #define GTEST_TEST(test_suite_name, test_name) \
16958  GTEST_TEST_(test_suite_name, test_name, ::testing::Test, \
16959  ::testing::internal::GetTestTypeId())
16960 
16961 // Define this macro to 1 to omit the definition of TEST(), which
16962 // is a generic name and clashes with some other libraries.
16963 #if !GTEST_DONT_DEFINE_TEST
16964 #define TEST(test_suite_name, test_name) GTEST_TEST(test_suite_name, test_name)
16965 #endif
16966 
16967 // Defines a test that uses a test fixture.
16968 //
16969 // The first parameter is the name of the test fixture class, which
16970 // also doubles as the test suite name. The second parameter is the
16971 // name of the test within the test suite.
16972 //
16973 // A test fixture class must be declared earlier. The user should put
16974 // the test code between braces after using this macro. Example:
16975 //
16976 // class FooTest : public testing::Test {
16977 // protected:
16978 // virtual void SetUp() { b_.AddElement(3); }
16979 //
16980 // Foo a_;
16981 // Foo b_;
16982 // };
16983 //
16984 // TEST_F(FooTest, InitializesCorrectly) {
16985 // EXPECT_TRUE(a_.StatusIsOK());
16986 // }
16987 //
16988 // TEST_F(FooTest, ReturnsElementCountCorrectly) {
16989 // EXPECT_EQ(a_.size(), 0);
16990 // EXPECT_EQ(b_.size(), 1);
16991 // }
16992 
16993 #define TEST_F(test_fixture, test_name)\
16994  GTEST_TEST_(test_fixture, test_name, test_fixture, \
16995  ::testing::internal::GetTypeId<test_fixture>())
16996 
16997 // Returns a path to temporary directory.
16998 // Tries to determine an appropriate directory for the platform.
17000 
17001 #ifdef _MSC_VER
17002 # pragma warning(pop)
17003 #endif
17004 
17005 // Dynamically registers a test with the framework.
17006 //
17007 // This is an advanced API only to be used when the `TEST` macros are
17008 // insufficient. The macros should be preferred when possible, as they avoid
17009 // most of the complexity of calling this function.
17010 //
17011 // The `factory` argument is a factory callable (move-constructible) object or
17012 // function pointer that creates a new instance of the Test object. It
17013 // handles ownership to the caller. The signature of the callable is
17014 // `Fixture*()`, where `Fixture` is the test fixture class for the test. All
17015 // tests registered with the same `test_suite_name` must return the same
17016 // fixture type. This is checked at runtime.
17017 //
17018 // The framework will infer the fixture class from the factory and will call
17019 // the `SetUpTestSuite` and `TearDownTestSuite` for it.
17020 //
17021 // Must be called before `RUN_ALL_TESTS()` is invoked, otherwise behavior is
17022 // undefined.
17023 //
17024 // Use case example:
17025 //
17026 // class MyFixture : public ::testing::Test {
17027 // public:
17028 // // All of these optional, just like in regular macro usage.
17029 // static void SetUpTestSuite() { ... }
17030 // static void TearDownTestSuite() { ... }
17031 // void SetUp() override { ... }
17032 // void TearDown() override { ... }
17033 // };
17034 //
17035 // class MyTest : public MyFixture {
17036 // public:
17037 // explicit MyTest(int data) : data_(data) {}
17038 // void TestBody() override { ... }
17039 //
17040 // private:
17041 // int data_;
17042 // };
17043 //
17044 // void RegisterMyTests(const std::vector<int>& values) {
17045 // for (int v : values) {
17046 // ::testing::RegisterTest(
17047 // "MyFixture", ("Test" + std::to_string(v)).c_str(), nullptr,
17048 // std::to_string(v).c_str(),
17049 // __FILE__, __LINE__,
17050 // // Important to use the fixture type as the return type here.
17051 // [=]() -> MyFixture* { return new MyTest(v); });
17052 // }
17053 // }
17054 // ...
17055 // int main(int argc, char** argv) {
17056 // std::vector<int> values_to_test = LoadValuesFromConfig();
17057 // RegisterMyTests(values_to_test);
17058 // ...
17059 // return RUN_ALL_TESTS();
17060 // }
17061 //
17062 template <int&... ExplicitParameterBarrier, typename Factory>
17063 TestInfo* RegisterTest(const char* test_suite_name, const char* test_name,
17064  const char* type_param, const char* value_param,
17065  const char* file, int line, Factory factory) {
17066  using TestT = typename std::remove_pointer<decltype(factory())>::type;
17067 
17068  class FactoryImpl : public internal::TestFactoryBase {
17069  public:
17070  explicit FactoryImpl(Factory f) : factory_(std::move(f)) {}
17071  Test* CreateTest() override { return factory_(); }
17072 
17073  private:
17074  Factory factory_;
17075  };
17076 
17078  test_suite_name, test_name, type_param, value_param,
17079  internal::CodeLocation(file, line), internal::GetTypeId<TestT>(),
17082  new FactoryImpl{std::move(factory)});
17083 }
17084 
17085 } // namespace testing
17086 
17087 // Use this function in main() to run all tests. It returns 0 if all
17088 // tests are successful, or 1 otherwise.
17089 //
17090 // RUN_ALL_TESTS() should be invoked after the command line has been
17091 // parsed by InitGoogleTest().
17092 //
17093 // This function was formerly a macro; thus, it is in the global
17094 // namespace and has an all-caps name.
17096 
17097 inline int RUN_ALL_TESTS() {
17098  return ::testing::UnitTest::GetInstance()->Run();
17099 }
17100 
17102 
17103 #endif // GTEST_INCLUDE_GTEST_GTEST_H_
+
ParamIterator< T > iterator
Definition: gtest.h:10721
+
bool IsXDigit(char ch)
Definition: gtest.h:2251
+
FILE * FReopen(const char *path, const char *mode, FILE *stream)
Definition: gtest.h:2353
+
const T * operator->() const
Definition: gtest.h:10674
+ + +
virtual void OnTestIterationStart(const UnitTest &unit_test, int iteration)=0
+
::std::tuple< T1, T2, T3 > ParamType
Definition: gtest.h:11483
+
GTEST_API_ AssertionResult DoubleLE(const char *expr1, const char *expr2, double val1, double val2)
+
static RawType ReinterpretBits(const Bits bits)
Definition: gtest.h:6742
+
::std::tuple< T1, T2, T3, T4, T5, T6, T7, T8 > ParamType
Definition: gtest.h:12323
+
ParameterizedTestSuiteInfo(const char *name, CodeLocation code_location)
Definition: gtest.h:11044
+
#define GTEST_ATTRIBUTE_PRINTF_(string_index, first_to_check)
Definition: gtest.h:916
+ +
const T * pointer() const
Definition: gtest.h:2170
+
Test * CreateTest() override
Definition: gtest.h:6909
+ +
std::true_type IsNullLiteralHelper(Secret *)
+ +
GTEST_API_ bool AlwaysTrue()
+ +
virtual void OnEnvironmentsSetUpEnd(const UnitTest &unit_test)=0
+
Environment * AddGlobalTestEnvironment(Environment *env)
Definition: gtest.h:16067
+
void OnTestCaseStart(const TestCase &tc) override
Definition: gtest.h:15744
+
ParamNameGenFunctor GetParamNameGen(ParamNameGenFunctor func)
Definition: gtest.h:10924
+ +
CartesianProductHolder3(const Generator1 &g1, const Generator2 &g2, const Generator3 &g3)
Definition: gtest.h:13064
+
static void Print(const wchar_t *str, ::std::ostream *os)
Definition: gtest.h:8891
+
std::string GetCapturedStdout()
Definition: gtest-all.cc:10789
+
virtual const std::string & GetTestSuiteName() const =0
+
GTEST_API_ AssertionResult DoubleNearPredFormat(const char *expr1, const char *expr2, const char *abs_error_expr, double val1, double val2, double abs_error)
+
std::string GetCapturedStderr()
Definition: gtest-all.cc:10794
+
TypeId GetTypeId()
Definition: gtest.h:6872
+
To ImplicitCast_(To x)
Definition: gtest.h:1342
+ +
ParamIterator & operator++()
Definition: gtest.h:10676
+ + +
ParamIteratorInterface< ParamType > * Begin() const override
Definition: gtest.h:11623
+ +
ParamIteratorInterface< ParamType > * End() const override
Definition: gtest.h:12339
+ + +
const char * test_case_name() const
Definition: gtest.h:15305
+
::std::tuple< T1, T2, T3, T4, T5, T6, T7 > ParamType
Definition: gtest.h:12120
+
GTEST_API_ std::string GetCurrentOsStackTraceExceptTop(UnitTest *unit_test, int skip_count)
+ + +
ParamIteratorInterface< T > * End() const override
Definition: gtest.h:10753
+
ParamIteratorInterface< ParamType > * Begin() const override
Definition: gtest.h:12796
+ +
void(*)() SetUpTestSuiteFunc
Definition: gtest.h:6926
+
static void PrintValue(const T &value, ::std::ostream *os)
Definition: gtest.h:8217
+ +
CartesianProductHolder7(const Generator1 &g1, const Generator2 &g2, const Generator3 &g3, const Generator4 &g4, const Generator5 &g5, const Generator6 &g6, const Generator7 &g7)
Definition: gtest.h:13178
+
void OnTestCaseEnd(const TestCase &tc) override
Definition: gtest.h:15752
+
GTEST_API_ bool SkipPrefix(const char *prefix, const char **pstr)
+ +
#define GTEST_INTENTIONAL_CONST_COND_PUSH_()
Definition: gtest.h:950
+ +
CartesianProductHolder4(const Generator1 &g1, const Generator2 &g2, const Generator3 &g3, const Generator4 &g4)
Definition: gtest.h:13089
+ +
bool Passed() const
Definition: gtest.h:15186
+ +
AssertionResult AssertPred2Helper(const char *pred_text, const char *e1, const char *e2, Pred pred, const T1 &v1, const T2 &v2)
Definition: gtest.h:14758
+
static const Bits kSignBitMask
Definition: gtest.h:6706
+
int FClose(FILE *fp)
Definition: gtest.h:2358
+
CartesianProductGenerator5(const ParamGenerator< T1 > &g1, const ParamGenerator< T2 > &g2, const ParamGenerator< T3 > &g3, const ParamGenerator< T4 > &g4, const ParamGenerator< T5 > &g5)
Definition: gtest.h:11768
+ +
CartesianProductGenerator6(const ParamGenerator< T1 > &g1, const ParamGenerator< T2 > &g2, const ParamGenerator< T3 > &g3, const ParamGenerator< T4 > &g4, const ParamGenerator< T5 > &g5, const ParamGenerator< T6 > &g6)
Definition: gtest.h:11936
+
size_t GetThreadCount()
Definition: gtest-all.cc:9875
+ +
IsContainer IsContainerTest(int)
Definition: gtest.h:7429
+ +
const TestResult & ad_hoc_test_result() const
Definition: gtest.h:15502
+
NativeArray(const NativeArray &rhs)
Definition: gtest.h:7597
+
eval< filter_impl::filter_< List, Pred, typelist<> > > filter
Definition: typelist.h:800
+ + +
ParamIterator(const ParamIterator &other)
Definition: gtest.h:10666
+
const char * pattern() const
Definition: gtest.h:1155
+
static bool PartialMatch(const ::std::string &str, const RE &re)
Definition: gtest.h:1164
+
NativeArray(const Element *array, size_t count, RelationToSourceReference)
Definition: gtest.h:7587
+
bool should_run() const
Definition: gtest.h:15461
+
CartesianProductGenerator10(const ParamGenerator< T1 > &g1, const ParamGenerator< T2 > &g2, const ParamGenerator< T3 > &g3, const ParamGenerator< T4 > &g4, const ParamGenerator< T5 > &g5, const ParamGenerator< T6 > &g6, const ParamGenerator< T7 > &g7, const ParamGenerator< T8 > &g8, const ParamGenerator< T9 > &g9, const ParamGenerator< T10 > &g10)
Definition: gtest.h:12786
+ + + +
void OnTestIterationEnd(const UnitTest &, int) override
Definition: gtest.h:15757
+
ParamIteratorInterface< T > * Begin() const override
Definition: gtest.h:10835
+ +
static const bool value
Definition: gtest.h:2186
+ +
GTEST_API_ bool IsTrue(bool condition)
+
bool operator==(faketype, faketype)
Definition: gtest.h:16106
+
::std::string PrintToString(const T &value)
Definition: gtest.h:8969
+ +
virtual void OnTestCaseEnd(const TestCase &test_case)
Definition: gtest.h:15712
+
ParamIteratorInterface< ParamType > * End() const override
Definition: gtest.h:12801
+ +
std::string ReadEntireFile(FILE *file)
Definition: gtest-all.cc:10809
+ +
void OnTestSuiteEnd(const TestSuite &) override
Definition: gtest.h:15750
+
#define GTEST_CHECK_POSIX_SUCCESS_(posix_call)
Definition: gtest.h:1283
+
#define GTEST_DISABLE_MSC_DEPRECATED_POP_()
Definition: gtest.h:561
+ +
ConstCharPtr(const char *str)
Definition: gtest.h:7266
+ + +
ParamIteratorInterface< ParamType > * End() const override
Definition: gtest.h:11378
+
bool BoolFromGTestEnv(const char *flag, bool default_value)
Definition: gtest-all.cc:10934
+ + +
virtual ParamIteratorInterface< T > * Begin() const =0
+
const TestResult * result() const
Definition: gtest.h:15360
+
GTEST_API_ AssertionResult IsSubstring(const char *needle_expr, const char *haystack_expr, const char *needle, const char *haystack)
+
ScopedTrace(const char *file, int line, const std::string &message)
Definition: gtest.h:16858
+ +
GTEST_API_ ::std::string FormatFileLocation(const char *file, int line)
Definition: gtest-all.cc:10620
+
CartesianProductGenerator2(const ParamGenerator< T1 > &g1, const ParamGenerator< T2 > &g2)
Definition: gtest.h:11370
+ + + +
bool operator!=(faketype, faketype)
Definition: gtest.h:16107
+ +
virtual void OnTestStart(const TestInfo &test_info)=0
+ +
int IsATTY(int fd)
Definition: gtest.h:2323
+
::std::string string
Definition: gtest.h:1115
+ + +
ParamIteratorInterface< ParamType > * Begin() const override
Definition: gtest.h:11774
+
bool_constant< bool_value > type
Definition: gtest.h:2185
+
FloatingPoint(const RawType &x)
Definition: gtest.h:6735
+
internal::ParamGenerator< bool > Bool()
Definition: gtest.h:13520
+
Int32 Int32FromGTestEnv(const char *flag, Int32 default_value)
Definition: gtest-all.cc:10948
+
#define TEST_F(test_fixture, test_name)
Definition: gtest.h:16993
+
ParamGenerator & operator=(const ParamGenerator &other)
Definition: gtest.h:10726
+
GTEST_API_ std::vector< EditType > CalculateOptimalEdits(const std::vector< size_t > &left, const std::vector< size_t > &right)
+ +
#define GTEST_INTENTIONAL_CONST_COND_POP_()
Definition: gtest.h:952
+
bool ParseInt32(const Message &src_text, const char *str, Int32 *value)
Definition: gtest-all.cc:10892
+
void SetValue(const std::string &new_value)
Definition: gtest.h:15153
+
size_< List::size()> size
Definition: typelist.h:129
+
virtual void OnTestIterationEnd(const UnitTest &unit_test, int iteration)=0
+
void OnTestPartResult(const TestPartResult &) override
Definition: gtest.h:15748
+ +
const char * type_param() const
Definition: gtest.h:15313
+
::std::wstring wstring
Definition: gtest.h:1121
+
RE(const char *regex)
Definition: gtest.h:1151
+
bool operator==(const ParamIterator &other) const
Definition: gtest.h:10686
+
RangeGenerator(T begin, T end, IncrementT step)
Definition: gtest.h:10745
+ + +
ParamIterator operator++(int)
Definition: gtest.h:10681
+
static void PrintValue(const T &value, ::std::ostream *os)
Definition: gtest.h:8198
+
bool IsDigit(char ch)
Definition: gtest.h:2239
+ + +
::std::vector< ::std::string > Strings
Definition: gtest.h:8926
+ +
ParamIteratorInterface< T > * Begin() const override
Definition: gtest.h:10750
+
int Stat(const char *path, StatStruct *buf)
Definition: gtest.h:2324
+
virtual void OnEnvironmentsTearDownEnd(const UnitTest &unit_test)=0
+ + + +
virtual void OnEnvironmentsSetUpStart(const UnitTest &unit_test)=0
+ +
GTEST_API_ AssertionResult IsNotSubstring(const char *needle_expr, const char *haystack_expr, const char *needle, const char *haystack)
+ +
static SetUpTearDownSuiteFuncType GetTearDownCaseOrSuite()
Definition: gtest.h:6971
+ +
int ChDir(const char *dir)
Definition: gtest.h:2347
+ + + +
repeat_c< N::type::value, Ts... > repeat
Definition: typelist.h:161
+
::std::basic_ostream< Char, CharTraits > & operator<<(::std::basic_ostream< Char, CharTraits > &os, const T &x)
Definition: gtest.h:8261
+ + + + +
const char * GetEnv(const char *name)
Definition: gtest.h:2369
+
void OnTestIterationStart(const UnitTest &, int) override
Definition: gtest.h:15737
+ +
ParamNameGenFunc< ParamType >::Type ParamNameGeneratorFunc
Definition: gtest.h:11042
+
virtual void TearDown()
Definition: gtest.h:15647
+
typename std::conditional< sizeof(T) !=0, ::testing::Test, void >::type Test
Definition: gtest.h:6956
+
internal::ParamGenerator< T > Range(T start, T end, IncrementT step)
Definition: gtest.h:13389
+
static void Print(const char *str, ::std::ostream *os)
Definition: gtest.h:8871
+
void PrintStringTo(const ::std::string &s, ostream *os)
Definition: gtest-all.cc:11432
+
#define GTEST_DECLARE_string_(name)
Definition: gtest.h:2499
+
virtual const ParamGeneratorInterface< T > * BaseGenerator() const =0
+
GTEST_API_ AssertionResult CmpHelperSTRNE(const char *s1_expression, const char *s2_expression, const wchar_t *s1, const wchar_t *s2)
+
ParamIteratorInterface< ParamType > * End() const override
Definition: gtest.h:12561
+
ValuesInIteratorRangeGenerator(ForwardIterator begin, ForwardIterator end)
Definition: gtest.h:10831
+ +
virtual ~TestEventListener()
Definition: gtest.h:15671
+
std::string FormatForComparisonFailureMessage(const T1 &value, const T2 &)
Definition: gtest.h:8416
+
ParamGenerator(const ParamGenerator &other)
Definition: gtest.h:10724
+
ParamIteratorInterface< ParamType > * Begin() const override
Definition: gtest.h:12556
+
#define GTEST_DISABLE_MSC_DEPRECATED_PUSH_()
Definition: gtest.h:559
+ +
TypeWithSize< 8 >::Int TimeInMillis
Definition: gtest.h:2479
+ +
bool_constant< true > true_type
Definition: gtest.h:2191
+
TestEventListener * default_result_printer() const
Definition: gtest.h:15783
+
ParamIteratorInterface< ParamType > * End() const override
Definition: gtest.h:11494
+
ThreadLocal(const T &value)
Definition: gtest.h:2168
+ +
To DownCast_(From *f)
Definition: gtest.h:1366
+
void OnEnvironmentsTearDownStart(const UnitTest &) override
Definition: gtest.h:15755
+
GTEST_API_ AssertionResult EqFailure(const char *expected_expression, const char *actual_expression, const std::string &expected_value, const std::string &actual_value, bool ignoring_case)
+
void OnEnvironmentsTearDownEnd(const UnitTest &) override
Definition: gtest.h:15756
+ +
static const bool value
Definition: gtest.h:7452
+
#define GTEST_DISABLE_MSC_WARNINGS_PUSH_(warnings)
Definition: gtest.h:545
+
static void PrintValue(const T &value, ::std::ostream *os)
Definition: gtest.h:8183
+ + +
static void Print(wchar_t *str, ::std::ostream *os)
Definition: gtest.h:8904
+
typename ElemFromList< I, typename MakeIndexSequence< sizeof...(T)>::type, T... >::type value_type
Definition: gtest.h:7702
+
TestEventListener * default_xml_generator() const
Definition: gtest.h:15794
+
#define GTEST_DECLARE_bool_(name)
Definition: gtest.h:2496
+ +
ParamIteratorInterface< ParamType > * Begin() const override
Definition: gtest.h:11490
+
size_t GetFileSize(FILE *file)
Definition: gtest-all.cc:10804
+ +
ElemFromList< I, Indices, T... >::type & Get()
Definition: gtest.h:7745
+ +
std::string StreamableToString(const T &streamable)
Definition: gtest.h:2769
+
count_if< List, same_as< T > > count
Definition: typelist.h:761
+
virtual ~Environment()
Definition: gtest.h:15641
+ + + +
internal::TimeInMillis TimeInMillis
Definition: gtest.h:15127
+
#define GTEST_API_
Definition: gtest.h:998
+
bool Passed() const
Definition: gtest.h:15488
+ + +
bool_constant< false > false_type
Definition: gtest.h:2190
+
ParameterizedTestSuiteInfo< TestSuite > * GetTestSuitePatternHolder(const char *test_suite_name, CodeLocation code_location)
Definition: gtest.h:11217
+
virtual ParamIteratorInterface< T > * End() const =0
+
const_iterator begin() const
Definition: gtest.h:7608
+
bool ArrayEq(const T *lhs, size_t size, const U *rhs)
Definition: gtest.h:7517
+ +
TypeWithSize< 4 >::UInt UInt32
Definition: gtest.h:2476
+
NativeArray(const Element *array, size_t count, RelationToSourceCopy)
Definition: gtest.h:7592
+ +
const size_t kProtobufOneLinerMaxLength
Definition: gtest.h:8193
+ +
const void * TypeId
Definition: gtest.h:6854
+
const char * StringFromGTestEnv(const char *flag, const char *default_value)
Definition: gtest-all.cc:10991
+
int Write(int fd, const void *buf, unsigned int count)
Definition: gtest.h:2363
+ +
char ToLower(char ch)
Definition: gtest.h:2259
+ +
const ElemFromList< I, Indices, T... >::type & Get() const
Definition: gtest.h:7740
+
void PrintBytesInObjectTo(const unsigned char *obj_bytes, size_t count, ostream *os)
Definition: gtest-all.cc:11112
+
ParamGenerator(ParamGeneratorInterface< T > *impl)
Definition: gtest.h:10723
+ +
virtual const T * Current() const =0
+
const char * type_param() const
Definition: gtest.h:15455
+
std::ptrdiff_t ptrdiff_t
Definition: types.h:40
+
AssertionResult CmpHelperFloatingPointEQ(const char *lhs_expression, const char *rhs_expression, RawType lhs_value, RawType rhs_value)
Definition: gtest.h:16351
+ +
void PrintTupleTo(const T &, std::integral_constant< size_t, 0 >, ::std::ostream *)
Definition: gtest.h:8677
+
GTEST_API_ AssertionResult CmpHelperSTRCASEEQ(const char *s1_expression, const char *s2_expression, const char *s1, const char *s2)
+
TypeWithSize< 4 >::Int Int32
Definition: gtest.h:2475
+ +
bool IsSpace(char ch)
Definition: gtest.h:2245
+ +
#define GTEST_IMPL_CMP_HELPER_(op_name, op)
Definition: gtest.h:16226
+
bool should_run() const
Definition: gtest.h:15350
+
CartesianProductHolder5(const Generator1 &g1, const Generator2 &g2, const Generator3 &g3, const Generator4 &g4, const Generator5 &g5)
Definition: gtest.h:13116
+
void OnTestSuiteStart(const TestSuite &) override
Definition: gtest.h:15741
+ + +
GTEST_API_ const char * fmt
Definition: gtest.h:16430
+
const T & operator*() const
Definition: gtest.h:10673
+
GTEST_API_ std::string TempDir()
+ +
CartesianProductGenerator8(const ParamGenerator< T1 > &g1, const ParamGenerator< T2 > &g2, const ParamGenerator< T3 > &g3, const ParamGenerator< T4 > &g4, const ParamGenerator< T5 > &g5, const ParamGenerator< T6 > &g6, const ParamGenerator< T7 > &g7, const ParamGenerator< T8 > &g8)
Definition: gtest.h:12325
+
static void Print(const T &value, ::std::ostream *os)
Definition: gtest.h:8724
+
static void TearDownTestCase()
Definition: gtest.h:15039
+
GTEST_API_ const char kStackTraceMarker[]
+ + +
const_iterator end() const
Definition: gtest.h:7609
+ +
::std::ostream & GetStream()
Definition: gtest.h:1236
+ + +
internal::CartesianProductHolder2< Generator1, Generator2 > Combine(const Generator1 &g1, const Generator2 &g2)
Definition: gtest.h:13571
+
CartesianProductGenerator3(const ParamGenerator< T1 > &g1, const ParamGenerator< T2 > &g2, const ParamGenerator< T3 > &g3)
Definition: gtest.h:11485
+
void DefaultPrintTo(WrapPrinterType< kPrintContainer >, const C &container, ::std::ostream *os)
Definition: gtest.h:8445
+
FloatingPoint< float > Float
Definition: gtest.h:6845
+
FloatingPoint< double > Double
Definition: gtest.h:6846
+
const char * name() const
Definition: gtest.h:15451
+
void OnTestStart(const TestInfo &) override
Definition: gtest.h:15747
+
int RmDir(const char *dir)
Definition: gtest.h:2329
+
GTEST_API_ AssertionResult CmpHelperSTRCASENE(const char *s1_expression, const char *s2_expression, const char *s1, const char *s2)
+ + +
GTEST_API_ AssertionResult CmpHelperSTREQ(const char *s1_expression, const char *s2_expression, const wchar_t *s1, const wchar_t *s2)
+ +
TestParamInfo(const ParamType &a_param, size_t an_index)
Definition: gtest.h:10595
+ + + +
virtual void OnTestProgramEnd(const UnitTest &unit_test)=0
+
static bool FullMatch(const ::std::string &str, const RE &re)
Definition: gtest.h:1161
+
void(*)() TearDownTestSuiteFunc
Definition: gtest.h:6927
+
static void Print(const T &value, ::std::ostream *os)
Definition: gtest.h:8857
+
TestFactoryBase * CreateTestFactory(ParamType parameter) override
Definition: gtest.h:10987
+ +
struct stat StatStruct
Definition: gtest.h:2320
+
GTEST_API_ void InitGoogleTest(int *argc, char **argv)
+ + +
void LogToStderr()
Definition: gtest.h:1250
+
std::size_t size_t
Definition: types.h:37
+
void UniversalTersePrint(const T &value, ::std::ostream *os)
Definition: gtest.h:8910
+
TypeWithSize< sizeof(RawType)>::UInt Bits
Definition: gtest.h:6691
+ + + +
#define INSTANTIATE_TEST_SUITE_P(prefix, test_suite_name, generator,...)
Definition: gtest.h:13715
+
GTEST_API_ std::vector< std::string > GetArgvs()
+
GTEST_DECLARE_string_(death_test_style)
+
const Element * const_iterator
Definition: gtest.h:7584
+
GTEST_API_ TestInfo * MakeAndRegisterTestInfo(const char *test_suite_name, const char *name, const char *type_param, const char *value_param, CodeLocation code_location, TypeId fixture_class_id, SetUpTestSuiteFunc set_up_tc, TearDownTestSuiteFunc tear_down_tc, TestFactoryBase *factory)
+
int Read(int fd, void *buf, unsigned int count)
Definition: gtest.h:2360
+
#define GTEST_DISABLE_MSC_WARNINGS_POP_()
Definition: gtest.h:546
+
AssertionResult CmpHelperOpFailure(const char *expr1, const char *expr2, const T1 &val1, const T2 &val2, const char *op)
Definition: gtest.h:16206
+ +
static bool HasFailure()
Definition: gtest.h:15054
+ +
void DefaultPrintNonContainerTo(const T &value, ::std::ostream *os)
Definition: gtest.h:8289
+ +
#define GTEST_CHECK_(condition)
Definition: gtest.h:1270
+ +
const char * key() const
Definition: gtest.h:15143
+ +
bool AlwaysFalse()
Definition: gtest.h:7260
+ +
GTestMutexLock MutexLock
Definition: gtest.h:2162
+
std::string operator()(const TestParamInfo< ParamType > &info) const
Definition: gtest.h:10606
+ + +
ParamIteratorInterface< ParamType > * End() const override
Definition: gtest.h:11778
+
GTEST_IMPL_FORMAT_C_STRING_AS_STRING_(char, ::std::string)
+
static void TearDownTestSuite()
Definition: gtest.h:15035
+
virtual void SetUp()
Definition: gtest.h:15644
+
#define GTEST_DISALLOW_ASSIGN_(type)
Definition: gtest.h:922
+ + + +
static AssertionResult Compare(const char *lhs_expression, const char *rhs_expression, Secret *, T *rhs)
Definition: gtest.h:16185
+
virtual void OnTestSuiteStart(const TestSuite &test_suite)
Definition: gtest.h:15689
+
void Reseed(UInt32 seed)
Definition: gtest.h:7282
+
int StrCaseCmp(const char *s1, const char *s2)
Definition: gtest.h:2325
+
TestInfo * RegisterTest(const char *test_suite_name, const char *test_name, const char *type_param, const char *value_param, const char *file, int line, Factory factory)
Definition: gtest.h:17063
+ + +
void OnEnvironmentsSetUpEnd(const UnitTest &) override
Definition: gtest.h:15740
+
SetUpTearDownSuiteFuncType GetNotDefaultOrNull(SetUpTearDownSuiteFuncType a, SetUpTearDownSuiteFuncType def)
Definition: gtest.h:6943
+
Message(const char *str)
Definition: gtest.h:2660
+ +
CartesianProductGenerator9(const ParamGenerator< T1 > &g1, const ParamGenerator< T2 > &g2, const ParamGenerator< T3 > &g3, const ParamGenerator< T4 > &g4, const ParamGenerator< T5 > &g5, const ParamGenerator< T6 > &g6, const ParamGenerator< T7 > &g7, const ParamGenerator< T8 > &g8, const ParamGenerator< T9 > &g9)
Definition: gtest.h:12547
+ +
long long BiggestInt
Definition: gtest.h:2223
+
std::string Type(const TestParamInfo< ParamType > &)
Definition: gtest.h:10930
+ +
ScopedTrace(const char *file, int line, const T &message)
Definition: gtest.h:16843
+
virtual ParamIteratorInterface * Clone() const =0
+ +
ParameterizedTestCaseInfo< TestCase > * GetTestCasePatternHolder(const char *test_case_name, CodeLocation code_location)
Definition: gtest.h:11253
+
bool IsDir(const StatStruct &st)
Definition: gtest.h:2330
+
static void Print(const T &value, ::std::ostream *os)
Definition: gtest.h:8850
+ +
bool IsAlpha(char ch)
Definition: gtest.h:2233
+ +
void PrintRawArrayTo(const T a[], size_t count, ::std::ostream *os)
Definition: gtest.h:8623
+
::std::tuple< T1, T2, T3, T4, T5, T6 > ParamType
Definition: gtest.h:11934
+ + +
#define GTEST_DISALLOW_COPY_AND_ASSIGN_(type)
Definition: gtest.h:927
+ + + +
void OnEnvironmentsSetUpStart(const UnitTest &) override
Definition: gtest.h:15739
+
CartesianProductHolder10(const Generator1 &g1, const Generator2 &g2, const Generator3 &g3, const Generator4 &g4, const Generator5 &g5, const Generator6 &g6, const Generator7 &g7, const Generator8 &g8, const Generator9 &g9, const Generator10 &g10)
Definition: gtest.h:13297
+ + + + +
integral_< index_t, v > index_
index_ type: integral constant wrapper for index_t a.k.a std::size_t
Definition: integral.h:106
+
internal::ParamGenerator< T > ValuesIn(const T(&array)[N])
Definition: gtest.h:13465
+ + +
int AddTestSuiteInstantiation(const std::string &instantiation_name, GeneratorCreationFunc *func, ParamNameGeneratorFunc *name_func, const char *file, int line)
Definition: gtest.h:11067
+
::std::tuple< T1, T2, T3, T4 > ParamType
Definition: gtest.h:11615
+
void PrintTo(unsigned char c, ::std::ostream *os)
Definition: gtest-all.cc:11242
+
ParamIteratorInterface< ParamType > * End() const override
Definition: gtest.h:11627
+ + +
static const Bits kExponentBitMask
Definition: gtest.h:6713
+ +
int FileNo(FILE *file)
Definition: gtest.h:2322
+
virtual void OnTestProgramStart(const UnitTest &unit_test)=0
+
GTEST_API_ std::string GetBoolAssertionFailureMessage(const AssertionResult &assertion_result, const char *expression_text, const char *actual_predicate_value, const char *expected_predicate_value)
+
ParameterizedTestFactory(ParamType parameter)
Definition: gtest.h:10946
+
TestProperty(const std::string &a_key, const std::string &a_value)
Definition: gtest.h:15138
+ +
GTEST_API_ ::std::string FormatCompilerIndependentFileLocation(const char *file, int line)
Definition: gtest-all.cc:10638
+ +
Definition: gtest.h:6517
+ +
virtual void OnTestEnd(const TestInfo &test_info)=0
+ + + +
virtual void OnTestPartResult(const TestPartResult &test_part_result)=0
+
const char * value_param() const
Definition: gtest.h:15320
+
FILE * FOpen(const char *path, const char *mode)
Definition: gtest.h:2349
+ +
::std::tuple< T1, T2, T3, T4, T5 > ParamType
Definition: gtest.h:11766
+
const Bits & bits() const
Definition: gtest.h:6759
+ +
bool IsLower(char ch)
Definition: gtest.h:2242
+
int Close(int fd)
Definition: gtest.h:2366
+ +
internal::ParamGenerator< typename Container::value_type > ValuesIn(const Container &container)
Definition: gtest.h:13470
+ +
std::string DefaultParamName(const TestParamInfo< ParamType > &info)
Definition: gtest.h:10912
+
Strings UniversalTersePrintTupleFieldsToStrings(const Tuple &value)
Definition: gtest.h:8948
+ + +
char IsNotContainer
Definition: gtest.h:7433
+
#define TEST_P(test_suite_name, test_name)
Definition: gtest.h:13674
+
bool operator!=(const ParamIterator &other) const
Definition: gtest.h:10689
+
void UniversalPrintArray(const char *begin, size_t len, ostream *os)
Definition: gtest-all.cc:11316
+
static AssertionResult Compare(const char *lhs_expression, const char *rhs_expression, const T1 &lhs, const T2 &rhs, typename EnableIf<!std::is_pointer< T2 >::value >::type *=nullptr)
Definition: gtest.h:16170
+
static void SetUpTestCase()
Definition: gtest.h:15040
+ +
AssertionResult CmpHelperEQFailure(const char *lhs_expression, const char *rhs_expression, const T1 &lhs, const T2 &rhs)
Definition: gtest.h:16092
+
virtual ~WithParamInterface()
Definition: gtest.h:16473
+
bool is_reportable() const
Definition: gtest.h:15353
+
static const size_t kBitCount
Definition: gtest.h:6696
+
GTEST_API_ std::string DiffStrings(const std::string &left, const std::string &right, size_t *total_line_count)
+
RE(const RE &other)
Definition: gtest.h:1140
+
static const size_t kFractionBitCount
Definition: gtest.h:6699
+
bool is_in_another_shard() const
Definition: gtest.h:15332
+ + + + +
GTEST_API_ void ReportInvalidTestSuiteType(const char *test_suite_name, CodeLocation code_location)
+ + +
GTEST_API_ std::string AppendUserMessage(const std::string &gtest_msg, const Message &user_msg)
+
CartesianProductHolder8(const Generator1 &g1, const Generator2 &g2, const Generator3 &g3, const Generator4 &g4, const Generator5 &g5, const Generator6 &g6, const Generator7 &g7, const Generator8 &g8)
Definition: gtest.h:13214
+ + +
void OnTestEnd(const TestInfo &) override
Definition: gtest.h:15749
+
#define GTEST_MUST_USE_RESULT_
Definition: gtest.h:939
+ +
char ToUpper(char ch)
Definition: gtest.h:2262
+ + +
ParamIteratorInterface< ParamType > * Begin() const override
Definition: gtest.h:12129
+
static const size_t kMaxUlps
Definition: gtest.h:6727
+
GTEST_API_ AssertionResult FloatLE(const char *expr1, const char *expr2, float val1, float val2)
+ +
static RawType Infinity()
Definition: gtest.h:6749
+ + + + +
int line() const
Definition: gtest.h:15329
+
static AssertionResult Compare(const char *lhs_expression, const char *rhs_expression, const T1 &lhs, const T2 &rhs)
Definition: gtest.h:16139
+ +
::std::string Format(const ToPrint &value)
Definition: gtest.h:8342
+ +
CartesianProductHolder9(const Generator1 &g1, const Generator2 &g2, const Generator3 &g3, const Generator4 &g4, const Generator5 &g5, const Generator6 &g6, const Generator7 &g7, const Generator8 &g8, const Generator9 &g9)
Definition: gtest.h:13254
+
bool AlmostEquals(const FloatingPoint &rhs) const
Definition: gtest.h:6783
+ +
void FlushInfoLog()
Definition: gtest.h:1251
+
const char * StrNCpy(char *dest, const char *src, size_t n)
Definition: gtest.h:2338
+
#define GTEST_LOCK_EXCLUDED_(locks)
Definition: gtest.h:2515
+
int RUN_ALL_TESTS() GTEST_MUST_USE_RESULT_
Definition: gtest.h:17097
+
TypeWithSize< 8 >::UInt UInt64
Definition: gtest.h:2478
+
GTEST_API_ AssertionResult CmpHelperEQ(const char *lhs_expression, const char *rhs_expression, BiggestInt lhs, BiggestInt rhs)
+
void OnTestProgramEnd(const UnitTest &) override
Definition: gtest.h:15759
+
bool StaticAssertTypeEq()
Definition: gtest.h:16927
+
void PrintWideStringTo(const ::std::wstring &s, ostream *os)
Definition: gtest-all.cc:11448
+ +
CartesianProductHolder6(const Generator1 &g1, const Generator2 &g2, const Generator3 &g3, const Generator4 &g4, const Generator5 &g5, const Generator6 &g6)
Definition: gtest.h:13145
+ +
bool IsUpper(char ch)
Definition: gtest.h:2248
+
static void Print(const T(&a)[N], ::std::ostream *os)
Definition: gtest.h:8818
+ + +
void TersePrintPrefixToStrings(const Tuple &, std::integral_constant< size_t, 0 >, Strings *)
Definition: gtest.h:8931
+
virtual TestFactoryBase * CreateTestFactory(ParamType parameter)=0
+
virtual void OnEnvironmentsTearDownStart(const UnitTest &unit_test)=0
+
Random(UInt32 seed)
Definition: gtest.h:7280
+ +
#define EXPECT_TRUE(condition)
Definition: gtest.h:16584
+
void CopyArray(const T *from, size_t size, U *to)
Definition: gtest.h:7557
+
AssertionResult AssertPred1Helper(const char *pred_text, const char *e1, Pred pred, const T1 &v1)
Definition: gtest.h:14715
+
ParamIterator & operator=(const ParamIterator &other)
Definition: gtest.h:10667
+
ParamIteratorInterface< ParamType > * Begin() const override
Definition: gtest.h:12334
+
class GTEST_API_ testing::ScopedTrace GTEST_ATTRIBUTE_UNUSED_
+
GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_(char)
+
RE(const ::std::string &regex)
Definition: gtest.h:1143
+ +
static const size_t kExponentBitCount
Definition: gtest.h:6703
+ +
#define GTEST_DECLARE_int32_(name)
Definition: gtest.h:2497
+ +
static const ParamType & GetParam()
Definition: gtest.h:16477
+ + +
Iter ArrayAwareFind(Iter begin, Iter end, const Element &elem)
Definition: gtest.h:7528
+
ParamIteratorInterface< ParamType > * End() const override
Definition: gtest.h:11947
+
CartesianProductGenerator4(const ParamGenerator< T1 > &g1, const ParamGenerator< T2 > &g2, const ParamGenerator< T3 > &g3, const ParamGenerator< T4 > &g4)
Definition: gtest.h:11617
+
::std::tuple< T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 > ParamType
Definition: gtest.h:12784
+ +
static const Bits kFractionBitMask
Definition: gtest.h:6709
+ +
AssertionResult AssertPred5Helper(const char *pred_text, const char *e1, const char *e2, const char *e3, const char *e4, const char *e5, Pred pred, const T1 &v1, const T2 &v2, const T3 &v3, const T4 &v4, const T5 &v5)
Definition: gtest.h:14926
+ +
bool Failed() const
Definition: gtest.h:15491
+
GTEST_API_ std::string CreateUnifiedDiff(const std::vector< std::string > &left, const std::vector< std::string > &right, size_t context=2)
+
::std::tuple< T1, T2, T3, T4, T5, T6, T7, T8, T9 > ParamType
Definition: gtest.h:12545
+
TypeWithSize< 8 >::Int Int64
Definition: gtest.h:2477
+ +
void AssertHeld() const
Definition: gtest.h:2144
+ +
Iterator::value_type value_type
Definition: gtest.h:2201
+
ParamIteratorInterface< ParamType > * Begin() const override
Definition: gtest.h:11375
+
void(*)() SetUpTearDownSuiteFuncType
Definition: gtest.h:6941
+
static void Print(const T(&value)[N], ::std::ostream *os)
Definition: gtest.h:8864
+
Message(const Message &msg)
Definition: gtest.h:2655
+
static SetUpTearDownSuiteFuncType GetSetUpCaseOrSuite()
Definition: gtest.h:6958
+
CartesianProductHolder2(const Generator1 &g1, const Generator2 &g2)
Definition: gtest.h:13043
+ +
void swap(array< _Tp, _Nm > &lhs, array< _Tp, _Nm > &rhs) noexcept(noexcept(lhs.swap(rhs)))
Definition: array.h:214
+
const char * value() const
Definition: gtest.h:15148
+
virtual void OnTestSuiteEnd(const TestSuite &test_suite)
Definition: gtest.h:15708
+ + +
FILE * FDOpen(int fd, const char *mode)
Definition: gtest.h:2356
+
ParamIteratorInterface< T > * End() const override
Definition: gtest.h:10838
+
const BiggestInt kMaxBiggestInt
Definition: gtest.h:2420
+
static UnitTest * GetInstance()
+
void AddTestPattern(const char *test_suite_name, const char *test_base_name, TestMetaFactoryBase< ParamType > *meta_factory)
Definition: gtest.h:11060
+ + +
typename TestSuite::ParamType ParamType
Definition: gtest.h:11039
+ +
AssertionResult AssertPred3Helper(const char *pred_text, const char *e1, const char *e2, const char *e3, Pred pred, const T1 &v1, const T2 &v2, const T3 &v3)
Definition: gtest.h:14808
+ +
char * StrDup(const char *src)
Definition: gtest.h:2328
+
const char * StrError(int errnum)
Definition: gtest.h:2367
+
const char * name() const
Definition: gtest.h:15309
+
const char * file() const
Definition: gtest.h:15326
+
Derived * CheckedDowncastToActualType(Base *base)
Definition: gtest.h:1391
+
const char * test_suite_name() const
Definition: gtest.h:15301
+ + + +
TypeId GetTestSuiteTypeId() const override
Definition: gtest.h:11053
+
static AssertionResult Compare(const char *lhs_expression, const char *rhs_expression, BiggestInt lhs, BiggestInt rhs)
Definition: gtest.h:16152
+
virtual void OnTestCaseStart(const TestCase &test_case)
Definition: gtest.h:15693
+
decltype(*std::declval< typename C::const_iterator >()) value_type
Definition: gtest.h:7471
+ +
bool operator==(const NativeArray &rhs) const
Definition: gtest.h:7610
+
std::string OutputFlagAlsoCheckEnvVar()
Definition: gtest-all.cc:10980
+
GTEST_API_ TypeId GetTestTypeId()
+
AssertionResult AssertPred4Helper(const char *pred_text, const char *e1, const char *e2, const char *e3, const char *e4, Pred pred, const T1 &v1, const T2 &v2, const T3 &v3, const T4 &v4)
Definition: gtest.h:14864
+ + +
std::string StripTrailingSpaces(std::string str)
Definition: gtest.h:2266
+ + +
static void SetUpTestSuite()
Definition: gtest.h:15027
+
static void Print(char *str, ::std::ostream *os)
Definition: gtest.h:8882
+
void UniversalPrint(const T &value, ::std::ostream *os)
Definition: gtest.h:8919
+
std::string GetString() const
+
CodeLocation(const std::string &a_file, int a_line)
Definition: gtest.h:6930
+ +
virtual bool Equals(const ParamIteratorInterface &other) const =0
+ + +
TimeInMillis elapsed_time() const
Definition: gtest.h:15201
+
CartesianProductGenerator7(const ParamGenerator< T1 > &g1, const ParamGenerator< T2 > &g2, const ParamGenerator< T3 > &g3, const ParamGenerator< T4 > &g4, const ParamGenerator< T5 > &g5, const ParamGenerator< T6 > &g6, const ParamGenerator< T7 > &g7)
Definition: gtest.h:12122
+ +
#define GTEST_REMOVE_REFERENCE_AND_CONST_(T)
Definition: gtest.h:7337
+
const std::string & GetTestSuiteName() const override
Definition: gtest.h:11049
+
ScopedTrace(const char *file, int line, const char *message)
Definition: gtest.h:16848
+ +
void OnTestProgramStart(const UnitTest &) override
Definition: gtest.h:15736
+ + + +
typename TestSuite::ParamType ParamType
Definition: gtest.h:10983
+
TimeInMillis elapsed_time() const
Definition: gtest.h:15494
+
ParamIteratorInterface< ParamType > * End() const override
Definition: gtest.h:12134
+
internal::ValueArray< T... > Values(T... v)
Definition: gtest.h:13496
+
ParamIteratorInterface< ParamType > * Begin() const override
Definition: gtest.h:11943
+
constexpr _Tp & get(array< _Tp, _Nm > &arr) noexcept
Definition: array.h:220
+
bool IsAlNum(char ch)
Definition: gtest.h:2236
+
+
+ + + + diff --git a/doc/html/hierarchy.html b/doc/html/hierarchy.html new file mode 100644 index 0000000..d0308d0 --- /dev/null +++ b/doc/html/hierarchy.html @@ -0,0 +1,336 @@ + + + + + + + +uTL: Class Hierarchy + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Class Hierarchy
+
+
+
This inheritance list is sorted roughly, but not completely, alphabetically:
+
[detail level 12345]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 Cutl::_1wire_i< impl_t >Template base class for 1-wire communication interface using CRTP
 Cutl::_1wire_i< _1wire_uart_i< Impl_t > >
 Cutl::_1wire_i< type >
 Cutl::_1wire_i< virtual_tag >A virtual base class implementation
 Cutl::common_impl::__common_ref_< T, U, class >
 Cutl::common_impl::__common_ref_< T &&, U &&, meta::void_t< __common_ref< T &, U & >, meta::when< ConvertibleTo< T &&, __rref_res< T, U > > >, meta::when< ConvertibleTo< U &&, __rref_res< T, U > > > > >
 Cutl::common_impl::__common_ref_< T &&, U &, meta::void_t< __common_ref< const T &, U & >, meta::when< ConvertibleTo< T &&, __common_ref< const T &, U & > > > > >
 Cutl::common_impl::__common_ref_< T &, U &&, meta::void_t< __common_ref< T &, const U & >, meta::when< ConvertibleTo< U &&, __common_ref< T &, const U & > > > > >
 Cutl::common_impl::__common_ref_< T &, U &, meta::void_t< __lref_res< T, U >, meta::when< std::is_reference< __lref_res< T, U > >::value > > >
 Cutl::common_impl::__common_reference2< T, U, meta::void_t< __basic_common_reference_t< T, U > > >
 Cutl::common_impl::__common_reference3< T, U, meta::void_t< __cond_res< T, U > > >
 Cutl::common_impl::__common_reference< T, U, meta::when< std::is_reference< T >::value &&std::is_reference< U >::value > >
 Cutl::common_impl::__copy_cv_< From >
 Cutl::common_impl::__copy_cv_< const From >
 Cutl::common_impl::__copy_cv_< const volatile From >
 Cutl::common_impl::__copy_cv_< volatile From >
 Cutl::common_impl::__xref< class >
 Cutl::common_impl::__xref< const T >
 Cutl::common_impl::__xref< const volatile T >
 Cutl::common_impl::__xref< T & >
 Cutl::common_impl::__xref< T && >
 Cutl::common_impl::__xref< volatile T >
 Cutl::meta::at_impl::_add_pointer< T >
 Cutl::meta::detail::_and_<... >
 Cutl::meta::detail::_or_<... >
 C_T1
 Cutl::meta::apply_impl::apply_< Fn, Seq >
 Cutl::meta::apply_impl::apply_< Fn, integer_sequence< T, Is... > >Sequence == integer_sequence<>
 Cutl::meta::apply_impl::apply_< Fn, typelist< List... > >Sequence == typelist<>
 Cutl::array< _Tp, _Nm >A standard container for storing a fixed size sequence of elements
 Cutl::array_traits< _Tp, _Nm >Array container traits helper
 Cutl::array_traits< _Tp, 0 >
 Cutl::meta::at_impl::at_< List, N >
 Cutl::meta::at_impl::at_< typelist< List... >, N >
 Cutl::meta::at_impl::at_head_<... >
 Cutl::meta::at_impl::at_head_< typelist< voids... > >
 Cutl::meta::back_impl::back_< List >
 Cutl::meta::back_impl::back_< typelist< Head, Tail... > >
 Cutl::common_impl::basic_common_reference< class, class, class, class >
 Cutl::meta::bind_back< Fn, Ts >
 Cutl::meta::bind_front< Fn, Ts >
 Cutl::meta::typelist< Ts >::cat_<... >
 Cutl::meta::cat_impl::cat_< Lists >
 Cutl::meta::cat_impl::cat_< typelist< L1... > >
 Cutl::meta::typelist< Ts >::cat_< typelist< L1... >, typelist< L2... > >
 Cutl::meta::cat_impl::cat_< typelist< L1... >, typelist< L2... > >
 Cutl::meta::cat_impl::cat_< typelist< L1..., L2... >, Ln... >
 Cutl::meta::cat_impl::cat_<>
 Cutl::common_impl::common_reference<... >
 Cutl::common_impl::common_reference< common_reference_t< T, U >, V, W... >
 Cutl::common_impl::common_reference< T >
 Ccommon_type
 Cutl::meta::detail::compose_< Fns >
 Cutl::meta::detail::compose_< Fn0 >
 Cutl::meta::detail::compose_< Fn0, Fns... >
 Cutl::meta::detail::compose_f_< Fns >
 Cutl::meta::detail::compose_f_< Fn0 >
 Cutl::meta::detail::compose_f_< Fn0, Fns... >
 Cutl::meta::count_if_impl::count_if_< typename, typename, size_t >
 Cutl::meta::count_if_impl::count_if_< typelist< Head, Tail... >, Fn, N >
 Cutl::meta::count_if_impl::count_if_< typelist<>, Fn, N >
 Cutl::crtp_tagCRTP support tag type
 Cutl::meta::detail::defer_< F, Ts >
 Cutl::meta::detail::defer_i_< T, F, Is >
 Cutl::meta::detail::detector< Default, AlwaysVoid, Op, Args >
 Cutl::meta::detail::detector< Default, void_t< Op< Args... > >, Op, Args... >
 Cutl::dev_iterator_traits< _Cat, _Tp, _Diff >Device iterator collection
 Cutl::dev_iterator_traits< std::output_iterator_tag, data_t, void >
 Cutl::dev_iterator_traits< std::output_iterator_tag, iter_t >
 Cfalse_
 Cfalse_
 Cutl::meta::filter_impl::filter_< typename, typename, typename >
 Cutl::meta::filter_impl::filter_< typelist< Head, Tail... >, Fn, L >
 Cutl::meta::filter_impl::filter_< typelist<>, Fn, L >
 Cutl::meta::find_if_impl::find_if_< typename, typename, index_t >
 Cutl::meta::find_if_impl::find_if_< typelist< Head, Tail... >, Fn, N >
 Cutl::meta::find_if_impl::find_if_< typelist<>, Fn, N >
 Cutl::meta::fold_impl::fold_< typename, typename, typename >
 Cutl::meta::fold_impl::fold_< typelist< Head, Tail... >, V, Fn >
 Cutl::meta::fold_impl::fold_< typelist<>, V0, Fn >
 Cutl::meta::front_impl::front_< L >
 Cutl::meta::front_impl::front_< typelist< Head, Tail... > >
 Cutl::i2c_i< impl_t >Abstract base class for i2c bus
 Cutl::i2c_i< i2c_bb_i< impl_t > >
 Cutl::i2c_i< virtual_tag >A virtual base class specialization
 Cutl::id_t< _Tp, _Nm >A standard container for storing IDs as a fixed size sequence of bytes. This type is based on etl::array Meets the requirements of: container, reversible container, sequence. Sets support random access iterators
 Cutl::id_t< uint8_t, 8 >
 Cutl::id_traits< _Tp, _Nm >Id container traits helper
 Cutl::id_traits< _Tp, 0 >
 Cutl::meta::identity< _Tp >
 Cutl::idx_dev< impl_t, data_t, idx_t, N >Abstract base class for indexed devices
 Cutl::idx_dev< virtual_tag, data_t, idx_t, N >A virtual base class specialization
 Cif_
 Cutl::meta::detail::if_c_< If,... >
 Cutl::meta::detail::if_c_< false, Then, Else >
 Cutl::meta::detail::if_c_< true, Then >
 Cutl::meta::detail::if_c_< true, Then, Else >
 Cutl::in_dev< impl_t, data_t, streamsize >Abstract base class for input devices
 Cutl::in_dev< virtual_tag, data_t, streamsize >A virtual base class specialization
 Cutl::inbuf_dev< impl_t, data_t, streamsize >Abstract base class for input buffered devices
 Cutl::inbuf_dev< virtual_tag, data_t, streamsize >A virtual base class specialization
 Cutl::indev_it< cont_t, iter_t, _beg, _size >Input device iterator type. We "future call" interface methods from owner class to provide iterator functionality
 Cutl::input_iterator_tag
 Cutl::detail::invoke_result_< B, _Callable, _Args >
 Cutl::detail::invoke_result_< true, _Callable, _Args... >
 Cutl::iodev_it< cont_t, iter_t, _beg, _size >Indexed device iterator type. We "future call" interface methods from owner class to provide iterator functionality
 Cutl::meta::detail::is_applicable_< F, T >
 Cutl::meta::detail::is_applicable_i_< T, F, Is >
 Cutl::meta::detail::is_applicable_q_< F, T >
 Cutl::details::is_boolean_< B, typename >
 Cutl::details::is_boolean_< B, meta::void_t< meta::use_if_same_t< bool, decltype(!std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>()==std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>() !=std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>() &&std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>()||std::declval< cref_< B >>())> > >
 Cis_constructible
 Cutl::details::is_strict_totally_ordered_< T, typename >
 Cutl::details::is_strict_totally_ordered_< T, meta::void_t< meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()< std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() > std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()<=std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() >=std::declval< cref_< T >>())> > >
 Cutl::details::is_strict_totally_ordered_with_< T, U, typename >
 Cutl::details::is_strict_totally_ordered_with_< T, U, meta::void_t< meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()< std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() > std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()<=std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() >=std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>()< std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>() > std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>()<=std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>() >=std::declval< cref_< T >>())> > >
 Cutl::details::is_weakly_equality_comparable_with_< T, U, typename >
 Cutl::details::is_weakly_equality_comparable_with_< T, U, meta::void_t< meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()==std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() !=std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>()==std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>() !=std::declval< cref_< T >>())> > >
 Cutl::istreamdev_it< cont_t, data_t >
 Cutl::meta::nat_
 Cutl::meta::nil_
 Cnot_same_
 Cutl::meta::not_same_as< T1 >
 Cutl::ostream_dev< impl_t, data_t >Abstract base classes for output stream devices
 Cutl::ostream_dev< virtual_tag, data_t >
 Cutl::ostreamdev_it< cont_t, data_t >
 Cutl::out_dev< impl_t, data_t, streamsize >Abstract base classes for output devices
 Cutl::out_dev< virtual_tag, data_t, streamsize >A virtual base class specialization
 Cutl::outdev_it< cont_t, iter_t, _beg, _end >Output device iterator type. We "future call" interface methods from owner class to provide iterator functionality
 Cutl::output_iterator_tagIterator tags [std.iterator.tags] Extension: contiguous_iterator_tag for denoting contiguous iterators
 Cutl::meta::pop_back_impl::pop_back_< List >
 Cutl::meta::pop_front_impl::pop_front_< List >
 Cutl::meta::pop_front_impl::pop_front_< typelist< Head, Tail... > >
 Cutl::meta::quote< F >
 Cutl::meta::quote_i< T, F >Wrap a template F taking literal constants of type T into an Invokable
 Cutl::meta::replace_if_impl::replace_if_< typename, typename, typename, typename >
 Cutl::meta::replace_if_impl::replace_if_< typelist< Head, Tail... >, Fn, T, Ret >
 Cutl::meta::replace_if_impl::replace_if_< typelist<>, Fn, T, Ret >
 Cutl::meta::rev_fold_impl::rev_fold_< typename, typename, typename >
 Cutl::meta::rev_fold_impl::rev_fold_< typelist< Head, Tail... >, V, Fn >
 Cutl::meta::rev_fold_impl::rev_fold_< typelist< Tail >, V, Fn >
 Cutl::meta::rev_fold_impl::rev_fold_< typelist<>, V, Fn >
 Cutl::meta::reverse_impl::reverse_< List, V >
 Cutl::meta::same_as< T1 >
 Cutl::meta::seek_if_impl::seek_if_< typename, typename, index_t >
 Cutl::meta::seek_if_impl::seek_if_< typelist< Head, Tail... >, Fn, N >
 Cutl::meta::seek_if_impl::seek_if_< typelist<>, Fn, N >
 Cutl::spi_i< impl_t >
 Cutl::spi_i< spi_bb_i< impl_t, CPOL, CPHA, BitOrder > >
 Cutl::spi_i< virtual_tag >A virtual base class implementation
 Cutl::meta::typelist< Ts >::times_< N, T >
 Cutl::meta::typelist< Ts >::times_< 0, T... >
 Cutl::meta::typelist< Ts >::times_< 1, T... >
 Cutl::meta::transform_impl::transform_< typename, typename >
 Cutl::meta::transform_impl::transform_< typelist< typelist< Ts... >, Fn >, void_t< invoke< Fn, Ts >... > >
 Cutl::meta::transform_impl::transform_< typelist< typelist< Ts0... >, typelist< Ts1... >, Fn >, void_t< invoke< Fn, Ts0, Ts1 >... > >
 Cutl::meta::transform_lazy_impl::transform_lazy_< typename, typename >
 Cutl::meta::transform_lazy_impl::transform_lazy_< typelist< typelist< Ts... >, Fn >, void_t< invoke< Fn, Ts >... > >
 Cutl::meta::transform_lazy_impl::transform_lazy_< typelist< typelist< Ts0... >, typelist< Ts1... >, Fn >, void_t< invoke< Fn, Ts0, Ts1 >... > >
 Ctrue_
 Ctrue_
 Cutl::detail::try_invoke< _Callable, _Args >
 Cutl::array_traits< _Tp, 0 >::type
 Cutl::id_traits< _Tp, 0 >::type
 Cutl::meta::typelist< Ts >
 Cutl::iodev_it< cont_t, iter_t, _beg, _size >::value_type_t
 Cutl::virtual_tagVirtual support tag type
 Cutl::meta::detail::when_< If >
 Cutl::meta::detail::when_< true >
 Cutl::meta::wrap< F >
 Cutl::meta::wrap_i< T, F >Wrap a template F taking literal constants of type T into an Invokable
+
+
+
+ + + + diff --git a/doc/html/hierarchy.js b/doc/html/hierarchy.js new file mode 100644 index 0000000..7eaf3bb --- /dev/null +++ b/doc/html/hierarchy.js @@ -0,0 +1,257 @@ +var hierarchy = +[ + [ "utl::_1wire_i< impl_t >", "classutl_1_1__1wire__i.html", [ + [ "utl::_1wire_uart_i< Impl_t >", "classutl_1_1__1wire__uart__i.html", null ] + ] ], + [ "utl::_1wire_i< _1wire_uart_i< Impl_t > >", "classutl_1_1__1wire__i.html", null ], + [ "utl::_1wire_i< type >", "classutl_1_1__1wire__i.html", null ], + [ "utl::_1wire_i< virtual_tag >", "classutl_1_1__1wire__i_3_01virtual__tag_01_4.html", [ + [ "utl::_1wire_uart_i< virtual_tag >", "classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html", null ] + ] ], + [ "utl::common_impl::__common_ref_< T, U, class >", "structutl_1_1common__impl_1_1____common__ref__.html", null ], + [ "utl::common_impl::__common_ref_< T &&, U &&, meta::void_t< __common_ref< T &, U & >, meta::when< ConvertibleTo< T &&, __rref_res< T, U > > >, meta::when< ConvertibleTo< U &&, __rref_res< T, U > > > > >", "structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_6_00_01meta_1_1void__tc4e71c227f251cadf0e0fb7b1ba6f1e9.html", null ], + [ "utl::common_impl::__common_ref_< T &&, U &, meta::void_t< __common_ref< const T &, U & >, meta::when< ConvertibleTo< T &&, __common_ref< const T &, U & > > > > >", "structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_00_01meta_1_1void__t_3972a8d6e6799b6ee6537c969cdced343.html", null ], + [ "utl::common_impl::__common_ref_< T &, U &&, meta::void_t< __common_ref< T &, const U & >, meta::when< ConvertibleTo< U &&, __common_ref< T &, const U & > > > > >", "structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_6_00_01meta_1_1void__t_329fba5aeac3b93aa9cfa5aa7e282e196.html", null ], + [ "utl::common_impl::__common_ref_< T &, U &, meta::void_t< __lref_res< T, U >, meta::when< std::is_reference< __lref_res< T, U > >::value > > >", "structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_00_01meta_1_1void__t_3_05e5aa384829bb34312a7b8ee4ecaa00f.html", null ], + [ "utl::common_impl::__common_reference2< T, U, meta::void_t< __basic_common_reference_t< T, U > > >", "structutl_1_1common__impl_1_1____common__reference2_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____785d0aa2f8a62416e19573fcbdd83836.html", null ], + [ "utl::common_impl::__common_reference3< T, U, meta::void_t< __cond_res< T, U > > >", "structutl_1_1common__impl_1_1____common__reference3_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____015b01ed12d2d90ee57fbf756ab847e9.html", null ], + [ "utl::common_impl::__common_reference< T, U, meta::when< std::is_reference< T >::value &&std::is_reference< U >::value > >", "structutl_1_1common__impl_1_1____common__reference_3_01_t_00_01_u_00_01meta_1_1when_3_01std_1_1i23b95b4b3a65ce598dbcc7f52e9dab2c.html", null ], + [ "utl::common_impl::__copy_cv_< From >", "structutl_1_1common__impl_1_1____copy__cv__.html", null ], + [ "utl::common_impl::__copy_cv_< const From >", "structutl_1_1common__impl_1_1____copy__cv___3_01const_01_from_01_4.html", null ], + [ "utl::common_impl::__copy_cv_< const volatile From >", "structutl_1_1common__impl_1_1____copy__cv___3_01const_01volatile_01_from_01_4.html", null ], + [ "utl::common_impl::__copy_cv_< volatile From >", "structutl_1_1common__impl_1_1____copy__cv___3_01volatile_01_from_01_4.html", null ], + [ "utl::common_impl::__xref< class >", "structutl_1_1common__impl_1_1____xref.html", null ], + [ "utl::common_impl::__xref< const T >", "structutl_1_1common__impl_1_1____xref_3_01const_01_t_01_4.html", null ], + [ "utl::common_impl::__xref< const volatile T >", "structutl_1_1common__impl_1_1____xref_3_01const_01volatile_01_t_01_4.html", null ], + [ "utl::common_impl::__xref< T & >", "structutl_1_1common__impl_1_1____xref_3_01_t_01_6_01_4.html", null ], + [ "utl::common_impl::__xref< T && >", "structutl_1_1common__impl_1_1____xref_3_01_t_01_6_6_01_4.html", null ], + [ "utl::common_impl::__xref< volatile T >", "structutl_1_1common__impl_1_1____xref_3_01volatile_01_t_01_4.html", null ], + [ "utl::meta::at_impl::_add_pointer< T >", "structutl_1_1meta_1_1at__impl_1_1__add__pointer.html", null ], + [ "utl::meta::detail::_and_<... >", "structutl_1_1meta_1_1detail_1_1__and__.html", null ], + [ "utl::meta::detail::_or_<... >", "structutl_1_1meta_1_1detail_1_1__or__.html", null ], + [ "_T1", null, [ + [ "utl::meta::detail::_and_< _T1 >", "structutl_1_1meta_1_1detail_1_1__and___3_01___t1_01_4.html", null ], + [ "utl::meta::detail::_or_< _T1 >", "structutl_1_1meta_1_1detail_1_1__or___3_01___t1_01_4.html", null ] + ] ], + [ "utl::meta::apply_impl::apply_< Fn, Seq >", "structutl_1_1meta_1_1apply__impl_1_1apply__.html", null ], + [ "utl::meta::apply_impl::apply_< Fn, integer_sequence< T, Is... > >", "structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01integer__sequence_3_01_t_00_01_is_8_8_8_01_4_01_4.html", null ], + [ "utl::meta::apply_impl::apply_< Fn, typelist< List... > >", "structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01typelist_3_01_list_8_8_8_01_4_01_4.html", null ], + [ "utl::array< _Tp, _Nm >", "structutl_1_1array.html", null ], + [ "utl::array_traits< _Tp, _Nm >", "structutl_1_1array__traits.html", null ], + [ "utl::array_traits< _Tp, 0 >", "structutl_1_1array__traits_3_01___tp_00_010_01_4.html", null ], + [ "utl::meta::at_impl::at_< List, N >", "structutl_1_1meta_1_1at__impl_1_1at__.html", null ], + [ "utl::meta::at_impl::at_< typelist< List... >, N >", "structutl_1_1meta_1_1at__impl_1_1at___3_01typelist_3_01_list_8_8_8_01_4_00_01_n_01_4.html", null ], + [ "utl::meta::at_impl::at_head_<... >", "structutl_1_1meta_1_1at__impl_1_1at__head__.html", null ], + [ "utl::meta::at_impl::at_head_< typelist< voids... > >", "structutl_1_1meta_1_1at__impl_1_1at__head___3_01typelist_3_01voids_8_8_8_01_4_01_4.html", null ], + [ "utl::meta::back_impl::back_< List >", "structutl_1_1meta_1_1back__impl_1_1back__.html", null ], + [ "utl::meta::back_impl::back_< typelist< Head, Tail... > >", "structutl_1_1meta_1_1back__impl_1_1back___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.html", null ], + [ "utl::common_impl::basic_common_reference< class, class, class, class >", "structutl_1_1common__impl_1_1basic__common__reference.html", null ], + [ "utl::meta::bind_back< Fn, Ts >", "structutl_1_1meta_1_1bind__back.html", null ], + [ "utl::meta::bind_front< Fn, Ts >", "structutl_1_1meta_1_1bind__front.html", null ], + [ "utl::meta::typelist< Ts >::cat_<... >", "structutl_1_1meta_1_1typelist_1_1cat__.html", null ], + [ "utl::meta::cat_impl::cat_< Lists >", "structutl_1_1meta_1_1cat__impl_1_1cat__.html", null ], + [ "utl::meta::cat_impl::cat_< typelist< L1... > >", "structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_01_4.html", null ], + [ "utl::meta::typelist< Ts >::cat_< typelist< L1... >, typelist< L2... > >", "structutl_1_1meta_1_1typelist_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4.html", null ], + [ "utl::meta::cat_impl::cat_< typelist< L1... >, typelist< L2... > >", "structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4.html", null ], + [ "utl::meta::cat_impl::cat_< typelist< L1..., L2... >, Ln... >", "structutl_1_1meta_1_1cat__impl_1_1cat__.html", [ + [ "utl::meta::cat_impl::cat_< typelist< L1... >, typelist< L2... >, Ln... >", "structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_00_01_ln_8_8_8_01_4.html", null ] + ] ], + [ "utl::meta::cat_impl::cat_<>", "structutl_1_1meta_1_1cat__impl_1_1cat___3_4.html", null ], + [ "utl::common_impl::common_reference<... >", "structutl_1_1common__impl_1_1common__reference.html", null ], + [ "utl::common_impl::common_reference< common_reference_t< T, U >, V, W... >", "structutl_1_1common__impl_1_1common__reference.html", [ + [ "utl::common_impl::common_reference< T, U, V, W... >", "structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_00_01_v_00_01_w_8_8_8_01_4.html", null ] + ] ], + [ "utl::common_impl::common_reference< T >", "structutl_1_1common__impl_1_1common__reference_3_01_t_01_4.html", null ], + [ "common_type", null, [ + [ "utl::common_impl::__common_reference3< T, U >", "structutl_1_1common__impl_1_1____common__reference3.html", [ + [ "utl::common_impl::__common_reference2< T, U >", "structutl_1_1common__impl_1_1____common__reference2.html", [ + [ "utl::common_impl::__common_reference< T, U >", "structutl_1_1common__impl_1_1____common__reference.html", [ + [ "utl::common_impl::common_reference< T, U >", "structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_01_4.html", null ] + ] ], + [ "utl::common_impl::__common_reference< T, U,... >", "structutl_1_1common__impl_1_1____common__reference.html", null ] + ] ], + [ "utl::common_impl::__common_reference2< T, U,... >", "structutl_1_1common__impl_1_1____common__reference2.html", null ] + ] ], + [ "utl::common_impl::__common_reference3< T, U,... >", "structutl_1_1common__impl_1_1____common__reference3.html", null ] + ] ], + [ "utl::meta::detail::compose_< Fns >", "structutl_1_1meta_1_1detail_1_1compose__.html", null ], + [ "utl::meta::detail::compose_< Fn0 >", "structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_01_4.html", null ], + [ "utl::meta::detail::compose_< Fn0, Fns... >", "structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_00_01_fns_8_8_8_01_4.html", null ], + [ "utl::meta::detail::compose_f_< Fns >", "structutl_1_1meta_1_1detail_1_1compose__f__.html", null ], + [ "utl::meta::detail::compose_f_< Fn0 >", "structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_01_4.html", null ], + [ "utl::meta::detail::compose_f_< Fn0, Fns... >", "structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_00_01_fns_8_8_8_01_4.html", null ], + [ "utl::meta::count_if_impl::count_if_< typename, typename, size_t >", "structutl_1_1meta_1_1count__if__impl_1_1count__if__.html", null ], + [ "utl::meta::count_if_impl::count_if_< typelist< Head, Tail... >, Fn, N >", "structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.html", null ], + [ "utl::meta::count_if_impl::count_if_< typelist<>, Fn, N >", "structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.html", null ], + [ "utl::crtp_tag", "structutl_1_1crtp__tag.html", null ], + [ "utl::meta::detail::defer_< F, Ts >", "structutl_1_1meta_1_1detail_1_1defer__.html", null ], + [ "utl::meta::detail::defer_i_< T, F, Is >", "structutl_1_1meta_1_1detail_1_1defer__i__.html", null ], + [ "utl::meta::detail::detector< Default, AlwaysVoid, Op, Args >", "structutl_1_1meta_1_1detail_1_1detector.html", null ], + [ "utl::meta::detail::detector< Default, void_t< Op< Args... > >, Op, Args... >", "structutl_1_1meta_1_1detail_1_1detector_3_01_default_00_01void__t_3_01_op_3_01_args_8_8_8_01_4_0c35bdbd19f56980c0b5ee6d490bfb634.html", null ], + [ "utl::dev_iterator_traits< _Cat, _Tp, _Diff >", "structutl_1_1dev__iterator__traits.html", null ], + [ "utl::dev_iterator_traits< std::output_iterator_tag, data_t, void >", "structutl_1_1dev__iterator__traits.html", null ], + [ "utl::dev_iterator_traits< std::output_iterator_tag, iter_t >", "structutl_1_1dev__iterator__traits.html", null ], + [ "false_", null, [ + [ "utl::_1wire_i_det::is_1wire_< _Tp, typename >", "structutl_1_1__1wire__i__det_1_1is__1wire__.html", null ], + [ "utl::detail::is_ref_wrapper< T >", "structutl_1_1detail_1_1is__ref__wrapper.html", null ], + [ "utl::i2c_i_details::is_i2c_< _Tp, typename >", "structutl_1_1i2c__i__details_1_1is__i2c__.html", null ], + [ "utl::idxdev_it_details::is_idxdev_it_< _Tp, typename >", "structutl_1_1idxdev__it__details_1_1is__idxdev__it__.html", null ], + [ "utl::indev_it_details::is_indev_it_< _Tp, typename >", "structutl_1_1indev__it__details_1_1is__indev__it__.html", null ], + [ "utl::outdev_it_details::is_outdev_it_< _Tp, typename >", "structutl_1_1outdev__it__details_1_1is__outdev__it__.html", null ], + [ "utl::spi_i_details::is_spi_< _Tp, typename >", "structutl_1_1spi__i__details_1_1is__spi__.html", null ] + ] ], + [ "false_", null, [ + [ "utl::meta::same_< T1, T2 >", "structutl_1_1meta_1_1same__.html", [ + [ "utl::meta::same_as< T1 >::apply< T2 >", "structutl_1_1meta_1_1same__as_1_1apply.html", null ] + ] ], + [ "utl::idx_dev_details::is_idx_dev_< _Tp, typename >", "structutl_1_1idx__dev__details_1_1is__idx__dev__.html", null ], + [ "utl::in_dev_details::is_in_dev_< _Tp, typename >", "structutl_1_1in__dev__details_1_1is__in__dev__.html", null ], + [ "utl::inbuf_dev_details::is_inbuf_dev_< _Tp, typename >", "structutl_1_1inbuf__dev__details_1_1is__inbuf__dev__.html", null ], + [ "utl::meta::detail::_or_<>", "structutl_1_1meta_1_1detail_1_1__or___3_4.html", null ], + [ "utl::meta::same_< _T1, _T2 >", "structutl_1_1meta_1_1same__.html", null ], + [ "utl::out_dev_details::is_out_dev_< _Tp, typename >", "structutl_1_1out__dev__details_1_1is__out__dev__.html", null ] + ] ], + [ "utl::meta::filter_impl::filter_< typename, typename, typename >", "structutl_1_1meta_1_1filter__impl_1_1filter__.html", null ], + [ "utl::meta::filter_impl::filter_< typelist< Head, Tail... >, Fn, L >", "structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_l_01_4.html", null ], + [ "utl::meta::filter_impl::filter_< typelist<>, Fn, L >", "structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_4_00_01_fn_00_01_l_01_4.html", null ], + [ "utl::meta::find_if_impl::find_if_< typename, typename, index_t >", "structutl_1_1meta_1_1find__if__impl_1_1find__if__.html", null ], + [ "utl::meta::find_if_impl::find_if_< typelist< Head, Tail... >, Fn, N >", "structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.html", null ], + [ "utl::meta::find_if_impl::find_if_< typelist<>, Fn, N >", "structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.html", null ], + [ "utl::meta::fold_impl::fold_< typename, typename, typename >", "structutl_1_1meta_1_1fold__impl_1_1fold__.html", null ], + [ "utl::meta::fold_impl::fold_< typelist< Head, Tail... >, V, Fn >", "structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4.html", null ], + [ "utl::meta::fold_impl::fold_< typelist<>, V0, Fn >", "structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_4_00_01_v0_00_01_fn_01_4.html", null ], + [ "utl::meta::front_impl::front_< L >", "structutl_1_1meta_1_1front__impl_1_1front__.html", null ], + [ "utl::meta::front_impl::front_< typelist< Head, Tail... > >", "structutl_1_1meta_1_1front__impl_1_1front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.html", null ], + [ "utl::i2c_i< impl_t >", "classutl_1_1i2c__i.html", null ], + [ "utl::i2c_i< i2c_bb_i< impl_t > >", "classutl_1_1i2c__i.html", [ + [ "utl::i2c_bb_i< impl_t >", "classutl_1_1i2c__bb__i.html", null ] + ] ], + [ "utl::i2c_i< virtual_tag >", "classutl_1_1i2c__i_3_01virtual__tag_01_4.html", [ + [ "utl::i2c_bb_i< virtual_tag >", "classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html", null ] + ] ], + [ "utl::id_t< _Tp, _Nm >", "structutl_1_1id__t.html", null ], + [ "utl::id_t< uint8_t, 8 >", "structutl_1_1id__t.html", [ + [ "utl::_1wire_id_t", "classutl_1_1__1wire__id__t.html", null ] + ] ], + [ "utl::id_traits< _Tp, _Nm >", "structutl_1_1id__traits.html", null ], + [ "utl::id_traits< _Tp, 0 >", "structutl_1_1id__traits_3_01___tp_00_010_01_4.html", null ], + [ "utl::meta::identity< _Tp >", "structutl_1_1meta_1_1identity.html", null ], + [ "utl::idx_dev< impl_t, data_t, idx_t, N >", "classutl_1_1idx__dev.html", null ], + [ "utl::idx_dev< virtual_tag, data_t, idx_t, N >", "classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html", null ], + [ "if_", null, [ + [ "utl::meta::detail::_and_< _T1, _T2 >", "structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_01_4.html", null ], + [ "utl::meta::detail::_and_< _T1, _T2, _T3, _Tn... >", "structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4.html", null ], + [ "utl::meta::detail::_or_< _T1, _T2 >", "structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_01_4.html", null ], + [ "utl::meta::detail::_or_< _T1, _T2, _T3, _Tn... >", "structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4.html", null ] + ] ], + [ "utl::meta::detail::if_c_< If,... >", "structutl_1_1meta_1_1detail_1_1if__c__.html", null ], + [ "utl::meta::detail::if_c_< false, Then, Else >", "structutl_1_1meta_1_1detail_1_1if__c___3_01false_00_01_then_00_01_else_01_4.html", null ], + [ "utl::meta::detail::if_c_< true, Then >", "structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_01_4.html", null ], + [ "utl::meta::detail::if_c_< true, Then, Else >", "structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_00_01_else_01_4.html", null ], + [ "utl::in_dev< impl_t, data_t, streamsize >", "classutl_1_1in__dev.html", null ], + [ "utl::in_dev< virtual_tag, data_t, streamsize >", "classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html", null ], + [ "utl::inbuf_dev< impl_t, data_t, streamsize >", "classutl_1_1inbuf__dev.html", null ], + [ "utl::inbuf_dev< virtual_tag, data_t, streamsize >", "classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html", null ], + [ "utl::indev_it< cont_t, iter_t, _beg, _size >", "classutl_1_1indev__it.html", null ], + [ "utl::input_iterator_tag", "structutl_1_1input__iterator__tag.html", [ + [ "utl::forward_iterator_tag", "structutl_1_1forward__iterator__tag.html", [ + [ "utl::bidirectional_iterator_tag", "structutl_1_1bidirectional__iterator__tag.html", [ + [ "utl::random_access_iterator_tag", "structutl_1_1random__access__iterator__tag.html", [ + [ "utl::contiguous_iterator_tag", "structutl_1_1contiguous__iterator__tag.html", null ] + ] ] + ] ] + ] ] + ] ], + [ "utl::detail::invoke_result_< B, _Callable, _Args >", "structutl_1_1detail_1_1invoke__result__.html", null ], + [ "utl::detail::invoke_result_< true, _Callable, _Args... >", "structutl_1_1detail_1_1invoke__result___3_01true_00_01___callable_00_01___args_8_8_8_01_4.html", null ], + [ "utl::iodev_it< cont_t, iter_t, _beg, _size >", "classutl_1_1iodev__it.html", null ], + [ "utl::meta::detail::is_applicable_< F, T >", "structutl_1_1meta_1_1detail_1_1is__applicable__.html", null ], + [ "utl::meta::detail::is_applicable_i_< T, F, Is >", "structutl_1_1meta_1_1detail_1_1is__applicable__i__.html", null ], + [ "utl::meta::detail::is_applicable_q_< F, T >", "structutl_1_1meta_1_1detail_1_1is__applicable__q__.html", null ], + [ "utl::details::is_boolean_< B, typename >", "structutl_1_1details_1_1is__boolean__.html", null ], + [ "utl::details::is_boolean_< B, meta::void_t< meta::use_if_same_t< bool, decltype(!std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>()==std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>() !=std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>() &&std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>()||std::declval< cref_< B >>())> > >", "structutl_1_1details_1_1is__boolean___3_01_b_00_01meta_1_1void__t_3_01meta_1_1use__if__same__t_37e77ed45a431955fc15b4c1210ad8491.html", null ], + [ "is_constructible", null, [ + [ "utl::is_invocable< F, Args >", "structutl_1_1is__invocable.html", null ], + [ "utl::is_invocable_r< R, F, Args >", "structutl_1_1is__invocable__r.html", null ] + ] ], + [ "utl::details::is_strict_totally_ordered_< T, typename >", "structutl_1_1details_1_1is__strict__totally__ordered__.html", null ], + [ "utl::details::is_strict_totally_ordered_< T, meta::void_t< meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()< std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() > std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()<=std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() >=std::declval< cref_< T >>())> > >", "structutl_1_1details_1_1is__strict__totally__ordered___3_01_t_00_01meta_1_1void__t_3_01meta_1_1uab48bcfc89164f446368b35bcc7c8bcd.html", null ], + [ "utl::details::is_strict_totally_ordered_with_< T, U, typename >", "structutl_1_1details_1_1is__strict__totally__ordered__with__.html", null ], + [ "utl::details::is_strict_totally_ordered_with_< T, U, meta::void_t< meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()< std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() > std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()<=std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() >=std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>()< std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>() > std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>()<=std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>() >=std::declval< cref_< T >>())> > >", "structutl_1_1details_1_1is__strict__totally__ordered__with___3_01_t_00_01_u_00_01meta_1_1void__t8fb7dd5a6ad25952241e37c6f163f434.html", null ], + [ "utl::details::is_weakly_equality_comparable_with_< T, U, typename >", "structutl_1_1details_1_1is__weakly__equality__comparable__with__.html", null ], + [ "utl::details::is_weakly_equality_comparable_with_< T, U, meta::void_t< meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()==std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() !=std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>()==std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>() !=std::declval< cref_< T >>())> > >", "structutl_1_1details_1_1is__weakly__equality__comparable__with___3_01_t_00_01_u_00_01meta_1_1voi4404f901930622694666ca68fb75381b.html", null ], + [ "utl::istreamdev_it< cont_t, data_t >", "classutl_1_1istreamdev__it.html", null ], + [ "utl::meta::nat_", "structutl_1_1meta_1_1nat__.html", null ], + [ "utl::meta::nil_", "structutl_1_1meta_1_1nil__.html", null ], + [ "not_same_", null, [ + [ "utl::meta::not_same_as< T1 >::apply< T2 >", "structutl_1_1meta_1_1not__same__as_1_1apply.html", null ] + ] ], + [ "utl::meta::not_same_as< T1 >", "structutl_1_1meta_1_1not__same__as.html", null ], + [ "utl::ostream_dev< impl_t, data_t >", "classutl_1_1ostream__dev.html", null ], + [ "utl::ostream_dev< virtual_tag, data_t >", "classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html", null ], + [ "utl::ostreamdev_it< cont_t, data_t >", "classutl_1_1ostreamdev__it.html", null ], + [ "utl::out_dev< impl_t, data_t, streamsize >", "classutl_1_1out__dev.html", null ], + [ "utl::out_dev< virtual_tag, data_t, streamsize >", "classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html", null ], + [ "utl::outdev_it< cont_t, iter_t, _beg, _end >", "classutl_1_1outdev__it.html", null ], + [ "utl::output_iterator_tag", "structutl_1_1output__iterator__tag.html", null ], + [ "utl::meta::pop_back_impl::pop_back_< List >", "structutl_1_1meta_1_1pop__back__impl_1_1pop__back__.html", null ], + [ "utl::meta::pop_front_impl::pop_front_< List >", "structutl_1_1meta_1_1pop__front__impl_1_1pop__front__.html", null ], + [ "utl::meta::pop_front_impl::pop_front_< typelist< Head, Tail... > >", "structutl_1_1meta_1_1pop__front__impl_1_1pop__front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.html", null ], + [ "utl::meta::quote< F >", "structutl_1_1meta_1_1quote.html", null ], + [ "utl::meta::quote_i< T, F >", "structutl_1_1meta_1_1quote__i.html", null ], + [ "utl::meta::replace_if_impl::replace_if_< typename, typename, typename, typename >", "structutl_1_1meta_1_1replace__if__impl_1_1replace__if__.html", null ], + [ "utl::meta::replace_if_impl::replace_if_< typelist< Head, Tail... >, Fn, T, Ret >", "structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_01_head_00_01_tail_8_8_8_dfa8065a3617f53ecded260506092a07.html", null ], + [ "utl::meta::replace_if_impl::replace_if_< typelist<>, Fn, T, Ret >", "structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_4_00_01_fn_00_01_t_00_01_ret_01_4.html", null ], + [ "utl::meta::rev_fold_impl::rev_fold_< typename, typename, typename >", "structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold__.html", null ], + [ "utl::meta::rev_fold_impl::rev_fold_< typelist< Head, Tail... >, V, Fn >", "structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4.html", null ], + [ "utl::meta::rev_fold_impl::rev_fold_< typelist< Tail >, V, Fn >", "structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_tail_01_4_00_01_v_00_01_fn_01_4.html", null ], + [ "utl::meta::rev_fold_impl::rev_fold_< typelist<>, V, Fn >", "structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_4_00_01_v_00_01_fn_01_4.html", null ], + [ "utl::meta::reverse_impl::reverse_< List, V >", "structutl_1_1meta_1_1reverse__impl_1_1reverse__.html", null ], + [ "utl::meta::same_as< T1 >", "structutl_1_1meta_1_1same__as.html", null ], + [ "utl::meta::seek_if_impl::seek_if_< typename, typename, index_t >", "structutl_1_1meta_1_1seek__if__impl_1_1seek__if__.html", null ], + [ "utl::meta::seek_if_impl::seek_if_< typelist< Head, Tail... >, Fn, N >", "structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.html", null ], + [ "utl::meta::seek_if_impl::seek_if_< typelist<>, Fn, N >", "structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.html", null ], + [ "utl::spi_i< impl_t >", "classutl_1_1spi__i.html", null ], + [ "utl::spi_i< spi_bb_i< impl_t, CPOL, CPHA, BitOrder > >", "classutl_1_1spi__i.html", [ + [ "utl::spi_bb_i< impl_t, CPOL, CPHA, BitOrder >", "classutl_1_1spi__bb__i.html", null ] + ] ], + [ "utl::spi_i< virtual_tag >", "classutl_1_1spi__i_3_01virtual__tag_01_4.html", [ + [ "utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >", "classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html", null ] + ] ], + [ "utl::meta::typelist< Ts >::times_< N, T >", "structutl_1_1meta_1_1typelist_1_1times__.html", null ], + [ "utl::meta::typelist< Ts >::times_< 0, T... >", "structutl_1_1meta_1_1typelist_1_1times___3_010_00_01_t_8_8_8_01_4.html", null ], + [ "utl::meta::typelist< Ts >::times_< 1, T... >", "structutl_1_1meta_1_1typelist_1_1times___3_011_00_01_t_8_8_8_01_4.html", null ], + [ "utl::meta::transform_impl::transform_< typename, typename >", "structutl_1_1meta_1_1transform__impl_1_1transform__.html", null ], + [ "utl::meta::transform_impl::transform_< typelist< typelist< Ts... >, Fn >, void_t< invoke< Fn, Ts >... > >", "structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts_8_8_8_01_40fe2b1c8ede658aadb6925de73541689.html", null ], + [ "utl::meta::transform_impl::transform_< typelist< typelist< Ts0... >, typelist< Ts1... >, Fn >, void_t< invoke< Fn, Ts0, Ts1 >... > >", "structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts0_8_8_8_01_8fba6bf3d0565d17a96950cb517db5f1.html", null ], + [ "utl::meta::transform_lazy_impl::transform_lazy_< typename, typename >", "structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy__.html", null ], + [ "utl::meta::transform_lazy_impl::transform_lazy_< typelist< typelist< Ts... >, Fn >, void_t< invoke< Fn, Ts >... > >", "structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t56243bc35bf73da8271cb88f34751f3a.html", null ], + [ "utl::meta::transform_lazy_impl::transform_lazy_< typelist< typelist< Ts0... >, typelist< Ts1... >, Fn >, void_t< invoke< Fn, Ts0, Ts1 >... > >", "structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t14ff615a4bff6c4c3701df9c38aaa6a5.html", null ], + [ "true_", null, [ + [ "utl::idx_dev_details::is_idx_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_get1_t< _Tp >, size_t >, use_if_same_t< try_get2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > >", "structutl_1_1idx__dev__details_1_1is__idx__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1ae8b6b24c31c81bdd901da6e6387d84b.html", null ], + [ "utl::in_dev_details::is_in_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_get1_t< _Tp >, size_t >, use_if_same_t< try_get2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > >", "structutl_1_1in__dev__details_1_1is__in__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1dad922a62deb7c32e2cff18d66b8c887d2.html", null ], + [ "utl::inbuf_dev_details::is_inbuf_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_get1_t< _Tp >, size_t >, use_if_same_t< try_get2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > >", "structutl_1_1inbuf__dev__details_1_1is__inbuf__dev___3_01___tp_00_01void__t_3_01typename_01___tpc269ee3885240cc8c352f3c6b3a67cd7.html", null ], + [ "utl::meta::detail::_and_<>", "structutl_1_1meta_1_1detail_1_1__and___3_4.html", null ], + [ "utl::meta::same_< _Tp, _Tp >", "structutl_1_1meta_1_1same___3_01___tp_00_01___tp_01_4.html", null ], + [ "utl::out_dev_details::is_out_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_put1_t< _Tp >, size_t >, use_if_same_t< try_put2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > >", "structutl_1_1out__dev__details_1_1is__out__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1fbf8d2409fc6de9dd6b9649bedc1b379.html", null ] + ] ], + [ "true_", null, [ + [ "utl::_1wire_i_det::is_1wire_< _Tp, meta::void_t< void > >", "structutl_1_1__1wire__i__det_1_1is__1wire___3_01___tp_00_01meta_1_1void__t_3_01void_01_4_01_4.html", null ], + [ "utl::detail::is_ref_wrapper< std::reference_wrapper< U > >", "structutl_1_1detail_1_1is__ref__wrapper_3_01std_1_1reference__wrapper_3_01_u_01_4_01_4.html", null ], + [ "utl::i2c_i_details::is_i2c_< _Tp, meta::void_t< typename _Tp::Sequence, void > >", "structutl_1_1i2c__i__details_1_1is__i2c___3_01___tp_00_01meta_1_1void__t_3_01typename_01___tp_1_1_sequence_00_01void_01_4_01_4.html", null ], + [ "utl::idxdev_it_details::is_idxdev_it_< _Tp, meta::void_t< typename _Tp::value_type, typename _Tp::difference_type, typename _Tp::pointer, typename _Tp::reference, void > >", "structutl_1_1idxdev__it__details_1_1is__idxdev__it___3_01___tp_00_01meta_1_1void__t_3_01typenamebd9ada52ca7b7570c26d0c280af5e635.html", null ], + [ "utl::indev_it_details::is_indev_it_< _Tp, meta::void_t< typename _Tp::value_type, typename _Tp::difference_type, typename _Tp::pointer, typename _Tp::reference, void > >", "structutl_1_1indev__it__details_1_1is__indev__it___3_01___tp_00_01meta_1_1void__t_3_01typename_06508604dcee4010234c84cc332fa196b.html", null ], + [ "utl::outdev_it_details::is_outdev_it_< _Tp, meta::void_t< typename _Tp::value_type, typename _Tp::difference_type, typename _Tp::pointer, typename _Tp::reference, void > >", "structutl_1_1outdev__it__details_1_1is__outdev__it___3_01___tp_00_01meta_1_1void__t_3_01typename8786ebbbd0dc9ca1b14571e779d99d60.html", null ], + [ "utl::spi_i_details::is_spi_< _Tp, meta::void_t< meta::use_if_same_t< try_cclock_t< _Tp >, uint32_t >, meta::use_if_same_t< try_clock_t< _Tp >, void >, meta::use_if_same_t< try_tx_t< _Tp >, byte_t >, meta::use_if_same_t< try_rx_t< _Tp >, byte_t > > >", "structutl_1_1spi__i__details_1_1is__spi___3_01___tp_00_01meta_1_1void__t_3_01meta_1_1use__if__sa2db29f6d65d34ecf5e49ec30b6600d78.html", null ] + ] ], + [ "utl::detail::try_invoke< _Callable, _Args >", "structutl_1_1detail_1_1try__invoke.html", null ], + [ "utl::array_traits< _Tp, 0 >::type", "structutl_1_1array__traits_3_01___tp_00_010_01_4_1_1type.html", null ], + [ "utl::id_traits< _Tp, 0 >::type", "structutl_1_1id__traits_3_01___tp_00_010_01_4_1_1type.html", null ], + [ "utl::meta::typelist< Ts >", "structutl_1_1meta_1_1typelist.html", null ], + [ "utl::iodev_it< cont_t, iter_t, _beg, _size >::value_type_t", "structutl_1_1iodev__it_1_1value__type__t.html", null ], + [ "utl::virtual_tag", "structutl_1_1virtual__tag.html", null ], + [ "utl::meta::detail::when_< If >", "structutl_1_1meta_1_1detail_1_1when__.html", null ], + [ "utl::meta::detail::when_< true >", "structutl_1_1meta_1_1detail_1_1when___3_01true_01_4.html", null ], + [ "utl::meta::wrap< F >", "structutl_1_1meta_1_1wrap.html", null ], + [ "utl::meta::wrap_i< T, F >", "structutl_1_1meta_1_1wrap__i.html", null ] +]; \ No newline at end of file diff --git a/doc/html/i2c_8h.html b/doc/html/i2c_8h.html new file mode 100644 index 0000000..f5938bf --- /dev/null +++ b/doc/html/i2c_8h.html @@ -0,0 +1,170 @@ + + + + + + + +uTL: include/utl/com/i2c.h File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
i2c.h File Reference
+
+
+ +

An Abstract base class interface for the i2c bus. +More...

+
#include <utl/core/impl.h>
+#include <utl/core/crtp.h>
+#include <utl/meta/meta.h>
+
+

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Classes

class  utl::i2c_i< impl_t >
 Abstract base class for i2c bus. More...
 
class  utl::i2c_i< virtual_tag >
 A virtual base class specialization. More...
 
struct  utl::i2c_i_details::is_i2c_< _Tp, typename >
 Primary template to catch any non I2C interface types. More...
 
struct  utl::i2c_i_details::is_i2c_< _Tp, meta::void_t< typename _Tp::Sequence, void > >
 template to catch a proper I2C interface type More...
 
+ + + + + + +

+Namespaces

 utl
 STL's core language concepts.
 
 utl::i2c_i_details
 
+ + + + + + + + + + + + + + + + + + + +

+Typedefs

template<class _Tp >
using utl::i2c_i_details::try_cclk_t = decltype(declval< const _Tp >().clock())
 
template<class _Tp >
using utl::i2c_i_details::try_clk_t = decltype(declval< _Tp >().clock(declval< uint32_t >()))
 
template<class _Tp >
using utl::i2c_i_details::try_start_t = decltype(declval< _Tp >().start())
 
template<class _Tp >
using utl::i2c_i_details::try_stop_t = decltype(declval< _Tp >().stop())
 
template<class _Tp >
using utl::i2c_i_details::try_rx_data_t = decltype(declval< _Tp >().rx_data(declval< bool >(), declval< typename _Tp::Sequence >()))
 
template<class _Tp >
using utl::i2c_i_details::try_tx_data_t = decltype(declval< _Tp >().tx_data(declval< byte_t >(), declval< typename _Tp::Sequence >()))
 
+

Detailed Description

+

An Abstract base class interface for the i2c bus.

+

Copyright (C) 2018 Christos Choutouridis

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

+

You should have received a copy of the GNU Lesser General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file i2c.h.

+
+
+ + + + diff --git a/doc/html/i2c_8h.js b/doc/html/i2c_8h.js new file mode 100644 index 0000000..782f816 --- /dev/null +++ b/doc/html/i2c_8h.js @@ -0,0 +1,13 @@ +var i2c_8h = +[ + [ "i2c_i", "classutl_1_1i2c__i.html", "classutl_1_1i2c__i" ], + [ "i2c_i< virtual_tag >", "classutl_1_1i2c__i_3_01virtual__tag_01_4.html", "classutl_1_1i2c__i_3_01virtual__tag_01_4" ], + [ "is_i2c_", "structutl_1_1i2c__i__details_1_1is__i2c__.html", null ], + [ "is_i2c_< _Tp, meta::void_t< typename _Tp::Sequence, void > >", "structutl_1_1i2c__i__details_1_1is__i2c___3_01___tp_00_01meta_1_1void__t_3_01typename_01___tp_1_1_sequence_00_01void_01_4_01_4.html", null ], + [ "try_cclk_t", "i2c_8h.html#a81c12a06fe9cf6f643718f9175da8769", null ], + [ "try_clk_t", "i2c_8h.html#adaf6b9dbc57caeda1a6a85bd17ac6317", null ], + [ "try_rx_data_t", "i2c_8h.html#a10de1b351bd683c5435e2db3d682819c", null ], + [ "try_start_t", "i2c_8h.html#a173335d0a45cba1b159bf33bcefb3a46", null ], + [ "try_stop_t", "i2c_8h.html#a25cbce342478441f05d3a101fcafc02c", null ], + [ "try_tx_data_t", "i2c_8h.html#ad8d87a56b12244ba8060f8d27207083f", null ] +]; \ No newline at end of file diff --git a/doc/html/i2c_8h_source.html b/doc/html/i2c_8h_source.html new file mode 100644 index 0000000..c72c98a --- /dev/null +++ b/doc/html/i2c_8h_source.html @@ -0,0 +1,151 @@ + + + + + + + +uTL: include/utl/com/i2c.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
i2c.h
+
+
+Go to the documentation of this file.
1 
21 #ifndef _utl_com_i2c_h__
22 #define _utl_com_i2c_h__
23 
24 #include <utl/core/impl.h>
25 #include <utl/core/crtp.h>
26 #include <utl/meta/meta.h>
27 
28 namespace utl {
29 
34 
42  template <typename impl_t>
43  class i2c_i {
44  _CRTP_IMPL(impl_t);
45 
46  public:
47  using type = i2c_i<impl_t>;
48  enum class Sequence {
50  BYTE =0,
51  ACK,
52  BYTEnACK
53  };
54 
58  protected:
60  i2c_i () = default;
61  ~i2c_i () = default;
62  i2c_i (const type&) = delete;
63  type& operator= (const type&) = delete;
65 
72  private:
74  uint32_t _clock () const { return impl()._clock (); }
75  void _clock (uint32_t c) { impl()._clock (c); }
76  void _start() { impl()._start (); }
77  void _stop() { impl()._stop (); }
78  byte_t _rx_data (bool ack, Sequence seq) { return impl()._rx_data (ack, seq); }
79  bool _tx_data (byte_t byte, Sequence seq) { return impl()._tx_data (byte, seq); }
81 
85  public:
87  uint32_t clock () const { return _clock (); }
88  void clock (uint32_t f) { _clock (f); }
89 
94  public:
96  void start() { _start (); }
97  void stop () { _stop (); }
98 
112  return _rx_data (ack, seq);
113  }
114 
128  return _tx_data (byte, seq);
129  }
131 
132  };
133 
139  template<>
140  class i2c_i <virtual_tag> {
141  public:
143 
145  enum class Sequence {
146  BYTE=0,
147  ACK,
148  BYTEnACK
149  };
150 
154  protected:
156  i2c_i () = default;
157  i2c_i (const type&) = delete;
158  type& operator= (const type&) = delete;
159  public:
160  virtual ~i2c_i () = default;
161 
166  private:
168  virtual uint32_t _clock () const = 0;
169  virtual void _clock (uint32_t) = 0;
170  virtual void _start() = 0;
171  virtual void _stop() = 0;
172  virtual byte_t _rx_data (bool ack, Sequence seq) = 0;
173  virtual bool _tx_data (byte_t byte, Sequence seq) = 0;
174 
178  public:
180  uint32_t clock () const { return _clock(); }
181  void clock (uint32_t c) { _clock(c); }
182 
187  public:
189  void start () { _start(); }
190  void stop () { _stop(); }
204  return _rx_data (ack, seq);
205  }
219  return _tx_data (byte, seq);
220  }
222 
223  };
224 
225 #if defined _utl_have_concepts
226 
229  template <typename T>
230  concept bool I2c_i = requires (T t, const T ct, typename T::Sequence s) {
231  // Object type
232  requires not_<std::is_copy_constructible<T>::value>::value;
233  requires not_<std::is_copy_assignable<T>::value>::value;
234  // Methods
235  {ct.clock()} -> uint32_t;
236  {t.clock(0)} -> void;
237  {t.start()} -> void;
238  {t.stop()} -> void;
239  {t.rx_data (1, s)} -> byte_t;
240  {t.tx_data (0, s)} -> bool;
241  };
242 #else
243  namespace i2c_i_details {
244  using std::declval;
245 
246  template <class _Tp> using try_cclk_t = decltype (declval<const _Tp>().clock());
247  template <class _Tp> using try_clk_t = decltype (declval<_Tp>().clock(declval<uint32_t>()));
248  template <class _Tp> using try_start_t = decltype (declval<_Tp>().start());
249  template <class _Tp> using try_stop_t = decltype (declval<_Tp>().stop());
250  template <class _Tp> using try_rx_data_t
251  = decltype (declval<_Tp>().rx_data (declval<bool>(), declval<typename _Tp::Sequence>()));
252  template <class _Tp> using try_tx_data_t
253  = decltype (declval<_Tp>().tx_data (declval<byte_t>(), declval<typename _Tp::Sequence>()));
254 
256  template <typename _Tp, typename =void>
257  struct is_i2c_ : meta::false_ { };
258 
260  template <typename _Tp>
261  struct is_i2c_ <_Tp,
262  meta::void_t <
263  typename _Tp::Sequence,
264 // meta::use_if_same_t <uint32_t,try_cclk_t <_Tp>>,
265 // meta::use_if_same_t <void, try_clk_t <_Tp>>,
266 // meta::use_if_same_t <void, try_start_t <_Tp>>,
267 // meta::use_if_same_t <void, try_stop_t <_Tp>>,
268 // meta::use_if_same_t <byte_t, try_rx_data_t <_Tp>>,
269 // meta::use_if_same_t <bool, try_tx_data_t <_Tp>>
270  void
271  >
272  > : meta::true_ { };
273  }
279 // template <typename _Tp>
280 // constexpr bool I2c_i = i2c_i_details::is_i2c_<_Tp>::value;
281 #endif
282 
284 
285 } // namespace utl
286 
287 #endif // _utl_com_i2c_h__
Include all meta library.
+
void void_t
void_t type alias
Definition: detection.h:55
+
Primary template to catch any non I2C interface types.
Definition: i2c.h:257
+
void clock(uint32_t f)
set clock frequency of the bus
Definition: i2c.h:88
+
Abstract base class for i2c bus.
Definition: i2c.h:43
+
decltype(declval< _Tp >().stop()) try_stop_t
Definition: i2c.h:249
+
A virtual base class specialization.
Definition: i2c.h:140
+
bool_< true > true_
The type used as a compile-time boolean with true value.
Definition: integral.h:68
+ +
decltype(declval< _Tp >().tx_data(declval< byte_t >(), declval< typename _Tp::Sequence >())) try_tx_data_t
Definition: i2c.h:253
+
decltype(declval< const _Tp >().clock()) try_cclk_t
Definition: i2c.h:246
+
decltype(declval< _Tp >().rx_data(declval< bool >(), declval< typename _Tp::Sequence >())) try_rx_data_t
Definition: i2c.h:251
+
i2c_i()=default
Allow constructor from derived only.
+
void _stop()
Send stop functionality.
Definition: i2c.h:77
+
~i2c_i()=default
Allow destructor from derived only.
+
decltype(declval< _Tp >().clock(declval< uint32_t >())) try_clk_t
Definition: i2c.h:247
+
bool_< false > false_
The type used as a compile-time boolean with false value.
Definition: integral.h:69
+
void _clock(uint32_t c)
set clock frequency of the bus [Hz]
Definition: i2c.h:75
+
STL&#39;s core language concepts.
Definition: _1wire.h:30
+
uint32_t clock() const
Definition: i2c.h:180
+ +
void stop()
Send stop functionality.
Definition: i2c.h:97
+
void start()
Send start functionality.
Definition: i2c.h:96
+
Sequence
I2C transmit/receive sequence.
Definition: i2c.h:49
+
i2c_i< impl_t > type
Definition: i2c.h:47
+
Only send/receive ack [1 clock].
+
bool _tx_data(byte_t byte, Sequence seq)
Definition: i2c.h:79
+
byte_t rx_data(bool ack, Sequence seq=Sequence::BYTEnACK)
Receive a byte from the i2c bus.
Definition: i2c.h:203
+
type & operator=(const type &)=delete
+
uint32_t clock() const
Definition: i2c.h:87
+
void clock(uint32_t c)
set clock frequency of the bus [Hz]
Definition: i2c.h:181
+
byte_t rx_data(bool ack, Sequence seq=Sequence::BYTEnACK)
Receive a byte from the i2c bus.
Definition: i2c.h:111
+
_CRTP_IMPL(impl_t)
+
bool tx_data(byte_t byte, Sequence seq=Sequence::BYTEnACK)
Transmit a byte to the i2c bus.
Definition: i2c.h:127
+
uint8_t byte_t
8 bits wide
Definition: types.h:31
+
virtual support tag type
Definition: crtp.h:40
+
bool tx_data(byte_t byte, Sequence seq=Sequence::BYTEnACK)
Transmit a byte to the i2c bus.
Definition: i2c.h:218
+
Read/Write byte and ack [9 clocks].
+ +
uint32_t _clock() const
clock frequency of the bus [Hz]
Definition: i2c.h:74
+
Only read/write byte [8 clocks].
+
void _start()
Send start functionality.
Definition: i2c.h:76
+
Sequence
I2C transmit/receive sequence.
Definition: i2c.h:145
+
byte_t _rx_data(bool ack, Sequence seq)
Definition: i2c.h:78
+
decltype(declval< _Tp >().start()) try_start_t
Definition: i2c.h:248
+
Implementation detail main forward header.
+
+
+ + + + diff --git a/doc/html/i2c__bb_8h.html b/doc/html/i2c__bb_8h.html new file mode 100644 index 0000000..8170609 --- /dev/null +++ b/doc/html/i2c__bb_8h.html @@ -0,0 +1,140 @@ + + + + + + + +uTL: include/utl/com/i2c_bb.h File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
i2c_bb.h File Reference
+
+
+ +

A bit banking implementation of i2c bus inherited from i2c_i base class. +More...

+
#include <utl/core/impl.h>
+#include <utl/core/crtp.h>
+#include <utl/com/i2c.h>
+
+

Go to the source code of this file.

+ + + + + + + + +

+Classes

class  utl::i2c_bb_i< impl_t >
 A bit banking implementation of i2c bus inherited from i2c_i base class. More...
 
class  utl::i2c_bb_i< virtual_tag >
 A virtual base class interface specialization. Using the private virtual interface we provide the interface from i2c_i<virtual_tag> More...
 
+ + + + +

+Namespaces

 utl
 STL's core language concepts.
 
+

Detailed Description

+

A bit banking implementation of i2c bus inherited from i2c_i base class.

+

Copyright (C) 2018 Christos Choutouridis

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

+

You should have received a copy of the GNU Lesser General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file i2c_bb.h.

+
+
+ + + + diff --git a/doc/html/i2c__bb_8h_source.html b/doc/html/i2c__bb_8h_source.html new file mode 100644 index 0000000..8c6e44b --- /dev/null +++ b/doc/html/i2c__bb_8h_source.html @@ -0,0 +1,136 @@ + + + + + + + +uTL: include/utl/com/i2c_bb.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
i2c_bb.h
+
+
+Go to the documentation of this file.
1 
22 #ifndef __utl_com_i2c_bb_h__
23 #define __utl_com_i2c_bb_h__
24 
25 #include <utl/core/impl.h>
26 #include <utl/core/crtp.h>
27 #include <utl/com/i2c.h>
28 
29 
30 namespace utl {
31 
38 
46  template <typename impl_t>
47  class i2c_bb_i : public i2c_i<i2c_bb_i<impl_t>> {
48  _CRTP_IMPL(impl_t);
50 
51  public:
53  using Sequence = typename i2c_i<type>::Sequence;
55  enum class SDAMode {
56  INPUT =0,
57  OUTPUT
58  };
59 
63  protected:
66  ~i2c_bb_i () noexcept = default;
68  i2c_bb_i (uint32_t clk) noexcept
69  : usec_ {1000000/(2*clk)} { }
71 
78  private:
85  bool SDA (SDAMode mode, bool st) { return impl().SDA (mode, st); }
86  void SCL (uint8_t st) { impl().SCL (st); }
87  void delay (uint32_t usec) { impl().delay(usec); }
88 
93  private:
95  uint32_t _clock () const { return 1000000/(2*usec_); }
96  void _clock (uint32_t c) { usec_ = 1000000/(2*c); }
97 
98  void _start ();
99  void _stop ();
100  byte_t _rx_data (bool ack, Sequence seq);
101  bool _tx_data (byte_t byte, Sequence seq);
102  uint32_t usec_;
103  };
105 
106  /*
107  * ============= User functions ================
108  */
114  template <typename impl_t>
116  //Initially set pins
117  SDA (SDAMode::OUTPUT, 1);
118  SCL (1);
119  delay (usec_);
120  SDA (SDAMode::OUTPUT, 0);
121  delay (usec_);
122  SCL (0); //Clear Clock
123  }
124 
130  template <typename impl_t>
132  //Stop bit Operation
133  SDA (SDAMode::OUTPUT, 0);
134  SCL (0);
135  SCL (1);
136  delay (usec_);
137  SDA (SDAMode::OUTPUT, 1);
138  delay (usec_);
139  }
140 
153  template <typename impl_t>
155  byte_t byte {0};
156  //Initial conditions
157  SCL (0);
158  SDA (SDAMode::INPUT, 0);
159 
160  if (seq == Sequence::BYTE || seq == Sequence::BYTEnACK) {
161  // read 8 data bits
162  for (int i=8 ; i!=0 ; --i) {
163  byte <<= 1;
164  SCL (1);
165  delay (usec_);
166  byte |= SDA (SDAMode::INPUT, 0);
167  SCL (0);
168  delay (usec_);
169  }
170  }
171  if (seq == Sequence::ACK || seq == Sequence::BYTEnACK) {
172  SDA (SDAMode::OUTPUT, !ack); //Send (or not) ACK bit
173  SCL (1);
174  delay (usec_);
175  SCL (0); // Keep the bus busy
176  SDA (SDAMode::OUTPUT, 0);
177  }
178  return byte;
179  }
180 
193  template <typename impl_t>
195  bool ack {false};
196  //Initial conditions
197  SCL (0);
198  SDA (SDAMode::OUTPUT, 0);
199 
200  if (seq == Sequence::BYTE || seq == Sequence::BYTEnACK) {
201  //Send 8 bit data
202  for (int i=8 ; i!=0 ; --i) {
203  //Send MSB
204  SDA (SDAMode::OUTPUT, byte & 0x80);
205  byte <<= 1;
206  SCL (1);
207  delay (usec_);
208  SCL (0);
209  delay (usec_);
210  }
211  }
212  if (seq == Sequence::ACK || seq == Sequence::BYTEnACK) {
213  // Get ACK
214  SDA (SDAMode::INPUT, 0);
215  SCL (1);
216  delay (usec_);
217  ack = !SDA (SDAMode::INPUT, 0);
218  SCL (0); // Keep the bus busy
219  delay (usec_);
220  SDA (SDAMode::OUTPUT, 0);
221  }
222  return ack;
223  }
224 
225 
233  template<>
234  class i2c_bb_i<virtual_tag> : public i2c_i<virtual_tag> {
235  public:
239  enum class SDAMode {
240  INPUT =0,
241  OUTPUT
242  };
243 
247  protected:
250  i2c_bb_i (uint32_t clk) noexcept
251  : usec_ {1000000/(2*clk)} { }
253  virtual ~i2c_bb_i () noexcept = default;
255 
259  private:
266  virtual bool SDA (SDAMode mode, bool st) =0;
267  virtual void SCL (bool st) =0;
268  virtual void delay (uint32_t usec) =0;
269 
274  private:
276  uint32_t _clock () const final { return 1000000/(2*usec_); }
277  void _clock (uint32_t c) final { usec_ = 1000000/(2*c); }
278 
279  void _start () final;
280  void _stop () final;
281  byte_t _rx_data (bool ack, Sequence seq) final;
282  bool _tx_data (byte_t byte, Sequence seq) final;
284  uint32_t usec_;
286  };
287 
293  void i2c_bb_i<virtual_tag>::_start (void) {
294  //Initially set pins
295  SDA (SDAMode::OUTPUT, 1);
296  SCL (1);
297  delay (usec_);
298  SDA (SDAMode::OUTPUT, 0);
299  delay (usec_);
300  SCL (0); //Clear Clock
301  }
302 
309  //Stop bit Operation
310  SDA (SDAMode::OUTPUT, 0);
311  SCL (0);
312  SCL (1);
313  delay (usec_);
314  SDA (SDAMode::OUTPUT, 1);
315  delay (usec_);
316  }
317 
331  byte_t byte {0};
332  //Initial conditions
333  SCL (0);
334  SDA (SDAMode::INPUT, 0);
335 
336  if (seq == Sequence::BYTE || seq == Sequence::BYTEnACK) {
337  // read 8 data bits
338  for (int i=8 ; i!=0 ; --i) {
339  byte <<= 1;
340  SCL (1);
341  delay (usec_);
342  byte |= SDA (SDAMode::INPUT, 0);
343  SCL (0);
344  delay (usec_);
345  }
346  }
347  if (seq == Sequence::ACK || seq == Sequence::BYTEnACK) {
348  SDA (SDAMode::OUTPUT, !ack); //Send (or not) ACK bit
349  SCL (1);
350  delay (usec_);
351  SCL (0); // Keep the bus busy
352  SDA (SDAMode::OUTPUT, 0);
353  }
354  return byte;
355  }
356 
370  bool ack {false};
371  //Initial conditions
372  SCL (0);
373  SDA (SDAMode::OUTPUT, 0);
374 
375  if (seq == Sequence::BYTE || seq == Sequence::BYTEnACK) {
376  //Send 8 bit data
377  for (int i=8 ; i!=0 ; --i) {
378  //Send MSB
379  SDA (SDAMode::OUTPUT, byte & 0x80);
380  byte <<= 1;
381  SCL (1);
382  delay (usec_);
383  SCL (0);
384  delay (usec_);
385  }
386  }
387  if (seq == Sequence::ACK || seq == Sequence::BYTEnACK) {
388  // Get ACK
389  SDA (SDAMode::INPUT, 0);
390  SCL (1);
391  delay (usec_);
392  ack = !SDA (SDAMode::INPUT, 0);
393  SCL (0); // Keep the bus busy
394  delay (usec_);
395  SDA (SDAMode::OUTPUT, 0);
396  }
397  return ack;
398  }
399 
401 } // namspace utl
402 
403 #endif // #ifndef __utl_com_i2c_bb_h__
typename i2c_i< type >::Sequence Sequence
Definition: i2c_bb.h:53
+
uint32_t usec_
Definition: i2c_bb.h:102
+ +
void _start()
Send start functionality.
Definition: i2c_bb.h:115
+
Abstract base class for i2c bus.
Definition: i2c.h:43
+
bool SDA(SDAMode mode, bool st)
Definition: i2c_bb.h:85
+
SDAMode
SDA pin direction enumerator.
Definition: i2c_bb.h:239
+
_CRTP_IMPL(impl_t)
+
A virtual base class specialization.
Definition: i2c.h:140
+
byte_t _rx_data(bool ack, Sequence seq)
Receive a byte from the i2c bus.
Definition: i2c_bb.h:154
+ +
void _clock(uint32_t c) final
set clock frequency of the bus [Hz]
Definition: i2c_bb.h:277
+
uint32_t _clock() const
Definition: i2c_bb.h:95
+
void _stop()
Send stop functionality.
Definition: i2c_bb.h:131
+
bool _tx_data(byte_t byte, Sequence seq)
Transmit a byte to the i2c bus.
Definition: i2c_bb.h:194
+
void _clock(uint32_t c)
Definition: i2c_bb.h:96
+
SDAMode
SDA pin direction enumerator.
Definition: i2c_bb.h:55
+ +
STL&#39;s core language concepts.
Definition: _1wire.h:30
+
i2c_bb_i(uint32_t clk) noexcept
Constructor.
Definition: i2c_bb.h:250
+
Sequence
I2C transmit/receive sequence.
Definition: i2c.h:49
+
A virtual base class interface specialization. Using the private virtual interface we provide the int...
Definition: i2c_bb.h:234
+
A bit banking implementation of i2c bus inherited from i2c_i base class.
Definition: i2c_bb.h:47
+
uint8_t byte_t
8 bits wide
Definition: types.h:31
+
virtual support tag type
Definition: crtp.h:40
+
void delay(uint32_t usec)
Definition: i2c_bb.h:87
+
Sequence
I2C transmit/receive sequence.
Definition: i2c.h:145
+
~i2c_bb_i() noexcept=default
A default destructor, allow destructor from derived only.
+
Implementation detail main forward header.
+
void SCL(uint8_t st)
Implementers&#39;s scl pin function.
Definition: i2c_bb.h:86
+
An Abstract base class interface for the i2c bus.
+
+
+ + + + diff --git a/doc/html/id_8h.html b/doc/html/id_8h.html new file mode 100644 index 0000000..b2c0be4 --- /dev/null +++ b/doc/html/id_8h.html @@ -0,0 +1,166 @@ + + + + + + + +uTL: include/utl/container/id.h File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
id.h File Reference
+
+
+ +

A container for device IDs. +More...

+
#include <utl/core/impl.h>
+#include <utl/container/array.h>
+#include <algorithm>
+
+

Go to the source code of this file.

+ + + + + + + + + + + + +

+Classes

struct  utl::id_traits< _Tp, _Nm >
 id container traits helper More...
 
struct  utl::id_traits< _Tp, 0 >
 
struct  utl::id_traits< _Tp, 0 >::type
 
struct  utl::id_t< _Tp, _Nm >
 A standard container for storing IDs as a fixed size sequence of bytes. This type is based on etl::array Meets the requirements of: container, reversible container, sequence. Sets support random access iterators. More...
 
+ + + + +

+Namespaces

 utl
 STL's core language concepts.
 
+ + + + + + + + + + + + + + + + + + + + +

+Functions

device ID comparisons.
template<typename _Tp , size_t _Nm>
bool utl::operator== (const id_t< _Tp, _Nm > &lhs, const id_t< _Tp, _Nm > &rhs)
 
template<typename _Tp , size_t _Nm>
bool utl::operator!= (const id_t< _Tp, _Nm > &lhs, const id_t< _Tp, _Nm > &rhs)
 
template<typename _Tp , size_t _Nm>
bool utl::operator< (const id_t< _Tp, _Nm > &lhs, const id_t< _Tp, _Nm > &rhs)
 
template<typename _Tp , size_t _Nm>
bool utl::operator> (const id_t< _Tp, _Nm > &lhs, const id_t< _Tp, _Nm > &rhs)
 
template<typename _Tp , size_t _Nm>
bool utl::operator<= (const id_t< _Tp, _Nm > &lhs, const id_t< _Tp, _Nm > &rhs)
 
template<typename _Tp , size_t _Nm>
bool utl::operator>= (const id_t< _Tp, _Nm > &lhs, const id_t< _Tp, _Nm > &rhs)
 
+

Detailed Description

+

A container for device IDs.

+

Copyright (C) 2018 Christos Choutouridis

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

+

You should have received a copy of the GNU Lesser General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file id.h.

+
+
+ + + + diff --git a/doc/html/id_8h.js b/doc/html/id_8h.js new file mode 100644 index 0000000..8cf4d97 --- /dev/null +++ b/doc/html/id_8h.js @@ -0,0 +1,13 @@ +var id_8h = +[ + [ "id_traits", "structutl_1_1id__traits.html", "structutl_1_1id__traits" ], + [ "id_traits< _Tp, 0 >", "structutl_1_1id__traits_3_01___tp_00_010_01_4.html", "structutl_1_1id__traits_3_01___tp_00_010_01_4" ], + [ "type", "structutl_1_1id__traits_3_01___tp_00_010_01_4_1_1type.html", null ], + [ "id_t", "structutl_1_1id__t.html", "structutl_1_1id__t" ], + [ "operator!=", "id_8h.html#a7f05cda5b7a37dea074df55db31aefb6", null ], + [ "operator<", "id_8h.html#a64bc464138b386821977a0c4ac43fddf", null ], + [ "operator<=", "id_8h.html#aa2c449f74d1214cb7406b1648d2caf6f", null ], + [ "operator==", "id_8h.html#a2e319bae5449ee07261f547a94c31f87", null ], + [ "operator>", "id_8h.html#aa88fd098a89e4477ff55319be1d44a64", null ], + [ "operator>=", "id_8h.html#a3f53717133a73715f387ebac4b6f22b3", null ] +]; \ No newline at end of file diff --git a/doc/html/id_8h_source.html b/doc/html/id_8h_source.html new file mode 100644 index 0000000..673a077 --- /dev/null +++ b/doc/html/id_8h_source.html @@ -0,0 +1,161 @@ + + + + + + + +uTL: include/utl/container/id.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
id.h
+
+
+Go to the documentation of this file.
1 
22 #ifndef __utl_container_id_h__
23 #define __utl_container_id_h__
24 
25 #include <utl/core/impl.h>
26 #include <utl/container/array.h>
27 #include <algorithm>
28 
29 namespace utl {
30 
36  template <typename _Tp, size_t _Nm>
38  struct id_traits {
39  typedef _Tp type[_Nm];
40 
41  static constexpr _Tp& Ref (const type& t, size_t n) noexcept {
42  return const_cast<_Tp&> (t[n]);
43  }
44 
45  static constexpr _Tp* Ptr(const type& t) noexcept {
46  return const_cast<_Tp*> (t);
47  }
48  };
49 
50  template <typename _Tp>
51  struct id_traits<_Tp, 0> {
52  struct type { };
53 
54  static constexpr _Tp& Ref(const type& t, size_t n) noexcept {
55  return *static_cast<_Tp*>(nullptr);
56  }
57 
58  static constexpr _Tp* Ptr(const type& t) noexcept {
59  return nullptr;
60  }
61  };
63 
77  template <typename _Tp, size_t _Nm>
78  struct id_t {
79  using value_type = _Tp;
80  using pointer = value_type*;
81  using const_pointer = const value_type*;
83  using const_reference = const value_type&;
84  using iterator = value_type*;
85  using const_iterator = const value_type*;
86  using size_type = size_t;
88  using reverse_iterator = std::reverse_iterator <iterator>;
90  = std::reverse_iterator <const_iterator>;
91 
92  // type and data
95 
96  // No explicit construct/copy/destroy for aggregate type.
97 
98  // DR 776 (std::array)
99  void fill (const value_type& v) { std::fill_n (begin(), size(), v); }
100 
101  void swap (id_t& other) noexcept {
102  std::swap_ranges (begin(), end(), other.begin());
103  }
104 
107  iterator begin() noexcept { return iterator (data()); }
108  const_iterator begin() const noexcept { return const_iterator (data()); }
109  iterator end() noexcept { return iterator (data() + _Nm); }
110  const_iterator end() const noexcept { return const_iterator (data() + _Nm); }
111  const_iterator cbegin() const noexcept { return const_iterator (data()); }
112  const_iterator cend() const noexcept { return const_iterator (data() + _Nm); }
113 
114  reverse_iterator rbegin() noexcept { return reverse_iterator (end()); }
115  reverse_iterator rend() noexcept { return reverse_iterator (begin()); }
116  const_reverse_iterator rbegin() const noexcept { return const_reverse_iterator (end()); }
117  const_reverse_iterator rend() const noexcept { return const_reverse_iterator (begin()); }
118  const_reverse_iterator crbegin() const noexcept { return const_reverse_iterator (end()); }
119  const_reverse_iterator crend() const noexcept { return const_reverse_iterator (begin()); }
123  constexpr size_type size() const noexcept { return _Nm; }
124  constexpr size_type max_size() const noexcept { return _Nm; }
125  constexpr bool empty() const noexcept { return size() == 0; }
127 
130 
133  return traits_t::Ref (_data, n);
134  }
136  constexpr const_reference operator[] (size_type n) const noexcept {
137  return traits_t::Ref (_data, n);
138  }
139 
144  reference at (size_type n) noexcept {
145  if (n < _Nm)
146  return traits_t::Ref (_data, n);
147  else
148  abort ();
149  }
151  constexpr const_reference at (size_type n) const noexcept {
152  static_assert ((n < _Nm), "id_t::at: out of range");
153  return traits_t::Ref (_data, n);
154  }
159  constexpr bool bit (uint8_t bit) const noexcept {
160  return traits_t::Ref (_data, bit/(8*sizeof(_Tp))) &
161  (static_cast<value_type>(0x01) << ((bit % (8*sizeof(_Tp)))-1));
162  }
163 
169  void bit (uint8_t bit, bool v) noexcept {
170  value_type one = 1;
171  uint8_t den = 8*sizeof(_Tp)/sizeof(uint8_t);
172  if (v) traits_t::Ref (_data, bit/den) |= one << ((bit % den)-1);
173  else traits_t::Ref (_data, bit/den) &= ~one << ((bit % den)-1);
174  }
175  // first item
176  reference front () noexcept {
177  return *begin ();
178  }
179  constexpr const_reference front () const noexcept {
180  return traits_t::Ref (_data, 0);
181  }
182 
183  // Last item
184  reference back () noexcept {
185  return _Nm ? *(end() - 1) : *end();
186  }
187  constexpr const_reference back () const noexcept {
188  return _Nm ? traits_t::Ref (_data, _Nm - 1)
189  : traits_t::Ref (_data, 0);
190  }
191 
192  // Pointer to data
193  pointer data () noexcept { return traits_t::Ptr (_data); }
194  const_pointer data () const noexcept { return traits_t::Ptr (_data); }
196  };
197 
200  template <typename _Tp, size_t _Nm>
201  inline bool operator== (const id_t<_Tp, _Nm>& lhs, const id_t<_Tp, _Nm>& rhs) {
202  return std::equal (lhs.begin(), lhs.end(), rhs.begin());
203  }
204 
205  template <typename _Tp, size_t _Nm>
206  inline bool operator!= (const id_t<_Tp, _Nm>& lhs, const id_t<_Tp, _Nm>& rhs) {
207  return !(lhs == rhs);
208  }
209 
210  template <typename _Tp, size_t _Nm>
211  inline bool operator< (const id_t<_Tp, _Nm>& lhs, const id_t<_Tp, _Nm>& rhs) {
212  // MSB plays bigger role in comparison
213  return std::lexicographical_compare(lhs.rbegin(), lhs.rend(), rhs.rbegin(), rhs.rend());
214  }
215 
216  template <typename _Tp, size_t _Nm>
217  inline bool operator> (const id_t<_Tp, _Nm>& lhs, const id_t<_Tp, _Nm>& rhs) {
218  return rhs < lhs;
219  }
220 
221  template <typename _Tp, size_t _Nm>
222  inline bool operator<= (const id_t<_Tp, _Nm>& lhs, const id_t<_Tp, _Nm>& rhs) {
223  return !(lhs > rhs);
224  }
225 
226  template <typename _Tp, size_t _Nm>
227  inline bool operator>= (const id_t<_Tp, _Nm>& lhs, const id_t<_Tp, _Nm>& rhs) {
228  return !(lhs < rhs);
229  }
231 
232 } // namespace utl
233 
234 
235 #endif /* __utl_container_id_h__ */
bool operator==(const array< _Tp, _Nm > &lhs, const array< _Tp, _Nm > &rhs)
Definition: array.h:181
+
reference back() noexcept
Definition: id.h:184
+
const value_type & const_reference
Definition: id.h:83
+
const_reverse_iterator rbegin() const noexcept
Definition: id.h:116
+
static constexpr _Tp & Ref(const type &t, size_t n) noexcept
Definition: id.h:41
+
iterator end() noexcept
Definition: id.h:109
+
static constexpr _Tp * Ptr(const type &t) noexcept
Definition: id.h:58
+
const_iterator begin() const noexcept
Definition: id.h:108
+
size_t size_type
Definition: id.h:86
+
reference front() noexcept
Definition: id.h:176
+
constexpr const_reference back() const noexcept
Definition: id.h:187
+
traits_t::type _data
Definition: id.h:94
+
void fill(const value_type &v)
Definition: id.h:99
+
std::reverse_iterator< const_iterator > const_reverse_iterator
Definition: id.h:90
+
const_iterator cbegin() const noexcept
Definition: id.h:111
+
const value_type * const_pointer
Definition: id.h:81
+
void bit(uint8_t bit, bool v) noexcept
Definition: id.h:169
+
const_iterator cend() const noexcept
Definition: id.h:112
+ +
id container traits helper
Definition: id.h:38
+
const_reverse_iterator crend() const noexcept
Definition: id.h:119
+
std::ptrdiff_t difference_type
Definition: id.h:87
+
std::ptrdiff_t ptrdiff_t
Definition: types.h:40
+
const_reverse_iterator rend() const noexcept
Definition: id.h:117
+
bool operator>=(const array< _Tp, _Nm > &lhs, const array< _Tp, _Nm > &rhs)
Definition: array.h:207
+
value_type * pointer
Definition: id.h:80
+
std::size_t size_t
Definition: types.h:37
+
STL&#39;s core language concepts.
Definition: _1wire.h:30
+
constexpr const_reference front() const noexcept
Definition: id.h:179
+
pointer data() noexcept
Definition: id.h:193
+
reverse_iterator rend() noexcept
Definition: id.h:115
+
value_type & reference
Definition: id.h:82
+
constexpr size_type max_size() const noexcept
Definition: id.h:124
+
bool operator>(const array< _Tp, _Nm > &lhs, const array< _Tp, _Nm > &rhs)
Definition: array.h:196
+
const_iterator end() const noexcept
Definition: id.h:110
+
const value_type * const_iterator
Definition: id.h:85
+
void swap(id_t &other) noexcept
Definition: id.h:101
+
A standard container for storing IDs as a fixed size sequence of bytes. This type is based on etl::ar...
Definition: id.h:78
+
std::reverse_iterator< iterator > reverse_iterator
Definition: id.h:88
+
reverse_iterator rbegin() noexcept
Definition: id.h:114
+
const_reverse_iterator crbegin() const noexcept
Definition: id.h:118
+
constexpr bool empty() const noexcept
Definition: id.h:125
+
reference at(size_type n) noexcept
Definition: id.h:144
+
bool operator!=(const array< _Tp, _Nm > &lhs, const array< _Tp, _Nm > &rhs)
Definition: array.h:186
+
uint8_t value_type
Definition: id.h:79
+
constexpr const_reference at(size_type n) const noexcept
Compile time boundary check dereference operator.
Definition: id.h:151
+
const_pointer data() const noexcept
Definition: id.h:194
+
reference operator[](size_type n) noexcept
Operator [].
Definition: id.h:132
+
iterator begin() noexcept
Definition: id.h:107
+
static constexpr _Tp * Ptr(const type &t) noexcept
Definition: id.h:45
+
_Tp type[_Nm]
Definition: id.h:39
+
value_type * iterator
Definition: id.h:84
+
Implementation detail main forward header.
+
static constexpr _Tp & Ref(const type &t, size_t n) noexcept
Definition: id.h:54
+
constexpr size_type size() const noexcept
Definition: id.h:123
+
constexpr bool bit(uint8_t bit) const noexcept
Definition: id.h:159
+
+
+ + + + diff --git a/doc/html/idx__dev_8h.html b/doc/html/idx__dev_8h.html new file mode 100644 index 0000000..a05b999 --- /dev/null +++ b/doc/html/idx__dev_8h.html @@ -0,0 +1,184 @@ + + + + + + + +uTL: include/utl/dev/idx_dev.h File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
idx_dev.h File Reference
+
+
+ +

Abstract base class implementations for indexed devices interface of utl. +More...

+
#include <utl/core/impl.h>
+#include <utl/core/crtp.h>
+#include <utl/dev/dev_iterators.h>
+#include <utl/meta/meta.h>
+
+

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Classes

class  utl::idx_dev< impl_t, data_t, idx_t, N >
 Abstract base class for indexed devices. More...
 
class  utl::idx_dev< virtual_tag, data_t, idx_t, N >
 A virtual base class specialization. More...
 
struct  utl::idx_dev_details::is_idx_dev_< _Tp, typename >
 Primary template to catch any non input device types. More...
 
struct  utl::idx_dev_details::is_idx_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_get1_t< _Tp >, size_t >, use_if_same_t< try_get2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > >
 template to catch a proper input device type More...
 
+ + + + + + +

+Namespaces

 utl
 STL's core language concepts.
 
 utl::idx_dev_details
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

template<class _Tp >
using utl::idx_dev_details::try_get1_t = decltype(declval< _Tp >().get(declval< typename _Tp::data_type & >()))
 
template<class _Tp >
using utl::idx_dev_details::try_get2_t = decltype(declval< _Tp >().get(declval< typename _Tp::data_type * >(), declval< size_t >()))
 
template<class _Tp >
using utl::idx_dev_details::try_begin_t = decltype(declval< _Tp >().begin())
 
template<class _Tp >
using utl::idx_dev_details::tryc_begin_t = decltype(declval< const _Tp >().begin())
 
template<class _Tp >
using utl::idx_dev_details::try_cbegin_t = decltype(declval< const _Tp >().cbegin())
 
template<class _Tp >
using utl::idx_dev_details::try_end_t = decltype(declval< _Tp >().begin())
 
template<class _Tp >
using utl::idx_dev_details::tryc_end_t = decltype(declval< const _Tp >().begin())
 
template<class _Tp >
using utl::idx_dev_details::try_cend_t = decltype(declval< const _Tp >().cend())
 
+ + + + + +

+Variables

template<typename _Tp >
constexpr bool utl::Idx_dev = idx_dev_details::is_idx_dev_ <_Tp>::value
 
+

Detailed Description

+

Abstract base class implementations for indexed devices interface of utl.

+

Copyright (C) 2018 Christos Choutouridis

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

+

You should have received a copy of the GNU Lesser General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file idx_dev.h.

+
+
+ + + + diff --git a/doc/html/idx__dev_8h.js b/doc/html/idx__dev_8h.js new file mode 100644 index 0000000..e01f2b7 --- /dev/null +++ b/doc/html/idx__dev_8h.js @@ -0,0 +1,16 @@ +var idx__dev_8h = +[ + [ "idx_dev", "classutl_1_1idx__dev.html", "classutl_1_1idx__dev" ], + [ "idx_dev< virtual_tag, data_t, idx_t, N >", "classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html", "classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4" ], + [ "is_idx_dev_", "structutl_1_1idx__dev__details_1_1is__idx__dev__.html", null ], + [ "is_idx_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_get1_t< _Tp >, size_t >, use_if_same_t< try_get2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > >", "structutl_1_1idx__dev__details_1_1is__idx__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1ae8b6b24c31c81bdd901da6e6387d84b.html", null ], + [ "try_begin_t", "idx__dev_8h.html#a69a8af95a0fd62c3e022c34ddc3a956b", null ], + [ "try_cbegin_t", "idx__dev_8h.html#a655c6de0d6d8f4ac3778f2fff8e9c7de", null ], + [ "try_cend_t", "idx__dev_8h.html#adb8cac5f5772e513749038257a1f92df", null ], + [ "try_end_t", "idx__dev_8h.html#ab85fa5de8595b6e56a6718ffb7d4edfe", null ], + [ "try_get1_t", "idx__dev_8h.html#ac3a877d2f57d7c50b77456e0571112f0", null ], + [ "try_get2_t", "idx__dev_8h.html#a4cf6896009d70acdccfb55ba333fe7ef", null ], + [ "tryc_begin_t", "idx__dev_8h.html#afe8e2fc19d7b37a1b379a5f8302ef421", null ], + [ "tryc_end_t", "idx__dev_8h.html#aad6edb02a37f897cf4157f6345909ef1", null ], + [ "Idx_dev", "idx__dev_8h.html#a80a0424d220ac1f7be50086617a05dbd", null ] +]; \ No newline at end of file diff --git a/doc/html/idx__dev_8h_source.html b/doc/html/idx__dev_8h_source.html new file mode 100644 index 0000000..115a87c --- /dev/null +++ b/doc/html/idx__dev_8h_source.html @@ -0,0 +1,172 @@ + + + + + + + +uTL: include/utl/dev/idx_dev.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
idx_dev.h
+
+
+Go to the documentation of this file.
1 
22 #ifndef __utl_dev_idx_dev_h__
23 #define __utl_dev_idx_dev_h__
24 
25 #include <utl/core/impl.h>
26 #include <utl/core/crtp.h>
27 #include <utl/dev/dev_iterators.h>
28 #include <utl/meta/meta.h>
29 
30 namespace utl {
31 
36 
55  template <typename impl_t, typename data_t, typename idx_t, size_t N>
56  class idx_dev {
57  _CRTP_IMPL(impl_t);
59 
61  public:
62  using data_type = data_t;
63  using pointer_type= data_t*;
64  using idx_type = idx_t;
66  using type = idx_dev_t;
67 
71  protected:
73  ~idx_dev () = default;
74  idx_dev () = default;
75  idx_dev(const idx_dev_t&) = delete;
76  idx_dev_t& operator= (const idx_dev_t&) = delete;
77 
81  private:
82  size_t get_ (data_t& data, idx_t idx) { return impl().get_(data, idx); }
83  size_t get_ (data_t* data, size_t n, idx_t idx) { return impl().get_(data, n, idx); }
84  size_t put_ (const data_t& data, idx_t idx) { return impl().put_(data, idx); }
85  size_t put_ (const data_t* data, size_t n, idx_t idx) { return impl().put_ (data, n, idx); }
86  idx_t cursor_ () const { return impl().cursor_(); }
87  void cursor_ (idx_t idx) { impl().cursor_(idx); }
89 
93  public:
104  size_t get (data_t& data, idx_t cursor) {
105  return get_ (data, cursor);
106  }
107 
116  size_t get (data_t* data, size_t n, idx_t cursor) {
117  return get_ (data, n, cursor);
118  }
119 
129  size_t put (const data_t& data, idx_t cursor) {
130  return put_ (data, cursor);
131  }
132 
141  size_t put (const data_t* data, size_t n, idx_t cursor) {
142  return put_ (data, n, cursor);
143  }
144 
149  idx_t cursor () const { return cursor_(); }
156  idx_t cursor (idx_t idx) { return cursor_(idx); }
158 
162 
169  template <typename _Dst_t>
170  idx_dev_t& operator>> (_Dst_t& dst) {
171  static_assert ((sizeof (_Dst_t)%sizeof(data_t) == 0),
172  "Target size must be a integer multiple of device's data size");
173  get_ (reinterpret_cast<data_t*>(&dst), sizeof(_Dst_t)/sizeof(data_t), cursor_());
174  return *this;
175  }
177  template <typename _Dst_t>
178  idx_dev_t& operator>> (_Dst_t* dst) = delete;
179 
181  idx_dev_t& operator>> (data_t& dst) {
182  get_ (dst, cursor_());
183  return *this;
184  }
186 
190 
197  template <typename _Src_t>
198  idx_dev_t& operator<< (_Src_t& src) {
199  static_assert ((sizeof (_Src_t)%sizeof(data_t) == 0),
200  "Source size must be a integer multiple of device's data size");
201  put_ (reinterpret_cast<data_t*>(&src), sizeof (_Src_t)/sizeof(data_t), cursor_());
202  return *this;
203  }
205  template <typename _Src_t>
206  idx_dev_t& operator<< (_Src_t* src) = delete;
207 
209  idx_dev_t& operator<< (const data_t& src) {
210  put_ (src, cursor_());
211  return *this;
212  }
214 
218  data_t& operator[] (const idx_t idx) {
220  iterator it(this, idx);
221  return *it;
222  }
224 
228  public:
230  using iterator = idxdev_it <idx_dev_t, data_t*, N>;
231  using const_iterator = idxdev_it <idx_dev_t, const data_t*, N>;
232 
234  iterator begin () noexcept { return iterator(this, iterator::beg); }
235  const_iterator begin () const noexcept { return const_iterator(this, iterator::beg); }
236  const_iterator cbegin () const noexcept { return const_iterator(this, iterator::beg); }
239  iterator end () noexcept { return iterator(this, iterator::eos); }
240  const_iterator end () const noexcept { return const_iterator(this, iterator::eos); }
241  const_iterator cend () const noexcept { return const_iterator(this, iterator::eos); }
244  };
245 
246 
255  template <typename data_t, typename idx_t, size_t N>
256  class idx_dev <virtual_tag, data_t, idx_t, N> {
258 
260  public:
261  using data_type = data_t;
262  using pointer_type= data_t*;
263  using idx_type = idx_t;
265  using type = idx_dev_t;
266 
270  public:
272  virtual ~idx_dev () = default;
273  protected:
274  idx_dev () = default;
275  idx_dev(const idx_dev_t&) = delete;
276  idx_dev_t& operator= (const idx_dev_t&) = delete;
277 
280  private:
281  virtual size_t get_ (data_t&, idx_t) =0;
282  virtual size_t get_ (data_t*, size_t n, idx_t) =0;
283  virtual size_t put_ (const data_t&, idx_t) =0;
284  virtual size_t put_ (const data_t*, size_t n, idx_t) =0;
285  virtual idx_t cursor_ () const =0;
286  virtual void cursor_ (idx_t) =0;
288 
292  public:
303  size_t get (data_t& data, idx_t cursor) {
304  return get_ (data, cursor);
305  }
306 
315  size_t get (data_t* data, size_t n, idx_t cursor) {
316  return get_ (data, n, cursor);
317  }
318 
328  size_t put (const data_t& data, idx_t cursor) {
329  return put_ (data, cursor);
330  }
331 
340  size_t put (const data_t* data, size_t n, idx_t cursor) {
341  return put_ (data, n, cursor);
342  }
343 
348  idx_t cursor () const { return cursor_(); }
355  idx_t cursor (idx_t idx) { return cursor_(idx); }
357 
361 
368  template <typename _Dst_t>
369  idx_dev_t& operator>> (_Dst_t& dst) {
370  static_assert ((sizeof (_Dst_t)%sizeof(data_t) == 0),
371  "Target size must be an integer multiple of device's data size");
372  get_ (reinterpret_cast<data_t*>(&dst), sizeof(_Dst_t)/sizeof(data_t), cursor_());
373  return *this;
374  }
376  template <typename _Dst_t>
377  idx_dev_t& operator>> (_Dst_t* dst) = delete;
378 
380  idx_dev_t& operator>> (data_t& dst) {
381  get_ (dst, cursor_());
382  return *this;
383  }
385 
389 
396  template <typename _Src_t>
397  idx_dev_t& operator<< (_Src_t& src) {
398  static_assert ((sizeof (_Src_t)%sizeof(data_t) == 0),
399  "Source size must be an integer multiple of device's data size");
400  put_ (reinterpret_cast<data_t*>(&src), sizeof (_Src_t)/sizeof(data_t), cursor_());
401  return *this;
402  }
404  template <typename _Src_t>
405  idx_dev_t& operator<< (_Src_t* src) = delete;
406 
408  idx_dev_t& operator<< (const data_t& src) {
409  put_ (src, cursor_());
410  return *this;
411  }
413 
417  data_t& operator[] (const idx_t idx) {
419  iterator it(this, idx);
420  return *it;
421  }
423 
427  public:
429  using iterator = idxdev_it <idx_dev_t, data_t*, N>;
430  using const_iterator = idxdev_it <idx_dev_t, const data_t*, N>;
431 
433  iterator begin () noexcept { return iterator(this, iterator::beg); }
434  const_iterator begin () const noexcept { return const_iterator(this, iterator::beg); }
435  const_iterator cbegin () const noexcept { return const_iterator(this, iterator::beg); }
438  iterator end () noexcept { return iterator(this, iterator::eos); }
439  const_iterator end () const noexcept { return const_iterator(this, iterator::eos); }
440  const_iterator cend () const noexcept { return const_iterator(this, iterator::eos); }
443  };
444 
448  #if defined _utl_have_concepts
450  template <typename _Tp>
451  concept bool Idx_dev = requires (_Tp t, const _Tp ct, typename _Tp::data_type v) {
452  // Object type
453  // requires std::is_default_constructible<_Tp>::value;
454  requires !std::is_copy_constructible<_Tp>::value;
455  requires !std::is_copy_assignable<_Tp>::value;
456  // Methods
457  {t.get(v, 0)} -> size_t;
458  {t.get(&v, 1, 0)} -> size_t;
459  {t.put(v, 0)} -> size_t;
460  {t.put(&v, 1, 0)} -> size_t;
461  // Operators
462  t >> v;
463  t << v;
464  {t[typename _Tp::idx_type{}]} -> typename _Tp::data_type&;
465  // Iterators
466  requires idxdev_iterator_c<typename _Tp::iterator>;
467  typename _Tp::const_iterator; //XXX: change to concept: is_idxdev_iterator<_Tp>
468  //requires idxdev_iterator_c<typename _Tp::const_iterator>;
469  { t.begin()} -> typename _Tp::iterator;
470  // {ct.begin()} -> typename _Tp::const_iterator;
471  // { t.cbegin()} -> typename _Tp::const_iterator;
472  { t.end()} -> typename _Tp::iterator;
473  // {ct.end()} -> typename _Tp::const_iterator;
474  // { t.cend()} -> typename _Tp::const_iterator;
475  };
476  #else
477  namespace idx_dev_details {
478  using std::declval;
479 
480  // main api members
481  template <class _Tp> using try_get1_t = decltype (declval<_Tp>().get (declval<typename _Tp::data_type&>()));
482  template <class _Tp> using try_get2_t = decltype (declval<_Tp>().get (declval<typename _Tp::data_type*>(), declval<size_t>()));
483  // operators
484  //template <class _Tp> using try_extract_t= decltype (declval<_Tp>() >> declval<typename _Tp::data_type&>());
485  // iterator members
486  template <class _Tp> using try_begin_t = decltype (declval<_Tp>().begin());
487  template <class _Tp> using tryc_begin_t = decltype (declval<const _Tp>().begin());
488  template <class _Tp> using try_cbegin_t = decltype (declval<const _Tp>().cbegin());
489  template <class _Tp> using try_end_t = decltype (declval<_Tp>().begin());
490  template <class _Tp> using tryc_end_t = decltype (declval<const _Tp>().begin());
491  template <class _Tp> using try_cend_t = decltype (declval<const _Tp>().cend());
492 
494  template <typename _Tp, typename =void>
495  struct is_idx_dev_ : false_ {};
496 
498  template <typename _Tp>
499  struct is_idx_dev_ <_Tp,
500  void_t <
501  typename _Tp::data_type,
502  typename _Tp::pointer_type,
503  typename _Tp::iterator,
504  typename _Tp::const_iterator,
505  use_if_same_t <try_get1_t <_Tp>, size_t>,
506  use_if_same_t <try_get2_t <_Tp>, size_t>,
507  //if_same_t <try_extract_t<_Tp>,typename _Tp&>,
508  use_if_same_t <try_begin_t<_Tp>, typename _Tp::iterator>,
509  use_if_same_t <tryc_begin_t<_Tp>, typename _Tp::const_iterator>,
510  use_if_same_t <try_cbegin_t<_Tp>, typename _Tp::const_iterator>,
511  use_if_same_t <try_end_t<_Tp>, typename _Tp::iterator>,
512  use_if_same_t <tryc_end_t<_Tp>, typename _Tp::const_iterator>,
513  use_if_same_t <try_cend_t<_Tp>, typename _Tp::const_iterator>
514  >
515  > : true_ {};
516  }
522  template <typename _Tp>
524  #endif
525 
527 }
529 
530 #endif /* #ifndef __utl_dev_idx_dev_h__ */
+
Include all meta library.
+
Primary template to catch any non input device types.
Definition: idx_dev.h:495
+
idx_t cursor(idx_t idx)
Set the cursor position.
Definition: idx_dev.h:355
+
size_t put(const data_t &data, idx_t cursor)
Put interface. This function should send a single data_t object to device.
Definition: idx_dev.h:328
+
size_t get_(data_t *data, size_t n, idx_t idx)
Definition: idx_dev.h:83
+
void void_t
void_t type alias
Definition: detection.h:55
+
size_t put(const data_t *data, size_t n, idx_t cursor)
Put interface. This function should send a stream of data_t objects to device.
Definition: idx_dev.h:141
+
A virtual base class specialization.
Definition: idx_dev.h:256
+
idx_t cursor() const
Return the current cursor position.
Definition: idx_dev.h:149
+
const_iterator begin() const noexcept
Definition: idx_dev.h:434
+
decltype(declval< _Tp >().begin()) try_begin_t
Definition: idx_dev.h:486
+
iterator begin() noexcept
.begin implementation
Definition: idx_dev.h:433
+
idx_dev()=default
A default constructor from derived only.
+
idxdev_it< idx_dev_t, data_t *, N > iterator
Iterator.
Definition: idx_dev.h:230
+
data_t & operator[](const idx_t idx)
Definition: idx_dev.h:219
+
bool_< true > true_
The type used as a compile-time boolean with true value.
Definition: integral.h:68
+ +
idx_dev_t & operator=(const idx_dev_t &)=delete
+
idx_t cursor() const
Return the current cursor position.
Definition: idx_dev.h:348
+
size_t put_(const data_t &data, idx_t idx)
Definition: idx_dev.h:84
+
const_iterator cbegin() const noexcept
Definition: idx_dev.h:435
+
size_t put(const data_t &data, idx_t cursor)
Put interface. This function should send a single data_t object to device.
Definition: idx_dev.h:129
+
size_t get_(data_t &data, idx_t idx)
Definition: idx_dev.h:82
+
meta::eval< meta::enable_if< meta::same_< _T1, _T2 >::value, _Ret > > use_if_same_t
Definition: stl.h:55
+
decltype(declval< const _Tp >().begin()) tryc_begin_t
Definition: idx_dev.h:487
+
_CRTP_IMPL(impl_t)
+
iterator begin() noexcept
.begin implementation
Definition: idx_dev.h:234
+
const_iterator end() const noexcept
Definition: idx_dev.h:439
+ +
Abstract base class for indexed devices.
Definition: idx_dev.h:56
+
decltype(declval< const _Tp >().cend()) try_cend_t
Definition: idx_dev.h:491
+
bool_< false > false_
The type used as a compile-time boolean with false value.
Definition: integral.h:69
+
decltype(declval< _Tp >().get(declval< typename _Tp::data_type * >(), declval< size_t >())) try_get2_t
Definition: idx_dev.h:482
+ +
std::size_t size_t
Definition: types.h:37
+
STL&#39;s core language concepts.
Definition: _1wire.h:30
+
iterator end() noexcept
Definition: idx_dev.h:239
+
idx_t idx_type
Definition: idx_dev.h:64
+
idx_dev< impl_t, data_t, idx_t, N > idx_dev_t
class type syntactic sugar
Definition: idx_dev.h:58
+
decltype(declval< const _Tp >().begin()) tryc_end_t
Definition: idx_dev.h:490
+
decltype(declval< _Tp >().begin()) try_end_t
Definition: idx_dev.h:489
+
const_iterator cend() const noexcept
Definition: idx_dev.h:241
+
decltype(declval< const _Tp >().cbegin()) try_cbegin_t
Definition: idx_dev.h:488
+
size_t put(const data_t *data, size_t n, idx_t cursor)
Put interface. This function should send a stream of data_t objects to device.
Definition: idx_dev.h:340
+
idx_dev_t & operator>>(_Dst_t &dst)
Template operator>> implementation for for all by value/ref parameters.
Definition: idx_dev.h:170
+
const_iterator cend() const noexcept
Definition: idx_dev.h:440
+
idxdev_it< idx_dev_t, data_t *, N > iterator
Iterator.
Definition: idx_dev.h:429
+
void cursor_(idx_t idx)
Definition: idx_dev.h:87
+
Iterator collection for devices.
+
idxdev_it< idx_dev_t, const data_t *, N > const_iterator
Const iterator.
Definition: idx_dev.h:430
+
decltype(declval< _Tp >().get(declval< typename _Tp::data_type & >())) try_get1_t
Definition: idx_dev.h:481
+
size_t put_(const data_t *data, size_t n, idx_t idx)
Definition: idx_dev.h:85
+
const_iterator end() const noexcept
Definition: idx_dev.h:240
+
~idx_dev()=default
Allow destructor from derived only.
+
constexpr bool Idx_dev
Definition: idx_dev.h:523
+
virtual support tag type
Definition: crtp.h:40
+
const_iterator cbegin() const noexcept
Definition: idx_dev.h:236
+
idx_t cursor(idx_t idx)
Set the cursor position.
Definition: idx_dev.h:156
+
idx_t cursor_() const
Definition: idx_dev.h:86
+
data_t data_type
Export types as index device concept demands.
Definition: idx_dev.h:261
+
idx_dev_t & operator<<(_Src_t &src)
Template operator<< implementation for for all by value/ref parameters.
Definition: idx_dev.h:198
+
idxdev_it< idx_dev_t, const data_t *, N > const_iterator
Const iterator.
Definition: idx_dev.h:231
+
data_t data_type
Export types as index device concept demands.
Definition: idx_dev.h:62
+
Implementation detail main forward header.
+
data_t * pointer_type
Definition: idx_dev.h:63
+
const_iterator begin() const noexcept
Definition: idx_dev.h:235
+
+
+ + + + diff --git a/doc/html/impl_8h.html b/doc/html/impl_8h.html new file mode 100644 index 0000000..683351a --- /dev/null +++ b/doc/html/impl_8h.html @@ -0,0 +1,120 @@ + + + + + + + +uTL: include/utl/core/impl.h File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
impl.h File Reference
+
+
+ +

Implementation detail main forward header. +More...

+
#include <utl/core/version.h>
+#include <utl/core/types.h>
+
+

Go to the source code of this file.

+

Detailed Description

+

Implementation detail main forward header.

+

Copyright (C) 2018 Christos Choutouridis

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

+

You should have received a copy of the GNU Lesser General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file impl.h.

+
+
+ + + + diff --git a/doc/html/impl_8h_source.html b/doc/html/impl_8h_source.html new file mode 100644 index 0000000..af46328 --- /dev/null +++ b/doc/html/impl_8h_source.html @@ -0,0 +1,107 @@ + + + + + + + +uTL: include/utl/core/impl.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
impl.h
+
+
+Go to the documentation of this file.
1 
21 #ifndef __utl_core_impl_h__
22 #define __utl_core_impl_h__
23 
24 
25 // FWD include implementation details once
26 #include <utl/core/version.h>
27 #include <utl/core/types.h>
28 
29 
30 #endif /* __utl_core_impl_h__ */
Basic type alias support.
+
version and cpp version checks
+
+
+ + + + diff --git a/doc/html/in__dev_8h.html b/doc/html/in__dev_8h.html new file mode 100644 index 0000000..d97a189 --- /dev/null +++ b/doc/html/in__dev_8h.html @@ -0,0 +1,184 @@ + + + + + + + +uTL: include/utl/dev/in_dev.h File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
in_dev.h File Reference
+
+
+ +

Abstract base class interface for input devices of utl. +More...

+
#include <utl/core/impl.h>
+#include <utl/core/crtp.h>
+#include <utl/dev/dev_iterators.h>
+#include <utl/meta/meta.h>
+
+

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Classes

class  utl::in_dev< impl_t, data_t, streamsize >
 Abstract base class for input devices. More...
 
class  utl::in_dev< virtual_tag, data_t, streamsize >
 A virtual base class specialization. More...
 
struct  utl::in_dev_details::is_in_dev_< _Tp, typename >
 Primary template to catch any non input device types. More...
 
struct  utl::in_dev_details::is_in_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_get1_t< _Tp >, size_t >, use_if_same_t< try_get2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > >
 template to catch a proper input device type More...
 
+ + + + + + +

+Namespaces

 utl
 STL's core language concepts.
 
 utl::in_dev_details
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

template<class _Tp >
using utl::in_dev_details::try_get1_t = decltype(declval< _Tp >().get(declval< typename _Tp::data_type & >()))
 
template<class _Tp >
using utl::in_dev_details::try_get2_t = decltype(declval< _Tp >().get(declval< typename _Tp::data_type * >(), declval< size_t >()))
 
template<class _Tp >
using utl::in_dev_details::try_begin_t = decltype(declval< _Tp >().begin())
 
template<class _Tp >
using utl::in_dev_details::tryc_begin_t = decltype(declval< const _Tp >().begin())
 
template<class _Tp >
using utl::in_dev_details::try_cbegin_t = decltype(declval< const _Tp >().cbegin())
 
template<class _Tp >
using utl::in_dev_details::try_end_t = decltype(declval< _Tp >().begin())
 
template<class _Tp >
using utl::in_dev_details::tryc_end_t = decltype(declval< const _Tp >().begin())
 
template<class _Tp >
using utl::in_dev_details::try_cend_t = decltype(declval< const _Tp >().cend())
 
+ + + + + +

+Variables

template<typename _Tp >
constexpr bool utl::In_dev = in_dev_details::is_in_dev_ <_Tp>::value
 
+

Detailed Description

+

Abstract base class interface for input devices of utl.

+

Copyright (C) 2018 Christos Choutouridis

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

+

You should have received a copy of the GNU Lesser General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file in_dev.h.

+
+
+ + + + diff --git a/doc/html/in__dev_8h.js b/doc/html/in__dev_8h.js new file mode 100644 index 0000000..ecd4132 --- /dev/null +++ b/doc/html/in__dev_8h.js @@ -0,0 +1,16 @@ +var in__dev_8h = +[ + [ "in_dev", "classutl_1_1in__dev.html", "classutl_1_1in__dev" ], + [ "in_dev< virtual_tag, data_t, streamsize >", "classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html", "classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4" ], + [ "is_in_dev_", "structutl_1_1in__dev__details_1_1is__in__dev__.html", null ], + [ "is_in_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_get1_t< _Tp >, size_t >, use_if_same_t< try_get2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > >", "structutl_1_1in__dev__details_1_1is__in__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1dad922a62deb7c32e2cff18d66b8c887d2.html", null ], + [ "try_begin_t", "in__dev_8h.html#af790d5cec9db9f80cc8d67e9755e823e", null ], + [ "try_cbegin_t", "in__dev_8h.html#a857d70a4119a4ff5615141d68e59ba7b", null ], + [ "try_cend_t", "in__dev_8h.html#ab268028c81d5385f19bbeb0c978ec9b2", null ], + [ "try_end_t", "in__dev_8h.html#acc72ca7012e26a9a0de8b08047dc9de8", null ], + [ "try_get1_t", "in__dev_8h.html#a560eec1b326b0f6b91fa96f64f15ef61", null ], + [ "try_get2_t", "in__dev_8h.html#ae11bccc2282ed8f2aaac67687d756167", null ], + [ "tryc_begin_t", "in__dev_8h.html#af7cb4a98688e65b04793cef145a90202", null ], + [ "tryc_end_t", "in__dev_8h.html#ad2dad6ed501b94ba1fa9cffade343762", null ], + [ "In_dev", "in__dev_8h.html#a1470ab9407ee21ea374b2c7a81e3511b", null ] +]; \ No newline at end of file diff --git a/doc/html/in__dev_8h_source.html b/doc/html/in__dev_8h_source.html new file mode 100644 index 0000000..f10d6f0 --- /dev/null +++ b/doc/html/in__dev_8h_source.html @@ -0,0 +1,154 @@ + + + + + + + +uTL: include/utl/dev/in_dev.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
in_dev.h
+
+
+Go to the documentation of this file.
1 
21 #ifndef __utl_dev_in_dev_h__
22 #define __utl_dev_in_dev_h__
23 
24 #include <utl/core/impl.h>
25 #include <utl/core/crtp.h>
26 #include <utl/dev/dev_iterators.h>
27 #include <utl/meta/meta.h>
28 
29 namespace utl {
30 
35 
53  template <typename impl_t, typename data_t, size_t streamsize =0>
54  class in_dev {
55  _CRTP_IMPL(impl_t);
57 
60  public:
61  using data_type = data_t;
62  using pointer_type = data_t*;
64  using type = in_dev_t;
65 
68  protected:
70  ~in_dev () = default;
71  in_dev () = default;
72  in_dev(const in_dev_t&) = delete;
73  in_dev_t& operator= (const in_dev_t&) = delete;
74 
78  private:
79  size_t get_ (data_t& data) { return impl().get_ (data); }
80  size_t get_ (data_t* data, size_t n) { return impl().get (data, n); }
82 
86  public:
97  size_t get (data_t& data) {
98  return get_ (data);
99  }
100 
109  size_t get (data_t* data, size_t n) {
110  return get_ (data, n);
111  }
113 
117  public:
128  template <typename _Dst_t>
129  in_dev_t& operator>> (_Dst_t& dst) {
130  static_assert ((sizeof (_Dst_t)%sizeof(data_t) == 0),
131  "Target size must be an integer multiple of device's data size");
132  get_ (reinterpret_cast<data_t*>(&dst), sizeof(_Dst_t)/sizeof(data_t));
133  return *this;
134  }
136  template <typename _Dst_t>
137  in_dev_t& operator>> (_Dst_t* dst) = delete;
138 
140  in_dev_t& operator>> (data_t& dst) {
141  get_ (dst);
142  return *this;
143  }
145 
152 
154  iterator begin () noexcept { return iterator(this, iterator::init); }
155  const_iterator begin () const noexcept { return const_iterator(this, iterator::init); }
156  const_iterator cbegin () const noexcept { return const_iterator(this, iterator::init); }
159  iterator end () noexcept { return iterator(this, iterator::eos); }
160  const_iterator end () const noexcept { return const_iterator(this, iterator::eos); }
161  const_iterator cend () const noexcept { return const_iterator(this, iterator::eos); }
164  };
165 
173  template <typename data_t, size_t streamsize>
174  class in_dev <virtual_tag, data_t, streamsize> {
177 
180  public:
181  using data_type = data_t;
182  using pointer_type = data_t*;
184  using type = in_dev_t;
185 
189  public:
191  virtual ~in_dev () = default;
192  protected:
193  in_dev () = default;
194  in_dev(const in_dev_t&) = delete;
195  in_dev_t& operator= (const in_dev_t&) = delete;
196 
201  private:
212  virtual size_t get_ (data_t& data) = 0;
213 
222  virtual size_t get_ (data_t* data, size_t n) = 0;
224 
228  public:
230  size_t get (data_t& data) { return get_ (data); }
231  size_t get (data_t* data, size_t n) { return get_ (data, n); }
233 
237  public:
248  template <typename _Dst_t>
249  in_dev_t& operator>> (_Dst_t& dst) {
250  static_assert ((sizeof (_Dst_t)%sizeof(data_t) == 0),
251  "Target size must be an integer multiple of device's data size");
252  get_ (reinterpret_cast<data_t*>(&dst), sizeof(_Dst_t)/sizeof(data_t));
253  return *this;
254  }
256  template <typename _Dst_t>
257  in_dev_t& operator>> (_Dst_t* dst) = delete;
258 
260  in_dev_t& operator>> (data_t& dst) {
261  get_ (dst);
262  return *this;
263  }
265 
272 
274  iterator begin () noexcept { return iterator(this, iterator::init); }
275  const_iterator begin () const noexcept { return const_iterator(this, iterator::init); }
276  const_iterator cbegin () const noexcept { return const_iterator(this, iterator::init); }
279  iterator end () noexcept { return iterator(this, iterator::eos); }
280  const_iterator end () const noexcept { return const_iterator(this, iterator::eos); }
281  const_iterator cend () const noexcept { return const_iterator(this, iterator::eos); }
284  };
285 
286  /*
287  * Input device predicate (concept)
288  */
289  namespace in_dev_details {
290  using std::declval;
291 
292  // main api members
293  template <class _Tp> using try_get1_t = decltype (declval<_Tp>().get (declval<typename _Tp::data_type&>()));
294  template <class _Tp> using try_get2_t = decltype (declval<_Tp>().get (declval<typename _Tp::data_type*>(), declval<size_t>()));
295  // operators
296  //template <class _Tp> using try_extract_t= decltype (declval<_Tp>() >> declval<typename _Tp::data_type&>());
297  // iterator members
298  template <class _Tp> using try_begin_t = decltype (declval<_Tp>().begin());
299  template <class _Tp> using tryc_begin_t = decltype (declval<const _Tp>().begin());
300  template <class _Tp> using try_cbegin_t = decltype (declval<const _Tp>().cbegin());
301  template <class _Tp> using try_end_t = decltype (declval<_Tp>().begin());
302  template <class _Tp> using tryc_end_t = decltype (declval<const _Tp>().begin());
303  template <class _Tp> using try_cend_t = decltype (declval<const _Tp>().cend());
304 
306  template <typename _Tp, typename =void>
307  struct is_in_dev_ : false_ {};
308 
310  template <typename _Tp>
311  struct is_in_dev_ <_Tp,
312  void_t <
313  typename _Tp::data_type,
314  typename _Tp::pointer_type,
315  typename _Tp::iterator,
316  typename _Tp::const_iterator,
317  use_if_same_t <try_get1_t <_Tp>, size_t>,
318  use_if_same_t <try_get2_t <_Tp>, size_t>,
319  //if_same_t <try_extract_t<_Tp>,typename _Tp&>,
320  use_if_same_t <try_begin_t<_Tp>, typename _Tp::iterator>,
321  use_if_same_t <tryc_begin_t<_Tp>, typename _Tp::const_iterator>,
322  use_if_same_t <try_cbegin_t<_Tp>, typename _Tp::const_iterator>,
323  use_if_same_t <try_end_t<_Tp>, typename _Tp::iterator>,
324  use_if_same_t <tryc_end_t<_Tp>, typename _Tp::const_iterator>,
325  use_if_same_t <try_cend_t<_Tp>, typename _Tp::const_iterator>
326  >
327  > : true_ {};
328  }
334  template <typename _Tp>
336 
337 }
339 
340 #endif /* #ifndef __utl_dev_in_dev_h__ */
iterator end() noexcept
Definition: in_dev.h:159
+
data_t * pointer_type
Definition: in_dev.h:62
+
Include all meta library.
+
data_t data_type
Definition: in_dev.h:61
+
in_dev_t & operator=(const in_dev_t &)=delete
+
const_iterator cbegin() const noexcept
Definition: in_dev.h:156
+
void void_t
void_t type alias
Definition: detection.h:55
+
Primary template to catch any non input device types.
Definition: in_dev.h:307
+
const_iterator cend() const noexcept
Definition: in_dev.h:281
+
_CRTP_IMPL(impl_t)
+
bool_< true > true_
The type used as a compile-time boolean with true value.
Definition: integral.h:68
+ +
decltype(declval< const _Tp >().cbegin()) try_cbegin_t
Definition: in_dev.h:300
+
decltype(declval< const _Tp >().cend()) try_cend_t
Definition: in_dev.h:303
+ +
decltype(declval< _Tp >().get(declval< typename _Tp::data_type & >())) try_get1_t
Definition: in_dev.h:293
+
~in_dev()=default
Allow destructor from derived only.
+
meta::eval< meta::enable_if< meta::same_< _T1, _T2 >::value, _Ret > > use_if_same_t
Definition: stl.h:55
+
decltype(declval< _Tp >().begin()) try_end_t
Definition: in_dev.h:301
+
const_iterator begin() const noexcept
Definition: in_dev.h:155
+
in_dev_t & operator>>(_Dst_t &dst)
Template operator >> implementation for for all by value/ref parameters.
Definition: in_dev.h:129
+
bool_< false > false_
The type used as a compile-time boolean with false value.
Definition: integral.h:69
+
const_iterator end() const noexcept
Definition: in_dev.h:160
+
indev_it< in_dev_t, data_t *, streamsize > iterator
Iterator.
Definition: in_dev.h:150
+
iterator begin() noexcept
.begin implementation
Definition: in_dev.h:274
+
STL&#39;s core language concepts.
Definition: _1wire.h:30
+
decltype(declval< _Tp >().begin()) try_begin_t
Definition: in_dev.h:298
+ +
const_iterator begin() const noexcept
Definition: in_dev.h:275
+
in_dev< impl_t, data_t, streamsize > in_dev_t
class type syntactic sugar
Definition: in_dev.h:56
+
Input device iterator type. We "future call" interface methods from owner class to provide iterator f...
+
indev_it< in_dev_t, const data_t *, streamsize > const_iterator
Const iterator.
Definition: in_dev.h:151
+
constexpr bool In_dev
Definition: in_dev.h:335
+
decltype(declval< _Tp >().get(declval< typename _Tp::data_type * >(), declval< size_t >())) try_get2_t
Definition: in_dev.h:294
+
Abstract base class for input devices.
Definition: in_dev.h:54
+ +
in_dev()=default
A default constructor from derived only.
+
Iterator collection for devices.
+
decltype(declval< const _Tp >().begin()) tryc_begin_t
Definition: in_dev.h:299
+
size_t get_(data_t *data, size_t n)
Definition: in_dev.h:80
+
const_iterator end() const noexcept
Definition: in_dev.h:280
+
virtual support tag type
Definition: crtp.h:40
+
A virtual base class specialization.
Definition: in_dev.h:174
+
size_t get_(data_t &data)
Definition: in_dev.h:79
+
const_iterator cend() const noexcept
Definition: in_dev.h:161
+
decltype(declval< const _Tp >().begin()) tryc_end_t
Definition: in_dev.h:302
+
const_iterator cbegin() const noexcept
Definition: in_dev.h:276
+
iterator begin() noexcept
.begin implementation
Definition: in_dev.h:154
+
Implementation detail main forward header.
+
+
+ + + + diff --git a/doc/html/inbuf__dev_8h.html b/doc/html/inbuf__dev_8h.html new file mode 100644 index 0000000..305adb9 --- /dev/null +++ b/doc/html/inbuf__dev_8h.html @@ -0,0 +1,184 @@ + + + + + + + +uTL: include/utl/dev/inbuf_dev.h File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
inbuf_dev.h File Reference
+
+
+ +

Abstract base class interface for input buffered devices of utl. +More...

+
#include <utl/core/impl.h>
+#include <utl/core/crtp.h>
+#include <utl/dev/dev_iterators.h>
+#include <utl/meta/meta.h>
+
+

Go to the source code of this file.

+ + + + + + + + + + + + + + +

+Classes

class  utl::inbuf_dev< impl_t, data_t, streamsize >
 Abstract base class for input buffered devices. More...
 
class  utl::inbuf_dev< virtual_tag, data_t, streamsize >
 A virtual base class specialization. More...
 
struct  utl::inbuf_dev_details::is_inbuf_dev_< _Tp, typename >
 Primary template to catch any non input device types. More...
 
struct  utl::inbuf_dev_details::is_inbuf_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_get1_t< _Tp >, size_t >, use_if_same_t< try_get2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > >
 template to catch a proper input device type More...
 
+ + + + + + +

+Namespaces

 utl
 STL's core language concepts.
 
 utl::inbuf_dev_details
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

template<class _Tp >
using utl::inbuf_dev_details::try_get1_t = decltype(declval< _Tp >().get(declval< typename _Tp::data_type & >()))
 
template<class _Tp >
using utl::inbuf_dev_details::try_get2_t = decltype(declval< _Tp >().get(declval< typename _Tp::data_type * >(), declval< size_t >()))
 
template<class _Tp >
using utl::inbuf_dev_details::try_begin_t = decltype(declval< _Tp >().begin())
 
template<class _Tp >
using utl::inbuf_dev_details::tryc_begin_t = decltype(declval< const _Tp >().begin())
 
template<class _Tp >
using utl::inbuf_dev_details::try_cbegin_t = decltype(declval< const _Tp >().cbegin())
 
template<class _Tp >
using utl::inbuf_dev_details::try_end_t = decltype(declval< _Tp >().begin())
 
template<class _Tp >
using utl::inbuf_dev_details::tryc_end_t = decltype(declval< const _Tp >().begin())
 
template<class _Tp >
using utl::inbuf_dev_details::try_cend_t = decltype(declval< const _Tp >().cend())
 
+ + + + + +

+Variables

template<typename _Tp >
constexpr bool utl::Inbuf_dev = inbuf_dev_details::is_inbuf_dev_ <_Tp>::value
 
+

Detailed Description

+

Abstract base class interface for input buffered devices of utl.

+

Copyright (C) 2018 Christos Choutouridis

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

+

You should have received a copy of the GNU Lesser General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file inbuf_dev.h.

+
+
+ + + + diff --git a/doc/html/inbuf__dev_8h.js b/doc/html/inbuf__dev_8h.js new file mode 100644 index 0000000..1af81a2 --- /dev/null +++ b/doc/html/inbuf__dev_8h.js @@ -0,0 +1,16 @@ +var inbuf__dev_8h = +[ + [ "inbuf_dev", "classutl_1_1inbuf__dev.html", "classutl_1_1inbuf__dev" ], + [ "inbuf_dev< virtual_tag, data_t, streamsize >", "classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html", "classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4" ], + [ "is_inbuf_dev_", "structutl_1_1inbuf__dev__details_1_1is__inbuf__dev__.html", null ], + [ "is_inbuf_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_get1_t< _Tp >, size_t >, use_if_same_t< try_get2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > >", "structutl_1_1inbuf__dev__details_1_1is__inbuf__dev___3_01___tp_00_01void__t_3_01typename_01___tpc269ee3885240cc8c352f3c6b3a67cd7.html", null ], + [ "try_begin_t", "inbuf__dev_8h.html#a18d5c5e879b4714f58861ad411537d53", null ], + [ "try_cbegin_t", "inbuf__dev_8h.html#a351202ead58a98a2eaad4f3987b6170c", null ], + [ "try_cend_t", "inbuf__dev_8h.html#a24eae32ecbea1291607f16d92c2b029a", null ], + [ "try_end_t", "inbuf__dev_8h.html#a5d4aa9d57c443c33cf08375e0c51bdd3", null ], + [ "try_get1_t", "inbuf__dev_8h.html#a72a6469ab9ce0cba618dd0b554fc2dd2", null ], + [ "try_get2_t", "inbuf__dev_8h.html#af09ed69d129c33b8a6d3f79c79b8ea35", null ], + [ "tryc_begin_t", "inbuf__dev_8h.html#adff91b885ea1831691d4619d360bb72b", null ], + [ "tryc_end_t", "inbuf__dev_8h.html#a858c7a1a0b1d8d0bdc91ce681aa1b996", null ], + [ "Inbuf_dev", "inbuf__dev_8h.html#ac447a457f18a1c4dcd1dddb4c2789006", null ] +]; \ No newline at end of file diff --git a/doc/html/inbuf__dev_8h_source.html b/doc/html/inbuf__dev_8h_source.html new file mode 100644 index 0000000..bf4aa0a --- /dev/null +++ b/doc/html/inbuf__dev_8h_source.html @@ -0,0 +1,158 @@ + + + + + + + +uTL: include/utl/dev/inbuf_dev.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
inbuf_dev.h
+
+
+Go to the documentation of this file.
1 
22 #ifndef __utl_dev_inbuf_dev_h__
23 #define __utl_dev_inbuf_dev_h__
24 
25 #include <utl/core/impl.h>
26 #include <utl/core/crtp.h>
27 #include <utl/dev/dev_iterators.h>
28 #include <utl/meta/meta.h>
29 
30 namespace utl {
31 
36 
54  template <typename impl_t, typename data_t, size_t streamsize =0>
55  class inbuf_dev {
56  _CRTP_IMPL(impl_t);
58 
61  public:
62  using data_type = data_t;
63  using pointer_type = data_t*;
65  using type = inbuf_dev_t;
66 
70  protected:
72  ~inbuf_dev () = default;
73  inbuf_dev () = default;
74  inbuf_dev(const inbuf_dev_t&) = delete;
75  inbuf_dev_t& operator= (const inbuf_dev_t&) = delete;
76 
80  private:
81  size_t in_avail_ () { return impl().in_avail_(); }
82  size_t get_ (data_t& data) { return impl().get_(data); }
83  size_t get_ (data_t* data, size_t n) { return impl().get_ (data, n); }
85 
89  public:
95  size_t in_avail () {
96  return in_avail_ ();
97  }
98 
108  size_t get (data_t& data) {
109  return get_ (data);
110  }
111 
120  size_t get (data_t* data, size_t n) {
121  return get_ (data, n);
122  }
124 
128  public:
139  template <typename _Dst_t>
140  inbuf_dev_t& operator>> (_Dst_t& dst) {
141  static_assert ((sizeof (_Dst_t)%sizeof(data_t) == 0),
142  "Target size must be an integer multiple of device's data size");
143  get_ (reinterpret_cast<data_t*>(&dst), sizeof(_Dst_t)/sizeof(data_t));
144  return *this;
145  }
147  template <typename _Dst_t>
148  inbuf_dev_t& operator>> (_Dst_t* dst) = delete;
149 
151  inbuf_dev_t& operator>> (data_t& dst) {
152  get_ (dst);
153  return *this;
154  }
156 
163 
165  iterator begin () noexcept { return iterator(this, iterator::init); }
166  const_iterator begin () const noexcept { return const_iterator(this, iterator::init); }
167  const_iterator cbegin () const noexcept { return const_iterator(this, iterator::init); }
170  iterator end () noexcept { return iterator(this, iterator::eos); }
171  const_iterator end () const noexcept { return const_iterator(this, iterator::eos); }
172  const_iterator cend () const noexcept { return const_iterator(this, iterator::eos); }
175  };
176 
177 
178 
187  template <typename data_t, size_t streamsize>
188  class inbuf_dev <virtual_tag, data_t, streamsize> {
191 
194  public:
195  using data_type = data_t;
196  using pointer_type = data_t*;
198  using type = inbuf_dev_t;
199 
203  public:
205  virtual ~inbuf_dev () = default;
206  protected:
207  inbuf_dev () = default;
208  inbuf_dev(const inbuf_dev_t&) = delete;
209  inbuf_dev_t& operator= (const inbuf_dev_t&) = delete;
210 
215  private:
221  virtual size_t in_avail_ () = 0;
222 
232  virtual size_t get_ (data_t& data) = 0;
233 
242  virtual size_t get_ (data_t* data, size_t n) = 0;
244 
248  public:
250  size_t in_avail() { return in_avail_(); }
251  size_t get (data_t& data) { return get_ (data); }
252  size_t get (data_t* data, size_t n) { return get_ (data, n); }
254 
258 
268  template <typename _Dst_t>
269  inbuf_dev_t& operator>> (_Dst_t& dst) {
270  static_assert ((sizeof (_Dst_t)%sizeof(data_t) == 0),
271  "Target size must be an integer multiple of device's data size");
272  get_ (reinterpret_cast<data_t*>(&dst), sizeof(_Dst_t)/sizeof(data_t));
273  return *this;
274  }
276  template <typename _Dst_t>
277  inbuf_dev_t& operator>> (_Dst_t* dst) = delete;
278 
280  inbuf_dev_t& operator>> (data_t& dst) {
281  get_ (dst);
282  return *this;
283  }
285 
292 
294  iterator begin () noexcept { return iterator(this, iterator::init); }
295  const_iterator begin () const noexcept { return const_iterator(this, iterator::init); }
296  const_iterator cbegin () const noexcept { return const_iterator(this, iterator::init); }
299  iterator end () noexcept { return iterator(this, iterator::eos); }
300  const_iterator end () const noexcept { return const_iterator(this, iterator::eos); }
301  const_iterator cend () const noexcept { return const_iterator(this, iterator::eos); }
304  };
305 
309 #if defined _utl_have_concepts
311  template <typename _Tp>
312  concept bool Inbuf_dev = requires (_Tp t, const _Tp ct, typename _Tp::data_type v) {
313  // Object type
314 // requires std::is_default_constructible<_Tp>::value;
315  requires !std::is_copy_constructible<_Tp>::value;
316  requires !std::is_copy_assignable<_Tp>::value;
317  // Methods
318  {t.get(v, 0)} -> size_t;
319  {t.get(&v, 1, 0)} -> size_t;
320  // Operators
321  t >> v;
322  // Iterators
323  typename _Tp::const_iterator; //XXX: change to concept: is_idxdev_iterator<_Tp>
324  requires Indev_it<typename _Tp::iterator>;
325  //requires Indev_it<typename _Tp::const_iterator>;
326  { t.begin() } -> typename _Tp::iterator;
327 // {ct.begin()} -> typename _Tp::const_iterator;
328 // { t.cbegin()} -> typename _Tp::const_iterator;
329  { t.end() } -> typename _Tp::iterator;
330 // {ct.end()} -> typename _Tp::const_iterator;
331 // { t.cend()} -> typename _Tp::const_iterator;
332  };
333 #else
334  namespace inbuf_dev_details {
335  using std::declval;
336 
337  // main api members
338  template <class _Tp> using try_get1_t = decltype (declval<_Tp>().get (declval<typename _Tp::data_type&>()));
339  template <class _Tp> using try_get2_t = decltype (declval<_Tp>().get (declval<typename _Tp::data_type*>(), declval<size_t>()));
340  // operators
341  //template <class _Tp> using try_extract_t= decltype (declval<_Tp>() >> declval<typename _Tp::data_type&>());
342  // iterator members
343  template <class _Tp> using try_begin_t = decltype (declval<_Tp>().begin());
344  template <class _Tp> using tryc_begin_t = decltype (declval<const _Tp>().begin());
345  template <class _Tp> using try_cbegin_t = decltype (declval<const _Tp>().cbegin());
346  template <class _Tp> using try_end_t = decltype (declval<_Tp>().begin());
347  template <class _Tp> using tryc_end_t = decltype (declval<const _Tp>().begin());
348  template <class _Tp> using try_cend_t = decltype (declval<const _Tp>().cend());
349 
351  template <typename _Tp, typename =void>
352  struct is_inbuf_dev_ : false_ {};
353 
355  template <typename _Tp>
356  struct is_inbuf_dev_ <_Tp,
357  void_t <
358  typename _Tp::data_type,
359  typename _Tp::pointer_type,
360  typename _Tp::iterator,
361  typename _Tp::const_iterator,
362  use_if_same_t <try_get1_t <_Tp>, size_t>,
363  use_if_same_t <try_get2_t <_Tp>, size_t>,
364  //if_same_t <try_extract_t<_Tp>,typename _Tp&>,
365  use_if_same_t <try_begin_t<_Tp>, typename _Tp::iterator>,
366  use_if_same_t <tryc_begin_t<_Tp>, typename _Tp::const_iterator>,
367  use_if_same_t <try_cbegin_t<_Tp>, typename _Tp::const_iterator>,
368  use_if_same_t <try_end_t<_Tp>, typename _Tp::iterator>,
369  use_if_same_t <tryc_end_t<_Tp>, typename _Tp::const_iterator>,
370  use_if_same_t <try_cend_t<_Tp>, typename _Tp::const_iterator>
371  >
372  > : true_ {};
373  }
379  template <typename _Tp>
381 #endif
382 }
384 
386 #endif /* #ifndef __utl_dev_inbuf_dev_h__ */
Include all meta library.
+
inbuf_dev< impl_t, data_t, streamsize > inbuf_dev_t
class type syntactic sugar
Definition: inbuf_dev.h:57
+
size_t get_(data_t &data)
Definition: inbuf_dev.h:82
+
decltype(declval< const _Tp >().cend()) try_cend_t
Definition: inbuf_dev.h:348
+
void void_t
void_t type alias
Definition: detection.h:55
+
const_iterator begin() const noexcept
Definition: inbuf_dev.h:166
+
const_iterator end() const noexcept
Definition: inbuf_dev.h:300
+
const_iterator cend() const noexcept
Definition: inbuf_dev.h:172
+
data_t * pointer_type
Definition: inbuf_dev.h:63
+
bool_< true > true_
The type used as a compile-time boolean with true value.
Definition: integral.h:68
+ +
decltype(declval< const _Tp >().begin()) tryc_begin_t
Definition: inbuf_dev.h:344
+
iterator begin() noexcept
.begin implementation
Definition: inbuf_dev.h:165
+
iterator end() noexcept
Definition: inbuf_dev.h:170
+
meta::eval< meta::enable_if< meta::same_< _T1, _T2 >::value, _Ret > > use_if_same_t
Definition: stl.h:55
+
inbuf_dev()=default
A default constructor from derived only.
+
size_t get_(data_t *data, size_t n)
Definition: inbuf_dev.h:83
+
decltype(declval< _Tp >().get(declval< typename _Tp::data_type * >(), declval< size_t >())) try_get2_t
Definition: inbuf_dev.h:339
+ +
const_iterator cbegin() const noexcept
Definition: inbuf_dev.h:167
+
constexpr bool Inbuf_dev
Definition: inbuf_dev.h:380
+
bool_< false > false_
The type used as a compile-time boolean with false value.
Definition: integral.h:69
+ +
decltype(declval< _Tp >().get(declval< typename _Tp::data_type & >())) try_get1_t
Definition: inbuf_dev.h:338
+ +
size_t in_avail_()
Definition: inbuf_dev.h:81
+
decltype(declval< const _Tp >().begin()) tryc_end_t
Definition: inbuf_dev.h:347
+
~inbuf_dev()=default
Allow destructor from derived only.
+
decltype(declval< _Tp >().begin()) try_end_t
Definition: inbuf_dev.h:346
+
std::size_t size_t
Definition: types.h:37
+
indev_it< inbuf_dev_t, const data_t *, streamsize > const_iterator
Const iterator.
Definition: inbuf_dev.h:162
+
STL&#39;s core language concepts.
Definition: _1wire.h:30
+
indev_it< inbuf_dev_t, data_t *, streamsize > iterator
Iterator.
Definition: inbuf_dev.h:161
+
Input device iterator type. We "future call" interface methods from owner class to provide iterator f...
+
decltype(declval< _Tp >().begin()) try_begin_t
Definition: inbuf_dev.h:343
+
Primary template to catch any non input device types.
Definition: inbuf_dev.h:352
+
data_t data_type
Definition: inbuf_dev.h:62
+
inbuf_dev_t & operator>>(_Dst_t &dst)
Template operator >> implementation for for all by value/ref parameters.
Definition: inbuf_dev.h:140
+
const_iterator cend() const noexcept
Definition: inbuf_dev.h:301
+
decltype(declval< const _Tp >().cbegin()) try_cbegin_t
Definition: inbuf_dev.h:345
+ +
_CRTP_IMPL(impl_t)
+
const_iterator end() const noexcept
Definition: inbuf_dev.h:171
+
iterator begin() noexcept
.begin implementation
Definition: inbuf_dev.h:294
+
Iterator collection for devices.
+
inbuf_dev_t & operator=(const inbuf_dev_t &)=delete
+
const_iterator begin() const noexcept
Definition: inbuf_dev.h:295
+
A virtual base class specialization.
Definition: inbuf_dev.h:188
+
Abstract base class for input buffered devices.
Definition: inbuf_dev.h:55
+
virtual support tag type
Definition: crtp.h:40
+
const_iterator cbegin() const noexcept
Definition: inbuf_dev.h:296
+
Implementation detail main forward header.
+
size_t in_avail()
Definition: inbuf_dev.h:95
+
+
+ + + + diff --git a/doc/html/index.html b/doc/html/index.html new file mode 100644 index 0000000..0acf267 --- /dev/null +++ b/doc/html/index.html @@ -0,0 +1,104 @@ + + + + + + + +uTL: Main Page + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
uTL Documentation
+
+
+
+
+ + + + diff --git a/doc/html/integral_8h.html b/doc/html/integral_8h.html new file mode 100644 index 0000000..8f14ebe --- /dev/null +++ b/doc/html/integral_8h.html @@ -0,0 +1,222 @@ + + + + + + + +uTL: include/utl/meta/integral.h File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
integral.h File Reference
+
+
+
#include <utl/core/impl.h>
+#include <type_traits>
+#include <utility>
+
+

Go to the source code of this file.

+ + + + +

+Classes

struct  utl::meta::nil_
 
+ + + + + + +

+Namespaces

 utl
 STL's core language concepts.
 
 utl::meta
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Typedefs

template<typename Tp >
using utl::meta::eval = typename Tp::type
 Type alias for Tp::type. Used to evaluate/extract return type of metafunctions. More...
 
using utl::meta::Npos = size_< index_t(-1)>
 The last position we can express for indexing. More...
 
template<typename Tp , Tp v>
using utl::meta::integral_ = std::integral_constant< Tp, v >
 
template<bool v>
using utl::meta::bool_ = integral_< bool, v >
 bool_ type: integral constant wrapper for bool More...
 
using utl::meta::true_ = bool_< true >
 The type used as a compile-time boolean with true value. More...
 
using utl::meta::false_ = bool_< false >
 The type used as a compile-time boolean with false value. More...
 
template<int8_t v>
using utl::meta::int8_ = integral_< int8_t, v >
 int8_ type: integral constant wrapper for int8_t More...
 
template<uint8_t v>
using utl::meta::uint8_ = integral_< uint8_t, v >
 uint8_ type: integral constant wrapper for uint8_t More...
 
template<int16_t v>
using utl::meta::int16_ = integral_< int16_t, v >
 int16_ type: integral constant wrapper for int16_t More...
 
template<uint16_t v>
using utl::meta::uint16_ = integral_< uint16_t, v >
 uint16_ type: integral constant wrapper for uint16_t More...
 
template<int32_t v>
using utl::meta::int32_ = integral_< int32_t, v >
 int32_ type: integral constant wrapper for int32_t More...
 
template<uint32_t v>
using utl::meta::uint32_ = integral_< uint32_t, v >
 uint32_ type: integral constant wrapper for uint32_t More...
 
template<char v>
using utl::meta::char_ = integral_< char, v >
 char_ type: integral constant wrapper for char More...
 
template<int v>
using utl::meta::int_ = integral_< int, v >
 int_ type: integral constant wrapper for int More...
 
template<long v>
using utl::meta::long_ = integral_< long, v >
 long_ type: integral constant wrapper for long More...
 
template<index_t v>
using utl::meta::index_ = integral_< index_t, v >
 index_ type: integral constant wrapper for index_t a.k.a std::size_t More...
 
template<size_t v>
using utl::meta::size_ = integral_< size_t, v >
 size_ type: integral constant wrapper for size_t a.k.a std::size_t More...
 
template<typename Tp >
using utl::meta::sizeof_ = size_< sizeof(Tp)>
 
template<typename Tp >
using utl::meta::alignof_ = size_< alignof(Tp)>
 
template<class Tp , Tp... Ints>
using utl::meta::integer_sequence = std::integer_sequence< Tp, Ints... >
 
template<typename Tp , Tp Num>
using utl::meta::make_integer_sequence = std::make_integer_sequence< Tp, Num >
 
template<index_t... Idx>
using utl::meta::index_sequence = integer_sequence< index_t, Idx... >
 Alias template index_sequence. More...
 
template<index_t Num>
using utl::meta::make_index_sequence = make_integer_sequence< index_t, Num >
 Alias template make_index_sequence. More...
 
template<typename... Types>
using utl::meta::index_sequence_for = make_index_sequence< sizeof...(Types)>
 Alias template index_sequence_for. More...
 
+
+
+ + + + diff --git a/doc/html/integral_8h.js b/doc/html/integral_8h.js new file mode 100644 index 0000000..bf9f460 --- /dev/null +++ b/doc/html/integral_8h.js @@ -0,0 +1,28 @@ +var integral_8h = +[ + [ "nil_", "structutl_1_1meta_1_1nil__.html", "structutl_1_1meta_1_1nil__" ], + [ "alignof_", "integral_8h.html#afacfb1fb855b9a9a0c8a2a625a2a9bd2", null ], + [ "bool_", "integral_8h.html#a0bec5828d2df0edfb4bc084773a438f6", null ], + [ "char_", "integral_8h.html#a0fe31eec9b085e52aa45587e6d887419", null ], + [ "eval", "integral_8h.html#aa5a37adba244ff4286f994111c4c02ea", null ], + [ "false_", "integral_8h.html#a55511dbaa0adb605ce22dcec11f8d22d", null ], + [ "index_", "integral_8h.html#a5b7d36b9e568b81f2df897d56dc23b64", null ], + [ "index_sequence", "integral_8h.html#acb42e9c38b726174e64a36eea39239a5", null ], + [ "index_sequence_for", "integral_8h.html#a7cdf7fbb62116925ccdecab03d3383d9", null ], + [ "int16_", "integral_8h.html#a65bf025970a7ec0fd488c50a1b9c1038", null ], + [ "int32_", "integral_8h.html#aa907f027fe3df2cecca2cf60930086fb", null ], + [ "int8_", "integral_8h.html#aa0ca1890dde0298c4380f94582cc2186", null ], + [ "int_", "integral_8h.html#a35b962b97f8277de66c1c8c02796eed4", null ], + [ "integer_sequence", "integral_8h.html#abc3ba8590a6cdd451f64d6c5dcd8ff99", null ], + [ "integral_", "integral_8h.html#ad60242f998d1d236b7b9744b7b09c8f2", null ], + [ "long_", "integral_8h.html#a5d3ed337c64ea13ee70891d09b0caa3e", null ], + [ "make_index_sequence", "integral_8h.html#aa7e48cd5c76ea88fc89ff4a66bc6f596", null ], + [ "make_integer_sequence", "integral_8h.html#a093a8cfdae571002c305273aa02ad6a2", null ], + [ "Npos", "integral_8h.html#af0c85cc6480a9e7a8e4fb7d8f936f01b", null ], + [ "size_", "integral_8h.html#a249ac51f6613684164663bd22025fe9a", null ], + [ "sizeof_", "integral_8h.html#a3fdae1894a962a69828ccccf73088cce", null ], + [ "true_", "integral_8h.html#ae9a5a8fbe8202785f059935af219fb97", null ], + [ "uint16_", "integral_8h.html#af1b0b8109e3e61032c24d148202b6966", null ], + [ "uint32_", "integral_8h.html#aa8c7c38548db8df196b683ffdc109cd6", null ], + [ "uint8_", "integral_8h.html#aae9c77ad9349e98af6cdc41e9b0090f8", null ] +]; \ No newline at end of file diff --git a/doc/html/integral_8h_source.html b/doc/html/integral_8h_source.html new file mode 100644 index 0000000..ea61e93 --- /dev/null +++ b/doc/html/integral_8h_source.html @@ -0,0 +1,133 @@ + + + + + + + +uTL: include/utl/meta/integral.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
integral.h
+
+
+Go to the documentation of this file.
1 
20 #ifndef __utl_meta_integralconstant_h__
21 #define __utl_meta_integralconstant_h__
22 
23 #include <utl/core/impl.h>
24 #include <type_traits>
25 #include <utility>
26 
32 
34 namespace utl {
35 namespace meta {
36 
43  struct nil_ {
44  using type = nil_;
45  };
46 
48  template <typename Tp>
49  using eval = typename Tp::type;
50 
57  template <typename Tp, Tp v>
58  using integral_ = std::integral_constant<Tp, v>;
60 
63 
65  template<bool v>
67 
68  using true_ = bool_<true>;
69  using false_ = bool_<false>;
70 
72  template<int8_t v>
75  template<uint8_t v>
77 
79  template<int16_t v>
82  template<uint16_t v>
84 
86  template<int32_t v>
89  template<uint32_t v>
91 
93  template<char v>
95 
97  template<int v>
99 
101  template<long v>
103 
105  template<index_t v>
107 
109  template<size_t v>
111 
114  template <typename Tp>
116 
119  template <typename Tp>
122 
124  using Npos = size_<index_t(-1)>;
125 
128  template< class Tp, Tp... Ints >
130 
131  template<typename Tp, Tp Num>
132  using make_integer_sequence = std::make_integer_sequence<Tp, Num>;
133 
135  template<index_t... Idx>
137 
139  template<index_t Num>
141 
143  template<typename... Types>
144  using index_sequence_for = make_index_sequence<sizeof...(Types)>;
145 
147 }}
148 
150 
151 #endif /* __utl_meta_integralconstant_h__ */
make_integer_sequence< index_t, Num > make_index_sequence
Alias template make_index_sequence.
Definition: integral.h:140
+
integral_< uint8_t, v > uint8_
uint8_ type: integral constant wrapper for uint8_t
Definition: integral.h:76
+
integral_< int8_t, v > int8_
int8_ type: integral constant wrapper for int8_t
Definition: integral.h:73
+
bool_< true > true_
The type used as a compile-time boolean with true value.
Definition: integral.h:68
+
integral_< size_t, v > size_
size_ type: integral constant wrapper for size_t a.k.a std::size_t
Definition: integral.h:110
+
integral_< long, v > long_
long_ type: integral constant wrapper for long
Definition: integral.h:102
+ +
std::integral_constant< Tp, v > integral_
Definition: integral.h:58
+
size_< index_t(-1)> Npos
The last position we can express for indexing.
Definition: integral.h:124
+
std::make_integer_sequence< Tp, Num > make_integer_sequence
Definition: integral.h:132
+
integral_< int, v > int_
int_ type: integral constant wrapper for int
Definition: integral.h:98
+
make_index_sequence< sizeof...(Types)> index_sequence_for
Alias template index_sequence_for.
Definition: integral.h:144
+
bool_< false > false_
The type used as a compile-time boolean with false value.
Definition: integral.h:69
+
typename Tp::type eval
Type alias for Tp::type. Used to evaluate/extract return type of metafunctions.
Definition: integral.h:49
+
integral_< char, v > char_
char_ type: integral constant wrapper for char
Definition: integral.h:94
+
integral_< uint16_t, v > uint16_
uint16_ type: integral constant wrapper for uint16_t
Definition: integral.h:83
+
STL&#39;s core language concepts.
Definition: _1wire.h:30
+
integer_sequence< index_t, Idx... > index_sequence
Alias template index_sequence.
Definition: integral.h:136
+
integral_< index_t, v > index_
index_ type: integral constant wrapper for index_t a.k.a std::size_t
Definition: integral.h:106
+
size_< alignof(Tp)> alignof_
Definition: integral.h:120
+
integral_< bool, v > bool_
bool_ type: integral constant wrapper for bool
Definition: integral.h:66
+
size_t index_t
index_t and size_t mend to be interchangeable
Definition: types.h:38
+
integral_< int32_t, v > int32_
int32_ type: integral constant wrapper for int32_t
Definition: integral.h:87
+
size_< sizeof(Tp)> sizeof_
Definition: integral.h:115
+
std::integer_sequence< Tp, Ints... > integer_sequence
Definition: integral.h:129
+
integral_< uint32_t, v > uint32_
uint32_ type: integral constant wrapper for uint32_t
Definition: integral.h:90
+
integral_< int16_t, v > int16_
int16_ type: integral constant wrapper for int16_t
Definition: integral.h:80
+
Implementation detail main forward header.
+
+
+ + + + diff --git a/doc/html/iterators_8h.html b/doc/html/iterators_8h.html new file mode 100644 index 0000000..5c77fa4 --- /dev/null +++ b/doc/html/iterators_8h.html @@ -0,0 +1,138 @@ + + + + + + + +uTL: include/utl/concepts/iterators.h File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
iterators.h File Reference
+
+
+
#include <utl/core/impl.h>
+#include <utl/concepts/defines.h>
+#include <utl/concepts/stl.h>
+
+

Go to the source code of this file.

+ + + + + + + +

+Namespaces

 utl
 STL's core language concepts.
 
 utl::detail
 
+ + + + + + + +

+Typedefs

template<typename I >
using utl::detail::try_ppI = decltype(++(std::declval< I >()))
 
template<typename I >
using utl::detail::try_Ipp = decltype(std::declval< I >()++)
 
+ + + + +

+Variables

template<class I >
_utlConcept utl::WeaklyIncrementable
 
+
+
+ + + + diff --git a/doc/html/iterators_8h.js b/doc/html/iterators_8h.js new file mode 100644 index 0000000..7406c2b --- /dev/null +++ b/doc/html/iterators_8h.js @@ -0,0 +1,6 @@ +var iterators_8h = +[ + [ "try_Ipp", "iterators_8h.html#a1371d13b3e8408cfc68e82b03ca9f3b0", null ], + [ "try_ppI", "iterators_8h.html#a50e7a46f910a83190bca5a58f67f1e2d", null ], + [ "WeaklyIncrementable", "iterators_8h.html#a25b4f216e3d7754b1c7088dd59504dee", null ] +]; \ No newline at end of file diff --git a/doc/html/iterators_8h_source.html b/doc/html/iterators_8h_source.html new file mode 100644 index 0000000..a047232 --- /dev/null +++ b/doc/html/iterators_8h_source.html @@ -0,0 +1,115 @@ + + + + + + + +uTL: include/utl/concepts/iterators.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
iterators.h
+
+
+Go to the documentation of this file.
1 
21 #ifndef __utl_concepts_iterator_h__
22 #define __utl_concepts_iterator_h__
23 
24 #include <utl/core/impl.h>
25 #include <utl/concepts/defines.h>
26 #include <utl/concepts/stl.h>
27 
32 namespace utl {
34 
35  #if CXX_CONCEPTS
36  template <class I>
38  Semiregular<I> &&
39  requires(I i) {
40  { ++i } -> Same<I>&; // not required to be equality preserving
41  i++; // not required to be equality preserving
42  };
43  #else
44  namespace detail {
45  template <typename I> using try_ppI = decltype (++(std::declval<I>()));
46  template <typename I> using try_Ipp = decltype (std::declval<I>()++);
47  }
48  template <class I>
50  Semiregular<I>
53  #endif
54 
55  #if CXX_CONCEPTS
56  template <class I>
57  _utlConcept DeviceIterator =
58  requires(I i) {
59  { *i } -> auto&&; // Requires: i is dereferenceable
60  } &&
61  WeaklyIncrementable<I>;
62 
63  #else
64 
65  #endif
66 
67 }
68 
70 #endif /* __utl_concepts_iterator_h__ */
#define _utlConcept
utl concept keyword syntax wrapper
Definition: defines.h:56
+
_utlConcept WeaklyIncrementable
Definition: iterators.h:49
+
STL&#39;s Concepts.
+
Concepts defines.
+
STL&#39;s core language concepts.
Definition: _1wire.h:30
+
eval< detail::detector< nat_, void, Op, Args... > > detected_t
Definition: detection.h:146
+
decltype(std::declval< I >()++) try_Ipp
Definition: iterators.h:46
+
decltype(++(std::declval< I >())) try_ppI
Definition: iterators.h:45
+
typename detail::detector< nat_, void, Op, Args... >::detected is_detected
Definition: detection.h:118
+
Implementation detail main forward header.
+
+
+ + + + diff --git a/doc/html/jquery.js b/doc/html/jquery.js new file mode 100644 index 0000000..2771c74 --- /dev/null +++ b/doc/html/jquery.js @@ -0,0 +1,115 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +/*! + * jQuery JavaScript Library v1.7.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon Nov 21 21:11:03 2011 -0500 + */ +(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b40){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b40&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b21?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv
a";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="
";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="
t
";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="
";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bCbA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},ac=a(av);ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div
","
"]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1>");try{for(var bw=0,bv=this.length;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===""&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;if(bA>0){if(bv!=="border"){for(;bx)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("
").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b})}})(window);/*! + * jQuery UI 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/*! + * jQuery UI Widget 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Widget + */ +(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/*! + * jQuery UI Mouse 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Mouse + * + * Depends: + * jquery.ui.widget.js + */ +(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('
').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g
');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(hl.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*! + * jQuery hashchange event - v1.3 - 7/21/2010 + * http://benalman.com/projects/jquery-hashchange-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ +(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$(' + + +
+
+
gtest-all.d File Reference
+
+ + + + + + diff --git a/doc/html/lib_2gtest_2gtest-all_8d_source.html b/doc/html/lib_2gtest_2gtest-all_8d_source.html new file mode 100644 index 0000000..8ce7b45 --- /dev/null +++ b/doc/html/lib_2gtest_2gtest-all_8d_source.html @@ -0,0 +1,105 @@ + + + + + + + +uTL: test/eclipse-cygwin/C++14/lib/gtest/gtest-all.d Source File + + + + + + + + + + + + + + +
+
+
+ + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
gtest-all.d
+
+
+Go to the documentation of this file.
1 lib/gtest/gtest-all.o: ../lib/gtest/gtest-all.cc ../lib/gtest/gtest.h
2 
3 ../lib/gtest/gtest.h:
+
+ + + + diff --git a/doc/html/main_8cpp.html b/doc/html/main_8cpp.html new file mode 100644 index 0000000..fbe42b2 --- /dev/null +++ b/doc/html/main_8cpp.html @@ -0,0 +1,158 @@ + + + + + + + +uTL: test/main.cpp File Reference + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
main.cpp File Reference
+
+
+ +

Test project main file. +More...

+
#include <gtest/gtest.h>
+
+

Go to the source code of this file.

+ + + + +

+Functions

GTEST_API_ int main (int argc, char **argv)
 
+

Detailed Description

+

Test project main file.

+

Copyright (C) 2018 Christos Choutouridis

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

+

You should have received a copy of the GNU Lesser General Public License along with this program. If not, see http://www.gnu.org/licenses/.

+ +

Definition in file main.cpp.

+

Function Documentation

+ +

◆ main()

+ +
+
+ + + + + + + + + + + + + + + + + + +
GTEST_API_ int main (int argc,
char ** argv 
)
+
+ +

Definition at line 23 of file main.cpp.

+ +
+
+
+
+ + + + diff --git a/doc/html/main_8cpp.js b/doc/html/main_8cpp.js new file mode 100644 index 0000000..7c43b48 --- /dev/null +++ b/doc/html/main_8cpp.js @@ -0,0 +1,4 @@ +var main_8cpp = +[ + [ "main", "main_8cpp.html#a7f83bdc516d2cb86e20235d94ddf055a", null ] +]; \ No newline at end of file diff --git a/doc/html/main_8cpp_source.html b/doc/html/main_8cpp_source.html new file mode 100644 index 0000000..3fc4fe9 --- /dev/null +++ b/doc/html/main_8cpp_source.html @@ -0,0 +1,110 @@ + + + + + + + +uTL: test/main.cpp Source File + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
main.cpp
+
+
+Go to the documentation of this file.
1 
21 #include <gtest/gtest.h>
22 
23 GTEST_API_ int main(int argc, char **argv) {
24  testing::InitGoogleTest(&argc, argv);
25  return RUN_ALL_TESTS();
26 }
27 
28 
29 
+
#define GTEST_API_
Definition: gtest.h:998
+
GTEST_API_ void InitGoogleTest(int *argc, char **argv)
+
int RUN_ALL_TESTS() GTEST_MUST_USE_RESULT_
Definition: gtest.h:17097
+
GTEST_API_ int main(int argc, char **argv)
Definition: main.cpp:23
+
+
+ + + + diff --git a/doc/html/md__r_e_a_d_m_e.html b/doc/html/md__r_e_a_d_m_e.html new file mode 100644 index 0000000..50cf648 --- /dev/null +++ b/doc/html/md__r_e_a_d_m_e.html @@ -0,0 +1,104 @@ + + + + + + + +uTL: README + + + + + + + + + + + + + + +
+
+ + + + + + +
+
uTL +
+
micro Template library
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
README
+
+
+
+
+ + + + diff --git a/doc/html/menu.js b/doc/html/menu.js new file mode 100644 index 0000000..89aaf57 --- /dev/null +++ b/doc/html/menu.js @@ -0,0 +1,50 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+=''; + } + return result; + } + + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchEnabled) { + if (serverSide) { + $('#main-menu').append('
  • '); + } else { + $('#main-menu').append('
  • '); + } + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/doc/html/menudata.js b/doc/html/menudata.js new file mode 100644 index 0000000..b449d32 --- /dev/null +++ b/doc/html/menudata.js @@ -0,0 +1,176 @@ +/* +@ @licstart The following is the entire license notice for the +JavaScript code in this file. + +Copyright (C) 1997-2017 by Dimitri van Heesch + +This program is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +@licend The above is the entire license notice +for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Related Pages",url:"pages.html"}, +{text:"Modules",url:"modules.html"}, +{text:"Namespaces",url:"namespaces.html",children:[ +{text:"Namespace List",url:"namespaces.html"}, +{text:"Namespace Members",url:"namespacemembers.html",children:[ +{text:"All",url:"namespacemembers.html",children:[ +{text:"_",url:"namespacemembers.html#index__"}, +{text:"a",url:"namespacemembers_a.html#index_a"}, +{text:"b",url:"namespacemembers_b.html#index_b"}, +{text:"c",url:"namespacemembers_c.html#index_c"}, +{text:"d",url:"namespacemembers_d.html#index_d"}, +{text:"e",url:"namespacemembers_e.html#index_e"}, +{text:"f",url:"namespacemembers_f.html#index_f"}, +{text:"g",url:"namespacemembers_g.html#index_g"}, +{text:"i",url:"namespacemembers_i.html#index_i"}, +{text:"l",url:"namespacemembers_l.html#index_l"}, +{text:"m",url:"namespacemembers_m.html#index_m"}, +{text:"n",url:"namespacemembers_n.html#index_n"}, +{text:"o",url:"namespacemembers_o.html#index_o"}, +{text:"p",url:"namespacemembers_p.html#index_p"}, +{text:"r",url:"namespacemembers_r.html#index_r"}, +{text:"s",url:"namespacemembers_s.html#index_s"}, +{text:"t",url:"namespacemembers_t.html#index_t"}, +{text:"u",url:"namespacemembers_u.html#index_u"}, +{text:"v",url:"namespacemembers_v.html#index_v"}, +{text:"w",url:"namespacemembers_w.html#index_w"}]}, +{text:"Functions",url:"namespacemembers_func.html",children:[ +{text:"_",url:"namespacemembers_func.html#index__"}, +{text:"g",url:"namespacemembers_func.html#index_g"}, +{text:"i",url:"namespacemembers_func.html#index_i"}, +{text:"o",url:"namespacemembers_func.html#index_o"}, +{text:"s",url:"namespacemembers_func.html#index_s"}]}, +{text:"Variables",url:"namespacemembers_vars.html",children:[ +{text:"a",url:"namespacemembers_vars.html#index_a"}, +{text:"b",url:"namespacemembers_vars.html#index_b"}, +{text:"c",url:"namespacemembers_vars.html#index_c"}, +{text:"d",url:"namespacemembers_vars.html#index_d"}, +{text:"e",url:"namespacemembers_vars.html#index_e"}, +{text:"f",url:"namespacemembers_vars.html#index_f"}, +{text:"i",url:"namespacemembers_vars.html#index_i"}, +{text:"m",url:"namespacemembers_vars.html#index_m"}, +{text:"o",url:"namespacemembers_vars.html#index_o"}, +{text:"p",url:"namespacemembers_vars.html#index_p"}, +{text:"r",url:"namespacemembers_vars.html#index_r"}, +{text:"s",url:"namespacemembers_vars.html#index_s"}, +{text:"u",url:"namespacemembers_vars.html#index_u"}, +{text:"w",url:"namespacemembers_vars.html#index_w"}]}, +{text:"Typedefs",url:"namespacemembers_type.html",children:[ +{text:"_",url:"namespacemembers_type.html#index__"}, +{text:"a",url:"namespacemembers_type.html#index_a"}, +{text:"b",url:"namespacemembers_type.html#index_b"}, +{text:"c",url:"namespacemembers_type.html#index_c"}, +{text:"d",url:"namespacemembers_type.html#index_d"}, +{text:"e",url:"namespacemembers_type.html#index_e"}, +{text:"f",url:"namespacemembers_type.html#index_f"}, +{text:"i",url:"namespacemembers_type.html#index_i"}, +{text:"l",url:"namespacemembers_type.html#index_l"}, +{text:"m",url:"namespacemembers_type.html#index_m"}, +{text:"n",url:"namespacemembers_type.html#index_n"}, +{text:"o",url:"namespacemembers_type.html#index_o"}, +{text:"p",url:"namespacemembers_type.html#index_p"}, +{text:"r",url:"namespacemembers_type.html#index_r"}, +{text:"s",url:"namespacemembers_type.html#index_s"}, +{text:"t",url:"namespacemembers_type.html#index_t"}, +{text:"u",url:"namespacemembers_type.html#index_u"}, +{text:"v",url:"namespacemembers_type.html#index_v"}, +{text:"w",url:"namespacemembers_type.html#index_w"}]}, +{text:"Enumerations",url:"namespacemembers_enum.html"}]}]}, +{text:"Classes",url:"annotated.html",children:[ +{text:"Class List",url:"annotated.html"}, +{text:"Class Index",url:"classes.html"}, +{text:"Class Hierarchy",url:"hierarchy.html"}, +{text:"Class Members",url:"functions.html",children:[ +{text:"All",url:"functions.html",children:[ +{text:"_",url:"functions.html#index__"}, +{text:"a",url:"functions_a.html#index_a"}, +{text:"b",url:"functions_b.html#index_b"}, +{text:"c",url:"functions_c.html#index_c"}, +{text:"d",url:"functions_d.html#index_d"}, +{text:"e",url:"functions_e.html#index_e"}, +{text:"f",url:"functions_f.html#index_f"}, +{text:"g",url:"functions_g.html#index_g"}, +{text:"h",url:"functions_h.html#index_h"}, +{text:"i",url:"functions_i.html#index_i"}, +{text:"m",url:"functions_m.html#index_m"}, +{text:"n",url:"functions_n.html#index_n"}, +{text:"o",url:"functions_o.html#index_o"}, +{text:"p",url:"functions_p.html#index_p"}, +{text:"r",url:"functions_r.html#index_r"}, +{text:"s",url:"functions_s.html#index_s"}, +{text:"t",url:"functions_t.html#index_t"}, +{text:"u",url:"functions_u.html#index_u"}, +{text:"v",url:"functions_v.html#index_v"}, +{text:"~",url:"functions_0x7e.html#index_0x7e"}]}, +{text:"Functions",url:"functions_func.html",children:[ +{text:"_",url:"functions_func.html#index__"}, +{text:"a",url:"functions_func_a.html#index_a"}, +{text:"b",url:"functions_func_b.html#index_b"}, +{text:"c",url:"functions_func_c.html#index_c"}, +{text:"d",url:"functions_func_d.html#index_d"}, +{text:"e",url:"functions_func_e.html#index_e"}, +{text:"f",url:"functions_func_f.html#index_f"}, +{text:"g",url:"functions_func_g.html#index_g"}, +{text:"i",url:"functions_func_i.html#index_i"}, +{text:"m",url:"functions_func_m.html#index_m"}, +{text:"n",url:"functions_func_n.html#index_n"}, +{text:"o",url:"functions_func_o.html#index_o"}, +{text:"p",url:"functions_func_p.html#index_p"}, +{text:"r",url:"functions_func_r.html#index_r"}, +{text:"s",url:"functions_func_s.html#index_s"}, +{text:"t",url:"functions_func_t.html#index_t"}, +{text:"u",url:"functions_func_u.html#index_u"}, +{text:"v",url:"functions_func_v.html#index_v"}, +{text:"~",url:"functions_func_0x7e.html#index_0x7e"}]}, +{text:"Variables",url:"functions_vars.html",children:[ +{text:"_",url:"functions_vars.html#index__"}, +{text:"c",url:"functions_vars.html#index_c"}, +{text:"d",url:"functions_vars.html#index_d"}, +{text:"i",url:"functions_vars.html#index_i"}, +{text:"n",url:"functions_vars.html#index_n"}, +{text:"o",url:"functions_vars.html#index_o"}, +{text:"p",url:"functions_vars.html#index_p"}, +{text:"s",url:"functions_vars.html#index_s"}, +{text:"u",url:"functions_vars.html#index_u"}, +{text:"v",url:"functions_vars.html#index_v"}]}, +{text:"Typedefs",url:"functions_type.html",children:[ +{text:"a",url:"functions_type.html#index_a"}, +{text:"c",url:"functions_type_c.html#index_c"}, +{text:"d",url:"functions_type_d.html#index_d"}, +{text:"h",url:"functions_type_h.html#index_h"}, +{text:"i",url:"functions_type_i.html#index_i"}, +{text:"o",url:"functions_type_o.html#index_o"}, +{text:"p",url:"functions_type_p.html#index_p"}, +{text:"r",url:"functions_type_r.html#index_r"}, +{text:"s",url:"functions_type_s.html#index_s"}, +{text:"t",url:"functions_type_t.html#index_t"}, +{text:"v",url:"functions_type_v.html#index_v"}]}, +{text:"Enumerations",url:"functions_enum.html"}, +{text:"Enumerator",url:"functions_eval.html",children:[ +{text:"b",url:"functions_eval.html#index_b"}, +{text:"c",url:"functions_eval.html#index_c"}, +{text:"e",url:"functions_eval.html#index_e"}, +{text:"i",url:"functions_eval.html#index_i"}, +{text:"v",url:"functions_eval.html#index_v"}]}, +{text:"Related Functions",url:"functions_rela.html"}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}, +{text:"File Members",url:"globals.html",children:[ +{text:"All",url:"globals.html"}, +{text:"Macros",url:"globals_defs.html"}]}]}, +{text:"Examples",url:"examples.html"}]} diff --git a/doc/html/meta_2invoke_8h.html b/doc/html/meta_2invoke_8h.html new file mode 100644 index 0000000..f3e90ec --- /dev/null +++ b/doc/html/meta_2invoke_8h.html @@ -0,0 +1,225 @@ + + + + + + + +uTL: include/utl/meta/invoke.h File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    invoke.h File Reference
    +
    +
    +
    #include <utl/core/impl.h>
    +#include <utl/meta/integral.h>
    +#include <utl/meta/detection.h>
    +#include <utl/meta/operations.h>
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Classes

    struct  utl::meta::identity< _Tp >
     
    struct  utl::meta::wrap< F >
     
    struct  utl::meta::wrap_i< T, F >
     Wrap a template F taking literal constants of type T into an Invokable. More...
     
    struct  utl::meta::detail::is_applicable_< F, T >
     
    struct  utl::meta::detail::is_applicable_q_< F, T >
     
    struct  utl::meta::detail::is_applicable_i_< T, F, Is >
     
    struct  utl::meta::detail::defer_< F, Ts >
     
    struct  utl::meta::detail::defer_i_< T, F, Is >
     
    struct  utl::meta::quote< F >
     
    struct  utl::meta::quote_i< T, F >
     Wrap a template F taking literal constants of type T into an Invokable. More...
     
    struct  utl::meta::detail::compose_f_< Fns >
     
    struct  utl::meta::detail::compose_f_< Fn0, Fns... >
     
    struct  utl::meta::detail::compose_f_< Fn0 >
     
    struct  utl::meta::detail::compose_< Fns >
     
    struct  utl::meta::detail::compose_< Fn0, Fns... >
     
    struct  utl::meta::detail::compose_< Fn0 >
     
    struct  utl::meta::bind_front< Fn, Ts >
     
    struct  utl::meta::bind_back< Fn, Ts >
     
    struct  utl::meta::same_as< T1 >
     
    struct  utl::meta::same_as< T1 >::apply< T2 >
     
    struct  utl::meta::not_same_as< T1 >
     
    struct  utl::meta::not_same_as< T1 >::apply< T2 >
     
    + + + + + + + + +

    +Namespaces

     utl
     STL's core language concepts.
     
     utl::meta
     
     utl::meta::detail
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Typedefs

    meta::invoke

    A meta-programming invoke() analogous. A meta::invocable shall contain a nested template type named apply which is bind to actual invocable meta-function.

    +
      +
    • We can use wrap<> or even better quote<> in order to wrap a metafunction to a type (metafunction class)
    • +
    • We can pass these wrapped types to other metafunctions
    • +
    • We can invoke<> the inner apply from a wrapped metafunction class.
    • +
    +
    template<typename _Tp >
    using utl::meta::identity_t = eval< identity< _Tp > >
     identity type alias More...
     
    template<typename Fn , typename... Args>
    using utl::meta::invoke = typename Fn::template apply< Args... >
     
    template<typename Fn , typename... Args>
    using utl::meta::invoke_t = eval< invoke< Fn, Args... > >
     
    template<template< typename... > class F, typename... T>
    using utl::meta::is_applicable_t = eval< detail::is_applicable_< F, T... > >
     check if we can instantiate F with parameters T More...
     
    template<typename Q , typename... T>
    using utl::meta::is_applicable_qt = eval< detail::is_applicable_q_< Q, T... > >
     check if we can invoke Q with parameters T More...
     
    template<typename T , template< T... > class F, T... Is>
    using utl::meta::is_applicable_it = eval< detail::is_applicable_i_< T, F, Is... > >
     check if we can instantiate F with parameters Is of type T More...
     
    template<template< class... > class F, class... Ts>
    using utl::meta::defer = if_< detail::is_applicable_< F, Ts... >, detail::defer_< F, Ts... >, nil_ >
     defer alias template for F<Ts...> More...
     
    template<typename T , template< T... > class F, T... Is>
    using utl::meta::defer_i = if_< detail::is_applicable_i_< T, F, Is... >, detail::defer_i_< T, F, Is... >, nil_ >
     defer_i alias template for F<T, Is...> More...
     
    template<typename... Fns>
    using utl::meta::compose = detail::compose_< Fns... >
     
    template<template< typename... > class... Fns>
    using utl::meta::compose_f = detail::compose_f_< Fns... >
     
    +
    +
    + + + + diff --git a/doc/html/meta_2invoke_8h.js b/doc/html/meta_2invoke_8h.js new file mode 100644 index 0000000..04add1c --- /dev/null +++ b/doc/html/meta_2invoke_8h.js @@ -0,0 +1,39 @@ +var meta_2invoke_8h = +[ + [ "identity", "structutl_1_1meta_1_1identity.html", "structutl_1_1meta_1_1identity" ], + [ "wrap", "structutl_1_1meta_1_1wrap.html", "structutl_1_1meta_1_1wrap" ], + [ "wrap_i", "structutl_1_1meta_1_1wrap__i.html", "structutl_1_1meta_1_1wrap__i" ], + [ "is_applicable_", "structutl_1_1meta_1_1detail_1_1is__applicable__.html", "structutl_1_1meta_1_1detail_1_1is__applicable__" ], + [ "is_applicable_q_", "structutl_1_1meta_1_1detail_1_1is__applicable__q__.html", "structutl_1_1meta_1_1detail_1_1is__applicable__q__" ], + [ "is_applicable_i_", "structutl_1_1meta_1_1detail_1_1is__applicable__i__.html", "structutl_1_1meta_1_1detail_1_1is__applicable__i__" ], + [ "defer_", "structutl_1_1meta_1_1detail_1_1defer__.html", "structutl_1_1meta_1_1detail_1_1defer__" ], + [ "defer_i_", "structutl_1_1meta_1_1detail_1_1defer__i__.html", "structutl_1_1meta_1_1detail_1_1defer__i__" ], + [ "quote", "structutl_1_1meta_1_1quote.html", "structutl_1_1meta_1_1quote" ], + [ "quote_i", "structutl_1_1meta_1_1quote__i.html", "structutl_1_1meta_1_1quote__i" ], + [ "compose_f_", "structutl_1_1meta_1_1detail_1_1compose__f__.html", null ], + [ "compose_f_< Fn0, Fns... >", "structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_00_01_fns_8_8_8_01_4.html", "structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_00_01_fns_8_8_8_01_4" ], + [ "compose_f_< Fn0 >", "structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_01_4.html", "structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_01_4" ], + [ "compose_", "structutl_1_1meta_1_1detail_1_1compose__.html", null ], + [ "compose_< Fn0, Fns... >", "structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_00_01_fns_8_8_8_01_4.html", "structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_00_01_fns_8_8_8_01_4" ], + [ "compose_< Fn0 >", "structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_01_4.html", "structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_01_4" ], + [ "bind_front", "structutl_1_1meta_1_1bind__front.html", "structutl_1_1meta_1_1bind__front" ], + [ "bind_back", "structutl_1_1meta_1_1bind__back.html", "structutl_1_1meta_1_1bind__back" ], + [ "same_as", "structutl_1_1meta_1_1same__as.html", [ + [ "apply", "structutl_1_1meta_1_1same__as_1_1apply.html", null ] + ] ], + [ "apply", "structutl_1_1meta_1_1same__as_1_1apply.html", null ], + [ "not_same_as", "structutl_1_1meta_1_1not__same__as.html", [ + [ "apply", "structutl_1_1meta_1_1not__same__as_1_1apply.html", null ] + ] ], + [ "apply", "structutl_1_1meta_1_1not__same__as_1_1apply.html", null ], + [ "compose", "meta_2invoke_8h.html#a4f0c06cabe66bc73b703eb8509c7bb07", null ], + [ "compose_f", "meta_2invoke_8h.html#a729294327829b3068632da1235dc3090", null ], + [ "defer", "meta_2invoke_8h.html#a48f9a1220931596a9652351d2e7242be", null ], + [ "defer_i", "meta_2invoke_8h.html#a01f183f337439e414184beedc9bcf9e3", null ], + [ "identity_t", "meta_2invoke_8h.html#a63c0b6b08f4c1d9bd3c4db7432e9b2af", null ], + [ "invoke", "meta_2invoke_8h.html#a77630cd8adc01f7193f6cb834313d90f", null ], + [ "invoke_t", "meta_2invoke_8h.html#ac27f3e5f3ec42921d9f8a6bb85560cf1", null ], + [ "is_applicable_it", "meta_2invoke_8h.html#add602488265f07c7a3080355350cda70", null ], + [ "is_applicable_qt", "meta_2invoke_8h.html#a52c0afa73f63dc889e44cc6cc180f1f8", null ], + [ "is_applicable_t", "meta_2invoke_8h.html#a695a94a2bbe51b0d0eec9bf82214d094", null ] +]; \ No newline at end of file diff --git a/doc/html/meta_2invoke_8h_source.html b/doc/html/meta_2invoke_8h_source.html new file mode 100644 index 0000000..27bb8c8 --- /dev/null +++ b/doc/html/meta_2invoke_8h_source.html @@ -0,0 +1,166 @@ + + + + + + + +uTL: include/utl/meta/invoke.h Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    invoke.h
    +
    +
    +Go to the documentation of this file.
    1 
    20 #ifndef __utl_meta_invoke_h__
    21 #define __utl_meta_invoke_h__
    22 
    23 #include <utl/core/impl.h>
    24 #include <utl/meta/integral.h>
    25 #include <utl/meta/detection.h>
    26 #include <utl/meta/operations.h>
    27 
    33 namespace utl {
    35 namespace meta{
    36 
    47 
    52  template <typename _Tp>
    54  struct identity {
    55  #if defined (UTL_WORKAROUND_CWG_1558)
    56  // redirect unused Ts... via void_t
    57  template <typename... Ts>
    58  using apply = first_of<_Tp, void_t<Ts...>>;
    59  #else
    60  template <typename...>
    61  using apply = _Tp;
    62  #endif
    63  using type = _Tp;
    64  };
    65 
    67  template <typename _Tp>
    70 
    74 
    80  template <typename Fn, typename... Args>
    81  using invoke = typename Fn::template apply<Args...>;
    82 
    87  template <typename Fn, typename... Args>
    88  using invoke_t = eval< invoke <Fn, Args...>>;
    90 
    93 
    99  template <template <typename...> class F>
    100  struct wrap {
    101  template <typename... Args>
    102  using apply = F<Args...>;
    103  };
    104 
    106  template <typename T, template <T...> class F>
    107  struct wrap_i {
    108  // requires meta::Integral
    109  template <typename... Ts>
    110  using apply = F<Ts::type::value...>;
    111  };
    113 
    116  namespace detail {
    117 
    118  template<template<typename...> class F, typename... T>
    119  struct is_applicable_ {
    120  template<template<typename...> class G, typename = G<T...>>
    121  static true_ check (int); //< T.. can be passed to G
    122  template<template<typename...> class>
    123  static false_ check (...); //< all other combinations
    124 
    125  using type = decltype(check<F>(0));
    126  };
    127 
    128  template<typename F, typename... T>
    130  template<typename G, typename Ret = invoke_t<G, T...>>
    131  static Ret check (int); //< T.. can be passed to G
    132  template<typename...>
    133  static nil_ check (...); //< all other combinations
    134 
    135  using type = if_ <
    136  not_same_<
    137  nil_,
    138  decltype(check<F>(0))
    139  >, true_, false_
    140  >;
    146  };
    147 
    148  template<typename T, template <T...> class F, T... Is>
    150  template<typename TT, template<TT...> class G, typename = G<Is...>>
    151  static true_ check (int); //< Is... can be passed to G
    152  template<typename TT, template<TT...> class G>
    153  static false_ check (...); //< all other combinations
    154 
    155  using type = decltype(check<T, F>(0));
    156  };
    157  }
    158 
    160  template<template<typename...> class F, typename... T>
    161  using is_applicable_t = eval<
    162  detail::is_applicable_<F, T...>
    163  >;
    165  template<typename Q, typename... T>
    166  using is_applicable_qt = eval <
    167  detail::is_applicable_q_ <Q, T...>
    168  >;
    169 
    171  template <typename T, template<T...> class F, T... Is>
    172  using is_applicable_it = eval<
    173  detail::is_applicable_i_<T, F, Is...>
    174  >;
    175 
    177 
    180  namespace detail {
    182  template<template<typename...> class F, typename... Ts>
    183  struct defer_ {
    184  using type = F<Ts...>;
    185  };
    186 
    187  template<typename T, template<T...> class F, T... Is>
    188  struct defer_i_ {
    189  using type = F<Is...>;
    190  };
    191 
    205  }
    206 
    208  template<template<class...> class F, class... Ts>
    209  using defer = if_<
    210  detail::is_applicable_<F, Ts...>,
    211  detail::defer_<F, Ts...>,
    212  nil_
    213  >;
    214 
    216  template <typename T, template<T...> class F, T... Is>
    217  using defer_i = if_ <
    218  detail::is_applicable_i_<T, F, Is...>,
    219  detail::defer_i_<T, F, Is...>,
    220  nil_
    221  >;
    223 
    226 
    233  template <template <typename...> class F>
    234  struct quote {
    235  template <typename... Args>
    236  using apply = eval<
    237  defer<F, Args...>
    238  >;
    239  };
    240 
    242  template <typename T, template <T...> class F>
    243  struct quote_i {
    244  // requires meta::Integral
    245  template <typename... Ts>
    246  using apply = eval<
    247  defer_i<T, F, Ts::type::value...>
    248  >;
    249  };
    251 
    254  namespace detail {
    255  template <template <typename...> class... Fns> struct compose_f_ {};
    256 
    257  // recursive call to all invokes
    258  template <template <typename...> class Fn0,
    259  template <typename...> class... Fns>
    260  struct compose_f_<Fn0, Fns...> {
    261  template <typename... Args>
    262  using apply = invoke<
    263  quote<Fn0>,
    264  invoke<compose_f_<Fns...>, Args...>
    265  >;
    266  };
    267  // Termination specialization, finally pass the arguments
    268  template <template <typename...> class Fn0>
    269  struct compose_f_<Fn0> {
    270  template <typename ...Args>
    271  using apply = invoke<quote<Fn0>, Args...>;
    272  };
    273 
    274 
    275  template<typename ...Fns> struct compose_ {};
    276 
    277  // recursive call to all invokes
    278  template<typename Fn0, typename ...Fns>
    279  struct compose_<Fn0, Fns...> {
    280  template <typename ...Args>
    281  using apply = invoke<
    282  Fn0,
    283  invoke<compose_<Fns...>, Args...>
    284  >;
    285  };
    286  // Termination specialization, finally pass the arguments
    287  template<typename Fn0>
    288  struct compose_<Fn0> {
    289  template <typename... Args>
    290  using apply = invoke<Fn0, Args...>;
    291  };
    292  }
    293 
    307  template <typename... Fns>
    308  using compose = detail::compose_<Fns...>;
    309 
    323  template <template <typename...> class... Fns>
    324  using compose_f = detail::compose_f_<Fns...>;
    326 
    331  template<typename Fn, typename... Ts>
    332  struct bind_front {
    333  template<typename... Us>
    334  using apply = invoke<Fn, Ts..., Us...>;
    335  };
    336 
    341  template<typename Fn, typename... Ts>
    342  struct bind_back {
    343  template<typename... Us>
    344  using apply = invoke<Fn, Us..., Ts...>;
    345  };
    346 
    347 
    348  /*
    349  * ========== meta:: predicates ============
    350  */
    351  template <typename T1>
    352  struct same_as {
    353  template <typename T2>
    354  struct apply : same_<T1, T2> { };
    355  };
    356 
    357  template <typename T1>
    358  struct not_same_as {
    359  template <typename T2>
    360  struct apply : not_same_<T1, T2> { };
    361  };
    362 
    363 }}
    364 
    367 
    368 #endif /* __utl_meta_invoke_h__ */
    F< Args... > apply
    Definition: invoke.h:102
    +
    if_< detail::is_applicable_< F, Ts... >, detail::defer_< F, Ts... >, nil_ > defer
    defer alias template for F<Ts...>
    Definition: invoke.h:213
    +
    T1 first_of
    Select the first type of a type sequence.
    Definition: selection.h:76
    + +
    eval< detail::is_applicable_q_< Q, T... > > is_applicable_qt
    check if we can invoke Q with parameters T
    Definition: invoke.h:168
    +
    if_c< If::type::value, Args... > if_
    Select one type or another depending on a compile-time Boolean type.
    Definition: selection.h:66
    +
    void void_t
    void_t type alias
    Definition: detection.h:55
    +
    _Tp type
    identity
    Definition: invoke.h:63
    +
    if_< detail::is_applicable_i_< T, F, Is... >, detail::defer_i_< T, F, Is... >, nil_ > defer_i
    defer_i alias template for F<T, Is...>
    Definition: invoke.h:221
    + + +
    bool_< true > true_
    The type used as a compile-time boolean with true value.
    Definition: integral.h:68
    + +
    Integral constant operations and logical operations.
    +
    invoke< Fn0, invoke< compose_< Fns... >, Args... > > apply
    Definition: invoke.h:284
    +
    F< Ts::type::value... > apply
    Definition: invoke.h:110
    + + + +
    invoke< Fn, Ts..., Us... > apply
    Definition: invoke.h:334
    +
    invoke< quote< Fn0 >, Args... > apply
    Definition: invoke.h:271
    + +
    bool_< false > false_
    The type used as a compile-time boolean with false value.
    Definition: integral.h:69
    +
    Wrap a template F taking literal constants of type T into an Invokable.
    Definition: invoke.h:243
    +
    typename Tp::type eval
    Type alias for Tp::type. Used to evaluate/extract return type of metafunctions.
    Definition: integral.h:49
    + +
    decltype(check< F >(0)) type
    Definition: invoke.h:125
    +
    Detection idiom based on WG21&#39;s N4502 [n4502 1] from Walter E. Brown.
    +
    invoke< Fn0, Args... > apply
    Definition: invoke.h:290
    +
    STL&#39;s core language concepts.
    Definition: _1wire.h:30
    + + + + +
    eval< defer_i< T, F, Ts::type::value... > > apply
    Definition: invoke.h:248
    +
    if_< not_same_< nil_, decltype(check< F >(0)) >, true_, false_ > type
    Definition: invoke.h:140
    + + +
    eval< detail::is_applicable_< F, T... > > is_applicable_t
    check if we can instantiate F with parameters T
    Definition: invoke.h:163
    + + + +
    eval< identity< _Tp > > identity_t
    identity type alias
    Definition: invoke.h:68
    + + +
    eval< detail::is_applicable_i_< T, F, Is... > > is_applicable_it
    check if we can instantiate F with parameters Is of type T
    Definition: invoke.h:174
    +
    not_< eval< same_< _T1, _T2 > >> not_same_
    Definition: operations.h:111
    +
    eval< invoke< Fn, Args... > > invoke_t
    Definition: invoke.h:88
    +
    typename Fn::template apply< Args... > invoke
    Definition: invoke.h:81
    +
    invoke< Fn, Us..., Ts... > apply
    Definition: invoke.h:344
    + +
    _Tp apply
    identity is invokable, must also have apply
    Definition: invoke.h:61
    +
    decltype(check< T, F >(0)) type
    Definition: invoke.h:155
    +
    Wrap a template F taking literal constants of type T into an Invokable.
    Definition: invoke.h:107
    +
    invoke< quote< Fn0 >, invoke< compose_f_< Fns... >, Args... > > apply
    Definition: invoke.h:265
    + + +
    Implementation detail main forward header.
    + +
    eval< defer< F, Args... > > apply
    Definition: invoke.h:238
    + +
    +
    + + + + diff --git a/doc/html/meta_8h.html b/doc/html/meta_8h.html new file mode 100644 index 0000000..9bc7edd --- /dev/null +++ b/doc/html/meta_8h.html @@ -0,0 +1,125 @@ + + + + + + + +uTL: include/utl/meta/meta.h File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    meta.h File Reference
    +
    +
    + +

    Include all meta library. +More...

    +
    #include <utl/meta/integral.h>
    +#include <utl/meta/selection.h>
    +#include <utl/meta/operations.h>
    +#include <utl/meta/useif.h>
    +#include <utl/meta/typelist.h>
    +#include <utl/meta/detection.h>
    +#include <utl/meta/invoke.h>
    +
    +

    Go to the source code of this file.

    +

    Detailed Description

    +

    Include all meta library.

    +

    Copyright (C) 2018-2019 Christos Choutouridis

    +

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    +

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

    +

    You should have received a copy of the GNU Lesser General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    + +

    Definition in file meta.h.

    +
    +
    + + + + diff --git a/doc/html/meta_8h_source.html b/doc/html/meta_8h_source.html new file mode 100644 index 0000000..4494dc3 --- /dev/null +++ b/doc/html/meta_8h_source.html @@ -0,0 +1,112 @@ + + + + + + + +uTL: include/utl/meta/meta.h Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    meta.h
    +
    +
    +Go to the documentation of this file.
    1 
    21 #ifndef __utl_meta_meta_h__
    22 #define __utl_meta_meta_h__
    23 
    24 #include <utl/meta/integral.h>
    25 #include <utl/meta/selection.h>
    26 #include <utl/meta/operations.h>
    27 #include <utl/meta/useif.h>
    28 #include <utl/meta/typelist.h>
    29 #include <utl/meta/detection.h>
    30 #include <utl/meta/invoke.h>
    31 
    32 #endif /* __utl_meta_meta_h__ */
    +
    Integral constant operations and logical operations.
    +
    Template meta-programming type selections.
    +
    Detection idiom based on WG21&#39;s N4502 [n4502 1] from Walter E. Brown.
    + +
    A template parameter "container".
    +
    Template meta-programming SFINAE helpers.
    +
    +
    + + + + diff --git a/doc/html/modules.html b/doc/html/modules.html new file mode 100644 index 0000000..03aa2cd --- /dev/null +++ b/doc/html/modules.html @@ -0,0 +1,119 @@ + + + + + + + +uTL: Modules + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Modules
    +
    +
    +
    Here is a list of all modules:
    +
    [detail level 12]
    + + + + + + + + + + + +
     Concepts
     Iterators
     CRTP idiom support header
     version
     Detection
     operators
     Invoke
     Logic
     selection
     Sfinae
     Typelist
    +
    +
    +
    + + + + diff --git a/doc/html/modules.js b/doc/html/modules.js new file mode 100644 index 0000000..fed122f --- /dev/null +++ b/doc/html/modules.js @@ -0,0 +1,13 @@ +var modules = +[ + [ "Concepts", "group__concepts.html", "group__concepts" ], + [ "CRTP idiom support header", "group__crtp.html", "group__crtp" ], + [ "version", "group__version.html", "group__version" ], + [ "Detection", "group__detection.html", "group__detection" ], + [ "operators", "group__integral.html", "group__integral" ], + [ "Invoke", "group__invoke.html", "group__invoke" ], + [ "Logic", "group__logic.html", "group__logic" ], + [ "selection", "group__type.html", "group__type" ], + [ "Sfinae", "group__sfinae.html", "group__sfinae" ], + [ "Typelist", "group__typelist.html", "group__typelist" ] +]; \ No newline at end of file diff --git a/doc/html/namespace_tmeta_basic.html b/doc/html/namespace_tmeta_basic.html new file mode 100644 index 0000000..6fba432 --- /dev/null +++ b/doc/html/namespace_tmeta_basic.html @@ -0,0 +1,500 @@ + + + + + + + +uTL: TmetaBasic Namespace Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    TmetaBasic Namespace Reference
    +
    +
    + + + + +

    +Classes

    struct  Identity
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

     TEST (TmetaBasic, IntegrealType)
     
     TEST (TmetaBasic, IntegrealConstant)
     
     TEST (TmetaBasic, BasicTypes)
     
     TEST (TmetaBasic, Selection)
     
     TEST (TmetaBasic, LogicalOperations)
     
     TEST (TmetaBasic, ArithmeticOperations)
     
     TEST (TmetaBasic, ComparisonOperations)
     
     TEST (TmetaBasic, BitOperations)
     
    template<typename T , typename = when<same_<T, int>::type::value>>
    int check1 (T x)
     
    int check1 (...)
     
    template<typename T , typename = enable_if_t<same_<T, int>::type::value, void>>
    int check2 (T x)
     
    int check2 (...)
     
     TEST (TmetaBasic, Sfinae)
     
    +

    Function Documentation

    + +

    ◆ check1() [1/2]

    + +
    +
    +
    +template<typename T , typename = when<same_<T, int>::type::value>>
    + + + + + + + + +
    int TmetaBasic::check1 (x)
    +
    + +

    Definition at line 222 of file TmetaBasic.cpp.

    + +
    +
    + +

    ◆ check1() [2/2]

    + +
    +
    + + + + + + + + +
    int TmetaBasic::check1 ( ...)
    +
    + +

    Definition at line 223 of file TmetaBasic.cpp.

    + +
    +
    + +

    ◆ check2() [1/2]

    + +
    +
    +
    +template<typename T , typename = enable_if_t<same_<T, int>::type::value, void>>
    + + + + + + + + +
    int TmetaBasic::check2 (x)
    +
    + +

    Definition at line 226 of file TmetaBasic.cpp.

    + +
    +
    + +

    ◆ check2() [2/2]

    + +
    +
    + + + + + + + + +
    int TmetaBasic::check2 ( ...)
    +
    + +

    Definition at line 227 of file TmetaBasic.cpp.

    + +
    +
    + +

    ◆ TEST() [1/9]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    TmetaBasic::TEST (TmetaBasic ,
    IntegrealType  
    )
    +
    + +

    Definition at line 39 of file TmetaBasic.cpp.

    + +
    +
    + +

    ◆ TEST() [2/9]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    TmetaBasic::TEST (TmetaBasic ,
    IntegrealConstant  
    )
    +
    + +

    Definition at line 45 of file TmetaBasic.cpp.

    + +
    +
    + +

    ◆ TEST() [3/9]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    TmetaBasic::TEST (TmetaBasic ,
    BasicTypes  
    )
    +
    + +

    Definition at line 51 of file TmetaBasic.cpp.

    + +
    +
    + +

    ◆ TEST() [4/9]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    TmetaBasic::TEST (TmetaBasic ,
    Selection  
    )
    +
    + +

    Definition at line 92 of file TmetaBasic.cpp.

    + +
    +
    + +

    ◆ TEST() [5/9]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    TmetaBasic::TEST (TmetaBasic ,
    LogicalOperations  
    )
    +
    + +

    Definition at line 112 of file TmetaBasic.cpp.

    + +
    +
    + +

    ◆ TEST() [6/9]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    TmetaBasic::TEST (TmetaBasic ,
    ArithmeticOperations  
    )
    +
    + +

    Definition at line 152 of file TmetaBasic.cpp.

    + +
    +
    + +

    ◆ TEST() [7/9]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    TmetaBasic::TEST (TmetaBasic ,
    ComparisonOperations  
    )
    +
    + +

    Definition at line 166 of file TmetaBasic.cpp.

    + +
    +
    + +

    ◆ TEST() [8/9]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    TmetaBasic::TEST (TmetaBasic ,
    BitOperations  
    )
    +
    + +

    Definition at line 201 of file TmetaBasic.cpp.

    + +
    +
    + +

    ◆ TEST() [9/9]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    TmetaBasic::TEST (TmetaBasic ,
    Sfinae  
    )
    +
    + +

    Definition at line 229 of file TmetaBasic.cpp.

    + +
    +
    +
    +
    + + + + diff --git a/doc/html/namespace_tmeta_basic.js b/doc/html/namespace_tmeta_basic.js new file mode 100644 index 0000000..02afe83 --- /dev/null +++ b/doc/html/namespace_tmeta_basic.js @@ -0,0 +1,4 @@ +var namespace_tmeta_basic = +[ + [ "Identity", "struct_tmeta_basic_1_1_identity.html", "struct_tmeta_basic_1_1_identity" ] +]; \ No newline at end of file diff --git a/doc/html/namespace_tmeta_detection.html b/doc/html/namespace_tmeta_detection.html new file mode 100644 index 0000000..b848c71 --- /dev/null +++ b/doc/html/namespace_tmeta_detection.html @@ -0,0 +1,404 @@ + + + + + + + +uTL: TmetaDetection Namespace Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    TmetaDetection Namespace Reference
    +
    +
    + + + + + + + + + + +

    +Classes

    struct  A
     
    struct  Bar
     
    struct  Foo
     
    struct  mFun
     
    + + + + + + + + + + + + + + + + + + + + + + +

    +Typedefs

    template<typename T >
    using try_type = typename T::type
     
    template<typename T >
    using try_none = typename T::none
     
    template<typename T >
    using try_ctor1 = decltype(T(std::declval< int >(), std::declval< double >()))
     
    template<typename T >
    using try_ctor2 = decltype(T(std::declval< int >()))
     
    template<typename T >
    using try_ppT = decltype(++(std::declval< T >()))
     
    template<typename T >
    using try_Tpp = decltype(std::declval< T >()++)
     
    template<typename T >
    using try_sfun = decltype(std::declval< T >().sfun())
     
    + + + + + + + + + +

    +Functions

     TEST (TmetaDetection, VoidType)
     
     TEST (TmetaDetection, NotAType)
     
     TEST (TmetaDetection, IsDetected)
     
     TEST (TmetaDetection, Toolkit)
     
    +

    Typedef Documentation

    + +

    ◆ try_ctor1

    + +
    +
    +
    +template<typename T >
    + + + + +
    using TmetaDetection::try_ctor1 = typedef decltype (T(std::declval<int>(), std::declval<double>()))
    +
    + +

    Definition at line 55 of file TmetaDetection.cpp.

    + +
    +
    + +

    ◆ try_ctor2

    + +
    +
    +
    +template<typename T >
    + + + + +
    using TmetaDetection::try_ctor2 = typedef decltype (T(std::declval<int>()))
    +
    + +

    Definition at line 56 of file TmetaDetection.cpp.

    + +
    +
    + +

    ◆ try_none

    + +
    +
    +
    +template<typename T >
    + + + + +
    using TmetaDetection::try_none = typedef typename T::none
    +
    + +

    Definition at line 54 of file TmetaDetection.cpp.

    + +
    +
    + +

    ◆ try_ppT

    + +
    +
    +
    +template<typename T >
    + + + + +
    using TmetaDetection::try_ppT = typedef decltype (++(std::declval<T>()))
    +
    + +

    Definition at line 57 of file TmetaDetection.cpp.

    + +
    +
    + +

    ◆ try_sfun

    + +
    +
    +
    +template<typename T >
    + + + + +
    using TmetaDetection::try_sfun = typedef decltype (std::declval<T>().sfun())
    +
    + +

    Definition at line 59 of file TmetaDetection.cpp.

    + +
    +
    + +

    ◆ try_Tpp

    + +
    +
    +
    +template<typename T >
    + + + + +
    using TmetaDetection::try_Tpp = typedef decltype (std::declval<T>()++)
    +
    + +

    Definition at line 58 of file TmetaDetection.cpp.

    + +
    +
    + +

    ◆ try_type

    + +
    +
    +
    +template<typename T >
    + + + + +
    using TmetaDetection::try_type = typedef typename T::type
    +
    + +

    Definition at line 53 of file TmetaDetection.cpp.

    + +
    +
    +

    Function Documentation

    + +

    ◆ TEST() [1/4]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    TmetaDetection::TEST (TmetaDetection ,
    VoidType  
    )
    +
    + +

    Definition at line 64 of file TmetaDetection.cpp.

    + +
    +
    + +

    ◆ TEST() [2/4]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    TmetaDetection::TEST (TmetaDetection ,
    NotAType  
    )
    +
    + +

    Definition at line 72 of file TmetaDetection.cpp.

    + +
    +
    + +

    ◆ TEST() [3/4]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    TmetaDetection::TEST (TmetaDetection ,
    IsDetected  
    )
    +
    + +

    Definition at line 82 of file TmetaDetection.cpp.

    + +
    +
    + +

    ◆ TEST() [4/4]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    TmetaDetection::TEST (TmetaDetection ,
    Toolkit  
    )
    +
    + +

    Definition at line 106 of file TmetaDetection.cpp.

    + +
    +
    +
    +
    + + + + diff --git a/doc/html/namespace_tmeta_detection.js b/doc/html/namespace_tmeta_detection.js new file mode 100644 index 0000000..7e4b999 --- /dev/null +++ b/doc/html/namespace_tmeta_detection.js @@ -0,0 +1,7 @@ +var namespace_tmeta_detection = +[ + [ "A", "struct_tmeta_detection_1_1_a.html", "struct_tmeta_detection_1_1_a" ], + [ "Bar", "struct_tmeta_detection_1_1_bar.html", null ], + [ "Foo", "struct_tmeta_detection_1_1_foo.html", null ], + [ "mFun", "struct_tmeta_detection_1_1m_fun.html", "struct_tmeta_detection_1_1m_fun" ] +]; \ No newline at end of file diff --git a/doc/html/namespace_tmeta_typelist.html b/doc/html/namespace_tmeta_typelist.html new file mode 100644 index 0000000..bc97e93 --- /dev/null +++ b/doc/html/namespace_tmeta_typelist.html @@ -0,0 +1,516 @@ + + + + + + + +uTL: TmetaTypelist Namespace Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    TmetaTypelist Namespace Reference
    +
    +
    + + + + + + + + + + + + + + + + + + +

    +Classes

    struct  F
     
    struct  Identity
     
    struct  MfunBin
     
    struct  MfunBin_i
     
    struct  MfunUn1
     
    struct  MfunUn2
     
    struct  Pred_isInt
     
    struct  Pred_isVoid
     
    + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

     TEST (TmetaTypelist, Invoke)
     
     TEST (TmetaTypelist, Basics)
     
     TEST (TmetaTypelist, ElementAccess)
     
     TEST (TmetaTypelist, Concat)
     
     TEST (TmetaTypelist, Fold)
     
     TEST (TmetaTypelist, PushPopReverse)
     
     TEST (TmetaTypelist, Transform)
     
     TEST (TmetaTypelist, Find)
     
     TEST (TmetaTypelist, Count)
     
     TEST (TmetaTypelist, Filter)
     
     TEST (TmetaTypelist, Replace)
     
     TEST (TmetaTypelist, AllAnyNone)
     
    +

    Function Documentation

    + +

    ◆ TEST() [1/12]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    TmetaTypelist::TEST (TmetaTypelist ,
    Invoke  
    )
    +
    + +

    Definition at line 60 of file TmetaTypelist.cpp.

    + +
    +
    + +

    ◆ TEST() [2/12]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    TmetaTypelist::TEST (TmetaTypelist ,
    Basics  
    )
    +
    + +

    Definition at line 140 of file TmetaTypelist.cpp.

    + +
    +
    + +

    ◆ TEST() [3/12]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    TmetaTypelist::TEST (TmetaTypelist ,
    ElementAccess  
    )
    +
    + +

    Definition at line 165 of file TmetaTypelist.cpp.

    + +
    +
    + +

    ◆ TEST() [4/12]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    TmetaTypelist::TEST (TmetaTypelist ,
    Concat  
    )
    +
    + +

    Definition at line 180 of file TmetaTypelist.cpp.

    + +
    +
    + +

    ◆ TEST() [5/12]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    TmetaTypelist::TEST (TmetaTypelist ,
    Fold  
    )
    +
    + +

    Definition at line 194 of file TmetaTypelist.cpp.

    + +
    +
    + +

    ◆ TEST() [6/12]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    TmetaTypelist::TEST (TmetaTypelist ,
    PushPopReverse  
    )
    +
    + +

    Definition at line 214 of file TmetaTypelist.cpp.

    + +
    +
    + +

    ◆ TEST() [7/12]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    TmetaTypelist::TEST (TmetaTypelist ,
    Transform  
    )
    +
    + +

    Definition at line 232 of file TmetaTypelist.cpp.

    + +
    +
    + +

    ◆ TEST() [8/12]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    TmetaTypelist::TEST (TmetaTypelist ,
    Find  
    )
    +
    + +

    Definition at line 250 of file TmetaTypelist.cpp.

    + +
    +
    + +

    ◆ TEST() [9/12]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    TmetaTypelist::TEST (TmetaTypelist ,
    Count  
    )
    +
    + +

    Definition at line 269 of file TmetaTypelist.cpp.

    + +
    +
    + +

    ◆ TEST() [10/12]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    TmetaTypelist::TEST (TmetaTypelist ,
    Filter  
    )
    +
    + +

    Definition at line 281 of file TmetaTypelist.cpp.

    + +
    +
    + +

    ◆ TEST() [11/12]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    TmetaTypelist::TEST (TmetaTypelist ,
    Replace  
    )
    +
    + +

    Definition at line 293 of file TmetaTypelist.cpp.

    + +
    +
    + +

    ◆ TEST() [12/12]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    TmetaTypelist::TEST (TmetaTypelist ,
    AllAnyNone  
    )
    +
    + +

    Definition at line 308 of file TmetaTypelist.cpp.

    + +
    +
    +
    +
    + + + + diff --git a/doc/html/namespace_tmeta_typelist.js b/doc/html/namespace_tmeta_typelist.js new file mode 100644 index 0000000..30dda03 --- /dev/null +++ b/doc/html/namespace_tmeta_typelist.js @@ -0,0 +1,11 @@ +var namespace_tmeta_typelist = +[ + [ "F", "struct_tmeta_typelist_1_1_f.html", null ], + [ "Identity", "struct_tmeta_typelist_1_1_identity.html", "struct_tmeta_typelist_1_1_identity" ], + [ "MfunBin", "struct_tmeta_typelist_1_1_mfun_bin.html", "struct_tmeta_typelist_1_1_mfun_bin" ], + [ "MfunBin_i", "struct_tmeta_typelist_1_1_mfun_bin__i.html", "struct_tmeta_typelist_1_1_mfun_bin__i" ], + [ "MfunUn1", "struct_tmeta_typelist_1_1_mfun_un1.html", "struct_tmeta_typelist_1_1_mfun_un1" ], + [ "MfunUn2", "struct_tmeta_typelist_1_1_mfun_un2.html", "struct_tmeta_typelist_1_1_mfun_un2" ], + [ "Pred_isInt", "struct_tmeta_typelist_1_1_pred__is_int.html", "struct_tmeta_typelist_1_1_pred__is_int" ], + [ "Pred_isVoid", "struct_tmeta_typelist_1_1_pred__is_void.html", "struct_tmeta_typelist_1_1_pred__is_void" ] +]; \ No newline at end of file diff --git a/doc/html/namespacemembers.html b/doc/html/namespacemembers.html new file mode 100644 index 0000000..643b1c9 --- /dev/null +++ b/doc/html/namespacemembers.html @@ -0,0 +1,149 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    + +

    - _ -

    +
    +
    + + + + diff --git a/doc/html/namespacemembers_a.html b/doc/html/namespacemembers_a.html new file mode 100644 index 0000000..24046a6 --- /dev/null +++ b/doc/html/namespacemembers_a.html @@ -0,0 +1,143 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    + +

    - a -

    +
    +
    + + + + diff --git a/doc/html/namespacemembers_b.html b/doc/html/namespacemembers_b.html new file mode 100644 index 0000000..17f4d2d --- /dev/null +++ b/doc/html/namespacemembers_b.html @@ -0,0 +1,131 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    + +

    - b -

    +
    +
    + + + + diff --git a/doc/html/namespacemembers_c.html b/doc/html/namespacemembers_c.html new file mode 100644 index 0000000..5d512fc --- /dev/null +++ b/doc/html/namespacemembers_c.html @@ -0,0 +1,177 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    + +

    - c -

    +
    +
    + + + + diff --git a/doc/html/namespacemembers_d.html b/doc/html/namespacemembers_d.html new file mode 100644 index 0000000..6094d35 --- /dev/null +++ b/doc/html/namespacemembers_d.html @@ -0,0 +1,137 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    + +

    - d -

    +
    +
    + + + + diff --git a/doc/html/namespacemembers_dup.js b/doc/html/namespacemembers_dup.js new file mode 100644 index 0000000..708ac06 --- /dev/null +++ b/doc/html/namespacemembers_dup.js @@ -0,0 +1,23 @@ +var namespacemembers_dup = +[ + [ "_", "namespacemembers.html", null ], + [ "a", "namespacemembers_a.html", null ], + [ "b", "namespacemembers_b.html", null ], + [ "c", "namespacemembers_c.html", null ], + [ "d", "namespacemembers_d.html", null ], + [ "e", "namespacemembers_e.html", null ], + [ "f", "namespacemembers_f.html", null ], + [ "g", "namespacemembers_g.html", null ], + [ "i", "namespacemembers_i.html", null ], + [ "l", "namespacemembers_l.html", null ], + [ "m", "namespacemembers_m.html", null ], + [ "n", "namespacemembers_n.html", null ], + [ "o", "namespacemembers_o.html", null ], + [ "p", "namespacemembers_p.html", null ], + [ "r", "namespacemembers_r.html", null ], + [ "s", "namespacemembers_s.html", null ], + [ "t", "namespacemembers_t.html", null ], + [ "u", "namespacemembers_u.html", null ], + [ "v", "namespacemembers_v.html", null ], + [ "w", "namespacemembers_w.html", null ] +]; \ No newline at end of file diff --git a/doc/html/namespacemembers_e.html b/doc/html/namespacemembers_e.html new file mode 100644 index 0000000..4e8b12d --- /dev/null +++ b/doc/html/namespacemembers_e.html @@ -0,0 +1,122 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    + +

    - e -

    +
    +
    + + + + diff --git a/doc/html/namespacemembers_enum.html b/doc/html/namespacemembers_enum.html new file mode 100644 index 0000000..9b2a7ae --- /dev/null +++ b/doc/html/namespacemembers_enum.html @@ -0,0 +1,111 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    + + + + diff --git a/doc/html/namespacemembers_eval.html b/doc/html/namespacemembers_eval.html new file mode 100644 index 0000000..c0391b0 --- /dev/null +++ b/doc/html/namespacemembers_eval.html @@ -0,0 +1,168 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    + + + + diff --git a/doc/html/namespacemembers_f.html b/doc/html/namespacemembers_f.html new file mode 100644 index 0000000..2edf2b8 --- /dev/null +++ b/doc/html/namespacemembers_f.html @@ -0,0 +1,128 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    + +

    - f -

    +
    +
    + + + + diff --git a/doc/html/namespacemembers_func.html b/doc/html/namespacemembers_func.html new file mode 100644 index 0000000..9e46cab --- /dev/null +++ b/doc/html/namespacemembers_func.html @@ -0,0 +1,177 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - _ -

    + + +

    - g -

      +
    • get() +: utl +
    • +
    + + +

    - i -

    + + +

    - o -

      +
    • operator!=() +: utl +
    • +
    • operator+() +: utl +
    • +
    • operator-() +: utl +
    • +
    • operator<() +: utl +
    • +
    • operator<=() +: utl +
    • +
    • operator==() +: utl +
    • +
    • operator>() +: utl +
    • +
    • operator>=() +: utl +
    • +
    + + +

    - s -

      +
    • swap() +: utl +
    • +
    +
    +
    + + + + diff --git a/doc/html/namespacemembers_func.js b/doc/html/namespacemembers_func.js new file mode 100644 index 0000000..7671552 --- /dev/null +++ b/doc/html/namespacemembers_func.js @@ -0,0 +1,22 @@ +var namespacemembers_func = +[ + [ "_", "namespacemembers_func.html", null ], + [ "a", "namespacemembers_func_a.html", null ], + [ "b", "namespacemembers_func_b.html", null ], + [ "c", "namespacemembers_func_c.html", null ], + [ "d", "namespacemembers_func_d.html", null ], + [ "e", "namespacemembers_func_e.html", null ], + [ "f", "namespacemembers_func_f.html", null ], + [ "g", "namespacemembers_func_g.html", null ], + [ "i", "namespacemembers_func_i.html", null ], + [ "l", "namespacemembers_func_l.html", null ], + [ "m", "namespacemembers_func_m.html", null ], + [ "o", "namespacemembers_func_o.html", null ], + [ "p", "namespacemembers_func_p.html", null ], + [ "r", "namespacemembers_func_r.html", null ], + [ "s", "namespacemembers_func_s.html", null ], + [ "t", "namespacemembers_func_t.html", null ], + [ "u", "namespacemembers_func_u.html", null ], + [ "v", "namespacemembers_func_v.html", null ], + [ "w", "namespacemembers_func_w.html", null ] +]; \ No newline at end of file diff --git a/doc/html/namespacemembers_func_a.html b/doc/html/namespacemembers_func_a.html new file mode 100644 index 0000000..229ac68 --- /dev/null +++ b/doc/html/namespacemembers_func_a.html @@ -0,0 +1,140 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - a -

    +
    +
    + + + + diff --git a/doc/html/namespacemembers_func_b.html b/doc/html/namespacemembers_func_b.html new file mode 100644 index 0000000..4231ddf --- /dev/null +++ b/doc/html/namespacemembers_func_b.html @@ -0,0 +1,110 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - b -

    +
    +
    + + + + diff --git a/doc/html/namespacemembers_func_c.html b/doc/html/namespacemembers_func_c.html new file mode 100644 index 0000000..e66da58 --- /dev/null +++ b/doc/html/namespacemembers_func_c.html @@ -0,0 +1,161 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - c -

    +
    +
    + + + + diff --git a/doc/html/namespacemembers_func_d.html b/doc/html/namespacemembers_func_d.html new file mode 100644 index 0000000..1b61c24 --- /dev/null +++ b/doc/html/namespacemembers_func_d.html @@ -0,0 +1,125 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - d -

    +
    +
    + + + + diff --git a/doc/html/namespacemembers_func_e.html b/doc/html/namespacemembers_func_e.html new file mode 100644 index 0000000..f027490 --- /dev/null +++ b/doc/html/namespacemembers_func_e.html @@ -0,0 +1,107 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - e -

    +
    +
    + + + + diff --git a/doc/html/namespacemembers_func_f.html b/doc/html/namespacemembers_func_f.html new file mode 100644 index 0000000..43817bf --- /dev/null +++ b/doc/html/namespacemembers_func_f.html @@ -0,0 +1,134 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - f -

    +
    +
    + + + + diff --git a/doc/html/namespacemembers_func_g.html b/doc/html/namespacemembers_func_g.html new file mode 100644 index 0000000..313d7c1 --- /dev/null +++ b/doc/html/namespacemembers_func_g.html @@ -0,0 +1,165 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - g -

    +
    +
    + + + + diff --git a/doc/html/namespacemembers_func_i.html b/doc/html/namespacemembers_func_i.html new file mode 100644 index 0000000..2a3b128 --- /dev/null +++ b/doc/html/namespacemembers_func_i.html @@ -0,0 +1,167 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - i -

    +
    +
    + + + + diff --git a/doc/html/namespacemembers_func_l.html b/doc/html/namespacemembers_func_l.html new file mode 100644 index 0000000..9ea99dc --- /dev/null +++ b/doc/html/namespacemembers_func_l.html @@ -0,0 +1,107 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - l -

    +
    +
    + + + + diff --git a/doc/html/namespacemembers_func_m.html b/doc/html/namespacemembers_func_m.html new file mode 100644 index 0000000..313d1c8 --- /dev/null +++ b/doc/html/namespacemembers_func_m.html @@ -0,0 +1,107 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - m -

    +
    +
    + + + + diff --git a/doc/html/namespacemembers_func_o.html b/doc/html/namespacemembers_func_o.html new file mode 100644 index 0000000..db27699 --- /dev/null +++ b/doc/html/namespacemembers_func_o.html @@ -0,0 +1,143 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - o -

    +
    +
    + + + + diff --git a/doc/html/namespacemembers_func_p.html b/doc/html/namespacemembers_func_p.html new file mode 100644 index 0000000..cfd401a --- /dev/null +++ b/doc/html/namespacemembers_func_p.html @@ -0,0 +1,131 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - p -

    +
    +
    + + + + diff --git a/doc/html/namespacemembers_func_r.html b/doc/html/namespacemembers_func_r.html new file mode 100644 index 0000000..592104a --- /dev/null +++ b/doc/html/namespacemembers_func_r.html @@ -0,0 +1,122 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - r -

    +
    +
    + + + + diff --git a/doc/html/namespacemembers_func_s.html b/doc/html/namespacemembers_func_s.html new file mode 100644 index 0000000..23ab9d6 --- /dev/null +++ b/doc/html/namespacemembers_func_s.html @@ -0,0 +1,137 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - s -

    +
    +
    + + + + diff --git a/doc/html/namespacemembers_func_t.html b/doc/html/namespacemembers_func_t.html new file mode 100644 index 0000000..103c206 --- /dev/null +++ b/doc/html/namespacemembers_func_t.html @@ -0,0 +1,132 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - t -

    +
    +
    + + + + diff --git a/doc/html/namespacemembers_func_u.html b/doc/html/namespacemembers_func_u.html new file mode 100644 index 0000000..fa73b27 --- /dev/null +++ b/doc/html/namespacemembers_func_u.html @@ -0,0 +1,116 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - u -

    +
    +
    + + + + diff --git a/doc/html/namespacemembers_func_v.html b/doc/html/namespacemembers_func_v.html new file mode 100644 index 0000000..355eb70 --- /dev/null +++ b/doc/html/namespacemembers_func_v.html @@ -0,0 +1,110 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - v -

    +
    +
    + + + + diff --git a/doc/html/namespacemembers_func_w.html b/doc/html/namespacemembers_func_w.html new file mode 100644 index 0000000..db2cd34 --- /dev/null +++ b/doc/html/namespacemembers_func_w.html @@ -0,0 +1,107 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - w -

    +
    +
    + + + + diff --git a/doc/html/namespacemembers_g.html b/doc/html/namespacemembers_g.html new file mode 100644 index 0000000..3b43eec --- /dev/null +++ b/doc/html/namespacemembers_g.html @@ -0,0 +1,107 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    + +

    - g -

      +
    • get() +: utl +
    • +
    +
    +
    + + + + diff --git a/doc/html/namespacemembers_i.html b/doc/html/namespacemembers_i.html new file mode 100644 index 0000000..b28d6e1 --- /dev/null +++ b/doc/html/namespacemembers_i.html @@ -0,0 +1,222 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    + +

    - i -

    +
    +
    + + + + diff --git a/doc/html/namespacemembers_k.html b/doc/html/namespacemembers_k.html new file mode 100644 index 0000000..31e6477 --- /dev/null +++ b/doc/html/namespacemembers_k.html @@ -0,0 +1,170 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    + +

    - k -

    +
    +
    + + + + diff --git a/doc/html/namespacemembers_l.html b/doc/html/namespacemembers_l.html new file mode 100644 index 0000000..3f4e3b6 --- /dev/null +++ b/doc/html/namespacemembers_l.html @@ -0,0 +1,107 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    + +

    - l -

    +
    +
    + + + + diff --git a/doc/html/namespacemembers_m.html b/doc/html/namespacemembers_m.html new file mode 100644 index 0000000..b5696af --- /dev/null +++ b/doc/html/namespacemembers_m.html @@ -0,0 +1,125 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    + +

    - m -

    +
    +
    + + + + diff --git a/doc/html/namespacemembers_n.html b/doc/html/namespacemembers_n.html new file mode 100644 index 0000000..9c717b8 --- /dev/null +++ b/doc/html/namespacemembers_n.html @@ -0,0 +1,122 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    + +

    - n -

    +
    +
    + + + + diff --git a/doc/html/namespacemembers_o.html b/doc/html/namespacemembers_o.html new file mode 100644 index 0000000..38d0620 --- /dev/null +++ b/doc/html/namespacemembers_o.html @@ -0,0 +1,134 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    + +

    - o -

      +
    • operator!=() +: utl +
    • +
    • operator+() +: utl +
    • +
    • operator-() +: utl +
    • +
    • operator<() +: utl +
    • +
    • operator<=() +: utl +
    • +
    • operator==() +: utl +
    • +
    • operator>() +: utl +
    • +
    • operator>=() +: utl +
    • +
    • or_ +: utl::meta +
    • +
    • Out_dev +: utl +
    • +
    +
    +
    + + + + diff --git a/doc/html/namespacemembers_p.html b/doc/html/namespacemembers_p.html new file mode 100644 index 0000000..f32132e --- /dev/null +++ b/doc/html/namespacemembers_p.html @@ -0,0 +1,125 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    + +

    - p -

    +
    +
    + + + + diff --git a/doc/html/namespacemembers_r.html b/doc/html/namespacemembers_r.html new file mode 100644 index 0000000..1195bcd --- /dev/null +++ b/doc/html/namespacemembers_r.html @@ -0,0 +1,134 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    + +

    - r -

    +
    +
    + + + + diff --git a/doc/html/namespacemembers_s.html b/doc/html/namespacemembers_s.html new file mode 100644 index 0000000..28a3661 --- /dev/null +++ b/doc/html/namespacemembers_s.html @@ -0,0 +1,164 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    + +

    - s -

    +
    +
    + + + + diff --git a/doc/html/namespacemembers_t.html b/doc/html/namespacemembers_t.html new file mode 100644 index 0000000..b2b04ec --- /dev/null +++ b/doc/html/namespacemembers_t.html @@ -0,0 +1,228 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    + +

    - t -

    +
    +
    + + + + diff --git a/doc/html/namespacemembers_type.html b/doc/html/namespacemembers_type.html new file mode 100644 index 0000000..a76ba19 --- /dev/null +++ b/doc/html/namespacemembers_type.html @@ -0,0 +1,710 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - _ -

    + + +

    - a -

    + + +

    - b -

    + + +

    - c -

    + + +

    - d -

    + + +

    - e -

    + + +

    - f -

    + + +

    - i -

    + + +

    - l -

    + + +

    - m -

    + + +

    - n -

    + + +

    - o -

    + + +

    - p -

    + + +

    - r -

    + + +

    - s -

    + + +

    - t -

    + + +

    - u -

    + + +

    - v -

    + + +

    - w -

    +
    +
    + + + + diff --git a/doc/html/namespacemembers_type.js b/doc/html/namespacemembers_type.js new file mode 100644 index 0000000..57c596f --- /dev/null +++ b/doc/html/namespacemembers_type.js @@ -0,0 +1,22 @@ +var namespacemembers_type = +[ + [ "_", "namespacemembers_type.html", null ], + [ "a", "namespacemembers_type_a.html", null ], + [ "b", "namespacemembers_type_b.html", null ], + [ "c", "namespacemembers_type_c.html", null ], + [ "d", "namespacemembers_type_d.html", null ], + [ "e", "namespacemembers_type_e.html", null ], + [ "f", "namespacemembers_type_f.html", null ], + [ "i", "namespacemembers_type_i.html", null ], + [ "l", "namespacemembers_type_l.html", null ], + [ "m", "namespacemembers_type_m.html", null ], + [ "n", "namespacemembers_type_n.html", null ], + [ "o", "namespacemembers_type_o.html", null ], + [ "p", "namespacemembers_type_p.html", null ], + [ "r", "namespacemembers_type_r.html", null ], + [ "s", "namespacemembers_type_s.html", null ], + [ "t", "namespacemembers_type_t.html", null ], + [ "u", "namespacemembers_type_u.html", null ], + [ "v", "namespacemembers_type_v.html", null ], + [ "w", "namespacemembers_type_w.html", null ] +]; \ No newline at end of file diff --git a/doc/html/namespacemembers_type_a.html b/doc/html/namespacemembers_type_a.html new file mode 100644 index 0000000..6074a1c --- /dev/null +++ b/doc/html/namespacemembers_type_a.html @@ -0,0 +1,137 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - a -

    +
    +
    + + + + diff --git a/doc/html/namespacemembers_type_b.html b/doc/html/namespacemembers_type_b.html new file mode 100644 index 0000000..c64ca15 --- /dev/null +++ b/doc/html/namespacemembers_type_b.html @@ -0,0 +1,128 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - b -

    +
    +
    + + + + diff --git a/doc/html/namespacemembers_type_c.html b/doc/html/namespacemembers_type_c.html new file mode 100644 index 0000000..86c1963 --- /dev/null +++ b/doc/html/namespacemembers_type_c.html @@ -0,0 +1,150 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - c -

    +
    +
    + + + + diff --git a/doc/html/namespacemembers_type_d.html b/doc/html/namespacemembers_type_d.html new file mode 100644 index 0000000..921cac6 --- /dev/null +++ b/doc/html/namespacemembers_type_d.html @@ -0,0 +1,131 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - d -

    +
    +
    + + + + diff --git a/doc/html/namespacemembers_type_e.html b/doc/html/namespacemembers_type_e.html new file mode 100644 index 0000000..d7a5685 --- /dev/null +++ b/doc/html/namespacemembers_type_e.html @@ -0,0 +1,116 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - e -

    +
    +
    + + + + diff --git a/doc/html/namespacemembers_type_f.html b/doc/html/namespacemembers_type_f.html new file mode 100644 index 0000000..a0f9ef8 --- /dev/null +++ b/doc/html/namespacemembers_type_f.html @@ -0,0 +1,131 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - f -

    +
    +
    + + + + diff --git a/doc/html/namespacemembers_type_i.html b/doc/html/namespacemembers_type_i.html new file mode 100644 index 0000000..9761418 --- /dev/null +++ b/doc/html/namespacemembers_type_i.html @@ -0,0 +1,206 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - i -

    +
    +
    + + + + diff --git a/doc/html/namespacemembers_type_l.html b/doc/html/namespacemembers_type_l.html new file mode 100644 index 0000000..3ef0d84 --- /dev/null +++ b/doc/html/namespacemembers_type_l.html @@ -0,0 +1,107 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - l -

    +
    +
    + + + + diff --git a/doc/html/namespacemembers_type_m.html b/doc/html/namespacemembers_type_m.html new file mode 100644 index 0000000..cb7771f --- /dev/null +++ b/doc/html/namespacemembers_type_m.html @@ -0,0 +1,119 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - m -

    +
    +
    + + + + diff --git a/doc/html/namespacemembers_type_n.html b/doc/html/namespacemembers_type_n.html new file mode 100644 index 0000000..9dd8279 --- /dev/null +++ b/doc/html/namespacemembers_type_n.html @@ -0,0 +1,122 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - n -

    +
    +
    + + + + diff --git a/doc/html/namespacemembers_type_o.html b/doc/html/namespacemembers_type_o.html new file mode 100644 index 0000000..3c8df19 --- /dev/null +++ b/doc/html/namespacemembers_type_o.html @@ -0,0 +1,107 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - o -

    +
    +
    + + + + diff --git a/doc/html/namespacemembers_type_p.html b/doc/html/namespacemembers_type_p.html new file mode 100644 index 0000000..f5bfd75 --- /dev/null +++ b/doc/html/namespacemembers_type_p.html @@ -0,0 +1,125 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - p -

    +
    +
    + + + + diff --git a/doc/html/namespacemembers_type_r.html b/doc/html/namespacemembers_type_r.html new file mode 100644 index 0000000..ae03746 --- /dev/null +++ b/doc/html/namespacemembers_type_r.html @@ -0,0 +1,125 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - r -

    +
    +
    + + + + diff --git a/doc/html/namespacemembers_type_s.html b/doc/html/namespacemembers_type_s.html new file mode 100644 index 0000000..7b370bc --- /dev/null +++ b/doc/html/namespacemembers_type_s.html @@ -0,0 +1,149 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - s -

    +
    +
    + + + + diff --git a/doc/html/namespacemembers_type_t.html b/doc/html/namespacemembers_type_t.html new file mode 100644 index 0000000..4b89c33 --- /dev/null +++ b/doc/html/namespacemembers_type_t.html @@ -0,0 +1,265 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - t -

    +
    +
    + + + + diff --git a/doc/html/namespacemembers_type_u.html b/doc/html/namespacemembers_type_u.html new file mode 100644 index 0000000..2efd988 --- /dev/null +++ b/doc/html/namespacemembers_type_u.html @@ -0,0 +1,132 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - u -

    +
    +
    + + + + diff --git a/doc/html/namespacemembers_type_v.html b/doc/html/namespacemembers_type_v.html new file mode 100644 index 0000000..94ffeca --- /dev/null +++ b/doc/html/namespacemembers_type_v.html @@ -0,0 +1,110 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - v -

    +
    +
    + + + + diff --git a/doc/html/namespacemembers_type_w.html b/doc/html/namespacemembers_type_w.html new file mode 100644 index 0000000..d82e987 --- /dev/null +++ b/doc/html/namespacemembers_type_w.html @@ -0,0 +1,113 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - w -

    +
    +
    + + + + diff --git a/doc/html/namespacemembers_u.html b/doc/html/namespacemembers_u.html new file mode 100644 index 0000000..b2e29fe --- /dev/null +++ b/doc/html/namespacemembers_u.html @@ -0,0 +1,129 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    + +

    - u -

    +
    +
    + + + + diff --git a/doc/html/namespacemembers_v.html b/doc/html/namespacemembers_v.html new file mode 100644 index 0000000..2b9992b --- /dev/null +++ b/doc/html/namespacemembers_v.html @@ -0,0 +1,110 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    + +

    - v -

    +
    +
    + + + + diff --git a/doc/html/namespacemembers_vars.html b/doc/html/namespacemembers_vars.html new file mode 100644 index 0000000..45192de --- /dev/null +++ b/doc/html/namespacemembers_vars.html @@ -0,0 +1,288 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - a -

      +
    • Arithmetic +: utl +
    • +
    • Assignable +: utl +
    • +
    + + +

    - b -

      +
    • Boolean +: utl +
    • +
    + + +

    - c -

      +
    • Common +: utl +
    • +
    • CommonReference +: utl +
    • +
    • Constructible +: utl +
    • +
    • ConvertibleTo +: utl +
    • +
    • Copyable +: utl +
    • +
    • CopyAssignable +: utl +
    • +
    • CopyConstructible +: utl +
    • +
    + + +

    - d -

      +
    • DefaultConstructible +: utl +
    • +
    • DerivedFrom +: utl +
    • +
    • Destructible +: utl +
    • +
    + + +

    - e -

      +
    • EqualityComparable +: utl +
    • +
    • EqualityComparableWith +: utl +
    • +
    + + +

    - f -

      +
    • FloatingPoint +: utl +
    • +
    + + +

    - i -

    + + +

    - m -

      +
    • Movable +: utl +
    • +
    • MoveAssignable +: utl +
    • +
    • MoveConstructible +: utl +
    • +
    + + +

    - o -

      +
    • Out_dev +: utl +
    • +
    + + +

    - p -

      +
    • Predicate +: utl +
    • +
    + + +

    - r -

      +
    • Regular +: utl +
    • +
    • RegularInvocable +: utl +
    • +
    • Relation +: utl +
    • +
    + + +

    - s -

      +
    • Same +: utl +
    • +
    • Scalar +: utl +
    • +
    • Semiregular +: utl +
    • +
    • SignedIntegral +: utl +
    • +
    • StrictTotallyOrdered +: utl +
    • +
    • StrictTotallyOrderedWith +: utl +
    • +
    • StrictWeakOrder +: utl +
    • +
    • Swappable +: utl +
    • +
    • SwappableWith +: utl +
    • +
    + + +

    - u -

      +
    • UnsignedIntegral +: utl +
    • +
    + + +

    - w -

      +
    • WeaklyEqualityComparableWith +: utl +
    • +
    • WeaklyIncrementable +: utl +
    • +
    +
    +
    + + + + diff --git a/doc/html/namespacemembers_w.html b/doc/html/namespacemembers_w.html new file mode 100644 index 0000000..a225ca5 --- /dev/null +++ b/doc/html/namespacemembers_w.html @@ -0,0 +1,116 @@ + + + + + + + +uTL: Namespace Members + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    + +

    - w -

      +
    • WeaklyEqualityComparableWith +: utl +
    • +
    • WeaklyIncrementable +: utl +
    • +
    • when +: utl::meta +
    • +
    • word_t +: utl +
    • +
    +
    +
    + + + + diff --git a/doc/html/namespaceproto2.html b/doc/html/namespaceproto2.html new file mode 100644 index 0000000..77f2898 --- /dev/null +++ b/doc/html/namespaceproto2.html @@ -0,0 +1,105 @@ + + + + + + + +uTL: proto2 Namespace Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    proto2 Namespace Reference
    +
    +
    +
    +
    + + + + diff --git a/doc/html/namespaces.html b/doc/html/namespaces.html new file mode 100644 index 0000000..f4744f0 --- /dev/null +++ b/doc/html/namespaces.html @@ -0,0 +1,142 @@ + + + + + + + +uTL: Namespace List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Namespace List
    +
    +
    +
    Here is a list of all namespaces with brief descriptions:
    +
    [detail level 123]
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
     NutlSTL's core language concepts
     N_1wire_i_det
     Ncommon_impl
     Ndetail
     Ndetails
     Ni2c_i_details
     Nidx_dev_details
     Nidxdev_it_details
     Nin_dev_details
     Ninbuf_dev_details
     Nindev_it_details
     Nmeta
     Napply_impl
     Nat_impl
     Nback_impl
     Ncat_impl
     Ncount_if_impl
     Ndetail
     Nfilter_impl
     Nfind_if_impl
     Nfold_impl
     Nfront_impl
     Npop_back_impl
     Npop_front_impl
     Nreplace_if_impl
     Nrev_fold_impl
     Nreverse_impl
     Nseek_if_impl
     Ntransform_impl
     Ntransform_lazy_impl
     Nout_dev_details
     Noutdev_it_details
     NspiAbstract base class for spi bus
     Nspi_i_details
    +
    +
    +
    + + + + diff --git a/doc/html/namespaces_dup.js b/doc/html/namespaces_dup.js new file mode 100644 index 0000000..cec4bcd --- /dev/null +++ b/doc/html/namespaces_dup.js @@ -0,0 +1,4 @@ +var namespaces_dup = +[ + [ "utl", "namespaceutl.html", "namespaceutl" ] +]; \ No newline at end of file diff --git a/doc/html/namespacetest__1w.html b/doc/html/namespacetest__1w.html new file mode 100644 index 0000000..f757ee2 --- /dev/null +++ b/doc/html/namespacetest__1w.html @@ -0,0 +1,218 @@ + + + + + + + +uTL: test_1w Namespace Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    test_1w Namespace Reference
    +
    +
    + + + + + + +

    +Classes

    class  OW
     
    class  Test_1w_impl
     
    + + + + + + + +

    +Functions

     TEST_F (Test_1w_impl, TestConcept)
     
     TEST_F (Test_1w_impl, TestConstruction)
     
     TEST_F (Test_1w_impl, TestFunctionality)
     
    +

    Detailed Description

    +
    Warning
    This is not right way of testing communication interfaces. We have to implement a Mock object to simulate the slave's behavior. Until then we have the following.
    +

    Function Documentation

    + +

    ◆ TEST_F() [1/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    test_1w::TEST_F (Test_1w_impl ,
    TestConcept  
    )
    +
    + +

    Definition at line 50 of file test_1w_impl.cpp.

    + +
    +
    + +

    ◆ TEST_F() [2/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    test_1w::TEST_F (Test_1w_impl ,
    TestConstruction  
    )
    +
    + +

    Definition at line 54 of file test_1w_impl.cpp.

    + +
    +
    + +

    ◆ TEST_F() [3/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    test_1w::TEST_F (Test_1w_impl ,
    TestFunctionality  
    )
    +
    + +

    Definition at line 58 of file test_1w_impl.cpp.

    + +
    +
    +
    +
    + + + + diff --git a/doc/html/namespacetest__1w.js b/doc/html/namespacetest__1w.js new file mode 100644 index 0000000..949cd16 --- /dev/null +++ b/doc/html/namespacetest__1w.js @@ -0,0 +1,5 @@ +var namespacetest__1w = +[ + [ "OW", "classtest__1w_1_1_o_w.html", null ], + [ "Test_1w_impl", "classtest__1w_1_1_test__1w__impl.html", "classtest__1w_1_1_test__1w__impl" ] +]; \ No newline at end of file diff --git a/doc/html/namespacetest__concepts.html b/doc/html/namespacetest__concepts.html new file mode 100644 index 0000000..874a74c --- /dev/null +++ b/doc/html/namespacetest__concepts.html @@ -0,0 +1,870 @@ + + + + + + + +uTL: test_concepts Namespace Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    test_concepts Namespace Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Classes

    struct  A
     
    struct  B
     
    class  Base
     
    class  Derived1
     
    class  Derived2
     
    struct  Empty
     
    struct  HaveCopyAndMove
     
    struct  HaveOnlyCopy
     
    struct  HaveOnlyMove
     
    class  HaveOperatorBase
     
    class  HavePerfectForwarding
     
    struct  Incr
     
    struct  Inv
     
    struct  Pred
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    bool operator== (const A &l, const A &r)
     
    bool operator!= (const A &l, const A &r)
     
    bool operator== (const B &l, const B &r)
     
    bool operator!= (const B &l, const B &r)
     
    bool operator< (const B &l, const B &r)
     
    bool operator<= (const B &l, const B &r)
     
    bool operator> (const B &l, const B &r)
     
    bool operator>= (const B &l, const B &r)
     
     TEST (TConcepts, Same)
     
     TEST (TConcepts, DerivedFrom)
     
     TEST (TConcepts, ConvertibleTo)
     
     TEST (TConcepts, CommonReference)
     
     TEST (TConcepts, Integral)
     
     TEST (TConcepts, Assignable)
     
     TEST (TConcepts, Swappable)
     
     TEST (TConcepts, Constructible)
     
     TEST (TConcepts, MovableCopyable)
     
     TEST (TConcepts, Boolean)
     
     TEST (TConcepts, Comparable)
     
     TEST (TConcepts, Types)
     
     TEST (TConcepts, Callable)
     
    int type_printer (int *i)
     
     TEST (TConcepts, Iterators)
     
    +

    Function Documentation

    + +

    ◆ operator!=() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool test_concepts::operator!= (const Al,
    const Ar 
    )
    +
    + +

    Definition at line 70 of file TConcepts.cpp.

    + +
    +
    + +

    ◆ operator!=() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool test_concepts::operator!= (const Bl,
    const Br 
    )
    +
    + +

    Definition at line 82 of file TConcepts.cpp.

    + +
    +
    + +

    ◆ operator<()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool test_concepts::operator< (const Bl,
    const Br 
    )
    +
    + +

    Definition at line 83 of file TConcepts.cpp.

    + +
    +
    + +

    ◆ operator<=()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool test_concepts::operator<= (const Bl,
    const Br 
    )
    +
    + +

    Definition at line 84 of file TConcepts.cpp.

    + +
    +
    + +

    ◆ operator==() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool test_concepts::operator== (const Al,
    const Ar 
    )
    +
    + +

    Definition at line 69 of file TConcepts.cpp.

    + +
    +
    + +

    ◆ operator==() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool test_concepts::operator== (const Bl,
    const Br 
    )
    +
    + +

    Definition at line 81 of file TConcepts.cpp.

    + +
    +
    + +

    ◆ operator>()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool test_concepts::operator> (const Bl,
    const Br 
    )
    +
    + +

    Definition at line 85 of file TConcepts.cpp.

    + +
    +
    + +

    ◆ operator>=()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool test_concepts::operator>= (const Bl,
    const Br 
    )
    +
    + +

    Definition at line 86 of file TConcepts.cpp.

    + +
    +
    + +

    ◆ TEST() [1/14]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    test_concepts::TEST (TConcepts ,
    Same  
    )
    +
    + +

    Definition at line 89 of file TConcepts.cpp.

    + +
    +
    + +

    ◆ TEST() [2/14]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    test_concepts::TEST (TConcepts ,
    DerivedFrom  
    )
    +
    + +

    Definition at line 99 of file TConcepts.cpp.

    + +
    +
    + +

    ◆ TEST() [3/14]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    test_concepts::TEST (TConcepts ,
    ConvertibleTo  
    )
    +
    + +

    Definition at line 109 of file TConcepts.cpp.

    + +
    +
    + +

    ◆ TEST() [4/14]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    test_concepts::TEST (TConcepts ,
    CommonReference  
    )
    +
    + +

    Definition at line 119 of file TConcepts.cpp.

    + +
    +
    + +

    ◆ TEST() [5/14]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    test_concepts::TEST (TConcepts ,
    Integral  
    )
    +
    + +

    Definition at line 136 of file TConcepts.cpp.

    + +
    +
    + +

    ◆ TEST() [6/14]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    test_concepts::TEST (TConcepts ,
    Assignable  
    )
    +
    + +

    Definition at line 164 of file TConcepts.cpp.

    + +
    +
    + +

    ◆ TEST() [7/14]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    test_concepts::TEST (TConcepts ,
    Swappable  
    )
    +
    + +

    Definition at line 200 of file TConcepts.cpp.

    + +
    +
    + +

    ◆ TEST() [8/14]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    test_concepts::TEST (TConcepts ,
    Constructible  
    )
    +
    + +

    Definition at line 219 of file TConcepts.cpp.

    + +
    +
    + +

    ◆ TEST() [9/14]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    test_concepts::TEST (TConcepts ,
    MovableCopyable  
    )
    +
    + +

    Definition at line 258 of file TConcepts.cpp.

    + +
    +
    + +

    ◆ TEST() [10/14]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    test_concepts::TEST (TConcepts ,
    Boolean  
    )
    +
    + +

    Definition at line 280 of file TConcepts.cpp.

    + +
    +
    + +

    ◆ TEST() [11/14]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    test_concepts::TEST (TConcepts ,
    Comparable  
    )
    +
    + +

    Definition at line 291 of file TConcepts.cpp.

    + +
    +
    + +

    ◆ TEST() [12/14]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    test_concepts::TEST (TConcepts ,
    Types  
    )
    +
    + +

    Definition at line 331 of file TConcepts.cpp.

    + +
    +
    + +

    ◆ TEST() [13/14]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    test_concepts::TEST (TConcepts ,
    Callable  
    )
    +
    + +

    Definition at line 385 of file TConcepts.cpp.

    + +
    +
    + +

    ◆ TEST() [14/14]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    test_concepts::TEST (TConcepts ,
    Iterators  
    )
    +
    + +

    Definition at line 410 of file TConcepts.cpp.

    + +
    +
    + +

    ◆ type_printer()

    + +
    +
    + + + + + + + + +
    int test_concepts::type_printer (int * i)
    +
    + +

    Definition at line 409 of file TConcepts.cpp.

    + +
    +
    +
    +
    + + + + diff --git a/doc/html/namespacetest__concepts.js b/doc/html/namespacetest__concepts.js new file mode 100644 index 0000000..3c4b71d --- /dev/null +++ b/doc/html/namespacetest__concepts.js @@ -0,0 +1,17 @@ +var namespacetest__concepts = +[ + [ "A", "structtest__concepts_1_1_a.html", "structtest__concepts_1_1_a" ], + [ "B", "structtest__concepts_1_1_b.html", "structtest__concepts_1_1_b" ], + [ "Base", "classtest__concepts_1_1_base.html", null ], + [ "Derived1", "classtest__concepts_1_1_derived1.html", null ], + [ "Derived2", "classtest__concepts_1_1_derived2.html", null ], + [ "Empty", "structtest__concepts_1_1_empty.html", null ], + [ "HaveCopyAndMove", "structtest__concepts_1_1_have_copy_and_move.html", "structtest__concepts_1_1_have_copy_and_move" ], + [ "HaveOnlyCopy", "structtest__concepts_1_1_have_only_copy.html", "structtest__concepts_1_1_have_only_copy" ], + [ "HaveOnlyMove", "structtest__concepts_1_1_have_only_move.html", "structtest__concepts_1_1_have_only_move" ], + [ "HaveOperatorBase", "classtest__concepts_1_1_have_operator_base.html", "classtest__concepts_1_1_have_operator_base" ], + [ "HavePerfectForwarding", "classtest__concepts_1_1_have_perfect_forwarding.html", "classtest__concepts_1_1_have_perfect_forwarding" ], + [ "Incr", "structtest__concepts_1_1_incr.html", "structtest__concepts_1_1_incr" ], + [ "Inv", "structtest__concepts_1_1_inv.html", "structtest__concepts_1_1_inv" ], + [ "Pred", "structtest__concepts_1_1_pred.html", "structtest__concepts_1_1_pred" ] +]; \ No newline at end of file diff --git a/doc/html/namespacetest__i2c.html b/doc/html/namespacetest__i2c.html new file mode 100644 index 0000000..228479d --- /dev/null +++ b/doc/html/namespacetest__i2c.html @@ -0,0 +1,216 @@ + + + + + + + +uTL: test_i2c Namespace Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    test_i2c Namespace Reference
    +
    +
    + + + + +

    +Classes

    class  I2C
     
    + + + + + + + +

    +Functions

     TEST (Test_i2c_impl, TestConcept)
     
     TEST (Test_i2c_impl, TestConstruction)
     
     TEST (Test_i2c_impl, TestFunctionality)
     
    +

    Detailed Description

    +
    Warning
    This is not right way of testing communication interfaces. We have to implement a Mock object to simulate the slave's behavior. Until then we have the following.
    +

    Function Documentation

    + +

    ◆ TEST() [1/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    test_i2c::TEST (Test_i2c_impl ,
    TestConcept  
    )
    +
    + +

    Definition at line 56 of file test_i2c_impl.cpp.

    + +
    +
    + +

    ◆ TEST() [2/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    test_i2c::TEST (Test_i2c_impl ,
    TestConstruction  
    )
    +
    + +

    Definition at line 61 of file test_i2c_impl.cpp.

    + +
    +
    + +

    ◆ TEST() [3/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    test_i2c::TEST (Test_i2c_impl ,
    TestFunctionality  
    )
    +
    + +

    Definition at line 66 of file test_i2c_impl.cpp.

    + +
    +
    +
    +
    + + + + diff --git a/doc/html/namespacetest__i2c.js b/doc/html/namespacetest__i2c.js new file mode 100644 index 0000000..bdca502 --- /dev/null +++ b/doc/html/namespacetest__i2c.js @@ -0,0 +1,4 @@ +var namespacetest__i2c = +[ + [ "I2C", "classtest__i2c_1_1_i2_c.html", "classtest__i2c_1_1_i2_c" ] +]; \ No newline at end of file diff --git a/doc/html/namespacetest__meta.html b/doc/html/namespacetest__meta.html new file mode 100644 index 0000000..ef7a5cb --- /dev/null +++ b/doc/html/namespacetest__meta.html @@ -0,0 +1,174 @@ + + + + + + + +uTL: test_meta Namespace Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    test_meta Namespace Reference
    +
    +
    + + + + + + +

    +Classes

    struct  Ibar
     
    struct  Ifoo
     
    + + + + + +

    +Functions

    int Ifun (int i)
     
     TEST (Tinvoke, Invoke)
     
    +

    Function Documentation

    + +

    ◆ Ifun()

    + +
    +
    + + + + + + + + +
    int test_meta::Ifun (int i)
    +
    + +

    Definition at line 30 of file Tinvoke.cpp.

    + +
    +
    + +

    ◆ TEST()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    test_meta::TEST (Tinvoke ,
    Invoke  
    )
    +
    + +

    Definition at line 47 of file Tinvoke.cpp.

    + +
    +
    +
    +
    + + + + diff --git a/doc/html/namespacetest__meta.js b/doc/html/namespacetest__meta.js new file mode 100644 index 0000000..0e87283 --- /dev/null +++ b/doc/html/namespacetest__meta.js @@ -0,0 +1,5 @@ +var namespacetest__meta = +[ + [ "Ibar", "structtest__meta_1_1_ibar.html", "structtest__meta_1_1_ibar" ], + [ "Ifoo", "structtest__meta_1_1_ifoo.html", "structtest__meta_1_1_ifoo" ] +]; \ No newline at end of file diff --git a/doc/html/namespacetest__ostream__dev.html b/doc/html/namespacetest__ostream__dev.html new file mode 100644 index 0000000..553995d --- /dev/null +++ b/doc/html/namespacetest__ostream__dev.html @@ -0,0 +1,480 @@ + + + + + + + +uTL: test_ostream_dev Namespace Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    test_ostream_dev Namespace Reference
    +
    +
    + + + + + + + + + + +

    +Classes

    class  Ostream_dev_impl
     
    class  Ostream_vdev_impl
     
    class  Tostream_Idev
     
    class  Tostream_Vdev
     
    + + + +

    +Typedefs

    using test_data_t = uint8_t
     
    + + + + + + + + + + + + + + + + + +

    +Functions

     TEST_F (Tostream_Idev, Construction)
     
     TEST_F (Tostream_Idev, Api)
     
     TEST_F (Tostream_Idev, streamOperator)
     
     TEST_F (Tostream_Idev, Iterator1)
     
     TEST_F (Tostream_Idev, Iterator2)
     
     TEST_F (Tostream_Vdev, virtualApi)
     
     TEST_F (Tostream_Vdev, virtualStream)
     
     TEST_F (Tostream_Vdev, virtualIterator)
     
    + + + + + + + + + +

    +Variables

    test_data_t Idata = 42
     
    test_data_tIdataR = Idata
     
    test_data_t && IdataRR = 0xAA
     
    test_data_t Ibuffer [] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
     
    +

    Typedef Documentation

    + +

    ◆ test_data_t

    + +
    +
    + + + + +
    using test_ostream_dev::test_data_t = typedef uint8_t
    +
    + +

    Definition at line 29 of file test_ostream_dev.cpp.

    + +
    +
    +

    Function Documentation

    + +

    ◆ TEST_F() [1/8]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    test_ostream_dev::TEST_F (Tostream_Idev ,
    Construction  
    )
    +
    + +

    Definition at line 109 of file test_ostream_dev.cpp.

    + +
    +
    + +

    ◆ TEST_F() [2/8]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    test_ostream_dev::TEST_F (Tostream_Idev ,
    Api  
    )
    +
    + +

    Definition at line 113 of file test_ostream_dev.cpp.

    + +
    +
    + +

    ◆ TEST_F() [3/8]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    test_ostream_dev::TEST_F (Tostream_Idev ,
    streamOperator  
    )
    +
    + +

    Definition at line 138 of file test_ostream_dev.cpp.

    + +
    +
    + +

    ◆ TEST_F() [4/8]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    test_ostream_dev::TEST_F (Tostream_Idev ,
    Iterator1  
    )
    +
    + +

    Definition at line 169 of file test_ostream_dev.cpp.

    + +
    +
    + +

    ◆ TEST_F() [5/8]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    test_ostream_dev::TEST_F (Tostream_Idev ,
    Iterator2  
    )
    +
    + +

    Definition at line 198 of file test_ostream_dev.cpp.

    + +
    +
    + +

    ◆ TEST_F() [6/8]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    test_ostream_dev::TEST_F (Tostream_Vdev ,
    virtualApi  
    )
    +
    + +

    Definition at line 207 of file test_ostream_dev.cpp.

    + +
    +
    + +

    ◆ TEST_F() [7/8]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    test_ostream_dev::TEST_F (Tostream_Vdev ,
    virtualStream  
    )
    +
    + +

    Definition at line 221 of file test_ostream_dev.cpp.

    + +
    +
    + +

    ◆ TEST_F() [8/8]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    test_ostream_dev::TEST_F (Tostream_Vdev ,
    virtualIterator  
    )
    +
    + +

    Definition at line 246 of file test_ostream_dev.cpp.

    + +
    +
    +

    Variable Documentation

    + +

    ◆ Ibuffer

    + +
    +
    + + + + +
    test_data_t test_ostream_dev::Ibuffer[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
    +
    + +

    Definition at line 37 of file test_ostream_dev.cpp.

    + +
    +
    + +

    ◆ Idata

    + +
    +
    + + + + +
    test_data_t test_ostream_dev::Idata = 42
    +
    + +

    Definition at line 34 of file test_ostream_dev.cpp.

    + +
    +
    + +

    ◆ IdataR

    + +
    +
    + + + + +
    test_data_t& test_ostream_dev::IdataR = Idata
    +
    + +

    Definition at line 35 of file test_ostream_dev.cpp.

    + +
    +
    + +

    ◆ IdataRR

    + +
    +
    + + + + +
    test_data_t&& test_ostream_dev::IdataRR = 0xAA
    +
    + +

    Definition at line 36 of file test_ostream_dev.cpp.

    + +
    +
    +
    +
    + + + + diff --git a/doc/html/namespacetest__ostream__dev.js b/doc/html/namespacetest__ostream__dev.js new file mode 100644 index 0000000..786b93d --- /dev/null +++ b/doc/html/namespacetest__ostream__dev.js @@ -0,0 +1,7 @@ +var namespacetest__ostream__dev = +[ + [ "Ostream_dev_impl", "classtest__ostream__dev_1_1_ostream__dev__impl.html", "classtest__ostream__dev_1_1_ostream__dev__impl" ], + [ "Ostream_vdev_impl", "classtest__ostream__dev_1_1_ostream__vdev__impl.html", "classtest__ostream__dev_1_1_ostream__vdev__impl" ], + [ "Tostream_Idev", "classtest__ostream__dev_1_1_tostream___idev.html", "classtest__ostream__dev_1_1_tostream___idev" ], + [ "Tostream_Vdev", "classtest__ostream__dev_1_1_tostream___vdev.html", "classtest__ostream__dev_1_1_tostream___vdev" ] +]; \ No newline at end of file diff --git a/doc/html/namespacetest__spi.html b/doc/html/namespacetest__spi.html new file mode 100644 index 0000000..e6745e3 --- /dev/null +++ b/doc/html/namespacetest__spi.html @@ -0,0 +1,218 @@ + + + + + + + +uTL: test_spi Namespace Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    test_spi Namespace Reference
    +
    +
    + + + + + + +

    +Classes

    class  SPI
     
    class  Test_spi_impl
     
    + + + + + + + +

    +Functions

     TEST_F (Test_spi_impl, TestConcept)
     
     TEST_F (Test_spi_impl, TestConstruction)
     
     TEST_F (Test_spi_impl, TestFunctionality)
     
    +

    Detailed Description

    +
    Warning
    This is not right way of testing communication interfaces. We have to implement a Mock object to simulate the slave's behavior. Until then we have the following.
    +

    Function Documentation

    + +

    ◆ TEST_F() [1/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    test_spi::TEST_F (Test_spi_impl ,
    TestConcept  
    )
    +
    + +

    Definition at line 55 of file test_spi_impl.cpp.

    + +
    +
    + +

    ◆ TEST_F() [2/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    test_spi::TEST_F (Test_spi_impl ,
    TestConstruction  
    )
    +
    + +

    Definition at line 59 of file test_spi_impl.cpp.

    + +
    +
    + +

    ◆ TEST_F() [3/3]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    test_spi::TEST_F (Test_spi_impl ,
    TestFunctionality  
    )
    +
    + +

    Definition at line 63 of file test_spi_impl.cpp.

    + +
    +
    +
    +
    + + + + diff --git a/doc/html/namespacetest__spi.js b/doc/html/namespacetest__spi.js new file mode 100644 index 0000000..f03a215 --- /dev/null +++ b/doc/html/namespacetest__spi.js @@ -0,0 +1,5 @@ +var namespacetest__spi = +[ + [ "SPI", "classtest__spi_1_1_s_p_i.html", "classtest__spi_1_1_s_p_i" ], + [ "Test_spi_impl", "classtest__spi_1_1_test__spi__impl.html", "classtest__spi_1_1_test__spi__impl" ] +]; \ No newline at end of file diff --git a/doc/html/namespacetesting.html b/doc/html/namespacetesting.html new file mode 100644 index 0000000..bf9ad1f --- /dev/null +++ b/doc/html/namespacetesting.html @@ -0,0 +1,2114 @@ + + + + + + + +uTL: testing Namespace Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    testing Namespace Reference
    +
    +
    + + + + + + +

    +Namespaces

     internal
     
     internal2
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Classes

    class  EmptyTestEventListener
     
    class  Environment
     
    class  Message
     
    struct  PrintToStringParamName
     
    class  ScopedTrace
     
    class  Test
     
    class  TestEventListener
     
    class  TestEventListeners
     
    class  TestInfo
     
    struct  TestParamInfo
     
    class  TestProperty
     
    class  TestResult
     
    class  TestSuite
     
    class  TestWithParam
     
    class  UnitTest
     
    class  WithParamInterface
     
    + + + +

    +Typedefs

    typedef internal::TimeInMillis TimeInMillis
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

     GTEST_DEFINE_string_ (death_test_style, internal::StringFromGTestEnv("death_test_style", kDefaultDeathTestStyle), "Indicates how to run a death test in a forked child process: " "\hreadsafe\(child process re-executes the test binary " "from the beginning, running only the specific death test) or " "\ast\(child process runs the death test immediately " "after forking).")
     
     GTEST_DEFINE_bool_ (death_test_use_fork, internal::BoolFromGTestEnv("death_test_use_fork", false), "Instructs to use fork()/_exit() instead of clone() in death tests. " "Ignored and always uses fork() on POSIX systems where clone() is not " "implemented. Useful when running under valgrind or similar tools if " "those do not support clone(). Valgrind 3.3.1 will just fail if " "it sees an unsupported combination of clone() flags. " "It is not recommended to use this flag w/o valgrind though it will " "work in 99% of the cases. Once valgrind is fixed, this flag will " "most likely be removed.")
     
    std::ostream & operator<< (std::ostream &os, const TestPartResult &result)
     
    std::ostream & operator<< (std::ostream &os, const Message &sb)
     
    template<typename T >
    ::std::string PrintToString (const T &value)
     
     GTEST_DECLARE_string_ (death_test_style)
     
    template<class Container >
    internal::ParamGenerator< typename Container::value_type > ValuesIn (const Container &container)
     
    template<typename T , typename IncrementT >
    internal::ParamGenerator< T > Range (T start, T end, IncrementT step)
     
    template<typename T >
    internal::ParamGenerator< T > Range (T start, T end)
     
    template<typename ForwardIterator >
    internal::ParamGenerator< typename ::testing::internal::IteratorTraits< ForwardIterator >::value_type > ValuesIn (ForwardIterator begin, ForwardIterator end)
     
    template<typename T , size_t N>
    internal::ParamGenerator< T > ValuesIn (const T(&array)[N])
     
    template<typename... T>
    internal::ValueArray< T... > Values (T... v)
     
    internal::ParamGenerator< bool > Bool ()
     
    template<typename Generator1 , typename Generator2 >
    internal::CartesianProductHolder2< Generator1, Generator2 > Combine (const Generator1 &g1, const Generator2 &g2)
     
    template<typename Generator1 , typename Generator2 , typename Generator3 >
    internal::CartesianProductHolder3< Generator1, Generator2, Generator3 > Combine (const Generator1 &g1, const Generator2 &g2, const Generator3 &g3)
     
    template<typename Generator1 , typename Generator2 , typename Generator3 , typename Generator4 >
    internal::CartesianProductHolder4< Generator1, Generator2, Generator3, Generator4 > Combine (const Generator1 &g1, const Generator2 &g2, const Generator3 &g3, const Generator4 &g4)
     
    template<typename Generator1 , typename Generator2 , typename Generator3 , typename Generator4 , typename Generator5 >
    internal::CartesianProductHolder5< Generator1, Generator2, Generator3, Generator4, Generator5 > Combine (const Generator1 &g1, const Generator2 &g2, const Generator3 &g3, const Generator4 &g4, const Generator5 &g5)
     
    template<typename Generator1 , typename Generator2 , typename Generator3 , typename Generator4 , typename Generator5 , typename Generator6 >
    internal::CartesianProductHolder6< Generator1, Generator2, Generator3, Generator4, Generator5, Generator6 > Combine (const Generator1 &g1, const Generator2 &g2, const Generator3 &g3, const Generator4 &g4, const Generator5 &g5, const Generator6 &g6)
     
    template<typename Generator1 , typename Generator2 , typename Generator3 , typename Generator4 , typename Generator5 , typename Generator6 , typename Generator7 >
    internal::CartesianProductHolder7< Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7 > Combine (const Generator1 &g1, const Generator2 &g2, const Generator3 &g3, const Generator4 &g4, const Generator5 &g5, const Generator6 &g6, const Generator7 &g7)
     
    template<typename Generator1 , typename Generator2 , typename Generator3 , typename Generator4 , typename Generator5 , typename Generator6 , typename Generator7 , typename Generator8 >
    internal::CartesianProductHolder8< Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8 > Combine (const Generator1 &g1, const Generator2 &g2, const Generator3 &g3, const Generator4 &g4, const Generator5 &g5, const Generator6 &g6, const Generator7 &g7, const Generator8 &g8)
     
    template<typename Generator1 , typename Generator2 , typename Generator3 , typename Generator4 , typename Generator5 , typename Generator6 , typename Generator7 , typename Generator8 , typename Generator9 >
    internal::CartesianProductHolder9< Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8, Generator9 > Combine (const Generator1 &g1, const Generator2 &g2, const Generator3 &g3, const Generator4 &g4, const Generator5 &g5, const Generator6 &g6, const Generator7 &g7, const Generator8 &g8, const Generator9 &g9)
     
    template<typename Generator1 , typename Generator2 , typename Generator3 , typename Generator4 , typename Generator5 , typename Generator6 , typename Generator7 , typename Generator8 , typename Generator9 , typename Generator10 >
    internal::CartesianProductHolder10< Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8, Generator9, Generator10 > Combine (const Generator1 &g1, const Generator2 &g2, const Generator3 &g3, const Generator4 &g4, const Generator5 &g5, const Generator6 &g6, const Generator7 &g7, const Generator8 &g8, const Generator9 &g9, const Generator10 &g10)
     
    template<typename Pred , typename T1 >
    AssertionResult AssertPred1Helper (const char *pred_text, const char *e1, Pred pred, const T1 &v1)
     
    template<typename Pred , typename T1 , typename T2 >
    AssertionResult AssertPred2Helper (const char *pred_text, const char *e1, const char *e2, Pred pred, const T1 &v1, const T2 &v2)
     
    template<typename Pred , typename T1 , typename T2 , typename T3 >
    AssertionResult AssertPred3Helper (const char *pred_text, const char *e1, const char *e2, const char *e3, Pred pred, const T1 &v1, const T2 &v2, const T3 &v3)
     
    template<typename Pred , typename T1 , typename T2 , typename T3 , typename T4 >
    AssertionResult AssertPred4Helper (const char *pred_text, const char *e1, const char *e2, const char *e3, const char *e4, Pred pred, const T1 &v1, const T2 &v2, const T3 &v3, const T4 &v4)
     
    template<typename Pred , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 >
    AssertionResult AssertPred5Helper (const char *pred_text, const char *e1, const char *e2, const char *e3, const char *e4, const char *e5, Pred pred, const T1 &v1, const T2 &v2, const T3 &v3, const T4 &v4, const T5 &v5)
     
    EnvironmentAddGlobalTestEnvironment (Environment *env)
     
    GTEST_API_ void InitGoogleTest (int *argc, char **argv)
     
    GTEST_API_ void InitGoogleTest (int *argc, wchar_t **argv)
     
    GTEST_API_ AssertionResult IsSubstring (const char *needle_expr, const char *haystack_expr, const char *needle, const char *haystack)
     
    GTEST_API_ AssertionResult IsSubstring (const char *needle_expr, const char *haystack_expr, const wchar_t *needle, const wchar_t *haystack)
     
    GTEST_API_ AssertionResult IsNotSubstring (const char *needle_expr, const char *haystack_expr, const char *needle, const char *haystack)
     
    GTEST_API_ AssertionResult IsNotSubstring (const char *needle_expr, const char *haystack_expr, const wchar_t *needle, const wchar_t *haystack)
     
    GTEST_API_ AssertionResult IsSubstring (const char *needle_expr, const char *haystack_expr, const ::std::string &needle, const ::std::string &haystack)
     
    GTEST_API_ AssertionResult IsNotSubstring (const char *needle_expr, const char *haystack_expr, const ::std::string &needle, const ::std::string &haystack)
     
    GTEST_API_ AssertionResult IsSubstring (const char *needle_expr, const char *haystack_expr, const ::std::wstring &needle, const ::std::wstring &haystack)
     
    GTEST_API_ AssertionResult IsNotSubstring (const char *needle_expr, const char *haystack_expr, const ::std::wstring &needle, const ::std::wstring &haystack)
     
    GTEST_API_ AssertionResult FloatLE (const char *expr1, const char *expr2, float val1, float val2)
     
    GTEST_API_ AssertionResult DoubleLE (const char *expr1, const char *expr2, double val1, double val2)
     
    template<typename T1 , typename T2 >
    bool StaticAssertTypeEq ()
     
    GTEST_API_ std::string TempDir ()
     
    template<int &... ExplicitParameterBarrier, typename Factory >
    TestInfoRegisterTest (const char *test_suite_name, const char *test_name, const char *type_param, const char *value_param, const char *file, int line, Factory factory)
     
    + + + +

    +Variables

    class GTEST_API_ testing::ScopedTrace GTEST_ATTRIBUTE_UNUSED_
     
    +

    Typedef Documentation

    + +

    ◆ TimeInMillis

    + +
    +
    + +

    Definition at line 15127 of file gtest.h.

    + +
    +
    +

    Function Documentation

    + +

    ◆ AddGlobalTestEnvironment()

    + +
    +
    + + + + + +
    + + + + + + + + +
    Environment* testing::AddGlobalTestEnvironment (Environmentenv)
    +
    +inline
    +
    + +

    Definition at line 16067 of file gtest.h.

    + +
    +
    + +

    ◆ AssertPred1Helper()

    + +
    +
    +
    +template<typename Pred , typename T1 >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    AssertionResult testing::AssertPred1Helper (const char * pred_text,
    const char * e1,
    Pred pred,
    const T1 & v1 
    )
    +
    + +

    Definition at line 14715 of file gtest.h.

    + +
    +
    + +

    ◆ AssertPred2Helper()

    + +
    +
    +
    +template<typename Pred , typename T1 , typename T2 >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    AssertionResult testing::AssertPred2Helper (const char * pred_text,
    const char * e1,
    const char * e2,
    Pred pred,
    const T1 & v1,
    const T2 & v2 
    )
    +
    + +

    Definition at line 14758 of file gtest.h.

    + +
    +
    + +

    ◆ AssertPred3Helper()

    + +
    +
    +
    +template<typename Pred , typename T1 , typename T2 , typename T3 >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    AssertionResult testing::AssertPred3Helper (const char * pred_text,
    const char * e1,
    const char * e2,
    const char * e3,
    Pred pred,
    const T1 & v1,
    const T2 & v2,
    const T3 & v3 
    )
    +
    + +

    Definition at line 14808 of file gtest.h.

    + +
    +
    + +

    ◆ AssertPred4Helper()

    + +
    +
    +
    +template<typename Pred , typename T1 , typename T2 , typename T3 , typename T4 >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    AssertionResult testing::AssertPred4Helper (const char * pred_text,
    const char * e1,
    const char * e2,
    const char * e3,
    const char * e4,
    Pred pred,
    const T1 & v1,
    const T2 & v2,
    const T3 & v3,
    const T4 & v4 
    )
    +
    + +

    Definition at line 14864 of file gtest.h.

    + +
    +
    + +

    ◆ AssertPred5Helper()

    + +
    +
    +
    +template<typename Pred , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    AssertionResult testing::AssertPred5Helper (const char * pred_text,
    const char * e1,
    const char * e2,
    const char * e3,
    const char * e4,
    const char * e5,
    Pred pred,
    const T1 & v1,
    const T2 & v2,
    const T3 & v3,
    const T4 & v4,
    const T5 & v5 
    )
    +
    + +

    Definition at line 14926 of file gtest.h.

    + +
    +
    + +

    ◆ Bool()

    + +
    +
    + + + + + +
    + + + + + + + +
    internal::ParamGenerator<bool> testing::Bool ()
    +
    +inline
    +
    + +

    Definition at line 13520 of file gtest.h.

    + +
    +
    + +

    ◆ Combine() [1/9]

    + +
    +
    +
    +template<typename Generator1 , typename Generator2 >
    + + + + + + + + + + + + + + + + + + +
    internal::CartesianProductHolder2<Generator1, Generator2> testing::Combine (const Generator1 & g1,
    const Generator2 & g2 
    )
    +
    + +

    Definition at line 13571 of file gtest.h.

    + +
    +
    + +

    ◆ Combine() [2/9]

    + +
    +
    +
    +template<typename Generator1 , typename Generator2 , typename Generator3 >
    + + + + + + + + + + + + + + + + + + + + + + + + +
    internal::CartesianProductHolder3<Generator1, Generator2, Generator3> testing::Combine (const Generator1 & g1,
    const Generator2 & g2,
    const Generator3 & g3 
    )
    +
    + +

    Definition at line 13578 of file gtest.h.

    + +
    +
    + +

    ◆ Combine() [3/9]

    + +
    +
    +
    +template<typename Generator1 , typename Generator2 , typename Generator3 , typename Generator4 >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    internal::CartesianProductHolder4<Generator1, Generator2, Generator3, Generator4> testing::Combine (const Generator1 & g1,
    const Generator2 & g2,
    const Generator3 & g3,
    const Generator4 & g4 
    )
    +
    + +

    Definition at line 13587 of file gtest.h.

    + +
    +
    + +

    ◆ Combine() [4/9]

    + +
    +
    +
    +template<typename Generator1 , typename Generator2 , typename Generator3 , typename Generator4 , typename Generator5 >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    internal::CartesianProductHolder5<Generator1, Generator2, Generator3, Generator4, Generator5> testing::Combine (const Generator1 & g1,
    const Generator2 & g2,
    const Generator3 & g3,
    const Generator4 & g4,
    const Generator5 & g5 
    )
    +
    + +

    Definition at line 13598 of file gtest.h.

    + +
    +
    + +

    ◆ Combine() [5/9]

    + +
    +
    +
    +template<typename Generator1 , typename Generator2 , typename Generator3 , typename Generator4 , typename Generator5 , typename Generator6 >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    internal::CartesianProductHolder6<Generator1, Generator2, Generator3, Generator4, Generator5, Generator6> testing::Combine (const Generator1 & g1,
    const Generator2 & g2,
    const Generator3 & g3,
    const Generator4 & g4,
    const Generator5 & g5,
    const Generator6 & g6 
    )
    +
    + +

    Definition at line 13609 of file gtest.h.

    + +
    +
    + +

    ◆ Combine() [6/9]

    + +
    +
    +
    +template<typename Generator1 , typename Generator2 , typename Generator3 , typename Generator4 , typename Generator5 , typename Generator6 , typename Generator7 >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    internal::CartesianProductHolder7<Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7> testing::Combine (const Generator1 & g1,
    const Generator2 & g2,
    const Generator3 & g3,
    const Generator4 & g4,
    const Generator5 & g5,
    const Generator6 & g6,
    const Generator7 & g7 
    )
    +
    + +

    Definition at line 13621 of file gtest.h.

    + +
    +
    + +

    ◆ Combine() [7/9]

    + +
    +
    +
    +template<typename Generator1 , typename Generator2 , typename Generator3 , typename Generator4 , typename Generator5 , typename Generator6 , typename Generator7 , typename Generator8 >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    internal::CartesianProductHolder8<Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8> testing::Combine (const Generator1 & g1,
    const Generator2 & g2,
    const Generator3 & g3,
    const Generator4 & g4,
    const Generator5 & g5,
    const Generator6 & g6,
    const Generator7 & g7,
    const Generator8 & g8 
    )
    +
    + +

    Definition at line 13634 of file gtest.h.

    + +
    +
    + +

    ◆ Combine() [8/9]

    + +
    +
    +
    +template<typename Generator1 , typename Generator2 , typename Generator3 , typename Generator4 , typename Generator5 , typename Generator6 , typename Generator7 , typename Generator8 , typename Generator9 >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    internal::CartesianProductHolder9<Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8, Generator9> testing::Combine (const Generator1 & g1,
    const Generator2 & g2,
    const Generator3 & g3,
    const Generator4 & g4,
    const Generator5 & g5,
    const Generator6 & g6,
    const Generator7 & g7,
    const Generator8 & g8,
    const Generator9 & g9 
    )
    +
    + +

    Definition at line 13648 of file gtest.h.

    + +
    +
    + +

    ◆ Combine() [9/9]

    + +
    +
    +
    +template<typename Generator1 , typename Generator2 , typename Generator3 , typename Generator4 , typename Generator5 , typename Generator6 , typename Generator7 , typename Generator8 , typename Generator9 , typename Generator10 >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    internal::CartesianProductHolder10<Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8, Generator9, Generator10> testing::Combine (const Generator1 & g1,
    const Generator2 & g2,
    const Generator3 & g3,
    const Generator4 & g4,
    const Generator5 & g5,
    const Generator6 & g6,
    const Generator7 & g7,
    const Generator8 & g8,
    const Generator9 & g9,
    const Generator10 & g10 
    )
    +
    + +

    Definition at line 13663 of file gtest.h.

    + +
    +
    + +

    ◆ DoubleLE()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    GTEST_API_ AssertionResult testing::DoubleLE (const char * expr1,
    const char * expr2,
    double val1,
    double val2 
    )
    +
    + +
    +
    + +

    ◆ FloatLE()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    GTEST_API_ AssertionResult testing::FloatLE (const char * expr1,
    const char * expr2,
    float val1,
    float val2 
    )
    +
    + +
    +
    + +

    ◆ GTEST_DECLARE_string_()

    + +
    +
    + + + + + + + + +
    testing::GTEST_DECLARE_string_ (death_test_style )
    +
    + +
    +
    + +

    ◆ GTEST_DEFINE_bool_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    testing::GTEST_DEFINE_bool_ (death_test_use_fork ,
    internal::BoolFromGTestEnv("death_test_use_fork", false) ,
    "Instructs to use fork()/_exit() instead of clone() in death tests. " "Ignored and always uses fork() on POSIX systems where clone() is not " "implemented. Useful when running under valgrind or similar tools if " "those do not support clone(). Valgrind 3.3.1 will just fail if " "it sees an unsupported combination of clone() flags. " "It is not recommended to use this flag w/o valgrind though it will " "work in 99% of the cases. Once valgrind is fixed,
    this flag will " "most likely be removed."  
    )
    +
    + +
    +
    + +

    ◆ GTEST_DEFINE_string_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    testing::GTEST_DEFINE_string_ (death_test_style ,
    internal::StringFromGTestEnv("death_test_style", kDefaultDeathTestStyle) ,
    "Indicates how to run a death test in a forked child process: " "\eadsafe\hild process re-executes the test binary " "from the beginning, running only the specific death test) or " "\t\hild process runs the death test immediately " "after forking)."  
    )
    +
    + +
    +
    + +

    ◆ InitGoogleTest() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    GTEST_API_ void testing::InitGoogleTest (int * argc,
    char ** argv 
    )
    +
    + +
    +
    + +

    ◆ InitGoogleTest() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    GTEST_API_ void testing::InitGoogleTest (int * argc,
    wchar_t ** argv 
    )
    +
    + +
    +
    + +

    ◆ IsNotSubstring() [1/4]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    GTEST_API_ AssertionResult testing::IsNotSubstring (const char * needle_expr,
    const char * haystack_expr,
    const char * needle,
    const char * haystack 
    )
    +
    + +
    +
    + +

    ◆ IsNotSubstring() [2/4]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    GTEST_API_ AssertionResult testing::IsNotSubstring (const char * needle_expr,
    const char * haystack_expr,
    const wchar_t * needle,
    const wchar_t * haystack 
    )
    +
    + +
    +
    + +

    ◆ IsNotSubstring() [3/4]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    GTEST_API_ AssertionResult testing::IsNotSubstring (const char * needle_expr,
    const char * haystack_expr,
    const ::std::string & needle,
    const ::std::string & haystack 
    )
    +
    + +
    +
    + +

    ◆ IsNotSubstring() [4/4]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    GTEST_API_ AssertionResult testing::IsNotSubstring (const char * needle_expr,
    const char * haystack_expr,
    const ::std::wstring & needle,
    const ::std::wstring & haystack 
    )
    +
    + +
    +
    + +

    ◆ IsSubstring() [1/4]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    GTEST_API_ AssertionResult testing::IsSubstring (const char * needle_expr,
    const char * haystack_expr,
    const char * needle,
    const char * haystack 
    )
    +
    + +
    +
    + +

    ◆ IsSubstring() [2/4]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    GTEST_API_ AssertionResult testing::IsSubstring (const char * needle_expr,
    const char * haystack_expr,
    const wchar_t * needle,
    const wchar_t * haystack 
    )
    +
    + +
    +
    + +

    ◆ IsSubstring() [3/4]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    GTEST_API_ AssertionResult testing::IsSubstring (const char * needle_expr,
    const char * haystack_expr,
    const ::std::string & needle,
    const ::std::string & haystack 
    )
    +
    + +
    +
    + +

    ◆ IsSubstring() [4/4]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    GTEST_API_ AssertionResult testing::IsSubstring (const char * needle_expr,
    const char * haystack_expr,
    const ::std::wstring & needle,
    const ::std::wstring & haystack 
    )
    +
    + +
    +
    + +

    ◆ operator<<() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    std::ostream& testing::operator<< (std::ostream & os,
    const Messagesb 
    )
    +
    +inline
    +
    + +

    Definition at line 2758 of file gtest.h.

    + +
    +
    + +

    ◆ operator<<() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    std::ostream& testing::operator<< (std::ostream & os,
    const TestPartResult & result 
    )
    +
    + +

    Definition at line 11501 of file gtest-all.cc.

    + +
    +
    + +

    ◆ PrintToString()

    + +
    +
    +
    +template<typename T >
    + + + + + + + + +
    ::std::string testing::PrintToString (const T & value)
    +
    + +

    Definition at line 8969 of file gtest.h.

    + +
    +
    + +

    ◆ Range() [1/2]

    + +
    +
    +
    +template<typename T , typename IncrementT >
    + + + + + + + + + + + + + + + + + + + + + + + + +
    internal::ParamGenerator<T> testing::Range (start,
    end,
    IncrementT step 
    )
    +
    + +

    Definition at line 13389 of file gtest.h.

    + +
    +
    + +

    ◆ Range() [2/2]

    + +
    +
    +
    +template<typename T >
    + + + + + + + + + + + + + + + + + + +
    internal::ParamGenerator<T> testing::Range (start,
    end 
    )
    +
    + +

    Definition at line 13395 of file gtest.h.

    + +
    +
    + +

    ◆ RegisterTest()

    + +
    +
    +
    +template<int &... ExplicitParameterBarrier, typename Factory >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    TestInfo* testing::RegisterTest (const char * test_suite_name,
    const char * test_name,
    const char * type_param,
    const char * value_param,
    const char * file,
    int line,
    Factory factory 
    )
    +
    + +

    Definition at line 17063 of file gtest.h.

    + +
    +
    + +

    ◆ StaticAssertTypeEq()

    + +
    +
    +
    +template<typename T1 , typename T2 >
    + + + + + + + +
    bool testing::StaticAssertTypeEq ()
    +
    + +

    Definition at line 16927 of file gtest.h.

    + +
    +
    + +

    ◆ TempDir()

    + +
    +
    + + + + + + + +
    GTEST_API_ std::string testing::TempDir ()
    +
    + +
    +
    + +

    ◆ Values()

    + +
    +
    +
    +template<typename... T>
    + + + + + + + + +
    internal::ValueArray<T...> testing::Values (T... v)
    +
    + +

    Definition at line 13496 of file gtest.h.

    + +
    +
    + +

    ◆ ValuesIn() [1/3]

    + +
    +
    +
    +template<class Container >
    + + + + + + + + +
    internal::ParamGenerator< typename Container::value_type > testing::ValuesIn (const Container & container)
    +
    + +

    Definition at line 13470 of file gtest.h.

    + +
    +
    + +

    ◆ ValuesIn() [2/3]

    + +
    +
    +
    +template<typename ForwardIterator >
    + + + + + + + + + + + + + + + + + + +
    internal::ParamGenerator< typename ::testing::internal::IteratorTraits<ForwardIterator>::value_type> testing::ValuesIn (ForwardIterator begin,
    ForwardIterator end 
    )
    +
    + +

    Definition at line 13457 of file gtest.h.

    + +
    +
    + +

    ◆ ValuesIn() [3/3]

    + +
    +
    +
    +template<typename T , size_t N>
    + + + + + + + + +
    internal::ParamGenerator<T> testing::ValuesIn (const T(&) array[N])
    +
    + +

    Definition at line 13465 of file gtest.h.

    + +
    +
    +

    Variable Documentation

    + +

    ◆ GTEST_ATTRIBUTE_UNUSED_

    + +
    +
    + + + + +
    class GTEST_API_ testing::ScopedTrace testing::GTEST_ATTRIBUTE_UNUSED_
    +
    + +
    +
    +
    +
    + + + + diff --git a/doc/html/namespacetesting.js b/doc/html/namespacetesting.js new file mode 100644 index 0000000..eb09321 --- /dev/null +++ b/doc/html/namespacetesting.js @@ -0,0 +1,21 @@ +var namespacetesting = +[ + [ "internal", "namespacetesting_1_1internal.html", "namespacetesting_1_1internal" ], + [ "internal2", "namespacetesting_1_1internal2.html", "namespacetesting_1_1internal2" ], + [ "EmptyTestEventListener", "classtesting_1_1_empty_test_event_listener.html", "classtesting_1_1_empty_test_event_listener" ], + [ "Environment", "classtesting_1_1_environment.html", "classtesting_1_1_environment" ], + [ "Message", "classtesting_1_1_message.html", "classtesting_1_1_message" ], + [ "PrintToStringParamName", "structtesting_1_1_print_to_string_param_name.html", "structtesting_1_1_print_to_string_param_name" ], + [ "ScopedTrace", "classtesting_1_1_scoped_trace.html", "classtesting_1_1_scoped_trace" ], + [ "Test", "classtesting_1_1_test.html", "classtesting_1_1_test" ], + [ "TestEventListener", "classtesting_1_1_test_event_listener.html", "classtesting_1_1_test_event_listener" ], + [ "TestEventListeners", "classtesting_1_1_test_event_listeners.html", "classtesting_1_1_test_event_listeners" ], + [ "TestInfo", "classtesting_1_1_test_info.html", "classtesting_1_1_test_info" ], + [ "TestParamInfo", "structtesting_1_1_test_param_info.html", "structtesting_1_1_test_param_info" ], + [ "TestProperty", "classtesting_1_1_test_property.html", "classtesting_1_1_test_property" ], + [ "TestResult", "classtesting_1_1_test_result.html", "classtesting_1_1_test_result" ], + [ "TestSuite", "classtesting_1_1_test_suite.html", "classtesting_1_1_test_suite" ], + [ "TestWithParam", "classtesting_1_1_test_with_param.html", null ], + [ "UnitTest", "classtesting_1_1_unit_test.html", "classtesting_1_1_unit_test" ], + [ "WithParamInterface", "classtesting_1_1_with_param_interface.html", "classtesting_1_1_with_param_interface" ] +]; \ No newline at end of file diff --git a/doc/html/namespacetesting_1_1internal.html b/doc/html/namespacetesting_1_1internal.html new file mode 100644 index 0000000..4aac38e --- /dev/null +++ b/doc/html/namespacetesting_1_1internal.html @@ -0,0 +1,5471 @@ + + + + + + + +uTL: testing::internal Namespace Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    testing::internal Namespace Reference
    +
    +
    + + + + + + +

    +Namespaces

     edit_distance
     
     posix
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Classes

    struct  AddReference
     
    struct  AddReference< T & >
     
    class  AssertHelper
     
    struct  bool_constant
     
    class  CapturedStream
     
    class  CartesianProductGenerator10
     
    class  CartesianProductGenerator2
     
    class  CartesianProductGenerator3
     
    class  CartesianProductGenerator4
     
    class  CartesianProductGenerator5
     
    class  CartesianProductGenerator6
     
    class  CartesianProductGenerator7
     
    class  CartesianProductGenerator8
     
    class  CartesianProductGenerator9
     
    class  CartesianProductHolder10
     
    class  CartesianProductHolder2
     
    class  CartesianProductHolder3
     
    class  CartesianProductHolder4
     
    class  CartesianProductHolder5
     
    class  CartesianProductHolder6
     
    class  CartesianProductHolder7
     
    class  CartesianProductHolder8
     
    class  CartesianProductHolder9
     
    struct  CodeLocation
     
    struct  CompileAssertTypesEqual
     
    struct  CompileAssertTypesEqual< T, T >
     
    struct  ConstCharPtr
     
    struct  ConstRef
     
    struct  ConstRef< T & >
     
    struct  DoubleSequence
     
    struct  DoubleSequence< false, IndexSequence< I... >, sizeofT >
     
    struct  DoubleSequence< true, IndexSequence< I... >, sizeofT >
     
    struct  ElemFromList
     
    struct  ElemFromList< N, IndexSequence< I... >, T... >
     
    struct  ElemFromListImpl
     
    struct  ElemFromListImpl< T, I, I >
     
    struct  EnableIf
     
    struct  EnableIf< true >
     
    class  EqHelper
     
    class  EqHelper< true >
     
    struct  faketype
     
    class  FlatTuple
     
    struct  FlatTupleBase
     
    struct  FlatTupleBase< FlatTuple< T... >, IndexSequence< Idx... > >
     
    struct  FlatTupleElemBase
     
    struct  FlatTupleElemBase< FlatTuple< T... >, I >
     
    class  FloatingPoint
     
    class  FormatForComparison
     
    class  FormatForComparison< ToPrint[N], OtherOperand >
     
    class  GTestLog
     
    class  GTestMutexLock
     
    class  IgnoredValue
     
    class  ImplicitlyConvertible
     
    struct  IndexSequence
     
    struct  is_same
     
    struct  is_same< T, T >
     
    struct  IsAProtocolMessage
     
    struct  IsHashTable
     
    struct  IsRecursiveContainer
     
    struct  IsRecursiveContainerImpl
     
    struct  IsRecursiveContainerImpl< C, false >
     
    struct  IsRecursiveContainerImpl< C, true >
     
    struct  IsSame
     
    struct  IsSame< T, T >
     
    struct  IteratorTraits
     
    struct  IteratorTraits< const T * >
     
    struct  IteratorTraits< T * >
     
    struct  MakeIndexSequence
     
    struct  MakeIndexSequence< 0 >
     
    class  Mutex
     
    class  NativeArray
     
    class  ParameterizedTestFactory
     
    class  ParameterizedTestSuiteInfo
     
    class  ParameterizedTestSuiteInfoBase
     
    class  ParameterizedTestSuiteRegistry
     
    class  ParamGenerator
     
    class  ParamGeneratorInterface
     
    class  ParamIterator
     
    class  ParamIteratorInterface
     
    struct  ParamNameGenFunc
     
    class  Random
     
    class  RangeGenerator
     
    class  RE
     
    struct  RelationToSourceCopy
     
    struct  RelationToSourceReference
     
    struct  RemoveConst
     
    struct  RemoveConst< const T >
     
    struct  RemoveConst< const T[N]>
     
    struct  RemoveReference
     
    struct  RemoveReference< T & >
     
    struct  StaticAssertTypeEqHelper
     
    struct  StaticAssertTypeEqHelper< T, T >
     
    struct  SuiteApiResolver
     
    class  TestFactoryBase
     
    class  TestFactoryImpl
     
    class  TestMetaFactory
     
    class  TestMetaFactoryBase
     
    class  ThreadLocal
     
    class  TypeIdHelper
     
    class  TypeWithSize
     
    class  TypeWithSize< 4 >
     
    class  TypeWithSize< 8 >
     
    class  UniversalPrinter
     
    class  UniversalPrinter< T & >
     
    class  UniversalPrinter< T[N]>
     
    class  UniversalTersePrinter
     
    class  UniversalTersePrinter< char * >
     
    class  UniversalTersePrinter< const char * >
     
    class  UniversalTersePrinter< const wchar_t * >
     
    class  UniversalTersePrinter< T & >
     
    class  UniversalTersePrinter< T[N]>
     
    class  UniversalTersePrinter< wchar_t * >
     
    class  ValueArray
     
    class  ValuesInIteratorRangeGenerator
     
    struct  WrapPrinterType
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Typedefs

    typedef ::std::string string
     
    typedef ::std::wstring wstring
     
    typedef GTestMutexLock MutexLock
     
    typedef bool_constant< false > false_type
     
    typedef bool_constant< true > true_type
     
    typedef long long BiggestInt
     
    typedef TypeWithSize< 4 >::Int Int32
     
    typedef TypeWithSize< 4 >::UInt UInt32
     
    typedef TypeWithSize< 8 >::Int Int64
     
    typedef TypeWithSize< 8 >::UInt UInt64
     
    typedef TypeWithSize< 8 >::Int TimeInMillis
     
    typedef FloatingPoint< float > Float
     
    typedef FloatingPoint< double > Double
     
    typedef const void * TypeId
     
    using SetUpTestSuiteFunc = void(*)()
     
    using TearDownTestSuiteFunc = void(*)()
     
    using SetUpTearDownSuiteFuncType = void(*)()
     
    typedef int IsContainer
     
    typedef char IsNotContainer
     
    typedef ::std::vector< ::std::string > Strings
     
    template<class TestCase >
    using ParameterizedTestCaseInfo = ParameterizedTestSuiteInfo< TestCase >
     
    + + + + + + + + + +

    +Enumerations

    enum  CharFormat { kAsIs, +kHexEscape, +kSpecialEscape + }
     
    enum  GTestLogSeverity { GTEST_INFO, +GTEST_WARNING, +GTEST_ERROR, +GTEST_FATAL + }
     
    enum  DefaultPrinterType { kPrintContainer, +kPrintPointer, +kPrintFunctionPointer, +kPrintOther + }
     
    enum  GTestColor { COLOR_DEFAULT, +COLOR_RED, +COLOR_GREEN, +COLOR_YELLOW + }
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

     GTEST_DEFINE_string_ (internal_run_death_test, "", "Indicates the file, line number, temporal index of " "the single death test to run, and a file descriptor to " "which a success code may be sent, all separated by " "the '|' characters. This flag is specified if and only if the current " "process is a sub-process launched for running a thread-safe " "death test. FOR INTERNAL USE ONLY.")
     
    size_t GetThreadCount ()
     
    GTEST_API_ ::std::string FormatFileLocation (const char *file, int line)
     
    GTEST_API_ ::std::string FormatCompilerIndependentFileLocation (const char *file, int line)
     
    void CaptureStdout ()
     
    void CaptureStderr ()
     
    std::string GetCapturedStdout ()
     
    std::string GetCapturedStderr ()
     
    size_t GetFileSize (FILE *file)
     
    std::string ReadEntireFile (FILE *file)
     
    bool ParseInt32 (const Message &src_text, const char *str, Int32 *value)
     
    bool BoolFromGTestEnv (const char *flag, bool default_value)
     
    Int32 Int32FromGTestEnv (const char *flag, Int32 default_value)
     
    std::string OutputFlagAlsoCheckEnvVar ()
     
    const char * StringFromGTestEnv (const char *flag, const char *default_value)
     
    bool IsPrintableAscii (wchar_t c)
     
    template<typename UnsignedChar , typename Char >
    void PrintCharAndCodeTo (Char c, ostream *os)
     
    void PrintTo (unsigned char c, ::std::ostream *os)
     
    void PrintTo (signed char c, ::std::ostream *os)
     
    void PrintTo (wchar_t wc, ostream *os)
     
    void UniversalPrintArray (const char *begin, size_t len, ostream *os)
     
    void UniversalPrintArray (const wchar_t *begin, size_t len, ostream *os)
     
    void PrintTo (const char *s, ostream *os)
     
    void PrintTo (const wchar_t *s, ostream *os)
     
    void PrintStringTo (const ::std::string &s, ostream *os)
     
    void PrintWideStringTo (const ::std::wstring &s, ostream *os)
     
    GTEST_API_ bool IsTrue (bool condition)
     
    void LogToStderr ()
     
    void FlushInfoLog ()
     
    template<typename To >
    To ImplicitCast_ (To x)
     
    template<typename To , typename From >
    To DownCast_ (From *f)
     
    template<class Derived , class Base >
    Derived * CheckedDowncastToActualType (Base *base)
     
    GTEST_API_ std::vector< std::string > GetArgvs ()
     
    bool IsAlpha (char ch)
     
    bool IsAlNum (char ch)
     
    bool IsDigit (char ch)
     
    bool IsLower (char ch)
     
    bool IsSpace (char ch)
     
    bool IsUpper (char ch)
     
    bool IsXDigit (char ch)
     
    bool IsXDigit (wchar_t ch)
     
    char ToLower (char ch)
     
    char ToUpper (char ch)
     
    std::string StripTrailingSpaces (std::string str)
     
    template<typename T >
    std::string StreamableToString (const T &streamable)
     
    std::true_type IsNullLiteralHelper (Secret *)
     
    std::false_type IsNullLiteralHelper (IgnoredValue)
     
    GTEST_API_ std::string AppendUserMessage (const std::string &gtest_msg, const Message &user_msg)
     
    GTEST_API_ std::string DiffStrings (const std::string &left, const std::string &right, size_t *total_line_count)
     
    GTEST_API_ AssertionResult EqFailure (const char *expected_expression, const char *actual_expression, const std::string &expected_value, const std::string &actual_value, bool ignoring_case)
     
    GTEST_API_ std::string GetBoolAssertionFailureMessage (const AssertionResult &assertion_result, const char *expression_text, const char *actual_predicate_value, const char *expected_predicate_value)
     
    template<typename T >
    TypeId GetTypeId ()
     
    GTEST_API_ TypeId GetTestTypeId ()
     
    SetUpTearDownSuiteFuncType GetNotDefaultOrNull (SetUpTearDownSuiteFuncType a, SetUpTearDownSuiteFuncType def)
     
    GTEST_API_ TestInfoMakeAndRegisterTestInfo (const char *test_suite_name, const char *name, const char *type_param, const char *value_param, CodeLocation code_location, TypeId fixture_class_id, SetUpTestSuiteFunc set_up_tc, TearDownTestSuiteFunc tear_down_tc, TestFactoryBase *factory)
     
    GTEST_API_ bool SkipPrefix (const char *prefix, const char **pstr)
     
    GTEST_API_ std::string GetCurrentOsStackTraceExceptTop (UnitTest *unit_test, int skip_count)
     
    GTEST_API_ bool AlwaysTrue ()
     
    bool AlwaysFalse ()
     
    template<class C , class Iterator = decltype(::std::declval<const C&>().begin()), class = decltype(::std::declval<const C&>().end()), class = decltype(++::std::declval<Iterator&>()), class = decltype(*::std::declval<Iterator>()), class = typename C::const_iterator>
    IsContainer IsContainerTest (int)
     
    template<class C >
    IsNotContainer IsContainerTest (long)
     
    template<typename T , typename U >
    bool ArrayEq (const T *lhs, size_t size, const U *rhs)
     
    template<typename T , typename U >
    bool ArrayEq (const T &lhs, const U &rhs)
     
    template<typename T , typename U , size_t N>
    bool ArrayEq (const T(&lhs)[N], const U(&rhs)[N])
     
    template<typename Iter , typename Element >
    Iter ArrayAwareFind (Iter begin, Iter end, const Element &elem)
     
    template<typename T , typename U >
    void CopyArray (const T *from, size_t size, U *to)
     
    template<typename T , typename U >
    void CopyArray (const T &from, U *to)
     
    template<typename T , typename U , size_t N>
    void CopyArray (const T(&from)[N], U(*to)[N])
     
     GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_ (char)
     
     GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_ (wchar_t)
     
     GTEST_IMPL_FORMAT_C_STRING_AS_STRING_ (char, ::std::string)
     
     GTEST_IMPL_FORMAT_C_STRING_AS_STRING_ (wchar_t, ::std::wstring)
     
    template<typename T1 , typename T2 >
    std::string FormatForComparisonFailureMessage (const T1 &value, const T2 &)
     
    template<typename T >
    void UniversalPrint (const T &value, ::std::ostream *os)
     
    template<typename C >
    void DefaultPrintTo (WrapPrinterType< kPrintContainer >, const C &container, ::std::ostream *os)
     
    template<typename T >
    void DefaultPrintTo (WrapPrinterType< kPrintPointer >, T *p, ::std::ostream *os)
     
    template<typename T >
    void DefaultPrintTo (WrapPrinterType< kPrintFunctionPointer >, T *p, ::std::ostream *os)
     
    template<typename T >
    void DefaultPrintTo (WrapPrinterType< kPrintOther >, const T &value, ::std::ostream *os)
     
    template<typename T >
    void PrintTo (const T &value, ::std::ostream *os)
     
    void PrintTo (char c, ::std::ostream *os)
     
    void PrintTo (bool x, ::std::ostream *os)
     
    GTEST_API_ void PrintTo (wchar_t wc, ::std::ostream *os)
     
    GTEST_API_ void PrintTo (const char *s, ::std::ostream *os)
     
    void PrintTo (char *s, ::std::ostream *os)
     
    void PrintTo (const signed char *s, ::std::ostream *os)
     
    void PrintTo (signed char *s, ::std::ostream *os)
     
    void PrintTo (const unsigned char *s, ::std::ostream *os)
     
    void PrintTo (unsigned char *s, ::std::ostream *os)
     
    GTEST_API_ void PrintTo (const wchar_t *s, ::std::ostream *os)
     
    void PrintTo (wchar_t *s, ::std::ostream *os)
     
    template<typename T >
    void PrintRawArrayTo (const T a[], size_t count, ::std::ostream *os)
     
    GTEST_API_ void PrintStringTo (const ::std::string &s, ::std::ostream *os)
     
    void PrintTo (const ::std::string &s, ::std::ostream *os)
     
    GTEST_API_ void PrintWideStringTo (const ::std::wstring &s, ::std::ostream *os)
     
    void PrintTo (const ::std::wstring &s, ::std::ostream *os)
     
    void PrintTo (std::nullptr_t, ::std::ostream *os)
     
    template<typename T >
    void PrintTo (std::reference_wrapper< T > ref, ::std::ostream *os)
     
    template<typename T >
    void PrintTupleTo (const T &, std::integral_constant< size_t, 0 >, ::std::ostream *)
     
    template<typename T , size_t I>
    void PrintTupleTo (const T &t, std::integral_constant< size_t, I >, ::std::ostream *os)
     
    template<typename... Types>
    void PrintTo (const ::std::tuple< Types... > &t, ::std::ostream *os)
     
    template<typename T1 , typename T2 >
    void PrintTo (const ::std::pair< T1, T2 > &value, ::std::ostream *os)
     
    template<typename T >
    void UniversalPrintArray (const T *begin, size_t len, ::std::ostream *os)
     
    GTEST_API_ void UniversalPrintArray (const char *begin, size_t len, ::std::ostream *os)
     
    GTEST_API_ void UniversalPrintArray (const wchar_t *begin, size_t len, ::std::ostream *os)
     
    template<typename T >
    void UniversalTersePrint (const T &value, ::std::ostream *os)
     
    template<typename Tuple >
    void TersePrintPrefixToStrings (const Tuple &, std::integral_constant< size_t, 0 >, Strings *)
     
    template<typename Tuple , size_t I>
    void TersePrintPrefixToStrings (const Tuple &t, std::integral_constant< size_t, I >, Strings *strings)
     
    template<typename Tuple >
    Strings UniversalTersePrintTupleFieldsToStrings (const Tuple &value)
     
    GTEST_API_ void ReportInvalidTestSuiteType (const char *test_suite_name, CodeLocation code_location)
     
    template<class ParamType >
    std::string DefaultParamName (const TestParamInfo< ParamType > &info)
     
    template<class ParamType , class ParamNameGenFunctor >
    ParamNameGenFunctor GetParamNameGen (ParamNameGenFunctor func)
     
    template<class ParamType >
    ParamNameGenFunc< ParamType >::Type * GetParamNameGen ()
     
    template<typename T1 , typename T2 >
    AssertionResult CmpHelperEQFailure (const char *lhs_expression, const char *rhs_expression, const T1 &lhs, const T2 &rhs)
     
    bool operator== (faketype, faketype)
     
    bool operator!= (faketype, faketype)
     
    template<typename T1 , typename T2 >
    AssertionResult CmpHelperEQ (const char *lhs_expression, const char *rhs_expression, const T1 &lhs, const T2 &rhs)
     
    GTEST_API_ AssertionResult CmpHelperEQ (const char *lhs_expression, const char *rhs_expression, BiggestInt lhs, BiggestInt rhs)
     
    template<typename T1 , typename T2 >
    AssertionResult CmpHelperOpFailure (const char *expr1, const char *expr2, const T1 &val1, const T2 &val2, const char *op)
     
     GTEST_IMPL_CMP_HELPER_ (NE, !=)
     
     GTEST_IMPL_CMP_HELPER_ (LE,<=)
     
     GTEST_IMPL_CMP_HELPER_ (LT,<)
     
     GTEST_IMPL_CMP_HELPER_ (GE, >=)
     
     GTEST_IMPL_CMP_HELPER_ (GT, >)
     
    GTEST_API_ AssertionResult CmpHelperSTREQ (const char *s1_expression, const char *s2_expression, const char *s1, const char *s2)
     
    GTEST_API_ AssertionResult CmpHelperSTRCASEEQ (const char *s1_expression, const char *s2_expression, const char *s1, const char *s2)
     
    GTEST_API_ AssertionResult CmpHelperSTRNE (const char *s1_expression, const char *s2_expression, const char *s1, const char *s2)
     
    GTEST_API_ AssertionResult CmpHelperSTRCASENE (const char *s1_expression, const char *s2_expression, const char *s1, const char *s2)
     
    GTEST_API_ AssertionResult CmpHelperSTREQ (const char *s1_expression, const char *s2_expression, const wchar_t *s1, const wchar_t *s2)
     
    GTEST_API_ AssertionResult CmpHelperSTRNE (const char *s1_expression, const char *s2_expression, const wchar_t *s1, const wchar_t *s2)
     
    template<typename RawType >
    AssertionResult CmpHelperFloatingPointEQ (const char *lhs_expression, const char *rhs_expression, RawType lhs_value, RawType rhs_value)
     
    GTEST_API_ AssertionResult DoubleNearPredFormat (const char *expr1, const char *expr2, const char *abs_error_expr, double val1, double val2, double abs_error)
     
    GTEST_API_ GTEST_ATTRIBUTE_PRINTF_ (2, 3) void ColoredPrintf(GTestColor color
     
    + + + + + + + + + + + + + + + + + +

    +Variables

    const char kPathSeparator = '/'
     
    const char kCurrentDirectoryString [] = "./"
     
    const int kStdOutFileno = STDOUT_FILENO
     
    const int kStdErrFileno = STDERR_FILENO
     
    const char kUnknownFile [] = "unknown file"
     
    const BiggestInt kMaxBiggestInt
     
    GTEST_API_ const char kStackTraceMarker []
     
    GTEST_API_ const char * fmt
     
    +

    Typedef Documentation

    + +

    ◆ BiggestInt

    + +
    +
    + + + + +
    typedef long long testing::internal::BiggestInt
    +
    + +

    Definition at line 2223 of file gtest.h.

    + +
    +
    + +

    ◆ Double

    + +
    +
    + + + + +
    typedef FloatingPoint<double> testing::internal::Double
    +
    + +

    Definition at line 6846 of file gtest.h.

    + +
    +
    + +

    ◆ false_type

    + +
    +
    + + + + +
    typedef bool_constant<false> testing::internal::false_type
    +
    + +

    Definition at line 2190 of file gtest.h.

    + +
    +
    + +

    ◆ Float

    + +
    +
    + + + + +
    typedef FloatingPoint<float> testing::internal::Float
    +
    + +

    Definition at line 6845 of file gtest.h.

    + +
    +
    + +

    ◆ Int32

    + +
    +
    + + + + +
    typedef TypeWithSize<4>::Int testing::internal::Int32
    +
    + +

    Definition at line 2475 of file gtest.h.

    + +
    +
    + +

    ◆ Int64

    + +
    +
    + + + + +
    typedef TypeWithSize<8>::Int testing::internal::Int64
    +
    + +

    Definition at line 2477 of file gtest.h.

    + +
    +
    + +

    ◆ IsContainer

    + +
    +
    + + + + +
    typedef int testing::internal::IsContainer
    +
    + +

    Definition at line 7422 of file gtest.h.

    + +
    +
    + +

    ◆ IsNotContainer

    + +
    +
    + + + + +
    typedef char testing::internal::IsNotContainer
    +
    + +

    Definition at line 7433 of file gtest.h.

    + +
    +
    + +

    ◆ MutexLock

    + +
    +
    + +

    Definition at line 2162 of file gtest.h.

    + +
    +
    + +

    ◆ ParameterizedTestCaseInfo

    + +
    +
    +
    +template<class TestCase >
    + + + + +
    using testing::internal::ParameterizedTestCaseInfo = typedef ParameterizedTestSuiteInfo<TestCase>
    +
    + +

    Definition at line 11196 of file gtest.h.

    + +
    +
    + +

    ◆ SetUpTearDownSuiteFuncType

    + +
    +
    + + + + +
    using testing::internal::SetUpTearDownSuiteFuncType = typedef void (*)()
    +
    + +

    Definition at line 6941 of file gtest.h.

    + +
    +
    + +

    ◆ SetUpTestSuiteFunc

    + +
    +
    + + + + +
    using testing::internal::SetUpTestSuiteFunc = typedef void (*)()
    +
    + +

    Definition at line 6926 of file gtest.h.

    + +
    +
    + +

    ◆ string

    + +
    +
    + + + + +
    typedef ::std::string testing::internal::string
    +
    + +

    Definition at line 1115 of file gtest.h.

    + +
    +
    + +

    ◆ Strings

    + +
    +
    + + + + +
    typedef ::std::vector< ::std::string> testing::internal::Strings
    +
    + +

    Definition at line 8926 of file gtest.h.

    + +
    +
    + +

    ◆ TearDownTestSuiteFunc

    + +
    +
    + + + + +
    using testing::internal::TearDownTestSuiteFunc = typedef void (*)()
    +
    + +

    Definition at line 6927 of file gtest.h.

    + +
    +
    + +

    ◆ TimeInMillis

    + +
    +
    + + + + +
    typedef TypeWithSize<8>::Int testing::internal::TimeInMillis
    +
    + +

    Definition at line 2479 of file gtest.h.

    + +
    +
    + +

    ◆ true_type

    + +
    +
    + + + + +
    typedef bool_constant<true> testing::internal::true_type
    +
    + +

    Definition at line 2191 of file gtest.h.

    + +
    +
    + +

    ◆ TypeId

    + +
    +
    + + + + +
    typedef const void* testing::internal::TypeId
    +
    + +

    Definition at line 6854 of file gtest.h.

    + +
    +
    + +

    ◆ UInt32

    + +
    +
    + + + + +
    typedef TypeWithSize<4>::UInt testing::internal::UInt32
    +
    + +

    Definition at line 2476 of file gtest.h.

    + +
    +
    + +

    ◆ UInt64

    + +
    +
    + + + + +
    typedef TypeWithSize<8>::UInt testing::internal::UInt64
    +
    + +

    Definition at line 2478 of file gtest.h.

    + +
    +
    + +

    ◆ wstring

    + +
    +
    + + + + +
    typedef ::std::wstring testing::internal::wstring
    +
    + +

    Definition at line 1121 of file gtest.h.

    + +
    +
    +

    Enumeration Type Documentation

    + +

    ◆ CharFormat

    + +
    +
    + + + + +
    Enumerator
    kAsIs 
    kHexEscape 
    kSpecialEscape 
    + +

    Definition at line 11126 of file gtest-all.cc.

    + +
    +
    + +

    ◆ DefaultPrinterType

    + +
    +
    + + + + + +
    Enumerator
    kPrintContainer 
    kPrintPointer 
    kPrintFunctionPointer 
    kPrintOther 
    + +

    Definition at line 8434 of file gtest.h.

    + +
    +
    + +

    ◆ GTestColor

    + +
    +
    + + + + + +
    Enumerator
    COLOR_DEFAULT 
    COLOR_RED 
    COLOR_GREEN 
    COLOR_YELLOW 
    + +

    Definition at line 16427 of file gtest.h.

    + +
    +
    + +

    ◆ GTestLogSeverity

    + +
    +
    + + + + + +
    Enumerator
    GTEST_INFO 
    GTEST_WARNING 
    GTEST_ERROR 
    GTEST_FATAL 
    + +

    Definition at line 1219 of file gtest.h.

    + +
    +
    +

    Function Documentation

    + +

    ◆ AlwaysFalse()

    + +
    +
    + + + + + +
    + + + + + + + +
    bool testing::internal::AlwaysFalse ()
    +
    +inline
    +
    + +

    Definition at line 7260 of file gtest.h.

    + +
    +
    + +

    ◆ AlwaysTrue()

    + +
    +
    + + + + + + + +
    GTEST_API_ bool testing::internal::AlwaysTrue ()
    +
    + +
    +
    + +

    ◆ AppendUserMessage()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    GTEST_API_ std::string testing::internal::AppendUserMessage (const std::string & gtest_msg,
    const Messageuser_msg 
    )
    +
    + +
    +
    + +

    ◆ ArrayAwareFind()

    + +
    +
    +
    +template<typename Iter , typename Element >
    + + + + + + + + + + + + + + + + + + + + + + + + +
    Iter testing::internal::ArrayAwareFind (Iter begin,
    Iter end,
    const Element & elem 
    )
    +
    + +

    Definition at line 7528 of file gtest.h.

    + +
    +
    + +

    ◆ ArrayEq() [1/3]

    + +
    +
    +
    +template<typename T , typename U >
    + + + + + + + + + + + + + + + + + + + + + + + + +
    bool testing::internal::ArrayEq (const T * lhs,
    size_t size,
    const U * rhs 
    )
    +
    + +

    Definition at line 7517 of file gtest.h.

    + +
    +
    + +

    ◆ ArrayEq() [2/3]

    + +
    +
    +
    +template<typename T , typename U >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool testing::internal::ArrayEq (const T & lhs,
    const U & rhs 
    )
    +
    +inline
    +
    + +

    Definition at line 7505 of file gtest.h.

    + +
    +
    + +

    ◆ ArrayEq() [3/3]

    + +
    +
    +
    +template<typename T , typename U , size_t N>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool testing::internal::ArrayEq (const T(&) lhs[N],
    const U(&) rhs[N] 
    )
    +
    +inline
    +
    + +

    Definition at line 7509 of file gtest.h.

    + +
    +
    + +

    ◆ BoolFromGTestEnv()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool testing::internal::BoolFromGTestEnv (const char * flag,
    bool default_value 
    )
    +
    + +

    Definition at line 10934 of file gtest-all.cc.

    + +
    +
    + +

    ◆ CaptureStderr()

    + +
    +
    + + + + + + + +
    GTEST_API_ void testing::internal::CaptureStderr ()
    +
    + +

    Definition at line 10784 of file gtest-all.cc.

    + +
    +
    + +

    ◆ CaptureStdout()

    + +
    +
    + + + + + + + +
    GTEST_API_ void testing::internal::CaptureStdout ()
    +
    + +

    Definition at line 10779 of file gtest-all.cc.

    + +
    +
    + +

    ◆ CheckedDowncastToActualType()

    + +
    +
    +
    +template<class Derived , class Base >
    + + + + + + + + +
    Derived* testing::internal::CheckedDowncastToActualType (Base * base)
    +
    + +

    Definition at line 1391 of file gtest.h.

    + +
    +
    + +

    ◆ CmpHelperEQ() [1/2]

    + +
    +
    +
    +template<typename T1 , typename T2 >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    AssertionResult testing::internal::CmpHelperEQ (const char * lhs_expression,
    const char * rhs_expression,
    const T1 & lhs,
    const T2 & rhs 
    )
    +
    + +

    Definition at line 16111 of file gtest.h.

    + +
    +
    + +

    ◆ CmpHelperEQ() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    GTEST_API_ AssertionResult testing::internal::CmpHelperEQ (const char * lhs_expression,
    const char * rhs_expression,
    BiggestInt lhs,
    BiggestInt rhs 
    )
    +
    + +
    +
    + +

    ◆ CmpHelperEQFailure()

    + +
    +
    +
    +template<typename T1 , typename T2 >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    AssertionResult testing::internal::CmpHelperEQFailure (const char * lhs_expression,
    const char * rhs_expression,
    const T1 & lhs,
    const T2 & rhs 
    )
    +
    + +

    Definition at line 16092 of file gtest.h.

    + +
    +
    + +

    ◆ CmpHelperFloatingPointEQ()

    + +
    +
    +
    +template<typename RawType >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    AssertionResult testing::internal::CmpHelperFloatingPointEQ (const char * lhs_expression,
    const char * rhs_expression,
    RawType lhs_value,
    RawType rhs_value 
    )
    +
    + +

    Definition at line 16351 of file gtest.h.

    + +
    +
    + +

    ◆ CmpHelperOpFailure()

    + +
    +
    +
    +template<typename T1 , typename T2 >
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    AssertionResult testing::internal::CmpHelperOpFailure (const char * expr1,
    const char * expr2,
    const T1 & val1,
    const T2 & val2,
    const char * op 
    )
    +
    + +

    Definition at line 16206 of file gtest.h.

    + +
    +
    + +

    ◆ CmpHelperSTRCASEEQ()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    GTEST_API_ AssertionResult testing::internal::CmpHelperSTRCASEEQ (const char * s1_expression,
    const char * s2_expression,
    const char * s1,
    const char * s2 
    )
    +
    + +
    +
    + +

    ◆ CmpHelperSTRCASENE()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    GTEST_API_ AssertionResult testing::internal::CmpHelperSTRCASENE (const char * s1_expression,
    const char * s2_expression,
    const char * s1,
    const char * s2 
    )
    +
    + +
    +
    + +

    ◆ CmpHelperSTREQ() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    GTEST_API_ AssertionResult testing::internal::CmpHelperSTREQ (const char * s1_expression,
    const char * s2_expression,
    const char * s1,
    const char * s2 
    )
    +
    + +
    +
    + +

    ◆ CmpHelperSTREQ() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    GTEST_API_ AssertionResult testing::internal::CmpHelperSTREQ (const char * s1_expression,
    const char * s2_expression,
    const wchar_t * s1,
    const wchar_t * s2 
    )
    +
    + +
    +
    + +

    ◆ CmpHelperSTRNE() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    GTEST_API_ AssertionResult testing::internal::CmpHelperSTRNE (const char * s1_expression,
    const char * s2_expression,
    const char * s1,
    const char * s2 
    )
    +
    + +
    +
    + +

    ◆ CmpHelperSTRNE() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    GTEST_API_ AssertionResult testing::internal::CmpHelperSTRNE (const char * s1_expression,
    const char * s2_expression,
    const wchar_t * s1,
    const wchar_t * s2 
    )
    +
    + +
    +
    + +

    ◆ CopyArray() [1/3]

    + +
    +
    +
    +template<typename T , typename U >
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void testing::internal::CopyArray (const T * from,
    size_t size,
    U * to 
    )
    +
    + +

    Definition at line 7557 of file gtest.h.

    + +
    +
    + +

    ◆ CopyArray() [2/3]

    + +
    +
    +
    +template<typename T , typename U >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void testing::internal::CopyArray (const T & from,
    U * to 
    )
    +
    +inline
    +
    + +

    Definition at line 7545 of file gtest.h.

    + +
    +
    + +

    ◆ CopyArray() [3/3]

    + +
    +
    +
    +template<typename T , typename U , size_t N>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void testing::internal::CopyArray (const T(&) from[N],
    U(*) to[N] 
    )
    +
    +inline
    +
    + +

    Definition at line 7549 of file gtest.h.

    + +
    +
    + +

    ◆ DefaultParamName()

    + +
    +
    +
    +template<class ParamType >
    + + + + + + + + +
    std::string testing::internal::DefaultParamName (const TestParamInfo< ParamType > & info)
    +
    + +

    Definition at line 10912 of file gtest.h.

    + +
    +
    + +

    ◆ DefaultPrintTo() [1/4]

    + +
    +
    +
    +template<typename C >
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void testing::internal::DefaultPrintTo (WrapPrinterType< kPrintContainer,
    const C & container,
    ::std::ostream * os 
    )
    +
    + +

    Definition at line 8445 of file gtest.h.

    + +
    +
    + +

    ◆ DefaultPrintTo() [2/4]

    + +
    +
    +
    +template<typename T >
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void testing::internal::DefaultPrintTo (WrapPrinterType< kPrintPointer,
    T * p,
    ::std::ostream * os 
    )
    +
    + +

    Definition at line 8478 of file gtest.h.

    + +
    +
    + +

    ◆ DefaultPrintTo() [3/4]

    + +
    +
    +
    +template<typename T >
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void testing::internal::DefaultPrintTo (WrapPrinterType< kPrintFunctionPointer,
    T * p,
    ::std::ostream * os 
    )
    +
    + +

    Definition at line 8490 of file gtest.h.

    + +
    +
    + +

    ◆ DefaultPrintTo() [4/4]

    + +
    +
    +
    +template<typename T >
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void testing::internal::DefaultPrintTo (WrapPrinterType< kPrintOther,
    const T & value,
    ::std::ostream * os 
    )
    +
    + +

    Definition at line 8505 of file gtest.h.

    + +
    +
    + +

    ◆ DiffStrings()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    GTEST_API_ std::string testing::internal::DiffStrings (const std::string & left,
    const std::string & right,
    size_t * total_line_count 
    )
    +
    + +
    +
    + +

    ◆ DoubleNearPredFormat()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    GTEST_API_ AssertionResult testing::internal::DoubleNearPredFormat (const char * expr1,
    const char * expr2,
    const char * abs_error_expr,
    double val1,
    double val2,
    double abs_error 
    )
    +
    + +
    +
    + +

    ◆ DownCast_()

    + +
    +
    +
    +template<typename To , typename From >
    + + + + + +
    + + + + + + + + +
    To testing::internal::DownCast_ (From * f)
    +
    +inline
    +
    + +

    Definition at line 1366 of file gtest.h.

    + +
    +
    + +

    ◆ EqFailure()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    GTEST_API_ AssertionResult testing::internal::EqFailure (const char * expected_expression,
    const char * actual_expression,
    const std::string & expected_value,
    const std::string & actual_value,
    bool ignoring_case 
    )
    +
    + +
    +
    + +

    ◆ FlushInfoLog()

    + +
    +
    + + + + + +
    + + + + + + + +
    void testing::internal::FlushInfoLog ()
    +
    +inline
    +
    + +

    Definition at line 1251 of file gtest.h.

    + +
    +
    + +

    ◆ FormatCompilerIndependentFileLocation()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    GTEST_API_::std::string testing::internal::FormatCompilerIndependentFileLocation (const char * file,
    int line 
    )
    +
    + +

    Definition at line 10638 of file gtest-all.cc.

    + +
    +
    + +

    ◆ FormatFileLocation()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    GTEST_API_::std::string testing::internal::FormatFileLocation (const char * file,
    int line 
    )
    +
    + +

    Definition at line 10620 of file gtest-all.cc.

    + +
    +
    + +

    ◆ FormatForComparisonFailureMessage()

    + +
    +
    +
    +template<typename T1 , typename T2 >
    + + + + + + + + + + + + + + + + + + +
    std::string testing::internal::FormatForComparisonFailureMessage (const T1 & value,
    const T2 &  
    )
    +
    + +

    Definition at line 8416 of file gtest.h.

    + +
    +
    + +

    ◆ GetArgvs()

    + +
    +
    + + + + + + + +
    GTEST_API_ std::vector<std::string> testing::internal::GetArgvs ()
    +
    + +
    +
    + +

    ◆ GetBoolAssertionFailureMessage()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    GTEST_API_ std::string testing::internal::GetBoolAssertionFailureMessage (const AssertionResult & assertion_result,
    const char * expression_text,
    const char * actual_predicate_value,
    const char * expected_predicate_value 
    )
    +
    + +
    +
    + +

    ◆ GetCapturedStderr()

    + +
    +
    + + + + + + + +
    GTEST_API_ std::string testing::internal::GetCapturedStderr ()
    +
    + +

    Definition at line 10794 of file gtest-all.cc.

    + +
    +
    + +

    ◆ GetCapturedStdout()

    + +
    +
    + + + + + + + +
    GTEST_API_ std::string testing::internal::GetCapturedStdout ()
    +
    + +

    Definition at line 10789 of file gtest-all.cc.

    + +
    +
    + +

    ◆ GetCurrentOsStackTraceExceptTop()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    GTEST_API_ std::string testing::internal::GetCurrentOsStackTraceExceptTop (UnitTestunit_test,
    int skip_count 
    )
    +
    + +
    +
    + +

    ◆ GetFileSize()

    + +
    +
    + + + + + + + + +
    GTEST_API_ size_t testing::internal::GetFileSize (FILE * file)
    +
    + +

    Definition at line 10804 of file gtest-all.cc.

    + +
    +
    + +

    ◆ GetNotDefaultOrNull()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    SetUpTearDownSuiteFuncType testing::internal::GetNotDefaultOrNull (SetUpTearDownSuiteFuncType a,
    SetUpTearDownSuiteFuncType def 
    )
    +
    +inline
    +
    + +

    Definition at line 6943 of file gtest.h.

    + +
    +
    + +

    ◆ GetParamNameGen() [1/2]

    + +
    +
    +
    +template<class ParamType , class ParamNameGenFunctor >
    + + + + + + + + +
    ParamNameGenFunctor testing::internal::GetParamNameGen (ParamNameGenFunctor func)
    +
    + +

    Definition at line 10924 of file gtest.h.

    + +
    +
    + +

    ◆ GetParamNameGen() [2/2]

    + +
    +
    +
    +template<class ParamType >
    + + + + + + + +
    ParamNameGenFunc<ParamType>::Type* testing::internal::GetParamNameGen ()
    +
    + +

    Definition at line 10934 of file gtest.h.

    + +
    +
    + +

    ◆ GetTestTypeId()

    + +
    +
    + + + + + + + +
    GTEST_API_ TypeId testing::internal::GetTestTypeId ()
    +
    + +
    +
    + +

    ◆ GetThreadCount()

    + +
    +
    + + + + + + + +
    GTEST_API_ size_t testing::internal::GetThreadCount ()
    +
    + +

    Definition at line 9875 of file gtest-all.cc.

    + +
    +
    + +

    ◆ GetTypeId()

    + +
    +
    +
    +template<typename T >
    + + + + + + + +
    TypeId testing::internal::GetTypeId ()
    +
    + +

    Definition at line 6872 of file gtest.h.

    + +
    +
    + +

    ◆ GTEST_ATTRIBUTE_PRINTF_()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    GTEST_API_ testing::internal::GTEST_ATTRIBUTE_PRINTF_ (,
     
    )
    +
    + +
    +
    + +

    ◆ GTEST_DEFINE_string_()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    testing::internal::GTEST_DEFINE_string_ (internal_run_death_test ,
    "" ,
    "Indicates the file,
    line number,
    temporal index of " "the single death test to run,
    and a file descriptor to " "which a success code may be sent,
    all separated by " "the '|' characters. This flag is specified if and only if the current " "process is a sub-process launched for running a thread-safe " "death test. FOR INTERNAL USE ONLY."  
    )
    +
    + +
    +
    + +

    ◆ GTEST_IMPL_CMP_HELPER_() [1/5]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    testing::internal::GTEST_IMPL_CMP_HELPER_ (NE ,
     
    )
    +
    + +
    +
    + +

    ◆ GTEST_IMPL_CMP_HELPER_() [2/5]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    testing::internal::GTEST_IMPL_CMP_HELPER_ (LE ,
    <=  
    )
    +
    + +
    +
    + +

    ◆ GTEST_IMPL_CMP_HELPER_() [3/5]

    + +
    +
    + + + + + + + + +
    testing::internal::GTEST_IMPL_CMP_HELPER_ (LT )
    +
    + +
    +
    + +

    ◆ GTEST_IMPL_CMP_HELPER_() [4/5]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    testing::internal::GTEST_IMPL_CMP_HELPER_ (GE ,
    >=  
    )
    +
    + +
    +
    + +

    ◆ GTEST_IMPL_CMP_HELPER_() [5/5]

    + +
    +
    + + + + + + + + +
    testing::internal::GTEST_IMPL_CMP_HELPER_ (GT )
    +
    + +
    +
    + +

    ◆ GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_() [1/2]

    + +
    +
    + + + + + + + + +
    testing::internal::GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_ (char )
    +
    + +
    +
    + +

    ◆ GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_() [2/2]

    + +
    +
    + + + + + + + + +
    testing::internal::GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_ (wchar_t )
    +
    + +
    +
    + +

    ◆ GTEST_IMPL_FORMAT_C_STRING_AS_STRING_() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    testing::internal::GTEST_IMPL_FORMAT_C_STRING_AS_STRING_ (char ,
    ::std::string  
    )
    +
    + +
    +
    + +

    ◆ GTEST_IMPL_FORMAT_C_STRING_AS_STRING_() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    testing::internal::GTEST_IMPL_FORMAT_C_STRING_AS_STRING_ (wchar_t ,
    ::std::wstring  
    )
    +
    + +
    +
    + +

    ◆ ImplicitCast_()

    + +
    +
    +
    +template<typename To >
    + + + + + +
    + + + + + + + + +
    To testing::internal::ImplicitCast_ (To x)
    +
    +inline
    +
    + +

    Definition at line 1342 of file gtest.h.

    + +
    +
    + +

    ◆ Int32FromGTestEnv()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    GTEST_API_ Int32 testing::internal::Int32FromGTestEnv (const char * flag,
    Int32 default_value 
    )
    +
    + +

    Definition at line 10948 of file gtest-all.cc.

    + +
    +
    + +

    ◆ IsAlNum()

    + +
    +
    + + + + + +
    + + + + + + + + +
    bool testing::internal::IsAlNum (char ch)
    +
    +inline
    +
    + +

    Definition at line 2236 of file gtest.h.

    + +
    +
    + +

    ◆ IsAlpha()

    + +
    +
    + + + + + +
    + + + + + + + + +
    bool testing::internal::IsAlpha (char ch)
    +
    +inline
    +
    + +

    Definition at line 2233 of file gtest.h.

    + +
    +
    + +

    ◆ IsContainerTest() [1/2]

    + +
    +
    +
    +template<class C , class Iterator = decltype(::std::declval<const C&>().begin()), class = decltype(::std::declval<const C&>().end()), class = decltype(++::std::declval<Iterator&>()), class = decltype(*::std::declval<Iterator>()), class = typename C::const_iterator>
    + + + + + + + + +
    IsContainer testing::internal::IsContainerTest (int )
    +
    + +

    Definition at line 7429 of file gtest.h.

    + +
    +
    + +

    ◆ IsContainerTest() [2/2]

    + +
    +
    +
    +template<class C >
    + + + + + + + + +
    IsNotContainer testing::internal::IsContainerTest (long )
    +
    + +

    Definition at line 7435 of file gtest.h.

    + +
    +
    + +

    ◆ IsDigit()

    + +
    +
    + + + + + +
    + + + + + + + + +
    bool testing::internal::IsDigit (char ch)
    +
    +inline
    +
    + +

    Definition at line 2239 of file gtest.h.

    + +
    +
    + +

    ◆ IsLower()

    + +
    +
    + + + + + +
    + + + + + + + + +
    bool testing::internal::IsLower (char ch)
    +
    +inline
    +
    + +

    Definition at line 2242 of file gtest.h.

    + +
    +
    + +

    ◆ IsNullLiteralHelper() [1/2]

    + +
    +
    + + + + + + + + +
    std::true_type testing::internal::IsNullLiteralHelper (Secret * )
    +
    + +
    +
    + +

    ◆ IsNullLiteralHelper() [2/2]

    + +
    +
    + + + + + + + + +
    std::false_type testing::internal::IsNullLiteralHelper (IgnoredValue )
    +
    + +
    +
    + +

    ◆ IsPrintableAscii()

    + +
    +
    + + + + + +
    + + + + + + + + +
    bool testing::internal::IsPrintableAscii (wchar_t c)
    +
    +inline
    +
    + +

    Definition at line 11135 of file gtest-all.cc.

    + +
    +
    + +

    ◆ IsSpace()

    + +
    +
    + + + + + +
    + + + + + + + + +
    bool testing::internal::IsSpace (char ch)
    +
    +inline
    +
    + +

    Definition at line 2245 of file gtest.h.

    + +
    +
    + +

    ◆ IsTrue()

    + +
    +
    + + + + + + + + +
    GTEST_API_ bool testing::internal::IsTrue (bool condition)
    +
    + +
    +
    + +

    ◆ IsUpper()

    + +
    +
    + + + + + +
    + + + + + + + + +
    bool testing::internal::IsUpper (char ch)
    +
    +inline
    +
    + +

    Definition at line 2248 of file gtest.h.

    + +
    +
    + +

    ◆ IsXDigit() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    bool testing::internal::IsXDigit (char ch)
    +
    +inline
    +
    + +

    Definition at line 2251 of file gtest.h.

    + +
    +
    + +

    ◆ IsXDigit() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    bool testing::internal::IsXDigit (wchar_t ch)
    +
    +inline
    +
    + +

    Definition at line 2254 of file gtest.h.

    + +
    +
    + +

    ◆ LogToStderr()

    + +
    +
    + + + + + +
    + + + + + + + +
    void testing::internal::LogToStderr ()
    +
    +inline
    +
    + +

    Definition at line 1250 of file gtest.h.

    + +
    +
    + +

    ◆ MakeAndRegisterTestInfo()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    GTEST_API_ TestInfo* testing::internal::MakeAndRegisterTestInfo (const char * test_suite_name,
    const char * name,
    const char * type_param,
    const char * value_param,
    CodeLocation code_location,
    TypeId fixture_class_id,
    SetUpTestSuiteFunc set_up_tc,
    TearDownTestSuiteFunc tear_down_tc,
    TestFactoryBasefactory 
    )
    +
    + +
    +
    + +

    ◆ operator!=()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool testing::internal::operator!= (faketype ,
    faketype  
    )
    +
    +inline
    +
    + +

    Definition at line 16107 of file gtest.h.

    + +
    +
    + +

    ◆ operator==()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool testing::internal::operator== (faketype ,
    faketype  
    )
    +
    +inline
    +
    + +

    Definition at line 16106 of file gtest.h.

    + +
    +
    + +

    ◆ OutputFlagAlsoCheckEnvVar()

    + +
    +
    + + + + + + + +
    std::string testing::internal::OutputFlagAlsoCheckEnvVar ()
    +
    + +

    Definition at line 10980 of file gtest-all.cc.

    + +
    +
    + +

    ◆ ParseInt32()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    bool testing::internal::ParseInt32 (const Messagesrc_text,
    const char * str,
    Int32value 
    )
    +
    + +

    Definition at line 10892 of file gtest-all.cc.

    + +
    +
    + +

    ◆ PrintCharAndCodeTo()

    + +
    +
    +
    +template<typename UnsignedChar , typename Char >
    + + + + + + + + + + + + + + + + + + +
    void testing::internal::PrintCharAndCodeTo (Char c,
    ostream * os 
    )
    +
    + +

    Definition at line 11218 of file gtest-all.cc.

    + +
    +
    + +

    ◆ PrintRawArrayTo()

    + +
    +
    +
    +template<typename T >
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void testing::internal::PrintRawArrayTo (const T a[],
    size_t count,
    ::std::ostream * os 
    )
    +
    + +

    Definition at line 8623 of file gtest.h.

    + +
    +
    + +

    ◆ PrintStringTo() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    GTEST_API_ void testing::internal::PrintStringTo (const ::std::string & s,
    ::std::ostream * os 
    )
    +
    + +
    +
    + +

    ◆ PrintStringTo() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void testing::internal::PrintStringTo (const ::std::string & s,
    ostream * os 
    )
    +
    + +

    Definition at line 11432 of file gtest-all.cc.

    + +
    +
    + +

    ◆ PrintTo() [1/23]

    + +
    +
    +
    +template<typename T >
    + + + + + + + + + + + + + + + + + + +
    void testing::internal::PrintTo (const T & value,
    ::std::ostream * os 
    )
    +
    + +

    Definition at line 8522 of file gtest.h.

    + +
    +
    + +

    ◆ PrintTo() [2/23]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void testing::internal::PrintTo (char c,
    ::std::ostream * os 
    )
    +
    +inline
    +
    + +

    Definition at line 8562 of file gtest.h.

    + +
    +
    + +

    ◆ PrintTo() [3/23]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void testing::internal::PrintTo (bool x,
    ::std::ostream * os 
    )
    +
    +inline
    +
    + +

    Definition at line 8570 of file gtest.h.

    + +
    +
    + +

    ◆ PrintTo() [4/23]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    GTEST_API_ void testing::internal::PrintTo (wchar_t wc,
    ::std::ostream * os 
    )
    +
    + +
    +
    + +

    ◆ PrintTo() [5/23]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    GTEST_API_ void testing::internal::PrintTo (const char * s,
    ::std::ostream * os 
    )
    +
    + +
    +
    + +

    ◆ PrintTo() [6/23]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void testing::internal::PrintTo (char * s,
    ::std::ostream * os 
    )
    +
    +inline
    +
    + +

    Definition at line 8585 of file gtest.h.

    + +
    +
    + +

    ◆ PrintTo() [7/23]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void testing::internal::PrintTo (const signed char * s,
    ::std::ostream * os 
    )
    +
    +inline
    +
    + +

    Definition at line 8591 of file gtest.h.

    + +
    +
    + +

    ◆ PrintTo() [8/23]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void testing::internal::PrintTo (signed char * s,
    ::std::ostream * os 
    )
    +
    +inline
    +
    + +

    Definition at line 8594 of file gtest.h.

    + +
    +
    + +

    ◆ PrintTo() [9/23]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void testing::internal::PrintTo (const unsigned char * s,
    ::std::ostream * os 
    )
    +
    +inline
    +
    + +

    Definition at line 8597 of file gtest.h.

    + +
    +
    + +

    ◆ PrintTo() [10/23]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void testing::internal::PrintTo (unsigned char * s,
    ::std::ostream * os 
    )
    +
    +inline
    +
    + +

    Definition at line 8600 of file gtest.h.

    + +
    +
    + +

    ◆ PrintTo() [11/23]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    GTEST_API_ void testing::internal::PrintTo (const wchar_t * s,
    ::std::ostream * os 
    )
    +
    + +
    +
    + +

    ◆ PrintTo() [12/23]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void testing::internal::PrintTo (wchar_t * s,
    ::std::ostream * os 
    )
    +
    +inline
    +
    + +

    Definition at line 8612 of file gtest.h.

    + +
    +
    + +

    ◆ PrintTo() [13/23]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void testing::internal::PrintTo (const ::std::string & s,
    ::std::ostream * os 
    )
    +
    +inline
    +
    + +

    Definition at line 8640 of file gtest.h.

    + +
    +
    + +

    ◆ PrintTo() [14/23]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void testing::internal::PrintTo (const ::std::wstring & s,
    ::std::ostream * os 
    )
    +
    +inline
    +
    + +

    Definition at line 8654 of file gtest.h.

    + +
    +
    + +

    ◆ PrintTo() [15/23]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void testing::internal::PrintTo (std::nullptr_t ,
    ::std::ostream * os 
    )
    +
    +inline
    +
    + +

    Definition at line 8666 of file gtest.h.

    + +
    +
    + +

    ◆ PrintTo() [16/23]

    + +
    +
    +
    +template<typename T >
    + + + + + + + + + + + + + + + + + + +
    void testing::internal::PrintTo (std::reference_wrapper< T > ref,
    ::std::ostream * os 
    )
    +
    + +

    Definition at line 8669 of file gtest.h.

    + +
    +
    + +

    ◆ PrintTo() [17/23]

    + +
    +
    +
    +template<typename... Types>
    + + + + + + + + + + + + + + + + + + +
    void testing::internal::PrintTo (const ::std::tuple< Types... > & t,
    ::std::ostream * os 
    )
    +
    + +

    Definition at line 8694 of file gtest.h.

    + +
    +
    + +

    ◆ PrintTo() [18/23]

    + +
    +
    +
    +template<typename T1 , typename T2 >
    + + + + + + + + + + + + + + + + + + +
    void testing::internal::PrintTo (const ::std::pair< T1, T2 > & value,
    ::std::ostream * os 
    )
    +
    + +

    Definition at line 8702 of file gtest.h.

    + +
    +
    + +

    ◆ PrintTo() [19/23]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    GTEST_API_ void testing::internal::PrintTo (unsigned char c,
    ::std::ostream * os 
    )
    +
    + +

    Definition at line 11242 of file gtest-all.cc.

    + +
    +
    + +

    ◆ PrintTo() [20/23]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    GTEST_API_ void testing::internal::PrintTo (signed char c,
    ::std::ostream * os 
    )
    +
    + +

    Definition at line 11245 of file gtest-all.cc.

    + +
    +
    + +

    ◆ PrintTo() [21/23]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void testing::internal::PrintTo (wchar_t wc,
    ostream * os 
    )
    +
    + +

    Definition at line 11251 of file gtest-all.cc.

    + +
    +
    + +

    ◆ PrintTo() [22/23]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void testing::internal::PrintTo (const char * s,
    ostream * os 
    )
    +
    + +

    Definition at line 11327 of file gtest-all.cc.

    + +
    +
    + +

    ◆ PrintTo() [23/23]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void testing::internal::PrintTo (const wchar_t * s,
    ostream * os 
    )
    +
    + +

    Definition at line 11344 of file gtest-all.cc.

    + +
    +
    + +

    ◆ PrintTupleTo() [1/2]

    + +
    +
    +
    +template<typename T >
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void testing::internal::PrintTupleTo (const T & ,
    std::integral_constant< size_t, 0 > ,
    ::std::ostream *  
    )
    +
    + +

    Definition at line 8677 of file gtest.h.

    + +
    +
    + +

    ◆ PrintTupleTo() [2/2]

    + +
    +
    +
    +template<typename T , size_t I>
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void testing::internal::PrintTupleTo (const T & t,
    std::integral_constant< size_t, I > ,
    ::std::ostream * os 
    )
    +
    + +

    Definition at line 8681 of file gtest.h.

    + +
    +
    + +

    ◆ PrintWideStringTo() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    GTEST_API_ void testing::internal::PrintWideStringTo (const ::std::wstring & s,
    ::std::ostream * os 
    )
    +
    + +
    +
    + +

    ◆ PrintWideStringTo() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void testing::internal::PrintWideStringTo (const ::std::wstring & s,
    ostream * os 
    )
    +
    + +

    Definition at line 11448 of file gtest-all.cc.

    + +
    +
    + +

    ◆ ReadEntireFile()

    + +
    +
    + + + + + + + + +
    GTEST_API_ std::string testing::internal::ReadEntireFile (FILE * file)
    +
    + +

    Definition at line 10809 of file gtest-all.cc.

    + +
    +
    + +

    ◆ ReportInvalidTestSuiteType()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    GTEST_API_ void testing::internal::ReportInvalidTestSuiteType (const char * test_suite_name,
    CodeLocation code_location 
    )
    +
    + +
    +
    + +

    ◆ SkipPrefix()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    GTEST_API_ bool testing::internal::SkipPrefix (const char * prefix,
    const char ** pstr 
    )
    +
    + +
    +
    + +

    ◆ StreamableToString()

    + +
    +
    +
    +template<typename T >
    + + + + + + + + +
    std::string testing::internal::StreamableToString (const T & streamable)
    +
    + +

    Definition at line 2769 of file gtest.h.

    + +
    +
    + +

    ◆ StringFromGTestEnv()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    const char * testing::internal::StringFromGTestEnv (const char * flag,
    const char * default_value 
    )
    +
    + +

    Definition at line 10991 of file gtest-all.cc.

    + +
    +
    + +

    ◆ StripTrailingSpaces()

    + +
    +
    + + + + + +
    + + + + + + + + +
    std::string testing::internal::StripTrailingSpaces (std::string str)
    +
    +inline
    +
    + +

    Definition at line 2266 of file gtest.h.

    + +
    +
    + +

    ◆ TersePrintPrefixToStrings() [1/2]

    + +
    +
    +
    +template<typename Tuple >
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void testing::internal::TersePrintPrefixToStrings (const Tuple & ,
    std::integral_constant< size_t, 0 > ,
    Strings 
    )
    +
    + +

    Definition at line 8931 of file gtest.h.

    + +
    +
    + +

    ◆ TersePrintPrefixToStrings() [2/2]

    + +
    +
    +
    +template<typename Tuple , size_t I>
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void testing::internal::TersePrintPrefixToStrings (const Tuple & t,
    std::integral_constant< size_t, I > ,
    Stringsstrings 
    )
    +
    + +

    Definition at line 8934 of file gtest.h.

    + +
    +
    + +

    ◆ ToLower()

    + +
    +
    + + + + + +
    + + + + + + + + +
    char testing::internal::ToLower (char ch)
    +
    +inline
    +
    + +

    Definition at line 2259 of file gtest.h.

    + +
    +
    + +

    ◆ ToUpper()

    + +
    +
    + + + + + +
    + + + + + + + + +
    char testing::internal::ToUpper (char ch)
    +
    +inline
    +
    + +

    Definition at line 2262 of file gtest.h.

    + +
    +
    + +

    ◆ UniversalPrint()

    + +
    +
    +
    +template<typename T >
    + + + + + + + + + + + + + + + + + + +
    void testing::internal::UniversalPrint (const T & value,
    ::std::ostream * os 
    )
    +
    + +

    Definition at line 8919 of file gtest.h.

    + +
    +
    + +

    ◆ UniversalPrintArray() [1/5]

    + +
    +
    +
    +template<typename T >
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void testing::internal::UniversalPrintArray (const T * begin,
    size_t len,
    ::std::ostream * os 
    )
    +
    + +

    Definition at line 8784 of file gtest.h.

    + +
    +
    + +

    ◆ UniversalPrintArray() [2/5]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    GTEST_API_ void testing::internal::UniversalPrintArray (const char * begin,
    size_t len,
    ::std::ostream * os 
    )
    +
    + +
    +
    + +

    ◆ UniversalPrintArray() [3/5]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    GTEST_API_ void testing::internal::UniversalPrintArray (const wchar_t * begin,
    size_t len,
    ::std::ostream * os 
    )
    +
    + +
    +
    + +

    ◆ UniversalPrintArray() [4/5]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void testing::internal::UniversalPrintArray (const char * begin,
    size_t len,
    ostream * os 
    )
    +
    + +

    Definition at line 11316 of file gtest-all.cc.

    + +
    +
    + +

    ◆ UniversalPrintArray() [5/5]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void testing::internal::UniversalPrintArray (const wchar_t * begin,
    size_t len,
    ostream * os 
    )
    +
    + +

    Definition at line 11322 of file gtest-all.cc.

    + +
    +
    + +

    ◆ UniversalTersePrint()

    + +
    +
    +
    +template<typename T >
    + + + + + + + + + + + + + + + + + + +
    void testing::internal::UniversalTersePrint (const T & value,
    ::std::ostream * os 
    )
    +
    + +

    Definition at line 8910 of file gtest.h.

    + +
    +
    + +

    ◆ UniversalTersePrintTupleFieldsToStrings()

    + +
    +
    +
    +template<typename Tuple >
    + + + + + + + + +
    Strings testing::internal::UniversalTersePrintTupleFieldsToStrings (const Tuple & value)
    +
    + +

    Definition at line 8948 of file gtest.h.

    + +
    +
    +

    Variable Documentation

    + +

    ◆ fmt

    + +
    +
    + + + + +
    GTEST_API_ const char* testing::internal::fmt
    +
    + +

    Definition at line 16430 of file gtest.h.

    + +
    +
    + +

    ◆ kCurrentDirectoryString

    + +
    +
    + + + + +
    const char testing::internal::kCurrentDirectoryString[] = "./"
    +
    + +

    Definition at line 9247 of file gtest-all.cc.

    + +
    +
    + +

    ◆ kMaxBiggestInt

    + +
    +
    + + + + +
    const BiggestInt testing::internal::kMaxBiggestInt
    +
    +Initial value:
    =
    ~(static_cast<BiggestInt>(1) << (8*sizeof(BiggestInt) - 1))
    long long BiggestInt
    Definition: gtest.h:2223
    +
    +

    Definition at line 2420 of file gtest.h.

    + +
    +
    + +

    ◆ kPathSeparator

    + +
    +
    + + + + +
    const char testing::internal::kPathSeparator = '/'
    +
    + +

    Definition at line 9246 of file gtest-all.cc.

    + +
    +
    + +

    ◆ kStackTraceMarker

    + +
    +
    + + + + +
    GTEST_API_ const char testing::internal::kStackTraceMarker[]
    +
    + +
    +
    + +

    ◆ kStdErrFileno

    + +
    +
    + + + + +
    const int testing::internal::kStdErrFileno = STDERR_FILENO
    +
    + +

    Definition at line 9776 of file gtest-all.cc.

    + +
    +
    + +

    ◆ kStdOutFileno

    + +
    +
    + + + + +
    const int testing::internal::kStdOutFileno = STDOUT_FILENO
    +
    + +

    Definition at line 9775 of file gtest-all.cc.

    + +
    +
    + +

    ◆ kUnknownFile

    + +
    +
    + + + + +
    const char testing::internal::kUnknownFile[] = "unknown file"
    +
    + +

    Definition at line 10616 of file gtest-all.cc.

    + +
    +
    +
    +
    + + + + diff --git a/doc/html/namespacetesting_1_1internal.js b/doc/html/namespacetesting_1_1internal.js new file mode 100644 index 0000000..39f2fd5 --- /dev/null +++ b/doc/html/namespacetesting_1_1internal.js @@ -0,0 +1,118 @@ +var namespacetesting_1_1internal = +[ + [ "AddReference", "structtesting_1_1internal_1_1_add_reference.html", "structtesting_1_1internal_1_1_add_reference" ], + [ "AddReference< T & >", "structtesting_1_1internal_1_1_add_reference_3_01_t_01_6_01_4.html", "structtesting_1_1internal_1_1_add_reference_3_01_t_01_6_01_4" ], + [ "AssertHelper", "classtesting_1_1internal_1_1_assert_helper.html", "classtesting_1_1internal_1_1_assert_helper" ], + [ "bool_constant", "structtesting_1_1internal_1_1bool__constant.html", "structtesting_1_1internal_1_1bool__constant" ], + [ "CapturedStream", "classtesting_1_1internal_1_1_captured_stream.html", "classtesting_1_1internal_1_1_captured_stream" ], + [ "CartesianProductGenerator10", "classtesting_1_1internal_1_1_cartesian_product_generator10.html", "classtesting_1_1internal_1_1_cartesian_product_generator10" ], + [ "CartesianProductGenerator2", "classtesting_1_1internal_1_1_cartesian_product_generator2.html", "classtesting_1_1internal_1_1_cartesian_product_generator2" ], + [ "CartesianProductGenerator3", "classtesting_1_1internal_1_1_cartesian_product_generator3.html", "classtesting_1_1internal_1_1_cartesian_product_generator3" ], + [ "CartesianProductGenerator4", "classtesting_1_1internal_1_1_cartesian_product_generator4.html", "classtesting_1_1internal_1_1_cartesian_product_generator4" ], + [ "CartesianProductGenerator5", "classtesting_1_1internal_1_1_cartesian_product_generator5.html", "classtesting_1_1internal_1_1_cartesian_product_generator5" ], + [ "CartesianProductGenerator6", "classtesting_1_1internal_1_1_cartesian_product_generator6.html", "classtesting_1_1internal_1_1_cartesian_product_generator6" ], + [ "CartesianProductGenerator7", "classtesting_1_1internal_1_1_cartesian_product_generator7.html", "classtesting_1_1internal_1_1_cartesian_product_generator7" ], + [ "CartesianProductGenerator8", "classtesting_1_1internal_1_1_cartesian_product_generator8.html", "classtesting_1_1internal_1_1_cartesian_product_generator8" ], + [ "CartesianProductGenerator9", "classtesting_1_1internal_1_1_cartesian_product_generator9.html", "classtesting_1_1internal_1_1_cartesian_product_generator9" ], + [ "CartesianProductHolder10", "classtesting_1_1internal_1_1_cartesian_product_holder10.html", "classtesting_1_1internal_1_1_cartesian_product_holder10" ], + [ "CartesianProductHolder2", "classtesting_1_1internal_1_1_cartesian_product_holder2.html", "classtesting_1_1internal_1_1_cartesian_product_holder2" ], + [ "CartesianProductHolder3", "classtesting_1_1internal_1_1_cartesian_product_holder3.html", "classtesting_1_1internal_1_1_cartesian_product_holder3" ], + [ "CartesianProductHolder4", "classtesting_1_1internal_1_1_cartesian_product_holder4.html", "classtesting_1_1internal_1_1_cartesian_product_holder4" ], + [ "CartesianProductHolder5", "classtesting_1_1internal_1_1_cartesian_product_holder5.html", "classtesting_1_1internal_1_1_cartesian_product_holder5" ], + [ "CartesianProductHolder6", "classtesting_1_1internal_1_1_cartesian_product_holder6.html", "classtesting_1_1internal_1_1_cartesian_product_holder6" ], + [ "CartesianProductHolder7", "classtesting_1_1internal_1_1_cartesian_product_holder7.html", "classtesting_1_1internal_1_1_cartesian_product_holder7" ], + [ "CartesianProductHolder8", "classtesting_1_1internal_1_1_cartesian_product_holder8.html", "classtesting_1_1internal_1_1_cartesian_product_holder8" ], + [ "CartesianProductHolder9", "classtesting_1_1internal_1_1_cartesian_product_holder9.html", "classtesting_1_1internal_1_1_cartesian_product_holder9" ], + [ "CodeLocation", "structtesting_1_1internal_1_1_code_location.html", "structtesting_1_1internal_1_1_code_location" ], + [ "CompileAssertTypesEqual", "structtesting_1_1internal_1_1_compile_assert_types_equal.html", null ], + [ "CompileAssertTypesEqual< T, T >", "structtesting_1_1internal_1_1_compile_assert_types_equal_3_01_t_00_01_t_01_4.html", null ], + [ "ConstCharPtr", "structtesting_1_1internal_1_1_const_char_ptr.html", "structtesting_1_1internal_1_1_const_char_ptr" ], + [ "ConstRef", "structtesting_1_1internal_1_1_const_ref.html", "structtesting_1_1internal_1_1_const_ref" ], + [ "ConstRef< T & >", "structtesting_1_1internal_1_1_const_ref_3_01_t_01_6_01_4.html", "structtesting_1_1internal_1_1_const_ref_3_01_t_01_6_01_4" ], + [ "DoubleSequence", "structtesting_1_1internal_1_1_double_sequence.html", null ], + [ "DoubleSequence< false, IndexSequence< I... >, sizeofT >", "structtesting_1_1internal_1_1_double_sequence_3_01false_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4.html", "structtesting_1_1internal_1_1_double_sequence_3_01false_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4" ], + [ "DoubleSequence< true, IndexSequence< I... >, sizeofT >", "structtesting_1_1internal_1_1_double_sequence_3_01true_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4.html", "structtesting_1_1internal_1_1_double_sequence_3_01true_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4" ], + [ "ElemFromList", "structtesting_1_1internal_1_1_elem_from_list.html", null ], + [ "ElemFromList< N, IndexSequence< I... >, T... >", "structtesting_1_1internal_1_1_elem_from_list_3_01_n_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01_t_8_8_8_01_4.html", null ], + [ "ElemFromListImpl", "structtesting_1_1internal_1_1_elem_from_list_impl.html", null ], + [ "ElemFromListImpl< T, I, I >", "structtesting_1_1internal_1_1_elem_from_list_impl_3_01_t_00_01_i_00_01_i_01_4.html", "structtesting_1_1internal_1_1_elem_from_list_impl_3_01_t_00_01_i_00_01_i_01_4" ], + [ "EnableIf", "structtesting_1_1internal_1_1_enable_if.html", null ], + [ "EnableIf< true >", "structtesting_1_1internal_1_1_enable_if_3_01true_01_4.html", "structtesting_1_1internal_1_1_enable_if_3_01true_01_4" ], + [ "EqHelper", "classtesting_1_1internal_1_1_eq_helper.html", null ], + [ "EqHelper< true >", "classtesting_1_1internal_1_1_eq_helper_3_01true_01_4.html", null ], + [ "faketype", "structtesting_1_1internal_1_1faketype.html", null ], + [ "FlatTuple", "classtesting_1_1internal_1_1_flat_tuple.html", "classtesting_1_1internal_1_1_flat_tuple" ], + [ "FlatTupleBase", "structtesting_1_1internal_1_1_flat_tuple_base.html", null ], + [ "FlatTupleBase< FlatTuple< T... >, IndexSequence< Idx... > >", "structtesting_1_1internal_1_1_flat_tuple_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_index_sequence_3_01_idx_8_8_8_01_4_01_4.html", "structtesting_1_1internal_1_1_flat_tuple_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_index_sequence_3_01_idx_8_8_8_01_4_01_4" ], + [ "FlatTupleElemBase", "structtesting_1_1internal_1_1_flat_tuple_elem_base.html", null ], + [ "FlatTupleElemBase< FlatTuple< T... >, I >", "structtesting_1_1internal_1_1_flat_tuple_elem_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_i_01_4.html", "structtesting_1_1internal_1_1_flat_tuple_elem_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_i_01_4" ], + [ "FloatingPoint", "classtesting_1_1internal_1_1_floating_point.html", "classtesting_1_1internal_1_1_floating_point" ], + [ "FormatForComparison", "classtesting_1_1internal_1_1_format_for_comparison.html", null ], + [ "FormatForComparison< ToPrint[N], OtherOperand >", "classtesting_1_1internal_1_1_format_for_comparison_3_01_to_print[_n]_00_01_other_operand_01_4.html", null ], + [ "GTestLog", "classtesting_1_1internal_1_1_g_test_log.html", "classtesting_1_1internal_1_1_g_test_log" ], + [ "GTestMutexLock", "classtesting_1_1internal_1_1_g_test_mutex_lock.html", "classtesting_1_1internal_1_1_g_test_mutex_lock" ], + [ "IgnoredValue", "classtesting_1_1internal_1_1_ignored_value.html", "classtesting_1_1internal_1_1_ignored_value" ], + [ "ImplicitlyConvertible", "classtesting_1_1internal_1_1_implicitly_convertible.html", null ], + [ "IndexSequence", "structtesting_1_1internal_1_1_index_sequence.html", "structtesting_1_1internal_1_1_index_sequence" ], + [ "is_same", "structtesting_1_1internal_1_1is__same.html", null ], + [ "is_same< T, T >", "structtesting_1_1internal_1_1is__same_3_01_t_00_01_t_01_4.html", null ], + [ "IsAProtocolMessage", "structtesting_1_1internal_1_1_is_a_protocol_message.html", null ], + [ "IsHashTable", "structtesting_1_1internal_1_1_is_hash_table.html", null ], + [ "IsRecursiveContainer", "structtesting_1_1internal_1_1_is_recursive_container.html", null ], + [ "IsRecursiveContainerImpl", "structtesting_1_1internal_1_1_is_recursive_container_impl.html", null ], + [ "IsRecursiveContainerImpl< C, false >", "structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01false_01_4.html", null ], + [ "IsRecursiveContainerImpl< C, true >", "structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01true_01_4.html", "structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01true_01_4" ], + [ "IsSame", "structtesting_1_1internal_1_1_is_same.html", "structtesting_1_1internal_1_1_is_same" ], + [ "IsSame< T, T >", "structtesting_1_1internal_1_1_is_same_3_01_t_00_01_t_01_4.html", "structtesting_1_1internal_1_1_is_same_3_01_t_00_01_t_01_4" ], + [ "IteratorTraits", "structtesting_1_1internal_1_1_iterator_traits.html", "structtesting_1_1internal_1_1_iterator_traits" ], + [ "IteratorTraits< const T * >", "structtesting_1_1internal_1_1_iterator_traits_3_01const_01_t_01_5_01_4.html", "structtesting_1_1internal_1_1_iterator_traits_3_01const_01_t_01_5_01_4" ], + [ "IteratorTraits< T * >", "structtesting_1_1internal_1_1_iterator_traits_3_01_t_01_5_01_4.html", "structtesting_1_1internal_1_1_iterator_traits_3_01_t_01_5_01_4" ], + [ "MakeIndexSequence", "structtesting_1_1internal_1_1_make_index_sequence.html", null ], + [ "MakeIndexSequence< 0 >", "structtesting_1_1internal_1_1_make_index_sequence_3_010_01_4.html", null ], + [ "Mutex", "classtesting_1_1internal_1_1_mutex.html", "classtesting_1_1internal_1_1_mutex" ], + [ "NativeArray", "classtesting_1_1internal_1_1_native_array.html", "classtesting_1_1internal_1_1_native_array" ], + [ "ParameterizedTestFactory", "classtesting_1_1internal_1_1_parameterized_test_factory.html", "classtesting_1_1internal_1_1_parameterized_test_factory" ], + [ "ParameterizedTestSuiteInfo", "classtesting_1_1internal_1_1_parameterized_test_suite_info.html", "classtesting_1_1internal_1_1_parameterized_test_suite_info" ], + [ "ParameterizedTestSuiteInfoBase", "classtesting_1_1internal_1_1_parameterized_test_suite_info_base.html", "classtesting_1_1internal_1_1_parameterized_test_suite_info_base" ], + [ "ParameterizedTestSuiteRegistry", "classtesting_1_1internal_1_1_parameterized_test_suite_registry.html", "classtesting_1_1internal_1_1_parameterized_test_suite_registry" ], + [ "ParamGenerator", "classtesting_1_1internal_1_1_param_generator.html", "classtesting_1_1internal_1_1_param_generator" ], + [ "ParamGeneratorInterface", "classtesting_1_1internal_1_1_param_generator_interface.html", "classtesting_1_1internal_1_1_param_generator_interface" ], + [ "ParamIterator", "classtesting_1_1internal_1_1_param_iterator.html", "classtesting_1_1internal_1_1_param_iterator" ], + [ "ParamIteratorInterface", "classtesting_1_1internal_1_1_param_iterator_interface.html", "classtesting_1_1internal_1_1_param_iterator_interface" ], + [ "ParamNameGenFunc", "structtesting_1_1internal_1_1_param_name_gen_func.html", "structtesting_1_1internal_1_1_param_name_gen_func" ], + [ "Random", "classtesting_1_1internal_1_1_random.html", "classtesting_1_1internal_1_1_random" ], + [ "RangeGenerator", "classtesting_1_1internal_1_1_range_generator.html", "classtesting_1_1internal_1_1_range_generator" ], + [ "RE", "classtesting_1_1internal_1_1_r_e.html", "classtesting_1_1internal_1_1_r_e" ], + [ "RelationToSourceCopy", "structtesting_1_1internal_1_1_relation_to_source_copy.html", null ], + [ "RelationToSourceReference", "structtesting_1_1internal_1_1_relation_to_source_reference.html", null ], + [ "RemoveConst", "structtesting_1_1internal_1_1_remove_const.html", "structtesting_1_1internal_1_1_remove_const" ], + [ "RemoveConst< const T >", "structtesting_1_1internal_1_1_remove_const_3_01const_01_t_01_4.html", "structtesting_1_1internal_1_1_remove_const_3_01const_01_t_01_4" ], + [ "RemoveConst< const T[N]>", "structtesting_1_1internal_1_1_remove_const_3_01const_01_t[_n]_4.html", "structtesting_1_1internal_1_1_remove_const_3_01const_01_t[_n]_4" ], + [ "RemoveReference", "structtesting_1_1internal_1_1_remove_reference.html", "structtesting_1_1internal_1_1_remove_reference" ], + [ "RemoveReference< T & >", "structtesting_1_1internal_1_1_remove_reference_3_01_t_01_6_01_4.html", "structtesting_1_1internal_1_1_remove_reference_3_01_t_01_6_01_4" ], + [ "StaticAssertTypeEqHelper", "structtesting_1_1internal_1_1_static_assert_type_eq_helper.html", null ], + [ "StaticAssertTypeEqHelper< T, T >", "structtesting_1_1internal_1_1_static_assert_type_eq_helper_3_01_t_00_01_t_01_4.html", "structtesting_1_1internal_1_1_static_assert_type_eq_helper_3_01_t_00_01_t_01_4" ], + [ "SuiteApiResolver", "structtesting_1_1internal_1_1_suite_api_resolver.html", "structtesting_1_1internal_1_1_suite_api_resolver" ], + [ "TestFactoryBase", "classtesting_1_1internal_1_1_test_factory_base.html", "classtesting_1_1internal_1_1_test_factory_base" ], + [ "TestFactoryImpl", "classtesting_1_1internal_1_1_test_factory_impl.html", "classtesting_1_1internal_1_1_test_factory_impl" ], + [ "TestMetaFactory", "classtesting_1_1internal_1_1_test_meta_factory.html", "classtesting_1_1internal_1_1_test_meta_factory" ], + [ "TestMetaFactoryBase", "classtesting_1_1internal_1_1_test_meta_factory_base.html", "classtesting_1_1internal_1_1_test_meta_factory_base" ], + [ "ThreadLocal", "classtesting_1_1internal_1_1_thread_local.html", "classtesting_1_1internal_1_1_thread_local" ], + [ "TypeIdHelper", "classtesting_1_1internal_1_1_type_id_helper.html", null ], + [ "TypeWithSize", "classtesting_1_1internal_1_1_type_with_size.html", "classtesting_1_1internal_1_1_type_with_size" ], + [ "TypeWithSize< 4 >", "classtesting_1_1internal_1_1_type_with_size_3_014_01_4.html", "classtesting_1_1internal_1_1_type_with_size_3_014_01_4" ], + [ "TypeWithSize< 8 >", "classtesting_1_1internal_1_1_type_with_size_3_018_01_4.html", "classtesting_1_1internal_1_1_type_with_size_3_018_01_4" ], + [ "UniversalPrinter", "classtesting_1_1internal_1_1_universal_printer.html", null ], + [ "UniversalPrinter< T & >", "classtesting_1_1internal_1_1_universal_printer_3_01_t_01_6_01_4.html", null ], + [ "UniversalPrinter< T[N]>", "classtesting_1_1internal_1_1_universal_printer_3_01_t[_n]_4.html", null ], + [ "UniversalTersePrinter", "classtesting_1_1internal_1_1_universal_terse_printer.html", null ], + [ "UniversalTersePrinter< char * >", "classtesting_1_1internal_1_1_universal_terse_printer_3_01char_01_5_01_4.html", null ], + [ "UniversalTersePrinter< const char * >", "classtesting_1_1internal_1_1_universal_terse_printer_3_01const_01char_01_5_01_4.html", null ], + [ "UniversalTersePrinter< const wchar_t * >", "classtesting_1_1internal_1_1_universal_terse_printer_3_01const_01wchar__t_01_5_01_4.html", null ], + [ "UniversalTersePrinter< T & >", "classtesting_1_1internal_1_1_universal_terse_printer_3_01_t_01_6_01_4.html", null ], + [ "UniversalTersePrinter< T[N]>", "classtesting_1_1internal_1_1_universal_terse_printer_3_01_t[_n]_4.html", null ], + [ "UniversalTersePrinter< wchar_t * >", "classtesting_1_1internal_1_1_universal_terse_printer_3_01wchar__t_01_5_01_4.html", null ], + [ "ValueArray", "classtesting_1_1internal_1_1_value_array.html", "classtesting_1_1internal_1_1_value_array" ], + [ "ValuesInIteratorRangeGenerator", "classtesting_1_1internal_1_1_values_in_iterator_range_generator.html", "classtesting_1_1internal_1_1_values_in_iterator_range_generator" ], + [ "WrapPrinterType", "structtesting_1_1internal_1_1_wrap_printer_type.html", null ] +]; \ No newline at end of file diff --git a/doc/html/namespacetesting_1_1internal2.html b/doc/html/namespacetesting_1_1internal2.html new file mode 100644 index 0000000..a60cc92 --- /dev/null +++ b/doc/html/namespacetesting_1_1internal2.html @@ -0,0 +1,285 @@ + + + + + + + +uTL: testing::internal2 Namespace Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    testing::internal2 Namespace Reference
    +
    +
    + + + + + + + + +

    +Classes

    class  TypeWithoutFormatter
     
    class  TypeWithoutFormatter< T, kConvertibleToInteger >
     
    class  TypeWithoutFormatter< T, kProtobuf >
     
    + + + +

    +Enumerations

    enum  TypeKind { kProtobuf, +kConvertibleToInteger, +kOtherType + }
     
    + + + + + + + + +

    +Functions

    void PrintBytesInObjectTo (const unsigned char *obj_bytes, size_t count, ostream *os)
     
    GTEST_API_ void PrintBytesInObjectTo (const unsigned char *obj_bytes, size_t count, ::std::ostream *os)
     
    template<typename Char , typename CharTraits , typename T >
    ::std::basic_ostream< Char, CharTraits > & operator<< (::std::basic_ostream< Char, CharTraits > &os, const T &x)
     
    + + + +

    +Variables

    const size_t kProtobufOneLinerMaxLength = 50
     
    +

    Enumeration Type Documentation

    + +

    ◆ TypeKind

    + +
    +
    + + + + +
    Enumerator
    kProtobuf 
    kConvertibleToInteger 
    kOtherType 
    + +

    Definition at line 8164 of file gtest.h.

    + +
    +
    +

    Function Documentation

    + +

    ◆ operator<<()

    + +
    +
    +
    +template<typename Char , typename CharTraits , typename T >
    + + + + + + + + + + + + + + + + + + +
    ::std::basic_ostream<Char, CharTraits>& testing::internal2::operator<< (::std::basic_ostream< Char, CharTraits > & os,
    const T & x 
    )
    +
    + +

    Definition at line 8261 of file gtest.h.

    + +
    +
    + +

    ◆ PrintBytesInObjectTo() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    GTEST_API_ void testing::internal2::PrintBytesInObjectTo (const unsigned char * obj_bytes,
    size_t count,
    ::std::ostream * os 
    )
    +
    + +
    +
    + +

    ◆ PrintBytesInObjectTo() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void testing::internal2::PrintBytesInObjectTo (const unsigned char * obj_bytes,
    size_t count,
    ostream * os 
    )
    +
    + +

    Definition at line 11112 of file gtest-all.cc.

    + +
    +
    +

    Variable Documentation

    + +

    ◆ kProtobufOneLinerMaxLength

    + +
    +
    + + + + +
    const size_t testing::internal2::kProtobufOneLinerMaxLength = 50
    +
    + +

    Definition at line 8193 of file gtest.h.

    + +
    +
    +
    +
    + + + + diff --git a/doc/html/namespacetesting_1_1internal2.js b/doc/html/namespacetesting_1_1internal2.js new file mode 100644 index 0000000..9e33da6 --- /dev/null +++ b/doc/html/namespacetesting_1_1internal2.js @@ -0,0 +1,6 @@ +var namespacetesting_1_1internal2 = +[ + [ "TypeWithoutFormatter", "classtesting_1_1internal2_1_1_type_without_formatter.html", null ], + [ "TypeWithoutFormatter< T, kConvertibleToInteger >", "classtesting_1_1internal2_1_1_type_without_formatter_3_01_t_00_01k_convertible_to_integer_01_4.html", null ], + [ "TypeWithoutFormatter< T, kProtobuf >", "classtesting_1_1internal2_1_1_type_without_formatter_3_01_t_00_01k_protobuf_01_4.html", null ] +]; \ No newline at end of file diff --git a/doc/html/namespacetesting_1_1internal_1_1edit__distance.html b/doc/html/namespacetesting_1_1internal_1_1edit__distance.html new file mode 100644 index 0000000..d4bb021 --- /dev/null +++ b/doc/html/namespacetesting_1_1internal_1_1edit__distance.html @@ -0,0 +1,241 @@ + + + + + + + +uTL: testing::internal::edit_distance Namespace Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    testing::internal::edit_distance Namespace Reference
    +
    +
    + + + + +

    +Enumerations

    enum  EditType { kMatch, +kAdd, +kRemove, +kReplace + }
     
    + + + + + + + +

    +Functions

    GTEST_API_ std::vector< EditTypeCalculateOptimalEdits (const std::vector< size_t > &left, const std::vector< size_t > &right)
     
    GTEST_API_ std::vector< EditTypeCalculateOptimalEdits (const std::vector< std::string > &left, const std::vector< std::string > &right)
     
    GTEST_API_ std::string CreateUnifiedDiff (const std::vector< std::string > &left, const std::vector< std::string > &right, size_t context=2)
     
    +

    Enumeration Type Documentation

    + +

    ◆ EditType

    + +
    +
    + + + + + +
    Enumerator
    kMatch 
    kAdd 
    kRemove 
    kReplace 
    + +

    Definition at line 6605 of file gtest.h.

    + +
    +
    +

    Function Documentation

    + +

    ◆ CalculateOptimalEdits() [1/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    GTEST_API_ std::vector<EditType> testing::internal::edit_distance::CalculateOptimalEdits (const std::vector< size_t > & left,
    const std::vector< size_t > & right 
    )
    +
    + +
    +
    + +

    ◆ CalculateOptimalEdits() [2/2]

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    GTEST_API_ std::vector<EditType> testing::internal::edit_distance::CalculateOptimalEdits (const std::vector< std::string > & left,
    const std::vector< std::string > & right 
    )
    +
    + +
    +
    + +

    ◆ CreateUnifiedDiff()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    GTEST_API_ std::string testing::internal::edit_distance::CreateUnifiedDiff (const std::vector< std::string > & left,
    const std::vector< std::string > & right,
    size_t context = 2 
    )
    +
    + +
    +
    +
    +
    + + + + diff --git a/doc/html/namespacetesting_1_1internal_1_1posix.html b/doc/html/namespacetesting_1_1internal_1_1posix.html new file mode 100644 index 0000000..a71e2eb --- /dev/null +++ b/doc/html/namespacetesting_1_1internal_1_1posix.html @@ -0,0 +1,808 @@ + + + + + + + +uTL: testing::internal::posix Namespace Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    testing::internal::posix Namespace Reference
    +
    +
    + + + + +

    +Typedefs

    typedef struct stat StatStruct
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    int FileNo (FILE *file)
     
    int IsATTY (int fd)
     
    int Stat (const char *path, StatStruct *buf)
     
    int StrCaseCmp (const char *s1, const char *s2)
     
    char * StrDup (const char *src)
     
    int RmDir (const char *dir)
     
    bool IsDir (const StatStruct &st)
     
    const char * StrNCpy (char *dest, const char *src, size_t n)
     
    int ChDir (const char *dir)
     
    FILE * FOpen (const char *path, const char *mode)
     
    FILE * FReopen (const char *path, const char *mode, FILE *stream)
     
    FILE * FDOpen (int fd, const char *mode)
     
    int FClose (FILE *fp)
     
    int Read (int fd, void *buf, unsigned int count)
     
    int Write (int fd, const void *buf, unsigned int count)
     
    int Close (int fd)
     
    const char * StrError (int errnum)
     
    const char * GetEnv (const char *name)
     
    void Abort ()
     
    +

    Typedef Documentation

    + +

    ◆ StatStruct

    + +
    +
    + + + + +
    typedef struct stat testing::internal::posix::StatStruct
    +
    + +

    Definition at line 2320 of file gtest.h.

    + +
    +
    +

    Function Documentation

    + +

    ◆ Abort()

    + +
    +
    + + + + + +
    + + + + + + + +
    void testing::internal::posix::Abort ()
    +
    +inline
    +
    + +

    Definition at line 2392 of file gtest.h.

    + +
    +
    + +

    ◆ ChDir()

    + +
    +
    + + + + + +
    + + + + + + + + +
    int testing::internal::posix::ChDir (const char * dir)
    +
    +inline
    +
    + +

    Definition at line 2347 of file gtest.h.

    + +
    +
    + +

    ◆ Close()

    + +
    +
    + + + + + +
    + + + + + + + + +
    int testing::internal::posix::Close (int fd)
    +
    +inline
    +
    + +

    Definition at line 2366 of file gtest.h.

    + +
    +
    + +

    ◆ FClose()

    + +
    +
    + + + + + +
    + + + + + + + + +
    int testing::internal::posix::FClose (FILE * fp)
    +
    +inline
    +
    + +

    Definition at line 2358 of file gtest.h.

    + +
    +
    + +

    ◆ FDOpen()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    FILE* testing::internal::posix::FDOpen (int fd,
    const char * mode 
    )
    +
    +inline
    +
    + +

    Definition at line 2356 of file gtest.h.

    + +
    +
    + +

    ◆ FileNo()

    + +
    +
    + + + + + +
    + + + + + + + + +
    int testing::internal::posix::FileNo (FILE * file)
    +
    +inline
    +
    + +

    Definition at line 2322 of file gtest.h.

    + +
    +
    + +

    ◆ FOpen()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    FILE* testing::internal::posix::FOpen (const char * path,
    const char * mode 
    )
    +
    +inline
    +
    + +

    Definition at line 2349 of file gtest.h.

    + +
    +
    + +

    ◆ FReopen()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    FILE* testing::internal::posix::FReopen (const char * path,
    const char * mode,
    FILE * stream 
    )
    +
    +inline
    +
    + +

    Definition at line 2353 of file gtest.h.

    + +
    +
    + +

    ◆ GetEnv()

    + +
    +
    + + + + + +
    + + + + + + + + +
    const char* testing::internal::posix::GetEnv (const char * name)
    +
    +inline
    +
    + +

    Definition at line 2369 of file gtest.h.

    + +
    +
    + +

    ◆ IsATTY()

    + +
    +
    + + + + + +
    + + + + + + + + +
    int testing::internal::posix::IsATTY (int fd)
    +
    +inline
    +
    + +

    Definition at line 2323 of file gtest.h.

    + +
    +
    + +

    ◆ IsDir()

    + +
    +
    + + + + + +
    + + + + + + + + +
    bool testing::internal::posix::IsDir (const StatStructst)
    +
    +inline
    +
    + +

    Definition at line 2330 of file gtest.h.

    + +
    +
    + +

    ◆ Read()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int testing::internal::posix::Read (int fd,
    void * buf,
    unsigned int count 
    )
    +
    +inline
    +
    + +

    Definition at line 2360 of file gtest.h.

    + +
    +
    + +

    ◆ RmDir()

    + +
    +
    + + + + + +
    + + + + + + + + +
    int testing::internal::posix::RmDir (const char * dir)
    +
    +inline
    +
    + +

    Definition at line 2329 of file gtest.h.

    + +
    +
    + +

    ◆ Stat()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    int testing::internal::posix::Stat (const char * path,
    StatStructbuf 
    )
    +
    +inline
    +
    + +

    Definition at line 2324 of file gtest.h.

    + +
    +
    + +

    ◆ StrCaseCmp()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    int testing::internal::posix::StrCaseCmp (const char * s1,
    const char * s2 
    )
    +
    +inline
    +
    + +

    Definition at line 2325 of file gtest.h.

    + +
    +
    + +

    ◆ StrDup()

    + +
    +
    + + + + + +
    + + + + + + + + +
    char* testing::internal::posix::StrDup (const char * src)
    +
    +inline
    +
    + +

    Definition at line 2328 of file gtest.h.

    + +
    +
    + +

    ◆ StrError()

    + +
    +
    + + + + + +
    + + + + + + + + +
    const char* testing::internal::posix::StrError (int errnum)
    +
    +inline
    +
    + +

    Definition at line 2367 of file gtest.h.

    + +
    +
    + +

    ◆ StrNCpy()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    const char* testing::internal::posix::StrNCpy (char * dest,
    const char * src,
    size_t n 
    )
    +
    +inline
    +
    + +

    Definition at line 2338 of file gtest.h.

    + +
    +
    + +

    ◆ Write()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    int testing::internal::posix::Write (int fd,
    const void * buf,
    unsigned int count 
    )
    +
    +inline
    +
    + +

    Definition at line 2363 of file gtest.h.

    + +
    +
    +
    +
    + + + + diff --git a/doc/html/namespacetesting__internal.html b/doc/html/namespacetesting__internal.html new file mode 100644 index 0000000..ab833a9 --- /dev/null +++ b/doc/html/namespacetesting__internal.html @@ -0,0 +1,147 @@ + + + + + + + +uTL: testing_internal Namespace Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    testing_internal Namespace Reference
    +
    +
    + + + + + +

    +Functions

    template<typename T >
    void DefaultPrintNonContainerTo (const T &value, ::std::ostream *os)
     
    +

    Function Documentation

    + +

    ◆ DefaultPrintNonContainerTo()

    + +
    +
    +
    +template<typename T >
    + + + + + + + + + + + + + + + + + + +
    void testing_internal::DefaultPrintNonContainerTo (const T & value,
    ::std::ostream * os 
    )
    +
    + +

    Definition at line 8289 of file gtest.h.

    + +
    +
    +
    +
    + + + + diff --git a/doc/html/namespaceutl.html b/doc/html/namespaceutl.html new file mode 100644 index 0000000..d85602b --- /dev/null +++ b/doc/html/namespaceutl.html @@ -0,0 +1,3154 @@ + + + + + + + +uTL: utl Namespace Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + + +
    + +

    STL's core language concepts. +More...

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Namespaces

     _1wire_i_det
     
     common_impl
     
     detail
     
     details
     
     i2c_i_details
     
     idx_dev_details
     
     idxdev_it_details
     
     in_dev_details
     
     inbuf_dev_details
     
     indev_it_details
     
     meta
     
     out_dev_details
     
     outdev_it_details
     
     spi
     Abstract base class for spi bus.
     
     spi_i_details
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Classes

    class  _1wire_i
     Template base class for 1-wire communication interface using CRTP. More...
     
    class  _1wire_i< virtual_tag >
     A virtual base class implementation. More...
     
    class  _1wire_id_t
     
    class  _1wire_uart_i
     1-wire UART interface template class using CRTP Using the private virtual interface we provide the interface from _1wire_i<> More...
     
    class  _1wire_uart_i< virtual_tag >
     A virtual base class interface implementation. Using the private virtual interface we provide the interface from _1wire_i<virtual_tag> More...
     
    struct  array
     A standard container for storing a fixed size sequence of elements. More...
     
    struct  array_traits
     array container traits helper More...
     
    struct  array_traits< _Tp, 0 >
     
    struct  bidirectional_iterator_tag
     
    struct  contiguous_iterator_tag
     
    struct  crtp_tag
     CRTP support tag type. More...
     
    struct  dev_iterator_traits
     Device iterator collection. More...
     
    struct  forward_iterator_tag
     
    class  i2c_bb_i
     A bit banking implementation of i2c bus inherited from i2c_i base class. More...
     
    class  i2c_bb_i< virtual_tag >
     A virtual base class interface specialization. Using the private virtual interface we provide the interface from i2c_i<virtual_tag> More...
     
    class  i2c_i
     Abstract base class for i2c bus. More...
     
    class  i2c_i< virtual_tag >
     A virtual base class specialization. More...
     
    struct  id_t
     A standard container for storing IDs as a fixed size sequence of bytes. This type is based on etl::array Meets the requirements of: container, reversible container, sequence. Sets support random access iterators. More...
     
    struct  id_traits
     id container traits helper More...
     
    struct  id_traits< _Tp, 0 >
     
    class  idx_dev
     Abstract base class for indexed devices. More...
     
    class  idx_dev< virtual_tag, data_t, idx_t, N >
     A virtual base class specialization. More...
     
    class  in_dev
     Abstract base class for input devices. More...
     
    class  in_dev< virtual_tag, data_t, streamsize >
     A virtual base class specialization. More...
     
    class  inbuf_dev
     Abstract base class for input buffered devices. More...
     
    class  inbuf_dev< virtual_tag, data_t, streamsize >
     A virtual base class specialization. More...
     
    class  indev_it
     Input device iterator type. We "future call" interface methods from owner class to provide iterator functionality. More...
     
    struct  input_iterator_tag
     
    class  iodev_it
     Indexed device iterator type. We "future call" interface methods from owner class to provide iterator functionality. More...
     
    struct  is_invocable
     std::is_invocable trait for C++11 More...
     
    struct  is_invocable_r
     std::is_invocable_r trait for C++11 More...
     
    class  istreamdev_it
     
    class  ostream_dev
     Abstract base classes for output stream devices. More...
     
    class  ostream_dev< virtual_tag, data_t >
     
    class  ostreamdev_it
     
    class  out_dev
     Abstract base classes for output devices. More...
     
    class  out_dev< virtual_tag, data_t, streamsize >
     A virtual base class specialization. More...
     
    class  outdev_it
     Output device iterator type. We "future call" interface methods from owner class to provide iterator functionality. More...
     
    struct  output_iterator_tag
     Iterator tags [std.iterator.tags] Extension: contiguous_iterator_tag for denoting contiguous iterators. More...
     
    struct  random_access_iterator_tag
     
    class  spi_bb_i
     A bit banking implementation of spi bus inherited from spi_i base class. More...
     
    class  spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >
     A virtual base class interface specialization. Using the private virtual interface we provide the interface from spi_i<virtual_tag> More...
     
    class  spi_i
     
    class  spi_i< virtual_tag >
     A virtual base class implementation. More...
     
    struct  virtual_tag
     virtual support tag type More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Typedefs

    template<typename T >
    using remove_cvref_t = std::remove_cv_t< std::remove_reference_t< T > >
     
    template<typename T >
    using cref_ = const std::remove_reference_t< T > &
     
    template<typename T >
    using _ref_t = std::add_lvalue_reference_t< T >
     
    template<typename _T1 , typename _T2 , typename _Ret = _T1>
    using use_if_same_t = meta::eval< meta::enable_if< meta::same_< _T1, _T2 >::value, _Ret > >
     
    template<typename... Ts>
    using common_reference = common_impl::common_reference< Ts... >
     
    template<typename... Ts>
    using common_reference_t = meta::eval< common_reference< Ts... > >
     
    byte and word types
    using byte_t = uint8_t
     8 bits wide More...
     
    using word_t = uint16_t
     16 bits wide More...
     
    using dword_t = uint32_t
     
    size and index
    using size_t = std::size_t
     
    using index_t = size_t
     index_t and size_t mend to be interchangeable More...
     
    using ptrdiff_t = std::ptrdiff_t
     
    template<typename _Callable , typename... _Args>
    using invoke_result = detail::invoke_result_< is_invocable< _Callable, _Args... >::value, _Callable, _Args... >
     invoke_result (for C++14) More...
     
    template<typename _Callable , typename... _Args>
    using invoke_result_t = meta::eval< invoke_result< _Callable, _Args... > >
     invoke_result_t (for C++14) More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    template<typename _Tp , size_t _Nm>
    void swap (array< _Tp, _Nm > &lhs, array< _Tp, _Nm > &rhs) noexcept(noexcept(lhs.swap(rhs)))
     
    template<size_t _Int, typename _Tp , size_t _Nm>
    constexpr _Tp & get (array< _Tp, _Nm > &arr) noexcept
     
    template<size_t _Int, typename _Tp , size_t _Nm>
    constexpr _Tp && get (array< _Tp, _Nm > &&arr) noexcept
     
    template<size_t _Int, typename _Tp , size_t _Nm>
    constexpr const _Tp & get (const array< _Tp, _Nm > &arr) noexcept
     
    template<typename _Callable , typename... _Args>
    decltype(auto) invoke (_Callable &&fn, _Args &&... args)
     Invoke a callable object (for C++14) More...
     
    Array comparisons.
    template<typename _Tp , size_t _Nm>
    bool operator== (const array< _Tp, _Nm > &lhs, const array< _Tp, _Nm > &rhs)
     
    template<typename _Tp , size_t _Nm>
    bool operator!= (const array< _Tp, _Nm > &lhs, const array< _Tp, _Nm > &rhs)
     
    template<typename _Tp , size_t _Nm>
    bool operator< (const array< _Tp, _Nm > &lhs, const array< _Tp, _Nm > &rhs)
     
    template<typename _Tp , size_t _Nm>
    bool operator> (const array< _Tp, _Nm > &lhs, const array< _Tp, _Nm > &rhs)
     
    template<typename _Tp , size_t _Nm>
    bool operator<= (const array< _Tp, _Nm > &lhs, const array< _Tp, _Nm > &rhs)
     
    template<typename _Tp , size_t _Nm>
    bool operator>= (const array< _Tp, _Nm > &lhs, const array< _Tp, _Nm > &rhs)
     
    device ID comparisons.
    template<typename _Tp , size_t _Nm>
    bool operator== (const id_t< _Tp, _Nm > &lhs, const id_t< _Tp, _Nm > &rhs)
     
    template<typename _Tp , size_t _Nm>
    bool operator!= (const id_t< _Tp, _Nm > &lhs, const id_t< _Tp, _Nm > &rhs)
     
    template<typename _Tp , size_t _Nm>
    bool operator< (const id_t< _Tp, _Nm > &lhs, const id_t< _Tp, _Nm > &rhs)
     
    template<typename _Tp , size_t _Nm>
    bool operator> (const id_t< _Tp, _Nm > &lhs, const id_t< _Tp, _Nm > &rhs)
     
    template<typename _Tp , size_t _Nm>
    bool operator<= (const id_t< _Tp, _Nm > &lhs, const id_t< _Tp, _Nm > &rhs)
     
    template<typename _Tp , size_t _Nm>
    bool operator>= (const id_t< _Tp, _Nm > &lhs, const id_t< _Tp, _Nm > &rhs)
     
    template<typename _C1 , typename _D1 , typename _C2 , typename _D2 >
    bool operator== (const istreamdev_it< _C1, _D1 > &lhs, const istreamdev_it< _C2, _D2 > &rhs) noexcept
     Equality comparison template so that comparison between cv-qualified and non-cv-qualified iterators be valid. More...
     
    template<typename _C1 , typename _D1 , typename _C2 , typename _D2 >
    bool operator!= (const istreamdev_it< _C1, _D1 > &lhs, const istreamdev_it< _C2, _D2 > &rhs) noexcept
     
    template<typename _Cont1 , typename _It1 , index_t _beg1, index_t _end1, typename _Cont2 , typename _It2 , index_t _beg2, index_t _end2>
    bool operator== (const outdev_it< _Cont1, _It1, _beg1, _end1 > &lhs, const outdev_it< _Cont2, _It2, _beg2, _end2 > &rhs) noexcept
     Equality comparison template so that comparison between cv-qualified and non-cv-qualified iterators be valid. More...
     
    template<typename _Cont1 , typename _It1 , index_t _beg1, index_t _end1, typename _Cont2 , typename _It2 , index_t _beg2, index_t _end2>
    bool operator!= (const outdev_it< _Cont1, _It1, _beg1, _end1 > &lhs, const outdev_it< _Cont2, _It2, _beg2, _end2 > &rhs) noexcept
     Inequality comparison template so that comparison between cv-qualified and non-cv-qualified iterators be valid. More...
     
    indev_it EqualityComparable && LessThanComparable requirements

    comparison template so that comparison between cv-qualified and non-cv-qualified iterators be valid

    +
    template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
    bool operator== (const indev_it< _Cont1, _It1, _beg1, _size1 > &x, const indev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept
     
    template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
    bool operator< (const indev_it< _Cont1, _It1, _beg1, _size1 > &x, const indev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept
     Less than. More...
     
    template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
    bool operator!= (const indev_it< _Cont1, _It1, _beg1, _size1 > &x, const indev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept
     
    template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
    bool operator<= (const indev_it< _Cont1, _It1, _beg1, _size1 > &x, const indev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept
     
    template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
    bool operator> (const indev_it< _Cont1, _It1, _beg1, _size1 > &x, const indev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept
     
    template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
    bool operator>= (const indev_it< _Cont1, _It1, _beg1, _size1 > &x, const indev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept
     
    template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
    bool operator== (const iodev_it< _Cont1, _It1, _beg1, _size1 > &x, const iodev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept
     
    template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
    bool operator< (const iodev_it< _Cont1, _It1, _beg1, _size1 > &x, const iodev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept
     Less than. More...
     
    template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
    bool operator!= (const iodev_it< _Cont1, _It1, _beg1, _size1 > &x, const iodev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept
     
    template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
    bool operator<= (const iodev_it< _Cont1, _It1, _beg1, _size1 > &x, const iodev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept
     
    template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
    bool operator> (const iodev_it< _Cont1, _It1, _beg1, _size1 > &x, const iodev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept
     
    template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
    bool operator>= (const iodev_it< _Cont1, _It1, _beg1, _size1 > &x, const iodev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept
     
    iterator arithmetic
    template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
    auto operator- (indev_it< _Cont1, _It1, _beg1, _size1 > &x, indev_it< _Cont1, _It1, _beg1, _size1 > &y) noexcept -> decltype(x.cursor() - y.cursor())
     
    template<typename _Cont , typename _It , index_t _beg, size_t _size>
    indev_it< _Cont, _It, _beg, _size > operator+ (typename _Cont::difference_type n, indev_it< _Cont, _It, _beg, _size > &it) noexcept
     
    template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
    auto operator- (iodev_it< _Cont1, _It1, _beg1, _size1 > &x, iodev_it< _Cont1, _It1, _beg1, _size1 > &y) noexcept -> decltype(x.cursor() - y.cursor())
     
    template<typename _Cont , typename _It , index_t _beg, size_t _size>
    iodev_it< _Cont, _It, _beg, _size > operator+ (typename _Cont::difference_type n, iodev_it< _Cont, _It, _beg, _size > &it) noexcept
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Variables

    template<class I >
    _utlConcept WeaklyIncrementable
     
    template<class T , class U >
    _utlConcept Same = meta::same_<T, U>::value
     
    template<class Derived , class Base >
    _utlConcept DerivedFrom
     
    template<class From , class To >
    _utlConcept ConvertibleTo = std::is_convertible<From, To>::value
     
    template<class T , class U >
    _utlConcept CommonReference
     
    template<class T , class U >
    _utlConcept Common
     
    template<class T >
    _utlConcept Integral = std::is_integral<T>::value
     
    template<class T >
    _utlConcept SignedIntegral = Integral<T> && std::is_signed<T>::value
     
    template<class T >
    _utlConcept UnsignedIntegral = Integral<T> && !std::is_signed<T>::value
     
    template<typename T >
    _utlConcept MoveAssignable = std::is_move_assignable<T>::value
     
    template<typename T >
    _utlConcept CopyAssignable = std::is_copy_assignable<T>::value
     
    template<class LHS , class RHS >
    _utlConcept Assignable
     
    template<class T >
    _utlConcept Destructible = std::is_nothrow_destructible<T>::value
     
    template<class T , class... Args>
    _utlConcept Constructible
     
    template<class T >
    _utlConcept DefaultConstructible = Constructible<T>
     
    template<class T >
    _utlConcept MoveConstructible
     
    template<class T >
    _utlConcept CopyConstructible
     
    template<class T >
    _utlConcept Movable
     
    template<class T >
    _utlConcept Copyable
     
    template<class B >
    _utlConcept Boolean
     
    template<class T , class U >
    _utlConcept WeaklyEqualityComparableWith
     
    template<class T >
    _utlConcept EqualityComparable = WeaklyEqualityComparableWith<T, T>
     
    template<class T , class U >
    _utlConcept EqualityComparableWith
     
    template<class T >
    _utlConcept StrictTotallyOrdered
     
    template<class T , class U >
    _utlConcept StrictTotallyOrderedWith
     
    template<class T >
    _utlConcept Semiregular = Copyable<T> && DefaultConstructible<T>
     
    template<class T >
    _utlConcept Regular = Semiregular<T> && EqualityComparable<T>
     
    template<class T >
    _utlConcept Scalar
     
    template<class T >
    _utlConcept Arithmetic
     
    template<class T >
    _utlConcept FloatingPoint
     
    template<class F , class... Args>
    _utlConcept Invocable = is_invocable<F, Args...>::value
     
    template<class F , class... Args>
    _utlConcept RegularInvocable = Invocable<F, Args...>
     
    template<class F , class... Args>
    _utlConcept Predicate
     
    template<class R , class T , class U >
    _utlConcept Relation
     
    template<class R , class T , class U >
    _utlConcept StrictWeakOrder = Relation<R, T, U>
     
    template<typename _Tp >
    constexpr bool Idx_dev = idx_dev_details::is_idx_dev_ <_Tp>::value
     
    template<typename _Tp >
    constexpr bool In_dev = in_dev_details::is_in_dev_ <_Tp>::value
     
    template<typename _Tp >
    constexpr bool Inbuf_dev = inbuf_dev_details::is_inbuf_dev_ <_Tp>::value
     
    template<typename _Tp >
    constexpr bool Out_dev = out_dev_details::is_out_dev_<_Tp>::value
     
    using is_swappable = std::is_swappable
     
    using is_swappable_with = std::is_swappable_with
     
    template<class T , class U >
    _utlConcept SwappableWith
     
    template<class T >
    _utlConcept Swappable = is_swappable_with<T, T>::type::value
     
    +

    Detailed Description

    +

    STL's core language concepts.

    +

    We provide std concepts in case host's stl does not provide them yet.

    +

    For more information

    See also
    https://en.cppreference.com/w/cpp/concepts
    +

    Typedef Documentation

    + +

    ◆ _ref_t

    + +
    +
    +
    +template<typename T >
    + + + + +
    using utl::_ref_t = typedef std::add_lvalue_reference_t<T>
    +
    + +

    Definition at line 48 of file stl.h.

    + +
    +
    + +

    ◆ byte_t

    + +
    +
    + + + + +
    using utl::byte_t = typedef uint8_t
    +
    + +

    8 bits wide

    + +

    Definition at line 31 of file types.h.

    + +
    +
    + +

    ◆ common_reference

    + +
    +
    +
    +template<typename... Ts>
    + + + + +
    using utl::common_reference = typedef common_impl::common_reference<Ts...>
    +
    + +

    Definition at line 281 of file stl.h.

    + +
    +
    + +

    ◆ common_reference_t

    + +
    +
    +
    +template<typename... Ts>
    + + + + +
    using utl::common_reference_t = typedef meta::eval< common_reference<Ts...> >
    +
    + +

    Definition at line 286 of file stl.h.

    + +
    +
    + +

    ◆ cref_

    + +
    +
    +
    +template<typename T >
    + + + + +
    using utl::cref_ = typedef const std::remove_reference_t<T>&
    +
    + +

    Definition at line 45 of file stl.h.

    + +
    +
    + +

    ◆ dword_t

    + +
    +
    + + + + +
    using utl::dword_t = typedef uint32_t
    +
    +

    32 bits wide

    + +

    Definition at line 33 of file types.h.

    + +
    +
    + +

    ◆ index_t

    + +
    +
    + + + + +
    using utl::index_t = typedef size_t
    +
    + +

    index_t and size_t mend to be interchangeable

    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/typelist.h.
    +
    +

    Definition at line 38 of file types.h.

    + +
    +
    + +

    ◆ invoke_result

    + +
    +
    +
    +template<typename _Callable , typename... _Args>
    + + + + +
    using utl::invoke_result = typedef detail::invoke_result_< is_invocable<_Callable, _Args...>::value, _Callable, _Args... >
    +
    + +

    invoke_result (for C++14)

    + +

    Definition at line 174 of file invoke.h.

    + +
    +
    + +

    ◆ invoke_result_t

    + +
    +
    +
    +template<typename _Callable , typename... _Args>
    + + + + +
    using utl::invoke_result_t = typedef meta::eval < invoke_result<_Callable, _Args...> >
    +
    + +

    invoke_result_t (for C++14)

    + +

    Definition at line 180 of file invoke.h.

    + +
    +
    + +

    ◆ is_swappable

    + +
    +
    + + + + +
    using utl::is_swappable = typedef std::is_swappable
    +
    +

    Swappable, SwappableWith

    + +

    Definition at line 407 of file stl.h.

    + +
    +
    + +

    ◆ is_swappable_with

    + +
    +
    + + + + +
    using utl::is_swappable_with = typedef std::is_swappable_with
    +
    + +

    Definition at line 408 of file stl.h.

    + +
    +
    + +

    ◆ ptrdiff_t

    + +
    +
    + + + + +
    using utl::ptrdiff_t = typedef std::ptrdiff_t
    +
    + +

    Definition at line 40 of file types.h.

    + +
    +
    + +

    ◆ remove_cvref_t

    + +
    +
    +
    +template<typename T >
    + + + + +
    using utl::remove_cvref_t = typedef std::remove_cv_t< std::remove_reference_t<T> >
    +
    + +

    Definition at line 42 of file stl.h.

    + +
    +
    + +

    ◆ size_t

    + +
    +
    + + + + +
    using utl::size_t = typedef std::size_t
    +
    + +

    Definition at line 37 of file types.h.

    + +
    +
    + +

    ◆ use_if_same_t

    + +
    +
    +
    +template<typename _T1 , typename _T2 , typename _Ret = _T1>
    + + + + +
    using utl::use_if_same_t = typedef meta::eval< meta::enable_if< meta::same_<_T1, _T2>::value, _Ret > >
    +
    + +

    Definition at line 55 of file stl.h.

    + +
    +
    + +

    ◆ word_t

    + +
    +
    + + + + +
    using utl::word_t = typedef uint16_t
    +
    + +

    16 bits wide

    + +

    Definition at line 32 of file types.h.

    + +
    +
    +

    Function Documentation

    + +

    ◆ get() [1/3]

    + +
    +
    +
    +template<size_t _Int, typename _Tp , size_t _Nm>
    + + + + + +
    + + + + + + + + +
    constexpr _Tp& utl::get (array< _Tp, _Nm > & arr)
    +
    +noexcept
    +
    + +

    Definition at line 220 of file array.h.

    + +
    +
    + +

    ◆ get() [2/3]

    + +
    +
    +
    +template<size_t _Int, typename _Tp , size_t _Nm>
    + + + + + +
    + + + + + + + + +
    constexpr _Tp&& utl::get (array< _Tp, _Nm > && arr)
    +
    +noexcept
    +
    + +

    Definition at line 226 of file array.h.

    + +
    +
    + +

    ◆ get() [3/3]

    + +
    +
    +
    +template<size_t _Int, typename _Tp , size_t _Nm>
    + + + + + +
    + + + + + + + + +
    constexpr const _Tp& utl::get (const array< _Tp, _Nm > & arr)
    +
    +noexcept
    +
    + +

    Definition at line 232 of file array.h.

    + +
    +
    + +

    ◆ invoke()

    + +
    +
    +
    +template<typename _Callable , typename... _Args>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    decltype(auto) utl::invoke (_Callable && fn,
    _Args &&... args 
    )
    +
    +inline
    +
    + +

    Invoke a callable object (for C++14)

    + +

    Definition at line 121 of file invoke.h.

    + +
    +
    + +

    ◆ operator!=() [1/6]

    + +
    +
    +
    +template<typename _Tp , size_t _Nm>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool utl::operator!= (const array< _Tp, _Nm > & lhs,
    const array< _Tp, _Nm > & rhs 
    )
    +
    +inline
    +
    + +

    Definition at line 186 of file array.h.

    + +
    +
    + +

    ◆ operator!=() [2/6]

    + +
    +
    +
    +template<typename _Tp , size_t _Nm>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool utl::operator!= (const id_t< _Tp, _Nm > & lhs,
    const id_t< _Tp, _Nm > & rhs 
    )
    +
    +inline
    +
    + +

    Definition at line 206 of file id.h.

    + +
    +
    + +

    ◆ operator!=() [3/6]

    + +
    +
    +
    +template<typename _C1 , typename _D1 , typename _C2 , typename _D2 >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool utl::operator!= (const istreamdev_it< _C1, _D1 > & lhs,
    const istreamdev_it< _C2, _D2 > & rhs 
    )
    +
    +inlinenoexcept
    +
    + +

    Definition at line 236 of file dev_iterators.h.

    + +
    +
    + +

    ◆ operator!=() [4/6]

    + +
    +
    +
    +template<typename _Cont1 , typename _It1 , index_t _beg1, index_t _end1, typename _Cont2 , typename _It2 , index_t _beg2, index_t _end2>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool utl::operator!= (const outdev_it< _Cont1, _It1, _beg1, _end1 > & lhs,
    const outdev_it< _Cont2, _It2, _beg2, _end2 > & rhs 
    )
    +
    +inlinenoexcept
    +
    + +

    Inequality comparison template so that comparison between cv-qualified and non-cv-qualified iterators be valid.

    +
    Parameters
    + + + +
    lhsLeft hand site iterator
    rhsRight hand site iterator
    +
    +
    +
    Returns
    True in inequality
    + +

    Definition at line 382 of file dev_iterators.h.

    + +
    +
    + +

    ◆ operator!=() [5/6]

    + +
    +
    +
    +template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool utl::operator!= (const indev_it< _Cont1, _It1, _beg1, _size1 > & x,
    const indev_it< _Cont2, _It2, _beg2, _size2 > & y 
    )
    +
    +inlinenoexcept
    +
    + +

    Definition at line 624 of file dev_iterators.h.

    + +
    +
    + +

    ◆ operator!=() [6/6]

    + +
    +
    +
    +template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool utl::operator!= (const iodev_it< _Cont1, _It1, _beg1, _size1 > & x,
    const iodev_it< _Cont2, _It2, _beg2, _size2 > & y 
    )
    +
    +inlinenoexcept
    +
    + +

    Definition at line 909 of file dev_iterators.h.

    + +
    +
    + +

    ◆ operator+() [1/2]

    + +
    +
    +
    +template<typename _Cont , typename _It , index_t _beg, size_t _size>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    indev_it<_Cont, _It, _beg, _size> utl::operator+ (typename _Cont::difference_type n,
    indev_it< _Cont, _It, _beg, _size > & it 
    )
    +
    +inlinenoexcept
    +
    + +

    Definition at line 659 of file dev_iterators.h.

    + +
    +
    + +

    ◆ operator+() [2/2]

    + +
    +
    +
    +template<typename _Cont , typename _It , index_t _beg, size_t _size>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    iodev_it<_Cont, _It, _beg, _size> utl::operator+ (typename _Cont::difference_type n,
    iodev_it< _Cont, _It, _beg, _size > & it 
    )
    +
    +inlinenoexcept
    +
    + +

    Definition at line 944 of file dev_iterators.h.

    + +
    +
    + +

    ◆ operator-() [1/2]

    + +
    +
    +
    +template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto utl::operator- (indev_it< _Cont1, _It1, _beg1, _size1 > & x,
    indev_it< _Cont1, _It1, _beg1, _size1 > & y 
    ) -> decltype (x.cursor() - y.cursor())
    +
    +inlinenoexcept
    +
    + +

    Definition at line 651 of file dev_iterators.h.

    + +
    +
    + +

    ◆ operator-() [2/2]

    + +
    +
    +
    +template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    auto utl::operator- (iodev_it< _Cont1, _It1, _beg1, _size1 > & x,
    iodev_it< _Cont1, _It1, _beg1, _size1 > & y 
    ) -> decltype (x.cursor() - y.cursor())
    +
    +inlinenoexcept
    +
    + +

    Definition at line 936 of file dev_iterators.h.

    + +
    +
    + +

    ◆ operator<() [1/4]

    + +
    +
    +
    +template<typename _Tp , size_t _Nm>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool utl::operator< (const array< _Tp, _Nm > & lhs,
    const array< _Tp, _Nm > & rhs 
    )
    +
    +inline
    +
    + +

    Definition at line 191 of file array.h.

    + +
    +
    + +

    ◆ operator<() [2/4]

    + +
    +
    +
    +template<typename _Tp , size_t _Nm>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool utl::operator< (const id_t< _Tp, _Nm > & lhs,
    const id_t< _Tp, _Nm > & rhs 
    )
    +
    +inline
    +
    + +

    Definition at line 211 of file id.h.

    + +
    +
    + +

    ◆ operator<() [3/4]

    + +
    +
    +
    +template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool utl::operator< (const indev_it< _Cont1, _It1, _beg1, _size1 > & x,
    const indev_it< _Cont2, _It2, _beg2, _size2 > & y 
    )
    +
    +inlinenoexcept
    +
    + +

    Less than.

    + +

    Definition at line 616 of file dev_iterators.h.

    + +
    +
    + +

    ◆ operator<() [4/4]

    + +
    +
    +
    +template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool utl::operator< (const iodev_it< _Cont1, _It1, _beg1, _size1 > & x,
    const iodev_it< _Cont2, _It2, _beg2, _size2 > & y 
    )
    +
    +inlinenoexcept
    +
    + +

    Less than.

    + +

    Definition at line 901 of file dev_iterators.h.

    + +
    +
    + +

    ◆ operator<=() [1/4]

    + +
    +
    +
    +template<typename _Tp , size_t _Nm>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool utl::operator<= (const array< _Tp, _Nm > & lhs,
    const array< _Tp, _Nm > & rhs 
    )
    +
    +inline
    +
    + +

    Definition at line 201 of file array.h.

    + +
    +
    + +

    ◆ operator<=() [2/4]

    + +
    +
    +
    +template<typename _Tp , size_t _Nm>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool utl::operator<= (const id_t< _Tp, _Nm > & lhs,
    const id_t< _Tp, _Nm > & rhs 
    )
    +
    +inline
    +
    + +

    Definition at line 222 of file id.h.

    + +
    +
    + +

    ◆ operator<=() [3/4]

    + +
    +
    +
    +template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool utl::operator<= (const indev_it< _Cont1, _It1, _beg1, _size1 > & x,
    const indev_it< _Cont2, _It2, _beg2, _size2 > & y 
    )
    +
    +inlinenoexcept
    +
    + +

    Definition at line 630 of file dev_iterators.h.

    + +
    +
    + +

    ◆ operator<=() [4/4]

    + +
    +
    +
    +template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool utl::operator<= (const iodev_it< _Cont1, _It1, _beg1, _size1 > & x,
    const iodev_it< _Cont2, _It2, _beg2, _size2 > & y 
    )
    +
    +inlinenoexcept
    +
    + +

    Definition at line 915 of file dev_iterators.h.

    + +
    +
    + +

    ◆ operator==() [1/6]

    + +
    +
    +
    +template<typename _Tp , size_t _Nm>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool utl::operator== (const array< _Tp, _Nm > & lhs,
    const array< _Tp, _Nm > & rhs 
    )
    +
    +inline
    +
    + +

    Definition at line 181 of file array.h.

    + +
    +
    + +

    ◆ operator==() [2/6]

    + +
    +
    +
    +template<typename _Tp , size_t _Nm>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool utl::operator== (const id_t< _Tp, _Nm > & lhs,
    const id_t< _Tp, _Nm > & rhs 
    )
    +
    +inline
    +
    + +

    Definition at line 201 of file id.h.

    + +
    +
    + +

    ◆ operator==() [3/6]

    + +
    +
    +
    +template<typename _C1 , typename _D1 , typename _C2 , typename _D2 >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool utl::operator== (const istreamdev_it< _C1, _D1 > & lhs,
    const istreamdev_it< _C2, _D2 > & rhs 
    )
    +
    +inlinenoexcept
    +
    + +

    Equality comparison template so that comparison between cv-qualified and non-cv-qualified iterators be valid.

    +
    Parameters
    + + + +
    lhsLeft hand site iterator
    rhsRight hand site iterator
    +
    +
    +
    Returns
    True in equality
    + +

    Definition at line 229 of file dev_iterators.h.

    + +
    +
    + +

    ◆ operator==() [4/6]

    + +
    +
    +
    +template<typename _Cont1 , typename _It1 , index_t _beg1, index_t _end1, typename _Cont2 , typename _It2 , index_t _beg2, index_t _end2>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool utl::operator== (const outdev_it< _Cont1, _It1, _beg1, _end1 > & lhs,
    const outdev_it< _Cont2, _It2, _beg2, _end2 > & rhs 
    )
    +
    +inlinenoexcept
    +
    + +

    Equality comparison template so that comparison between cv-qualified and non-cv-qualified iterators be valid.

    +
    Note
    The following are not requirements for output iterator. We provide them nevertheless. Required: The rhs and lhs MUST belong to the same owner or the result is undefined.
    +
    Parameters
    + + + +
    lhsLeft hand site iterator
    rhsRight hand site iterator
    +
    +
    +
    Returns
    True in equality
    + +

    Definition at line 366 of file dev_iterators.h.

    + +
    +
    + +

    ◆ operator==() [5/6]

    + +
    +
    +
    +template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool utl::operator== (const indev_it< _Cont1, _It1, _beg1, _size1 > & x,
    const indev_it< _Cont2, _It2, _beg2, _size2 > & y 
    )
    +
    +inlinenoexcept
    +
    +

    Equality

    + +

    Definition at line 608 of file dev_iterators.h.

    + +
    +
    + +

    ◆ operator==() [6/6]

    + +
    +
    +
    +template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool utl::operator== (const iodev_it< _Cont1, _It1, _beg1, _size1 > & x,
    const iodev_it< _Cont2, _It2, _beg2, _size2 > & y 
    )
    +
    +inlinenoexcept
    +
    +

    Equality

    + +

    Definition at line 893 of file dev_iterators.h.

    + +
    +
    + +

    ◆ operator>() [1/4]

    + +
    +
    +
    +template<typename _Tp , size_t _Nm>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool utl::operator> (const array< _Tp, _Nm > & lhs,
    const array< _Tp, _Nm > & rhs 
    )
    +
    +inline
    +
    + +

    Definition at line 196 of file array.h.

    + +
    +
    + +

    ◆ operator>() [2/4]

    + +
    +
    +
    +template<typename _Tp , size_t _Nm>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool utl::operator> (const id_t< _Tp, _Nm > & lhs,
    const id_t< _Tp, _Nm > & rhs 
    )
    +
    +inline
    +
    + +

    Definition at line 217 of file id.h.

    + +
    +
    + +

    ◆ operator>() [3/4]

    + +
    +
    +
    +template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool utl::operator> (const indev_it< _Cont1, _It1, _beg1, _size1 > & x,
    const indev_it< _Cont2, _It2, _beg2, _size2 > & y 
    )
    +
    +inlinenoexcept
    +
    + +

    Definition at line 636 of file dev_iterators.h.

    + +
    +
    + +

    ◆ operator>() [4/4]

    + +
    +
    +
    +template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool utl::operator> (const iodev_it< _Cont1, _It1, _beg1, _size1 > & x,
    const iodev_it< _Cont2, _It2, _beg2, _size2 > & y 
    )
    +
    +inlinenoexcept
    +
    + +

    Definition at line 921 of file dev_iterators.h.

    + +
    +
    + +

    ◆ operator>=() [1/4]

    + +
    +
    +
    +template<typename _Tp , size_t _Nm>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool utl::operator>= (const array< _Tp, _Nm > & lhs,
    const array< _Tp, _Nm > & rhs 
    )
    +
    +inline
    +
    + +

    Definition at line 207 of file array.h.

    + +
    +
    + +

    ◆ operator>=() [2/4]

    + +
    +
    +
    +template<typename _Tp , size_t _Nm>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool utl::operator>= (const id_t< _Tp, _Nm > & lhs,
    const id_t< _Tp, _Nm > & rhs 
    )
    +
    +inline
    +
    + +

    Definition at line 227 of file id.h.

    + +
    +
    + +

    ◆ operator>=() [3/4]

    + +
    +
    +
    +template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool utl::operator>= (const indev_it< _Cont1, _It1, _beg1, _size1 > & x,
    const indev_it< _Cont2, _It2, _beg2, _size2 > & y 
    )
    +
    +inlinenoexcept
    +
    + +

    Definition at line 642 of file dev_iterators.h.

    + +
    +
    + +

    ◆ operator>=() [4/4]

    + +
    +
    +
    +template<typename _Cont1 , typename _It1 , index_t _beg1, size_t _size1, typename _Cont2 , typename _It2 , index_t _beg2, size_t _size2>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool utl::operator>= (const iodev_it< _Cont1, _It1, _beg1, _size1 > & x,
    const iodev_it< _Cont2, _It2, _beg2, _size2 > & y 
    )
    +
    +inlinenoexcept
    +
    + +

    Definition at line 927 of file dev_iterators.h.

    + +
    +
    + +

    ◆ swap()

    + +
    +
    +
    +template<typename _Tp , size_t _Nm>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void utl::swap (array< _Tp, _Nm > & lhs,
    array< _Tp, _Nm > & rhs 
    )
    +
    +inlinenoexcept
    +
    + +

    Definition at line 214 of file array.h.

    + +
    +
    +

    Variable Documentation

    + +

    ◆ Arithmetic

    + +
    +
    +
    +template<class T >
    + + + + +
    _utlConcept utl::Arithmetic
    +
    +Initial value:
    =
    std::is_arithmetic<T>::value && Scalar<T> && StrictTotallyOrdered<T>

    Arithmetic

    + +

    Definition at line 736 of file stl.h.

    + +
    +
    + +

    ◆ Assignable

    + +
    +
    +
    +template<class LHS , class RHS >
    + + + + +
    _utlConcept utl::Assignable
    +
    +Initial value:
    =
    std::is_assignable<LHS, RHS>::value

    Assignable

    Note
    != std:: on CommonReference
    + +

    Definition at line 366 of file stl.h.

    + +
    +
    + +

    ◆ Boolean

    + +
    +
    +
    +template<class B >
    + + + + +
    _utlConcept utl::Boolean
    +
    +Initial value:
    =
    Movable<remove_cvref_t<B>> &&
    ConvertibleTo<const _ref_t<B>, bool> &&
    Same<meta::true_, details::is_boolean_t<B>>
    +

    Definition at line 551 of file stl.h.

    + +
    +
    + +

    ◆ Common

    + +
    +
    +
    +template<class T , class U >
    + + + + +
    _utlConcept utl::Common
    +
    +Initial value:
    =
    Same<std::common_type_t<T, U>, std::common_type_t<U, T>>
    +

    Definition at line 301 of file stl.h.

    + +
    +
    + +

    ◆ CommonReference

    + +
    +
    +
    +template<class T , class U >
    + + + + +
    _utlConcept utl::CommonReference
    +
    +Initial value:
    =
    Same<common_reference_t<T, U>, common_reference_t<U, T>> &&
    ConvertibleTo<T, common_reference_t<T, U>> &&
    ConvertibleTo<U, common_reference_t<T, U>>
    +

    Definition at line 293 of file stl.h.

    + +
    +
    + +

    ◆ Constructible

    + +
    +
    +
    +template<class T , class... Args>
    + + + + +
    _utlConcept utl::Constructible
    +
    +Initial value:
    =
    Destructible<T> && std::is_constructible<T, Args...>::value

    Constructible

    + +

    Definition at line 438 of file stl.h.

    + +
    +
    + +

    ◆ ConvertibleTo

    + +
    +
    +
    +template<class From , class To >
    + + + + +
    _utlConcept utl::ConvertibleTo = std::is_convertible<From, To>::value
    +
    +

    ConvertibleTo

    + +

    Definition at line 87 of file stl.h.

    + +
    +
    + +

    ◆ Copyable

    + +
    +
    +
    +template<class T >
    + + + + +
    _utlConcept utl::Copyable
    +
    +Initial value:
    =
    CopyConstructible<T> &&
    Movable<T> &&
    Assignable<_ref_t<T>, const _ref_t<T>>

    Copyable

    + +

    Definition at line 480 of file stl.h.

    + +
    +
    + +

    ◆ CopyAssignable

    + +
    +
    +
    +template<typename T >
    + + + + +
    _utlConcept utl::CopyAssignable = std::is_copy_assignable<T>::value
    +
    + +

    Definition at line 359 of file stl.h.

    + +
    +
    + +

    ◆ CopyConstructible

    + +
    +
    +
    +template<class T >
    + + + + +
    _utlConcept utl::CopyConstructible
    +
    +Initial value:
    =
    MoveConstructible<T> &&
    Constructible<T, _ref_t<T>> && ConvertibleTo<_ref_t<T>, T> &&
    Constructible<T, const _ref_t<T>> && ConvertibleTo<const _ref_t<T>, T> &&
    Constructible<T, const T> && ConvertibleTo<const T, T>

    CopyConstructible

    + +

    Definition at line 459 of file stl.h.

    + +
    +
    + +

    ◆ DefaultConstructible

    + +
    +
    +
    +template<class T >
    + + + + +
    _utlConcept utl::DefaultConstructible = Constructible<T>
    +
    +

    DefaultConstructible

    + +

    Definition at line 444 of file stl.h.

    + +
    +
    + +

    ◆ DerivedFrom

    + +
    +
    +
    +template<class Derived , class Base >
    + + + + +
    _utlConcept utl::DerivedFrom
    +
    +Initial value:
    =
    std::is_base_of<Base, Derived>::value &&
    std::is_convertible<const volatile Derived*, const volatile Base*>::value

    DerivedFrom

    + +

    Definition at line 71 of file stl.h.

    + +
    +
    + +

    ◆ Destructible

    + +
    +
    +
    +template<class T >
    + + + + +
    _utlConcept utl::Destructible = std::is_nothrow_destructible<T>::value
    +
    +

    Destructible

    + +

    Definition at line 432 of file stl.h.

    + +
    +
    + +

    ◆ EqualityComparable

    + +
    +
    +
    +template<class T >
    + + + + +
    _utlConcept utl::EqualityComparable = WeaklyEqualityComparableWith<T, T>
    +
    + +

    Definition at line 596 of file stl.h.

    + +
    +
    + +

    ◆ EqualityComparableWith

    + +
    +
    +
    +template<class T , class U >
    + + + + +
    _utlConcept utl::EqualityComparableWith
    +
    +Initial value:
    =
    EqualityComparable<T> &&
    EqualityComparable<U> &&
    WeaklyEqualityComparableWith<T, U>
    +

    Definition at line 599 of file stl.h.

    + +
    +
    + +

    ◆ FloatingPoint

    + +
    +
    +
    +template<class T >
    + + + + +
    _utlConcept utl::FloatingPoint
    +
    +Initial value:
    =
    std::is_floating_point<T>::value && Arithmetic<T>

    FloatingPoint

    + +

    Definition at line 743 of file stl.h.

    + +
    +
    + +

    ◆ Idx_dev

    + +
    +
    +
    +template<typename _Tp >
    + + + + +
    constexpr bool utl::Idx_dev = idx_dev_details::is_idx_dev_ <_Tp>::value
    +
    +

    Predicate for input device checking

    Parameters
    + + +
    _TpType to check
    +
    +
    +
    Returns
    True if _Tp is a input device
    + +

    Definition at line 523 of file idx_dev.h.

    + +
    +
    + +

    ◆ In_dev

    + +
    +
    +
    +template<typename _Tp >
    + + + + +
    constexpr bool utl::In_dev = in_dev_details::is_in_dev_ <_Tp>::value
    +
    +

    Predicate for input device checking

    Parameters
    + + +
    _TpType to check
    +
    +
    +
    Returns
    True if _Tp is a input device
    + +

    Definition at line 335 of file in_dev.h.

    + +
    +
    + +

    ◆ Inbuf_dev

    + +
    +
    +
    +template<typename _Tp >
    + + + + +
    constexpr bool utl::Inbuf_dev = inbuf_dev_details::is_inbuf_dev_ <_Tp>::value
    +
    +

    Predicate for input device checking

    Parameters
    + + +
    _TpType to check
    +
    +
    +
    Returns
    True if _Tp is a input device
    + +

    Definition at line 380 of file inbuf_dev.h.

    + +
    +
    + +

    ◆ Integral

    + +
    +
    +
    +template<class T >
    + + + + +
    _utlConcept utl::Integral = std::is_integral<T>::value
    +
    +

    Integral

    + +

    Definition at line 340 of file stl.h.

    + +
    +
    + +

    ◆ Invocable

    + +
    +
    +
    +template<class F , class... Args>
    + + + + +
    _utlConcept utl::Invocable = is_invocable<F, Args...>::value
    +
    +

    Invocable

    + +

    Definition at line 750 of file stl.h.

    + +
    +
    + +

    ◆ Movable

    + +
    +
    +
    +template<class T >
    + + + + +
    _utlConcept utl::Movable
    +
    +Initial value:
    =
    std::is_object<T>::value &&
    MoveConstructible<T> &&
    Assignable<_ref_t<T>, T> &&
    Swappable<T>

    Movable

    + +

    Definition at line 469 of file stl.h.

    + +
    +
    + +

    ◆ MoveAssignable

    + +
    +
    +
    +template<typename T >
    + + + + +
    _utlConcept utl::MoveAssignable = std::is_move_assignable<T>::value
    +
    + +

    Definition at line 356 of file stl.h.

    + +
    +
    + +

    ◆ MoveConstructible

    + +
    +
    +
    +template<class T >
    + + + + +
    _utlConcept utl::MoveConstructible
    +
    +Initial value:
    =
    Constructible<T, T> && ConvertibleTo<T, T>

    MoveConstructible

    Note
    Another approach would be std::is_move_constructible<T>::value;
    + +

    Definition at line 452 of file stl.h.

    + +
    +
    + +

    ◆ Out_dev

    + +
    +
    +
    +template<typename _Tp >
    + + + + +
    constexpr bool utl::Out_dev = out_dev_details::is_out_dev_<_Tp>::value
    +
    +

    Predicate for output device checking

    Parameters
    + + +
    _TpType to check
    +
    +
    +
    Returns
    True if _Tp is a output device
    + +

    Definition at line 357 of file out_dev.h.

    + +
    +
    + +

    ◆ Predicate

    + +
    +
    +
    +template<class F , class... Args>
    + + + + +
    _utlConcept utl::Predicate
    +
    +Initial value:
    =
    RegularInvocable<F, Args...> &&
    Boolean<invoke_result_t<F, Args...>>
    _utlConcept RegularInvocable
    Definition: stl.h:756
    +
    meta::eval< invoke_result< _Callable, _Args... > > invoke_result_t
    invoke_result_t (for C++14)
    Definition: invoke.h:180
    +
    _utlConcept Boolean
    Definition: stl.h:551
    +
    +

    Definition at line 759 of file stl.h.

    + +
    +
    + +

    ◆ Regular

    + +
    +
    +
    +template<class T >
    + + + + +
    _utlConcept utl::Regular = Semiregular<T> && EqualityComparable<T>
    +
    +

    Regular

    + +

    Definition at line 723 of file stl.h.

    + +
    +
    + +

    ◆ RegularInvocable

    + +
    +
    +
    +template<class F , class... Args>
    + + + + +
    _utlConcept utl::RegularInvocable = Invocable<F, Args...>
    +
    + +

    Definition at line 756 of file stl.h.

    + +
    +
    + +

    ◆ Relation

    + +
    +
    +
    +template<class R , class T , class U >
    + + + + +
    _utlConcept utl::Relation
    +
    +Initial value:
    =
    Predicate<R, T, T> && Predicate<R, U, U> &&
    Predicate<R, T, U> && Predicate<R, U, T>
    +

    Definition at line 764 of file stl.h.

    + +
    +
    + +

    ◆ Same

    + +
    +
    +
    +template<class T , class U >
    + + + + +
    _utlConcept utl::Same = meta::same_<T, U>::value
    +
    +

    Same

    + +

    Definition at line 62 of file stl.h.

    + +
    +
    + +

    ◆ Scalar

    + +
    +
    +
    +template<class T >
    + + + + +
    _utlConcept utl::Scalar
    +
    +Initial value:
    =
    std::is_scalar<T>::value && Regular<T>

    Scalar

    + +

    Definition at line 729 of file stl.h.

    + +
    +
    + +

    ◆ Semiregular

    + +
    +
    +
    +template<class T >
    + + + + +
    _utlConcept utl::Semiregular = Copyable<T> && DefaultConstructible<T>
    +
    +

    Semiregular

    + +

    Definition at line 717 of file stl.h.

    + +
    +
    + +

    ◆ SignedIntegral

    + +
    +
    +
    +template<class T >
    + + + + +
    _utlConcept utl::SignedIntegral = Integral<T> && std::is_signed<T>::value
    +
    +

    Signed Integral

    + +

    Definition at line 346 of file stl.h.

    + +
    +
    + +

    ◆ StrictTotallyOrdered

    + +
    +
    +
    +template<class T >
    + + + + +
    _utlConcept utl::StrictTotallyOrdered
    +
    +Initial value:
    =
    EqualityComparable<T> &&
    Same <meta::true_, details::is_strict_totally_ordered_t<T>>
    +

    Definition at line 647 of file stl.h.

    + +
    +
    + +

    ◆ StrictTotallyOrderedWith

    + +
    +
    +
    +template<class T , class U >
    + + + + +
    _utlConcept utl::StrictTotallyOrderedWith
    +
    +Initial value:
    =
    StrictTotallyOrdered<T> &&
    StrictTotallyOrdered<U> &&
    EqualityComparableWith<T, U> &&
    Same <meta::true_, details::is_strict_totally_ordered_with_t<T, U>>
    +

    Definition at line 706 of file stl.h.

    + +
    +
    + +

    ◆ StrictWeakOrder

    + +
    +
    +
    +template<class R , class T , class U >
    + + + + +
    _utlConcept utl::StrictWeakOrder = Relation<R, T, U>
    +
    + +

    Definition at line 769 of file stl.h.

    + +
    +
    + +

    ◆ Swappable

    + +
    +
    +
    +template<class T >
    + + + + +
    _utlConcept utl::Swappable = is_swappable_with<T, T>::type::value
    +
    + +

    Definition at line 425 of file stl.h.

    + +
    +
    + +

    ◆ SwappableWith

    + +
    +
    +
    +template<class T , class U >
    + + + + +
    _utlConcept utl::SwappableWith
    +
    +Initial value:
    =
    is_swappable_with<T, T>::type::value &&
    is_swappable_with<U, U>::type::value &&
    is_swappable_with<T, U>::type::value &&
    is_swappable_with<U, T>::type::value
    +

    Definition at line 413 of file stl.h.

    + +
    +
    + +

    ◆ UnsignedIntegral

    + +
    +
    +
    +template<class T >
    + + + + +
    _utlConcept utl::UnsignedIntegral = Integral<T> && !std::is_signed<T>::value
    +
    +

    Unsigned Integral

    + +

    Definition at line 352 of file stl.h.

    + +
    +
    + +

    ◆ WeaklyEqualityComparableWith

    + +
    +
    +
    +template<class T , class U >
    + + + + +
    _utlConcept utl::WeaklyEqualityComparableWith
    +
    +Initial value:
    =
    Same<meta::true_, details::is_weakly_equality_comparable_with_t<T, U>>
    +

    Definition at line 582 of file stl.h.

    + +
    +
    + +

    ◆ WeaklyIncrementable

    + +
    +
    +
    +template<class I >
    + + + + +
    _utlConcept utl::WeaklyIncrementable
    +
    +Initial value:
    =
    Semiregular<I>
    && Same<_ref_t<I>, meta::detected_t<detail::try_ppI, _ref_t<I>>>
    && meta::is_detected<detail::try_Ipp, _ref_t<I>>::value
    +

    Definition at line 49 of file iterators.h.

    + +
    +
    +
    +
    + + + + diff --git a/doc/html/namespaceutl.js b/doc/html/namespaceutl.js new file mode 100644 index 0000000..8284140 --- /dev/null +++ b/doc/html/namespaceutl.js @@ -0,0 +1,62 @@ +var namespaceutl = +[ + [ "_1wire_i_det", "namespaceutl_1_1__1wire__i__det.html", "namespaceutl_1_1__1wire__i__det" ], + [ "common_impl", "namespaceutl_1_1common__impl.html", "namespaceutl_1_1common__impl" ], + [ "detail", "namespaceutl_1_1detail.html", "namespaceutl_1_1detail" ], + [ "details", "namespaceutl_1_1details.html", "namespaceutl_1_1details" ], + [ "i2c_i_details", "namespaceutl_1_1i2c__i__details.html", "namespaceutl_1_1i2c__i__details" ], + [ "idx_dev_details", "namespaceutl_1_1idx__dev__details.html", "namespaceutl_1_1idx__dev__details" ], + [ "idxdev_it_details", "namespaceutl_1_1idxdev__it__details.html", "namespaceutl_1_1idxdev__it__details" ], + [ "in_dev_details", "namespaceutl_1_1in__dev__details.html", "namespaceutl_1_1in__dev__details" ], + [ "inbuf_dev_details", "namespaceutl_1_1inbuf__dev__details.html", "namespaceutl_1_1inbuf__dev__details" ], + [ "indev_it_details", "namespaceutl_1_1indev__it__details.html", "namespaceutl_1_1indev__it__details" ], + [ "meta", "namespaceutl_1_1meta.html", "namespaceutl_1_1meta" ], + [ "out_dev_details", "namespaceutl_1_1out__dev__details.html", "namespaceutl_1_1out__dev__details" ], + [ "outdev_it_details", "namespaceutl_1_1outdev__it__details.html", "namespaceutl_1_1outdev__it__details" ], + [ "spi_i_details", "namespaceutl_1_1spi__i__details.html", "namespaceutl_1_1spi__i__details" ], + [ "_1wire_i", "classutl_1_1__1wire__i.html", "classutl_1_1__1wire__i" ], + [ "_1wire_i< virtual_tag >", "classutl_1_1__1wire__i_3_01virtual__tag_01_4.html", "classutl_1_1__1wire__i_3_01virtual__tag_01_4" ], + [ "_1wire_id_t", "classutl_1_1__1wire__id__t.html", "classutl_1_1__1wire__id__t" ], + [ "_1wire_uart_i", "classutl_1_1__1wire__uart__i.html", "classutl_1_1__1wire__uart__i" ], + [ "_1wire_uart_i< virtual_tag >", "classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html", "classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4" ], + [ "array", "structutl_1_1array.html", "structutl_1_1array" ], + [ "array_traits", "structutl_1_1array__traits.html", "structutl_1_1array__traits" ], + [ "array_traits< _Tp, 0 >", "structutl_1_1array__traits_3_01___tp_00_010_01_4.html", "structutl_1_1array__traits_3_01___tp_00_010_01_4" ], + [ "bidirectional_iterator_tag", "structutl_1_1bidirectional__iterator__tag.html", null ], + [ "contiguous_iterator_tag", "structutl_1_1contiguous__iterator__tag.html", null ], + [ "crtp_tag", "structutl_1_1crtp__tag.html", null ], + [ "dev_iterator_traits", "structutl_1_1dev__iterator__traits.html", "structutl_1_1dev__iterator__traits" ], + [ "forward_iterator_tag", "structutl_1_1forward__iterator__tag.html", null ], + [ "i2c_bb_i", "classutl_1_1i2c__bb__i.html", "classutl_1_1i2c__bb__i" ], + [ "i2c_bb_i< virtual_tag >", "classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html", "classutl_1_1i2c__bb__i_3_01virtual__tag_01_4" ], + [ "i2c_i", "classutl_1_1i2c__i.html", "classutl_1_1i2c__i" ], + [ "i2c_i< virtual_tag >", "classutl_1_1i2c__i_3_01virtual__tag_01_4.html", "classutl_1_1i2c__i_3_01virtual__tag_01_4" ], + [ "id_t", "structutl_1_1id__t.html", "structutl_1_1id__t" ], + [ "id_traits", "structutl_1_1id__traits.html", "structutl_1_1id__traits" ], + [ "id_traits< _Tp, 0 >", "structutl_1_1id__traits_3_01___tp_00_010_01_4.html", "structutl_1_1id__traits_3_01___tp_00_010_01_4" ], + [ "idx_dev", "classutl_1_1idx__dev.html", "classutl_1_1idx__dev" ], + [ "idx_dev< virtual_tag, data_t, idx_t, N >", "classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html", "classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4" ], + [ "in_dev", "classutl_1_1in__dev.html", "classutl_1_1in__dev" ], + [ "in_dev< virtual_tag, data_t, streamsize >", "classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html", "classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4" ], + [ "inbuf_dev", "classutl_1_1inbuf__dev.html", "classutl_1_1inbuf__dev" ], + [ "inbuf_dev< virtual_tag, data_t, streamsize >", "classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html", "classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4" ], + [ "indev_it", "classutl_1_1indev__it.html", "classutl_1_1indev__it" ], + [ "input_iterator_tag", "structutl_1_1input__iterator__tag.html", null ], + [ "iodev_it", "classutl_1_1iodev__it.html", "classutl_1_1iodev__it" ], + [ "is_invocable", "structutl_1_1is__invocable.html", null ], + [ "is_invocable_r", "structutl_1_1is__invocable__r.html", null ], + [ "istreamdev_it", "classutl_1_1istreamdev__it.html", "classutl_1_1istreamdev__it" ], + [ "ostream_dev", "classutl_1_1ostream__dev.html", "classutl_1_1ostream__dev" ], + [ "ostream_dev< virtual_tag, data_t >", "classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html", "classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4" ], + [ "ostreamdev_it", "classutl_1_1ostreamdev__it.html", "classutl_1_1ostreamdev__it" ], + [ "out_dev", "classutl_1_1out__dev.html", "classutl_1_1out__dev" ], + [ "out_dev< virtual_tag, data_t, streamsize >", "classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html", "classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4" ], + [ "outdev_it", "classutl_1_1outdev__it.html", "classutl_1_1outdev__it" ], + [ "output_iterator_tag", "structutl_1_1output__iterator__tag.html", null ], + [ "random_access_iterator_tag", "structutl_1_1random__access__iterator__tag.html", null ], + [ "spi_bb_i", "classutl_1_1spi__bb__i.html", "classutl_1_1spi__bb__i" ], + [ "spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >", "classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html", "classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4" ], + [ "spi_i", "classutl_1_1spi__i.html", "classutl_1_1spi__i" ], + [ "spi_i< virtual_tag >", "classutl_1_1spi__i_3_01virtual__tag_01_4.html", "classutl_1_1spi__i_3_01virtual__tag_01_4" ], + [ "virtual_tag", "structutl_1_1virtual__tag.html", null ] +]; \ No newline at end of file diff --git a/doc/html/namespaceutl_1_1__1wire__i__det.html b/doc/html/namespaceutl_1_1__1wire__i__det.html new file mode 100644 index 0000000..72333db --- /dev/null +++ b/doc/html/namespaceutl_1_1__1wire__i__det.html @@ -0,0 +1,643 @@ + + + + + + + +uTL: utl::_1wire_i_det Namespace Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::_1wire_i_det Namespace Reference
    +
    +
    + + + + + + + + +

    +Classes

    struct  is_1wire_
     Primary template to catch any non 1-wire interface types. More...
     
    struct  is_1wire_< _Tp, meta::void_t< void > >
     template to catch a proper 1-wire interface type More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Typedefs

    template<class _Tp >
    using try_reset_t = decltype(declval< _Tp >().reset(declval< typename _Tp::Speed >()))
     
    template<class _Tp >
    using try_rx1_t = decltype(declval< _Tp >().rx_data(declval< typename _Tp::Speed >()))
     
    template<class _Tp >
    using try_tx1_t = decltype(declval< _Tp >().tx_data(declval< byte_t >(), declval< typename _Tp::Speed >()))
     
    template<class _Tp >
    using try_match_t = decltype(declval< _Tp >().match(declval< _1wire_id_t & >(), declval< typename _Tp::Speed >()))
     
    template<class _Tp >
    using try_match_n_ovdr_t = decltype(declval< _Tp >().match_n_ovdr(declval< _1wire_id_t & >()))
     
    template<class _Tp >
    using try_skip_t = decltype(declval< _Tp >().skip(declval< typename _Tp::Speed >()))
     
    template<class _Tp >
    using try_skip_n_ovdr_t = decltype(declval< _Tp >().skip_n_ovdr())
     
    template<class _Tp >
    using try_first_t = decltype(declval< _Tp >().first(declval< typename _Tp::Speed >()))
     
    template<class _Tp >
    using try_next_t = decltype(declval< _Tp >().next(declval< typename _Tp::Speed >()))
     
    + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    template<typename _T >
    byte_t _touch (_T &obj, byte_t out, typename _T::Speed s)
     Write a byte to 1-Wire bus and read the response. More...
     
    template<typename _T >
    void _match (_T &obj, _1wire_id_t &id, typename _T::Speed s)
     
    template<typename _T >
    void _match_n_ovdr (_T &obj, _1wire_id_t &id)
     
    template<typename _T >
    void _skip (_T &obj, typename _T::Speed s)
     
    template<typename _T >
    void _skip_n_ovdr (_T &obj)
     
    template<typename _T >
    _1wire_id_t _first (_T &obj, typename _T::Speed s, bool alarm)
     'first' operation, to search on the 1-Wire for the first device. This is performed by setting dec_, pos_ and cur_ to zero and then doing the search. More...
     
    template<typename _T >
    _1wire_id_t _next (_T &obj, typename _T::Speed s, bool alarm)
     'next' operation, to search on the 1-Wire for the next device. This search is usually performed after a 'first' operation or another 'next' operation. Based on maxim-ic application note 187. More...
     
    +

    Typedef Documentation

    + +

    ◆ try_first_t

    + +
    +
    +
    +template<class _Tp >
    + + + + +
    using utl::_1wire_i_det::try_first_t = typedef decltype (declval<_Tp>().first (declval<typename _Tp::Speed>()))
    +
    + +

    Definition at line 679 of file _1wire.h.

    + +
    +
    + +

    ◆ try_match_n_ovdr_t

    + +
    +
    +
    +template<class _Tp >
    + + + + +
    using utl::_1wire_i_det::try_match_n_ovdr_t = typedef decltype (declval<_Tp>().match_n_ovdr (declval<_1wire_id_t&>()))
    +
    + +

    Definition at line 676 of file _1wire.h.

    + +
    +
    + +

    ◆ try_match_t

    + +
    +
    +
    +template<class _Tp >
    + + + + +
    using utl::_1wire_i_det::try_match_t = typedef decltype (declval<_Tp>().match (declval<_1wire_id_t&>(), declval<typename _Tp::Speed>()))
    +
    + +

    Definition at line 675 of file _1wire.h.

    + +
    +
    + +

    ◆ try_next_t

    + +
    +
    +
    +template<class _Tp >
    + + + + +
    using utl::_1wire_i_det::try_next_t = typedef decltype (declval<_Tp>().next (declval<typename _Tp::Speed>()))
    +
    + +

    Definition at line 680 of file _1wire.h.

    + +
    +
    + +

    ◆ try_reset_t

    + +
    +
    +
    +template<class _Tp >
    + + + + +
    using utl::_1wire_i_det::try_reset_t = typedef decltype (declval<_Tp>().reset (declval<typename _Tp::Speed>()))
    +
    + +

    Definition at line 671 of file _1wire.h.

    + +
    +
    + +

    ◆ try_rx1_t

    + +
    +
    +
    +template<class _Tp >
    + + + + +
    using utl::_1wire_i_det::try_rx1_t = typedef decltype (declval<_Tp>().rx_data (declval<typename _Tp::Speed>()))
    +
    + +

    Definition at line 672 of file _1wire.h.

    + +
    +
    + +

    ◆ try_skip_n_ovdr_t

    + +
    +
    +
    +template<class _Tp >
    + + + + +
    using utl::_1wire_i_det::try_skip_n_ovdr_t = typedef decltype (declval<_Tp>().skip_n_ovdr ())
    +
    + +

    Definition at line 678 of file _1wire.h.

    + +
    +
    + +

    ◆ try_skip_t

    + +
    +
    +
    +template<class _Tp >
    + + + + +
    using utl::_1wire_i_det::try_skip_t = typedef decltype (declval<_Tp>().skip (declval<typename _Tp::Speed>()))
    +
    + +

    Definition at line 677 of file _1wire.h.

    + +
    +
    + +

    ◆ try_tx1_t

    + +
    +
    +
    +template<class _Tp >
    + + + + +
    using utl::_1wire_i_det::try_tx1_t = typedef decltype (declval<_Tp>().tx_data (declval<byte_t>(), declval<typename _Tp::Speed>()))
    +
    + +

    Definition at line 673 of file _1wire.h.

    + +
    +
    +

    Function Documentation

    + +

    ◆ _first()

    + +
    +
    +
    +template<typename _T >
    + + + + + + + + + + + + + + + + + + + + + + + + +
    _1wire_id_t utl::_1wire_i_det::_first (_T & obj,
    typename _T::Speed s,
    bool alarm 
    )
    +
    + +

    'first' operation, to search on the 1-Wire for the first device. This is performed by setting dec_, pos_ and cur_ to zero and then doing the search.

    +
    Parameters
    + + + +
    objThe object from which we call private members
    sThe bus speed
    +
    +
    +
    Returns
    ID The romID
      +
    • nullDev Indicate no [more] device[s]
    • +
    +
    + +

    Definition at line 540 of file _1wire.h.

    + +
    +
    + +

    ◆ _match()

    + +
    +
    +
    +template<typename _T >
    + + + + + + + + + + + + + + + + + + + + + + + + +
    void utl::_1wire_i_det::_match (_T & obj,
    _1wire_id_tid,
    typename _T::Speed s 
    )
    +
    +

    Send match rom command

    Parameters
    + + + + +
    objThe object from which we call private members
    idThe ID to select on the bus
    sThe speed to use for the command
    +
    +
    + +

    Definition at line 493 of file _1wire.h.

    + +
    +
    + +

    ◆ _match_n_ovdr()

    + +
    +
    +
    +template<typename _T >
    + + + + + + + + + + + + + + + + + + +
    void utl::_1wire_i_det::_match_n_ovdr (_T & obj,
    _1wire_id_tid 
    )
    +
    +

    Match and overdrive sequence

    Parameters
    + + + +
    objThe object from which we call private members
    idThe ID to select on the bus
    +
    +
    + +

    Definition at line 505 of file _1wire.h.

    + +
    +
    + +

    ◆ _next()

    + +
    +
    +
    +template<typename _T >
    + + + + + + + + + + + + + + + + + + + + + + + + +
    _1wire_id_t utl::_1wire_i_det::_next (_T & obj,
    typename _T::Speed s,
    bool alarm 
    )
    +
    + +

    'next' operation, to search on the 1-Wire for the next device. This search is usually performed after a 'first' operation or another 'next' operation. Based on maxim-ic application note 187.

    +
    Parameters
    + + + +
    objThe object from which we call private members
    sThe bus speed
    +
    +
    +
    Returns
    The romID
      +
    • nullDev Indicate no [more] device[s]
    • +
    +
    + +

    Definition at line 556 of file _1wire.h.

    + +
    +
    + +

    ◆ _skip()

    + +
    +
    +
    +template<typename _T >
    + + + + + + + + + + + + + + + + + + +
    void utl::_1wire_i_det::_skip (_T & obj,
    typename _T::Speed s 
    )
    +
    +

    Send skip command to the bus

    Parameters
    + + + +
    objThe object from which we call private members
    idThe ID to select on the bus
    +
    +
    + +

    Definition at line 517 of file _1wire.h.

    + +
    +
    + +

    ◆ _skip_n_ovdr()

    + +
    +
    +
    +template<typename _T >
    + + + + + + + + +
    void utl::_1wire_i_det::_skip_n_ovdr (_T & obj)
    +
    +

    Send the Skip and Overdrive sequence

    Parameters
    + + +
    objThe object from which we call private members
    +
    +
    + +

    Definition at line 526 of file _1wire.h.

    + +
    +
    + +

    ◆ _touch()

    + +
    +
    +
    +template<typename _T >
    + + + + + + + + + + + + + + + + + + + + + + + + +
    byte_t utl::_1wire_i_det::_touch (_T & obj,
    byte_t out,
    typename _T::Speed s 
    )
    +
    + +

    Write a byte to 1-Wire bus and read the response.

    +
    Parameters
    + + + + +
    objThe object from which we call private members
    bThe byte to write
    sBus speed to use
    +
    +
    +
    Returns
    The byte received.
    + +

    Definition at line 467 of file _1wire.h.

    + +
    +
    +
    +
    + + + + diff --git a/doc/html/namespaceutl_1_1__1wire__i__det.js b/doc/html/namespaceutl_1_1__1wire__i__det.js new file mode 100644 index 0000000..eb5686d --- /dev/null +++ b/doc/html/namespaceutl_1_1__1wire__i__det.js @@ -0,0 +1,5 @@ +var namespaceutl_1_1__1wire__i__det = +[ + [ "is_1wire_", "structutl_1_1__1wire__i__det_1_1is__1wire__.html", null ], + [ "is_1wire_< _Tp, meta::void_t< void > >", "structutl_1_1__1wire__i__det_1_1is__1wire___3_01___tp_00_01meta_1_1void__t_3_01void_01_4_01_4.html", null ] +]; \ No newline at end of file diff --git a/doc/html/namespaceutl_1_1common__impl.html b/doc/html/namespaceutl_1_1common__impl.html new file mode 100644 index 0000000..5088088 --- /dev/null +++ b/doc/html/namespaceutl_1_1common__impl.html @@ -0,0 +1,339 @@ + + + + + + + +uTL: utl::common_impl Namespace Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::common_impl Namespace Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Classes

    struct  __common_ref_
     
    struct  __common_ref_< T &&, U &&, meta::void_t< __common_ref< T &, U & >, meta::when< ConvertibleTo< T &&, __rref_res< T, U > > >, meta::when< ConvertibleTo< U &&, __rref_res< T, U > > > > >
     
    struct  __common_ref_< T &&, U &, meta::void_t< __common_ref< const T &, U & >, meta::when< ConvertibleTo< T &&, __common_ref< const T &, U & > > > > >
     
    struct  __common_ref_< T &, U &&, meta::void_t< __common_ref< T &, const U & >, meta::when< ConvertibleTo< U &&, __common_ref< T &, const U & > > > > >
     
    struct  __common_ref_< T &, U &, meta::void_t< __lref_res< T, U >, meta::when< std::is_reference< __lref_res< T, U > >::value > > >
     
    struct  __common_reference
     
    struct  __common_reference2
     
    struct  __common_reference2< T, U, meta::void_t< __basic_common_reference_t< T, U > > >
     
    struct  __common_reference3
     
    struct  __common_reference3< T, U, meta::void_t< __cond_res< T, U > > >
     
    struct  __common_reference< T, U, meta::when< std::is_reference< T >::value &&std::is_reference< U >::value > >
     
    struct  __copy_cv_
     
    struct  __copy_cv_< const From >
     
    struct  __copy_cv_< const volatile From >
     
    struct  __copy_cv_< volatile From >
     
    struct  __xref
     
    struct  __xref< const T >
     
    struct  __xref< const volatile T >
     
    struct  __xref< T & >
     
    struct  __xref< T && >
     
    struct  __xref< volatile T >
     
    struct  basic_common_reference
     
    struct  common_reference
     
    struct  common_reference< T >
     
    struct  common_reference< T, U >
     
    struct  common_reference< T, U, V, W... >
     
    + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Typedefs

    template<class T , class U >
    using __cond_res = decltype(false ? std::declval< T(&)()>()() :std::declval< U(&)()>()())
     
    template<class From , class To >
    using __copy_cv = meta::invoke< __copy_cv_< From >, To >
     
    template<class T >
    using __cref = std::add_lvalue_reference_t< const std::remove_reference_t< T > >
     
    template<class T , class U >
    using __common_ref = meta::eval< __common_ref_< T, U > >
     
    template<class T , class U >
    using __lref_res = __cond_res< __copy_cv< T, U > &, __copy_cv< U, T > &>
     
    template<class T , class U , class R = __common_ref<T&, U&>>
    using __rref_res = std::remove_reference_t< R > &&
     
    template<class T , class U >
    using __basic_common_reference_t = meta::eval< basic_common_reference< remove_cvref_t< T >, remove_cvref_t< U >, __xref< T >::template apply, __xref< U >::template apply > >
     
    template<class... Ts>
    using common_reference_t = meta::eval< common_reference< Ts... > >
     
    +

    Detailed Description

    +

    Common Reference

    +

    Typedef Documentation

    + +

    ◆ __basic_common_reference_t

    + +
    +
    +
    +template<class T , class U >
    + + + + +
    using utl::common_impl::__basic_common_reference_t = typedef meta::eval< basic_common_reference< remove_cvref_t<T>, remove_cvref_t<U>, __xref<T>::template apply, __xref<U>::template apply > >
    +
    + +

    Definition at line 219 of file stl.h.

    + +
    +
    + +

    ◆ __common_ref

    + +
    +
    +
    +template<class T , class U >
    + + + + +
    using utl::common_impl::__common_ref = typedef meta::eval<__common_ref_<T, U> >
    +
    + +

    Definition at line 133 of file stl.h.

    + +
    +
    + +

    ◆ __cond_res

    + +
    +
    +
    +template<class T , class U >
    + + + + +
    using utl::common_impl::__cond_res = typedef decltype(false ? std::declval<T(&)()>()() : std::declval<U(&)()>()())
    +
    +
    See also
    https://ericniebler.github.io/std/wg21/D0022.html
    + +

    Definition at line 99 of file stl.h.

    + +
    +
    + +

    ◆ __copy_cv

    + +
    +
    +
    +template<class From , class To >
    + + + + +
    using utl::common_impl::__copy_cv = typedef meta::invoke<__copy_cv_<From>, To>
    +
    + +

    Definition at line 119 of file stl.h.

    + +
    +
    + +

    ◆ __cref

    + +
    +
    +
    +template<class T >
    + + + + +
    using utl::common_impl::__cref = typedef std::add_lvalue_reference_t<const std::remove_reference_t<T> >
    +
    + +

    Definition at line 123 of file stl.h.

    + +
    +
    + +

    ◆ __lref_res

    + +
    +
    +
    +template<class T , class U >
    + + + + +
    using utl::common_impl::__lref_res = typedef __cond_res< __copy_cv<T, U> &, __copy_cv<U, T> & >
    +
    + +

    Definition at line 140 of file stl.h.

    + +
    +
    + +

    ◆ __rref_res

    + +
    +
    +
    +template<class T , class U , class R = __common_ref<T&, U&>>
    + + + + +
    using utl::common_impl::__rref_res = typedef std::remove_reference_t<R>&&
    +
    + +

    Definition at line 144 of file stl.h.

    + +
    +
    + +

    ◆ common_reference_t

    + +
    +
    +
    +template<class... Ts>
    + + + + +
    using utl::common_impl::common_reference_t = typedef meta::eval< common_reference<Ts...> >
    +
    + +

    Definition at line 227 of file stl.h.

    + +
    +
    +
    +
    + + + + diff --git a/doc/html/namespaceutl_1_1common__impl.js b/doc/html/namespaceutl_1_1common__impl.js new file mode 100644 index 0000000..c5ef5be --- /dev/null +++ b/doc/html/namespaceutl_1_1common__impl.js @@ -0,0 +1,29 @@ +var namespaceutl_1_1common__impl = +[ + [ "__common_ref_", "structutl_1_1common__impl_1_1____common__ref__.html", null ], + [ "__common_ref_< T &&, U &&, meta::void_t< __common_ref< T &, U & >, meta::when< ConvertibleTo< T &&, __rref_res< T, U > > >, meta::when< ConvertibleTo< U &&, __rref_res< T, U > > > > >", "structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_6_00_01meta_1_1void__tc4e71c227f251cadf0e0fb7b1ba6f1e9.html", "structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_6_00_01meta_1_1void__tc4e71c227f251cadf0e0fb7b1ba6f1e9" ], + [ "__common_ref_< T &&, U &, meta::void_t< __common_ref< const T &, U & >, meta::when< ConvertibleTo< T &&, __common_ref< const T &, U & > > > > >", "structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_00_01meta_1_1void__t_3972a8d6e6799b6ee6537c969cdced343.html", "structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_00_01meta_1_1void__t_3972a8d6e6799b6ee6537c969cdced343" ], + [ "__common_ref_< T &, U &&, meta::void_t< __common_ref< T &, const U & >, meta::when< ConvertibleTo< U &&, __common_ref< T &, const U & > > > > >", "structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_6_00_01meta_1_1void__t_329fba5aeac3b93aa9cfa5aa7e282e196.html", "structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_6_00_01meta_1_1void__t_329fba5aeac3b93aa9cfa5aa7e282e196" ], + [ "__common_ref_< T &, U &, meta::void_t< __lref_res< T, U >, meta::when< std::is_reference< __lref_res< T, U > >::value > > >", "structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_00_01meta_1_1void__t_3_05e5aa384829bb34312a7b8ee4ecaa00f.html", "structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_00_01meta_1_1void__t_3_05e5aa384829bb34312a7b8ee4ecaa00f" ], + [ "__common_reference", "structutl_1_1common__impl_1_1____common__reference.html", null ], + [ "__common_reference2", "structutl_1_1common__impl_1_1____common__reference2.html", null ], + [ "__common_reference2< T, U, meta::void_t< __basic_common_reference_t< T, U > > >", "structutl_1_1common__impl_1_1____common__reference2_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____785d0aa2f8a62416e19573fcbdd83836.html", "structutl_1_1common__impl_1_1____common__reference2_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____785d0aa2f8a62416e19573fcbdd83836" ], + [ "__common_reference3", "structutl_1_1common__impl_1_1____common__reference3.html", null ], + [ "__common_reference3< T, U, meta::void_t< __cond_res< T, U > > >", "structutl_1_1common__impl_1_1____common__reference3_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____015b01ed12d2d90ee57fbf756ab847e9.html", "structutl_1_1common__impl_1_1____common__reference3_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____015b01ed12d2d90ee57fbf756ab847e9" ], + [ "__common_reference< T, U, meta::when< std::is_reference< T >::value &&std::is_reference< U >::value > >", "structutl_1_1common__impl_1_1____common__reference_3_01_t_00_01_u_00_01meta_1_1when_3_01std_1_1i23b95b4b3a65ce598dbcc7f52e9dab2c.html", "structutl_1_1common__impl_1_1____common__reference_3_01_t_00_01_u_00_01meta_1_1when_3_01std_1_1i23b95b4b3a65ce598dbcc7f52e9dab2c" ], + [ "__copy_cv_", "structutl_1_1common__impl_1_1____copy__cv__.html", "structutl_1_1common__impl_1_1____copy__cv__" ], + [ "__copy_cv_< const From >", "structutl_1_1common__impl_1_1____copy__cv___3_01const_01_from_01_4.html", "structutl_1_1common__impl_1_1____copy__cv___3_01const_01_from_01_4" ], + [ "__copy_cv_< const volatile From >", "structutl_1_1common__impl_1_1____copy__cv___3_01const_01volatile_01_from_01_4.html", "structutl_1_1common__impl_1_1____copy__cv___3_01const_01volatile_01_from_01_4" ], + [ "__copy_cv_< volatile From >", "structutl_1_1common__impl_1_1____copy__cv___3_01volatile_01_from_01_4.html", "structutl_1_1common__impl_1_1____copy__cv___3_01volatile_01_from_01_4" ], + [ "__xref", "structutl_1_1common__impl_1_1____xref.html", "structutl_1_1common__impl_1_1____xref" ], + [ "__xref< const T >", "structutl_1_1common__impl_1_1____xref_3_01const_01_t_01_4.html", "structutl_1_1common__impl_1_1____xref_3_01const_01_t_01_4" ], + [ "__xref< const volatile T >", "structutl_1_1common__impl_1_1____xref_3_01const_01volatile_01_t_01_4.html", "structutl_1_1common__impl_1_1____xref_3_01const_01volatile_01_t_01_4" ], + [ "__xref< T & >", "structutl_1_1common__impl_1_1____xref_3_01_t_01_6_01_4.html", "structutl_1_1common__impl_1_1____xref_3_01_t_01_6_01_4" ], + [ "__xref< T && >", "structutl_1_1common__impl_1_1____xref_3_01_t_01_6_6_01_4.html", "structutl_1_1common__impl_1_1____xref_3_01_t_01_6_6_01_4" ], + [ "__xref< volatile T >", "structutl_1_1common__impl_1_1____xref_3_01volatile_01_t_01_4.html", "structutl_1_1common__impl_1_1____xref_3_01volatile_01_t_01_4" ], + [ "basic_common_reference", "structutl_1_1common__impl_1_1basic__common__reference.html", null ], + [ "common_reference", "structutl_1_1common__impl_1_1common__reference.html", null ], + [ "common_reference< T >", "structutl_1_1common__impl_1_1common__reference_3_01_t_01_4.html", "structutl_1_1common__impl_1_1common__reference_3_01_t_01_4" ], + [ "common_reference< T, U >", "structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_01_4.html", null ], + [ "common_reference< T, U, V, W... >", "structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_00_01_v_00_01_w_8_8_8_01_4.html", null ] +]; \ No newline at end of file diff --git a/doc/html/namespaceutl_1_1detail.html b/doc/html/namespaceutl_1_1detail.html new file mode 100644 index 0000000..0605ad9 --- /dev/null +++ b/doc/html/namespaceutl_1_1detail.html @@ -0,0 +1,251 @@ + + + + + + + +uTL: utl::detail Namespace Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::detail Namespace Reference
    +
    +
    + + + + + + + + + + + + +

    +Classes

    struct  invoke_result_
     
    struct  invoke_result_< true, _Callable, _Args... >
     
    struct  is_ref_wrapper
     
    struct  is_ref_wrapper< std::reference_wrapper< U > >
     
    struct  try_invoke
     
    + + + + + + + +

    +Typedefs

    template<typename I >
    using try_ppI = decltype(++(std::declval< I >()))
     
    template<typename I >
    using try_Ipp = decltype(std::declval< I >()++)
     
    + + + + + + + +

    +Functions

    template<class T , class Type , class T1 , class... Args, meta::enable_if_t< std::is_member_function_pointer< std::decay_t< Type T::*>>::value &&std::is_base_of< T, std::decay_t< T1 >>::value, int > = 0>
    decltype(auto) invoke_impl_ (Type T::*f, T1 &&t1, Args &&... args)
     
    template<class F , class... Args>
    decltype(auto) invoke_impl_ (F &&f, Args &&... args)
     
    +

    Detailed Description

    +

    invoke_result (SFINAE friendly)

    +

    Typedef Documentation

    + +

    ◆ try_Ipp

    + +
    +
    +
    +template<typename I >
    + + + + +
    using utl::detail::try_Ipp = typedef decltype (std::declval<I>()++)
    +
    + +

    Definition at line 46 of file iterators.h.

    + +
    +
    + +

    ◆ try_ppI

    + +
    +
    +
    +template<typename I >
    + + + + +
    using utl::detail::try_ppI = typedef decltype (++(std::declval<I>()))
    +
    + +

    Definition at line 45 of file iterators.h.

    + +
    +
    +

    Function Documentation

    + +

    ◆ invoke_impl_() [1/2]

    + +
    +
    +
    +template<class T , class Type , class T1 , class... Args, meta::enable_if_t< std::is_member_function_pointer< std::decay_t< Type T::*>>::value &&std::is_base_of< T, std::decay_t< T1 >>::value, int > = 0>
    + + + + + + + + + + + + + + + + + + + + + + + + +
    decltype(auto) utl::detail::invoke_impl_ (Type T::* f,
    T1 && t1,
    Args &&... args 
    )
    +
    + +

    Definition at line 51 of file invoke.h.

    + +
    +
    + +

    ◆ invoke_impl_() [2/2]

    + +
    +
    +
    +template<class F , class... Args>
    + + + + + + + + + + + + + + + + + + +
    decltype(auto) utl::detail::invoke_impl_ (F && f,
    Args &&... args 
    )
    +
    + +

    Definition at line 113 of file invoke.h.

    + +
    +
    +
    +
    + + + + diff --git a/doc/html/namespaceutl_1_1detail.js b/doc/html/namespaceutl_1_1detail.js new file mode 100644 index 0000000..5b297f9 --- /dev/null +++ b/doc/html/namespaceutl_1_1detail.js @@ -0,0 +1,8 @@ +var namespaceutl_1_1detail = +[ + [ "invoke_result_", "structutl_1_1detail_1_1invoke__result__.html", "structutl_1_1detail_1_1invoke__result__" ], + [ "invoke_result_< true, _Callable, _Args... >", "structutl_1_1detail_1_1invoke__result___3_01true_00_01___callable_00_01___args_8_8_8_01_4.html", "structutl_1_1detail_1_1invoke__result___3_01true_00_01___callable_00_01___args_8_8_8_01_4" ], + [ "is_ref_wrapper", "structutl_1_1detail_1_1is__ref__wrapper.html", null ], + [ "is_ref_wrapper< std::reference_wrapper< U > >", "structutl_1_1detail_1_1is__ref__wrapper_3_01std_1_1reference__wrapper_3_01_u_01_4_01_4.html", null ], + [ "try_invoke", "structutl_1_1detail_1_1try__invoke.html", "structutl_1_1detail_1_1try__invoke" ] +]; \ No newline at end of file diff --git a/doc/html/namespaceutl_1_1details.html b/doc/html/namespaceutl_1_1details.html new file mode 100644 index 0000000..8962919 --- /dev/null +++ b/doc/html/namespaceutl_1_1details.html @@ -0,0 +1,218 @@ + + + + + + + +uTL: utl::details Namespace Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::details Namespace Reference
    +
    +
    + + + + + + + + + + + + + + + + + + +

    +Classes

    struct  is_boolean_
     
    struct  is_boolean_< B, meta::void_t< meta::use_if_same_t< bool, decltype(!std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>()==std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>() !=std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>() &&std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>()||std::declval< cref_< B >>())> > >
     
    struct  is_strict_totally_ordered_
     
    struct  is_strict_totally_ordered_< T, meta::void_t< meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()< std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() > std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()<=std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() >=std::declval< cref_< T >>())> > >
     
    struct  is_strict_totally_ordered_with_
     
    struct  is_strict_totally_ordered_with_< T, U, meta::void_t< meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()< std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() > std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()<=std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() >=std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>()< std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>() > std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>()<=std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>() >=std::declval< cref_< T >>())> > >
     
    struct  is_weakly_equality_comparable_with_
     
    struct  is_weakly_equality_comparable_with_< T, U, meta::void_t< meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()==std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() !=std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>()==std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>() !=std::declval< cref_< T >>())> > >
     
    + + + + + + + + + + + + + +

    +Typedefs

    template<typename B >
    using is_boolean_t = meta::eval< is_boolean_< B > >
     
    template<typename T , typename U >
    using is_weakly_equality_comparable_with_t = meta::eval< is_weakly_equality_comparable_with_< T, U > >
     
    template<typename T >
    using is_strict_totally_ordered_t = meta::eval< is_strict_totally_ordered_< T > >
     
    template<typename T , typename U >
    using is_strict_totally_ordered_with_t = meta::eval< is_strict_totally_ordered_with_< T, U > >
     
    +

    Detailed Description

    +

    Boolean

    +

    Typedef Documentation

    + +

    ◆ is_boolean_t

    + +
    +
    +
    +template<typename B >
    + + + + +
    using utl::details::is_boolean_t = typedef meta::eval < is_boolean_<B> >
    +
    + +

    Definition at line 548 of file stl.h.

    + +
    +
    + +

    ◆ is_strict_totally_ordered_t

    + +
    +
    +
    +template<typename T >
    + + + + +
    using utl::details::is_strict_totally_ordered_t = typedef meta::eval < is_strict_totally_ordered_<T> >
    +
    + +

    Definition at line 644 of file stl.h.

    + +
    +
    + +

    ◆ is_strict_totally_ordered_with_t

    + +
    +
    +
    +template<typename T , typename U >
    + + + + +
    using utl::details::is_strict_totally_ordered_with_t = typedef meta::eval < is_strict_totally_ordered_with_<T, U> >
    +
    + +

    Definition at line 703 of file stl.h.

    + +
    +
    + +

    ◆ is_weakly_equality_comparable_with_t

    + +
    +
    +
    +template<typename T , typename U >
    + + + + +
    using utl::details::is_weakly_equality_comparable_with_t = typedef meta::eval< is_weakly_equality_comparable_with_ <T, U> >
    +
    + +

    Definition at line 578 of file stl.h.

    + +
    +
    +
    +
    + + + + diff --git a/doc/html/namespaceutl_1_1details.js b/doc/html/namespaceutl_1_1details.js new file mode 100644 index 0000000..8cc3ab1 --- /dev/null +++ b/doc/html/namespaceutl_1_1details.js @@ -0,0 +1,11 @@ +var namespaceutl_1_1details = +[ + [ "is_boolean_", "structutl_1_1details_1_1is__boolean__.html", "structutl_1_1details_1_1is__boolean__" ], + [ "is_boolean_< B, meta::void_t< meta::use_if_same_t< bool, decltype(!std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>()==std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>() !=std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>() &&std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>()||std::declval< cref_< B >>())> > >", "structutl_1_1details_1_1is__boolean___3_01_b_00_01meta_1_1void__t_3_01meta_1_1use__if__same__t_37e77ed45a431955fc15b4c1210ad8491.html", "structutl_1_1details_1_1is__boolean___3_01_b_00_01meta_1_1void__t_3_01meta_1_1use__if__same__t_37e77ed45a431955fc15b4c1210ad8491" ], + [ "is_strict_totally_ordered_", "structutl_1_1details_1_1is__strict__totally__ordered__.html", "structutl_1_1details_1_1is__strict__totally__ordered__" ], + [ "is_strict_totally_ordered_< T, meta::void_t< meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()< std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() > std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()<=std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() >=std::declval< cref_< T >>())> > >", "structutl_1_1details_1_1is__strict__totally__ordered___3_01_t_00_01meta_1_1void__t_3_01meta_1_1uab48bcfc89164f446368b35bcc7c8bcd.html", "structutl_1_1details_1_1is__strict__totally__ordered___3_01_t_00_01meta_1_1void__t_3_01meta_1_1uab48bcfc89164f446368b35bcc7c8bcd" ], + [ "is_strict_totally_ordered_with_", "structutl_1_1details_1_1is__strict__totally__ordered__with__.html", "structutl_1_1details_1_1is__strict__totally__ordered__with__" ], + [ "is_strict_totally_ordered_with_< T, U, meta::void_t< meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()< std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() > std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()<=std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() >=std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>()< std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>() > std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>()<=std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>() >=std::declval< cref_< T >>())> > >", "structutl_1_1details_1_1is__strict__totally__ordered__with___3_01_t_00_01_u_00_01meta_1_1void__t8fb7dd5a6ad25952241e37c6f163f434.html", "structutl_1_1details_1_1is__strict__totally__ordered__with___3_01_t_00_01_u_00_01meta_1_1void__t8fb7dd5a6ad25952241e37c6f163f434" ], + [ "is_weakly_equality_comparable_with_", "structutl_1_1details_1_1is__weakly__equality__comparable__with__.html", "structutl_1_1details_1_1is__weakly__equality__comparable__with__" ], + [ "is_weakly_equality_comparable_with_< T, U, meta::void_t< meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()==std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() !=std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>()==std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>() !=std::declval< cref_< T >>())> > >", "structutl_1_1details_1_1is__weakly__equality__comparable__with___3_01_t_00_01_u_00_01meta_1_1voi4404f901930622694666ca68fb75381b.html", "structutl_1_1details_1_1is__weakly__equality__comparable__with___3_01_t_00_01_u_00_01meta_1_1voi4404f901930622694666ca68fb75381b" ] +]; \ No newline at end of file diff --git a/doc/html/namespaceutl_1_1i2c__i__details.html b/doc/html/namespaceutl_1_1i2c__i__details.html new file mode 100644 index 0000000..2982c7d --- /dev/null +++ b/doc/html/namespaceutl_1_1i2c__i__details.html @@ -0,0 +1,248 @@ + + + + + + + +uTL: utl::i2c_i_details Namespace Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::i2c_i_details Namespace Reference
    +
    +
    + + + + + + + + +

    +Classes

    struct  is_i2c_
     Primary template to catch any non I2C interface types. More...
     
    struct  is_i2c_< _Tp, meta::void_t< typename _Tp::Sequence, void > >
     template to catch a proper I2C interface type More...
     
    + + + + + + + + + + + + + + + + + + + +

    +Typedefs

    template<class _Tp >
    using try_cclk_t = decltype(declval< const _Tp >().clock())
     
    template<class _Tp >
    using try_clk_t = decltype(declval< _Tp >().clock(declval< uint32_t >()))
     
    template<class _Tp >
    using try_start_t = decltype(declval< _Tp >().start())
     
    template<class _Tp >
    using try_stop_t = decltype(declval< _Tp >().stop())
     
    template<class _Tp >
    using try_rx_data_t = decltype(declval< _Tp >().rx_data(declval< bool >(), declval< typename _Tp::Sequence >()))
     
    template<class _Tp >
    using try_tx_data_t = decltype(declval< _Tp >().tx_data(declval< byte_t >(), declval< typename _Tp::Sequence >()))
     
    +

    Typedef Documentation

    + +

    ◆ try_cclk_t

    + +
    +
    +
    +template<class _Tp >
    + + + + +
    using utl::i2c_i_details::try_cclk_t = typedef decltype (declval<const _Tp>().clock())
    +
    + +

    Definition at line 246 of file i2c.h.

    + +
    +
    + +

    ◆ try_clk_t

    + +
    +
    +
    +template<class _Tp >
    + + + + +
    using utl::i2c_i_details::try_clk_t = typedef decltype (declval<_Tp>().clock(declval<uint32_t>()))
    +
    + +

    Definition at line 247 of file i2c.h.

    + +
    +
    + +

    ◆ try_rx_data_t

    + +
    +
    +
    +template<class _Tp >
    + + + + +
    using utl::i2c_i_details::try_rx_data_t = typedef decltype (declval<_Tp>().rx_data (declval<bool>(), declval<typename _Tp::Sequence>()))
    +
    + +

    Definition at line 251 of file i2c.h.

    + +
    +
    + +

    ◆ try_start_t

    + +
    +
    +
    +template<class _Tp >
    + + + + +
    using utl::i2c_i_details::try_start_t = typedef decltype (declval<_Tp>().start())
    +
    + +

    Definition at line 248 of file i2c.h.

    + +
    +
    + +

    ◆ try_stop_t

    + +
    +
    +
    +template<class _Tp >
    + + + + +
    using utl::i2c_i_details::try_stop_t = typedef decltype (declval<_Tp>().stop())
    +
    + +

    Definition at line 249 of file i2c.h.

    + +
    +
    + +

    ◆ try_tx_data_t

    + +
    +
    +
    +template<class _Tp >
    + + + + +
    using utl::i2c_i_details::try_tx_data_t = typedef decltype (declval<_Tp>().tx_data (declval<byte_t>(), declval<typename _Tp::Sequence>()))
    +
    + +

    Definition at line 253 of file i2c.h.

    + +
    +
    +
    +
    + + + + diff --git a/doc/html/namespaceutl_1_1i2c__i__details.js b/doc/html/namespaceutl_1_1i2c__i__details.js new file mode 100644 index 0000000..9cf4ed2 --- /dev/null +++ b/doc/html/namespaceutl_1_1i2c__i__details.js @@ -0,0 +1,5 @@ +var namespaceutl_1_1i2c__i__details = +[ + [ "is_i2c_", "structutl_1_1i2c__i__details_1_1is__i2c__.html", null ], + [ "is_i2c_< _Tp, meta::void_t< typename _Tp::Sequence, void > >", "structutl_1_1i2c__i__details_1_1is__i2c___3_01___tp_00_01meta_1_1void__t_3_01typename_01___tp_1_1_sequence_00_01void_01_4_01_4.html", null ] +]; \ No newline at end of file diff --git a/doc/html/namespaceutl_1_1idx__dev__details.html b/doc/html/namespaceutl_1_1idx__dev__details.html new file mode 100644 index 0000000..f57319b --- /dev/null +++ b/doc/html/namespaceutl_1_1idx__dev__details.html @@ -0,0 +1,292 @@ + + + + + + + +uTL: utl::idx_dev_details Namespace Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::idx_dev_details Namespace Reference
    +
    +
    + + + + + + + + +

    +Classes

    struct  is_idx_dev_
     Primary template to catch any non input device types. More...
     
    struct  is_idx_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_get1_t< _Tp >, size_t >, use_if_same_t< try_get2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > >
     template to catch a proper input device type More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Typedefs

    template<class _Tp >
    using try_get1_t = decltype(declval< _Tp >().get(declval< typename _Tp::data_type & >()))
     
    template<class _Tp >
    using try_get2_t = decltype(declval< _Tp >().get(declval< typename _Tp::data_type * >(), declval< size_t >()))
     
    template<class _Tp >
    using try_begin_t = decltype(declval< _Tp >().begin())
     
    template<class _Tp >
    using tryc_begin_t = decltype(declval< const _Tp >().begin())
     
    template<class _Tp >
    using try_cbegin_t = decltype(declval< const _Tp >().cbegin())
     
    template<class _Tp >
    using try_end_t = decltype(declval< _Tp >().begin())
     
    template<class _Tp >
    using tryc_end_t = decltype(declval< const _Tp >().begin())
     
    template<class _Tp >
    using try_cend_t = decltype(declval< const _Tp >().cend())
     
    +

    Detailed Description

    +

    indexed device concept

    +

    Typedef Documentation

    + +

    ◆ try_begin_t

    + +
    +
    +
    +template<class _Tp >
    + + + + +
    using utl::idx_dev_details::try_begin_t = typedef decltype (declval<_Tp>().begin())
    +
    + +

    Definition at line 486 of file idx_dev.h.

    + +
    +
    + +

    ◆ try_cbegin_t

    + +
    +
    +
    +template<class _Tp >
    + + + + +
    using utl::idx_dev_details::try_cbegin_t = typedef decltype (declval<const _Tp>().cbegin())
    +
    + +

    Definition at line 488 of file idx_dev.h.

    + +
    +
    + +

    ◆ try_cend_t

    + +
    +
    +
    +template<class _Tp >
    + + + + +
    using utl::idx_dev_details::try_cend_t = typedef decltype (declval<const _Tp>().cend())
    +
    + +

    Definition at line 491 of file idx_dev.h.

    + +
    +
    + +

    ◆ try_end_t

    + +
    +
    +
    +template<class _Tp >
    + + + + +
    using utl::idx_dev_details::try_end_t = typedef decltype (declval<_Tp>().begin())
    +
    + +

    Definition at line 489 of file idx_dev.h.

    + +
    +
    + +

    ◆ try_get1_t

    + +
    +
    +
    +template<class _Tp >
    + + + + +
    using utl::idx_dev_details::try_get1_t = typedef decltype (declval<_Tp>().get (declval<typename _Tp::data_type&>()))
    +
    + +

    Definition at line 481 of file idx_dev.h.

    + +
    +
    + +

    ◆ try_get2_t

    + +
    +
    +
    +template<class _Tp >
    + + + + +
    using utl::idx_dev_details::try_get2_t = typedef decltype (declval<_Tp>().get (declval<typename _Tp::data_type*>(), declval<size_t>()))
    +
    + +

    Definition at line 482 of file idx_dev.h.

    + +
    +
    + +

    ◆ tryc_begin_t

    + +
    +
    +
    +template<class _Tp >
    + + + + +
    using utl::idx_dev_details::tryc_begin_t = typedef decltype (declval<const _Tp>().begin())
    +
    + +

    Definition at line 487 of file idx_dev.h.

    + +
    +
    + +

    ◆ tryc_end_t

    + +
    +
    +
    +template<class _Tp >
    + + + + +
    using utl::idx_dev_details::tryc_end_t = typedef decltype (declval<const _Tp>().begin())
    +
    + +

    Definition at line 490 of file idx_dev.h.

    + +
    +
    +
    +
    + + + + diff --git a/doc/html/namespaceutl_1_1idx__dev__details.js b/doc/html/namespaceutl_1_1idx__dev__details.js new file mode 100644 index 0000000..3724e76 --- /dev/null +++ b/doc/html/namespaceutl_1_1idx__dev__details.js @@ -0,0 +1,5 @@ +var namespaceutl_1_1idx__dev__details = +[ + [ "is_idx_dev_", "structutl_1_1idx__dev__details_1_1is__idx__dev__.html", null ], + [ "is_idx_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_get1_t< _Tp >, size_t >, use_if_same_t< try_get2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > >", "structutl_1_1idx__dev__details_1_1is__idx__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1ae8b6b24c31c81bdd901da6e6387d84b.html", null ] +]; \ No newline at end of file diff --git a/doc/html/namespaceutl_1_1idxdev__it__details.html b/doc/html/namespaceutl_1_1idxdev__it__details.html new file mode 100644 index 0000000..d5edff4 --- /dev/null +++ b/doc/html/namespaceutl_1_1idxdev__it__details.html @@ -0,0 +1,119 @@ + + + + + + + +uTL: utl::idxdev_it_details Namespace Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::idxdev_it_details Namespace Reference
    +
    +
    + + + + + + + + +

    +Classes

    struct  is_idxdev_it_
     Primary template to catch any non SPI interface types. More...
     
    struct  is_idxdev_it_< _Tp, meta::void_t< typename _Tp::value_type, typename _Tp::difference_type, typename _Tp::pointer, typename _Tp::reference, void > >
     template to catch a proper SPI interface type More...
     
    +

    Detailed Description

    +

    Index device iterator concept

    +
    +
    + + + + diff --git a/doc/html/namespaceutl_1_1idxdev__it__details.js b/doc/html/namespaceutl_1_1idxdev__it__details.js new file mode 100644 index 0000000..c17e721 --- /dev/null +++ b/doc/html/namespaceutl_1_1idxdev__it__details.js @@ -0,0 +1,5 @@ +var namespaceutl_1_1idxdev__it__details = +[ + [ "is_idxdev_it_", "structutl_1_1idxdev__it__details_1_1is__idxdev__it__.html", null ], + [ "is_idxdev_it_< _Tp, meta::void_t< typename _Tp::value_type, typename _Tp::difference_type, typename _Tp::pointer, typename _Tp::reference, void > >", "structutl_1_1idxdev__it__details_1_1is__idxdev__it___3_01___tp_00_01meta_1_1void__t_3_01typenamebd9ada52ca7b7570c26d0c280af5e635.html", null ] +]; \ No newline at end of file diff --git a/doc/html/namespaceutl_1_1in__dev__details.html b/doc/html/namespaceutl_1_1in__dev__details.html new file mode 100644 index 0000000..c5670c4 --- /dev/null +++ b/doc/html/namespaceutl_1_1in__dev__details.html @@ -0,0 +1,290 @@ + + + + + + + +uTL: utl::in_dev_details Namespace Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::in_dev_details Namespace Reference
    +
    +
    + + + + + + + + +

    +Classes

    struct  is_in_dev_
     Primary template to catch any non input device types. More...
     
    struct  is_in_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_get1_t< _Tp >, size_t >, use_if_same_t< try_get2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > >
     template to catch a proper input device type More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Typedefs

    template<class _Tp >
    using try_get1_t = decltype(declval< _Tp >().get(declval< typename _Tp::data_type & >()))
     
    template<class _Tp >
    using try_get2_t = decltype(declval< _Tp >().get(declval< typename _Tp::data_type * >(), declval< size_t >()))
     
    template<class _Tp >
    using try_begin_t = decltype(declval< _Tp >().begin())
     
    template<class _Tp >
    using tryc_begin_t = decltype(declval< const _Tp >().begin())
     
    template<class _Tp >
    using try_cbegin_t = decltype(declval< const _Tp >().cbegin())
     
    template<class _Tp >
    using try_end_t = decltype(declval< _Tp >().begin())
     
    template<class _Tp >
    using tryc_end_t = decltype(declval< const _Tp >().begin())
     
    template<class _Tp >
    using try_cend_t = decltype(declval< const _Tp >().cend())
     
    +

    Typedef Documentation

    + +

    ◆ try_begin_t

    + +
    +
    +
    +template<class _Tp >
    + + + + +
    using utl::in_dev_details::try_begin_t = typedef decltype (declval<_Tp>().begin())
    +
    + +

    Definition at line 298 of file in_dev.h.

    + +
    +
    + +

    ◆ try_cbegin_t

    + +
    +
    +
    +template<class _Tp >
    + + + + +
    using utl::in_dev_details::try_cbegin_t = typedef decltype (declval<const _Tp>().cbegin())
    +
    + +

    Definition at line 300 of file in_dev.h.

    + +
    +
    + +

    ◆ try_cend_t

    + +
    +
    +
    +template<class _Tp >
    + + + + +
    using utl::in_dev_details::try_cend_t = typedef decltype (declval<const _Tp>().cend())
    +
    + +

    Definition at line 303 of file in_dev.h.

    + +
    +
    + +

    ◆ try_end_t

    + +
    +
    +
    +template<class _Tp >
    + + + + +
    using utl::in_dev_details::try_end_t = typedef decltype (declval<_Tp>().begin())
    +
    + +

    Definition at line 301 of file in_dev.h.

    + +
    +
    + +

    ◆ try_get1_t

    + +
    +
    +
    +template<class _Tp >
    + + + + +
    using utl::in_dev_details::try_get1_t = typedef decltype (declval<_Tp>().get (declval<typename _Tp::data_type&>()))
    +
    + +

    Definition at line 293 of file in_dev.h.

    + +
    +
    + +

    ◆ try_get2_t

    + +
    +
    +
    +template<class _Tp >
    + + + + +
    using utl::in_dev_details::try_get2_t = typedef decltype (declval<_Tp>().get (declval<typename _Tp::data_type*>(), declval<size_t>()))
    +
    + +

    Definition at line 294 of file in_dev.h.

    + +
    +
    + +

    ◆ tryc_begin_t

    + +
    +
    +
    +template<class _Tp >
    + + + + +
    using utl::in_dev_details::tryc_begin_t = typedef decltype (declval<const _Tp>().begin())
    +
    + +

    Definition at line 299 of file in_dev.h.

    + +
    +
    + +

    ◆ tryc_end_t

    + +
    +
    +
    +template<class _Tp >
    + + + + +
    using utl::in_dev_details::tryc_end_t = typedef decltype (declval<const _Tp>().begin())
    +
    + +

    Definition at line 302 of file in_dev.h.

    + +
    +
    +
    +
    + + + + diff --git a/doc/html/namespaceutl_1_1in__dev__details.js b/doc/html/namespaceutl_1_1in__dev__details.js new file mode 100644 index 0000000..7eb2f4b --- /dev/null +++ b/doc/html/namespaceutl_1_1in__dev__details.js @@ -0,0 +1,5 @@ +var namespaceutl_1_1in__dev__details = +[ + [ "is_in_dev_", "structutl_1_1in__dev__details_1_1is__in__dev__.html", null ], + [ "is_in_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_get1_t< _Tp >, size_t >, use_if_same_t< try_get2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > >", "structutl_1_1in__dev__details_1_1is__in__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1dad922a62deb7c32e2cff18d66b8c887d2.html", null ] +]; \ No newline at end of file diff --git a/doc/html/namespaceutl_1_1inbuf__dev__details.html b/doc/html/namespaceutl_1_1inbuf__dev__details.html new file mode 100644 index 0000000..fe67886 --- /dev/null +++ b/doc/html/namespaceutl_1_1inbuf__dev__details.html @@ -0,0 +1,292 @@ + + + + + + + +uTL: utl::inbuf_dev_details Namespace Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::inbuf_dev_details Namespace Reference
    +
    +
    + + + + + + + + +

    +Classes

    struct  is_inbuf_dev_
     Primary template to catch any non input device types. More...
     
    struct  is_inbuf_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_get1_t< _Tp >, size_t >, use_if_same_t< try_get2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > >
     template to catch a proper input device type More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Typedefs

    template<class _Tp >
    using try_get1_t = decltype(declval< _Tp >().get(declval< typename _Tp::data_type & >()))
     
    template<class _Tp >
    using try_get2_t = decltype(declval< _Tp >().get(declval< typename _Tp::data_type * >(), declval< size_t >()))
     
    template<class _Tp >
    using try_begin_t = decltype(declval< _Tp >().begin())
     
    template<class _Tp >
    using tryc_begin_t = decltype(declval< const _Tp >().begin())
     
    template<class _Tp >
    using try_cbegin_t = decltype(declval< const _Tp >().cbegin())
     
    template<class _Tp >
    using try_end_t = decltype(declval< _Tp >().begin())
     
    template<class _Tp >
    using tryc_end_t = decltype(declval< const _Tp >().begin())
     
    template<class _Tp >
    using try_cend_t = decltype(declval< const _Tp >().cend())
     
    +

    Detailed Description

    +

    Input buffer device concept

    +

    Typedef Documentation

    + +

    ◆ try_begin_t

    + +
    +
    +
    +template<class _Tp >
    + + + + +
    using utl::inbuf_dev_details::try_begin_t = typedef decltype (declval<_Tp>().begin())
    +
    + +

    Definition at line 343 of file inbuf_dev.h.

    + +
    +
    + +

    ◆ try_cbegin_t

    + +
    +
    +
    +template<class _Tp >
    + + + + +
    using utl::inbuf_dev_details::try_cbegin_t = typedef decltype (declval<const _Tp>().cbegin())
    +
    + +

    Definition at line 345 of file inbuf_dev.h.

    + +
    +
    + +

    ◆ try_cend_t

    + +
    +
    +
    +template<class _Tp >
    + + + + +
    using utl::inbuf_dev_details::try_cend_t = typedef decltype (declval<const _Tp>().cend())
    +
    + +

    Definition at line 348 of file inbuf_dev.h.

    + +
    +
    + +

    ◆ try_end_t

    + +
    +
    +
    +template<class _Tp >
    + + + + +
    using utl::inbuf_dev_details::try_end_t = typedef decltype (declval<_Tp>().begin())
    +
    + +

    Definition at line 346 of file inbuf_dev.h.

    + +
    +
    + +

    ◆ try_get1_t

    + +
    +
    +
    +template<class _Tp >
    + + + + +
    using utl::inbuf_dev_details::try_get1_t = typedef decltype (declval<_Tp>().get (declval<typename _Tp::data_type&>()))
    +
    + +

    Definition at line 338 of file inbuf_dev.h.

    + +
    +
    + +

    ◆ try_get2_t

    + +
    +
    +
    +template<class _Tp >
    + + + + +
    using utl::inbuf_dev_details::try_get2_t = typedef decltype (declval<_Tp>().get (declval<typename _Tp::data_type*>(), declval<size_t>()))
    +
    + +

    Definition at line 339 of file inbuf_dev.h.

    + +
    +
    + +

    ◆ tryc_begin_t

    + +
    +
    +
    +template<class _Tp >
    + + + + +
    using utl::inbuf_dev_details::tryc_begin_t = typedef decltype (declval<const _Tp>().begin())
    +
    + +

    Definition at line 344 of file inbuf_dev.h.

    + +
    +
    + +

    ◆ tryc_end_t

    + +
    +
    +
    +template<class _Tp >
    + + + + +
    using utl::inbuf_dev_details::tryc_end_t = typedef decltype (declval<const _Tp>().begin())
    +
    + +

    Definition at line 347 of file inbuf_dev.h.

    + +
    +
    +
    +
    + + + + diff --git a/doc/html/namespaceutl_1_1inbuf__dev__details.js b/doc/html/namespaceutl_1_1inbuf__dev__details.js new file mode 100644 index 0000000..9764fa7 --- /dev/null +++ b/doc/html/namespaceutl_1_1inbuf__dev__details.js @@ -0,0 +1,5 @@ +var namespaceutl_1_1inbuf__dev__details = +[ + [ "is_inbuf_dev_", "structutl_1_1inbuf__dev__details_1_1is__inbuf__dev__.html", null ], + [ "is_inbuf_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_get1_t< _Tp >, size_t >, use_if_same_t< try_get2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > >", "structutl_1_1inbuf__dev__details_1_1is__inbuf__dev___3_01___tp_00_01void__t_3_01typename_01___tpc269ee3885240cc8c352f3c6b3a67cd7.html", null ] +]; \ No newline at end of file diff --git a/doc/html/namespaceutl_1_1indev__it__details.html b/doc/html/namespaceutl_1_1indev__it__details.html new file mode 100644 index 0000000..0ebf6fb --- /dev/null +++ b/doc/html/namespaceutl_1_1indev__it__details.html @@ -0,0 +1,119 @@ + + + + + + + +uTL: utl::indev_it_details Namespace Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::indev_it_details Namespace Reference
    +
    +
    + + + + + + + + +

    +Classes

    struct  is_indev_it_
     Primary template to catch any non SPI interface types. More...
     
    struct  is_indev_it_< _Tp, meta::void_t< typename _Tp::value_type, typename _Tp::difference_type, typename _Tp::pointer, typename _Tp::reference, void > >
     template to catch a proper SPI interface type More...
     
    +

    Detailed Description

    +

    Input device iterator concept

    +
    +
    + + + + diff --git a/doc/html/namespaceutl_1_1indev__it__details.js b/doc/html/namespaceutl_1_1indev__it__details.js new file mode 100644 index 0000000..77454bc --- /dev/null +++ b/doc/html/namespaceutl_1_1indev__it__details.js @@ -0,0 +1,5 @@ +var namespaceutl_1_1indev__it__details = +[ + [ "is_indev_it_", "structutl_1_1indev__it__details_1_1is__indev__it__.html", null ], + [ "is_indev_it_< _Tp, meta::void_t< typename _Tp::value_type, typename _Tp::difference_type, typename _Tp::pointer, typename _Tp::reference, void > >", "structutl_1_1indev__it__details_1_1is__indev__it___3_01___tp_00_01meta_1_1void__t_3_01typename_06508604dcee4010234c84cc332fa196b.html", null ] +]; \ No newline at end of file diff --git a/doc/html/namespaceutl_1_1meta.html b/doc/html/namespaceutl_1_1meta.html new file mode 100644 index 0000000..d03bd4b --- /dev/null +++ b/doc/html/namespaceutl_1_1meta.html @@ -0,0 +1,2734 @@ + + + + + + + +uTL: utl::meta Namespace Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta Namespace Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Namespaces

     apply_impl
     
     at_impl
     
     back_impl
     
     cat_impl
     
     count_if_impl
     
     detail
     
     filter_impl
     
     find_if_impl
     
     fold_impl
     
     front_impl
     
     pop_back_impl
     
     pop_front_impl
     
     replace_if_impl
     
     rev_fold_impl
     
     reverse_impl
     
     seek_if_impl
     
     transform_impl
     
     transform_lazy_impl
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Classes

    struct  bind_back
     
    struct  bind_front
     
    struct  identity
     
    struct  nat_
     
    struct  nil_
     
    struct  not_same_as
     
    struct  quote
     
    struct  quote_i
     Wrap a template F taking literal constants of type T into an Invokable. More...
     
    struct  same_
     
    struct  same_< _Tp, _Tp >
     
    struct  same_as
     
    struct  typelist
     
    struct  wrap
     
    struct  wrap_i
     Wrap a template F taking literal constants of type T into an Invokable. More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Typedefs

    template<typename... >
    using void_ = void
     void_ type alias More...
     
    template<typename... >
    using void_t = void
     void_t type alias More...
     
    template<typename Tp >
    using eval = typename Tp::type
     Type alias for Tp::type. Used to evaluate/extract return type of metafunctions. More...
     
    using Npos = size_< index_t(-1)>
     The last position we can express for indexing. More...
     
    template<bool B>
    using not_c = bool_<!B >
     Negate the bool constant parameter. More...
     
    template<typename _Tp >
    using not_ = not_c< _Tp::type::value >
     not More...
     
    template<typename List >
    using size = size_< List::size()>
     
    template<typename List >
    using empty = bool_< List::empty()>
     
    template<typename T1 , typename T2 >
    using pair = typelist< T1, T2 >
     
    template<typename List , typename... Ts>
    using push_front = eval< apply< bind_front< quote< typelist >, Ts... >, List > >
     
    template<typename List , typename... Ts>
    using push_back = eval< apply< bind_back< quote< typelist >, Ts... >, List > >
     
    template<typename List , typename Pred >
    using all_of = if_< empty< List >, false_, empty< filter< List, compose< quote< not_ >, Pred > > > >
     
    template<typename List , typename Pred >
    using any_of = not_< empty< filter< List, Pred > > >
     
    template<typename List , typename Pred >
    using none_of = empty< filter< List, Pred > >
     
    template<typename _T1 , typename _T2 , typename _Ret = _T1>
    using use_if_same_t = enable_if_t< same_< _T1, _T2 >::value, _Ret >
     If same type resolves to _Ret, else SFINAE. More...
     
    template<typename _T1 , typename _T2 , typename _Ret = _T1>
    using use_if_not_same_t = enable_if_t< !same_< _T1, _T2 >::value, _Ret >
     If not same type resolves to _Ret, else SFINAE. More...
     
    template<typename T1 , typename... Ts>
    using use_if_any_t = enable_if_t< or_< T1, Ts... >::value, T1 >
     If any type (_T1 or _T2) type resolves to _Ret, else to SFINAE. More...
     
    template<typename T1 , typename... Ts>
    using use_if_all_t = enable_if_t< and_< T1, Ts... >::value, T1 >
     If both type (_T1 and _T2) type resolves to _Ret, else to SFINAE. More...
     
    template<typename Tp , Tp v>
    using integral_ = std::integral_constant< Tp, v >
     
    template<bool v>
    using bool_ = integral_< bool, v >
     bool_ type: integral constant wrapper for bool More...
     
    using true_ = bool_< true >
     The type used as a compile-time boolean with true value. More...
     
    using false_ = bool_< false >
     The type used as a compile-time boolean with false value. More...
     
    template<int8_t v>
    using int8_ = integral_< int8_t, v >
     int8_ type: integral constant wrapper for int8_t More...
     
    template<uint8_t v>
    using uint8_ = integral_< uint8_t, v >
     uint8_ type: integral constant wrapper for uint8_t More...
     
    template<int16_t v>
    using int16_ = integral_< int16_t, v >
     int16_ type: integral constant wrapper for int16_t More...
     
    template<uint16_t v>
    using uint16_ = integral_< uint16_t, v >
     uint16_ type: integral constant wrapper for uint16_t More...
     
    template<int32_t v>
    using int32_ = integral_< int32_t, v >
     int32_ type: integral constant wrapper for int32_t More...
     
    template<uint32_t v>
    using uint32_ = integral_< uint32_t, v >
     uint32_ type: integral constant wrapper for uint32_t More...
     
    template<char v>
    using char_ = integral_< char, v >
     char_ type: integral constant wrapper for char More...
     
    template<int v>
    using int_ = integral_< int, v >
     int_ type: integral constant wrapper for int More...
     
    template<long v>
    using long_ = integral_< long, v >
     long_ type: integral constant wrapper for long More...
     
    template<index_t v>
    using index_ = integral_< index_t, v >
     index_ type: integral constant wrapper for index_t a.k.a std::size_t More...
     
    template<size_t v>
    using size_ = integral_< size_t, v >
     size_ type: integral constant wrapper for size_t a.k.a std::size_t More...
     
    template<typename Tp >
    using sizeof_ = size_< sizeof(Tp)>
     
    template<typename Tp >
    using alignof_ = size_< alignof(Tp)>
     
    template<class Tp , Tp... Ints>
    using integer_sequence = std::integer_sequence< Tp, Ints... >
     
    template<typename Tp , Tp Num>
    using make_integer_sequence = std::make_integer_sequence< Tp, Num >
     
    template<index_t... Idx>
    using index_sequence = integer_sequence< index_t, Idx... >
     Alias template index_sequence. More...
     
    template<index_t Num>
    using make_index_sequence = make_integer_sequence< index_t, Num >
     Alias template make_index_sequence. More...
     
    template<typename... Types>
    using index_sequence_for = make_index_sequence< sizeof...(Types)>
     Alias template index_sequence_for. More...
     
    meta::invoke

    A meta-programming invoke() analogous. A meta::invocable shall contain a nested template type named apply which is bind to actual invocable meta-function.

    +
      +
    • We can use wrap<> or even better quote<> in order to wrap a metafunction to a type (metafunction class)
    • +
    • We can pass these wrapped types to other metafunctions
    • +
    • We can invoke<> the inner apply from a wrapped metafunction class.
    • +
    +
    template<typename _Tp >
    using identity_t = eval< identity< _Tp > >
     identity type alias More...
     
    template<typename Fn , typename... Args>
    using invoke = typename Fn::template apply< Args... >
     
    template<typename Fn , typename... Args>
    using invoke_t = eval< invoke< Fn, Args... > >
     
    template<template< typename... > class F, typename... T>
    using is_applicable_t = eval< detail::is_applicable_< F, T... > >
     check if we can instantiate F with parameters T More...
     
    template<typename Q , typename... T>
    using is_applicable_qt = eval< detail::is_applicable_q_< Q, T... > >
     check if we can invoke Q with parameters T More...
     
    template<typename T , template< T... > class F, T... Is>
    using is_applicable_it = eval< detail::is_applicable_i_< T, F, Is... > >
     check if we can instantiate F with parameters Is of type T More...
     
    template<template< class... > class F, class... Ts>
    using defer = if_< detail::is_applicable_< F, Ts... >, detail::defer_< F, Ts... >, nil_ >
     defer alias template for F<Ts...> More...
     
    template<typename T , template< T... > class F, T... Is>
    using defer_i = if_< detail::is_applicable_i_< T, F, Is... >, detail::defer_i_< T, F, Is... >, nil_ >
     defer_i alias template for F<T, Is...> More...
     
    template<typename... Fns>
    using compose = detail::compose_< Fns... >
     
    template<template< typename... > class... Fns>
    using compose_f = detail::compose_f_< Fns... >
     
    template<typename... _Ts>
    using or_ = eval< detail::_or_< _Ts... > >
     
    template<typename... _Ts>
    using and_ = eval< detail::_and_< _Ts... > >
     
    template<typename _T1 , typename _T2 >
    using not_same_ = not_< eval< same_< _T1, _T2 > >>
     
    template<typename _Tp >
    using negate = integral_< decltype(-_Tp()), -_Tp()>
     Negation. More...
     
    template<typename _Tp1 , typename _Tp2 >
    using add = integral_< decltype(_Tp1()+_Tp2()), _Tp1()+_Tp2() >
     Addition. More...
     
    template<typename _Tp1 , typename _Tp2 >
    using mult = integral_< decltype(_Tp2() *_Tp2()), _Tp1() *_Tp2() >
     Multiplication. More...
     
    template<typename _Tp1 , typename _Tp2 >
    using divide = integral_< decltype(_Tp2()/_Tp2()), _Tp1()/_Tp2() >
     Division. More...
     
    template<typename _Tp1 , typename _Tp2 >
    using modulo = integral_< decltype(_Tp1() % _Tp2()), _Tp1() % _Tp2() >
     Modulo. More...
     
    template<typename _Tp1 , typename _Tp2 >
    using sub = add< _Tp1, negate< _Tp2 > >
     Substruction. More...
     
    template<typename _Tp >
    using inc = add< _Tp, int_< 1 > >
     Increase. More...
     
    template<typename _Tp >
    using dec = add< _Tp, int_<-1 > >
     decrease More...
     
    template<typename _Tp1 , typename _Tp2 >
    using comp_eq = bool_< _Tp1()==_Tp2()>
     
    template<typename _Tp1 , typename _Tp2 >
    using comp_lt = bool_<(_Tp1()< _Tp2())>
     
    template<typename _Tp1 , typename _Tp2 >
    using comp_ne = not_< comp_eq< _Tp1, _Tp2 > >
     Not equal. More...
     
    template<typename _Tp1 , typename _Tp2 >
    using comp_gt = comp_lt< _Tp2, _Tp1 >
     Greater than. More...
     
    template<typename _Tp1 , typename _Tp2 >
    using comp_le = not_< comp_lt< _Tp2, _Tp1 > >
     Less or equal. More...
     
    template<typename _Tp1 , typename _Tp2 >
    using comp_ge = not_< comp_lt< _Tp1, _Tp2 > >
     Greater or equal. More...
     
    template<typename _T >
    using bitnot_ = integral_< typename _T::value_type,(typename _T::value_type)(~_T())>
     
    template<typename _Tp1 , typename _Tp2 >
    using bitand_ = integral_< decltype(_Tp1() &_Tp2()), _Tp1() &_Tp2()>
     
    template<typename _Tp1 , typename _Tp2 >
    using bitor_ = integral_< decltype(_Tp1()|_Tp2()), _Tp1()|_Tp2()>
     
    template<typename _Tp1 , typename _Tp2 >
    using bitxor_ = integral_< decltype(_Tp1() ^ _Tp2()), _Tp1() ^ _Tp2()>
     
    template<typename _Tp , typename shift >
    using shift_left = integral_< typename _Tp::value_type,(typename _Tp::value_type)(_Tp()<< shift())>
     
    template<typename _Tp , typename shift >
    using shift_right = integral_< typename _Tp::value_type,(typename _Tp::value_type)(_Tp() > > shift())>
     
    template<bool B, typename... Args>
    using if_c = eval< detail::if_c_< B, Args... > >
     Select one type or another depending on a compile-time Boolean. More...
     
    template<typename If , typename... Args>
    using if_ = if_c< If::type::value, Args... >
     Select one type or another depending on a compile-time Boolean type. More...
     
    template<typename T1 , typename ... >
    using first_of = T1
     Select the first type of a type sequence. More...
     
    template<typename T1 , typename T2 , typename ... >
    using second_of = T2
     Select the second type of a type sequence. More...
     
    template<bool If>
    using when = eval< detail::when_< If > >
     Well formed only if If is true. More...
     
    template<bool If, typename _Tp = void>
    using enable_if = std::enable_if< If, _Tp >
     enable_if, imported from stl More...
     
    template<bool If, typename _Tp = void>
    using enable_if_t = eval< enable_if< If, _Tp > >
     alias template for enable_if More...
     
    template<size_t N, typename ... Ts>
    using repeat_c = typename typelist< Ts... >::template times< N >
     
    template<typename N , typename ... Ts>
    using repeat = repeat_c< N::type::value, Ts... >
     
    template<typename Fn , typename Seq >
    using apply = apply_impl::apply_< Fn, Seq >
     
    template<typename Fn , typename Seq >
    using apply_t = eval< apply< Fn, Seq > >
     
    template<typename List , index_t N>
    using at_c = eval< at_impl::at_< List, N > >
     
    template<typename List , typename N >
    using at = at_c< List, N::type::value >
     
    template<typename List >
    using front = eval< front_impl::front_< List > >
     
    template<typename List >
    using back = eval< back_impl::back_< List > >
     
    template<typename... Lists>
    using cat = eval< cat_impl::cat_< Lists... > >
     
    template<typename List , typename V , typename Fn >
    using fold = eval< fold_impl::fold_< List, V, Fn > >
     
    template<typename List , typename V , typename Fn >
    using accumulate = fold< List, V, Fn >
     accumulate is an stl name for fold More...
     
    template<typename List , typename V , typename Fn >
    using rev_fold = eval< rev_fold_impl::rev_fold_< List, V, Fn > >
     
    template<typename List >
    using reverse = eval< reverse_impl::reverse_< List > >
     
    template<typename List >
    using pop_front = eval< pop_front_impl::pop_front_< List > >
     
    template<typename List >
    using pop_back = eval< pop_back_impl::pop_back_< List > >
     
    template<typename... Args>
    using transform = eval< transform_impl::transform_< typelist< Args... > > >
     
    template<typename... Args>
    using transform_lazy = eval< transform_lazy_impl::transform_lazy_< typelist< Args... > > >
     
    template<typename List , typename Pred >
    using find_if = eval< find_if_impl::find_if_< List, Pred, 0 > >
     
    template<typename List , typename T >
    using find = find_if< List, same_as< T > >
     
    template<typename List , typename Pred >
    using seek_if = eval< seek_if_impl::seek_if_< List, Pred, 0 > >
     
    template<typename List , typename T >
    using seek = seek_if< List, same_as< T > >
     
    template<typename List , typename Pred >
    using count_if = eval< count_if_impl::count_if_< List, Pred, 0 > >
     
    template<typename List , typename T >
    using count = count_if< List, same_as< T > >
     
    template<typename List , typename Pred >
    using filter = eval< filter_impl::filter_< List, Pred, typelist<> > >
     
    template<typename List , typename Pred , typename T >
    using replace_if = eval< replace_if_impl::replace_if_< List, Pred, T, typelist<> > >
     
    template<typename List , typename T , typename U >
    using replace = eval< replace_if< List, same_as< T >, U > >
     
    template<template< typename... > class Op, typename... Args>
    using is_detected = typename detail::detector< nat_, void, Op, Args... >::detected
     
    template<template< typename... > class Op, typename... Args>
    using detected_t = eval< detail::detector< nat_, void, Op, Args... > >
     
    template<typename Default , template< typename... > class Op, typename... Args>
    using detected_or_t = eval< detail::detected_or< Default, Op, Args... > >
     
    template<typename Expected , template< typename... > class Op, typename... Args>
    using is_detected_exact = eval< same_< Expected, detected_t< Op, Args... > > >
     
    template<typename To , template< typename... > class Op, typename... Args>
    using is_detected_convertible = eval< std::is_convertible< detected_t< Op, Args... >, To > >
     
    template<template< typename... > class Op, typename... Args>
    constexpr bool is_detected_v = is_detected<Op, Args...>::value
     Detection predicate. More...
     
    template<typename Expected , template< typename... > class Op, typename... Args>
    constexpr bool is_detected_exact_v = is_detected_exact< Expected, Op, Args...>::value
     evaluates to true if evaluation of Op<Args...> is Expected and to false if not More...
     
    template<typename To , template< typename... > class Op, typename... Args>
    constexpr bool is_detected_convertible_v
     
    +

    Typedef Documentation

    + +

    ◆ accumulate

    + +
    +
    +
    +template<typename List , typename V , typename Fn >
    + + + + +
    using utl::meta::accumulate = typedef fold<List, V, Fn>
    +
    + +

    accumulate is an stl name for fold

    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/typelist.h.
    +
    +

    Definition at line 387 of file typelist.h.

    + +
    +
    + +

    ◆ add

    + +
    +
    +
    +template<typename _Tp1 , typename _Tp2 >
    + + + + +
    using utl::meta::add = typedef integral_< decltype(_Tp1() + _Tp2()), _Tp1() + _Tp2() >
    +
    + +

    Addition.

    + +

    Definition at line 144 of file operations.h.

    + +
    +
    + +

    ◆ alignof_

    + +
    +
    +
    +template<typename Tp >
    + + + + +
    using utl::meta::alignof_ = typedef size_<alignof(Tp)>
    +
    +

    Computes the alignment required for any instance of the type Tp. Complexity $ O(1) $.

    + +

    Definition at line 120 of file integral.h.

    + +
    +
    + +

    ◆ all_of

    + +
    +
    +
    +template<typename List , typename Pred >
    + + + + +
    using utl::meta::all_of = typedef if_ < empty <List>, false_, empty < filter <List, compose<quote<not_>, Pred> > > >
    +
    +

    Returns true_ if Pred returns true_ for all the elements in the List or if the List is empty and false_ otherwise.

    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/typelist.h.
    +
    +

    Definition at line 861 of file typelist.h.

    + +
    +
    + +

    ◆ any_of

    + +
    +
    +
    +template<typename List , typename Pred >
    + + + + +
    using utl::meta::any_of = typedef not_< empty<filter <List, Pred> > >
    +
    +

    Returns true_ if Pred returns true_ for any of the elements in the List and false_ otherwise.

    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/typelist.h.
    +
    +

    Definition at line 868 of file typelist.h.

    + +
    +
    + +

    ◆ apply

    + +
    +
    +
    +template<typename Fn , typename Seq >
    + + + + +
    using utl::meta::apply = typedef apply_impl::apply_<Fn, Seq>
    +
    +

    Apply the Invocable Fn using the types in the type Seq as arguments.

    Note
    This is the opposed operation of typelist<Ts...>
    +

    If Seq == typelist<> then Unpack typelist and apply to Fn It Seq == integer_sequence<> then Unpack and use the integral_c<> of each integer

    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/invoke.h, and W:/Work/Software/Libraries/utl/include/utl/meta/typelist.h.
    +
    +

    Definition at line 197 of file typelist.h.

    + +
    +
    + +

    ◆ apply_t

    + +
    +
    +
    +template<typename Fn , typename Seq >
    + + + + +
    using utl::meta::apply_t = typedef eval <apply<Fn, Seq> >
    +
    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/typelist.h.
    +
    +

    Definition at line 200 of file typelist.h.

    + +
    +
    + +

    ◆ at

    + +
    +
    +
    +template<typename List , typename N >
    + + + + +
    using utl::meta::at = typedef at_c<List, N::type::value>
    +
    +

    Return the N th element in the meta::typelist List.

    +

    Complexity $ O(N) $.

    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/typelist.h.
    +
    +

    Definition at line 253 of file typelist.h.

    + +
    +
    + +

    ◆ at_c

    + +
    +
    +
    +template<typename List , index_t N>
    + + + + +
    using utl::meta::at_c = typedef eval< at_impl::at_<List, N> >
    +
    +

    Return the N th element in the meta::typelist List.

    +

    Complexity $ O(logN) $.

    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/typelist.h.
    +
    +

    Definition at line 245 of file typelist.h.

    + +
    +
    + +

    ◆ back

    + +
    +
    +
    +template<typename List >
    + + + + +
    using utl::meta::back = typedef eval< back_impl::back_<List> >
    +
    +

    Return the last element in meta::typelist List. Complexity $ O(N) $.

    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/typelist.h.
    +
    +

    Definition at line 296 of file typelist.h.

    + +
    +
    + +

    ◆ bitand_

    + +
    +
    +
    +template<typename _Tp1 , typename _Tp2 >
    + + + + +
    using utl::meta::bitand_ = typedef integral_<decltype(_Tp1() & _Tp2()), _Tp1() & _Tp2()>
    +
    +
    Returns
    bitwise and (&) operation of its arguments
    + +

    Definition at line 208 of file operations.h.

    + +
    +
    + +

    ◆ bitnot_

    + +
    +
    +
    +template<typename _T >
    + + + + +
    using utl::meta::bitnot_ = typedef integral_<typename _T::value_type, (typename _T::value_type)(~_T())>
    +
    +

    Bitwise operations requires IntegralConstant(_Tp)

    Returns
    bitwise not (~) operation of its argument.
    + +

    Definition at line 205 of file operations.h.

    + +
    +
    + +

    ◆ bitor_

    + +
    +
    +
    +template<typename _Tp1 , typename _Tp2 >
    + + + + +
    using utl::meta::bitor_ = typedef integral_<decltype(_Tp1() | _Tp2()), _Tp1() | _Tp2()>
    +
    +
    Returns
    bitwise or (|) operation of its arguments.
    + +

    Definition at line 211 of file operations.h.

    + +
    +
    + +

    ◆ bitxor_

    + +
    +
    +
    +template<typename _Tp1 , typename _Tp2 >
    + + + + +
    using utl::meta::bitxor_ = typedef integral_<decltype(_Tp1() ^ _Tp2()), _Tp1() ^ _Tp2()>
    +
    +
    Returns
    bitwise xor (^) operation of its arguments.
    + +

    Definition at line 215 of file operations.h.

    + +
    +
    + +

    ◆ bool_

    + +
    +
    +
    +template<bool v>
    + + + + +
    using utl::meta::bool_ = typedef integral_<bool, v>
    +
    + +

    bool_ type: integral constant wrapper for bool

    +

    Wrappers for basic types

    + +

    Definition at line 66 of file integral.h.

    + +
    +
    + +

    ◆ cat

    + +
    +
    +
    +template<typename... Lists>
    + + + + +
    using utl::meta::cat = typedef eval< cat_impl::cat_<Lists...> >
    +
    +

    Transformation that concatenates several lists into a single typelist. The parameters must all be instantiations of meta::typelist. Complexity: $ O(N) $ where $ N $ is the number of lists passed to the algorithm.

    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/typelist.h.
    +
    +

    Definition at line 338 of file typelist.h.

    + +
    +
    + +

    ◆ char_

    + +
    +
    +
    +template<char v>
    + + + + +
    using utl::meta::char_ = typedef integral_<char, v>
    +
    + +

    char_ type: integral constant wrapper for char

    + +

    Definition at line 94 of file integral.h.

    + +
    +
    + +

    ◆ comp_eq

    + +
    +
    +
    +template<typename _Tp1 , typename _Tp2 >
    + + + + +
    using utl::meta::comp_eq = typedef bool_<_Tp1() == _Tp2()>
    +
    +

    Comparison operations requires IntegralConstant(_Tp)

    Returns
    a true-valued Integral Constant if _Tp1 and _Tp2 are equal.
    + +

    Definition at line 184 of file operations.h.

    + +
    +
    + +

    ◆ comp_ge

    + +
    +
    +
    +template<typename _Tp1 , typename _Tp2 >
    + + + + +
    using utl::meta::comp_ge = typedef not_<comp_lt<_Tp1, _Tp2> >
    +
    + +

    Greater or equal.

    + +

    Definition at line 195 of file operations.h.

    + +
    +
    + +

    ◆ comp_gt

    + +
    +
    +
    +template<typename _Tp1 , typename _Tp2 >
    + + + + +
    using utl::meta::comp_gt = typedef comp_lt <_Tp2, _Tp1>
    +
    + +

    Greater than.

    + +

    Definition at line 191 of file operations.h.

    + +
    +
    + +

    ◆ comp_le

    + +
    +
    +
    +template<typename _Tp1 , typename _Tp2 >
    + + + + +
    using utl::meta::comp_le = typedef not_<comp_lt<_Tp2, _Tp1> >
    +
    + +

    Less or equal.

    + +

    Definition at line 193 of file operations.h.

    + +
    +
    + +

    ◆ comp_lt

    + +
    +
    +
    +template<typename _Tp1 , typename _Tp2 >
    + + + + +
    using utl::meta::comp_lt = typedef bool_<(_Tp1() < _Tp2())>
    +
    +
    Returns
    a true-valued Integral Constant if _Tp1 is less than _Tp2.
    + +

    Definition at line 186 of file operations.h.

    + +
    +
    + +

    ◆ comp_ne

    + +
    +
    +
    +template<typename _Tp1 , typename _Tp2 >
    + + + + +
    using utl::meta::comp_ne = typedef not_<comp_eq<_Tp1, _Tp2> >
    +
    + +

    Not equal.

    + +

    Definition at line 189 of file operations.h.

    + +
    +
    + +

    ◆ compose

    + +
    +
    +
    +template<typename... Fns>
    + + + + +
    using utl::meta::compose = typedef detail::compose_<Fns...>
    +
    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/invoke.h.
    +
    +

    Definition at line 308 of file invoke.h.

    + +
    +
    + +

    ◆ compose_f

    + +
    +
    +
    +template<template< typename... > class... Fns>
    + + + + +
    using utl::meta::compose_f = typedef detail::compose_f_<Fns...>
    +
    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/invoke.h.
    +
    +

    Definition at line 324 of file invoke.h.

    + +
    +
    + +

    ◆ count

    + +
    +
    +
    +template<typename List , typename T >
    + + + + +
    using utl::meta::count = typedef count_if<List, same_as<T> >
    +
    +

    Count all occurrences of type T int List

    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/typelist.h.
    +
    +

    Definition at line 761 of file typelist.h.

    + +
    +
    + +

    ◆ count_if

    + +
    +
    +
    +template<typename List , typename Pred >
    + + + + +
    using utl::meta::count_if = typedef eval< count_if_impl::count_if_<List, Pred, 0> >
    +
    +

    Count all Items on the List for which the predicate Pred returns true_ when eval<invoke<Pred, Item>>

    +

    Complexity $ O(N) $

    +
    Parameters
    + + + +
    ListA typelist
    PredA Unary invocable predicate
    +
    +
    +
    Returns
    The total count of occurrences as an integral constant of size_t
    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/typelist.h.
    +
    +

    Definition at line 755 of file typelist.h.

    + +
    +
    + +

    ◆ dec

    + +
    +
    +
    +template<typename _Tp >
    + + + + +
    using utl::meta::dec = typedef add<_Tp, int_<-1> >
    +
    + +

    decrease

    + +

    Definition at line 173 of file operations.h.

    + +
    +
    + +

    ◆ defer

    + +
    +
    +
    +template<template< class... > class F, class... Ts>
    + + + + +
    using utl::meta::defer = typedef if_< detail::is_applicable_<F, Ts...>, detail::defer_<F, Ts...>, nil_ >
    +
    + +

    defer alias template for F<Ts...>

    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/invoke.h.
    +
    +

    Definition at line 213 of file invoke.h.

    + +
    +
    + +

    ◆ defer_i

    + +
    +
    +
    +template<typename T , template< T... > class F, T... Is>
    + + + + +
    using utl::meta::defer_i = typedef if_ < detail::is_applicable_i_<T, F, Is...>, detail::defer_i_<T, F, Is...>, nil_ >
    +
    + +

    defer_i alias template for F<T, Is...>

    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/invoke.h.
    +
    +

    Definition at line 221 of file invoke.h.

    + +
    +
    + +

    ◆ detected_or_t

    + +
    +
    +
    +template<typename Default , template< typename... > class Op, typename... Args>
    + + + + +
    using utl::meta::detected_or_t = typedef eval < detail::detected_or<Default, Op, Args...> >
    +
    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/detection.h.
    +
    +

    Definition at line 172 of file detection.h.

    + +
    +
    + +

    ◆ detected_t

    + +
    +
    +
    +template<template< typename... > class Op, typename... Args>
    + + + + +
    using utl::meta::detected_t = typedef eval < detail::detector<nat_, void, Op, Args...> >
    +
    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/detection.h.
    +
    +

    Definition at line 146 of file detection.h.

    + +
    +
    + +

    ◆ divide

    + +
    +
    +
    +template<typename _Tp1 , typename _Tp2 >
    + + + + +
    using utl::meta::divide = typedef integral_< decltype(_Tp2() / _Tp2()), _Tp1() / _Tp2() >
    +
    + +

    Division.

    + +

    Definition at line 156 of file operations.h.

    + +
    +
    + +

    ◆ empty

    + +
    +
    +
    +template<typename List >
    + + + + +
    using utl::meta::empty = typedef bool_<List::empty()>
    +
    +

    An Boolean constant wrapper that returns if the typelist is empty

    +

    Complexity $ O(1) $.

    +
    Parameters
    + + +
    ListA typelist
    +
    +
    +
    Returns
    Empty or not
    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/typelist.h.
    +
    +

    Definition at line 140 of file typelist.h.

    + +
    +
    + +

    ◆ enable_if

    + +
    +
    +
    +template<bool If, typename _Tp = void>
    + + + + +
    using utl::meta::enable_if = typedef std::enable_if<If, _Tp>
    +
    + +

    enable_if, imported from stl

    +

    enable_if

    + +

    Definition at line 60 of file sfinae.h.

    + +
    +
    + +

    ◆ enable_if_t

    + +
    +
    +
    +template<bool If, typename _Tp = void>
    + + + + +
    using utl::meta::enable_if_t = typedef eval< enable_if<If, _Tp> >
    +
    + +

    alias template for enable_if

    + +

    Definition at line 63 of file sfinae.h.

    + +
    +
    + +

    ◆ eval

    + +
    +
    +
    +template<typename Tp >
    + + + + +
    using utl::meta::eval = typedef typename Tp::type
    +
    + +

    Type alias for Tp::type. Used to evaluate/extract return type of metafunctions.

    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/detection.h, W:/Work/Software/Libraries/utl/include/utl/meta/invoke.h, and W:/Work/Software/Libraries/utl/include/utl/meta/typelist.h.
    +
    +

    Definition at line 49 of file integral.h.

    + +
    +
    + +

    ◆ false_

    + +
    +
    + + + + +
    using utl::meta::false_ = typedef bool_<false>
    +
    +
    + +

    ◆ filter

    + +
    +
    +
    +template<typename List , typename Pred >
    + + + + +
    using utl::meta::filter = typedef eval< filter_impl::filter_<List, Pred, typelist<> > >
    +
    +

    Return a new typelist with elements, the elements of List that satisfy the invocable Pred such that eval<invoke<Pred, Item>> is true_

    +

    Complexity $ O(N) $

    +
    Parameters
    + + + +
    ListThe input typelist
    PredA unary invocable predicate
    +
    +
    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/typelist.h.
    +
    +

    Definition at line 800 of file typelist.h.

    + +
    +
    + +

    ◆ find

    + +
    +
    +
    +template<typename List , typename T >
    + + + + +
    using utl::meta::find = typedef find_if<List, same_as<T> >
    +
    +

    Search for the first occurrence of type T on a List

    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/typelist.h.
    +
    +

    Definition at line 663 of file typelist.h.

    + +
    +
    + +

    ◆ find_if

    + +
    +
    +
    +template<typename List , typename Pred >
    + + + + +
    using utl::meta::find_if = typedef eval< find_if_impl::find_if_<List, Pred, 0> >
    +
    +

    Search for the first Item on the List for which the predicate Pred returns true_ when eval<invoke<Pred, Item>>

    +

    Complexity $ O(N) $

    +
    Parameters
    + + + +
    ListA typelist
    PredA Unary invocable predicate
    +
    +
    +
    Returns
    An integral constant of index_t with the location of the first match, or Npos otherwise.
    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/typelist.h.
    +
    +

    Definition at line 657 of file typelist.h.

    + +
    +
    + +

    ◆ fold

    + +
    +
    +
    +template<typename List , typename V , typename Fn >
    + + + + +
    using utl::meta::fold = typedef eval<fold_impl::fold_<List, V, Fn> >
    +
    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/typelist.h.
    +
    +

    Definition at line 383 of file typelist.h.

    + +
    +
    + +

    ◆ front

    + +
    +
    +
    +template<typename List >
    + + + + +
    using utl::meta::front = typedef eval< front_impl::front_<List> >
    +
    +

    Return the first element in meta::typelist List. Complexity $ O(1) $.

    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/typelist.h.
    +
    +

    Definition at line 274 of file typelist.h.

    + +
    +
    + +

    ◆ identity_t

    + +
    +
    +
    +template<typename _Tp >
    + + + + +
    using utl::meta::identity_t = typedef eval<identity<_Tp> >
    +
    + +

    identity type alias

    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/invoke.h.
    +
    +

    Definition at line 68 of file invoke.h.

    + +
    +
    + +

    ◆ inc

    + +
    +
    +
    +template<typename _Tp >
    + + + + +
    using utl::meta::inc = typedef add<_Tp, int_<1> >
    +
    + +

    Increase.

    + +

    Definition at line 169 of file operations.h.

    + +
    +
    + +

    ◆ index_

    + +
    +
    +
    +template<index_t v>
    + + + + +
    using utl::meta::index_ = typedef integral_<index_t, v>
    +
    + +

    index_ type: integral constant wrapper for index_t a.k.a std::size_t

    + +

    Definition at line 106 of file integral.h.

    + +
    +
    + +

    ◆ index_sequence

    + +
    +
    +
    +template<index_t... Idx>
    + + + + +
    using utl::meta::index_sequence = typedef integer_sequence<index_t, Idx...>
    +
    + +

    Alias template index_sequence.

    + +

    Definition at line 136 of file integral.h.

    + +
    +
    + +

    ◆ index_sequence_for

    + +
    +
    +
    +template<typename... Types>
    + + + + +
    using utl::meta::index_sequence_for = typedef make_index_sequence<sizeof...(Types)>
    +
    + +

    Alias template index_sequence_for.

    + +

    Definition at line 144 of file integral.h.

    + +
    +
    + +

    ◆ int16_

    + +
    +
    +
    +template<int16_t v>
    + + + + +
    using utl::meta::int16_ = typedef integral_<int16_t, v>
    +
    + +

    int16_ type: integral constant wrapper for int16_t

    + +

    Definition at line 80 of file integral.h.

    + +
    +
    + +

    ◆ int32_

    + +
    +
    +
    +template<int32_t v>
    + + + + +
    using utl::meta::int32_ = typedef integral_<int32_t, v>
    +
    + +

    int32_ type: integral constant wrapper for int32_t

    + +

    Definition at line 87 of file integral.h.

    + +
    +
    + +

    ◆ int8_

    + +
    +
    +
    +template<int8_t v>
    + + + + +
    using utl::meta::int8_ = typedef integral_<int8_t, v>
    +
    + +

    int8_ type: integral constant wrapper for int8_t

    + +

    Definition at line 73 of file integral.h.

    + +
    +
    + +

    ◆ int_

    + +
    +
    +
    +template<int v>
    + + + + +
    using utl::meta::int_ = typedef integral_<int, v>
    +
    + +

    int_ type: integral constant wrapper for int

    + +

    Definition at line 98 of file integral.h.

    + +
    +
    + +

    ◆ integer_sequence

    + +
    +
    +
    +template<class Tp , Tp... Ints>
    + + + + +
    using utl::meta::integer_sequence = typedef std::integer_sequence<Tp, Ints...>
    +
    +

    integer sequence

    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/typelist.h.
    +
    +

    Definition at line 129 of file integral.h.

    + +
    +
    + +

    ◆ integral_

    + +
    +
    +
    +template<typename Tp , Tp v>
    + + + + +
    using utl::meta::integral_ = typedef std::integral_constant<Tp, v>
    +
    +

    integral_ Integral Constant is a holder class for a compile-time value of an integral type. Every Integral Constant is also a null-ary Metafunction, returning itself. An integral constant object is implicitly convertible to the corresponding run-time value of the wrapped integral type

    + +

    Definition at line 58 of file integral.h.

    + +
    +
    + +

    ◆ invoke

    + +
    +
    +
    +template<typename Fn , typename... Args>
    + + + + +
    using utl::meta::invoke = typedef typename Fn::template apply<Args...>
    +
    +

    invoke, invoke_t

    +

    Invoke the nested apply meta-function from Fn with the arguments Args.

    Note
    This is an analogous to the std::invoke()
    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/invoke.h, and W:/Work/Software/Libraries/utl/include/utl/meta/typelist.h.
    +
    +

    Definition at line 81 of file invoke.h.

    + +
    +
    + +

    ◆ invoke_t

    + +
    +
    +
    +template<typename Fn , typename... Args>
    + + + + +
    using utl::meta::invoke_t = typedef eval< invoke <Fn, Args...> >
    +
    +

    Evaluate the invocation of the nested apply metafunction from Fn with the arguments Args.

    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/invoke.h.
    +
    +

    Definition at line 88 of file invoke.h.

    + +
    +
    + +

    ◆ is_applicable_it

    + +
    +
    +
    +template<typename T , template< T... > class F, T... Is>
    + + + + +
    using utl::meta::is_applicable_it = typedef eval< detail::is_applicable_i_<T, F, Is...> >
    +
    + +

    check if we can instantiate F with parameters Is of type T

    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/invoke.h.
    +
    +

    Definition at line 174 of file invoke.h.

    + +
    +
    + +

    ◆ is_applicable_qt

    + +
    +
    +
    +template<typename Q , typename... T>
    + + + + +
    using utl::meta::is_applicable_qt = typedef eval < detail::is_applicable_q_ <Q, T...> >
    +
    + +

    check if we can invoke Q with parameters T

    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/invoke.h.
    +
    +

    Definition at line 168 of file invoke.h.

    + +
    +
    + +

    ◆ is_applicable_t

    + +
    +
    +
    +template<template< typename... > class F, typename... T>
    + + + + +
    using utl::meta::is_applicable_t = typedef eval< detail::is_applicable_<F, T...> >
    +
    + +

    check if we can instantiate F with parameters T

    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/invoke.h.
    +
    +

    Definition at line 163 of file invoke.h.

    + +
    +
    + +

    ◆ is_detected

    + +
    +
    +
    +template<template< typename... > class Op, typename... Args>
    + + + + +
    using utl::meta::is_detected = typedef typename detail::detector<nat_, void, Op, Args...>::detected
    +
    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/detection.h.
    +
    +

    Definition at line 118 of file detection.h.

    + +
    +
    + +

    ◆ is_detected_convertible

    + +
    +
    +
    +template<typename To , template< typename... > class Op, typename... Args>
    + + + + +
    using utl::meta::is_detected_convertible = typedef eval < std::is_convertible< detected_t<Op, Args...>, To > >
    +
    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/detection.h.
    +
    +

    Definition at line 231 of file detection.h.

    + +
    +
    + +

    ◆ is_detected_exact

    + +
    +
    +
    +template<typename Expected , template< typename... > class Op, typename... Args>
    + + + + +
    using utl::meta::is_detected_exact = typedef eval < same_<Expected, detected_t<Op, Args...> > >
    +
    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/detection.h.
    +
    +

    Definition at line 199 of file detection.h.

    + +
    +
    + +

    ◆ long_

    + +
    +
    +
    +template<long v>
    + + + + +
    using utl::meta::long_ = typedef integral_<long, v>
    +
    + +

    long_ type: integral constant wrapper for long

    + +

    Definition at line 102 of file integral.h.

    + +
    +
    + +

    ◆ make_index_sequence

    + +
    +
    +
    +template<index_t Num>
    + + + + +
    using utl::meta::make_index_sequence = typedef make_integer_sequence <index_t, Num>
    +
    + +

    Alias template make_index_sequence.

    + +

    Definition at line 140 of file integral.h.

    + +
    +
    + +

    ◆ make_integer_sequence

    + +
    +
    +
    +template<typename Tp , Tp Num>
    + + + + +
    using utl::meta::make_integer_sequence = typedef std::make_integer_sequence<Tp, Num>
    +
    + +

    Definition at line 132 of file integral.h.

    + +
    +
    + +

    ◆ modulo

    + +
    +
    +
    +template<typename _Tp1 , typename _Tp2 >
    + + + + +
    using utl::meta::modulo = typedef integral_< decltype(_Tp1() % _Tp2()), _Tp1() % _Tp2() >
    +
    + +

    Modulo.

    + +

    Definition at line 162 of file operations.h.

    + +
    +
    + +

    ◆ mult

    + +
    +
    +
    +template<typename _Tp1 , typename _Tp2 >
    + + + + +
    using utl::meta::mult = typedef integral_< decltype(_Tp2() * _Tp2()), _Tp1() * _Tp2() >
    +
    + +

    Multiplication.

    + +

    Definition at line 150 of file operations.h.

    + +
    +
    + +

    ◆ negate

    + +
    +
    +
    +template<typename _Tp >
    + + + + +
    using utl::meta::negate = typedef integral_<decltype(-_Tp()), -_Tp()>
    +
    + +

    Negation.

    +

    Math operations requires IntegralConstant(_Tp)

    + +

    Definition at line 138 of file operations.h.

    + +
    +
    + +

    ◆ none_of

    + +
    +
    +
    +template<typename List , typename Pred >
    + + + + +
    using utl::meta::none_of = typedef empty< filter <List, Pred> >
    +
    +

    Returns true_ if Pred returns false_ for all the elements in the List or if the List is empty and false otherwise.

    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/typelist.h.
    +
    +

    Definition at line 875 of file typelist.h.

    + +
    +
    + +

    ◆ Npos

    + +
    +
    + + + + +
    using utl::meta::Npos = typedef size_<index_t(-1)>
    +
    + +

    The last position we can express for indexing.

    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/typelist.h.
    +
    +

    Definition at line 124 of file integral.h.

    + +
    +
    + +

    ◆ pair

    + +
    +
    +
    +template<typename T1 , typename T2 >
    + + + + +
    using utl::meta::pair = typedef typelist<T1, T2>
    +
    +

    pair A special typelist with only 2 Types

    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/typelist.h.
    +
    +

    Definition at line 145 of file typelist.h.

    + +
    +
    + +

    ◆ pop_back

    + +
    +
    +
    +template<typename List >
    + + + + +
    using utl::meta::pop_back = typedef eval < pop_back_impl::pop_back_<List> >
    +
    +

    Return a new typelist by removing the last element from the List. Complexity $ O(N) $.

    Note
    This operation, in addition from other push/pop operations, is heavy(2 reverse operations).
    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/typelist.h.
    +
    +

    Definition at line 526 of file typelist.h.

    + +
    +
    + +

    ◆ pop_front

    + +
    +
    +
    +template<typename List >
    + + + + +
    using utl::meta::pop_front = typedef eval< pop_front_impl::pop_front_<List> >
    +
    +

    Return a new typelist by removing the first element from the front of List. Complexity $ O(1) $

    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/typelist.h.
    +
    +

    Definition at line 502 of file typelist.h.

    + +
    +
    + +

    ◆ push_back

    + +
    +
    +
    +template<typename List , typename... Ts>
    + + + + +
    using utl::meta::push_back = typedef eval< apply < bind_back<quote<typelist>, Ts...>, List > >
    +
    +

    Return a new typelist by adding the elements Ts to the back of List. Complexity $ O(1) $

    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/typelist.h.
    +
    +

    Definition at line 461 of file typelist.h.

    + +
    +
    + +

    ◆ push_front

    + +
    +
    +
    +template<typename List , typename... Ts>
    + + + + +
    using utl::meta::push_front = typedef eval< apply < bind_front<quote<typelist>, Ts...>, List > >
    +
    +

    Return a new typelist by adding the elements Ts to the front of List. Complexity $ O(1) $

    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/typelist.h.
    +
    +

    Definition at line 450 of file typelist.h.

    + +
    +
    + +

    ◆ repeat

    + +
    +
    +
    +template<typename N , typename ... Ts>
    + + + + +
    using utl::meta::repeat = typedef repeat_c<N::type::value, Ts...>
    +
    +

    A wrapper to typelist<>::times<> utility for integral_c argument N

    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/typelist.h.
    +
    +

    Definition at line 161 of file typelist.h.

    + +
    +
    + +

    ◆ repeat_c

    + +
    +
    +
    +template<size_t N, typename ... Ts>
    + + + + +
    using utl::meta::repeat_c = typedef typename typelist<Ts...>::template times<N>
    +
    +

    repeat

    +

    A wrapper to typelist<>::times<> utility for integer argument N

    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/typelist.h.
    +
    +

    Definition at line 155 of file typelist.h.

    + +
    +
    + +

    ◆ replace

    + +
    +
    +
    +template<typename List , typename T , typename U >
    + + + + +
    using utl::meta::replace = typedef eval < replace_if <List, same_as<T>, U> >
    +
    +

    Alias wrapper that returns a new typelist where all instances of type T have been replaced with U.

    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/typelist.h.
    +
    +

    Definition at line 848 of file typelist.h.

    + +
    +
    + +

    ◆ replace_if

    + +
    +
    +
    +template<typename List , typename Pred , typename T >
    + + + + +
    using utl::meta::replace_if = typedef eval< replace_if_impl::replace_if_<List, Pred, T, typelist<> > >
    +
    +

    Return a new typelist where all the instances for which the invocation ofPred returns true_, are replaced with T

    +

    Complexity $ O(N) $

    +
    Parameters
    + + + + +
    ListThe input typelist
    PredA unary invocable predicate
    TThe new type to replace the item of the List, when eval<invoke<Pred, Item>> returns true_
    +
    +
    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/typelist.h.
    +
    +

    Definition at line 841 of file typelist.h.

    + +
    +
    + +

    ◆ rev_fold

    + +
    +
    +
    +template<typename List , typename V , typename Fn >
    + + + + +
    using utl::meta::rev_fold = typedef eval< rev_fold_impl::rev_fold_<List, V, Fn> >
    +
    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/typelist.h.
    +
    +

    Definition at line 438 of file typelist.h.

    + +
    +
    + +

    ◆ reverse

    + +
    +
    +
    +template<typename List >
    + + + + +
    using utl::meta::reverse = typedef eval< reverse_impl::reverse_<List> >
    +
    +

    Return a new typelist by reversing the elements in the list List. Complexity $ O(N) $

    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/typelist.h.
    +
    +

    Definition at line 479 of file typelist.h.

    + +
    +
    + +

    ◆ seek

    + +
    +
    +
    +template<typename List , typename T >
    + + + + +
    using utl::meta::seek = typedef seek_if <List, same_as<T> >
    +
    +

    Search for the first Item on the List of type T and return the rest of the List starting from that position as new typelist

    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/typelist.h.
    +
    +

    Definition at line 711 of file typelist.h.

    + +
    +
    + +

    ◆ seek_if

    + +
    +
    +
    +template<typename List , typename Pred >
    + + + + +
    using utl::meta::seek_if = typedef eval< seek_if_impl::seek_if_<List, Pred, 0> >
    +
    +

    Search for the first Item on the List for which the predicate Pred returns true_ when eval<invoke<Pred, Item>> and return the rest of the List starting from that position as new typelist

    +

    Complexity $ O(N) $

    +
    Parameters
    + + + +
    ListA typelist
    PredA Unary invocable predicate
    +
    +
    +
    Returns
    An integral constant with the location of the first match, on Npos otherwise
    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/typelist.h.
    +
    +

    Definition at line 705 of file typelist.h.

    + +
    +
    + +

    ◆ shift_left

    + +
    +
    +
    +template<typename _Tp , typename shift >
    + + + + +
    using utl::meta::shift_left = typedef integral_<typename _Tp::value_type, (typename _Tp::value_type)(_Tp() << shift())>
    +
    +
    Returns
    the result of bitwise shift left (<<) operation on _Tp.
    + +

    Definition at line 218 of file operations.h.

    + +
    +
    + +

    ◆ shift_right

    + +
    +
    +
    +template<typename _Tp , typename shift >
    + + + + +
    using utl::meta::shift_right = typedef integral_<typename _Tp::value_type, (typename _Tp::value_type)(_Tp() > > shift())>
    +
    +
    Returns
    the result of bitwise shift right (>>) operation on _Tp.
    + +

    Definition at line 221 of file operations.h.

    + +
    +
    + +

    ◆ size

    + +
    +
    +
    +template<typename List >
    + + + + +
    using utl::meta::size = typedef size_<List::size()>
    +
    +

    An integral constant wrapper that is the size of the meta::typelist

    +

    Complexity $ O(1) $.

    +
    Parameters
    + + +
    ListA typelist
    +
    +
    +
    Returns
    The size of the typelist
    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/typelist.h.
    +
    +

    Definition at line 129 of file typelist.h.

    + +
    +
    + +

    ◆ size_

    + +
    +
    +
    +template<size_t v>
    + + + + +
    using utl::meta::size_ = typedef integral_<size_t, v>
    +
    + +

    size_ type: integral constant wrapper for size_t a.k.a std::size_t

    + +

    Definition at line 110 of file integral.h.

    + +
    +
    + +

    ◆ sizeof_

    + +
    +
    +
    +template<typename Tp >
    + + + + +
    using utl::meta::sizeof_ = typedef size_<sizeof(Tp)>
    +
    +

    Computes the size of the type Tp. Complexity $ O(1) $.

    + +

    Definition at line 115 of file integral.h.

    + +
    +
    + +

    ◆ sub

    + +
    +
    +
    +template<typename _Tp1 , typename _Tp2 >
    + + + + +
    using utl::meta::sub = typedef add<_Tp1, negate<_Tp2> >
    +
    + +

    Substruction.

    + +

    Definition at line 165 of file operations.h.

    + +
    +
    + +

    ◆ transform

    + +
    +
    +
    +template<typename... Args>
    + + + + +
    using utl::meta::transform = typedef eval< transform_impl::transform_<typelist<Args...> > >
    +
    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/typelist.h.
    +
    +

    Definition at line 568 of file typelist.h.

    + +
    +
    + +

    ◆ transform_lazy

    + +
    +
    +
    +template<typename... Args>
    + + + + +
    using utl::meta::transform_lazy = typedef eval< transform_lazy_impl::transform_lazy_<typelist<Args...> > >
    +
    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/typelist.h.
    +
    +

    Definition at line 614 of file typelist.h.

    + +
    +
    + +

    ◆ true_

    + +
    +
    + + + + +
    using utl::meta::true_ = typedef bool_<true>
    +
    + +

    The type used as a compile-time boolean with true value.

    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/detection.h, and W:/Work/Software/Libraries/utl/include/utl/meta/invoke.h.
    +
    +

    Definition at line 68 of file integral.h.

    + +
    +
    + +

    ◆ uint16_

    + +
    +
    +
    +template<uint16_t v>
    + + + + +
    using utl::meta::uint16_ = typedef integral_<uint16_t, v>
    +
    + +

    uint16_ type: integral constant wrapper for uint16_t

    + +

    Definition at line 83 of file integral.h.

    + +
    +
    + +

    ◆ uint32_

    + +
    +
    +
    +template<uint32_t v>
    + + + + +
    using utl::meta::uint32_ = typedef integral_<uint32_t, v>
    +
    + +

    uint32_ type: integral constant wrapper for uint32_t

    + +

    Definition at line 90 of file integral.h.

    + +
    +
    + +

    ◆ uint8_

    + +
    +
    +
    +template<uint8_t v>
    + + + + +
    using utl::meta::uint8_ = typedef integral_<uint8_t, v>
    +
    + +

    uint8_ type: integral constant wrapper for uint8_t

    + +

    Definition at line 76 of file integral.h.

    + +
    +
    + +

    ◆ use_if_all_t

    + +
    +
    +
    +template<typename T1 , typename... Ts>
    + + + + +
    using utl::meta::use_if_all_t = typedef enable_if_t< and_<T1, Ts...>::value, T1 >
    +
    + +

    If both type (_T1 and _T2) type resolves to _Ret, else to SFINAE.

    + +

    Definition at line 56 of file useif.h.

    + +
    +
    + +

    ◆ use_if_any_t

    + +
    +
    +
    +template<typename T1 , typename... Ts>
    + + + + +
    using utl::meta::use_if_any_t = typedef enable_if_t< or_<T1, Ts...>::value, T1 >
    +
    + +

    If any type (_T1 or _T2) type resolves to _Ret, else to SFINAE.

    + +

    Definition at line 50 of file useif.h.

    + +
    +
    + +

    ◆ use_if_not_same_t

    + +
    +
    +
    +template<typename _T1 , typename _T2 , typename _Ret = _T1>
    + + + + +
    using utl::meta::use_if_not_same_t = typedef enable_if_t< !same_<_T1, _T2>::value, _Ret >
    +
    + +

    If not same type resolves to _Ret, else SFINAE.

    + +

    Definition at line 45 of file useif.h.

    + +
    +
    + +

    ◆ use_if_same_t

    + +
    +
    +
    +template<typename _T1 , typename _T2 , typename _Ret = _T1>
    + + + + +
    using utl::meta::use_if_same_t = typedef enable_if_t< same_<_T1, _T2>::value, _Ret >
    +
    + +

    If same type resolves to _Ret, else SFINAE.

    + +

    Definition at line 40 of file useif.h.

    + +
    +
    + +

    ◆ when

    + +
    +
    +
    +template<bool If>
    + + + + +
    using utl::meta::when = typedef eval< detail::when_<If> >
    +
    + +

    Well formed only if If is true.

    + +

    Definition at line 46 of file sfinae.h.

    + +
    +
    +

    Variable Documentation

    + +

    ◆ is_detected_convertible_v

    + +
    +
    +
    +template<typename To , template< typename... > class Op, typename... Args>
    + + + + +
    constexpr bool utl::meta::is_detected_convertible_v
    +
    +Initial value:
    =
    is_detected_convertible<To, Op, Args...>::value
    eval< std::is_convertible< detected_t< Op, Args... >, To > > is_detected_convertible
    Definition: detection.h:231
    +

    evaluates to true if evaluation of Op<Args...> is convertible to To and to false if not

    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/detection.h.
    +
    +

    Definition at line 237 of file detection.h.

    + +
    +
    + +

    ◆ is_detected_exact_v

    + +
    +
    +
    +template<typename Expected , template< typename... > class Op, typename... Args>
    + + + + +
    constexpr bool utl::meta::is_detected_exact_v = is_detected_exact< Expected, Op, Args...>::value
    +
    + +

    evaluates to true if evaluation of Op<Args...> is Expected and to false if not

    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/detection.h.
    +
    +

    Definition at line 204 of file detection.h.

    + +
    +
    + +

    ◆ is_detected_v

    + +
    +
    +
    +template<template< typename... > class Op, typename... Args>
    + + + + +
    constexpr bool utl::meta::is_detected_v = is_detected<Op, Args...>::value
    +
    + +

    Detection predicate.

    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/detection.h.
    +
    +

    Definition at line 122 of file detection.h.

    + +
    +
    +
    +
    + + + + diff --git a/doc/html/namespaceutl_1_1meta.js b/doc/html/namespaceutl_1_1meta.js new file mode 100644 index 0000000..afc397e --- /dev/null +++ b/doc/html/namespaceutl_1_1meta.js @@ -0,0 +1,39 @@ +var namespaceutl_1_1meta = +[ + [ "apply_impl", "namespaceutl_1_1meta_1_1apply__impl.html", "namespaceutl_1_1meta_1_1apply__impl" ], + [ "at_impl", "namespaceutl_1_1meta_1_1at__impl.html", "namespaceutl_1_1meta_1_1at__impl" ], + [ "back_impl", "namespaceutl_1_1meta_1_1back__impl.html", "namespaceutl_1_1meta_1_1back__impl" ], + [ "cat_impl", "namespaceutl_1_1meta_1_1cat__impl.html", "namespaceutl_1_1meta_1_1cat__impl" ], + [ "count_if_impl", "namespaceutl_1_1meta_1_1count__if__impl.html", "namespaceutl_1_1meta_1_1count__if__impl" ], + [ "detail", "namespaceutl_1_1meta_1_1detail.html", "namespaceutl_1_1meta_1_1detail" ], + [ "filter_impl", "namespaceutl_1_1meta_1_1filter__impl.html", "namespaceutl_1_1meta_1_1filter__impl" ], + [ "find_if_impl", "namespaceutl_1_1meta_1_1find__if__impl.html", "namespaceutl_1_1meta_1_1find__if__impl" ], + [ "fold_impl", "namespaceutl_1_1meta_1_1fold__impl.html", "namespaceutl_1_1meta_1_1fold__impl" ], + [ "front_impl", "namespaceutl_1_1meta_1_1front__impl.html", "namespaceutl_1_1meta_1_1front__impl" ], + [ "pop_back_impl", "namespaceutl_1_1meta_1_1pop__back__impl.html", "namespaceutl_1_1meta_1_1pop__back__impl" ], + [ "pop_front_impl", "namespaceutl_1_1meta_1_1pop__front__impl.html", "namespaceutl_1_1meta_1_1pop__front__impl" ], + [ "replace_if_impl", "namespaceutl_1_1meta_1_1replace__if__impl.html", "namespaceutl_1_1meta_1_1replace__if__impl" ], + [ "rev_fold_impl", "namespaceutl_1_1meta_1_1rev__fold__impl.html", "namespaceutl_1_1meta_1_1rev__fold__impl" ], + [ "reverse_impl", "namespaceutl_1_1meta_1_1reverse__impl.html", "namespaceutl_1_1meta_1_1reverse__impl" ], + [ "seek_if_impl", "namespaceutl_1_1meta_1_1seek__if__impl.html", "namespaceutl_1_1meta_1_1seek__if__impl" ], + [ "transform_impl", "namespaceutl_1_1meta_1_1transform__impl.html", "namespaceutl_1_1meta_1_1transform__impl" ], + [ "transform_lazy_impl", "namespaceutl_1_1meta_1_1transform__lazy__impl.html", "namespaceutl_1_1meta_1_1transform__lazy__impl" ], + [ "bind_back", "structutl_1_1meta_1_1bind__back.html", "structutl_1_1meta_1_1bind__back" ], + [ "bind_front", "structutl_1_1meta_1_1bind__front.html", "structutl_1_1meta_1_1bind__front" ], + [ "identity", "structutl_1_1meta_1_1identity.html", "structutl_1_1meta_1_1identity" ], + [ "nat_", "structutl_1_1meta_1_1nat__.html", "structutl_1_1meta_1_1nat__" ], + [ "nil_", "structutl_1_1meta_1_1nil__.html", "structutl_1_1meta_1_1nil__" ], + [ "not_same_as", "structutl_1_1meta_1_1not__same__as.html", [ + [ "apply", "structutl_1_1meta_1_1not__same__as_1_1apply.html", null ] + ] ], + [ "quote", "structutl_1_1meta_1_1quote.html", "structutl_1_1meta_1_1quote" ], + [ "quote_i", "structutl_1_1meta_1_1quote__i.html", "structutl_1_1meta_1_1quote__i" ], + [ "same_", "structutl_1_1meta_1_1same__.html", null ], + [ "same_< _Tp, _Tp >", "structutl_1_1meta_1_1same___3_01___tp_00_01___tp_01_4.html", null ], + [ "same_as", "structutl_1_1meta_1_1same__as.html", [ + [ "apply", "structutl_1_1meta_1_1same__as_1_1apply.html", null ] + ] ], + [ "typelist", "structutl_1_1meta_1_1typelist.html", "structutl_1_1meta_1_1typelist" ], + [ "wrap", "structutl_1_1meta_1_1wrap.html", "structutl_1_1meta_1_1wrap" ], + [ "wrap_i", "structutl_1_1meta_1_1wrap__i.html", "structutl_1_1meta_1_1wrap__i" ] +]; \ No newline at end of file diff --git a/doc/html/namespaceutl_1_1meta_1_1apply__impl.html b/doc/html/namespaceutl_1_1meta_1_1apply__impl.html new file mode 100644 index 0000000..cda3bcc --- /dev/null +++ b/doc/html/namespaceutl_1_1meta_1_1apply__impl.html @@ -0,0 +1,121 @@ + + + + + + + +uTL: utl::meta::apply_impl Namespace Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::apply_impl Namespace Reference
    +
    +
    + + + + + + + + + + +

    +Classes

    struct  apply_
     
    struct  apply_< Fn, integer_sequence< T, Is... > >
     Sequence == integer_sequence<> More...
     
    struct  apply_< Fn, typelist< List... > >
     Sequence == typelist<> More...
     
    +

    Detailed Description

    +

    Apply An analogous to apply() implementation for tuples. We just use Our typelist<> and integer_sequence<> types.

    +
    +
    + + + + diff --git a/doc/html/namespaceutl_1_1meta_1_1apply__impl.js b/doc/html/namespaceutl_1_1meta_1_1apply__impl.js new file mode 100644 index 0000000..c8bb1d0 --- /dev/null +++ b/doc/html/namespaceutl_1_1meta_1_1apply__impl.js @@ -0,0 +1,6 @@ +var namespaceutl_1_1meta_1_1apply__impl = +[ + [ "apply_", "structutl_1_1meta_1_1apply__impl_1_1apply__.html", null ], + [ "apply_< Fn, integer_sequence< T, Is... > >", "structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01integer__sequence_3_01_t_00_01_is_8_8_8_01_4_01_4.html", "structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01integer__sequence_3_01_t_00_01_is_8_8_8_01_4_01_4" ], + [ "apply_< Fn, typelist< List... > >", "structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01typelist_3_01_list_8_8_8_01_4_01_4.html", "structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01typelist_3_01_list_8_8_8_01_4_01_4" ] +]; \ No newline at end of file diff --git a/doc/html/namespaceutl_1_1meta_1_1at__impl.html b/doc/html/namespaceutl_1_1meta_1_1at__impl.html new file mode 100644 index 0000000..67b0c43 --- /dev/null +++ b/doc/html/namespaceutl_1_1meta_1_1at__impl.html @@ -0,0 +1,150 @@ + + + + + + + +uTL: utl::meta::at_impl Namespace Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::at_impl Namespace Reference
    +
    +
    + + + + + + + + + + + + +

    +Classes

    struct  _add_pointer
     
    struct  at_
     
    struct  at_< typelist< List... >, N >
     
    struct  at_head_
     
    struct  at_head_< typelist< voids... > >
     
    + + + + +

    +Typedefs

    template<typename T >
    using add_pointer = eval< _add_pointer< T > >
     
    +

    Detailed Description

    +

    at: random element access

    +

    Typedef Documentation

    + +

    ◆ add_pointer

    + +
    +
    +
    +template<typename T >
    + + + + +
    using utl::meta::at_impl::add_pointer = typedef eval < _add_pointer <T> >
    +
    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/typelist.h.
    +
    +

    Definition at line 212 of file typelist.h.

    + +
    +
    +
    +
    + + + + diff --git a/doc/html/namespaceutl_1_1meta_1_1at__impl.js b/doc/html/namespaceutl_1_1meta_1_1at__impl.js new file mode 100644 index 0000000..1a85e6a --- /dev/null +++ b/doc/html/namespaceutl_1_1meta_1_1at__impl.js @@ -0,0 +1,8 @@ +var namespaceutl_1_1meta_1_1at__impl = +[ + [ "_add_pointer", "structutl_1_1meta_1_1at__impl_1_1__add__pointer.html", "structutl_1_1meta_1_1at__impl_1_1__add__pointer" ], + [ "at_", "structutl_1_1meta_1_1at__impl_1_1at__.html", null ], + [ "at_< typelist< List... >, N >", "structutl_1_1meta_1_1at__impl_1_1at___3_01typelist_3_01_list_8_8_8_01_4_00_01_n_01_4.html", "structutl_1_1meta_1_1at__impl_1_1at___3_01typelist_3_01_list_8_8_8_01_4_00_01_n_01_4" ], + [ "at_head_", "structutl_1_1meta_1_1at__impl_1_1at__head__.html", null ], + [ "at_head_< typelist< voids... > >", "structutl_1_1meta_1_1at__impl_1_1at__head___3_01typelist_3_01voids_8_8_8_01_4_01_4.html", "structutl_1_1meta_1_1at__impl_1_1at__head___3_01typelist_3_01voids_8_8_8_01_4_01_4" ] +]; \ No newline at end of file diff --git a/doc/html/namespaceutl_1_1meta_1_1back__impl.html b/doc/html/namespaceutl_1_1meta_1_1back__impl.html new file mode 100644 index 0000000..ed371db --- /dev/null +++ b/doc/html/namespaceutl_1_1meta_1_1back__impl.html @@ -0,0 +1,117 @@ + + + + + + + +uTL: utl::meta::back_impl Namespace Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::back_impl Namespace Reference
    +
    +
    + + + + + + +

    +Classes

    struct  back_
     
    struct  back_< typelist< Head, Tail... > >
     
    +

    Detailed Description

    +

    back

    +
    +
    + + + + diff --git a/doc/html/namespaceutl_1_1meta_1_1back__impl.js b/doc/html/namespaceutl_1_1meta_1_1back__impl.js new file mode 100644 index 0000000..f081ab3 --- /dev/null +++ b/doc/html/namespaceutl_1_1meta_1_1back__impl.js @@ -0,0 +1,5 @@ +var namespaceutl_1_1meta_1_1back__impl = +[ + [ "back_", "structutl_1_1meta_1_1back__impl_1_1back__.html", null ], + [ "back_< typelist< Head, Tail... > >", "structutl_1_1meta_1_1back__impl_1_1back___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.html", "structutl_1_1meta_1_1back__impl_1_1back___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4" ] +]; \ No newline at end of file diff --git a/doc/html/namespaceutl_1_1meta_1_1cat__impl.html b/doc/html/namespaceutl_1_1meta_1_1cat__impl.html new file mode 100644 index 0000000..a2a3f35 --- /dev/null +++ b/doc/html/namespaceutl_1_1meta_1_1cat__impl.html @@ -0,0 +1,123 @@ + + + + + + + +uTL: utl::meta::cat_impl Namespace Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::cat_impl Namespace Reference
    +
    +
    + + + + + + + + + + + + +

    +Classes

    struct  cat_
     
    struct  cat_< typelist< L1... > >
     
    struct  cat_< typelist< L1... >, typelist< L2... > >
     
    struct  cat_< typelist< L1... >, typelist< L2... >, Ln... >
     
    struct  cat_<>
     
    +

    Detailed Description

    +

    Concatenation

    +
    +
    + + + + diff --git a/doc/html/namespaceutl_1_1meta_1_1cat__impl.js b/doc/html/namespaceutl_1_1meta_1_1cat__impl.js new file mode 100644 index 0000000..9babcb1 --- /dev/null +++ b/doc/html/namespaceutl_1_1meta_1_1cat__impl.js @@ -0,0 +1,8 @@ +var namespaceutl_1_1meta_1_1cat__impl = +[ + [ "cat_", "structutl_1_1meta_1_1cat__impl_1_1cat__.html", null ], + [ "cat_< typelist< L1... > >", "structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_01_4.html", "structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_01_4" ], + [ "cat_< typelist< L1... >, typelist< L2... > >", "structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4.html", "structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4" ], + [ "cat_< typelist< L1... >, typelist< L2... >, Ln... >", "structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_00_01_ln_8_8_8_01_4.html", null ], + [ "cat_<>", "structutl_1_1meta_1_1cat__impl_1_1cat___3_4.html", "structutl_1_1meta_1_1cat__impl_1_1cat___3_4" ] +]; \ No newline at end of file diff --git a/doc/html/namespaceutl_1_1meta_1_1count__if__impl.html b/doc/html/namespaceutl_1_1meta_1_1count__if__impl.html new file mode 100644 index 0000000..eb2771d --- /dev/null +++ b/doc/html/namespaceutl_1_1meta_1_1count__if__impl.html @@ -0,0 +1,119 @@ + + + + + + + +uTL: utl::meta::count_if_impl Namespace Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::count_if_impl Namespace Reference
    +
    +
    + + + + + + + + +

    +Classes

    struct  count_if_
     
    struct  count_if_< typelist< Head, Tail... >, Fn, N >
     
    struct  count_if_< typelist<>, Fn, N >
     
    +

    Detailed Description

    +

    count_if

    +
    +
    + + + + diff --git a/doc/html/namespaceutl_1_1meta_1_1count__if__impl.js b/doc/html/namespaceutl_1_1meta_1_1count__if__impl.js new file mode 100644 index 0000000..b4cd033 --- /dev/null +++ b/doc/html/namespaceutl_1_1meta_1_1count__if__impl.js @@ -0,0 +1,6 @@ +var namespaceutl_1_1meta_1_1count__if__impl = +[ + [ "count_if_", "structutl_1_1meta_1_1count__if__impl_1_1count__if__.html", null ], + [ "count_if_< typelist< Head, Tail... >, Fn, N >", "structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.html", "structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4" ], + [ "count_if_< typelist<>, Fn, N >", "structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.html", "structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4" ] +]; \ No newline at end of file diff --git a/doc/html/namespaceutl_1_1meta_1_1detail.html b/doc/html/namespaceutl_1_1meta_1_1detail.html new file mode 100644 index 0000000..c3f205a --- /dev/null +++ b/doc/html/namespaceutl_1_1meta_1_1detail.html @@ -0,0 +1,208 @@ + + + + + + + +uTL: utl::meta::detail Namespace Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::detail Namespace Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Classes

    struct  _and_
     
    struct  _and_< _T1 >
     
    struct  _and_< _T1, _T2 >
     
    struct  _and_< _T1, _T2, _T3, _Tn... >
     
    struct  _and_<>
     
    struct  _or_
     
    struct  _or_< _T1 >
     
    struct  _or_< _T1, _T2 >
     
    struct  _or_< _T1, _T2, _T3, _Tn... >
     
    struct  _or_<>
     
    struct  compose_
     
    struct  compose_< Fn0 >
     
    struct  compose_< Fn0, Fns... >
     
    struct  compose_f_
     
    struct  compose_f_< Fn0 >
     
    struct  compose_f_< Fn0, Fns... >
     
    struct  defer_
     
    struct  defer_i_
     
    struct  detector
     
    struct  detector< Default, void_t< Op< Args... > >, Op, Args... >
     
    struct  if_c_
     
    struct  if_c_< false, Then, Else >
     
    struct  if_c_< true, Then >
     
    struct  if_c_< true, Then, Else >
     
    struct  is_applicable_
     
    struct  is_applicable_i_
     
    struct  is_applicable_q_
     
    struct  when_
     
    struct  when_< true >
     
    + + + + + +

    +Typedefs

    template<typename Default , template< typename... > class Op, typename... Args>
    using detected_or = detector< Default, void, Op, Args... >
     helper for detected_or_t More...
     
    +

    Detailed Description

    +

    Detector for detection idiom

    +

    Is applicable trait

    +

    defer

    +

    compose

    +

    OR implementation

    +

    AND implementation

    +

    Type selectionif_, if_c

    +

    Tool to enable a partial specialization only if a boolean condition is true.

    +

    Typedef Documentation

    + +

    ◆ detected_or

    + +
    +
    +
    +template<typename Default , template< typename... > class Op, typename... Args>
    + + + + +
    using utl::meta::detail::detected_or = typedef detector<Default, void, Op, Args...>
    +
    + +

    helper for detected_or_t

    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/detection.h.
    +
    +

    Definition at line 91 of file detection.h.

    + +
    +
    +
    +
    + + + + diff --git a/doc/html/namespaceutl_1_1meta_1_1detail.js b/doc/html/namespaceutl_1_1meta_1_1detail.js new file mode 100644 index 0000000..b008cd4 --- /dev/null +++ b/doc/html/namespaceutl_1_1meta_1_1detail.js @@ -0,0 +1,32 @@ +var namespaceutl_1_1meta_1_1detail = +[ + [ "_and_", "structutl_1_1meta_1_1detail_1_1__and__.html", null ], + [ "_and_< _T1 >", "structutl_1_1meta_1_1detail_1_1__and___3_01___t1_01_4.html", null ], + [ "_and_< _T1, _T2 >", "structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_01_4.html", null ], + [ "_and_< _T1, _T2, _T3, _Tn... >", "structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4.html", null ], + [ "_and_<>", "structutl_1_1meta_1_1detail_1_1__and___3_4.html", null ], + [ "_or_", "structutl_1_1meta_1_1detail_1_1__or__.html", null ], + [ "_or_< _T1 >", "structutl_1_1meta_1_1detail_1_1__or___3_01___t1_01_4.html", null ], + [ "_or_< _T1, _T2 >", "structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_01_4.html", null ], + [ "_or_< _T1, _T2, _T3, _Tn... >", "structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4.html", null ], + [ "_or_<>", "structutl_1_1meta_1_1detail_1_1__or___3_4.html", null ], + [ "compose_", "structutl_1_1meta_1_1detail_1_1compose__.html", null ], + [ "compose_< Fn0 >", "structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_01_4.html", "structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_01_4" ], + [ "compose_< Fn0, Fns... >", "structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_00_01_fns_8_8_8_01_4.html", "structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_00_01_fns_8_8_8_01_4" ], + [ "compose_f_", "structutl_1_1meta_1_1detail_1_1compose__f__.html", null ], + [ "compose_f_< Fn0 >", "structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_01_4.html", "structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_01_4" ], + [ "compose_f_< Fn0, Fns... >", "structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_00_01_fns_8_8_8_01_4.html", "structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_00_01_fns_8_8_8_01_4" ], + [ "defer_", "structutl_1_1meta_1_1detail_1_1defer__.html", "structutl_1_1meta_1_1detail_1_1defer__" ], + [ "defer_i_", "structutl_1_1meta_1_1detail_1_1defer__i__.html", "structutl_1_1meta_1_1detail_1_1defer__i__" ], + [ "detector", "structutl_1_1meta_1_1detail_1_1detector.html", "structutl_1_1meta_1_1detail_1_1detector" ], + [ "detector< Default, void_t< Op< Args... > >, Op, Args... >", "structutl_1_1meta_1_1detail_1_1detector_3_01_default_00_01void__t_3_01_op_3_01_args_8_8_8_01_4_0c35bdbd19f56980c0b5ee6d490bfb634.html", "structutl_1_1meta_1_1detail_1_1detector_3_01_default_00_01void__t_3_01_op_3_01_args_8_8_8_01_4_0c35bdbd19f56980c0b5ee6d490bfb634" ], + [ "if_c_", "structutl_1_1meta_1_1detail_1_1if__c__.html", "structutl_1_1meta_1_1detail_1_1if__c__" ], + [ "if_c_< false, Then, Else >", "structutl_1_1meta_1_1detail_1_1if__c___3_01false_00_01_then_00_01_else_01_4.html", "structutl_1_1meta_1_1detail_1_1if__c___3_01false_00_01_then_00_01_else_01_4" ], + [ "if_c_< true, Then >", "structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_01_4.html", "structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_01_4" ], + [ "if_c_< true, Then, Else >", "structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_00_01_else_01_4.html", "structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_00_01_else_01_4" ], + [ "is_applicable_", "structutl_1_1meta_1_1detail_1_1is__applicable__.html", "structutl_1_1meta_1_1detail_1_1is__applicable__" ], + [ "is_applicable_i_", "structutl_1_1meta_1_1detail_1_1is__applicable__i__.html", "structutl_1_1meta_1_1detail_1_1is__applicable__i__" ], + [ "is_applicable_q_", "structutl_1_1meta_1_1detail_1_1is__applicable__q__.html", "structutl_1_1meta_1_1detail_1_1is__applicable__q__" ], + [ "when_", "structutl_1_1meta_1_1detail_1_1when__.html", null ], + [ "when_< true >", "structutl_1_1meta_1_1detail_1_1when___3_01true_01_4.html", "structutl_1_1meta_1_1detail_1_1when___3_01true_01_4" ] +]; \ No newline at end of file diff --git a/doc/html/namespaceutl_1_1meta_1_1filter__impl.html b/doc/html/namespaceutl_1_1meta_1_1filter__impl.html new file mode 100644 index 0000000..c78e617 --- /dev/null +++ b/doc/html/namespaceutl_1_1meta_1_1filter__impl.html @@ -0,0 +1,119 @@ + + + + + + + +uTL: utl::meta::filter_impl Namespace Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::filter_impl Namespace Reference
    +
    +
    + + + + + + + + +

    +Classes

    struct  filter_
     
    struct  filter_< typelist< Head, Tail... >, Fn, L >
     
    struct  filter_< typelist<>, Fn, L >
     
    +

    Detailed Description

    +

    filter

    +
    +
    + + + + diff --git a/doc/html/namespaceutl_1_1meta_1_1filter__impl.js b/doc/html/namespaceutl_1_1meta_1_1filter__impl.js new file mode 100644 index 0000000..ba4f5ce --- /dev/null +++ b/doc/html/namespaceutl_1_1meta_1_1filter__impl.js @@ -0,0 +1,6 @@ +var namespaceutl_1_1meta_1_1filter__impl = +[ + [ "filter_", "structutl_1_1meta_1_1filter__impl_1_1filter__.html", null ], + [ "filter_< typelist< Head, Tail... >, Fn, L >", "structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_l_01_4.html", "structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_l_01_4" ], + [ "filter_< typelist<>, Fn, L >", "structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_4_00_01_fn_00_01_l_01_4.html", "structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_4_00_01_fn_00_01_l_01_4" ] +]; \ No newline at end of file diff --git a/doc/html/namespaceutl_1_1meta_1_1find__if__impl.html b/doc/html/namespaceutl_1_1meta_1_1find__if__impl.html new file mode 100644 index 0000000..2afac8c --- /dev/null +++ b/doc/html/namespaceutl_1_1meta_1_1find__if__impl.html @@ -0,0 +1,119 @@ + + + + + + + +uTL: utl::meta::find_if_impl Namespace Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::find_if_impl Namespace Reference
    +
    +
    + + + + + + + + +

    +Classes

    struct  find_if_
     
    struct  find_if_< typelist< Head, Tail... >, Fn, N >
     
    struct  find_if_< typelist<>, Fn, N >
     
    +

    Detailed Description

    +

    find_if, find

    +
    +
    + + + + diff --git a/doc/html/namespaceutl_1_1meta_1_1find__if__impl.js b/doc/html/namespaceutl_1_1meta_1_1find__if__impl.js new file mode 100644 index 0000000..a4546b8 --- /dev/null +++ b/doc/html/namespaceutl_1_1meta_1_1find__if__impl.js @@ -0,0 +1,6 @@ +var namespaceutl_1_1meta_1_1find__if__impl = +[ + [ "find_if_", "structutl_1_1meta_1_1find__if__impl_1_1find__if__.html", null ], + [ "find_if_< typelist< Head, Tail... >, Fn, N >", "structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.html", "structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4" ], + [ "find_if_< typelist<>, Fn, N >", "structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.html", "structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4" ] +]; \ No newline at end of file diff --git a/doc/html/namespaceutl_1_1meta_1_1fold__impl.html b/doc/html/namespaceutl_1_1meta_1_1fold__impl.html new file mode 100644 index 0000000..2bbbc83 --- /dev/null +++ b/doc/html/namespaceutl_1_1meta_1_1fold__impl.html @@ -0,0 +1,119 @@ + + + + + + + +uTL: utl::meta::fold_impl Namespace Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::fold_impl Namespace Reference
    +
    +
    + + + + + + + + +

    +Classes

    struct  fold_
     
    struct  fold_< typelist< Head, Tail... >, V, Fn >
     
    struct  fold_< typelist<>, V0, Fn >
     
    +

    Detailed Description

    +

    fold<List, V, Fn>, rev_fold<List, V, Fn>

    +
    +
    + + + + diff --git a/doc/html/namespaceutl_1_1meta_1_1fold__impl.js b/doc/html/namespaceutl_1_1meta_1_1fold__impl.js new file mode 100644 index 0000000..8e12823 --- /dev/null +++ b/doc/html/namespaceutl_1_1meta_1_1fold__impl.js @@ -0,0 +1,6 @@ +var namespaceutl_1_1meta_1_1fold__impl = +[ + [ "fold_", "structutl_1_1meta_1_1fold__impl_1_1fold__.html", null ], + [ "fold_< typelist< Head, Tail... >, V, Fn >", "structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4.html", "structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4" ], + [ "fold_< typelist<>, V0, Fn >", "structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_4_00_01_v0_00_01_fn_01_4.html", "structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_4_00_01_v0_00_01_fn_01_4" ] +]; \ No newline at end of file diff --git a/doc/html/namespaceutl_1_1meta_1_1front__impl.html b/doc/html/namespaceutl_1_1meta_1_1front__impl.html new file mode 100644 index 0000000..74838a1 --- /dev/null +++ b/doc/html/namespaceutl_1_1meta_1_1front__impl.html @@ -0,0 +1,117 @@ + + + + + + + +uTL: utl::meta::front_impl Namespace Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::front_impl Namespace Reference
    +
    +
    + + + + + + +

    +Classes

    struct  front_
     
    struct  front_< typelist< Head, Tail... > >
     
    +

    Detailed Description

    +

    front

    +
    +
    + + + + diff --git a/doc/html/namespaceutl_1_1meta_1_1front__impl.js b/doc/html/namespaceutl_1_1meta_1_1front__impl.js new file mode 100644 index 0000000..aa347ce --- /dev/null +++ b/doc/html/namespaceutl_1_1meta_1_1front__impl.js @@ -0,0 +1,5 @@ +var namespaceutl_1_1meta_1_1front__impl = +[ + [ "front_", "structutl_1_1meta_1_1front__impl_1_1front__.html", null ], + [ "front_< typelist< Head, Tail... > >", "structutl_1_1meta_1_1front__impl_1_1front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.html", "structutl_1_1meta_1_1front__impl_1_1front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4" ] +]; \ No newline at end of file diff --git a/doc/html/namespaceutl_1_1meta_1_1pop__back__impl.html b/doc/html/namespaceutl_1_1meta_1_1pop__back__impl.html new file mode 100644 index 0000000..61711ca --- /dev/null +++ b/doc/html/namespaceutl_1_1meta_1_1pop__back__impl.html @@ -0,0 +1,115 @@ + + + + + + + +uTL: utl::meta::pop_back_impl Namespace Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::pop_back_impl Namespace Reference
    +
    +
    + + + + +

    +Classes

    struct  pop_back_
     
    +

    Detailed Description

    +

    pop_back

    +
    +
    + + + + diff --git a/doc/html/namespaceutl_1_1meta_1_1pop__back__impl.js b/doc/html/namespaceutl_1_1meta_1_1pop__back__impl.js new file mode 100644 index 0000000..d7e95e6 --- /dev/null +++ b/doc/html/namespaceutl_1_1meta_1_1pop__back__impl.js @@ -0,0 +1,4 @@ +var namespaceutl_1_1meta_1_1pop__back__impl = +[ + [ "pop_back_", "structutl_1_1meta_1_1pop__back__impl_1_1pop__back__.html", "structutl_1_1meta_1_1pop__back__impl_1_1pop__back__" ] +]; \ No newline at end of file diff --git a/doc/html/namespaceutl_1_1meta_1_1pop__front__impl.html b/doc/html/namespaceutl_1_1meta_1_1pop__front__impl.html new file mode 100644 index 0000000..404adee --- /dev/null +++ b/doc/html/namespaceutl_1_1meta_1_1pop__front__impl.html @@ -0,0 +1,117 @@ + + + + + + + +uTL: utl::meta::pop_front_impl Namespace Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::pop_front_impl Namespace Reference
    +
    +
    + + + + + + +

    +Classes

    struct  pop_front_
     
    struct  pop_front_< typelist< Head, Tail... > >
     
    +

    Detailed Description

    +

    pop_front

    +
    +
    + + + + diff --git a/doc/html/namespaceutl_1_1meta_1_1pop__front__impl.js b/doc/html/namespaceutl_1_1meta_1_1pop__front__impl.js new file mode 100644 index 0000000..97fc6fd --- /dev/null +++ b/doc/html/namespaceutl_1_1meta_1_1pop__front__impl.js @@ -0,0 +1,5 @@ +var namespaceutl_1_1meta_1_1pop__front__impl = +[ + [ "pop_front_", "structutl_1_1meta_1_1pop__front__impl_1_1pop__front__.html", null ], + [ "pop_front_< typelist< Head, Tail... > >", "structutl_1_1meta_1_1pop__front__impl_1_1pop__front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.html", "structutl_1_1meta_1_1pop__front__impl_1_1pop__front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4" ] +]; \ No newline at end of file diff --git a/doc/html/namespaceutl_1_1meta_1_1replace__if__impl.html b/doc/html/namespaceutl_1_1meta_1_1replace__if__impl.html new file mode 100644 index 0000000..b93d612 --- /dev/null +++ b/doc/html/namespaceutl_1_1meta_1_1replace__if__impl.html @@ -0,0 +1,119 @@ + + + + + + + +uTL: utl::meta::replace_if_impl Namespace Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::replace_if_impl Namespace Reference
    +
    +
    + + + + + + + + +

    +Classes

    struct  replace_if_
     
    struct  replace_if_< typelist< Head, Tail... >, Fn, T, Ret >
     
    struct  replace_if_< typelist<>, Fn, T, Ret >
     
    +

    Detailed Description

    +

    replace

    +
    +
    + + + + diff --git a/doc/html/namespaceutl_1_1meta_1_1replace__if__impl.js b/doc/html/namespaceutl_1_1meta_1_1replace__if__impl.js new file mode 100644 index 0000000..beb7310 --- /dev/null +++ b/doc/html/namespaceutl_1_1meta_1_1replace__if__impl.js @@ -0,0 +1,6 @@ +var namespaceutl_1_1meta_1_1replace__if__impl = +[ + [ "replace_if_", "structutl_1_1meta_1_1replace__if__impl_1_1replace__if__.html", null ], + [ "replace_if_< typelist< Head, Tail... >, Fn, T, Ret >", "structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_01_head_00_01_tail_8_8_8_dfa8065a3617f53ecded260506092a07.html", "structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_01_head_00_01_tail_8_8_8_dfa8065a3617f53ecded260506092a07" ], + [ "replace_if_< typelist<>, Fn, T, Ret >", "structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_4_00_01_fn_00_01_t_00_01_ret_01_4.html", "structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_4_00_01_fn_00_01_t_00_01_ret_01_4" ] +]; \ No newline at end of file diff --git a/doc/html/namespaceutl_1_1meta_1_1rev__fold__impl.html b/doc/html/namespaceutl_1_1meta_1_1rev__fold__impl.html new file mode 100644 index 0000000..a0d6775 --- /dev/null +++ b/doc/html/namespaceutl_1_1meta_1_1rev__fold__impl.html @@ -0,0 +1,119 @@ + + + + + + + +uTL: utl::meta::rev_fold_impl Namespace Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::rev_fold_impl Namespace Reference
    +
    + +
    + + + + diff --git a/doc/html/namespaceutl_1_1meta_1_1rev__fold__impl.js b/doc/html/namespaceutl_1_1meta_1_1rev__fold__impl.js new file mode 100644 index 0000000..de44303 --- /dev/null +++ b/doc/html/namespaceutl_1_1meta_1_1rev__fold__impl.js @@ -0,0 +1,7 @@ +var namespaceutl_1_1meta_1_1rev__fold__impl = +[ + [ "rev_fold_", "structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold__.html", null ], + [ "rev_fold_< typelist< Head, Tail... >, V, Fn >", "structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4.html", "structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4" ], + [ "rev_fold_< typelist< Tail >, V, Fn >", "structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_tail_01_4_00_01_v_00_01_fn_01_4.html", "structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_tail_01_4_00_01_v_00_01_fn_01_4" ], + [ "rev_fold_< typelist<>, V, Fn >", "structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_4_00_01_v_00_01_fn_01_4.html", "structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_4_00_01_v_00_01_fn_01_4" ] +]; \ No newline at end of file diff --git a/doc/html/namespaceutl_1_1meta_1_1reverse__impl.html b/doc/html/namespaceutl_1_1meta_1_1reverse__impl.html new file mode 100644 index 0000000..8f52147 --- /dev/null +++ b/doc/html/namespaceutl_1_1meta_1_1reverse__impl.html @@ -0,0 +1,115 @@ + + + + + + + +uTL: utl::meta::reverse_impl Namespace Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::reverse_impl Namespace Reference
    +
    +
    + + + + +

    +Classes

    struct  reverse_
     
    +

    Detailed Description

    +

    reverse

    +
    +
    + + + + diff --git a/doc/html/namespaceutl_1_1meta_1_1reverse__impl.js b/doc/html/namespaceutl_1_1meta_1_1reverse__impl.js new file mode 100644 index 0000000..a39ebdd --- /dev/null +++ b/doc/html/namespaceutl_1_1meta_1_1reverse__impl.js @@ -0,0 +1,4 @@ +var namespaceutl_1_1meta_1_1reverse__impl = +[ + [ "reverse_", "structutl_1_1meta_1_1reverse__impl_1_1reverse__.html", "structutl_1_1meta_1_1reverse__impl_1_1reverse__" ] +]; \ No newline at end of file diff --git a/doc/html/namespaceutl_1_1meta_1_1seek__if__impl.html b/doc/html/namespaceutl_1_1meta_1_1seek__if__impl.html new file mode 100644 index 0000000..320ff14 --- /dev/null +++ b/doc/html/namespaceutl_1_1meta_1_1seek__if__impl.html @@ -0,0 +1,119 @@ + + + + + + + +uTL: utl::meta::seek_if_impl Namespace Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::seek_if_impl Namespace Reference
    +
    +
    + + + + + + + + +

    +Classes

    struct  seek_if_
     
    struct  seek_if_< typelist< Head, Tail... >, Fn, N >
     
    struct  seek_if_< typelist<>, Fn, N >
     
    +

    Detailed Description

    +

    seek_if

    +
    +
    + + + + diff --git a/doc/html/namespaceutl_1_1meta_1_1seek__if__impl.js b/doc/html/namespaceutl_1_1meta_1_1seek__if__impl.js new file mode 100644 index 0000000..2147aab --- /dev/null +++ b/doc/html/namespaceutl_1_1meta_1_1seek__if__impl.js @@ -0,0 +1,6 @@ +var namespaceutl_1_1meta_1_1seek__if__impl = +[ + [ "seek_if_", "structutl_1_1meta_1_1seek__if__impl_1_1seek__if__.html", null ], + [ "seek_if_< typelist< Head, Tail... >, Fn, N >", "structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.html", "structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4" ], + [ "seek_if_< typelist<>, Fn, N >", "structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.html", "structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4" ] +]; \ No newline at end of file diff --git a/doc/html/namespaceutl_1_1meta_1_1transform__impl.html b/doc/html/namespaceutl_1_1meta_1_1transform__impl.html new file mode 100644 index 0000000..0b1567a --- /dev/null +++ b/doc/html/namespaceutl_1_1meta_1_1transform__impl.html @@ -0,0 +1,119 @@ + + + + + + + +uTL: utl::meta::transform_impl Namespace Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::transform_impl Namespace Reference
    +
    + +
    + + + + diff --git a/doc/html/namespaceutl_1_1meta_1_1transform__impl.js b/doc/html/namespaceutl_1_1meta_1_1transform__impl.js new file mode 100644 index 0000000..142b06f --- /dev/null +++ b/doc/html/namespaceutl_1_1meta_1_1transform__impl.js @@ -0,0 +1,6 @@ +var namespaceutl_1_1meta_1_1transform__impl = +[ + [ "transform_", "structutl_1_1meta_1_1transform__impl_1_1transform__.html", null ], + [ "transform_< typelist< typelist< Ts... >, Fn >, void_t< invoke< Fn, Ts >... > >", "structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts_8_8_8_01_40fe2b1c8ede658aadb6925de73541689.html", "structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts_8_8_8_01_40fe2b1c8ede658aadb6925de73541689" ], + [ "transform_< typelist< typelist< Ts0... >, typelist< Ts1... >, Fn >, void_t< invoke< Fn, Ts0, Ts1 >... > >", "structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts0_8_8_8_01_8fba6bf3d0565d17a96950cb517db5f1.html", "structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts0_8_8_8_01_8fba6bf3d0565d17a96950cb517db5f1" ] +]; \ No newline at end of file diff --git a/doc/html/namespaceutl_1_1meta_1_1transform__lazy__impl.html b/doc/html/namespaceutl_1_1meta_1_1transform__lazy__impl.html new file mode 100644 index 0000000..4a86442 --- /dev/null +++ b/doc/html/namespaceutl_1_1meta_1_1transform__lazy__impl.html @@ -0,0 +1,119 @@ + + + + + + + +uTL: utl::meta::transform_lazy_impl Namespace Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::transform_lazy_impl Namespace Reference
    +
    + +
    + + + + diff --git a/doc/html/namespaceutl_1_1meta_1_1transform__lazy__impl.js b/doc/html/namespaceutl_1_1meta_1_1transform__lazy__impl.js new file mode 100644 index 0000000..a5f6e8d --- /dev/null +++ b/doc/html/namespaceutl_1_1meta_1_1transform__lazy__impl.js @@ -0,0 +1,6 @@ +var namespaceutl_1_1meta_1_1transform__lazy__impl = +[ + [ "transform_lazy_", "structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy__.html", null ], + [ "transform_lazy_< typelist< typelist< Ts... >, Fn >, void_t< invoke< Fn, Ts >... > >", "structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t56243bc35bf73da8271cb88f34751f3a.html", "structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t56243bc35bf73da8271cb88f34751f3a" ], + [ "transform_lazy_< typelist< typelist< Ts0... >, typelist< Ts1... >, Fn >, void_t< invoke< Fn, Ts0, Ts1 >... > >", "structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t14ff615a4bff6c4c3701df9c38aaa6a5.html", "structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t14ff615a4bff6c4c3701df9c38aaa6a5" ] +]; \ No newline at end of file diff --git a/doc/html/namespaceutl_1_1out__dev__details.html b/doc/html/namespaceutl_1_1out__dev__details.html new file mode 100644 index 0000000..126154b --- /dev/null +++ b/doc/html/namespaceutl_1_1out__dev__details.html @@ -0,0 +1,292 @@ + + + + + + + +uTL: utl::out_dev_details Namespace Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::out_dev_details Namespace Reference
    +
    +
    + + + + + + + + +

    +Classes

    struct  is_out_dev_
     Primary template to catch any non output device types. More...
     
    struct  is_out_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_put1_t< _Tp >, size_t >, use_if_same_t< try_put2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > >
     template to catch a proper output device type More...
     
    + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Typedefs

    template<class _Tp >
    using try_put1_t = decltype(declval< _Tp >().put(declval< const typename _Tp::data_type & >()))
     
    template<class _Tp >
    using try_put2_t = decltype(declval< _Tp >().put(declval< const typename _Tp::data_type * >(), declval< size_t >()))
     
    template<class _Tp >
    using try_begin_t = decltype(declval< _Tp >().begin())
     
    template<class _Tp >
    using tryc_begin_t = decltype(declval< const _Tp >().begin())
     
    template<class _Tp >
    using try_cbegin_t = decltype(declval< const _Tp >().cbegin())
     
    template<class _Tp >
    using try_end_t = decltype(declval< _Tp >().begin())
     
    template<class _Tp >
    using tryc_end_t = decltype(declval< const _Tp >().begin())
     
    template<class _Tp >
    using try_cend_t = decltype(declval< const _Tp >().cend())
     
    +

    Detailed Description

    +

    Output device concept

    +

    Typedef Documentation

    + +

    ◆ try_begin_t

    + +
    +
    +
    +template<class _Tp >
    + + + + +
    using utl::out_dev_details::try_begin_t = typedef decltype (declval<_Tp>().begin())
    +
    + +

    Definition at line 320 of file out_dev.h.

    + +
    +
    + +

    ◆ try_cbegin_t

    + +
    +
    +
    +template<class _Tp >
    + + + + +
    using utl::out_dev_details::try_cbegin_t = typedef decltype (declval<const _Tp>().cbegin())
    +
    + +

    Definition at line 322 of file out_dev.h.

    + +
    +
    + +

    ◆ try_cend_t

    + +
    +
    +
    +template<class _Tp >
    + + + + +
    using utl::out_dev_details::try_cend_t = typedef decltype (declval<const _Tp>().cend())
    +
    + +

    Definition at line 325 of file out_dev.h.

    + +
    +
    + +

    ◆ try_end_t

    + +
    +
    +
    +template<class _Tp >
    + + + + +
    using utl::out_dev_details::try_end_t = typedef decltype (declval<_Tp>().begin())
    +
    + +

    Definition at line 323 of file out_dev.h.

    + +
    +
    + +

    ◆ try_put1_t

    + +
    +
    +
    +template<class _Tp >
    + + + + +
    using utl::out_dev_details::try_put1_t = typedef decltype (declval<_Tp>().put (declval<const typename _Tp::data_type&>()))
    +
    + +

    Definition at line 314 of file out_dev.h.

    + +
    +
    + +

    ◆ try_put2_t

    + +
    +
    +
    +template<class _Tp >
    + + + + +
    using utl::out_dev_details::try_put2_t = typedef decltype (declval<_Tp>().put (declval<const typename _Tp::data_type*>(), declval<size_t>()))
    +
    + +

    Definition at line 316 of file out_dev.h.

    + +
    +
    + +

    ◆ tryc_begin_t

    + +
    +
    +
    +template<class _Tp >
    + + + + +
    using utl::out_dev_details::tryc_begin_t = typedef decltype (declval<const _Tp>().begin())
    +
    + +

    Definition at line 321 of file out_dev.h.

    + +
    +
    + +

    ◆ tryc_end_t

    + +
    +
    +
    +template<class _Tp >
    + + + + +
    using utl::out_dev_details::tryc_end_t = typedef decltype (declval<const _Tp>().begin())
    +
    + +

    Definition at line 324 of file out_dev.h.

    + +
    +
    +
    +
    + + + + diff --git a/doc/html/namespaceutl_1_1out__dev__details.js b/doc/html/namespaceutl_1_1out__dev__details.js new file mode 100644 index 0000000..5fc54f0 --- /dev/null +++ b/doc/html/namespaceutl_1_1out__dev__details.js @@ -0,0 +1,5 @@ +var namespaceutl_1_1out__dev__details = +[ + [ "is_out_dev_", "structutl_1_1out__dev__details_1_1is__out__dev__.html", null ], + [ "is_out_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_put1_t< _Tp >, size_t >, use_if_same_t< try_put2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > >", "structutl_1_1out__dev__details_1_1is__out__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1fbf8d2409fc6de9dd6b9649bedc1b379.html", null ] +]; \ No newline at end of file diff --git a/doc/html/namespaceutl_1_1outdev__it__details.html b/doc/html/namespaceutl_1_1outdev__it__details.html new file mode 100644 index 0000000..dbee795 --- /dev/null +++ b/doc/html/namespaceutl_1_1outdev__it__details.html @@ -0,0 +1,119 @@ + + + + + + + +uTL: utl::outdev_it_details Namespace Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::outdev_it_details Namespace Reference
    +
    +
    + + + + + + + + +

    +Classes

    struct  is_outdev_it_
     Primary template to catch any non SPI interface types. More...
     
    struct  is_outdev_it_< _Tp, meta::void_t< typename _Tp::value_type, typename _Tp::difference_type, typename _Tp::pointer, typename _Tp::reference, void > >
     template to catch a proper SPI interface type More...
     
    +

    Detailed Description

    +

    Output device iterator concept

    +
    +
    + + + + diff --git a/doc/html/namespaceutl_1_1outdev__it__details.js b/doc/html/namespaceutl_1_1outdev__it__details.js new file mode 100644 index 0000000..fdd7a6f --- /dev/null +++ b/doc/html/namespaceutl_1_1outdev__it__details.js @@ -0,0 +1,5 @@ +var namespaceutl_1_1outdev__it__details = +[ + [ "is_outdev_it_", "structutl_1_1outdev__it__details_1_1is__outdev__it__.html", null ], + [ "is_outdev_it_< _Tp, meta::void_t< typename _Tp::value_type, typename _Tp::difference_type, typename _Tp::pointer, typename _Tp::reference, void > >", "structutl_1_1outdev__it__details_1_1is__outdev__it___3_01___tp_00_01meta_1_1void__t_3_01typename8786ebbbd0dc9ca1b14571e779d99d60.html", null ] +]; \ No newline at end of file diff --git a/doc/html/namespaceutl_1_1spi.html b/doc/html/namespaceutl_1_1spi.html new file mode 100644 index 0000000..192967d --- /dev/null +++ b/doc/html/namespaceutl_1_1spi.html @@ -0,0 +1,222 @@ + + + + + + + +uTL: utl::spi Namespace Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::spi Namespace Reference
    +
    +
    + +

    Abstract base class for spi bus. +More...

    + + + + + + + + +

    +Enumerations

    enum  bitOrder { bitOrder::LSB_First =0x01, +bitOrder::MSB_First =0x80 + }
     
    enum  cpol { cpol::LOW =0, +cpol::HIGH + }
     
    enum  cpha { cpha::LOW =0, +cpha::HIGH + }
     
    +

    Detailed Description

    +

    Abstract base class for spi bus.

    +

    Enumeration Type Documentation

    + +

    ◆ bitOrder

    + +
    +
    + + + + + +
    + + + + +
    enum utl::spi::bitOrder
    +
    +strong
    +
    +

    SPI implementation bit order

    + + + +
    Enumerator
    LSB_First 

    Most significant first.

    +
    MSB_First 

    Less significant first.

    +
    + +

    Definition at line 40 of file spi.h.

    + +
    +
    + +

    ◆ cpha

    + +
    +
    + + + + + +
    + + + + +
    enum utl::spi::cpha
    +
    +strong
    +
    +

    SPI implementation Clock Phase

    + + + +
    Enumerator
    LOW 

    LOW.

    +
    HIGH 

    HIGH.

    +
    + +

    Definition at line 54 of file spi.h.

    + +
    +
    + +

    ◆ cpol

    + +
    +
    + + + + + +
    + + + + +
    enum utl::spi::cpol
    +
    +strong
    +
    +

    SPI implementation Clock Polarity

    + + + +
    Enumerator
    LOW 

    LOW.

    +
    HIGH 

    HIGH.

    +
    + +

    Definition at line 47 of file spi.h.

    + +
    +
    +
    +
    + + + + diff --git a/doc/html/namespaceutl_1_1spi__i__details.html b/doc/html/namespaceutl_1_1spi__i__details.html new file mode 100644 index 0000000..8180386 --- /dev/null +++ b/doc/html/namespaceutl_1_1spi__i__details.html @@ -0,0 +1,208 @@ + + + + + + + +uTL: utl::spi_i_details Namespace Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::spi_i_details Namespace Reference
    +
    +
    + + + + + + + + +

    +Classes

    struct  is_spi_
     Primary template to catch any non SPI interface types. More...
     
    struct  is_spi_< _Tp, meta::void_t< meta::use_if_same_t< try_cclock_t< _Tp >, uint32_t >, meta::use_if_same_t< try_clock_t< _Tp >, void >, meta::use_if_same_t< try_tx_t< _Tp >, byte_t >, meta::use_if_same_t< try_rx_t< _Tp >, byte_t > > >
     template to catch a proper SPI interface type More...
     
    + + + + + + + + + + + + + +

    +Typedefs

    template<class _Tp >
    using try_cclock_t = decltype(declval< const _Tp >().clock())
     
    template<class _Tp >
    using try_clock_t = decltype(declval< _Tp >().clock(declval< uint32_t >()))
     
    template<class _Tp >
    using try_tx_t = decltype(declval< _Tp >().tx_data(declval< byte_t >()))
     
    template<class _Tp >
    using try_rx_t = decltype(declval< _Tp >().rx_data())
     
    +

    Detailed Description

    +

    i2c interface concept

    +

    Typedef Documentation

    + +

    ◆ try_cclock_t

    + +
    +
    +
    +template<class _Tp >
    + + + + +
    using utl::spi_i_details::try_cclock_t = typedef decltype (declval<const _Tp>().clock())
    +
    + +

    Definition at line 298 of file spi.h.

    + +
    +
    + +

    ◆ try_clock_t

    + +
    +
    +
    +template<class _Tp >
    + + + + +
    using utl::spi_i_details::try_clock_t = typedef decltype (declval<_Tp>().clock(declval<uint32_t>()))
    +
    + +

    Definition at line 299 of file spi.h.

    + +
    +
    + +

    ◆ try_rx_t

    + +
    +
    +
    +template<class _Tp >
    + + + + +
    using utl::spi_i_details::try_rx_t = typedef decltype (declval<_Tp>().rx_data())
    +
    + +

    Definition at line 301 of file spi.h.

    + +
    +
    + +

    ◆ try_tx_t

    + +
    +
    +
    +template<class _Tp >
    + + + + +
    using utl::spi_i_details::try_tx_t = typedef decltype (declval<_Tp>().tx_data(declval<byte_t>()))
    +
    + +

    Definition at line 300 of file spi.h.

    + +
    +
    +
    +
    + + + + diff --git a/doc/html/namespaceutl_1_1spi__i__details.js b/doc/html/namespaceutl_1_1spi__i__details.js new file mode 100644 index 0000000..8f52ee7 --- /dev/null +++ b/doc/html/namespaceutl_1_1spi__i__details.js @@ -0,0 +1,5 @@ +var namespaceutl_1_1spi__i__details = +[ + [ "is_spi_", "structutl_1_1spi__i__details_1_1is__spi__.html", null ], + [ "is_spi_< _Tp, meta::void_t< meta::use_if_same_t< try_cclock_t< _Tp >, uint32_t >, meta::use_if_same_t< try_clock_t< _Tp >, void >, meta::use_if_same_t< try_tx_t< _Tp >, byte_t >, meta::use_if_same_t< try_rx_t< _Tp >, byte_t > > >", "structutl_1_1spi__i__details_1_1is__spi___3_01___tp_00_01meta_1_1void__t_3_01meta_1_1use__if__sa2db29f6d65d34ecf5e49ec30b6600d78.html", null ] +]; \ No newline at end of file diff --git a/doc/html/nav_f.png b/doc/html/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/doc/html/nav_g.png b/doc/html/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/\-/g,'_')); +} + +function stripPath(uri) +{ + return uri.substring(uri.lastIndexOf('/')+1); +} + +function stripPath2(uri) +{ + var i = uri.lastIndexOf('/'); + var s = uri.substring(i+1); + var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; +} + +function hashValue() +{ + return $(location).attr('hash').substring(1).replace(/[^\w\-]/g,''); +} + +function hashUrl() +{ + return '#'+hashValue(); +} + +function pathName() +{ + return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;\(\)]/g, ''); +} + +function localStorageSupported() +{ + try { + return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem; + } + catch(e) { + return false; + } +} + + +function storeLink(link) +{ + if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) { + window.localStorage.setItem('navpath',link); + } +} + +function deleteLink() +{ + if (localStorageSupported()) { + window.localStorage.setItem('navpath',''); + } +} + +function cachedLink() +{ + if (localStorageSupported()) { + return window.localStorage.getItem('navpath'); + } else { + return ''; + } +} + +function getScript(scriptName,func,show) +{ + var head = document.getElementsByTagName("head")[0]; + var script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + if ($.browser.msie && $.browser.version<=8) { + // script.onload does not work with older versions of IE + script.onreadystatechange = function() { + if (script.readyState=='complete' || script.readyState=='loaded') { + func(); if (show) showRoot(); + } + } + } + head.appendChild(script); +} + +function createIndent(o,domNode,node,level) +{ + var level=-1; + var n = node; + while (n.parentNode) { level++; n=n.parentNode; } + if (node.childrenData) { + var imgNode = document.createElement("span"); + imgNode.className = 'arrow'; + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.innerHTML=arrowRight; + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() { + if (node.expanded) { + $(node.getChildrenUL()).slideUp("fast"); + node.plus_img.innerHTML=arrowRight; + node.expanded = false; + } else { + expandNode(o, node, false, false); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + } else { + var span = document.createElement("span"); + span.className = 'arrow'; + span.style.width = 16*(level+1)+'px'; + span.innerHTML = ' '; + domNode.appendChild(span); + } +} + +var animationInProgress = false; + +function gotoAnchor(anchor,aname,updateLocation) +{ + var pos, docContent = $('#doc-content'); + var ancParent = $(anchor.parent()); + if (ancParent.hasClass('memItemLeft') || + ancParent.hasClass('fieldname') || + ancParent.hasClass('fieldtype') || + ancParent.is(':header')) + { + pos = ancParent.position().top; + } else if (anchor.position()) { + pos = anchor.position().top; + } + if (pos) { + var dist = Math.abs(Math.min( + pos-docContent.offset().top, + docContent[0].scrollHeight- + docContent.height()-docContent.scrollTop())); + animationInProgress=true; + docContent.animate({ + scrollTop: pos + docContent.scrollTop() - docContent.offset().top + },Math.max(50,Math.min(500,dist)),function(){ + if (updateLocation) window.location.href=aname; + animationInProgress=false; + }); + } +} + +function newNode(o, po, text, link, childrenData, lastNode) +{ + var node = new Object(); + node.children = Array(); + node.childrenData = childrenData; + node.depth = po.depth + 1; + node.relpath = po.relpath; + node.isLast = lastNode; + + node.li = document.createElement("li"); + po.getChildrenUL().appendChild(node.li); + node.parentNode = po; + + node.itemDiv = document.createElement("div"); + node.itemDiv.className = "item"; + + node.labelSpan = document.createElement("span"); + node.labelSpan.className = "label"; + + createIndent(o,node.itemDiv,node,0); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + var a = document.createElement("a"); + node.labelSpan.appendChild(a); + node.label = document.createTextNode(text); + node.expanded = false; + a.appendChild(node.label); + if (link) { + var url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + link = url; + } else { + url = node.relpath+link; + } + a.className = stripPath(link.replace('#',':')); + if (link.indexOf('#')!=-1) { + var aname = '#'+link.split('#')[1]; + var srcPage = stripPath(pathName()); + var targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : "javascript:void(0)"; + a.onclick = function(){ + storeLink(link); + if (!$(a).parent().parent().hasClass('selected')) + { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + $(a).parent().parent().addClass('selected'); + $(a).parent().parent().attr('id','selected'); + } + var anchor = $(aname); + gotoAnchor(anchor,aname,true); + }; + } else { + a.href = url; + a.onclick = function() { storeLink(link); } + } + } else { + if (childrenData != null) + { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + } + + node.childrenUL = null; + node.getChildrenUL = function() { + if (!node.childrenUL) { + node.childrenUL = document.createElement("ul"); + node.childrenUL.className = "children_ul"; + node.childrenUL.style.display = "none"; + node.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }; + + return node; +} + +function showRoot() +{ + var headerHeight = $("#top").height(); + var footerHeight = $("#nav-path").height(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + (function (){ // retry until we can scroll to the selected item + try { + var navtree=$('#nav-tree'); + navtree.scrollTo('#selected',0,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); +} + +function expandNode(o, node, imm, showRoot) +{ + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + expandNode(o, node, imm, showRoot); + }, showRoot); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } if (imm || ($.browser.msie && $.browser.version>8)) { + // somehow slideDown jumps to the start of tree for IE9 :-( + $(node.getChildrenUL()).show(); + } else { + $(node.getChildrenUL()).slideDown("fast"); + } + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + } + } +} + +function glowEffect(n,duration) +{ + n.addClass('glow').delay(duration).queue(function(next){ + $(this).removeClass('glow');next(); + }); +} + +function highlightAnchor() +{ + var aname = hashUrl(); + var anchor = $(aname); + if (anchor.parent().attr('class')=='memItemLeft'){ + var rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parent().attr('class')=='fieldname'){ + glowEffect(anchor.parent().parent(),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype'){ + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } + gotoAnchor(anchor,aname,false); +} + +function selectAndHighlight(hash,n) +{ + var a; + if (hash) { + var link=stripPath(pathName())+':'+hash.substring(1); + a=$('.item a[class$="'+link+'"]'); + } + if (a && a.length) { + a.parent().parent().addClass('selected'); + a.parent().parent().attr('id','selected'); + highlightAnchor(); + } else if (n) { + $(n.itemDiv).addClass('selected'); + $(n.itemDiv).attr('id','selected'); + } + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + $('#nav-sync').css('top','30px'); + } else { + $('#nav-sync').css('top','5px'); + } + showRoot(); +} + +function showNode(o, node, index, hash) +{ + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + showNode(o,node,index,hash); + },true); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).css({'display':'block'}); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + var n = node.children[o.breadcrumbs[index]]; + if (index+11) hash = '#'+parts[1].replace(/[^\w\-]/g,''); + else hash=''; + } + if (hash.match(/^#l\d+$/)) { + var anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + } + var url=root+hash; + var i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function(){ + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + },true); + } +} + +function showSyncOff(n,relpath) +{ + n.html(''); +} + +function showSyncOn(n,relpath) +{ + n.html(''); +} + +function toggleSyncButton(relpath) +{ + var navSync = $('#nav-sync'); + if (navSync.hasClass('sync')) { + navSync.removeClass('sync'); + showSyncOff(navSync,relpath); + storeLink(stripPath2(pathName())+hashUrl()); + } else { + navSync.addClass('sync'); + showSyncOn(navSync,relpath); + deleteLink(); + } +} + +function initNavTree(toroot,relpath) +{ + var o = new Object(); + o.toroot = toroot; + o.node = new Object(); + o.node.li = document.getElementById("nav-tree-contents"); + o.node.childrenData = NAVTREE; + o.node.children = new Array(); + o.node.childrenUL = document.createElement("ul"); + o.node.getChildrenUL = function() { return o.node.childrenUL; }; + o.node.li.appendChild(o.node.childrenUL); + o.node.depth = 0; + o.node.relpath = relpath; + o.node.expanded = false; + o.node.isLast = true; + o.node.plus_img = document.createElement("span"); + o.node.plus_img.className = 'arrow'; + o.node.plus_img.innerHTML = arrowRight; + + if (localStorageSupported()) { + var navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + navSync.click(function(){ toggleSyncButton(relpath); }); + } + + $(window).load(function(){ + navTo(o,toroot,hashUrl(),relpath); + showRoot(); + }); + + $(window).bind('hashchange', function(){ + if (window.location.hash && window.location.hash.length>1){ + var a; + if ($(location).attr('hash')){ + var clslink=stripPath(pathName())+':'+hashValue(); + a=$('.item a[class$="'+clslink.replace(/1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + +uTL: include/utl/meta/operations.h File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    operations.h File Reference
    +
    +
    + +

    Integral constant operations and logical operations. +More...

    +
    #include <utl/core/impl.h>
    +#include <utl/meta/selection.h>
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Classes

    struct  utl::meta::detail::_or_<... >
     
    struct  utl::meta::detail::_or_<>
     
    struct  utl::meta::detail::_or_< _T1 >
     
    struct  utl::meta::detail::_or_< _T1, _T2 >
     
    struct  utl::meta::detail::_or_< _T1, _T2, _T3, _Tn... >
     
    struct  utl::meta::detail::_and_<... >
     
    struct  utl::meta::detail::_and_<>
     
    struct  utl::meta::detail::_and_< _T1 >
     
    struct  utl::meta::detail::_and_< _T1, _T2 >
     
    struct  utl::meta::detail::_and_< _T1, _T2, _T3, _Tn... >
     
    struct  utl::meta::same_< _T1, _T2 >
     
    struct  utl::meta::same_< _Tp, _Tp >
     
    + + + + + + + + +

    +Namespaces

     utl
     STL's core language concepts.
     
     utl::meta
     
     utl::meta::detail
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Typedefs

    template<bool B>
    using utl::meta::not_c = bool_<!B >
     Negate the bool constant parameter. More...
     
    template<typename _Tp >
    using utl::meta::not_ = not_c< _Tp::type::value >
     not More...
     
    template<typename... _Ts>
    using utl::meta::or_ = eval< detail::_or_< _Ts... > >
     
    template<typename... _Ts>
    using utl::meta::and_ = eval< detail::_and_< _Ts... > >
     
    template<typename _T1 , typename _T2 >
    using utl::meta::not_same_ = not_< eval< same_< _T1, _T2 > >>
     
    template<typename _Tp >
    using utl::meta::negate = integral_< decltype(-_Tp()), -_Tp()>
     Negation. More...
     
    template<typename _Tp1 , typename _Tp2 >
    using utl::meta::add = integral_< decltype(_Tp1()+_Tp2()), _Tp1()+_Tp2() >
     Addition. More...
     
    template<typename _Tp1 , typename _Tp2 >
    using utl::meta::mult = integral_< decltype(_Tp2() *_Tp2()), _Tp1() *_Tp2() >
     Multiplication. More...
     
    template<typename _Tp1 , typename _Tp2 >
    using utl::meta::divide = integral_< decltype(_Tp2()/_Tp2()), _Tp1()/_Tp2() >
     Division. More...
     
    template<typename _Tp1 , typename _Tp2 >
    using utl::meta::modulo = integral_< decltype(_Tp1() % _Tp2()), _Tp1() % _Tp2() >
     Modulo. More...
     
    template<typename _Tp1 , typename _Tp2 >
    using utl::meta::sub = add< _Tp1, negate< _Tp2 > >
     Substruction. More...
     
    template<typename _Tp >
    using utl::meta::inc = add< _Tp, int_< 1 > >
     Increase. More...
     
    template<typename _Tp >
    using utl::meta::dec = add< _Tp, int_<-1 > >
     decrease More...
     
    template<typename _Tp1 , typename _Tp2 >
    using utl::meta::comp_eq = bool_< _Tp1()==_Tp2()>
     
    template<typename _Tp1 , typename _Tp2 >
    using utl::meta::comp_lt = bool_<(_Tp1()< _Tp2())>
     
    template<typename _Tp1 , typename _Tp2 >
    using utl::meta::comp_ne = not_< comp_eq< _Tp1, _Tp2 > >
     Not equal. More...
     
    template<typename _Tp1 , typename _Tp2 >
    using utl::meta::comp_gt = comp_lt< _Tp2, _Tp1 >
     Greater than. More...
     
    template<typename _Tp1 , typename _Tp2 >
    using utl::meta::comp_le = not_< comp_lt< _Tp2, _Tp1 > >
     Less or equal. More...
     
    template<typename _Tp1 , typename _Tp2 >
    using utl::meta::comp_ge = not_< comp_lt< _Tp1, _Tp2 > >
     Greater or equal. More...
     
    template<typename _T >
    using utl::meta::bitnot_ = integral_< typename _T::value_type,(typename _T::value_type)(~_T())>
     
    template<typename _Tp1 , typename _Tp2 >
    using utl::meta::bitand_ = integral_< decltype(_Tp1() &_Tp2()), _Tp1() &_Tp2()>
     
    template<typename _Tp1 , typename _Tp2 >
    using utl::meta::bitor_ = integral_< decltype(_Tp1()|_Tp2()), _Tp1()|_Tp2()>
     
    template<typename _Tp1 , typename _Tp2 >
    using utl::meta::bitxor_ = integral_< decltype(_Tp1() ^ _Tp2()), _Tp1() ^ _Tp2()>
     
    template<typename _Tp , typename shift >
    using utl::meta::shift_left = integral_< typename _Tp::value_type,(typename _Tp::value_type)(_Tp()<< shift())>
     
    template<typename _Tp , typename shift >
    using utl::meta::shift_right = integral_< typename _Tp::value_type,(typename _Tp::value_type)(_Tp() > > shift())>
     
    +

    Detailed Description

    +

    Integral constant operations and logical operations.

    +

    Copyright (C) 2018-2019 Christos Choutouridis

    +

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    +

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

    +

    You should have received a copy of the GNU Lesser General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    + +

    Definition in file operations.h.

    +
    +
    + + + + diff --git a/doc/html/operations_8h.js b/doc/html/operations_8h.js new file mode 100644 index 0000000..9d6e375 --- /dev/null +++ b/doc/html/operations_8h.js @@ -0,0 +1,38 @@ +var operations_8h = +[ + [ "_or_", "structutl_1_1meta_1_1detail_1_1__or__.html", null ], + [ "_or_<>", "structutl_1_1meta_1_1detail_1_1__or___3_4.html", null ], + [ "_or_< _T1 >", "structutl_1_1meta_1_1detail_1_1__or___3_01___t1_01_4.html", null ], + [ "_or_< _T1, _T2 >", "structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_01_4.html", null ], + [ "_or_< _T1, _T2, _T3, _Tn... >", "structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4.html", null ], + [ "_and_", "structutl_1_1meta_1_1detail_1_1__and__.html", null ], + [ "_and_<>", "structutl_1_1meta_1_1detail_1_1__and___3_4.html", null ], + [ "_and_< _T1 >", "structutl_1_1meta_1_1detail_1_1__and___3_01___t1_01_4.html", null ], + [ "_and_< _T1, _T2 >", "structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_01_4.html", null ], + [ "_and_< _T1, _T2, _T3, _Tn... >", "structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4.html", null ], + [ "add", "operations_8h.html#a559ad95ef39fd2c81664bd1a22dd99c1", null ], + [ "and_", "operations_8h.html#ga8e82f4758321e0e0b3705607f7d8e068", null ], + [ "bitand_", "operations_8h.html#aca6b42898b47945118c518bde9d25cc2", null ], + [ "bitnot_", "operations_8h.html#a9ea199752ca985d1b813d7127868566c", null ], + [ "bitor_", "operations_8h.html#a1e2c2decdd22972fc8ce43203c0ef0d1", null ], + [ "bitxor_", "operations_8h.html#a910e21345bc7e75dc7c0ceb4a4721754", null ], + [ "comp_eq", "operations_8h.html#a7ae2d08147055946f1b9345e579a26b6", null ], + [ "comp_ge", "operations_8h.html#ae6c552e8e99ac5578f865f17c1d0efdc", null ], + [ "comp_gt", "operations_8h.html#a3c4784ad3eb1f745c58b9a4b65a406e8", null ], + [ "comp_le", "operations_8h.html#afb9a35dc5ef40b5bf9902c0daec7f1af", null ], + [ "comp_lt", "operations_8h.html#a1a948746d1758a05c0ae71cfd114b05d", null ], + [ "comp_ne", "operations_8h.html#af92bee16de47b16ba01a8efac686b488", null ], + [ "dec", "operations_8h.html#abee96e75aadb364fdd0890aa3ee490b7", null ], + [ "divide", "operations_8h.html#ae1ec6fc1f76abbb2e5287aa91cd85068", null ], + [ "inc", "operations_8h.html#af74f5af58b33241f1b94102742a73ab1", null ], + [ "modulo", "operations_8h.html#adf7106374b1acc978be05b5848002cfc", null ], + [ "mult", "operations_8h.html#a5f0a890cbd116d4a72a760a26f5a8244", null ], + [ "negate", "operations_8h.html#aec4bf9329ff8356d333a59e3c369d0b7", null ], + [ "not_", "operations_8h.html#ga16df145331d3c62e624385c5949d90c4", null ], + [ "not_c", "operations_8h.html#ga7de987520bd0973f03ff8bab3152361a", null ], + [ "not_same_", "operations_8h.html#ga4dfaf054d891eb35d741662b077bbbd2", null ], + [ "or_", "operations_8h.html#gac43f400cc93d54f5f79892e618069d9b", null ], + [ "shift_left", "operations_8h.html#a63088c29ac25eefda4189721e662b391", null ], + [ "shift_right", "operations_8h.html#acbe6dd78c4a4230e92acc5ca86e3fcc7", null ], + [ "sub", "operations_8h.html#a9f90eea3852367afa4e1fe74756976fb", null ] +]; \ No newline at end of file diff --git a/doc/html/operations_8h_source.html b/doc/html/operations_8h_source.html new file mode 100644 index 0000000..aa30e96 --- /dev/null +++ b/doc/html/operations_8h_source.html @@ -0,0 +1,149 @@ + + + + + + + +uTL: include/utl/meta/operations.h Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    operations.h
    +
    +
    +Go to the documentation of this file.
    1 
    20 #ifndef __utl_meta_operations_h__
    21 #define __utl_meta_operations_h__
    22 
    23 #include <utl/core/impl.h>
    24 #include <utl/meta/selection.h>
    25 
    26 
    32 namespace utl {
    34 namespace meta{
    35 
    39 
    42  template <bool B>
    43  using not_c = bool_<!B>;
    44 
    46  template<typename _Tp>
    48 
    51  namespace detail {
    52  template<typename...> struct _or_;
    53 
    54  template<>
    55  struct _or_<> : false_ { };
    56 
    57  template<typename _T1>
    58  struct _or_<_T1> : _T1 { };
    59 
    60  template<typename _T1, typename _T2>
    62  : if_<_T1, _T1, _T2> { };
    63 
    64  template<typename _T1, typename _T2, typename _T3, typename... _Tn>
    65  struct _or_<_T1, _T2, _T3, _Tn...>
    66  : if_<_T1, _T1, _or_<_T2, _T3, _Tn...>> { };
    67  }
    68 
    69  template <typename... _Ts>
    70  using or_ = eval<detail::_or_<_Ts...>>;
    72 
    75  namespace detail {
    76  template<typename...> struct _and_;
    77 
    78  template<>
    79  struct _and_<>
    80  : true_ { };
    81 
    82  template<typename _T1>
    83  struct _and_ <_T1>
    84  : _T1 { };
    85 
    86  template<typename _T1, typename _T2>
    88  : if_<_T1, _T2, _T1> { };
    89 
    90  template<typename _T1, typename _T2, typename _T3, typename... _Tn>
    91  struct _and_<_T1, _T2, _T3, _Tn...>
    92  : if_<_T1, _and_<_T2, _T3, _Tn...>, _T1> { };
    93  }
    94 
    95  template <typename... _Ts>
    96  using and_ = eval<detail::_and_<_Ts...>>;
    98 
    101  template<typename _T1, typename _T2>
    102  struct same_ : false_ { };
    103 
    104  template<typename _Tp>
    105  struct same_ <_Tp, _Tp> : true_ { };
    107 
    110  template<typename _T1, typename _T2>
    113 
    115 }}
    116 
    118 
    119 
    125 
    127 namespace utl {
    128 namespace meta {
    129 
    134 
    137  template <typename _Tp>
    138  using negate = integral_<decltype(-_Tp()), -_Tp()>;
    140  template <typename _Tp1, typename _Tp2>
    141  using add = integral_<
    142  decltype(_Tp1() + _Tp2()),
    143  _Tp1() + _Tp2()
    144  >;
    146  template <typename _Tp1, typename _Tp2>
    147  using mult = integral_<
    148  decltype(_Tp2() * _Tp2()),
    149  _Tp1() * _Tp2()
    150  >;
    152  template <typename _Tp1, typename _Tp2>
    153  using divide = integral_<
    154  decltype(_Tp2() / _Tp2()),
    155  _Tp1() / _Tp2()
    156  >;
    158  template <typename _Tp1, typename _Tp2>
    159  using modulo = integral_<
    160  decltype(_Tp1() % _Tp2()),
    161  _Tp1() % _Tp2()
    162  >;
    164  template <typename _Tp1, typename _Tp2>
    166 
    168  template <typename _Tp>
    170 
    172  template <typename _Tp>
    173  using dec = add<_Tp, int_<-1>>;
    174 
    176 
    181 
    184  template <typename _Tp1, typename _Tp2> using comp_eq = bool_<_Tp1() == _Tp2()>;
    186  template <typename _Tp1, typename _Tp2> using comp_lt = bool_<(_Tp1() < _Tp2())>;
    187 
    189  template <typename _Tp1, typename _Tp2> using comp_ne = not_<comp_eq<_Tp1, _Tp2>>;
    191  template <typename _Tp1, typename _Tp2> using comp_gt = comp_lt <_Tp2, _Tp1>;
    193  template <typename _Tp1, typename _Tp2> using comp_le = not_<comp_lt<_Tp2, _Tp1>>;
    195  template <typename _Tp1, typename _Tp2> using comp_ge = not_<comp_lt<_Tp1, _Tp2>>;
    197 
    202 
    207  template <typename _Tp1, typename _Tp2>
    210  template <typename _Tp1, typename _Tp2>
    212 
    214  template <typename _Tp1, typename _Tp2>
    217  template <typename _Tp, typename shift>
    220  template <typename _Tp, typename shift>
    223 }}
    225 
    226 
    227 #endif /* __utl_meta_operations_h__ */
    +
    bool_< _Tp1()==_Tp2()> comp_eq
    Definition: operations.h:184
    +
    integral_< typename _Tp::value_type,(typename _Tp::value_type)(_Tp() > > shift())> shift_right
    Definition: operations.h:221
    +
    not_< comp_eq< _Tp1, _Tp2 > > comp_ne
    Not equal.
    Definition: operations.h:189
    +
    if_c< If::type::value, Args... > if_
    Select one type or another depending on a compile-time Boolean type.
    Definition: selection.h:66
    +
    integral_< decltype(_Tp1() &_Tp2()), _Tp1() &_Tp2()> bitand_
    Definition: operations.h:208
    +
    integral_< decltype(-_Tp()), -_Tp()> negate
    Negation.
    Definition: operations.h:138
    + +
    add< _Tp1, negate< _Tp2 > > sub
    Substruction.
    Definition: operations.h:165
    +
    integral_< decltype(_Tp2() *_Tp2()), _Tp1() *_Tp2() > mult
    Multiplication.
    Definition: operations.h:150
    +
    bool_< true > true_
    The type used as a compile-time boolean with true value.
    Definition: integral.h:68
    + +
    bool_<(_Tp1()< _Tp2())> comp_lt
    Definition: operations.h:186
    +
    integral_< decltype(_Tp1()|_Tp2()), _Tp1()|_Tp2()> bitor_
    Definition: operations.h:211
    +
    integral_< typename _T::value_type,(typename _T::value_type)(~_T())> bitnot_
    Definition: operations.h:205
    +
    std::integral_constant< Tp, v > integral_
    Definition: integral.h:58
    +
    Template meta-programming type selections.
    +
    integral_< decltype(_Tp1() % _Tp2()), _Tp1() % _Tp2() > modulo
    Modulo.
    Definition: operations.h:162
    +
    comp_lt< _Tp2, _Tp1 > comp_gt
    Greater than.
    Definition: operations.h:191
    +
    integral_< typename _Tp::value_type,(typename _Tp::value_type)(_Tp()<< shift())> shift_left
    Definition: operations.h:218
    +
    integral_< int, v > int_
    int_ type: integral constant wrapper for int
    Definition: integral.h:98
    +
    bool_< false > false_
    The type used as a compile-time boolean with false value.
    Definition: integral.h:69
    +
    integral_< decltype(_Tp1()+_Tp2()), _Tp1()+_Tp2() > add
    Addition.
    Definition: operations.h:144
    +
    typename Tp::type eval
    Type alias for Tp::type. Used to evaluate/extract return type of metafunctions.
    Definition: integral.h:49
    +
    bool_<!B > not_c
    Negate the bool constant parameter.
    Definition: operations.h:43
    +
    STL&#39;s core language concepts.
    Definition: _1wire.h:30
    + +
    integral_< decltype(_Tp1() ^ _Tp2()), _Tp1() ^ _Tp2()> bitxor_
    Definition: operations.h:215
    +
    add< _Tp, int_<-1 > > dec
    decrease
    Definition: operations.h:173
    +
    not_< comp_lt< _Tp1, _Tp2 > > comp_ge
    Greater or equal.
    Definition: operations.h:195
    +
    integral_< bool, v > bool_
    bool_ type: integral constant wrapper for bool
    Definition: integral.h:66
    +
    integral_< decltype(_Tp2()/_Tp2()), _Tp1()/_Tp2() > divide
    Division.
    Definition: operations.h:156
    +
    not_< eval< same_< _T1, _T2 > >> not_same_
    Definition: operations.h:111
    + +
    eval< detail::_or_< _Ts... > > or_
    Definition: operations.h:70
    +
    not_c< _Tp::type::value > not_
    not
    Definition: operations.h:47
    +
    eval< detail::_and_< _Ts... > > and_
    Definition: operations.h:96
    + + + +
    not_< comp_lt< _Tp2, _Tp1 > > comp_le
    Less or equal.
    Definition: operations.h:193
    + +
    Implementation detail main forward header.
    +
    add< _Tp, int_< 1 > > inc
    Increase.
    Definition: operations.h:169
    +
    +
    + + + + diff --git a/doc/html/ostream__dev_8h.html b/doc/html/ostream__dev_8h.html new file mode 100644 index 0000000..c50bf79 --- /dev/null +++ b/doc/html/ostream__dev_8h.html @@ -0,0 +1,140 @@ + + + + + + + +uTL: include/utl/dev/ostream_dev.h File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    ostream_dev.h File Reference
    +
    +
    + +

    Abstract base class interface for output devices of utl. +More...

    +
    #include <utl/core/impl.h>
    +#include <utl/core/crtp.h>
    +#include <utl/dev/dev_iterators.h>
    +#include <utl/meta/meta.h>
    +
    +

    Go to the source code of this file.

    + + + + + + + +

    +Classes

    class  utl::ostream_dev< impl_t, data_t >
     Abstract base classes for output stream devices. More...
     
    class  utl::ostream_dev< virtual_tag, data_t >
     
    + + + + +

    +Namespaces

     utl
     STL's core language concepts.
     
    +

    Detailed Description

    +

    Abstract base class interface for output devices of utl.

    +

    Copyright (C) 2018 Christos Choutouridis

    +

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    +

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

    +

    You should have received a copy of the GNU Lesser General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    + +

    Definition in file ostream_dev.h.

    +
    +
    + + + + diff --git a/doc/html/ostream__dev_8h_source.html b/doc/html/ostream__dev_8h_source.html new file mode 100644 index 0000000..3799dd9 --- /dev/null +++ b/doc/html/ostream__dev_8h_source.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: include/utl/dev/ostream_dev.h Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    ostream_dev.h
    +
    +
    +Go to the documentation of this file.
    1 
    21 #ifndef __utl_dev_ostream_dev_h__
    22 #define __utl_dev_ostream_dev_h__
    23 
    24 #include <utl/core/impl.h>
    25 #include <utl/core/crtp.h>
    26 #include <utl/dev/dev_iterators.h>
    27 #include <utl/meta/meta.h>
    28 
    29 namespace utl {
    30 
    35 
    51  template <typename impl_t, typename data_t>
    52  class ostream_dev {
    53  _CRTP_IMPL(impl_t);
    55 
    58  public:
    59  using data_type = data_t;
    60  using pointer_type = data_t*;
    62  using type = ostream_dev_t;
    63 
    66  protected:
    68  ~ostream_dev () = default;
    69  ostream_dev () = default;
    70  ostream_dev(const ostream_dev_t&) = delete;
    71  ostream_dev_t& operator= (const ostream_dev_t&) = delete;
    72 
    76  private:
    77  size_t put_ (const data_t& data) { return impl().put_ (data); }
    78  size_t put_ (const data_t* data, size_t n) {
    79  return impl().put_ (data, n);
    80  }
    82 
    85  public:
    96  size_t put (const data_t& data) {
    97  return put_ (data);
    98  }
    99 
    108  size_t put (const data_t* data, size_t n) {
    109  return put_ (data, n);
    110  }
    112 
    116  public:
    127  template <typename _Src_t>
    128  ostream_dev_t& operator<< (const _Src_t& src) {
    129  static_assert ((sizeof (_Src_t)%sizeof(data_t) == 0),
    130  "Source size must be an integer multiple of device's data size");
    131  put_ (reinterpret_cast<const data_t*>(&src), sizeof(_Src_t)/sizeof(data_t));
    132  return *this;
    133  }
    135  template <typename _Src_t>
    136  ostream_dev_t& operator<< (_Src_t* src) = delete;
    137 
    139  ostream_dev_t& operator<< (const data_t& src) {
    140  put_ (src);
    141  return *this;
    142  }
    143  //ToDo: Add support for c-string, utl::string, ...
    145 
    152 
    154  iterator begin () noexcept { return iterator(this); }
    155  const_iterator begin () const noexcept { return const_iterator(this); }
    156  const_iterator cbegin () const noexcept { return const_iterator(this); }
    159  iterator end () noexcept { return iterator(); }
    160  const_iterator end () const noexcept { return const_iterator(); }
    161  const_iterator cend () const noexcept { return const_iterator(); }
    164  };
    165 
    166 
    167 
    168 
    169 
    170  template <typename data_t>
    171  class ostream_dev<virtual_tag, data_t> {
    173 
    176  public:
    177  using data_type = data_t;
    178  using pointer_type = data_t*;
    180  using type = ostream_dev_t;
    181 
    184  public:
    186  virtual ~ostream_dev () = default;
    187  protected:
    188  ostream_dev () = default;
    189  ostream_dev(const ostream_dev_t&) = delete;
    190  ostream_dev_t& operator= (const ostream_dev_t&) = delete;
    191 
    195  private:
    196  virtual size_t put_ (const data_t& data) =0;
    197  virtual size_t put_ (const data_t* data, size_t n) =0;
    199 
    202  public:
    213  size_t put (const data_t& data) {
    214  return put_ (data);
    215  }
    216 
    225  size_t put (const data_t* data, size_t n) {
    226  return put_ (data, n);
    227  }
    229 
    233  public:
    244  template <typename _Src_t>
    245  ostream_dev_t& operator<< (const _Src_t& src) {
    246  static_assert ((sizeof (_Src_t)%sizeof(data_t) == 0),
    247  "Source size must be an integer multiple of device's data size");
    248  put_ (reinterpret_cast<const data_t*>(&src), sizeof(_Src_t)/sizeof(data_t));
    249  return *this;
    250  }
    252  template <typename _Src_t>
    253  ostream_dev_t& operator<< (_Src_t* src) = delete;
    254 
    256  ostream_dev_t& operator<< (const data_t& src) {
    257  put_ (src);
    258  return *this;
    259  }
    261 
    268 
    270  iterator begin () noexcept { return iterator(this); }
    271  const_iterator begin () const noexcept { return const_iterator(this); }
    272  const_iterator cbegin () const noexcept { return const_iterator(this); }
    275  iterator end () noexcept { return iterator(); }
    276  const_iterator end () const noexcept { return const_iterator(); }
    277  const_iterator cend () const noexcept { return const_iterator(); }
    280  };
    281 
    282 
    284 } //namespace utl
    285 
    286 #endif /* #ifndef __utl_dev_out_dev_h__ */
    const_iterator cend() const noexcept
    Definition: ostream_dev.h:277
    +
    const_iterator cbegin() const noexcept
    Definition: ostream_dev.h:272
    +
    ostreamdev_it< ostream_dev_t, data_t > iterator
    Iterator.
    Definition: ostream_dev.h:150
    +
    Include all meta library.
    +
    const_iterator end() const noexcept
    Definition: ostream_dev.h:160
    +
    size_t put_(const data_t &data)
    Definition: ostream_dev.h:77
    +
    ~ostream_dev()=default
    Allow destructor from derived only.
    + +
    iterator begin() noexcept
    .begin implementation
    Definition: ostream_dev.h:270
    +
    size_t put(const data_t *data, size_t n)
    Put interface. This function should send a stream of data_t objects to device.
    Definition: ostream_dev.h:225
    +
    ostream_dev< impl_t, data_t > ostream_dev_t
    class type syntactic sugar
    Definition: ostream_dev.h:54
    +
    size_t put(const data_t *data, size_t n)
    Put interface. This function should send a stream of data_t objects to device.
    Definition: ostream_dev.h:108
    +
    data_t * pointer_type
    Definition: ostream_dev.h:60
    + +
    Abstract base classes for output stream devices.
    Definition: ostream_dev.h:52
    +
    STL&#39;s core language concepts.
    Definition: _1wire.h:30
    +
    ostream_dev_t & operator=(const ostream_dev_t &)=delete
    +
    ostream_dev()=default
    A default constructor from derived only.
    + + + + + +
    ostreamdev_it< const ostream_dev_t, data_t > const_iterator
    Const iterator.
    Definition: ostream_dev.h:151
    +
    const_iterator begin() const noexcept
    Definition: ostream_dev.h:271
    +
    Iterator collection for devices.
    +
    size_t put(const data_t &data)
    Put interface. This function should send a single data_t object to device.
    Definition: ostream_dev.h:96
    +
    iterator begin() noexcept
    .begin implementation
    Definition: ostream_dev.h:154
    + +
    const_iterator begin() const noexcept
    Definition: ostream_dev.h:155
    +
    virtual support tag type
    Definition: crtp.h:40
    +
    iterator end() noexcept
    Definition: ostream_dev.h:159
    +
    ostream_dev_t & operator<<(const _Src_t &src)
    Template operator<< implementation for for all by value/ref parameters.
    Definition: ostream_dev.h:128
    +
    const_iterator cbegin() const noexcept
    Definition: ostream_dev.h:156
    +
    const_iterator end() const noexcept
    Definition: ostream_dev.h:276
    +
    Implementation detail main forward header.
    +
    size_t put(const data_t &data)
    Put interface. This function should send a single data_t object to device.
    Definition: ostream_dev.h:213
    +
    const_iterator cend() const noexcept
    Definition: ostream_dev.h:161
    +
    size_t put_(const data_t *data, size_t n)
    Definition: ostream_dev.h:78
    +
    +
    + + + + diff --git a/doc/html/out__dev_8h.html b/doc/html/out__dev_8h.html new file mode 100644 index 0000000..c433b9c --- /dev/null +++ b/doc/html/out__dev_8h.html @@ -0,0 +1,184 @@ + + + + + + + +uTL: include/utl/dev/out_dev.h File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    out_dev.h File Reference
    +
    +
    + +

    Abstract base class interface for output devices of utl. +More...

    +
    #include <utl/core/impl.h>
    +#include <utl/core/crtp.h>
    +#include <utl/dev/dev_iterators.h>
    +#include <utl/meta/meta.h>
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + +

    +Classes

    class  utl::out_dev< impl_t, data_t, streamsize >
     Abstract base classes for output devices. More...
     
    class  utl::out_dev< virtual_tag, data_t, streamsize >
     A virtual base class specialization. More...
     
    struct  utl::out_dev_details::is_out_dev_< _Tp, typename >
     Primary template to catch any non output device types. More...
     
    struct  utl::out_dev_details::is_out_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_put1_t< _Tp >, size_t >, use_if_same_t< try_put2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > >
     template to catch a proper output device type More...
     
    + + + + + + +

    +Namespaces

     utl
     STL's core language concepts.
     
     utl::out_dev_details
     
    + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Typedefs

    template<class _Tp >
    using utl::out_dev_details::try_put1_t = decltype(declval< _Tp >().put(declval< const typename _Tp::data_type & >()))
     
    template<class _Tp >
    using utl::out_dev_details::try_put2_t = decltype(declval< _Tp >().put(declval< const typename _Tp::data_type * >(), declval< size_t >()))
     
    template<class _Tp >
    using utl::out_dev_details::try_begin_t = decltype(declval< _Tp >().begin())
     
    template<class _Tp >
    using utl::out_dev_details::tryc_begin_t = decltype(declval< const _Tp >().begin())
     
    template<class _Tp >
    using utl::out_dev_details::try_cbegin_t = decltype(declval< const _Tp >().cbegin())
     
    template<class _Tp >
    using utl::out_dev_details::try_end_t = decltype(declval< _Tp >().begin())
     
    template<class _Tp >
    using utl::out_dev_details::tryc_end_t = decltype(declval< const _Tp >().begin())
     
    template<class _Tp >
    using utl::out_dev_details::try_cend_t = decltype(declval< const _Tp >().cend())
     
    + + + + + +

    +Variables

    template<typename _Tp >
    constexpr bool utl::Out_dev = out_dev_details::is_out_dev_<_Tp>::value
     
    +

    Detailed Description

    +

    Abstract base class interface for output devices of utl.

    +

    Copyright (C) 2018 Christos Choutouridis

    +

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    +

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

    +

    You should have received a copy of the GNU Lesser General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    + +

    Definition in file out_dev.h.

    +
    +
    + + + + diff --git a/doc/html/out__dev_8h.js b/doc/html/out__dev_8h.js new file mode 100644 index 0000000..7e90a88 --- /dev/null +++ b/doc/html/out__dev_8h.js @@ -0,0 +1,16 @@ +var out__dev_8h = +[ + [ "out_dev", "classutl_1_1out__dev.html", "classutl_1_1out__dev" ], + [ "out_dev< virtual_tag, data_t, streamsize >", "classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html", "classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4" ], + [ "is_out_dev_", "structutl_1_1out__dev__details_1_1is__out__dev__.html", null ], + [ "is_out_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_put1_t< _Tp >, size_t >, use_if_same_t< try_put2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > >", "structutl_1_1out__dev__details_1_1is__out__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1fbf8d2409fc6de9dd6b9649bedc1b379.html", null ], + [ "try_begin_t", "out__dev_8h.html#ab5980d368073d104e13d153e291dde86", null ], + [ "try_cbegin_t", "out__dev_8h.html#a92a49420cc024aec06546ac041e7707a", null ], + [ "try_cend_t", "out__dev_8h.html#a9f69f9ca8e1bf642bf63bfdd18c8d567", null ], + [ "try_end_t", "out__dev_8h.html#a7d24815b4a395378766a4e9f0535c926", null ], + [ "try_put1_t", "out__dev_8h.html#adb92d30f8cf134da9586ef9d52801325", null ], + [ "try_put2_t", "out__dev_8h.html#a314537b65eaf15b6bba5a6f5544f3ace", null ], + [ "tryc_begin_t", "out__dev_8h.html#a83dcd42cb9186967654eb365ab0ce712", null ], + [ "tryc_end_t", "out__dev_8h.html#ad76fb97793ff8c8f31b042d70114ded2", null ], + [ "Out_dev", "out__dev_8h.html#a77f27f594c8696fcfbc85a9ec66c11f1", null ] +]; \ No newline at end of file diff --git a/doc/html/out__dev_8h_source.html b/doc/html/out__dev_8h_source.html new file mode 100644 index 0000000..b22e205 --- /dev/null +++ b/doc/html/out__dev_8h_source.html @@ -0,0 +1,160 @@ + + + + + + + +uTL: include/utl/dev/out_dev.h Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    out_dev.h
    +
    +
    +Go to the documentation of this file.
    1 
    21 #ifndef __utl_dev_out_dev_h__
    22 #define __utl_dev_out_dev_h__
    23 
    24 #include <utl/core/impl.h>
    25 #include <utl/core/crtp.h>
    26 #include <utl/dev/dev_iterators.h>
    27 #include <utl/meta/meta.h>
    28 
    29 namespace utl {
    30 
    35 
    53  template <typename impl_t, typename data_t, size_t streamsize =0>
    54  class out_dev {
    55  _CRTP_IMPL(impl_t);
    57 
    60  public:
    61  using data_type = data_t;
    62  using pointer_type = data_t*;
    64  using type = out_dev_t;
    65 
    69  protected:
    71  ~out_dev () = default;
    72  out_dev () = default;
    73  out_dev(const out_dev_t&) = delete;
    74  out_dev_t& operator= (const out_dev_t&) = delete;
    75 
    79  private:
    80  size_t put_ (const data_t& data) { return impl().put_ (data); }
    81  size_t put_ (const data_t* data, size_t n) {
    82  return impl().put_ (data, n);
    83  }
    85 
    88  public:
    99  size_t put (const data_t& data) {
    100  return put_ (data);
    101  }
    102 
    111  size_t put (const data_t* data, size_t n) {
    112  return put_ (data, n);
    113  }
    115 
    119  public:
    130  template <typename _Src_t>
    131  out_dev_t& operator<< (_Src_t& src) {
    132  static_assert ((sizeof (_Src_t)%sizeof(data_t) == 0),
    133  "Source size must be an integer multiple of device's data size");
    134  put_ (reinterpret_cast<data_t*>(&src), sizeof(_Src_t)/sizeof(data_t));
    135  return *this;
    136  }
    138  template <typename _Src_t>
    139  out_dev_t& operator<< (_Src_t* src) = delete;
    140 
    142  out_dev_t& operator<< (const data_t& src) {
    143  put_ (src);
    144  return *this;
    145  }
    147 
    154 
    156  iterator begin () noexcept { return iterator(this, iterator::beg); }
    157  const_iterator begin () const noexcept { return const_iterator(this, iterator::beg); }
    158  const_iterator cbegin () const noexcept { return const_iterator(this, iterator::beg); }
    161  iterator end () noexcept { return iterator(this, iterator::eos); }
    162  const_iterator end () const noexcept { return const_iterator(this, iterator::eos); }
    163  const_iterator cend () const noexcept { return const_iterator(this, iterator::eos); }
    166  };
    167 
    176  template <typename data_t, size_t streamsize>
    177  class out_dev <virtual_tag, data_t, streamsize> {
    179 
    182  public:
    183  using data_type = data_t;
    184  using pointer_type = data_t*;
    186  using type = out_dev_t;
    187 
    191  public:
    193  virtual ~out_dev () = default;
    194  protected:
    195  out_dev () = default;
    196  out_dev(const out_dev&) = delete;
    197  out_dev_t& operator= (const out_dev_t&) = delete;
    198 
    203  private:
    214  virtual size_t put_ (const data_t& data) = 0;
    215 
    224  virtual size_t put_ (const data_t* data, size_t n) = 0;
    226 
    229  public:
    231  size_t put (const data_t& data) { return put_ (data); }
    232  size_t put (const data_t* data, size_t n) { return put_ (data, n); }
    234 
    237  public:
    245  template <typename _Src_t>
    246  out_dev_t& operator<< (_Src_t& src) {
    247  static_assert ((sizeof (_Src_t)%sizeof(data_t) == 0),
    248  "Source size must be an integer multiple of device's data size");
    249  put_ (reinterpret_cast<data_t*>(&src), sizeof(_Src_t)/sizeof(data_t));
    250  return *this;
    251  }
    253  template <typename _Src_t>
    254  out_dev_t& operator<< (_Src_t* src) = delete;
    255 
    257  out_dev_t& operator<< (const data_t& src) {
    258  put_ (src);
    259  return *this;
    260  }
    262 
    269 
    271  iterator begin () noexcept { return iterator(this, iterator::beg); }
    272  const_iterator begin () const noexcept { return const_iterator(this, iterator::beg); }
    273  const_iterator cbegin () const noexcept { return const_iterator(this, iterator::beg); }
    276  iterator end () noexcept { return iterator(this, iterator::eos); }
    277  const_iterator end () const noexcept { return const_iterator(this, iterator::eos); }
    278  const_iterator cend () const noexcept { return const_iterator(this, iterator::eos); }
    281  };
    282 
    283 
    287  #if defined _utl_have_concepts
    289  template <typename _Tp>
    290  concept bool Out_dev = requires (_Tp t, const _Tp ct, typename _Tp::data_type v) {
    291  // Object type
    292  requires !std::is_copy_constructible<_Tp>::value;
    293  requires !std::is_copy_assignable<_Tp>::value;
    294  // Methods
    295  {t.put(v)} -> size_t;
    296  {t.put(&v, sizeof(v))} -> size_t;
    297  // Operators
    298  t << v;
    299  // Iterators
    300  typename _Tp::const_iterator;
    301  requires Outdev_it<typename _Tp::iterator>;
    302  requires Outdev_it<typename _Tp::const_iterator>;
    303  { t.begin() } -> typename _Tp::iterator;
    304  {ct.begin()} -> typename _Tp::const_iterator;
    305  { t.cbegin()} -> typename _Tp::const_iterator;
    306  { t.end() } -> typename _Tp::iterator;
    307  {ct.end()} -> typename _Tp::const_iterator;
    308  { t.cend()} -> typename _Tp::const_iterator;
    309  };
    310  #else
    311  namespace out_dev_details {
    312  using std::declval;
    313 
    314  template <class _Tp> using try_put1_t = decltype (declval<_Tp>().put (declval<const typename _Tp::data_type&>()));
    315  template <class _Tp> using try_put2_t = decltype (declval<_Tp>().put (declval<const typename _Tp::data_type*>(),
    316  declval<size_t>()));
    317  // operators
    318  //template <class _Tp> using try_insert_t= decltype (declval<_Tp>() << declval<typename _Tp::data_type&>());
    319  // iterator members
    320  template <class _Tp> using try_begin_t = decltype (declval<_Tp>().begin());
    321  template <class _Tp> using tryc_begin_t = decltype (declval<const _Tp>().begin());
    322  template <class _Tp> using try_cbegin_t = decltype (declval<const _Tp>().cbegin());
    323  template <class _Tp> using try_end_t = decltype (declval<_Tp>().begin());
    324  template <class _Tp> using tryc_end_t = decltype (declval<const _Tp>().begin());
    325  template <class _Tp> using try_cend_t = decltype (declval<const _Tp>().cend());
    326 
    328  template <typename _Tp, typename =void>
    329  struct is_out_dev_ : false_ { };
    330 
    332  template <typename _Tp>
    333  struct is_out_dev_ <_Tp,
    334  void_t <
    335  typename _Tp::data_type,
    336  typename _Tp::pointer_type,
    337  typename _Tp::iterator,
    338  typename _Tp::const_iterator,
    339  use_if_same_t <try_put1_t <_Tp>, size_t>,
    340  use_if_same_t <try_put2_t <_Tp>, size_t>,
    341  //if_same_t <try_insert_t<_Tp>,_Tp&>,
    342  use_if_same_t <try_begin_t<_Tp>, typename _Tp::iterator>,
    343  use_if_same_t <tryc_begin_t<_Tp>, typename _Tp::const_iterator>,
    344  use_if_same_t <try_cbegin_t<_Tp>, typename _Tp::const_iterator>,
    345  use_if_same_t <try_end_t<_Tp>, typename _Tp::iterator>,
    346  use_if_same_t <tryc_end_t<_Tp>, typename _Tp::const_iterator>,
    347  use_if_same_t <try_cend_t<_Tp>, typename _Tp::const_iterator>
    348  >
    349  > : true_ { };
    350  }
    356  template <typename _Tp>
    358  #endif
    359 
    362 } //namespace utl
    363 
    364 #endif /* #ifndef __utl_dev_out_dev_h__ */
    data_t * pointer_type
    Definition: out_dev.h:62
    + +
    A virtual base class specialization.
    Definition: out_dev.h:177
    +
    iterator end() noexcept
    Definition: out_dev.h:161
    +
    Include all meta library.
    +
    const_iterator cbegin() const noexcept
    Definition: out_dev.h:273
    +
    void void_t
    void_t type alias
    Definition: detection.h:55
    +
    const_iterator begin() const noexcept
    Definition: out_dev.h:272
    + +
    bool_< true > true_
    The type used as a compile-time boolean with true value.
    Definition: integral.h:68
    +
    _CRTP_IMPL(impl_t)
    +
    decltype(declval< _Tp >().put(declval< const typename _Tp::data_type * >(), declval< size_t >())) try_put2_t
    Definition: out_dev.h:316
    + +
    size_t put(const data_t *data, size_t n)
    Put interface. This function should send a stream of data_t objects to device.
    Definition: out_dev.h:111
    +
    out_dev< impl_t, data_t, streamsize > out_dev_t
    class type syntactic sugar
    Definition: out_dev.h:56
    +
    decltype(declval< _Tp >().put(declval< const typename _Tp::data_type & >())) try_put1_t
    Definition: out_dev.h:314
    +
    meta::eval< meta::enable_if< meta::same_< _T1, _T2 >::value, _Ret > > use_if_same_t
    Definition: stl.h:55
    +
    iterator begin() noexcept
    .begin implementation
    Definition: out_dev.h:156
    +
    decltype(declval< const _Tp >().begin()) tryc_end_t
    Definition: out_dev.h:324
    +
    size_t put_(const data_t &data)
    Definition: out_dev.h:80
    +
    outdev_it< out_dev_t, data_t *, streamsize > iterator
    Iterator.
    Definition: out_dev.h:152
    +
    Output device iterator type. We "future call" interface methods from owner class to provide iterator ...
    +
    Primary template to catch any non output device types.
    Definition: out_dev.h:329
    +
    bool_< false > false_
    The type used as a compile-time boolean with false value.
    Definition: integral.h:69
    +
    const_iterator end() const noexcept
    Definition: out_dev.h:277
    +
    constexpr bool Out_dev
    Definition: out_dev.h:357
    +
    decltype(declval< const _Tp >().cbegin()) try_cbegin_t
    Definition: out_dev.h:322
    +
    decltype(declval< const _Tp >().cend()) try_cend_t
    Definition: out_dev.h:325
    +
    std::size_t size_t
    Definition: types.h:37
    +
    STL&#39;s core language concepts.
    Definition: _1wire.h:30
    + +
    decltype(declval< _Tp >().begin()) try_begin_t
    Definition: out_dev.h:320
    +
    decltype(declval< _Tp >().begin()) try_end_t
    Definition: out_dev.h:323
    +
    Points the first item (relative address)
    +
    size_t put(const data_t *data, size_t n)
    Definition: out_dev.h:232
    +
    const_iterator cend() const noexcept
    Definition: out_dev.h:278
    +
    size_t put(const data_t &data)
    Put interface. This function should send a single data_t object to device.
    Definition: out_dev.h:99
    +
    outdev_it< const out_dev_t, data_t *, streamsize > const_iterator
    Const iterator.
    Definition: out_dev.h:153
    +
    const_iterator cbegin() const noexcept
    Definition: out_dev.h:158
    +
    out_dev_t & operator=(const out_dev_t &)=delete
    +
    Iterator collection for devices.
    +
    iterator begin() noexcept
    .begin implementation
    Definition: out_dev.h:271
    +
    size_t put_(const data_t *data, size_t n)
    Definition: out_dev.h:81
    +
    decltype(declval< const _Tp >().begin()) tryc_begin_t
    Definition: out_dev.h:321
    +
    out_dev_t & operator<<(_Src_t &src)
    Template operator<< implementation for for all by value/ref parameters.
    Definition: out_dev.h:131
    +
    const_iterator cend() const noexcept
    Definition: out_dev.h:163
    +
    virtual support tag type
    Definition: crtp.h:40
    +
    const_iterator begin() const noexcept
    Definition: out_dev.h:157
    +
    data_t data_type
    Definition: out_dev.h:61
    + +
    ~out_dev()=default
    Allow destructor from derived only.
    +
    const_iterator end() const noexcept
    Definition: out_dev.h:162
    +
    Implementation detail main forward header.
    +
    out_dev()=default
    A default constructor from derived only.
    +
    Abstract base classes for output devices.
    Definition: out_dev.h:54
    +
    +
    + + + + diff --git a/doc/html/pages.html b/doc/html/pages.html new file mode 100644 index 0000000..288c4b3 --- /dev/null +++ b/doc/html/pages.html @@ -0,0 +1,109 @@ + + + + + + + +uTL: Related Pages + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Related Pages
    +
    +
    +
    Here is a list of all related documentation pages:
    + + +
     README
    +
    +
    +
    + + + + diff --git a/doc/html/resize.js b/doc/html/resize.js new file mode 100644 index 0000000..6617aee --- /dev/null +++ b/doc/html/resize.js @@ -0,0 +1,136 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +function initResizable() +{ + var cookie_namespace = 'doxygen'; + var sidenav,navtree,content,header,collapsed,collapsedWidth=0,barWidth=6,desktop_vp=768,titleHeight; + + function readCookie(cookie) + { + var myCookie = cookie_namespace+"_"+cookie+"="; + if (document.cookie) { + var index = document.cookie.indexOf(myCookie); + if (index != -1) { + var valStart = index + myCookie.length; + var valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) { + valEnd = document.cookie.length; + } + var val = document.cookie.substring(valStart, valEnd); + return val; + } + } + return 0; + } + + function writeCookie(cookie, val, expiration) + { + if (val==undefined) return; + if (expiration == null) { + var date = new Date(); + date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week + expiration = date.toGMTString(); + } + document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; expires=" + expiration+"; path=/"; + } + + function resizeWidth() + { + var windowWidth = $(window).width() + "px"; + var sidenavWidth = $(sidenav).outerWidth(); + content.css({marginLeft:parseInt(sidenavWidth)+"px"}); + writeCookie('width',sidenavWidth-barWidth, null); + } + + function restoreWidth(navWidth) + { + var windowWidth = $(window).width() + "px"; + content.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + sidenav.css({width:navWidth + "px"}); + } + + function resizeHeight() + { + var headerHeight = header.outerHeight(); + var footerHeight = footer.outerHeight(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + content.css({height:windowHeight + "px"}); + navtree.css({height:windowHeight + "px"}); + sidenav.css({height:windowHeight + "px"}); + var width=$(window).width(); + if (width!=collapsedWidth) { + if (width=desktop_vp) { + if (!collapsed) { + collapseExpand(); + } + } else if (width>desktop_vp && collapsedWidth0) { + restoreWidth(0); + collapsed=true; + } + else { + var width = readCookie('width'); + if (width>200 && width<$(window).width()) { restoreWidth(width); } else { restoreWidth(200); } + collapsed=false; + } + } + + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(sidenav).resizable({ minWidth: 0 }); + $(window).resize(function() { resizeHeight(); }); + var device = navigator.userAgent.toLowerCase(); + var touch_device = device.match(/(iphone|ipod|ipad|android)/); + if (touch_device) { /* wider split bar for touch only devices */ + $(sidenav).css({ paddingRight:'20px' }); + $('.ui-resizable-e').css({ width:'20px' }); + $('#nav-sync').css({ right:'34px' }); + barWidth=20; + } + var width = readCookie('width'); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + var url = location.href; + var i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + var _preventDefault = function(evt) { evt.preventDefault(); }; + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + $(".ui-resizable-handle").dblclick(collapseExpand); + $(window).load(resizeHeight); +} +/* @license-end */ diff --git a/doc/html/search/all_0.html b/doc/html/search/all_0.html new file mode 100644 index 0000000..5125b94 --- /dev/null +++ b/doc/html/search/all_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/all_0.js b/doc/html/search/all_0.js new file mode 100644 index 0000000..458500f --- /dev/null +++ b/doc/html/search/all_0.js @@ -0,0 +1,76 @@ +var searchData= +[ + ['_5f1wire_2eh',['_1wire.h',['../__1wire_8h.html',1,'']]], + ['_5f1wire_5fi',['_1wire_i',['../classutl_1_1__1wire__i.html',1,'utl::_1wire_i< impl_t >'],['../classutl_1_1__1wire__i.html#a4839577d00fdcefb51ac8d4cd91f0f1a',1,'utl::_1wire_i::_1wire_i()=default'],['../classutl_1_1__1wire__i.html#adc539ccd0e41f8f830bd96c362094c14',1,'utl::_1wire_i::_1wire_i(const _1wire_i &)=delete'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a21dfe2ba7060c3a8617ced1f841bddaf',1,'utl::_1wire_i< virtual_tag >::_1wire_i()=default'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a8f60bc0402c885a3409ba0d53239510f',1,'utl::_1wire_i< virtual_tag >::_1wire_i(const type &)=delete']]], + ['_5f1wire_5fi_3c_20_5f1wire_5fuart_5fi_3c_20impl_5ft_20_3e_20_3e',['_1wire_i< _1wire_uart_i< Impl_t > >',['../classutl_1_1__1wire__i.html',1,'utl::_1wire_i< _1wire_uart_i< Impl_t > >'],['../classutl_1_1__1wire__uart__i.html#a6ab0ec4032cad68333590f159da83871',1,'utl::_1wire_uart_i::_1wire_i< _1wire_uart_i< Impl_t > >()']]], + ['_5f1wire_5fi_3c_20type_20_3e',['_1wire_i< type >',['../classutl_1_1__1wire__i.html',1,'utl']]], + ['_5f1wire_5fi_3c_20virtual_5ftag_20_3e',['_1wire_i< virtual_tag >',['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html',1,'utl']]], + ['_5f1wire_5fid_2eh',['_1wire_id.h',['../__1wire__id_8h.html',1,'']]], + ['_5f1wire_5fid_5ft',['_1wire_id_t',['../classutl_1_1__1wire__id__t.html',1,'utl::_1wire_id_t'],['../classutl_1_1__1wire__id__t.html#a813f69adfff7bcdcba6b07bf52e3546e',1,'utl::_1wire_id_t::_1wire_id_t() noexcept'],['../classutl_1_1__1wire__id__t.html#a042aa65cc13c6040f795c8198f5afc23',1,'utl::_1wire_id_t::_1wire_id_t(const _1wire_id_t &id) noexcept']]], + ['_5f1wire_5fuart_2eh',['_1wire_uart.h',['../__1wire__uart_8h.html',1,'']]], + ['_5f1wire_5fuart_5fi',['_1wire_uart_i',['../classutl_1_1__1wire__uart__i.html',1,'utl::_1wire_uart_i< Impl_t >'],['../classutl_1_1__1wire__uart__i.html#ae14ed1ce068d5601c5623c410a0dbc0c',1,'utl::_1wire_uart_i::_1wire_uart_i()'],['../classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html#a31bc4dbae704b77ab95b491605b6fa2e',1,'utl::_1wire_uart_i< virtual_tag >::_1wire_uart_i()']]], + ['_5f1wire_5fuart_5fi_3c_20virtual_5ftag_20_3e',['_1wire_uart_i< virtual_tag >',['../classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html',1,'utl']]], + ['_5f_5fbasic_5fcommon_5freference_5ft',['__basic_common_reference_t',['../namespaceutl_1_1common__impl.html#a3bbe5eb74a1c6017f60e3034519d69d6',1,'utl::common_impl']]], + ['_5f_5fcommon_5fref',['__common_ref',['../namespaceutl_1_1common__impl.html#a8913f9d610ed8720c817081662fa9f1f',1,'utl::common_impl']]], + ['_5f_5fcommon_5fref_5f',['__common_ref_',['../structutl_1_1common__impl_1_1____common__ref__.html',1,'utl::common_impl']]], + ['_5f_5fcommon_5fref_5f_3c_20t_20_26_26_2c_20u_20_26_26_2c_20meta_3a_3avoid_5ft_3c_20_5f_5fcommon_5fref_3c_20t_20_26_2c_20u_20_26_20_3e_2c_20meta_3a_3awhen_3c_20convertibleto_3c_20t_20_26_26_2c_20_5f_5frref_5fres_3c_20t_2c_20u_20_3e_20_3e_20_3e_2c_20meta_3a_3awhen_3c_20convertibleto_3c_20u_20_26_26_2c_20_5f_5frref_5fres_3c_20t_2c_20u_20_3e_20_3e_20_3e_20_3e_20_3e',['__common_ref_< T &&, U &&, meta::void_t< __common_ref< T &, U & >, meta::when< ConvertibleTo< T &&, __rref_res< T, U > > >, meta::when< ConvertibleTo< U &&, __rref_res< T, U > > > > >',['../structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_6_00_01meta_1_1void__tc4e71c227f251cadf0e0fb7b1ba6f1e9.html',1,'utl::common_impl']]], + ['_5f_5fcommon_5fref_5f_3c_20t_20_26_26_2c_20u_20_26_2c_20meta_3a_3avoid_5ft_3c_20_5f_5fcommon_5fref_3c_20const_20t_20_26_2c_20u_20_26_20_3e_2c_20meta_3a_3awhen_3c_20convertibleto_3c_20t_20_26_26_2c_20_5f_5fcommon_5fref_3c_20const_20t_20_26_2c_20u_20_26_20_3e_20_3e_20_3e_20_3e_20_3e',['__common_ref_< T &&, U &, meta::void_t< __common_ref< const T &, U & >, meta::when< ConvertibleTo< T &&, __common_ref< const T &, U & > > > > >',['../structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_00_01meta_1_1void__t_3972a8d6e6799b6ee6537c969cdced343.html',1,'utl::common_impl']]], + ['_5f_5fcommon_5fref_5f_3c_20t_20_26_2c_20u_20_26_26_2c_20meta_3a_3avoid_5ft_3c_20_5f_5fcommon_5fref_3c_20t_20_26_2c_20const_20u_20_26_20_3e_2c_20meta_3a_3awhen_3c_20convertibleto_3c_20u_20_26_26_2c_20_5f_5fcommon_5fref_3c_20t_20_26_2c_20const_20u_20_26_20_3e_20_3e_20_3e_20_3e_20_3e',['__common_ref_< T &, U &&, meta::void_t< __common_ref< T &, const U & >, meta::when< ConvertibleTo< U &&, __common_ref< T &, const U & > > > > >',['../structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_6_00_01meta_1_1void__t_329fba5aeac3b93aa9cfa5aa7e282e196.html',1,'utl::common_impl']]], + ['_5f_5fcommon_5fref_5f_3c_20t_20_26_2c_20u_20_26_2c_20meta_3a_3avoid_5ft_3c_20_5f_5flref_5fres_3c_20t_2c_20u_20_3e_2c_20meta_3a_3awhen_3c_20std_3a_3ais_5freference_3c_20_5f_5flref_5fres_3c_20t_2c_20u_20_3e_20_3e_3a_3avalue_20_3e_20_3e_20_3e',['__common_ref_< T &, U &, meta::void_t< __lref_res< T, U >, meta::when< std::is_reference< __lref_res< T, U > >::value > > >',['../structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_00_01meta_1_1void__t_3_05e5aa384829bb34312a7b8ee4ecaa00f.html',1,'utl::common_impl']]], + ['_5f_5fcommon_5freference',['__common_reference',['../structutl_1_1common__impl_1_1____common__reference.html',1,'utl::common_impl']]], + ['_5f_5fcommon_5freference2',['__common_reference2',['../structutl_1_1common__impl_1_1____common__reference2.html',1,'utl::common_impl']]], + ['_5f_5fcommon_5freference2_3c_20t_2c_20u_20_3e',['__common_reference2< T, U >',['../structutl_1_1common__impl_1_1____common__reference2.html',1,'utl::common_impl']]], + ['_5f_5fcommon_5freference2_3c_20t_2c_20u_2c_20meta_3a_3avoid_5ft_3c_20_5f_5fbasic_5fcommon_5freference_5ft_3c_20t_2c_20u_20_3e_20_3e_20_3e',['__common_reference2< T, U, meta::void_t< __basic_common_reference_t< T, U > > >',['../structutl_1_1common__impl_1_1____common__reference2_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____785d0aa2f8a62416e19573fcbdd83836.html',1,'utl::common_impl']]], + ['_5f_5fcommon_5freference3',['__common_reference3',['../structutl_1_1common__impl_1_1____common__reference3.html',1,'utl::common_impl']]], + ['_5f_5fcommon_5freference3_3c_20t_2c_20u_20_3e',['__common_reference3< T, U >',['../structutl_1_1common__impl_1_1____common__reference3.html',1,'utl::common_impl']]], + ['_5f_5fcommon_5freference3_3c_20t_2c_20u_2c_20meta_3a_3avoid_5ft_3c_20_5f_5fcond_5fres_3c_20t_2c_20u_20_3e_20_3e_20_3e',['__common_reference3< T, U, meta::void_t< __cond_res< T, U > > >',['../structutl_1_1common__impl_1_1____common__reference3_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____015b01ed12d2d90ee57fbf756ab847e9.html',1,'utl::common_impl']]], + ['_5f_5fcommon_5freference_3c_20t_2c_20u_20_3e',['__common_reference< T, U >',['../structutl_1_1common__impl_1_1____common__reference.html',1,'utl::common_impl']]], + ['_5f_5fcommon_5freference_3c_20t_2c_20u_2c_20meta_3a_3awhen_3c_20std_3a_3ais_5freference_3c_20t_20_3e_3a_3avalue_20_26_26std_3a_3ais_5freference_3c_20u_20_3e_3a_3avalue_20_3e_20_3e',['__common_reference< T, U, meta::when< std::is_reference< T >::value &&std::is_reference< U >::value > >',['../structutl_1_1common__impl_1_1____common__reference_3_01_t_00_01_u_00_01meta_1_1when_3_01std_1_1i23b95b4b3a65ce598dbcc7f52e9dab2c.html',1,'utl::common_impl']]], + ['_5f_5fcond_5fres',['__cond_res',['../namespaceutl_1_1common__impl.html#ab43a461d352a35dc1b3de39bfe17e38b',1,'utl::common_impl']]], + ['_5f_5fcopy_5fcv',['__copy_cv',['../namespaceutl_1_1common__impl.html#aed700217ef1518692242c1059f3dff27',1,'utl::common_impl']]], + ['_5f_5fcopy_5fcv_5f',['__copy_cv_',['../structutl_1_1common__impl_1_1____copy__cv__.html',1,'utl::common_impl']]], + ['_5f_5fcopy_5fcv_5f_3c_20const_20from_20_3e',['__copy_cv_< const From >',['../structutl_1_1common__impl_1_1____copy__cv___3_01const_01_from_01_4.html',1,'utl::common_impl']]], + ['_5f_5fcopy_5fcv_5f_3c_20const_20volatile_20from_20_3e',['__copy_cv_< const volatile From >',['../structutl_1_1common__impl_1_1____copy__cv___3_01const_01volatile_01_from_01_4.html',1,'utl::common_impl']]], + ['_5f_5fcopy_5fcv_5f_3c_20volatile_20from_20_3e',['__copy_cv_< volatile From >',['../structutl_1_1common__impl_1_1____copy__cv___3_01volatile_01_from_01_4.html',1,'utl::common_impl']]], + ['_5f_5fcref',['__cref',['../namespaceutl_1_1common__impl.html#a3d7922723a5d41f399f3c8a99e016e73',1,'utl::common_impl']]], + ['_5f_5flref_5fres',['__lref_res',['../namespaceutl_1_1common__impl.html#ae2f3d56c7e5144e099cdf37b19523290',1,'utl::common_impl']]], + ['_5f_5frref_5fres',['__rref_res',['../namespaceutl_1_1common__impl.html#a312c9f3e740103f831a49624097948f5',1,'utl::common_impl']]], + ['_5f_5futl_5fconsepts_5fconcepts_5fh_5f_5f',['__utl_consepts_concepts_h__',['../concepts_8h.html#a3488adf4d9de8aadb0085e63c5bcc471',1,'concepts.h']]], + ['_5f_5fxref',['__xref',['../structutl_1_1common__impl_1_1____xref.html',1,'utl::common_impl']]], + ['_5f_5fxref_3c_20const_20t_20_3e',['__xref< const T >',['../structutl_1_1common__impl_1_1____xref_3_01const_01_t_01_4.html',1,'utl::common_impl']]], + ['_5f_5fxref_3c_20const_20volatile_20t_20_3e',['__xref< const volatile T >',['../structutl_1_1common__impl_1_1____xref_3_01const_01volatile_01_t_01_4.html',1,'utl::common_impl']]], + ['_5f_5fxref_3c_20t_20_26_20_3e',['__xref< T & >',['../structutl_1_1common__impl_1_1____xref_3_01_t_01_6_01_4.html',1,'utl::common_impl']]], + ['_5f_5fxref_3c_20t_20_26_26_20_3e',['__xref< T && >',['../structutl_1_1common__impl_1_1____xref_3_01_t_01_6_6_01_4.html',1,'utl::common_impl']]], + ['_5f_5fxref_3c_20volatile_20t_20_3e',['__xref< volatile T >',['../structutl_1_1common__impl_1_1____xref_3_01volatile_01_t_01_4.html',1,'utl::common_impl']]], + ['_5fadd_5fpointer',['_add_pointer',['../structutl_1_1meta_1_1at__impl_1_1__add__pointer.html',1,'utl::meta::at_impl']]], + ['_5fand_5f',['_and_',['../structutl_1_1meta_1_1detail_1_1__and__.html',1,'utl::meta::detail']]], + ['_5fand_5f_3c_20_5ft1_20_3e',['_and_< _T1 >',['../structutl_1_1meta_1_1detail_1_1__and___3_01___t1_01_4.html',1,'utl::meta::detail']]], + ['_5fand_5f_3c_20_5ft1_2c_20_5ft2_20_3e',['_and_< _T1, _T2 >',['../structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_01_4.html',1,'utl::meta::detail']]], + ['_5fand_5f_3c_20_5ft1_2c_20_5ft2_2c_20_5ft3_2c_20_5ftn_2e_2e_2e_20_3e',['_and_< _T1, _T2, _T3, _Tn... >',['../structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4.html',1,'utl::meta::detail']]], + ['_5fand_5f_3c_3e',['_and_<>',['../structutl_1_1meta_1_1detail_1_1__and___3_4.html',1,'utl::meta::detail']]], + ['_5fclock',['_clock',['../classutl_1_1i2c__i.html#aefdea61282b9282ae10384951bb4ea51',1,'utl::i2c_i::_clock() const'],['../classutl_1_1i2c__i.html#afa0b1552f8fc7c971456fab1ad01242d',1,'utl::i2c_i::_clock(uint32_t c)'],['../classutl_1_1i2c__i_3_01virtual__tag_01_4.html#a1330a9b26f8e0610c7453e367d054916',1,'utl::i2c_i< virtual_tag >::_clock() const =0'],['../classutl_1_1i2c__i_3_01virtual__tag_01_4.html#aa97b4559550430d59b33474fd504f2b8',1,'utl::i2c_i< virtual_tag >::_clock(uint32_t)=0'],['../classutl_1_1i2c__bb__i.html#a1f491d6ccadce71fa6cc59eebc74e82f',1,'utl::i2c_bb_i::_clock() const'],['../classutl_1_1i2c__bb__i.html#aef4db6e89447b2f0921df5b291b86232',1,'utl::i2c_bb_i::_clock(uint32_t c)'],['../classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html#a0e05ef5f042a1642c9920dd5d7da34b4',1,'utl::i2c_bb_i< virtual_tag >::_clock() const final'],['../classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html#a47e0f23aa64714a0a95c579994a84fcc',1,'utl::i2c_bb_i< virtual_tag >::_clock(uint32_t c) final'],['../classutl_1_1spi__i.html#a68a21ac9727eed3802ce7d1181ac4f8c',1,'utl::spi_i::_clock() const'],['../classutl_1_1spi__i.html#af0a9bfc5d02ccd2bfbe8044132884578',1,'utl::spi_i::_clock(uint32_t c)'],['../classutl_1_1spi__i_3_01virtual__tag_01_4.html#a22c698e49599e92b8cb81501ab02be29',1,'utl::spi_i< virtual_tag >::_clock() const =0'],['../classutl_1_1spi__i_3_01virtual__tag_01_4.html#a2d4ffbfc2768077a6046f64288db83b4',1,'utl::spi_i< virtual_tag >::_clock(uint32_t)=0'],['../classutl_1_1spi__bb__i.html#a4338d3dc65ebe3aff1ec08d0413b3440',1,'utl::spi_bb_i::_clock() const'],['../classutl_1_1spi__bb__i.html#a90960d777886658afd42243743b3f61a',1,'utl::spi_bb_i::_clock(uint32_t c)'],['../classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#a255b1bf9e7f74140a20e4a3d8b26c181',1,'utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::_clock() const final'],['../classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#ac69aac0298266d8bb8b912f763013433',1,'utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::_clock(uint32_t c) final']]], + ['_5fcrtp_5fimpl',['_CRTP_IMPL',['../classutl_1_1__1wire__i.html#ad8858b769d4cd8da78e1cb4669992da2',1,'utl::_1wire_i::_CRTP_IMPL()'],['../classutl_1_1__1wire__uart__i.html#a95ab6c8cc60417090b2cc4e5afc62e77',1,'utl::_1wire_uart_i::_CRTP_IMPL()'],['../classutl_1_1i2c__i.html#a054b6bc43f22e14d4e9feb0772f7ada5',1,'utl::i2c_i::_CRTP_IMPL()'],['../classutl_1_1i2c__bb__i.html#a5c9f28c59f87ebb8a937abb039e11150',1,'utl::i2c_bb_i::_CRTP_IMPL()'],['../classutl_1_1spi__i.html#adfab771b0e399b9f482e42aaa5e9db11',1,'utl::spi_i::_CRTP_IMPL()'],['../classutl_1_1spi__bb__i.html#a33b6ef2f4c26b16ee4e28425ab20e852',1,'utl::spi_bb_i::_CRTP_IMPL()'],['../classutl_1_1idx__dev.html#a814222014cab41a11fa8b2040e50310d',1,'utl::idx_dev::_CRTP_IMPL()'],['../classutl_1_1in__dev.html#a370913d250e982328560b034adf227c0',1,'utl::in_dev::_CRTP_IMPL()'],['../classutl_1_1inbuf__dev.html#a6fe2f35813f2b4e94d8d21a4403c8221',1,'utl::inbuf_dev::_CRTP_IMPL()'],['../classutl_1_1ostream__dev.html#af993acec883f07fcd4ac9905eaa6f127',1,'utl::ostream_dev::_CRTP_IMPL()'],['../classutl_1_1out__dev.html#aad8c005ab9627877ea38997cdf5f07dc',1,'utl::out_dev::_CRTP_IMPL()'],['../crtp_8h.html#a716d91dbf95e7d113f133e1f3e6da852',1,'_CRTP_IMPL(): crtp.h']]], + ['_5fdata',['_data',['../structutl_1_1array.html#a3c49a8073abb7072f4b902982789dedc',1,'utl::array::_data()'],['../structutl_1_1id__t.html#af45f6388a067b5e34f5c82c1ac2b32b6',1,'utl::id_t::_data()']]], + ['_5ffirst',['_first',['../classutl_1_1__1wire__i.html#a05f0872f43d7b305269904d1522fa437',1,'utl::_1wire_i::_first()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a05f0872f43d7b305269904d1522fa437',1,'utl::_1wire_i< virtual_tag >::_first()'],['../namespaceutl_1_1__1wire__i__det.html#a237719ffa105f988cb175d6720712a4a',1,'utl::_1wire_i_det::_first()']]], + ['_5fget',['_get',['../classutl_1_1istreamdev__it.html#a7113ff596929f1f7346379e9918693cf',1,'utl::istreamdev_it']]], + ['_5fmatch',['_match',['../classutl_1_1__1wire__i.html#a6deca63bf5935ba3c3aa07f6ca23e33a',1,'utl::_1wire_i::_match()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a6deca63bf5935ba3c3aa07f6ca23e33a',1,'utl::_1wire_i< virtual_tag >::_match()'],['../namespaceutl_1_1__1wire__i__det.html#a1b07e623a39ce82f1514846169f3a954',1,'utl::_1wire_i_det::_match()']]], + ['_5fmatch_5fn_5fovdr',['_match_n_ovdr',['../classutl_1_1__1wire__i.html#a6b70d3457970aa791dd68e20800b6d0d',1,'utl::_1wire_i::_match_n_ovdr()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a6b70d3457970aa791dd68e20800b6d0d',1,'utl::_1wire_i< virtual_tag >::_match_n_ovdr()'],['../namespaceutl_1_1__1wire__i__det.html#a1e14f734d5e232c914be6ea97982aa40',1,'utl::_1wire_i_det::_match_n_ovdr()']]], + ['_5fnext',['_next',['../classutl_1_1__1wire__i.html#af9a6a28b49cd3f51736f7c1f8e67327a',1,'utl::_1wire_i::_next()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#af9a6a28b49cd3f51736f7c1f8e67327a',1,'utl::_1wire_i< virtual_tag >::_next()'],['../namespaceutl_1_1__1wire__i__det.html#a1f7b692a40769ebe59343613b147e01d',1,'utl::_1wire_i_det::_next()']]], + ['_5for_5f',['_or_',['../structutl_1_1meta_1_1detail_1_1__or__.html',1,'utl::meta::detail']]], + ['_5for_5f_3c_20_5ft1_20_3e',['_or_< _T1 >',['../structutl_1_1meta_1_1detail_1_1__or___3_01___t1_01_4.html',1,'utl::meta::detail']]], + ['_5for_5f_3c_20_5ft1_2c_20_5ft2_20_3e',['_or_< _T1, _T2 >',['../structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_01_4.html',1,'utl::meta::detail']]], + ['_5for_5f_3c_20_5ft1_2c_20_5ft2_2c_20_5ft3_2c_20_5ftn_2e_2e_2e_20_3e',['_or_< _T1, _T2, _T3, _Tn... >',['../structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4.html',1,'utl::meta::detail']]], + ['_5for_5f_3c_3e',['_or_<>',['../structutl_1_1meta_1_1detail_1_1__or___3_4.html',1,'utl::meta::detail']]], + ['_5fref_5ft',['_ref_t',['../namespaceutl.html#aa3f95fc48a94b2fae3c2959b7c024998',1,'utl']]], + ['_5freset',['_reset',['../classutl_1_1__1wire__i.html#a39d0afaf58820696acad93cf98a6b321',1,'utl::_1wire_i::_reset()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#ac4d99e65e5b307a85fe5e3c68cc46367',1,'utl::_1wire_i< virtual_tag >::_reset()'],['../classutl_1_1__1wire__uart__i.html#ad40f5180bddd8cd5a55e77f2bfa66ac1',1,'utl::_1wire_uart_i::_reset()'],['../classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html#a89c68d8e05df326e3c2b79c454b188af',1,'utl::_1wire_uart_i< virtual_tag >::_reset()']]], + ['_5frx_5fdata',['_rx_data',['../classutl_1_1i2c__i.html#a03a25367cdec7ceb76f8de9d5b3145fb',1,'utl::i2c_i::_rx_data()'],['../classutl_1_1i2c__i_3_01virtual__tag_01_4.html#a36b41f12c6dcc618ca1a95d079fcc077',1,'utl::i2c_i< virtual_tag >::_rx_data()'],['../classutl_1_1i2c__bb__i.html#a3a459ded18fe55460ae438e312c22110',1,'utl::i2c_bb_i::_rx_data()'],['../classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html#abb3eda6549482ff538f2b536d67752ed',1,'utl::i2c_bb_i< virtual_tag >::_rx_data()']]], + ['_5fskip',['_skip',['../classutl_1_1__1wire__i.html#a9041b1220dfa52b4f4b161b718c3d33a',1,'utl::_1wire_i::_skip()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a9041b1220dfa52b4f4b161b718c3d33a',1,'utl::_1wire_i< virtual_tag >::_skip()'],['../namespaceutl_1_1__1wire__i__det.html#a9ea80f4ef2422a7fd71788c42b228053',1,'utl::_1wire_i_det::_skip()']]], + ['_5fskip_5fn_5fovdr',['_skip_n_ovdr',['../classutl_1_1__1wire__i.html#af4dfbd90b0d5606f1f2e515d38a43d66',1,'utl::_1wire_i::_skip_n_ovdr()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#af4dfbd90b0d5606f1f2e515d38a43d66',1,'utl::_1wire_i< virtual_tag >::_skip_n_ovdr()'],['../namespaceutl_1_1__1wire__i__det.html#ace224a4d329166bfd9f3448e492baf2b',1,'utl::_1wire_i_det::_skip_n_ovdr()']]], + ['_5fspeed',['_speed',['../classutl_1_1__1wire__uart__i.html#a14e342fac3c10b66d82d154f47b9db26',1,'utl::_1wire_uart_i::_speed()'],['../classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html#a0c17e9b5d4e7b240d4bfc9f3cdd5c928',1,'utl::_1wire_uart_i< virtual_tag >::_speed()']]], + ['_5fstart',['_start',['../classutl_1_1i2c__i.html#af060d656c685c1ab5dd6981c5c88b26d',1,'utl::i2c_i::_start()'],['../classutl_1_1i2c__i_3_01virtual__tag_01_4.html#adbe5ffa6865fbee06699674d8e16bc30',1,'utl::i2c_i< virtual_tag >::_start()'],['../classutl_1_1i2c__bb__i.html#a2f4df606609ef7465109990d9fc0f1da',1,'utl::i2c_bb_i::_start()'],['../classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html#acf1d49b23e9c7b1c42cd43296b8b171c',1,'utl::i2c_bb_i< virtual_tag >::_start()']]], + ['_5fstop',['_stop',['../classutl_1_1i2c__i.html#aa6202c6c7c1282071ae962fa6bb0f195',1,'utl::i2c_i::_stop()'],['../classutl_1_1i2c__i_3_01virtual__tag_01_4.html#a588fd9b206af6b3884b957ef449a65ec',1,'utl::i2c_i< virtual_tag >::_stop()'],['../classutl_1_1i2c__bb__i.html#ade9235a9d8ccfd7233494631d66ba07e',1,'utl::i2c_bb_i::_stop()'],['../classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html#acee317f97c201b10680c89ed1a64f694',1,'utl::i2c_bb_i< virtual_tag >::_stop()']]], + ['_5ftouch',['_touch',['../classutl_1_1__1wire__i.html#aedee6f129425833a172784ec3c6e21e9',1,'utl::_1wire_i::_touch()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#aedee6f129425833a172784ec3c6e21e9',1,'utl::_1wire_i< virtual_tag >::_touch()'],['../namespaceutl_1_1__1wire__i__det.html#a85a3a19778edb037f6341f37135a5494',1,'utl::_1wire_i_det::_touch()']]], + ['_5ftx_5fdata',['_tx_data',['../classutl_1_1i2c__i.html#ae2b164d2c085d5331b627ba711bbb2c9',1,'utl::i2c_i::_tx_data()'],['../classutl_1_1i2c__i_3_01virtual__tag_01_4.html#ad180436ec10c84568d6d73fa945efb64',1,'utl::i2c_i< virtual_tag >::_tx_data()'],['../classutl_1_1i2c__bb__i.html#a085e38e545049ac64cd745b08e0be18f',1,'utl::i2c_bb_i::_tx_data()'],['../classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html#abbc42b60004046048a2ac6fd312188a6',1,'utl::i2c_bb_i< virtual_tag >::_tx_data()'],['../classutl_1_1spi__i.html#acf3ffd9c79d4cdeac100cf3273120689',1,'utl::spi_i::_tx_data()'],['../classutl_1_1spi__i_3_01virtual__tag_01_4.html#a695bdae103b072a03e7ffc0fda2f5971',1,'utl::spi_i< virtual_tag >::_tx_data()'],['../classutl_1_1spi__bb__i.html#a7431ab56033d58e34ee847d825c99658',1,'utl::spi_bb_i::_tx_data()'],['../classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#a2f16bf0d9f6e0eb3045923b416e57e0c',1,'utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::_tx_data()']]], + ['_5ftx_5fdata_5fimpl',['_tx_data_impl',['../classutl_1_1spi__bb__i.html#a9010a066edb4cfa4c549174c87eaf368',1,'utl::spi_bb_i::_tx_data_impl(byte_t out)'],['../classutl_1_1spi__bb__i.html#a8e00f788f8ef1a31dfd3b1ca130aa16d',1,'utl::spi_bb_i::_tx_data_impl(byte_t out)'],['../classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#a5875448dd9fdff7f8f59ef84efdb69b1',1,'utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::_tx_data_impl(byte_t out)'],['../classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#ad11610099072289c1f71dd7aab684905',1,'utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::_tx_data_impl(byte_t out)']]], + ['_5futlconcept',['_utlConcept',['../group__concepts.html#gaf81026787698cd63592563ab8223062b',1,'defines.h']]] +]; diff --git a/doc/html/search/all_1.html b/doc/html/search/all_1.html new file mode 100644 index 0000000..b8ff871 --- /dev/null +++ b/doc/html/search/all_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/all_1.js b/doc/html/search/all_1.js new file mode 100644 index 0000000..1c18c36 --- /dev/null +++ b/doc/html/search/all_1.js @@ -0,0 +1,29 @@ +var searchData= +[ + ['accumulate',['accumulate',['../namespaceutl_1_1meta.html#aeb5cb48e804cd160b39f8c3ed2967c37',1,'utl::meta']]], + ['ack',['ACK',['../classutl_1_1i2c__i.html#a7e2dde443c6c9bde4a2293beb22950c5a0fc437bc317835cad5faafc12a83fad5',1,'utl::i2c_i::ACK()'],['../classutl_1_1i2c__i_3_01virtual__tag_01_4.html#a260541de452a9a653162b8b109b26c09a0fc437bc317835cad5faafc12a83fad5',1,'utl::i2c_i< virtual_tag >::ACK()']]], + ['add',['add',['../namespaceutl_1_1meta.html#a559ad95ef39fd2c81664bd1a22dd99c1',1,'utl::meta']]], + ['add_5fpointer',['add_pointer',['../namespaceutl_1_1meta_1_1at__impl.html#a1759f370bc952ff21077efca9fe0e0b4',1,'utl::meta::at_impl']]], + ['alignof_5f',['alignof_',['../namespaceutl_1_1meta.html#afacfb1fb855b9a9a0c8a2a625a2a9bd2',1,'utl::meta']]], + ['all_5fof',['all_of',['../namespaceutl_1_1meta.html#ace96e2f19376375cc71ee0cd80f4bb75',1,'utl::meta']]], + ['and_5f',['and_',['../group__integral.html#ga8e82f4758321e0e0b3705607f7d8e068',1,'utl::meta']]], + ['any_5fof',['any_of',['../namespaceutl_1_1meta.html#a212c26a29491610187f6e8543f06df5f',1,'utl::meta']]], + ['apply',['apply',['../structutl_1_1meta_1_1same__as_1_1apply.html',1,'utl::meta::same_as< T1 >::apply< T2 >'],['../structutl_1_1meta_1_1not__same__as_1_1apply.html',1,'utl::meta::not_same_as< T1 >::apply< T2 >'],['../structutl_1_1common__impl_1_1____copy__cv__.html#aab9e00c637c2bbbdb6d1398aca8e3f96',1,'utl::common_impl::__copy_cv_::apply()'],['../structutl_1_1common__impl_1_1____copy__cv___3_01const_01_from_01_4.html#a6dfb1b1162563a05f62a004de401367e',1,'utl::common_impl::__copy_cv_< const From >::apply()'],['../structutl_1_1common__impl_1_1____copy__cv___3_01volatile_01_from_01_4.html#a1066914bb7b2d20c25f9f6b953f40edd',1,'utl::common_impl::__copy_cv_< volatile From >::apply()'],['../structutl_1_1common__impl_1_1____copy__cv___3_01const_01volatile_01_from_01_4.html#a3b90863f9819b9537789a30ab6863aca',1,'utl::common_impl::__copy_cv_< const volatile From >::apply()'],['../structutl_1_1common__impl_1_1____xref.html#a032704fe2160d375719ade17fd93f91b',1,'utl::common_impl::__xref::apply()'],['../structutl_1_1common__impl_1_1____xref_3_01const_01_t_01_4.html#aa0c18f8f497297768174b0d272209f4c',1,'utl::common_impl::__xref< const T >::apply()'],['../structutl_1_1common__impl_1_1____xref_3_01volatile_01_t_01_4.html#affd4de84c60ada7d645b9f4d66f17b25',1,'utl::common_impl::__xref< volatile T >::apply()'],['../structutl_1_1common__impl_1_1____xref_3_01const_01volatile_01_t_01_4.html#a298403b8085c58e3f18d61877f2186a5',1,'utl::common_impl::__xref< const volatile T >::apply()'],['../structutl_1_1common__impl_1_1____xref_3_01_t_01_6_01_4.html#a45952ba243315d71be48069faeb0aff0',1,'utl::common_impl::__xref< T & >::apply()'],['../structutl_1_1common__impl_1_1____xref_3_01_t_01_6_6_01_4.html#ab2e3a215cd9be370de57febb6cc290ec',1,'utl::common_impl::__xref< T && >::apply()'],['../structutl_1_1meta_1_1identity.html#ab13e3134ffe9c6fabb22f67d7b87b2dd',1,'utl::meta::identity::apply()'],['../structutl_1_1meta_1_1wrap.html#a71fe22d6a841f27b891ca3344ee97b07',1,'utl::meta::wrap::apply()'],['../structutl_1_1meta_1_1wrap__i.html#a14e7ddd17abbcecf2658a3dd4616e0d2',1,'utl::meta::wrap_i::apply()'],['../structutl_1_1meta_1_1quote.html#a7741173cf865291c89d374c2fac0d17e',1,'utl::meta::quote::apply()'],['../structutl_1_1meta_1_1quote__i.html#a32099809fbac1c620ad3993e8ab1b8c0',1,'utl::meta::quote_i::apply()'],['../structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_00_01_fns_8_8_8_01_4.html#af08d514072a8e41dd5f105de46262142',1,'utl::meta::detail::compose_f_< Fn0, Fns... >::apply()'],['../structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_01_4.html#a287c03e3a63511803b68d39c4c06927b',1,'utl::meta::detail::compose_f_< Fn0 >::apply()'],['../structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_00_01_fns_8_8_8_01_4.html#ad26c783fae3d45b81dd443293886206b',1,'utl::meta::detail::compose_< Fn0, Fns... >::apply()'],['../structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_01_4.html#aafd319bda715a126343256f18b823f97',1,'utl::meta::detail::compose_< Fn0 >::apply()'],['../structutl_1_1meta_1_1bind__front.html#a4247cb2b0a19e3168161dead529c532c',1,'utl::meta::bind_front::apply()'],['../structutl_1_1meta_1_1bind__back.html#a2f8a5ad9fd3b9e5ed79ace2c18d1ec9a',1,'utl::meta::bind_back::apply()'],['../namespaceutl_1_1meta.html#a3f684549221fac60bc8c7979cb4b98f4',1,'utl::meta::apply()']]], + ['apply_5f',['apply_',['../structutl_1_1meta_1_1apply__impl_1_1apply__.html',1,'utl::meta::apply_impl']]], + ['apply_5f_3c_20fn_2c_20integer_5fsequence_3c_20t_2c_20is_2e_2e_2e_20_3e_20_3e',['apply_< Fn, integer_sequence< T, Is... > >',['../structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01integer__sequence_3_01_t_00_01_is_8_8_8_01_4_01_4.html',1,'utl::meta::apply_impl']]], + ['apply_5f_3c_20fn_2c_20typelist_3c_20list_2e_2e_2e_20_3e_20_3e',['apply_< Fn, typelist< List... > >',['../structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01typelist_3_01_list_8_8_8_01_4_01_4.html',1,'utl::meta::apply_impl']]], + ['apply_5ft',['apply_t',['../namespaceutl_1_1meta.html#ac2952cd4ed04938edc6de21ffe200e9b',1,'utl::meta']]], + ['arithmetic',['Arithmetic',['../namespaceutl.html#a41733496c30138efd3d88f13d9382aad',1,'utl']]], + ['array',['array',['../structutl_1_1array.html',1,'utl']]], + ['array_2eh',['array.h',['../array_8h.html',1,'']]], + ['array_5ft',['array_t',['../structutl_1_1array.html#ae479687ad5c7259e5258c093bda99c89',1,'utl::array']]], + ['array_5ftraits',['array_traits',['../structutl_1_1array__traits.html',1,'utl']]], + ['array_5ftraits_3c_20_5ftp_2c_200_20_3e',['array_traits< _Tp, 0 >',['../structutl_1_1array__traits_3_01___tp_00_010_01_4.html',1,'utl']]], + ['assignable',['Assignable',['../namespaceutl.html#acfbced82f83ceb87eeb77d31941c011a',1,'utl']]], + ['at',['at',['../structutl_1_1array.html#aa7ebc09a296077f0ee23919c92138801',1,'utl::array::at(size_type n) noexcept'],['../structutl_1_1array.html#a5525bc148cd57fdc41380593a9732ce7',1,'utl::array::at(size_type n) const noexcept'],['../structutl_1_1id__t.html#abb17fc36dd256093e265985e68e25f32',1,'utl::id_t::at(size_type n) noexcept'],['../structutl_1_1id__t.html#aa965355792d724f40260bce7d855aae7',1,'utl::id_t::at(size_type n) const noexcept'],['../namespaceutl_1_1meta.html#a67329ec425c857dcaf4cde9044674c90',1,'utl::meta::at()']]], + ['at_5f',['at_',['../structutl_1_1meta_1_1at__impl_1_1at__.html',1,'utl::meta::at_impl']]], + ['at_5f_3c_20typelist_3c_20list_2e_2e_2e_20_3e_2c_20n_20_3e',['at_< typelist< List... >, N >',['../structutl_1_1meta_1_1at__impl_1_1at___3_01typelist_3_01_list_8_8_8_01_4_00_01_n_01_4.html',1,'utl::meta::at_impl']]], + ['at_5fc',['at_c',['../namespaceutl_1_1meta.html#a6683b804a20d54817d61ce4663527084',1,'utl::meta']]], + ['at_5fhead_5f',['at_head_',['../structutl_1_1meta_1_1at__impl_1_1at__head__.html',1,'utl::meta::at_impl']]], + ['at_5fhead_5f_3c_20typelist_3c_20voids_2e_2e_2e_20_3e_20_3e',['at_head_< typelist< voids... > >',['../structutl_1_1meta_1_1at__impl_1_1at__head___3_01typelist_3_01voids_8_8_8_01_4_01_4.html',1,'utl::meta::at_impl']]] +]; diff --git a/doc/html/search/all_10.html b/doc/html/search/all_10.html new file mode 100644 index 0000000..50bc449 --- /dev/null +++ b/doc/html/search/all_10.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/all_10.js b/doc/html/search/all_10.js new file mode 100644 index 0000000..d1b8ff7 --- /dev/null +++ b/doc/html/search/all_10.js @@ -0,0 +1,31 @@ +var searchData= +[ + ['readme',['README',['../md__r_e_a_d_m_e.html',1,'']]], + ['random_5faccess_5fiterator_5ftag',['random_access_iterator_tag',['../structutl_1_1random__access__iterator__tag.html',1,'utl']]], + ['rbegin',['rbegin',['../structutl_1_1array.html#aeeca6bc1e57a142c30590d3c7dc134a5',1,'utl::array::rbegin() noexcept'],['../structutl_1_1array.html#a921a4f2e174c274f26189f89d38187ca',1,'utl::array::rbegin() const noexcept'],['../structutl_1_1id__t.html#a96ed68f02faf9800e93113bef1e30182',1,'utl::id_t::rbegin() noexcept'],['../structutl_1_1id__t.html#a52f0a2de4ae90137d40a645389a6ec53',1,'utl::id_t::rbegin() const noexcept']]], + ['readme_2emd',['README.md',['../_r_e_a_d_m_e_8md.html',1,'']]], + ['ref',['Ref',['../structutl_1_1array__traits.html#a7a759b20a4dc743a66c3b1729358f605',1,'utl::array_traits::Ref()'],['../structutl_1_1array__traits_3_01___tp_00_010_01_4.html#a3f90cb0fbb870fcc36fc6d404857032b',1,'utl::array_traits< _Tp, 0 >::Ref()'],['../structutl_1_1id__traits.html#adcca147b5e6dd495ce61272257867a13',1,'utl::id_traits::Ref()'],['../structutl_1_1id__traits_3_01___tp_00_010_01_4.html#a578c8ad9389e23cfb3322ebe67875f4c',1,'utl::id_traits< _Tp, 0 >::Ref()']]], + ['reference',['reference',['../structutl_1_1array.html#a054dd1ab28d43ec0676dbe2056f63cf4',1,'utl::array::reference()'],['../structutl_1_1id__t.html#a7c0de57bc3065501a953f4811bd9e183',1,'utl::id_t::reference()'],['../structutl_1_1dev__iterator__traits.html#a2747e8f629aaaa8a47ac8d3cd9527fad',1,'utl::dev_iterator_traits::reference()'],['../classutl_1_1ostreamdev__it.html#abda00e5d526b4f670b4bcae2a0ec65e2',1,'utl::ostreamdev_it::reference()'],['../classutl_1_1istreamdev__it.html#a824851507bcd0dbaf6e1f7c54dffccae',1,'utl::istreamdev_it::reference()'],['../classutl_1_1outdev__it.html#ac4fdabc0a410f1cd90e116f3df6806c6',1,'utl::outdev_it::reference()'],['../classutl_1_1indev__it.html#afd50b088dd181c3d74f9e150a5190c3a',1,'utl::indev_it::reference()'],['../classutl_1_1iodev__it.html#a44916c1157ea2d97aa7fe4ed89af6d19',1,'utl::iodev_it::reference()']]], + ['regular',['Regular',['../namespaceutl.html#a3accaa436a17248b4214baebc582b2f6',1,'utl']]], + ['regularinvocable',['RegularInvocable',['../namespaceutl.html#ace9ef6da96e8cf5dc72762cd66240186',1,'utl']]], + ['relation',['Relation',['../namespaceutl.html#a6d1e9b4853dd005ddaf61a79333cab98',1,'utl']]], + ['remove_5fcvref_5ft',['remove_cvref_t',['../namespaceutl.html#a7a9d26263662e02fbe3b238da5fd7338',1,'utl']]], + ['rend',['rend',['../structutl_1_1array.html#a322f008d90c279fc4170d3ae679d13ea',1,'utl::array::rend() noexcept'],['../structutl_1_1array.html#ac46fe45806b4328b6bed1fb1313818a2',1,'utl::array::rend() const noexcept'],['../structutl_1_1id__t.html#a14050fe2cdcdd4a524d5e3f46f9d51f9',1,'utl::id_t::rend() noexcept'],['../structutl_1_1id__t.html#ae04946523c0131b6fb73f1de369c2558',1,'utl::id_t::rend() const noexcept']]], + ['repeat',['repeat',['../namespaceutl_1_1meta.html#aa013c45afb59b5c132a72be54ba145fb',1,'utl::meta']]], + ['repeat_5fc',['repeat_c',['../namespaceutl_1_1meta.html#af6ff0017ea5e914543527b7135930f47',1,'utl::meta']]], + ['replace',['replace',['../namespaceutl_1_1meta.html#ac9d120f858ebfa2b0ef74c6305a9fb6d',1,'utl::meta']]], + ['replace_5fif',['replace_if',['../namespaceutl_1_1meta.html#a848a47bf281bf3eaf932cc9113477102',1,'utl::meta']]], + ['replace_5fif_5f',['replace_if_',['../structutl_1_1meta_1_1replace__if__impl_1_1replace__if__.html',1,'utl::meta::replace_if_impl']]], + ['replace_5fif_5f_3c_20typelist_3c_20head_2c_20tail_2e_2e_2e_20_3e_2c_20fn_2c_20t_2c_20ret_20_3e',['replace_if_< typelist< Head, Tail... >, Fn, T, Ret >',['../structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_01_head_00_01_tail_8_8_8_dfa8065a3617f53ecded260506092a07.html',1,'utl::meta::replace_if_impl']]], + ['replace_5fif_5f_3c_20typelist_3c_3e_2c_20fn_2c_20t_2c_20ret_20_3e',['replace_if_< typelist<>, Fn, T, Ret >',['../structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_4_00_01_fn_00_01_t_00_01_ret_01_4.html',1,'utl::meta::replace_if_impl']]], + ['reset',['reset',['../classutl_1_1__1wire__i.html#a0a7ef731162e81e0e2e07ae9cb9e6ffa',1,'utl::_1wire_i::reset()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a735ed5cb622a1478c57537c131ede7a7',1,'utl::_1wire_i< virtual_tag >::reset()']]], + ['rev_5ffold',['rev_fold',['../namespaceutl_1_1meta.html#ab1a91edef4cf9fd56b73c9a03eaeb3d4',1,'utl::meta']]], + ['rev_5ffold_5f',['rev_fold_',['../structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold__.html',1,'utl::meta::rev_fold_impl']]], + ['rev_5ffold_5f_3c_20typelist_3c_20head_2c_20tail_2e_2e_2e_20_3e_2c_20v_2c_20fn_20_3e',['rev_fold_< typelist< Head, Tail... >, V, Fn >',['../structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4.html',1,'utl::meta::rev_fold_impl']]], + ['rev_5ffold_5f_3c_20typelist_3c_20tail_20_3e_2c_20v_2c_20fn_20_3e',['rev_fold_< typelist< Tail >, V, Fn >',['../structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_tail_01_4_00_01_v_00_01_fn_01_4.html',1,'utl::meta::rev_fold_impl']]], + ['rev_5ffold_5f_3c_20typelist_3c_3e_2c_20v_2c_20fn_20_3e',['rev_fold_< typelist<>, V, Fn >',['../structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_4_00_01_v_00_01_fn_01_4.html',1,'utl::meta::rev_fold_impl']]], + ['reverse',['reverse',['../namespaceutl_1_1meta.html#a2ae6bfa22f1912b0ba09d24e0ae2ccd9',1,'utl::meta']]], + ['reverse_5f',['reverse_',['../structutl_1_1meta_1_1reverse__impl_1_1reverse__.html',1,'utl::meta::reverse_impl']]], + ['reverse_5fiterator',['reverse_iterator',['../structutl_1_1array.html#a777805d325ff4de41bdf0c81427a42d1',1,'utl::array::reverse_iterator()'],['../structutl_1_1id__t.html#a708f6a3b9b85d211f933bbe66db26a2b',1,'utl::id_t::reverse_iterator()']]], + ['rx_5fdata',['rx_data',['../classutl_1_1__1wire__i.html#a2585e7166d14b7f36bd47db2e43cc0b1',1,'utl::_1wire_i::rx_data(Speed s=Speed::STD)'],['../classutl_1_1__1wire__i.html#ad20382d5d50ee7d457bc4079b9c38a2a',1,'utl::_1wire_i::rx_data(byte_t *in, size_t n, Speed s=Speed::STD)'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a525b58c7a1110d39f1eb594f12edb16c',1,'utl::_1wire_i< virtual_tag >::rx_data(Speed s=Speed::STD)'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a5f3c707157c571d07a8a3d882900de95',1,'utl::_1wire_i< virtual_tag >::rx_data(byte_t *in, size_t n, Speed s=Speed::STD)'],['../classutl_1_1i2c__i.html#ab2f6a579096b4872f5dfd1530e200eda',1,'utl::i2c_i::rx_data()'],['../classutl_1_1i2c__i_3_01virtual__tag_01_4.html#a6dccb32f00830226f6782034177c7d8b',1,'utl::i2c_i< virtual_tag >::rx_data()'],['../classutl_1_1spi__i.html#a846dead32b91efcb48eed614daf68e8f',1,'utl::spi_i::rx_data()'],['../classutl_1_1spi__i.html#a2053009da5364ead720aebd7cc537c21',1,'utl::spi_i::rx_data(byte_t *in, size_t n)'],['../classutl_1_1spi__i_3_01virtual__tag_01_4.html#a8ccd44f6fa97bbfe8cda5595436eb3a7',1,'utl::spi_i< virtual_tag >::rx_data()'],['../classutl_1_1spi__i_3_01virtual__tag_01_4.html#a59245cc0d924d160268b6813975a7c5f',1,'utl::spi_i< virtual_tag >::rx_data(byte_t *in, size_t n)']]] +]; diff --git a/doc/html/search/all_11.html b/doc/html/search/all_11.html new file mode 100644 index 0000000..b35c8bf --- /dev/null +++ b/doc/html/search/all_11.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/all_11.js b/doc/html/search/all_11.js new file mode 100644 index 0000000..4f93c1e --- /dev/null +++ b/doc/html/search/all_11.js @@ -0,0 +1,56 @@ +var searchData= +[ + ['same',['Same',['../namespaceutl.html#af86da3571c3026c6bbd501c6b7bc5093',1,'utl']]], + ['same_5f',['same_',['../structutl_1_1meta_1_1same__.html',1,'utl::meta']]], + ['same_5f_3c_20_5ftp_2c_20_5ftp_20_3e',['same_< _Tp, _Tp >',['../structutl_1_1meta_1_1same___3_01___tp_00_01___tp_01_4.html',1,'utl::meta']]], + ['same_5f_3c_20t1_2c_20t2_20_3e',['same_< T1, T2 >',['../structutl_1_1meta_1_1same__.html',1,'utl::meta']]], + ['same_5fas',['same_as',['../structutl_1_1meta_1_1same__as.html',1,'utl::meta']]], + ['scalar',['Scalar',['../namespaceutl.html#a7f86c4bf42b13d9525481d731b194308',1,'utl']]], + ['scl',['SCL',['../classutl_1_1i2c__bb__i.html#a0c9f7d9fc10ac2ceaef93cb6daf8a699',1,'utl::i2c_bb_i::SCL()'],['../classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html#aca7b42f6339cbfbba4734d29f585cf2b',1,'utl::i2c_bb_i< virtual_tag >::SCL()']]], + ['sclk',['SCLK',['../classutl_1_1spi__bb__i.html#af7afcca54b5ab9871caccb38794bd9d1',1,'utl::spi_bb_i::SCLK()'],['../classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#aab4450d67ccbabe2b4724290118e3d3c',1,'utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::SCLK()']]], + ['sda',['SDA',['../classutl_1_1i2c__bb__i.html#aa197be76016b82fd6f8b66875430d922',1,'utl::i2c_bb_i::SDA()'],['../classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html#ae28d0cd65c9b3eedc65d3f0a68e47585',1,'utl::i2c_bb_i< virtual_tag >::SDA()']]], + ['sdamode',['SDAMode',['../classutl_1_1i2c__bb__i.html#a4369b434fde250d503bfdc07d5c6a26d',1,'utl::i2c_bb_i::SDAMode()'],['../classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html#af4bc7eeeb830e49046a1033e9c79db7f',1,'utl::i2c_bb_i< virtual_tag >::SDAMode()']]], + ['second_5fof',['second_of',['../group__type.html#ga422dd1b0895f0074ad9932d68d9edbc5',1,'utl::meta']]], + ['seek',['seek',['../namespaceutl_1_1meta.html#aa550d9dc96d34623af4ce71f8a1eaff5',1,'utl::meta']]], + ['seek_5fif',['seek_if',['../namespaceutl_1_1meta.html#ab8eafd75f3077a36c4e3363b742da64a',1,'utl::meta']]], + ['seek_5fif_5f',['seek_if_',['../structutl_1_1meta_1_1seek__if__impl_1_1seek__if__.html',1,'utl::meta::seek_if_impl']]], + ['seek_5fif_5f_3c_20typelist_3c_20head_2c_20tail_2e_2e_2e_20_3e_2c_20fn_2c_20n_20_3e',['seek_if_< typelist< Head, Tail... >, Fn, N >',['../structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.html',1,'utl::meta::seek_if_impl']]], + ['seek_5fif_5f_3c_20typelist_3c_3e_2c_20fn_2c_20n_20_3e',['seek_if_< typelist<>, Fn, N >',['../structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.html',1,'utl::meta::seek_if_impl']]], + ['select',['select',['../structutl_1_1meta_1_1at__impl_1_1at__head___3_01typelist_3_01voids_8_8_8_01_4_01_4.html#a6bab76042dcae821a961a0a4410c83ff',1,'utl::meta::at_impl::at_head_< typelist< voids... > >::select(voids..., T *,...)'],['../structutl_1_1meta_1_1at__impl_1_1at__head___3_01typelist_3_01voids_8_8_8_01_4_01_4.html#a139a326849d5869fbe877260ff3cff31',1,'utl::meta::at_impl::at_head_< typelist< voids... > >::select(...)']]], + ['selection_2eh',['selection.h',['../selection_8h.html',1,'']]], + ['semiregular',['Semiregular',['../namespaceutl.html#af6b010e85897cb590e66a52157be1af5',1,'utl']]], + ['sequence',['Sequence',['../classutl_1_1i2c__i.html#a7e2dde443c6c9bde4a2293beb22950c5',1,'utl::i2c_i::Sequence()'],['../classutl_1_1i2c__i_3_01virtual__tag_01_4.html#a260541de452a9a653162b8b109b26c09',1,'utl::i2c_i< virtual_tag >::Sequence()'],['../classutl_1_1i2c__bb__i.html#ad2872b7e17116f8379144488fe135052',1,'utl::i2c_bb_i::Sequence()'],['../classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html#af8c7ac3797343e39e7e052ec51aec232',1,'utl::i2c_bb_i< virtual_tag >::Sequence()']]], + ['sfinae',['Sfinae',['../group__sfinae.html',1,'']]], + ['sfinae_2eh',['sfinae.h',['../sfinae_8h.html',1,'']]], + ['shift',['shift',['../classutl_1_1spi__bb__i.html#a0d017c3bc5c583ad802027914e492b3a',1,'utl::spi_bb_i::shift(byte_t &b)'],['../classutl_1_1spi__bb__i.html#a93d43e3fa8e2112757281e0c20070eb4',1,'utl::spi_bb_i::shift(byte_t &b)'],['../classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#ab7b8568f6383ca83cc3b9c7a4bf14102',1,'utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::shift(byte_t &b)'],['../classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#a4de868a08bed878446e4fa026275cd23',1,'utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::shift(byte_t &b)']]], + ['shift_5fleft',['shift_left',['../namespaceutl_1_1meta.html#a63088c29ac25eefda4189721e662b391',1,'utl::meta']]], + ['shift_5fright',['shift_right',['../namespaceutl_1_1meta.html#acbe6dd78c4a4230e92acc5ca86e3fcc7',1,'utl::meta']]], + ['signedintegral',['SignedIntegral',['../namespaceutl.html#a667b758d906c466d1b8a878a45750bf1',1,'utl']]], + ['size',['size',['../structutl_1_1array.html#ab3fa3ca8c774c210a55dbd699ceb345b',1,'utl::array::size()'],['../structutl_1_1id__t.html#aff09cfb8c3d106dd24a7107f7c9a68f3',1,'utl::id_t::size()'],['../structutl_1_1meta_1_1typelist.html#af898a273ef1135286de6cef169db9c2d',1,'utl::meta::typelist::size()'],['../namespaceutl_1_1meta.html#a0edfc2c15e42531e53c0822264d220ec',1,'utl::meta::size()']]], + ['size_5f',['size_',['../namespaceutl_1_1meta.html#a249ac51f6613684164663bd22025fe9a',1,'utl::meta']]], + ['size_5ft',['size_t',['../namespaceutl.html#a22cbecb50ee5c1032de66133e96cbac6',1,'utl']]], + ['size_5ftype',['size_type',['../structutl_1_1array.html#aab1bf2f35917b742e5d79ddcab335ef5',1,'utl::array::size_type()'],['../structutl_1_1id__t.html#aa4bd898906751aa7d77fb78bcf6ee9bb',1,'utl::id_t::size_type()']]], + ['sizeof_5f',['sizeof_',['../namespaceutl_1_1meta.html#a3fdae1894a962a69828ccccf73088cce',1,'utl::meta']]], + ['skip',['skip',['../classutl_1_1__1wire__i.html#a0a405f818fd45eb2799e6b4477021a0a',1,'utl::_1wire_i::skip()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#ad480b5053884e51e8089cdc691017e4d',1,'utl::_1wire_i< virtual_tag >::skip()']]], + ['skip_5fn_5fovdr',['skip_n_ovdr',['../classutl_1_1__1wire__i.html#a8b0b0ea95c02a40721f1e159119b3506',1,'utl::_1wire_i::skip_n_ovdr()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a8d45e55f347c35e77ec55b905516f8fd',1,'utl::_1wire_i< virtual_tag >::skip_n_ovdr()']]], + ['speed',['speed',['../classutl_1_1__1wire__i.html#ae770650b54374721e04f96994385c570',1,'utl::_1wire_i::speed() const'],['../classutl_1_1__1wire__i.html#adc5c34170794ae99562211faea68a4a6',1,'utl::_1wire_i::speed(Speed s)'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a746fbec07300aeed8ebb75251bb4265a',1,'utl::_1wire_i< virtual_tag >::speed() const =0'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#af12694d7025474de1ff09270f0373080',1,'utl::_1wire_i< virtual_tag >::speed(Speed)=0'],['../classutl_1_1__1wire__uart__i.html#a1b807cfc2a67eee08efa48ef36b99f74',1,'utl::_1wire_uart_i::speed() const'],['../classutl_1_1__1wire__uart__i.html#aa56f7a1497c540397bebf008416118b6',1,'utl::_1wire_uart_i::speed(Speed s)'],['../classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html#aae5fc7143ee609cb5700d70140d2ab3e',1,'utl::_1wire_uart_i< virtual_tag >::speed() const'],['../classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html#afe3fead0d947a93b1f9e63bc934bb56c',1,'utl::_1wire_uart_i< virtual_tag >::speed(Speed s)'],['../classutl_1_1__1wire__i.html#a56bb736aa3620d7795b5914cac5f25cc',1,'utl::_1wire_i::Speed()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a2abb8c6344d17269c55ae0cba63ec512',1,'utl::_1wire_i< virtual_tag >::Speed()'],['../classutl_1_1__1wire__uart__i.html#acc4364e3aa029405a9b2b25e1fea83ac',1,'utl::_1wire_uart_i::Speed()'],['../classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html#a854a62c6f9e6d62597471b887c541e03',1,'utl::_1wire_uart_i< virtual_tag >::Speed()']]], + ['spi_2eh',['spi.h',['../spi_8h.html',1,'']]], + ['spi_5fbb_2eh',['spi_bb.h',['../spi__bb_8h.html',1,'']]], + ['spi_5fbb_5fi',['spi_bb_i',['../classutl_1_1spi__bb__i.html',1,'utl::spi_bb_i< impl_t, CPOL, CPHA, BitOrder >'],['../classutl_1_1spi__bb__i.html#a49a61ba9a8e140e45d73e1f634061c6a',1,'utl::spi_bb_i::spi_bb_i()'],['../classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#a85643f4a35c3fbc6e6d1047a42e8c832',1,'utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::spi_bb_i()']]], + ['spi_5fbb_5fi_3c_20virtual_5ftag_2c_20cpol_2c_20cpha_2c_20bitorder_20_3e',['spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >',['../classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html',1,'utl']]], + ['spi_5fi',['spi_i',['../classutl_1_1spi__i.html',1,'utl::spi_i< impl_t >'],['../classutl_1_1spi__i.html#ad66605cdf90f6d24cad3dc5ecda94b77',1,'utl::spi_i::spi_i()=default'],['../classutl_1_1spi__i.html#a1d6facb9b9adf91a6589fe029325bd55',1,'utl::spi_i::spi_i(const type &)=delete'],['../classutl_1_1spi__i_3_01virtual__tag_01_4.html#a954d8294026bf4628771e588e8a0eb5e',1,'utl::spi_i< virtual_tag >::spi_i()=default'],['../classutl_1_1spi__i_3_01virtual__tag_01_4.html#a142e481dff89219cab72ec444fc069db',1,'utl::spi_i< virtual_tag >::spi_i(const type &)=delete']]], + ['spi_5fi_3c_20spi_5fbb_5fi_3c_20impl_5ft_2c_20cpol_2c_20cpha_2c_20bitorder_20_3e_20_3e',['spi_i< spi_bb_i< impl_t, CPOL, CPHA, BitOrder > >',['../classutl_1_1spi__i.html',1,'utl::spi_i< spi_bb_i< impl_t, CPOL, CPHA, BitOrder > >'],['../classutl_1_1spi__bb__i.html#aa82efc45adc590f33164edacc1783c20',1,'utl::spi_bb_i::spi_i< spi_bb_i< impl_t, CPOL, CPHA, BitOrder > >()']]], + ['spi_5fi_3c_20virtual_5ftag_20_3e',['spi_i< virtual_tag >',['../classutl_1_1spi__i_3_01virtual__tag_01_4.html',1,'utl']]], + ['start',['start',['../classutl_1_1i2c__i.html#a3591683e5fbf17b582f6ac1f79af871d',1,'utl::i2c_i::start()'],['../classutl_1_1i2c__i_3_01virtual__tag_01_4.html#ad7e9c66a85ab55f80bb0977208517603',1,'utl::i2c_i< virtual_tag >::start()']]], + ['std',['STD',['../classutl_1_1__1wire__i.html#a56bb736aa3620d7795b5914cac5f25ccac6ce23be5d350ce18a665427d2d950f7',1,'utl::_1wire_i::STD()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a2abb8c6344d17269c55ae0cba63ec512ac6ce23be5d350ce18a665427d2d950f7',1,'utl::_1wire_i< virtual_tag >::STD()']]], + ['stl_2eh',['stl.h',['../stl_8h.html',1,'']]], + ['stop',['stop',['../classutl_1_1i2c__i.html#a1310b52ac908b8c37059fb253cc3f56e',1,'utl::i2c_i::stop()'],['../classutl_1_1i2c__i_3_01virtual__tag_01_4.html#a86b0da49baf7d149ce5e316db186d65c',1,'utl::i2c_i< virtual_tag >::stop()']]], + ['stricttotallyordered',['StrictTotallyOrdered',['../namespaceutl.html#a720d6ece86f3f3320816aaae02eb16e4',1,'utl']]], + ['stricttotallyorderedwith',['StrictTotallyOrderedWith',['../namespaceutl.html#a5599d14d1bd008e4c14787d610a2b429',1,'utl']]], + ['strictweakorder',['StrictWeakOrder',['../namespaceutl.html#aa4b7b9105cfab3cd72865b5e0db23b11',1,'utl']]], + ['sub',['sub',['../namespaceutl_1_1meta.html#a9f90eea3852367afa4e1fe74756976fb',1,'utl::meta']]], + ['swap',['swap',['../structutl_1_1array.html#a437559d71769318cc7289dce06659c39',1,'utl::array::swap()'],['../structutl_1_1id__t.html#af2d4fabd51c5e3aabbb828d356354977',1,'utl::id_t::swap()'],['../namespaceutl.html#ae0f873b4883af7cc18cb23dd2810f4e6',1,'utl::swap()']]], + ['swappable',['Swappable',['../namespaceutl.html#ae2b149b19fb3d69a4fc555e4474bf9de',1,'utl']]], + ['swappablewith',['SwappableWith',['../namespaceutl.html#a4a3bb850ba59d499382bd11153104af7',1,'utl']]], + ['selection',['selection',['../group__type.html',1,'']]] +]; diff --git a/doc/html/search/all_12.html b/doc/html/search/all_12.html new file mode 100644 index 0000000..fd26524 --- /dev/null +++ b/doc/html/search/all_12.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/all_12.js b/doc/html/search/all_12.js new file mode 100644 index 0000000..74527de --- /dev/null +++ b/doc/html/search/all_12.js @@ -0,0 +1,54 @@ +var searchData= +[ + ['times',['times',['../structutl_1_1meta_1_1typelist.html#ac444325211852c503605ec6c820f3eae',1,'utl::meta::typelist']]], + ['times_5f',['times_',['../structutl_1_1meta_1_1typelist_1_1times__.html',1,'utl::meta::typelist']]], + ['times_5f_3c_200_2c_20t_2e_2e_2e_20_3e',['times_< 0, T... >',['../structutl_1_1meta_1_1typelist_1_1times___3_010_00_01_t_8_8_8_01_4.html',1,'utl::meta::typelist']]], + ['times_5f_3c_201_2c_20t_2e_2e_2e_20_3e',['times_< 1, T... >',['../structutl_1_1meta_1_1typelist_1_1times___3_011_00_01_t_8_8_8_01_4.html',1,'utl::meta::typelist']]], + ['traits_5ft',['traits_t',['../structutl_1_1id__t.html#a9951b895fb9cd9d9b40871ba95df98a0',1,'utl::id_t']]], + ['transform',['transform',['../namespaceutl_1_1meta.html#ac8bbf187eea3cb5da38d1bdc97b52334',1,'utl::meta']]], + ['transform_5f',['transform_',['../structutl_1_1meta_1_1transform__impl_1_1transform__.html',1,'utl::meta::transform_impl']]], + ['transform_5f_3c_20typelist_3c_20typelist_3c_20ts_2e_2e_2e_20_3e_2c_20fn_20_3e_2c_20void_5ft_3c_20invoke_3c_20fn_2c_20ts_20_3e_2e_2e_2e_20_3e_20_3e',['transform_< typelist< typelist< Ts... >, Fn >, void_t< invoke< Fn, Ts >... > >',['../structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts_8_8_8_01_40fe2b1c8ede658aadb6925de73541689.html',1,'utl::meta::transform_impl']]], + ['transform_5f_3c_20typelist_3c_20typelist_3c_20ts0_2e_2e_2e_20_3e_2c_20typelist_3c_20ts1_2e_2e_2e_20_3e_2c_20fn_20_3e_2c_20void_5ft_3c_20invoke_3c_20fn_2c_20ts0_2c_20ts1_20_3e_2e_2e_2e_20_3e_20_3e',['transform_< typelist< typelist< Ts0... >, typelist< Ts1... >, Fn >, void_t< invoke< Fn, Ts0, Ts1 >... > >',['../structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts0_8_8_8_01_8fba6bf3d0565d17a96950cb517db5f1.html',1,'utl::meta::transform_impl']]], + ['transform_5flazy',['transform_lazy',['../namespaceutl_1_1meta.html#a55c0405bfb94c1d285d3131390c31451',1,'utl::meta']]], + ['transform_5flazy_5f',['transform_lazy_',['../structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy__.html',1,'utl::meta::transform_lazy_impl']]], + ['transform_5flazy_5f_3c_20typelist_3c_20typelist_3c_20ts_2e_2e_2e_20_3e_2c_20fn_20_3e_2c_20void_5ft_3c_20invoke_3c_20fn_2c_20ts_20_3e_2e_2e_2e_20_3e_20_3e',['transform_lazy_< typelist< typelist< Ts... >, Fn >, void_t< invoke< Fn, Ts >... > >',['../structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t56243bc35bf73da8271cb88f34751f3a.html',1,'utl::meta::transform_lazy_impl']]], + ['transform_5flazy_5f_3c_20typelist_3c_20typelist_3c_20ts0_2e_2e_2e_20_3e_2c_20typelist_3c_20ts1_2e_2e_2e_20_3e_2c_20fn_20_3e_2c_20void_5ft_3c_20invoke_3c_20fn_2c_20ts0_2c_20ts1_20_3e_2e_2e_2e_20_3e_20_3e',['transform_lazy_< typelist< typelist< Ts0... >, typelist< Ts1... >, Fn >, void_t< invoke< Fn, Ts0, Ts1 >... > >',['../structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t14ff615a4bff6c4c3701df9c38aaa6a5.html',1,'utl::meta::transform_lazy_impl']]], + ['true_5f',['true_',['../namespaceutl_1_1meta.html#ae9a5a8fbe8202785f059935af219fb97',1,'utl::meta']]], + ['try_5fbegin_5ft',['try_begin_t',['../namespaceutl_1_1idx__dev__details.html#a69a8af95a0fd62c3e022c34ddc3a956b',1,'utl::idx_dev_details::try_begin_t()'],['../namespaceutl_1_1in__dev__details.html#af790d5cec9db9f80cc8d67e9755e823e',1,'utl::in_dev_details::try_begin_t()'],['../namespaceutl_1_1inbuf__dev__details.html#a18d5c5e879b4714f58861ad411537d53',1,'utl::inbuf_dev_details::try_begin_t()'],['../namespaceutl_1_1out__dev__details.html#ab5980d368073d104e13d153e291dde86',1,'utl::out_dev_details::try_begin_t()']]], + ['try_5fcbegin_5ft',['try_cbegin_t',['../namespaceutl_1_1idx__dev__details.html#a655c6de0d6d8f4ac3778f2fff8e9c7de',1,'utl::idx_dev_details::try_cbegin_t()'],['../namespaceutl_1_1in__dev__details.html#a857d70a4119a4ff5615141d68e59ba7b',1,'utl::in_dev_details::try_cbegin_t()'],['../namespaceutl_1_1inbuf__dev__details.html#a351202ead58a98a2eaad4f3987b6170c',1,'utl::inbuf_dev_details::try_cbegin_t()'],['../namespaceutl_1_1out__dev__details.html#a92a49420cc024aec06546ac041e7707a',1,'utl::out_dev_details::try_cbegin_t()']]], + ['try_5fcclk_5ft',['try_cclk_t',['../namespaceutl_1_1i2c__i__details.html#a81c12a06fe9cf6f643718f9175da8769',1,'utl::i2c_i_details']]], + ['try_5fcclock_5ft',['try_cclock_t',['../namespaceutl_1_1spi__i__details.html#ae1a4fad6acf8faccc5e85ee9b710c109',1,'utl::spi_i_details']]], + ['try_5fcend_5ft',['try_cend_t',['../namespaceutl_1_1idx__dev__details.html#adb8cac5f5772e513749038257a1f92df',1,'utl::idx_dev_details::try_cend_t()'],['../namespaceutl_1_1in__dev__details.html#ab268028c81d5385f19bbeb0c978ec9b2',1,'utl::in_dev_details::try_cend_t()'],['../namespaceutl_1_1inbuf__dev__details.html#a24eae32ecbea1291607f16d92c2b029a',1,'utl::inbuf_dev_details::try_cend_t()'],['../namespaceutl_1_1out__dev__details.html#a9f69f9ca8e1bf642bf63bfdd18c8d567',1,'utl::out_dev_details::try_cend_t()']]], + ['try_5fclk_5ft',['try_clk_t',['../namespaceutl_1_1i2c__i__details.html#adaf6b9dbc57caeda1a6a85bd17ac6317',1,'utl::i2c_i_details']]], + ['try_5fclock_5ft',['try_clock_t',['../namespaceutl_1_1spi__i__details.html#af2f4800aa77af82767a3ac55b9b242a6',1,'utl::spi_i_details']]], + ['try_5fend_5ft',['try_end_t',['../namespaceutl_1_1idx__dev__details.html#ab85fa5de8595b6e56a6718ffb7d4edfe',1,'utl::idx_dev_details::try_end_t()'],['../namespaceutl_1_1in__dev__details.html#acc72ca7012e26a9a0de8b08047dc9de8',1,'utl::in_dev_details::try_end_t()'],['../namespaceutl_1_1inbuf__dev__details.html#a5d4aa9d57c443c33cf08375e0c51bdd3',1,'utl::inbuf_dev_details::try_end_t()'],['../namespaceutl_1_1out__dev__details.html#a7d24815b4a395378766a4e9f0535c926',1,'utl::out_dev_details::try_end_t()']]], + ['try_5ffirst_5ft',['try_first_t',['../namespaceutl_1_1__1wire__i__det.html#a3dc7b4df37cebf753556ba527306cf9f',1,'utl::_1wire_i_det']]], + ['try_5fget1_5ft',['try_get1_t',['../namespaceutl_1_1idx__dev__details.html#ac3a877d2f57d7c50b77456e0571112f0',1,'utl::idx_dev_details::try_get1_t()'],['../namespaceutl_1_1in__dev__details.html#a560eec1b326b0f6b91fa96f64f15ef61',1,'utl::in_dev_details::try_get1_t()'],['../namespaceutl_1_1inbuf__dev__details.html#a72a6469ab9ce0cba618dd0b554fc2dd2',1,'utl::inbuf_dev_details::try_get1_t()']]], + ['try_5fget2_5ft',['try_get2_t',['../namespaceutl_1_1idx__dev__details.html#a4cf6896009d70acdccfb55ba333fe7ef',1,'utl::idx_dev_details::try_get2_t()'],['../namespaceutl_1_1in__dev__details.html#ae11bccc2282ed8f2aaac67687d756167',1,'utl::in_dev_details::try_get2_t()'],['../namespaceutl_1_1inbuf__dev__details.html#af09ed69d129c33b8a6d3f79c79b8ea35',1,'utl::inbuf_dev_details::try_get2_t()']]], + ['try_5finvoke',['try_invoke',['../structutl_1_1detail_1_1try__invoke.html',1,'utl::detail']]], + ['try_5fipp',['try_Ipp',['../namespaceutl_1_1detail.html#a1371d13b3e8408cfc68e82b03ca9f3b0',1,'utl::detail']]], + ['try_5fmatch_5fn_5fovdr_5ft',['try_match_n_ovdr_t',['../namespaceutl_1_1__1wire__i__det.html#aa85f59a97c388dc259589cb517824233',1,'utl::_1wire_i_det']]], + ['try_5fmatch_5ft',['try_match_t',['../namespaceutl_1_1__1wire__i__det.html#a3416ddb06e089a5c191d356dd358ff00',1,'utl::_1wire_i_det']]], + ['try_5fnext_5ft',['try_next_t',['../namespaceutl_1_1__1wire__i__det.html#a67a086b8e4e3ee051ccb0351e6456630',1,'utl::_1wire_i_det']]], + ['try_5fppi',['try_ppI',['../namespaceutl_1_1detail.html#a50e7a46f910a83190bca5a58f67f1e2d',1,'utl::detail']]], + ['try_5fput1_5ft',['try_put1_t',['../namespaceutl_1_1out__dev__details.html#adb92d30f8cf134da9586ef9d52801325',1,'utl::out_dev_details']]], + ['try_5fput2_5ft',['try_put2_t',['../namespaceutl_1_1out__dev__details.html#a314537b65eaf15b6bba5a6f5544f3ace',1,'utl::out_dev_details']]], + ['try_5freset_5ft',['try_reset_t',['../namespaceutl_1_1__1wire__i__det.html#a502fff2c967d26334aa3c2fcf0b037ba',1,'utl::_1wire_i_det']]], + ['try_5frx1_5ft',['try_rx1_t',['../namespaceutl_1_1__1wire__i__det.html#a303cf58468da38ceeaa2477570f82948',1,'utl::_1wire_i_det']]], + ['try_5frx_5fdata_5ft',['try_rx_data_t',['../namespaceutl_1_1i2c__i__details.html#a10de1b351bd683c5435e2db3d682819c',1,'utl::i2c_i_details']]], + ['try_5frx_5ft',['try_rx_t',['../namespaceutl_1_1spi__i__details.html#a4dcf3c71fddf790e45a3be2c19906c97',1,'utl::spi_i_details']]], + ['try_5fskip_5fn_5fovdr_5ft',['try_skip_n_ovdr_t',['../namespaceutl_1_1__1wire__i__det.html#af6c9df3cb6bf2479e8d30a5d36ab71cb',1,'utl::_1wire_i_det']]], + ['try_5fskip_5ft',['try_skip_t',['../namespaceutl_1_1__1wire__i__det.html#a9d0825a40484e7868bf41fc4825b4f7d',1,'utl::_1wire_i_det']]], + ['try_5fstart_5ft',['try_start_t',['../namespaceutl_1_1i2c__i__details.html#a173335d0a45cba1b159bf33bcefb3a46',1,'utl::i2c_i_details']]], + ['try_5fstop_5ft',['try_stop_t',['../namespaceutl_1_1i2c__i__details.html#a25cbce342478441f05d3a101fcafc02c',1,'utl::i2c_i_details']]], + ['try_5ftx1_5ft',['try_tx1_t',['../namespaceutl_1_1__1wire__i__det.html#ac6a2b551bcf51b426c2e8506ab2473fe',1,'utl::_1wire_i_det']]], + ['try_5ftx_5fdata_5ft',['try_tx_data_t',['../namespaceutl_1_1i2c__i__details.html#ad8d87a56b12244ba8060f8d27207083f',1,'utl::i2c_i_details']]], + ['try_5ftx_5ft',['try_tx_t',['../namespaceutl_1_1spi__i__details.html#a755d8f10cfde3f5c3b9900eb11c858bd',1,'utl::spi_i_details']]], + ['tryc_5fbegin_5ft',['tryc_begin_t',['../namespaceutl_1_1idx__dev__details.html#afe8e2fc19d7b37a1b379a5f8302ef421',1,'utl::idx_dev_details::tryc_begin_t()'],['../namespaceutl_1_1in__dev__details.html#af7cb4a98688e65b04793cef145a90202',1,'utl::in_dev_details::tryc_begin_t()'],['../namespaceutl_1_1inbuf__dev__details.html#adff91b885ea1831691d4619d360bb72b',1,'utl::inbuf_dev_details::tryc_begin_t()'],['../namespaceutl_1_1out__dev__details.html#a83dcd42cb9186967654eb365ab0ce712',1,'utl::out_dev_details::tryc_begin_t()']]], + ['tryc_5fend_5ft',['tryc_end_t',['../namespaceutl_1_1idx__dev__details.html#aad6edb02a37f897cf4157f6345909ef1',1,'utl::idx_dev_details::tryc_end_t()'],['../namespaceutl_1_1in__dev__details.html#ad2dad6ed501b94ba1fa9cffade343762',1,'utl::in_dev_details::tryc_end_t()'],['../namespaceutl_1_1inbuf__dev__details.html#a858c7a1a0b1d8d0bdc91ce681aa1b996',1,'utl::inbuf_dev_details::tryc_end_t()'],['../namespaceutl_1_1out__dev__details.html#ad76fb97793ff8c8f31b042d70114ded2',1,'utl::out_dev_details::tryc_end_t()']]], + ['tx_5fdata',['tx_data',['../classutl_1_1__1wire__i.html#a59e7196e10e53467b62ed369ff78f07d',1,'utl::_1wire_i::tx_data(byte_t out, Speed s=Speed::STD)'],['../classutl_1_1__1wire__i.html#ab3bd112ff66074bdaf7357b91ca692a8',1,'utl::_1wire_i::tx_data(const byte_t *out, byte_t *in, size_t n, Speed s=Speed::STD)'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a9fbf69bafc3b697d3cf5ab09055540c8',1,'utl::_1wire_i< virtual_tag >::tx_data(byte_t out, Speed s=Speed::STD)'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a2fe8eabe2f67410123913b240f039b33',1,'utl::_1wire_i< virtual_tag >::tx_data(const byte_t *out, byte_t *in, size_t n, Speed s=Speed::STD)'],['../classutl_1_1i2c__i.html#aaf0b0ceec57fd8014ea3e6b58e9bfe3d',1,'utl::i2c_i::tx_data()'],['../classutl_1_1i2c__i_3_01virtual__tag_01_4.html#a5e60b4bda2d7203aa8f2df35aa6dfa5d',1,'utl::i2c_i< virtual_tag >::tx_data()'],['../classutl_1_1spi__i.html#ac8376d88480a992ac47699637e1a29a5',1,'utl::spi_i::tx_data(byte_t out)'],['../classutl_1_1spi__i.html#af3e303c2982202261700044d31596248',1,'utl::spi_i::tx_data(const byte_t *out, byte_t *in, size_t n)'],['../classutl_1_1spi__i_3_01virtual__tag_01_4.html#ac7b587521c1fdc83d32164dcee3c7b40',1,'utl::spi_i< virtual_tag >::tx_data(byte_t out)'],['../classutl_1_1spi__i_3_01virtual__tag_01_4.html#a2777c812eb27d7b3d106c55b31819d10',1,'utl::spi_i< virtual_tag >::tx_data(const byte_t *out, byte_t *in, size_t n)']]], + ['type',['type',['../structutl_1_1array__traits_3_01___tp_00_010_01_4_1_1type.html',1,'utl::array_traits< _Tp, 0 >::type'],['../structutl_1_1id__traits_3_01___tp_00_010_01_4_1_1type.html',1,'utl::id_traits< _Tp, 0 >::type'],['../classutl_1_1__1wire__i.html#afb63e64403924897a8277eb4159ebd44',1,'utl::_1wire_i::type()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a1b2fa0f5a2946723cd29e689bd38359d',1,'utl::_1wire_i< virtual_tag >::type()'],['../classutl_1_1__1wire__uart__i.html#acc885c6ec2395ad20409b01aa4d5f546',1,'utl::_1wire_uart_i::type()'],['../classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html#a1d50d0d5460165c3f6046ce6b663cd5e',1,'utl::_1wire_uart_i< virtual_tag >::type()'],['../classutl_1_1i2c__i.html#aa9267a8602702b78f188e0cf61b68a55',1,'utl::i2c_i::type()'],['../classutl_1_1i2c__i_3_01virtual__tag_01_4.html#ac892faacc1566f4ca1438e3df765bcac',1,'utl::i2c_i< virtual_tag >::type()'],['../classutl_1_1i2c__bb__i.html#a428c847d950993fa2cd005416edfb720',1,'utl::i2c_bb_i::type()'],['../classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html#abedad1f30e2c695d47a84dc68ff05897',1,'utl::i2c_bb_i< virtual_tag >::type()'],['../classutl_1_1spi__i.html#aff8ee0a2160cddbb52fce46611a6108f',1,'utl::spi_i::type()'],['../classutl_1_1spi__i_3_01virtual__tag_01_4.html#ab539774624977f1f86b98269d01d56ba',1,'utl::spi_i< virtual_tag >::type()'],['../classutl_1_1spi__bb__i.html#a86ccf004bf5ccc8b7c73bd0f9e8dbaa7',1,'utl::spi_bb_i::type()'],['../classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#a8318081f8e7803101bddb893afe8fc6a',1,'utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::type()'],['../structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_00_01meta_1_1void__t_3_05e5aa384829bb34312a7b8ee4ecaa00f.html#a9818dd472dbf7e5819a37c772d0566d2',1,'utl::common_impl::__common_ref_< T &, U &, meta::void_t< __lref_res< T, U >, meta::when< std::is_reference< __lref_res< T, U > >::value > > >::type()'],['../structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_6_00_01meta_1_1void__tc4e71c227f251cadf0e0fb7b1ba6f1e9.html#a8f2b4a68e68f34543fa6e73774bec517',1,'utl::common_impl::__common_ref_< T &&, U &&, meta::void_t< __common_ref< T &, U & >, meta::when< ConvertibleTo< T &&, __rref_res< T, U > > >, meta::when< ConvertibleTo< U &&, __rref_res< T, U > > > > >::type()'],['../structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_00_01meta_1_1void__t_3972a8d6e6799b6ee6537c969cdced343.html#ade0c54407b6f17f667c01eec748c7e14',1,'utl::common_impl::__common_ref_< T &&, U &, meta::void_t< __common_ref< const T &, U & >, meta::when< ConvertibleTo< T &&, __common_ref< const T &, U & > > > > >::type()'],['../structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_6_00_01meta_1_1void__t_329fba5aeac3b93aa9cfa5aa7e282e196.html#a382d2ef7e9cf4cba7efe589969b64b07',1,'utl::common_impl::__common_ref_< T &, U &&, meta::void_t< __common_ref< T &, const U & >, meta::when< ConvertibleTo< U &&, __common_ref< T &, const U & > > > > >::type()'],['../structutl_1_1common__impl_1_1common__reference_3_01_t_01_4.html#ad228404ea08fbb8929dc7792a803c5a4',1,'utl::common_impl::common_reference< T >::type()'],['../structutl_1_1common__impl_1_1____common__reference3_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____015b01ed12d2d90ee57fbf756ab847e9.html#a41c50c14e6bc947987661add1a95e777',1,'utl::common_impl::__common_reference3< T, U, meta::void_t< __cond_res< T, U > > >::type()'],['../structutl_1_1common__impl_1_1____common__reference2_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____785d0aa2f8a62416e19573fcbdd83836.html#abad429fee19f4f511abfe089fa480404',1,'utl::common_impl::__common_reference2< T, U, meta::void_t< __basic_common_reference_t< T, U > > >::type()'],['../structutl_1_1common__impl_1_1____common__reference_3_01_t_00_01_u_00_01meta_1_1when_3_01std_1_1i23b95b4b3a65ce598dbcc7f52e9dab2c.html#af8297c9aa25bfb27c58f0f58722a0d28',1,'utl::common_impl::__common_reference< T, U, meta::when< std::is_reference< T >::value &&std::is_reference< U >::value > >::type()'],['../structutl_1_1details_1_1is__boolean__.html#ad34df9d79caf33bf92019da4232b791c',1,'utl::details::is_boolean_::type()'],['../structutl_1_1details_1_1is__boolean___3_01_b_00_01meta_1_1void__t_3_01meta_1_1use__if__same__t_37e77ed45a431955fc15b4c1210ad8491.html#abfb3ea1ef62c31310d992fde67f92900',1,'utl::details::is_boolean_< B, meta::void_t< meta::use_if_same_t< bool, decltype(!std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>()==std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>() !=std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>() &&std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>()||std::declval< cref_< B >>())> > >::type()'],['../structutl_1_1details_1_1is__weakly__equality__comparable__with__.html#ab700b64203b780a4e35e0b9362224da4',1,'utl::details::is_weakly_equality_comparable_with_::type()'],['../structutl_1_1details_1_1is__weakly__equality__comparable__with___3_01_t_00_01_u_00_01meta_1_1voi4404f901930622694666ca68fb75381b.html#a107023c7eaad95d6f6ed8eeb60801d69',1,'utl::details::is_weakly_equality_comparable_with_< T, U, meta::void_t< meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()==std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() !=std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>()==std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>() !=std::declval< cref_< T >>())> > >::type()'],['../structutl_1_1details_1_1is__strict__totally__ordered__.html#acb182f06d015a63fbe00a9700422046f',1,'utl::details::is_strict_totally_ordered_::type()'],['../structutl_1_1details_1_1is__strict__totally__ordered___3_01_t_00_01meta_1_1void__t_3_01meta_1_1uab48bcfc89164f446368b35bcc7c8bcd.html#a221f1b2e947002d4888711116e5ebfb5',1,'utl::details::is_strict_totally_ordered_< T, meta::void_t< meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()< std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() > std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()<=std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() >=std::declval< cref_< T >>())> > >::type()'],['../structutl_1_1details_1_1is__strict__totally__ordered__with__.html#a4687be9ddf2910a323d69193c0291723',1,'utl::details::is_strict_totally_ordered_with_::type()'],['../structutl_1_1details_1_1is__strict__totally__ordered__with___3_01_t_00_01_u_00_01meta_1_1void__t8fb7dd5a6ad25952241e37c6f163f434.html#a447a36dc0b2239ee20876c6255033345',1,'utl::details::is_strict_totally_ordered_with_< T, U, meta::void_t< meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()< std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() > std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()<=std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() >=std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>()< std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>() > std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>()<=std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>() >=std::declval< cref_< T >>())> > >::type()'],['../structutl_1_1array__traits.html#a297f692ae07fd5c9b02a989fe5736909',1,'utl::array_traits::type()'],['../structutl_1_1id__traits.html#ae8c2dc9bc8ff3284dc89e7760ef601f8',1,'utl::id_traits::type()'],['../classutl_1_1ostreamdev__it.html#ab5f87e036d215580e62f112f9ea1aef3',1,'utl::ostreamdev_it::type()'],['../classutl_1_1istreamdev__it.html#a1d7d245bb3b6397af354604448550fe3',1,'utl::istreamdev_it::type()'],['../classutl_1_1outdev__it.html#ac9f9b83fbb0b48a8c002638febbca186',1,'utl::outdev_it::type()'],['../classutl_1_1indev__it.html#a667aeec9e1dd008dd0bf91057890b633',1,'utl::indev_it::type()'],['../classutl_1_1iodev__it.html#a1c81a9a1ba749b44b9721f83bfebae08',1,'utl::iodev_it::type()'],['../classutl_1_1idx__dev.html#a6cdcb1da82a0047d990ee6bce8b6c32b',1,'utl::idx_dev::type()'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#aa35bd23b888a66ebceffd7ea37f7a230',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::type()'],['../classutl_1_1in__dev.html#adef54df1c3d4ae20629ecfdb7826384c',1,'utl::in_dev::type()'],['../classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a0fd855f15733c848a77ce3dfc2f3fab7',1,'utl::in_dev< virtual_tag, data_t, streamsize >::type()'],['../classutl_1_1inbuf__dev.html#ae429fbf167bbd96b2cc46094f3540b10',1,'utl::inbuf_dev::type()'],['../classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#af6c21cf92d9bffdd58fb4aa8f5ddb83f',1,'utl::inbuf_dev< virtual_tag, data_t, streamsize >::type()'],['../classutl_1_1ostream__dev.html#ac7169419677c70f4811803828b826351',1,'utl::ostream_dev::type()'],['../classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#aa3cb961a80a8dee210e9ab9ffd2483ee',1,'utl::ostream_dev< virtual_tag, data_t >::type()'],['../classutl_1_1out__dev.html#aebda5d42d26027e9266bfe74bf71a960',1,'utl::out_dev::type()'],['../classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#ac6d606494a0b663bf20bf180e33190e2',1,'utl::out_dev< virtual_tag, data_t, streamsize >::type()'],['../structutl_1_1meta_1_1detail_1_1detector.html#a747c70e71225be5ecaa6d20edce5512b',1,'utl::meta::detail::detector::type()'],['../structutl_1_1meta_1_1detail_1_1detector_3_01_default_00_01void__t_3_01_op_3_01_args_8_8_8_01_4_0c35bdbd19f56980c0b5ee6d490bfb634.html#af9cba657766ddb15348043a15c5bc234',1,'utl::meta::detail::detector< Default, void_t< Op< Args... > >, Op, Args... >::type()'],['../structutl_1_1meta_1_1nil__.html#a497da8469a94140b0285ba5864d794c8',1,'utl::meta::nil_::type()'],['../structutl_1_1meta_1_1identity.html#a9aab221df05f226c227a6e508460f7b7',1,'utl::meta::identity::type()'],['../structutl_1_1meta_1_1detail_1_1is__applicable__.html#ababc9a374e6321fb8ded4b2dde19795c',1,'utl::meta::detail::is_applicable_::type()'],['../structutl_1_1meta_1_1detail_1_1is__applicable__q__.html#a175161a76c46c8da1d170e329d17ce43',1,'utl::meta::detail::is_applicable_q_::type()'],['../structutl_1_1meta_1_1detail_1_1is__applicable__i__.html#ac512fdc9db578f9244b861f84c177ca7',1,'utl::meta::detail::is_applicable_i_::type()'],['../structutl_1_1meta_1_1detail_1_1defer__.html#ac8e2ede36472a15488ffdb49a6935be2',1,'utl::meta::detail::defer_::type()'],['../structutl_1_1meta_1_1detail_1_1defer__i__.html#af8659048a08bb48bae5c0dc3f9595bf7',1,'utl::meta::detail::defer_i_::type()'],['../group__type.html#gaefeff9de7bff8811e49692343ce6187e',1,'utl::meta::detail::if_c_::type()'],['../group__type.html#gaa7f24607990e92d8263246fc5f7003b7',1,'utl::meta::detail::if_c_< true, Then >::type()'],['../group__type.html#ga15100ac40785819517c5defacb19915c',1,'utl::meta::detail::if_c_< true, Then, Else >::type()'],['../group__type.html#ga2fbed149992c081ac85eefaf63a388ca',1,'utl::meta::detail::if_c_< false, Then, Else >::type()'],['../structutl_1_1meta_1_1detail_1_1when___3_01true_01_4.html#a2d6b156939c43f8236a109310733323c',1,'utl::meta::detail::when_< true >::type()'],['../structutl_1_1meta_1_1typelist.html#a7332ca3d7a7ec5b730e24a4dab743fa6',1,'utl::meta::typelist::type()'],['../structutl_1_1meta_1_1typelist_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4.html#adae915036f972f13b580e335c2ec2fa2',1,'utl::meta::typelist::cat_< typelist< L1... >, typelist< L2... > >::type()'],['../structutl_1_1meta_1_1typelist_1_1times__.html#abcf09cf6ea99301ed77748d71ea093ac',1,'utl::meta::typelist::times_::type()'],['../structutl_1_1meta_1_1typelist_1_1times___3_011_00_01_t_8_8_8_01_4.html#af90bd9e6b4394edbc09990f3fd1246b6',1,'utl::meta::typelist::times_< 1, T... >::type()'],['../structutl_1_1meta_1_1typelist_1_1times___3_010_00_01_t_8_8_8_01_4.html#a1a23fce8f9777a9dfe123c02a16c9a5d',1,'utl::meta::typelist::times_< 0, T... >::type()'],['../structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01typelist_3_01_list_8_8_8_01_4_01_4.html#a1f8a57b3a017d48791972780cc34fffc',1,'utl::meta::apply_impl::apply_< Fn, typelist< List... > >::type()'],['../structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01integer__sequence_3_01_t_00_01_is_8_8_8_01_4_01_4.html#a0452e2478b7abc590c3f2e6e26f98b67',1,'utl::meta::apply_impl::apply_< Fn, integer_sequence< T, Is... > >::type()'],['../structutl_1_1meta_1_1at__impl_1_1__add__pointer.html#a372a7a88f139a95fc12a4da82483d269',1,'utl::meta::at_impl::_add_pointer::type()'],['../structutl_1_1meta_1_1at__impl_1_1at___3_01typelist_3_01_list_8_8_8_01_4_00_01_n_01_4.html#ac335ce21f528d54140bdc0273d60b0ac',1,'utl::meta::at_impl::at_< typelist< List... >, N >::type()'],['../structutl_1_1meta_1_1front__impl_1_1front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.html#a964bc85961c4935570021361b0d4f514',1,'utl::meta::front_impl::front_< typelist< Head, Tail... > >::type()'],['../structutl_1_1meta_1_1back__impl_1_1back___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.html#a8d21b435cc06609d36638fe8de568e4b',1,'utl::meta::back_impl::back_< typelist< Head, Tail... > >::type()'],['../structutl_1_1meta_1_1cat__impl_1_1cat___3_4.html#a23a045e4af6ea5083c04d3d070436938',1,'utl::meta::cat_impl::cat_<>::type()'],['../structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_01_4.html#a453cfcf1d029d16a35b0f6b3329393e1',1,'utl::meta::cat_impl::cat_< typelist< L1... > >::type()'],['../structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4.html#a33c0c07037f594dc11a4eb7ecac7a428',1,'utl::meta::cat_impl::cat_< typelist< L1... >, typelist< L2... > >::type()'],['../structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4.html#abb224956ed3d1439190f0ca0afbfeea1',1,'utl::meta::fold_impl::fold_< typelist< Head, Tail... >, V, Fn >::type()'],['../structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_4_00_01_v0_00_01_fn_01_4.html#a8455824c7006528cdabb3d56a60ae9d6',1,'utl::meta::fold_impl::fold_< typelist<>, V0, Fn >::type()'],['../structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4.html#ad7c51dcac1ed18739bdce2eb75695a7a',1,'utl::meta::rev_fold_impl::rev_fold_< typelist< Head, Tail... >, V, Fn >::type()'],['../structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_tail_01_4_00_01_v_00_01_fn_01_4.html#a84a91d7ad7d46de8f4b4b2237c75b3e8',1,'utl::meta::rev_fold_impl::rev_fold_< typelist< Tail >, V, Fn >::type()'],['../structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_4_00_01_v_00_01_fn_01_4.html#a07d723d69e4acba3b20a1d47c4c6da35',1,'utl::meta::rev_fold_impl::rev_fold_< typelist<>, V, Fn >::type()'],['../structutl_1_1meta_1_1reverse__impl_1_1reverse__.html#ad1618828ac681258d9909839df60dd39',1,'utl::meta::reverse_impl::reverse_::type()'],['../structutl_1_1meta_1_1pop__front__impl_1_1pop__front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.html#a7387d0025d1dcece8e63a3bba5426ac8',1,'utl::meta::pop_front_impl::pop_front_< typelist< Head, Tail... > >::type()'],['../structutl_1_1meta_1_1pop__back__impl_1_1pop__back__.html#a8b82ff5dcd6fcda89b36f8e587e64d24',1,'utl::meta::pop_back_impl::pop_back_::type()'],['../structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts_8_8_8_01_40fe2b1c8ede658aadb6925de73541689.html#afb15f91a804a184a7b614c632737f0d0',1,'utl::meta::transform_impl::transform_< typelist< typelist< Ts... >, Fn >, void_t< invoke< Fn, Ts >... > >::type()'],['../structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts0_8_8_8_01_8fba6bf3d0565d17a96950cb517db5f1.html#a284cc6268deadee714a5107d5d153285',1,'utl::meta::transform_impl::transform_< typelist< typelist< Ts0... >, typelist< Ts1... >, Fn >, void_t< invoke< Fn, Ts0, Ts1 >... > >::type()'],['../structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t56243bc35bf73da8271cb88f34751f3a.html#add92e9d4d6e95f5710d87cd4fe7c50da',1,'utl::meta::transform_lazy_impl::transform_lazy_< typelist< typelist< Ts... >, Fn >, void_t< invoke< Fn, Ts >... > >::type()'],['../structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t14ff615a4bff6c4c3701df9c38aaa6a5.html#a09eb2a1f5d8fa4468eef608f5abfa22d',1,'utl::meta::transform_lazy_impl::transform_lazy_< typelist< typelist< Ts0... >, typelist< Ts1... >, Fn >, void_t< invoke< Fn, Ts0, Ts1 >... > >::type()'],['../structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.html#aa3109a5803c72b9688b928a72d357982',1,'utl::meta::find_if_impl::find_if_< typelist< Head, Tail... >, Fn, N >::type()'],['../structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.html#aaa7d3cf83c1c12443a002061cad448ef',1,'utl::meta::find_if_impl::find_if_< typelist<>, Fn, N >::type()'],['../structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.html#a2eddb7dab6c905a487811e253dc5b917',1,'utl::meta::seek_if_impl::seek_if_< typelist< Head, Tail... >, Fn, N >::type()'],['../structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.html#a4a8d37653df9971c37bba6bfc346d009',1,'utl::meta::seek_if_impl::seek_if_< typelist<>, Fn, N >::type()'],['../structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.html#aaa24b23395ae90c9aa56c78b299d1124',1,'utl::meta::count_if_impl::count_if_< typelist< Head, Tail... >, Fn, N >::type()'],['../structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.html#a6817148d6cfbde3cbd495deed94bb469',1,'utl::meta::count_if_impl::count_if_< typelist<>, Fn, N >::type()'],['../structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_l_01_4.html#a8cb888a78e40c7ce91d286e6f5153f2f',1,'utl::meta::filter_impl::filter_< typelist< Head, Tail... >, Fn, L >::type()'],['../structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_4_00_01_fn_00_01_l_01_4.html#afdefe3c45a1bf1d8b5419014a16dc80e',1,'utl::meta::filter_impl::filter_< typelist<>, Fn, L >::type()'],['../structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_01_head_00_01_tail_8_8_8_dfa8065a3617f53ecded260506092a07.html#ad7d3db888c18a6e48ed800f0c484701d',1,'utl::meta::replace_if_impl::replace_if_< typelist< Head, Tail... >, Fn, T, Ret >::type()'],['../structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_4_00_01_fn_00_01_t_00_01_ret_01_4.html#a45470ea1b5d2ddc6ff9054e66b193d78',1,'utl::meta::replace_if_impl::replace_if_< typelist<>, Fn, T, Ret >::type()'],['../structutl_1_1detail_1_1try__invoke.html#a23491c600d42090f3eb400eadc49ef7f',1,'utl::detail::try_invoke::type()'],['../structutl_1_1detail_1_1invoke__result__.html#a03e0ac5bf1e7751812af8828eb6550b3',1,'utl::detail::invoke_result_::type()'],['../structutl_1_1detail_1_1invoke__result___3_01true_00_01___callable_00_01___args_8_8_8_01_4.html#af68f2e0441486139aab41a8d5e74b35a',1,'utl::detail::invoke_result_< true, _Callable, _Args... >::type()']]], + ['typelist',['typelist',['../structutl_1_1meta_1_1typelist.html',1,'utl::meta::typelist< Ts >'],['../group__typelist.html',1,'(Global Namespace)']]], + ['typelist_2eh',['typelist.h',['../typelist_8h.html',1,'']]], + ['types_2eh',['types.h',['../types_8h.html',1,'']]] +]; diff --git a/doc/html/search/all_13.html b/doc/html/search/all_13.html new file mode 100644 index 0000000..04f66e2 --- /dev/null +++ b/doc/html/search/all_13.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/all_13.js b/doc/html/search/all_13.js new file mode 100644 index 0000000..1ca32c6 --- /dev/null +++ b/doc/html/search/all_13.js @@ -0,0 +1,54 @@ +var searchData= +[ + ['_5f1wire_5fi_5fdet',['_1wire_i_det',['../namespaceutl_1_1__1wire__i__det.html',1,'utl']]], + ['apply_5fimpl',['apply_impl',['../namespaceutl_1_1meta_1_1apply__impl.html',1,'utl::meta']]], + ['at_5fimpl',['at_impl',['../namespaceutl_1_1meta_1_1at__impl.html',1,'utl::meta']]], + ['back_5fimpl',['back_impl',['../namespaceutl_1_1meta_1_1back__impl.html',1,'utl::meta']]], + ['cat_5fimpl',['cat_impl',['../namespaceutl_1_1meta_1_1cat__impl.html',1,'utl::meta']]], + ['common_5fimpl',['common_impl',['../namespaceutl_1_1common__impl.html',1,'utl']]], + ['count_5fif_5fimpl',['count_if_impl',['../namespaceutl_1_1meta_1_1count__if__impl.html',1,'utl::meta']]], + ['detail',['detail',['../namespaceutl_1_1detail.html',1,'utl::detail'],['../namespaceutl_1_1meta_1_1detail.html',1,'utl::meta::detail']]], + ['details',['details',['../namespaceutl_1_1details.html',1,'utl']]], + ['filter_5fimpl',['filter_impl',['../namespaceutl_1_1meta_1_1filter__impl.html',1,'utl::meta']]], + ['find_5fif_5fimpl',['find_if_impl',['../namespaceutl_1_1meta_1_1find__if__impl.html',1,'utl::meta']]], + ['fold_5fimpl',['fold_impl',['../namespaceutl_1_1meta_1_1fold__impl.html',1,'utl::meta']]], + ['front_5fimpl',['front_impl',['../namespaceutl_1_1meta_1_1front__impl.html',1,'utl::meta']]], + ['i2c_5fi_5fdetails',['i2c_i_details',['../namespaceutl_1_1i2c__i__details.html',1,'utl']]], + ['idx_5fdev_5fdetails',['idx_dev_details',['../namespaceutl_1_1idx__dev__details.html',1,'utl']]], + ['idxdev_5fit_5fdetails',['idxdev_it_details',['../namespaceutl_1_1idxdev__it__details.html',1,'utl']]], + ['in_5fdev_5fdetails',['in_dev_details',['../namespaceutl_1_1in__dev__details.html',1,'utl']]], + ['inbuf_5fdev_5fdetails',['inbuf_dev_details',['../namespaceutl_1_1inbuf__dev__details.html',1,'utl']]], + ['indev_5fit_5fdetails',['indev_it_details',['../namespaceutl_1_1indev__it__details.html',1,'utl']]], + ['meta',['meta',['../namespaceutl_1_1meta.html',1,'utl']]], + ['out_5fdev_5fdetails',['out_dev_details',['../namespaceutl_1_1out__dev__details.html',1,'utl']]], + ['outdev_5fit_5fdetails',['outdev_it_details',['../namespaceutl_1_1outdev__it__details.html',1,'utl']]], + ['pop_5fback_5fimpl',['pop_back_impl',['../namespaceutl_1_1meta_1_1pop__back__impl.html',1,'utl::meta']]], + ['pop_5ffront_5fimpl',['pop_front_impl',['../namespaceutl_1_1meta_1_1pop__front__impl.html',1,'utl::meta']]], + ['replace_5fif_5fimpl',['replace_if_impl',['../namespaceutl_1_1meta_1_1replace__if__impl.html',1,'utl::meta']]], + ['rev_5ffold_5fimpl',['rev_fold_impl',['../namespaceutl_1_1meta_1_1rev__fold__impl.html',1,'utl::meta']]], + ['reverse_5fimpl',['reverse_impl',['../namespaceutl_1_1meta_1_1reverse__impl.html',1,'utl::meta']]], + ['seek_5fif_5fimpl',['seek_if_impl',['../namespaceutl_1_1meta_1_1seek__if__impl.html',1,'utl::meta']]], + ['spi',['spi',['../namespaceutl_1_1spi.html',1,'utl']]], + ['spi_5fi_5fdetails',['spi_i_details',['../namespaceutl_1_1spi__i__details.html',1,'utl']]], + ['transform_5fimpl',['transform_impl',['../namespaceutl_1_1meta_1_1transform__impl.html',1,'utl::meta']]], + ['transform_5flazy_5fimpl',['transform_lazy_impl',['../namespaceutl_1_1meta_1_1transform__lazy__impl.html',1,'utl::meta']]], + ['uart_5fbr',['UART_BR',['../classutl_1_1__1wire__uart__i.html#a4379f74ee196e6b8422a74143642004f',1,'utl::_1wire_uart_i::UART_BR()'],['../classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html#ad3638c4688c1cef14a7f4bd316104931',1,'utl::_1wire_uart_i< virtual_tag >::UART_BR()']]], + ['uart_5frw',['UART_RW',['../classutl_1_1__1wire__uart__i.html#a02e0069f537ae7e8cccdf8563537952a',1,'utl::_1wire_uart_i::UART_RW()'],['../classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html#a64cafa18986604d0693635e41bdee6aa',1,'utl::_1wire_uart_i< virtual_tag >::UART_RW()']]], + ['uint16_5f',['uint16_',['../namespaceutl_1_1meta.html#af1b0b8109e3e61032c24d148202b6966',1,'utl::meta']]], + ['uint32_5f',['uint32_',['../namespaceutl_1_1meta.html#aa8c7c38548db8df196b683ffdc109cd6',1,'utl::meta']]], + ['uint8_5f',['uint8_',['../namespaceutl_1_1meta.html#aae9c77ad9349e98af6cdc41e9b0090f8',1,'utl::meta']]], + ['unsignedintegral',['UnsignedIntegral',['../namespaceutl.html#a7fb6eaf8fc1c5d65755c8c96a7a9b61f',1,'utl']]], + ['use_5fif_5fall_5ft',['use_if_all_t',['../namespaceutl_1_1meta.html#a52ff6257bf079904f9cb51a65f5a7397',1,'utl::meta']]], + ['use_5fif_5fany_5ft',['use_if_any_t',['../namespaceutl_1_1meta.html#ad0394846551cd881782e46d2d05190de',1,'utl::meta']]], + ['use_5fif_5fnot_5fsame_5ft',['use_if_not_same_t',['../namespaceutl_1_1meta.html#af590469269a8c378d937d8d75ee96e8c',1,'utl::meta']]], + ['use_5fif_5fsame_5ft',['use_if_same_t',['../namespaceutl.html#ac5e425d39e8ee62e68664c6166d02d0c',1,'utl::use_if_same_t()'],['../namespaceutl_1_1meta.html#a7b4ba22b3afb3e7a98e1012a350cb573',1,'utl::meta::use_if_same_t()']]], + ['usec_5f',['usec_',['../classutl_1_1i2c__bb__i.html#a8bd3726104fc91eb8f283d7ffec71cee',1,'utl::i2c_bb_i::usec_()'],['../classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html#aa3e73dad28462bf6d8c132ddfeb3a390',1,'utl::i2c_bb_i< virtual_tag >::usec_()']]], + ['useif_2eh',['useif.h',['../useif_8h.html',1,'']]], + ['utl',['utl',['../namespaceutl.html',1,'']]], + ['utl_5fversion',['UTL_VERSION',['../group__version.html#ga7665eee3bbd12a8d910e6237e59d3aee',1,'version.h']]], + ['utl_5fversion_5fmajor',['UTL_VERSION_MAJOR',['../group__version.html#ga127ec85c06925fbd866584721188df32',1,'version.h']]], + ['utl_5fversion_5fminor',['UTL_VERSION_MINOR',['../group__version.html#ga9bc1d657cd305d09ffe825ab50672c2e',1,'version.h']]], + ['utl_5fversion_5fpatch',['UTL_VERSION_PATCH',['../group__version.html#ga0ccbcd211a838107438ae0e194f871a9',1,'version.h']]], + ['utl_5fversion_5fvalue',['UTL_VERSION_VALUE',['../group__version.html#ga7af1c603dc248e854fc773c26761ed83',1,'version.h']]], + ['utlconstraintype',['utlConstrainType',['../group__concepts.html#ga5d7d78bf161dcc8fb920fb522dc6f216',1,'defines.h']]] +]; diff --git a/doc/html/search/all_14.html b/doc/html/search/all_14.html new file mode 100644 index 0000000..285f34b --- /dev/null +++ b/doc/html/search/all_14.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/all_14.js b/doc/html/search/all_14.js new file mode 100644 index 0000000..3053f47 --- /dev/null +++ b/doc/html/search/all_14.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['v_5f',['v_',['../structutl_1_1iodev__it_1_1value__type__t.html#a62dd0ffec4198f9a81a93323582c4c9e',1,'utl::iodev_it::value_type_t']]], + ['valid',['valid',['../classutl_1_1istreamdev__it.html#a343602446a76ddc893b8420a0ec73098a46b4593b1438c429ecf7725dee6deac8',1,'utl::istreamdev_it']]], + ['value',['value',['../classutl_1_1istreamdev__it.html#a8e5b98093c55cb57e3179ff9025389fb',1,'utl::istreamdev_it']]], + ['value_5f',['value_',['../classutl_1_1istreamdev__it.html#afdc31b2308ede3449e26866991221a0d',1,'utl::istreamdev_it::value_()'],['../classutl_1_1indev__it.html#afb6cc9d365842a104d12a69f3c8cd189',1,'utl::indev_it::value_()'],['../classutl_1_1iodev__it.html#a7281baf429e5ed7a5526e14a9659a11f',1,'utl::iodev_it::value_()']]], + ['value_5ftype',['value_type',['../structutl_1_1array.html#a2486d9a16559e5edbf8c0f6457cc1223',1,'utl::array::value_type()'],['../structutl_1_1id__t.html#a9f1d9c9792705f9d358018d174f22429',1,'utl::id_t::value_type()'],['../structutl_1_1dev__iterator__traits.html#a4092b379cea659f2d79908b356ec6fb2',1,'utl::dev_iterator_traits::value_type()'],['../classutl_1_1ostreamdev__it.html#a4c8ef9dc81fd07e719efe6e4f31bccfd',1,'utl::ostreamdev_it::value_type()'],['../classutl_1_1istreamdev__it.html#a2c86d97ea181d403018078c7bcd85a7d',1,'utl::istreamdev_it::value_type()'],['../classutl_1_1outdev__it.html#aa973216f7bc8930b3125e94a0bb664d3',1,'utl::outdev_it::value_type()'],['../classutl_1_1indev__it.html#ae7db86c4ea6793a3ae0af0fd877bd751',1,'utl::indev_it::value_type()'],['../classutl_1_1iodev__it.html#a2e8033eee2ac8e8132b8b833ffa606ab',1,'utl::iodev_it::value_type()']]], + ['value_5ftype_5ft',['value_type_t',['../structutl_1_1iodev__it_1_1value__type__t.html',1,'utl::iodev_it< cont_t, iter_t, _beg, _size >::value_type_t'],['../structutl_1_1iodev__it_1_1value__type__t.html#a337f27b0b4f79742a0076b203bc547ed',1,'utl::iodev_it::value_type_t::value_type_t()']]], + ['version',['version',['../group__version.html',1,'']]], + ['version_2eh',['version.h',['../version_8h.html',1,'']]], + ['virtual_5ftag',['virtual_tag',['../structutl_1_1virtual__tag.html',1,'utl']]], + ['void_5f',['void_',['../group__detection.html#gac16d50de47cf57734433e9ea636522c5',1,'utl::meta']]], + ['void_5ft',['void_t',['../group__detection.html#gae7373c997420d16cf37e542eb3cfa3ad',1,'utl::meta']]] +]; diff --git a/doc/html/search/all_15.html b/doc/html/search/all_15.html new file mode 100644 index 0000000..0ed74e0 --- /dev/null +++ b/doc/html/search/all_15.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/all_15.js b/doc/html/search/all_15.js new file mode 100644 index 0000000..4a93ffe --- /dev/null +++ b/doc/html/search/all_15.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['weaklyequalitycomparablewith',['WeaklyEqualityComparableWith',['../namespaceutl.html#a216f6e14ca647d85841fa13c40dc4ee3',1,'utl']]], + ['weaklyincrementable',['WeaklyIncrementable',['../namespaceutl.html#a25b4f216e3d7754b1c7088dd59504dee',1,'utl']]], + ['when',['when',['../namespaceutl_1_1meta.html#a181d79db46b10170529e85b907ed3dc7',1,'utl::meta']]], + ['when_5f',['when_',['../structutl_1_1meta_1_1detail_1_1when__.html',1,'utl::meta::detail']]], + ['when_5f_3c_20true_20_3e',['when_< true >',['../structutl_1_1meta_1_1detail_1_1when___3_01true_01_4.html',1,'utl::meta::detail']]], + ['word_5ft',['word_t',['../namespaceutl.html#a1368cb6928f648fe4db1c85c190f0548',1,'utl']]], + ['wrap',['wrap',['../structutl_1_1meta_1_1wrap.html',1,'utl::meta']]], + ['wrap_5fi',['wrap_i',['../structutl_1_1meta_1_1wrap__i.html',1,'utl::meta']]] +]; diff --git a/doc/html/search/all_16.html b/doc/html/search/all_16.html new file mode 100644 index 0000000..696f025 --- /dev/null +++ b/doc/html/search/all_16.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/all_16.js b/doc/html/search/all_16.js new file mode 100644 index 0000000..a161f02 --- /dev/null +++ b/doc/html/search/all_16.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['_7e_5f1wire_5fi',['~_1wire_i',['../classutl_1_1__1wire__i.html#afb146fda251b25c9fc812718f6c5b3e1',1,'utl::_1wire_i::~_1wire_i()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#af1e2fea1b65ea57f4331c9dbc43e4bbf',1,'utl::_1wire_i< virtual_tag >::~_1wire_i()']]], + ['_7e_5f1wire_5fuart_5fi',['~_1wire_uart_i',['../classutl_1_1__1wire__uart__i.html#afe64da15b5eaf61cd54f357f3ea8b3ea',1,'utl::_1wire_uart_i::~_1wire_uart_i()'],['../classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html#ad66d096eca084dec305a9bc85bc5e588',1,'utl::_1wire_uart_i< virtual_tag >::~_1wire_uart_i()']]], + ['_7ei2c_5fbb_5fi',['~i2c_bb_i',['../classutl_1_1i2c__bb__i.html#ac2d9b97778a5dd57eb5e6425b4b0833c',1,'utl::i2c_bb_i::~i2c_bb_i()'],['../classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html#afcb5292af5af4c90f58945dab756b2ce',1,'utl::i2c_bb_i< virtual_tag >::~i2c_bb_i()']]], + ['_7ei2c_5fi',['~i2c_i',['../classutl_1_1i2c__i.html#a6a07d19db8974ad606031b60a6079957',1,'utl::i2c_i::~i2c_i()'],['../classutl_1_1i2c__i_3_01virtual__tag_01_4.html#a9190c053fb15634b5aab672f17d9544f',1,'utl::i2c_i< virtual_tag >::~i2c_i()']]], + ['_7eidx_5fdev',['~idx_dev',['../classutl_1_1idx__dev.html#ac7fc9b499b2c4b73769b68d10181b08b',1,'utl::idx_dev::~idx_dev()'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a67f3694debf7a8e563ac7d56c1771dfc',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::~idx_dev()']]], + ['_7ein_5fdev',['~in_dev',['../classutl_1_1in__dev.html#a2caa0f47e6132f051bb54b1acea37fc6',1,'utl::in_dev::~in_dev()'],['../classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a9cd04a9c2656fb2a92e3db35c401b6eb',1,'utl::in_dev< virtual_tag, data_t, streamsize >::~in_dev()']]], + ['_7einbuf_5fdev',['~inbuf_dev',['../classutl_1_1inbuf__dev.html#a55763f1c3ba5610404df70bda1abe75b',1,'utl::inbuf_dev::~inbuf_dev()'],['../classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a29b35825f917570edc31c0cd42090c90',1,'utl::inbuf_dev< virtual_tag, data_t, streamsize >::~inbuf_dev()']]], + ['_7enat_5f',['~nat_',['../structutl_1_1meta_1_1nat__.html#a133e363072f900269933f6c163b294f8',1,'utl::meta::nat_']]], + ['_7eostream_5fdev',['~ostream_dev',['../classutl_1_1ostream__dev.html#ad0358c1b879818118e745da164d99998',1,'utl::ostream_dev::~ostream_dev()'],['../classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#ac653594be9325b740b6ded465de6d639',1,'utl::ostream_dev< virtual_tag, data_t >::~ostream_dev()']]], + ['_7eout_5fdev',['~out_dev',['../classutl_1_1out__dev.html#a0c04af11ec0f3f9954399d22069e314d',1,'utl::out_dev::~out_dev()'],['../classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a5dce94d088c9f6cec3c318e0a0d1ee56',1,'utl::out_dev< virtual_tag, data_t, streamsize >::~out_dev()']]], + ['_7espi_5fbb_5fi',['~spi_bb_i',['../classutl_1_1spi__bb__i.html#aeac57567cb7db5ebb73bdd8e1f00cb82',1,'utl::spi_bb_i::~spi_bb_i()'],['../classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#a0ee4c601e63ec7097df95347f631c1fb',1,'utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::~spi_bb_i()']]], + ['_7espi_5fi',['~spi_i',['../classutl_1_1spi__i.html#ae77cb8be7d648a62a1ad252d829eccfb',1,'utl::spi_i::~spi_i()'],['../classutl_1_1spi__i_3_01virtual__tag_01_4.html#a7149ebd15799723fe3d2a97566608a19',1,'utl::spi_i< virtual_tag >::~spi_i()']]] +]; diff --git a/doc/html/search/all_17.html b/doc/html/search/all_17.html new file mode 100644 index 0000000..f1e14b6 --- /dev/null +++ b/doc/html/search/all_17.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/all_17.js b/doc/html/search/all_17.js new file mode 100644 index 0000000..163c420 --- /dev/null +++ b/doc/html/search/all_17.js @@ -0,0 +1,46 @@ +var searchData= +[ + ['_7e_5f1wire_5fi',['~_1wire_i',['../classutl_1_1__1wire__i.html#afb146fda251b25c9fc812718f6c5b3e1',1,'utl::_1wire_i::~_1wire_i()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#af1e2fea1b65ea57f4331c9dbc43e4bbf',1,'utl::_1wire_i< virtual_tag >::~_1wire_i()']]], + ['_7e_5f1wire_5fuart_5fi',['~_1wire_uart_i',['../classutl_1_1__1wire__uart__i.html#afe64da15b5eaf61cd54f357f3ea8b3ea',1,'utl::_1wire_uart_i::~_1wire_uart_i()'],['../classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html#ad66d096eca084dec305a9bc85bc5e588',1,'utl::_1wire_uart_i< virtual_tag >::~_1wire_uart_i()']]], + ['_7easserthelper',['~AssertHelper',['../classtesting_1_1internal_1_1_assert_helper.html#a51c640785d4ed4a0155cc9aa857d8931',1,'testing::internal::AssertHelper']]], + ['_7ecapturedstream',['~CapturedStream',['../classtesting_1_1internal_1_1_captured_stream.html#af215c7a9326cb5ca61e6b7ca8231dcf1',1,'testing::internal::CapturedStream']]], + ['_7ecartesianproductgenerator10',['~CartesianProductGenerator10',['../classtesting_1_1internal_1_1_cartesian_product_generator10.html#a2bee6d271df046f7660c85e2b2d305a5',1,'testing::internal::CartesianProductGenerator10']]], + ['_7ecartesianproductgenerator2',['~CartesianProductGenerator2',['../classtesting_1_1internal_1_1_cartesian_product_generator2.html#a4359f80cc1888d4a18d2e0a6865b920d',1,'testing::internal::CartesianProductGenerator2']]], + ['_7ecartesianproductgenerator3',['~CartesianProductGenerator3',['../classtesting_1_1internal_1_1_cartesian_product_generator3.html#a230b2ec353e917e1afeb6aae5668e19e',1,'testing::internal::CartesianProductGenerator3']]], + ['_7ecartesianproductgenerator4',['~CartesianProductGenerator4',['../classtesting_1_1internal_1_1_cartesian_product_generator4.html#a75d7d9ee7bae873295df5d4dbec6a165',1,'testing::internal::CartesianProductGenerator4']]], + ['_7ecartesianproductgenerator5',['~CartesianProductGenerator5',['../classtesting_1_1internal_1_1_cartesian_product_generator5.html#a13453a5614cda6c4d4b09011daa37800',1,'testing::internal::CartesianProductGenerator5']]], + ['_7ecartesianproductgenerator6',['~CartesianProductGenerator6',['../classtesting_1_1internal_1_1_cartesian_product_generator6.html#a6d59c2e75fd2a0a042ee102e08956f7f',1,'testing::internal::CartesianProductGenerator6']]], + ['_7ecartesianproductgenerator7',['~CartesianProductGenerator7',['../classtesting_1_1internal_1_1_cartesian_product_generator7.html#a242bc369feb56ff096b906c833403077',1,'testing::internal::CartesianProductGenerator7']]], + ['_7ecartesianproductgenerator8',['~CartesianProductGenerator8',['../classtesting_1_1internal_1_1_cartesian_product_generator8.html#ab5e728b287d0d520e7281799a67189c7',1,'testing::internal::CartesianProductGenerator8']]], + ['_7ecartesianproductgenerator9',['~CartesianProductGenerator9',['../classtesting_1_1internal_1_1_cartesian_product_generator9.html#ab1b886bfb8c9c2c575ee4f9da61e3180',1,'testing::internal::CartesianProductGenerator9']]], + ['_7eenvironment',['~Environment',['../classtesting_1_1_environment.html#a0e41c320362576d752cd1f44cabd57d4',1,'testing::Environment']]], + ['_7egtestlog',['~GTestLog',['../classtesting_1_1internal_1_1_g_test_log.html#a978a099703bbaa0f380216e8d7ee03d3',1,'testing::internal::GTestLog']]], + ['_7ei2c_5fbb_5fi',['~i2c_bb_i',['../classutl_1_1i2c__bb__i.html#ac2d9b97778a5dd57eb5e6425b4b0833c',1,'utl::i2c_bb_i::~i2c_bb_i()'],['../classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html#afcb5292af5af4c90f58945dab756b2ce',1,'utl::i2c_bb_i< virtual_tag >::~i2c_bb_i()']]], + ['_7ei2c_5fi',['~i2c_i',['../classutl_1_1i2c__i.html#a6a07d19db8974ad606031b60a6079957',1,'utl::i2c_i::~i2c_i()'],['../classutl_1_1i2c__i_3_01virtual__tag_01_4.html#a9190c053fb15634b5aab672f17d9544f',1,'utl::i2c_i< virtual_tag >::~i2c_i()']]], + ['_7eidx_5fdev',['~idx_dev',['../classutl_1_1idx__dev.html#ac7fc9b499b2c4b73769b68d10181b08b',1,'utl::idx_dev::~idx_dev()'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a67f3694debf7a8e563ac7d56c1771dfc',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::~idx_dev()']]], + ['_7ein_5fdev',['~in_dev',['../classutl_1_1in__dev.html#a2caa0f47e6132f051bb54b1acea37fc6',1,'utl::in_dev::~in_dev()'],['../classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a9cd04a9c2656fb2a92e3db35c401b6eb',1,'utl::in_dev< virtual_tag, data_t, streamsize >::~in_dev()']]], + ['_7einbuf_5fdev',['~inbuf_dev',['../classutl_1_1inbuf__dev.html#a55763f1c3ba5610404df70bda1abe75b',1,'utl::inbuf_dev::~inbuf_dev()'],['../classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a29b35825f917570edc31c0cd42090c90',1,'utl::inbuf_dev< virtual_tag, data_t, streamsize >::~inbuf_dev()']]], + ['_7enat_5f',['~nat_',['../structutl_1_1meta_1_1nat__.html#a133e363072f900269933f6c163b294f8',1,'utl::meta::nat_']]], + ['_7enativearray',['~NativeArray',['../classtesting_1_1internal_1_1_native_array.html#a55ab5948d473a487303dcf6e02ad1f60',1,'testing::internal::NativeArray']]], + ['_7eostream_5fdev',['~ostream_dev',['../classutl_1_1ostream__dev.html#ad0358c1b879818118e745da164d99998',1,'utl::ostream_dev::~ostream_dev()'],['../classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#ac653594be9325b740b6ded465de6d639',1,'utl::ostream_dev< virtual_tag, data_t >::~ostream_dev()']]], + ['_7eout_5fdev',['~out_dev',['../classutl_1_1out__dev.html#a0c04af11ec0f3f9954399d22069e314d',1,'utl::out_dev::~out_dev()'],['../classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a5dce94d088c9f6cec3c318e0a0d1ee56',1,'utl::out_dev< virtual_tag, data_t, streamsize >::~out_dev()']]], + ['_7eparameterizedtestsuiteinfobase',['~ParameterizedTestSuiteInfoBase',['../classtesting_1_1internal_1_1_parameterized_test_suite_info_base.html#ac2aa0664f56e84cacab823d345c7d67b',1,'testing::internal::ParameterizedTestSuiteInfoBase']]], + ['_7eparameterizedtestsuiteregistry',['~ParameterizedTestSuiteRegistry',['../classtesting_1_1internal_1_1_parameterized_test_suite_registry.html#ab29f7a321883945d7f86f3292c100eb5',1,'testing::internal::ParameterizedTestSuiteRegistry']]], + ['_7eparamgeneratorinterface',['~ParamGeneratorInterface',['../classtesting_1_1internal_1_1_param_generator_interface.html#ac2767cb9ad2e292e291c4903323c6eff',1,'testing::internal::ParamGeneratorInterface']]], + ['_7eparamiteratorinterface',['~ParamIteratorInterface',['../classtesting_1_1internal_1_1_param_iterator_interface.html#adf6ba49e6b54a6e3b15dbd5733988bef',1,'testing::internal::ParamIteratorInterface']]], + ['_7erangegenerator',['~RangeGenerator',['../classtesting_1_1internal_1_1_range_generator.html#a72f6e6f65f1dd3f86672f6ed47df74ef',1,'testing::internal::RangeGenerator']]], + ['_7ere',['~RE',['../classtesting_1_1internal_1_1_r_e.html#af3ad18e6c0b433f3d85ed23eda8119f3',1,'testing::internal::RE']]], + ['_7escopedtrace',['~ScopedTrace',['../classtesting_1_1_scoped_trace.html#aa8320ec2679f205cf2c14f508ba35b4d',1,'testing::ScopedTrace']]], + ['_7espi_5fbb_5fi',['~spi_bb_i',['../classutl_1_1spi__bb__i.html#aeac57567cb7db5ebb73bdd8e1f00cb82',1,'utl::spi_bb_i::~spi_bb_i()'],['../classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#a0ee4c601e63ec7097df95347f631c1fb',1,'utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::~spi_bb_i()']]], + ['_7espi_5fi',['~spi_i',['../classutl_1_1spi__i.html#ae77cb8be7d648a62a1ad252d829eccfb',1,'utl::spi_i::~spi_i()'],['../classutl_1_1spi__i_3_01virtual__tag_01_4.html#a7149ebd15799723fe3d2a97566608a19',1,'utl::spi_i< virtual_tag >::~spi_i()']]], + ['_7etest',['~Test',['../classtesting_1_1_test.html#ad99dc9b12208fd4bffc367f0a1e3df1b',1,'testing::Test']]], + ['_7etesteventlistener',['~TestEventListener',['../classtesting_1_1_test_event_listener.html#a4512d19e7a108ec4926239ec1ea85d63',1,'testing::TestEventListener']]], + ['_7etesteventlisteners',['~TestEventListeners',['../classtesting_1_1_test_event_listeners.html#abe9fbbbedf7f55fa898abfae60aa4913',1,'testing::TestEventListeners']]], + ['_7etestfactorybase',['~TestFactoryBase',['../classtesting_1_1internal_1_1_test_factory_base.html#a18f22a7594336a36642289c1decddc9e',1,'testing::internal::TestFactoryBase']]], + ['_7etestinfo',['~TestInfo',['../classtesting_1_1_test_info.html#a8d382c1b1b511f0d9112c14684809852',1,'testing::TestInfo']]], + ['_7etestmetafactorybase',['~TestMetaFactoryBase',['../classtesting_1_1internal_1_1_test_meta_factory_base.html#aad80adf04686f7dfcf952e44afc02767',1,'testing::internal::TestMetaFactoryBase']]], + ['_7etestresult',['~TestResult',['../classtesting_1_1_test_result.html#a41f407680b725b75d7eadc3230bc3315',1,'testing::TestResult']]], + ['_7etestsuite',['~TestSuite',['../classtesting_1_1_test_suite.html#a78af2d96b44c8b8f2002b4e74df31c38',1,'testing::TestSuite']]], + ['_7evaluesiniteratorrangegenerator',['~ValuesInIteratorRangeGenerator',['../classtesting_1_1internal_1_1_values_in_iterator_range_generator.html#a9070d5b79803164625d3aa77a1659e9f',1,'testing::internal::ValuesInIteratorRangeGenerator']]], + ['_7ewithparaminterface',['~WithParamInterface',['../classtesting_1_1_with_param_interface.html#a4e170bd42fa5e8ce48b80cee6bb52e26',1,'testing::WithParamInterface']]] +]; diff --git a/doc/html/search/all_2.html b/doc/html/search/all_2.html new file mode 100644 index 0000000..2f17735 --- /dev/null +++ b/doc/html/search/all_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/all_2.js b/doc/html/search/all_2.js new file mode 100644 index 0000000..e2864de --- /dev/null +++ b/doc/html/search/all_2.js @@ -0,0 +1,28 @@ +var searchData= +[ + ['back',['back',['../structutl_1_1array.html#a5cd956a1087ce3652c79b36316f5875b',1,'utl::array::back() noexcept'],['../structutl_1_1array.html#a4a641f61dda90de1c93d3e62bf587bd3',1,'utl::array::back() const noexcept'],['../structutl_1_1id__t.html#a9a289ddc68f8ceec5368bf63334a2829',1,'utl::id_t::back() noexcept'],['../structutl_1_1id__t.html#a5a87967bad104213150f3dedf7e0291f',1,'utl::id_t::back() const noexcept'],['../namespaceutl_1_1meta.html#ad9ee55707fc633d53577b81a59136b7d',1,'utl::meta::back()']]], + ['back_5f',['back_',['../structutl_1_1meta_1_1back__impl_1_1back__.html',1,'utl::meta::back_impl']]], + ['back_5f_3c_20typelist_3c_20head_2c_20tail_2e_2e_2e_20_3e_20_3e',['back_< typelist< Head, Tail... > >',['../structutl_1_1meta_1_1back__impl_1_1back___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.html',1,'utl::meta::back_impl']]], + ['basic_5fcommon_5freference',['basic_common_reference',['../structutl_1_1common__impl_1_1basic__common__reference.html',1,'utl::common_impl']]], + ['beg',['beg',['../classutl_1_1outdev__it.html#ab5cbe3695bf05af30b14b89f8a16594ba8a7a14e955d212cd582610961e7e2769',1,'utl::outdev_it::beg()'],['../classutl_1_1indev__it.html#a2646fbdd38807785263d7d0bbe2b703aa91b4e71d6b69fec0a7d7043ef8902c40',1,'utl::indev_it::beg()'],['../classutl_1_1iodev__it.html#a746eded7eb22cbff5441b41ec0aac30fa7da9a1535ecc02d71b8ea5683b46a42d',1,'utl::iodev_it::beg()']]], + ['begin',['begin',['../structutl_1_1array.html#a4b475a8e3d0c7cc41b251f08aef040f0',1,'utl::array::begin() noexcept'],['../structutl_1_1array.html#ae72df0eae3b306e0a5410d724665c27a',1,'utl::array::begin() const noexcept'],['../structutl_1_1id__t.html#abf6354098b87ecd333bfb3a160e757df',1,'utl::id_t::begin() noexcept'],['../structutl_1_1id__t.html#a6a38ff9b9efdc99120dd4ce852813e8a',1,'utl::id_t::begin() const noexcept'],['../classutl_1_1idx__dev.html#a83b186ed15e9bbe1e5d53e3941d517a7',1,'utl::idx_dev::begin() noexcept'],['../classutl_1_1idx__dev.html#ad456ced43be8ab4fb9a66840afa030f7',1,'utl::idx_dev::begin() const noexcept'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a3923ae24a74fef19919f818636e063e4',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::begin() noexcept'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a07967f7a2c5d324361b7ffc829f31600',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::begin() const noexcept'],['../classutl_1_1in__dev.html#ab2158d8a134dff882a3eac2960da04c0',1,'utl::in_dev::begin() noexcept'],['../classutl_1_1in__dev.html#af81ff90ccb0070ad9388bc032d6d3279',1,'utl::in_dev::begin() const noexcept'],['../classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#ace7fac9d980407acc9b6484592c74367',1,'utl::in_dev< virtual_tag, data_t, streamsize >::begin() noexcept'],['../classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#aa1ce4d2193e476156df1b03f39503f7c',1,'utl::in_dev< virtual_tag, data_t, streamsize >::begin() const noexcept'],['../classutl_1_1inbuf__dev.html#a0b7b02345e2306dc9f62a75029de71fb',1,'utl::inbuf_dev::begin() noexcept'],['../classutl_1_1inbuf__dev.html#acf6f21857302843661cdbbbeea61f05b',1,'utl::inbuf_dev::begin() const noexcept'],['../classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a70046c3c1e61b596c7e49f1f45510644',1,'utl::inbuf_dev< virtual_tag, data_t, streamsize >::begin() noexcept'],['../classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a5367418a80e15d0f087acc6b977c911c',1,'utl::inbuf_dev< virtual_tag, data_t, streamsize >::begin() const noexcept'],['../classutl_1_1ostream__dev.html#a313cc3aada490c2d2641d6bdac559748',1,'utl::ostream_dev::begin() noexcept'],['../classutl_1_1ostream__dev.html#aa541b838442aaf7693d528dabd049790',1,'utl::ostream_dev::begin() const noexcept'],['../classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#ab1319beb5c2d1d84adb54c83d73d34b6',1,'utl::ostream_dev< virtual_tag, data_t >::begin() noexcept'],['../classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#a43515a84a7f31d33a1bcc5c352ae3809',1,'utl::ostream_dev< virtual_tag, data_t >::begin() const noexcept'],['../classutl_1_1out__dev.html#a6396fb83348828e37d853d1566b0d742',1,'utl::out_dev::begin() noexcept'],['../classutl_1_1out__dev.html#ab08cdc4935ec15a388e34610e905d375',1,'utl::out_dev::begin() const noexcept'],['../classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#ac3df041ff2e72454035cd879ddf1332d',1,'utl::out_dev< virtual_tag, data_t, streamsize >::begin() noexcept'],['../classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a35edcf840e3ba2b53734a128181da6e8',1,'utl::out_dev< virtual_tag, data_t, streamsize >::begin() const noexcept']]], + ['bidirectional_5fiterator_5ftag',['bidirectional_iterator_tag',['../structutl_1_1bidirectional__iterator__tag.html',1,'utl']]], + ['bind_5fback',['bind_back',['../structutl_1_1meta_1_1bind__back.html',1,'utl::meta']]], + ['bind_5ffront',['bind_front',['../structutl_1_1meta_1_1bind__front.html',1,'utl::meta']]], + ['bit',['bit',['../classutl_1_1__1wire__i.html#a197e062037f88871de9205519ec78122',1,'utl::_1wire_i::bit()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a10fa5e0409844b816a12c92b22dfe454',1,'utl::_1wire_i< virtual_tag >::bit()=0'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#af3890198c2ff351b2d0b8f7c6bbb5e75',1,'utl::_1wire_i< virtual_tag >::bit(bool)=0'],['../classutl_1_1__1wire__uart__i.html#a7bd53d23f567a31177f29fcbda4da09c',1,'utl::_1wire_uart_i::bit()'],['../classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html#af9ce2c52c3446978f9a7436b520f578c',1,'utl::_1wire_uart_i< virtual_tag >::bit()'],['../structutl_1_1id__t.html#a870b1c8cc468c8b9d7e76fd4d4fb8b2d',1,'utl::id_t::bit(uint8_t bit) const noexcept'],['../structutl_1_1id__t.html#af6b5f41a6367c32c4087be3d7a8f5fde',1,'utl::id_t::bit(uint8_t bit, bool v) noexcept']]], + ['bitand_5f',['bitand_',['../namespaceutl_1_1meta.html#aca6b42898b47945118c518bde9d25cc2',1,'utl::meta']]], + ['bitnot_5f',['bitnot_',['../namespaceutl_1_1meta.html#a9ea199752ca985d1b813d7127868566c',1,'utl::meta']]], + ['bitor_5f',['bitor_',['../namespaceutl_1_1meta.html#a1e2c2decdd22972fc8ce43203c0ef0d1',1,'utl::meta']]], + ['bitorder',['bitOrder',['../namespaceutl_1_1spi.html#aed6b713381c193c598572ebac0b284cc',1,'utl::spi']]], + ['bitxor_5f',['bitxor_',['../namespaceutl_1_1meta.html#a910e21345bc7e75dc7c0ceb4a4721754',1,'utl::meta']]], + ['bool_5f',['bool_',['../namespaceutl_1_1meta.html#a0bec5828d2df0edfb4bc084773a438f6',1,'utl::meta']]], + ['boolean',['Boolean',['../namespaceutl.html#a38e00606b4b45a2ac59fa4576b4498c6',1,'utl']]], + ['br',['BR',['../classutl_1_1__1wire__uart__i.html#a3a2efd9546f298b920011b3c6f933051',1,'utl::_1wire_uart_i::BR()'],['../classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html#a3685fa6f0d0c999a8d9527c98b671e51',1,'utl::_1wire_uart_i< virtual_tag >::BR()']]], + ['br_5fovr',['BR_OVR',['../classutl_1_1__1wire__uart__i.html#a3a2efd9546f298b920011b3c6f933051a4919b1e0ad524b6d6a791ff6c7f96af7',1,'utl::_1wire_uart_i::BR_OVR()'],['../classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html#a3685fa6f0d0c999a8d9527c98b671e51a36ea021ddb9cc702a0d0f4d6be547207',1,'utl::_1wire_uart_i< virtual_tag >::BR_OVR()']]], + ['br_5fovr_5frst',['BR_OVR_RST',['../classutl_1_1__1wire__uart__i.html#a3a2efd9546f298b920011b3c6f933051a6ea7cba754551a703cc94658e151f073',1,'utl::_1wire_uart_i::BR_OVR_RST()'],['../classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html#a3685fa6f0d0c999a8d9527c98b671e51ae0d3dbcffc80c340a90ddea06efad084',1,'utl::_1wire_uart_i< virtual_tag >::BR_OVR_RST()']]], + ['br_5fstd',['BR_STD',['../classutl_1_1__1wire__uart__i.html#a3a2efd9546f298b920011b3c6f933051a7ea7463824fb1b6bd5c31e1976351fb0',1,'utl::_1wire_uart_i::BR_STD()'],['../classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html#a3685fa6f0d0c999a8d9527c98b671e51a9dee26a395424eb26b9b86a8d4752c4c',1,'utl::_1wire_uart_i< virtual_tag >::BR_STD()']]], + ['br_5fstd_5frst',['BR_STD_RST',['../classutl_1_1__1wire__uart__i.html#a3a2efd9546f298b920011b3c6f933051adf1980b5eb0dee83ef1f76ba38671a43',1,'utl::_1wire_uart_i::BR_STD_RST()'],['../classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html#a3685fa6f0d0c999a8d9527c98b671e51ad1db55ca52bab3ce7fc9cebeece09823',1,'utl::_1wire_uart_i< virtual_tag >::BR_STD_RST()']]], + ['byte',['BYTE',['../classutl_1_1i2c__i.html#a7e2dde443c6c9bde4a2293beb22950c5ae409eb2ba6eb6801f52763ae370c350e',1,'utl::i2c_i::BYTE()'],['../classutl_1_1i2c__i_3_01virtual__tag_01_4.html#a260541de452a9a653162b8b109b26c09ae409eb2ba6eb6801f52763ae370c350e',1,'utl::i2c_i< virtual_tag >::BYTE()']]], + ['byte_5ft',['byte_t',['../namespaceutl.html#a1427cb5a2b13313147a902173b91e3c1',1,'utl']]], + ['bytenack',['BYTEnACK',['../classutl_1_1i2c__i.html#a7e2dde443c6c9bde4a2293beb22950c5a01af7e5aa5863a91810dd4e5d0e383ce',1,'utl::i2c_i::BYTEnACK()'],['../classutl_1_1i2c__i_3_01virtual__tag_01_4.html#a260541de452a9a653162b8b109b26c09a01af7e5aa5863a91810dd4e5d0e383ce',1,'utl::i2c_i< virtual_tag >::BYTEnACK()']]] +]; diff --git a/doc/html/search/all_3.html b/doc/html/search/all_3.html new file mode 100644 index 0000000..a3e6f7d --- /dev/null +++ b/doc/html/search/all_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/all_3.js b/doc/html/search/all_3.js new file mode 100644 index 0000000..2b8034f --- /dev/null +++ b/doc/html/search/all_3.js @@ -0,0 +1,88 @@ +var searchData= +[ + ['cat',['cat',['../namespaceutl_1_1meta.html#a70d0910ace47f4e12e8fa0788679044a',1,'utl::meta']]], + ['cat_5f',['cat_',['../structutl_1_1meta_1_1typelist_1_1cat__.html',1,'utl::meta::typelist< Ts >::cat_<... >'],['../structutl_1_1meta_1_1cat__impl_1_1cat__.html',1,'utl::meta::cat_impl::cat_< Lists >']]], + ['cat_5f_3c_20typelist_3c_20l1_2e_2e_2e_20_3e_20_3e',['cat_< typelist< L1... > >',['../structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_01_4.html',1,'utl::meta::cat_impl']]], + ['cat_5f_3c_20typelist_3c_20l1_2e_2e_2e_20_3e_2c_20typelist_3c_20l2_2e_2e_2e_20_3e_20_3e',['cat_< typelist< L1... >, typelist< L2... > >',['../structutl_1_1meta_1_1typelist_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4.html',1,'utl::meta::typelist< Ts >::cat_< typelist< L1... >, typelist< L2... > >'],['../structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4.html',1,'utl::meta::cat_impl::cat_< typelist< L1... >, typelist< L2... > >']]], + ['cat_5f_3c_20typelist_3c_20l1_2e_2e_2e_20_3e_2c_20typelist_3c_20l2_2e_2e_2e_20_3e_2c_20ln_2e_2e_2e_20_3e',['cat_< typelist< L1... >, typelist< L2... >, Ln... >',['../structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_00_01_ln_8_8_8_01_4.html',1,'utl::meta::cat_impl']]], + ['cat_5f_3c_20typelist_3c_20l1_2e_2e_2e_2c_20l2_2e_2e_2e_20_3e_2c_20ln_2e_2e_2e_20_3e',['cat_< typelist< L1..., L2... >, Ln... >',['../structutl_1_1meta_1_1cat__impl_1_1cat__.html',1,'utl::meta::cat_impl']]], + ['cat_5f_3c_3e',['cat_<>',['../structutl_1_1meta_1_1cat__impl_1_1cat___3_4.html',1,'utl::meta::cat_impl']]], + ['cbegin',['cbegin',['../structutl_1_1array.html#a4b48e7c5d18ca4f48e187a727bad65f1',1,'utl::array::cbegin()'],['../structutl_1_1id__t.html#a1e753829714d8782eab69249cc61a2ce',1,'utl::id_t::cbegin()'],['../classutl_1_1idx__dev.html#a7550b4dbfea20c02f4600821bf36dc0c',1,'utl::idx_dev::cbegin()'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a99e214886247aaff0567799ba7b5c6a9',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::cbegin()'],['../classutl_1_1in__dev.html#a1120a80c871e1ea8165b4943c767893d',1,'utl::in_dev::cbegin()'],['../classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#ae1960ea2ffdf369a0c180b57007e0af6',1,'utl::in_dev< virtual_tag, data_t, streamsize >::cbegin()'],['../classutl_1_1inbuf__dev.html#a3c24ad3be57e15019e3fbd579e5fccb3',1,'utl::inbuf_dev::cbegin()'],['../classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a6c8cceaa03a16daff1db33f45c79082c',1,'utl::inbuf_dev< virtual_tag, data_t, streamsize >::cbegin()'],['../classutl_1_1ostream__dev.html#adad6881acafe06f05545364b3bb3941c',1,'utl::ostream_dev::cbegin()'],['../classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#aafdd8c809f8c113ff8749d9d98ad5831',1,'utl::ostream_dev< virtual_tag, data_t >::cbegin()'],['../classutl_1_1out__dev.html#ace309e9fd1a113691c5a84fde268c676',1,'utl::out_dev::cbegin()'],['../classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a41a29c14ad5206a122e6bec5e3314dc4',1,'utl::out_dev< virtual_tag, data_t, streamsize >::cbegin()']]], + ['cend',['cend',['../structutl_1_1array.html#a707a8e620497173544904f3d11324604',1,'utl::array::cend()'],['../structutl_1_1id__t.html#aa2e98b11c236e1dda8decedbe18d283e',1,'utl::id_t::cend()'],['../classutl_1_1idx__dev.html#a6ee37538b456c4b53b0bd4b3757b5edf',1,'utl::idx_dev::cend()'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a413c6a4e5bc1c13ac0d78f5c3c228408',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::cend()'],['../classutl_1_1in__dev.html#ac54d9a1fb6241be460ffc792aac18b24',1,'utl::in_dev::cend()'],['../classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a08ffb1ab825979c182f042eeeaea57f3',1,'utl::in_dev< virtual_tag, data_t, streamsize >::cend()'],['../classutl_1_1inbuf__dev.html#a4b51121e0ecc1d43fd3fe7d05bb6fa56',1,'utl::inbuf_dev::cend()'],['../classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#abe9c16e5322249a05df6eb968a8adb56',1,'utl::inbuf_dev< virtual_tag, data_t, streamsize >::cend()'],['../classutl_1_1ostream__dev.html#a90d454a509be230af0595e5a57e91f56',1,'utl::ostream_dev::cend()'],['../classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#a7a883628b71791d0f26a47f9d801543d',1,'utl::ostream_dev< virtual_tag, data_t >::cend()'],['../classutl_1_1out__dev.html#a71487ce8df820dd688d1698b035fe4fe',1,'utl::out_dev::cend()'],['../classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a6d316ddd0f1797724f976254297c28fc',1,'utl::out_dev< virtual_tag, data_t, streamsize >::cend()']]], + ['char_5f',['char_',['../namespaceutl_1_1meta.html#a0fe31eec9b085e52aa45587e6d887419',1,'utl::meta']]], + ['check',['check',['../structutl_1_1meta_1_1detail_1_1is__applicable__.html#abdbf481cbdd5183b42e3cabdb77d282a',1,'utl::meta::detail::is_applicable_::check(int)'],['../structutl_1_1meta_1_1detail_1_1is__applicable__.html#a5095a52a4bdbf224a73c575e402ac797',1,'utl::meta::detail::is_applicable_::check(...)'],['../structutl_1_1meta_1_1detail_1_1is__applicable__q__.html#a6d258d626fb7889506d8d0c9c6ab14b1',1,'utl::meta::detail::is_applicable_q_::check(int)'],['../structutl_1_1meta_1_1detail_1_1is__applicable__q__.html#ac96d763225bd114b68b208211818d788',1,'utl::meta::detail::is_applicable_q_::check(...)'],['../structutl_1_1meta_1_1detail_1_1is__applicable__i__.html#ac03023fb86dba10d9dfbd0ba553daccd',1,'utl::meta::detail::is_applicable_i_::check(int)'],['../structutl_1_1meta_1_1detail_1_1is__applicable__i__.html#a680891ad1380504fa6917cb5f0040db5',1,'utl::meta::detail::is_applicable_i_::check(...)']]], + ['clkh_5f',['clkH_',['../classutl_1_1spi__bb__i.html#a3a9b68907304114573bc7321006fa539',1,'utl::spi_bb_i::clkH_()'],['../classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#a69ff11ae02a37042fc446ddee6a534b2',1,'utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::clkH_()']]], + ['clkhigh',['clkHigh',['../classutl_1_1spi__bb__i.html#a8fa5b901ced4ce734409ab4c20a1c1d2',1,'utl::spi_bb_i::clkHigh()'],['../classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#a31da01ac9f57390d05da49dc494f8964',1,'utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::clkHigh()']]], + ['clkl_5f',['clkL_',['../classutl_1_1spi__bb__i.html#a509a5828018f62e2627af67e8c6a32d5',1,'utl::spi_bb_i::clkL_()'],['../classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#a652413b2bf4a45c7326faa3fa9b8ef73',1,'utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::clkL_()']]], + ['clklow',['clkLow',['../classutl_1_1spi__bb__i.html#ae0a17d5879099f6ac92eee4dee59ab0f',1,'utl::spi_bb_i::clkLow()'],['../classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#a71630f7ea657f7b22640eaf3fdeff7ac',1,'utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::clkLow()']]], + ['clock',['clock',['../classutl_1_1i2c__i.html#aac5fed816701cc4543acd717ec804ac0',1,'utl::i2c_i::clock() const'],['../classutl_1_1i2c__i.html#ae4c59938aeeb1f0726195d425a4c0083',1,'utl::i2c_i::clock(uint32_t f)'],['../classutl_1_1i2c__i_3_01virtual__tag_01_4.html#a7b905fe7f0878a83d1c08a3fb95ac093',1,'utl::i2c_i< virtual_tag >::clock() const'],['../classutl_1_1i2c__i_3_01virtual__tag_01_4.html#a7a267d84ea677bc2d11b25dc828f67a7',1,'utl::i2c_i< virtual_tag >::clock(uint32_t c)'],['../classutl_1_1spi__i.html#a24cdd0c5ce4ed45a6c1b88ea43328634',1,'utl::spi_i::clock() const'],['../classutl_1_1spi__i.html#a0ebb46a523ace45fd69950f90f9b3af4',1,'utl::spi_i::clock(uint32_t c)'],['../classutl_1_1spi__i_3_01virtual__tag_01_4.html#a92a9350f72d3fca45b0900bf2bf5e8d9',1,'utl::spi_i< virtual_tag >::clock() const'],['../classutl_1_1spi__i_3_01virtual__tag_01_4.html#af168fba0d949aade779a63abf9f4bad2',1,'utl::spi_i< virtual_tag >::clock(uint32_t c)']]], + ['cmd_5falarm_5fsearch',['CMD_ALARM_SEARCH',['../classutl_1_1__1wire__i.html#a915f13cf9dbb891eeac73b527a5b9614aab6cb0f1201ca9efeaef8899dab0a637',1,'utl::_1wire_i::CMD_ALARM_SEARCH()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a8b35a329e022c103b9fac49711bfb268a93bb90282121f6cda0ebff1b0444daff',1,'utl::_1wire_i< virtual_tag >::CMD_ALARM_SEARCH()']]], + ['cmd_5fmatch',['CMD_MATCH',['../classutl_1_1__1wire__i.html#a915f13cf9dbb891eeac73b527a5b9614a15131061d5cc629dbd1f2b7c2ff1b79b',1,'utl::_1wire_i::CMD_MATCH()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a8b35a329e022c103b9fac49711bfb268a21d20824a61b5ff144fe098447e16fe0',1,'utl::_1wire_i< virtual_tag >::CMD_MATCH()']]], + ['cmd_5fovdr_5fmatch',['CMD_OVDR_MATCH',['../classutl_1_1__1wire__i.html#a915f13cf9dbb891eeac73b527a5b9614a8aba49759413e945e43c6114f60a6617',1,'utl::_1wire_i::CMD_OVDR_MATCH()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a8b35a329e022c103b9fac49711bfb268afb3bb5319151b723cc9f84cc79fe8243',1,'utl::_1wire_i< virtual_tag >::CMD_OVDR_MATCH()']]], + ['cmd_5fovdr_5fskip',['CMD_OVDR_SKIP',['../classutl_1_1__1wire__i.html#a915f13cf9dbb891eeac73b527a5b9614af450a6ccd821f0c2e769e67b99df4cc7',1,'utl::_1wire_i::CMD_OVDR_SKIP()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a8b35a329e022c103b9fac49711bfb268a6e4b8f1ad455eed7b241df4ae5a82610',1,'utl::_1wire_i< virtual_tag >::CMD_OVDR_SKIP()']]], + ['cmd_5fread_5from',['CMD_READ_ROM',['../classutl_1_1__1wire__i.html#a915f13cf9dbb891eeac73b527a5b9614a07e40db0f36ce4354babe1809f31e20b',1,'utl::_1wire_i::CMD_READ_ROM()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a8b35a329e022c103b9fac49711bfb268a48f3ede59d1cfc441475717e5d7a7524',1,'utl::_1wire_i< virtual_tag >::CMD_READ_ROM()']]], + ['cmd_5fsearch_5from',['CMD_SEARCH_ROM',['../classutl_1_1__1wire__i.html#a915f13cf9dbb891eeac73b527a5b9614a8eb4090d17ac88370c93f3246c146e75',1,'utl::_1wire_i::CMD_SEARCH_ROM()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a8b35a329e022c103b9fac49711bfb268abe017fdaf8516b58894a146229de14de',1,'utl::_1wire_i< virtual_tag >::CMD_SEARCH_ROM()']]], + ['cmd_5fskip',['CMD_SKIP',['../classutl_1_1__1wire__i.html#a915f13cf9dbb891eeac73b527a5b9614a440008f9edb49be5eca22c50302dff44',1,'utl::_1wire_i::CMD_SKIP()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a8b35a329e022c103b9fac49711bfb268acaf6f1b98add4a78888c1a6df8888c29',1,'utl::_1wire_i< virtual_tag >::CMD_SKIP()']]], + ['command',['Command',['../classutl_1_1__1wire__i.html#a915f13cf9dbb891eeac73b527a5b9614',1,'utl::_1wire_i::Command()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a8b35a329e022c103b9fac49711bfb268',1,'utl::_1wire_i< virtual_tag >::Command()']]], + ['common',['Common',['../namespaceutl.html#a79e23f98aa58c2dcd111743a096ef092',1,'utl']]], + ['common_5freference',['common_reference',['../structutl_1_1common__impl_1_1common__reference.html',1,'utl::common_impl::common_reference<... >'],['../namespaceutl.html#a3970b90f0e0fd9f801cfcb1d955e3d42',1,'utl::common_reference()']]], + ['common_5freference_3c_20common_5freference_5ft_3c_20t_2c_20u_20_3e_2c_20v_2c_20w_2e_2e_2e_20_3e',['common_reference< common_reference_t< T, U >, V, W... >',['../structutl_1_1common__impl_1_1common__reference.html',1,'utl::common_impl']]], + ['common_5freference_3c_20t_20_3e',['common_reference< T >',['../structutl_1_1common__impl_1_1common__reference_3_01_t_01_4.html',1,'utl::common_impl']]], + ['common_5freference_3c_20t_2c_20u_20_3e',['common_reference< T, U >',['../structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_01_4.html',1,'utl::common_impl']]], + ['common_5freference_3c_20t_2c_20u_2c_20v_2c_20w_2e_2e_2e_20_3e',['common_reference< T, U, V, W... >',['../structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_00_01_v_00_01_w_8_8_8_01_4.html',1,'utl::common_impl']]], + ['common_5freference_5ft',['common_reference_t',['../namespaceutl_1_1common__impl.html#adc4b085a84c0355fda341475074ff230',1,'utl::common_impl::common_reference_t()'],['../namespaceutl.html#a4d76d9e29b830c16ad7dd34e3800a746',1,'utl::common_reference_t()']]], + ['commonreference',['CommonReference',['../namespaceutl.html#a1cc37f121888dcc030b8e676b077024f',1,'utl']]], + ['comp_5feq',['comp_eq',['../namespaceutl_1_1meta.html#a7ae2d08147055946f1b9345e579a26b6',1,'utl::meta']]], + ['comp_5fge',['comp_ge',['../namespaceutl_1_1meta.html#ae6c552e8e99ac5578f865f17c1d0efdc',1,'utl::meta']]], + ['comp_5fgt',['comp_gt',['../namespaceutl_1_1meta.html#a3c4784ad3eb1f745c58b9a4b65a406e8',1,'utl::meta']]], + ['comp_5fle',['comp_le',['../namespaceutl_1_1meta.html#afb9a35dc5ef40b5bf9902c0daec7f1af',1,'utl::meta']]], + ['comp_5flt',['comp_lt',['../namespaceutl_1_1meta.html#a1a948746d1758a05c0ae71cfd114b05d',1,'utl::meta']]], + ['comp_5fne',['comp_ne',['../namespaceutl_1_1meta.html#af92bee16de47b16ba01a8efac686b488',1,'utl::meta']]], + ['compare',['compare',['../classutl_1_1__1wire__id__t.html#aef89950aeb9d40ca058fabcc5532e01d',1,'utl::_1wire_id_t']]], + ['compose',['compose',['../namespaceutl_1_1meta.html#a4f0c06cabe66bc73b703eb8509c7bb07',1,'utl::meta']]], + ['compose_5f',['compose_',['../structutl_1_1meta_1_1detail_1_1compose__.html',1,'utl::meta::detail']]], + ['compose_5f_3c_20fn0_20_3e',['compose_< Fn0 >',['../structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_01_4.html',1,'utl::meta::detail']]], + ['compose_5f_3c_20fn0_2c_20fns_2e_2e_2e_20_3e',['compose_< Fn0, Fns... >',['../structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_00_01_fns_8_8_8_01_4.html',1,'utl::meta::detail']]], + ['compose_5ff',['compose_f',['../namespaceutl_1_1meta.html#a729294327829b3068632da1235dc3090',1,'utl::meta']]], + ['compose_5ff_5f',['compose_f_',['../structutl_1_1meta_1_1detail_1_1compose__f__.html',1,'utl::meta::detail']]], + ['compose_5ff_5f_3c_20fn0_20_3e',['compose_f_< Fn0 >',['../structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_01_4.html',1,'utl::meta::detail']]], + ['compose_5ff_5f_3c_20fn0_2c_20fns_2e_2e_2e_20_3e',['compose_f_< Fn0, Fns... >',['../structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_00_01_fns_8_8_8_01_4.html',1,'utl::meta::detail']]], + ['concepts',['Concepts',['../group__concepts.html',1,'']]], + ['concepts_2eh',['concepts.h',['../concepts_8h.html',1,'']]], + ['const_5fiterator',['const_iterator',['../structutl_1_1array.html#ab1b4f132f7babac61535fe1f7634089a',1,'utl::array::const_iterator()'],['../structutl_1_1id__t.html#ae27418faa4801ec414140df1bc422350',1,'utl::id_t::const_iterator()'],['../classutl_1_1idx__dev.html#afa0e264f696f45c5a1b663c7c868a510',1,'utl::idx_dev::const_iterator()'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a66a2229a8f511c9eb147072211bbda92',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::const_iterator()'],['../classutl_1_1in__dev.html#a686e6cda465a7e08b29465a75740e043',1,'utl::in_dev::const_iterator()'],['../classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#afbb0032261579546e26972be1ab8f4e9',1,'utl::in_dev< virtual_tag, data_t, streamsize >::const_iterator()'],['../classutl_1_1inbuf__dev.html#a173c37503cdd40e7ac1be25759553c24',1,'utl::inbuf_dev::const_iterator()'],['../classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#aa27a4fdb726f1b44d965ebcd84457aab',1,'utl::inbuf_dev< virtual_tag, data_t, streamsize >::const_iterator()'],['../classutl_1_1ostream__dev.html#a04f153a089085daceda6a55854789a95',1,'utl::ostream_dev::const_iterator()'],['../classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#abcb00d6a76ac3baa46283c631c020b9c',1,'utl::ostream_dev< virtual_tag, data_t >::const_iterator()'],['../classutl_1_1out__dev.html#acaf94b09de592226f78d4d2d43f348ed',1,'utl::out_dev::const_iterator()'],['../classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a690f4d4b54e352b64bd484a15138df64',1,'utl::out_dev< virtual_tag, data_t, streamsize >::const_iterator()']]], + ['const_5fpointer',['const_pointer',['../structutl_1_1array.html#a61ccd50cead4ae2041fa561b1cf4d79d',1,'utl::array::const_pointer()'],['../structutl_1_1id__t.html#a6fbd7a944a981e0cc293319e25d77220',1,'utl::id_t::const_pointer()']]], + ['const_5freference',['const_reference',['../structutl_1_1array.html#aab01825d62c21fcf252a64fbeda2bbc4',1,'utl::array::const_reference()'],['../structutl_1_1id__t.html#aa7a965a5bb74490f5a999d5fa08cee2c',1,'utl::id_t::const_reference()']]], + ['const_5freverse_5fiterator',['const_reverse_iterator',['../structutl_1_1array.html#a2870f89643a20193a2fc420476833256',1,'utl::array::const_reverse_iterator()'],['../structutl_1_1id__t.html#adac2f02dfe10ad607f5b226fd98bd0d6',1,'utl::id_t::const_reverse_iterator()']]], + ['constructible',['Constructible',['../namespaceutl.html#a2a3ef7a9c788ffc1291ce15d2e5869bf',1,'utl']]], + ['contiguous_5fiterator_5ftag',['contiguous_iterator_tag',['../structutl_1_1contiguous__iterator__tag.html',1,'utl']]], + ['convertibleto',['ConvertibleTo',['../namespaceutl.html#a9c88a03a5b6dd66200e86f98fb1eb9eb',1,'utl']]], + ['copyable',['Copyable',['../namespaceutl.html#ac300f0e204f0ec4bd0ca38a551bb2b88',1,'utl']]], + ['copyassignable',['CopyAssignable',['../namespaceutl.html#a1be866c815c4fcb2a7344650c3491c0c',1,'utl']]], + ['copyconstructible',['CopyConstructible',['../namespaceutl.html#afb0f121b33b44640406b724c4d582b70',1,'utl']]], + ['count',['count',['../namespaceutl_1_1meta.html#ab5508236016638fa8e6b97cd17dfc9c2',1,'utl::meta']]], + ['count_5fif',['count_if',['../namespaceutl_1_1meta.html#a981e18b40d69cdd76466de7bfe24e619',1,'utl::meta']]], + ['count_5fif_5f',['count_if_',['../structutl_1_1meta_1_1count__if__impl_1_1count__if__.html',1,'utl::meta::count_if_impl']]], + ['count_5fif_5f_3c_20typelist_3c_20head_2c_20tail_2e_2e_2e_20_3e_2c_20fn_2c_20n_20_3e',['count_if_< typelist< Head, Tail... >, Fn, N >',['../structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.html',1,'utl::meta::count_if_impl']]], + ['count_5fif_5f_3c_20typelist_3c_3e_2c_20fn_2c_20n_20_3e',['count_if_< typelist<>, Fn, N >',['../structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.html',1,'utl::meta::count_if_impl']]], + ['cpha',['cpha',['../namespaceutl_1_1spi.html#aa49fe33d495226891cef0a870cba59df',1,'utl::spi']]], + ['cpol',['cpol',['../namespaceutl_1_1spi.html#a89e3e1af5df0b6c37239f7e336969f8a',1,'utl::spi']]], + ['crbegin',['crbegin',['../structutl_1_1array.html#afdac98eac4c6edc09f478af083029eec',1,'utl::array::crbegin()'],['../structutl_1_1id__t.html#a9ba9d37208f8c4c964574b1a4e3e285a',1,'utl::id_t::crbegin()']]], + ['crc8',['crc8',['../classutl_1_1__1wire__id__t.html#a03a112d8910c67611a3b302fe7c0706b',1,'utl::_1wire_id_t::crc8() noexcept'],['../classutl_1_1__1wire__id__t.html#af3a0ea2c575f96ac01b0aac91166d767',1,'utl::_1wire_id_t::crc8() const noexcept']]], + ['cref_5f',['cref_',['../namespaceutl.html#a7d69beba08b81379703fd3b0ca42044d',1,'utl']]], + ['crend',['crend',['../structutl_1_1array.html#abcdc4718426e62fec38c380a4221b144',1,'utl::array::crend()'],['../structutl_1_1id__t.html#a5b358a67cec1f283e1685ddf7af5d8bd',1,'utl::id_t::crend()']]], + ['crtp_20idiom_20support_20header',['CRTP idiom support header',['../group__crtp.html',1,'']]], + ['crtp_2eh',['crtp.h',['../crtp_8h.html',1,'']]], + ['crtp_5ftag',['crtp_tag',['../structutl_1_1crtp__tag.html',1,'utl']]], + ['cur_5f',['cur_',['../classutl_1_1__1wire__i.html#af9adb646cdda935d9a5a26656669e785',1,'utl::_1wire_i::cur_()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a36d3c8a53b0759d8578a9065914f8d28',1,'utl::_1wire_i< virtual_tag >::cur_()']]], + ['cursor',['cursor',['../classutl_1_1istreamdev__it.html#a01ffeaa95a2b4b90f48505c38f35e024',1,'utl::istreamdev_it::cursor()'],['../classutl_1_1outdev__it.html#a6d8b5c831aecbc26af139cf849198635',1,'utl::outdev_it::cursor()'],['../classutl_1_1indev__it.html#a38b77b5de7904f6062980fd186585c3f',1,'utl::indev_it::cursor()'],['../classutl_1_1iodev__it.html#a4fa491f13549709b5a6da71281ca8632',1,'utl::iodev_it::cursor()'],['../classutl_1_1idx__dev.html#a5ec37ed1b09a484563e4ad21107ac5a5',1,'utl::idx_dev::cursor() const'],['../classutl_1_1idx__dev.html#ab49339f7ff0608ab460f0883224acb3c',1,'utl::idx_dev::cursor(idx_t idx)'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a2524b96ad86605bdadf47f54265154a7',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::cursor() const'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a4a0f9f2e977055dab73e2ecd0e49d97e',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::cursor(idx_t idx)'],['../classutl_1_1istreamdev__it.html#a343602446a76ddc893b8420a0ec73098',1,'utl::istreamdev_it::Cursor()'],['../classutl_1_1outdev__it.html#ab5cbe3695bf05af30b14b89f8a16594b',1,'utl::outdev_it::Cursor()'],['../classutl_1_1indev__it.html#a2646fbdd38807785263d7d0bbe2b703a',1,'utl::indev_it::Cursor()'],['../classutl_1_1iodev__it.html#a746eded7eb22cbff5441b41ec0aac30f',1,'utl::iodev_it::Cursor()']]], + ['cursor_5f',['cursor_',['../classutl_1_1istreamdev__it.html#aa455b33e506dfb2b86203b309ec8829a',1,'utl::istreamdev_it::cursor_()'],['../classutl_1_1outdev__it.html#ae570a13c1cc3a24388972f89d63015b5',1,'utl::outdev_it::cursor_()'],['../classutl_1_1indev__it.html#aab523007c0875372b156c90ba7fb963a',1,'utl::indev_it::cursor_()'],['../classutl_1_1iodev__it.html#afdfed02323d69331e54d599d309e8967',1,'utl::iodev_it::cursor_()'],['../classutl_1_1idx__dev.html#aa184474f9ccb50bf7e2763a072fe64c5',1,'utl::idx_dev::cursor_() const'],['../classutl_1_1idx__dev.html#aa72ce1d299e2e994b811f127e7ce133f',1,'utl::idx_dev::cursor_(idx_t idx)'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a8c635458e582869a9eddb6d9cb415556',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::cursor_() const =0'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a3e7c310125427367defa988b2830c08e',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::cursor_(idx_t)=0']]], + ['cxx_5fconcepts',['CXX_CONCEPTS',['../group__version.html#ga80d0fb430c83076ebe61d619a7e606a9',1,'version.h']]], + ['cxx_5ffold_5fexpressions',['CXX_FOLD_EXPRESSIONS',['../group__version.html#gad8bb48d6d660495b6eb3d4bbecd7ec26',1,'version.h']]], + ['cxx_5finline_5fvariables',['CXX_INLINE_VARIABLES',['../group__version.html#gad7f44253df62ec7f9455af26507a289b',1,'version.h']]], + ['cxx_5flib_5finvoke',['CXX_LIB_INVOKE',['../group__concepts.html#gae575ec6bb237dd55f86ef2827c63d784',1,'defines.h']]], + ['cxx_5fvariable_5ftemplates',['CXX_VARIABLE_TEMPLATES',['../group__version.html#gaa3f471a65b0eb6118e8a2cb547a46d7a',1,'version.h']]], + ['cxx_5fver',['CXX_VER',['../group__version.html#ga01247740b4b51ce21e9bb3c3c602996d',1,'version.h']]], + ['cxx_5fver_5fstd_5f11',['CXX_VER_STD_11',['../group__version.html#gabef125dbb6ab064efeef0491a2a43da6',1,'version.h']]], + ['cxx_5fver_5fstd_5f14',['CXX_VER_STD_14',['../group__version.html#gaaa8cecbe78cff8d75dba25e39d5205f9',1,'version.h']]], + ['cxx_5fver_5fstd_5f17',['CXX_VER_STD_17',['../group__version.html#ga20a6261e3bdd7cad0eb7850e29ddfbe0',1,'version.h']]] +]; diff --git a/doc/html/search/all_4.html b/doc/html/search/all_4.html new file mode 100644 index 0000000..6452295 --- /dev/null +++ b/doc/html/search/all_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/all_4.js b/doc/html/search/all_4.js new file mode 100644 index 0000000..ad66cd5 --- /dev/null +++ b/doc/html/search/all_4.js @@ -0,0 +1,31 @@ +var searchData= +[ + ['data',['data',['../structutl_1_1array.html#a32e4367239fb6fc2f9b0c700ef4e0de6',1,'utl::array::data() noexcept'],['../structutl_1_1array.html#a07bb0f3b54805d733e97025e68f8bcbc',1,'utl::array::data() const noexcept'],['../structutl_1_1id__t.html#a6b328d4c3175afaf9f22c8fa8b772eb6',1,'utl::id_t::data() noexcept'],['../structutl_1_1id__t.html#a67c50e2f7c4d7108023ea1e6ca4263eb',1,'utl::id_t::data() const noexcept']]], + ['data_5ftype',['data_type',['../classutl_1_1idx__dev.html#ace7a74e439972658d6006f83371ee0ca',1,'utl::idx_dev::data_type()'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#aa26f4d0326232c436f3a312edf89b7e1',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::data_type()'],['../classutl_1_1in__dev.html#acb38742b242e8cf90323d46a9907863d',1,'utl::in_dev::data_type()'],['../classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a6d418e7caeb88fa750148f1e8874dd79',1,'utl::in_dev< virtual_tag, data_t, streamsize >::data_type()'],['../classutl_1_1inbuf__dev.html#ae660dce5b5111b0ea4743e32b3d2c3aa',1,'utl::inbuf_dev::data_type()'],['../classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a261cc04ccf7edd02e1ab69225322dc4b',1,'utl::inbuf_dev< virtual_tag, data_t, streamsize >::data_type()'],['../classutl_1_1ostream__dev.html#af333211e6a4c20b86c35a1d4fd15b9c5',1,'utl::ostream_dev::data_type()'],['../classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#a0c182d46215479ac0169c741db773f3b',1,'utl::ostream_dev< virtual_tag, data_t >::data_type()'],['../classutl_1_1out__dev.html#ac6b32afc51452a7dd2297a41f74e63e4',1,'utl::out_dev::data_type()'],['../classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a6ebf2bb2132e972cd9f2daffa67d981b',1,'utl::out_dev< virtual_tag, data_t, streamsize >::data_type()']]], + ['dec',['dec',['../namespaceutl_1_1meta.html#abee96e75aadb364fdd0890aa3ee490b7',1,'utl::meta']]], + ['dec_5f',['dec_',['../classutl_1_1__1wire__i.html#acb00f6ded645dffafe56ea5e8502511a',1,'utl::_1wire_i::dec_()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a6afd1b2d7901b29ed686d7fdeaee5d58',1,'utl::_1wire_i< virtual_tag >::dec_()']]], + ['defaultconstructible',['DefaultConstructible',['../namespaceutl.html#aacd3a17129d764e8a80c615eb4b88dc3',1,'utl']]], + ['defer',['defer',['../namespaceutl_1_1meta.html#a48f9a1220931596a9652351d2e7242be',1,'utl::meta']]], + ['defer_5f',['defer_',['../structutl_1_1meta_1_1detail_1_1defer__.html',1,'utl::meta::detail']]], + ['defer_5fi',['defer_i',['../namespaceutl_1_1meta.html#a01f183f337439e414184beedc9bcf9e3',1,'utl::meta']]], + ['defer_5fi_5f',['defer_i_',['../structutl_1_1meta_1_1detail_1_1defer__i__.html',1,'utl::meta::detail']]], + ['defines_2eh',['defines.h',['../defines_8h.html',1,'']]], + ['delay',['delay',['../classutl_1_1i2c__bb__i.html#a18db1fab1be2aafbb2612242df2667f1',1,'utl::i2c_bb_i::delay()'],['../classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html#a5fa294a275580260ae570e4309607b6e',1,'utl::i2c_bb_i< virtual_tag >::delay()'],['../classutl_1_1spi__bb__i.html#a49c41f82754a6e8fa4209423a33a1762',1,'utl::spi_bb_i::delay()'],['../classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#a0215497da3f01d96b5ecb252262f130c',1,'utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::delay()']]], + ['derivedfrom',['DerivedFrom',['../namespaceutl.html#a0904cc4071a8ea97a1d646dc0a9ca85b',1,'utl']]], + ['destructible',['Destructible',['../namespaceutl.html#acf2f1df100b0cc4f127243a1a83a8469',1,'utl']]], + ['detected',['detected',['../structutl_1_1meta_1_1detail_1_1detector.html#a8090990f11c250f679b44a6fd48f8114',1,'utl::meta::detail::detector::detected()'],['../structutl_1_1meta_1_1detail_1_1detector_3_01_default_00_01void__t_3_01_op_3_01_args_8_8_8_01_4_0c35bdbd19f56980c0b5ee6d490bfb634.html#ac8aebc89aa52ef6bde346c593a8feb74',1,'utl::meta::detail::detector< Default, void_t< Op< Args... > >, Op, Args... >::detected()']]], + ['detected_5for',['detected_or',['../namespaceutl_1_1meta_1_1detail.html#a835827cb3116483228d6f7f774b68970',1,'utl::meta::detail']]], + ['detected_5for_5ft',['detected_or_t',['../namespaceutl_1_1meta.html#a8fd055bc6c6c3b1d551e9605aa35644c',1,'utl::meta']]], + ['detected_5ft',['detected_t',['../namespaceutl_1_1meta.html#aa654a286b3bc8e6d8116ee1f57087110',1,'utl::meta']]], + ['detection',['Detection',['../group__detection.html',1,'']]], + ['detection_2eh',['detection.h',['../detection_8h.html',1,'']]], + ['detector',['detector',['../structutl_1_1meta_1_1detail_1_1detector.html',1,'utl::meta::detail']]], + ['detector_3c_20default_2c_20void_5ft_3c_20op_3c_20args_2e_2e_2e_20_3e_20_3e_2c_20op_2c_20args_2e_2e_2e_20_3e',['detector< Default, void_t< Op< Args... > >, Op, Args... >',['../structutl_1_1meta_1_1detail_1_1detector_3_01_default_00_01void__t_3_01_op_3_01_args_8_8_8_01_4_0c35bdbd19f56980c0b5ee6d490bfb634.html',1,'utl::meta::detail']]], + ['dev_5fiterator_5ftraits',['dev_iterator_traits',['../structutl_1_1dev__iterator__traits.html',1,'utl']]], + ['dev_5fiterator_5ftraits_3c_20std_3a_3aoutput_5fiterator_5ftag_2c_20data_5ft_2c_20void_20_3e',['dev_iterator_traits< std::output_iterator_tag, data_t, void >',['../structutl_1_1dev__iterator__traits.html',1,'utl']]], + ['dev_5fiterator_5ftraits_3c_20std_3a_3aoutput_5fiterator_5ftag_2c_20iter_5ft_20_3e',['dev_iterator_traits< std::output_iterator_tag, iter_t >',['../structutl_1_1dev__iterator__traits.html',1,'utl']]], + ['dev_5fiterators_2eh',['dev_iterators.h',['../dev__iterators_8h.html',1,'']]], + ['difference_5ftype',['difference_type',['../structutl_1_1array.html#a7b0b7e9d236db2d3d90465fa6638d22b',1,'utl::array::difference_type()'],['../structutl_1_1id__t.html#a7341366f60f8ecd4a1e8dcefa33a4018',1,'utl::id_t::difference_type()'],['../structutl_1_1dev__iterator__traits.html#a7445a2713455342fb817d0cdaaf1855c',1,'utl::dev_iterator_traits::difference_type()'],['../classutl_1_1ostreamdev__it.html#abf3e651511a922a8d8a2f9eb5d23e162',1,'utl::ostreamdev_it::difference_type()'],['../classutl_1_1istreamdev__it.html#ae74eb71649f6d9d6c758477d5a729464',1,'utl::istreamdev_it::difference_type()'],['../classutl_1_1outdev__it.html#a08921b19038ae0fd919d507abb036b16',1,'utl::outdev_it::difference_type()'],['../classutl_1_1indev__it.html#abfeb8765e0e34491594113a8b1261f2a',1,'utl::indev_it::difference_type()'],['../classutl_1_1iodev__it.html#a3dd6b7953c425d027df92051b6332286',1,'utl::iodev_it::difference_type()']]], + ['divide',['divide',['../namespaceutl_1_1meta.html#ae1ec6fc1f76abbb2e5287aa91cd85068',1,'utl::meta']]], + ['dword_5ft',['dword_t',['../namespaceutl.html#abc93b88d0c0f95081ecd3d2194daf0fb',1,'utl']]] +]; diff --git a/doc/html/search/all_5.html b/doc/html/search/all_5.html new file mode 100644 index 0000000..e59e1d5 --- /dev/null +++ b/doc/html/search/all_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/all_5.js b/doc/html/search/all_5.js new file mode 100644 index 0000000..6b2d137 --- /dev/null +++ b/doc/html/search/all_5.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['empty',['empty',['../structutl_1_1array.html#ac919fc992acdda9b562f5fc6414552b6',1,'utl::array::empty()'],['../structutl_1_1id__t.html#a5052e5dd26342349236eff91766e332e',1,'utl::id_t::empty()'],['../structutl_1_1meta_1_1typelist.html#ac502a5ad1b830e75693c2e3c7a7b1cb8',1,'utl::meta::typelist::empty()'],['../namespaceutl_1_1meta.html#a58c1744750d0df133034f60a95f87e19',1,'utl::meta::empty()']]], + ['enable_5fif',['enable_if',['../namespaceutl_1_1meta.html#ab3fed26a4c7a8204accb349f0b6600e8',1,'utl::meta']]], + ['enable_5fif_5ft',['enable_if_t',['../namespaceutl_1_1meta.html#a372fe391d9567f66a81091f581e1fa01',1,'utl::meta']]], + ['end',['end',['../structutl_1_1array.html#a76158e0e9b7c019fe69ead7cd4800522',1,'utl::array::end() noexcept'],['../structutl_1_1array.html#a7a0cf890bc35437821e35484a1fd8fc7',1,'utl::array::end() const noexcept'],['../structutl_1_1id__t.html#ad3e1553b24e43c71b64d080922c42148',1,'utl::id_t::end() noexcept'],['../structutl_1_1id__t.html#a82bef2fee2dfad5d895af2b01b888c54',1,'utl::id_t::end() const noexcept'],['../classutl_1_1idx__dev.html#aae291a2bb6788f85aa543861ccdb51c5',1,'utl::idx_dev::end() noexcept'],['../classutl_1_1idx__dev.html#ae1cf97364a8264b390b361fc6b54b389',1,'utl::idx_dev::end() const noexcept'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#ad9166f4899994039eb64b6f63bcee621',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::end() noexcept'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a4da6ff073a9f8452ebbd5371e017e4b9',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::end() const noexcept'],['../classutl_1_1in__dev.html#aae7797f366d25091b63ad87b34ed4b48',1,'utl::in_dev::end() noexcept'],['../classutl_1_1in__dev.html#aecb438cbb0e2a6c3a926aad81e8c29c7',1,'utl::in_dev::end() const noexcept'],['../classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a9425910f709853ff9cd70b2331a026cc',1,'utl::in_dev< virtual_tag, data_t, streamsize >::end() noexcept'],['../classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a2b723a67fce37e74b594ee9c5dc07030',1,'utl::in_dev< virtual_tag, data_t, streamsize >::end() const noexcept'],['../classutl_1_1inbuf__dev.html#aea05a40b3c8966d1dd3978b40e0c6ac8',1,'utl::inbuf_dev::end() noexcept'],['../classutl_1_1inbuf__dev.html#aa862f748551da0bd92341f8f125b8aa3',1,'utl::inbuf_dev::end() const noexcept'],['../classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a0a85ea0b10edeb155b59d1a3dff43382',1,'utl::inbuf_dev< virtual_tag, data_t, streamsize >::end() noexcept'],['../classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#aa81447a9ed7f2428f587b42ecf8bc007',1,'utl::inbuf_dev< virtual_tag, data_t, streamsize >::end() const noexcept'],['../classutl_1_1ostream__dev.html#a3d2f837c438b1a97ec14384ba3382090',1,'utl::ostream_dev::end() noexcept'],['../classutl_1_1ostream__dev.html#af836e2bdffe1829593d889f98a35a726',1,'utl::ostream_dev::end() const noexcept'],['../classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#a853552686bba8432a6f53a9c21f83ac2',1,'utl::ostream_dev< virtual_tag, data_t >::end() noexcept'],['../classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#a8ea06a012f2d55f67421026116000337',1,'utl::ostream_dev< virtual_tag, data_t >::end() const noexcept'],['../classutl_1_1out__dev.html#a34aeac23c0184d243c6631e713208e27',1,'utl::out_dev::end() noexcept'],['../classutl_1_1out__dev.html#a0e89b3e0a5bddc3031b543ef32eb401e',1,'utl::out_dev::end() const noexcept'],['../classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#acabafe9e76d94c8044feb85996ebba5f',1,'utl::out_dev< virtual_tag, data_t, streamsize >::end() noexcept'],['../classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a3992eda54afec8aaa1cb8f040563add6',1,'utl::out_dev< virtual_tag, data_t, streamsize >::end() const noexcept']]], + ['eod',['eod',['../classutl_1_1outdev__it.html#ab5cbe3695bf05af30b14b89f8a16594ba23a4928e4a78f96314ad442f7bb72e18',1,'utl::outdev_it::eod()'],['../classutl_1_1indev__it.html#a2646fbdd38807785263d7d0bbe2b703aaa32e6ce1a7079ee7193a163f085857d5',1,'utl::indev_it::eod()'],['../classutl_1_1iodev__it.html#a746eded7eb22cbff5441b41ec0aac30fa135f130529a4b46b2b2cfd79d681a9c0',1,'utl::iodev_it::eod()']]], + ['eos',['eos',['../classutl_1_1istreamdev__it.html#a343602446a76ddc893b8420a0ec73098a5d43103cca12a6712ebf6d8118f46ec2',1,'utl::istreamdev_it']]], + ['equalitycomparable',['EqualityComparable',['../namespaceutl.html#a92a38a3d1638ccad068c24d1242ef63a',1,'utl']]], + ['equalitycomparablewith',['EqualityComparableWith',['../namespaceutl.html#aa2be0b64c41b392c5264de5f5fee094e',1,'utl']]], + ['eval',['eval',['../namespaceutl_1_1meta.html#aa5a37adba244ff4286f994111c4c02ea',1,'utl::meta']]] +]; diff --git a/doc/html/search/all_6.html b/doc/html/search/all_6.html new file mode 100644 index 0000000..f75a754 --- /dev/null +++ b/doc/html/search/all_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/all_6.js b/doc/html/search/all_6.js new file mode 100644 index 0000000..1148ace --- /dev/null +++ b/doc/html/search/all_6.js @@ -0,0 +1,26 @@ +var searchData= +[ + ['false_5f',['false_',['../namespaceutl_1_1meta.html#a55511dbaa0adb605ce22dcec11f8d22d',1,'utl::meta']]], + ['family',['family',['../classutl_1_1__1wire__id__t.html#adb30b65bcab59bdad980793377a8e52f',1,'utl::_1wire_id_t::family() noexcept'],['../classutl_1_1__1wire__id__t.html#a6ed0d86d1fce0073776d83092a874b91',1,'utl::_1wire_id_t::family() const noexcept']]], + ['fill',['fill',['../structutl_1_1array.html#a388a40a3a4450a562010859ef2286587',1,'utl::array::fill()'],['../structutl_1_1id__t.html#a99464dc25ccbc124e3c1a21f6889b23a',1,'utl::id_t::fill()']]], + ['filter',['filter',['../namespaceutl_1_1meta.html#ac72acc616316c322e750d20a46553ba4',1,'utl::meta']]], + ['filter_5f',['filter_',['../structutl_1_1meta_1_1filter__impl_1_1filter__.html',1,'utl::meta::filter_impl']]], + ['filter_5f_3c_20typelist_3c_20head_2c_20tail_2e_2e_2e_20_3e_2c_20fn_2c_20l_20_3e',['filter_< typelist< Head, Tail... >, Fn, L >',['../structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_l_01_4.html',1,'utl::meta::filter_impl']]], + ['filter_5f_3c_20typelist_3c_3e_2c_20fn_2c_20l_20_3e',['filter_< typelist<>, Fn, L >',['../structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_4_00_01_fn_00_01_l_01_4.html',1,'utl::meta::filter_impl']]], + ['find',['find',['../namespaceutl_1_1meta.html#af4c9b6350bba98cc0dd73e87cb4ce413',1,'utl::meta']]], + ['find_5fif',['find_if',['../namespaceutl_1_1meta.html#aacf124929c0cbb3b29d34679bff50a96',1,'utl::meta']]], + ['find_5fif_5f',['find_if_',['../structutl_1_1meta_1_1find__if__impl_1_1find__if__.html',1,'utl::meta::find_if_impl']]], + ['find_5fif_5f_3c_20typelist_3c_20head_2c_20tail_2e_2e_2e_20_3e_2c_20fn_2c_20n_20_3e',['find_if_< typelist< Head, Tail... >, Fn, N >',['../structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.html',1,'utl::meta::find_if_impl']]], + ['find_5fif_5f_3c_20typelist_3c_3e_2c_20fn_2c_20n_20_3e',['find_if_< typelist<>, Fn, N >',['../structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.html',1,'utl::meta::find_if_impl']]], + ['first',['first',['../classutl_1_1__1wire__i.html#a4b6d225963095d36eda832a1e0adba55',1,'utl::_1wire_i::first()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a0fb2e35eb9c244640014f69808ae2758',1,'utl::_1wire_i< virtual_tag >::first()']]], + ['first_5fof',['first_of',['../group__type.html#gaf7089523d21cd405c76985643f31092a',1,'utl::meta']]], + ['floatingpoint',['FloatingPoint',['../namespaceutl.html#a07e83d4763a298c1faf2b1069b55e286',1,'utl']]], + ['fold',['fold',['../namespaceutl_1_1meta.html#a6108f39d28c924146eff4143a61af226',1,'utl::meta']]], + ['fold_5f',['fold_',['../structutl_1_1meta_1_1fold__impl_1_1fold__.html',1,'utl::meta::fold_impl']]], + ['fold_5f_3c_20typelist_3c_20head_2c_20tail_2e_2e_2e_20_3e_2c_20v_2c_20fn_20_3e',['fold_< typelist< Head, Tail... >, V, Fn >',['../structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4.html',1,'utl::meta::fold_impl']]], + ['fold_5f_3c_20typelist_3c_3e_2c_20v0_2c_20fn_20_3e',['fold_< typelist<>, V0, Fn >',['../structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_4_00_01_v0_00_01_fn_01_4.html',1,'utl::meta::fold_impl']]], + ['forward_5fiterator_5ftag',['forward_iterator_tag',['../structutl_1_1forward__iterator__tag.html',1,'utl']]], + ['front',['front',['../structutl_1_1array.html#a3f325450d5240f982b2b712d72f9a411',1,'utl::array::front() noexcept'],['../structutl_1_1array.html#a055c38b4345d1aa5bb8cc9172887165c',1,'utl::array::front() const noexcept'],['../structutl_1_1id__t.html#a00d98ffd688e3c146b7dca509487b821',1,'utl::id_t::front() noexcept'],['../structutl_1_1id__t.html#a01a1945e5d9ee1b926bb305d65dbc28b',1,'utl::id_t::front() const noexcept'],['../namespaceutl_1_1meta.html#ace309fb2eff5c4a5a806b9393abea486',1,'utl::meta::front()']]], + ['front_5f',['front_',['../structutl_1_1meta_1_1front__impl_1_1front__.html',1,'utl::meta::front_impl']]], + ['front_5f_3c_20typelist_3c_20head_2c_20tail_2e_2e_2e_20_3e_20_3e',['front_< typelist< Head, Tail... > >',['../structutl_1_1meta_1_1front__impl_1_1front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.html',1,'utl::meta::front_impl']]] +]; diff --git a/doc/html/search/all_7.html b/doc/html/search/all_7.html new file mode 100644 index 0000000..88acd94 --- /dev/null +++ b/doc/html/search/all_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/all_7.js b/doc/html/search/all_7.js new file mode 100644 index 0000000..a97dd1b --- /dev/null +++ b/doc/html/search/all_7.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['get',['get',['../classutl_1_1idx__dev.html#a04f9404d7741c3c6ac421c530dfe867c',1,'utl::idx_dev::get(data_t &data, idx_t cursor)'],['../classutl_1_1idx__dev.html#aeef118cb863218cb2b5a1e8bb2dba600',1,'utl::idx_dev::get(data_t *data, size_t n, idx_t cursor)'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a6d5acffcb7f0ae7d34b47021b55aff6c',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::get(data_t &data, idx_t cursor)'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a58ce6002f3a5daabcc443aebee42e10b',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::get(data_t *data, size_t n, idx_t cursor)'],['../classutl_1_1in__dev.html#aa13a075d41f3e020f4f67c2a59d580a5',1,'utl::in_dev::get(data_t &data)'],['../classutl_1_1in__dev.html#a5536fdd877bc9f078a9ede43ccc283e7',1,'utl::in_dev::get(data_t *data, size_t n)'],['../classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#aed9cb2dea774c6569b5e63aec8e0b50c',1,'utl::in_dev< virtual_tag, data_t, streamsize >::get(data_t &data)'],['../classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a12c2da025b94a200fc73133c206c017e',1,'utl::in_dev< virtual_tag, data_t, streamsize >::get(data_t *data, size_t n)'],['../classutl_1_1inbuf__dev.html#a7856963b0bb0bf294be53ea20f3564d0',1,'utl::inbuf_dev::get(data_t &data)'],['../classutl_1_1inbuf__dev.html#a9290fbfeebac0d161f800bc1522ea5a6',1,'utl::inbuf_dev::get(data_t *data, size_t n)'],['../classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#aef2177d9f52b58b6b5f5c9115fbc893e',1,'utl::inbuf_dev< virtual_tag, data_t, streamsize >::get(data_t &data)'],['../classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#ac2028f0e3b8f48e12bbcbf22cecbfe83',1,'utl::inbuf_dev< virtual_tag, data_t, streamsize >::get(data_t *data, size_t n)'],['../namespaceutl.html#a29057d2e164fe6dd3f3095f0d69c6546',1,'utl::get(array< _Tp, _Nm > &arr) noexcept'],['../namespaceutl.html#ab0087ff901c30848b7ac6f5ffa31f5cf',1,'utl::get(array< _Tp, _Nm > &&arr) noexcept'],['../namespaceutl.html#aad376ab583a0db920180465f9f35d67b',1,'utl::get(const array< _Tp, _Nm > &arr) noexcept']]], + ['get_5f',['get_',['../classutl_1_1idx__dev.html#acc5ca7cdc56121ef7044ef89253b89b4',1,'utl::idx_dev::get_(data_t &data, idx_t idx)'],['../classutl_1_1idx__dev.html#a268d9f5940e7621affca5bffde8830b9',1,'utl::idx_dev::get_(data_t *data, size_t n, idx_t idx)'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a12bebbab7f13ee42d85a7c3c85b445ca',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::get_(data_t &, idx_t)=0'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#afbc848e9c2232d8921f8d5f34ac90c00',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::get_(data_t *, size_t n, idx_t)=0'],['../classutl_1_1in__dev.html#a243dbc2e6acd2c2baf56c3c9861a0abf',1,'utl::in_dev::get_(data_t &data)'],['../classutl_1_1in__dev.html#a374e6cc495d5885ee6be8973c5f4eb8e',1,'utl::in_dev::get_(data_t *data, size_t n)'],['../classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a23f3d6612d29c53c3ab09c6adf7e1bff',1,'utl::in_dev< virtual_tag, data_t, streamsize >::get_(data_t &data)=0'],['../classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#ad8c95f8b4cf9b22e0dbecbf62fdf584e',1,'utl::in_dev< virtual_tag, data_t, streamsize >::get_(data_t *data, size_t n)=0'],['../classutl_1_1inbuf__dev.html#ab2be58702c31d59e02683d5ff43c9dd6',1,'utl::inbuf_dev::get_(data_t &data)'],['../classutl_1_1inbuf__dev.html#a2f835b56beec0efc5d1cd2088e6a40cb',1,'utl::inbuf_dev::get_(data_t *data, size_t n)'],['../classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a061547eefd51a7a0fac1c2aa6b410b84',1,'utl::inbuf_dev< virtual_tag, data_t, streamsize >::get_(data_t &data)=0'],['../classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a961179ceef8c0a0ce75d71cccd591a10',1,'utl::inbuf_dev< virtual_tag, data_t, streamsize >::get_(data_t *data, size_t n)=0']]] +]; diff --git a/doc/html/search/all_8.html b/doc/html/search/all_8.html new file mode 100644 index 0000000..b74d5fd --- /dev/null +++ b/doc/html/search/all_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/all_8.js b/doc/html/search/all_8.js new file mode 100644 index 0000000..ce4776b --- /dev/null +++ b/doc/html/search/all_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['head_5f',['head_',['../structutl_1_1meta_1_1at__impl_1_1at___3_01typelist_3_01_list_8_8_8_01_4_00_01_n_01_4.html#ae3269f1784b11ab8789715d3b213e18b',1,'utl::meta::at_impl::at_< typelist< List... >, N >']]], + ['high',['HIGH',['../namespaceutl_1_1spi.html#a89e3e1af5df0b6c37239f7e336969f8aab89de3b4b81c4facfac906edf29aec8c',1,'utl::spi::HIGH()'],['../namespaceutl_1_1spi.html#aa49fe33d495226891cef0a870cba59dfab89de3b4b81c4facfac906edf29aec8c',1,'utl::spi::HIGH()']]] +]; diff --git a/doc/html/search/all_9.html b/doc/html/search/all_9.html new file mode 100644 index 0000000..95e88dd --- /dev/null +++ b/doc/html/search/all_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/all_9.js b/doc/html/search/all_9.js new file mode 100644 index 0000000..fac3fcc --- /dev/null +++ b/doc/html/search/all_9.js @@ -0,0 +1,122 @@ +var searchData= +[ + ['i2c_2eh',['i2c.h',['../i2c_8h.html',1,'']]], + ['i2c_5fbb_2eh',['i2c_bb.h',['../i2c__bb_8h.html',1,'']]], + ['i2c_5fbb_5fi',['i2c_bb_i',['../classutl_1_1i2c__bb__i.html',1,'utl::i2c_bb_i< impl_t >'],['../classutl_1_1i2c__bb__i.html#ab657379ca2e4b3624e2d4520542a9464',1,'utl::i2c_bb_i::i2c_bb_i()'],['../classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html#a0c9341b2a60e9400523de0397c472a76',1,'utl::i2c_bb_i< virtual_tag >::i2c_bb_i()']]], + ['i2c_5fbb_5fi_3c_20virtual_5ftag_20_3e',['i2c_bb_i< virtual_tag >',['../classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html',1,'utl']]], + ['i2c_5fi',['i2c_i',['../classutl_1_1i2c__i.html',1,'utl::i2c_i< impl_t >'],['../classutl_1_1i2c__i.html#a84375c05d1c40d9992aa1290dd488410',1,'utl::i2c_i::i2c_i()=default'],['../classutl_1_1i2c__i.html#adff01408628f58b7c6ce9b0cd63d70df',1,'utl::i2c_i::i2c_i(const type &)=delete'],['../classutl_1_1i2c__i_3_01virtual__tag_01_4.html#a31335550747f46adabf153e9ad206882',1,'utl::i2c_i< virtual_tag >::i2c_i()=default'],['../classutl_1_1i2c__i_3_01virtual__tag_01_4.html#a5f530866d47aa343b4372da308f482dc',1,'utl::i2c_i< virtual_tag >::i2c_i(const type &)=delete']]], + ['i2c_5fi_3c_20i2c_5fbb_5fi_3c_20impl_5ft_20_3e_20_3e',['i2c_i< i2c_bb_i< impl_t > >',['../classutl_1_1i2c__i.html',1,'utl::i2c_i< i2c_bb_i< impl_t > >'],['../classutl_1_1i2c__bb__i.html#a9932eded730c8f9a7b1d15988082b699',1,'utl::i2c_bb_i::i2c_i< i2c_bb_i< impl_t > >()']]], + ['i2c_5fi_3c_20virtual_5ftag_20_3e',['i2c_i< virtual_tag >',['../classutl_1_1i2c__i_3_01virtual__tag_01_4.html',1,'utl']]], + ['id_2eh',['id.h',['../id_8h.html',1,'']]], + ['id_5ft',['id_t',['../structutl_1_1id__t.html',1,'utl']]], + ['id_5ft_3c_20uint8_5ft_2c_208_20_3e',['id_t< uint8_t, 8 >',['../structutl_1_1id__t.html',1,'utl']]], + ['id_5ftraits',['id_traits',['../structutl_1_1id__traits.html',1,'utl']]], + ['id_5ftraits_3c_20_5ftp_2c_200_20_3e',['id_traits< _Tp, 0 >',['../structutl_1_1id__traits_3_01___tp_00_010_01_4.html',1,'utl']]], + ['identity',['identity',['../structutl_1_1meta_1_1identity.html',1,'utl::meta']]], + ['identity_5ft',['identity_t',['../namespaceutl_1_1meta.html#a63c0b6b08f4c1d9bd3c4db7432e9b2af',1,'utl::meta']]], + ['idx_5fdev',['idx_dev',['../classutl_1_1idx__dev.html',1,'utl::idx_dev< impl_t, data_t, idx_t, N >'],['../classutl_1_1idx__dev.html#a90c6f576acb2a1ced3e973864d5d61b1',1,'utl::idx_dev::idx_dev()=default'],['../classutl_1_1idx__dev.html#a846e84b90848710336e2763c833eb8ec',1,'utl::idx_dev::idx_dev(const idx_dev_t &)=delete'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a32699d8dd6ed81986262ba74dccd3957',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::idx_dev()=default'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#ac00ac9cb399b3e08997c45f3204a3151',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::idx_dev(const idx_dev_t &)=delete'],['../namespaceutl.html#a80a0424d220ac1f7be50086617a05dbd',1,'utl::Idx_dev()']]], + ['idx_5fdev_2eh',['idx_dev.h',['../idx__dev_8h.html',1,'']]], + ['idx_5fdev_3c_20virtual_5ftag_2c_20data_5ft_2c_20idx_5ft_2c_20n_20_3e',['idx_dev< virtual_tag, data_t, idx_t, N >',['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html',1,'utl']]], + ['idx_5fdev_5ft',['idx_dev_t',['../classutl_1_1idx__dev.html#afe9d6e2398154ac585db7c5972a671e6',1,'utl::idx_dev::idx_dev_t()'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a14c20218e1843e6dc981a23aeb2fccb8',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::idx_dev_t()']]], + ['idx_5ftype',['idx_type',['../classutl_1_1idx__dev.html#aa8055ff3787876f243710ff194c7b8d0',1,'utl::idx_dev::idx_type()'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a838a5bd9c2abb86ccde6249dc549e11b',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::idx_type()']]], + ['if_5f',['if_',['../group__type.html#ga39cc4e727a8faa5ea176f543e62c05c0',1,'utl::meta']]], + ['if_5fc',['if_c',['../group__type.html#gaa3812817ce749832da73fdf5d2a85380',1,'utl::meta']]], + ['if_5fc_5f',['if_c_',['../structutl_1_1meta_1_1detail_1_1if__c__.html',1,'utl::meta::detail']]], + ['if_5fc_5f_3c_20false_2c_20then_2c_20else_20_3e',['if_c_< false, Then, Else >',['../structutl_1_1meta_1_1detail_1_1if__c___3_01false_00_01_then_00_01_else_01_4.html',1,'utl::meta::detail']]], + ['if_5fc_5f_3c_20true_2c_20then_20_3e',['if_c_< true, Then >',['../structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_01_4.html',1,'utl::meta::detail']]], + ['if_5fc_5f_3c_20true_2c_20then_2c_20else_20_3e',['if_c_< true, Then, Else >',['../structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_00_01_else_01_4.html',1,'utl::meta::detail']]], + ['impl_2eh',['impl.h',['../impl_8h.html',1,'']]], + ['in_5favail',['in_avail',['../classutl_1_1inbuf__dev.html#aa5b71a9b0c989c4686a053e9d5df9251',1,'utl::inbuf_dev::in_avail()'],['../classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#aba2a9c8e96a8a865e1a24b52600a9f13',1,'utl::inbuf_dev< virtual_tag, data_t, streamsize >::in_avail()']]], + ['in_5favail_5f',['in_avail_',['../classutl_1_1inbuf__dev.html#ac7af0c7df9eee2bcf02579b0fd1d8dea',1,'utl::inbuf_dev::in_avail_()'],['../classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#ac29561c3fc45b087d6d88514a78f6b4f',1,'utl::inbuf_dev< virtual_tag, data_t, streamsize >::in_avail_()']]], + ['in_5fdev',['in_dev',['../classutl_1_1in__dev.html',1,'utl::in_dev< impl_t, data_t, streamsize >'],['../classutl_1_1in__dev.html#a1ca16c382f5e0dd25089a4e06a40f2f2',1,'utl::in_dev::in_dev()=default'],['../classutl_1_1in__dev.html#a570c94b183eff6f8ca2d7d9ab5d9a7ea',1,'utl::in_dev::in_dev(const in_dev_t &)=delete'],['../classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a63a64b133693b7786f500406edc316f6',1,'utl::in_dev< virtual_tag, data_t, streamsize >::in_dev()=default'],['../classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a102939ee79bd9cd937255d342f7150f1',1,'utl::in_dev< virtual_tag, data_t, streamsize >::in_dev(const in_dev_t &)=delete'],['../namespaceutl.html#a1470ab9407ee21ea374b2c7a81e3511b',1,'utl::In_dev()']]], + ['in_5fdev_2eh',['in_dev.h',['../in__dev_8h.html',1,'']]], + ['in_5fdev_3c_20virtual_5ftag_2c_20data_5ft_2c_20streamsize_20_3e',['in_dev< virtual_tag, data_t, streamsize >',['../classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html',1,'utl']]], + ['in_5fdev_5ft',['in_dev_t',['../classutl_1_1in__dev.html#a1bcb5426bf837e27c9fa6128f25d2857',1,'utl::in_dev::in_dev_t()'],['../classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a1ab301d27deb2aef9d7298f348248ca9',1,'utl::in_dev< virtual_tag, data_t, streamsize >::in_dev_t()']]], + ['inbuf_5fdev',['inbuf_dev',['../classutl_1_1inbuf__dev.html',1,'utl::inbuf_dev< impl_t, data_t, streamsize >'],['../classutl_1_1inbuf__dev.html#a9bc1f15ed57132539749d390d5bb03b9',1,'utl::inbuf_dev::inbuf_dev()=default'],['../classutl_1_1inbuf__dev.html#a0fe7d9f726d8a0f2b23df6d9520b58ed',1,'utl::inbuf_dev::inbuf_dev(const inbuf_dev_t &)=delete'],['../classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a52240af74076f562c0f79275e44e3640',1,'utl::inbuf_dev< virtual_tag, data_t, streamsize >::inbuf_dev()=default'],['../classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a54b50015b6fd5f9699d7f0e155f6ef3b',1,'utl::inbuf_dev< virtual_tag, data_t, streamsize >::inbuf_dev(const inbuf_dev_t &)=delete'],['../namespaceutl.html#ac447a457f18a1c4dcd1dddb4c2789006',1,'utl::Inbuf_dev()']]], + ['inbuf_5fdev_2eh',['inbuf_dev.h',['../inbuf__dev_8h.html',1,'']]], + ['inbuf_5fdev_3c_20virtual_5ftag_2c_20data_5ft_2c_20streamsize_20_3e',['inbuf_dev< virtual_tag, data_t, streamsize >',['../classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html',1,'utl']]], + ['inbuf_5fdev_5ft',['inbuf_dev_t',['../classutl_1_1inbuf__dev.html#abd832bf35fa1ae0881e8cd86386e5b6b',1,'utl::inbuf_dev::inbuf_dev_t()'],['../classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a368e42d8a91039e938145d78980b415b',1,'utl::inbuf_dev< virtual_tag, data_t, streamsize >::inbuf_dev_t()']]], + ['inc',['inc',['../namespaceutl_1_1meta.html#af74f5af58b33241f1b94102742a73ab1',1,'utl::meta']]], + ['indev_5fit',['indev_it',['../classutl_1_1indev__it.html',1,'utl::indev_it< cont_t, iter_t, _beg, _size >'],['../classutl_1_1indev__it.html#aef3a45393dd12c64dfc9088c4fa34590',1,'utl::indev_it::indev_it() noexcept'],['../classutl_1_1indev__it.html#ad4e96e6bf81f9470d6017bef03fec570',1,'utl::indev_it::indev_it(cont_t *own, size_t cur=eod) noexcept'],['../classutl_1_1indev__it.html#a59c73bf03cd0b260fc7ffdd334db414b',1,'utl::indev_it::indev_it(const iterator_t &it) noexcept']]], + ['index_5f',['index_',['../namespaceutl_1_1meta.html#a5b7d36b9e568b81f2df897d56dc23b64',1,'utl::meta']]], + ['index_5fsequence',['index_sequence',['../namespaceutl_1_1meta.html#acb42e9c38b726174e64a36eea39239a5',1,'utl::meta']]], + ['index_5fsequence_5ffor',['index_sequence_for',['../namespaceutl_1_1meta.html#a7cdf7fbb62116925ccdecab03d3383d9',1,'utl::meta']]], + ['index_5ft',['index_t',['../namespaceutl.html#a676c0acd539dd04048dcc7b4d698577e',1,'utl']]], + ['init',['init',['../classutl_1_1istreamdev__it.html#a343602446a76ddc893b8420a0ec73098acf78c8879b68ea36e14323560fb9376f',1,'utl::istreamdev_it']]], + ['input',['INPUT',['../classutl_1_1i2c__bb__i.html#a4369b434fde250d503bfdc07d5c6a26daa84cc046d48610b05c21fd3670d0c829',1,'utl::i2c_bb_i::INPUT()'],['../classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html#af4bc7eeeb830e49046a1033e9c79db7faa84cc046d48610b05c21fd3670d0c829',1,'utl::i2c_bb_i< virtual_tag >::INPUT()']]], + ['input_5fiterator_5ftag',['input_iterator_tag',['../structutl_1_1input__iterator__tag.html',1,'utl']]], + ['int16_5f',['int16_',['../namespaceutl_1_1meta.html#a65bf025970a7ec0fd488c50a1b9c1038',1,'utl::meta']]], + ['int32_5f',['int32_',['../namespaceutl_1_1meta.html#aa907f027fe3df2cecca2cf60930086fb',1,'utl::meta']]], + ['int8_5f',['int8_',['../namespaceutl_1_1meta.html#aa0ca1890dde0298c4380f94582cc2186',1,'utl::meta']]], + ['int_5f',['int_',['../namespaceutl_1_1meta.html#a35b962b97f8277de66c1c8c02796eed4',1,'utl::meta']]], + ['integer_5fsequence',['integer_sequence',['../namespaceutl_1_1meta.html#abc3ba8590a6cdd451f64d6c5dcd8ff99',1,'utl::meta']]], + ['integral',['Integral',['../namespaceutl.html#ada9137016ddccf3339b2f6b3c409cc3c',1,'utl']]], + ['integral_2eh',['integral.h',['../integral_8h.html',1,'']]], + ['integral_5f',['integral_',['../namespaceutl_1_1meta.html#ad60242f998d1d236b7b9744b7b09c8f2',1,'utl::meta']]], + ['invocable',['Invocable',['../namespaceutl.html#a9d5bbdf19b08d6d714ec696b0ec44d0a',1,'utl']]], + ['invoke',['invoke',['../namespaceutl_1_1meta.html#a77630cd8adc01f7193f6cb834313d90f',1,'utl::meta::invoke()'],['../namespaceutl.html#adc675874b5426194d04112f76b356714',1,'utl::invoke()'],['../group__invoke.html',1,'(Global Namespace)']]], + ['invoke_2eh',['invoke.h',['../meta_2invoke_8h.html',1,'(Global Namespace)'],['../utility_2invoke_8h.html',1,'(Global Namespace)']]], + ['invoke_5fimpl_5f',['invoke_impl_',['../namespaceutl_1_1detail.html#a2c39a67272ada5da5f1b84115dadc4a1',1,'utl::detail::invoke_impl_(Type T::*f, T1 &&t1, Args &&... args)'],['../namespaceutl_1_1detail.html#a09341831ecc9aab67a23d3a47b2d114f',1,'utl::detail::invoke_impl_(F &&f, Args &&... args)']]], + ['invoke_5fresult',['invoke_result',['../namespaceutl.html#a9dd560a1b217a10af34d1ade3e77a76b',1,'utl']]], + ['invoke_5fresult_5f',['invoke_result_',['../structutl_1_1detail_1_1invoke__result__.html',1,'utl::detail']]], + ['invoke_5fresult_5f_3c_20true_2c_20_5fcallable_2c_20_5fargs_2e_2e_2e_20_3e',['invoke_result_< true, _Callable, _Args... >',['../structutl_1_1detail_1_1invoke__result___3_01true_00_01___callable_00_01___args_8_8_8_01_4.html',1,'utl::detail']]], + ['invoke_5fresult_5ft',['invoke_result_t',['../namespaceutl.html#ae40494acc30f2894c74544f3e9142933',1,'utl']]], + ['invoke_5ft',['invoke_t',['../namespaceutl_1_1meta.html#ac27f3e5f3ec42921d9f8a6bb85560cf1',1,'utl::meta']]], + ['iodev_5fit',['iodev_it',['../classutl_1_1iodev__it.html',1,'utl::iodev_it< cont_t, iter_t, _beg, _size >'],['../classutl_1_1iodev__it.html#a8f610ac513d5118345f148031c3e6b9c',1,'utl::iodev_it::iodev_it() noexcept'],['../classutl_1_1iodev__it.html#ad9ef3fd5595b70fbb94735707df656a3',1,'utl::iodev_it::iodev_it(cont_t *owner, size_t cursor=eod) noexcept'],['../classutl_1_1iodev__it.html#a41167751da91f6c99e05d0c164f75f0d',1,'utl::iodev_it::iodev_it(const iterator_t &it) noexcept']]], + ['is_5f1wire_5f',['is_1wire_',['../structutl_1_1__1wire__i__det_1_1is__1wire__.html',1,'utl::_1wire_i_det']]], + ['is_5f1wire_5f_3c_20_5ftp_2c_20meta_3a_3avoid_5ft_3c_20void_20_3e_20_3e',['is_1wire_< _Tp, meta::void_t< void > >',['../structutl_1_1__1wire__i__det_1_1is__1wire___3_01___tp_00_01meta_1_1void__t_3_01void_01_4_01_4.html',1,'utl::_1wire_i_det']]], + ['is_5fapplicable_5f',['is_applicable_',['../structutl_1_1meta_1_1detail_1_1is__applicable__.html',1,'utl::meta::detail']]], + ['is_5fapplicable_5fi_5f',['is_applicable_i_',['../structutl_1_1meta_1_1detail_1_1is__applicable__i__.html',1,'utl::meta::detail']]], + ['is_5fapplicable_5fit',['is_applicable_it',['../namespaceutl_1_1meta.html#add602488265f07c7a3080355350cda70',1,'utl::meta']]], + ['is_5fapplicable_5fq_5f',['is_applicable_q_',['../structutl_1_1meta_1_1detail_1_1is__applicable__q__.html',1,'utl::meta::detail']]], + ['is_5fapplicable_5fqt',['is_applicable_qt',['../namespaceutl_1_1meta.html#a52c0afa73f63dc889e44cc6cc180f1f8',1,'utl::meta']]], + ['is_5fapplicable_5ft',['is_applicable_t',['../namespaceutl_1_1meta.html#a695a94a2bbe51b0d0eec9bf82214d094',1,'utl::meta']]], + ['is_5fboolean_5f',['is_boolean_',['../structutl_1_1details_1_1is__boolean__.html',1,'utl::details']]], + ['is_5fboolean_5f_3c_20b_2c_20meta_3a_3avoid_5ft_3c_20meta_3a_3ause_5fif_5fsame_5ft_3c_20bool_2c_20decltype_28_21std_3a_3adeclval_3c_20cref_5f_3c_20b_20_3e_3e_28_29_29_3e_2c_20meta_3a_3ause_5fif_5fsame_5ft_3c_20bool_2c_20decltype_28std_3a_3adeclval_3c_20cref_5f_3c_20b_20_3e_3e_28_29_3d_3dstd_3a_3adeclval_3c_20cref_5f_3c_20b_20_3e_3e_28_29_29_3e_2c_20meta_3a_3ause_5fif_5fsame_5ft_3c_20bool_2c_20decltype_28std_3a_3adeclval_3c_20cref_5f_3c_20b_20_3e_3e_28_29_20_21_3dstd_3a_3adeclval_3c_20cref_5f_3c_20b_20_3e_3e_28_29_29_3e_2c_20meta_3a_3ause_5fif_5fsame_5ft_3c_20bool_2c_20decltype_28std_3a_3adeclval_3c_20cref_5f_3c_20b_20_3e_3e_28_29_20_26_26std_3a_3adeclval_3c_20cref_5f_3c_20b_20_3e_3e_28_29_29_3e_2c_20meta_3a_3ause_5fif_5fsame_5ft_3c_20bool_2c_20decltype_28std_3a_3adeclval_3c_20cref_5f_3c_20b_20_3e_3e_28_29_7c_7cstd_3a_3adeclval_3c_20cref_5f_3c_20b_20_3e_3e_28_29_29_3e_20_3e_20_3e',['is_boolean_< B, meta::void_t< meta::use_if_same_t< bool, decltype(!std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>()==std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>() !=std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>() &&std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>()||std::declval< cref_< B >>())> > >',['../structutl_1_1details_1_1is__boolean___3_01_b_00_01meta_1_1void__t_3_01meta_1_1use__if__same__t_37e77ed45a431955fc15b4c1210ad8491.html',1,'utl::details']]], + ['is_5fboolean_5ft',['is_boolean_t',['../namespaceutl_1_1details.html#a7f9309206778a6e9f0859c328b4288df',1,'utl::details']]], + ['is_5fdetected',['is_detected',['../namespaceutl_1_1meta.html#a5329219a9d2f195421a78d8e07873507',1,'utl::meta']]], + ['is_5fdetected_5fconvertible',['is_detected_convertible',['../namespaceutl_1_1meta.html#afa24702fa15a1d0a8a05761c54b79def',1,'utl::meta']]], + ['is_5fdetected_5fconvertible_5fv',['is_detected_convertible_v',['../namespaceutl_1_1meta.html#acba521b528e775be4b37d2e481e0f138',1,'utl::meta']]], + ['is_5fdetected_5fexact',['is_detected_exact',['../namespaceutl_1_1meta.html#ad5224ef66e8f40efaaf3ad3d605dd629',1,'utl::meta']]], + ['is_5fdetected_5fexact_5fv',['is_detected_exact_v',['../namespaceutl_1_1meta.html#a960827a1d72083a511f8ea4ccc8beceb',1,'utl::meta']]], + ['is_5fdetected_5fv',['is_detected_v',['../namespaceutl_1_1meta.html#a4f3184ccb8e8ba2a78e2d2e83a0b9885',1,'utl::meta']]], + ['is_5fi2c_5f',['is_i2c_',['../structutl_1_1i2c__i__details_1_1is__i2c__.html',1,'utl::i2c_i_details']]], + ['is_5fi2c_5f_3c_20_5ftp_2c_20meta_3a_3avoid_5ft_3c_20typename_20_5ftp_3a_3asequence_2c_20void_20_3e_20_3e',['is_i2c_< _Tp, meta::void_t< typename _Tp::Sequence, void > >',['../structutl_1_1i2c__i__details_1_1is__i2c___3_01___tp_00_01meta_1_1void__t_3_01typename_01___tp_1_1_sequence_00_01void_01_4_01_4.html',1,'utl::i2c_i_details']]], + ['is_5fidx_5fdev_5f',['is_idx_dev_',['../structutl_1_1idx__dev__details_1_1is__idx__dev__.html',1,'utl::idx_dev_details']]], + ['is_5fidx_5fdev_5f_3c_20_5ftp_2c_20void_5ft_3c_20typename_20_5ftp_3a_3adata_5ftype_2c_20typename_20_5ftp_3a_3apointer_5ftype_2c_20typename_20_5ftp_3a_3aiterator_2c_20typename_20_5ftp_3a_3aconst_5fiterator_2c_20use_5fif_5fsame_5ft_3c_20try_5fget1_5ft_3c_20_5ftp_20_3e_2c_20size_5ft_20_3e_2c_20use_5fif_5fsame_5ft_3c_20try_5fget2_5ft_3c_20_5ftp_20_3e_2c_20size_5ft_20_3e_2c_20use_5fif_5fsame_5ft_3c_20try_5fbegin_5ft_3c_20_5ftp_20_3e_2c_20typename_20_5ftp_3a_3aiterator_20_3e_2c_20use_5fif_5fsame_5ft_3c_20tryc_5fbegin_5ft_3c_20_5ftp_20_3e_2c_20typename_20_5ftp_3a_3aconst_5fiterator_20_3e_2c_20use_5fif_5fsame_5ft_3c_20try_5fcbegin_5ft_3c_20_5ftp_20_3e_2c_20typename_20_5ftp_3a_3aconst_5fiterator_20_3e_2c_20use_5fif_5fsame_5ft_3c_20try_5fend_5ft_3c_20_5ftp_20_3e_2c_20typename_20_5ftp_3a_3aiterator_20_3e_2c_20use_5fif_5fsame_5ft_3c_20tryc_5fend_5ft_3c_20_5ftp_20_3e_2c_20typename_20_5ftp_3a_3aconst_5fiterator_20_3e_2c_20use_5fif_5fsame_5ft_3c_20try_5fcend_5ft_3c_20_5ftp_20_3e_2c_20typename_20_5ftp_3a_3aconst_5fiterator_20_3e_20_3e_20_3e',['is_idx_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_get1_t< _Tp >, size_t >, use_if_same_t< try_get2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > >',['../structutl_1_1idx__dev__details_1_1is__idx__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1ae8b6b24c31c81bdd901da6e6387d84b.html',1,'utl::idx_dev_details']]], + ['is_5fidxdev_5fit_5f',['is_idxdev_it_',['../structutl_1_1idxdev__it__details_1_1is__idxdev__it__.html',1,'utl::idxdev_it_details']]], + ['is_5fidxdev_5fit_5f_3c_20_5ftp_2c_20meta_3a_3avoid_5ft_3c_20typename_20_5ftp_3a_3avalue_5ftype_2c_20typename_20_5ftp_3a_3adifference_5ftype_2c_20typename_20_5ftp_3a_3apointer_2c_20typename_20_5ftp_3a_3areference_2c_20void_20_3e_20_3e',['is_idxdev_it_< _Tp, meta::void_t< typename _Tp::value_type, typename _Tp::difference_type, typename _Tp::pointer, typename _Tp::reference, void > >',['../structutl_1_1idxdev__it__details_1_1is__idxdev__it___3_01___tp_00_01meta_1_1void__t_3_01typenamebd9ada52ca7b7570c26d0c280af5e635.html',1,'utl::idxdev_it_details']]], + ['is_5fin_5fdev_5f',['is_in_dev_',['../structutl_1_1in__dev__details_1_1is__in__dev__.html',1,'utl::in_dev_details']]], + ['is_5fin_5fdev_5f_3c_20_5ftp_2c_20void_5ft_3c_20typename_20_5ftp_3a_3adata_5ftype_2c_20typename_20_5ftp_3a_3apointer_5ftype_2c_20typename_20_5ftp_3a_3aiterator_2c_20typename_20_5ftp_3a_3aconst_5fiterator_2c_20use_5fif_5fsame_5ft_3c_20try_5fget1_5ft_3c_20_5ftp_20_3e_2c_20size_5ft_20_3e_2c_20use_5fif_5fsame_5ft_3c_20try_5fget2_5ft_3c_20_5ftp_20_3e_2c_20size_5ft_20_3e_2c_20use_5fif_5fsame_5ft_3c_20try_5fbegin_5ft_3c_20_5ftp_20_3e_2c_20typename_20_5ftp_3a_3aiterator_20_3e_2c_20use_5fif_5fsame_5ft_3c_20tryc_5fbegin_5ft_3c_20_5ftp_20_3e_2c_20typename_20_5ftp_3a_3aconst_5fiterator_20_3e_2c_20use_5fif_5fsame_5ft_3c_20try_5fcbegin_5ft_3c_20_5ftp_20_3e_2c_20typename_20_5ftp_3a_3aconst_5fiterator_20_3e_2c_20use_5fif_5fsame_5ft_3c_20try_5fend_5ft_3c_20_5ftp_20_3e_2c_20typename_20_5ftp_3a_3aiterator_20_3e_2c_20use_5fif_5fsame_5ft_3c_20tryc_5fend_5ft_3c_20_5ftp_20_3e_2c_20typename_20_5ftp_3a_3aconst_5fiterator_20_3e_2c_20use_5fif_5fsame_5ft_3c_20try_5fcend_5ft_3c_20_5ftp_20_3e_2c_20typename_20_5ftp_3a_3aconst_5fiterator_20_3e_20_3e_20_3e',['is_in_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_get1_t< _Tp >, size_t >, use_if_same_t< try_get2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > >',['../structutl_1_1in__dev__details_1_1is__in__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1dad922a62deb7c32e2cff18d66b8c887d2.html',1,'utl::in_dev_details']]], + ['is_5finbuf_5fdev_5f',['is_inbuf_dev_',['../structutl_1_1inbuf__dev__details_1_1is__inbuf__dev__.html',1,'utl::inbuf_dev_details']]], + ['is_5finbuf_5fdev_5f_3c_20_5ftp_2c_20void_5ft_3c_20typename_20_5ftp_3a_3adata_5ftype_2c_20typename_20_5ftp_3a_3apointer_5ftype_2c_20typename_20_5ftp_3a_3aiterator_2c_20typename_20_5ftp_3a_3aconst_5fiterator_2c_20use_5fif_5fsame_5ft_3c_20try_5fget1_5ft_3c_20_5ftp_20_3e_2c_20size_5ft_20_3e_2c_20use_5fif_5fsame_5ft_3c_20try_5fget2_5ft_3c_20_5ftp_20_3e_2c_20size_5ft_20_3e_2c_20use_5fif_5fsame_5ft_3c_20try_5fbegin_5ft_3c_20_5ftp_20_3e_2c_20typename_20_5ftp_3a_3aiterator_20_3e_2c_20use_5fif_5fsame_5ft_3c_20tryc_5fbegin_5ft_3c_20_5ftp_20_3e_2c_20typename_20_5ftp_3a_3aconst_5fiterator_20_3e_2c_20use_5fif_5fsame_5ft_3c_20try_5fcbegin_5ft_3c_20_5ftp_20_3e_2c_20typename_20_5ftp_3a_3aconst_5fiterator_20_3e_2c_20use_5fif_5fsame_5ft_3c_20try_5fend_5ft_3c_20_5ftp_20_3e_2c_20typename_20_5ftp_3a_3aiterator_20_3e_2c_20use_5fif_5fsame_5ft_3c_20tryc_5fend_5ft_3c_20_5ftp_20_3e_2c_20typename_20_5ftp_3a_3aconst_5fiterator_20_3e_2c_20use_5fif_5fsame_5ft_3c_20try_5fcend_5ft_3c_20_5ftp_20_3e_2c_20typename_20_5ftp_3a_3aconst_5fiterator_20_3e_20_3e_20_3e',['is_inbuf_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_get1_t< _Tp >, size_t >, use_if_same_t< try_get2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > >',['../structutl_1_1inbuf__dev__details_1_1is__inbuf__dev___3_01___tp_00_01void__t_3_01typename_01___tpc269ee3885240cc8c352f3c6b3a67cd7.html',1,'utl::inbuf_dev_details']]], + ['is_5findev_5fit_5f',['is_indev_it_',['../structutl_1_1indev__it__details_1_1is__indev__it__.html',1,'utl::indev_it_details']]], + ['is_5findev_5fit_5f_3c_20_5ftp_2c_20meta_3a_3avoid_5ft_3c_20typename_20_5ftp_3a_3avalue_5ftype_2c_20typename_20_5ftp_3a_3adifference_5ftype_2c_20typename_20_5ftp_3a_3apointer_2c_20typename_20_5ftp_3a_3areference_2c_20void_20_3e_20_3e',['is_indev_it_< _Tp, meta::void_t< typename _Tp::value_type, typename _Tp::difference_type, typename _Tp::pointer, typename _Tp::reference, void > >',['../structutl_1_1indev__it__details_1_1is__indev__it___3_01___tp_00_01meta_1_1void__t_3_01typename_06508604dcee4010234c84cc332fa196b.html',1,'utl::indev_it_details']]], + ['is_5finvocable',['is_invocable',['../structutl_1_1is__invocable.html',1,'utl']]], + ['is_5finvocable_5fr',['is_invocable_r',['../structutl_1_1is__invocable__r.html',1,'utl']]], + ['is_5fout_5fdev_5f',['is_out_dev_',['../structutl_1_1out__dev__details_1_1is__out__dev__.html',1,'utl::out_dev_details']]], + ['is_5fout_5fdev_5f_3c_20_5ftp_2c_20void_5ft_3c_20typename_20_5ftp_3a_3adata_5ftype_2c_20typename_20_5ftp_3a_3apointer_5ftype_2c_20typename_20_5ftp_3a_3aiterator_2c_20typename_20_5ftp_3a_3aconst_5fiterator_2c_20use_5fif_5fsame_5ft_3c_20try_5fput1_5ft_3c_20_5ftp_20_3e_2c_20size_5ft_20_3e_2c_20use_5fif_5fsame_5ft_3c_20try_5fput2_5ft_3c_20_5ftp_20_3e_2c_20size_5ft_20_3e_2c_20use_5fif_5fsame_5ft_3c_20try_5fbegin_5ft_3c_20_5ftp_20_3e_2c_20typename_20_5ftp_3a_3aiterator_20_3e_2c_20use_5fif_5fsame_5ft_3c_20tryc_5fbegin_5ft_3c_20_5ftp_20_3e_2c_20typename_20_5ftp_3a_3aconst_5fiterator_20_3e_2c_20use_5fif_5fsame_5ft_3c_20try_5fcbegin_5ft_3c_20_5ftp_20_3e_2c_20typename_20_5ftp_3a_3aconst_5fiterator_20_3e_2c_20use_5fif_5fsame_5ft_3c_20try_5fend_5ft_3c_20_5ftp_20_3e_2c_20typename_20_5ftp_3a_3aiterator_20_3e_2c_20use_5fif_5fsame_5ft_3c_20tryc_5fend_5ft_3c_20_5ftp_20_3e_2c_20typename_20_5ftp_3a_3aconst_5fiterator_20_3e_2c_20use_5fif_5fsame_5ft_3c_20try_5fcend_5ft_3c_20_5ftp_20_3e_2c_20typename_20_5ftp_3a_3aconst_5fiterator_20_3e_20_3e_20_3e',['is_out_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_put1_t< _Tp >, size_t >, use_if_same_t< try_put2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > >',['../structutl_1_1out__dev__details_1_1is__out__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1fbf8d2409fc6de9dd6b9649bedc1b379.html',1,'utl::out_dev_details']]], + ['is_5foutdev_5fit_5f',['is_outdev_it_',['../structutl_1_1outdev__it__details_1_1is__outdev__it__.html',1,'utl::outdev_it_details']]], + ['is_5foutdev_5fit_5f_3c_20_5ftp_2c_20meta_3a_3avoid_5ft_3c_20typename_20_5ftp_3a_3avalue_5ftype_2c_20typename_20_5ftp_3a_3adifference_5ftype_2c_20typename_20_5ftp_3a_3apointer_2c_20typename_20_5ftp_3a_3areference_2c_20void_20_3e_20_3e',['is_outdev_it_< _Tp, meta::void_t< typename _Tp::value_type, typename _Tp::difference_type, typename _Tp::pointer, typename _Tp::reference, void > >',['../structutl_1_1outdev__it__details_1_1is__outdev__it___3_01___tp_00_01meta_1_1void__t_3_01typename8786ebbbd0dc9ca1b14571e779d99d60.html',1,'utl::outdev_it_details']]], + ['is_5fref_5fwrapper',['is_ref_wrapper',['../structutl_1_1detail_1_1is__ref__wrapper.html',1,'utl::detail']]], + ['is_5fref_5fwrapper_3c_20std_3a_3areference_5fwrapper_3c_20u_20_3e_20_3e',['is_ref_wrapper< std::reference_wrapper< U > >',['../structutl_1_1detail_1_1is__ref__wrapper_3_01std_1_1reference__wrapper_3_01_u_01_4_01_4.html',1,'utl::detail']]], + ['is_5fspi_5f',['is_spi_',['../structutl_1_1spi__i__details_1_1is__spi__.html',1,'utl::spi_i_details']]], + ['is_5fspi_5f_3c_20_5ftp_2c_20meta_3a_3avoid_5ft_3c_20meta_3a_3ause_5fif_5fsame_5ft_3c_20try_5fcclock_5ft_3c_20_5ftp_20_3e_2c_20uint32_5ft_20_3e_2c_20meta_3a_3ause_5fif_5fsame_5ft_3c_20try_5fclock_5ft_3c_20_5ftp_20_3e_2c_20void_20_3e_2c_20meta_3a_3ause_5fif_5fsame_5ft_3c_20try_5ftx_5ft_3c_20_5ftp_20_3e_2c_20byte_5ft_20_3e_2c_20meta_3a_3ause_5fif_5fsame_5ft_3c_20try_5frx_5ft_3c_20_5ftp_20_3e_2c_20byte_5ft_20_3e_20_3e_20_3e',['is_spi_< _Tp, meta::void_t< meta::use_if_same_t< try_cclock_t< _Tp >, uint32_t >, meta::use_if_same_t< try_clock_t< _Tp >, void >, meta::use_if_same_t< try_tx_t< _Tp >, byte_t >, meta::use_if_same_t< try_rx_t< _Tp >, byte_t > > >',['../structutl_1_1spi__i__details_1_1is__spi___3_01___tp_00_01meta_1_1void__t_3_01meta_1_1use__if__sa2db29f6d65d34ecf5e49ec30b6600d78.html',1,'utl::spi_i_details']]], + ['is_5fstrict_5ftotally_5fordered_5f',['is_strict_totally_ordered_',['../structutl_1_1details_1_1is__strict__totally__ordered__.html',1,'utl::details']]], + ['is_5fstrict_5ftotally_5fordered_5f_3c_20t_2c_20meta_3a_3avoid_5ft_3c_20meta_3a_3ause_5fif_5fsame_5ft_3c_20bool_2c_20decltype_28std_3a_3adeclval_3c_20cref_5f_3c_20t_20_3e_3e_28_29_3c_20std_3a_3adeclval_3c_20cref_5f_3c_20t_20_3e_3e_28_29_29_3e_2c_20meta_3a_3ause_5fif_5fsame_5ft_3c_20bool_2c_20decltype_28std_3a_3adeclval_3c_20cref_5f_3c_20t_20_3e_3e_28_29_20_3e_20std_3a_3adeclval_3c_20cref_5f_3c_20t_20_3e_3e_28_29_29_3e_2c_20meta_3a_3ause_5fif_5fsame_5ft_3c_20bool_2c_20decltype_28std_3a_3adeclval_3c_20cref_5f_3c_20t_20_3e_3e_28_29_3c_3dstd_3a_3adeclval_3c_20cref_5f_3c_20t_20_3e_3e_28_29_29_3e_2c_20meta_3a_3ause_5fif_5fsame_5ft_3c_20bool_2c_20decltype_28std_3a_3adeclval_3c_20cref_5f_3c_20t_20_3e_3e_28_29_20_3e_3dstd_3a_3adeclval_3c_20cref_5f_3c_20t_20_3e_3e_28_29_29_3e_20_3e_20_3e',['is_strict_totally_ordered_< T, meta::void_t< meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()< std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() > std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()<=std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() >=std::declval< cref_< T >>())> > >',['../structutl_1_1details_1_1is__strict__totally__ordered___3_01_t_00_01meta_1_1void__t_3_01meta_1_1uab48bcfc89164f446368b35bcc7c8bcd.html',1,'utl::details']]], + ['is_5fstrict_5ftotally_5fordered_5ft',['is_strict_totally_ordered_t',['../namespaceutl_1_1details.html#a3d90ca0461264f84f75c7698f7bbb811',1,'utl::details']]], + ['is_5fstrict_5ftotally_5fordered_5fwith_5f',['is_strict_totally_ordered_with_',['../structutl_1_1details_1_1is__strict__totally__ordered__with__.html',1,'utl::details']]], + ['is_5fstrict_5ftotally_5fordered_5fwith_5f_3c_20t_2c_20u_2c_20meta_3a_3avoid_5ft_3c_20meta_3a_3ause_5fif_5fsame_5ft_3c_20bool_2c_20decltype_28std_3a_3adeclval_3c_20cref_5f_3c_20t_20_3e_3e_28_29_3c_20std_3a_3adeclval_3c_20cref_5f_3c_20u_20_3e_3e_28_29_29_3e_2c_20meta_3a_3ause_5fif_5fsame_5ft_3c_20bool_2c_20decltype_28std_3a_3adeclval_3c_20cref_5f_3c_20t_20_3e_3e_28_29_20_3e_20std_3a_3adeclval_3c_20cref_5f_3c_20u_20_3e_3e_28_29_29_3e_2c_20meta_3a_3ause_5fif_5fsame_5ft_3c_20bool_2c_20decltype_28std_3a_3adeclval_3c_20cref_5f_3c_20t_20_3e_3e_28_29_3c_3dstd_3a_3adeclval_3c_20cref_5f_3c_20u_20_3e_3e_28_29_29_3e_2c_20meta_3a_3ause_5fif_5fsame_5ft_3c_20bool_2c_20decltype_28std_3a_3adeclval_3c_20cref_5f_3c_20t_20_3e_3e_28_29_20_3e_3dstd_3a_3adeclval_3c_20cref_5f_3c_20u_20_3e_3e_28_29_29_3e_2c_20meta_3a_3ause_5fif_5fsame_5ft_3c_20bool_2c_20decltype_28std_3a_3adeclval_3c_20cref_5f_3c_20u_20_3e_3e_28_29_3c_20std_3a_3adeclval_3c_20cref_5f_3c_20t_20_3e_3e_28_29_29_3e_2c_20meta_3a_3ause_5fif_5fsame_5ft_3c_20bool_2c_20decltype_28std_3a_3adeclval_3c_20cref_5f_3c_20u_20_3e_3e_28_29_20_3e_20std_3a_3adeclval_3c_20cref_5f_3c_20t_20_3e_3e_28_29_29_3e_2c_20meta_3a_3ause_5fif_5fsame_5ft_3c_20bool_2c_20decltype_28std_3a_3adeclval_3c_20cref_5f_3c_20u_20_3e_3e_28_29_3c_3dstd_3a_3adeclval_3c_20cref_5f_3c_20t_20_3e_3e_28_29_29_3e_2c_20meta_3a_3ause_5fif_5fsame_5ft_3c_20bool_2c_20decltype_28std_3a_3adeclval_3c_20cref_5f_3c_20u_20_3e_3e_28_29_20_3e_3dstd_3a_3adeclval_3c_20cref_5f_3c_20t_20_3e_3e_28_29_29_3e_20_3e_20_3e',['is_strict_totally_ordered_with_< T, U, meta::void_t< meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()< std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() > std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()<=std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() >=std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>()< std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>() > std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>()<=std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>() >=std::declval< cref_< T >>())> > >',['../structutl_1_1details_1_1is__strict__totally__ordered__with___3_01_t_00_01_u_00_01meta_1_1void__t8fb7dd5a6ad25952241e37c6f163f434.html',1,'utl::details']]], + ['is_5fstrict_5ftotally_5fordered_5fwith_5ft',['is_strict_totally_ordered_with_t',['../namespaceutl_1_1details.html#acd9fac18316e44b7abd920686de886f0',1,'utl::details']]], + ['is_5fswappable',['is_swappable',['../namespaceutl.html#a1d50e9abd420e77555624f3e52bc7479',1,'utl']]], + ['is_5fswappable_5fwith',['is_swappable_with',['../namespaceutl.html#ab437a6d3a1f420b44e01378ae37fcb24',1,'utl']]], + ['is_5fweakly_5fequality_5fcomparable_5fwith_5f',['is_weakly_equality_comparable_with_',['../structutl_1_1details_1_1is__weakly__equality__comparable__with__.html',1,'utl::details']]], + ['is_5fweakly_5fequality_5fcomparable_5fwith_5f_3c_20t_2c_20u_2c_20meta_3a_3avoid_5ft_3c_20meta_3a_3ause_5fif_5fsame_5ft_3c_20bool_2c_20decltype_28std_3a_3adeclval_3c_20cref_5f_3c_20t_20_3e_3e_28_29_3d_3dstd_3a_3adeclval_3c_20cref_5f_3c_20u_20_3e_3e_28_29_29_3e_2c_20meta_3a_3ause_5fif_5fsame_5ft_3c_20bool_2c_20decltype_28std_3a_3adeclval_3c_20cref_5f_3c_20t_20_3e_3e_28_29_20_21_3dstd_3a_3adeclval_3c_20cref_5f_3c_20u_20_3e_3e_28_29_29_3e_2c_20meta_3a_3ause_5fif_5fsame_5ft_3c_20bool_2c_20decltype_28std_3a_3adeclval_3c_20cref_5f_3c_20u_20_3e_3e_28_29_3d_3dstd_3a_3adeclval_3c_20cref_5f_3c_20t_20_3e_3e_28_29_29_3e_2c_20meta_3a_3ause_5fif_5fsame_5ft_3c_20bool_2c_20decltype_28std_3a_3adeclval_3c_20cref_5f_3c_20u_20_3e_3e_28_29_20_21_3dstd_3a_3adeclval_3c_20cref_5f_3c_20t_20_3e_3e_28_29_29_3e_20_3e_20_3e',['is_weakly_equality_comparable_with_< T, U, meta::void_t< meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()==std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() !=std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>()==std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>() !=std::declval< cref_< T >>())> > >',['../structutl_1_1details_1_1is__weakly__equality__comparable__with___3_01_t_00_01_u_00_01meta_1_1voi4404f901930622694666ca68fb75381b.html',1,'utl::details']]], + ['is_5fweakly_5fequality_5fcomparable_5fwith_5ft',['is_weakly_equality_comparable_with_t',['../namespaceutl_1_1details.html#a499205eb8ca7f46d1e417a27f52442b8',1,'utl::details']]], + ['istreamdev_5fit',['istreamdev_it',['../classutl_1_1istreamdev__it.html',1,'utl::istreamdev_it< cont_t, data_t >'],['../classutl_1_1istreamdev__it.html#a37d06e1d0e6b2dee118d1f84914f489f',1,'utl::istreamdev_it::istreamdev_it(cont_t *owner=nullptr, Cursor cursor=eos) noexcept'],['../classutl_1_1istreamdev__it.html#af60899a30cdbcbb9c18a13daa3d1bafb',1,'utl::istreamdev_it::istreamdev_it(const iterator_t &it) noexcept']]], + ['iterator',['iterator',['../structutl_1_1array.html#a1cc94e09b75412ad9d7cf636b550ef2d',1,'utl::array::iterator()'],['../structutl_1_1id__t.html#acbcdd4547bde10bbbab7a72ad1adbf21',1,'utl::id_t::iterator()'],['../classutl_1_1idx__dev.html#a7aa9e9ecfa5035dba4c2f9ef9ec60c2a',1,'utl::idx_dev::iterator()'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a0965be515cca243b76f571aa425cfd96',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::iterator()'],['../classutl_1_1in__dev.html#a629f2364e2ab427cbdc0c7f1cb8e8a66',1,'utl::in_dev::iterator()'],['../classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a3a73a6ff50e2ab4c7e6cd70f560d7854',1,'utl::in_dev< virtual_tag, data_t, streamsize >::iterator()'],['../classutl_1_1inbuf__dev.html#a0c0827ae69fac778cec3abb179bfc0f3',1,'utl::inbuf_dev::iterator()'],['../classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a48b8449b9f608a5e3b03df97dd94cff7',1,'utl::inbuf_dev< virtual_tag, data_t, streamsize >::iterator()'],['../classutl_1_1ostream__dev.html#a38ce53a3ec7a902bdcbd9dc04350b903',1,'utl::ostream_dev::iterator()'],['../classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#aa440d7490da956cfe91f2835191056a4',1,'utl::ostream_dev< virtual_tag, data_t >::iterator()'],['../classutl_1_1out__dev.html#ad7f16990cdb6d54a54c774224f758f13',1,'utl::out_dev::iterator()'],['../classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a3da010b49d2e6b87eaddc22ef636acc9',1,'utl::out_dev< virtual_tag, data_t, streamsize >::iterator()']]], + ['iterator_5fcategory',['iterator_category',['../structutl_1_1dev__iterator__traits.html#a458414025d5e52646ddf90a3e9f04261',1,'utl::dev_iterator_traits::iterator_category()'],['../classutl_1_1ostreamdev__it.html#af1487479f0514fa330ef3393821932e8',1,'utl::ostreamdev_it::iterator_category()'],['../classutl_1_1istreamdev__it.html#ab9f273d2adc8c4fbc4d2e0a52346de89',1,'utl::istreamdev_it::iterator_category()'],['../classutl_1_1outdev__it.html#aeed1fef454099c402e4d3bb496ed0061',1,'utl::outdev_it::iterator_category()'],['../classutl_1_1indev__it.html#ac52588b2394480dcf3a73763f76f283a',1,'utl::indev_it::iterator_category()'],['../classutl_1_1iodev__it.html#ad223ec5d1f9187b200bfe0566d6c1e4a',1,'utl::iodev_it::iterator_category()']]], + ['iterator_5ft',['iterator_t',['../classutl_1_1ostreamdev__it.html#a56009b0113c7a0cf6c62012a7cdc49d1',1,'utl::ostreamdev_it::iterator_t()'],['../classutl_1_1istreamdev__it.html#a94408beb548efbbe69cf51b657f47202',1,'utl::istreamdev_it::iterator_t()'],['../classutl_1_1outdev__it.html#af1eac074478db751a6662ef7a120bc60',1,'utl::outdev_it::iterator_t()'],['../classutl_1_1indev__it.html#a7b45a5a4d76a5196a3999cb6a4fd610d',1,'utl::indev_it::iterator_t()'],['../classutl_1_1iodev__it.html#a85372687144876ec60a9bd6b4edf301c',1,'utl::iodev_it::iterator_t()']]], + ['iterators',['Iterators',['../group__iterators.html',1,'']]], + ['iterators_2eh',['iterators.h',['../iterators_8h.html',1,'']]] +]; diff --git a/doc/html/search/all_a.html b/doc/html/search/all_a.html new file mode 100644 index 0000000..3148a8e --- /dev/null +++ b/doc/html/search/all_a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/all_a.js b/doc/html/search/all_a.js new file mode 100644 index 0000000..1ac64e4 --- /dev/null +++ b/doc/html/search/all_a.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['logic',['Logic',['../group__logic.html',1,'']]], + ['long_5f',['long_',['../namespaceutl_1_1meta.html#a5d3ed337c64ea13ee70891d09b0caa3e',1,'utl::meta']]], + ['low',['LOW',['../namespaceutl_1_1spi.html#a89e3e1af5df0b6c37239f7e336969f8aa41bc94cbd8eebea13ce0491b2ac11b88',1,'utl::spi::LOW()'],['../namespaceutl_1_1spi.html#aa49fe33d495226891cef0a870cba59dfa41bc94cbd8eebea13ce0491b2ac11b88',1,'utl::spi::LOW()']]], + ['lsb_5ffirst',['LSB_First',['../namespaceutl_1_1spi.html#aed6b713381c193c598572ebac0b284cca6db67adee32c3bd4ff03acf3244e1b4b',1,'utl::spi']]] +]; diff --git a/doc/html/search/all_b.html b/doc/html/search/all_b.html new file mode 100644 index 0000000..f2a3c8d --- /dev/null +++ b/doc/html/search/all_b.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/all_b.js b/doc/html/search/all_b.js new file mode 100644 index 0000000..76694c6 --- /dev/null +++ b/doc/html/search/all_b.js @@ -0,0 +1,17 @@ +var searchData= +[ + ['make_5findex_5fsequence',['make_index_sequence',['../namespaceutl_1_1meta.html#aa7e48cd5c76ea88fc89ff4a66bc6f596',1,'utl::meta']]], + ['make_5finteger_5fsequence',['make_integer_sequence',['../namespaceutl_1_1meta.html#a093a8cfdae571002c305273aa02ad6a2',1,'utl::meta']]], + ['match',['match',['../classutl_1_1__1wire__i.html#aa2d87a149c4e5dcfefc5a8cde6eaefb2',1,'utl::_1wire_i::match()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#ac9c4e6123eee9b0af8d94fc8b22af04a',1,'utl::_1wire_i< virtual_tag >::match()']]], + ['match_5fn_5fovdr',['match_n_ovdr',['../classutl_1_1__1wire__i.html#ac88f67dd75dc23d39123ac584dce6b40',1,'utl::_1wire_i::match_n_ovdr()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a9a3e64459e7fddc89d160a3a379552b6',1,'utl::_1wire_i< virtual_tag >::match_n_ovdr()']]], + ['max_5fsize',['max_size',['../structutl_1_1array.html#ae9145a3585ab42ad57d232863f0445dc',1,'utl::array::max_size()'],['../structutl_1_1id__t.html#abeaee41b9ae199fe6f4b40ada1ca9ffa',1,'utl::id_t::max_size()']]], + ['meta_2eh',['meta.h',['../meta_8h.html',1,'']]], + ['miso',['MISO',['../classutl_1_1spi__bb__i.html#a9a7b908a8976f6efed9dd6e2b294415b',1,'utl::spi_bb_i::MISO()'],['../classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#aef56a570b3b19e2b26b148a63fa8ce46',1,'utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::MISO()']]], + ['modulo',['modulo',['../namespaceutl_1_1meta.html#adf7106374b1acc978be05b5848002cfc',1,'utl::meta']]], + ['mosi',['MOSI',['../classutl_1_1spi__bb__i.html#a3051a59aaeb5b176a175b352cf5f578e',1,'utl::spi_bb_i::MOSI()'],['../classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#a69738fe08e861df1a156f7a1168652cd',1,'utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::MOSI()']]], + ['movable',['Movable',['../namespaceutl.html#afc25cb525eb29162042c21238f28f26e',1,'utl']]], + ['moveassignable',['MoveAssignable',['../namespaceutl.html#a7b8e4a26148ed5f2c60e4fd7d41e7e63',1,'utl']]], + ['moveconstructible',['MoveConstructible',['../namespaceutl.html#a2a728f3d477d96f4f719bf62079321cf',1,'utl']]], + ['msb_5ffirst',['MSB_First',['../namespaceutl_1_1spi.html#aed6b713381c193c598572ebac0b284cca47bde70fdcc82c8363d16c7137641b79',1,'utl::spi']]], + ['mult',['mult',['../namespaceutl_1_1meta.html#a5f0a890cbd116d4a72a760a26f5a8244',1,'utl::meta']]] +]; diff --git a/doc/html/search/all_c.html b/doc/html/search/all_c.html new file mode 100644 index 0000000..6376810 --- /dev/null +++ b/doc/html/search/all_c.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/all_c.js b/doc/html/search/all_c.js new file mode 100644 index 0000000..c7d707e --- /dev/null +++ b/doc/html/search/all_c.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['nat_5f',['nat_',['../structutl_1_1meta_1_1nat__.html',1,'utl::meta::nat_'],['../structutl_1_1meta_1_1nat__.html#adccaf921c4aa751d22831fcc10d5a673',1,'utl::meta::nat_::nat_()=delete'],['../structutl_1_1meta_1_1nat__.html#a42d01fdec9b91bc31c325a51e28b5d41',1,'utl::meta::nat_::nat_(nat_ const &)=delete']]], + ['negate',['negate',['../namespaceutl_1_1meta.html#aec4bf9329ff8356d333a59e3c369d0b7',1,'utl::meta']]], + ['next',['next',['../classutl_1_1__1wire__i.html#a3e302085f12a39fef8a378e1dac42f45',1,'utl::_1wire_i::next()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a6a3b511a6f7c20bae1e8c7af9f50a0ff',1,'utl::_1wire_i< virtual_tag >::next()']]], + ['nil_5f',['nil_',['../structutl_1_1meta_1_1nil__.html',1,'utl::meta']]], + ['none_5fof',['none_of',['../namespaceutl_1_1meta.html#af324255cfaa0be3f02843961f5becb85',1,'utl::meta']]], + ['not_5f',['not_',['../group__integral.html#ga16df145331d3c62e624385c5949d90c4',1,'utl::meta']]], + ['not_5fc',['not_c',['../group__integral.html#ga7de987520bd0973f03ff8bab3152361a',1,'utl::meta']]], + ['not_5fsame_5f',['not_same_',['../group__integral.html#ga4dfaf054d891eb35d741662b077bbbd2',1,'utl::meta']]], + ['not_5fsame_5fas',['not_same_as',['../structutl_1_1meta_1_1not__same__as.html',1,'utl::meta']]], + ['npos',['Npos',['../namespaceutl_1_1meta.html#af0c85cc6480a9e7a8e4fb7d8f936f01b',1,'utl::meta']]], + ['nsec_5f',['nsec_',['../classutl_1_1spi__bb__i.html#a863bf592b1df8f74bcc3b8d76f40c173',1,'utl::spi_bb_i::nsec_()'],['../classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#a0d112cd54d54775eb50febed8f6c18b5',1,'utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::nsec_()']]], + ['nulldev',['nullDev',['../classutl_1_1__1wire__id__t.html#adad08aa5ce38e1a87800de57a91db81b',1,'utl::_1wire_id_t']]], + ['nulldev_5f',['nullDev_',['../classutl_1_1__1wire__id__t.html#a9d1d7610961adf2ae3669cbbcace74d2',1,'utl::_1wire_id_t']]] +]; diff --git a/doc/html/search/all_d.html b/doc/html/search/all_d.html new file mode 100644 index 0000000..cc52c79 --- /dev/null +++ b/doc/html/search/all_d.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/all_d.js b/doc/html/search/all_d.js new file mode 100644 index 0000000..844f54d --- /dev/null +++ b/doc/html/search/all_d.js @@ -0,0 +1,41 @@ +var searchData= +[ + ['operators',['operators',['../group__integral.html',1,'']]], + ['operations_2eh',['operations.h',['../operations_8h.html',1,'']]], + ['operator_20reference',['operator reference',['../structutl_1_1iodev__it_1_1value__type__t.html#a07c942db086f695666cbb66adc0bcf14',1,'utl::iodev_it::value_type_t']]], + ['operator_20value_5ftype',['operator value_type',['../structutl_1_1iodev__it_1_1value__type__t.html#a987f92d1edf063461833c620ecdf57d0',1,'utl::iodev_it::value_type_t']]], + ['operator_21_3d',['operator!=',['../namespaceutl.html#a45cd30dab2ec904b6fd64641d777b35e',1,'utl::operator!=(const array< _Tp, _Nm > &lhs, const array< _Tp, _Nm > &rhs)'],['../namespaceutl.html#a7f05cda5b7a37dea074df55db31aefb6',1,'utl::operator!=(const id_t< _Tp, _Nm > &lhs, const id_t< _Tp, _Nm > &rhs)'],['../namespaceutl.html#aa7a25ea4d2598ec5db5b37bfaaf55ec3',1,'utl::operator!=(const istreamdev_it< _C1, _D1 > &lhs, const istreamdev_it< _C2, _D2 > &rhs) noexcept'],['../namespaceutl.html#ada8975062732a20074909f8a3f609538',1,'utl::operator!=(const outdev_it< _Cont1, _It1, _beg1, _end1 > &lhs, const outdev_it< _Cont2, _It2, _beg2, _end2 > &rhs) noexcept'],['../namespaceutl.html#a15d049c37bf09ffb29f2a0c0070bf89c',1,'utl::operator!=(const indev_it< _Cont1, _It1, _beg1, _size1 > &x, const indev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept'],['../namespaceutl.html#a388830b63c30f5ee32a3e2a761c703c8',1,'utl::operator!=(const iodev_it< _Cont1, _It1, _beg1, _size1 > &x, const iodev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept']]], + ['operator_2a',['operator*',['../classutl_1_1ostreamdev__it.html#a59b20f351f4453d0439a732020f01a62',1,'utl::ostreamdev_it::operator*()'],['../classutl_1_1istreamdev__it.html#a39299e20b2ec7e21099525e4fa458a08',1,'utl::istreamdev_it::operator*()'],['../classutl_1_1outdev__it.html#a48013f8a6db805b7233a61fc43891f88',1,'utl::outdev_it::operator*()'],['../classutl_1_1indev__it.html#aab9b502abf96ca3e68ea08f4db133022',1,'utl::indev_it::operator*()'],['../classutl_1_1iodev__it.html#a584de89ae9c5d223f6455680d54d18f3',1,'utl::iodev_it::operator*()']]], + ['operator_2b',['operator+',['../classutl_1_1indev__it.html#a6f96628003f69ad5bedf4c9ff9c51ede',1,'utl::indev_it::operator+()'],['../classutl_1_1iodev__it.html#a6a720ca327e022c72ee11c11305f7f05',1,'utl::iodev_it::operator+()'],['../namespaceutl.html#a69289a7a150563ce48244d7f39b33dbb',1,'utl::operator+(typename _Cont::difference_type n, indev_it< _Cont, _It, _beg, _size > &it) noexcept'],['../namespaceutl.html#a829bc4894560bf7e0a6fd829ac9d3c10',1,'utl::operator+(typename _Cont::difference_type n, iodev_it< _Cont, _It, _beg, _size > &it) noexcept']]], + ['operator_2b_2b',['operator++',['../classutl_1_1ostreamdev__it.html#a0b30079065e0a886991eee4d701d99f2',1,'utl::ostreamdev_it::operator++() noexcept'],['../classutl_1_1ostreamdev__it.html#a1f14055eccffc96163aad431f2d1e663',1,'utl::ostreamdev_it::operator++(int) noexcept'],['../classutl_1_1istreamdev__it.html#abe06c7d5a4fc488804291bdb29d16816',1,'utl::istreamdev_it::operator++() noexcept'],['../classutl_1_1istreamdev__it.html#a9c04a21ce549fc67f306664c90b1f874',1,'utl::istreamdev_it::operator++(int) noexcept'],['../classutl_1_1outdev__it.html#a3f8d013e5ea008abfa060028d78f2871',1,'utl::outdev_it::operator++() noexcept'],['../classutl_1_1outdev__it.html#a8080fda743df21eb28b20771ba7df912',1,'utl::outdev_it::operator++(int) noexcept'],['../classutl_1_1indev__it.html#a9cc635074b47eae7db149c8079327bff',1,'utl::indev_it::operator++()'],['../classutl_1_1indev__it.html#a9221ac03f89e592ad3ba1fd0d1aa2793',1,'utl::indev_it::operator++(int)'],['../classutl_1_1iodev__it.html#aee5241250c6e402699bd38a13dad6f91',1,'utl::iodev_it::operator++() noexcept'],['../classutl_1_1iodev__it.html#ad470a2f302cacaa2effc56072e21eef5',1,'utl::iodev_it::operator++(int) noexcept']]], + ['operator_2b_3d',['operator+=',['../classutl_1_1indev__it.html#a2c71facea46d8c1a802d132b28d8024e',1,'utl::indev_it::operator+=()'],['../classutl_1_1iodev__it.html#a6aad753022c84b6961eef38bb53a3bd9',1,'utl::iodev_it::operator+=()']]], + ['operator_2d',['operator-',['../classutl_1_1indev__it.html#a3bfc84c569096454701ff191d9e8bf14',1,'utl::indev_it::operator-()'],['../classutl_1_1iodev__it.html#aa437f3e0e237fa511e56646136aabb35',1,'utl::iodev_it::operator-()'],['../namespaceutl.html#aae4b45dc79b7d9b85e0bf83278f88508',1,'utl::operator-(indev_it< _Cont1, _It1, _beg1, _size1 > &x, indev_it< _Cont1, _It1, _beg1, _size1 > &y) noexcept -> decltype(x.cursor() - y.cursor())'],['../namespaceutl.html#a191590b661dc64e2fd487adb6b5e8889',1,'utl::operator-(iodev_it< _Cont1, _It1, _beg1, _size1 > &x, iodev_it< _Cont1, _It1, _beg1, _size1 > &y) noexcept -> decltype(x.cursor() - y.cursor())']]], + ['operator_2d_2d',['operator--',['../classutl_1_1indev__it.html#a2980dd80dce60ddf7bfbaf11c5394b4c',1,'utl::indev_it::operator--()'],['../classutl_1_1indev__it.html#a67ab2af5e3530d0aa72b9d4e6ce64d48',1,'utl::indev_it::operator--(int)'],['../classutl_1_1iodev__it.html#a820f0b3899c80743ed0ad1f495c0d3c3',1,'utl::iodev_it::operator--() noexcept'],['../classutl_1_1iodev__it.html#a6bde1ae02f162213c637ff25f269d24f',1,'utl::iodev_it::operator--(int) noexcept']]], + ['operator_2d_3d',['operator-=',['../classutl_1_1indev__it.html#a45fc6f9caefbe9e623e850919ecef085',1,'utl::indev_it::operator-=()'],['../classutl_1_1iodev__it.html#ac4fa70211754ba2f34aaea5290d2492c',1,'utl::iodev_it::operator-=()']]], + ['operator_2d_3e',['operator->',['../classutl_1_1istreamdev__it.html#adf6eafdc0973dbc1a71992ae8914c9dd',1,'utl::istreamdev_it::operator->()'],['../classutl_1_1indev__it.html#aba3b176ec09842e790f1edc808214a89',1,'utl::indev_it::operator->()'],['../classutl_1_1iodev__it.html#a2c031f247a145656129e91905d9dca26',1,'utl::iodev_it::operator->()']]], + ['operator_3c',['operator<',['../namespaceutl.html#a633f700b294b53e4f58183fd4bc6963f',1,'utl::operator<(const array< _Tp, _Nm > &lhs, const array< _Tp, _Nm > &rhs)'],['../namespaceutl.html#a64bc464138b386821977a0c4ac43fddf',1,'utl::operator<(const id_t< _Tp, _Nm > &lhs, const id_t< _Tp, _Nm > &rhs)'],['../namespaceutl.html#aac9f2116bf5b1463391b2a5ec437ef1d',1,'utl::operator<(const indev_it< _Cont1, _It1, _beg1, _size1 > &x, const indev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept'],['../namespaceutl.html#aacd0760a2943441abcc86ef9d825c8b0',1,'utl::operator<(const iodev_it< _Cont1, _It1, _beg1, _size1 > &x, const iodev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept']]], + ['operator_3c_3c',['operator<<',['../classutl_1_1idx__dev.html#a661ea93cc07a61ef208ab6f021f62907',1,'utl::idx_dev::operator<<(_Src_t &src)'],['../classutl_1_1idx__dev.html#a4e5a520417e7defe7cec77c261a01b73',1,'utl::idx_dev::operator<<(_Src_t *src)=delete'],['../classutl_1_1idx__dev.html#ad1c24182de1432f4d43eaa69db7aaec7',1,'utl::idx_dev::operator<<(const data_t &src)'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#accbb8a8c64fc4cac385081c9b6b7356b',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::operator<<(_Src_t &src)'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a0443e0880c43aedb5735c52a5c9eb144',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::operator<<(_Src_t *src)=delete'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a52d8bf37aa7e4549db3ac11677cf9ec1',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::operator<<(const data_t &src)'],['../classutl_1_1ostream__dev.html#a4ab9729e2a50b797bcd939c840685b48',1,'utl::ostream_dev::operator<<(const _Src_t &src)'],['../classutl_1_1ostream__dev.html#a17b6362ea015437b1cd3f4b9122c4e35',1,'utl::ostream_dev::operator<<(_Src_t *src)=delete'],['../classutl_1_1ostream__dev.html#a776a690023246345f1af2991f1b3b206',1,'utl::ostream_dev::operator<<(const data_t &src)'],['../classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#a9761a89cc6f5f57529fd7f686350a221',1,'utl::ostream_dev< virtual_tag, data_t >::operator<<(const _Src_t &src)'],['../classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#aeedb13f9949b3cc31fede903553c0a05',1,'utl::ostream_dev< virtual_tag, data_t >::operator<<(_Src_t *src)=delete'],['../classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#a767095b8efcafd7cb50c065b1c781146',1,'utl::ostream_dev< virtual_tag, data_t >::operator<<(const data_t &src)'],['../classutl_1_1out__dev.html#a73612dfcce721cbc386bad3e7d6864b4',1,'utl::out_dev::operator<<(_Src_t &src)'],['../classutl_1_1out__dev.html#a934913c0d594e8fd366b248bc01116aa',1,'utl::out_dev::operator<<(_Src_t *src)=delete'],['../classutl_1_1out__dev.html#a22dce1d313a4f6b4686d4253cbd7f485',1,'utl::out_dev::operator<<(const data_t &src)'],['../classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a88944f88c0dfa832f42b49193bffcea9',1,'utl::out_dev< virtual_tag, data_t, streamsize >::operator<<(_Src_t &src)'],['../classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a8ea40dd005963b6e2f41c1a5f8c5c6b1',1,'utl::out_dev< virtual_tag, data_t, streamsize >::operator<<(_Src_t *src)=delete'],['../classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a6b8b80722252f898b1acfce6083b4cf7',1,'utl::out_dev< virtual_tag, data_t, streamsize >::operator<<(const data_t &src)']]], + ['operator_3c_3d',['operator<=',['../namespaceutl.html#a36f9fadffe88aefcc2d37249eaf951c3',1,'utl::operator<=(const array< _Tp, _Nm > &lhs, const array< _Tp, _Nm > &rhs)'],['../namespaceutl.html#aa2c449f74d1214cb7406b1648d2caf6f',1,'utl::operator<=(const id_t< _Tp, _Nm > &lhs, const id_t< _Tp, _Nm > &rhs)'],['../namespaceutl.html#a93043b2e245bb724c9c2e89577222532',1,'utl::operator<=(const indev_it< _Cont1, _It1, _beg1, _size1 > &x, const indev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept'],['../namespaceutl.html#aa369d59a59c21d50b371b5db6195b043',1,'utl::operator<=(const iodev_it< _Cont1, _It1, _beg1, _size1 > &x, const iodev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept']]], + ['operator_3d',['operator=',['../classutl_1_1__1wire__i.html#a96222b5bd731c2b242e428aabda40642',1,'utl::_1wire_i::operator=()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a3e2e3e5f3727eaa9fdf152ae7098c7be',1,'utl::_1wire_i< virtual_tag >::operator=()'],['../classutl_1_1i2c__i.html#aee83d11e02c3a0639dd3ed1ea440ed24',1,'utl::i2c_i::operator=()'],['../classutl_1_1i2c__i_3_01virtual__tag_01_4.html#a931323b813a653057e039416e0fd5b99',1,'utl::i2c_i< virtual_tag >::operator=()'],['../classutl_1_1spi__i.html#aa5cf05ce005cb23e6317b3eef70bf4b0',1,'utl::spi_i::operator=()'],['../classutl_1_1spi__i_3_01virtual__tag_01_4.html#aa24dd9ed5e342ab0f27b4ef296516e5b',1,'utl::spi_i< virtual_tag >::operator=()'],['../classutl_1_1ostreamdev__it.html#a12bff250b98723f39f8145cd28753c62',1,'utl::ostreamdev_it::operator=(const iterator_t &it) noexcept'],['../classutl_1_1ostreamdev__it.html#a79b92769a48d202c4eb7d98d031eed3d',1,'utl::ostreamdev_it::operator=(const value_type &value)'],['../classutl_1_1istreamdev__it.html#a93400479ad3e318df06880c7d116e2fb',1,'utl::istreamdev_it::operator=()'],['../classutl_1_1outdev__it.html#a96773cf7677881fde81b57db9f8ffaff',1,'utl::outdev_it::operator=(const iterator_t &it) noexcept'],['../classutl_1_1outdev__it.html#aeb3737becdbcab0e42094bc87d09d79a',1,'utl::outdev_it::operator=(const value_type &value)'],['../classutl_1_1indev__it.html#a6dd617aa9a5c3454ca9f49d1ed6319d8',1,'utl::indev_it::operator=()'],['../structutl_1_1iodev__it_1_1value__type__t.html#a63b8721380bbfb5f976bd050f2f1f203',1,'utl::iodev_it::value_type_t::operator=()'],['../classutl_1_1iodev__it.html#a55d221d75ed1cd82542bacc0d5acb454',1,'utl::iodev_it::operator=()'],['../classutl_1_1idx__dev.html#ac817369b5efb068d648328320a9cf6a4',1,'utl::idx_dev::operator=()'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#ae31763ec2ad32c26b43f010f850fe3eb',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::operator=()'],['../classutl_1_1in__dev.html#a55dc56f1277b2bd04b154fbf19d8853f',1,'utl::in_dev::operator=()'],['../classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#ab9b57ad0f6857b657bc6a870986f8648',1,'utl::in_dev< virtual_tag, data_t, streamsize >::operator=()'],['../classutl_1_1inbuf__dev.html#a7aaf5bc892d6247cb6bb547cf331704c',1,'utl::inbuf_dev::operator=()'],['../classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#aa9f8f3abcc53098ef0c5dc1a8f013957',1,'utl::inbuf_dev< virtual_tag, data_t, streamsize >::operator=()'],['../classutl_1_1ostream__dev.html#a385318ff45d575ec92801f7c0e29e9c8',1,'utl::ostream_dev::operator=()'],['../classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#a013bfe883ab1f72c3d19678227072178',1,'utl::ostream_dev< virtual_tag, data_t >::operator=()'],['../classutl_1_1out__dev.html#aba2f65a858ae47167f46979337299f44',1,'utl::out_dev::operator=()'],['../classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a6093ba41c3bddd450fbad0fd0bf3ba65',1,'utl::out_dev< virtual_tag, data_t, streamsize >::operator=()'],['../structutl_1_1meta_1_1nat__.html#a905f7286e42782137f31227a7c891355',1,'utl::meta::nat_::operator=()']]], + ['operator_3d_3d',['operator==',['../namespaceutl.html#a841f326020eb98fa4b8f764bf35442c0',1,'utl::operator==(const array< _Tp, _Nm > &lhs, const array< _Tp, _Nm > &rhs)'],['../namespaceutl.html#a2e319bae5449ee07261f547a94c31f87',1,'utl::operator==(const id_t< _Tp, _Nm > &lhs, const id_t< _Tp, _Nm > &rhs)'],['../namespaceutl.html#a5ba78d196f9abb63a1d2fff13cabe636',1,'utl::operator==(const istreamdev_it< _C1, _D1 > &lhs, const istreamdev_it< _C2, _D2 > &rhs) noexcept'],['../namespaceutl.html#a6726b451c897c4581e8781a819c025ba',1,'utl::operator==(const outdev_it< _Cont1, _It1, _beg1, _end1 > &lhs, const outdev_it< _Cont2, _It2, _beg2, _end2 > &rhs) noexcept'],['../namespaceutl.html#aa30fa8ed97138ea75003069144f78e97',1,'utl::operator==(const indev_it< _Cont1, _It1, _beg1, _size1 > &x, const indev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept'],['../namespaceutl.html#a7ad3384389159ce575279712fb92e3c6',1,'utl::operator==(const iodev_it< _Cont1, _It1, _beg1, _size1 > &x, const iodev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept']]], + ['operator_3e',['operator>',['../namespaceutl.html#a1d5c761bf59037aeed9157e4f63bed9e',1,'utl::operator>(const array< _Tp, _Nm > &lhs, const array< _Tp, _Nm > &rhs)'],['../namespaceutl.html#aa88fd098a89e4477ff55319be1d44a64',1,'utl::operator>(const id_t< _Tp, _Nm > &lhs, const id_t< _Tp, _Nm > &rhs)'],['../namespaceutl.html#a254af18987f59f185ceeaac1aaf3c1e1',1,'utl::operator>(const indev_it< _Cont1, _It1, _beg1, _size1 > &x, const indev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept'],['../namespaceutl.html#a623dee5dafd7fe274dc205c3e20c96af',1,'utl::operator>(const iodev_it< _Cont1, _It1, _beg1, _size1 > &x, const iodev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept']]], + ['operator_3e_3d',['operator>=',['../namespaceutl.html#a942cac675f6dd1313807eccb407ebec6',1,'utl::operator>=(const array< _Tp, _Nm > &lhs, const array< _Tp, _Nm > &rhs)'],['../namespaceutl.html#a3f53717133a73715f387ebac4b6f22b3',1,'utl::operator>=(const id_t< _Tp, _Nm > &lhs, const id_t< _Tp, _Nm > &rhs)'],['../namespaceutl.html#abdada8bc0cbd311c4dea3dde078f5483',1,'utl::operator>=(const indev_it< _Cont1, _It1, _beg1, _size1 > &x, const indev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept'],['../namespaceutl.html#a1988125a6394416aaf6ae85eaafa3ec4',1,'utl::operator>=(const iodev_it< _Cont1, _It1, _beg1, _size1 > &x, const iodev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept']]], + ['operator_3e_3e',['operator>>',['../classutl_1_1idx__dev.html#a296be5211871773b2b8aa5409772ce6a',1,'utl::idx_dev::operator>>(_Dst_t &dst)'],['../classutl_1_1idx__dev.html#af5822e3e77e2748a6eaf13b9381e0736',1,'utl::idx_dev::operator>>(_Dst_t *dst)=delete'],['../classutl_1_1idx__dev.html#a3480680f94fcb06f9ee8b2e5dcdb4dcd',1,'utl::idx_dev::operator>>(data_t &dst)'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a6e758bd01a5d893a8b13476ed55213cc',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::operator>>(_Dst_t &dst)'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#abd071d6feed8ce4d07d1eb2d60995c6d',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::operator>>(_Dst_t *dst)=delete'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a379c115c72386cd4407443d9f3c6ac53',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::operator>>(data_t &dst)'],['../classutl_1_1in__dev.html#abe8aa85c0dbe0ddb3745ded02b4e68fe',1,'utl::in_dev::operator>>(_Dst_t &dst)'],['../classutl_1_1in__dev.html#a60b3bba96e6bfd2091e594fdbc93fd6f',1,'utl::in_dev::operator>>(_Dst_t *dst)=delete'],['../classutl_1_1in__dev.html#a98774619e8575162a8be271833282690',1,'utl::in_dev::operator>>(data_t &dst)'],['../classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a762d865283d5d990885a0851fddf24ee',1,'utl::in_dev< virtual_tag, data_t, streamsize >::operator>>(_Dst_t &dst)'],['../classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a57e046ec714ccd6a0bd2b2878de85f18',1,'utl::in_dev< virtual_tag, data_t, streamsize >::operator>>(_Dst_t *dst)=delete'],['../classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a645886b95bec35e1d8a9d9247d47527a',1,'utl::in_dev< virtual_tag, data_t, streamsize >::operator>>(data_t &dst)'],['../classutl_1_1inbuf__dev.html#aca17fb240dfe221effa5a2092563d185',1,'utl::inbuf_dev::operator>>(_Dst_t &dst)'],['../classutl_1_1inbuf__dev.html#a48a8160d1dce4542b0b09cff3f6a488b',1,'utl::inbuf_dev::operator>>(_Dst_t *dst)=delete'],['../classutl_1_1inbuf__dev.html#a6b11ed7628520b4dfe0bd438ccc58197',1,'utl::inbuf_dev::operator>>(data_t &dst)'],['../classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a84a3364ab33a4fa6ac0983da47a9276f',1,'utl::inbuf_dev< virtual_tag, data_t, streamsize >::operator>>(_Dst_t &dst)'],['../classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a9e6b304cc17303d810bc53e411f39970',1,'utl::inbuf_dev< virtual_tag, data_t, streamsize >::operator>>(_Dst_t *dst)=delete'],['../classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#aefdbcf1d006494f612d6fcd8795ba472',1,'utl::inbuf_dev< virtual_tag, data_t, streamsize >::operator>>(data_t &dst)']]], + ['operator_5b_5d',['operator[]',['../structutl_1_1array.html#a63373518cc6efade8c555ee1ebc1f754',1,'utl::array::operator[](size_type n) noexcept'],['../structutl_1_1array.html#a4f91b2d8e9f4c2365d4d58cf1657ac95',1,'utl::array::operator[](size_type n) const noexcept'],['../structutl_1_1id__t.html#acc2df57ec1921165238adc13f1a2ad7d',1,'utl::id_t::operator[](size_type n) noexcept'],['../structutl_1_1id__t.html#a70f4ed6c1efda0d4098ba2e3177da329',1,'utl::id_t::operator[](size_type n) const noexcept'],['../classutl_1_1indev__it.html#acc0466f1af48d7080acde0e9c4241585',1,'utl::indev_it::operator[]()'],['../classutl_1_1iodev__it.html#a16c35c2eab7f92794764b7b5c48f9e8e',1,'utl::iodev_it::operator[]()'],['../classutl_1_1idx__dev.html#a5e0d647ad1cc5533e4f70292d8793a9f',1,'utl::idx_dev::operator[]()'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#aa636cd6c14608d8f5a0d16d409be3aaa',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::operator[]()']]], + ['or_5f',['or_',['../group__integral.html#gac43f400cc93d54f5f79892e618069d9b',1,'utl::meta']]], + ['ostream_5fdev',['ostream_dev',['../classutl_1_1ostream__dev.html',1,'utl::ostream_dev< impl_t, data_t >'],['../classutl_1_1ostream__dev.html#a6bb520cb5397ab9f7579c868311017b5',1,'utl::ostream_dev::ostream_dev()=default'],['../classutl_1_1ostream__dev.html#afdb03e10c54fa5d079f59b0bb938c82c',1,'utl::ostream_dev::ostream_dev(const ostream_dev_t &)=delete'],['../classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#a977d2f5eb87ae8b301921542be350a93',1,'utl::ostream_dev< virtual_tag, data_t >::ostream_dev()=default'],['../classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#a0662ca7855b82a14b50d48a710c64709',1,'utl::ostream_dev< virtual_tag, data_t >::ostream_dev(const ostream_dev_t &)=delete']]], + ['ostream_5fdev_2eh',['ostream_dev.h',['../ostream__dev_8h.html',1,'']]], + ['ostream_5fdev_3c_20virtual_5ftag_2c_20data_5ft_20_3e',['ostream_dev< virtual_tag, data_t >',['../classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html',1,'utl']]], + ['ostream_5fdev_5ft',['ostream_dev_t',['../classutl_1_1ostream__dev.html#adc4bbb5e81e6d612937bca9a84c950ca',1,'utl::ostream_dev::ostream_dev_t()'],['../classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#a802836d016068af3e5e78dc5001d5861',1,'utl::ostream_dev< virtual_tag, data_t >::ostream_dev_t()']]], + ['ostreamdev_5fit',['ostreamdev_it',['../classutl_1_1ostreamdev__it.html',1,'utl::ostreamdev_it< cont_t, data_t >'],['../classutl_1_1ostreamdev__it.html#a6325c4575c2590a9af15091828f96253',1,'utl::ostreamdev_it::ostreamdev_it(cont_t *owner=nullptr) noexcept'],['../classutl_1_1ostreamdev__it.html#a0743c044728fa9b33e0e0648da91982d',1,'utl::ostreamdev_it::ostreamdev_it(const iterator_t &it) noexcept']]], + ['out_5fdev',['out_dev',['../classutl_1_1out__dev.html',1,'utl::out_dev< impl_t, data_t, streamsize >'],['../classutl_1_1out__dev.html#a0ceaf76475484f35174d96561dea73bf',1,'utl::out_dev::out_dev()=default'],['../classutl_1_1out__dev.html#a36aed8619cf12b4f04334c7e0b219fb6',1,'utl::out_dev::out_dev(const out_dev_t &)=delete'],['../classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a470befe8e2518939190977d76bea06ca',1,'utl::out_dev< virtual_tag, data_t, streamsize >::out_dev()=default'],['../classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#ad4b62c477f8e553d78a1ab051ad81a7c',1,'utl::out_dev< virtual_tag, data_t, streamsize >::out_dev(const out_dev &)=delete'],['../namespaceutl.html#a77f27f594c8696fcfbc85a9ec66c11f1',1,'utl::Out_dev()']]], + ['out_5fdev_2eh',['out_dev.h',['../out__dev_8h.html',1,'']]], + ['out_5fdev_3c_20virtual_5ftag_2c_20data_5ft_2c_20streamsize_20_3e',['out_dev< virtual_tag, data_t, streamsize >',['../classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html',1,'utl']]], + ['out_5fdev_5ft',['out_dev_t',['../classutl_1_1out__dev.html#a17ccf13d527b4c220b0e937e20d81aba',1,'utl::out_dev::out_dev_t()'],['../classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a3b7c1dad93f0ec25842afc436221db6b',1,'utl::out_dev< virtual_tag, data_t, streamsize >::out_dev_t()']]], + ['outdev_5fit',['outdev_it',['../classutl_1_1outdev__it.html',1,'utl::outdev_it< cont_t, iter_t, _beg, _end >'],['../classutl_1_1outdev__it.html#a691c350e365d9ba037fe5f7541425a50',1,'utl::outdev_it::outdev_it() noexcept'],['../classutl_1_1outdev__it.html#ac65bea2b8547649771c73d8110ba1115',1,'utl::outdev_it::outdev_it(cont_t *owner, index_t cursor=eod) noexcept'],['../classutl_1_1outdev__it.html#ad7226a24b2576fbc57ad740f04bdde6b',1,'utl::outdev_it::outdev_it(const iterator_t &it) noexcept']]], + ['output',['OUTPUT',['../classutl_1_1i2c__bb__i.html#a4369b434fde250d503bfdc07d5c6a26da50a87f0d71f7221582dad4bf507a0f34',1,'utl::i2c_bb_i::OUTPUT()'],['../classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html#af4bc7eeeb830e49046a1033e9c79db7fa50a87f0d71f7221582dad4bf507a0f34',1,'utl::i2c_bb_i< virtual_tag >::OUTPUT()']]], + ['output_5fiterator_5ftag',['output_iterator_tag',['../structutl_1_1output__iterator__tag.html',1,'utl']]], + ['ovdr',['OVDR',['../classutl_1_1__1wire__i.html#a56bb736aa3620d7795b5914cac5f25cca1cbf38b04c4249d8ec27d1ec96aaff68',1,'utl::_1wire_i::OVDR()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a2abb8c6344d17269c55ae0cba63ec512a1cbf38b04c4249d8ec27d1ec96aaff68',1,'utl::_1wire_i< virtual_tag >::OVDR()']]], + ['owner',['owner',['../classutl_1_1istreamdev__it.html#ad5ad8b543316b11bcc551a03a19296a7',1,'utl::istreamdev_it::owner()'],['../classutl_1_1outdev__it.html#a05b35f89ff6e1682b2dbc36198b8e813',1,'utl::outdev_it::owner()'],['../classutl_1_1indev__it.html#aaa0295b6a2ed86e5b1018d049b988c8b',1,'utl::indev_it::owner()'],['../classutl_1_1iodev__it.html#a1e3b3608c6378257c77853cb61820438',1,'utl::iodev_it::owner()']]], + ['owner_5f',['owner_',['../classutl_1_1ostreamdev__it.html#a11033565f4b36ffdc5a6362393decad9',1,'utl::ostreamdev_it::owner_()'],['../classutl_1_1istreamdev__it.html#a01c9f093714b3a55b3bada9bbc14a53d',1,'utl::istreamdev_it::owner_()'],['../classutl_1_1outdev__it.html#abbc4217bcfe956aeb8c1252c7f4759f3',1,'utl::outdev_it::owner_()'],['../classutl_1_1indev__it.html#a33a3a7b7c30da80280719f1c0761a0d8',1,'utl::indev_it::owner_()'],['../classutl_1_1iodev__it.html#a2676a4159e9799027cdff9ba7e006bbe',1,'utl::iodev_it::owner_()']]] +]; diff --git a/doc/html/search/all_e.html b/doc/html/search/all_e.html new file mode 100644 index 0000000..85b39bd --- /dev/null +++ b/doc/html/search/all_e.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/all_e.js b/doc/html/search/all_e.js new file mode 100644 index 0000000..fe79cec --- /dev/null +++ b/doc/html/search/all_e.js @@ -0,0 +1,19 @@ +var searchData= +[ + ['pair',['pair',['../namespaceutl_1_1meta.html#aa6513d9d2a5db3ba3517efff33adc761',1,'utl::meta']]], + ['pointer',['pointer',['../structutl_1_1array.html#a90f23795637ad96d367bf7d978f7e5e6',1,'utl::array::pointer()'],['../structutl_1_1id__t.html#ab93692ef0c67737db55a38d658375ce3',1,'utl::id_t::pointer()'],['../structutl_1_1dev__iterator__traits.html#a4b06368f7cb0bc44dc21582be7808ca6',1,'utl::dev_iterator_traits::pointer()'],['../classutl_1_1ostreamdev__it.html#a53deacec230a62f20fcb41858aa7cf8b',1,'utl::ostreamdev_it::pointer()'],['../classutl_1_1istreamdev__it.html#abc9731045fe1cf2639a91cfc6040114f',1,'utl::istreamdev_it::pointer()'],['../classutl_1_1outdev__it.html#a92f06ead0276169036aee90dbee2ca8e',1,'utl::outdev_it::pointer()'],['../classutl_1_1indev__it.html#aa5b1e7c33987cec0d2bfc6aad07b297f',1,'utl::indev_it::pointer()'],['../classutl_1_1iodev__it.html#a3cc475e736e680ae4d078f241c0572eb',1,'utl::iodev_it::pointer()']]], + ['pointer_5ftype',['pointer_type',['../classutl_1_1idx__dev.html#acf054246b0c7c8be0a676fc1cf2b090c',1,'utl::idx_dev::pointer_type()'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a21fdf221d18bb3a118950d51af0b2df6',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::pointer_type()'],['../classutl_1_1in__dev.html#aef4b5c41ab91ef284cfc0cf6100c0828',1,'utl::in_dev::pointer_type()'],['../classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a4deebc522c75a793304a7a7ff09fb3f8',1,'utl::in_dev< virtual_tag, data_t, streamsize >::pointer_type()'],['../classutl_1_1inbuf__dev.html#a345d3b465e9cf57ebe3a8df31b67fec7',1,'utl::inbuf_dev::pointer_type()'],['../classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a9d035a944db280e98fd41260ed463000',1,'utl::inbuf_dev< virtual_tag, data_t, streamsize >::pointer_type()'],['../classutl_1_1ostream__dev.html#a4d60fb31555306bf52a88889db1c8739',1,'utl::ostream_dev::pointer_type()'],['../classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#a2186444525589e2e06fdf947b238b785',1,'utl::ostream_dev< virtual_tag, data_t >::pointer_type()'],['../classutl_1_1out__dev.html#abfb6a95c13fc63c09776141ad16e98e3',1,'utl::out_dev::pointer_type()'],['../classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a83ce1ff81d538c68649fe339241d6cff',1,'utl::out_dev< virtual_tag, data_t, streamsize >::pointer_type()']]], + ['pop_5fback',['pop_back',['../namespaceutl_1_1meta.html#a86a37f5803c474823963e1f3c6f7a6d6',1,'utl::meta']]], + ['pop_5fback_5f',['pop_back_',['../structutl_1_1meta_1_1pop__back__impl_1_1pop__back__.html',1,'utl::meta::pop_back_impl']]], + ['pop_5ffront',['pop_front',['../namespaceutl_1_1meta.html#aa4a307a81c0640c6c0dd08f8a53f3c32',1,'utl::meta']]], + ['pop_5ffront_5f',['pop_front_',['../structutl_1_1meta_1_1pop__front__impl_1_1pop__front__.html',1,'utl::meta::pop_front_impl']]], + ['pop_5ffront_5f_3c_20typelist_3c_20head_2c_20tail_2e_2e_2e_20_3e_20_3e',['pop_front_< typelist< Head, Tail... > >',['../structutl_1_1meta_1_1pop__front__impl_1_1pop__front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.html',1,'utl::meta::pop_front_impl']]], + ['pos_5f',['pos_',['../classutl_1_1__1wire__i.html#a51ed80ef816ea8a4f5a3cdb4d87b0875',1,'utl::_1wire_i::pos_()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#aaa7389458c2969170dc0678f27b9ea83',1,'utl::_1wire_i< virtual_tag >::pos_()']]], + ['predicate',['Predicate',['../namespaceutl.html#aae56a019cdd2006c4f07d2e207289195',1,'utl']]], + ['ptr',['Ptr',['../structutl_1_1array__traits.html#ac642d673d85d054616bb143326a9ea79',1,'utl::array_traits::Ptr()'],['../structutl_1_1array__traits_3_01___tp_00_010_01_4.html#ad5f207688e873862870d58889b2e5fec',1,'utl::array_traits< _Tp, 0 >::Ptr()'],['../structutl_1_1id__traits.html#a570679371037d3f6716f2bb87f9e67d5',1,'utl::id_traits::Ptr()'],['../structutl_1_1id__traits_3_01___tp_00_010_01_4.html#a4d66c1e3f4bf6b06bbe030a28cd5e878',1,'utl::id_traits< _Tp, 0 >::Ptr()']]], + ['ptrdiff_5ft',['ptrdiff_t',['../namespaceutl.html#a1b83655ba00b548af9b51f169c6c567a',1,'utl']]], + ['push_5fback',['push_back',['../namespaceutl_1_1meta.html#adf545ba110edc6a34ddcaf2280a0c7f4',1,'utl::meta']]], + ['push_5ffront',['push_front',['../namespaceutl_1_1meta.html#ab0f84ba0807b6fd36fa9e4e5cfc4cd32',1,'utl::meta']]], + ['put',['put',['../classutl_1_1idx__dev.html#af588d605d6968164cca3e348b5363613',1,'utl::idx_dev::put(const data_t &data, idx_t cursor)'],['../classutl_1_1idx__dev.html#a4d91ec798d3bf0da54467b4a394da839',1,'utl::idx_dev::put(const data_t *data, size_t n, idx_t cursor)'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a183e46d89452a51a029387f621fb4e9f',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::put(const data_t &data, idx_t cursor)'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a58ee979bbc14205548db85cbfbed7aba',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::put(const data_t *data, size_t n, idx_t cursor)'],['../classutl_1_1ostream__dev.html#a70a8d008d93a5a3f50de63dc70b7b4e4',1,'utl::ostream_dev::put(const data_t &data)'],['../classutl_1_1ostream__dev.html#a29f2cad2b83c801cfdab235c880e528b',1,'utl::ostream_dev::put(const data_t *data, size_t n)'],['../classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#aaee696bf560e084e61b4fb0217569d1a',1,'utl::ostream_dev< virtual_tag, data_t >::put(const data_t &data)'],['../classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#a8014501f6c22a8dc0a366898e92fa83c',1,'utl::ostream_dev< virtual_tag, data_t >::put(const data_t *data, size_t n)'],['../classutl_1_1out__dev.html#a640214f205468c235dec25bab8fb6c08',1,'utl::out_dev::put(const data_t &data)'],['../classutl_1_1out__dev.html#a0cfe5f4d3c3e4fb21abe9e88101e0bb8',1,'utl::out_dev::put(const data_t *data, size_t n)'],['../classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a7311e58e96e924cdd7f06ff4713f3317',1,'utl::out_dev< virtual_tag, data_t, streamsize >::put(const data_t &data)'],['../classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#aa781ec6a6e500451a357f04b1436d8e0',1,'utl::out_dev< virtual_tag, data_t, streamsize >::put(const data_t *data, size_t n)']]], + ['put_5f',['put_',['../classutl_1_1idx__dev.html#a7b986ccd5cc6a2ece87dacdb0b8f0a0d',1,'utl::idx_dev::put_(const data_t &data, idx_t idx)'],['../classutl_1_1idx__dev.html#aef5b7b2d58b2502ea7e60cfc9835e9b6',1,'utl::idx_dev::put_(const data_t *data, size_t n, idx_t idx)'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a7d622b995c072399b308dc61a88e9950',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::put_(const data_t &, idx_t)=0'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a3069ad5d209e9fed4c181e8e352b8b95',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::put_(const data_t *, size_t n, idx_t)=0'],['../classutl_1_1ostream__dev.html#acfe4768762548db0d99cde8a802b0723',1,'utl::ostream_dev::put_(const data_t &data)'],['../classutl_1_1ostream__dev.html#a33546e98ec0cbd6cef862cb4d9853c7a',1,'utl::ostream_dev::put_(const data_t *data, size_t n)'],['../classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#abb1f94bc1a9bc28ea51e524b96aaca66',1,'utl::ostream_dev< virtual_tag, data_t >::put_(const data_t &data)=0'],['../classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#aecbc9b416ded99df2b87e33e90236b41',1,'utl::ostream_dev< virtual_tag, data_t >::put_(const data_t *data, size_t n)=0'],['../classutl_1_1out__dev.html#a29e236940e8fb13387b264379136b504',1,'utl::out_dev::put_(const data_t &data)'],['../classutl_1_1out__dev.html#a3bbf2bb1c25bae601cd0d6e2b1f886b2',1,'utl::out_dev::put_(const data_t *data, size_t n)'],['../classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a932c5664fc281e141219d8fbd826fc7e',1,'utl::out_dev< virtual_tag, data_t, streamsize >::put_(const data_t &data)=0'],['../classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a3b895f0d8b77b3c9eb16111826ae91a0',1,'utl::out_dev< virtual_tag, data_t, streamsize >::put_(const data_t *data, size_t n)=0']]] +]; diff --git a/doc/html/search/all_f.html b/doc/html/search/all_f.html new file mode 100644 index 0000000..89fa15a --- /dev/null +++ b/doc/html/search/all_f.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/all_f.js b/doc/html/search/all_f.js new file mode 100644 index 0000000..4b9b152 --- /dev/null +++ b/doc/html/search/all_f.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['quote',['quote',['../structutl_1_1meta_1_1quote.html',1,'utl::meta']]], + ['quote_5fi',['quote_i',['../structutl_1_1meta_1_1quote__i.html',1,'utl::meta']]] +]; diff --git a/doc/html/search/classes_0.html b/doc/html/search/classes_0.html new file mode 100644 index 0000000..e935fdf --- /dev/null +++ b/doc/html/search/classes_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/classes_0.js b/doc/html/search/classes_0.js new file mode 100644 index 0000000..540d8b3 --- /dev/null +++ b/doc/html/search/classes_0.js @@ -0,0 +1,45 @@ +var searchData= +[ + ['_5f1wire_5fi',['_1wire_i',['../classutl_1_1__1wire__i.html',1,'utl']]], + ['_5f1wire_5fi_3c_20_5f1wire_5fuart_5fi_3c_20impl_5ft_20_3e_20_3e',['_1wire_i< _1wire_uart_i< Impl_t > >',['../classutl_1_1__1wire__i.html',1,'utl']]], + ['_5f1wire_5fi_3c_20type_20_3e',['_1wire_i< type >',['../classutl_1_1__1wire__i.html',1,'utl']]], + ['_5f1wire_5fi_3c_20virtual_5ftag_20_3e',['_1wire_i< virtual_tag >',['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html',1,'utl']]], + ['_5f1wire_5fid_5ft',['_1wire_id_t',['../classutl_1_1__1wire__id__t.html',1,'utl']]], + ['_5f1wire_5fuart_5fi',['_1wire_uart_i',['../classutl_1_1__1wire__uart__i.html',1,'utl']]], + ['_5f1wire_5fuart_5fi_3c_20virtual_5ftag_20_3e',['_1wire_uart_i< virtual_tag >',['../classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html',1,'utl']]], + ['_5f_5fcommon_5fref_5f',['__common_ref_',['../structutl_1_1common__impl_1_1____common__ref__.html',1,'utl::common_impl']]], + ['_5f_5fcommon_5fref_5f_3c_20t_20_26_26_2c_20u_20_26_26_2c_20meta_3a_3avoid_5ft_3c_20_5f_5fcommon_5fref_3c_20t_20_26_2c_20u_20_26_20_3e_2c_20meta_3a_3awhen_3c_20convertibleto_3c_20t_20_26_26_2c_20_5f_5frref_5fres_3c_20t_2c_20u_20_3e_20_3e_20_3e_2c_20meta_3a_3awhen_3c_20convertibleto_3c_20u_20_26_26_2c_20_5f_5frref_5fres_3c_20t_2c_20u_20_3e_20_3e_20_3e_20_3e_20_3e',['__common_ref_< T &&, U &&, meta::void_t< __common_ref< T &, U & >, meta::when< ConvertibleTo< T &&, __rref_res< T, U > > >, meta::when< ConvertibleTo< U &&, __rref_res< T, U > > > > >',['../structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_6_00_01meta_1_1void__tc4e71c227f251cadf0e0fb7b1ba6f1e9.html',1,'utl::common_impl']]], + ['_5f_5fcommon_5fref_5f_3c_20t_20_26_26_2c_20u_20_26_2c_20meta_3a_3avoid_5ft_3c_20_5f_5fcommon_5fref_3c_20const_20t_20_26_2c_20u_20_26_20_3e_2c_20meta_3a_3awhen_3c_20convertibleto_3c_20t_20_26_26_2c_20_5f_5fcommon_5fref_3c_20const_20t_20_26_2c_20u_20_26_20_3e_20_3e_20_3e_20_3e_20_3e',['__common_ref_< T &&, U &, meta::void_t< __common_ref< const T &, U & >, meta::when< ConvertibleTo< T &&, __common_ref< const T &, U & > > > > >',['../structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_00_01meta_1_1void__t_3972a8d6e6799b6ee6537c969cdced343.html',1,'utl::common_impl']]], + ['_5f_5fcommon_5fref_5f_3c_20t_20_26_2c_20u_20_26_26_2c_20meta_3a_3avoid_5ft_3c_20_5f_5fcommon_5fref_3c_20t_20_26_2c_20const_20u_20_26_20_3e_2c_20meta_3a_3awhen_3c_20convertibleto_3c_20u_20_26_26_2c_20_5f_5fcommon_5fref_3c_20t_20_26_2c_20const_20u_20_26_20_3e_20_3e_20_3e_20_3e_20_3e',['__common_ref_< T &, U &&, meta::void_t< __common_ref< T &, const U & >, meta::when< ConvertibleTo< U &&, __common_ref< T &, const U & > > > > >',['../structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_6_00_01meta_1_1void__t_329fba5aeac3b93aa9cfa5aa7e282e196.html',1,'utl::common_impl']]], + ['_5f_5fcommon_5fref_5f_3c_20t_20_26_2c_20u_20_26_2c_20meta_3a_3avoid_5ft_3c_20_5f_5flref_5fres_3c_20t_2c_20u_20_3e_2c_20meta_3a_3awhen_3c_20std_3a_3ais_5freference_3c_20_5f_5flref_5fres_3c_20t_2c_20u_20_3e_20_3e_3a_3avalue_20_3e_20_3e_20_3e',['__common_ref_< T &, U &, meta::void_t< __lref_res< T, U >, meta::when< std::is_reference< __lref_res< T, U > >::value > > >',['../structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_00_01meta_1_1void__t_3_05e5aa384829bb34312a7b8ee4ecaa00f.html',1,'utl::common_impl']]], + ['_5f_5fcommon_5freference',['__common_reference',['../structutl_1_1common__impl_1_1____common__reference.html',1,'utl::common_impl']]], + ['_5f_5fcommon_5freference2',['__common_reference2',['../structutl_1_1common__impl_1_1____common__reference2.html',1,'utl::common_impl']]], + ['_5f_5fcommon_5freference2_3c_20t_2c_20u_20_3e',['__common_reference2< T, U >',['../structutl_1_1common__impl_1_1____common__reference2.html',1,'utl::common_impl']]], + ['_5f_5fcommon_5freference2_3c_20t_2c_20u_2c_20meta_3a_3avoid_5ft_3c_20_5f_5fbasic_5fcommon_5freference_5ft_3c_20t_2c_20u_20_3e_20_3e_20_3e',['__common_reference2< T, U, meta::void_t< __basic_common_reference_t< T, U > > >',['../structutl_1_1common__impl_1_1____common__reference2_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____785d0aa2f8a62416e19573fcbdd83836.html',1,'utl::common_impl']]], + ['_5f_5fcommon_5freference3',['__common_reference3',['../structutl_1_1common__impl_1_1____common__reference3.html',1,'utl::common_impl']]], + ['_5f_5fcommon_5freference3_3c_20t_2c_20u_20_3e',['__common_reference3< T, U >',['../structutl_1_1common__impl_1_1____common__reference3.html',1,'utl::common_impl']]], + ['_5f_5fcommon_5freference3_3c_20t_2c_20u_2c_20meta_3a_3avoid_5ft_3c_20_5f_5fcond_5fres_3c_20t_2c_20u_20_3e_20_3e_20_3e',['__common_reference3< T, U, meta::void_t< __cond_res< T, U > > >',['../structutl_1_1common__impl_1_1____common__reference3_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____015b01ed12d2d90ee57fbf756ab847e9.html',1,'utl::common_impl']]], + ['_5f_5fcommon_5freference_3c_20t_2c_20u_20_3e',['__common_reference< T, U >',['../structutl_1_1common__impl_1_1____common__reference.html',1,'utl::common_impl']]], + ['_5f_5fcommon_5freference_3c_20t_2c_20u_2c_20meta_3a_3awhen_3c_20std_3a_3ais_5freference_3c_20t_20_3e_3a_3avalue_20_26_26std_3a_3ais_5freference_3c_20u_20_3e_3a_3avalue_20_3e_20_3e',['__common_reference< T, U, meta::when< std::is_reference< T >::value &&std::is_reference< U >::value > >',['../structutl_1_1common__impl_1_1____common__reference_3_01_t_00_01_u_00_01meta_1_1when_3_01std_1_1i23b95b4b3a65ce598dbcc7f52e9dab2c.html',1,'utl::common_impl']]], + ['_5f_5fcopy_5fcv_5f',['__copy_cv_',['../structutl_1_1common__impl_1_1____copy__cv__.html',1,'utl::common_impl']]], + ['_5f_5fcopy_5fcv_5f_3c_20const_20from_20_3e',['__copy_cv_< const From >',['../structutl_1_1common__impl_1_1____copy__cv___3_01const_01_from_01_4.html',1,'utl::common_impl']]], + ['_5f_5fcopy_5fcv_5f_3c_20const_20volatile_20from_20_3e',['__copy_cv_< const volatile From >',['../structutl_1_1common__impl_1_1____copy__cv___3_01const_01volatile_01_from_01_4.html',1,'utl::common_impl']]], + ['_5f_5fcopy_5fcv_5f_3c_20volatile_20from_20_3e',['__copy_cv_< volatile From >',['../structutl_1_1common__impl_1_1____copy__cv___3_01volatile_01_from_01_4.html',1,'utl::common_impl']]], + ['_5f_5fxref',['__xref',['../structutl_1_1common__impl_1_1____xref.html',1,'utl::common_impl']]], + ['_5f_5fxref_3c_20const_20t_20_3e',['__xref< const T >',['../structutl_1_1common__impl_1_1____xref_3_01const_01_t_01_4.html',1,'utl::common_impl']]], + ['_5f_5fxref_3c_20const_20volatile_20t_20_3e',['__xref< const volatile T >',['../structutl_1_1common__impl_1_1____xref_3_01const_01volatile_01_t_01_4.html',1,'utl::common_impl']]], + ['_5f_5fxref_3c_20t_20_26_20_3e',['__xref< T & >',['../structutl_1_1common__impl_1_1____xref_3_01_t_01_6_01_4.html',1,'utl::common_impl']]], + ['_5f_5fxref_3c_20t_20_26_26_20_3e',['__xref< T && >',['../structutl_1_1common__impl_1_1____xref_3_01_t_01_6_6_01_4.html',1,'utl::common_impl']]], + ['_5f_5fxref_3c_20volatile_20t_20_3e',['__xref< volatile T >',['../structutl_1_1common__impl_1_1____xref_3_01volatile_01_t_01_4.html',1,'utl::common_impl']]], + ['_5fadd_5fpointer',['_add_pointer',['../structutl_1_1meta_1_1at__impl_1_1__add__pointer.html',1,'utl::meta::at_impl']]], + ['_5fand_5f',['_and_',['../structutl_1_1meta_1_1detail_1_1__and__.html',1,'utl::meta::detail']]], + ['_5fand_5f_3c_20_5ft1_20_3e',['_and_< _T1 >',['../structutl_1_1meta_1_1detail_1_1__and___3_01___t1_01_4.html',1,'utl::meta::detail']]], + ['_5fand_5f_3c_20_5ft1_2c_20_5ft2_20_3e',['_and_< _T1, _T2 >',['../structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_01_4.html',1,'utl::meta::detail']]], + ['_5fand_5f_3c_20_5ft1_2c_20_5ft2_2c_20_5ft3_2c_20_5ftn_2e_2e_2e_20_3e',['_and_< _T1, _T2, _T3, _Tn... >',['../structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4.html',1,'utl::meta::detail']]], + ['_5fand_5f_3c_3e',['_and_<>',['../structutl_1_1meta_1_1detail_1_1__and___3_4.html',1,'utl::meta::detail']]], + ['_5for_5f',['_or_',['../structutl_1_1meta_1_1detail_1_1__or__.html',1,'utl::meta::detail']]], + ['_5for_5f_3c_20_5ft1_20_3e',['_or_< _T1 >',['../structutl_1_1meta_1_1detail_1_1__or___3_01___t1_01_4.html',1,'utl::meta::detail']]], + ['_5for_5f_3c_20_5ft1_2c_20_5ft2_20_3e',['_or_< _T1, _T2 >',['../structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_01_4.html',1,'utl::meta::detail']]], + ['_5for_5f_3c_20_5ft1_2c_20_5ft2_2c_20_5ft3_2c_20_5ftn_2e_2e_2e_20_3e',['_or_< _T1, _T2, _T3, _Tn... >',['../structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4.html',1,'utl::meta::detail']]], + ['_5for_5f_3c_3e',['_or_<>',['../structutl_1_1meta_1_1detail_1_1__or___3_4.html',1,'utl::meta::detail']]] +]; diff --git a/doc/html/search/classes_1.html b/doc/html/search/classes_1.html new file mode 100644 index 0000000..3df6e80 --- /dev/null +++ b/doc/html/search/classes_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/classes_1.js b/doc/html/search/classes_1.js new file mode 100644 index 0000000..aeb9cb7 --- /dev/null +++ b/doc/html/search/classes_1.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['apply',['apply',['../structutl_1_1meta_1_1same__as_1_1apply.html',1,'utl::meta::same_as< T1 >::apply< T2 >'],['../structutl_1_1meta_1_1not__same__as_1_1apply.html',1,'utl::meta::not_same_as< T1 >::apply< T2 >']]], + ['apply_5f',['apply_',['../structutl_1_1meta_1_1apply__impl_1_1apply__.html',1,'utl::meta::apply_impl']]], + ['apply_5f_3c_20fn_2c_20integer_5fsequence_3c_20t_2c_20is_2e_2e_2e_20_3e_20_3e',['apply_< Fn, integer_sequence< T, Is... > >',['../structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01integer__sequence_3_01_t_00_01_is_8_8_8_01_4_01_4.html',1,'utl::meta::apply_impl']]], + ['apply_5f_3c_20fn_2c_20typelist_3c_20list_2e_2e_2e_20_3e_20_3e',['apply_< Fn, typelist< List... > >',['../structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01typelist_3_01_list_8_8_8_01_4_01_4.html',1,'utl::meta::apply_impl']]], + ['array',['array',['../structutl_1_1array.html',1,'utl']]], + ['array_5ftraits',['array_traits',['../structutl_1_1array__traits.html',1,'utl']]], + ['array_5ftraits_3c_20_5ftp_2c_200_20_3e',['array_traits< _Tp, 0 >',['../structutl_1_1array__traits_3_01___tp_00_010_01_4.html',1,'utl']]], + ['at_5f',['at_',['../structutl_1_1meta_1_1at__impl_1_1at__.html',1,'utl::meta::at_impl']]], + ['at_5f_3c_20typelist_3c_20list_2e_2e_2e_20_3e_2c_20n_20_3e',['at_< typelist< List... >, N >',['../structutl_1_1meta_1_1at__impl_1_1at___3_01typelist_3_01_list_8_8_8_01_4_00_01_n_01_4.html',1,'utl::meta::at_impl']]], + ['at_5fhead_5f',['at_head_',['../structutl_1_1meta_1_1at__impl_1_1at__head__.html',1,'utl::meta::at_impl']]], + ['at_5fhead_5f_3c_20typelist_3c_20voids_2e_2e_2e_20_3e_20_3e',['at_head_< typelist< voids... > >',['../structutl_1_1meta_1_1at__impl_1_1at__head___3_01typelist_3_01voids_8_8_8_01_4_01_4.html',1,'utl::meta::at_impl']]] +]; diff --git a/doc/html/search/classes_10.html b/doc/html/search/classes_10.html new file mode 100644 index 0000000..0477a26 --- /dev/null +++ b/doc/html/search/classes_10.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/classes_10.js b/doc/html/search/classes_10.js new file mode 100644 index 0000000..e2b0eee --- /dev/null +++ b/doc/html/search/classes_10.js @@ -0,0 +1,22 @@ +var searchData= +[ + ['same_5f',['same_',['../structutl_1_1meta_1_1same__.html',1,'utl::meta']]], + ['same_5f_3c_20_5ftp_2c_20_5ftp_20_3e',['same_< _Tp, _Tp >',['../structutl_1_1meta_1_1same___3_01___tp_00_01___tp_01_4.html',1,'utl::meta']]], + ['same_5f_3c_20t1_2c_20t2_20_3e',['same_< T1, T2 >',['../structutl_1_1meta_1_1same__.html',1,'utl::meta']]], + ['same_5fas',['same_as',['../structutl_1_1meta_1_1same__as.html',1,'utl::meta']]], + ['scopedtrace',['ScopedTrace',['../classtesting_1_1_scoped_trace.html',1,'testing']]], + ['seek_5fif_5f',['seek_if_',['../structutl_1_1meta_1_1seek__if__impl_1_1seek__if__.html',1,'utl::meta::seek_if_impl']]], + ['seek_5fif_5f_3c_20typelist_3c_20head_2c_20tail_2e_2e_2e_20_3e_2c_20fn_2c_20n_20_3e',['seek_if_< typelist< Head, Tail... >, Fn, N >',['../structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.html',1,'utl::meta::seek_if_impl']]], + ['seek_5fif_5f_3c_20typelist_3c_3e_2c_20fn_2c_20n_20_3e',['seek_if_< typelist<>, Fn, N >',['../structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.html',1,'utl::meta::seek_if_impl']]], + ['spi',['SPI',['../classtest__spi_1_1_s_p_i.html',1,'test_spi']]], + ['spi_5fbb_5fi',['spi_bb_i',['../classutl_1_1spi__bb__i.html',1,'utl']]], + ['spi_5fbb_5fi_3c_20spi_2c_20spi_3a_3acpol_3a_3alow_2c_20spi_3a_3acpha_3a_3alow_20_3e',['spi_bb_i< SPI, spi::cpol::LOW, spi::cpha::LOW >',['../classutl_1_1spi__bb__i.html',1,'utl']]], + ['spi_5fbb_5fi_3c_20virtual_5ftag_2c_20cpol_2c_20cpha_2c_20bitorder_20_3e',['spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >',['../classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html',1,'utl']]], + ['spi_5fi',['spi_i',['../classutl_1_1spi__i.html',1,'utl']]], + ['spi_5fi_3c_20spi_5fbb_5fi_3c_20impl_5ft_2c_20cpol_2c_20cpha_2c_20bitorder_20_3e_20_3e',['spi_i< spi_bb_i< impl_t, CPOL, CPHA, BitOrder > >',['../classutl_1_1spi__i.html',1,'utl']]], + ['spi_5fi_3c_20spi_5fbb_5fi_3c_20spi_2c_20cpol_2c_20cpha_2c_20spi_3a_3abitorder_3a_3amsb_5ffirst_20_3e_20_3e',['spi_i< spi_bb_i< SPI, CPOL, CPHA, spi::bitOrder::MSB_First > >',['../classutl_1_1spi__i.html',1,'utl']]], + ['spi_5fi_3c_20virtual_5ftag_20_3e',['spi_i< virtual_tag >',['../classutl_1_1spi__i_3_01virtual__tag_01_4.html',1,'utl']]], + ['staticasserttypeeqhelper',['StaticAssertTypeEqHelper',['../structtesting_1_1internal_1_1_static_assert_type_eq_helper.html',1,'testing::internal']]], + ['staticasserttypeeqhelper_3c_20t_2c_20t_20_3e',['StaticAssertTypeEqHelper< T, T >',['../structtesting_1_1internal_1_1_static_assert_type_eq_helper_3_01_t_00_01_t_01_4.html',1,'testing::internal']]], + ['suiteapiresolver',['SuiteApiResolver',['../structtesting_1_1internal_1_1_suite_api_resolver.html',1,'testing::internal']]] +]; diff --git a/doc/html/search/classes_11.html b/doc/html/search/classes_11.html new file mode 100644 index 0000000..6bbc0d1 --- /dev/null +++ b/doc/html/search/classes_11.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/classes_11.js b/doc/html/search/classes_11.js new file mode 100644 index 0000000..7224597 --- /dev/null +++ b/doc/html/search/classes_11.js @@ -0,0 +1,39 @@ +var searchData= +[ + ['test',['Test',['../classtesting_1_1_test.html',1,'testing']]], + ['test_5f1w_5fimpl',['Test_1w_impl',['../classtest__1w_1_1_test__1w__impl.html',1,'test_1w']]], + ['test_5fspi_5fimpl',['Test_spi_impl',['../classtest__spi_1_1_test__spi__impl.html',1,'test_spi']]], + ['testeventlistener',['TestEventListener',['../classtesting_1_1_test_event_listener.html',1,'testing']]], + ['testeventlisteners',['TestEventListeners',['../classtesting_1_1_test_event_listeners.html',1,'testing']]], + ['testfactorybase',['TestFactoryBase',['../classtesting_1_1internal_1_1_test_factory_base.html',1,'testing::internal']]], + ['testfactoryimpl',['TestFactoryImpl',['../classtesting_1_1internal_1_1_test_factory_impl.html',1,'testing::internal']]], + ['testinfo',['TestInfo',['../classtesting_1_1_test_info.html',1,'testing']]], + ['testmetafactory',['TestMetaFactory',['../classtesting_1_1internal_1_1_test_meta_factory.html',1,'testing::internal']]], + ['testmetafactorybase',['TestMetaFactoryBase',['../classtesting_1_1internal_1_1_test_meta_factory_base.html',1,'testing::internal']]], + ['testmetafactorybase_3c_20testsuite_3a_3aparamtype_20_3e',['TestMetaFactoryBase< TestSuite::ParamType >',['../classtesting_1_1internal_1_1_test_meta_factory_base.html',1,'testing::internal']]], + ['testparaminfo',['TestParamInfo',['../structtesting_1_1_test_param_info.html',1,'testing']]], + ['testproperty',['TestProperty',['../classtesting_1_1_test_property.html',1,'testing']]], + ['testresult',['TestResult',['../classtesting_1_1_test_result.html',1,'testing']]], + ['testsuite',['TestSuite',['../classtesting_1_1_test_suite.html',1,'testing']]], + ['testwithparam',['TestWithParam',['../classtesting_1_1_test_with_param.html',1,'testing']]], + ['threadlocal',['ThreadLocal',['../classtesting_1_1internal_1_1_thread_local.html',1,'testing::internal']]], + ['tostream_5fidev',['Tostream_Idev',['../classtest__ostream__dev_1_1_tostream___idev.html',1,'test_ostream_dev']]], + ['tostream_5fvdev',['Tostream_Vdev',['../classtest__ostream__dev_1_1_tostream___vdev.html',1,'test_ostream_dev']]], + ['transform_5f',['transform_',['../structutl_1_1meta_1_1transform__impl_1_1transform__.html',1,'utl::meta::transform_impl']]], + ['transform_5f_3c_20typelist_3c_20typelist_3c_20ts_2e_2e_2e_20_3e_2c_20fn_20_3e_2c_20void_5ft_3c_20invoke_3c_20fn_2c_20ts_20_3e_2e_2e_2e_20_3e_20_3e',['transform_< typelist< typelist< Ts... >, Fn >, void_t< invoke< Fn, Ts >... > >',['../structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts_8_8_8_01_40fe2b1c8ede658aadb6925de73541689.html',1,'utl::meta::transform_impl']]], + ['transform_5f_3c_20typelist_3c_20typelist_3c_20ts0_2e_2e_2e_20_3e_2c_20typelist_3c_20ts1_2e_2e_2e_20_3e_2c_20fn_20_3e_2c_20void_5ft_3c_20invoke_3c_20fn_2c_20ts0_2c_20ts1_20_3e_2e_2e_2e_20_3e_20_3e',['transform_< typelist< typelist< Ts0... >, typelist< Ts1... >, Fn >, void_t< invoke< Fn, Ts0, Ts1 >... > >',['../structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts0_8_8_8_01_8fba6bf3d0565d17a96950cb517db5f1.html',1,'utl::meta::transform_impl']]], + ['transform_5flazy_5f',['transform_lazy_',['../structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy__.html',1,'utl::meta::transform_lazy_impl']]], + ['transform_5flazy_5f_3c_20typelist_3c_20typelist_3c_20ts_2e_2e_2e_20_3e_2c_20fn_20_3e_2c_20void_5ft_3c_20invoke_3c_20fn_2c_20ts_20_3e_2e_2e_2e_20_3e_20_3e',['transform_lazy_< typelist< typelist< Ts... >, Fn >, void_t< invoke< Fn, Ts >... > >',['../structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t56243bc35bf73da8271cb88f34751f3a.html',1,'utl::meta::transform_lazy_impl']]], + ['transform_5flazy_5f_3c_20typelist_3c_20typelist_3c_20ts0_2e_2e_2e_20_3e_2c_20typelist_3c_20ts1_2e_2e_2e_20_3e_2c_20fn_20_3e_2c_20void_5ft_3c_20invoke_3c_20fn_2c_20ts0_2c_20ts1_20_3e_2e_2e_2e_20_3e_20_3e',['transform_lazy_< typelist< typelist< Ts0... >, typelist< Ts1... >, Fn >, void_t< invoke< Fn, Ts0, Ts1 >... > >',['../structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t14ff615a4bff6c4c3701df9c38aaa6a5.html',1,'utl::meta::transform_lazy_impl']]], + ['try_5finvoke',['try_invoke',['../structutl_1_1detail_1_1try__invoke.html',1,'utl::detail']]], + ['type',['type',['../structutl_1_1array__traits_3_01___tp_00_010_01_4_1_1type.html',1,'utl::array_traits< _Tp, 0 >::type'],['../structutl_1_1id__traits_3_01___tp_00_010_01_4_1_1type.html',1,'utl::id_traits< _Tp, 0 >::type']]], + ['typeidhelper',['TypeIdHelper',['../classtesting_1_1internal_1_1_type_id_helper.html',1,'testing::internal']]], + ['typelist',['typelist',['../structutl_1_1meta_1_1typelist.html',1,'utl::meta']]], + ['typewithoutformatter',['TypeWithoutFormatter',['../classtesting_1_1internal2_1_1_type_without_formatter.html',1,'testing::internal2']]], + ['typewithoutformatter_3c_20t_2c_20kconvertibletointeger_20_3e',['TypeWithoutFormatter< T, kConvertibleToInteger >',['../classtesting_1_1internal2_1_1_type_without_formatter_3_01_t_00_01k_convertible_to_integer_01_4.html',1,'testing::internal2']]], + ['typewithoutformatter_3c_20t_2c_20kprotobuf_20_3e',['TypeWithoutFormatter< T, kProtobuf >',['../classtesting_1_1internal2_1_1_type_without_formatter_3_01_t_00_01k_protobuf_01_4.html',1,'testing::internal2']]], + ['typewithsize',['TypeWithSize',['../classtesting_1_1internal_1_1_type_with_size.html',1,'testing::internal']]], + ['typewithsize_3c_204_20_3e',['TypeWithSize< 4 >',['../classtesting_1_1internal_1_1_type_with_size_3_014_01_4.html',1,'testing::internal']]], + ['typewithsize_3c_208_20_3e',['TypeWithSize< 8 >',['../classtesting_1_1internal_1_1_type_with_size_3_018_01_4.html',1,'testing::internal']]], + ['typewithsize_3c_20sizeof_28rawtype_29_3e',['TypeWithSize< sizeof(RawType)>',['../classtesting_1_1internal_1_1_type_with_size.html',1,'testing::internal']]] +]; diff --git a/doc/html/search/classes_12.html b/doc/html/search/classes_12.html new file mode 100644 index 0000000..c889f6d --- /dev/null +++ b/doc/html/search/classes_12.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/classes_12.js b/doc/html/search/classes_12.js new file mode 100644 index 0000000..c38b892 --- /dev/null +++ b/doc/html/search/classes_12.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['unittest',['UnitTest',['../classtesting_1_1_unit_test.html',1,'testing']]], + ['universalprinter',['UniversalPrinter',['../classtesting_1_1internal_1_1_universal_printer.html',1,'testing::internal']]], + ['universalprinter_3c_20t_20_26_20_3e',['UniversalPrinter< T & >',['../classtesting_1_1internal_1_1_universal_printer_3_01_t_01_6_01_4.html',1,'testing::internal']]], + ['universalprinter_3c_20t_5bn_5d_3e',['UniversalPrinter< T[N]>',['../classtesting_1_1internal_1_1_universal_printer_3_01_t[_n]_4.html',1,'testing::internal']]], + ['universalterseprinter',['UniversalTersePrinter',['../classtesting_1_1internal_1_1_universal_terse_printer.html',1,'testing::internal']]], + ['universalterseprinter_3c_20char_20_2a_20_3e',['UniversalTersePrinter< char * >',['../classtesting_1_1internal_1_1_universal_terse_printer_3_01char_01_5_01_4.html',1,'testing::internal']]], + ['universalterseprinter_3c_20const_20char_20_2a_20_3e',['UniversalTersePrinter< const char * >',['../classtesting_1_1internal_1_1_universal_terse_printer_3_01const_01char_01_5_01_4.html',1,'testing::internal']]], + ['universalterseprinter_3c_20const_20wchar_5ft_20_2a_20_3e',['UniversalTersePrinter< const wchar_t * >',['../classtesting_1_1internal_1_1_universal_terse_printer_3_01const_01wchar__t_01_5_01_4.html',1,'testing::internal']]], + ['universalterseprinter_3c_20t_20_26_20_3e',['UniversalTersePrinter< T & >',['../classtesting_1_1internal_1_1_universal_terse_printer_3_01_t_01_6_01_4.html',1,'testing::internal']]], + ['universalterseprinter_3c_20t_5bn_5d_3e',['UniversalTersePrinter< T[N]>',['../classtesting_1_1internal_1_1_universal_terse_printer_3_01_t[_n]_4.html',1,'testing::internal']]], + ['universalterseprinter_3c_20wchar_5ft_20_2a_20_3e',['UniversalTersePrinter< wchar_t * >',['../classtesting_1_1internal_1_1_universal_terse_printer_3_01wchar__t_01_5_01_4.html',1,'testing::internal']]] +]; diff --git a/doc/html/search/classes_13.html b/doc/html/search/classes_13.html new file mode 100644 index 0000000..c38b027 --- /dev/null +++ b/doc/html/search/classes_13.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/classes_13.js b/doc/html/search/classes_13.js new file mode 100644 index 0000000..f2c2da3 --- /dev/null +++ b/doc/html/search/classes_13.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['valuearray',['ValueArray',['../classtesting_1_1internal_1_1_value_array.html',1,'testing::internal']]], + ['valuesiniteratorrangegenerator',['ValuesInIteratorRangeGenerator',['../classtesting_1_1internal_1_1_values_in_iterator_range_generator.html',1,'testing::internal']]], + ['virtual_5ftag',['virtual_tag',['../structutl_1_1virtual__tag.html',1,'utl']]] +]; diff --git a/doc/html/search/classes_14.html b/doc/html/search/classes_14.html new file mode 100644 index 0000000..c978bce --- /dev/null +++ b/doc/html/search/classes_14.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/classes_14.js b/doc/html/search/classes_14.js new file mode 100644 index 0000000..62d3069 --- /dev/null +++ b/doc/html/search/classes_14.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['when_5f',['when_',['../structutl_1_1meta_1_1detail_1_1when__.html',1,'utl::meta::detail']]], + ['when_5f_3c_20true_20_3e',['when_< true >',['../structutl_1_1meta_1_1detail_1_1when___3_01true_01_4.html',1,'utl::meta::detail']]], + ['withparaminterface',['WithParamInterface',['../classtesting_1_1_with_param_interface.html',1,'testing']]], + ['wrap',['wrap',['../structutl_1_1meta_1_1wrap.html',1,'utl::meta']]], + ['wrap_5fi',['wrap_i',['../structutl_1_1meta_1_1wrap__i.html',1,'utl::meta']]], + ['wrapprintertype',['WrapPrinterType',['../structtesting_1_1internal_1_1_wrap_printer_type.html',1,'testing::internal']]] +]; diff --git a/doc/html/search/classes_2.html b/doc/html/search/classes_2.html new file mode 100644 index 0000000..028694f --- /dev/null +++ b/doc/html/search/classes_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/classes_2.js b/doc/html/search/classes_2.js new file mode 100644 index 0000000..6b1d853 --- /dev/null +++ b/doc/html/search/classes_2.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['back_5f',['back_',['../structutl_1_1meta_1_1back__impl_1_1back__.html',1,'utl::meta::back_impl']]], + ['back_5f_3c_20typelist_3c_20head_2c_20tail_2e_2e_2e_20_3e_20_3e',['back_< typelist< Head, Tail... > >',['../structutl_1_1meta_1_1back__impl_1_1back___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.html',1,'utl::meta::back_impl']]], + ['basic_5fcommon_5freference',['basic_common_reference',['../structutl_1_1common__impl_1_1basic__common__reference.html',1,'utl::common_impl']]], + ['bidirectional_5fiterator_5ftag',['bidirectional_iterator_tag',['../structutl_1_1bidirectional__iterator__tag.html',1,'utl']]], + ['bind_5fback',['bind_back',['../structutl_1_1meta_1_1bind__back.html',1,'utl::meta']]], + ['bind_5ffront',['bind_front',['../structutl_1_1meta_1_1bind__front.html',1,'utl::meta']]] +]; diff --git a/doc/html/search/classes_3.html b/doc/html/search/classes_3.html new file mode 100644 index 0000000..2b1abe3 --- /dev/null +++ b/doc/html/search/classes_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/classes_3.js b/doc/html/search/classes_3.js new file mode 100644 index 0000000..d2b580a --- /dev/null +++ b/doc/html/search/classes_3.js @@ -0,0 +1,25 @@ +var searchData= +[ + ['cat_5f',['cat_',['../structutl_1_1meta_1_1typelist_1_1cat__.html',1,'utl::meta::typelist< Ts >::cat_<... >'],['../structutl_1_1meta_1_1cat__impl_1_1cat__.html',1,'utl::meta::cat_impl::cat_< Lists >']]], + ['cat_5f_3c_20typelist_3c_20l1_2e_2e_2e_20_3e_20_3e',['cat_< typelist< L1... > >',['../structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_01_4.html',1,'utl::meta::cat_impl']]], + ['cat_5f_3c_20typelist_3c_20l1_2e_2e_2e_20_3e_2c_20typelist_3c_20l2_2e_2e_2e_20_3e_20_3e',['cat_< typelist< L1... >, typelist< L2... > >',['../structutl_1_1meta_1_1typelist_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4.html',1,'utl::meta::typelist< Ts >::cat_< typelist< L1... >, typelist< L2... > >'],['../structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4.html',1,'utl::meta::cat_impl::cat_< typelist< L1... >, typelist< L2... > >']]], + ['cat_5f_3c_20typelist_3c_20l1_2e_2e_2e_20_3e_2c_20typelist_3c_20l2_2e_2e_2e_20_3e_2c_20ln_2e_2e_2e_20_3e',['cat_< typelist< L1... >, typelist< L2... >, Ln... >',['../structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_00_01_ln_8_8_8_01_4.html',1,'utl::meta::cat_impl']]], + ['cat_5f_3c_20typelist_3c_20l1_2e_2e_2e_2c_20l2_2e_2e_2e_20_3e_2c_20ln_2e_2e_2e_20_3e',['cat_< typelist< L1..., L2... >, Ln... >',['../structutl_1_1meta_1_1cat__impl_1_1cat__.html',1,'utl::meta::cat_impl']]], + ['cat_5f_3c_3e',['cat_<>',['../structutl_1_1meta_1_1cat__impl_1_1cat___3_4.html',1,'utl::meta::cat_impl']]], + ['common_5freference',['common_reference',['../structutl_1_1common__impl_1_1common__reference.html',1,'utl::common_impl']]], + ['common_5freference_3c_20common_5freference_5ft_3c_20t_2c_20u_20_3e_2c_20v_2c_20w_2e_2e_2e_20_3e',['common_reference< common_reference_t< T, U >, V, W... >',['../structutl_1_1common__impl_1_1common__reference.html',1,'utl::common_impl']]], + ['common_5freference_3c_20t_20_3e',['common_reference< T >',['../structutl_1_1common__impl_1_1common__reference_3_01_t_01_4.html',1,'utl::common_impl']]], + ['common_5freference_3c_20t_2c_20u_20_3e',['common_reference< T, U >',['../structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_01_4.html',1,'utl::common_impl']]], + ['common_5freference_3c_20t_2c_20u_2c_20v_2c_20w_2e_2e_2e_20_3e',['common_reference< T, U, V, W... >',['../structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_00_01_v_00_01_w_8_8_8_01_4.html',1,'utl::common_impl']]], + ['compose_5f',['compose_',['../structutl_1_1meta_1_1detail_1_1compose__.html',1,'utl::meta::detail']]], + ['compose_5f_3c_20fn0_20_3e',['compose_< Fn0 >',['../structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_01_4.html',1,'utl::meta::detail']]], + ['compose_5f_3c_20fn0_2c_20fns_2e_2e_2e_20_3e',['compose_< Fn0, Fns... >',['../structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_00_01_fns_8_8_8_01_4.html',1,'utl::meta::detail']]], + ['compose_5ff_5f',['compose_f_',['../structutl_1_1meta_1_1detail_1_1compose__f__.html',1,'utl::meta::detail']]], + ['compose_5ff_5f_3c_20fn0_20_3e',['compose_f_< Fn0 >',['../structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_01_4.html',1,'utl::meta::detail']]], + ['compose_5ff_5f_3c_20fn0_2c_20fns_2e_2e_2e_20_3e',['compose_f_< Fn0, Fns... >',['../structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_00_01_fns_8_8_8_01_4.html',1,'utl::meta::detail']]], + ['contiguous_5fiterator_5ftag',['contiguous_iterator_tag',['../structutl_1_1contiguous__iterator__tag.html',1,'utl']]], + ['count_5fif_5f',['count_if_',['../structutl_1_1meta_1_1count__if__impl_1_1count__if__.html',1,'utl::meta::count_if_impl']]], + ['count_5fif_5f_3c_20typelist_3c_20head_2c_20tail_2e_2e_2e_20_3e_2c_20fn_2c_20n_20_3e',['count_if_< typelist< Head, Tail... >, Fn, N >',['../structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.html',1,'utl::meta::count_if_impl']]], + ['count_5fif_5f_3c_20typelist_3c_3e_2c_20fn_2c_20n_20_3e',['count_if_< typelist<>, Fn, N >',['../structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.html',1,'utl::meta::count_if_impl']]], + ['crtp_5ftag',['crtp_tag',['../structutl_1_1crtp__tag.html',1,'utl']]] +]; diff --git a/doc/html/search/classes_4.html b/doc/html/search/classes_4.html new file mode 100644 index 0000000..8735214 --- /dev/null +++ b/doc/html/search/classes_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/classes_4.js b/doc/html/search/classes_4.js new file mode 100644 index 0000000..5f2a16d --- /dev/null +++ b/doc/html/search/classes_4.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['defer_5f',['defer_',['../structutl_1_1meta_1_1detail_1_1defer__.html',1,'utl::meta::detail']]], + ['defer_5fi_5f',['defer_i_',['../structutl_1_1meta_1_1detail_1_1defer__i__.html',1,'utl::meta::detail']]], + ['detector',['detector',['../structutl_1_1meta_1_1detail_1_1detector.html',1,'utl::meta::detail']]], + ['detector_3c_20default_2c_20void_5ft_3c_20op_3c_20args_2e_2e_2e_20_3e_20_3e_2c_20op_2c_20args_2e_2e_2e_20_3e',['detector< Default, void_t< Op< Args... > >, Op, Args... >',['../structutl_1_1meta_1_1detail_1_1detector_3_01_default_00_01void__t_3_01_op_3_01_args_8_8_8_01_4_0c35bdbd19f56980c0b5ee6d490bfb634.html',1,'utl::meta::detail']]], + ['dev_5fiterator_5ftraits',['dev_iterator_traits',['../structutl_1_1dev__iterator__traits.html',1,'utl']]], + ['dev_5fiterator_5ftraits_3c_20std_3a_3aoutput_5fiterator_5ftag_2c_20data_5ft_2c_20void_20_3e',['dev_iterator_traits< std::output_iterator_tag, data_t, void >',['../structutl_1_1dev__iterator__traits.html',1,'utl']]], + ['dev_5fiterator_5ftraits_3c_20std_3a_3aoutput_5fiterator_5ftag_2c_20iter_5ft_20_3e',['dev_iterator_traits< std::output_iterator_tag, iter_t >',['../structutl_1_1dev__iterator__traits.html',1,'utl']]] +]; diff --git a/doc/html/search/classes_5.html b/doc/html/search/classes_5.html new file mode 100644 index 0000000..ba8b1c6 --- /dev/null +++ b/doc/html/search/classes_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/classes_5.js b/doc/html/search/classes_5.js new file mode 100644 index 0000000..92d88cf --- /dev/null +++ b/doc/html/search/classes_5.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['filter_5f',['filter_',['../structutl_1_1meta_1_1filter__impl_1_1filter__.html',1,'utl::meta::filter_impl']]], + ['filter_5f_3c_20typelist_3c_20head_2c_20tail_2e_2e_2e_20_3e_2c_20fn_2c_20l_20_3e',['filter_< typelist< Head, Tail... >, Fn, L >',['../structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_l_01_4.html',1,'utl::meta::filter_impl']]], + ['filter_5f_3c_20typelist_3c_3e_2c_20fn_2c_20l_20_3e',['filter_< typelist<>, Fn, L >',['../structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_4_00_01_fn_00_01_l_01_4.html',1,'utl::meta::filter_impl']]], + ['find_5fif_5f',['find_if_',['../structutl_1_1meta_1_1find__if__impl_1_1find__if__.html',1,'utl::meta::find_if_impl']]], + ['find_5fif_5f_3c_20typelist_3c_20head_2c_20tail_2e_2e_2e_20_3e_2c_20fn_2c_20n_20_3e',['find_if_< typelist< Head, Tail... >, Fn, N >',['../structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.html',1,'utl::meta::find_if_impl']]], + ['find_5fif_5f_3c_20typelist_3c_3e_2c_20fn_2c_20n_20_3e',['find_if_< typelist<>, Fn, N >',['../structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.html',1,'utl::meta::find_if_impl']]], + ['fold_5f',['fold_',['../structutl_1_1meta_1_1fold__impl_1_1fold__.html',1,'utl::meta::fold_impl']]], + ['fold_5f_3c_20typelist_3c_20head_2c_20tail_2e_2e_2e_20_3e_2c_20v_2c_20fn_20_3e',['fold_< typelist< Head, Tail... >, V, Fn >',['../structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4.html',1,'utl::meta::fold_impl']]], + ['fold_5f_3c_20typelist_3c_3e_2c_20v0_2c_20fn_20_3e',['fold_< typelist<>, V0, Fn >',['../structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_4_00_01_v0_00_01_fn_01_4.html',1,'utl::meta::fold_impl']]], + ['forward_5fiterator_5ftag',['forward_iterator_tag',['../structutl_1_1forward__iterator__tag.html',1,'utl']]], + ['front_5f',['front_',['../structutl_1_1meta_1_1front__impl_1_1front__.html',1,'utl::meta::front_impl']]], + ['front_5f_3c_20typelist_3c_20head_2c_20tail_2e_2e_2e_20_3e_20_3e',['front_< typelist< Head, Tail... > >',['../structutl_1_1meta_1_1front__impl_1_1front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.html',1,'utl::meta::front_impl']]] +]; diff --git a/doc/html/search/classes_6.html b/doc/html/search/classes_6.html new file mode 100644 index 0000000..f585093 --- /dev/null +++ b/doc/html/search/classes_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/classes_6.js b/doc/html/search/classes_6.js new file mode 100644 index 0000000..84b2d27 --- /dev/null +++ b/doc/html/search/classes_6.js @@ -0,0 +1,64 @@ +var searchData= +[ + ['i2c_5fbb_5fi',['i2c_bb_i',['../classutl_1_1i2c__bb__i.html',1,'utl']]], + ['i2c_5fbb_5fi_3c_20virtual_5ftag_20_3e',['i2c_bb_i< virtual_tag >',['../classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html',1,'utl']]], + ['i2c_5fi',['i2c_i',['../classutl_1_1i2c__i.html',1,'utl']]], + ['i2c_5fi_3c_20i2c_5fbb_5fi_3c_20impl_5ft_20_3e_20_3e',['i2c_i< i2c_bb_i< impl_t > >',['../classutl_1_1i2c__i.html',1,'utl']]], + ['i2c_5fi_3c_20virtual_5ftag_20_3e',['i2c_i< virtual_tag >',['../classutl_1_1i2c__i_3_01virtual__tag_01_4.html',1,'utl']]], + ['id_5ft',['id_t',['../structutl_1_1id__t.html',1,'utl']]], + ['id_5ft_3c_20uint8_5ft_2c_208_20_3e',['id_t< uint8_t, 8 >',['../structutl_1_1id__t.html',1,'utl']]], + ['id_5ftraits',['id_traits',['../structutl_1_1id__traits.html',1,'utl']]], + ['id_5ftraits_3c_20_5ftp_2c_200_20_3e',['id_traits< _Tp, 0 >',['../structutl_1_1id__traits_3_01___tp_00_010_01_4.html',1,'utl']]], + ['identity',['identity',['../structutl_1_1meta_1_1identity.html',1,'utl::meta']]], + ['idx_5fdev',['idx_dev',['../classutl_1_1idx__dev.html',1,'utl']]], + ['idx_5fdev_3c_20virtual_5ftag_2c_20data_5ft_2c_20idx_5ft_2c_20n_20_3e',['idx_dev< virtual_tag, data_t, idx_t, N >',['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html',1,'utl']]], + ['if_5fc_5f',['if_c_',['../structutl_1_1meta_1_1detail_1_1if__c__.html',1,'utl::meta::detail']]], + ['if_5fc_5f_3c_20false_2c_20then_2c_20else_20_3e',['if_c_< false, Then, Else >',['../structutl_1_1meta_1_1detail_1_1if__c___3_01false_00_01_then_00_01_else_01_4.html',1,'utl::meta::detail']]], + ['if_5fc_5f_3c_20true_2c_20then_20_3e',['if_c_< true, Then >',['../structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_01_4.html',1,'utl::meta::detail']]], + ['if_5fc_5f_3c_20true_2c_20then_2c_20else_20_3e',['if_c_< true, Then, Else >',['../structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_00_01_else_01_4.html',1,'utl::meta::detail']]], + ['in_5fdev',['in_dev',['../classutl_1_1in__dev.html',1,'utl']]], + ['in_5fdev_3c_20virtual_5ftag_2c_20data_5ft_2c_20streamsize_20_3e',['in_dev< virtual_tag, data_t, streamsize >',['../classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html',1,'utl']]], + ['inbuf_5fdev',['inbuf_dev',['../classutl_1_1inbuf__dev.html',1,'utl']]], + ['inbuf_5fdev_3c_20virtual_5ftag_2c_20data_5ft_2c_20streamsize_20_3e',['inbuf_dev< virtual_tag, data_t, streamsize >',['../classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html',1,'utl']]], + ['indev_5fit',['indev_it',['../classutl_1_1indev__it.html',1,'utl']]], + ['input_5fiterator_5ftag',['input_iterator_tag',['../structutl_1_1input__iterator__tag.html',1,'utl']]], + ['invoke_5fresult_5f',['invoke_result_',['../structutl_1_1detail_1_1invoke__result__.html',1,'utl::detail']]], + ['invoke_5fresult_5f_3c_20true_2c_20_5fcallable_2c_20_5fargs_2e_2e_2e_20_3e',['invoke_result_< true, _Callable, _Args... >',['../structutl_1_1detail_1_1invoke__result___3_01true_00_01___callable_00_01___args_8_8_8_01_4.html',1,'utl::detail']]], + ['iodev_5fit',['iodev_it',['../classutl_1_1iodev__it.html',1,'utl']]], + ['is_5f1wire_5f',['is_1wire_',['../structutl_1_1__1wire__i__det_1_1is__1wire__.html',1,'utl::_1wire_i_det']]], + ['is_5f1wire_5f_3c_20_5ftp_2c_20meta_3a_3avoid_5ft_3c_20void_20_3e_20_3e',['is_1wire_< _Tp, meta::void_t< void > >',['../structutl_1_1__1wire__i__det_1_1is__1wire___3_01___tp_00_01meta_1_1void__t_3_01void_01_4_01_4.html',1,'utl::_1wire_i_det']]], + ['is_5fapplicable_5f',['is_applicable_',['../structutl_1_1meta_1_1detail_1_1is__applicable__.html',1,'utl::meta::detail']]], + ['is_5fapplicable_5fi_5f',['is_applicable_i_',['../structutl_1_1meta_1_1detail_1_1is__applicable__i__.html',1,'utl::meta::detail']]], + ['is_5fapplicable_5fq_5f',['is_applicable_q_',['../structutl_1_1meta_1_1detail_1_1is__applicable__q__.html',1,'utl::meta::detail']]], + ['is_5fboolean_5f',['is_boolean_',['../structutl_1_1details_1_1is__boolean__.html',1,'utl::details']]], + ['is_5fboolean_5f_3c_20b_2c_20meta_3a_3avoid_5ft_3c_20meta_3a_3ause_5fif_5fsame_5ft_3c_20bool_2c_20decltype_28_21std_3a_3adeclval_3c_20cref_5f_3c_20b_20_3e_3e_28_29_29_3e_2c_20meta_3a_3ause_5fif_5fsame_5ft_3c_20bool_2c_20decltype_28std_3a_3adeclval_3c_20cref_5f_3c_20b_20_3e_3e_28_29_3d_3dstd_3a_3adeclval_3c_20cref_5f_3c_20b_20_3e_3e_28_29_29_3e_2c_20meta_3a_3ause_5fif_5fsame_5ft_3c_20bool_2c_20decltype_28std_3a_3adeclval_3c_20cref_5f_3c_20b_20_3e_3e_28_29_20_21_3dstd_3a_3adeclval_3c_20cref_5f_3c_20b_20_3e_3e_28_29_29_3e_2c_20meta_3a_3ause_5fif_5fsame_5ft_3c_20bool_2c_20decltype_28std_3a_3adeclval_3c_20cref_5f_3c_20b_20_3e_3e_28_29_20_26_26std_3a_3adeclval_3c_20cref_5f_3c_20b_20_3e_3e_28_29_29_3e_2c_20meta_3a_3ause_5fif_5fsame_5ft_3c_20bool_2c_20decltype_28std_3a_3adeclval_3c_20cref_5f_3c_20b_20_3e_3e_28_29_7c_7cstd_3a_3adeclval_3c_20cref_5f_3c_20b_20_3e_3e_28_29_29_3e_20_3e_20_3e',['is_boolean_< B, meta::void_t< meta::use_if_same_t< bool, decltype(!std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>()==std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>() !=std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>() &&std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>()||std::declval< cref_< B >>())> > >',['../structutl_1_1details_1_1is__boolean___3_01_b_00_01meta_1_1void__t_3_01meta_1_1use__if__same__t_37e77ed45a431955fc15b4c1210ad8491.html',1,'utl::details']]], + ['is_5fi2c_5f',['is_i2c_',['../structutl_1_1i2c__i__details_1_1is__i2c__.html',1,'utl::i2c_i_details']]], + ['is_5fi2c_5f_3c_20_5ftp_2c_20meta_3a_3avoid_5ft_3c_20typename_20_5ftp_3a_3asequence_2c_20void_20_3e_20_3e',['is_i2c_< _Tp, meta::void_t< typename _Tp::Sequence, void > >',['../structutl_1_1i2c__i__details_1_1is__i2c___3_01___tp_00_01meta_1_1void__t_3_01typename_01___tp_1_1_sequence_00_01void_01_4_01_4.html',1,'utl::i2c_i_details']]], + ['is_5fidx_5fdev_5f',['is_idx_dev_',['../structutl_1_1idx__dev__details_1_1is__idx__dev__.html',1,'utl::idx_dev_details']]], + ['is_5fidx_5fdev_5f_3c_20_5ftp_2c_20void_5ft_3c_20typename_20_5ftp_3a_3adata_5ftype_2c_20typename_20_5ftp_3a_3apointer_5ftype_2c_20typename_20_5ftp_3a_3aiterator_2c_20typename_20_5ftp_3a_3aconst_5fiterator_2c_20use_5fif_5fsame_5ft_3c_20try_5fget1_5ft_3c_20_5ftp_20_3e_2c_20size_5ft_20_3e_2c_20use_5fif_5fsame_5ft_3c_20try_5fget2_5ft_3c_20_5ftp_20_3e_2c_20size_5ft_20_3e_2c_20use_5fif_5fsame_5ft_3c_20try_5fbegin_5ft_3c_20_5ftp_20_3e_2c_20typename_20_5ftp_3a_3aiterator_20_3e_2c_20use_5fif_5fsame_5ft_3c_20tryc_5fbegin_5ft_3c_20_5ftp_20_3e_2c_20typename_20_5ftp_3a_3aconst_5fiterator_20_3e_2c_20use_5fif_5fsame_5ft_3c_20try_5fcbegin_5ft_3c_20_5ftp_20_3e_2c_20typename_20_5ftp_3a_3aconst_5fiterator_20_3e_2c_20use_5fif_5fsame_5ft_3c_20try_5fend_5ft_3c_20_5ftp_20_3e_2c_20typename_20_5ftp_3a_3aiterator_20_3e_2c_20use_5fif_5fsame_5ft_3c_20tryc_5fend_5ft_3c_20_5ftp_20_3e_2c_20typename_20_5ftp_3a_3aconst_5fiterator_20_3e_2c_20use_5fif_5fsame_5ft_3c_20try_5fcend_5ft_3c_20_5ftp_20_3e_2c_20typename_20_5ftp_3a_3aconst_5fiterator_20_3e_20_3e_20_3e',['is_idx_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_get1_t< _Tp >, size_t >, use_if_same_t< try_get2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > >',['../structutl_1_1idx__dev__details_1_1is__idx__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1ae8b6b24c31c81bdd901da6e6387d84b.html',1,'utl::idx_dev_details']]], + ['is_5fidxdev_5fit_5f',['is_idxdev_it_',['../structutl_1_1idxdev__it__details_1_1is__idxdev__it__.html',1,'utl::idxdev_it_details']]], + ['is_5fidxdev_5fit_5f_3c_20_5ftp_2c_20meta_3a_3avoid_5ft_3c_20typename_20_5ftp_3a_3avalue_5ftype_2c_20typename_20_5ftp_3a_3adifference_5ftype_2c_20typename_20_5ftp_3a_3apointer_2c_20typename_20_5ftp_3a_3areference_2c_20void_20_3e_20_3e',['is_idxdev_it_< _Tp, meta::void_t< typename _Tp::value_type, typename _Tp::difference_type, typename _Tp::pointer, typename _Tp::reference, void > >',['../structutl_1_1idxdev__it__details_1_1is__idxdev__it___3_01___tp_00_01meta_1_1void__t_3_01typenamebd9ada52ca7b7570c26d0c280af5e635.html',1,'utl::idxdev_it_details']]], + ['is_5fin_5fdev_5f',['is_in_dev_',['../structutl_1_1in__dev__details_1_1is__in__dev__.html',1,'utl::in_dev_details']]], + ['is_5fin_5fdev_5f_3c_20_5ftp_2c_20void_5ft_3c_20typename_20_5ftp_3a_3adata_5ftype_2c_20typename_20_5ftp_3a_3apointer_5ftype_2c_20typename_20_5ftp_3a_3aiterator_2c_20typename_20_5ftp_3a_3aconst_5fiterator_2c_20use_5fif_5fsame_5ft_3c_20try_5fget1_5ft_3c_20_5ftp_20_3e_2c_20size_5ft_20_3e_2c_20use_5fif_5fsame_5ft_3c_20try_5fget2_5ft_3c_20_5ftp_20_3e_2c_20size_5ft_20_3e_2c_20use_5fif_5fsame_5ft_3c_20try_5fbegin_5ft_3c_20_5ftp_20_3e_2c_20typename_20_5ftp_3a_3aiterator_20_3e_2c_20use_5fif_5fsame_5ft_3c_20tryc_5fbegin_5ft_3c_20_5ftp_20_3e_2c_20typename_20_5ftp_3a_3aconst_5fiterator_20_3e_2c_20use_5fif_5fsame_5ft_3c_20try_5fcbegin_5ft_3c_20_5ftp_20_3e_2c_20typename_20_5ftp_3a_3aconst_5fiterator_20_3e_2c_20use_5fif_5fsame_5ft_3c_20try_5fend_5ft_3c_20_5ftp_20_3e_2c_20typename_20_5ftp_3a_3aiterator_20_3e_2c_20use_5fif_5fsame_5ft_3c_20tryc_5fend_5ft_3c_20_5ftp_20_3e_2c_20typename_20_5ftp_3a_3aconst_5fiterator_20_3e_2c_20use_5fif_5fsame_5ft_3c_20try_5fcend_5ft_3c_20_5ftp_20_3e_2c_20typename_20_5ftp_3a_3aconst_5fiterator_20_3e_20_3e_20_3e',['is_in_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_get1_t< _Tp >, size_t >, use_if_same_t< try_get2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > >',['../structutl_1_1in__dev__details_1_1is__in__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1dad922a62deb7c32e2cff18d66b8c887d2.html',1,'utl::in_dev_details']]], + ['is_5finbuf_5fdev_5f',['is_inbuf_dev_',['../structutl_1_1inbuf__dev__details_1_1is__inbuf__dev__.html',1,'utl::inbuf_dev_details']]], + ['is_5finbuf_5fdev_5f_3c_20_5ftp_2c_20void_5ft_3c_20typename_20_5ftp_3a_3adata_5ftype_2c_20typename_20_5ftp_3a_3apointer_5ftype_2c_20typename_20_5ftp_3a_3aiterator_2c_20typename_20_5ftp_3a_3aconst_5fiterator_2c_20use_5fif_5fsame_5ft_3c_20try_5fget1_5ft_3c_20_5ftp_20_3e_2c_20size_5ft_20_3e_2c_20use_5fif_5fsame_5ft_3c_20try_5fget2_5ft_3c_20_5ftp_20_3e_2c_20size_5ft_20_3e_2c_20use_5fif_5fsame_5ft_3c_20try_5fbegin_5ft_3c_20_5ftp_20_3e_2c_20typename_20_5ftp_3a_3aiterator_20_3e_2c_20use_5fif_5fsame_5ft_3c_20tryc_5fbegin_5ft_3c_20_5ftp_20_3e_2c_20typename_20_5ftp_3a_3aconst_5fiterator_20_3e_2c_20use_5fif_5fsame_5ft_3c_20try_5fcbegin_5ft_3c_20_5ftp_20_3e_2c_20typename_20_5ftp_3a_3aconst_5fiterator_20_3e_2c_20use_5fif_5fsame_5ft_3c_20try_5fend_5ft_3c_20_5ftp_20_3e_2c_20typename_20_5ftp_3a_3aiterator_20_3e_2c_20use_5fif_5fsame_5ft_3c_20tryc_5fend_5ft_3c_20_5ftp_20_3e_2c_20typename_20_5ftp_3a_3aconst_5fiterator_20_3e_2c_20use_5fif_5fsame_5ft_3c_20try_5fcend_5ft_3c_20_5ftp_20_3e_2c_20typename_20_5ftp_3a_3aconst_5fiterator_20_3e_20_3e_20_3e',['is_inbuf_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_get1_t< _Tp >, size_t >, use_if_same_t< try_get2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > >',['../structutl_1_1inbuf__dev__details_1_1is__inbuf__dev___3_01___tp_00_01void__t_3_01typename_01___tpc269ee3885240cc8c352f3c6b3a67cd7.html',1,'utl::inbuf_dev_details']]], + ['is_5findev_5fit_5f',['is_indev_it_',['../structutl_1_1indev__it__details_1_1is__indev__it__.html',1,'utl::indev_it_details']]], + ['is_5findev_5fit_5f_3c_20_5ftp_2c_20meta_3a_3avoid_5ft_3c_20typename_20_5ftp_3a_3avalue_5ftype_2c_20typename_20_5ftp_3a_3adifference_5ftype_2c_20typename_20_5ftp_3a_3apointer_2c_20typename_20_5ftp_3a_3areference_2c_20void_20_3e_20_3e',['is_indev_it_< _Tp, meta::void_t< typename _Tp::value_type, typename _Tp::difference_type, typename _Tp::pointer, typename _Tp::reference, void > >',['../structutl_1_1indev__it__details_1_1is__indev__it___3_01___tp_00_01meta_1_1void__t_3_01typename_06508604dcee4010234c84cc332fa196b.html',1,'utl::indev_it_details']]], + ['is_5finvocable',['is_invocable',['../structutl_1_1is__invocable.html',1,'utl']]], + ['is_5finvocable_5fr',['is_invocable_r',['../structutl_1_1is__invocable__r.html',1,'utl']]], + ['is_5fout_5fdev_5f',['is_out_dev_',['../structutl_1_1out__dev__details_1_1is__out__dev__.html',1,'utl::out_dev_details']]], + ['is_5fout_5fdev_5f_3c_20_5ftp_2c_20void_5ft_3c_20typename_20_5ftp_3a_3adata_5ftype_2c_20typename_20_5ftp_3a_3apointer_5ftype_2c_20typename_20_5ftp_3a_3aiterator_2c_20typename_20_5ftp_3a_3aconst_5fiterator_2c_20use_5fif_5fsame_5ft_3c_20try_5fput1_5ft_3c_20_5ftp_20_3e_2c_20size_5ft_20_3e_2c_20use_5fif_5fsame_5ft_3c_20try_5fput2_5ft_3c_20_5ftp_20_3e_2c_20size_5ft_20_3e_2c_20use_5fif_5fsame_5ft_3c_20try_5fbegin_5ft_3c_20_5ftp_20_3e_2c_20typename_20_5ftp_3a_3aiterator_20_3e_2c_20use_5fif_5fsame_5ft_3c_20tryc_5fbegin_5ft_3c_20_5ftp_20_3e_2c_20typename_20_5ftp_3a_3aconst_5fiterator_20_3e_2c_20use_5fif_5fsame_5ft_3c_20try_5fcbegin_5ft_3c_20_5ftp_20_3e_2c_20typename_20_5ftp_3a_3aconst_5fiterator_20_3e_2c_20use_5fif_5fsame_5ft_3c_20try_5fend_5ft_3c_20_5ftp_20_3e_2c_20typename_20_5ftp_3a_3aiterator_20_3e_2c_20use_5fif_5fsame_5ft_3c_20tryc_5fend_5ft_3c_20_5ftp_20_3e_2c_20typename_20_5ftp_3a_3aconst_5fiterator_20_3e_2c_20use_5fif_5fsame_5ft_3c_20try_5fcend_5ft_3c_20_5ftp_20_3e_2c_20typename_20_5ftp_3a_3aconst_5fiterator_20_3e_20_3e_20_3e',['is_out_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_put1_t< _Tp >, size_t >, use_if_same_t< try_put2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > >',['../structutl_1_1out__dev__details_1_1is__out__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1fbf8d2409fc6de9dd6b9649bedc1b379.html',1,'utl::out_dev_details']]], + ['is_5foutdev_5fit_5f',['is_outdev_it_',['../structutl_1_1outdev__it__details_1_1is__outdev__it__.html',1,'utl::outdev_it_details']]], + ['is_5foutdev_5fit_5f_3c_20_5ftp_2c_20meta_3a_3avoid_5ft_3c_20typename_20_5ftp_3a_3avalue_5ftype_2c_20typename_20_5ftp_3a_3adifference_5ftype_2c_20typename_20_5ftp_3a_3apointer_2c_20typename_20_5ftp_3a_3areference_2c_20void_20_3e_20_3e',['is_outdev_it_< _Tp, meta::void_t< typename _Tp::value_type, typename _Tp::difference_type, typename _Tp::pointer, typename _Tp::reference, void > >',['../structutl_1_1outdev__it__details_1_1is__outdev__it___3_01___tp_00_01meta_1_1void__t_3_01typename8786ebbbd0dc9ca1b14571e779d99d60.html',1,'utl::outdev_it_details']]], + ['is_5fref_5fwrapper',['is_ref_wrapper',['../structutl_1_1detail_1_1is__ref__wrapper.html',1,'utl::detail']]], + ['is_5fref_5fwrapper_3c_20std_3a_3areference_5fwrapper_3c_20u_20_3e_20_3e',['is_ref_wrapper< std::reference_wrapper< U > >',['../structutl_1_1detail_1_1is__ref__wrapper_3_01std_1_1reference__wrapper_3_01_u_01_4_01_4.html',1,'utl::detail']]], + ['is_5fspi_5f',['is_spi_',['../structutl_1_1spi__i__details_1_1is__spi__.html',1,'utl::spi_i_details']]], + ['is_5fspi_5f_3c_20_5ftp_2c_20meta_3a_3avoid_5ft_3c_20meta_3a_3ause_5fif_5fsame_5ft_3c_20try_5fcclock_5ft_3c_20_5ftp_20_3e_2c_20uint32_5ft_20_3e_2c_20meta_3a_3ause_5fif_5fsame_5ft_3c_20try_5fclock_5ft_3c_20_5ftp_20_3e_2c_20void_20_3e_2c_20meta_3a_3ause_5fif_5fsame_5ft_3c_20try_5ftx_5ft_3c_20_5ftp_20_3e_2c_20byte_5ft_20_3e_2c_20meta_3a_3ause_5fif_5fsame_5ft_3c_20try_5frx_5ft_3c_20_5ftp_20_3e_2c_20byte_5ft_20_3e_20_3e_20_3e',['is_spi_< _Tp, meta::void_t< meta::use_if_same_t< try_cclock_t< _Tp >, uint32_t >, meta::use_if_same_t< try_clock_t< _Tp >, void >, meta::use_if_same_t< try_tx_t< _Tp >, byte_t >, meta::use_if_same_t< try_rx_t< _Tp >, byte_t > > >',['../structutl_1_1spi__i__details_1_1is__spi___3_01___tp_00_01meta_1_1void__t_3_01meta_1_1use__if__sa2db29f6d65d34ecf5e49ec30b6600d78.html',1,'utl::spi_i_details']]], + ['is_5fstrict_5ftotally_5fordered_5f',['is_strict_totally_ordered_',['../structutl_1_1details_1_1is__strict__totally__ordered__.html',1,'utl::details']]], + ['is_5fstrict_5ftotally_5fordered_5f_3c_20t_2c_20meta_3a_3avoid_5ft_3c_20meta_3a_3ause_5fif_5fsame_5ft_3c_20bool_2c_20decltype_28std_3a_3adeclval_3c_20cref_5f_3c_20t_20_3e_3e_28_29_3c_20std_3a_3adeclval_3c_20cref_5f_3c_20t_20_3e_3e_28_29_29_3e_2c_20meta_3a_3ause_5fif_5fsame_5ft_3c_20bool_2c_20decltype_28std_3a_3adeclval_3c_20cref_5f_3c_20t_20_3e_3e_28_29_20_3e_20std_3a_3adeclval_3c_20cref_5f_3c_20t_20_3e_3e_28_29_29_3e_2c_20meta_3a_3ause_5fif_5fsame_5ft_3c_20bool_2c_20decltype_28std_3a_3adeclval_3c_20cref_5f_3c_20t_20_3e_3e_28_29_3c_3dstd_3a_3adeclval_3c_20cref_5f_3c_20t_20_3e_3e_28_29_29_3e_2c_20meta_3a_3ause_5fif_5fsame_5ft_3c_20bool_2c_20decltype_28std_3a_3adeclval_3c_20cref_5f_3c_20t_20_3e_3e_28_29_20_3e_3dstd_3a_3adeclval_3c_20cref_5f_3c_20t_20_3e_3e_28_29_29_3e_20_3e_20_3e',['is_strict_totally_ordered_< T, meta::void_t< meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()< std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() > std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()<=std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() >=std::declval< cref_< T >>())> > >',['../structutl_1_1details_1_1is__strict__totally__ordered___3_01_t_00_01meta_1_1void__t_3_01meta_1_1uab48bcfc89164f446368b35bcc7c8bcd.html',1,'utl::details']]], + ['is_5fstrict_5ftotally_5fordered_5fwith_5f',['is_strict_totally_ordered_with_',['../structutl_1_1details_1_1is__strict__totally__ordered__with__.html',1,'utl::details']]], + ['is_5fstrict_5ftotally_5fordered_5fwith_5f_3c_20t_2c_20u_2c_20meta_3a_3avoid_5ft_3c_20meta_3a_3ause_5fif_5fsame_5ft_3c_20bool_2c_20decltype_28std_3a_3adeclval_3c_20cref_5f_3c_20t_20_3e_3e_28_29_3c_20std_3a_3adeclval_3c_20cref_5f_3c_20u_20_3e_3e_28_29_29_3e_2c_20meta_3a_3ause_5fif_5fsame_5ft_3c_20bool_2c_20decltype_28std_3a_3adeclval_3c_20cref_5f_3c_20t_20_3e_3e_28_29_20_3e_20std_3a_3adeclval_3c_20cref_5f_3c_20u_20_3e_3e_28_29_29_3e_2c_20meta_3a_3ause_5fif_5fsame_5ft_3c_20bool_2c_20decltype_28std_3a_3adeclval_3c_20cref_5f_3c_20t_20_3e_3e_28_29_3c_3dstd_3a_3adeclval_3c_20cref_5f_3c_20u_20_3e_3e_28_29_29_3e_2c_20meta_3a_3ause_5fif_5fsame_5ft_3c_20bool_2c_20decltype_28std_3a_3adeclval_3c_20cref_5f_3c_20t_20_3e_3e_28_29_20_3e_3dstd_3a_3adeclval_3c_20cref_5f_3c_20u_20_3e_3e_28_29_29_3e_2c_20meta_3a_3ause_5fif_5fsame_5ft_3c_20bool_2c_20decltype_28std_3a_3adeclval_3c_20cref_5f_3c_20u_20_3e_3e_28_29_3c_20std_3a_3adeclval_3c_20cref_5f_3c_20t_20_3e_3e_28_29_29_3e_2c_20meta_3a_3ause_5fif_5fsame_5ft_3c_20bool_2c_20decltype_28std_3a_3adeclval_3c_20cref_5f_3c_20u_20_3e_3e_28_29_20_3e_20std_3a_3adeclval_3c_20cref_5f_3c_20t_20_3e_3e_28_29_29_3e_2c_20meta_3a_3ause_5fif_5fsame_5ft_3c_20bool_2c_20decltype_28std_3a_3adeclval_3c_20cref_5f_3c_20u_20_3e_3e_28_29_3c_3dstd_3a_3adeclval_3c_20cref_5f_3c_20t_20_3e_3e_28_29_29_3e_2c_20meta_3a_3ause_5fif_5fsame_5ft_3c_20bool_2c_20decltype_28std_3a_3adeclval_3c_20cref_5f_3c_20u_20_3e_3e_28_29_20_3e_3dstd_3a_3adeclval_3c_20cref_5f_3c_20t_20_3e_3e_28_29_29_3e_20_3e_20_3e',['is_strict_totally_ordered_with_< T, U, meta::void_t< meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()< std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() > std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()<=std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() >=std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>()< std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>() > std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>()<=std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>() >=std::declval< cref_< T >>())> > >',['../structutl_1_1details_1_1is__strict__totally__ordered__with___3_01_t_00_01_u_00_01meta_1_1void__t8fb7dd5a6ad25952241e37c6f163f434.html',1,'utl::details']]], + ['is_5fweakly_5fequality_5fcomparable_5fwith_5f',['is_weakly_equality_comparable_with_',['../structutl_1_1details_1_1is__weakly__equality__comparable__with__.html',1,'utl::details']]], + ['is_5fweakly_5fequality_5fcomparable_5fwith_5f_3c_20t_2c_20u_2c_20meta_3a_3avoid_5ft_3c_20meta_3a_3ause_5fif_5fsame_5ft_3c_20bool_2c_20decltype_28std_3a_3adeclval_3c_20cref_5f_3c_20t_20_3e_3e_28_29_3d_3dstd_3a_3adeclval_3c_20cref_5f_3c_20u_20_3e_3e_28_29_29_3e_2c_20meta_3a_3ause_5fif_5fsame_5ft_3c_20bool_2c_20decltype_28std_3a_3adeclval_3c_20cref_5f_3c_20t_20_3e_3e_28_29_20_21_3dstd_3a_3adeclval_3c_20cref_5f_3c_20u_20_3e_3e_28_29_29_3e_2c_20meta_3a_3ause_5fif_5fsame_5ft_3c_20bool_2c_20decltype_28std_3a_3adeclval_3c_20cref_5f_3c_20u_20_3e_3e_28_29_3d_3dstd_3a_3adeclval_3c_20cref_5f_3c_20t_20_3e_3e_28_29_29_3e_2c_20meta_3a_3ause_5fif_5fsame_5ft_3c_20bool_2c_20decltype_28std_3a_3adeclval_3c_20cref_5f_3c_20u_20_3e_3e_28_29_20_21_3dstd_3a_3adeclval_3c_20cref_5f_3c_20t_20_3e_3e_28_29_29_3e_20_3e_20_3e',['is_weakly_equality_comparable_with_< T, U, meta::void_t< meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()==std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() !=std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>()==std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>() !=std::declval< cref_< T >>())> > >',['../structutl_1_1details_1_1is__weakly__equality__comparable__with___3_01_t_00_01_u_00_01meta_1_1voi4404f901930622694666ca68fb75381b.html',1,'utl::details']]], + ['istreamdev_5fit',['istreamdev_it',['../classutl_1_1istreamdev__it.html',1,'utl']]] +]; diff --git a/doc/html/search/classes_7.html b/doc/html/search/classes_7.html new file mode 100644 index 0000000..6418529 --- /dev/null +++ b/doc/html/search/classes_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/classes_7.js b/doc/html/search/classes_7.js new file mode 100644 index 0000000..ae978c5 --- /dev/null +++ b/doc/html/search/classes_7.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['nat_5f',['nat_',['../structutl_1_1meta_1_1nat__.html',1,'utl::meta']]], + ['nil_5f',['nil_',['../structutl_1_1meta_1_1nil__.html',1,'utl::meta']]], + ['not_5fsame_5fas',['not_same_as',['../structutl_1_1meta_1_1not__same__as.html',1,'utl::meta']]] +]; diff --git a/doc/html/search/classes_8.html b/doc/html/search/classes_8.html new file mode 100644 index 0000000..87af6f6 --- /dev/null +++ b/doc/html/search/classes_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/classes_8.js b/doc/html/search/classes_8.js new file mode 100644 index 0000000..1ed4608 --- /dev/null +++ b/doc/html/search/classes_8.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['ostream_5fdev',['ostream_dev',['../classutl_1_1ostream__dev.html',1,'utl']]], + ['ostream_5fdev_3c_20virtual_5ftag_2c_20data_5ft_20_3e',['ostream_dev< virtual_tag, data_t >',['../classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html',1,'utl']]], + ['ostreamdev_5fit',['ostreamdev_it',['../classutl_1_1ostreamdev__it.html',1,'utl']]], + ['out_5fdev',['out_dev',['../classutl_1_1out__dev.html',1,'utl']]], + ['out_5fdev_3c_20virtual_5ftag_2c_20data_5ft_2c_20streamsize_20_3e',['out_dev< virtual_tag, data_t, streamsize >',['../classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html',1,'utl']]], + ['outdev_5fit',['outdev_it',['../classutl_1_1outdev__it.html',1,'utl']]], + ['output_5fiterator_5ftag',['output_iterator_tag',['../structutl_1_1output__iterator__tag.html',1,'utl']]] +]; diff --git a/doc/html/search/classes_9.html b/doc/html/search/classes_9.html new file mode 100644 index 0000000..f830ae0 --- /dev/null +++ b/doc/html/search/classes_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/classes_9.js b/doc/html/search/classes_9.js new file mode 100644 index 0000000..5a47234 --- /dev/null +++ b/doc/html/search/classes_9.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['pop_5fback_5f',['pop_back_',['../structutl_1_1meta_1_1pop__back__impl_1_1pop__back__.html',1,'utl::meta::pop_back_impl']]], + ['pop_5ffront_5f',['pop_front_',['../structutl_1_1meta_1_1pop__front__impl_1_1pop__front__.html',1,'utl::meta::pop_front_impl']]], + ['pop_5ffront_5f_3c_20typelist_3c_20head_2c_20tail_2e_2e_2e_20_3e_20_3e',['pop_front_< typelist< Head, Tail... > >',['../structutl_1_1meta_1_1pop__front__impl_1_1pop__front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.html',1,'utl::meta::pop_front_impl']]] +]; diff --git a/doc/html/search/classes_a.html b/doc/html/search/classes_a.html new file mode 100644 index 0000000..0fd3b7a --- /dev/null +++ b/doc/html/search/classes_a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/classes_a.js b/doc/html/search/classes_a.js new file mode 100644 index 0000000..4b9b152 --- /dev/null +++ b/doc/html/search/classes_a.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['quote',['quote',['../structutl_1_1meta_1_1quote.html',1,'utl::meta']]], + ['quote_5fi',['quote_i',['../structutl_1_1meta_1_1quote__i.html',1,'utl::meta']]] +]; diff --git a/doc/html/search/classes_b.html b/doc/html/search/classes_b.html new file mode 100644 index 0000000..886abdf --- /dev/null +++ b/doc/html/search/classes_b.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/classes_b.js b/doc/html/search/classes_b.js new file mode 100644 index 0000000..de097c1 --- /dev/null +++ b/doc/html/search/classes_b.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['random_5faccess_5fiterator_5ftag',['random_access_iterator_tag',['../structutl_1_1random__access__iterator__tag.html',1,'utl']]], + ['replace_5fif_5f',['replace_if_',['../structutl_1_1meta_1_1replace__if__impl_1_1replace__if__.html',1,'utl::meta::replace_if_impl']]], + ['replace_5fif_5f_3c_20typelist_3c_20head_2c_20tail_2e_2e_2e_20_3e_2c_20fn_2c_20t_2c_20ret_20_3e',['replace_if_< typelist< Head, Tail... >, Fn, T, Ret >',['../structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_01_head_00_01_tail_8_8_8_dfa8065a3617f53ecded260506092a07.html',1,'utl::meta::replace_if_impl']]], + ['replace_5fif_5f_3c_20typelist_3c_3e_2c_20fn_2c_20t_2c_20ret_20_3e',['replace_if_< typelist<>, Fn, T, Ret >',['../structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_4_00_01_fn_00_01_t_00_01_ret_01_4.html',1,'utl::meta::replace_if_impl']]], + ['rev_5ffold_5f',['rev_fold_',['../structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold__.html',1,'utl::meta::rev_fold_impl']]], + ['rev_5ffold_5f_3c_20typelist_3c_20head_2c_20tail_2e_2e_2e_20_3e_2c_20v_2c_20fn_20_3e',['rev_fold_< typelist< Head, Tail... >, V, Fn >',['../structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4.html',1,'utl::meta::rev_fold_impl']]], + ['rev_5ffold_5f_3c_20typelist_3c_20tail_20_3e_2c_20v_2c_20fn_20_3e',['rev_fold_< typelist< Tail >, V, Fn >',['../structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_tail_01_4_00_01_v_00_01_fn_01_4.html',1,'utl::meta::rev_fold_impl']]], + ['rev_5ffold_5f_3c_20typelist_3c_3e_2c_20v_2c_20fn_20_3e',['rev_fold_< typelist<>, V, Fn >',['../structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_4_00_01_v_00_01_fn_01_4.html',1,'utl::meta::rev_fold_impl']]], + ['reverse_5f',['reverse_',['../structutl_1_1meta_1_1reverse__impl_1_1reverse__.html',1,'utl::meta::reverse_impl']]] +]; diff --git a/doc/html/search/classes_c.html b/doc/html/search/classes_c.html new file mode 100644 index 0000000..52ec267 --- /dev/null +++ b/doc/html/search/classes_c.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/classes_c.js b/doc/html/search/classes_c.js new file mode 100644 index 0000000..2cd3472 --- /dev/null +++ b/doc/html/search/classes_c.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['same_5f',['same_',['../structutl_1_1meta_1_1same__.html',1,'utl::meta']]], + ['same_5f_3c_20_5ftp_2c_20_5ftp_20_3e',['same_< _Tp, _Tp >',['../structutl_1_1meta_1_1same___3_01___tp_00_01___tp_01_4.html',1,'utl::meta']]], + ['same_5f_3c_20t1_2c_20t2_20_3e',['same_< T1, T2 >',['../structutl_1_1meta_1_1same__.html',1,'utl::meta']]], + ['same_5fas',['same_as',['../structutl_1_1meta_1_1same__as.html',1,'utl::meta']]], + ['seek_5fif_5f',['seek_if_',['../structutl_1_1meta_1_1seek__if__impl_1_1seek__if__.html',1,'utl::meta::seek_if_impl']]], + ['seek_5fif_5f_3c_20typelist_3c_20head_2c_20tail_2e_2e_2e_20_3e_2c_20fn_2c_20n_20_3e',['seek_if_< typelist< Head, Tail... >, Fn, N >',['../structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.html',1,'utl::meta::seek_if_impl']]], + ['seek_5fif_5f_3c_20typelist_3c_3e_2c_20fn_2c_20n_20_3e',['seek_if_< typelist<>, Fn, N >',['../structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.html',1,'utl::meta::seek_if_impl']]], + ['spi_5fbb_5fi',['spi_bb_i',['../classutl_1_1spi__bb__i.html',1,'utl']]], + ['spi_5fbb_5fi_3c_20virtual_5ftag_2c_20cpol_2c_20cpha_2c_20bitorder_20_3e',['spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >',['../classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html',1,'utl']]], + ['spi_5fi',['spi_i',['../classutl_1_1spi__i.html',1,'utl']]], + ['spi_5fi_3c_20spi_5fbb_5fi_3c_20impl_5ft_2c_20cpol_2c_20cpha_2c_20bitorder_20_3e_20_3e',['spi_i< spi_bb_i< impl_t, CPOL, CPHA, BitOrder > >',['../classutl_1_1spi__i.html',1,'utl']]], + ['spi_5fi_3c_20virtual_5ftag_20_3e',['spi_i< virtual_tag >',['../classutl_1_1spi__i_3_01virtual__tag_01_4.html',1,'utl']]] +]; diff --git a/doc/html/search/classes_d.html b/doc/html/search/classes_d.html new file mode 100644 index 0000000..652508d --- /dev/null +++ b/doc/html/search/classes_d.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/classes_d.js b/doc/html/search/classes_d.js new file mode 100644 index 0000000..1b4944b --- /dev/null +++ b/doc/html/search/classes_d.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['times_5f',['times_',['../structutl_1_1meta_1_1typelist_1_1times__.html',1,'utl::meta::typelist']]], + ['times_5f_3c_200_2c_20t_2e_2e_2e_20_3e',['times_< 0, T... >',['../structutl_1_1meta_1_1typelist_1_1times___3_010_00_01_t_8_8_8_01_4.html',1,'utl::meta::typelist']]], + ['times_5f_3c_201_2c_20t_2e_2e_2e_20_3e',['times_< 1, T... >',['../structutl_1_1meta_1_1typelist_1_1times___3_011_00_01_t_8_8_8_01_4.html',1,'utl::meta::typelist']]], + ['transform_5f',['transform_',['../structutl_1_1meta_1_1transform__impl_1_1transform__.html',1,'utl::meta::transform_impl']]], + ['transform_5f_3c_20typelist_3c_20typelist_3c_20ts_2e_2e_2e_20_3e_2c_20fn_20_3e_2c_20void_5ft_3c_20invoke_3c_20fn_2c_20ts_20_3e_2e_2e_2e_20_3e_20_3e',['transform_< typelist< typelist< Ts... >, Fn >, void_t< invoke< Fn, Ts >... > >',['../structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts_8_8_8_01_40fe2b1c8ede658aadb6925de73541689.html',1,'utl::meta::transform_impl']]], + ['transform_5f_3c_20typelist_3c_20typelist_3c_20ts0_2e_2e_2e_20_3e_2c_20typelist_3c_20ts1_2e_2e_2e_20_3e_2c_20fn_20_3e_2c_20void_5ft_3c_20invoke_3c_20fn_2c_20ts0_2c_20ts1_20_3e_2e_2e_2e_20_3e_20_3e',['transform_< typelist< typelist< Ts0... >, typelist< Ts1... >, Fn >, void_t< invoke< Fn, Ts0, Ts1 >... > >',['../structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts0_8_8_8_01_8fba6bf3d0565d17a96950cb517db5f1.html',1,'utl::meta::transform_impl']]], + ['transform_5flazy_5f',['transform_lazy_',['../structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy__.html',1,'utl::meta::transform_lazy_impl']]], + ['transform_5flazy_5f_3c_20typelist_3c_20typelist_3c_20ts_2e_2e_2e_20_3e_2c_20fn_20_3e_2c_20void_5ft_3c_20invoke_3c_20fn_2c_20ts_20_3e_2e_2e_2e_20_3e_20_3e',['transform_lazy_< typelist< typelist< Ts... >, Fn >, void_t< invoke< Fn, Ts >... > >',['../structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t56243bc35bf73da8271cb88f34751f3a.html',1,'utl::meta::transform_lazy_impl']]], + ['transform_5flazy_5f_3c_20typelist_3c_20typelist_3c_20ts0_2e_2e_2e_20_3e_2c_20typelist_3c_20ts1_2e_2e_2e_20_3e_2c_20fn_20_3e_2c_20void_5ft_3c_20invoke_3c_20fn_2c_20ts0_2c_20ts1_20_3e_2e_2e_2e_20_3e_20_3e',['transform_lazy_< typelist< typelist< Ts0... >, typelist< Ts1... >, Fn >, void_t< invoke< Fn, Ts0, Ts1 >... > >',['../structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t14ff615a4bff6c4c3701df9c38aaa6a5.html',1,'utl::meta::transform_lazy_impl']]], + ['try_5finvoke',['try_invoke',['../structutl_1_1detail_1_1try__invoke.html',1,'utl::detail']]], + ['type',['type',['../structutl_1_1array__traits_3_01___tp_00_010_01_4_1_1type.html',1,'utl::array_traits< _Tp, 0 >::type'],['../structutl_1_1id__traits_3_01___tp_00_010_01_4_1_1type.html',1,'utl::id_traits< _Tp, 0 >::type']]], + ['typelist',['typelist',['../structutl_1_1meta_1_1typelist.html',1,'utl::meta']]] +]; diff --git a/doc/html/search/classes_e.html b/doc/html/search/classes_e.html new file mode 100644 index 0000000..7d4e9a5 --- /dev/null +++ b/doc/html/search/classes_e.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/classes_e.js b/doc/html/search/classes_e.js new file mode 100644 index 0000000..aab31a4 --- /dev/null +++ b/doc/html/search/classes_e.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['value_5ftype_5ft',['value_type_t',['../structutl_1_1iodev__it_1_1value__type__t.html',1,'utl::iodev_it']]], + ['virtual_5ftag',['virtual_tag',['../structutl_1_1virtual__tag.html',1,'utl']]] +]; diff --git a/doc/html/search/classes_f.html b/doc/html/search/classes_f.html new file mode 100644 index 0000000..fa6ed25 --- /dev/null +++ b/doc/html/search/classes_f.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/classes_f.js b/doc/html/search/classes_f.js new file mode 100644 index 0000000..bc1041e --- /dev/null +++ b/doc/html/search/classes_f.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['when_5f',['when_',['../structutl_1_1meta_1_1detail_1_1when__.html',1,'utl::meta::detail']]], + ['when_5f_3c_20true_20_3e',['when_< true >',['../structutl_1_1meta_1_1detail_1_1when___3_01true_01_4.html',1,'utl::meta::detail']]], + ['wrap',['wrap',['../structutl_1_1meta_1_1wrap.html',1,'utl::meta']]], + ['wrap_5fi',['wrap_i',['../structutl_1_1meta_1_1wrap__i.html',1,'utl::meta']]] +]; diff --git a/doc/html/search/close.png b/doc/html/search/close.png new file mode 100644 index 0000000000000000000000000000000000000000..9342d3dfeea7b7c4ee610987e717804b5a42ceb9 GIT binary patch literal 273 zcmV+s0q*{ZP)4(RlMby96)VwnbG{ zbe&}^BDn7x>$<{ck4zAK-=nT;=hHG)kmplIF${xqm8db3oX6wT3bvp`TE@m0cg;b) zBuSL}5?N7O(iZLdAlz@)b)Rd~DnSsSX&P5qC`XwuFwcAYLC+d2>+1(8on;wpt8QIC X2MT$R4iQDd00000NkvXXu0mjfia~GN literal 0 HcmV?d00001 diff --git a/doc/html/search/defines_0.html b/doc/html/search/defines_0.html new file mode 100644 index 0000000..3bffafa --- /dev/null +++ b/doc/html/search/defines_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/defines_0.js b/doc/html/search/defines_0.js new file mode 100644 index 0000000..1e65487 --- /dev/null +++ b/doc/html/search/defines_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['_5f_5futl_5fconsepts_5fconcepts_5fh_5f_5f',['__utl_consepts_concepts_h__',['../concepts_8h.html#a3488adf4d9de8aadb0085e63c5bcc471',1,'concepts.h']]], + ['_5fcrtp_5fimpl',['_CRTP_IMPL',['../crtp_8h.html#a716d91dbf95e7d113f133e1f3e6da852',1,'crtp.h']]] +]; diff --git a/doc/html/search/defines_1.html b/doc/html/search/defines_1.html new file mode 100644 index 0000000..ca5bb94 --- /dev/null +++ b/doc/html/search/defines_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/defines_1.js b/doc/html/search/defines_1.js new file mode 100644 index 0000000..6e15b6b --- /dev/null +++ b/doc/html/search/defines_1.js @@ -0,0 +1,35 @@ +var searchData= +[ + ['add_5ffailure',['ADD_FAILURE',['../gtest_8h.html#adc16b5b0a740c39084ea5c9e960e3063',1,'gtest.h']]], + ['add_5ffailure_5fat',['ADD_FAILURE_AT',['../gtest_8h.html#a448d7e5105b640e892fd8153fbee0b7f',1,'gtest.h']]], + ['assert_5fany_5fthrow',['ASSERT_ANY_THROW',['../gtest_8h.html#affadeef9379fe5aabf6f28d9eab9d3c0',1,'gtest.h']]], + ['assert_5fdeath_5fif_5fsupported',['ASSERT_DEATH_IF_SUPPORTED',['../gtest_8h.html#ab2f0f25b46353767179a49ebd15b7345',1,'gtest.h']]], + ['assert_5fdouble_5feq',['ASSERT_DOUBLE_EQ',['../gtest_8h.html#a6617da62e5ae5490995a3bfca1f331a9',1,'gtest.h']]], + ['assert_5feq',['ASSERT_EQ',['../gtest_8h.html#a1a6db8b1338ee7040329322b77779086',1,'gtest.h']]], + ['assert_5ffalse',['ASSERT_FALSE',['../gtest_8h.html#a8197fa52f3538588d20d8af4834c9003',1,'gtest.h']]], + ['assert_5ffloat_5feq',['ASSERT_FLOAT_EQ',['../gtest_8h.html#a4663ffbf844baa54bdb29f9148fd0f96',1,'gtest.h']]], + ['assert_5fge',['ASSERT_GE',['../gtest_8h.html#af4ff5dc71479fcb374b6bc2ed195bcc4',1,'gtest.h']]], + ['assert_5fgt',['ASSERT_GT',['../gtest_8h.html#a16a882d4eafc9f8643867aea40879140',1,'gtest.h']]], + ['assert_5fle',['ASSERT_LE',['../gtest_8h.html#a775643748feff0b490aae651d041e971',1,'gtest.h']]], + ['assert_5flt',['ASSERT_LT',['../gtest_8h.html#affc4f9cae4c3aabfe60fced83737b42c',1,'gtest.h']]], + ['assert_5fne',['ASSERT_NE',['../gtest_8h.html#aa866c8dece57912e6f51495ed3e8d8d5',1,'gtest.h']]], + ['assert_5fnear',['ASSERT_NEAR',['../gtest_8h.html#a73cce6b752d204f91a36bef2f8e663b3',1,'gtest.h']]], + ['assert_5fno_5ffatal_5ffailure',['ASSERT_NO_FATAL_FAILURE',['../gtest_8h.html#a5034fda3490aad5a93942ac83f4cea49',1,'gtest.h']]], + ['assert_5fno_5fthrow',['ASSERT_NO_THROW',['../gtest_8h.html#a895c34d9b192cdc2ba46d2680623485d',1,'gtest.h']]], + ['assert_5fpred1',['ASSERT_PRED1',['../gtest_8h.html#a7d72f779b7d39b8f73a563ebc6d0604b',1,'gtest.h']]], + ['assert_5fpred2',['ASSERT_PRED2',['../gtest_8h.html#a4e9b777cce4e5423f4c2e491be7aa818',1,'gtest.h']]], + ['assert_5fpred3',['ASSERT_PRED3',['../gtest_8h.html#aa7688f3ab9f09a2c1dbf13bd1f29d8fd',1,'gtest.h']]], + ['assert_5fpred4',['ASSERT_PRED4',['../gtest_8h.html#addc030c521775610e4619a01541a2167',1,'gtest.h']]], + ['assert_5fpred5',['ASSERT_PRED5',['../gtest_8h.html#af8e510af2b4a14d90eef66ace17d1c30',1,'gtest.h']]], + ['assert_5fpred_5fformat1',['ASSERT_PRED_FORMAT1',['../gtest_8h.html#a3771ca0d1a72013aebc3d66e046491ed',1,'gtest.h']]], + ['assert_5fpred_5fformat2',['ASSERT_PRED_FORMAT2',['../gtest_8h.html#ac452685a1a98ea3d96eb956a062ee210',1,'gtest.h']]], + ['assert_5fpred_5fformat3',['ASSERT_PRED_FORMAT3',['../gtest_8h.html#a494e3b8dc22f4765f7e041f16c930e3d',1,'gtest.h']]], + ['assert_5fpred_5fformat4',['ASSERT_PRED_FORMAT4',['../gtest_8h.html#a1842593c1dfb13c9a4b33b01540a8b40',1,'gtest.h']]], + ['assert_5fpred_5fformat5',['ASSERT_PRED_FORMAT5',['../gtest_8h.html#abd7cb4f36d6aa2cb346ab3ac812568f3',1,'gtest.h']]], + ['assert_5fstrcaseeq',['ASSERT_STRCASEEQ',['../gtest_8h.html#a58847dd696200a3268361401dfcd0fa0',1,'gtest.h']]], + ['assert_5fstrcasene',['ASSERT_STRCASENE',['../gtest_8h.html#ac3d2c3836b103068a050f32585b2aaad',1,'gtest.h']]], + ['assert_5fstreq',['ASSERT_STREQ',['../gtest_8h.html#a74f4189ea570bab9a65d47104659ef9c',1,'gtest.h']]], + ['assert_5fstrne',['ASSERT_STRNE',['../gtest_8h.html#a3d679660ac1b2f9f6e6c7608452af923',1,'gtest.h']]], + ['assert_5fthrow',['ASSERT_THROW',['../gtest_8h.html#aedb1eddae6c2a2430b0e7b7e03b4f052',1,'gtest.h']]], + ['assert_5ftrue',['ASSERT_TRUE',['../gtest_8h.html#ae9244bfbda562e8b798789b001993fa5',1,'gtest.h']]] +]; diff --git a/doc/html/search/defines_2.html b/doc/html/search/defines_2.html new file mode 100644 index 0000000..7cc1a74 --- /dev/null +++ b/doc/html/search/defines_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/defines_2.js b/doc/html/search/defines_2.js new file mode 100644 index 0000000..c86b7a2 --- /dev/null +++ b/doc/html/search/defines_2.js @@ -0,0 +1,37 @@ +var searchData= +[ + ['expect_5fany_5fthrow',['EXPECT_ANY_THROW',['../gtest_8h.html#a9be43f44d148e8a8d6a89c864bf4e461',1,'gtest.h']]], + ['expect_5fdeath_5fif_5fsupported',['EXPECT_DEATH_IF_SUPPORTED',['../gtest_8h.html#a8564de0e012dd0898949c513d1571f8b',1,'gtest.h']]], + ['expect_5fdouble_5feq',['EXPECT_DOUBLE_EQ',['../gtest_8h.html#ab4852f9430cf656690256ea7fe6323b8',1,'gtest.h']]], + ['expect_5feq',['EXPECT_EQ',['../gtest_8h.html#a4159019abda84f5366acdb7604ff220a',1,'gtest.h']]], + ['expect_5ffalse',['EXPECT_FALSE',['../gtest_8h.html#aeb6c7ae89f440c90c1a1815951c836da',1,'gtest.h']]], + ['expect_5ffatal_5ffailure',['EXPECT_FATAL_FAILURE',['../gtest-all_8cc.html#a819a3fd7f8b8cf24b6f1b3a26708973d',1,'gtest-all.cc']]], + ['expect_5ffatal_5ffailure_5fon_5fall_5fthreads',['EXPECT_FATAL_FAILURE_ON_ALL_THREADS',['../gtest-all_8cc.html#ad8aac5bc859b2ddc07583636ae4f45cf',1,'gtest-all.cc']]], + ['expect_5ffloat_5feq',['EXPECT_FLOAT_EQ',['../gtest_8h.html#a981e552322fb084042d02d6dfa9860ca',1,'gtest.h']]], + ['expect_5fge',['EXPECT_GE',['../gtest_8h.html#ab7a0ff4bfa4d9b27baa118d8b0756ca0',1,'gtest.h']]], + ['expect_5fgt',['EXPECT_GT',['../gtest_8h.html#aa8bc8320813e1abb0016129b636e3b27',1,'gtest.h']]], + ['expect_5fle',['EXPECT_LE',['../gtest_8h.html#ae0f265632323b4a07b585dcfde10f60a',1,'gtest.h']]], + ['expect_5flt',['EXPECT_LT',['../gtest_8h.html#af28c06b2b5e8dee151896f299f6610cf',1,'gtest.h']]], + ['expect_5fne',['EXPECT_NE',['../gtest_8h.html#a6ae7443947f25abc58bfcfcfc56b0d75',1,'gtest.h']]], + ['expect_5fnear',['EXPECT_NEAR',['../gtest_8h.html#a88cd7978af0e7dbd42cd606dfabdcc6f',1,'gtest.h']]], + ['expect_5fno_5ffatal_5ffailure',['EXPECT_NO_FATAL_FAILURE',['../gtest_8h.html#a067c02ccaf3171d6e1781cd0f8cdcf74',1,'gtest.h']]], + ['expect_5fno_5fthrow',['EXPECT_NO_THROW',['../gtest_8h.html#a2743a1438137ad857aa3f9fec3ff67ec',1,'gtest.h']]], + ['expect_5fnonfatal_5ffailure',['EXPECT_NONFATAL_FAILURE',['../gtest-all_8cc.html#a8376fd6821bd88fd806697355e79e138',1,'gtest-all.cc']]], + ['expect_5fnonfatal_5ffailure_5fon_5fall_5fthreads',['EXPECT_NONFATAL_FAILURE_ON_ALL_THREADS',['../gtest-all_8cc.html#a9f4cf1f150fe9facfc4cbf0bae646ee9',1,'gtest-all.cc']]], + ['expect_5fpred1',['EXPECT_PRED1',['../gtest_8h.html#a6d09aa83f8d297481380c7c073c9f070',1,'gtest.h']]], + ['expect_5fpred2',['EXPECT_PRED2',['../gtest_8h.html#a14e74e655e502914d3d07e083145ac91',1,'gtest.h']]], + ['expect_5fpred3',['EXPECT_PRED3',['../gtest_8h.html#a0a0aff2564ea84c7eb3517ac8eda04da',1,'gtest.h']]], + ['expect_5fpred4',['EXPECT_PRED4',['../gtest_8h.html#a4fd2b1bad63eb752bc2ff2b6bb3f4569',1,'gtest.h']]], + ['expect_5fpred5',['EXPECT_PRED5',['../gtest_8h.html#adbfcc13f3b3d14c42a7fbd41573932bf',1,'gtest.h']]], + ['expect_5fpred_5fformat1',['EXPECT_PRED_FORMAT1',['../gtest_8h.html#a07132aa62cf4902e50e68d0265f573b6',1,'gtest.h']]], + ['expect_5fpred_5fformat2',['EXPECT_PRED_FORMAT2',['../gtest_8h.html#af0141918615a5e2d5247e9cda8324dae',1,'gtest.h']]], + ['expect_5fpred_5fformat3',['EXPECT_PRED_FORMAT3',['../gtest_8h.html#a7285708fa5d37d6d8ed5b5e59da08bae',1,'gtest.h']]], + ['expect_5fpred_5fformat4',['EXPECT_PRED_FORMAT4',['../gtest_8h.html#a3354347de0f2445400b509cf39dce1dc',1,'gtest.h']]], + ['expect_5fpred_5fformat5',['EXPECT_PRED_FORMAT5',['../gtest_8h.html#a74beddf9661e4460f9969fe211b9e80e',1,'gtest.h']]], + ['expect_5fstrcaseeq',['EXPECT_STRCASEEQ',['../gtest_8h.html#a740cab7e3eec5c178a64b4f558bde66e',1,'gtest.h']]], + ['expect_5fstrcasene',['EXPECT_STRCASENE',['../gtest_8h.html#a07d0b5cbd3b5f7c8b6f44c609046ff07',1,'gtest.h']]], + ['expect_5fstreq',['EXPECT_STREQ',['../gtest_8h.html#ad20f7b94ac5081e16f0005b94e95f0c6',1,'gtest.h']]], + ['expect_5fstrne',['EXPECT_STRNE',['../gtest_8h.html#aee7e9c42f55549dbc0dfc42391eb9775',1,'gtest.h']]], + ['expect_5fthrow',['EXPECT_THROW',['../gtest_8h.html#a789842b4475eed948e6fd18390d5a859',1,'gtest.h']]], + ['expect_5ftrue',['EXPECT_TRUE',['../gtest_8h.html#ac33e7cdfb5d44a7a0f0ab552eb5c3c6a',1,'gtest.h']]] +]; diff --git a/doc/html/search/defines_3.html b/doc/html/search/defines_3.html new file mode 100644 index 0000000..3d0ac12 --- /dev/null +++ b/doc/html/search/defines_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/defines_3.js b/doc/html/search/defines_3.js new file mode 100644 index 0000000..4c96560 --- /dev/null +++ b/doc/html/search/defines_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['fail',['FAIL',['../gtest_8h.html#a3e26a8d27caa386ed0ea7ce9d5b7c4ed',1,'gtest.h']]], + ['friend_5ftest',['FRIEND_TEST',['../gtest_8h.html#a8d443b4cc1d87a7a17943b8fbdbf3910',1,'gtest.h']]] +]; diff --git a/doc/html/search/defines_4.html b/doc/html/search/defines_4.html new file mode 100644 index 0000000..201f927 --- /dev/null +++ b/doc/html/search/defines_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/defines_4.js b/doc/html/search/defines_4.js new file mode 100644 index 0000000..40526ff --- /dev/null +++ b/doc/html/search/defines_4.js @@ -0,0 +1,139 @@ +var searchData= +[ + ['gtest_5fadd_5freference_5f',['GTEST_ADD_REFERENCE_',['../gtest_8h.html#ab389953fc1f7e4efae30d182a0e0a13b',1,'gtest.h']]], + ['gtest_5fambiguous_5felse_5fblocker_5f',['GTEST_AMBIGUOUS_ELSE_BLOCKER_',['../gtest_8h.html#a00b3684a621ce1422b55a0e7e8a6aecb',1,'gtest.h']]], + ['gtest_5fapi_5f',['GTEST_API_',['../gtest_8h.html#aa73be6f0ba4a7456180a94904ce17790',1,'gtest.h']]], + ['gtest_5farray_5fsize_5f',['GTEST_ARRAY_SIZE_',['../gtest_8h.html#ab71a3e9a908b7b6acc0e8bddc0ecb3fe',1,'gtest.h']]], + ['gtest_5fassert_5f',['GTEST_ASSERT_',['../gtest_8h.html#a8c09939dd67f1bb5b68c9f6a44ea75db',1,'gtest.h']]], + ['gtest_5fassert_5feq',['GTEST_ASSERT_EQ',['../gtest_8h.html#a8a7a47387090810cdfe78933d348182d',1,'gtest.h']]], + ['gtest_5fassert_5fge',['GTEST_ASSERT_GE',['../gtest_8h.html#a55373d99c079ff1b894e2eb5bcd15c5a',1,'gtest.h']]], + ['gtest_5fassert_5fgt',['GTEST_ASSERT_GT',['../gtest_8h.html#a088b9056fd1c1f316b41c22f64deb33a',1,'gtest.h']]], + ['gtest_5fassert_5fle',['GTEST_ASSERT_LE',['../gtest_8h.html#abef04dcd4a0259d378de7b3b3ffb6730',1,'gtest.h']]], + ['gtest_5fassert_5flt',['GTEST_ASSERT_LT',['../gtest_8h.html#a5a75667e637febd18e5f7d4f3abf55e8',1,'gtest.h']]], + ['gtest_5fassert_5fne',['GTEST_ASSERT_NE',['../gtest_8h.html#a6fa9bb2b6731eba8f481e40e9e4931b3',1,'gtest.h']]], + ['gtest_5fattribute_5fno_5fsanitize_5faddress_5f',['GTEST_ATTRIBUTE_NO_SANITIZE_ADDRESS_',['../gtest_8h.html#af18b465f4ba6e36eea7a8d2d79521873',1,'gtest.h']]], + ['gtest_5fattribute_5fno_5fsanitize_5fmemory_5f',['GTEST_ATTRIBUTE_NO_SANITIZE_MEMORY_',['../gtest_8h.html#a2a83dd79037e53814a509cc3f5702650',1,'gtest.h']]], + ['gtest_5fattribute_5fno_5fsanitize_5fthread_5f',['GTEST_ATTRIBUTE_NO_SANITIZE_THREAD_',['../gtest_8h.html#abf30a6b1b3a12ecb2cc1bc1a6f5f9646',1,'gtest.h']]], + ['gtest_5fattribute_5fprintf_5f',['GTEST_ATTRIBUTE_PRINTF_',['../gtest_8h.html#ae29b00ca46783509cc900cd03d61ef37',1,'gtest.h']]], + ['gtest_5fattribute_5funused_5f',['GTEST_ATTRIBUTE_UNUSED_',['../gtest_8h.html#acdd47601a9376161c349a5881ccc6918',1,'gtest.h']]], + ['gtest_5fcheck_5f',['GTEST_CHECK_',['../gtest_8h.html#ab54343f0a36dc4cb0ce8a478dd7847b8',1,'gtest.h']]], + ['gtest_5fcheck_5fposix_5fsuccess_5f',['GTEST_CHECK_POSIX_SUCCESS_',['../gtest_8h.html#a38f6151210e363ad7c69a836b13cf0af',1,'gtest.h']]], + ['gtest_5fcompile_5fassert_5f',['GTEST_COMPILE_ASSERT_',['../gtest_8h.html#ae1f37dc71d5daa6fb49ca1b6047d4a8c',1,'gtest.h']]], + ['gtest_5fconcat_5ftoken_5f',['GTEST_CONCAT_TOKEN_',['../gtest_8h.html#ae3c336cbe1ae2bd1b1d019333e4428a0',1,'gtest.h']]], + ['gtest_5fconcat_5ftoken_5fimpl_5f',['GTEST_CONCAT_TOKEN_IMPL_',['../gtest_8h.html#aa39fb5346d3573feebe4257cb3a01fde',1,'gtest.h']]], + ['gtest_5fdeclare_5fbool_5f',['GTEST_DECLARE_bool_',['../gtest_8h.html#a14eb0e9c6e0df765d1fbfd2db6966d14',1,'gtest.h']]], + ['gtest_5fdeclare_5fint32_5f',['GTEST_DECLARE_int32_',['../gtest_8h.html#aab2ee98cb616054b1d3a7dc71efe81fc',1,'gtest.h']]], + ['gtest_5fdeclare_5fstatic_5fmutex_5f',['GTEST_DECLARE_STATIC_MUTEX_',['../gtest_8h.html#af0970cdea09f16dbb1dbfccdaa693eeb',1,'gtest.h']]], + ['gtest_5fdeclare_5fstring_5f',['GTEST_DECLARE_string_',['../gtest_8h.html#a9f74eee05f7ee5534139a622fe7da7dd',1,'gtest.h']]], + ['gtest_5fdefault_5fdeath_5ftest_5fstyle',['GTEST_DEFAULT_DEATH_TEST_STYLE',['../gtest_8h.html#a491d09ee62f1c9cfeafa3dbf75aaa9e2',1,'gtest.h']]], + ['gtest_5fdefine_5fbool_5f',['GTEST_DEFINE_bool_',['../gtest_8h.html#a48e05814779e5a2f432b06a12618a760',1,'gtest.h']]], + ['gtest_5fdefine_5fint32_5f',['GTEST_DEFINE_int32_',['../gtest_8h.html#a88ee2f19589ffff86ca742fd33611358',1,'gtest.h']]], + ['gtest_5fdefine_5fstatic_5fmutex_5f',['GTEST_DEFINE_STATIC_MUTEX_',['../gtest_8h.html#a85d5cd679fdbe87383e7dfd1c6651eaa',1,'gtest.h']]], + ['gtest_5fdefine_5fstring_5f',['GTEST_DEFINE_string_',['../gtest_8h.html#a885e18fe217a6e85553d408b99252c12',1,'gtest.h']]], + ['gtest_5fdev_5femail_5f',['GTEST_DEV_EMAIL_',['../gtest_8h.html#a21086d276b1a64d6763ee8a94b12c1b8',1,'gtest.h']]], + ['gtest_5fdisable_5fmsc_5fdeprecated_5fpop_5f',['GTEST_DISABLE_MSC_DEPRECATED_POP_',['../gtest_8h.html#aa0dc86dc9837f1610e91da65458f53b3',1,'gtest.h']]], + ['gtest_5fdisable_5fmsc_5fdeprecated_5fpush_5f',['GTEST_DISABLE_MSC_DEPRECATED_PUSH_',['../gtest_8h.html#a5b130138db254deaf29dbe3dffa1a2a8',1,'gtest.h']]], + ['gtest_5fdisable_5fmsc_5fwarnings_5fpop_5f',['GTEST_DISABLE_MSC_WARNINGS_POP_',['../gtest_8h.html#aebf8277c9069c1e124f9a5bbe2948061',1,'gtest.h']]], + ['gtest_5fdisable_5fmsc_5fwarnings_5fpush_5f',['GTEST_DISABLE_MSC_WARNINGS_PUSH_',['../gtest_8h.html#a86994cc68e844d8b82089c70408dfc61',1,'gtest.h']]], + ['gtest_5fdisallow_5fassign_5f',['GTEST_DISALLOW_ASSIGN_',['../gtest_8h.html#ac593b50ce24257d5b6aa84845c344c9e',1,'gtest.h']]], + ['gtest_5fdisallow_5fcopy_5fand_5fassign_5f',['GTEST_DISALLOW_COPY_AND_ASSIGN_',['../gtest_8h.html#aed8c1888c32b588b0681e88b95031e29',1,'gtest.h']]], + ['gtest_5fexclusive_5flock_5frequired_5f',['GTEST_EXCLUSIVE_LOCK_REQUIRED_',['../gtest_8h.html#a149f693bd59fa1bc937af54c0cdcb32f',1,'gtest.h']]], + ['gtest_5ffail',['GTEST_FAIL',['../gtest_8h.html#a636231436707c30d6778f79ae96f5dc6',1,'gtest.h']]], + ['gtest_5ffatal_5ffailure_5f',['GTEST_FATAL_FAILURE_',['../gtest_8h.html#a0f9a4c3ea82cc7bf4478eaffdc168358',1,'gtest.h']]], + ['gtest_5fflag',['GTEST_FLAG',['../gtest_8h.html#a828f4e34a1c4b510da50ec1563e3562a',1,'gtest.h']]], + ['gtest_5fflag_5fprefix_5f',['GTEST_FLAG_PREFIX_',['../gtest_8h.html#a088e84784c589ba9b1fc48602ad8eabf',1,'gtest.h']]], + ['gtest_5fflag_5fprefix_5fdash_5f',['GTEST_FLAG_PREFIX_DASH_',['../gtest_8h.html#a4251ff898f9f94ec6b8b9402c3436759',1,'gtest.h']]], + ['gtest_5fflag_5fprefix_5fupper_5f',['GTEST_FLAG_PREFIX_UPPER_',['../gtest_8h.html#a4018b7f288f974d022df397e2730633a',1,'gtest.h']]], + ['gtest_5fflag_5fsaver_5f',['GTEST_FLAG_SAVER_',['../gtest_8h.html#a3749ef4fba6b3c3993609b336031644d',1,'gtest.h']]], + ['gtest_5fhas_5falt_5fpath_5fsep_5f',['GTEST_HAS_ALT_PATH_SEP_',['../gtest_8h.html#acf0ee1851e6d342237bb64806ee1fd27',1,'gtest.h']]], + ['gtest_5fhas_5fclone',['GTEST_HAS_CLONE',['../gtest_8h.html#a40c075a7f969a694e59532356be59fd5',1,'gtest.h']]], + ['gtest_5fhas_5fcxxabi_5fh_5f',['GTEST_HAS_CXXABI_H_',['../gtest_8h.html#ae6239a8ccf4c230008d1db1ea8bd738e',1,'gtest.h']]], + ['gtest_5fhas_5fexceptions',['GTEST_HAS_EXCEPTIONS',['../gtest_8h.html#aedcf220690e6589d0fc2bd3db768ea66',1,'gtest.h']]], + ['gtest_5fhas_5fgettimeofday_5f',['GTEST_HAS_GETTIMEOFDAY_',['../gtest-all_8cc.html#a7c139c1711de5a69cbc934e8a082e4f9',1,'gtest-all.cc']]], + ['gtest_5fhas_5fglobal_5fstring',['GTEST_HAS_GLOBAL_STRING',['../gtest_8h.html#a6ab57c4a17233dd4ed30c2926bb99cc5',1,'gtest.h']]], + ['gtest_5fhas_5fglobal_5fwstring',['GTEST_HAS_GLOBAL_WSTRING',['../gtest_8h.html#afca9ecaf5846561187a15b75013aa85b',1,'gtest.h']]], + ['gtest_5fhas_5fposix_5fre',['GTEST_HAS_POSIX_RE',['../gtest_8h.html#af5c4295ea1d76f07f65934f659792431',1,'gtest.h']]], + ['gtest_5fhas_5fpthread',['GTEST_HAS_PTHREAD',['../gtest_8h.html#a3341397e1952de0b9cd88762d4d3ae4b',1,'gtest.h']]], + ['gtest_5fhas_5frtti',['GTEST_HAS_RTTI',['../gtest_8h.html#a9ba781217167f905bff2f1c410a97930',1,'gtest.h']]], + ['gtest_5fhas_5fseh',['GTEST_HAS_SEH',['../gtest_8h.html#a8f6a84e8be3c94cd1f6f46a136df2c62',1,'gtest.h']]], + ['gtest_5fhas_5fstd_5fstring',['GTEST_HAS_STD_STRING',['../gtest_8h.html#adba1121430c11cee8ba0c74e8cf6aa40',1,'gtest.h']]], + ['gtest_5fhas_5fstd_5fwstring',['GTEST_HAS_STD_WSTRING',['../gtest_8h.html#a6e087748d8bbd2ca57c487b6ad268670',1,'gtest.h']]], + ['gtest_5fhas_5fstream_5fredirection',['GTEST_HAS_STREAM_REDIRECTION',['../gtest_8h.html#add695166eb7b691f93777525d5881062',1,'gtest.h']]], + ['gtest_5fimpl_5fcmp_5fhelper_5f',['GTEST_IMPL_CMP_HELPER_',['../gtest-all_8cc.html#a4a5b6fbde5dd05e05dd6846ac5e5c18e',1,'GTEST_IMPL_CMP_HELPER_(): gtest-all.cc'],['../gtest_8h.html#a4a5b6fbde5dd05e05dd6846ac5e5c18e',1,'GTEST_IMPL_CMP_HELPER_(): gtest.h']]], + ['gtest_5fimpl_5fformat_5fc_5fstring_5fas_5fpointer_5f',['GTEST_IMPL_FORMAT_C_STRING_AS_POINTER_',['../gtest_8h.html#a79d4724b4bc2a1dd8493c366b5ca626a',1,'gtest.h']]], + ['gtest_5fimpl_5fformat_5fc_5fstring_5fas_5fstring_5f',['GTEST_IMPL_FORMAT_C_STRING_AS_STRING_',['../gtest_8h.html#ad6102ed2a0571d5196e606a061c16a10',1,'gtest.h']]], + ['gtest_5finclude_5fgtest_5fgtest_5fdeath_5ftest_5fh_5f',['GTEST_INCLUDE_GTEST_GTEST_DEATH_TEST_H_',['../gtest_8h.html#a9be22723f67d5ad4d6d26214a84a19f9',1,'gtest.h']]], + ['gtest_5finclude_5fgtest_5fgtest_5fmatchers_5fh_5f',['GTEST_INCLUDE_GTEST_GTEST_MATCHERS_H_',['../gtest_8h.html#ac5d82b7725576c4a54ae99ce1cc861e0',1,'gtest.h']]], + ['gtest_5finclude_5fgtest_5fgtest_5fmessage_5fh_5f',['GTEST_INCLUDE_GTEST_GTEST_MESSAGE_H_',['../gtest_8h.html#a5c2d86823d7f9ffac3e3766da17091dd',1,'gtest.h']]], + ['gtest_5finclude_5fgtest_5fgtest_5fparam_5ftest_5fh_5f',['GTEST_INCLUDE_GTEST_GTEST_PARAM_TEST_H_',['../gtest_8h.html#a15b9e83e56cafef0ddd12e2444772908',1,'gtest.h']]], + ['gtest_5finclude_5fgtest_5fgtest_5fpred_5fimpl_5fh_5f',['GTEST_INCLUDE_GTEST_GTEST_PRED_IMPL_H_',['../gtest_8h.html#a36afb7e44e600d2da0e6d8f4f739ea3b',1,'gtest.h']]], + ['gtest_5finclude_5fgtest_5fgtest_5fprinters_5fh_5f',['GTEST_INCLUDE_GTEST_GTEST_PRINTERS_H_',['../gtest_8h.html#a146e4a81159ecfdc33030e147a024346',1,'gtest.h']]], + ['gtest_5finclude_5fgtest_5fgtest_5fprod_5fh_5f',['GTEST_INCLUDE_GTEST_GTEST_PROD_H_',['../gtest_8h.html#a61e419ca2f3cc78bbae47d074c5d4400',1,'gtest.h']]], + ['gtest_5finclude_5fgtest_5fgtest_5fspi_5fh_5f',['GTEST_INCLUDE_GTEST_GTEST_SPI_H_',['../gtest-all_8cc.html#a2f159eaa9c00e7aa9fd6b296e520e35c',1,'gtest-all.cc']]], + ['gtest_5finclude_5fgtest_5fgtest_5ftest_5fpart_5fh_5f',['GTEST_INCLUDE_GTEST_GTEST_TEST_PART_H_',['../gtest_8h.html#a6454a5e01489b59f55be53c206ca929b',1,'gtest.h']]], + ['gtest_5finclude_5fgtest_5fgtest_5ftyped_5ftest_5fh_5f',['GTEST_INCLUDE_GTEST_GTEST_TYPED_TEST_H_',['../gtest_8h.html#adddef1e04ac44c9721ce3716c1b8a09e',1,'gtest.h']]], + ['gtest_5finclude_5fgtest_5finternal_5fcustom_5fgtest_5fport_5fh_5f',['GTEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_PORT_H_',['../gtest_8h.html#aae632b050088c635963f553c4a5157b0',1,'gtest.h']]], + ['gtest_5finclude_5fgtest_5finternal_5fcustom_5fgtest_5fprinters_5fh_5f',['GTEST_INCLUDE_GTEST_INTERNAL_CUSTOM_GTEST_PRINTERS_H_',['../gtest_8h.html#a790dd922b87864bf5b8d93a22853933c',1,'gtest.h']]], + ['gtest_5finclude_5fgtest_5finternal_5fgtest_5fdeath_5ftest_5finternal_5fh_5f',['GTEST_INCLUDE_GTEST_INTERNAL_GTEST_DEATH_TEST_INTERNAL_H_',['../gtest_8h.html#a83e03f206a1c53a656f7eac87c122d16',1,'gtest.h']]], + ['gtest_5finclude_5fgtest_5finternal_5fgtest_5ffilepath_5fh_5f',['GTEST_INCLUDE_GTEST_INTERNAL_GTEST_FILEPATH_H_',['../gtest_8h.html#aa6f5334cb6792f48ac5621193b41bb61',1,'gtest.h']]], + ['gtest_5finclude_5fgtest_5finternal_5fgtest_5finternal_5fh_5f',['GTEST_INCLUDE_GTEST_INTERNAL_GTEST_INTERNAL_H_',['../gtest_8h.html#a508d33581439542ea940eacbf306ad2a',1,'gtest.h']]], + ['gtest_5finclude_5fgtest_5finternal_5fgtest_5fparam_5futil_5fgenerated_5fh_5f',['GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_GENERATED_H_',['../gtest_8h.html#a34b82ce6255f2f5666647d35498f4c65',1,'gtest.h']]], + ['gtest_5finclude_5fgtest_5finternal_5fgtest_5fparam_5futil_5fh_5f',['GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PARAM_UTIL_H_',['../gtest_8h.html#a83cf5c299fc04d9f8e555cb42a97aa47',1,'gtest.h']]], + ['gtest_5finclude_5fgtest_5finternal_5fgtest_5fport_5farch_5fh_5f',['GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_ARCH_H_',['../gtest_8h.html#a0392ac662f9547fb26a0d23c26d09fa6',1,'gtest.h']]], + ['gtest_5finclude_5fgtest_5finternal_5fgtest_5fport_5fh_5f',['GTEST_INCLUDE_GTEST_INTERNAL_GTEST_PORT_H_',['../gtest_8h.html#a6d13def13619ff1647c90e3354a65732',1,'gtest.h']]], + ['gtest_5finclude_5fgtest_5finternal_5fgtest_5fstring_5fh_5f',['GTEST_INCLUDE_GTEST_INTERNAL_GTEST_STRING_H_',['../gtest_8h.html#af7adda0fee2a48fec4d8628cbaedec76',1,'gtest.h']]], + ['gtest_5finclude_5fgtest_5finternal_5fgtest_5ftype_5futil_5fh_5f',['GTEST_INCLUDE_GTEST_INTERNAL_GTEST_TYPE_UTIL_H_',['../gtest_8h.html#aff22afce4bffd0181c178e2e4d848c97',1,'gtest.h']]], + ['gtest_5finit_5fgoogle_5ftest_5fname_5f',['GTEST_INIT_GOOGLE_TEST_NAME_',['../gtest_8h.html#aa5e27ad4f88278501ef71bd9ddbb44c6',1,'gtest.h']]], + ['gtest_5fintentional_5fconst_5fcond_5fpop_5f',['GTEST_INTENTIONAL_CONST_COND_POP_',['../gtest_8h.html#ad115e2c466f7e8a32f1cf23ef2e5f220',1,'gtest.h']]], + ['gtest_5fintentional_5fconst_5fcond_5fpush_5f',['GTEST_INTENTIONAL_CONST_COND_PUSH_',['../gtest_8h.html#a69b0cadb05bf2a1ef96151243c6b6241',1,'gtest.h']]], + ['gtest_5finternal_5fdeprecated',['GTEST_INTERNAL_DEPRECATED',['../gtest_8h.html#a6aa594029905b65753d0e85f2db521ab',1,'gtest.h']]], + ['gtest_5fis_5fnull_5fliteral_5f',['GTEST_IS_NULL_LITERAL_',['../gtest_8h.html#ae5dd8e23090e08856613878fa1ff6fca',1,'gtest.h']]], + ['gtest_5fis_5fthreadsafe',['GTEST_IS_THREADSAFE',['../gtest_8h.html#a727149862f53b2fb21f6d33cd9323886',1,'gtest.h']]], + ['gtest_5flock_5fexcluded_5f',['GTEST_LOCK_EXCLUDED_',['../gtest_8h.html#a69abff5a4efdd07bd5faebe3dd318d06',1,'gtest.h']]], + ['gtest_5flog_5f',['GTEST_LOG_',['../gtest_8h.html#a8ef4cb4c465db8c15464aecc6d9510ef',1,'gtest.h']]], + ['gtest_5fmessage_5f',['GTEST_MESSAGE_',['../gtest_8h.html#a94c73d5368ec946bc354d0992ad00810',1,'gtest.h']]], + ['gtest_5fmessage_5fat_5f',['GTEST_MESSAGE_AT_',['../gtest_8h.html#a8d70025c45a47a493780746dfd66d565',1,'gtest.h']]], + ['gtest_5fmust_5fuse_5fresult_5f',['GTEST_MUST_USE_RESULT_',['../gtest_8h.html#a8e5aab8276b2645f64f41c9e3021b935',1,'gtest.h']]], + ['gtest_5fname_5f',['GTEST_NAME_',['../gtest_8h.html#a13d98c217176bd8722c395b9225fc19d',1,'gtest.h']]], + ['gtest_5fno_5finline_5f',['GTEST_NO_INLINE_',['../gtest_8h.html#a9945cbd967fbccb15f8de711f58955c7',1,'gtest.h']]], + ['gtest_5fnonfatal_5ffailure_5f',['GTEST_NONFATAL_FAILURE_',['../gtest_8h.html#a6cb7482cfa03661a91c698eb5895f642',1,'gtest.h']]], + ['gtest_5fpath_5fmax_5f',['GTEST_PATH_MAX_',['../gtest-all_8cc.html#ad9d445747785a9271a57cf1d392b89ad',1,'gtest-all.cc']]], + ['gtest_5fpath_5fsep_5f',['GTEST_PATH_SEP_',['../gtest_8h.html#afbb636e91bdd50267dbef11a50490b29',1,'gtest.h']]], + ['gtest_5fpred1_5f',['GTEST_PRED1_',['../gtest_8h.html#ad44cf322952076d85305bbdf39769ac1',1,'gtest.h']]], + ['gtest_5fpred2_5f',['GTEST_PRED2_',['../gtest_8h.html#ac560264104bd030b64034505d294a7b6',1,'gtest.h']]], + ['gtest_5fpred3_5f',['GTEST_PRED3_',['../gtest_8h.html#af30518f03233bc4486b55284b0827eb8',1,'gtest.h']]], + ['gtest_5fpred4_5f',['GTEST_PRED4_',['../gtest_8h.html#a14e8c70455104fac032efec097ef668b',1,'gtest.h']]], + ['gtest_5fpred5_5f',['GTEST_PRED5_',['../gtest_8h.html#a2c42692f7d910dc2fe57869883190e6c',1,'gtest.h']]], + ['gtest_5fpred_5fformat1_5f',['GTEST_PRED_FORMAT1_',['../gtest_8h.html#aa3e3bfe04bb0e54d7f0e57e2f991d1eb',1,'gtest.h']]], + ['gtest_5fpred_5fformat2_5f',['GTEST_PRED_FORMAT2_',['../gtest_8h.html#a115c18d1f752b7f091d577fb69cac372',1,'gtest.h']]], + ['gtest_5fpred_5fformat3_5f',['GTEST_PRED_FORMAT3_',['../gtest_8h.html#a49cdf8707268ee932bb772d879a226cc',1,'gtest.h']]], + ['gtest_5fpred_5fformat4_5f',['GTEST_PRED_FORMAT4_',['../gtest_8h.html#abd207ed869491ba4bba29f8df37b7355',1,'gtest.h']]], + ['gtest_5fpred_5fformat5_5f',['GTEST_PRED_FORMAT5_',['../gtest_8h.html#a107623ee191560f703a3fdc983803c8e',1,'gtest.h']]], + ['gtest_5fproject_5furl_5f',['GTEST_PROJECT_URL_',['../gtest_8h.html#a5aa3c938fc1d049f1d9c5332f6a0b1d4',1,'gtest.h']]], + ['gtest_5freference_5fto_5fconst_5f',['GTEST_REFERENCE_TO_CONST_',['../gtest_8h.html#a9f91fcd24cae0b48fdaeb19102dac525',1,'gtest.h']]], + ['gtest_5fremove_5fconst_5f',['GTEST_REMOVE_CONST_',['../gtest_8h.html#a2ffec8c60510eb130af387f5ce9a756a',1,'gtest.h']]], + ['gtest_5fremove_5freference_5f',['GTEST_REMOVE_REFERENCE_',['../gtest_8h.html#a84c72f25a6a6600e3ff8381ca6982ae9',1,'gtest.h']]], + ['gtest_5fremove_5freference_5fand_5fconst_5f',['GTEST_REMOVE_REFERENCE_AND_CONST_',['../gtest_8h.html#a874567b176266188fabfffb8393267ce',1,'gtest.h']]], + ['gtest_5frepeater_5fmethod_5f',['GTEST_REPEATER_METHOD_',['../gtest-all_8cc.html#a87a475ab9e81de8b49525787665b9229',1,'gtest-all.cc']]], + ['gtest_5freverse_5frepeater_5fmethod_5f',['GTEST_REVERSE_REPEATER_METHOD_',['../gtest-all_8cc.html#aa7da32fd7da6a8cceeed6b448cb7b5f2',1,'gtest-all.cc']]], + ['gtest_5fskip',['GTEST_SKIP',['../gtest_8h.html#a3c0bbb980d533108ecc23c3534527d3c',1,'gtest.h']]], + ['gtest_5fskip_5f',['GTEST_SKIP_',['../gtest_8h.html#ab75ed7a6cd9e466944ce680c1c07ab47',1,'gtest.h']]], + ['gtest_5fsnprintf_5f',['GTEST_SNPRINTF_',['../gtest_8h.html#aed1cc8143222d7a845a1269448ec203e',1,'gtest.h']]], + ['gtest_5fsrc_5fgtest_5finternal_5finl_5fh_5f',['GTEST_SRC_GTEST_INTERNAL_INL_H_',['../gtest-all_8cc.html#ab740e029f81d48cfba1b34cecce63fef',1,'gtest-all.cc']]], + ['gtest_5fstringify_5f',['GTEST_STRINGIFY_',['../gtest_8h.html#affa935d4361fa573644e9c739dde2b14',1,'gtest.h']]], + ['gtest_5fsucceed',['GTEST_SUCCEED',['../gtest_8h.html#a2690441c38202728f4159ac2462d9720',1,'gtest.h']]], + ['gtest_5fsuccess_5f',['GTEST_SUCCESS_',['../gtest_8h.html#abe012b550eb3807e8c49f7e161bd1567',1,'gtest.h']]], + ['gtest_5fsuppress_5funreachable_5fcode_5fwarning_5fbelow_5f',['GTEST_SUPPRESS_UNREACHABLE_CODE_WARNING_BELOW_',['../gtest_8h.html#a2e66f7dfc5cb87e0fa0289f653173c69',1,'gtest.h']]], + ['gtest_5ftest',['GTEST_TEST',['../gtest_8h.html#a216a746d9241b1f42fdd4449698a4d8d',1,'gtest.h']]], + ['gtest_5ftest_5f',['GTEST_TEST_',['../gtest_8h.html#ab43103f7842de04474e362689f782a46',1,'gtest.h']]], + ['gtest_5ftest_5fany_5fthrow_5f',['GTEST_TEST_ANY_THROW_',['../gtest_8h.html#af48bbd26d54d4afc5e4cef39b1c76ba3',1,'gtest.h']]], + ['gtest_5ftest_5fboolean_5f',['GTEST_TEST_BOOLEAN_',['../gtest_8h.html#ae8912365e1d00a7a2bd248268c64aa1a',1,'gtest.h']]], + ['gtest_5ftest_5fclass_5fname_5f',['GTEST_TEST_CLASS_NAME_',['../gtest_8h.html#ad4bc4ec847a06e7de981e81c9bb116cf',1,'gtest.h']]], + ['gtest_5ftest_5fno_5ffatal_5ffailure_5f',['GTEST_TEST_NO_FATAL_FAILURE_',['../gtest_8h.html#a1b37a3c446836d33040f3266a6236081',1,'gtest.h']]], + ['gtest_5ftest_5fno_5fthrow_5f',['GTEST_TEST_NO_THROW_',['../gtest_8h.html#a9a109d026b5a904646437d7570e13581',1,'gtest.h']]], + ['gtest_5ftest_5fthrow_5f',['GTEST_TEST_THROW_',['../gtest_8h.html#a3f71db93eaf30b0cfca9612b9ac32106',1,'gtest.h']]], + ['gtest_5funsupported_5fdeath_5ftest',['GTEST_UNSUPPORTED_DEATH_TEST',['../gtest_8h.html#aa5f42ab29859b7f49a901770d2e66855',1,'gtest.h']]], + ['gtest_5fuse_5fown_5fflagfile_5fflag_5f',['GTEST_USE_OWN_FLAGFILE_FLAG_',['../gtest_8h.html#aa2315948dda8dba4fc516575657f193c',1,'gtest.h']]], + ['gtest_5fuses_5fposix_5fre',['GTEST_USES_POSIX_RE',['../gtest_8h.html#acecef794eeb09598cd47da764271cb18',1,'gtest.h']]], + ['gtest_5fwide_5fstring_5fuses_5futf16_5f',['GTEST_WIDE_STRING_USES_UTF16_',['../gtest_8h.html#a0e3904ca8d62334ab5f29c057dceb6a1',1,'gtest.h']]] +]; diff --git a/doc/html/search/defines_5.html b/doc/html/search/defines_5.html new file mode 100644 index 0000000..92d51a5 --- /dev/null +++ b/doc/html/search/defines_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/defines_5.js b/doc/html/search/defines_5.js new file mode 100644 index 0000000..66e90fa --- /dev/null +++ b/doc/html/search/defines_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['instantiate_5ftest_5fcase_5fp',['INSTANTIATE_TEST_CASE_P',['../gtest_8h.html#acc356fe00725fe8bf8b95791c0ffacbd',1,'gtest.h']]], + ['instantiate_5ftest_5fsuite_5fp',['INSTANTIATE_TEST_SUITE_P',['../gtest_8h.html#a016124361c862c0db315e4c9dc4d911a',1,'gtest.h']]] +]; diff --git a/doc/html/search/defines_6.html b/doc/html/search/defines_6.html new file mode 100644 index 0000000..fa5d74c --- /dev/null +++ b/doc/html/search/defines_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/defines_6.js b/doc/html/search/defines_6.js new file mode 100644 index 0000000..10e749c --- /dev/null +++ b/doc/html/search/defines_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['scoped_5ftrace',['SCOPED_TRACE',['../gtest_8h.html#a4dac08f15adc8cb1ee0e5c1bfb0f440d',1,'gtest.h']]], + ['succeed',['SUCCEED',['../gtest_8h.html#a75adcdf89f69b0b615e395daafc315af',1,'gtest.h']]] +]; diff --git a/doc/html/search/defines_7.html b/doc/html/search/defines_7.html new file mode 100644 index 0000000..9905408 --- /dev/null +++ b/doc/html/search/defines_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/defines_7.js b/doc/html/search/defines_7.js new file mode 100644 index 0000000..5c29e8e --- /dev/null +++ b/doc/html/search/defines_7.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['test',['TEST',['../gtest_8h.html#ab5540a6d621853916be8240ff51819cf',1,'gtest.h']]], + ['test_5ff',['TEST_F',['../gtest_8h.html#a0ee66d464d1a06c20c1929cae09d8758',1,'gtest.h']]], + ['test_5fp',['TEST_P',['../gtest_8h.html#a1adc861b311e3fbd97bcc72e0b0f5962',1,'gtest.h']]] +]; diff --git a/doc/html/search/enums_0.html b/doc/html/search/enums_0.html new file mode 100644 index 0000000..9efcd1b --- /dev/null +++ b/doc/html/search/enums_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/enums_0.js b/doc/html/search/enums_0.js new file mode 100644 index 0000000..d4f446b --- /dev/null +++ b/doc/html/search/enums_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['bitorder',['bitOrder',['../namespaceutl_1_1spi.html#aed6b713381c193c598572ebac0b284cc',1,'utl::spi']]], + ['br',['BR',['../classutl_1_1__1wire__uart__i.html#a3a2efd9546f298b920011b3c6f933051',1,'utl::_1wire_uart_i::BR()'],['../classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html#a3685fa6f0d0c999a8d9527c98b671e51',1,'utl::_1wire_uart_i< virtual_tag >::BR()']]] +]; diff --git a/doc/html/search/enums_1.html b/doc/html/search/enums_1.html new file mode 100644 index 0000000..0edd779 --- /dev/null +++ b/doc/html/search/enums_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/enums_1.js b/doc/html/search/enums_1.js new file mode 100644 index 0000000..96890cf --- /dev/null +++ b/doc/html/search/enums_1.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['command',['Command',['../classutl_1_1__1wire__i.html#a915f13cf9dbb891eeac73b527a5b9614',1,'utl::_1wire_i::Command()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a8b35a329e022c103b9fac49711bfb268',1,'utl::_1wire_i< virtual_tag >::Command()']]], + ['cpha',['cpha',['../namespaceutl_1_1spi.html#aa49fe33d495226891cef0a870cba59df',1,'utl::spi']]], + ['cpol',['cpol',['../namespaceutl_1_1spi.html#a89e3e1af5df0b6c37239f7e336969f8a',1,'utl::spi']]], + ['cursor',['Cursor',['../classutl_1_1istreamdev__it.html#a343602446a76ddc893b8420a0ec73098',1,'utl::istreamdev_it::Cursor()'],['../classutl_1_1outdev__it.html#ab5cbe3695bf05af30b14b89f8a16594b',1,'utl::outdev_it::Cursor()'],['../classutl_1_1indev__it.html#a2646fbdd38807785263d7d0bbe2b703a',1,'utl::indev_it::Cursor()'],['../classutl_1_1iodev__it.html#a746eded7eb22cbff5441b41ec0aac30f',1,'utl::iodev_it::Cursor()']]] +]; diff --git a/doc/html/search/enums_2.html b/doc/html/search/enums_2.html new file mode 100644 index 0000000..2b851b6 --- /dev/null +++ b/doc/html/search/enums_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/enums_2.js b/doc/html/search/enums_2.js new file mode 100644 index 0000000..9b67b44 --- /dev/null +++ b/doc/html/search/enums_2.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['sdamode',['SDAMode',['../classutl_1_1i2c__bb__i.html#a4369b434fde250d503bfdc07d5c6a26d',1,'utl::i2c_bb_i::SDAMode()'],['../classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html#af4bc7eeeb830e49046a1033e9c79db7f',1,'utl::i2c_bb_i< virtual_tag >::SDAMode()']]], + ['sequence',['Sequence',['../classutl_1_1i2c__i.html#a7e2dde443c6c9bde4a2293beb22950c5',1,'utl::i2c_i::Sequence()'],['../classutl_1_1i2c__i_3_01virtual__tag_01_4.html#a260541de452a9a653162b8b109b26c09',1,'utl::i2c_i< virtual_tag >::Sequence()']]], + ['speed',['Speed',['../classutl_1_1__1wire__i.html#a56bb736aa3620d7795b5914cac5f25cc',1,'utl::_1wire_i::Speed()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a2abb8c6344d17269c55ae0cba63ec512',1,'utl::_1wire_i< virtual_tag >::Speed()']]] +]; diff --git a/doc/html/search/enums_3.html b/doc/html/search/enums_3.html new file mode 100644 index 0000000..b29d31c --- /dev/null +++ b/doc/html/search/enums_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/enums_3.js b/doc/html/search/enums_3.js new file mode 100644 index 0000000..145b9ed --- /dev/null +++ b/doc/html/search/enums_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['edittype',['EditType',['../namespacetesting_1_1internal_1_1edit__distance.html#ad46aa6da12aec1a3f166310478b53a08',1,'testing::internal::edit_distance']]] +]; diff --git a/doc/html/search/enums_4.html b/doc/html/search/enums_4.html new file mode 100644 index 0000000..ad9ec5e --- /dev/null +++ b/doc/html/search/enums_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/enums_4.js b/doc/html/search/enums_4.js new file mode 100644 index 0000000..de690f9 --- /dev/null +++ b/doc/html/search/enums_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['gtestcolor',['GTestColor',['../namespacetesting_1_1internal.html#a648c1bc94c2ef9e868ff3f9dff0f9c4e',1,'testing::internal']]], + ['gtestlogseverity',['GTestLogSeverity',['../namespacetesting_1_1internal.html#aa6255ef3b023c5b4e1a2198d887fb977',1,'testing::internal']]] +]; diff --git a/doc/html/search/enums_5.html b/doc/html/search/enums_5.html new file mode 100644 index 0000000..3b86395 --- /dev/null +++ b/doc/html/search/enums_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/enums_5.js b/doc/html/search/enums_5.js new file mode 100644 index 0000000..9b67b44 --- /dev/null +++ b/doc/html/search/enums_5.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['sdamode',['SDAMode',['../classutl_1_1i2c__bb__i.html#a4369b434fde250d503bfdc07d5c6a26d',1,'utl::i2c_bb_i::SDAMode()'],['../classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html#af4bc7eeeb830e49046a1033e9c79db7f',1,'utl::i2c_bb_i< virtual_tag >::SDAMode()']]], + ['sequence',['Sequence',['../classutl_1_1i2c__i.html#a7e2dde443c6c9bde4a2293beb22950c5',1,'utl::i2c_i::Sequence()'],['../classutl_1_1i2c__i_3_01virtual__tag_01_4.html#a260541de452a9a653162b8b109b26c09',1,'utl::i2c_i< virtual_tag >::Sequence()']]], + ['speed',['Speed',['../classutl_1_1__1wire__i.html#a56bb736aa3620d7795b5914cac5f25cc',1,'utl::_1wire_i::Speed()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a2abb8c6344d17269c55ae0cba63ec512',1,'utl::_1wire_i< virtual_tag >::Speed()']]] +]; diff --git a/doc/html/search/enums_6.html b/doc/html/search/enums_6.html new file mode 100644 index 0000000..acd7a54 --- /dev/null +++ b/doc/html/search/enums_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/enums_6.js b/doc/html/search/enums_6.js new file mode 100644 index 0000000..ebac1a8 --- /dev/null +++ b/doc/html/search/enums_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['typekind',['TypeKind',['../namespacetesting_1_1internal2.html#aeb8161b0b3ee503347b0662d7028fd57',1,'testing::internal2']]] +]; diff --git a/doc/html/search/enumvalues_0.html b/doc/html/search/enumvalues_0.html new file mode 100644 index 0000000..03fdfad --- /dev/null +++ b/doc/html/search/enumvalues_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/enumvalues_0.js b/doc/html/search/enumvalues_0.js new file mode 100644 index 0000000..ffb315a --- /dev/null +++ b/doc/html/search/enumvalues_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['ack',['ACK',['../classutl_1_1i2c__i.html#a7e2dde443c6c9bde4a2293beb22950c5a0fc437bc317835cad5faafc12a83fad5',1,'utl::i2c_i::ACK()'],['../classutl_1_1i2c__i_3_01virtual__tag_01_4.html#a260541de452a9a653162b8b109b26c09a0fc437bc317835cad5faafc12a83fad5',1,'utl::i2c_i< virtual_tag >::ACK()']]] +]; diff --git a/doc/html/search/enumvalues_1.html b/doc/html/search/enumvalues_1.html new file mode 100644 index 0000000..abeea56 --- /dev/null +++ b/doc/html/search/enumvalues_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/enumvalues_1.js b/doc/html/search/enumvalues_1.js new file mode 100644 index 0000000..0f79c0b --- /dev/null +++ b/doc/html/search/enumvalues_1.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['beg',['beg',['../classutl_1_1outdev__it.html#ab5cbe3695bf05af30b14b89f8a16594ba8a7a14e955d212cd582610961e7e2769',1,'utl::outdev_it::beg()'],['../classutl_1_1indev__it.html#a2646fbdd38807785263d7d0bbe2b703aa91b4e71d6b69fec0a7d7043ef8902c40',1,'utl::indev_it::beg()'],['../classutl_1_1iodev__it.html#a746eded7eb22cbff5441b41ec0aac30fa7da9a1535ecc02d71b8ea5683b46a42d',1,'utl::iodev_it::beg()']]], + ['br_5fovr',['BR_OVR',['../classutl_1_1__1wire__uart__i.html#a3a2efd9546f298b920011b3c6f933051a4919b1e0ad524b6d6a791ff6c7f96af7',1,'utl::_1wire_uart_i::BR_OVR()'],['../classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html#a3685fa6f0d0c999a8d9527c98b671e51a36ea021ddb9cc702a0d0f4d6be547207',1,'utl::_1wire_uart_i< virtual_tag >::BR_OVR()']]], + ['br_5fovr_5frst',['BR_OVR_RST',['../classutl_1_1__1wire__uart__i.html#a3a2efd9546f298b920011b3c6f933051a6ea7cba754551a703cc94658e151f073',1,'utl::_1wire_uart_i::BR_OVR_RST()'],['../classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html#a3685fa6f0d0c999a8d9527c98b671e51ae0d3dbcffc80c340a90ddea06efad084',1,'utl::_1wire_uart_i< virtual_tag >::BR_OVR_RST()']]], + ['br_5fstd',['BR_STD',['../classutl_1_1__1wire__uart__i.html#a3a2efd9546f298b920011b3c6f933051a7ea7463824fb1b6bd5c31e1976351fb0',1,'utl::_1wire_uart_i::BR_STD()'],['../classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html#a3685fa6f0d0c999a8d9527c98b671e51a9dee26a395424eb26b9b86a8d4752c4c',1,'utl::_1wire_uart_i< virtual_tag >::BR_STD()']]], + ['br_5fstd_5frst',['BR_STD_RST',['../classutl_1_1__1wire__uart__i.html#a3a2efd9546f298b920011b3c6f933051adf1980b5eb0dee83ef1f76ba38671a43',1,'utl::_1wire_uart_i::BR_STD_RST()'],['../classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html#a3685fa6f0d0c999a8d9527c98b671e51ad1db55ca52bab3ce7fc9cebeece09823',1,'utl::_1wire_uart_i< virtual_tag >::BR_STD_RST()']]], + ['byte',['BYTE',['../classutl_1_1i2c__i.html#a7e2dde443c6c9bde4a2293beb22950c5ae409eb2ba6eb6801f52763ae370c350e',1,'utl::i2c_i::BYTE()'],['../classutl_1_1i2c__i_3_01virtual__tag_01_4.html#a260541de452a9a653162b8b109b26c09ae409eb2ba6eb6801f52763ae370c350e',1,'utl::i2c_i< virtual_tag >::BYTE()']]], + ['bytenack',['BYTEnACK',['../classutl_1_1i2c__i.html#a7e2dde443c6c9bde4a2293beb22950c5a01af7e5aa5863a91810dd4e5d0e383ce',1,'utl::i2c_i::BYTEnACK()'],['../classutl_1_1i2c__i_3_01virtual__tag_01_4.html#a260541de452a9a653162b8b109b26c09a01af7e5aa5863a91810dd4e5d0e383ce',1,'utl::i2c_i< virtual_tag >::BYTEnACK()']]] +]; diff --git a/doc/html/search/enumvalues_2.html b/doc/html/search/enumvalues_2.html new file mode 100644 index 0000000..9028998 --- /dev/null +++ b/doc/html/search/enumvalues_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/enumvalues_2.js b/doc/html/search/enumvalues_2.js new file mode 100644 index 0000000..1bb3451 --- /dev/null +++ b/doc/html/search/enumvalues_2.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['cmd_5falarm_5fsearch',['CMD_ALARM_SEARCH',['../classutl_1_1__1wire__i.html#a915f13cf9dbb891eeac73b527a5b9614aab6cb0f1201ca9efeaef8899dab0a637',1,'utl::_1wire_i::CMD_ALARM_SEARCH()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a8b35a329e022c103b9fac49711bfb268a93bb90282121f6cda0ebff1b0444daff',1,'utl::_1wire_i< virtual_tag >::CMD_ALARM_SEARCH()']]], + ['cmd_5fmatch',['CMD_MATCH',['../classutl_1_1__1wire__i.html#a915f13cf9dbb891eeac73b527a5b9614a15131061d5cc629dbd1f2b7c2ff1b79b',1,'utl::_1wire_i::CMD_MATCH()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a8b35a329e022c103b9fac49711bfb268a21d20824a61b5ff144fe098447e16fe0',1,'utl::_1wire_i< virtual_tag >::CMD_MATCH()']]], + ['cmd_5fovdr_5fmatch',['CMD_OVDR_MATCH',['../classutl_1_1__1wire__i.html#a915f13cf9dbb891eeac73b527a5b9614a8aba49759413e945e43c6114f60a6617',1,'utl::_1wire_i::CMD_OVDR_MATCH()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a8b35a329e022c103b9fac49711bfb268afb3bb5319151b723cc9f84cc79fe8243',1,'utl::_1wire_i< virtual_tag >::CMD_OVDR_MATCH()']]], + ['cmd_5fovdr_5fskip',['CMD_OVDR_SKIP',['../classutl_1_1__1wire__i.html#a915f13cf9dbb891eeac73b527a5b9614af450a6ccd821f0c2e769e67b99df4cc7',1,'utl::_1wire_i::CMD_OVDR_SKIP()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a8b35a329e022c103b9fac49711bfb268a6e4b8f1ad455eed7b241df4ae5a82610',1,'utl::_1wire_i< virtual_tag >::CMD_OVDR_SKIP()']]], + ['cmd_5fread_5from',['CMD_READ_ROM',['../classutl_1_1__1wire__i.html#a915f13cf9dbb891eeac73b527a5b9614a07e40db0f36ce4354babe1809f31e20b',1,'utl::_1wire_i::CMD_READ_ROM()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a8b35a329e022c103b9fac49711bfb268a48f3ede59d1cfc441475717e5d7a7524',1,'utl::_1wire_i< virtual_tag >::CMD_READ_ROM()']]], + ['cmd_5fsearch_5from',['CMD_SEARCH_ROM',['../classutl_1_1__1wire__i.html#a915f13cf9dbb891eeac73b527a5b9614a8eb4090d17ac88370c93f3246c146e75',1,'utl::_1wire_i::CMD_SEARCH_ROM()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a8b35a329e022c103b9fac49711bfb268abe017fdaf8516b58894a146229de14de',1,'utl::_1wire_i< virtual_tag >::CMD_SEARCH_ROM()']]], + ['cmd_5fskip',['CMD_SKIP',['../classutl_1_1__1wire__i.html#a915f13cf9dbb891eeac73b527a5b9614a440008f9edb49be5eca22c50302dff44',1,'utl::_1wire_i::CMD_SKIP()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a8b35a329e022c103b9fac49711bfb268acaf6f1b98add4a78888c1a6df8888c29',1,'utl::_1wire_i< virtual_tag >::CMD_SKIP()']]] +]; diff --git a/doc/html/search/enumvalues_3.html b/doc/html/search/enumvalues_3.html new file mode 100644 index 0000000..b152efc --- /dev/null +++ b/doc/html/search/enumvalues_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/enumvalues_3.js b/doc/html/search/enumvalues_3.js new file mode 100644 index 0000000..95d5360 --- /dev/null +++ b/doc/html/search/enumvalues_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['eod',['eod',['../classutl_1_1outdev__it.html#ab5cbe3695bf05af30b14b89f8a16594ba23a4928e4a78f96314ad442f7bb72e18',1,'utl::outdev_it::eod()'],['../classutl_1_1indev__it.html#a2646fbdd38807785263d7d0bbe2b703aaa32e6ce1a7079ee7193a163f085857d5',1,'utl::indev_it::eod()'],['../classutl_1_1iodev__it.html#a746eded7eb22cbff5441b41ec0aac30fa135f130529a4b46b2b2cfd79d681a9c0',1,'utl::iodev_it::eod()']]], + ['eos',['eos',['../classutl_1_1istreamdev__it.html#a343602446a76ddc893b8420a0ec73098a5d43103cca12a6712ebf6d8118f46ec2',1,'utl::istreamdev_it']]] +]; diff --git a/doc/html/search/enumvalues_4.html b/doc/html/search/enumvalues_4.html new file mode 100644 index 0000000..3f50abb --- /dev/null +++ b/doc/html/search/enumvalues_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/enumvalues_4.js b/doc/html/search/enumvalues_4.js new file mode 100644 index 0000000..4da639f --- /dev/null +++ b/doc/html/search/enumvalues_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['high',['HIGH',['../namespaceutl_1_1spi.html#a89e3e1af5df0b6c37239f7e336969f8aab89de3b4b81c4facfac906edf29aec8c',1,'utl::spi::HIGH()'],['../namespaceutl_1_1spi.html#aa49fe33d495226891cef0a870cba59dfab89de3b4b81c4facfac906edf29aec8c',1,'utl::spi::HIGH()']]] +]; diff --git a/doc/html/search/enumvalues_5.html b/doc/html/search/enumvalues_5.html new file mode 100644 index 0000000..b6f20f2 --- /dev/null +++ b/doc/html/search/enumvalues_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/enumvalues_5.js b/doc/html/search/enumvalues_5.js new file mode 100644 index 0000000..ab05721 --- /dev/null +++ b/doc/html/search/enumvalues_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['init',['init',['../classutl_1_1istreamdev__it.html#a343602446a76ddc893b8420a0ec73098acf78c8879b68ea36e14323560fb9376f',1,'utl::istreamdev_it']]], + ['input',['INPUT',['../classutl_1_1i2c__bb__i.html#a4369b434fde250d503bfdc07d5c6a26daa84cc046d48610b05c21fd3670d0c829',1,'utl::i2c_bb_i::INPUT()'],['../classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html#af4bc7eeeb830e49046a1033e9c79db7faa84cc046d48610b05c21fd3670d0c829',1,'utl::i2c_bb_i< virtual_tag >::INPUT()']]] +]; diff --git a/doc/html/search/enumvalues_6.html b/doc/html/search/enumvalues_6.html new file mode 100644 index 0000000..93be129 --- /dev/null +++ b/doc/html/search/enumvalues_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/enumvalues_6.js b/doc/html/search/enumvalues_6.js new file mode 100644 index 0000000..255dd6d --- /dev/null +++ b/doc/html/search/enumvalues_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['low',['LOW',['../namespaceutl_1_1spi.html#a89e3e1af5df0b6c37239f7e336969f8aa41bc94cbd8eebea13ce0491b2ac11b88',1,'utl::spi::LOW()'],['../namespaceutl_1_1spi.html#aa49fe33d495226891cef0a870cba59dfa41bc94cbd8eebea13ce0491b2ac11b88',1,'utl::spi::LOW()']]], + ['lsb_5ffirst',['LSB_First',['../namespaceutl_1_1spi.html#aed6b713381c193c598572ebac0b284cca6db67adee32c3bd4ff03acf3244e1b4b',1,'utl::spi']]] +]; diff --git a/doc/html/search/enumvalues_7.html b/doc/html/search/enumvalues_7.html new file mode 100644 index 0000000..9fefbd6 --- /dev/null +++ b/doc/html/search/enumvalues_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/enumvalues_7.js b/doc/html/search/enumvalues_7.js new file mode 100644 index 0000000..c5f3a9b --- /dev/null +++ b/doc/html/search/enumvalues_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['msb_5ffirst',['MSB_First',['../namespaceutl_1_1spi.html#aed6b713381c193c598572ebac0b284cca47bde70fdcc82c8363d16c7137641b79',1,'utl::spi']]] +]; diff --git a/doc/html/search/enumvalues_8.html b/doc/html/search/enumvalues_8.html new file mode 100644 index 0000000..03f17f8 --- /dev/null +++ b/doc/html/search/enumvalues_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/enumvalues_8.js b/doc/html/search/enumvalues_8.js new file mode 100644 index 0000000..79d2605 --- /dev/null +++ b/doc/html/search/enumvalues_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['output',['OUTPUT',['../classutl_1_1i2c__bb__i.html#a4369b434fde250d503bfdc07d5c6a26da50a87f0d71f7221582dad4bf507a0f34',1,'utl::i2c_bb_i::OUTPUT()'],['../classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html#af4bc7eeeb830e49046a1033e9c79db7fa50a87f0d71f7221582dad4bf507a0f34',1,'utl::i2c_bb_i< virtual_tag >::OUTPUT()']]], + ['ovdr',['OVDR',['../classutl_1_1__1wire__i.html#a56bb736aa3620d7795b5914cac5f25cca1cbf38b04c4249d8ec27d1ec96aaff68',1,'utl::_1wire_i::OVDR()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a2abb8c6344d17269c55ae0cba63ec512a1cbf38b04c4249d8ec27d1ec96aaff68',1,'utl::_1wire_i< virtual_tag >::OVDR()']]] +]; diff --git a/doc/html/search/enumvalues_9.html b/doc/html/search/enumvalues_9.html new file mode 100644 index 0000000..e60fe27 --- /dev/null +++ b/doc/html/search/enumvalues_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/enumvalues_9.js b/doc/html/search/enumvalues_9.js new file mode 100644 index 0000000..a385bf2 --- /dev/null +++ b/doc/html/search/enumvalues_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['std',['STD',['../classutl_1_1__1wire__i.html#a56bb736aa3620d7795b5914cac5f25ccac6ce23be5d350ce18a665427d2d950f7',1,'utl::_1wire_i::STD()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a2abb8c6344d17269c55ae0cba63ec512ac6ce23be5d350ce18a665427d2d950f7',1,'utl::_1wire_i< virtual_tag >::STD()']]] +]; diff --git a/doc/html/search/enumvalues_a.html b/doc/html/search/enumvalues_a.html new file mode 100644 index 0000000..1ec3a2a --- /dev/null +++ b/doc/html/search/enumvalues_a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/enumvalues_a.js b/doc/html/search/enumvalues_a.js new file mode 100644 index 0000000..f6a3bd7 --- /dev/null +++ b/doc/html/search/enumvalues_a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['valid',['valid',['../classutl_1_1istreamdev__it.html#a343602446a76ddc893b8420a0ec73098a46b4593b1438c429ecf7725dee6deac8',1,'utl::istreamdev_it']]] +]; diff --git a/doc/html/search/enumvalues_b.html b/doc/html/search/enumvalues_b.html new file mode 100644 index 0000000..bfc2bf3 --- /dev/null +++ b/doc/html/search/enumvalues_b.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/enumvalues_b.js b/doc/html/search/enumvalues_b.js new file mode 100644 index 0000000..a385bf2 --- /dev/null +++ b/doc/html/search/enumvalues_b.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['std',['STD',['../classutl_1_1__1wire__i.html#a56bb736aa3620d7795b5914cac5f25ccac6ce23be5d350ce18a665427d2d950f7',1,'utl::_1wire_i::STD()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a2abb8c6344d17269c55ae0cba63ec512ac6ce23be5d350ce18a665427d2d950f7',1,'utl::_1wire_i< virtual_tag >::STD()']]] +]; diff --git a/doc/html/search/enumvalues_c.html b/doc/html/search/enumvalues_c.html new file mode 100644 index 0000000..36070b8 --- /dev/null +++ b/doc/html/search/enumvalues_c.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/enumvalues_c.js b/doc/html/search/enumvalues_c.js new file mode 100644 index 0000000..eb9c7cb --- /dev/null +++ b/doc/html/search/enumvalues_c.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['valid',['valid',['../classutl_1_1istreamdev__it.html#a343602446a76ddc893b8420a0ec73098a46b4593b1438c429ecf7725dee6deac8',1,'utl::istreamdev_it']]], + ['value',['value',['../structtesting_1_1internal_1_1_static_assert_type_eq_helper_3_01_t_00_01_t_01_4.html#a70d7e229f58313a1086e819dd09b652da63c475f543e4e977d43c5093dd2b7f3f',1,'testing::internal::StaticAssertTypeEqHelper< T, T >::value()'],['../structtesting_1_1internal_1_1_is_same.html#a4dfd313ccff08905c7c36f990ab52e1ca58968a8c680eff4326a25fab55aa0a5e',1,'testing::internal::IsSame::value()'],['../structtesting_1_1internal_1_1_is_same_3_01_t_00_01_t_01_4.html#a87b00ed787e27293dafab4afac29184ba0bb1c61b491e4e13216a3f9e9cd24c69',1,'testing::internal::IsSame< T, T >::value()']]] +]; diff --git a/doc/html/search/files_0.html b/doc/html/search/files_0.html new file mode 100644 index 0000000..49606c8 --- /dev/null +++ b/doc/html/search/files_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/files_0.js b/doc/html/search/files_0.js new file mode 100644 index 0000000..8a570fe --- /dev/null +++ b/doc/html/search/files_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['_5f1wire_2eh',['_1wire.h',['../__1wire_8h.html',1,'']]], + ['_5f1wire_5fid_2eh',['_1wire_id.h',['../__1wire__id_8h.html',1,'']]], + ['_5f1wire_5fuart_2eh',['_1wire_uart.h',['../__1wire__uart_8h.html',1,'']]] +]; diff --git a/doc/html/search/files_1.html b/doc/html/search/files_1.html new file mode 100644 index 0000000..c887174 --- /dev/null +++ b/doc/html/search/files_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/files_1.js b/doc/html/search/files_1.js new file mode 100644 index 0000000..974b1b5 --- /dev/null +++ b/doc/html/search/files_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['array_2eh',['array.h',['../array_8h.html',1,'']]] +]; diff --git a/doc/html/search/files_2.html b/doc/html/search/files_2.html new file mode 100644 index 0000000..99bdf21 --- /dev/null +++ b/doc/html/search/files_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/files_2.js b/doc/html/search/files_2.js new file mode 100644 index 0000000..05f2c56 --- /dev/null +++ b/doc/html/search/files_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['concepts_2eh',['concepts.h',['../concepts_8h.html',1,'']]], + ['crtp_2eh',['crtp.h',['../crtp_8h.html',1,'']]] +]; diff --git a/doc/html/search/files_3.html b/doc/html/search/files_3.html new file mode 100644 index 0000000..f8e543a --- /dev/null +++ b/doc/html/search/files_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/files_3.js b/doc/html/search/files_3.js new file mode 100644 index 0000000..a16fe69 --- /dev/null +++ b/doc/html/search/files_3.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['defines_2eh',['defines.h',['../defines_8h.html',1,'']]], + ['detection_2eh',['detection.h',['../detection_8h.html',1,'']]], + ['dev_5fiterators_2eh',['dev_iterators.h',['../dev__iterators_8h.html',1,'']]] +]; diff --git a/doc/html/search/files_4.html b/doc/html/search/files_4.html new file mode 100644 index 0000000..2ebb46c --- /dev/null +++ b/doc/html/search/files_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/files_4.js b/doc/html/search/files_4.js new file mode 100644 index 0000000..fb08c0c --- /dev/null +++ b/doc/html/search/files_4.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['i2c_2eh',['i2c.h',['../i2c_8h.html',1,'']]], + ['i2c_5fbb_2eh',['i2c_bb.h',['../i2c__bb_8h.html',1,'']]], + ['id_2eh',['id.h',['../id_8h.html',1,'']]], + ['idx_5fdev_2eh',['idx_dev.h',['../idx__dev_8h.html',1,'']]], + ['impl_2eh',['impl.h',['../impl_8h.html',1,'']]], + ['in_5fdev_2eh',['in_dev.h',['../in__dev_8h.html',1,'']]], + ['inbuf_5fdev_2eh',['inbuf_dev.h',['../inbuf__dev_8h.html',1,'']]], + ['integral_2eh',['integral.h',['../integral_8h.html',1,'']]], + ['invoke_2eh',['invoke.h',['../meta_2invoke_8h.html',1,'(Global Namespace)'],['../utility_2invoke_8h.html',1,'(Global Namespace)']]], + ['iterators_2eh',['iterators.h',['../iterators_8h.html',1,'']]] +]; diff --git a/doc/html/search/files_5.html b/doc/html/search/files_5.html new file mode 100644 index 0000000..268b7eb --- /dev/null +++ b/doc/html/search/files_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/files_5.js b/doc/html/search/files_5.js new file mode 100644 index 0000000..b45b126 --- /dev/null +++ b/doc/html/search/files_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['meta_2eh',['meta.h',['../meta_8h.html',1,'']]] +]; diff --git a/doc/html/search/files_6.html b/doc/html/search/files_6.html new file mode 100644 index 0000000..98fc666 --- /dev/null +++ b/doc/html/search/files_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/files_6.js b/doc/html/search/files_6.js new file mode 100644 index 0000000..0d5270e --- /dev/null +++ b/doc/html/search/files_6.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['operations_2eh',['operations.h',['../operations_8h.html',1,'']]], + ['ostream_5fdev_2eh',['ostream_dev.h',['../ostream__dev_8h.html',1,'']]], + ['out_5fdev_2eh',['out_dev.h',['../out__dev_8h.html',1,'']]] +]; diff --git a/doc/html/search/files_7.html b/doc/html/search/files_7.html new file mode 100644 index 0000000..49507de --- /dev/null +++ b/doc/html/search/files_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/files_7.js b/doc/html/search/files_7.js new file mode 100644 index 0000000..66a27ec --- /dev/null +++ b/doc/html/search/files_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['readme_2emd',['README.md',['../_r_e_a_d_m_e_8md.html',1,'']]] +]; diff --git a/doc/html/search/files_8.html b/doc/html/search/files_8.html new file mode 100644 index 0000000..12c6630 --- /dev/null +++ b/doc/html/search/files_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/files_8.js b/doc/html/search/files_8.js new file mode 100644 index 0000000..5764139 --- /dev/null +++ b/doc/html/search/files_8.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['selection_2eh',['selection.h',['../selection_8h.html',1,'']]], + ['sfinae_2eh',['sfinae.h',['../sfinae_8h.html',1,'']]], + ['spi_2eh',['spi.h',['../spi_8h.html',1,'']]], + ['spi_5fbb_2eh',['spi_bb.h',['../spi__bb_8h.html',1,'']]], + ['stl_2eh',['stl.h',['../stl_8h.html',1,'']]] +]; diff --git a/doc/html/search/files_9.html b/doc/html/search/files_9.html new file mode 100644 index 0000000..cabcae2 --- /dev/null +++ b/doc/html/search/files_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/files_9.js b/doc/html/search/files_9.js new file mode 100644 index 0000000..867d26e --- /dev/null +++ b/doc/html/search/files_9.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['typelist_2eh',['typelist.h',['../typelist_8h.html',1,'']]], + ['types_2eh',['types.h',['../types_8h.html',1,'']]] +]; diff --git a/doc/html/search/files_a.html b/doc/html/search/files_a.html new file mode 100644 index 0000000..f740221 --- /dev/null +++ b/doc/html/search/files_a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/files_a.js b/doc/html/search/files_a.js new file mode 100644 index 0000000..5a72f13 --- /dev/null +++ b/doc/html/search/files_a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['useif_2eh',['useif.h',['../useif_8h.html',1,'']]] +]; diff --git a/doc/html/search/files_b.html b/doc/html/search/files_b.html new file mode 100644 index 0000000..7be1003 --- /dev/null +++ b/doc/html/search/files_b.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/files_b.js b/doc/html/search/files_b.js new file mode 100644 index 0000000..566db08 --- /dev/null +++ b/doc/html/search/files_b.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['version_2eh',['version.h',['../version_8h.html',1,'']]] +]; diff --git a/doc/html/search/files_c.html b/doc/html/search/files_c.html new file mode 100644 index 0000000..c769b49 --- /dev/null +++ b/doc/html/search/files_c.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/files_c.js b/doc/html/search/files_c.js new file mode 100644 index 0000000..566db08 --- /dev/null +++ b/doc/html/search/files_c.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['version_2eh',['version.h',['../version_8h.html',1,'']]] +]; diff --git a/doc/html/search/functions_0.html b/doc/html/search/functions_0.html new file mode 100644 index 0000000..0539c8c --- /dev/null +++ b/doc/html/search/functions_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/functions_0.js b/doc/html/search/functions_0.js new file mode 100644 index 0000000..e894e5d --- /dev/null +++ b/doc/html/search/functions_0.js @@ -0,0 +1,22 @@ +var searchData= +[ + ['_5f1wire_5fi',['_1wire_i',['../classutl_1_1__1wire__i.html#a4839577d00fdcefb51ac8d4cd91f0f1a',1,'utl::_1wire_i::_1wire_i()=default'],['../classutl_1_1__1wire__i.html#adc539ccd0e41f8f830bd96c362094c14',1,'utl::_1wire_i::_1wire_i(const _1wire_i &)=delete'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a21dfe2ba7060c3a8617ced1f841bddaf',1,'utl::_1wire_i< virtual_tag >::_1wire_i()=default'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a8f60bc0402c885a3409ba0d53239510f',1,'utl::_1wire_i< virtual_tag >::_1wire_i(const type &)=delete']]], + ['_5f1wire_5fid_5ft',['_1wire_id_t',['../classutl_1_1__1wire__id__t.html#a813f69adfff7bcdcba6b07bf52e3546e',1,'utl::_1wire_id_t::_1wire_id_t() noexcept'],['../classutl_1_1__1wire__id__t.html#a042aa65cc13c6040f795c8198f5afc23',1,'utl::_1wire_id_t::_1wire_id_t(const _1wire_id_t &id) noexcept']]], + ['_5f1wire_5fuart_5fi',['_1wire_uart_i',['../classutl_1_1__1wire__uart__i.html#ae14ed1ce068d5601c5623c410a0dbc0c',1,'utl::_1wire_uart_i::_1wire_uart_i()'],['../classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html#a31bc4dbae704b77ab95b491605b6fa2e',1,'utl::_1wire_uart_i< virtual_tag >::_1wire_uart_i()']]], + ['_5fclock',['_clock',['../classutl_1_1i2c__i.html#aefdea61282b9282ae10384951bb4ea51',1,'utl::i2c_i::_clock() const'],['../classutl_1_1i2c__i.html#afa0b1552f8fc7c971456fab1ad01242d',1,'utl::i2c_i::_clock(uint32_t c)'],['../classutl_1_1i2c__i_3_01virtual__tag_01_4.html#a1330a9b26f8e0610c7453e367d054916',1,'utl::i2c_i< virtual_tag >::_clock() const =0'],['../classutl_1_1i2c__i_3_01virtual__tag_01_4.html#aa97b4559550430d59b33474fd504f2b8',1,'utl::i2c_i< virtual_tag >::_clock(uint32_t)=0'],['../classutl_1_1i2c__bb__i.html#a1f491d6ccadce71fa6cc59eebc74e82f',1,'utl::i2c_bb_i::_clock() const'],['../classutl_1_1i2c__bb__i.html#aef4db6e89447b2f0921df5b291b86232',1,'utl::i2c_bb_i::_clock(uint32_t c)'],['../classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html#a0e05ef5f042a1642c9920dd5d7da34b4',1,'utl::i2c_bb_i< virtual_tag >::_clock() const final'],['../classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html#a47e0f23aa64714a0a95c579994a84fcc',1,'utl::i2c_bb_i< virtual_tag >::_clock(uint32_t c) final'],['../classutl_1_1spi__i.html#a68a21ac9727eed3802ce7d1181ac4f8c',1,'utl::spi_i::_clock() const'],['../classutl_1_1spi__i.html#af0a9bfc5d02ccd2bfbe8044132884578',1,'utl::spi_i::_clock(uint32_t c)'],['../classutl_1_1spi__i_3_01virtual__tag_01_4.html#a22c698e49599e92b8cb81501ab02be29',1,'utl::spi_i< virtual_tag >::_clock() const =0'],['../classutl_1_1spi__i_3_01virtual__tag_01_4.html#a2d4ffbfc2768077a6046f64288db83b4',1,'utl::spi_i< virtual_tag >::_clock(uint32_t)=0'],['../classutl_1_1spi__bb__i.html#a4338d3dc65ebe3aff1ec08d0413b3440',1,'utl::spi_bb_i::_clock() const'],['../classutl_1_1spi__bb__i.html#a90960d777886658afd42243743b3f61a',1,'utl::spi_bb_i::_clock(uint32_t c)'],['../classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#a255b1bf9e7f74140a20e4a3d8b26c181',1,'utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::_clock() const final'],['../classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#ac69aac0298266d8bb8b912f763013433',1,'utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::_clock(uint32_t c) final']]], + ['_5fcrtp_5fimpl',['_CRTP_IMPL',['../classutl_1_1__1wire__i.html#ad8858b769d4cd8da78e1cb4669992da2',1,'utl::_1wire_i::_CRTP_IMPL()'],['../classutl_1_1__1wire__uart__i.html#a95ab6c8cc60417090b2cc4e5afc62e77',1,'utl::_1wire_uart_i::_CRTP_IMPL()'],['../classutl_1_1i2c__i.html#a054b6bc43f22e14d4e9feb0772f7ada5',1,'utl::i2c_i::_CRTP_IMPL()'],['../classutl_1_1i2c__bb__i.html#a5c9f28c59f87ebb8a937abb039e11150',1,'utl::i2c_bb_i::_CRTP_IMPL()'],['../classutl_1_1spi__i.html#adfab771b0e399b9f482e42aaa5e9db11',1,'utl::spi_i::_CRTP_IMPL()'],['../classutl_1_1spi__bb__i.html#a33b6ef2f4c26b16ee4e28425ab20e852',1,'utl::spi_bb_i::_CRTP_IMPL()'],['../classutl_1_1idx__dev.html#a814222014cab41a11fa8b2040e50310d',1,'utl::idx_dev::_CRTP_IMPL()'],['../classutl_1_1in__dev.html#a370913d250e982328560b034adf227c0',1,'utl::in_dev::_CRTP_IMPL()'],['../classutl_1_1inbuf__dev.html#a6fe2f35813f2b4e94d8d21a4403c8221',1,'utl::inbuf_dev::_CRTP_IMPL()'],['../classutl_1_1ostream__dev.html#af993acec883f07fcd4ac9905eaa6f127',1,'utl::ostream_dev::_CRTP_IMPL()'],['../classutl_1_1out__dev.html#aad8c005ab9627877ea38997cdf5f07dc',1,'utl::out_dev::_CRTP_IMPL()']]], + ['_5ffirst',['_first',['../namespaceutl_1_1__1wire__i__det.html#a237719ffa105f988cb175d6720712a4a',1,'utl::_1wire_i_det']]], + ['_5fget',['_get',['../classutl_1_1istreamdev__it.html#a7113ff596929f1f7346379e9918693cf',1,'utl::istreamdev_it']]], + ['_5fmatch',['_match',['../namespaceutl_1_1__1wire__i__det.html#a1b07e623a39ce82f1514846169f3a954',1,'utl::_1wire_i_det']]], + ['_5fmatch_5fn_5fovdr',['_match_n_ovdr',['../namespaceutl_1_1__1wire__i__det.html#a1e14f734d5e232c914be6ea97982aa40',1,'utl::_1wire_i_det']]], + ['_5fnext',['_next',['../namespaceutl_1_1__1wire__i__det.html#a1f7b692a40769ebe59343613b147e01d',1,'utl::_1wire_i_det']]], + ['_5freset',['_reset',['../classutl_1_1__1wire__i.html#a39d0afaf58820696acad93cf98a6b321',1,'utl::_1wire_i::_reset()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#ac4d99e65e5b307a85fe5e3c68cc46367',1,'utl::_1wire_i< virtual_tag >::_reset()'],['../classutl_1_1__1wire__uart__i.html#ad40f5180bddd8cd5a55e77f2bfa66ac1',1,'utl::_1wire_uart_i::_reset()'],['../classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html#a89c68d8e05df326e3c2b79c454b188af',1,'utl::_1wire_uart_i< virtual_tag >::_reset()']]], + ['_5frx_5fdata',['_rx_data',['../classutl_1_1i2c__i.html#a03a25367cdec7ceb76f8de9d5b3145fb',1,'utl::i2c_i::_rx_data()'],['../classutl_1_1i2c__i_3_01virtual__tag_01_4.html#a36b41f12c6dcc618ca1a95d079fcc077',1,'utl::i2c_i< virtual_tag >::_rx_data()'],['../classutl_1_1i2c__bb__i.html#a3a459ded18fe55460ae438e312c22110',1,'utl::i2c_bb_i::_rx_data()'],['../classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html#abb3eda6549482ff538f2b536d67752ed',1,'utl::i2c_bb_i< virtual_tag >::_rx_data()']]], + ['_5fskip',['_skip',['../namespaceutl_1_1__1wire__i__det.html#a9ea80f4ef2422a7fd71788c42b228053',1,'utl::_1wire_i_det']]], + ['_5fskip_5fn_5fovdr',['_skip_n_ovdr',['../namespaceutl_1_1__1wire__i__det.html#ace224a4d329166bfd9f3448e492baf2b',1,'utl::_1wire_i_det']]], + ['_5fstart',['_start',['../classutl_1_1i2c__i.html#af060d656c685c1ab5dd6981c5c88b26d',1,'utl::i2c_i::_start()'],['../classutl_1_1i2c__i_3_01virtual__tag_01_4.html#adbe5ffa6865fbee06699674d8e16bc30',1,'utl::i2c_i< virtual_tag >::_start()'],['../classutl_1_1i2c__bb__i.html#a2f4df606609ef7465109990d9fc0f1da',1,'utl::i2c_bb_i::_start()'],['../classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html#acf1d49b23e9c7b1c42cd43296b8b171c',1,'utl::i2c_bb_i< virtual_tag >::_start()']]], + ['_5fstop',['_stop',['../classutl_1_1i2c__i.html#aa6202c6c7c1282071ae962fa6bb0f195',1,'utl::i2c_i::_stop()'],['../classutl_1_1i2c__i_3_01virtual__tag_01_4.html#a588fd9b206af6b3884b957ef449a65ec',1,'utl::i2c_i< virtual_tag >::_stop()'],['../classutl_1_1i2c__bb__i.html#ade9235a9d8ccfd7233494631d66ba07e',1,'utl::i2c_bb_i::_stop()'],['../classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html#acee317f97c201b10680c89ed1a64f694',1,'utl::i2c_bb_i< virtual_tag >::_stop()']]], + ['_5ftouch',['_touch',['../namespaceutl_1_1__1wire__i__det.html#a85a3a19778edb037f6341f37135a5494',1,'utl::_1wire_i_det']]], + ['_5ftx_5fdata',['_tx_data',['../classutl_1_1i2c__i.html#ae2b164d2c085d5331b627ba711bbb2c9',1,'utl::i2c_i::_tx_data()'],['../classutl_1_1i2c__i_3_01virtual__tag_01_4.html#ad180436ec10c84568d6d73fa945efb64',1,'utl::i2c_i< virtual_tag >::_tx_data()'],['../classutl_1_1i2c__bb__i.html#a085e38e545049ac64cd745b08e0be18f',1,'utl::i2c_bb_i::_tx_data()'],['../classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html#abbc42b60004046048a2ac6fd312188a6',1,'utl::i2c_bb_i< virtual_tag >::_tx_data()'],['../classutl_1_1spi__i.html#acf3ffd9c79d4cdeac100cf3273120689',1,'utl::spi_i::_tx_data()'],['../classutl_1_1spi__i_3_01virtual__tag_01_4.html#a695bdae103b072a03e7ffc0fda2f5971',1,'utl::spi_i< virtual_tag >::_tx_data()'],['../classutl_1_1spi__bb__i.html#a7431ab56033d58e34ee847d825c99658',1,'utl::spi_bb_i::_tx_data()'],['../classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#a2f16bf0d9f6e0eb3045923b416e57e0c',1,'utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::_tx_data()']]], + ['_5ftx_5fdata_5fimpl',['_tx_data_impl',['../classutl_1_1spi__bb__i.html#a9010a066edb4cfa4c549174c87eaf368',1,'utl::spi_bb_i::_tx_data_impl(byte_t out)'],['../classutl_1_1spi__bb__i.html#a8e00f788f8ef1a31dfd3b1ca130aa16d',1,'utl::spi_bb_i::_tx_data_impl(byte_t out)'],['../classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#a5875448dd9fdff7f8f59ef84efdb69b1',1,'utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::_tx_data_impl(byte_t out)'],['../classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#ad11610099072289c1f71dd7aab684905',1,'utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::_tx_data_impl(byte_t out)']]] +]; diff --git a/doc/html/search/functions_1.html b/doc/html/search/functions_1.html new file mode 100644 index 0000000..4878b3d --- /dev/null +++ b/doc/html/search/functions_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/functions_1.js b/doc/html/search/functions_1.js new file mode 100644 index 0000000..319746d --- /dev/null +++ b/doc/html/search/functions_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['at',['at',['../structutl_1_1array.html#aa7ebc09a296077f0ee23919c92138801',1,'utl::array::at(size_type n) noexcept'],['../structutl_1_1array.html#a5525bc148cd57fdc41380593a9732ce7',1,'utl::array::at(size_type n) const noexcept'],['../structutl_1_1id__t.html#abb17fc36dd256093e265985e68e25f32',1,'utl::id_t::at(size_type n) noexcept'],['../structutl_1_1id__t.html#aa965355792d724f40260bce7d855aae7',1,'utl::id_t::at(size_type n) const noexcept']]] +]; diff --git a/doc/html/search/functions_10.html b/doc/html/search/functions_10.html new file mode 100644 index 0000000..6f6fbae --- /dev/null +++ b/doc/html/search/functions_10.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/functions_10.js b/doc/html/search/functions_10.js new file mode 100644 index 0000000..e8f0f2c --- /dev/null +++ b/doc/html/search/functions_10.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['uart_5fbr',['UART_BR',['../classutl_1_1__1wire__uart__i.html#a4379f74ee196e6b8422a74143642004f',1,'utl::_1wire_uart_i::UART_BR()'],['../classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html#ad3638c4688c1cef14a7f4bd316104931',1,'utl::_1wire_uart_i< virtual_tag >::UART_BR()']]], + ['uart_5frw',['UART_RW',['../classutl_1_1__1wire__uart__i.html#a02e0069f537ae7e8cccdf8563537952a',1,'utl::_1wire_uart_i::UART_RW()'],['../classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html#a64cafa18986604d0693635e41bdee6aa',1,'utl::_1wire_uart_i< virtual_tag >::UART_RW()']]] +]; diff --git a/doc/html/search/functions_11.html b/doc/html/search/functions_11.html new file mode 100644 index 0000000..dd88d8b --- /dev/null +++ b/doc/html/search/functions_11.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/functions_11.js b/doc/html/search/functions_11.js new file mode 100644 index 0000000..2e37e3f --- /dev/null +++ b/doc/html/search/functions_11.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['value',['value',['../classutl_1_1istreamdev__it.html#a8e5b98093c55cb57e3179ff9025389fb',1,'utl::istreamdev_it']]], + ['value_5ftype_5ft',['value_type_t',['../structutl_1_1iodev__it_1_1value__type__t.html#a337f27b0b4f79742a0076b203bc547ed',1,'utl::iodev_it::value_type_t']]] +]; diff --git a/doc/html/search/functions_12.html b/doc/html/search/functions_12.html new file mode 100644 index 0000000..7093d19 --- /dev/null +++ b/doc/html/search/functions_12.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/functions_12.js b/doc/html/search/functions_12.js new file mode 100644 index 0000000..a161f02 --- /dev/null +++ b/doc/html/search/functions_12.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['_7e_5f1wire_5fi',['~_1wire_i',['../classutl_1_1__1wire__i.html#afb146fda251b25c9fc812718f6c5b3e1',1,'utl::_1wire_i::~_1wire_i()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#af1e2fea1b65ea57f4331c9dbc43e4bbf',1,'utl::_1wire_i< virtual_tag >::~_1wire_i()']]], + ['_7e_5f1wire_5fuart_5fi',['~_1wire_uart_i',['../classutl_1_1__1wire__uart__i.html#afe64da15b5eaf61cd54f357f3ea8b3ea',1,'utl::_1wire_uart_i::~_1wire_uart_i()'],['../classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html#ad66d096eca084dec305a9bc85bc5e588',1,'utl::_1wire_uart_i< virtual_tag >::~_1wire_uart_i()']]], + ['_7ei2c_5fbb_5fi',['~i2c_bb_i',['../classutl_1_1i2c__bb__i.html#ac2d9b97778a5dd57eb5e6425b4b0833c',1,'utl::i2c_bb_i::~i2c_bb_i()'],['../classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html#afcb5292af5af4c90f58945dab756b2ce',1,'utl::i2c_bb_i< virtual_tag >::~i2c_bb_i()']]], + ['_7ei2c_5fi',['~i2c_i',['../classutl_1_1i2c__i.html#a6a07d19db8974ad606031b60a6079957',1,'utl::i2c_i::~i2c_i()'],['../classutl_1_1i2c__i_3_01virtual__tag_01_4.html#a9190c053fb15634b5aab672f17d9544f',1,'utl::i2c_i< virtual_tag >::~i2c_i()']]], + ['_7eidx_5fdev',['~idx_dev',['../classutl_1_1idx__dev.html#ac7fc9b499b2c4b73769b68d10181b08b',1,'utl::idx_dev::~idx_dev()'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a67f3694debf7a8e563ac7d56c1771dfc',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::~idx_dev()']]], + ['_7ein_5fdev',['~in_dev',['../classutl_1_1in__dev.html#a2caa0f47e6132f051bb54b1acea37fc6',1,'utl::in_dev::~in_dev()'],['../classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a9cd04a9c2656fb2a92e3db35c401b6eb',1,'utl::in_dev< virtual_tag, data_t, streamsize >::~in_dev()']]], + ['_7einbuf_5fdev',['~inbuf_dev',['../classutl_1_1inbuf__dev.html#a55763f1c3ba5610404df70bda1abe75b',1,'utl::inbuf_dev::~inbuf_dev()'],['../classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a29b35825f917570edc31c0cd42090c90',1,'utl::inbuf_dev< virtual_tag, data_t, streamsize >::~inbuf_dev()']]], + ['_7enat_5f',['~nat_',['../structutl_1_1meta_1_1nat__.html#a133e363072f900269933f6c163b294f8',1,'utl::meta::nat_']]], + ['_7eostream_5fdev',['~ostream_dev',['../classutl_1_1ostream__dev.html#ad0358c1b879818118e745da164d99998',1,'utl::ostream_dev::~ostream_dev()'],['../classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#ac653594be9325b740b6ded465de6d639',1,'utl::ostream_dev< virtual_tag, data_t >::~ostream_dev()']]], + ['_7eout_5fdev',['~out_dev',['../classutl_1_1out__dev.html#a0c04af11ec0f3f9954399d22069e314d',1,'utl::out_dev::~out_dev()'],['../classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a5dce94d088c9f6cec3c318e0a0d1ee56',1,'utl::out_dev< virtual_tag, data_t, streamsize >::~out_dev()']]], + ['_7espi_5fbb_5fi',['~spi_bb_i',['../classutl_1_1spi__bb__i.html#aeac57567cb7db5ebb73bdd8e1f00cb82',1,'utl::spi_bb_i::~spi_bb_i()'],['../classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#a0ee4c601e63ec7097df95347f631c1fb',1,'utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::~spi_bb_i()']]], + ['_7espi_5fi',['~spi_i',['../classutl_1_1spi__i.html#ae77cb8be7d648a62a1ad252d829eccfb',1,'utl::spi_i::~spi_i()'],['../classutl_1_1spi__i_3_01virtual__tag_01_4.html#a7149ebd15799723fe3d2a97566608a19',1,'utl::spi_i< virtual_tag >::~spi_i()']]] +]; diff --git a/doc/html/search/functions_13.html b/doc/html/search/functions_13.html new file mode 100644 index 0000000..051a1eb --- /dev/null +++ b/doc/html/search/functions_13.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/functions_13.js b/doc/html/search/functions_13.js new file mode 100644 index 0000000..2ec93c2 --- /dev/null +++ b/doc/html/search/functions_13.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['universalprint',['UniversalPrint',['../namespacetesting_1_1internal.html#a30708fa2bacf11895b03bdb21eb72309',1,'testing::internal']]], + ['universalprintarray',['UniversalPrintArray',['../namespacetesting_1_1internal.html#a070107e7a8205ad6ec4d538d52b15b38',1,'testing::internal::UniversalPrintArray(const char *begin, size_t len, ostream *os)'],['../namespacetesting_1_1internal.html#a52394019018eb5079f9f1bcca23dcd60',1,'testing::internal::UniversalPrintArray(const wchar_t *begin, size_t len, ostream *os)'],['../namespacetesting_1_1internal.html#ad79d71c3110f8eb24ab352d68f29436a',1,'testing::internal::UniversalPrintArray(const T *begin, size_t len, ::std::ostream *os)'],['../namespacetesting_1_1internal.html#a72c997dbd2c562110b2cb56c359decfa',1,'testing::internal::UniversalPrintArray(const char *begin, size_t len, ::std::ostream *os)'],['../namespacetesting_1_1internal.html#ae31e146c35fd75afc6a9cc73ae2692d1',1,'testing::internal::UniversalPrintArray(const wchar_t *begin, size_t len, ::std::ostream *os)']]], + ['universalterseprint',['UniversalTersePrint',['../namespacetesting_1_1internal.html#afa92f5a284929dc3723e654a25feb7b9',1,'testing::internal']]], + ['universalterseprinttuplefieldstostrings',['UniversalTersePrintTupleFieldsToStrings',['../namespacetesting_1_1internal.html#a7e60d1478b074801c766eeee9be6c772',1,'testing::internal']]], + ['unlock',['Unlock',['../classtesting_1_1internal_1_1_mutex.html#a315188055de1be98884519ad84eff2e6',1,'testing::internal::Mutex']]] +]; diff --git a/doc/html/search/functions_14.html b/doc/html/search/functions_14.html new file mode 100644 index 0000000..d5fdbda --- /dev/null +++ b/doc/html/search/functions_14.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/functions_14.js b/doc/html/search/functions_14.js new file mode 100644 index 0000000..11dc81a --- /dev/null +++ b/doc/html/search/functions_14.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['value',['value',['../classutl_1_1istreamdev__it.html#a8e5b98093c55cb57e3179ff9025389fb',1,'utl::istreamdev_it::value()'],['../classtesting_1_1_test_property.html#ad423a07af33c88b0c9ed33ee74815a63',1,'testing::TestProperty::value()']]], + ['value_5fparam',['value_param',['../classtesting_1_1_test_info.html#abdf2c6cfcf4819e725816c64e1c1fc24',1,'testing::TestInfo']]], + ['valuearray',['ValueArray',['../classtesting_1_1internal_1_1_value_array.html#acd7cd6a969a7e95152eac1787c42c9ed',1,'testing::internal::ValueArray']]], + ['values',['Values',['../namespacetesting.html#a374d4e5fbb4c938058fbe81d4c7ff6a6',1,'testing']]], + ['valuesin',['ValuesIn',['../namespacetesting.html#aa67d0c8470c5f69fcfcacc9e775fa982',1,'testing::ValuesIn(const Container &container)'],['../namespacetesting.html#a96240380ae4d3b4855d07de3b84fb336',1,'testing::ValuesIn(ForwardIterator begin, ForwardIterator end)'],['../namespacetesting.html#a0b9ea6594ac06ad5d9eba2511ffa0fb7',1,'testing::ValuesIn(const T(&array)[N])']]], + ['valuesiniteratorrangegenerator',['ValuesInIteratorRangeGenerator',['../classtesting_1_1internal_1_1_values_in_iterator_range_generator.html#a8b30f6028bc5739bbd7c24b0f0e409f7',1,'testing::internal::ValuesInIteratorRangeGenerator']]] +]; diff --git a/doc/html/search/functions_15.html b/doc/html/search/functions_15.html new file mode 100644 index 0000000..546d13e --- /dev/null +++ b/doc/html/search/functions_15.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/functions_15.js b/doc/html/search/functions_15.js new file mode 100644 index 0000000..4392f63 --- /dev/null +++ b/doc/html/search/functions_15.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['write',['Write',['../namespacetesting_1_1internal_1_1posix.html#af4acf9f78d55f815a18b43786511abef',1,'testing::internal::posix']]] +]; diff --git a/doc/html/search/functions_16.html b/doc/html/search/functions_16.html new file mode 100644 index 0000000..b3e771a --- /dev/null +++ b/doc/html/search/functions_16.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/functions_16.js b/doc/html/search/functions_16.js new file mode 100644 index 0000000..163c420 --- /dev/null +++ b/doc/html/search/functions_16.js @@ -0,0 +1,46 @@ +var searchData= +[ + ['_7e_5f1wire_5fi',['~_1wire_i',['../classutl_1_1__1wire__i.html#afb146fda251b25c9fc812718f6c5b3e1',1,'utl::_1wire_i::~_1wire_i()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#af1e2fea1b65ea57f4331c9dbc43e4bbf',1,'utl::_1wire_i< virtual_tag >::~_1wire_i()']]], + ['_7e_5f1wire_5fuart_5fi',['~_1wire_uart_i',['../classutl_1_1__1wire__uart__i.html#afe64da15b5eaf61cd54f357f3ea8b3ea',1,'utl::_1wire_uart_i::~_1wire_uart_i()'],['../classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html#ad66d096eca084dec305a9bc85bc5e588',1,'utl::_1wire_uart_i< virtual_tag >::~_1wire_uart_i()']]], + ['_7easserthelper',['~AssertHelper',['../classtesting_1_1internal_1_1_assert_helper.html#a51c640785d4ed4a0155cc9aa857d8931',1,'testing::internal::AssertHelper']]], + ['_7ecapturedstream',['~CapturedStream',['../classtesting_1_1internal_1_1_captured_stream.html#af215c7a9326cb5ca61e6b7ca8231dcf1',1,'testing::internal::CapturedStream']]], + ['_7ecartesianproductgenerator10',['~CartesianProductGenerator10',['../classtesting_1_1internal_1_1_cartesian_product_generator10.html#a2bee6d271df046f7660c85e2b2d305a5',1,'testing::internal::CartesianProductGenerator10']]], + ['_7ecartesianproductgenerator2',['~CartesianProductGenerator2',['../classtesting_1_1internal_1_1_cartesian_product_generator2.html#a4359f80cc1888d4a18d2e0a6865b920d',1,'testing::internal::CartesianProductGenerator2']]], + ['_7ecartesianproductgenerator3',['~CartesianProductGenerator3',['../classtesting_1_1internal_1_1_cartesian_product_generator3.html#a230b2ec353e917e1afeb6aae5668e19e',1,'testing::internal::CartesianProductGenerator3']]], + ['_7ecartesianproductgenerator4',['~CartesianProductGenerator4',['../classtesting_1_1internal_1_1_cartesian_product_generator4.html#a75d7d9ee7bae873295df5d4dbec6a165',1,'testing::internal::CartesianProductGenerator4']]], + ['_7ecartesianproductgenerator5',['~CartesianProductGenerator5',['../classtesting_1_1internal_1_1_cartesian_product_generator5.html#a13453a5614cda6c4d4b09011daa37800',1,'testing::internal::CartesianProductGenerator5']]], + ['_7ecartesianproductgenerator6',['~CartesianProductGenerator6',['../classtesting_1_1internal_1_1_cartesian_product_generator6.html#a6d59c2e75fd2a0a042ee102e08956f7f',1,'testing::internal::CartesianProductGenerator6']]], + ['_7ecartesianproductgenerator7',['~CartesianProductGenerator7',['../classtesting_1_1internal_1_1_cartesian_product_generator7.html#a242bc369feb56ff096b906c833403077',1,'testing::internal::CartesianProductGenerator7']]], + ['_7ecartesianproductgenerator8',['~CartesianProductGenerator8',['../classtesting_1_1internal_1_1_cartesian_product_generator8.html#ab5e728b287d0d520e7281799a67189c7',1,'testing::internal::CartesianProductGenerator8']]], + ['_7ecartesianproductgenerator9',['~CartesianProductGenerator9',['../classtesting_1_1internal_1_1_cartesian_product_generator9.html#ab1b886bfb8c9c2c575ee4f9da61e3180',1,'testing::internal::CartesianProductGenerator9']]], + ['_7eenvironment',['~Environment',['../classtesting_1_1_environment.html#a0e41c320362576d752cd1f44cabd57d4',1,'testing::Environment']]], + ['_7egtestlog',['~GTestLog',['../classtesting_1_1internal_1_1_g_test_log.html#a978a099703bbaa0f380216e8d7ee03d3',1,'testing::internal::GTestLog']]], + ['_7ei2c_5fbb_5fi',['~i2c_bb_i',['../classutl_1_1i2c__bb__i.html#ac2d9b97778a5dd57eb5e6425b4b0833c',1,'utl::i2c_bb_i::~i2c_bb_i()'],['../classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html#afcb5292af5af4c90f58945dab756b2ce',1,'utl::i2c_bb_i< virtual_tag >::~i2c_bb_i()']]], + ['_7ei2c_5fi',['~i2c_i',['../classutl_1_1i2c__i.html#a6a07d19db8974ad606031b60a6079957',1,'utl::i2c_i::~i2c_i()'],['../classutl_1_1i2c__i_3_01virtual__tag_01_4.html#a9190c053fb15634b5aab672f17d9544f',1,'utl::i2c_i< virtual_tag >::~i2c_i()']]], + ['_7eidx_5fdev',['~idx_dev',['../classutl_1_1idx__dev.html#ac7fc9b499b2c4b73769b68d10181b08b',1,'utl::idx_dev::~idx_dev()'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a67f3694debf7a8e563ac7d56c1771dfc',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::~idx_dev()']]], + ['_7ein_5fdev',['~in_dev',['../classutl_1_1in__dev.html#a2caa0f47e6132f051bb54b1acea37fc6',1,'utl::in_dev::~in_dev()'],['../classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a9cd04a9c2656fb2a92e3db35c401b6eb',1,'utl::in_dev< virtual_tag, data_t, streamsize >::~in_dev()']]], + ['_7einbuf_5fdev',['~inbuf_dev',['../classutl_1_1inbuf__dev.html#a55763f1c3ba5610404df70bda1abe75b',1,'utl::inbuf_dev::~inbuf_dev()'],['../classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a29b35825f917570edc31c0cd42090c90',1,'utl::inbuf_dev< virtual_tag, data_t, streamsize >::~inbuf_dev()']]], + ['_7enat_5f',['~nat_',['../structutl_1_1meta_1_1nat__.html#a133e363072f900269933f6c163b294f8',1,'utl::meta::nat_']]], + ['_7enativearray',['~NativeArray',['../classtesting_1_1internal_1_1_native_array.html#a55ab5948d473a487303dcf6e02ad1f60',1,'testing::internal::NativeArray']]], + ['_7eostream_5fdev',['~ostream_dev',['../classutl_1_1ostream__dev.html#ad0358c1b879818118e745da164d99998',1,'utl::ostream_dev::~ostream_dev()'],['../classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#ac653594be9325b740b6ded465de6d639',1,'utl::ostream_dev< virtual_tag, data_t >::~ostream_dev()']]], + ['_7eout_5fdev',['~out_dev',['../classutl_1_1out__dev.html#a0c04af11ec0f3f9954399d22069e314d',1,'utl::out_dev::~out_dev()'],['../classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a5dce94d088c9f6cec3c318e0a0d1ee56',1,'utl::out_dev< virtual_tag, data_t, streamsize >::~out_dev()']]], + ['_7eparameterizedtestsuiteinfobase',['~ParameterizedTestSuiteInfoBase',['../classtesting_1_1internal_1_1_parameterized_test_suite_info_base.html#ac2aa0664f56e84cacab823d345c7d67b',1,'testing::internal::ParameterizedTestSuiteInfoBase']]], + ['_7eparameterizedtestsuiteregistry',['~ParameterizedTestSuiteRegistry',['../classtesting_1_1internal_1_1_parameterized_test_suite_registry.html#ab29f7a321883945d7f86f3292c100eb5',1,'testing::internal::ParameterizedTestSuiteRegistry']]], + ['_7eparamgeneratorinterface',['~ParamGeneratorInterface',['../classtesting_1_1internal_1_1_param_generator_interface.html#ac2767cb9ad2e292e291c4903323c6eff',1,'testing::internal::ParamGeneratorInterface']]], + ['_7eparamiteratorinterface',['~ParamIteratorInterface',['../classtesting_1_1internal_1_1_param_iterator_interface.html#adf6ba49e6b54a6e3b15dbd5733988bef',1,'testing::internal::ParamIteratorInterface']]], + ['_7erangegenerator',['~RangeGenerator',['../classtesting_1_1internal_1_1_range_generator.html#a72f6e6f65f1dd3f86672f6ed47df74ef',1,'testing::internal::RangeGenerator']]], + ['_7ere',['~RE',['../classtesting_1_1internal_1_1_r_e.html#af3ad18e6c0b433f3d85ed23eda8119f3',1,'testing::internal::RE']]], + ['_7escopedtrace',['~ScopedTrace',['../classtesting_1_1_scoped_trace.html#aa8320ec2679f205cf2c14f508ba35b4d',1,'testing::ScopedTrace']]], + ['_7espi_5fbb_5fi',['~spi_bb_i',['../classutl_1_1spi__bb__i.html#aeac57567cb7db5ebb73bdd8e1f00cb82',1,'utl::spi_bb_i::~spi_bb_i()'],['../classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#a0ee4c601e63ec7097df95347f631c1fb',1,'utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::~spi_bb_i()']]], + ['_7espi_5fi',['~spi_i',['../classutl_1_1spi__i.html#ae77cb8be7d648a62a1ad252d829eccfb',1,'utl::spi_i::~spi_i()'],['../classutl_1_1spi__i_3_01virtual__tag_01_4.html#a7149ebd15799723fe3d2a97566608a19',1,'utl::spi_i< virtual_tag >::~spi_i()']]], + ['_7etest',['~Test',['../classtesting_1_1_test.html#ad99dc9b12208fd4bffc367f0a1e3df1b',1,'testing::Test']]], + ['_7etesteventlistener',['~TestEventListener',['../classtesting_1_1_test_event_listener.html#a4512d19e7a108ec4926239ec1ea85d63',1,'testing::TestEventListener']]], + ['_7etesteventlisteners',['~TestEventListeners',['../classtesting_1_1_test_event_listeners.html#abe9fbbbedf7f55fa898abfae60aa4913',1,'testing::TestEventListeners']]], + ['_7etestfactorybase',['~TestFactoryBase',['../classtesting_1_1internal_1_1_test_factory_base.html#a18f22a7594336a36642289c1decddc9e',1,'testing::internal::TestFactoryBase']]], + ['_7etestinfo',['~TestInfo',['../classtesting_1_1_test_info.html#a8d382c1b1b511f0d9112c14684809852',1,'testing::TestInfo']]], + ['_7etestmetafactorybase',['~TestMetaFactoryBase',['../classtesting_1_1internal_1_1_test_meta_factory_base.html#aad80adf04686f7dfcf952e44afc02767',1,'testing::internal::TestMetaFactoryBase']]], + ['_7etestresult',['~TestResult',['../classtesting_1_1_test_result.html#a41f407680b725b75d7eadc3230bc3315',1,'testing::TestResult']]], + ['_7etestsuite',['~TestSuite',['../classtesting_1_1_test_suite.html#a78af2d96b44c8b8f2002b4e74df31c38',1,'testing::TestSuite']]], + ['_7evaluesiniteratorrangegenerator',['~ValuesInIteratorRangeGenerator',['../classtesting_1_1internal_1_1_values_in_iterator_range_generator.html#a9070d5b79803164625d3aa77a1659e9f',1,'testing::internal::ValuesInIteratorRangeGenerator']]], + ['_7ewithparaminterface',['~WithParamInterface',['../classtesting_1_1_with_param_interface.html#a4e170bd42fa5e8ce48b80cee6bb52e26',1,'testing::WithParamInterface']]] +]; diff --git a/doc/html/search/functions_2.html b/doc/html/search/functions_2.html new file mode 100644 index 0000000..67d2a39 --- /dev/null +++ b/doc/html/search/functions_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/functions_2.js b/doc/html/search/functions_2.js new file mode 100644 index 0000000..4e80bac --- /dev/null +++ b/doc/html/search/functions_2.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['back',['back',['../structutl_1_1array.html#a5cd956a1087ce3652c79b36316f5875b',1,'utl::array::back() noexcept'],['../structutl_1_1array.html#a4a641f61dda90de1c93d3e62bf587bd3',1,'utl::array::back() const noexcept'],['../structutl_1_1id__t.html#a9a289ddc68f8ceec5368bf63334a2829',1,'utl::id_t::back() noexcept'],['../structutl_1_1id__t.html#a5a87967bad104213150f3dedf7e0291f',1,'utl::id_t::back() const noexcept']]], + ['begin',['begin',['../structutl_1_1array.html#a4b475a8e3d0c7cc41b251f08aef040f0',1,'utl::array::begin() noexcept'],['../structutl_1_1array.html#ae72df0eae3b306e0a5410d724665c27a',1,'utl::array::begin() const noexcept'],['../structutl_1_1id__t.html#abf6354098b87ecd333bfb3a160e757df',1,'utl::id_t::begin() noexcept'],['../structutl_1_1id__t.html#a6a38ff9b9efdc99120dd4ce852813e8a',1,'utl::id_t::begin() const noexcept'],['../classutl_1_1idx__dev.html#a83b186ed15e9bbe1e5d53e3941d517a7',1,'utl::idx_dev::begin() noexcept'],['../classutl_1_1idx__dev.html#ad456ced43be8ab4fb9a66840afa030f7',1,'utl::idx_dev::begin() const noexcept'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a3923ae24a74fef19919f818636e063e4',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::begin() noexcept'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a07967f7a2c5d324361b7ffc829f31600',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::begin() const noexcept'],['../classutl_1_1in__dev.html#ab2158d8a134dff882a3eac2960da04c0',1,'utl::in_dev::begin() noexcept'],['../classutl_1_1in__dev.html#af81ff90ccb0070ad9388bc032d6d3279',1,'utl::in_dev::begin() const noexcept'],['../classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#ace7fac9d980407acc9b6484592c74367',1,'utl::in_dev< virtual_tag, data_t, streamsize >::begin() noexcept'],['../classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#aa1ce4d2193e476156df1b03f39503f7c',1,'utl::in_dev< virtual_tag, data_t, streamsize >::begin() const noexcept'],['../classutl_1_1inbuf__dev.html#a0b7b02345e2306dc9f62a75029de71fb',1,'utl::inbuf_dev::begin() noexcept'],['../classutl_1_1inbuf__dev.html#acf6f21857302843661cdbbbeea61f05b',1,'utl::inbuf_dev::begin() const noexcept'],['../classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a70046c3c1e61b596c7e49f1f45510644',1,'utl::inbuf_dev< virtual_tag, data_t, streamsize >::begin() noexcept'],['../classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a5367418a80e15d0f087acc6b977c911c',1,'utl::inbuf_dev< virtual_tag, data_t, streamsize >::begin() const noexcept'],['../classutl_1_1ostream__dev.html#a313cc3aada490c2d2641d6bdac559748',1,'utl::ostream_dev::begin() noexcept'],['../classutl_1_1ostream__dev.html#aa541b838442aaf7693d528dabd049790',1,'utl::ostream_dev::begin() const noexcept'],['../classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#ab1319beb5c2d1d84adb54c83d73d34b6',1,'utl::ostream_dev< virtual_tag, data_t >::begin() noexcept'],['../classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#a43515a84a7f31d33a1bcc5c352ae3809',1,'utl::ostream_dev< virtual_tag, data_t >::begin() const noexcept'],['../classutl_1_1out__dev.html#a6396fb83348828e37d853d1566b0d742',1,'utl::out_dev::begin() noexcept'],['../classutl_1_1out__dev.html#ab08cdc4935ec15a388e34610e905d375',1,'utl::out_dev::begin() const noexcept'],['../classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#ac3df041ff2e72454035cd879ddf1332d',1,'utl::out_dev< virtual_tag, data_t, streamsize >::begin() noexcept'],['../classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a35edcf840e3ba2b53734a128181da6e8',1,'utl::out_dev< virtual_tag, data_t, streamsize >::begin() const noexcept']]], + ['bit',['bit',['../classutl_1_1__1wire__i.html#a197e062037f88871de9205519ec78122',1,'utl::_1wire_i::bit()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a10fa5e0409844b816a12c92b22dfe454',1,'utl::_1wire_i< virtual_tag >::bit()=0'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#af3890198c2ff351b2d0b8f7c6bbb5e75',1,'utl::_1wire_i< virtual_tag >::bit(bool)=0'],['../classutl_1_1__1wire__uart__i.html#a7bd53d23f567a31177f29fcbda4da09c',1,'utl::_1wire_uart_i::bit()'],['../classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html#af9ce2c52c3446978f9a7436b520f578c',1,'utl::_1wire_uart_i< virtual_tag >::bit()'],['../structutl_1_1id__t.html#a870b1c8cc468c8b9d7e76fd4d4fb8b2d',1,'utl::id_t::bit(uint8_t bit) const noexcept'],['../structutl_1_1id__t.html#af6b5f41a6367c32c4087be3d7a8f5fde',1,'utl::id_t::bit(uint8_t bit, bool v) noexcept']]] +]; diff --git a/doc/html/search/functions_3.html b/doc/html/search/functions_3.html new file mode 100644 index 0000000..1f0eedb --- /dev/null +++ b/doc/html/search/functions_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/functions_3.js b/doc/html/search/functions_3.js new file mode 100644 index 0000000..55b1400 --- /dev/null +++ b/doc/html/search/functions_3.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['cbegin',['cbegin',['../structutl_1_1array.html#a4b48e7c5d18ca4f48e187a727bad65f1',1,'utl::array::cbegin()'],['../structutl_1_1id__t.html#a1e753829714d8782eab69249cc61a2ce',1,'utl::id_t::cbegin()'],['../classutl_1_1idx__dev.html#a7550b4dbfea20c02f4600821bf36dc0c',1,'utl::idx_dev::cbegin()'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a99e214886247aaff0567799ba7b5c6a9',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::cbegin()'],['../classutl_1_1in__dev.html#a1120a80c871e1ea8165b4943c767893d',1,'utl::in_dev::cbegin()'],['../classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#ae1960ea2ffdf369a0c180b57007e0af6',1,'utl::in_dev< virtual_tag, data_t, streamsize >::cbegin()'],['../classutl_1_1inbuf__dev.html#a3c24ad3be57e15019e3fbd579e5fccb3',1,'utl::inbuf_dev::cbegin()'],['../classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a6c8cceaa03a16daff1db33f45c79082c',1,'utl::inbuf_dev< virtual_tag, data_t, streamsize >::cbegin()'],['../classutl_1_1ostream__dev.html#adad6881acafe06f05545364b3bb3941c',1,'utl::ostream_dev::cbegin()'],['../classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#aafdd8c809f8c113ff8749d9d98ad5831',1,'utl::ostream_dev< virtual_tag, data_t >::cbegin()'],['../classutl_1_1out__dev.html#ace309e9fd1a113691c5a84fde268c676',1,'utl::out_dev::cbegin()'],['../classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a41a29c14ad5206a122e6bec5e3314dc4',1,'utl::out_dev< virtual_tag, data_t, streamsize >::cbegin()']]], + ['cend',['cend',['../structutl_1_1array.html#a707a8e620497173544904f3d11324604',1,'utl::array::cend()'],['../structutl_1_1id__t.html#aa2e98b11c236e1dda8decedbe18d283e',1,'utl::id_t::cend()'],['../classutl_1_1idx__dev.html#a6ee37538b456c4b53b0bd4b3757b5edf',1,'utl::idx_dev::cend()'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a413c6a4e5bc1c13ac0d78f5c3c228408',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::cend()'],['../classutl_1_1in__dev.html#ac54d9a1fb6241be460ffc792aac18b24',1,'utl::in_dev::cend()'],['../classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a08ffb1ab825979c182f042eeeaea57f3',1,'utl::in_dev< virtual_tag, data_t, streamsize >::cend()'],['../classutl_1_1inbuf__dev.html#a4b51121e0ecc1d43fd3fe7d05bb6fa56',1,'utl::inbuf_dev::cend()'],['../classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#abe9c16e5322249a05df6eb968a8adb56',1,'utl::inbuf_dev< virtual_tag, data_t, streamsize >::cend()'],['../classutl_1_1ostream__dev.html#a90d454a509be230af0595e5a57e91f56',1,'utl::ostream_dev::cend()'],['../classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#a7a883628b71791d0f26a47f9d801543d',1,'utl::ostream_dev< virtual_tag, data_t >::cend()'],['../classutl_1_1out__dev.html#a71487ce8df820dd688d1698b035fe4fe',1,'utl::out_dev::cend()'],['../classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a6d316ddd0f1797724f976254297c28fc',1,'utl::out_dev< virtual_tag, data_t, streamsize >::cend()']]], + ['check',['check',['../structutl_1_1meta_1_1detail_1_1is__applicable__.html#abdbf481cbdd5183b42e3cabdb77d282a',1,'utl::meta::detail::is_applicable_::check(int)'],['../structutl_1_1meta_1_1detail_1_1is__applicable__.html#a5095a52a4bdbf224a73c575e402ac797',1,'utl::meta::detail::is_applicable_::check(...)'],['../structutl_1_1meta_1_1detail_1_1is__applicable__q__.html#a6d258d626fb7889506d8d0c9c6ab14b1',1,'utl::meta::detail::is_applicable_q_::check(int)'],['../structutl_1_1meta_1_1detail_1_1is__applicable__q__.html#ac96d763225bd114b68b208211818d788',1,'utl::meta::detail::is_applicable_q_::check(...)'],['../structutl_1_1meta_1_1detail_1_1is__applicable__i__.html#ac03023fb86dba10d9dfbd0ba553daccd',1,'utl::meta::detail::is_applicable_i_::check(int)'],['../structutl_1_1meta_1_1detail_1_1is__applicable__i__.html#a680891ad1380504fa6917cb5f0040db5',1,'utl::meta::detail::is_applicable_i_::check(...)']]], + ['clkhigh',['clkHigh',['../classutl_1_1spi__bb__i.html#a8fa5b901ced4ce734409ab4c20a1c1d2',1,'utl::spi_bb_i::clkHigh()'],['../classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#a31da01ac9f57390d05da49dc494f8964',1,'utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::clkHigh()']]], + ['clklow',['clkLow',['../classutl_1_1spi__bb__i.html#ae0a17d5879099f6ac92eee4dee59ab0f',1,'utl::spi_bb_i::clkLow()'],['../classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#a71630f7ea657f7b22640eaf3fdeff7ac',1,'utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::clkLow()']]], + ['clock',['clock',['../classutl_1_1i2c__i.html#aac5fed816701cc4543acd717ec804ac0',1,'utl::i2c_i::clock() const'],['../classutl_1_1i2c__i.html#ae4c59938aeeb1f0726195d425a4c0083',1,'utl::i2c_i::clock(uint32_t f)'],['../classutl_1_1i2c__i_3_01virtual__tag_01_4.html#a7b905fe7f0878a83d1c08a3fb95ac093',1,'utl::i2c_i< virtual_tag >::clock() const'],['../classutl_1_1i2c__i_3_01virtual__tag_01_4.html#a7a267d84ea677bc2d11b25dc828f67a7',1,'utl::i2c_i< virtual_tag >::clock(uint32_t c)'],['../classutl_1_1spi__i.html#a24cdd0c5ce4ed45a6c1b88ea43328634',1,'utl::spi_i::clock() const'],['../classutl_1_1spi__i.html#a0ebb46a523ace45fd69950f90f9b3af4',1,'utl::spi_i::clock(uint32_t c)'],['../classutl_1_1spi__i_3_01virtual__tag_01_4.html#a92a9350f72d3fca45b0900bf2bf5e8d9',1,'utl::spi_i< virtual_tag >::clock() const'],['../classutl_1_1spi__i_3_01virtual__tag_01_4.html#af168fba0d949aade779a63abf9f4bad2',1,'utl::spi_i< virtual_tag >::clock(uint32_t c)']]], + ['compare',['compare',['../classutl_1_1__1wire__id__t.html#aef89950aeb9d40ca058fabcc5532e01d',1,'utl::_1wire_id_t']]], + ['crbegin',['crbegin',['../structutl_1_1array.html#afdac98eac4c6edc09f478af083029eec',1,'utl::array::crbegin()'],['../structutl_1_1id__t.html#a9ba9d37208f8c4c964574b1a4e3e285a',1,'utl::id_t::crbegin()']]], + ['crc8',['crc8',['../classutl_1_1__1wire__id__t.html#a03a112d8910c67611a3b302fe7c0706b',1,'utl::_1wire_id_t::crc8() noexcept'],['../classutl_1_1__1wire__id__t.html#af3a0ea2c575f96ac01b0aac91166d767',1,'utl::_1wire_id_t::crc8() const noexcept']]], + ['crend',['crend',['../structutl_1_1array.html#abcdc4718426e62fec38c380a4221b144',1,'utl::array::crend()'],['../structutl_1_1id__t.html#a5b358a67cec1f283e1685ddf7af5d8bd',1,'utl::id_t::crend()']]], + ['cursor',['cursor',['../classutl_1_1istreamdev__it.html#a01ffeaa95a2b4b90f48505c38f35e024',1,'utl::istreamdev_it::cursor()'],['../classutl_1_1outdev__it.html#a6d8b5c831aecbc26af139cf849198635',1,'utl::outdev_it::cursor()'],['../classutl_1_1indev__it.html#a38b77b5de7904f6062980fd186585c3f',1,'utl::indev_it::cursor()'],['../classutl_1_1iodev__it.html#a4fa491f13549709b5a6da71281ca8632',1,'utl::iodev_it::cursor()'],['../classutl_1_1idx__dev.html#a5ec37ed1b09a484563e4ad21107ac5a5',1,'utl::idx_dev::cursor() const'],['../classutl_1_1idx__dev.html#ab49339f7ff0608ab460f0883224acb3c',1,'utl::idx_dev::cursor(idx_t idx)'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a2524b96ad86605bdadf47f54265154a7',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::cursor() const'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a4a0f9f2e977055dab73e2ecd0e49d97e',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::cursor(idx_t idx)']]], + ['cursor_5f',['cursor_',['../classutl_1_1idx__dev.html#aa184474f9ccb50bf7e2763a072fe64c5',1,'utl::idx_dev::cursor_() const'],['../classutl_1_1idx__dev.html#aa72ce1d299e2e994b811f127e7ce133f',1,'utl::idx_dev::cursor_(idx_t idx)'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a8c635458e582869a9eddb6d9cb415556',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::cursor_() const =0'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a3e7c310125427367defa988b2830c08e',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::cursor_(idx_t)=0']]] +]; diff --git a/doc/html/search/functions_4.html b/doc/html/search/functions_4.html new file mode 100644 index 0000000..c5bf87a --- /dev/null +++ b/doc/html/search/functions_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/functions_4.js b/doc/html/search/functions_4.js new file mode 100644 index 0000000..c712217 --- /dev/null +++ b/doc/html/search/functions_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['data',['data',['../structutl_1_1array.html#a32e4367239fb6fc2f9b0c700ef4e0de6',1,'utl::array::data() noexcept'],['../structutl_1_1array.html#a07bb0f3b54805d733e97025e68f8bcbc',1,'utl::array::data() const noexcept'],['../structutl_1_1id__t.html#a6b328d4c3175afaf9f22c8fa8b772eb6',1,'utl::id_t::data() noexcept'],['../structutl_1_1id__t.html#a67c50e2f7c4d7108023ea1e6ca4263eb',1,'utl::id_t::data() const noexcept']]], + ['delay',['delay',['../classutl_1_1i2c__bb__i.html#a18db1fab1be2aafbb2612242df2667f1',1,'utl::i2c_bb_i::delay()'],['../classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html#a5fa294a275580260ae570e4309607b6e',1,'utl::i2c_bb_i< virtual_tag >::delay()'],['../classutl_1_1spi__bb__i.html#a49c41f82754a6e8fa4209423a33a1762',1,'utl::spi_bb_i::delay()'],['../classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#a0215497da3f01d96b5ecb252262f130c',1,'utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::delay()']]] +]; diff --git a/doc/html/search/functions_5.html b/doc/html/search/functions_5.html new file mode 100644 index 0000000..a34446c --- /dev/null +++ b/doc/html/search/functions_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/functions_5.js b/doc/html/search/functions_5.js new file mode 100644 index 0000000..5c1d8a0 --- /dev/null +++ b/doc/html/search/functions_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['empty',['empty',['../structutl_1_1array.html#ac919fc992acdda9b562f5fc6414552b6',1,'utl::array::empty()'],['../structutl_1_1id__t.html#a5052e5dd26342349236eff91766e332e',1,'utl::id_t::empty()'],['../structutl_1_1meta_1_1typelist.html#ac502a5ad1b830e75693c2e3c7a7b1cb8',1,'utl::meta::typelist::empty()']]], + ['end',['end',['../structutl_1_1array.html#a76158e0e9b7c019fe69ead7cd4800522',1,'utl::array::end() noexcept'],['../structutl_1_1array.html#a7a0cf890bc35437821e35484a1fd8fc7',1,'utl::array::end() const noexcept'],['../structutl_1_1id__t.html#ad3e1553b24e43c71b64d080922c42148',1,'utl::id_t::end() noexcept'],['../structutl_1_1id__t.html#a82bef2fee2dfad5d895af2b01b888c54',1,'utl::id_t::end() const noexcept'],['../classutl_1_1idx__dev.html#aae291a2bb6788f85aa543861ccdb51c5',1,'utl::idx_dev::end() noexcept'],['../classutl_1_1idx__dev.html#ae1cf97364a8264b390b361fc6b54b389',1,'utl::idx_dev::end() const noexcept'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#ad9166f4899994039eb64b6f63bcee621',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::end() noexcept'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a4da6ff073a9f8452ebbd5371e017e4b9',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::end() const noexcept'],['../classutl_1_1in__dev.html#aae7797f366d25091b63ad87b34ed4b48',1,'utl::in_dev::end() noexcept'],['../classutl_1_1in__dev.html#aecb438cbb0e2a6c3a926aad81e8c29c7',1,'utl::in_dev::end() const noexcept'],['../classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a9425910f709853ff9cd70b2331a026cc',1,'utl::in_dev< virtual_tag, data_t, streamsize >::end() noexcept'],['../classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a2b723a67fce37e74b594ee9c5dc07030',1,'utl::in_dev< virtual_tag, data_t, streamsize >::end() const noexcept'],['../classutl_1_1inbuf__dev.html#aea05a40b3c8966d1dd3978b40e0c6ac8',1,'utl::inbuf_dev::end() noexcept'],['../classutl_1_1inbuf__dev.html#aa862f748551da0bd92341f8f125b8aa3',1,'utl::inbuf_dev::end() const noexcept'],['../classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a0a85ea0b10edeb155b59d1a3dff43382',1,'utl::inbuf_dev< virtual_tag, data_t, streamsize >::end() noexcept'],['../classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#aa81447a9ed7f2428f587b42ecf8bc007',1,'utl::inbuf_dev< virtual_tag, data_t, streamsize >::end() const noexcept'],['../classutl_1_1ostream__dev.html#a3d2f837c438b1a97ec14384ba3382090',1,'utl::ostream_dev::end() noexcept'],['../classutl_1_1ostream__dev.html#af836e2bdffe1829593d889f98a35a726',1,'utl::ostream_dev::end() const noexcept'],['../classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#a853552686bba8432a6f53a9c21f83ac2',1,'utl::ostream_dev< virtual_tag, data_t >::end() noexcept'],['../classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#a8ea06a012f2d55f67421026116000337',1,'utl::ostream_dev< virtual_tag, data_t >::end() const noexcept'],['../classutl_1_1out__dev.html#a34aeac23c0184d243c6631e713208e27',1,'utl::out_dev::end() noexcept'],['../classutl_1_1out__dev.html#a0e89b3e0a5bddc3031b543ef32eb401e',1,'utl::out_dev::end() const noexcept'],['../classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#acabafe9e76d94c8044feb85996ebba5f',1,'utl::out_dev< virtual_tag, data_t, streamsize >::end() noexcept'],['../classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a3992eda54afec8aaa1cb8f040563add6',1,'utl::out_dev< virtual_tag, data_t, streamsize >::end() const noexcept']]] +]; diff --git a/doc/html/search/functions_6.html b/doc/html/search/functions_6.html new file mode 100644 index 0000000..6fd4b1f --- /dev/null +++ b/doc/html/search/functions_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/functions_6.js b/doc/html/search/functions_6.js new file mode 100644 index 0000000..ab14eaf --- /dev/null +++ b/doc/html/search/functions_6.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['family',['family',['../classutl_1_1__1wire__id__t.html#adb30b65bcab59bdad980793377a8e52f',1,'utl::_1wire_id_t::family() noexcept'],['../classutl_1_1__1wire__id__t.html#a6ed0d86d1fce0073776d83092a874b91',1,'utl::_1wire_id_t::family() const noexcept']]], + ['fill',['fill',['../structutl_1_1array.html#a388a40a3a4450a562010859ef2286587',1,'utl::array::fill()'],['../structutl_1_1id__t.html#a99464dc25ccbc124e3c1a21f6889b23a',1,'utl::id_t::fill()']]], + ['first',['first',['../classutl_1_1__1wire__i.html#a4b6d225963095d36eda832a1e0adba55',1,'utl::_1wire_i::first()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a0fb2e35eb9c244640014f69808ae2758',1,'utl::_1wire_i< virtual_tag >::first()']]], + ['front',['front',['../structutl_1_1array.html#a3f325450d5240f982b2b712d72f9a411',1,'utl::array::front() noexcept'],['../structutl_1_1array.html#a055c38b4345d1aa5bb8cc9172887165c',1,'utl::array::front() const noexcept'],['../structutl_1_1id__t.html#a00d98ffd688e3c146b7dca509487b821',1,'utl::id_t::front() noexcept'],['../structutl_1_1id__t.html#a01a1945e5d9ee1b926bb305d65dbc28b',1,'utl::id_t::front() const noexcept']]] +]; diff --git a/doc/html/search/functions_7.html b/doc/html/search/functions_7.html new file mode 100644 index 0000000..6e09abf --- /dev/null +++ b/doc/html/search/functions_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/functions_7.js b/doc/html/search/functions_7.js new file mode 100644 index 0000000..a97dd1b --- /dev/null +++ b/doc/html/search/functions_7.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['get',['get',['../classutl_1_1idx__dev.html#a04f9404d7741c3c6ac421c530dfe867c',1,'utl::idx_dev::get(data_t &data, idx_t cursor)'],['../classutl_1_1idx__dev.html#aeef118cb863218cb2b5a1e8bb2dba600',1,'utl::idx_dev::get(data_t *data, size_t n, idx_t cursor)'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a6d5acffcb7f0ae7d34b47021b55aff6c',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::get(data_t &data, idx_t cursor)'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a58ce6002f3a5daabcc443aebee42e10b',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::get(data_t *data, size_t n, idx_t cursor)'],['../classutl_1_1in__dev.html#aa13a075d41f3e020f4f67c2a59d580a5',1,'utl::in_dev::get(data_t &data)'],['../classutl_1_1in__dev.html#a5536fdd877bc9f078a9ede43ccc283e7',1,'utl::in_dev::get(data_t *data, size_t n)'],['../classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#aed9cb2dea774c6569b5e63aec8e0b50c',1,'utl::in_dev< virtual_tag, data_t, streamsize >::get(data_t &data)'],['../classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a12c2da025b94a200fc73133c206c017e',1,'utl::in_dev< virtual_tag, data_t, streamsize >::get(data_t *data, size_t n)'],['../classutl_1_1inbuf__dev.html#a7856963b0bb0bf294be53ea20f3564d0',1,'utl::inbuf_dev::get(data_t &data)'],['../classutl_1_1inbuf__dev.html#a9290fbfeebac0d161f800bc1522ea5a6',1,'utl::inbuf_dev::get(data_t *data, size_t n)'],['../classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#aef2177d9f52b58b6b5f5c9115fbc893e',1,'utl::inbuf_dev< virtual_tag, data_t, streamsize >::get(data_t &data)'],['../classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#ac2028f0e3b8f48e12bbcbf22cecbfe83',1,'utl::inbuf_dev< virtual_tag, data_t, streamsize >::get(data_t *data, size_t n)'],['../namespaceutl.html#a29057d2e164fe6dd3f3095f0d69c6546',1,'utl::get(array< _Tp, _Nm > &arr) noexcept'],['../namespaceutl.html#ab0087ff901c30848b7ac6f5ffa31f5cf',1,'utl::get(array< _Tp, _Nm > &&arr) noexcept'],['../namespaceutl.html#aad376ab583a0db920180465f9f35d67b',1,'utl::get(const array< _Tp, _Nm > &arr) noexcept']]], + ['get_5f',['get_',['../classutl_1_1idx__dev.html#acc5ca7cdc56121ef7044ef89253b89b4',1,'utl::idx_dev::get_(data_t &data, idx_t idx)'],['../classutl_1_1idx__dev.html#a268d9f5940e7621affca5bffde8830b9',1,'utl::idx_dev::get_(data_t *data, size_t n, idx_t idx)'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a12bebbab7f13ee42d85a7c3c85b445ca',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::get_(data_t &, idx_t)=0'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#afbc848e9c2232d8921f8d5f34ac90c00',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::get_(data_t *, size_t n, idx_t)=0'],['../classutl_1_1in__dev.html#a243dbc2e6acd2c2baf56c3c9861a0abf',1,'utl::in_dev::get_(data_t &data)'],['../classutl_1_1in__dev.html#a374e6cc495d5885ee6be8973c5f4eb8e',1,'utl::in_dev::get_(data_t *data, size_t n)'],['../classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a23f3d6612d29c53c3ab09c6adf7e1bff',1,'utl::in_dev< virtual_tag, data_t, streamsize >::get_(data_t &data)=0'],['../classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#ad8c95f8b4cf9b22e0dbecbf62fdf584e',1,'utl::in_dev< virtual_tag, data_t, streamsize >::get_(data_t *data, size_t n)=0'],['../classutl_1_1inbuf__dev.html#ab2be58702c31d59e02683d5ff43c9dd6',1,'utl::inbuf_dev::get_(data_t &data)'],['../classutl_1_1inbuf__dev.html#a2f835b56beec0efc5d1cd2088e6a40cb',1,'utl::inbuf_dev::get_(data_t *data, size_t n)'],['../classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a061547eefd51a7a0fac1c2aa6b410b84',1,'utl::inbuf_dev< virtual_tag, data_t, streamsize >::get_(data_t &data)=0'],['../classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a961179ceef8c0a0ce75d71cccd591a10',1,'utl::inbuf_dev< virtual_tag, data_t, streamsize >::get_(data_t *data, size_t n)=0']]] +]; diff --git a/doc/html/search/functions_8.html b/doc/html/search/functions_8.html new file mode 100644 index 0000000..d59ea97 --- /dev/null +++ b/doc/html/search/functions_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/functions_8.js b/doc/html/search/functions_8.js new file mode 100644 index 0000000..b617a46 --- /dev/null +++ b/doc/html/search/functions_8.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['i2c_5fbb_5fi',['i2c_bb_i',['../classutl_1_1i2c__bb__i.html#ab657379ca2e4b3624e2d4520542a9464',1,'utl::i2c_bb_i::i2c_bb_i()'],['../classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html#a0c9341b2a60e9400523de0397c472a76',1,'utl::i2c_bb_i< virtual_tag >::i2c_bb_i()']]], + ['i2c_5fi',['i2c_i',['../classutl_1_1i2c__i.html#a84375c05d1c40d9992aa1290dd488410',1,'utl::i2c_i::i2c_i()=default'],['../classutl_1_1i2c__i.html#adff01408628f58b7c6ce9b0cd63d70df',1,'utl::i2c_i::i2c_i(const type &)=delete'],['../classutl_1_1i2c__i_3_01virtual__tag_01_4.html#a31335550747f46adabf153e9ad206882',1,'utl::i2c_i< virtual_tag >::i2c_i()=default'],['../classutl_1_1i2c__i_3_01virtual__tag_01_4.html#a5f530866d47aa343b4372da308f482dc',1,'utl::i2c_i< virtual_tag >::i2c_i(const type &)=delete']]], + ['idx_5fdev',['idx_dev',['../classutl_1_1idx__dev.html#a90c6f576acb2a1ced3e973864d5d61b1',1,'utl::idx_dev::idx_dev()=default'],['../classutl_1_1idx__dev.html#a846e84b90848710336e2763c833eb8ec',1,'utl::idx_dev::idx_dev(const idx_dev_t &)=delete'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a32699d8dd6ed81986262ba74dccd3957',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::idx_dev()=default'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#ac00ac9cb399b3e08997c45f3204a3151',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::idx_dev(const idx_dev_t &)=delete']]], + ['in_5favail',['in_avail',['../classutl_1_1inbuf__dev.html#aa5b71a9b0c989c4686a053e9d5df9251',1,'utl::inbuf_dev::in_avail()'],['../classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#aba2a9c8e96a8a865e1a24b52600a9f13',1,'utl::inbuf_dev< virtual_tag, data_t, streamsize >::in_avail()']]], + ['in_5favail_5f',['in_avail_',['../classutl_1_1inbuf__dev.html#ac7af0c7df9eee2bcf02579b0fd1d8dea',1,'utl::inbuf_dev::in_avail_()'],['../classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#ac29561c3fc45b087d6d88514a78f6b4f',1,'utl::inbuf_dev< virtual_tag, data_t, streamsize >::in_avail_()']]], + ['in_5fdev',['in_dev',['../classutl_1_1in__dev.html#a1ca16c382f5e0dd25089a4e06a40f2f2',1,'utl::in_dev::in_dev()=default'],['../classutl_1_1in__dev.html#a570c94b183eff6f8ca2d7d9ab5d9a7ea',1,'utl::in_dev::in_dev(const in_dev_t &)=delete'],['../classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a63a64b133693b7786f500406edc316f6',1,'utl::in_dev< virtual_tag, data_t, streamsize >::in_dev()=default'],['../classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a102939ee79bd9cd937255d342f7150f1',1,'utl::in_dev< virtual_tag, data_t, streamsize >::in_dev(const in_dev_t &)=delete']]], + ['inbuf_5fdev',['inbuf_dev',['../classutl_1_1inbuf__dev.html#a9bc1f15ed57132539749d390d5bb03b9',1,'utl::inbuf_dev::inbuf_dev()=default'],['../classutl_1_1inbuf__dev.html#a0fe7d9f726d8a0f2b23df6d9520b58ed',1,'utl::inbuf_dev::inbuf_dev(const inbuf_dev_t &)=delete'],['../classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a52240af74076f562c0f79275e44e3640',1,'utl::inbuf_dev< virtual_tag, data_t, streamsize >::inbuf_dev()=default'],['../classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a54b50015b6fd5f9699d7f0e155f6ef3b',1,'utl::inbuf_dev< virtual_tag, data_t, streamsize >::inbuf_dev(const inbuf_dev_t &)=delete']]], + ['indev_5fit',['indev_it',['../classutl_1_1indev__it.html#aef3a45393dd12c64dfc9088c4fa34590',1,'utl::indev_it::indev_it() noexcept'],['../classutl_1_1indev__it.html#ad4e96e6bf81f9470d6017bef03fec570',1,'utl::indev_it::indev_it(cont_t *own, size_t cur=eod) noexcept'],['../classutl_1_1indev__it.html#a59c73bf03cd0b260fc7ffdd334db414b',1,'utl::indev_it::indev_it(const iterator_t &it) noexcept']]], + ['invoke',['invoke',['../namespaceutl.html#adc675874b5426194d04112f76b356714',1,'utl']]], + ['invoke_5fimpl_5f',['invoke_impl_',['../namespaceutl_1_1detail.html#a2c39a67272ada5da5f1b84115dadc4a1',1,'utl::detail::invoke_impl_(Type T::*f, T1 &&t1, Args &&... args)'],['../namespaceutl_1_1detail.html#a09341831ecc9aab67a23d3a47b2d114f',1,'utl::detail::invoke_impl_(F &&f, Args &&... args)']]], + ['iodev_5fit',['iodev_it',['../classutl_1_1iodev__it.html#a8f610ac513d5118345f148031c3e6b9c',1,'utl::iodev_it::iodev_it() noexcept'],['../classutl_1_1iodev__it.html#ad9ef3fd5595b70fbb94735707df656a3',1,'utl::iodev_it::iodev_it(cont_t *owner, size_t cursor=eod) noexcept'],['../classutl_1_1iodev__it.html#a41167751da91f6c99e05d0c164f75f0d',1,'utl::iodev_it::iodev_it(const iterator_t &it) noexcept']]], + ['istreamdev_5fit',['istreamdev_it',['../classutl_1_1istreamdev__it.html#a37d06e1d0e6b2dee118d1f84914f489f',1,'utl::istreamdev_it::istreamdev_it(cont_t *owner=nullptr, Cursor cursor=eos) noexcept'],['../classutl_1_1istreamdev__it.html#af60899a30cdbcbb9c18a13daa3d1bafb',1,'utl::istreamdev_it::istreamdev_it(const iterator_t &it) noexcept']]] +]; diff --git a/doc/html/search/functions_9.html b/doc/html/search/functions_9.html new file mode 100644 index 0000000..5ccec42 --- /dev/null +++ b/doc/html/search/functions_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/functions_9.js b/doc/html/search/functions_9.js new file mode 100644 index 0000000..351bef2 --- /dev/null +++ b/doc/html/search/functions_9.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['match',['match',['../classutl_1_1__1wire__i.html#aa2d87a149c4e5dcfefc5a8cde6eaefb2',1,'utl::_1wire_i::match()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#ac9c4e6123eee9b0af8d94fc8b22af04a',1,'utl::_1wire_i< virtual_tag >::match()']]], + ['match_5fn_5fovdr',['match_n_ovdr',['../classutl_1_1__1wire__i.html#ac88f67dd75dc23d39123ac584dce6b40',1,'utl::_1wire_i::match_n_ovdr()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a9a3e64459e7fddc89d160a3a379552b6',1,'utl::_1wire_i< virtual_tag >::match_n_ovdr()']]], + ['max_5fsize',['max_size',['../structutl_1_1array.html#ae9145a3585ab42ad57d232863f0445dc',1,'utl::array::max_size()'],['../structutl_1_1id__t.html#abeaee41b9ae199fe6f4b40ada1ca9ffa',1,'utl::id_t::max_size()']]], + ['miso',['MISO',['../classutl_1_1spi__bb__i.html#a9a7b908a8976f6efed9dd6e2b294415b',1,'utl::spi_bb_i::MISO()'],['../classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#aef56a570b3b19e2b26b148a63fa8ce46',1,'utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::MISO()']]], + ['mosi',['MOSI',['../classutl_1_1spi__bb__i.html#a3051a59aaeb5b176a175b352cf5f578e',1,'utl::spi_bb_i::MOSI()'],['../classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#a69738fe08e861df1a156f7a1168652cd',1,'utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::MOSI()']]] +]; diff --git a/doc/html/search/functions_a.html b/doc/html/search/functions_a.html new file mode 100644 index 0000000..3958eb7 --- /dev/null +++ b/doc/html/search/functions_a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/functions_a.js b/doc/html/search/functions_a.js new file mode 100644 index 0000000..c66490b --- /dev/null +++ b/doc/html/search/functions_a.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['nat_5f',['nat_',['../structutl_1_1meta_1_1nat__.html#adccaf921c4aa751d22831fcc10d5a673',1,'utl::meta::nat_::nat_()=delete'],['../structutl_1_1meta_1_1nat__.html#a42d01fdec9b91bc31c325a51e28b5d41',1,'utl::meta::nat_::nat_(nat_ const &)=delete']]], + ['next',['next',['../classutl_1_1__1wire__i.html#a3e302085f12a39fef8a378e1dac42f45',1,'utl::_1wire_i::next()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a6a3b511a6f7c20bae1e8c7af9f50a0ff',1,'utl::_1wire_i< virtual_tag >::next()']]], + ['nulldev',['nullDev',['../classutl_1_1__1wire__id__t.html#adad08aa5ce38e1a87800de57a91db81b',1,'utl::_1wire_id_t']]] +]; diff --git a/doc/html/search/functions_b.html b/doc/html/search/functions_b.html new file mode 100644 index 0000000..b99b702 --- /dev/null +++ b/doc/html/search/functions_b.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/functions_b.js b/doc/html/search/functions_b.js new file mode 100644 index 0000000..e13b0ec --- /dev/null +++ b/doc/html/search/functions_b.js @@ -0,0 +1,28 @@ +var searchData= +[ + ['operator_20reference',['operator reference',['../structutl_1_1iodev__it_1_1value__type__t.html#a07c942db086f695666cbb66adc0bcf14',1,'utl::iodev_it::value_type_t']]], + ['operator_20value_5ftype',['operator value_type',['../structutl_1_1iodev__it_1_1value__type__t.html#a987f92d1edf063461833c620ecdf57d0',1,'utl::iodev_it::value_type_t']]], + ['operator_21_3d',['operator!=',['../namespaceutl.html#a45cd30dab2ec904b6fd64641d777b35e',1,'utl::operator!=(const array< _Tp, _Nm > &lhs, const array< _Tp, _Nm > &rhs)'],['../namespaceutl.html#a7f05cda5b7a37dea074df55db31aefb6',1,'utl::operator!=(const id_t< _Tp, _Nm > &lhs, const id_t< _Tp, _Nm > &rhs)'],['../namespaceutl.html#aa7a25ea4d2598ec5db5b37bfaaf55ec3',1,'utl::operator!=(const istreamdev_it< _C1, _D1 > &lhs, const istreamdev_it< _C2, _D2 > &rhs) noexcept'],['../namespaceutl.html#ada8975062732a20074909f8a3f609538',1,'utl::operator!=(const outdev_it< _Cont1, _It1, _beg1, _end1 > &lhs, const outdev_it< _Cont2, _It2, _beg2, _end2 > &rhs) noexcept'],['../namespaceutl.html#a15d049c37bf09ffb29f2a0c0070bf89c',1,'utl::operator!=(const indev_it< _Cont1, _It1, _beg1, _size1 > &x, const indev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept'],['../namespaceutl.html#a388830b63c30f5ee32a3e2a761c703c8',1,'utl::operator!=(const iodev_it< _Cont1, _It1, _beg1, _size1 > &x, const iodev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept']]], + ['operator_2a',['operator*',['../classutl_1_1ostreamdev__it.html#a59b20f351f4453d0439a732020f01a62',1,'utl::ostreamdev_it::operator*()'],['../classutl_1_1istreamdev__it.html#a39299e20b2ec7e21099525e4fa458a08',1,'utl::istreamdev_it::operator*()'],['../classutl_1_1outdev__it.html#a48013f8a6db805b7233a61fc43891f88',1,'utl::outdev_it::operator*()'],['../classutl_1_1indev__it.html#aab9b502abf96ca3e68ea08f4db133022',1,'utl::indev_it::operator*()'],['../classutl_1_1iodev__it.html#a584de89ae9c5d223f6455680d54d18f3',1,'utl::iodev_it::operator*()']]], + ['operator_2b',['operator+',['../classutl_1_1indev__it.html#a6f96628003f69ad5bedf4c9ff9c51ede',1,'utl::indev_it::operator+()'],['../classutl_1_1iodev__it.html#a6a720ca327e022c72ee11c11305f7f05',1,'utl::iodev_it::operator+()'],['../namespaceutl.html#a69289a7a150563ce48244d7f39b33dbb',1,'utl::operator+(typename _Cont::difference_type n, indev_it< _Cont, _It, _beg, _size > &it) noexcept'],['../namespaceutl.html#a829bc4894560bf7e0a6fd829ac9d3c10',1,'utl::operator+(typename _Cont::difference_type n, iodev_it< _Cont, _It, _beg, _size > &it) noexcept']]], + ['operator_2b_2b',['operator++',['../classutl_1_1ostreamdev__it.html#a0b30079065e0a886991eee4d701d99f2',1,'utl::ostreamdev_it::operator++() noexcept'],['../classutl_1_1ostreamdev__it.html#a1f14055eccffc96163aad431f2d1e663',1,'utl::ostreamdev_it::operator++(int) noexcept'],['../classutl_1_1istreamdev__it.html#abe06c7d5a4fc488804291bdb29d16816',1,'utl::istreamdev_it::operator++() noexcept'],['../classutl_1_1istreamdev__it.html#a9c04a21ce549fc67f306664c90b1f874',1,'utl::istreamdev_it::operator++(int) noexcept'],['../classutl_1_1outdev__it.html#a3f8d013e5ea008abfa060028d78f2871',1,'utl::outdev_it::operator++() noexcept'],['../classutl_1_1outdev__it.html#a8080fda743df21eb28b20771ba7df912',1,'utl::outdev_it::operator++(int) noexcept'],['../classutl_1_1indev__it.html#a9cc635074b47eae7db149c8079327bff',1,'utl::indev_it::operator++()'],['../classutl_1_1indev__it.html#a9221ac03f89e592ad3ba1fd0d1aa2793',1,'utl::indev_it::operator++(int)'],['../classutl_1_1iodev__it.html#aee5241250c6e402699bd38a13dad6f91',1,'utl::iodev_it::operator++() noexcept'],['../classutl_1_1iodev__it.html#ad470a2f302cacaa2effc56072e21eef5',1,'utl::iodev_it::operator++(int) noexcept']]], + ['operator_2b_3d',['operator+=',['../classutl_1_1indev__it.html#a2c71facea46d8c1a802d132b28d8024e',1,'utl::indev_it::operator+=()'],['../classutl_1_1iodev__it.html#a6aad753022c84b6961eef38bb53a3bd9',1,'utl::iodev_it::operator+=()']]], + ['operator_2d',['operator-',['../classutl_1_1indev__it.html#a3bfc84c569096454701ff191d9e8bf14',1,'utl::indev_it::operator-()'],['../classutl_1_1iodev__it.html#aa437f3e0e237fa511e56646136aabb35',1,'utl::iodev_it::operator-()'],['../namespaceutl.html#aae4b45dc79b7d9b85e0bf83278f88508',1,'utl::operator-(indev_it< _Cont1, _It1, _beg1, _size1 > &x, indev_it< _Cont1, _It1, _beg1, _size1 > &y) noexcept -> decltype(x.cursor() - y.cursor())'],['../namespaceutl.html#a191590b661dc64e2fd487adb6b5e8889',1,'utl::operator-(iodev_it< _Cont1, _It1, _beg1, _size1 > &x, iodev_it< _Cont1, _It1, _beg1, _size1 > &y) noexcept -> decltype(x.cursor() - y.cursor())']]], + ['operator_2d_2d',['operator--',['../classutl_1_1indev__it.html#a2980dd80dce60ddf7bfbaf11c5394b4c',1,'utl::indev_it::operator--()'],['../classutl_1_1indev__it.html#a67ab2af5e3530d0aa72b9d4e6ce64d48',1,'utl::indev_it::operator--(int)'],['../classutl_1_1iodev__it.html#a820f0b3899c80743ed0ad1f495c0d3c3',1,'utl::iodev_it::operator--() noexcept'],['../classutl_1_1iodev__it.html#a6bde1ae02f162213c637ff25f269d24f',1,'utl::iodev_it::operator--(int) noexcept']]], + ['operator_2d_3d',['operator-=',['../classutl_1_1indev__it.html#a45fc6f9caefbe9e623e850919ecef085',1,'utl::indev_it::operator-=()'],['../classutl_1_1iodev__it.html#ac4fa70211754ba2f34aaea5290d2492c',1,'utl::iodev_it::operator-=()']]], + ['operator_2d_3e',['operator->',['../classutl_1_1istreamdev__it.html#adf6eafdc0973dbc1a71992ae8914c9dd',1,'utl::istreamdev_it::operator->()'],['../classutl_1_1indev__it.html#aba3b176ec09842e790f1edc808214a89',1,'utl::indev_it::operator->()'],['../classutl_1_1iodev__it.html#a2c031f247a145656129e91905d9dca26',1,'utl::iodev_it::operator->()']]], + ['operator_3c',['operator<',['../namespaceutl.html#a633f700b294b53e4f58183fd4bc6963f',1,'utl::operator<(const array< _Tp, _Nm > &lhs, const array< _Tp, _Nm > &rhs)'],['../namespaceutl.html#a64bc464138b386821977a0c4ac43fddf',1,'utl::operator<(const id_t< _Tp, _Nm > &lhs, const id_t< _Tp, _Nm > &rhs)'],['../namespaceutl.html#aac9f2116bf5b1463391b2a5ec437ef1d',1,'utl::operator<(const indev_it< _Cont1, _It1, _beg1, _size1 > &x, const indev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept'],['../namespaceutl.html#aacd0760a2943441abcc86ef9d825c8b0',1,'utl::operator<(const iodev_it< _Cont1, _It1, _beg1, _size1 > &x, const iodev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept']]], + ['operator_3c_3c',['operator<<',['../classutl_1_1idx__dev.html#a661ea93cc07a61ef208ab6f021f62907',1,'utl::idx_dev::operator<<(_Src_t &src)'],['../classutl_1_1idx__dev.html#a4e5a520417e7defe7cec77c261a01b73',1,'utl::idx_dev::operator<<(_Src_t *src)=delete'],['../classutl_1_1idx__dev.html#ad1c24182de1432f4d43eaa69db7aaec7',1,'utl::idx_dev::operator<<(const data_t &src)'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#accbb8a8c64fc4cac385081c9b6b7356b',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::operator<<(_Src_t &src)'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a0443e0880c43aedb5735c52a5c9eb144',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::operator<<(_Src_t *src)=delete'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a52d8bf37aa7e4549db3ac11677cf9ec1',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::operator<<(const data_t &src)'],['../classutl_1_1ostream__dev.html#a4ab9729e2a50b797bcd939c840685b48',1,'utl::ostream_dev::operator<<(const _Src_t &src)'],['../classutl_1_1ostream__dev.html#a17b6362ea015437b1cd3f4b9122c4e35',1,'utl::ostream_dev::operator<<(_Src_t *src)=delete'],['../classutl_1_1ostream__dev.html#a776a690023246345f1af2991f1b3b206',1,'utl::ostream_dev::operator<<(const data_t &src)'],['../classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#a9761a89cc6f5f57529fd7f686350a221',1,'utl::ostream_dev< virtual_tag, data_t >::operator<<(const _Src_t &src)'],['../classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#aeedb13f9949b3cc31fede903553c0a05',1,'utl::ostream_dev< virtual_tag, data_t >::operator<<(_Src_t *src)=delete'],['../classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#a767095b8efcafd7cb50c065b1c781146',1,'utl::ostream_dev< virtual_tag, data_t >::operator<<(const data_t &src)'],['../classutl_1_1out__dev.html#a73612dfcce721cbc386bad3e7d6864b4',1,'utl::out_dev::operator<<(_Src_t &src)'],['../classutl_1_1out__dev.html#a934913c0d594e8fd366b248bc01116aa',1,'utl::out_dev::operator<<(_Src_t *src)=delete'],['../classutl_1_1out__dev.html#a22dce1d313a4f6b4686d4253cbd7f485',1,'utl::out_dev::operator<<(const data_t &src)'],['../classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a88944f88c0dfa832f42b49193bffcea9',1,'utl::out_dev< virtual_tag, data_t, streamsize >::operator<<(_Src_t &src)'],['../classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a8ea40dd005963b6e2f41c1a5f8c5c6b1',1,'utl::out_dev< virtual_tag, data_t, streamsize >::operator<<(_Src_t *src)=delete'],['../classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a6b8b80722252f898b1acfce6083b4cf7',1,'utl::out_dev< virtual_tag, data_t, streamsize >::operator<<(const data_t &src)']]], + ['operator_3c_3d',['operator<=',['../namespaceutl.html#a36f9fadffe88aefcc2d37249eaf951c3',1,'utl::operator<=(const array< _Tp, _Nm > &lhs, const array< _Tp, _Nm > &rhs)'],['../namespaceutl.html#aa2c449f74d1214cb7406b1648d2caf6f',1,'utl::operator<=(const id_t< _Tp, _Nm > &lhs, const id_t< _Tp, _Nm > &rhs)'],['../namespaceutl.html#a93043b2e245bb724c9c2e89577222532',1,'utl::operator<=(const indev_it< _Cont1, _It1, _beg1, _size1 > &x, const indev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept'],['../namespaceutl.html#aa369d59a59c21d50b371b5db6195b043',1,'utl::operator<=(const iodev_it< _Cont1, _It1, _beg1, _size1 > &x, const iodev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept']]], + ['operator_3d',['operator=',['../classutl_1_1__1wire__i.html#a96222b5bd731c2b242e428aabda40642',1,'utl::_1wire_i::operator=()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a3e2e3e5f3727eaa9fdf152ae7098c7be',1,'utl::_1wire_i< virtual_tag >::operator=()'],['../classutl_1_1i2c__i.html#aee83d11e02c3a0639dd3ed1ea440ed24',1,'utl::i2c_i::operator=()'],['../classutl_1_1i2c__i_3_01virtual__tag_01_4.html#a931323b813a653057e039416e0fd5b99',1,'utl::i2c_i< virtual_tag >::operator=()'],['../classutl_1_1spi__i.html#aa5cf05ce005cb23e6317b3eef70bf4b0',1,'utl::spi_i::operator=()'],['../classutl_1_1spi__i_3_01virtual__tag_01_4.html#aa24dd9ed5e342ab0f27b4ef296516e5b',1,'utl::spi_i< virtual_tag >::operator=()'],['../classutl_1_1ostreamdev__it.html#a12bff250b98723f39f8145cd28753c62',1,'utl::ostreamdev_it::operator=(const iterator_t &it) noexcept'],['../classutl_1_1ostreamdev__it.html#a79b92769a48d202c4eb7d98d031eed3d',1,'utl::ostreamdev_it::operator=(const value_type &value)'],['../classutl_1_1istreamdev__it.html#a93400479ad3e318df06880c7d116e2fb',1,'utl::istreamdev_it::operator=()'],['../classutl_1_1outdev__it.html#a96773cf7677881fde81b57db9f8ffaff',1,'utl::outdev_it::operator=(const iterator_t &it) noexcept'],['../classutl_1_1outdev__it.html#aeb3737becdbcab0e42094bc87d09d79a',1,'utl::outdev_it::operator=(const value_type &value)'],['../classutl_1_1indev__it.html#a6dd617aa9a5c3454ca9f49d1ed6319d8',1,'utl::indev_it::operator=()'],['../structutl_1_1iodev__it_1_1value__type__t.html#a63b8721380bbfb5f976bd050f2f1f203',1,'utl::iodev_it::value_type_t::operator=()'],['../classutl_1_1iodev__it.html#a55d221d75ed1cd82542bacc0d5acb454',1,'utl::iodev_it::operator=()'],['../classutl_1_1idx__dev.html#ac817369b5efb068d648328320a9cf6a4',1,'utl::idx_dev::operator=()'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#ae31763ec2ad32c26b43f010f850fe3eb',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::operator=()'],['../classutl_1_1in__dev.html#a55dc56f1277b2bd04b154fbf19d8853f',1,'utl::in_dev::operator=()'],['../classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#ab9b57ad0f6857b657bc6a870986f8648',1,'utl::in_dev< virtual_tag, data_t, streamsize >::operator=()'],['../classutl_1_1inbuf__dev.html#a7aaf5bc892d6247cb6bb547cf331704c',1,'utl::inbuf_dev::operator=()'],['../classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#aa9f8f3abcc53098ef0c5dc1a8f013957',1,'utl::inbuf_dev< virtual_tag, data_t, streamsize >::operator=()'],['../classutl_1_1ostream__dev.html#a385318ff45d575ec92801f7c0e29e9c8',1,'utl::ostream_dev::operator=()'],['../classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#a013bfe883ab1f72c3d19678227072178',1,'utl::ostream_dev< virtual_tag, data_t >::operator=()'],['../classutl_1_1out__dev.html#aba2f65a858ae47167f46979337299f44',1,'utl::out_dev::operator=()'],['../classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a6093ba41c3bddd450fbad0fd0bf3ba65',1,'utl::out_dev< virtual_tag, data_t, streamsize >::operator=()'],['../structutl_1_1meta_1_1nat__.html#a905f7286e42782137f31227a7c891355',1,'utl::meta::nat_::operator=()']]], + ['operator_3d_3d',['operator==',['../namespaceutl.html#a841f326020eb98fa4b8f764bf35442c0',1,'utl::operator==(const array< _Tp, _Nm > &lhs, const array< _Tp, _Nm > &rhs)'],['../namespaceutl.html#a2e319bae5449ee07261f547a94c31f87',1,'utl::operator==(const id_t< _Tp, _Nm > &lhs, const id_t< _Tp, _Nm > &rhs)'],['../namespaceutl.html#a5ba78d196f9abb63a1d2fff13cabe636',1,'utl::operator==(const istreamdev_it< _C1, _D1 > &lhs, const istreamdev_it< _C2, _D2 > &rhs) noexcept'],['../namespaceutl.html#a6726b451c897c4581e8781a819c025ba',1,'utl::operator==(const outdev_it< _Cont1, _It1, _beg1, _end1 > &lhs, const outdev_it< _Cont2, _It2, _beg2, _end2 > &rhs) noexcept'],['../namespaceutl.html#aa30fa8ed97138ea75003069144f78e97',1,'utl::operator==(const indev_it< _Cont1, _It1, _beg1, _size1 > &x, const indev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept'],['../namespaceutl.html#a7ad3384389159ce575279712fb92e3c6',1,'utl::operator==(const iodev_it< _Cont1, _It1, _beg1, _size1 > &x, const iodev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept']]], + ['operator_3e',['operator>',['../namespaceutl.html#a1d5c761bf59037aeed9157e4f63bed9e',1,'utl::operator>(const array< _Tp, _Nm > &lhs, const array< _Tp, _Nm > &rhs)'],['../namespaceutl.html#aa88fd098a89e4477ff55319be1d44a64',1,'utl::operator>(const id_t< _Tp, _Nm > &lhs, const id_t< _Tp, _Nm > &rhs)'],['../namespaceutl.html#a254af18987f59f185ceeaac1aaf3c1e1',1,'utl::operator>(const indev_it< _Cont1, _It1, _beg1, _size1 > &x, const indev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept'],['../namespaceutl.html#a623dee5dafd7fe274dc205c3e20c96af',1,'utl::operator>(const iodev_it< _Cont1, _It1, _beg1, _size1 > &x, const iodev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept']]], + ['operator_3e_3d',['operator>=',['../namespaceutl.html#a942cac675f6dd1313807eccb407ebec6',1,'utl::operator>=(const array< _Tp, _Nm > &lhs, const array< _Tp, _Nm > &rhs)'],['../namespaceutl.html#a3f53717133a73715f387ebac4b6f22b3',1,'utl::operator>=(const id_t< _Tp, _Nm > &lhs, const id_t< _Tp, _Nm > &rhs)'],['../namespaceutl.html#abdada8bc0cbd311c4dea3dde078f5483',1,'utl::operator>=(const indev_it< _Cont1, _It1, _beg1, _size1 > &x, const indev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept'],['../namespaceutl.html#a1988125a6394416aaf6ae85eaafa3ec4',1,'utl::operator>=(const iodev_it< _Cont1, _It1, _beg1, _size1 > &x, const iodev_it< _Cont2, _It2, _beg2, _size2 > &y) noexcept']]], + ['operator_3e_3e',['operator>>',['../classutl_1_1idx__dev.html#a296be5211871773b2b8aa5409772ce6a',1,'utl::idx_dev::operator>>(_Dst_t &dst)'],['../classutl_1_1idx__dev.html#af5822e3e77e2748a6eaf13b9381e0736',1,'utl::idx_dev::operator>>(_Dst_t *dst)=delete'],['../classutl_1_1idx__dev.html#a3480680f94fcb06f9ee8b2e5dcdb4dcd',1,'utl::idx_dev::operator>>(data_t &dst)'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a6e758bd01a5d893a8b13476ed55213cc',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::operator>>(_Dst_t &dst)'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#abd071d6feed8ce4d07d1eb2d60995c6d',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::operator>>(_Dst_t *dst)=delete'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a379c115c72386cd4407443d9f3c6ac53',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::operator>>(data_t &dst)'],['../classutl_1_1in__dev.html#abe8aa85c0dbe0ddb3745ded02b4e68fe',1,'utl::in_dev::operator>>(_Dst_t &dst)'],['../classutl_1_1in__dev.html#a60b3bba96e6bfd2091e594fdbc93fd6f',1,'utl::in_dev::operator>>(_Dst_t *dst)=delete'],['../classutl_1_1in__dev.html#a98774619e8575162a8be271833282690',1,'utl::in_dev::operator>>(data_t &dst)'],['../classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a762d865283d5d990885a0851fddf24ee',1,'utl::in_dev< virtual_tag, data_t, streamsize >::operator>>(_Dst_t &dst)'],['../classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a57e046ec714ccd6a0bd2b2878de85f18',1,'utl::in_dev< virtual_tag, data_t, streamsize >::operator>>(_Dst_t *dst)=delete'],['../classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a645886b95bec35e1d8a9d9247d47527a',1,'utl::in_dev< virtual_tag, data_t, streamsize >::operator>>(data_t &dst)'],['../classutl_1_1inbuf__dev.html#aca17fb240dfe221effa5a2092563d185',1,'utl::inbuf_dev::operator>>(_Dst_t &dst)'],['../classutl_1_1inbuf__dev.html#a48a8160d1dce4542b0b09cff3f6a488b',1,'utl::inbuf_dev::operator>>(_Dst_t *dst)=delete'],['../classutl_1_1inbuf__dev.html#a6b11ed7628520b4dfe0bd438ccc58197',1,'utl::inbuf_dev::operator>>(data_t &dst)'],['../classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a84a3364ab33a4fa6ac0983da47a9276f',1,'utl::inbuf_dev< virtual_tag, data_t, streamsize >::operator>>(_Dst_t &dst)'],['../classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a9e6b304cc17303d810bc53e411f39970',1,'utl::inbuf_dev< virtual_tag, data_t, streamsize >::operator>>(_Dst_t *dst)=delete'],['../classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#aefdbcf1d006494f612d6fcd8795ba472',1,'utl::inbuf_dev< virtual_tag, data_t, streamsize >::operator>>(data_t &dst)']]], + ['operator_5b_5d',['operator[]',['../structutl_1_1array.html#a63373518cc6efade8c555ee1ebc1f754',1,'utl::array::operator[](size_type n) noexcept'],['../structutl_1_1array.html#a4f91b2d8e9f4c2365d4d58cf1657ac95',1,'utl::array::operator[](size_type n) const noexcept'],['../structutl_1_1id__t.html#acc2df57ec1921165238adc13f1a2ad7d',1,'utl::id_t::operator[](size_type n) noexcept'],['../structutl_1_1id__t.html#a70f4ed6c1efda0d4098ba2e3177da329',1,'utl::id_t::operator[](size_type n) const noexcept'],['../classutl_1_1indev__it.html#acc0466f1af48d7080acde0e9c4241585',1,'utl::indev_it::operator[]()'],['../classutl_1_1iodev__it.html#a16c35c2eab7f92794764b7b5c48f9e8e',1,'utl::iodev_it::operator[]()'],['../classutl_1_1idx__dev.html#a5e0d647ad1cc5533e4f70292d8793a9f',1,'utl::idx_dev::operator[]()'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#aa636cd6c14608d8f5a0d16d409be3aaa',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::operator[]()']]], + ['ostream_5fdev',['ostream_dev',['../classutl_1_1ostream__dev.html#a6bb520cb5397ab9f7579c868311017b5',1,'utl::ostream_dev::ostream_dev()=default'],['../classutl_1_1ostream__dev.html#afdb03e10c54fa5d079f59b0bb938c82c',1,'utl::ostream_dev::ostream_dev(const ostream_dev_t &)=delete'],['../classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#a977d2f5eb87ae8b301921542be350a93',1,'utl::ostream_dev< virtual_tag, data_t >::ostream_dev()=default'],['../classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#a0662ca7855b82a14b50d48a710c64709',1,'utl::ostream_dev< virtual_tag, data_t >::ostream_dev(const ostream_dev_t &)=delete']]], + ['ostreamdev_5fit',['ostreamdev_it',['../classutl_1_1ostreamdev__it.html#a6325c4575c2590a9af15091828f96253',1,'utl::ostreamdev_it::ostreamdev_it(cont_t *owner=nullptr) noexcept'],['../classutl_1_1ostreamdev__it.html#a0743c044728fa9b33e0e0648da91982d',1,'utl::ostreamdev_it::ostreamdev_it(const iterator_t &it) noexcept']]], + ['out_5fdev',['out_dev',['../classutl_1_1out__dev.html#a0ceaf76475484f35174d96561dea73bf',1,'utl::out_dev::out_dev()=default'],['../classutl_1_1out__dev.html#a36aed8619cf12b4f04334c7e0b219fb6',1,'utl::out_dev::out_dev(const out_dev_t &)=delete'],['../classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a470befe8e2518939190977d76bea06ca',1,'utl::out_dev< virtual_tag, data_t, streamsize >::out_dev()=default'],['../classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#ad4b62c477f8e553d78a1ab051ad81a7c',1,'utl::out_dev< virtual_tag, data_t, streamsize >::out_dev(const out_dev &)=delete']]], + ['outdev_5fit',['outdev_it',['../classutl_1_1outdev__it.html#a691c350e365d9ba037fe5f7541425a50',1,'utl::outdev_it::outdev_it() noexcept'],['../classutl_1_1outdev__it.html#ac65bea2b8547649771c73d8110ba1115',1,'utl::outdev_it::outdev_it(cont_t *owner, index_t cursor=eod) noexcept'],['../classutl_1_1outdev__it.html#ad7226a24b2576fbc57ad740f04bdde6b',1,'utl::outdev_it::outdev_it(const iterator_t &it) noexcept']]], + ['owner',['owner',['../classutl_1_1istreamdev__it.html#ad5ad8b543316b11bcc551a03a19296a7',1,'utl::istreamdev_it::owner()'],['../classutl_1_1outdev__it.html#a05b35f89ff6e1682b2dbc36198b8e813',1,'utl::outdev_it::owner()'],['../classutl_1_1indev__it.html#aaa0295b6a2ed86e5b1018d049b988c8b',1,'utl::indev_it::owner()'],['../classutl_1_1iodev__it.html#a1e3b3608c6378257c77853cb61820438',1,'utl::iodev_it::owner()']]] +]; diff --git a/doc/html/search/functions_c.html b/doc/html/search/functions_c.html new file mode 100644 index 0000000..3a33d87 --- /dev/null +++ b/doc/html/search/functions_c.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/functions_c.js b/doc/html/search/functions_c.js new file mode 100644 index 0000000..9cb32c8 --- /dev/null +++ b/doc/html/search/functions_c.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['ptr',['Ptr',['../structutl_1_1array__traits.html#ac642d673d85d054616bb143326a9ea79',1,'utl::array_traits::Ptr()'],['../structutl_1_1array__traits_3_01___tp_00_010_01_4.html#ad5f207688e873862870d58889b2e5fec',1,'utl::array_traits< _Tp, 0 >::Ptr()'],['../structutl_1_1id__traits.html#a570679371037d3f6716f2bb87f9e67d5',1,'utl::id_traits::Ptr()'],['../structutl_1_1id__traits_3_01___tp_00_010_01_4.html#a4d66c1e3f4bf6b06bbe030a28cd5e878',1,'utl::id_traits< _Tp, 0 >::Ptr()']]], + ['put',['put',['../classutl_1_1idx__dev.html#af588d605d6968164cca3e348b5363613',1,'utl::idx_dev::put(const data_t &data, idx_t cursor)'],['../classutl_1_1idx__dev.html#a4d91ec798d3bf0da54467b4a394da839',1,'utl::idx_dev::put(const data_t *data, size_t n, idx_t cursor)'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a183e46d89452a51a029387f621fb4e9f',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::put(const data_t &data, idx_t cursor)'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a58ee979bbc14205548db85cbfbed7aba',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::put(const data_t *data, size_t n, idx_t cursor)'],['../classutl_1_1ostream__dev.html#a70a8d008d93a5a3f50de63dc70b7b4e4',1,'utl::ostream_dev::put(const data_t &data)'],['../classutl_1_1ostream__dev.html#a29f2cad2b83c801cfdab235c880e528b',1,'utl::ostream_dev::put(const data_t *data, size_t n)'],['../classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#aaee696bf560e084e61b4fb0217569d1a',1,'utl::ostream_dev< virtual_tag, data_t >::put(const data_t &data)'],['../classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#a8014501f6c22a8dc0a366898e92fa83c',1,'utl::ostream_dev< virtual_tag, data_t >::put(const data_t *data, size_t n)'],['../classutl_1_1out__dev.html#a640214f205468c235dec25bab8fb6c08',1,'utl::out_dev::put(const data_t &data)'],['../classutl_1_1out__dev.html#a0cfe5f4d3c3e4fb21abe9e88101e0bb8',1,'utl::out_dev::put(const data_t *data, size_t n)'],['../classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a7311e58e96e924cdd7f06ff4713f3317',1,'utl::out_dev< virtual_tag, data_t, streamsize >::put(const data_t &data)'],['../classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#aa781ec6a6e500451a357f04b1436d8e0',1,'utl::out_dev< virtual_tag, data_t, streamsize >::put(const data_t *data, size_t n)']]], + ['put_5f',['put_',['../classutl_1_1idx__dev.html#a7b986ccd5cc6a2ece87dacdb0b8f0a0d',1,'utl::idx_dev::put_(const data_t &data, idx_t idx)'],['../classutl_1_1idx__dev.html#aef5b7b2d58b2502ea7e60cfc9835e9b6',1,'utl::idx_dev::put_(const data_t *data, size_t n, idx_t idx)'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a7d622b995c072399b308dc61a88e9950',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::put_(const data_t &, idx_t)=0'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a3069ad5d209e9fed4c181e8e352b8b95',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::put_(const data_t *, size_t n, idx_t)=0'],['../classutl_1_1ostream__dev.html#acfe4768762548db0d99cde8a802b0723',1,'utl::ostream_dev::put_(const data_t &data)'],['../classutl_1_1ostream__dev.html#a33546e98ec0cbd6cef862cb4d9853c7a',1,'utl::ostream_dev::put_(const data_t *data, size_t n)'],['../classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#abb1f94bc1a9bc28ea51e524b96aaca66',1,'utl::ostream_dev< virtual_tag, data_t >::put_(const data_t &data)=0'],['../classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#aecbc9b416ded99df2b87e33e90236b41',1,'utl::ostream_dev< virtual_tag, data_t >::put_(const data_t *data, size_t n)=0'],['../classutl_1_1out__dev.html#a29e236940e8fb13387b264379136b504',1,'utl::out_dev::put_(const data_t &data)'],['../classutl_1_1out__dev.html#a3bbf2bb1c25bae601cd0d6e2b1f886b2',1,'utl::out_dev::put_(const data_t *data, size_t n)'],['../classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a932c5664fc281e141219d8fbd826fc7e',1,'utl::out_dev< virtual_tag, data_t, streamsize >::put_(const data_t &data)=0'],['../classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a3b895f0d8b77b3c9eb16111826ae91a0',1,'utl::out_dev< virtual_tag, data_t, streamsize >::put_(const data_t *data, size_t n)=0']]] +]; diff --git a/doc/html/search/functions_d.html b/doc/html/search/functions_d.html new file mode 100644 index 0000000..31b75b8 --- /dev/null +++ b/doc/html/search/functions_d.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/functions_d.js b/doc/html/search/functions_d.js new file mode 100644 index 0000000..f916f20 --- /dev/null +++ b/doc/html/search/functions_d.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['rbegin',['rbegin',['../structutl_1_1array.html#aeeca6bc1e57a142c30590d3c7dc134a5',1,'utl::array::rbegin() noexcept'],['../structutl_1_1array.html#a921a4f2e174c274f26189f89d38187ca',1,'utl::array::rbegin() const noexcept'],['../structutl_1_1id__t.html#a96ed68f02faf9800e93113bef1e30182',1,'utl::id_t::rbegin() noexcept'],['../structutl_1_1id__t.html#a52f0a2de4ae90137d40a645389a6ec53',1,'utl::id_t::rbegin() const noexcept']]], + ['ref',['Ref',['../structutl_1_1array__traits.html#a7a759b20a4dc743a66c3b1729358f605',1,'utl::array_traits::Ref()'],['../structutl_1_1array__traits_3_01___tp_00_010_01_4.html#a3f90cb0fbb870fcc36fc6d404857032b',1,'utl::array_traits< _Tp, 0 >::Ref()'],['../structutl_1_1id__traits.html#adcca147b5e6dd495ce61272257867a13',1,'utl::id_traits::Ref()'],['../structutl_1_1id__traits_3_01___tp_00_010_01_4.html#a578c8ad9389e23cfb3322ebe67875f4c',1,'utl::id_traits< _Tp, 0 >::Ref()']]], + ['rend',['rend',['../structutl_1_1array.html#a322f008d90c279fc4170d3ae679d13ea',1,'utl::array::rend() noexcept'],['../structutl_1_1array.html#ac46fe45806b4328b6bed1fb1313818a2',1,'utl::array::rend() const noexcept'],['../structutl_1_1id__t.html#a14050fe2cdcdd4a524d5e3f46f9d51f9',1,'utl::id_t::rend() noexcept'],['../structutl_1_1id__t.html#ae04946523c0131b6fb73f1de369c2558',1,'utl::id_t::rend() const noexcept']]], + ['reset',['reset',['../classutl_1_1__1wire__i.html#a0a7ef731162e81e0e2e07ae9cb9e6ffa',1,'utl::_1wire_i::reset()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a735ed5cb622a1478c57537c131ede7a7',1,'utl::_1wire_i< virtual_tag >::reset()']]], + ['rx_5fdata',['rx_data',['../classutl_1_1__1wire__i.html#a2585e7166d14b7f36bd47db2e43cc0b1',1,'utl::_1wire_i::rx_data(Speed s=Speed::STD)'],['../classutl_1_1__1wire__i.html#ad20382d5d50ee7d457bc4079b9c38a2a',1,'utl::_1wire_i::rx_data(byte_t *in, size_t n, Speed s=Speed::STD)'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a525b58c7a1110d39f1eb594f12edb16c',1,'utl::_1wire_i< virtual_tag >::rx_data(Speed s=Speed::STD)'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a5f3c707157c571d07a8a3d882900de95',1,'utl::_1wire_i< virtual_tag >::rx_data(byte_t *in, size_t n, Speed s=Speed::STD)'],['../classutl_1_1i2c__i.html#ab2f6a579096b4872f5dfd1530e200eda',1,'utl::i2c_i::rx_data()'],['../classutl_1_1i2c__i_3_01virtual__tag_01_4.html#a6dccb32f00830226f6782034177c7d8b',1,'utl::i2c_i< virtual_tag >::rx_data()'],['../classutl_1_1spi__i.html#a846dead32b91efcb48eed614daf68e8f',1,'utl::spi_i::rx_data()'],['../classutl_1_1spi__i.html#a2053009da5364ead720aebd7cc537c21',1,'utl::spi_i::rx_data(byte_t *in, size_t n)'],['../classutl_1_1spi__i_3_01virtual__tag_01_4.html#a8ccd44f6fa97bbfe8cda5595436eb3a7',1,'utl::spi_i< virtual_tag >::rx_data()'],['../classutl_1_1spi__i_3_01virtual__tag_01_4.html#a59245cc0d924d160268b6813975a7c5f',1,'utl::spi_i< virtual_tag >::rx_data(byte_t *in, size_t n)']]] +]; diff --git a/doc/html/search/functions_e.html b/doc/html/search/functions_e.html new file mode 100644 index 0000000..cddb9bb --- /dev/null +++ b/doc/html/search/functions_e.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/functions_e.js b/doc/html/search/functions_e.js new file mode 100644 index 0000000..9a2167d --- /dev/null +++ b/doc/html/search/functions_e.js @@ -0,0 +1,17 @@ +var searchData= +[ + ['scl',['SCL',['../classutl_1_1i2c__bb__i.html#a0c9f7d9fc10ac2ceaef93cb6daf8a699',1,'utl::i2c_bb_i::SCL()'],['../classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html#aca7b42f6339cbfbba4734d29f585cf2b',1,'utl::i2c_bb_i< virtual_tag >::SCL()']]], + ['sclk',['SCLK',['../classutl_1_1spi__bb__i.html#af7afcca54b5ab9871caccb38794bd9d1',1,'utl::spi_bb_i::SCLK()'],['../classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#aab4450d67ccbabe2b4724290118e3d3c',1,'utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::SCLK()']]], + ['sda',['SDA',['../classutl_1_1i2c__bb__i.html#aa197be76016b82fd6f8b66875430d922',1,'utl::i2c_bb_i::SDA()'],['../classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html#ae28d0cd65c9b3eedc65d3f0a68e47585',1,'utl::i2c_bb_i< virtual_tag >::SDA()']]], + ['select',['select',['../structutl_1_1meta_1_1at__impl_1_1at__head___3_01typelist_3_01voids_8_8_8_01_4_01_4.html#a6bab76042dcae821a961a0a4410c83ff',1,'utl::meta::at_impl::at_head_< typelist< voids... > >::select(voids..., T *,...)'],['../structutl_1_1meta_1_1at__impl_1_1at__head___3_01typelist_3_01voids_8_8_8_01_4_01_4.html#a139a326849d5869fbe877260ff3cff31',1,'utl::meta::at_impl::at_head_< typelist< voids... > >::select(...)']]], + ['shift',['shift',['../classutl_1_1spi__bb__i.html#a0d017c3bc5c583ad802027914e492b3a',1,'utl::spi_bb_i::shift(byte_t &b)'],['../classutl_1_1spi__bb__i.html#a93d43e3fa8e2112757281e0c20070eb4',1,'utl::spi_bb_i::shift(byte_t &b)'],['../classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#ab7b8568f6383ca83cc3b9c7a4bf14102',1,'utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::shift(byte_t &b)'],['../classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#a4de868a08bed878446e4fa026275cd23',1,'utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::shift(byte_t &b)']]], + ['size',['size',['../structutl_1_1array.html#ab3fa3ca8c774c210a55dbd699ceb345b',1,'utl::array::size()'],['../structutl_1_1id__t.html#aff09cfb8c3d106dd24a7107f7c9a68f3',1,'utl::id_t::size()'],['../structutl_1_1meta_1_1typelist.html#af898a273ef1135286de6cef169db9c2d',1,'utl::meta::typelist::size()']]], + ['skip',['skip',['../classutl_1_1__1wire__i.html#a0a405f818fd45eb2799e6b4477021a0a',1,'utl::_1wire_i::skip()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#ad480b5053884e51e8089cdc691017e4d',1,'utl::_1wire_i< virtual_tag >::skip()']]], + ['skip_5fn_5fovdr',['skip_n_ovdr',['../classutl_1_1__1wire__i.html#a8b0b0ea95c02a40721f1e159119b3506',1,'utl::_1wire_i::skip_n_ovdr()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a8d45e55f347c35e77ec55b905516f8fd',1,'utl::_1wire_i< virtual_tag >::skip_n_ovdr()']]], + ['speed',['speed',['../classutl_1_1__1wire__i.html#ae770650b54374721e04f96994385c570',1,'utl::_1wire_i::speed() const'],['../classutl_1_1__1wire__i.html#adc5c34170794ae99562211faea68a4a6',1,'utl::_1wire_i::speed(Speed s)'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a746fbec07300aeed8ebb75251bb4265a',1,'utl::_1wire_i< virtual_tag >::speed() const =0'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#af12694d7025474de1ff09270f0373080',1,'utl::_1wire_i< virtual_tag >::speed(Speed)=0'],['../classutl_1_1__1wire__uart__i.html#a1b807cfc2a67eee08efa48ef36b99f74',1,'utl::_1wire_uart_i::speed() const'],['../classutl_1_1__1wire__uart__i.html#aa56f7a1497c540397bebf008416118b6',1,'utl::_1wire_uart_i::speed(Speed s)'],['../classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html#aae5fc7143ee609cb5700d70140d2ab3e',1,'utl::_1wire_uart_i< virtual_tag >::speed() const'],['../classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html#afe3fead0d947a93b1f9e63bc934bb56c',1,'utl::_1wire_uart_i< virtual_tag >::speed(Speed s)']]], + ['spi_5fbb_5fi',['spi_bb_i',['../classutl_1_1spi__bb__i.html#a49a61ba9a8e140e45d73e1f634061c6a',1,'utl::spi_bb_i::spi_bb_i()'],['../classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#a85643f4a35c3fbc6e6d1047a42e8c832',1,'utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::spi_bb_i()']]], + ['spi_5fi',['spi_i',['../classutl_1_1spi__i.html#ad66605cdf90f6d24cad3dc5ecda94b77',1,'utl::spi_i::spi_i()=default'],['../classutl_1_1spi__i.html#a1d6facb9b9adf91a6589fe029325bd55',1,'utl::spi_i::spi_i(const type &)=delete'],['../classutl_1_1spi__i_3_01virtual__tag_01_4.html#a954d8294026bf4628771e588e8a0eb5e',1,'utl::spi_i< virtual_tag >::spi_i()=default'],['../classutl_1_1spi__i_3_01virtual__tag_01_4.html#a142e481dff89219cab72ec444fc069db',1,'utl::spi_i< virtual_tag >::spi_i(const type &)=delete']]], + ['start',['start',['../classutl_1_1i2c__i.html#a3591683e5fbf17b582f6ac1f79af871d',1,'utl::i2c_i::start()'],['../classutl_1_1i2c__i_3_01virtual__tag_01_4.html#ad7e9c66a85ab55f80bb0977208517603',1,'utl::i2c_i< virtual_tag >::start()']]], + ['stop',['stop',['../classutl_1_1i2c__i.html#a1310b52ac908b8c37059fb253cc3f56e',1,'utl::i2c_i::stop()'],['../classutl_1_1i2c__i_3_01virtual__tag_01_4.html#a86b0da49baf7d149ce5e316db186d65c',1,'utl::i2c_i< virtual_tag >::stop()']]], + ['swap',['swap',['../structutl_1_1array.html#a437559d71769318cc7289dce06659c39',1,'utl::array::swap()'],['../structutl_1_1id__t.html#af2d4fabd51c5e3aabbb828d356354977',1,'utl::id_t::swap()'],['../namespaceutl.html#ae0f873b4883af7cc18cb23dd2810f4e6',1,'utl::swap()']]] +]; diff --git a/doc/html/search/functions_f.html b/doc/html/search/functions_f.html new file mode 100644 index 0000000..4967292 --- /dev/null +++ b/doc/html/search/functions_f.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/functions_f.js b/doc/html/search/functions_f.js new file mode 100644 index 0000000..9bf4601 --- /dev/null +++ b/doc/html/search/functions_f.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['tx_5fdata',['tx_data',['../classutl_1_1__1wire__i.html#a59e7196e10e53467b62ed369ff78f07d',1,'utl::_1wire_i::tx_data(byte_t out, Speed s=Speed::STD)'],['../classutl_1_1__1wire__i.html#ab3bd112ff66074bdaf7357b91ca692a8',1,'utl::_1wire_i::tx_data(const byte_t *out, byte_t *in, size_t n, Speed s=Speed::STD)'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a9fbf69bafc3b697d3cf5ab09055540c8',1,'utl::_1wire_i< virtual_tag >::tx_data(byte_t out, Speed s=Speed::STD)'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a2fe8eabe2f67410123913b240f039b33',1,'utl::_1wire_i< virtual_tag >::tx_data(const byte_t *out, byte_t *in, size_t n, Speed s=Speed::STD)'],['../classutl_1_1i2c__i.html#aaf0b0ceec57fd8014ea3e6b58e9bfe3d',1,'utl::i2c_i::tx_data()'],['../classutl_1_1i2c__i_3_01virtual__tag_01_4.html#a5e60b4bda2d7203aa8f2df35aa6dfa5d',1,'utl::i2c_i< virtual_tag >::tx_data()'],['../classutl_1_1spi__i.html#ac8376d88480a992ac47699637e1a29a5',1,'utl::spi_i::tx_data(byte_t out)'],['../classutl_1_1spi__i.html#af3e303c2982202261700044d31596248',1,'utl::spi_i::tx_data(const byte_t *out, byte_t *in, size_t n)'],['../classutl_1_1spi__i_3_01virtual__tag_01_4.html#ac7b587521c1fdc83d32164dcee3c7b40',1,'utl::spi_i< virtual_tag >::tx_data(byte_t out)'],['../classutl_1_1spi__i_3_01virtual__tag_01_4.html#a2777c812eb27d7b3d106c55b31819d10',1,'utl::spi_i< virtual_tag >::tx_data(const byte_t *out, byte_t *in, size_t n)']]] +]; diff --git a/doc/html/search/groups_0.html b/doc/html/search/groups_0.html new file mode 100644 index 0000000..f4895cb --- /dev/null +++ b/doc/html/search/groups_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/groups_0.js b/doc/html/search/groups_0.js new file mode 100644 index 0000000..248770f --- /dev/null +++ b/doc/html/search/groups_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['concepts',['Concepts',['../group__concepts.html',1,'']]], + ['crtp_20idiom_20support_20header',['CRTP idiom support header',['../group__crtp.html',1,'']]] +]; diff --git a/doc/html/search/groups_1.html b/doc/html/search/groups_1.html new file mode 100644 index 0000000..3195265 --- /dev/null +++ b/doc/html/search/groups_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/groups_1.js b/doc/html/search/groups_1.js new file mode 100644 index 0000000..3637548 --- /dev/null +++ b/doc/html/search/groups_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['detection',['Detection',['../group__detection.html',1,'']]] +]; diff --git a/doc/html/search/groups_2.html b/doc/html/search/groups_2.html new file mode 100644 index 0000000..5882446 --- /dev/null +++ b/doc/html/search/groups_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/groups_2.js b/doc/html/search/groups_2.js new file mode 100644 index 0000000..5c4fea5 --- /dev/null +++ b/doc/html/search/groups_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['invoke',['Invoke',['../group__invoke.html',1,'']]], + ['iterators',['Iterators',['../group__iterators.html',1,'']]] +]; diff --git a/doc/html/search/groups_3.html b/doc/html/search/groups_3.html new file mode 100644 index 0000000..bd23aa6 --- /dev/null +++ b/doc/html/search/groups_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/groups_3.js b/doc/html/search/groups_3.js new file mode 100644 index 0000000..d77a751 --- /dev/null +++ b/doc/html/search/groups_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['logic',['Logic',['../group__logic.html',1,'']]] +]; diff --git a/doc/html/search/groups_4.html b/doc/html/search/groups_4.html new file mode 100644 index 0000000..34edffc --- /dev/null +++ b/doc/html/search/groups_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/groups_4.js b/doc/html/search/groups_4.js new file mode 100644 index 0000000..70a5f7e --- /dev/null +++ b/doc/html/search/groups_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['operators',['operators',['../group__integral.html',1,'']]] +]; diff --git a/doc/html/search/groups_5.html b/doc/html/search/groups_5.html new file mode 100644 index 0000000..6d9adbf --- /dev/null +++ b/doc/html/search/groups_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/groups_5.js b/doc/html/search/groups_5.js new file mode 100644 index 0000000..9a83bfd --- /dev/null +++ b/doc/html/search/groups_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['sfinae',['Sfinae',['../group__sfinae.html',1,'']]], + ['selection',['selection',['../group__type.html',1,'']]] +]; diff --git a/doc/html/search/groups_6.html b/doc/html/search/groups_6.html new file mode 100644 index 0000000..f8f8085 --- /dev/null +++ b/doc/html/search/groups_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/groups_6.js b/doc/html/search/groups_6.js new file mode 100644 index 0000000..116b3df --- /dev/null +++ b/doc/html/search/groups_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['typelist',['Typelist',['../group__typelist.html',1,'']]] +]; diff --git a/doc/html/search/groups_7.html b/doc/html/search/groups_7.html new file mode 100644 index 0000000..8c734ab --- /dev/null +++ b/doc/html/search/groups_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/groups_7.js b/doc/html/search/groups_7.js new file mode 100644 index 0000000..e57e0b3 --- /dev/null +++ b/doc/html/search/groups_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['version',['version',['../group__version.html',1,'']]] +]; diff --git a/doc/html/search/mag_sel.png b/doc/html/search/mag_sel.png new file mode 100644 index 0000000000000000000000000000000000000000..81f6040a2092402b4d98f9ffa8855d12a0d4ca17 GIT binary patch literal 563 zcmV-30?hr1P)zxx&tqG15pu7)IiiXFflOc2k;dXd>%13GZAy? zRz!q0=|E6a6vV)&ZBS~G9oe0kbqyw1*gvY`{Pop2oKq#FlzgXt@Xh-7fxh>}`Fxg> z$%N%{$!4=5nM{(;=c!aG1Ofr^Do{u%Ih{^&Fc@H2)+a-?TBXrw5DW&z%Nb6mQ!L9O zl}b@6mB?f=tX3;#vl)}ggh(Vpyh(IK z(Mb0D{l{U$FsRjP;!{($+bsaaVi8T#1c0V#qEIOCYa9@UVLV`f__E81L;?WEaRA;Y zUH;rZ;vb;mk7JX|$=i3O~&If0O@oZfLg8gfIjW=dcBsz;gI=!{-r4# z4%6v$&~;q^j7Fo67yJ(NJWuX+I~I!tj^nW3?}^9bq|<3^+vapS5sgM^x7!cs(+mMT z&y%j};&~po+YO)3hoUH4E*E;e9>?R6SS&`X)p`njycAVcg{rEb41T{~Hk(bl-7eSb zmFxA2uIqo#@R?lKm50ND`~6Nfn|-b1|L6O98vt3Tx@gKz#isxO002ovPDHLkV1kyW B_l^Jn literal 0 HcmV?d00001 diff --git a/doc/html/search/namespaces_0.html b/doc/html/search/namespaces_0.html new file mode 100644 index 0000000..f55ca63 --- /dev/null +++ b/doc/html/search/namespaces_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/namespaces_0.js b/doc/html/search/namespaces_0.js new file mode 100644 index 0000000..69ebf34 --- /dev/null +++ b/doc/html/search/namespaces_0.js @@ -0,0 +1,36 @@ +var searchData= +[ + ['_5f1wire_5fi_5fdet',['_1wire_i_det',['../namespaceutl_1_1__1wire__i__det.html',1,'utl']]], + ['apply_5fimpl',['apply_impl',['../namespaceutl_1_1meta_1_1apply__impl.html',1,'utl::meta']]], + ['at_5fimpl',['at_impl',['../namespaceutl_1_1meta_1_1at__impl.html',1,'utl::meta']]], + ['back_5fimpl',['back_impl',['../namespaceutl_1_1meta_1_1back__impl.html',1,'utl::meta']]], + ['cat_5fimpl',['cat_impl',['../namespaceutl_1_1meta_1_1cat__impl.html',1,'utl::meta']]], + ['common_5fimpl',['common_impl',['../namespaceutl_1_1common__impl.html',1,'utl']]], + ['count_5fif_5fimpl',['count_if_impl',['../namespaceutl_1_1meta_1_1count__if__impl.html',1,'utl::meta']]], + ['detail',['detail',['../namespaceutl_1_1detail.html',1,'utl::detail'],['../namespaceutl_1_1meta_1_1detail.html',1,'utl::meta::detail']]], + ['details',['details',['../namespaceutl_1_1details.html',1,'utl']]], + ['filter_5fimpl',['filter_impl',['../namespaceutl_1_1meta_1_1filter__impl.html',1,'utl::meta']]], + ['find_5fif_5fimpl',['find_if_impl',['../namespaceutl_1_1meta_1_1find__if__impl.html',1,'utl::meta']]], + ['fold_5fimpl',['fold_impl',['../namespaceutl_1_1meta_1_1fold__impl.html',1,'utl::meta']]], + ['front_5fimpl',['front_impl',['../namespaceutl_1_1meta_1_1front__impl.html',1,'utl::meta']]], + ['i2c_5fi_5fdetails',['i2c_i_details',['../namespaceutl_1_1i2c__i__details.html',1,'utl']]], + ['idx_5fdev_5fdetails',['idx_dev_details',['../namespaceutl_1_1idx__dev__details.html',1,'utl']]], + ['idxdev_5fit_5fdetails',['idxdev_it_details',['../namespaceutl_1_1idxdev__it__details.html',1,'utl']]], + ['in_5fdev_5fdetails',['in_dev_details',['../namespaceutl_1_1in__dev__details.html',1,'utl']]], + ['inbuf_5fdev_5fdetails',['inbuf_dev_details',['../namespaceutl_1_1inbuf__dev__details.html',1,'utl']]], + ['indev_5fit_5fdetails',['indev_it_details',['../namespaceutl_1_1indev__it__details.html',1,'utl']]], + ['meta',['meta',['../namespaceutl_1_1meta.html',1,'utl']]], + ['out_5fdev_5fdetails',['out_dev_details',['../namespaceutl_1_1out__dev__details.html',1,'utl']]], + ['outdev_5fit_5fdetails',['outdev_it_details',['../namespaceutl_1_1outdev__it__details.html',1,'utl']]], + ['pop_5fback_5fimpl',['pop_back_impl',['../namespaceutl_1_1meta_1_1pop__back__impl.html',1,'utl::meta']]], + ['pop_5ffront_5fimpl',['pop_front_impl',['../namespaceutl_1_1meta_1_1pop__front__impl.html',1,'utl::meta']]], + ['replace_5fif_5fimpl',['replace_if_impl',['../namespaceutl_1_1meta_1_1replace__if__impl.html',1,'utl::meta']]], + ['rev_5ffold_5fimpl',['rev_fold_impl',['../namespaceutl_1_1meta_1_1rev__fold__impl.html',1,'utl::meta']]], + ['reverse_5fimpl',['reverse_impl',['../namespaceutl_1_1meta_1_1reverse__impl.html',1,'utl::meta']]], + ['seek_5fif_5fimpl',['seek_if_impl',['../namespaceutl_1_1meta_1_1seek__if__impl.html',1,'utl::meta']]], + ['spi',['spi',['../namespaceutl_1_1spi.html',1,'utl']]], + ['spi_5fi_5fdetails',['spi_i_details',['../namespaceutl_1_1spi__i__details.html',1,'utl']]], + ['transform_5fimpl',['transform_impl',['../namespaceutl_1_1meta_1_1transform__impl.html',1,'utl::meta']]], + ['transform_5flazy_5fimpl',['transform_lazy_impl',['../namespaceutl_1_1meta_1_1transform__lazy__impl.html',1,'utl::meta']]], + ['utl',['utl',['../namespaceutl.html',1,'']]] +]; diff --git a/doc/html/search/namespaces_1.html b/doc/html/search/namespaces_1.html new file mode 100644 index 0000000..37c816c --- /dev/null +++ b/doc/html/search/namespaces_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/namespaces_1.js b/doc/html/search/namespaces_1.js new file mode 100644 index 0000000..cd717a8 --- /dev/null +++ b/doc/html/search/namespaces_1.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['edit_5fdistance',['edit_distance',['../namespacetesting_1_1internal_1_1edit__distance.html',1,'testing::internal']]], + ['internal',['internal',['../namespacetesting_1_1internal.html',1,'testing']]], + ['internal2',['internal2',['../namespacetesting_1_1internal2.html',1,'testing']]], + ['posix',['posix',['../namespacetesting_1_1internal_1_1posix.html',1,'testing::internal']]], + ['test_5f1w',['test_1w',['../namespacetest__1w.html',1,'']]], + ['test_5fconcepts',['test_concepts',['../namespacetest__concepts.html',1,'']]], + ['test_5fi2c',['test_i2c',['../namespacetest__i2c.html',1,'']]], + ['test_5fmeta',['test_meta',['../namespacetest__meta.html',1,'']]], + ['test_5fostream_5fdev',['test_ostream_dev',['../namespacetest__ostream__dev.html',1,'']]], + ['test_5fspi',['test_spi',['../namespacetest__spi.html',1,'']]], + ['testing',['testing',['../namespacetesting.html',1,'']]], + ['testing_5finternal',['testing_internal',['../namespacetesting__internal.html',1,'']]], + ['tmetabasic',['TmetaBasic',['../namespace_tmeta_basic.html',1,'']]], + ['tmetadetection',['TmetaDetection',['../namespace_tmeta_detection.html',1,'']]], + ['tmetatypelist',['TmetaTypelist',['../namespace_tmeta_typelist.html',1,'']]] +]; diff --git a/doc/html/search/namespaces_2.html b/doc/html/search/namespaces_2.html new file mode 100644 index 0000000..0a91674 --- /dev/null +++ b/doc/html/search/namespaces_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/namespaces_2.js b/doc/html/search/namespaces_2.js new file mode 100644 index 0000000..69ebf34 --- /dev/null +++ b/doc/html/search/namespaces_2.js @@ -0,0 +1,36 @@ +var searchData= +[ + ['_5f1wire_5fi_5fdet',['_1wire_i_det',['../namespaceutl_1_1__1wire__i__det.html',1,'utl']]], + ['apply_5fimpl',['apply_impl',['../namespaceutl_1_1meta_1_1apply__impl.html',1,'utl::meta']]], + ['at_5fimpl',['at_impl',['../namespaceutl_1_1meta_1_1at__impl.html',1,'utl::meta']]], + ['back_5fimpl',['back_impl',['../namespaceutl_1_1meta_1_1back__impl.html',1,'utl::meta']]], + ['cat_5fimpl',['cat_impl',['../namespaceutl_1_1meta_1_1cat__impl.html',1,'utl::meta']]], + ['common_5fimpl',['common_impl',['../namespaceutl_1_1common__impl.html',1,'utl']]], + ['count_5fif_5fimpl',['count_if_impl',['../namespaceutl_1_1meta_1_1count__if__impl.html',1,'utl::meta']]], + ['detail',['detail',['../namespaceutl_1_1detail.html',1,'utl::detail'],['../namespaceutl_1_1meta_1_1detail.html',1,'utl::meta::detail']]], + ['details',['details',['../namespaceutl_1_1details.html',1,'utl']]], + ['filter_5fimpl',['filter_impl',['../namespaceutl_1_1meta_1_1filter__impl.html',1,'utl::meta']]], + ['find_5fif_5fimpl',['find_if_impl',['../namespaceutl_1_1meta_1_1find__if__impl.html',1,'utl::meta']]], + ['fold_5fimpl',['fold_impl',['../namespaceutl_1_1meta_1_1fold__impl.html',1,'utl::meta']]], + ['front_5fimpl',['front_impl',['../namespaceutl_1_1meta_1_1front__impl.html',1,'utl::meta']]], + ['i2c_5fi_5fdetails',['i2c_i_details',['../namespaceutl_1_1i2c__i__details.html',1,'utl']]], + ['idx_5fdev_5fdetails',['idx_dev_details',['../namespaceutl_1_1idx__dev__details.html',1,'utl']]], + ['idxdev_5fit_5fdetails',['idxdev_it_details',['../namespaceutl_1_1idxdev__it__details.html',1,'utl']]], + ['in_5fdev_5fdetails',['in_dev_details',['../namespaceutl_1_1in__dev__details.html',1,'utl']]], + ['inbuf_5fdev_5fdetails',['inbuf_dev_details',['../namespaceutl_1_1inbuf__dev__details.html',1,'utl']]], + ['indev_5fit_5fdetails',['indev_it_details',['../namespaceutl_1_1indev__it__details.html',1,'utl']]], + ['meta',['meta',['../namespaceutl_1_1meta.html',1,'utl']]], + ['out_5fdev_5fdetails',['out_dev_details',['../namespaceutl_1_1out__dev__details.html',1,'utl']]], + ['outdev_5fit_5fdetails',['outdev_it_details',['../namespaceutl_1_1outdev__it__details.html',1,'utl']]], + ['pop_5fback_5fimpl',['pop_back_impl',['../namespaceutl_1_1meta_1_1pop__back__impl.html',1,'utl::meta']]], + ['pop_5ffront_5fimpl',['pop_front_impl',['../namespaceutl_1_1meta_1_1pop__front__impl.html',1,'utl::meta']]], + ['replace_5fif_5fimpl',['replace_if_impl',['../namespaceutl_1_1meta_1_1replace__if__impl.html',1,'utl::meta']]], + ['rev_5ffold_5fimpl',['rev_fold_impl',['../namespaceutl_1_1meta_1_1rev__fold__impl.html',1,'utl::meta']]], + ['reverse_5fimpl',['reverse_impl',['../namespaceutl_1_1meta_1_1reverse__impl.html',1,'utl::meta']]], + ['seek_5fif_5fimpl',['seek_if_impl',['../namespaceutl_1_1meta_1_1seek__if__impl.html',1,'utl::meta']]], + ['spi',['spi',['../namespaceutl_1_1spi.html',1,'utl']]], + ['spi_5fi_5fdetails',['spi_i_details',['../namespaceutl_1_1spi__i__details.html',1,'utl']]], + ['transform_5fimpl',['transform_impl',['../namespaceutl_1_1meta_1_1transform__impl.html',1,'utl::meta']]], + ['transform_5flazy_5fimpl',['transform_lazy_impl',['../namespaceutl_1_1meta_1_1transform__lazy__impl.html',1,'utl::meta']]], + ['utl',['utl',['../namespaceutl.html',1,'']]] +]; diff --git a/doc/html/search/nomatches.html b/doc/html/search/nomatches.html new file mode 100644 index 0000000..b1ded27 --- /dev/null +++ b/doc/html/search/nomatches.html @@ -0,0 +1,12 @@ + + + + + + + +
    +
    No Matches
    +
    + + diff --git a/doc/html/search/pages_0.html b/doc/html/search/pages_0.html new file mode 100644 index 0000000..d752858 --- /dev/null +++ b/doc/html/search/pages_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/pages_0.js b/doc/html/search/pages_0.js new file mode 100644 index 0000000..b920558 --- /dev/null +++ b/doc/html/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['readme',['README',['../md__r_e_a_d_m_e.html',1,'']]] +]; diff --git a/doc/html/search/related_0.html b/doc/html/search/related_0.html new file mode 100644 index 0000000..575b040 --- /dev/null +++ b/doc/html/search/related_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/related_0.js b/doc/html/search/related_0.js new file mode 100644 index 0000000..a52cb5d --- /dev/null +++ b/doc/html/search/related_0.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['_5ffirst',['_first',['../classutl_1_1__1wire__i.html#a05f0872f43d7b305269904d1522fa437',1,'utl::_1wire_i::_first()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a05f0872f43d7b305269904d1522fa437',1,'utl::_1wire_i< virtual_tag >::_first()']]], + ['_5fmatch',['_match',['../classutl_1_1__1wire__i.html#a6deca63bf5935ba3c3aa07f6ca23e33a',1,'utl::_1wire_i::_match()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a6deca63bf5935ba3c3aa07f6ca23e33a',1,'utl::_1wire_i< virtual_tag >::_match()']]], + ['_5fmatch_5fn_5fovdr',['_match_n_ovdr',['../classutl_1_1__1wire__i.html#a6b70d3457970aa791dd68e20800b6d0d',1,'utl::_1wire_i::_match_n_ovdr()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a6b70d3457970aa791dd68e20800b6d0d',1,'utl::_1wire_i< virtual_tag >::_match_n_ovdr()']]], + ['_5fnext',['_next',['../classutl_1_1__1wire__i.html#af9a6a28b49cd3f51736f7c1f8e67327a',1,'utl::_1wire_i::_next()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#af9a6a28b49cd3f51736f7c1f8e67327a',1,'utl::_1wire_i< virtual_tag >::_next()']]], + ['_5fskip',['_skip',['../classutl_1_1__1wire__i.html#a9041b1220dfa52b4f4b161b718c3d33a',1,'utl::_1wire_i::_skip()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a9041b1220dfa52b4f4b161b718c3d33a',1,'utl::_1wire_i< virtual_tag >::_skip()']]], + ['_5fskip_5fn_5fovdr',['_skip_n_ovdr',['../classutl_1_1__1wire__i.html#af4dfbd90b0d5606f1f2e515d38a43d66',1,'utl::_1wire_i::_skip_n_ovdr()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#af4dfbd90b0d5606f1f2e515d38a43d66',1,'utl::_1wire_i< virtual_tag >::_skip_n_ovdr()']]], + ['_5ftouch',['_touch',['../classutl_1_1__1wire__i.html#aedee6f129425833a172784ec3c6e21e9',1,'utl::_1wire_i::_touch()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#aedee6f129425833a172784ec3c6e21e9',1,'utl::_1wire_i< virtual_tag >::_touch()']]] +]; diff --git a/doc/html/search/related_1.html b/doc/html/search/related_1.html new file mode 100644 index 0000000..7149672 --- /dev/null +++ b/doc/html/search/related_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/related_1.js b/doc/html/search/related_1.js new file mode 100644 index 0000000..1317e9e --- /dev/null +++ b/doc/html/search/related_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['addglobaltestenvironment',['AddGlobalTestEnvironment',['../classtesting_1_1_unit_test.html#a5ec26e4c31220ff8e769cc09689a4d6d',1,'testing::UnitTest']]] +]; diff --git a/doc/html/search/related_2.html b/doc/html/search/related_2.html new file mode 100644 index 0000000..573e77a --- /dev/null +++ b/doc/html/search/related_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/related_2.js b/doc/html/search/related_2.js new file mode 100644 index 0000000..e6cc7b2 --- /dev/null +++ b/doc/html/search/related_2.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['asserthelper',['AssertHelper',['../classtesting_1_1_unit_test.html#a183151aa061362c87572e743fe233db1',1,'testing::UnitTest']]], + ['defaultglobaltestpartresultreporter',['DefaultGlobalTestPartResultReporter',['../classtesting_1_1_test_result.html#abae39633da9932847b41cb80efd62115',1,'testing::TestResult::DefaultGlobalTestPartResultReporter()'],['../classtesting_1_1_test_event_listeners.html#abae39633da9932847b41cb80efd62115',1,'testing::TestEventListeners::DefaultGlobalTestPartResultReporter()']]], + ['execdeathtest',['ExecDeathTest',['../classtesting_1_1_test_result.html#adf5553cae6aea6f8648d47e299237e34',1,'testing::TestResult']]], + ['fuchsiadeathtest',['FuchsiaDeathTest',['../classtesting_1_1_test_result.html#af29d5921f68031cdfba0b28cf4b3b559',1,'testing::TestResult']]], + ['getunittestimpl',['GetUnitTestImpl',['../classtesting_1_1_unit_test.html#a56e56be7066957d612e53b5c60f6ac08',1,'testing::UnitTest']]], + ['makeandregistertestinfo',['MakeAndRegisterTestInfo',['../classtesting_1_1_test_info.html#a63d61c7ffd0423b1d3615f0ff5f2040e',1,'testing::TestInfo']]], + ['noexecdeathtest',['NoExecDeathTest',['../classtesting_1_1_test_event_listeners.html#afddba49fdf3f493532b4d5efb9814f4e',1,'testing::TestEventListeners']]], + ['parameterizedtestfactory',['ParameterizedTestFactory',['../classtesting_1_1_with_param_interface.html#a7543eb7df89f00fff517dba24bc11dd5',1,'testing::WithParamInterface']]], + ['reportfailureinunknownlocation',['ReportFailureInUnknownLocation',['../classtesting_1_1_unit_test.html#a73f5a158c13793b90c80d854c9a75120',1,'testing::UnitTest']]], + ['streaminglistenertest',['StreamingListenerTest',['../classtesting_1_1_test_info.html#adc037d188dab349a94868991955c9cd4',1,'testing::TestInfo::StreamingListenerTest()'],['../classtesting_1_1_unit_test.html#adc037d188dab349a94868991955c9cd4',1,'testing::UnitTest::StreamingListenerTest()']]], + ['testeventlistenersaccessor',['TestEventListenersAccessor',['../classtesting_1_1_test_event_listeners.html#addbc107b6b445617c880182bd4f44cf9',1,'testing::TestEventListeners']]], + ['testresultaccessor',['TestResultAccessor',['../classtesting_1_1_test_result.html#ae762da04e74a0d3b0daded3c5bd4a8e8',1,'testing::TestResult']]], + ['unittestimpl',['UnitTestImpl',['../classtesting_1_1_test_result.html#acc0a5e7573fd6ae7ad1878613bb86853',1,'testing::TestResult::UnitTestImpl()'],['../classtesting_1_1_test_info.html#acc0a5e7573fd6ae7ad1878613bb86853',1,'testing::TestInfo::UnitTestImpl()'],['../classtesting_1_1_test_suite.html#acc0a5e7573fd6ae7ad1878613bb86853',1,'testing::TestSuite::UnitTestImpl()'],['../classtesting_1_1_test_event_listeners.html#acc0a5e7573fd6ae7ad1878613bb86853',1,'testing::TestEventListeners::UnitTestImpl()']]], + ['unittestrecordpropertytesthelper',['UnitTestRecordPropertyTestHelper',['../classtesting_1_1_unit_test.html#ae970f89a9f477a349fe5778be85ef42e',1,'testing::UnitTest']]], + ['windowsdeathtest',['WindowsDeathTest',['../classtesting_1_1_test_result.html#a6aeedc04a0590fcc1b3c5f687dbb0f9f',1,'testing::TestResult']]] +]; diff --git a/doc/html/search/related_3.html b/doc/html/search/related_3.html new file mode 100644 index 0000000..f63f0c9 --- /dev/null +++ b/doc/html/search/related_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/related_3.js b/doc/html/search/related_3.js new file mode 100644 index 0000000..bc6f78c --- /dev/null +++ b/doc/html/search/related_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['paramgenerator_3c_20t_20_3e',['ParamGenerator< T >',['../classtesting_1_1internal_1_1_param_iterator.html#ab73a355ae191f2f7eab54b65ca557714',1,'testing::internal::ParamIterator']]] +]; diff --git a/doc/html/search/related_4.html b/doc/html/search/related_4.html new file mode 100644 index 0000000..5c177ef --- /dev/null +++ b/doc/html/search/related_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/related_4.js b/doc/html/search/related_4.js new file mode 100644 index 0000000..5155cda --- /dev/null +++ b/doc/html/search/related_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['scopedtrace',['ScopedTrace',['../classtesting_1_1_unit_test.html#ada54bdd5bdc24f39b9ca16807326654a',1,'testing::UnitTest']]] +]; diff --git a/doc/html/search/related_5.html b/doc/html/search/related_5.html new file mode 100644 index 0000000..5447c25 --- /dev/null +++ b/doc/html/search/related_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/related_5.js b/doc/html/search/related_5.js new file mode 100644 index 0000000..a40f30e --- /dev/null +++ b/doc/html/search/related_5.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['test',['Test',['../classtesting_1_1_test_info.html#a5b78b1c2e1fa07ffed92da365593eaa4',1,'testing::TestInfo::Test()'],['../classtesting_1_1_test_suite.html#a5b78b1c2e1fa07ffed92da365593eaa4',1,'testing::TestSuite::Test()'],['../classtesting_1_1_unit_test.html#a5b78b1c2e1fa07ffed92da365593eaa4',1,'testing::UnitTest::Test()']]], + ['testinfo',['TestInfo',['../classtesting_1_1_test.html#a4c49c2cdb6c328e6b709b4542f23de3c',1,'testing::Test::TestInfo()'],['../classtesting_1_1_test_result.html#a4c49c2cdb6c328e6b709b4542f23de3c',1,'testing::TestResult::TestInfo()'],['../classtesting_1_1_test_event_listeners.html#a4c49c2cdb6c328e6b709b4542f23de3c',1,'testing::TestEventListeners::TestInfo()']]], + ['testsuite',['TestSuite',['../classtesting_1_1_test_result.html#ab9aaba231fd11196425e75caf709bfc6',1,'testing::TestResult::TestSuite()'],['../classtesting_1_1_test_info.html#ab9aaba231fd11196425e75caf709bfc6',1,'testing::TestInfo::TestSuite()'],['../classtesting_1_1_test_event_listeners.html#ab9aaba231fd11196425e75caf709bfc6',1,'testing::TestEventListeners::TestSuite()']]] +]; diff --git a/doc/html/search/related_6.html b/doc/html/search/related_6.html new file mode 100644 index 0000000..75ea79b --- /dev/null +++ b/doc/html/search/related_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/related_6.js b/doc/html/search/related_6.js new file mode 100644 index 0000000..b55dcbc --- /dev/null +++ b/doc/html/search/related_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['unittest',['UnitTest',['../classtesting_1_1_test_result.html#a832b4d233efee1a32feb0f4190b30d39',1,'testing::TestResult']]] +]; diff --git a/doc/html/search/search.css b/doc/html/search/search.css new file mode 100644 index 0000000..3cf9df9 --- /dev/null +++ b/doc/html/search/search.css @@ -0,0 +1,271 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#MSearchBox { + white-space : nowrap; + float: none; + margin-top: 8px; + right: 0px; + width: 170px; + height: 24px; + z-index: 102; +} + +#MSearchBox .left +{ + display:block; + position:absolute; + left:10px; + width:20px; + height:19px; + background:url('search_l.png') no-repeat; + background-position:right; +} + +#MSearchSelect { + display:block; + position:absolute; + width:20px; + height:19px; +} + +.left #MSearchSelect { + left:4px; +} + +.right #MSearchSelect { + right:5px; +} + +#MSearchField { + display:block; + position:absolute; + height:19px; + background:url('search_m.png') repeat-x; + border:none; + width:115px; + margin-left:20px; + padding-left:4px; + color: #909090; + outline: none; + font: 9pt Arial, Verdana, sans-serif; + -webkit-border-radius: 0px; +} + +#FSearchBox #MSearchField { + margin-left:15px; +} + +#MSearchBox .right { + display:block; + position:absolute; + right:10px; + top:8px; + width:20px; + height:19px; + background:url('search_r.png') no-repeat; + background-position:left; +} + +#MSearchClose { + display: none; + position: absolute; + top: 4px; + background : none; + border: none; + margin: 0px 4px 0px 0px; + padding: 0px 0px; + outline: none; +} + +.left #MSearchClose { + left: 6px; +} + +.right #MSearchClose { + right: 2px; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; + z-index:10000; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; +} + +.SRResult { + display: none; +} + +DIV.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/doc/html/search/search.js b/doc/html/search/search.js new file mode 100644 index 0000000..a554ab9 --- /dev/null +++ b/doc/html/search/search.js @@ -0,0 +1,814 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches.html'; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName == 'DIV' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName == 'DIV' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; ek7RCwB~R6VQOP#AvB$vH7i{6H{96zot$7cZT<7246EF5Np6N}+$IbiG6W zg#87A+NFaX+=_^xM1#gCtshC=E{%9^uQX_%?YwXvo{#q&MnpJ8uh(O?ZRc&~_1%^SsPxG@rfElJg-?U zm!Cz-IOn(qJP3kDp-^~qt+FGbl=5jNli^Wj_xIBG{Rc0en{!oFvyoNC7{V~T8}b>| z=jL2WIReZzX(YN(_9fV;BBD$VXQIxNasAL8ATvEu822WQ%mvv4FO#qs` BFGc_W literal 0 HcmV?d00001 diff --git a/doc/html/search/search_r.png b/doc/html/search/search_r.png new file mode 100644 index 0000000000000000000000000000000000000000..97ee8b439687084201b79c6f776a41f495c6392a GIT binary patch literal 612 zcmV-q0-ODbP)PbXFRCwB?)W514K@j&X?z2*SxFI6-@HT2E2K=9X9%Pb zEK*!TBw&g(DMC;|A)uGlRkOS9vd-?zNs%bR4d$w+ox_iFnE8fvIvv7^5<(>Te12Li z7C)9srCzmK{ZcNM{YIl9j{DePFgOWiS%xG@5CnnnJa4nvY<^glbz7^|-ZY!dUkAwd z{gaTC@_>b5h~;ug#R0wRL0>o5!hxm*s0VW?8dr}O#zXTRTnrQm_Z7z1Mrnx>&p zD4qifUjzLvbVVWi?l?rUzwt^sdb~d!f_LEhsRVIXZtQ=qSxuxqm zEX#tf>$?M_Y1-LSDT)HqG?`%-%ZpY!#{N!rcNIiL;G7F0`l?)mNGTD9;f9F5Up3Kg zw}a<-JylhG&;=!>B+fZaCX+?C+kHYrP%c?X2!Zu_olK|GcS4A70HEy;vn)I0>0kLH z`jc(WIaaHc7!HS@f*^R^Znx8W=_jIl2oWJoQ*h1^$FX!>*PqR1J8k|fw}w_y}TpE>7m8DqDO<3z`OzXt$ccSejbEZCg@0000 + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/typedefs_0.js b/doc/html/search/typedefs_0.js new file mode 100644 index 0000000..8c7ab6b --- /dev/null +++ b/doc/html/search/typedefs_0.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['_5f_5fbasic_5fcommon_5freference_5ft',['__basic_common_reference_t',['../namespaceutl_1_1common__impl.html#a3bbe5eb74a1c6017f60e3034519d69d6',1,'utl::common_impl']]], + ['_5f_5fcommon_5fref',['__common_ref',['../namespaceutl_1_1common__impl.html#a8913f9d610ed8720c817081662fa9f1f',1,'utl::common_impl']]], + ['_5f_5fcond_5fres',['__cond_res',['../namespaceutl_1_1common__impl.html#ab43a461d352a35dc1b3de39bfe17e38b',1,'utl::common_impl']]], + ['_5f_5fcopy_5fcv',['__copy_cv',['../namespaceutl_1_1common__impl.html#aed700217ef1518692242c1059f3dff27',1,'utl::common_impl']]], + ['_5f_5fcref',['__cref',['../namespaceutl_1_1common__impl.html#a3d7922723a5d41f399f3c8a99e016e73',1,'utl::common_impl']]], + ['_5f_5flref_5fres',['__lref_res',['../namespaceutl_1_1common__impl.html#ae2f3d56c7e5144e099cdf37b19523290',1,'utl::common_impl']]], + ['_5f_5frref_5fres',['__rref_res',['../namespaceutl_1_1common__impl.html#a312c9f3e740103f831a49624097948f5',1,'utl::common_impl']]], + ['_5fref_5ft',['_ref_t',['../namespaceutl.html#aa3f95fc48a94b2fae3c2959b7c024998',1,'utl']]] +]; diff --git a/doc/html/search/typedefs_1.html b/doc/html/search/typedefs_1.html new file mode 100644 index 0000000..7af807d --- /dev/null +++ b/doc/html/search/typedefs_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/typedefs_1.js b/doc/html/search/typedefs_1.js new file mode 100644 index 0000000..73c6a7d --- /dev/null +++ b/doc/html/search/typedefs_1.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['accumulate',['accumulate',['../namespaceutl_1_1meta.html#aeb5cb48e804cd160b39f8c3ed2967c37',1,'utl::meta']]], + ['add',['add',['../namespaceutl_1_1meta.html#a559ad95ef39fd2c81664bd1a22dd99c1',1,'utl::meta']]], + ['add_5fpointer',['add_pointer',['../namespaceutl_1_1meta_1_1at__impl.html#a1759f370bc952ff21077efca9fe0e0b4',1,'utl::meta::at_impl']]], + ['alignof_5f',['alignof_',['../namespaceutl_1_1meta.html#afacfb1fb855b9a9a0c8a2a625a2a9bd2',1,'utl::meta']]], + ['all_5fof',['all_of',['../namespaceutl_1_1meta.html#ace96e2f19376375cc71ee0cd80f4bb75',1,'utl::meta']]], + ['and_5f',['and_',['../group__integral.html#ga8e82f4758321e0e0b3705607f7d8e068',1,'utl::meta']]], + ['any_5fof',['any_of',['../namespaceutl_1_1meta.html#a212c26a29491610187f6e8543f06df5f',1,'utl::meta']]], + ['apply',['apply',['../structutl_1_1common__impl_1_1____copy__cv__.html#aab9e00c637c2bbbdb6d1398aca8e3f96',1,'utl::common_impl::__copy_cv_::apply()'],['../structutl_1_1common__impl_1_1____copy__cv___3_01const_01_from_01_4.html#a6dfb1b1162563a05f62a004de401367e',1,'utl::common_impl::__copy_cv_< const From >::apply()'],['../structutl_1_1common__impl_1_1____copy__cv___3_01volatile_01_from_01_4.html#a1066914bb7b2d20c25f9f6b953f40edd',1,'utl::common_impl::__copy_cv_< volatile From >::apply()'],['../structutl_1_1common__impl_1_1____copy__cv___3_01const_01volatile_01_from_01_4.html#a3b90863f9819b9537789a30ab6863aca',1,'utl::common_impl::__copy_cv_< const volatile From >::apply()'],['../structutl_1_1common__impl_1_1____xref.html#a032704fe2160d375719ade17fd93f91b',1,'utl::common_impl::__xref::apply()'],['../structutl_1_1common__impl_1_1____xref_3_01const_01_t_01_4.html#aa0c18f8f497297768174b0d272209f4c',1,'utl::common_impl::__xref< const T >::apply()'],['../structutl_1_1common__impl_1_1____xref_3_01volatile_01_t_01_4.html#affd4de84c60ada7d645b9f4d66f17b25',1,'utl::common_impl::__xref< volatile T >::apply()'],['../structutl_1_1common__impl_1_1____xref_3_01const_01volatile_01_t_01_4.html#a298403b8085c58e3f18d61877f2186a5',1,'utl::common_impl::__xref< const volatile T >::apply()'],['../structutl_1_1common__impl_1_1____xref_3_01_t_01_6_01_4.html#a45952ba243315d71be48069faeb0aff0',1,'utl::common_impl::__xref< T & >::apply()'],['../structutl_1_1common__impl_1_1____xref_3_01_t_01_6_6_01_4.html#ab2e3a215cd9be370de57febb6cc290ec',1,'utl::common_impl::__xref< T && >::apply()'],['../structutl_1_1meta_1_1identity.html#ab13e3134ffe9c6fabb22f67d7b87b2dd',1,'utl::meta::identity::apply()'],['../structutl_1_1meta_1_1wrap.html#a71fe22d6a841f27b891ca3344ee97b07',1,'utl::meta::wrap::apply()'],['../structutl_1_1meta_1_1wrap__i.html#a14e7ddd17abbcecf2658a3dd4616e0d2',1,'utl::meta::wrap_i::apply()'],['../structutl_1_1meta_1_1quote.html#a7741173cf865291c89d374c2fac0d17e',1,'utl::meta::quote::apply()'],['../structutl_1_1meta_1_1quote__i.html#a32099809fbac1c620ad3993e8ab1b8c0',1,'utl::meta::quote_i::apply()'],['../structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_00_01_fns_8_8_8_01_4.html#af08d514072a8e41dd5f105de46262142',1,'utl::meta::detail::compose_f_< Fn0, Fns... >::apply()'],['../structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_01_4.html#a287c03e3a63511803b68d39c4c06927b',1,'utl::meta::detail::compose_f_< Fn0 >::apply()'],['../structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_00_01_fns_8_8_8_01_4.html#ad26c783fae3d45b81dd443293886206b',1,'utl::meta::detail::compose_< Fn0, Fns... >::apply()'],['../structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_01_4.html#aafd319bda715a126343256f18b823f97',1,'utl::meta::detail::compose_< Fn0 >::apply()'],['../structutl_1_1meta_1_1bind__front.html#a4247cb2b0a19e3168161dead529c532c',1,'utl::meta::bind_front::apply()'],['../structutl_1_1meta_1_1bind__back.html#a2f8a5ad9fd3b9e5ed79ace2c18d1ec9a',1,'utl::meta::bind_back::apply()'],['../namespaceutl_1_1meta.html#a3f684549221fac60bc8c7979cb4b98f4',1,'utl::meta::apply()']]], + ['apply_5ft',['apply_t',['../namespaceutl_1_1meta.html#ac2952cd4ed04938edc6de21ffe200e9b',1,'utl::meta']]], + ['array_5ft',['array_t',['../structutl_1_1array.html#ae479687ad5c7259e5258c093bda99c89',1,'utl::array']]], + ['at',['at',['../namespaceutl_1_1meta.html#a67329ec425c857dcaf4cde9044674c90',1,'utl::meta']]], + ['at_5fc',['at_c',['../namespaceutl_1_1meta.html#a6683b804a20d54817d61ce4663527084',1,'utl::meta']]] +]; diff --git a/doc/html/search/typedefs_10.html b/doc/html/search/typedefs_10.html new file mode 100644 index 0000000..d8e5942 --- /dev/null +++ b/doc/html/search/typedefs_10.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/typedefs_10.js b/doc/html/search/typedefs_10.js new file mode 100644 index 0000000..f6fef27 --- /dev/null +++ b/doc/html/search/typedefs_10.js @@ -0,0 +1,40 @@ +var searchData= +[ + ['times',['times',['../structutl_1_1meta_1_1typelist.html#ac444325211852c503605ec6c820f3eae',1,'utl::meta::typelist']]], + ['traits_5ft',['traits_t',['../structutl_1_1id__t.html#a9951b895fb9cd9d9b40871ba95df98a0',1,'utl::id_t']]], + ['transform',['transform',['../namespaceutl_1_1meta.html#ac8bbf187eea3cb5da38d1bdc97b52334',1,'utl::meta']]], + ['transform_5flazy',['transform_lazy',['../namespaceutl_1_1meta.html#a55c0405bfb94c1d285d3131390c31451',1,'utl::meta']]], + ['true_5f',['true_',['../namespaceutl_1_1meta.html#ae9a5a8fbe8202785f059935af219fb97',1,'utl::meta']]], + ['try_5fbegin_5ft',['try_begin_t',['../namespaceutl_1_1idx__dev__details.html#a69a8af95a0fd62c3e022c34ddc3a956b',1,'utl::idx_dev_details::try_begin_t()'],['../namespaceutl_1_1in__dev__details.html#af790d5cec9db9f80cc8d67e9755e823e',1,'utl::in_dev_details::try_begin_t()'],['../namespaceutl_1_1inbuf__dev__details.html#a18d5c5e879b4714f58861ad411537d53',1,'utl::inbuf_dev_details::try_begin_t()'],['../namespaceutl_1_1out__dev__details.html#ab5980d368073d104e13d153e291dde86',1,'utl::out_dev_details::try_begin_t()']]], + ['try_5fcbegin_5ft',['try_cbegin_t',['../namespaceutl_1_1idx__dev__details.html#a655c6de0d6d8f4ac3778f2fff8e9c7de',1,'utl::idx_dev_details::try_cbegin_t()'],['../namespaceutl_1_1in__dev__details.html#a857d70a4119a4ff5615141d68e59ba7b',1,'utl::in_dev_details::try_cbegin_t()'],['../namespaceutl_1_1inbuf__dev__details.html#a351202ead58a98a2eaad4f3987b6170c',1,'utl::inbuf_dev_details::try_cbegin_t()'],['../namespaceutl_1_1out__dev__details.html#a92a49420cc024aec06546ac041e7707a',1,'utl::out_dev_details::try_cbegin_t()']]], + ['try_5fcclk_5ft',['try_cclk_t',['../namespaceutl_1_1i2c__i__details.html#a81c12a06fe9cf6f643718f9175da8769',1,'utl::i2c_i_details']]], + ['try_5fcclock_5ft',['try_cclock_t',['../namespaceutl_1_1spi__i__details.html#ae1a4fad6acf8faccc5e85ee9b710c109',1,'utl::spi_i_details']]], + ['try_5fcend_5ft',['try_cend_t',['../namespaceutl_1_1idx__dev__details.html#adb8cac5f5772e513749038257a1f92df',1,'utl::idx_dev_details::try_cend_t()'],['../namespaceutl_1_1in__dev__details.html#ab268028c81d5385f19bbeb0c978ec9b2',1,'utl::in_dev_details::try_cend_t()'],['../namespaceutl_1_1inbuf__dev__details.html#a24eae32ecbea1291607f16d92c2b029a',1,'utl::inbuf_dev_details::try_cend_t()'],['../namespaceutl_1_1out__dev__details.html#a9f69f9ca8e1bf642bf63bfdd18c8d567',1,'utl::out_dev_details::try_cend_t()']]], + ['try_5fclk_5ft',['try_clk_t',['../namespaceutl_1_1i2c__i__details.html#adaf6b9dbc57caeda1a6a85bd17ac6317',1,'utl::i2c_i_details']]], + ['try_5fclock_5ft',['try_clock_t',['../namespaceutl_1_1spi__i__details.html#af2f4800aa77af82767a3ac55b9b242a6',1,'utl::spi_i_details']]], + ['try_5fend_5ft',['try_end_t',['../namespaceutl_1_1idx__dev__details.html#ab85fa5de8595b6e56a6718ffb7d4edfe',1,'utl::idx_dev_details::try_end_t()'],['../namespaceutl_1_1in__dev__details.html#acc72ca7012e26a9a0de8b08047dc9de8',1,'utl::in_dev_details::try_end_t()'],['../namespaceutl_1_1inbuf__dev__details.html#a5d4aa9d57c443c33cf08375e0c51bdd3',1,'utl::inbuf_dev_details::try_end_t()'],['../namespaceutl_1_1out__dev__details.html#a7d24815b4a395378766a4e9f0535c926',1,'utl::out_dev_details::try_end_t()']]], + ['try_5ffirst_5ft',['try_first_t',['../namespaceutl_1_1__1wire__i__det.html#a3dc7b4df37cebf753556ba527306cf9f',1,'utl::_1wire_i_det']]], + ['try_5fget1_5ft',['try_get1_t',['../namespaceutl_1_1idx__dev__details.html#ac3a877d2f57d7c50b77456e0571112f0',1,'utl::idx_dev_details::try_get1_t()'],['../namespaceutl_1_1in__dev__details.html#a560eec1b326b0f6b91fa96f64f15ef61',1,'utl::in_dev_details::try_get1_t()'],['../namespaceutl_1_1inbuf__dev__details.html#a72a6469ab9ce0cba618dd0b554fc2dd2',1,'utl::inbuf_dev_details::try_get1_t()']]], + ['try_5fget2_5ft',['try_get2_t',['../namespaceutl_1_1idx__dev__details.html#a4cf6896009d70acdccfb55ba333fe7ef',1,'utl::idx_dev_details::try_get2_t()'],['../namespaceutl_1_1in__dev__details.html#ae11bccc2282ed8f2aaac67687d756167',1,'utl::in_dev_details::try_get2_t()'],['../namespaceutl_1_1inbuf__dev__details.html#af09ed69d129c33b8a6d3f79c79b8ea35',1,'utl::inbuf_dev_details::try_get2_t()']]], + ['try_5fipp',['try_Ipp',['../namespaceutl_1_1detail.html#a1371d13b3e8408cfc68e82b03ca9f3b0',1,'utl::detail']]], + ['try_5fmatch_5fn_5fovdr_5ft',['try_match_n_ovdr_t',['../namespaceutl_1_1__1wire__i__det.html#aa85f59a97c388dc259589cb517824233',1,'utl::_1wire_i_det']]], + ['try_5fmatch_5ft',['try_match_t',['../namespaceutl_1_1__1wire__i__det.html#a3416ddb06e089a5c191d356dd358ff00',1,'utl::_1wire_i_det']]], + ['try_5fnext_5ft',['try_next_t',['../namespaceutl_1_1__1wire__i__det.html#a67a086b8e4e3ee051ccb0351e6456630',1,'utl::_1wire_i_det']]], + ['try_5fppi',['try_ppI',['../namespaceutl_1_1detail.html#a50e7a46f910a83190bca5a58f67f1e2d',1,'utl::detail']]], + ['try_5fput1_5ft',['try_put1_t',['../namespaceutl_1_1out__dev__details.html#adb92d30f8cf134da9586ef9d52801325',1,'utl::out_dev_details']]], + ['try_5fput2_5ft',['try_put2_t',['../namespaceutl_1_1out__dev__details.html#a314537b65eaf15b6bba5a6f5544f3ace',1,'utl::out_dev_details']]], + ['try_5freset_5ft',['try_reset_t',['../namespaceutl_1_1__1wire__i__det.html#a502fff2c967d26334aa3c2fcf0b037ba',1,'utl::_1wire_i_det']]], + ['try_5frx1_5ft',['try_rx1_t',['../namespaceutl_1_1__1wire__i__det.html#a303cf58468da38ceeaa2477570f82948',1,'utl::_1wire_i_det']]], + ['try_5frx_5fdata_5ft',['try_rx_data_t',['../namespaceutl_1_1i2c__i__details.html#a10de1b351bd683c5435e2db3d682819c',1,'utl::i2c_i_details']]], + ['try_5frx_5ft',['try_rx_t',['../namespaceutl_1_1spi__i__details.html#a4dcf3c71fddf790e45a3be2c19906c97',1,'utl::spi_i_details']]], + ['try_5fskip_5fn_5fovdr_5ft',['try_skip_n_ovdr_t',['../namespaceutl_1_1__1wire__i__det.html#af6c9df3cb6bf2479e8d30a5d36ab71cb',1,'utl::_1wire_i_det']]], + ['try_5fskip_5ft',['try_skip_t',['../namespaceutl_1_1__1wire__i__det.html#a9d0825a40484e7868bf41fc4825b4f7d',1,'utl::_1wire_i_det']]], + ['try_5fstart_5ft',['try_start_t',['../namespaceutl_1_1i2c__i__details.html#a173335d0a45cba1b159bf33bcefb3a46',1,'utl::i2c_i_details']]], + ['try_5fstop_5ft',['try_stop_t',['../namespaceutl_1_1i2c__i__details.html#a25cbce342478441f05d3a101fcafc02c',1,'utl::i2c_i_details']]], + ['try_5ftx1_5ft',['try_tx1_t',['../namespaceutl_1_1__1wire__i__det.html#ac6a2b551bcf51b426c2e8506ab2473fe',1,'utl::_1wire_i_det']]], + ['try_5ftx_5fdata_5ft',['try_tx_data_t',['../namespaceutl_1_1i2c__i__details.html#ad8d87a56b12244ba8060f8d27207083f',1,'utl::i2c_i_details']]], + ['try_5ftx_5ft',['try_tx_t',['../namespaceutl_1_1spi__i__details.html#a755d8f10cfde3f5c3b9900eb11c858bd',1,'utl::spi_i_details']]], + ['tryc_5fbegin_5ft',['tryc_begin_t',['../namespaceutl_1_1idx__dev__details.html#afe8e2fc19d7b37a1b379a5f8302ef421',1,'utl::idx_dev_details::tryc_begin_t()'],['../namespaceutl_1_1in__dev__details.html#af7cb4a98688e65b04793cef145a90202',1,'utl::in_dev_details::tryc_begin_t()'],['../namespaceutl_1_1inbuf__dev__details.html#adff91b885ea1831691d4619d360bb72b',1,'utl::inbuf_dev_details::tryc_begin_t()'],['../namespaceutl_1_1out__dev__details.html#a83dcd42cb9186967654eb365ab0ce712',1,'utl::out_dev_details::tryc_begin_t()']]], + ['tryc_5fend_5ft',['tryc_end_t',['../namespaceutl_1_1idx__dev__details.html#aad6edb02a37f897cf4157f6345909ef1',1,'utl::idx_dev_details::tryc_end_t()'],['../namespaceutl_1_1in__dev__details.html#ad2dad6ed501b94ba1fa9cffade343762',1,'utl::in_dev_details::tryc_end_t()'],['../namespaceutl_1_1inbuf__dev__details.html#a858c7a1a0b1d8d0bdc91ce681aa1b996',1,'utl::inbuf_dev_details::tryc_end_t()'],['../namespaceutl_1_1out__dev__details.html#ad76fb97793ff8c8f31b042d70114ded2',1,'utl::out_dev_details::tryc_end_t()']]], + ['type',['type',['../classutl_1_1__1wire__i.html#afb63e64403924897a8277eb4159ebd44',1,'utl::_1wire_i::type()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a1b2fa0f5a2946723cd29e689bd38359d',1,'utl::_1wire_i< virtual_tag >::type()'],['../classutl_1_1__1wire__uart__i.html#acc885c6ec2395ad20409b01aa4d5f546',1,'utl::_1wire_uart_i::type()'],['../classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html#a1d50d0d5460165c3f6046ce6b663cd5e',1,'utl::_1wire_uart_i< virtual_tag >::type()'],['../classutl_1_1i2c__i.html#aa9267a8602702b78f188e0cf61b68a55',1,'utl::i2c_i::type()'],['../classutl_1_1i2c__i_3_01virtual__tag_01_4.html#ac892faacc1566f4ca1438e3df765bcac',1,'utl::i2c_i< virtual_tag >::type()'],['../classutl_1_1i2c__bb__i.html#a428c847d950993fa2cd005416edfb720',1,'utl::i2c_bb_i::type()'],['../classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html#abedad1f30e2c695d47a84dc68ff05897',1,'utl::i2c_bb_i< virtual_tag >::type()'],['../classutl_1_1spi__i.html#aff8ee0a2160cddbb52fce46611a6108f',1,'utl::spi_i::type()'],['../classutl_1_1spi__i_3_01virtual__tag_01_4.html#ab539774624977f1f86b98269d01d56ba',1,'utl::spi_i< virtual_tag >::type()'],['../classutl_1_1spi__bb__i.html#a86ccf004bf5ccc8b7c73bd0f9e8dbaa7',1,'utl::spi_bb_i::type()'],['../classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#a8318081f8e7803101bddb893afe8fc6a',1,'utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::type()'],['../structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_00_01meta_1_1void__t_3_05e5aa384829bb34312a7b8ee4ecaa00f.html#a9818dd472dbf7e5819a37c772d0566d2',1,'utl::common_impl::__common_ref_< T &, U &, meta::void_t< __lref_res< T, U >, meta::when< std::is_reference< __lref_res< T, U > >::value > > >::type()'],['../structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_6_00_01meta_1_1void__tc4e71c227f251cadf0e0fb7b1ba6f1e9.html#a8f2b4a68e68f34543fa6e73774bec517',1,'utl::common_impl::__common_ref_< T &&, U &&, meta::void_t< __common_ref< T &, U & >, meta::when< ConvertibleTo< T &&, __rref_res< T, U > > >, meta::when< ConvertibleTo< U &&, __rref_res< T, U > > > > >::type()'],['../structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_00_01meta_1_1void__t_3972a8d6e6799b6ee6537c969cdced343.html#ade0c54407b6f17f667c01eec748c7e14',1,'utl::common_impl::__common_ref_< T &&, U &, meta::void_t< __common_ref< const T &, U & >, meta::when< ConvertibleTo< T &&, __common_ref< const T &, U & > > > > >::type()'],['../structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_6_00_01meta_1_1void__t_329fba5aeac3b93aa9cfa5aa7e282e196.html#a382d2ef7e9cf4cba7efe589969b64b07',1,'utl::common_impl::__common_ref_< T &, U &&, meta::void_t< __common_ref< T &, const U & >, meta::when< ConvertibleTo< U &&, __common_ref< T &, const U & > > > > >::type()'],['../structutl_1_1common__impl_1_1common__reference_3_01_t_01_4.html#ad228404ea08fbb8929dc7792a803c5a4',1,'utl::common_impl::common_reference< T >::type()'],['../structutl_1_1common__impl_1_1____common__reference3_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____015b01ed12d2d90ee57fbf756ab847e9.html#a41c50c14e6bc947987661add1a95e777',1,'utl::common_impl::__common_reference3< T, U, meta::void_t< __cond_res< T, U > > >::type()'],['../structutl_1_1common__impl_1_1____common__reference2_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____785d0aa2f8a62416e19573fcbdd83836.html#abad429fee19f4f511abfe089fa480404',1,'utl::common_impl::__common_reference2< T, U, meta::void_t< __basic_common_reference_t< T, U > > >::type()'],['../structutl_1_1common__impl_1_1____common__reference_3_01_t_00_01_u_00_01meta_1_1when_3_01std_1_1i23b95b4b3a65ce598dbcc7f52e9dab2c.html#af8297c9aa25bfb27c58f0f58722a0d28',1,'utl::common_impl::__common_reference< T, U, meta::when< std::is_reference< T >::value &&std::is_reference< U >::value > >::type()'],['../structutl_1_1details_1_1is__boolean__.html#ad34df9d79caf33bf92019da4232b791c',1,'utl::details::is_boolean_::type()'],['../structutl_1_1details_1_1is__boolean___3_01_b_00_01meta_1_1void__t_3_01meta_1_1use__if__same__t_37e77ed45a431955fc15b4c1210ad8491.html#abfb3ea1ef62c31310d992fde67f92900',1,'utl::details::is_boolean_< B, meta::void_t< meta::use_if_same_t< bool, decltype(!std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>()==std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>() !=std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>() &&std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>()||std::declval< cref_< B >>())> > >::type()'],['../structutl_1_1details_1_1is__weakly__equality__comparable__with__.html#ab700b64203b780a4e35e0b9362224da4',1,'utl::details::is_weakly_equality_comparable_with_::type()'],['../structutl_1_1details_1_1is__weakly__equality__comparable__with___3_01_t_00_01_u_00_01meta_1_1voi4404f901930622694666ca68fb75381b.html#a107023c7eaad95d6f6ed8eeb60801d69',1,'utl::details::is_weakly_equality_comparable_with_< T, U, meta::void_t< meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()==std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() !=std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>()==std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>() !=std::declval< cref_< T >>())> > >::type()'],['../structutl_1_1details_1_1is__strict__totally__ordered__.html#acb182f06d015a63fbe00a9700422046f',1,'utl::details::is_strict_totally_ordered_::type()'],['../structutl_1_1details_1_1is__strict__totally__ordered___3_01_t_00_01meta_1_1void__t_3_01meta_1_1uab48bcfc89164f446368b35bcc7c8bcd.html#a221f1b2e947002d4888711116e5ebfb5',1,'utl::details::is_strict_totally_ordered_< T, meta::void_t< meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()< std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() > std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()<=std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() >=std::declval< cref_< T >>())> > >::type()'],['../structutl_1_1details_1_1is__strict__totally__ordered__with__.html#a4687be9ddf2910a323d69193c0291723',1,'utl::details::is_strict_totally_ordered_with_::type()'],['../structutl_1_1details_1_1is__strict__totally__ordered__with___3_01_t_00_01_u_00_01meta_1_1void__t8fb7dd5a6ad25952241e37c6f163f434.html#a447a36dc0b2239ee20876c6255033345',1,'utl::details::is_strict_totally_ordered_with_< T, U, meta::void_t< meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()< std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() > std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()<=std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() >=std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>()< std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>() > std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>()<=std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>() >=std::declval< cref_< T >>())> > >::type()'],['../structutl_1_1array__traits.html#a297f692ae07fd5c9b02a989fe5736909',1,'utl::array_traits::type()'],['../structutl_1_1id__traits.html#ae8c2dc9bc8ff3284dc89e7760ef601f8',1,'utl::id_traits::type()'],['../classutl_1_1ostreamdev__it.html#ab5f87e036d215580e62f112f9ea1aef3',1,'utl::ostreamdev_it::type()'],['../classutl_1_1istreamdev__it.html#a1d7d245bb3b6397af354604448550fe3',1,'utl::istreamdev_it::type()'],['../classutl_1_1outdev__it.html#ac9f9b83fbb0b48a8c002638febbca186',1,'utl::outdev_it::type()'],['../classutl_1_1indev__it.html#a667aeec9e1dd008dd0bf91057890b633',1,'utl::indev_it::type()'],['../classutl_1_1iodev__it.html#a1c81a9a1ba749b44b9721f83bfebae08',1,'utl::iodev_it::type()'],['../classutl_1_1idx__dev.html#a6cdcb1da82a0047d990ee6bce8b6c32b',1,'utl::idx_dev::type()'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#aa35bd23b888a66ebceffd7ea37f7a230',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::type()'],['../classutl_1_1in__dev.html#adef54df1c3d4ae20629ecfdb7826384c',1,'utl::in_dev::type()'],['../classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a0fd855f15733c848a77ce3dfc2f3fab7',1,'utl::in_dev< virtual_tag, data_t, streamsize >::type()'],['../classutl_1_1inbuf__dev.html#ae429fbf167bbd96b2cc46094f3540b10',1,'utl::inbuf_dev::type()'],['../classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#af6c21cf92d9bffdd58fb4aa8f5ddb83f',1,'utl::inbuf_dev< virtual_tag, data_t, streamsize >::type()'],['../classutl_1_1ostream__dev.html#ac7169419677c70f4811803828b826351',1,'utl::ostream_dev::type()'],['../classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#aa3cb961a80a8dee210e9ab9ffd2483ee',1,'utl::ostream_dev< virtual_tag, data_t >::type()'],['../classutl_1_1out__dev.html#aebda5d42d26027e9266bfe74bf71a960',1,'utl::out_dev::type()'],['../classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#ac6d606494a0b663bf20bf180e33190e2',1,'utl::out_dev< virtual_tag, data_t, streamsize >::type()'],['../structutl_1_1meta_1_1detail_1_1detector.html#a747c70e71225be5ecaa6d20edce5512b',1,'utl::meta::detail::detector::type()'],['../structutl_1_1meta_1_1detail_1_1detector_3_01_default_00_01void__t_3_01_op_3_01_args_8_8_8_01_4_0c35bdbd19f56980c0b5ee6d490bfb634.html#af9cba657766ddb15348043a15c5bc234',1,'utl::meta::detail::detector< Default, void_t< Op< Args... > >, Op, Args... >::type()'],['../structutl_1_1meta_1_1nil__.html#a497da8469a94140b0285ba5864d794c8',1,'utl::meta::nil_::type()'],['../structutl_1_1meta_1_1identity.html#a9aab221df05f226c227a6e508460f7b7',1,'utl::meta::identity::type()'],['../structutl_1_1meta_1_1detail_1_1is__applicable__.html#ababc9a374e6321fb8ded4b2dde19795c',1,'utl::meta::detail::is_applicable_::type()'],['../structutl_1_1meta_1_1detail_1_1is__applicable__q__.html#a175161a76c46c8da1d170e329d17ce43',1,'utl::meta::detail::is_applicable_q_::type()'],['../structutl_1_1meta_1_1detail_1_1is__applicable__i__.html#ac512fdc9db578f9244b861f84c177ca7',1,'utl::meta::detail::is_applicable_i_::type()'],['../structutl_1_1meta_1_1detail_1_1defer__.html#ac8e2ede36472a15488ffdb49a6935be2',1,'utl::meta::detail::defer_::type()'],['../structutl_1_1meta_1_1detail_1_1defer__i__.html#af8659048a08bb48bae5c0dc3f9595bf7',1,'utl::meta::detail::defer_i_::type()'],['../group__type.html#gaefeff9de7bff8811e49692343ce6187e',1,'utl::meta::detail::if_c_::type()'],['../group__type.html#gaa7f24607990e92d8263246fc5f7003b7',1,'utl::meta::detail::if_c_< true, Then >::type()'],['../group__type.html#ga15100ac40785819517c5defacb19915c',1,'utl::meta::detail::if_c_< true, Then, Else >::type()'],['../group__type.html#ga2fbed149992c081ac85eefaf63a388ca',1,'utl::meta::detail::if_c_< false, Then, Else >::type()'],['../structutl_1_1meta_1_1detail_1_1when___3_01true_01_4.html#a2d6b156939c43f8236a109310733323c',1,'utl::meta::detail::when_< true >::type()'],['../structutl_1_1meta_1_1typelist.html#a7332ca3d7a7ec5b730e24a4dab743fa6',1,'utl::meta::typelist::type()'],['../structutl_1_1meta_1_1typelist_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4.html#adae915036f972f13b580e335c2ec2fa2',1,'utl::meta::typelist::cat_< typelist< L1... >, typelist< L2... > >::type()'],['../structutl_1_1meta_1_1typelist_1_1times__.html#abcf09cf6ea99301ed77748d71ea093ac',1,'utl::meta::typelist::times_::type()'],['../structutl_1_1meta_1_1typelist_1_1times___3_011_00_01_t_8_8_8_01_4.html#af90bd9e6b4394edbc09990f3fd1246b6',1,'utl::meta::typelist::times_< 1, T... >::type()'],['../structutl_1_1meta_1_1typelist_1_1times___3_010_00_01_t_8_8_8_01_4.html#a1a23fce8f9777a9dfe123c02a16c9a5d',1,'utl::meta::typelist::times_< 0, T... >::type()'],['../structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01typelist_3_01_list_8_8_8_01_4_01_4.html#a1f8a57b3a017d48791972780cc34fffc',1,'utl::meta::apply_impl::apply_< Fn, typelist< List... > >::type()'],['../structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01integer__sequence_3_01_t_00_01_is_8_8_8_01_4_01_4.html#a0452e2478b7abc590c3f2e6e26f98b67',1,'utl::meta::apply_impl::apply_< Fn, integer_sequence< T, Is... > >::type()'],['../structutl_1_1meta_1_1at__impl_1_1__add__pointer.html#a372a7a88f139a95fc12a4da82483d269',1,'utl::meta::at_impl::_add_pointer::type()'],['../structutl_1_1meta_1_1at__impl_1_1at___3_01typelist_3_01_list_8_8_8_01_4_00_01_n_01_4.html#ac335ce21f528d54140bdc0273d60b0ac',1,'utl::meta::at_impl::at_< typelist< List... >, N >::type()'],['../structutl_1_1meta_1_1front__impl_1_1front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.html#a964bc85961c4935570021361b0d4f514',1,'utl::meta::front_impl::front_< typelist< Head, Tail... > >::type()'],['../structutl_1_1meta_1_1back__impl_1_1back___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.html#a8d21b435cc06609d36638fe8de568e4b',1,'utl::meta::back_impl::back_< typelist< Head, Tail... > >::type()'],['../structutl_1_1meta_1_1cat__impl_1_1cat___3_4.html#a23a045e4af6ea5083c04d3d070436938',1,'utl::meta::cat_impl::cat_<>::type()'],['../structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_01_4.html#a453cfcf1d029d16a35b0f6b3329393e1',1,'utl::meta::cat_impl::cat_< typelist< L1... > >::type()'],['../structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4.html#a33c0c07037f594dc11a4eb7ecac7a428',1,'utl::meta::cat_impl::cat_< typelist< L1... >, typelist< L2... > >::type()'],['../structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4.html#abb224956ed3d1439190f0ca0afbfeea1',1,'utl::meta::fold_impl::fold_< typelist< Head, Tail... >, V, Fn >::type()'],['../structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_4_00_01_v0_00_01_fn_01_4.html#a8455824c7006528cdabb3d56a60ae9d6',1,'utl::meta::fold_impl::fold_< typelist<>, V0, Fn >::type()'],['../structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4.html#ad7c51dcac1ed18739bdce2eb75695a7a',1,'utl::meta::rev_fold_impl::rev_fold_< typelist< Head, Tail... >, V, Fn >::type()'],['../structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_tail_01_4_00_01_v_00_01_fn_01_4.html#a84a91d7ad7d46de8f4b4b2237c75b3e8',1,'utl::meta::rev_fold_impl::rev_fold_< typelist< Tail >, V, Fn >::type()'],['../structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_4_00_01_v_00_01_fn_01_4.html#a07d723d69e4acba3b20a1d47c4c6da35',1,'utl::meta::rev_fold_impl::rev_fold_< typelist<>, V, Fn >::type()'],['../structutl_1_1meta_1_1reverse__impl_1_1reverse__.html#ad1618828ac681258d9909839df60dd39',1,'utl::meta::reverse_impl::reverse_::type()'],['../structutl_1_1meta_1_1pop__front__impl_1_1pop__front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.html#a7387d0025d1dcece8e63a3bba5426ac8',1,'utl::meta::pop_front_impl::pop_front_< typelist< Head, Tail... > >::type()'],['../structutl_1_1meta_1_1pop__back__impl_1_1pop__back__.html#a8b82ff5dcd6fcda89b36f8e587e64d24',1,'utl::meta::pop_back_impl::pop_back_::type()'],['../structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts_8_8_8_01_40fe2b1c8ede658aadb6925de73541689.html#afb15f91a804a184a7b614c632737f0d0',1,'utl::meta::transform_impl::transform_< typelist< typelist< Ts... >, Fn >, void_t< invoke< Fn, Ts >... > >::type()'],['../structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts0_8_8_8_01_8fba6bf3d0565d17a96950cb517db5f1.html#a284cc6268deadee714a5107d5d153285',1,'utl::meta::transform_impl::transform_< typelist< typelist< Ts0... >, typelist< Ts1... >, Fn >, void_t< invoke< Fn, Ts0, Ts1 >... > >::type()'],['../structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t56243bc35bf73da8271cb88f34751f3a.html#add92e9d4d6e95f5710d87cd4fe7c50da',1,'utl::meta::transform_lazy_impl::transform_lazy_< typelist< typelist< Ts... >, Fn >, void_t< invoke< Fn, Ts >... > >::type()'],['../structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t14ff615a4bff6c4c3701df9c38aaa6a5.html#a09eb2a1f5d8fa4468eef608f5abfa22d',1,'utl::meta::transform_lazy_impl::transform_lazy_< typelist< typelist< Ts0... >, typelist< Ts1... >, Fn >, void_t< invoke< Fn, Ts0, Ts1 >... > >::type()'],['../structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.html#aa3109a5803c72b9688b928a72d357982',1,'utl::meta::find_if_impl::find_if_< typelist< Head, Tail... >, Fn, N >::type()'],['../structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.html#aaa7d3cf83c1c12443a002061cad448ef',1,'utl::meta::find_if_impl::find_if_< typelist<>, Fn, N >::type()'],['../structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.html#a2eddb7dab6c905a487811e253dc5b917',1,'utl::meta::seek_if_impl::seek_if_< typelist< Head, Tail... >, Fn, N >::type()'],['../structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.html#a4a8d37653df9971c37bba6bfc346d009',1,'utl::meta::seek_if_impl::seek_if_< typelist<>, Fn, N >::type()'],['../structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.html#aaa24b23395ae90c9aa56c78b299d1124',1,'utl::meta::count_if_impl::count_if_< typelist< Head, Tail... >, Fn, N >::type()'],['../structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.html#a6817148d6cfbde3cbd495deed94bb469',1,'utl::meta::count_if_impl::count_if_< typelist<>, Fn, N >::type()'],['../structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_l_01_4.html#a8cb888a78e40c7ce91d286e6f5153f2f',1,'utl::meta::filter_impl::filter_< typelist< Head, Tail... >, Fn, L >::type()'],['../structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_4_00_01_fn_00_01_l_01_4.html#afdefe3c45a1bf1d8b5419014a16dc80e',1,'utl::meta::filter_impl::filter_< typelist<>, Fn, L >::type()'],['../structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_01_head_00_01_tail_8_8_8_dfa8065a3617f53ecded260506092a07.html#ad7d3db888c18a6e48ed800f0c484701d',1,'utl::meta::replace_if_impl::replace_if_< typelist< Head, Tail... >, Fn, T, Ret >::type()'],['../structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_4_00_01_fn_00_01_t_00_01_ret_01_4.html#a45470ea1b5d2ddc6ff9054e66b193d78',1,'utl::meta::replace_if_impl::replace_if_< typelist<>, Fn, T, Ret >::type()'],['../structutl_1_1detail_1_1try__invoke.html#a23491c600d42090f3eb400eadc49ef7f',1,'utl::detail::try_invoke::type()'],['../structutl_1_1detail_1_1invoke__result__.html#a03e0ac5bf1e7751812af8828eb6550b3',1,'utl::detail::invoke_result_::type()'],['../structutl_1_1detail_1_1invoke__result___3_01true_00_01___callable_00_01___args_8_8_8_01_4.html#af68f2e0441486139aab41a8d5e74b35a',1,'utl::detail::invoke_result_< true, _Callable, _Args... >::type()']]] +]; diff --git a/doc/html/search/typedefs_11.html b/doc/html/search/typedefs_11.html new file mode 100644 index 0000000..3f37b89 --- /dev/null +++ b/doc/html/search/typedefs_11.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/typedefs_11.js b/doc/html/search/typedefs_11.js new file mode 100644 index 0000000..f9b151b --- /dev/null +++ b/doc/html/search/typedefs_11.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['uint16_5f',['uint16_',['../namespaceutl_1_1meta.html#af1b0b8109e3e61032c24d148202b6966',1,'utl::meta']]], + ['uint32_5f',['uint32_',['../namespaceutl_1_1meta.html#aa8c7c38548db8df196b683ffdc109cd6',1,'utl::meta']]], + ['uint8_5f',['uint8_',['../namespaceutl_1_1meta.html#aae9c77ad9349e98af6cdc41e9b0090f8',1,'utl::meta']]], + ['use_5fif_5fall_5ft',['use_if_all_t',['../namespaceutl_1_1meta.html#a52ff6257bf079904f9cb51a65f5a7397',1,'utl::meta']]], + ['use_5fif_5fany_5ft',['use_if_any_t',['../namespaceutl_1_1meta.html#ad0394846551cd881782e46d2d05190de',1,'utl::meta']]], + ['use_5fif_5fnot_5fsame_5ft',['use_if_not_same_t',['../namespaceutl_1_1meta.html#af590469269a8c378d937d8d75ee96e8c',1,'utl::meta']]], + ['use_5fif_5fsame_5ft',['use_if_same_t',['../namespaceutl.html#ac5e425d39e8ee62e68664c6166d02d0c',1,'utl::use_if_same_t()'],['../namespaceutl_1_1meta.html#a7b4ba22b3afb3e7a98e1012a350cb573',1,'utl::meta::use_if_same_t()']]] +]; diff --git a/doc/html/search/typedefs_12.html b/doc/html/search/typedefs_12.html new file mode 100644 index 0000000..b1382a2 --- /dev/null +++ b/doc/html/search/typedefs_12.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/typedefs_12.js b/doc/html/search/typedefs_12.js new file mode 100644 index 0000000..37da9c5 --- /dev/null +++ b/doc/html/search/typedefs_12.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['value_5ftype',['value_type',['../structutl_1_1array.html#a2486d9a16559e5edbf8c0f6457cc1223',1,'utl::array::value_type()'],['../structutl_1_1id__t.html#a9f1d9c9792705f9d358018d174f22429',1,'utl::id_t::value_type()'],['../structutl_1_1dev__iterator__traits.html#a4092b379cea659f2d79908b356ec6fb2',1,'utl::dev_iterator_traits::value_type()'],['../classutl_1_1ostreamdev__it.html#a4c8ef9dc81fd07e719efe6e4f31bccfd',1,'utl::ostreamdev_it::value_type()'],['../classutl_1_1istreamdev__it.html#a2c86d97ea181d403018078c7bcd85a7d',1,'utl::istreamdev_it::value_type()'],['../classutl_1_1outdev__it.html#aa973216f7bc8930b3125e94a0bb664d3',1,'utl::outdev_it::value_type()'],['../classutl_1_1indev__it.html#ae7db86c4ea6793a3ae0af0fd877bd751',1,'utl::indev_it::value_type()'],['../classutl_1_1iodev__it.html#a2e8033eee2ac8e8132b8b833ffa606ab',1,'utl::iodev_it::value_type()']]], + ['void_5f',['void_',['../group__detection.html#gac16d50de47cf57734433e9ea636522c5',1,'utl::meta']]], + ['void_5ft',['void_t',['../group__detection.html#gae7373c997420d16cf37e542eb3cfa3ad',1,'utl::meta']]] +]; diff --git a/doc/html/search/typedefs_13.html b/doc/html/search/typedefs_13.html new file mode 100644 index 0000000..33ab4aa --- /dev/null +++ b/doc/html/search/typedefs_13.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/typedefs_13.js b/doc/html/search/typedefs_13.js new file mode 100644 index 0000000..dbfd01a --- /dev/null +++ b/doc/html/search/typedefs_13.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['when',['when',['../namespaceutl_1_1meta.html#a181d79db46b10170529e85b907ed3dc7',1,'utl::meta']]], + ['word_5ft',['word_t',['../namespaceutl.html#a1368cb6928f648fe4db1c85c190f0548',1,'utl']]] +]; diff --git a/doc/html/search/typedefs_2.html b/doc/html/search/typedefs_2.html new file mode 100644 index 0000000..745d076 --- /dev/null +++ b/doc/html/search/typedefs_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/typedefs_2.js b/doc/html/search/typedefs_2.js new file mode 100644 index 0000000..d5e3ea6 --- /dev/null +++ b/doc/html/search/typedefs_2.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['back',['back',['../namespaceutl_1_1meta.html#ad9ee55707fc633d53577b81a59136b7d',1,'utl::meta']]], + ['bitand_5f',['bitand_',['../namespaceutl_1_1meta.html#aca6b42898b47945118c518bde9d25cc2',1,'utl::meta']]], + ['bitnot_5f',['bitnot_',['../namespaceutl_1_1meta.html#a9ea199752ca985d1b813d7127868566c',1,'utl::meta']]], + ['bitor_5f',['bitor_',['../namespaceutl_1_1meta.html#a1e2c2decdd22972fc8ce43203c0ef0d1',1,'utl::meta']]], + ['bitxor_5f',['bitxor_',['../namespaceutl_1_1meta.html#a910e21345bc7e75dc7c0ceb4a4721754',1,'utl::meta']]], + ['bool_5f',['bool_',['../namespaceutl_1_1meta.html#a0bec5828d2df0edfb4bc084773a438f6',1,'utl::meta']]], + ['byte_5ft',['byte_t',['../namespaceutl.html#a1427cb5a2b13313147a902173b91e3c1',1,'utl']]] +]; diff --git a/doc/html/search/typedefs_3.html b/doc/html/search/typedefs_3.html new file mode 100644 index 0000000..def60a5 --- /dev/null +++ b/doc/html/search/typedefs_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/typedefs_3.js b/doc/html/search/typedefs_3.js new file mode 100644 index 0000000..f899b77 --- /dev/null +++ b/doc/html/search/typedefs_3.js @@ -0,0 +1,22 @@ +var searchData= +[ + ['cat',['cat',['../namespaceutl_1_1meta.html#a70d0910ace47f4e12e8fa0788679044a',1,'utl::meta']]], + ['char_5f',['char_',['../namespaceutl_1_1meta.html#a0fe31eec9b085e52aa45587e6d887419',1,'utl::meta']]], + ['common_5freference',['common_reference',['../namespaceutl.html#a3970b90f0e0fd9f801cfcb1d955e3d42',1,'utl']]], + ['common_5freference_5ft',['common_reference_t',['../namespaceutl_1_1common__impl.html#adc4b085a84c0355fda341475074ff230',1,'utl::common_impl::common_reference_t()'],['../namespaceutl.html#a4d76d9e29b830c16ad7dd34e3800a746',1,'utl::common_reference_t()']]], + ['comp_5feq',['comp_eq',['../namespaceutl_1_1meta.html#a7ae2d08147055946f1b9345e579a26b6',1,'utl::meta']]], + ['comp_5fge',['comp_ge',['../namespaceutl_1_1meta.html#ae6c552e8e99ac5578f865f17c1d0efdc',1,'utl::meta']]], + ['comp_5fgt',['comp_gt',['../namespaceutl_1_1meta.html#a3c4784ad3eb1f745c58b9a4b65a406e8',1,'utl::meta']]], + ['comp_5fle',['comp_le',['../namespaceutl_1_1meta.html#afb9a35dc5ef40b5bf9902c0daec7f1af',1,'utl::meta']]], + ['comp_5flt',['comp_lt',['../namespaceutl_1_1meta.html#a1a948746d1758a05c0ae71cfd114b05d',1,'utl::meta']]], + ['comp_5fne',['comp_ne',['../namespaceutl_1_1meta.html#af92bee16de47b16ba01a8efac686b488',1,'utl::meta']]], + ['compose',['compose',['../namespaceutl_1_1meta.html#a4f0c06cabe66bc73b703eb8509c7bb07',1,'utl::meta']]], + ['compose_5ff',['compose_f',['../namespaceutl_1_1meta.html#a729294327829b3068632da1235dc3090',1,'utl::meta']]], + ['const_5fiterator',['const_iterator',['../structutl_1_1array.html#ab1b4f132f7babac61535fe1f7634089a',1,'utl::array::const_iterator()'],['../structutl_1_1id__t.html#ae27418faa4801ec414140df1bc422350',1,'utl::id_t::const_iterator()'],['../classutl_1_1idx__dev.html#afa0e264f696f45c5a1b663c7c868a510',1,'utl::idx_dev::const_iterator()'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a66a2229a8f511c9eb147072211bbda92',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::const_iterator()'],['../classutl_1_1in__dev.html#a686e6cda465a7e08b29465a75740e043',1,'utl::in_dev::const_iterator()'],['../classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#afbb0032261579546e26972be1ab8f4e9',1,'utl::in_dev< virtual_tag, data_t, streamsize >::const_iterator()'],['../classutl_1_1inbuf__dev.html#a173c37503cdd40e7ac1be25759553c24',1,'utl::inbuf_dev::const_iterator()'],['../classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#aa27a4fdb726f1b44d965ebcd84457aab',1,'utl::inbuf_dev< virtual_tag, data_t, streamsize >::const_iterator()'],['../classutl_1_1ostream__dev.html#a04f153a089085daceda6a55854789a95',1,'utl::ostream_dev::const_iterator()'],['../classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#abcb00d6a76ac3baa46283c631c020b9c',1,'utl::ostream_dev< virtual_tag, data_t >::const_iterator()'],['../classutl_1_1out__dev.html#acaf94b09de592226f78d4d2d43f348ed',1,'utl::out_dev::const_iterator()'],['../classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a690f4d4b54e352b64bd484a15138df64',1,'utl::out_dev< virtual_tag, data_t, streamsize >::const_iterator()']]], + ['const_5fpointer',['const_pointer',['../structutl_1_1array.html#a61ccd50cead4ae2041fa561b1cf4d79d',1,'utl::array::const_pointer()'],['../structutl_1_1id__t.html#a6fbd7a944a981e0cc293319e25d77220',1,'utl::id_t::const_pointer()']]], + ['const_5freference',['const_reference',['../structutl_1_1array.html#aab01825d62c21fcf252a64fbeda2bbc4',1,'utl::array::const_reference()'],['../structutl_1_1id__t.html#aa7a965a5bb74490f5a999d5fa08cee2c',1,'utl::id_t::const_reference()']]], + ['const_5freverse_5fiterator',['const_reverse_iterator',['../structutl_1_1array.html#a2870f89643a20193a2fc420476833256',1,'utl::array::const_reverse_iterator()'],['../structutl_1_1id__t.html#adac2f02dfe10ad607f5b226fd98bd0d6',1,'utl::id_t::const_reverse_iterator()']]], + ['count',['count',['../namespaceutl_1_1meta.html#ab5508236016638fa8e6b97cd17dfc9c2',1,'utl::meta']]], + ['count_5fif',['count_if',['../namespaceutl_1_1meta.html#a981e18b40d69cdd76466de7bfe24e619',1,'utl::meta']]], + ['cref_5f',['cref_',['../namespaceutl.html#a7d69beba08b81379703fd3b0ca42044d',1,'utl']]] +]; diff --git a/doc/html/search/typedefs_4.html b/doc/html/search/typedefs_4.html new file mode 100644 index 0000000..ef733ad --- /dev/null +++ b/doc/html/search/typedefs_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/typedefs_4.js b/doc/html/search/typedefs_4.js new file mode 100644 index 0000000..a2ff2c5 --- /dev/null +++ b/doc/html/search/typedefs_4.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['data_5ftype',['data_type',['../classutl_1_1idx__dev.html#ace7a74e439972658d6006f83371ee0ca',1,'utl::idx_dev::data_type()'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#aa26f4d0326232c436f3a312edf89b7e1',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::data_type()'],['../classutl_1_1in__dev.html#acb38742b242e8cf90323d46a9907863d',1,'utl::in_dev::data_type()'],['../classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a6d418e7caeb88fa750148f1e8874dd79',1,'utl::in_dev< virtual_tag, data_t, streamsize >::data_type()'],['../classutl_1_1inbuf__dev.html#ae660dce5b5111b0ea4743e32b3d2c3aa',1,'utl::inbuf_dev::data_type()'],['../classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a261cc04ccf7edd02e1ab69225322dc4b',1,'utl::inbuf_dev< virtual_tag, data_t, streamsize >::data_type()'],['../classutl_1_1ostream__dev.html#af333211e6a4c20b86c35a1d4fd15b9c5',1,'utl::ostream_dev::data_type()'],['../classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#a0c182d46215479ac0169c741db773f3b',1,'utl::ostream_dev< virtual_tag, data_t >::data_type()'],['../classutl_1_1out__dev.html#ac6b32afc51452a7dd2297a41f74e63e4',1,'utl::out_dev::data_type()'],['../classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a6ebf2bb2132e972cd9f2daffa67d981b',1,'utl::out_dev< virtual_tag, data_t, streamsize >::data_type()']]], + ['dec',['dec',['../namespaceutl_1_1meta.html#abee96e75aadb364fdd0890aa3ee490b7',1,'utl::meta']]], + ['defer',['defer',['../namespaceutl_1_1meta.html#a48f9a1220931596a9652351d2e7242be',1,'utl::meta']]], + ['defer_5fi',['defer_i',['../namespaceutl_1_1meta.html#a01f183f337439e414184beedc9bcf9e3',1,'utl::meta']]], + ['detected',['detected',['../structutl_1_1meta_1_1detail_1_1detector.html#a8090990f11c250f679b44a6fd48f8114',1,'utl::meta::detail::detector::detected()'],['../structutl_1_1meta_1_1detail_1_1detector_3_01_default_00_01void__t_3_01_op_3_01_args_8_8_8_01_4_0c35bdbd19f56980c0b5ee6d490bfb634.html#ac8aebc89aa52ef6bde346c593a8feb74',1,'utl::meta::detail::detector< Default, void_t< Op< Args... > >, Op, Args... >::detected()']]], + ['detected_5for',['detected_or',['../namespaceutl_1_1meta_1_1detail.html#a835827cb3116483228d6f7f774b68970',1,'utl::meta::detail']]], + ['detected_5for_5ft',['detected_or_t',['../namespaceutl_1_1meta.html#a8fd055bc6c6c3b1d551e9605aa35644c',1,'utl::meta']]], + ['detected_5ft',['detected_t',['../namespaceutl_1_1meta.html#aa654a286b3bc8e6d8116ee1f57087110',1,'utl::meta']]], + ['difference_5ftype',['difference_type',['../structutl_1_1array.html#a7b0b7e9d236db2d3d90465fa6638d22b',1,'utl::array::difference_type()'],['../structutl_1_1id__t.html#a7341366f60f8ecd4a1e8dcefa33a4018',1,'utl::id_t::difference_type()'],['../structutl_1_1dev__iterator__traits.html#a7445a2713455342fb817d0cdaaf1855c',1,'utl::dev_iterator_traits::difference_type()'],['../classutl_1_1ostreamdev__it.html#abf3e651511a922a8d8a2f9eb5d23e162',1,'utl::ostreamdev_it::difference_type()'],['../classutl_1_1istreamdev__it.html#ae74eb71649f6d9d6c758477d5a729464',1,'utl::istreamdev_it::difference_type()'],['../classutl_1_1outdev__it.html#a08921b19038ae0fd919d507abb036b16',1,'utl::outdev_it::difference_type()'],['../classutl_1_1indev__it.html#abfeb8765e0e34491594113a8b1261f2a',1,'utl::indev_it::difference_type()'],['../classutl_1_1iodev__it.html#a3dd6b7953c425d027df92051b6332286',1,'utl::iodev_it::difference_type()']]], + ['divide',['divide',['../namespaceutl_1_1meta.html#ae1ec6fc1f76abbb2e5287aa91cd85068',1,'utl::meta']]], + ['dword_5ft',['dword_t',['../namespaceutl.html#abc93b88d0c0f95081ecd3d2194daf0fb',1,'utl']]] +]; diff --git a/doc/html/search/typedefs_5.html b/doc/html/search/typedefs_5.html new file mode 100644 index 0000000..94db6d2 --- /dev/null +++ b/doc/html/search/typedefs_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/typedefs_5.js b/doc/html/search/typedefs_5.js new file mode 100644 index 0000000..280f88f --- /dev/null +++ b/doc/html/search/typedefs_5.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['empty',['empty',['../namespaceutl_1_1meta.html#a58c1744750d0df133034f60a95f87e19',1,'utl::meta']]], + ['enable_5fif',['enable_if',['../namespaceutl_1_1meta.html#ab3fed26a4c7a8204accb349f0b6600e8',1,'utl::meta']]], + ['enable_5fif_5ft',['enable_if_t',['../namespaceutl_1_1meta.html#a372fe391d9567f66a81091f581e1fa01',1,'utl::meta']]], + ['eval',['eval',['../namespaceutl_1_1meta.html#aa5a37adba244ff4286f994111c4c02ea',1,'utl::meta']]] +]; diff --git a/doc/html/search/typedefs_6.html b/doc/html/search/typedefs_6.html new file mode 100644 index 0000000..bda8ea1 --- /dev/null +++ b/doc/html/search/typedefs_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/typedefs_6.js b/doc/html/search/typedefs_6.js new file mode 100644 index 0000000..b454177 --- /dev/null +++ b/doc/html/search/typedefs_6.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['false_5f',['false_',['../namespaceutl_1_1meta.html#a55511dbaa0adb605ce22dcec11f8d22d',1,'utl::meta']]], + ['filter',['filter',['../namespaceutl_1_1meta.html#ac72acc616316c322e750d20a46553ba4',1,'utl::meta']]], + ['find',['find',['../namespaceutl_1_1meta.html#af4c9b6350bba98cc0dd73e87cb4ce413',1,'utl::meta']]], + ['find_5fif',['find_if',['../namespaceutl_1_1meta.html#aacf124929c0cbb3b29d34679bff50a96',1,'utl::meta']]], + ['first_5fof',['first_of',['../group__type.html#gaf7089523d21cd405c76985643f31092a',1,'utl::meta']]], + ['fold',['fold',['../namespaceutl_1_1meta.html#a6108f39d28c924146eff4143a61af226',1,'utl::meta']]], + ['front',['front',['../namespaceutl_1_1meta.html#ace309fb2eff5c4a5a806b9393abea486',1,'utl::meta']]] +]; diff --git a/doc/html/search/typedefs_7.html b/doc/html/search/typedefs_7.html new file mode 100644 index 0000000..565b233 --- /dev/null +++ b/doc/html/search/typedefs_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/typedefs_7.js b/doc/html/search/typedefs_7.js new file mode 100644 index 0000000..bc4063d --- /dev/null +++ b/doc/html/search/typedefs_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['head_5f',['head_',['../structutl_1_1meta_1_1at__impl_1_1at___3_01typelist_3_01_list_8_8_8_01_4_00_01_n_01_4.html#ae3269f1784b11ab8789715d3b213e18b',1,'utl::meta::at_impl::at_< typelist< List... >, N >']]] +]; diff --git a/doc/html/search/typedefs_8.html b/doc/html/search/typedefs_8.html new file mode 100644 index 0000000..3063e03 --- /dev/null +++ b/doc/html/search/typedefs_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/typedefs_8.js b/doc/html/search/typedefs_8.js new file mode 100644 index 0000000..4016b43 --- /dev/null +++ b/doc/html/search/typedefs_8.js @@ -0,0 +1,40 @@ +var searchData= +[ + ['identity_5ft',['identity_t',['../namespaceutl_1_1meta.html#a63c0b6b08f4c1d9bd3c4db7432e9b2af',1,'utl::meta']]], + ['idx_5fdev_5ft',['idx_dev_t',['../classutl_1_1idx__dev.html#afe9d6e2398154ac585db7c5972a671e6',1,'utl::idx_dev::idx_dev_t()'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a14c20218e1843e6dc981a23aeb2fccb8',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::idx_dev_t()']]], + ['idx_5ftype',['idx_type',['../classutl_1_1idx__dev.html#aa8055ff3787876f243710ff194c7b8d0',1,'utl::idx_dev::idx_type()'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a838a5bd9c2abb86ccde6249dc549e11b',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::idx_type()']]], + ['if_5f',['if_',['../group__type.html#ga39cc4e727a8faa5ea176f543e62c05c0',1,'utl::meta']]], + ['if_5fc',['if_c',['../group__type.html#gaa3812817ce749832da73fdf5d2a85380',1,'utl::meta']]], + ['in_5fdev_5ft',['in_dev_t',['../classutl_1_1in__dev.html#a1bcb5426bf837e27c9fa6128f25d2857',1,'utl::in_dev::in_dev_t()'],['../classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a1ab301d27deb2aef9d7298f348248ca9',1,'utl::in_dev< virtual_tag, data_t, streamsize >::in_dev_t()']]], + ['inbuf_5fdev_5ft',['inbuf_dev_t',['../classutl_1_1inbuf__dev.html#abd832bf35fa1ae0881e8cd86386e5b6b',1,'utl::inbuf_dev::inbuf_dev_t()'],['../classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a368e42d8a91039e938145d78980b415b',1,'utl::inbuf_dev< virtual_tag, data_t, streamsize >::inbuf_dev_t()']]], + ['inc',['inc',['../namespaceutl_1_1meta.html#af74f5af58b33241f1b94102742a73ab1',1,'utl::meta']]], + ['index_5f',['index_',['../namespaceutl_1_1meta.html#a5b7d36b9e568b81f2df897d56dc23b64',1,'utl::meta']]], + ['index_5fsequence',['index_sequence',['../namespaceutl_1_1meta.html#acb42e9c38b726174e64a36eea39239a5',1,'utl::meta']]], + ['index_5fsequence_5ffor',['index_sequence_for',['../namespaceutl_1_1meta.html#a7cdf7fbb62116925ccdecab03d3383d9',1,'utl::meta']]], + ['index_5ft',['index_t',['../namespaceutl.html#a676c0acd539dd04048dcc7b4d698577e',1,'utl']]], + ['int16_5f',['int16_',['../namespaceutl_1_1meta.html#a65bf025970a7ec0fd488c50a1b9c1038',1,'utl::meta']]], + ['int32_5f',['int32_',['../namespaceutl_1_1meta.html#aa907f027fe3df2cecca2cf60930086fb',1,'utl::meta']]], + ['int8_5f',['int8_',['../namespaceutl_1_1meta.html#aa0ca1890dde0298c4380f94582cc2186',1,'utl::meta']]], + ['int_5f',['int_',['../namespaceutl_1_1meta.html#a35b962b97f8277de66c1c8c02796eed4',1,'utl::meta']]], + ['integer_5fsequence',['integer_sequence',['../namespaceutl_1_1meta.html#abc3ba8590a6cdd451f64d6c5dcd8ff99',1,'utl::meta']]], + ['integral_5f',['integral_',['../namespaceutl_1_1meta.html#ad60242f998d1d236b7b9744b7b09c8f2',1,'utl::meta']]], + ['invoke',['invoke',['../namespaceutl_1_1meta.html#a77630cd8adc01f7193f6cb834313d90f',1,'utl::meta']]], + ['invoke_5fresult',['invoke_result',['../namespaceutl.html#a9dd560a1b217a10af34d1ade3e77a76b',1,'utl']]], + ['invoke_5fresult_5ft',['invoke_result_t',['../namespaceutl.html#ae40494acc30f2894c74544f3e9142933',1,'utl']]], + ['invoke_5ft',['invoke_t',['../namespaceutl_1_1meta.html#ac27f3e5f3ec42921d9f8a6bb85560cf1',1,'utl::meta']]], + ['is_5fapplicable_5fit',['is_applicable_it',['../namespaceutl_1_1meta.html#add602488265f07c7a3080355350cda70',1,'utl::meta']]], + ['is_5fapplicable_5fqt',['is_applicable_qt',['../namespaceutl_1_1meta.html#a52c0afa73f63dc889e44cc6cc180f1f8',1,'utl::meta']]], + ['is_5fapplicable_5ft',['is_applicable_t',['../namespaceutl_1_1meta.html#a695a94a2bbe51b0d0eec9bf82214d094',1,'utl::meta']]], + ['is_5fboolean_5ft',['is_boolean_t',['../namespaceutl_1_1details.html#a7f9309206778a6e9f0859c328b4288df',1,'utl::details']]], + ['is_5fdetected',['is_detected',['../namespaceutl_1_1meta.html#a5329219a9d2f195421a78d8e07873507',1,'utl::meta']]], + ['is_5fdetected_5fconvertible',['is_detected_convertible',['../namespaceutl_1_1meta.html#afa24702fa15a1d0a8a05761c54b79def',1,'utl::meta']]], + ['is_5fdetected_5fexact',['is_detected_exact',['../namespaceutl_1_1meta.html#ad5224ef66e8f40efaaf3ad3d605dd629',1,'utl::meta']]], + ['is_5fstrict_5ftotally_5fordered_5ft',['is_strict_totally_ordered_t',['../namespaceutl_1_1details.html#a3d90ca0461264f84f75c7698f7bbb811',1,'utl::details']]], + ['is_5fstrict_5ftotally_5fordered_5fwith_5ft',['is_strict_totally_ordered_with_t',['../namespaceutl_1_1details.html#acd9fac18316e44b7abd920686de886f0',1,'utl::details']]], + ['is_5fswappable',['is_swappable',['../namespaceutl.html#a1d50e9abd420e77555624f3e52bc7479',1,'utl']]], + ['is_5fswappable_5fwith',['is_swappable_with',['../namespaceutl.html#ab437a6d3a1f420b44e01378ae37fcb24',1,'utl']]], + ['is_5fweakly_5fequality_5fcomparable_5fwith_5ft',['is_weakly_equality_comparable_with_t',['../namespaceutl_1_1details.html#a499205eb8ca7f46d1e417a27f52442b8',1,'utl::details']]], + ['iterator',['iterator',['../structutl_1_1array.html#a1cc94e09b75412ad9d7cf636b550ef2d',1,'utl::array::iterator()'],['../structutl_1_1id__t.html#acbcdd4547bde10bbbab7a72ad1adbf21',1,'utl::id_t::iterator()'],['../classutl_1_1idx__dev.html#a7aa9e9ecfa5035dba4c2f9ef9ec60c2a',1,'utl::idx_dev::iterator()'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a0965be515cca243b76f571aa425cfd96',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::iterator()'],['../classutl_1_1in__dev.html#a629f2364e2ab427cbdc0c7f1cb8e8a66',1,'utl::in_dev::iterator()'],['../classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a3a73a6ff50e2ab4c7e6cd70f560d7854',1,'utl::in_dev< virtual_tag, data_t, streamsize >::iterator()'],['../classutl_1_1inbuf__dev.html#a0c0827ae69fac778cec3abb179bfc0f3',1,'utl::inbuf_dev::iterator()'],['../classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a48b8449b9f608a5e3b03df97dd94cff7',1,'utl::inbuf_dev< virtual_tag, data_t, streamsize >::iterator()'],['../classutl_1_1ostream__dev.html#a38ce53a3ec7a902bdcbd9dc04350b903',1,'utl::ostream_dev::iterator()'],['../classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#aa440d7490da956cfe91f2835191056a4',1,'utl::ostream_dev< virtual_tag, data_t >::iterator()'],['../classutl_1_1out__dev.html#ad7f16990cdb6d54a54c774224f758f13',1,'utl::out_dev::iterator()'],['../classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a3da010b49d2e6b87eaddc22ef636acc9',1,'utl::out_dev< virtual_tag, data_t, streamsize >::iterator()']]], + ['iterator_5fcategory',['iterator_category',['../structutl_1_1dev__iterator__traits.html#a458414025d5e52646ddf90a3e9f04261',1,'utl::dev_iterator_traits::iterator_category()'],['../classutl_1_1ostreamdev__it.html#af1487479f0514fa330ef3393821932e8',1,'utl::ostreamdev_it::iterator_category()'],['../classutl_1_1istreamdev__it.html#ab9f273d2adc8c4fbc4d2e0a52346de89',1,'utl::istreamdev_it::iterator_category()'],['../classutl_1_1outdev__it.html#aeed1fef454099c402e4d3bb496ed0061',1,'utl::outdev_it::iterator_category()'],['../classutl_1_1indev__it.html#ac52588b2394480dcf3a73763f76f283a',1,'utl::indev_it::iterator_category()'],['../classutl_1_1iodev__it.html#ad223ec5d1f9187b200bfe0566d6c1e4a',1,'utl::iodev_it::iterator_category()']]], + ['iterator_5ft',['iterator_t',['../classutl_1_1ostreamdev__it.html#a56009b0113c7a0cf6c62012a7cdc49d1',1,'utl::ostreamdev_it::iterator_t()'],['../classutl_1_1istreamdev__it.html#a94408beb548efbbe69cf51b657f47202',1,'utl::istreamdev_it::iterator_t()'],['../classutl_1_1outdev__it.html#af1eac074478db751a6662ef7a120bc60',1,'utl::outdev_it::iterator_t()'],['../classutl_1_1indev__it.html#a7b45a5a4d76a5196a3999cb6a4fd610d',1,'utl::indev_it::iterator_t()'],['../classutl_1_1iodev__it.html#a85372687144876ec60a9bd6b4edf301c',1,'utl::iodev_it::iterator_t()']]] +]; diff --git a/doc/html/search/typedefs_9.html b/doc/html/search/typedefs_9.html new file mode 100644 index 0000000..9c978f7 --- /dev/null +++ b/doc/html/search/typedefs_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/typedefs_9.js b/doc/html/search/typedefs_9.js new file mode 100644 index 0000000..f0b2ffc --- /dev/null +++ b/doc/html/search/typedefs_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['long_5f',['long_',['../namespaceutl_1_1meta.html#a5d3ed337c64ea13ee70891d09b0caa3e',1,'utl::meta']]] +]; diff --git a/doc/html/search/typedefs_a.html b/doc/html/search/typedefs_a.html new file mode 100644 index 0000000..426df90 --- /dev/null +++ b/doc/html/search/typedefs_a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/typedefs_a.js b/doc/html/search/typedefs_a.js new file mode 100644 index 0000000..21eb281 --- /dev/null +++ b/doc/html/search/typedefs_a.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['make_5findex_5fsequence',['make_index_sequence',['../namespaceutl_1_1meta.html#aa7e48cd5c76ea88fc89ff4a66bc6f596',1,'utl::meta']]], + ['make_5finteger_5fsequence',['make_integer_sequence',['../namespaceutl_1_1meta.html#a093a8cfdae571002c305273aa02ad6a2',1,'utl::meta']]], + ['modulo',['modulo',['../namespaceutl_1_1meta.html#adf7106374b1acc978be05b5848002cfc',1,'utl::meta']]], + ['mult',['mult',['../namespaceutl_1_1meta.html#a5f0a890cbd116d4a72a760a26f5a8244',1,'utl::meta']]] +]; diff --git a/doc/html/search/typedefs_b.html b/doc/html/search/typedefs_b.html new file mode 100644 index 0000000..fe314a1 --- /dev/null +++ b/doc/html/search/typedefs_b.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/typedefs_b.js b/doc/html/search/typedefs_b.js new file mode 100644 index 0000000..b52ea9c --- /dev/null +++ b/doc/html/search/typedefs_b.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['negate',['negate',['../namespaceutl_1_1meta.html#aec4bf9329ff8356d333a59e3c369d0b7',1,'utl::meta']]], + ['none_5fof',['none_of',['../namespaceutl_1_1meta.html#af324255cfaa0be3f02843961f5becb85',1,'utl::meta']]], + ['not_5f',['not_',['../group__integral.html#ga16df145331d3c62e624385c5949d90c4',1,'utl::meta']]], + ['not_5fc',['not_c',['../group__integral.html#ga7de987520bd0973f03ff8bab3152361a',1,'utl::meta']]], + ['not_5fsame_5f',['not_same_',['../group__integral.html#ga4dfaf054d891eb35d741662b077bbbd2',1,'utl::meta']]], + ['npos',['Npos',['../namespaceutl_1_1meta.html#af0c85cc6480a9e7a8e4fb7d8f936f01b',1,'utl::meta']]] +]; diff --git a/doc/html/search/typedefs_c.html b/doc/html/search/typedefs_c.html new file mode 100644 index 0000000..3a6a4a7 --- /dev/null +++ b/doc/html/search/typedefs_c.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/typedefs_c.js b/doc/html/search/typedefs_c.js new file mode 100644 index 0000000..da947a5 --- /dev/null +++ b/doc/html/search/typedefs_c.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['or_5f',['or_',['../group__integral.html#gac43f400cc93d54f5f79892e618069d9b',1,'utl::meta']]], + ['ostream_5fdev_5ft',['ostream_dev_t',['../classutl_1_1ostream__dev.html#adc4bbb5e81e6d612937bca9a84c950ca',1,'utl::ostream_dev::ostream_dev_t()'],['../classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#a802836d016068af3e5e78dc5001d5861',1,'utl::ostream_dev< virtual_tag, data_t >::ostream_dev_t()']]], + ['out_5fdev_5ft',['out_dev_t',['../classutl_1_1out__dev.html#a17ccf13d527b4c220b0e937e20d81aba',1,'utl::out_dev::out_dev_t()'],['../classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a3b7c1dad93f0ec25842afc436221db6b',1,'utl::out_dev< virtual_tag, data_t, streamsize >::out_dev_t()']]] +]; diff --git a/doc/html/search/typedefs_d.html b/doc/html/search/typedefs_d.html new file mode 100644 index 0000000..8c3b81f --- /dev/null +++ b/doc/html/search/typedefs_d.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/typedefs_d.js b/doc/html/search/typedefs_d.js new file mode 100644 index 0000000..1f221d7 --- /dev/null +++ b/doc/html/search/typedefs_d.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['pair',['pair',['../namespaceutl_1_1meta.html#aa6513d9d2a5db3ba3517efff33adc761',1,'utl::meta']]], + ['pointer',['pointer',['../structutl_1_1array.html#a90f23795637ad96d367bf7d978f7e5e6',1,'utl::array::pointer()'],['../structutl_1_1id__t.html#ab93692ef0c67737db55a38d658375ce3',1,'utl::id_t::pointer()'],['../structutl_1_1dev__iterator__traits.html#a4b06368f7cb0bc44dc21582be7808ca6',1,'utl::dev_iterator_traits::pointer()'],['../classutl_1_1ostreamdev__it.html#a53deacec230a62f20fcb41858aa7cf8b',1,'utl::ostreamdev_it::pointer()'],['../classutl_1_1istreamdev__it.html#abc9731045fe1cf2639a91cfc6040114f',1,'utl::istreamdev_it::pointer()'],['../classutl_1_1outdev__it.html#a92f06ead0276169036aee90dbee2ca8e',1,'utl::outdev_it::pointer()'],['../classutl_1_1indev__it.html#aa5b1e7c33987cec0d2bfc6aad07b297f',1,'utl::indev_it::pointer()'],['../classutl_1_1iodev__it.html#a3cc475e736e680ae4d078f241c0572eb',1,'utl::iodev_it::pointer()']]], + ['pointer_5ftype',['pointer_type',['../classutl_1_1idx__dev.html#acf054246b0c7c8be0a676fc1cf2b090c',1,'utl::idx_dev::pointer_type()'],['../classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.html#a21fdf221d18bb3a118950d51af0b2df6',1,'utl::idx_dev< virtual_tag, data_t, idx_t, N >::pointer_type()'],['../classutl_1_1in__dev.html#aef4b5c41ab91ef284cfc0cf6100c0828',1,'utl::in_dev::pointer_type()'],['../classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a4deebc522c75a793304a7a7ff09fb3f8',1,'utl::in_dev< virtual_tag, data_t, streamsize >::pointer_type()'],['../classutl_1_1inbuf__dev.html#a345d3b465e9cf57ebe3a8df31b67fec7',1,'utl::inbuf_dev::pointer_type()'],['../classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a9d035a944db280e98fd41260ed463000',1,'utl::inbuf_dev< virtual_tag, data_t, streamsize >::pointer_type()'],['../classutl_1_1ostream__dev.html#a4d60fb31555306bf52a88889db1c8739',1,'utl::ostream_dev::pointer_type()'],['../classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.html#a2186444525589e2e06fdf947b238b785',1,'utl::ostream_dev< virtual_tag, data_t >::pointer_type()'],['../classutl_1_1out__dev.html#abfb6a95c13fc63c09776141ad16e98e3',1,'utl::out_dev::pointer_type()'],['../classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.html#a83ce1ff81d538c68649fe339241d6cff',1,'utl::out_dev< virtual_tag, data_t, streamsize >::pointer_type()']]], + ['pop_5fback',['pop_back',['../namespaceutl_1_1meta.html#a86a37f5803c474823963e1f3c6f7a6d6',1,'utl::meta']]], + ['pop_5ffront',['pop_front',['../namespaceutl_1_1meta.html#aa4a307a81c0640c6c0dd08f8a53f3c32',1,'utl::meta']]], + ['ptrdiff_5ft',['ptrdiff_t',['../namespaceutl.html#a1b83655ba00b548af9b51f169c6c567a',1,'utl']]], + ['push_5fback',['push_back',['../namespaceutl_1_1meta.html#adf545ba110edc6a34ddcaf2280a0c7f4',1,'utl::meta']]], + ['push_5ffront',['push_front',['../namespaceutl_1_1meta.html#ab0f84ba0807b6fd36fa9e4e5cfc4cd32',1,'utl::meta']]] +]; diff --git a/doc/html/search/typedefs_e.html b/doc/html/search/typedefs_e.html new file mode 100644 index 0000000..ccde4cc --- /dev/null +++ b/doc/html/search/typedefs_e.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/typedefs_e.js b/doc/html/search/typedefs_e.js new file mode 100644 index 0000000..c49bd14 --- /dev/null +++ b/doc/html/search/typedefs_e.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['reference',['reference',['../structutl_1_1array.html#a054dd1ab28d43ec0676dbe2056f63cf4',1,'utl::array::reference()'],['../structutl_1_1id__t.html#a7c0de57bc3065501a953f4811bd9e183',1,'utl::id_t::reference()'],['../structutl_1_1dev__iterator__traits.html#a2747e8f629aaaa8a47ac8d3cd9527fad',1,'utl::dev_iterator_traits::reference()'],['../classutl_1_1ostreamdev__it.html#abda00e5d526b4f670b4bcae2a0ec65e2',1,'utl::ostreamdev_it::reference()'],['../classutl_1_1istreamdev__it.html#a824851507bcd0dbaf6e1f7c54dffccae',1,'utl::istreamdev_it::reference()'],['../classutl_1_1outdev__it.html#ac4fdabc0a410f1cd90e116f3df6806c6',1,'utl::outdev_it::reference()'],['../classutl_1_1indev__it.html#afd50b088dd181c3d74f9e150a5190c3a',1,'utl::indev_it::reference()'],['../classutl_1_1iodev__it.html#a44916c1157ea2d97aa7fe4ed89af6d19',1,'utl::iodev_it::reference()']]], + ['remove_5fcvref_5ft',['remove_cvref_t',['../namespaceutl.html#a7a9d26263662e02fbe3b238da5fd7338',1,'utl']]], + ['repeat',['repeat',['../namespaceutl_1_1meta.html#aa013c45afb59b5c132a72be54ba145fb',1,'utl::meta']]], + ['repeat_5fc',['repeat_c',['../namespaceutl_1_1meta.html#af6ff0017ea5e914543527b7135930f47',1,'utl::meta']]], + ['replace',['replace',['../namespaceutl_1_1meta.html#ac9d120f858ebfa2b0ef74c6305a9fb6d',1,'utl::meta']]], + ['replace_5fif',['replace_if',['../namespaceutl_1_1meta.html#a848a47bf281bf3eaf932cc9113477102',1,'utl::meta']]], + ['rev_5ffold',['rev_fold',['../namespaceutl_1_1meta.html#ab1a91edef4cf9fd56b73c9a03eaeb3d4',1,'utl::meta']]], + ['reverse',['reverse',['../namespaceutl_1_1meta.html#a2ae6bfa22f1912b0ba09d24e0ae2ccd9',1,'utl::meta']]], + ['reverse_5fiterator',['reverse_iterator',['../structutl_1_1array.html#a777805d325ff4de41bdf0c81427a42d1',1,'utl::array::reverse_iterator()'],['../structutl_1_1id__t.html#a708f6a3b9b85d211f933bbe66db26a2b',1,'utl::id_t::reverse_iterator()']]] +]; diff --git a/doc/html/search/typedefs_f.html b/doc/html/search/typedefs_f.html new file mode 100644 index 0000000..0909979 --- /dev/null +++ b/doc/html/search/typedefs_f.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/typedefs_f.js b/doc/html/search/typedefs_f.js new file mode 100644 index 0000000..f0bc5b3 --- /dev/null +++ b/doc/html/search/typedefs_f.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['second_5fof',['second_of',['../group__type.html#ga422dd1b0895f0074ad9932d68d9edbc5',1,'utl::meta']]], + ['seek',['seek',['../namespaceutl_1_1meta.html#aa550d9dc96d34623af4ce71f8a1eaff5',1,'utl::meta']]], + ['seek_5fif',['seek_if',['../namespaceutl_1_1meta.html#ab8eafd75f3077a36c4e3363b742da64a',1,'utl::meta']]], + ['sequence',['Sequence',['../classutl_1_1i2c__bb__i.html#ad2872b7e17116f8379144488fe135052',1,'utl::i2c_bb_i::Sequence()'],['../classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html#af8c7ac3797343e39e7e052ec51aec232',1,'utl::i2c_bb_i< virtual_tag >::Sequence()']]], + ['shift_5fleft',['shift_left',['../namespaceutl_1_1meta.html#a63088c29ac25eefda4189721e662b391',1,'utl::meta']]], + ['shift_5fright',['shift_right',['../namespaceutl_1_1meta.html#acbe6dd78c4a4230e92acc5ca86e3fcc7',1,'utl::meta']]], + ['size',['size',['../namespaceutl_1_1meta.html#a0edfc2c15e42531e53c0822264d220ec',1,'utl::meta']]], + ['size_5f',['size_',['../namespaceutl_1_1meta.html#a249ac51f6613684164663bd22025fe9a',1,'utl::meta']]], + ['size_5ft',['size_t',['../namespaceutl.html#a22cbecb50ee5c1032de66133e96cbac6',1,'utl']]], + ['size_5ftype',['size_type',['../structutl_1_1array.html#aab1bf2f35917b742e5d79ddcab335ef5',1,'utl::array::size_type()'],['../structutl_1_1id__t.html#aa4bd898906751aa7d77fb78bcf6ee9bb',1,'utl::id_t::size_type()']]], + ['sizeof_5f',['sizeof_',['../namespaceutl_1_1meta.html#a3fdae1894a962a69828ccccf73088cce',1,'utl::meta']]], + ['speed',['Speed',['../classutl_1_1__1wire__uart__i.html#acc4364e3aa029405a9b2b25e1fea83ac',1,'utl::_1wire_uart_i::Speed()'],['../classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html#a854a62c6f9e6d62597471b887c541e03',1,'utl::_1wire_uart_i< virtual_tag >::Speed()']]], + ['sub',['sub',['../namespaceutl_1_1meta.html#a9f90eea3852367afa4e1fe74756976fb',1,'utl::meta']]] +]; diff --git a/doc/html/search/variables_0.html b/doc/html/search/variables_0.html new file mode 100644 index 0000000..51f7bd6 --- /dev/null +++ b/doc/html/search/variables_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/variables_0.js b/doc/html/search/variables_0.js new file mode 100644 index 0000000..edba5f5 --- /dev/null +++ b/doc/html/search/variables_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['_5f1wire_5fi_3c_20_5f1wire_5fuart_5fi_3c_20impl_5ft_20_3e_20_3e',['_1wire_i< _1wire_uart_i< Impl_t > >',['../classutl_1_1__1wire__uart__i.html#a6ab0ec4032cad68333590f159da83871',1,'utl::_1wire_uart_i']]], + ['_5fdata',['_data',['../structutl_1_1array.html#a3c49a8073abb7072f4b902982789dedc',1,'utl::array::_data()'],['../structutl_1_1id__t.html#af45f6388a067b5e34f5c82c1ac2b32b6',1,'utl::id_t::_data()']]], + ['_5fspeed',['_speed',['../classutl_1_1__1wire__uart__i.html#a14e342fac3c10b66d82d154f47b9db26',1,'utl::_1wire_uart_i::_speed()'],['../classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.html#a0c17e9b5d4e7b240d4bfc9f3cdd5c928',1,'utl::_1wire_uart_i< virtual_tag >::_speed()']]] +]; diff --git a/doc/html/search/variables_1.html b/doc/html/search/variables_1.html new file mode 100644 index 0000000..f46154d --- /dev/null +++ b/doc/html/search/variables_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/variables_1.js b/doc/html/search/variables_1.js new file mode 100644 index 0000000..57a81f1 --- /dev/null +++ b/doc/html/search/variables_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['arithmetic',['Arithmetic',['../namespaceutl.html#a41733496c30138efd3d88f13d9382aad',1,'utl']]], + ['assignable',['Assignable',['../namespaceutl.html#acfbced82f83ceb87eeb77d31941c011a',1,'utl']]] +]; diff --git a/doc/html/search/variables_10.html b/doc/html/search/variables_10.html new file mode 100644 index 0000000..b62b717 --- /dev/null +++ b/doc/html/search/variables_10.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/variables_10.js b/doc/html/search/variables_10.js new file mode 100644 index 0000000..8a392ea --- /dev/null +++ b/doc/html/search/variables_10.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['weaklyequalitycomparablewith',['WeaklyEqualityComparableWith',['../namespaceutl.html#a216f6e14ca647d85841fa13c40dc4ee3',1,'utl']]], + ['weaklyincrementable',['WeaklyIncrementable',['../namespaceutl.html#a25b4f216e3d7754b1c7088dd59504dee',1,'utl']]] +]; diff --git a/doc/html/search/variables_11.html b/doc/html/search/variables_11.html new file mode 100644 index 0000000..2ce8561 --- /dev/null +++ b/doc/html/search/variables_11.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/variables_11.js b/doc/html/search/variables_11.js new file mode 100644 index 0000000..95ba68f --- /dev/null +++ b/doc/html/search/variables_11.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['unsignedintegral',['UnsignedIntegral',['../namespaceutl.html#a7fb6eaf8fc1c5d65755c8c96a7a9b61f',1,'utl']]] +]; diff --git a/doc/html/search/variables_12.html b/doc/html/search/variables_12.html new file mode 100644 index 0000000..bba5857 --- /dev/null +++ b/doc/html/search/variables_12.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/variables_12.js b/doc/html/search/variables_12.js new file mode 100644 index 0000000..8708e33 --- /dev/null +++ b/doc/html/search/variables_12.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['v',['v',['../classtest__ostream__dev_1_1_ostream__dev__impl.html#a782792f34ec64257188ef223b969e148',1,'test_ostream_dev::Ostream_dev_impl::v()'],['../classtest__ostream__dev_1_1_ostream__vdev__impl.html#a220aec538ada71f940c19ef3252cd039',1,'test_ostream_dev::Ostream_vdev_impl::v()']]], + ['value',['value',['../structtesting_1_1internal_1_1bool__constant.html#a499fba6576296b04d99690a486424b32',1,'testing::internal::bool_constant::value()'],['../structtesting_1_1internal_1_1_const_char_ptr.html#adba40d23d5986904b605946f643cf26e',1,'testing::internal::ConstCharPtr::value()'],['../classtesting_1_1internal_1_1_implicitly_convertible.html#aea51cecabca681fb75659e224771b7b7',1,'testing::internal::ImplicitlyConvertible::value()'],['../structtesting_1_1internal_1_1_is_hash_table.html#a165e0a3eddfa5fadf9b950be6432d848',1,'testing::internal::IsHashTable::value()'],['../structtesting_1_1internal_1_1_flat_tuple_elem_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_i_01_4.html#ac175518e7807c0b49c0ba8c1c78269ec',1,'testing::internal::FlatTupleElemBase< FlatTuple< T... >, I >::value()']]] +]; diff --git a/doc/html/search/variables_13.html b/doc/html/search/variables_13.html new file mode 100644 index 0000000..c92cbcc --- /dev/null +++ b/doc/html/search/variables_13.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/variables_13.js b/doc/html/search/variables_13.js new file mode 100644 index 0000000..8a392ea --- /dev/null +++ b/doc/html/search/variables_13.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['weaklyequalitycomparablewith',['WeaklyEqualityComparableWith',['../namespaceutl.html#a216f6e14ca647d85841fa13c40dc4ee3',1,'utl']]], + ['weaklyincrementable',['WeaklyIncrementable',['../namespaceutl.html#a25b4f216e3d7754b1c7088dd59504dee',1,'utl']]] +]; diff --git a/doc/html/search/variables_2.html b/doc/html/search/variables_2.html new file mode 100644 index 0000000..15275b7 --- /dev/null +++ b/doc/html/search/variables_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/variables_2.js b/doc/html/search/variables_2.js new file mode 100644 index 0000000..37a6ec6 --- /dev/null +++ b/doc/html/search/variables_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['boolean',['Boolean',['../namespaceutl.html#a38e00606b4b45a2ac59fa4576b4498c6',1,'utl']]] +]; diff --git a/doc/html/search/variables_3.html b/doc/html/search/variables_3.html new file mode 100644 index 0000000..fbc3671 --- /dev/null +++ b/doc/html/search/variables_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/variables_3.js b/doc/html/search/variables_3.js new file mode 100644 index 0000000..133ca9a --- /dev/null +++ b/doc/html/search/variables_3.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['clkh_5f',['clkH_',['../classutl_1_1spi__bb__i.html#a3a9b68907304114573bc7321006fa539',1,'utl::spi_bb_i::clkH_()'],['../classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#a69ff11ae02a37042fc446ddee6a534b2',1,'utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::clkH_()']]], + ['clkl_5f',['clkL_',['../classutl_1_1spi__bb__i.html#a509a5828018f62e2627af67e8c6a32d5',1,'utl::spi_bb_i::clkL_()'],['../classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#a652413b2bf4a45c7326faa3fa9b8ef73',1,'utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::clkL_()']]], + ['common',['Common',['../namespaceutl.html#a79e23f98aa58c2dcd111743a096ef092',1,'utl']]], + ['commonreference',['CommonReference',['../namespaceutl.html#a1cc37f121888dcc030b8e676b077024f',1,'utl']]], + ['constructible',['Constructible',['../namespaceutl.html#a2a3ef7a9c788ffc1291ce15d2e5869bf',1,'utl']]], + ['convertibleto',['ConvertibleTo',['../namespaceutl.html#a9c88a03a5b6dd66200e86f98fb1eb9eb',1,'utl']]], + ['copyable',['Copyable',['../namespaceutl.html#ac300f0e204f0ec4bd0ca38a551bb2b88',1,'utl']]], + ['copyassignable',['CopyAssignable',['../namespaceutl.html#a1be866c815c4fcb2a7344650c3491c0c',1,'utl']]], + ['copyconstructible',['CopyConstructible',['../namespaceutl.html#afb0f121b33b44640406b724c4d582b70',1,'utl']]], + ['cur_5f',['cur_',['../classutl_1_1__1wire__i.html#af9adb646cdda935d9a5a26656669e785',1,'utl::_1wire_i::cur_()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a36d3c8a53b0759d8578a9065914f8d28',1,'utl::_1wire_i< virtual_tag >::cur_()']]], + ['cursor_5f',['cursor_',['../classutl_1_1istreamdev__it.html#aa455b33e506dfb2b86203b309ec8829a',1,'utl::istreamdev_it::cursor_()'],['../classutl_1_1outdev__it.html#ae570a13c1cc3a24388972f89d63015b5',1,'utl::outdev_it::cursor_()'],['../classutl_1_1indev__it.html#aab523007c0875372b156c90ba7fb963a',1,'utl::indev_it::cursor_()'],['../classutl_1_1iodev__it.html#afdfed02323d69331e54d599d309e8967',1,'utl::iodev_it::cursor_()']]] +]; diff --git a/doc/html/search/variables_4.html b/doc/html/search/variables_4.html new file mode 100644 index 0000000..8067e67 --- /dev/null +++ b/doc/html/search/variables_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/variables_4.js b/doc/html/search/variables_4.js new file mode 100644 index 0000000..febd122 --- /dev/null +++ b/doc/html/search/variables_4.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['dec_5f',['dec_',['../classutl_1_1__1wire__i.html#acb00f6ded645dffafe56ea5e8502511a',1,'utl::_1wire_i::dec_()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#a6afd1b2d7901b29ed686d7fdeaee5d58',1,'utl::_1wire_i< virtual_tag >::dec_()']]], + ['defaultconstructible',['DefaultConstructible',['../namespaceutl.html#aacd3a17129d764e8a80c615eb4b88dc3',1,'utl']]], + ['derivedfrom',['DerivedFrom',['../namespaceutl.html#a0904cc4071a8ea97a1d646dc0a9ca85b',1,'utl']]], + ['destructible',['Destructible',['../namespaceutl.html#acf2f1df100b0cc4f127243a1a83a8469',1,'utl']]] +]; diff --git a/doc/html/search/variables_5.html b/doc/html/search/variables_5.html new file mode 100644 index 0000000..7e95e94 --- /dev/null +++ b/doc/html/search/variables_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/variables_5.js b/doc/html/search/variables_5.js new file mode 100644 index 0000000..7209865 --- /dev/null +++ b/doc/html/search/variables_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['equalitycomparable',['EqualityComparable',['../namespaceutl.html#a92a38a3d1638ccad068c24d1242ef63a',1,'utl']]], + ['equalitycomparablewith',['EqualityComparableWith',['../namespaceutl.html#aa2be0b64c41b392c5264de5f5fee094e',1,'utl']]] +]; diff --git a/doc/html/search/variables_6.html b/doc/html/search/variables_6.html new file mode 100644 index 0000000..3d398e6 --- /dev/null +++ b/doc/html/search/variables_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/variables_6.js b/doc/html/search/variables_6.js new file mode 100644 index 0000000..523b134 --- /dev/null +++ b/doc/html/search/variables_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['floatingpoint',['FloatingPoint',['../namespaceutl.html#a07e83d4763a298c1faf2b1069b55e286',1,'utl']]] +]; diff --git a/doc/html/search/variables_7.html b/doc/html/search/variables_7.html new file mode 100644 index 0000000..7b79146 --- /dev/null +++ b/doc/html/search/variables_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/variables_7.js b/doc/html/search/variables_7.js new file mode 100644 index 0000000..d754110 --- /dev/null +++ b/doc/html/search/variables_7.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['i2c_5fi_3c_20i2c_5fbb_5fi_3c_20impl_5ft_20_3e_20_3e',['i2c_i< i2c_bb_i< impl_t > >',['../classutl_1_1i2c__bb__i.html#a9932eded730c8f9a7b1d15988082b699',1,'utl::i2c_bb_i']]], + ['idx_5fdev',['Idx_dev',['../namespaceutl.html#a80a0424d220ac1f7be50086617a05dbd',1,'utl']]], + ['in_5fdev',['In_dev',['../namespaceutl.html#a1470ab9407ee21ea374b2c7a81e3511b',1,'utl']]], + ['inbuf_5fdev',['Inbuf_dev',['../namespaceutl.html#ac447a457f18a1c4dcd1dddb4c2789006',1,'utl']]], + ['integral',['Integral',['../namespaceutl.html#ada9137016ddccf3339b2f6b3c409cc3c',1,'utl']]], + ['invocable',['Invocable',['../namespaceutl.html#a9d5bbdf19b08d6d714ec696b0ec44d0a',1,'utl']]], + ['is_5fdetected_5fconvertible_5fv',['is_detected_convertible_v',['../namespaceutl_1_1meta.html#acba521b528e775be4b37d2e481e0f138',1,'utl::meta']]], + ['is_5fdetected_5fexact_5fv',['is_detected_exact_v',['../namespaceutl_1_1meta.html#a960827a1d72083a511f8ea4ccc8beceb',1,'utl::meta']]], + ['is_5fdetected_5fv',['is_detected_v',['../namespaceutl_1_1meta.html#a4f3184ccb8e8ba2a78e2d2e83a0b9885',1,'utl::meta']]] +]; diff --git a/doc/html/search/variables_8.html b/doc/html/search/variables_8.html new file mode 100644 index 0000000..8ebc5f6 --- /dev/null +++ b/doc/html/search/variables_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/variables_8.js b/doc/html/search/variables_8.js new file mode 100644 index 0000000..2b5b896 --- /dev/null +++ b/doc/html/search/variables_8.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['movable',['Movable',['../namespaceutl.html#afc25cb525eb29162042c21238f28f26e',1,'utl']]], + ['moveassignable',['MoveAssignable',['../namespaceutl.html#a7b8e4a26148ed5f2c60e4fd7d41e7e63',1,'utl']]], + ['moveconstructible',['MoveConstructible',['../namespaceutl.html#a2a728f3d477d96f4f719bf62079321cf',1,'utl']]] +]; diff --git a/doc/html/search/variables_9.html b/doc/html/search/variables_9.html new file mode 100644 index 0000000..1213661 --- /dev/null +++ b/doc/html/search/variables_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/variables_9.js b/doc/html/search/variables_9.js new file mode 100644 index 0000000..ca3599a --- /dev/null +++ b/doc/html/search/variables_9.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['nsec_5f',['nsec_',['../classutl_1_1spi__bb__i.html#a863bf592b1df8f74bcc3b8d76f40c173',1,'utl::spi_bb_i::nsec_()'],['../classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.html#a0d112cd54d54775eb50febed8f6c18b5',1,'utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >::nsec_()']]], + ['nulldev_5f',['nullDev_',['../classutl_1_1__1wire__id__t.html#a9d1d7610961adf2ae3669cbbcace74d2',1,'utl::_1wire_id_t']]] +]; diff --git a/doc/html/search/variables_a.html b/doc/html/search/variables_a.html new file mode 100644 index 0000000..24819a3 --- /dev/null +++ b/doc/html/search/variables_a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/variables_a.js b/doc/html/search/variables_a.js new file mode 100644 index 0000000..bc10d39 --- /dev/null +++ b/doc/html/search/variables_a.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['out_5fdev',['Out_dev',['../namespaceutl.html#a77f27f594c8696fcfbc85a9ec66c11f1',1,'utl']]], + ['owner_5f',['owner_',['../classutl_1_1ostreamdev__it.html#a11033565f4b36ffdc5a6362393decad9',1,'utl::ostreamdev_it::owner_()'],['../classutl_1_1istreamdev__it.html#a01c9f093714b3a55b3bada9bbc14a53d',1,'utl::istreamdev_it::owner_()'],['../classutl_1_1outdev__it.html#abbc4217bcfe956aeb8c1252c7f4759f3',1,'utl::outdev_it::owner_()'],['../classutl_1_1indev__it.html#a33a3a7b7c30da80280719f1c0761a0d8',1,'utl::indev_it::owner_()'],['../classutl_1_1iodev__it.html#a2676a4159e9799027cdff9ba7e006bbe',1,'utl::iodev_it::owner_()']]] +]; diff --git a/doc/html/search/variables_b.html b/doc/html/search/variables_b.html new file mode 100644 index 0000000..b306931 --- /dev/null +++ b/doc/html/search/variables_b.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/variables_b.js b/doc/html/search/variables_b.js new file mode 100644 index 0000000..75b497e --- /dev/null +++ b/doc/html/search/variables_b.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['pos_5f',['pos_',['../classutl_1_1__1wire__i.html#a51ed80ef816ea8a4f5a3cdb4d87b0875',1,'utl::_1wire_i::pos_()'],['../classutl_1_1__1wire__i_3_01virtual__tag_01_4.html#aaa7389458c2969170dc0678f27b9ea83',1,'utl::_1wire_i< virtual_tag >::pos_()']]], + ['predicate',['Predicate',['../namespaceutl.html#aae56a019cdd2006c4f07d2e207289195',1,'utl']]] +]; diff --git a/doc/html/search/variables_c.html b/doc/html/search/variables_c.html new file mode 100644 index 0000000..75709df --- /dev/null +++ b/doc/html/search/variables_c.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/variables_c.js b/doc/html/search/variables_c.js new file mode 100644 index 0000000..4a856f9 --- /dev/null +++ b/doc/html/search/variables_c.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['regular',['Regular',['../namespaceutl.html#a3accaa436a17248b4214baebc582b2f6',1,'utl']]], + ['regularinvocable',['RegularInvocable',['../namespaceutl.html#ace9ef6da96e8cf5dc72762cd66240186',1,'utl']]], + ['relation',['Relation',['../namespaceutl.html#a6d1e9b4853dd005ddaf61a79333cab98',1,'utl']]] +]; diff --git a/doc/html/search/variables_d.html b/doc/html/search/variables_d.html new file mode 100644 index 0000000..34c80a4 --- /dev/null +++ b/doc/html/search/variables_d.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/variables_d.js b/doc/html/search/variables_d.js new file mode 100644 index 0000000..1e01f9b --- /dev/null +++ b/doc/html/search/variables_d.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['same',['Same',['../namespaceutl.html#af86da3571c3026c6bbd501c6b7bc5093',1,'utl']]], + ['scalar',['Scalar',['../namespaceutl.html#a7f86c4bf42b13d9525481d731b194308',1,'utl']]], + ['semiregular',['Semiregular',['../namespaceutl.html#af6b010e85897cb590e66a52157be1af5',1,'utl']]], + ['signedintegral',['SignedIntegral',['../namespaceutl.html#a667b758d906c466d1b8a878a45750bf1',1,'utl']]], + ['spi_5fi_3c_20spi_5fbb_5fi_3c_20impl_5ft_2c_20cpol_2c_20cpha_2c_20bitorder_20_3e_20_3e',['spi_i< spi_bb_i< impl_t, CPOL, CPHA, BitOrder > >',['../classutl_1_1spi__bb__i.html#aa82efc45adc590f33164edacc1783c20',1,'utl::spi_bb_i']]], + ['stricttotallyordered',['StrictTotallyOrdered',['../namespaceutl.html#a720d6ece86f3f3320816aaae02eb16e4',1,'utl']]], + ['stricttotallyorderedwith',['StrictTotallyOrderedWith',['../namespaceutl.html#a5599d14d1bd008e4c14787d610a2b429',1,'utl']]], + ['strictweakorder',['StrictWeakOrder',['../namespaceutl.html#aa4b7b9105cfab3cd72865b5e0db23b11',1,'utl']]], + ['swappable',['Swappable',['../namespaceutl.html#ae2b149b19fb3d69a4fc555e4474bf9de',1,'utl']]], + ['swappablewith',['SwappableWith',['../namespaceutl.html#a4a3bb850ba59d499382bd11153104af7',1,'utl']]] +]; diff --git a/doc/html/search/variables_e.html b/doc/html/search/variables_e.html new file mode 100644 index 0000000..4a1c8a6 --- /dev/null +++ b/doc/html/search/variables_e.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/variables_e.js b/doc/html/search/variables_e.js new file mode 100644 index 0000000..b7dbbd4 --- /dev/null +++ b/doc/html/search/variables_e.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['unsignedintegral',['UnsignedIntegral',['../namespaceutl.html#a7fb6eaf8fc1c5d65755c8c96a7a9b61f',1,'utl']]], + ['usec_5f',['usec_',['../classutl_1_1i2c__bb__i.html#a8bd3726104fc91eb8f283d7ffec71cee',1,'utl::i2c_bb_i::usec_()'],['../classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.html#aa3e73dad28462bf6d8c132ddfeb3a390',1,'utl::i2c_bb_i< virtual_tag >::usec_()']]] +]; diff --git a/doc/html/search/variables_f.html b/doc/html/search/variables_f.html new file mode 100644 index 0000000..cc86fb5 --- /dev/null +++ b/doc/html/search/variables_f.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/variables_f.js b/doc/html/search/variables_f.js new file mode 100644 index 0000000..9792f17 --- /dev/null +++ b/doc/html/search/variables_f.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['v_5f',['v_',['../structutl_1_1iodev__it_1_1value__type__t.html#a62dd0ffec4198f9a81a93323582c4c9e',1,'utl::iodev_it::value_type_t']]], + ['value_5f',['value_',['../classutl_1_1istreamdev__it.html#afdc31b2308ede3449e26866991221a0d',1,'utl::istreamdev_it::value_()'],['../classutl_1_1indev__it.html#afb6cc9d365842a104d12a69f3c8cd189',1,'utl::indev_it::value_()'],['../classutl_1_1iodev__it.html#a7281baf429e5ed7a5526e14a9659a11f',1,'utl::iodev_it::value_()']]] +]; diff --git a/doc/html/selection_8h.html b/doc/html/selection_8h.html new file mode 100644 index 0000000..5599e24 --- /dev/null +++ b/doc/html/selection_8h.html @@ -0,0 +1,166 @@ + + + + + + + +uTL: include/utl/meta/selection.h File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    selection.h File Reference
    +
    +
    + +

    Template meta-programming type selections. +More...

    +
    #include <utl/core/impl.h>
    +#include <utl/meta/integral.h>
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + +

    +Classes

    struct  utl::meta::detail::if_c_< If,... >
     
    struct  utl::meta::detail::if_c_< true, Then >
     
    struct  utl::meta::detail::if_c_< true, Then, Else >
     
    struct  utl::meta::detail::if_c_< false, Then, Else >
     
    + + + + + + + + +

    +Namespaces

     utl
     STL's core language concepts.
     
     utl::meta
     
     utl::meta::detail
     
    + + + + + + + + + + + + + + + + + + + +

    +Typedefs

    template<bool B, typename... Args>
    using utl::meta::if_c = eval< detail::if_c_< B, Args... > >
     Select one type or another depending on a compile-time Boolean. More...
     
    template<typename If , typename... Args>
    using utl::meta::if_ = if_c< If::type::value, Args... >
     Select one type or another depending on a compile-time Boolean type. More...
     
    template<typename T1 , typename ... >
    using utl::meta::first_of = T1
     Select the first type of a type sequence. More...
     
    template<typename T1 , typename T2 , typename ... >
    using utl::meta::second_of = T2
     Select the second type of a type sequence. More...
     
    +

    Detailed Description

    +

    Template meta-programming type selections.

    +

    Copyright (C) 2018-2019 Christos Choutouridis

    +

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    +

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

    +

    You should have received a copy of the GNU Lesser General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    + +

    Definition in file selection.h.

    +
    +
    + + + + diff --git a/doc/html/selection_8h.js b/doc/html/selection_8h.js new file mode 100644 index 0000000..18bbfa8 --- /dev/null +++ b/doc/html/selection_8h.js @@ -0,0 +1,7 @@ +var selection_8h = +[ + [ "first_of", "selection_8h.html#gaf7089523d21cd405c76985643f31092a", null ], + [ "if_", "selection_8h.html#ga39cc4e727a8faa5ea176f543e62c05c0", null ], + [ "if_c", "selection_8h.html#gaa3812817ce749832da73fdf5d2a85380", null ], + [ "second_of", "selection_8h.html#ga422dd1b0895f0074ad9932d68d9edbc5", null ] +]; \ No newline at end of file diff --git a/doc/html/selection_8h_source.html b/doc/html/selection_8h_source.html new file mode 100644 index 0000000..b146853 --- /dev/null +++ b/doc/html/selection_8h_source.html @@ -0,0 +1,121 @@ + + + + + + + +uTL: include/utl/meta/selection.h Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    selection.h
    +
    +
    +Go to the documentation of this file.
    1 
    20 #ifndef __utl_meta_selection_h__
    21 #define __utl_meta_selection_h__
    22 
    23 #include <utl/core/impl.h>
    24 #include <utl/meta/integral.h>
    25 
    31 namespace utl {
    33 namespace meta{
    34 
    38 
    42  namespace detail {
    43  template <bool If, typename...>
    44  struct if_c_ {
    45  using type = nil_;
    46  };
    47  template<typename Then>
    49  using type = Then;
    50  };
    51  template<typename Then, typename Else>
    53  using type = Then;
    54  };
    55  template<typename Then, typename Else>
    57  using type = Else;
    58  };
    59  }
    61  template <bool B, typename... Args>
    62  using if_c = eval<detail::if_c_<B, Args...>>;
    63 
    65  template <typename If, typename... Args>
    66  using if_ = if_c<If::type::value, Args...>;
    67 
    69 
    73 
    76  template <typename T1, typename ...> using first_of = T1;
    77 
    79  template <typename T1, typename T2, typename ...> using second_of = T2;
    80 
    82 }}
    83 
    85 
    86 #endif /* __utl_meta_selection_h__ */
    T1 first_of
    Select the first type of a type sequence.
    Definition: selection.h:76
    + +
    if_c< If::type::value, Args... > if_
    Select one type or another depending on a compile-time Boolean type.
    Definition: selection.h:66
    +
    eval< detail::if_c_< B, Args... > > if_c
    Select one type or another depending on a compile-time Boolean.
    Definition: selection.h:62
    +
    T2 second_of
    Select the second type of a type sequence.
    Definition: selection.h:79
    + + + + +
    typename Tp::type eval
    Type alias for Tp::type. Used to evaluate/extract return type of metafunctions.
    Definition: integral.h:49
    +
    STL&#39;s core language concepts.
    Definition: _1wire.h:30
    + + + + +
    Implementation detail main forward header.
    +
    +
    + + + + diff --git a/doc/html/sfinae_8h.html b/doc/html/sfinae_8h.html new file mode 100644 index 0000000..5352bf4 --- /dev/null +++ b/doc/html/sfinae_8h.html @@ -0,0 +1,158 @@ + + + + + + + +uTL: include/utl/meta/sfinae.h File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    sfinae.h File Reference
    +
    +
    + +

    Template meta-programming SFINAE helpers. +More...

    +
    #include <utl/core/impl.h>
    +#include <type_traits>
    +
    +

    Go to the source code of this file.

    + + + + + + +

    +Classes

    struct  utl::meta::detail::when_< If >
     
    struct  utl::meta::detail::when_< true >
     
    + + + + + + + + +

    +Namespaces

     utl
     STL's core language concepts.
     
     utl::meta
     
     utl::meta::detail
     
    + + + + + + + + + + + + + + + +

    +Typedefs

    template<bool If>
    using utl::meta::when = eval< detail::when_< If > >
     Well formed only if If is true. More...
     
    template<bool If, typename _Tp = void>
    using utl::meta::enable_if = std::enable_if< If, _Tp >
     enable_if, imported from stl More...
     
    template<bool If, typename _Tp = void>
    using utl::meta::enable_if_t = eval< enable_if< If, _Tp > >
     alias template for enable_if More...
     
    +

    Detailed Description

    +

    Template meta-programming SFINAE helpers.

    +

    Copyright (C) 2018-2019 Christos Choutouridis

    +

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    +

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

    +

    You should have received a copy of the GNU Lesser General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    + +

    Definition in file sfinae.h.

    +
    +
    + + + + diff --git a/doc/html/sfinae_8h.js b/doc/html/sfinae_8h.js new file mode 100644 index 0000000..6feacd8 --- /dev/null +++ b/doc/html/sfinae_8h.js @@ -0,0 +1,8 @@ +var sfinae_8h = +[ + [ "when_", "structutl_1_1meta_1_1detail_1_1when__.html", null ], + [ "when_< true >", "structutl_1_1meta_1_1detail_1_1when___3_01true_01_4.html", "structutl_1_1meta_1_1detail_1_1when___3_01true_01_4" ], + [ "enable_if", "sfinae_8h.html#ab3fed26a4c7a8204accb349f0b6600e8", null ], + [ "enable_if_t", "sfinae_8h.html#a372fe391d9567f66a81091f581e1fa01", null ], + [ "when", "sfinae_8h.html#a181d79db46b10170529e85b907ed3dc7", null ] +]; \ No newline at end of file diff --git a/doc/html/sfinae_8h_source.html b/doc/html/sfinae_8h_source.html new file mode 100644 index 0000000..a4b9ffa --- /dev/null +++ b/doc/html/sfinae_8h_source.html @@ -0,0 +1,113 @@ + + + + + + + +uTL: include/utl/meta/sfinae.h Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    sfinae.h
    +
    +
    +Go to the documentation of this file.
    1 
    20 #ifndef __utl_meta_sfinae_h__
    21 #define __utl_meta_sfinae_h__
    22 
    23 #include <utl/core/impl.h>
    24 #include <type_traits>
    25 
    31 namespace utl {
    33 namespace meta {
    34 
    37  namespace detail {
    38 // template <typename... T>
    39 // struct dev_null { using type = dev_null; }; //< Same as typelist
    40 
    41  template <bool If> struct when_ { };
    42  template <> struct when_<true> { using type = void; };
    43  }
    45  template <bool If>
    47 
    48 // //! Well formed only if all of \p Ifs are \c true
    49 // template <bool ...Ifs>
    50 // using when_all = detail::dev_null<
    51 // when<Ifs>...
    52 // >;
    53 
    55 
    58 
    60  template <bool If, typename _Tp = void> using enable_if = std::enable_if<If, _Tp>;
    61 
    63  template<bool If, typename _Tp = void> using enable_if_t = eval< enable_if<If, _Tp> >;
    64 
    66 
    67 }}
    68 
    70 
    71 #endif /* __utl_meta_sfinae_h__ */
    +
    std::enable_if< If, _Tp > enable_if
    enable_if, imported from stl
    Definition: sfinae.h:60
    + +
    typename Tp::type eval
    Type alias for Tp::type. Used to evaluate/extract return type of metafunctions.
    Definition: integral.h:49
    +
    STL&#39;s core language concepts.
    Definition: _1wire.h:30
    +
    eval< enable_if< If, _Tp > > enable_if_t
    alias template for enable_if
    Definition: sfinae.h:63
    +
    eval< detail::when_< If > > when
    Well formed only if If is true.
    Definition: sfinae.h:46
    +
    Implementation detail main forward header.
    +
    +
    + + + + diff --git a/doc/html/source_2main_8d.html b/doc/html/source_2main_8d.html new file mode 100644 index 0000000..9b36cd3 --- /dev/null +++ b/doc/html/source_2main_8d.html @@ -0,0 +1,107 @@ + + + + + + + +uTL: test/eclipse-cygwin/C++14/source/main.d File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    main.d File Reference
    +
    + +
    + + + + diff --git a/doc/html/source_2main_8d_source.html b/doc/html/source_2main_8d_source.html new file mode 100644 index 0000000..3f29a4b --- /dev/null +++ b/doc/html/source_2main_8d_source.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: test/eclipse-cygwin/C++14/source/main.d Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    main.d
    +
    +
    +Go to the documentation of this file.
    1 source/main.o: W:/Work/Software/Libraries/utl/test/main.cpp \ + W:\Work\Software\Libraries\utl\test\eclipse-cygwin\lib/gtest/gtest.h
    2 
    3 W:\Work\Software\Libraries\utl\test\eclipse-cygwin\lib/gtest/gtest.h:
    4 
    STL&#39;s core language concepts.
    Definition: _1wire.h:30
    +
    GTEST_API_ int main(int argc, char **argv)
    Definition: main.cpp:23
    +
    +
    + + + + diff --git a/doc/html/source_2tests_2_t_concepts_8d.html b/doc/html/source_2tests_2_t_concepts_8d.html new file mode 100644 index 0000000..ab7c597 --- /dev/null +++ b/doc/html/source_2tests_2_t_concepts_8d.html @@ -0,0 +1,107 @@ + + + + + + + +uTL: test/eclipse-cygwin/C++14/source/tests/TConcepts.d File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    TConcepts.d File Reference
    +
    + +
    + + + + diff --git a/doc/html/source_2tests_2_t_concepts_8d_source.html b/doc/html/source_2tests_2_t_concepts_8d_source.html new file mode 100644 index 0000000..b695881 --- /dev/null +++ b/doc/html/source_2tests_2_t_concepts_8d_source.html @@ -0,0 +1,125 @@ + + + + + + + +uTL: test/eclipse-cygwin/C++14/source/tests/TConcepts.d Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    TConcepts.d
    +
    +
    +Go to the documentation of this file.
    1 source/tests/TConcepts.o: \
    2  W:/Work/Software/Libraries/utl/test/tests/TConcepts.cpp \ + W:\Work\Software\Libraries\utl\include/utl/concepts/concepts.h \ + W:\Work\Software\Libraries\utl\include/utl/core/impl.h \ + W:\Work\Software\Libraries\utl\include/utl/core/version.h \ + W:\Work\Software\Libraries\utl\include/utl/core/types.h \ + W:\Work\Software\Libraries\utl\include/utl/concepts/defines.h \ + W:\Work\Software\Libraries\utl\include/utl/concepts/stl.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/meta.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/integral.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/selection.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/operations.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/useif.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/sfinae.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/typelist.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/detection.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/invoke.h \ + W:\Work\Software\Libraries\utl\include/utl/utility/invoke.h \ + W:\Work\Software\Libraries\utl\include/utl/concepts/iterators.h \ + W:\Work\Software\Libraries\utl\test\eclipse-cygwin\lib/gtest/gtest.h
    3 
    4 W:\Work\Software\Libraries\utl\include/utl/concepts/concepts.h:
    5 
    6 W:\Work\Software\Libraries\utl\include/utl/core/impl.h:
    7 
    8 W:\Work\Software\Libraries\utl\include/utl/core/version.h:
    9 
    10 W:\Work\Software\Libraries\utl\include/utl/core/types.h:
    11 
    12 W:\Work\Software\Libraries\utl\include/utl/concepts/defines.h:
    13 
    14 W:\Work\Software\Libraries\utl\include/utl/concepts/stl.h:
    15 
    16 W:\Work\Software\Libraries\utl\include/utl/meta/meta.h:
    17 
    18 W:\Work\Software\Libraries\utl\include/utl/meta/integral.h:
    19 
    20 W:\Work\Software\Libraries\utl\include/utl/meta/selection.h:
    21 
    22 W:\Work\Software\Libraries\utl\include/utl/meta/operations.h:
    23 
    24 W:\Work\Software\Libraries\utl\include/utl/meta/useif.h:
    25 
    26 W:\Work\Software\Libraries\utl\include/utl/meta/sfinae.h:
    27 
    28 W:\Work\Software\Libraries\utl\include/utl/meta/typelist.h:
    29 
    30 W:\Work\Software\Libraries\utl\include/utl/meta/detection.h:
    31 
    32 W:\Work\Software\Libraries\utl\include/utl/meta/invoke.h:
    33 
    34 W:\Work\Software\Libraries\utl\include/utl/utility/invoke.h:
    35 
    36 W:\Work\Software\Libraries\utl\include/utl/concepts/iterators.h:
    37 
    38 W:\Work\Software\Libraries\utl\test\eclipse-cygwin\lib/gtest/gtest.h:
    39 
    STL&#39;s core language concepts.
    Definition: _1wire.h:30
    +
    typename Fn::template apply< Args... > invoke
    Definition: invoke.h:81
    +
    +
    + + + + diff --git a/doc/html/source_2tests_2_tinvoke_8d.html b/doc/html/source_2tests_2_tinvoke_8d.html new file mode 100644 index 0000000..056ba9d --- /dev/null +++ b/doc/html/source_2tests_2_tinvoke_8d.html @@ -0,0 +1,107 @@ + + + + + + + +uTL: test/eclipse-cygwin/C++14/source/tests/Tinvoke.d File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Tinvoke.d File Reference
    +
    + +
    + + + + diff --git a/doc/html/source_2tests_2_tinvoke_8d_source.html b/doc/html/source_2tests_2_tinvoke_8d_source.html new file mode 100644 index 0000000..00ab6ad --- /dev/null +++ b/doc/html/source_2tests_2_tinvoke_8d_source.html @@ -0,0 +1,121 @@ + + + + + + + +uTL: test/eclipse-cygwin/C++14/source/tests/Tinvoke.d Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Tinvoke.d
    +
    +
    +Go to the documentation of this file.
    1 source/tests/Tinvoke.o: \
    2  W:/Work/Software/Libraries/utl/test/tests/Tinvoke.cpp \ + W:\Work\Software\Libraries\utl\include/utl/utility/invoke.h \ + W:\Work\Software\Libraries\utl\include/utl/core/impl.h \ + W:\Work\Software\Libraries\utl\include/utl/core/version.h \ + W:\Work\Software\Libraries\utl\include/utl/core/types.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/meta.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/integral.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/selection.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/operations.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/useif.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/sfinae.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/typelist.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/detection.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/invoke.h \ + W:\Work\Software\Libraries\utl\test\eclipse-cygwin\lib/gtest/gtest.h
    3 
    4 W:\Work\Software\Libraries\utl\include/utl/utility/invoke.h:
    5 
    6 W:\Work\Software\Libraries\utl\include/utl/core/impl.h:
    7 
    8 W:\Work\Software\Libraries\utl\include/utl/core/version.h:
    9 
    10 W:\Work\Software\Libraries\utl\include/utl/core/types.h:
    11 
    12 W:\Work\Software\Libraries\utl\include/utl/meta/meta.h:
    13 
    14 W:\Work\Software\Libraries\utl\include/utl/meta/integral.h:
    15 
    16 W:\Work\Software\Libraries\utl\include/utl/meta/selection.h:
    17 
    18 W:\Work\Software\Libraries\utl\include/utl/meta/operations.h:
    19 
    20 W:\Work\Software\Libraries\utl\include/utl/meta/useif.h:
    21 
    22 W:\Work\Software\Libraries\utl\include/utl/meta/sfinae.h:
    23 
    24 W:\Work\Software\Libraries\utl\include/utl/meta/typelist.h:
    25 
    26 W:\Work\Software\Libraries\utl\include/utl/meta/detection.h:
    27 
    28 W:\Work\Software\Libraries\utl\include/utl/meta/invoke.h:
    29 
    30 W:\Work\Software\Libraries\utl\test\eclipse-cygwin\lib/gtest/gtest.h:
    31 
    STL&#39;s core language concepts.
    Definition: _1wire.h:30
    +
    typename Fn::template apply< Args... > invoke
    Definition: invoke.h:81
    +
    +
    + + + + diff --git a/doc/html/source_2tests_2test__1w__impl_8d.html b/doc/html/source_2tests_2test__1w__impl_8d.html new file mode 100644 index 0000000..c21189f --- /dev/null +++ b/doc/html/source_2tests_2test__1w__impl_8d.html @@ -0,0 +1,107 @@ + + + + + + + +uTL: test/eclipse-cygwin/C++14/source/tests/test_1w_impl.d File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    test_1w_impl.d File Reference
    +
    + +
    + + + + diff --git a/doc/html/source_2tests_2test__1w__impl_8d_source.html b/doc/html/source_2tests_2test__1w__impl_8d_source.html new file mode 100644 index 0000000..0cce42c --- /dev/null +++ b/doc/html/source_2tests_2test__1w__impl_8d_source.html @@ -0,0 +1,126 @@ + + + + + + + +uTL: test/eclipse-cygwin/C++14/source/tests/test_1w_impl.d Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    test_1w_impl.d
    +
    +
    +Go to the documentation of this file.
    1 source/tests/test_1w_impl.o: \
    2  W:/Work/Software/Libraries/utl/test/tests/test_1w_impl.cpp \ + W:\Work\Software\Libraries\utl\test\eclipse-cygwin\lib/gtest/gtest.h \ + W:\Work\Software\Libraries\utl\include/utl/com/_1wire_uart.h \ + W:\Work\Software\Libraries\utl\include/utl/core/impl.h \ + W:\Work\Software\Libraries\utl\include/utl/core/version.h \ + W:\Work\Software\Libraries\utl\include/utl/core/types.h \ + W:\Work\Software\Libraries\utl\include/utl/core/crtp.h \ + W:\Work\Software\Libraries\utl\include/utl/com/_1wire.h \ + W:\Work\Software\Libraries\utl\include/utl/com/_1wire_id.h \ + W:\Work\Software\Libraries\utl\include/utl/container/id.h \ + W:\Work\Software\Libraries\utl\include/utl/container/array.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/meta.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/integral.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/selection.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/operations.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/useif.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/sfinae.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/typelist.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/detection.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/invoke.h
    3 
    4 W:\Work\Software\Libraries\utl\test\eclipse-cygwin\lib/gtest/gtest.h:
    5 
    6 W:\Work\Software\Libraries\utl\include/utl/com/_1wire_uart.h:
    7 
    8 W:\Work\Software\Libraries\utl\include/utl/core/impl.h:
    9 
    10 W:\Work\Software\Libraries\utl\include/utl/core/version.h:
    11 
    12 W:\Work\Software\Libraries\utl\include/utl/core/types.h:
    13 
    14 W:\Work\Software\Libraries\utl\include/utl/core/crtp.h:
    15 
    16 W:\Work\Software\Libraries\utl\include/utl/com/_1wire.h:
    17 
    18 W:\Work\Software\Libraries\utl\include/utl/com/_1wire_id.h:
    19 
    20 W:\Work\Software\Libraries\utl\include/utl/container/id.h:
    21 
    22 W:\Work\Software\Libraries\utl\include/utl/container/array.h:
    23 
    24 W:\Work\Software\Libraries\utl\include/utl/meta/meta.h:
    25 
    26 W:\Work\Software\Libraries\utl\include/utl/meta/integral.h:
    27 
    28 W:\Work\Software\Libraries\utl\include/utl/meta/selection.h:
    29 
    30 W:\Work\Software\Libraries\utl\include/utl/meta/operations.h:
    31 
    32 W:\Work\Software\Libraries\utl\include/utl/meta/useif.h:
    33 
    34 W:\Work\Software\Libraries\utl\include/utl/meta/sfinae.h:
    35 
    36 W:\Work\Software\Libraries\utl\include/utl/meta/typelist.h:
    37 
    38 W:\Work\Software\Libraries\utl\include/utl/meta/detection.h:
    39 
    40 W:\Work\Software\Libraries\utl\include/utl/meta/invoke.h:
    41 
    STL&#39;s core language concepts.
    Definition: _1wire.h:30
    +
    typename Fn::template apply< Args... > invoke
    Definition: invoke.h:81
    +
    +
    + + + + diff --git a/doc/html/source_2tests_2test__i2c__impl_8d.html b/doc/html/source_2tests_2test__i2c__impl_8d.html new file mode 100644 index 0000000..156f6bf --- /dev/null +++ b/doc/html/source_2tests_2test__i2c__impl_8d.html @@ -0,0 +1,107 @@ + + + + + + + +uTL: test/eclipse-cygwin/C++14/source/tests/test_i2c_impl.d File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    test_i2c_impl.d File Reference
    +
    + +
    + + + + diff --git a/doc/html/source_2tests_2test__i2c__impl_8d_source.html b/doc/html/source_2tests_2test__i2c__impl_8d_source.html new file mode 100644 index 0000000..cf6503d --- /dev/null +++ b/doc/html/source_2tests_2test__i2c__impl_8d_source.html @@ -0,0 +1,123 @@ + + + + + + + +uTL: test/eclipse-cygwin/C++14/source/tests/test_i2c_impl.d Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    test_i2c_impl.d
    +
    +
    +Go to the documentation of this file.
    1 source/tests/test_i2c_impl.o: \
    2  W:/Work/Software/Libraries/utl/test/tests/test_i2c_impl.cpp \ + W:\Work\Software\Libraries\utl\test\eclipse-cygwin\lib/gtest/gtest.h \ + W:\Work\Software\Libraries\utl\include/utl/com/i2c_bb.h \ + W:\Work\Software\Libraries\utl\include/utl/core/impl.h \ + W:\Work\Software\Libraries\utl\include/utl/core/version.h \ + W:\Work\Software\Libraries\utl\include/utl/core/types.h \ + W:\Work\Software\Libraries\utl\include/utl/core/crtp.h \ + W:\Work\Software\Libraries\utl\include/utl/com/i2c.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/meta.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/integral.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/selection.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/operations.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/useif.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/sfinae.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/typelist.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/detection.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/invoke.h
    3 
    4 W:\Work\Software\Libraries\utl\test\eclipse-cygwin\lib/gtest/gtest.h:
    5 
    6 W:\Work\Software\Libraries\utl\include/utl/com/i2c_bb.h:
    7 
    8 W:\Work\Software\Libraries\utl\include/utl/core/impl.h:
    9 
    10 W:\Work\Software\Libraries\utl\include/utl/core/version.h:
    11 
    12 W:\Work\Software\Libraries\utl\include/utl/core/types.h:
    13 
    14 W:\Work\Software\Libraries\utl\include/utl/core/crtp.h:
    15 
    16 W:\Work\Software\Libraries\utl\include/utl/com/i2c.h:
    17 
    18 W:\Work\Software\Libraries\utl\include/utl/meta/meta.h:
    19 
    20 W:\Work\Software\Libraries\utl\include/utl/meta/integral.h:
    21 
    22 W:\Work\Software\Libraries\utl\include/utl/meta/selection.h:
    23 
    24 W:\Work\Software\Libraries\utl\include/utl/meta/operations.h:
    25 
    26 W:\Work\Software\Libraries\utl\include/utl/meta/useif.h:
    27 
    28 W:\Work\Software\Libraries\utl\include/utl/meta/sfinae.h:
    29 
    30 W:\Work\Software\Libraries\utl\include/utl/meta/typelist.h:
    31 
    32 W:\Work\Software\Libraries\utl\include/utl/meta/detection.h:
    33 
    34 W:\Work\Software\Libraries\utl\include/utl/meta/invoke.h:
    35 
    STL&#39;s core language concepts.
    Definition: _1wire.h:30
    +
    typename Fn::template apply< Args... > invoke
    Definition: invoke.h:81
    +
    +
    + + + + diff --git a/doc/html/source_2tests_2test__ostream__dev_8d.html b/doc/html/source_2tests_2test__ostream__dev_8d.html new file mode 100644 index 0000000..f05d9d6 --- /dev/null +++ b/doc/html/source_2tests_2test__ostream__dev_8d.html @@ -0,0 +1,107 @@ + + + + + + + +uTL: test/eclipse-cygwin/C++14/source/tests/test_ostream_dev.d File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    test_ostream_dev.d File Reference
    +
    + +
    + + + + diff --git a/doc/html/source_2tests_2test__ostream__dev_8d_source.html b/doc/html/source_2tests_2test__ostream__dev_8d_source.html new file mode 100644 index 0000000..945201a --- /dev/null +++ b/doc/html/source_2tests_2test__ostream__dev_8d_source.html @@ -0,0 +1,124 @@ + + + + + + + +uTL: test/eclipse-cygwin/C++14/source/tests/test_ostream_dev.d Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    test_ostream_dev.d
    +
    +
    +Go to the documentation of this file.
    1 source/tests/test_ostream_dev.o: \
    2  W:/Work/Software/Libraries/utl/test/tests/test_ostream_dev.cpp \ + W:\Work\Software\Libraries\utl\test\eclipse-cygwin\lib/gtest/gtest.h \ + W:\Work\Software\Libraries\utl\include/utl/dev/ostream_dev.h \ + W:\Work\Software\Libraries\utl\include/utl/core/impl.h \ + W:\Work\Software\Libraries\utl\include/utl/core/version.h \ + W:\Work\Software\Libraries\utl\include/utl/core/types.h \ + W:\Work\Software\Libraries\utl\include/utl/core/crtp.h \ + W:\Work\Software\Libraries\utl\include/utl/dev/dev_iterators.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/meta.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/integral.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/selection.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/operations.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/useif.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/sfinae.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/typelist.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/detection.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/invoke.h
    3 
    4 W:\Work\Software\Libraries\utl\test\eclipse-cygwin\lib/gtest/gtest.h:
    5 
    6 W:\Work\Software\Libraries\utl\include/utl/dev/ostream_dev.h:
    7 
    8 W:\Work\Software\Libraries\utl\include/utl/core/impl.h:
    9 
    10 W:\Work\Software\Libraries\utl\include/utl/core/version.h:
    11 
    12 W:\Work\Software\Libraries\utl\include/utl/core/types.h:
    13 
    14 W:\Work\Software\Libraries\utl\include/utl/core/crtp.h:
    15 
    16 W:\Work\Software\Libraries\utl\include/utl/dev/dev_iterators.h:
    17 
    18 W:\Work\Software\Libraries\utl\include/utl/meta/meta.h:
    19 
    20 W:\Work\Software\Libraries\utl\include/utl/meta/integral.h:
    21 
    22 W:\Work\Software\Libraries\utl\include/utl/meta/selection.h:
    23 
    24 W:\Work\Software\Libraries\utl\include/utl/meta/operations.h:
    25 
    26 W:\Work\Software\Libraries\utl\include/utl/meta/useif.h:
    27 
    28 W:\Work\Software\Libraries\utl\include/utl/meta/sfinae.h:
    29 
    30 W:\Work\Software\Libraries\utl\include/utl/meta/typelist.h:
    31 
    32 W:\Work\Software\Libraries\utl\include/utl/meta/detection.h:
    33 
    34 W:\Work\Software\Libraries\utl\include/utl/meta/invoke.h:
    35  +
    STL&#39;s core language concepts.
    Definition: _1wire.h:30
    +
    typename Fn::template apply< Args... > invoke
    Definition: invoke.h:81
    +
    +
    + + + + diff --git a/doc/html/source_2tests_2test__spi__impl_8d.html b/doc/html/source_2tests_2test__spi__impl_8d.html new file mode 100644 index 0000000..c09bb69 --- /dev/null +++ b/doc/html/source_2tests_2test__spi__impl_8d.html @@ -0,0 +1,107 @@ + + + + + + + +uTL: test/eclipse-cygwin/C++14/source/tests/test_spi_impl.d File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    test_spi_impl.d File Reference
    +
    + +
    + + + + diff --git a/doc/html/source_2tests_2test__spi__impl_8d_source.html b/doc/html/source_2tests_2test__spi__impl_8d_source.html new file mode 100644 index 0000000..7695aef --- /dev/null +++ b/doc/html/source_2tests_2test__spi__impl_8d_source.html @@ -0,0 +1,123 @@ + + + + + + + +uTL: test/eclipse-cygwin/C++14/source/tests/test_spi_impl.d Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    test_spi_impl.d
    +
    +
    +Go to the documentation of this file.
    1 source/tests/test_spi_impl.o: \
    2  W:/Work/Software/Libraries/utl/test/tests/test_spi_impl.cpp \ + W:\Work\Software\Libraries\utl\test\eclipse-cygwin\lib/gtest/gtest.h \ + W:\Work\Software\Libraries\utl\include/utl/com/spi_bb.h \ + W:\Work\Software\Libraries\utl\include/utl/core/impl.h \ + W:\Work\Software\Libraries\utl\include/utl/core/version.h \ + W:\Work\Software\Libraries\utl\include/utl/core/types.h \ + W:\Work\Software\Libraries\utl\include/utl/core/crtp.h \ + W:\Work\Software\Libraries\utl\include/utl/com/spi.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/meta.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/integral.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/selection.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/operations.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/useif.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/sfinae.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/typelist.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/detection.h \ + W:\Work\Software\Libraries\utl\include/utl/meta/invoke.h
    3 
    4 W:\Work\Software\Libraries\utl\test\eclipse-cygwin\lib/gtest/gtest.h:
    5 
    6 W:\Work\Software\Libraries\utl\include/utl/com/spi_bb.h:
    7 
    8 W:\Work\Software\Libraries\utl\include/utl/core/impl.h:
    9 
    10 W:\Work\Software\Libraries\utl\include/utl/core/version.h:
    11 
    12 W:\Work\Software\Libraries\utl\include/utl/core/types.h:
    13 
    14 W:\Work\Software\Libraries\utl\include/utl/core/crtp.h:
    15 
    16 W:\Work\Software\Libraries\utl\include/utl/com/spi.h:
    17 
    18 W:\Work\Software\Libraries\utl\include/utl/meta/meta.h:
    19 
    20 W:\Work\Software\Libraries\utl\include/utl/meta/integral.h:
    21 
    22 W:\Work\Software\Libraries\utl\include/utl/meta/selection.h:
    23 
    24 W:\Work\Software\Libraries\utl\include/utl/meta/operations.h:
    25 
    26 W:\Work\Software\Libraries\utl\include/utl/meta/useif.h:
    27 
    28 W:\Work\Software\Libraries\utl\include/utl/meta/sfinae.h:
    29 
    30 W:\Work\Software\Libraries\utl\include/utl/meta/typelist.h:
    31 
    32 W:\Work\Software\Libraries\utl\include/utl/meta/detection.h:
    33 
    34 W:\Work\Software\Libraries\utl\include/utl/meta/invoke.h:
    35 
    STL&#39;s core language concepts.
    Definition: _1wire.h:30
    +
    typename Fn::template apply< Args... > invoke
    Definition: invoke.h:81
    +
    +
    + + + + diff --git a/doc/html/spi_8h.html b/doc/html/spi_8h.html new file mode 100644 index 0000000..f0c2a63 --- /dev/null +++ b/doc/html/spi_8h.html @@ -0,0 +1,182 @@ + + + + + + + +uTL: include/utl/com/spi.h File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    spi.h File Reference
    +
    +
    + +

    An Abstract base class interface for the spi bus. +More...

    +
    #include <utl/core/impl.h>
    +#include <utl/core/crtp.h>
    +#include <utl/meta/meta.h>
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + +

    +Classes

    class  utl::spi_i< impl_t >
     
    class  utl::spi_i< virtual_tag >
     A virtual base class implementation. More...
     
    struct  utl::spi_i_details::is_spi_< _Tp, typename >
     Primary template to catch any non SPI interface types. More...
     
    struct  utl::spi_i_details::is_spi_< _Tp, meta::void_t< meta::use_if_same_t< try_cclock_t< _Tp >, uint32_t >, meta::use_if_same_t< try_clock_t< _Tp >, void >, meta::use_if_same_t< try_tx_t< _Tp >, byte_t >, meta::use_if_same_t< try_rx_t< _Tp >, byte_t > > >
     template to catch a proper SPI interface type More...
     
    + + + + + + + + + +

    +Namespaces

     utl
     STL's core language concepts.
     
     utl::spi
     Abstract base class for spi bus.
     
     utl::spi_i_details
     
    + + + + + + + + + + + + + +

    +Typedefs

    template<class _Tp >
    using utl::spi_i_details::try_cclock_t = decltype(declval< const _Tp >().clock())
     
    template<class _Tp >
    using utl::spi_i_details::try_clock_t = decltype(declval< _Tp >().clock(declval< uint32_t >()))
     
    template<class _Tp >
    using utl::spi_i_details::try_tx_t = decltype(declval< _Tp >().tx_data(declval< byte_t >()))
     
    template<class _Tp >
    using utl::spi_i_details::try_rx_t = decltype(declval< _Tp >().rx_data())
     
    + + + + + + + +

    +Enumerations

    enum  utl::spi::bitOrder { utl::spi::bitOrder::LSB_First =0x01, +utl::spi::bitOrder::MSB_First =0x80 + }
     
    enum  utl::spi::cpol { utl::spi::cpol::LOW =0, +utl::spi::cpol::HIGH + }
     
    enum  utl::spi::cpha { utl::spi::cpha::LOW =0, +utl::spi::cpha::HIGH + }
     
    +

    Detailed Description

    +

    An Abstract base class interface for the spi bus.

    +

    Copyright (C) 2018 Christos Choutouridis

    +

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    +

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

    +

    You should have received a copy of the GNU Lesser General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    + +

    Definition in file spi.h.

    +
    +
    + + + + diff --git a/doc/html/spi_8h.js b/doc/html/spi_8h.js new file mode 100644 index 0000000..d7c72e6 --- /dev/null +++ b/doc/html/spi_8h.js @@ -0,0 +1,23 @@ +var spi_8h = +[ + [ "spi_i", "classutl_1_1spi__i.html", "classutl_1_1spi__i" ], + [ "spi_i< virtual_tag >", "classutl_1_1spi__i_3_01virtual__tag_01_4.html", "classutl_1_1spi__i_3_01virtual__tag_01_4" ], + [ "is_spi_", "structutl_1_1spi__i__details_1_1is__spi__.html", null ], + [ "is_spi_< _Tp, meta::void_t< meta::use_if_same_t< try_cclock_t< _Tp >, uint32_t >, meta::use_if_same_t< try_clock_t< _Tp >, void >, meta::use_if_same_t< try_tx_t< _Tp >, byte_t >, meta::use_if_same_t< try_rx_t< _Tp >, byte_t > > >", "structutl_1_1spi__i__details_1_1is__spi___3_01___tp_00_01meta_1_1void__t_3_01meta_1_1use__if__sa2db29f6d65d34ecf5e49ec30b6600d78.html", null ], + [ "try_cclock_t", "spi_8h.html#ae1a4fad6acf8faccc5e85ee9b710c109", null ], + [ "try_clock_t", "spi_8h.html#af2f4800aa77af82767a3ac55b9b242a6", null ], + [ "try_rx_t", "spi_8h.html#a4dcf3c71fddf790e45a3be2c19906c97", null ], + [ "try_tx_t", "spi_8h.html#a755d8f10cfde3f5c3b9900eb11c858bd", null ], + [ "bitOrder", "spi_8h.html#aed6b713381c193c598572ebac0b284cc", [ + [ "LSB_First", "spi_8h.html#aed6b713381c193c598572ebac0b284cca6db67adee32c3bd4ff03acf3244e1b4b", null ], + [ "MSB_First", "spi_8h.html#aed6b713381c193c598572ebac0b284cca47bde70fdcc82c8363d16c7137641b79", null ] + ] ], + [ "cpha", "spi_8h.html#aa49fe33d495226891cef0a870cba59df", [ + [ "LOW", "spi_8h.html#aa49fe33d495226891cef0a870cba59dfa41bc94cbd8eebea13ce0491b2ac11b88", null ], + [ "HIGH", "spi_8h.html#aa49fe33d495226891cef0a870cba59dfab89de3b4b81c4facfac906edf29aec8c", null ] + ] ], + [ "cpol", "spi_8h.html#a89e3e1af5df0b6c37239f7e336969f8a", [ + [ "LOW", "spi_8h.html#a89e3e1af5df0b6c37239f7e336969f8aa41bc94cbd8eebea13ce0491b2ac11b88", null ], + [ "HIGH", "spi_8h.html#a89e3e1af5df0b6c37239f7e336969f8aab89de3b4b81c4facfac906edf29aec8c", null ] + ] ] +]; \ No newline at end of file diff --git a/doc/html/spi_8h_source.html b/doc/html/spi_8h_source.html new file mode 100644 index 0000000..91e85c1 --- /dev/null +++ b/doc/html/spi_8h_source.html @@ -0,0 +1,143 @@ + + + + + + + +uTL: include/utl/com/spi.h Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    spi.h
    +
    +
    +Go to the documentation of this file.
    1 
    21 #ifndef _utl_com_spi_h__
    22 #define _utl_com_spi_h__
    23 
    24 #include <utl/core/impl.h>
    25 #include <utl/core/crtp.h>
    26 #include <utl/meta/meta.h>
    27 
    28 namespace utl {
    29 
    34 
    36  namespace spi {
    40  enum class bitOrder {
    41  LSB_First =0x01,
    42  MSB_First =0x80
    43  };
    47  enum class cpol {
    48  LOW =0,
    49  HIGH
    50  };
    54  enum class cpha {
    55  LOW =0,
    56  HIGH
    57  };
    58  }
    59 
    66  template <typename impl_t>
    67  class spi_i {
    68  _CRTP_IMPL(impl_t);
    69 
    70  public:
    71  using type = spi_i<impl_t>;
    72 
    76  protected:
    78  spi_i () = default;
    79  ~spi_i () = default;
    80  spi_i (const type&) = delete;
    81  type& operator= (const type&) = delete;
    83 
    90  private:
    92  uint32_t _clock () const { return impl()._clock (); }
    93  void _clock (uint32_t c) { impl()._clock (c); }
    94  byte_t _tx_data (byte_t b) { return impl()._tx_data (b); }
    95 
    100  public:
    102  uint32_t clock () const { return _clock (); }
    103  void clock (uint32_t c) { _clock (c); }
    104 
    109  public:
    115  return _tx_data (out);
    116  }
    125  size_t tx_data (const byte_t *out, byte_t *in, size_t n);
    130  return _tx_data(0xFF);
    131  }
    139  size_t rx_data (byte_t *in, size_t n);
    141  };
    142 
    151  template<typename _I>
    152  size_t spi_i<_I>::tx_data (const byte_t *out, byte_t *in, size_t n) {
    153  for (size_t nn {n} ; nn ; --nn)
    154  *in++ = _tx_data (*out++);
    155  return n;
    156  }
    164  template<typename _I>
    165  size_t spi_i<_I>::rx_data (byte_t *in, size_t n) {
    166  for (size_t nn {n} ; nn ; --nn)
    167  *in++ = _tx_data (0xFF);
    168  return n;
    169  }
    170 
    176  template <>
    177  class spi_i <virtual_tag> {
    178  public:
    180 
    184  protected:
    186  spi_i () = default;
    187  spi_i (const type&) = delete;
    188  type& operator= (const type&) = delete;
    189  public:
    190  virtual ~spi_i () = default;
    191 
    196  private:
    198  virtual uint32_t _clock () const =0;
    199  virtual void _clock (uint32_t) =0;
    200  virtual byte_t _tx_data (byte_t) =0;
    201 
    206  public:
    208  uint32_t clock () const { return _clock (); }
    209  void clock (uint32_t c) { _clock (c); }
    210 
    215  public:
    221  return _tx_data (out);
    222  }
    231  size_t tx_data (const byte_t *out, byte_t *in, size_t n);
    236  return _tx_data (0xFF);
    237  }
    245  size_t rx_data (byte_t *in, size_t n);
    247 
    248  };
    249 
    258  size_t spi_i<virtual_tag>::tx_data (const byte_t *out, byte_t *in, size_t n) {
    259  for (size_t nn {n} ; nn ; --nn)
    260  *in++ = _tx_data (*out++);
    261  return n;
    262  }
    270  size_t spi_i<virtual_tag>::rx_data (byte_t *in, size_t n) {
    271  for (size_t nn {n} ; nn ; --nn)
    272  *in++ = _tx_data (0xFF);
    273  return n;
    274  }
    275 
    276 
    277 
    281 #if defined _utl_have_concepts
    283  template <typename T>
    284  concept bool Spi_i = requires (T t, const T ct, typename T::Sequence s) {
    285  // Object type
    286  requires not_<std::is_copy_constructible<T>::value>::value;
    287  requires not_<std::is_copy_assignable<T>::value>::value;
    288  // Methods
    289  {ct.clock()} -> uint32_t;
    290  {t.clock(0)} -> void;
    291  {t.tx_data(1)} -> byte_t;
    292  {t.rx_data()} -> byte_t;
    293  };
    294 #else
    295  namespace spi_i_details {
    296  using std::declval;
    297 
    298  template <class _Tp> using try_cclock_t= decltype (declval<const _Tp>().clock());
    299  template <class _Tp> using try_clock_t = decltype (declval<_Tp>().clock(declval<uint32_t>()));
    300  template <class _Tp> using try_tx_t = decltype (declval<_Tp>().tx_data(declval<byte_t>()));
    301  template <class _Tp> using try_rx_t = decltype (declval<_Tp>().rx_data());
    302 
    304  template <typename _Tp, typename =void>
    305  struct is_spi_ : meta::false_ {};
    306 
    308  template <typename _Tp>
    309  struct is_spi_ <
    310  _Tp,
    311  meta::void_t <
    312  meta::use_if_same_t <try_cclock_t<_Tp>, uint32_t>,
    313  meta::use_if_same_t <try_clock_t<_Tp>, void>,
    314  meta::use_if_same_t <try_tx_t<_Tp>, byte_t>,
    315  meta::use_if_same_t <try_rx_t<_Tp>, byte_t>
    316  >
    317  > : meta::true_ {};
    318  }
    324 // template <typename _Tp>
    325 // constexpr bool Spi_i = spi_i_details::is_spi_<_Tp>::value;
    326 #endif
    327 
    330 
    331 } // namespace utl
    332 
    333 #endif /* #ifndef _utl_com_spi_h__ */
    Include all meta library.
    +
    cpol
    Definition: spi.h:47
    +
    Less significant first.
    +
    void void_t
    void_t type alias
    Definition: detection.h:55
    +
    spi_i()=default
    Allow constructor from derived only.
    +
    Most significant first.
    +
    uint32_t clock() const
    Definition: spi.h:102
    +
    bool_< true > true_
    The type used as a compile-time boolean with true value.
    Definition: integral.h:68
    +
    uint32_t clock() const
    Definition: spi.h:208
    +
    bitOrder
    Definition: spi.h:40
    + +
    ~spi_i()=default
    Allow destructor from derived only.
    +
    void clock(uint32_t c)
    set clock frequency of the bus
    Definition: spi.h:209
    +
    void clock(uint32_t c)
    set clock frequency of the bus
    Definition: spi.h:103
    + +
    decltype(declval< _Tp >().rx_data()) try_rx_t
    Definition: spi.h:301
    +
    A virtual base class implementation.
    Definition: spi.h:177
    +
    _CRTP_IMPL(impl_t)
    +
    byte_t rx_data()
    Definition: spi.h:129
    +
    bool_< false > false_
    The type used as a compile-time boolean with false value.
    Definition: integral.h:69
    +
    byte_t tx_data(byte_t out)
    Definition: spi.h:114
    + +
    cpha
    Definition: spi.h:54
    +
    byte_t tx_data(byte_t out)
    Definition: spi.h:220
    +
    STL&#39;s core language concepts.
    Definition: _1wire.h:30
    + +
    byte_t _tx_data(byte_t b)
    Definition: spi.h:94
    +
    decltype(declval< _Tp >().tx_data(declval< byte_t >())) try_tx_t
    Definition: spi.h:300
    +
    decltype(declval< _Tp >().clock(declval< uint32_t >())) try_clock_t
    Definition: spi.h:299
    +
    Definition: spi.h:67
    +
    uint32_t _clock() const
    clock frequency of the bus [Hz]
    Definition: spi.h:92
    +
    uint8_t byte_t
    8 bits wide
    Definition: types.h:31
    +
    virtual support tag type
    Definition: crtp.h:40
    +
    void _clock(uint32_t c)
    set clock frequency of the bus [Hz]
    Definition: spi.h:93
    +
    decltype(declval< const _Tp >().clock()) try_cclock_t
    Definition: spi.h:298
    +
    type & operator=(const type &)=delete
    +
    Implementation detail main forward header.
    +
    Primary template to catch any non SPI interface types.
    Definition: spi.h:305
    +
    +
    + + + + diff --git a/doc/html/spi__bb_8h.html b/doc/html/spi__bb_8h.html new file mode 100644 index 0000000..896371a --- /dev/null +++ b/doc/html/spi__bb_8h.html @@ -0,0 +1,141 @@ + + + + + + + +uTL: include/utl/com/spi_bb.h File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    spi_bb.h File Reference
    +
    +
    + +

    A bit banking implementation of spi bus inherited from spi_i base class. +More...

    +
    #include <utl/core/impl.h>
    +#include <utl/core/crtp.h>
    +#include <utl/com/spi.h>
    +#include <utl/meta/meta.h>
    +
    +

    Go to the source code of this file.

    + + + + + + + + +

    +Classes

    class  utl::spi_bb_i< impl_t, CPOL, CPHA, BitOrder >
     A bit banking implementation of spi bus inherited from spi_i base class. More...
     
    class  utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >
     A virtual base class interface specialization. Using the private virtual interface we provide the interface from spi_i<virtual_tag> More...
     
    + + + + +

    +Namespaces

     utl
     STL's core language concepts.
     
    +

    Detailed Description

    +

    A bit banking implementation of spi bus inherited from spi_i base class.

    +

    Copyright (C) 2018 Christos Choutouridis

    +

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    +

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

    +

    You should have received a copy of the GNU Lesser General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    + +

    Definition in file spi_bb.h.

    +
    +
    + + + + diff --git a/doc/html/spi__bb_8h_source.html b/doc/html/spi__bb_8h_source.html new file mode 100644 index 0000000..66001ff --- /dev/null +++ b/doc/html/spi__bb_8h_source.html @@ -0,0 +1,147 @@ + + + + + + + +uTL: include/utl/com/spi_bb.h Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    spi_bb.h
    +
    +
    +Go to the documentation of this file.
    1 
    22 #ifndef __utl_com_spi_bb_h__
    23 #define __utl_com_spi_bb_h__
    24 
    25 #include <utl/core/impl.h>
    26 #include <utl/core/crtp.h>
    27 #include <utl/com/spi.h>
    28 #include <utl/meta/meta.h>
    29 
    30 
    31 namespace utl {
    32 
    39 
    52  template <typename impl_t,
    53  spi::cpol CPOL,
    54  spi::cpha CPHA,
    56  class spi_bb_i : public spi_i<spi_bb_i<impl_t, CPOL, CPHA, BitOrder>> {
    57  _CRTP_IMPL(impl_t);
    59  public:
    61 
    65  protected:
    67  ~spi_bb_i () = default;
    68  spi_bb_i (uint32_t clk) noexcept
    70  : nsec_ {1000000000/(2*clk)} {
    71  }
    73 
    74  private:
    77  template <spi::bitOrder B =BitOrder> constexpr
    79  template <spi::bitOrder B =BitOrder> constexpr
    81  template <spi::cpol C =CPOL> static constexpr bool clkHigh () {
    82  return !static_cast<bool>(C);
    83  }
    84  template <spi::cpol C =CPOL> static constexpr bool clkLow () {
    85  return static_cast<bool>(C);
    86  }
    87  static constexpr bool clkH_ {clkHigh()};
    88  static constexpr bool clkL_ {clkLow()};
    90 
    97  private:
    99  void MOSI (bool st) { impl().MOSI(st); }
    100  bool MISO () { return impl().MISO(); }
    101  void SCLK (bool st) { impl().SCLK (st); }
    102  void delay (uint32_t nsec) { impl().delay (nsec); }
    103 
    105 
    109  private:
    111  uint32_t _clock () const { return 1000000000/(2*nsec_); }
    112  void _clock (uint32_t c) { nsec_ = 1000000000/(2*c); }
    113  byte_t _tx_data (byte_t out) { return _tx_data_impl (out); }
    114 
    115  template <spi::cpha C =CPHA>
    117  template <spi::cpha C =CPHA>
    120 
    123  private:
    124  uint32_t nsec_;
    125  };
    127 
    135  template <typename impl_t, spi::cpol CPOL, spi::cpha CPHA, spi::bitOrder BitOrder>
    136  template <spi::cpha C>
    139  byte_t in {};
    140  SCLK (clkL_);
    141  for (uint8_t bit {static_cast<uint8_t>(BitOrder)} ; bit ; shift (bit)) {
    142  MOSI (out & bit); // Out at preceding clock trailing edge
    143  delay (nsec_); // Half cycle delay
    144  SCLK (clkH_); // Leading edge
    145  in |= (MISO ()) ? bit : 0; // In at leading clock edge
    146  delay (nsec_); // Half cycle delay
    147  SCLK (clkL_); // Trailing edge
    148  }
    149  return in;
    150  }
    151 
    159  template <typename impl_t, spi::cpol CPOL, spi::cpha CPHA, spi::bitOrder BitOrder>
    160  template <spi::cpha C>
    163  byte_t in {};
    164  SCLK (clkL_);
    165  for (uint8_t bit {static_cast<uint8_t>(BitOrder)} ; bit ; shift (bit)) {
    166  delay (nsec_); // Half cycle delay
    167  SCLK (clkH_); // Leading edge
    168  MOSI (out & bit); // Out at leading clock edge
    169  delay (nsec_); // Half cycle delay
    170  SCLK (clkL_); // Trailing edge
    171  in |= (MISO ()) ? bit : 0; // In at trailing clock edge
    172  }
    173  return in;
    174  }
    175 
    176 
    187  template <spi::cpol CPOL,
    188  spi::cpha CPHA,
    189  spi::bitOrder BitOrder>
    190  class spi_bb_i <virtual_tag, CPOL, CPHA, BitOrder> : public spi_i<virtual_tag> {
    191  public:
    193 
    197  protected:
    199  ~spi_bb_i () = default;
    200  spi_bb_i (uint32_t clk) noexcept
    202  : nsec_ {1000000000/(2*clk)} {
    203  }
    205 
    206  private:
    209  template <spi::bitOrder B =BitOrder> constexpr
    211  template <spi::bitOrder B =BitOrder> constexpr
    213  template <spi::cpol C =CPOL> static constexpr bool clkHigh () {
    214  return !static_cast<bool>(C);
    215  }
    216  template <spi::cpol C =CPOL> static constexpr bool clkLow () {
    217  return static_cast<bool>(C);
    218  }
    219  static constexpr bool clkH_ {clkHigh()};
    220  static constexpr bool clkL_ {clkLow()};
    222 
    223 
    226  private:
    227  virtual void MOSI (bool) =0;
    228  virtual bool MISO () =0;
    229  virtual void SCLK (bool) =0;
    230  virtual void delay (uint32_t) =0;
    231 
    233 
    237  private:
    239  uint32_t _clock () const final { return 1000000000/(2*nsec_); }
    240  void _clock (uint32_t c) final { nsec_ = 1000000000/(2*c); }
    241  byte_t _tx_data (byte_t out) final { return _tx_data_impl (out); }
    242 
    243  template <spi::cpha C =CPHA>
    245  template <spi::cpha C =CPHA>
    248 
    251  private:
    252  uint32_t nsec_;
    253  };
    255 
    263  template <spi::cpol CPOL, spi::cpha CPHA, spi::bitOrder BitOrder>
    264  template <spi::cpha C>
    267  byte_t in {};
    268  SCLK (clkL_);
    269  for (uint8_t bit {static_cast<uint8_t>(BitOrder)} ; bit ; shift (bit)) {
    270  MOSI (out & bit); // Out at preceding clock trailing edge
    271  delay (nsec_); // Half cycle delay
    272  SCLK (clkH_); // Leading edge
    273  in |= (MISO ()) ? bit : 0; // In at leading clock edge
    274  delay (nsec_); // Half cycle delay
    275  SCLK (clkL_); // Trailing edge
    276  }
    277  return in;
    278  }
    279 
    287  template <spi::cpol CPOL, spi::cpha CPHA, spi::bitOrder BitOrder>
    288  template <spi::cpha C>
    291  byte_t in {};
    292  SCLK (clkL_);
    293  for (uint8_t bit {static_cast<uint8_t>(BitOrder)} ; bit ; shift (bit)) {
    294  delay (nsec_); // Half cycle delay
    295  SCLK (clkH_); // Leading edge
    296  MOSI (out & bit); // Out at leading clock edge
    297  delay (nsec_); // Half cycle delay
    298  SCLK (clkL_); // Trailing edge
    299  in |= (MISO ()) ? bit : 0; // In at trailing clock edge
    300  }
    301  return in;
    302  }
    303 
    304 }
    305 
    306 #endif //#ifndef __spi_bb_h__
    bool MISO()
    Implementers&#39;s MISO pin function.
    Definition: spi_bb.h:100
    +
    Include all meta library.
    +
    cpol
    Definition: spi.h:47
    +
    Less significant first.
    +
    static constexpr bool clkLow()
    Definition: spi_bb.h:84
    +
    uint32_t _clock() const
    Definition: spi_bb.h:111
    +
    static constexpr bool clkHigh()
    Definition: spi_bb.h:81
    +
    meta::enable_if_t<(C==spi::cpha::LOW), byte_t > _tx_data_impl(byte_t out)
    _tx_data implementation for CPHA == LOW Out at preceding clock trailing edge, In at leading clock edg...
    Definition: spi_bb.h:138
    +
    bitOrder
    Definition: spi.h:40
    + +
    ~spi_bb_i()=default
    + +
    void delay(uint32_t nsec)
    Definition: spi_bb.h:102
    +
    An Abstract base class interface for the spi bus.
    +
    A virtual base class implementation.
    Definition: spi.h:177
    +
    uint32_t nsec_
    Definition: spi_bb.h:124
    +
    cpha
    Definition: spi.h:54
    +
    constexpr meta::enable_if_t<(B==spi::bitOrder::LSB_First), void > shift(byte_t &b)
    Definition: spi_bb.h:210
    +
    static constexpr bool clkL_
    Definition: spi_bb.h:88
    +
    STL&#39;s core language concepts.
    Definition: _1wire.h:30
    +
    constexpr meta::enable_if_t<(B==spi::bitOrder::MSB_First), void > shift(byte_t &b)
    Definition: spi_bb.h:80
    +
    _CRTP_IMPL(impl_t)
    +
    A bit banking implementation of spi bus inherited from spi_i base class.
    Definition: spi_bb.h:56
    +
    spi_bb_i(uint32_t clk) noexcept
    A default constructor.
    Definition: spi_bb.h:69
    +
    eval< enable_if< If, _Tp > > enable_if_t
    alias template for enable_if
    Definition: sfinae.h:63
    +
    A virtual base class interface specialization. Using the private virtual interface we provide the int...
    Definition: spi_bb.h:190
    + +
    static constexpr bool clkH_
    Definition: spi_bb.h:87
    +
    void SCLK(bool st)
    Implementers&#39;s SCLK pin function.
    Definition: spi_bb.h:101
    +
    Definition: spi.h:67
    + +
    void _clock(uint32_t c)
    Definition: spi_bb.h:112
    +
    uint8_t byte_t
    8 bits wide
    Definition: types.h:31
    +
    virtual support tag type
    Definition: crtp.h:40
    + +
    void _clock(uint32_t c) final
    Set the clock frequency of the bus.
    Definition: spi_bb.h:240
    +
    void MOSI(bool st)
    Implementers&#39;s MOSI pin function.
    Definition: spi_bb.h:99
    +
    constexpr meta::enable_if_t<(B==spi::bitOrder::LSB_First), void > shift(byte_t &b)
    Definition: spi_bb.h:78
    +
    constexpr meta::enable_if_t<(B==spi::bitOrder::MSB_First), void > shift(byte_t &b)
    Definition: spi_bb.h:212
    +
    Implementation detail main forward header.
    +
    byte_t _tx_data(byte_t out)
    Definition: spi_bb.h:113
    +
    uint32_t _clock() const final
    Read the clock frequency of the bus.
    Definition: spi_bb.h:239
    +
    +
    + + + + diff --git a/doc/html/splitbar.png b/doc/html/splitbar.png new file mode 100644 index 0000000000000000000000000000000000000000..fe895f2c58179b471a22d8320b39a4bd7312ec8e GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/doc/html/stl_8h.html b/doc/html/stl_8h.html new file mode 100644 index 0000000..6efa04f --- /dev/null +++ b/doc/html/stl_8h.html @@ -0,0 +1,382 @@ + + + + + + + +uTL: include/utl/concepts/stl.h File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    stl.h File Reference
    +
    +
    + +

    STL's Concepts. +More...

    +
    #include <utl/core/impl.h>
    +#include <utl/meta/meta.h>
    +#include <utl/utility/invoke.h>
    +#include <utl/concepts/defines.h>
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Classes

    struct  utl::common_impl::__copy_cv_< From >
     
    struct  utl::common_impl::__copy_cv_< const From >
     
    struct  utl::common_impl::__copy_cv_< volatile From >
     
    struct  utl::common_impl::__copy_cv_< const volatile From >
     
    struct  utl::common_impl::__common_ref_< T, U, class >
     
    struct  utl::common_impl::__common_ref_< T &, U &, meta::void_t< __lref_res< T, U >, meta::when< std::is_reference< __lref_res< T, U > >::value > > >
     
    struct  utl::common_impl::__common_ref_< T &&, U &&, meta::void_t< __common_ref< T &, U & >, meta::when< ConvertibleTo< T &&, __rref_res< T, U > > >, meta::when< ConvertibleTo< U &&, __rref_res< T, U > > > > >
     
    struct  utl::common_impl::__common_ref_< T &&, U &, meta::void_t< __common_ref< const T &, U & >, meta::when< ConvertibleTo< T &&, __common_ref< const T &, U & > > > > >
     
    struct  utl::common_impl::__common_ref_< T &, U &&, meta::void_t< __common_ref< T &, const U & >, meta::when< ConvertibleTo< U &&, __common_ref< T &, const U & > > > > >
     
    struct  utl::common_impl::__xref< class >
     
    struct  utl::common_impl::__xref< const T >
     
    struct  utl::common_impl::__xref< volatile T >
     
    struct  utl::common_impl::__xref< const volatile T >
     
    struct  utl::common_impl::__xref< T & >
     
    struct  utl::common_impl::__xref< T && >
     
    struct  utl::common_impl::basic_common_reference< class, class, class, class >
     
    struct  utl::common_impl::common_reference<... >
     
    struct  utl::common_impl::common_reference< T >
     
    struct  utl::common_impl::__common_reference3< T, U,... >
     
    struct  utl::common_impl::__common_reference3< T, U, meta::void_t< __cond_res< T, U > > >
     
    struct  utl::common_impl::__common_reference2< T, U,... >
     
    struct  utl::common_impl::__common_reference2< T, U, meta::void_t< __basic_common_reference_t< T, U > > >
     
    struct  utl::common_impl::__common_reference< T, U,... >
     
    struct  utl::common_impl::__common_reference< T, U, meta::when< std::is_reference< T >::value &&std::is_reference< U >::value > >
     
    struct  utl::common_impl::common_reference< T, U >
     
    struct  utl::common_impl::common_reference< T, U, V, W... >
     
    struct  utl::details::is_boolean_< B, typename >
     
    struct  utl::details::is_boolean_< B, meta::void_t< meta::use_if_same_t< bool, decltype(!std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>()==std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>() !=std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>() &&std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>()||std::declval< cref_< B >>())> > >
     
    struct  utl::details::is_weakly_equality_comparable_with_< T, U, typename >
     
    struct  utl::details::is_weakly_equality_comparable_with_< T, U, meta::void_t< meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()==std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() !=std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>()==std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>() !=std::declval< cref_< T >>())> > >
     
    struct  utl::details::is_strict_totally_ordered_< T, typename >
     
    struct  utl::details::is_strict_totally_ordered_< T, meta::void_t< meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()< std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() > std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()<=std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() >=std::declval< cref_< T >>())> > >
     
    struct  utl::details::is_strict_totally_ordered_with_< T, U, typename >
     
    struct  utl::details::is_strict_totally_ordered_with_< T, U, meta::void_t< meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()< std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() > std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()<=std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() >=std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>()< std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>() > std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>()<=std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>() >=std::declval< cref_< T >>())> > >
     
    + + + + + + + + +

    +Namespaces

     utl
     STL's core language concepts.
     
     utl::common_impl
     
     utl::details
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Typedefs

    template<typename T >
    using utl::remove_cvref_t = std::remove_cv_t< std::remove_reference_t< T > >
     
    template<typename T >
    using utl::cref_ = const std::remove_reference_t< T > &
     
    template<typename T >
    using utl::_ref_t = std::add_lvalue_reference_t< T >
     
    template<typename _T1 , typename _T2 , typename _Ret = _T1>
    using utl::use_if_same_t = meta::eval< meta::enable_if< meta::same_< _T1, _T2 >::value, _Ret > >
     
    template<class T , class U >
    using utl::common_impl::__cond_res = decltype(false ? std::declval< T(&)()>()() :std::declval< U(&)()>()())
     
    template<class From , class To >
    using utl::common_impl::__copy_cv = meta::invoke< __copy_cv_< From >, To >
     
    template<class T >
    using utl::common_impl::__cref = std::add_lvalue_reference_t< const std::remove_reference_t< T > >
     
    template<class T , class U >
    using utl::common_impl::__common_ref = meta::eval< __common_ref_< T, U > >
     
    template<class T , class U >
    using utl::common_impl::__lref_res = __cond_res< __copy_cv< T, U > &, __copy_cv< U, T > &>
     
    template<class T , class U , class R = __common_ref<T&, U&>>
    using utl::common_impl::__rref_res = std::remove_reference_t< R > &&
     
    template<class T , class U >
    using utl::common_impl::__basic_common_reference_t = meta::eval< basic_common_reference< remove_cvref_t< T >, remove_cvref_t< U >, __xref< T >::template apply, __xref< U >::template apply > >
     
    template<class... Ts>
    using utl::common_impl::common_reference_t = meta::eval< common_reference< Ts... > >
     
    template<typename B >
    using utl::details::is_boolean_t = meta::eval< is_boolean_< B > >
     
    template<typename T , typename U >
    using utl::details::is_weakly_equality_comparable_with_t = meta::eval< is_weakly_equality_comparable_with_< T, U > >
     
    template<typename T >
    using utl::details::is_strict_totally_ordered_t = meta::eval< is_strict_totally_ordered_< T > >
     
    template<typename T , typename U >
    using utl::details::is_strict_totally_ordered_with_t = meta::eval< is_strict_totally_ordered_with_< T, U > >
     
    template<typename... Ts>
    using utl::common_reference = common_impl::common_reference< Ts... >
     
    template<typename... Ts>
    using utl::common_reference_t = meta::eval< common_reference< Ts... > >
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Variables

    template<class T , class U >
    _utlConcept utl::Same = meta::same_<T, U>::value
     
    template<class Derived , class Base >
    _utlConcept utl::DerivedFrom
     
    template<class From , class To >
    _utlConcept utl::ConvertibleTo = std::is_convertible<From, To>::value
     
    template<class T , class U >
    _utlConcept utl::CommonReference
     
    template<class T , class U >
    _utlConcept utl::Common
     
    template<class T >
    _utlConcept utl::Integral = std::is_integral<T>::value
     
    template<class T >
    _utlConcept utl::SignedIntegral = Integral<T> && std::is_signed<T>::value
     
    template<class T >
    _utlConcept utl::UnsignedIntegral = Integral<T> && !std::is_signed<T>::value
     
    template<typename T >
    _utlConcept utl::MoveAssignable = std::is_move_assignable<T>::value
     
    template<typename T >
    _utlConcept utl::CopyAssignable = std::is_copy_assignable<T>::value
     
    template<class LHS , class RHS >
    _utlConcept utl::Assignable
     
    template<class T >
    _utlConcept utl::Destructible = std::is_nothrow_destructible<T>::value
     
    template<class T , class... Args>
    _utlConcept utl::Constructible
     
    template<class T >
    _utlConcept utl::DefaultConstructible = Constructible<T>
     
    template<class T >
    _utlConcept utl::MoveConstructible
     
    template<class T >
    _utlConcept utl::CopyConstructible
     
    template<class T >
    _utlConcept utl::Movable
     
    template<class T >
    _utlConcept utl::Copyable
     
    template<class B >
    _utlConcept utl::Boolean
     
    template<class T , class U >
    _utlConcept utl::WeaklyEqualityComparableWith
     
    template<class T >
    _utlConcept utl::EqualityComparable = WeaklyEqualityComparableWith<T, T>
     
    template<class T , class U >
    _utlConcept utl::EqualityComparableWith
     
    template<class T >
    _utlConcept utl::StrictTotallyOrdered
     
    template<class T , class U >
    _utlConcept utl::StrictTotallyOrderedWith
     
    template<class T >
    _utlConcept utl::Semiregular = Copyable<T> && DefaultConstructible<T>
     
    template<class T >
    _utlConcept utl::Regular = Semiregular<T> && EqualityComparable<T>
     
    template<class T >
    _utlConcept utl::Scalar
     
    template<class T >
    _utlConcept utl::Arithmetic
     
    template<class T >
    _utlConcept utl::FloatingPoint
     
    template<class F , class... Args>
    _utlConcept utl::Invocable = is_invocable<F, Args...>::value
     
    template<class F , class... Args>
    _utlConcept utl::RegularInvocable = Invocable<F, Args...>
     
    template<class F , class... Args>
    _utlConcept utl::Predicate
     
    template<class R , class T , class U >
    _utlConcept utl::Relation
     
    template<class R , class T , class U >
    _utlConcept utl::StrictWeakOrder = Relation<R, T, U>
     
    using utl::is_swappable = std::is_swappable
     
    using utl::is_swappable_with = std::is_swappable_with
     
    template<class T , class U >
    _utlConcept utl::SwappableWith
     
    template<class T >
    _utlConcept utl::Swappable = is_swappable_with<T, T>::type::value
     
    +

    Detailed Description

    +

    STL's Concepts.

    +

    Copyright (C) 2018 - 2019 Christos Choutouridis

    +

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    +

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

    +

    You should have received a copy of the GNU Lesser General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    + +

    Definition in file stl.h.

    +
    +
    + + + + diff --git a/doc/html/stl_8h.js b/doc/html/stl_8h.js new file mode 100644 index 0000000..a7083b6 --- /dev/null +++ b/doc/html/stl_8h.js @@ -0,0 +1,93 @@ +var stl_8h = +[ + [ "__copy_cv_", "structutl_1_1common__impl_1_1____copy__cv__.html", "structutl_1_1common__impl_1_1____copy__cv__" ], + [ "__copy_cv_< const From >", "structutl_1_1common__impl_1_1____copy__cv___3_01const_01_from_01_4.html", "structutl_1_1common__impl_1_1____copy__cv___3_01const_01_from_01_4" ], + [ "__copy_cv_< volatile From >", "structutl_1_1common__impl_1_1____copy__cv___3_01volatile_01_from_01_4.html", "structutl_1_1common__impl_1_1____copy__cv___3_01volatile_01_from_01_4" ], + [ "__copy_cv_< const volatile From >", "structutl_1_1common__impl_1_1____copy__cv___3_01const_01volatile_01_from_01_4.html", "structutl_1_1common__impl_1_1____copy__cv___3_01const_01volatile_01_from_01_4" ], + [ "__common_ref_", "structutl_1_1common__impl_1_1____common__ref__.html", null ], + [ "__common_ref_< T &, U &, meta::void_t< __lref_res< T, U >, meta::when< std::is_reference< __lref_res< T, U > >::value > > >", "structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_00_01meta_1_1void__t_3_05e5aa384829bb34312a7b8ee4ecaa00f.html", "structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_00_01meta_1_1void__t_3_05e5aa384829bb34312a7b8ee4ecaa00f" ], + [ "__common_ref_< T &&, U &&, meta::void_t< __common_ref< T &, U & >, meta::when< ConvertibleTo< T &&, __rref_res< T, U > > >, meta::when< ConvertibleTo< U &&, __rref_res< T, U > > > > >", "structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_6_00_01meta_1_1void__tc4e71c227f251cadf0e0fb7b1ba6f1e9.html", "structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_6_00_01meta_1_1void__tc4e71c227f251cadf0e0fb7b1ba6f1e9" ], + [ "__common_ref_< T &&, U &, meta::void_t< __common_ref< const T &, U & >, meta::when< ConvertibleTo< T &&, __common_ref< const T &, U & > > > > >", "structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_00_01meta_1_1void__t_3972a8d6e6799b6ee6537c969cdced343.html", "structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_00_01meta_1_1void__t_3972a8d6e6799b6ee6537c969cdced343" ], + [ "__common_ref_< T &, U &&, meta::void_t< __common_ref< T &, const U & >, meta::when< ConvertibleTo< U &&, __common_ref< T &, const U & > > > > >", "structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_6_00_01meta_1_1void__t_329fba5aeac3b93aa9cfa5aa7e282e196.html", "structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_6_00_01meta_1_1void__t_329fba5aeac3b93aa9cfa5aa7e282e196" ], + [ "__xref", "structutl_1_1common__impl_1_1____xref.html", "structutl_1_1common__impl_1_1____xref" ], + [ "__xref< const T >", "structutl_1_1common__impl_1_1____xref_3_01const_01_t_01_4.html", "structutl_1_1common__impl_1_1____xref_3_01const_01_t_01_4" ], + [ "__xref< volatile T >", "structutl_1_1common__impl_1_1____xref_3_01volatile_01_t_01_4.html", "structutl_1_1common__impl_1_1____xref_3_01volatile_01_t_01_4" ], + [ "__xref< const volatile T >", "structutl_1_1common__impl_1_1____xref_3_01const_01volatile_01_t_01_4.html", "structutl_1_1common__impl_1_1____xref_3_01const_01volatile_01_t_01_4" ], + [ "__xref< T & >", "structutl_1_1common__impl_1_1____xref_3_01_t_01_6_01_4.html", "structutl_1_1common__impl_1_1____xref_3_01_t_01_6_01_4" ], + [ "__xref< T && >", "structutl_1_1common__impl_1_1____xref_3_01_t_01_6_6_01_4.html", "structutl_1_1common__impl_1_1____xref_3_01_t_01_6_6_01_4" ], + [ "basic_common_reference", "structutl_1_1common__impl_1_1basic__common__reference.html", null ], + [ "common_reference", "structutl_1_1common__impl_1_1common__reference.html", null ], + [ "common_reference< T >", "structutl_1_1common__impl_1_1common__reference_3_01_t_01_4.html", "structutl_1_1common__impl_1_1common__reference_3_01_t_01_4" ], + [ "__common_reference3", "structutl_1_1common__impl_1_1____common__reference3.html", null ], + [ "__common_reference3< T, U, meta::void_t< __cond_res< T, U > > >", "structutl_1_1common__impl_1_1____common__reference3_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____015b01ed12d2d90ee57fbf756ab847e9.html", "structutl_1_1common__impl_1_1____common__reference3_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____015b01ed12d2d90ee57fbf756ab847e9" ], + [ "__common_reference2", "structutl_1_1common__impl_1_1____common__reference2.html", null ], + [ "__common_reference2< T, U, meta::void_t< __basic_common_reference_t< T, U > > >", "structutl_1_1common__impl_1_1____common__reference2_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____785d0aa2f8a62416e19573fcbdd83836.html", "structutl_1_1common__impl_1_1____common__reference2_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____785d0aa2f8a62416e19573fcbdd83836" ], + [ "__common_reference", "structutl_1_1common__impl_1_1____common__reference.html", null ], + [ "__common_reference< T, U, meta::when< std::is_reference< T >::value &&std::is_reference< U >::value > >", "structutl_1_1common__impl_1_1____common__reference_3_01_t_00_01_u_00_01meta_1_1when_3_01std_1_1i23b95b4b3a65ce598dbcc7f52e9dab2c.html", "structutl_1_1common__impl_1_1____common__reference_3_01_t_00_01_u_00_01meta_1_1when_3_01std_1_1i23b95b4b3a65ce598dbcc7f52e9dab2c" ], + [ "common_reference< T, U >", "structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_01_4.html", null ], + [ "common_reference< T, U, V, W... >", "structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_00_01_v_00_01_w_8_8_8_01_4.html", null ], + [ "is_boolean_", "structutl_1_1details_1_1is__boolean__.html", "structutl_1_1details_1_1is__boolean__" ], + [ "is_boolean_< B, meta::void_t< meta::use_if_same_t< bool, decltype(!std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>()==std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>() !=std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>() &&std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>()||std::declval< cref_< B >>())> > >", "structutl_1_1details_1_1is__boolean___3_01_b_00_01meta_1_1void__t_3_01meta_1_1use__if__same__t_37e77ed45a431955fc15b4c1210ad8491.html", "structutl_1_1details_1_1is__boolean___3_01_b_00_01meta_1_1void__t_3_01meta_1_1use__if__same__t_37e77ed45a431955fc15b4c1210ad8491" ], + [ "is_weakly_equality_comparable_with_", "structutl_1_1details_1_1is__weakly__equality__comparable__with__.html", "structutl_1_1details_1_1is__weakly__equality__comparable__with__" ], + [ "is_weakly_equality_comparable_with_< T, U, meta::void_t< meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()==std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() !=std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>()==std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>() !=std::declval< cref_< T >>())> > >", "structutl_1_1details_1_1is__weakly__equality__comparable__with___3_01_t_00_01_u_00_01meta_1_1voi4404f901930622694666ca68fb75381b.html", "structutl_1_1details_1_1is__weakly__equality__comparable__with___3_01_t_00_01_u_00_01meta_1_1voi4404f901930622694666ca68fb75381b" ], + [ "is_strict_totally_ordered_", "structutl_1_1details_1_1is__strict__totally__ordered__.html", "structutl_1_1details_1_1is__strict__totally__ordered__" ], + [ "is_strict_totally_ordered_< T, meta::void_t< meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()< std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() > std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()<=std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() >=std::declval< cref_< T >>())> > >", "structutl_1_1details_1_1is__strict__totally__ordered___3_01_t_00_01meta_1_1void__t_3_01meta_1_1uab48bcfc89164f446368b35bcc7c8bcd.html", "structutl_1_1details_1_1is__strict__totally__ordered___3_01_t_00_01meta_1_1void__t_3_01meta_1_1uab48bcfc89164f446368b35bcc7c8bcd" ], + [ "is_strict_totally_ordered_with_", "structutl_1_1details_1_1is__strict__totally__ordered__with__.html", "structutl_1_1details_1_1is__strict__totally__ordered__with__" ], + [ "is_strict_totally_ordered_with_< T, U, meta::void_t< meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()< std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() > std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()<=std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() >=std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>()< std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>() > std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>()<=std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>() >=std::declval< cref_< T >>())> > >", "structutl_1_1details_1_1is__strict__totally__ordered__with___3_01_t_00_01_u_00_01meta_1_1void__t8fb7dd5a6ad25952241e37c6f163f434.html", "structutl_1_1details_1_1is__strict__totally__ordered__with___3_01_t_00_01_u_00_01meta_1_1void__t8fb7dd5a6ad25952241e37c6f163f434" ], + [ "__basic_common_reference_t", "stl_8h.html#a3bbe5eb74a1c6017f60e3034519d69d6", null ], + [ "__common_ref", "stl_8h.html#a8913f9d610ed8720c817081662fa9f1f", null ], + [ "__cond_res", "stl_8h.html#ab43a461d352a35dc1b3de39bfe17e38b", null ], + [ "__copy_cv", "stl_8h.html#aed700217ef1518692242c1059f3dff27", null ], + [ "__cref", "stl_8h.html#a3d7922723a5d41f399f3c8a99e016e73", null ], + [ "__lref_res", "stl_8h.html#ae2f3d56c7e5144e099cdf37b19523290", null ], + [ "__rref_res", "stl_8h.html#a312c9f3e740103f831a49624097948f5", null ], + [ "_ref_t", "stl_8h.html#aa3f95fc48a94b2fae3c2959b7c024998", null ], + [ "common_reference", "stl_8h.html#a3970b90f0e0fd9f801cfcb1d955e3d42", null ], + [ "common_reference_t", "stl_8h.html#adc4b085a84c0355fda341475074ff230", null ], + [ "common_reference_t", "stl_8h.html#a4d76d9e29b830c16ad7dd34e3800a746", null ], + [ "cref_", "stl_8h.html#a7d69beba08b81379703fd3b0ca42044d", null ], + [ "is_boolean_t", "stl_8h.html#a7f9309206778a6e9f0859c328b4288df", null ], + [ "is_strict_totally_ordered_t", "stl_8h.html#a3d90ca0461264f84f75c7698f7bbb811", null ], + [ "is_strict_totally_ordered_with_t", "stl_8h.html#acd9fac18316e44b7abd920686de886f0", null ], + [ "is_swappable", "stl_8h.html#a1d50e9abd420e77555624f3e52bc7479", null ], + [ "is_swappable_with", "stl_8h.html#ab437a6d3a1f420b44e01378ae37fcb24", null ], + [ "is_weakly_equality_comparable_with_t", "stl_8h.html#a499205eb8ca7f46d1e417a27f52442b8", null ], + [ "remove_cvref_t", "stl_8h.html#a7a9d26263662e02fbe3b238da5fd7338", null ], + [ "use_if_same_t", "stl_8h.html#ac5e425d39e8ee62e68664c6166d02d0c", null ], + [ "Arithmetic", "stl_8h.html#a41733496c30138efd3d88f13d9382aad", null ], + [ "Assignable", "stl_8h.html#acfbced82f83ceb87eeb77d31941c011a", null ], + [ "Boolean", "stl_8h.html#a38e00606b4b45a2ac59fa4576b4498c6", null ], + [ "Common", "stl_8h.html#a79e23f98aa58c2dcd111743a096ef092", null ], + [ "CommonReference", "stl_8h.html#a1cc37f121888dcc030b8e676b077024f", null ], + [ "Constructible", "stl_8h.html#a2a3ef7a9c788ffc1291ce15d2e5869bf", null ], + [ "ConvertibleTo", "stl_8h.html#a9c88a03a5b6dd66200e86f98fb1eb9eb", null ], + [ "Copyable", "stl_8h.html#ac300f0e204f0ec4bd0ca38a551bb2b88", null ], + [ "CopyAssignable", "stl_8h.html#a1be866c815c4fcb2a7344650c3491c0c", null ], + [ "CopyConstructible", "stl_8h.html#afb0f121b33b44640406b724c4d582b70", null ], + [ "DefaultConstructible", "stl_8h.html#aacd3a17129d764e8a80c615eb4b88dc3", null ], + [ "DerivedFrom", "stl_8h.html#a0904cc4071a8ea97a1d646dc0a9ca85b", null ], + [ "Destructible", "stl_8h.html#acf2f1df100b0cc4f127243a1a83a8469", null ], + [ "EqualityComparable", "stl_8h.html#a92a38a3d1638ccad068c24d1242ef63a", null ], + [ "EqualityComparableWith", "stl_8h.html#aa2be0b64c41b392c5264de5f5fee094e", null ], + [ "FloatingPoint", "stl_8h.html#a07e83d4763a298c1faf2b1069b55e286", null ], + [ "Integral", "stl_8h.html#ada9137016ddccf3339b2f6b3c409cc3c", null ], + [ "Invocable", "stl_8h.html#a9d5bbdf19b08d6d714ec696b0ec44d0a", null ], + [ "Movable", "stl_8h.html#afc25cb525eb29162042c21238f28f26e", null ], + [ "MoveAssignable", "stl_8h.html#a7b8e4a26148ed5f2c60e4fd7d41e7e63", null ], + [ "MoveConstructible", "stl_8h.html#a2a728f3d477d96f4f719bf62079321cf", null ], + [ "Predicate", "stl_8h.html#aae56a019cdd2006c4f07d2e207289195", null ], + [ "Regular", "stl_8h.html#a3accaa436a17248b4214baebc582b2f6", null ], + [ "RegularInvocable", "stl_8h.html#ace9ef6da96e8cf5dc72762cd66240186", null ], + [ "Relation", "stl_8h.html#a6d1e9b4853dd005ddaf61a79333cab98", null ], + [ "Same", "stl_8h.html#af86da3571c3026c6bbd501c6b7bc5093", null ], + [ "Scalar", "stl_8h.html#a7f86c4bf42b13d9525481d731b194308", null ], + [ "Semiregular", "stl_8h.html#af6b010e85897cb590e66a52157be1af5", null ], + [ "SignedIntegral", "stl_8h.html#a667b758d906c466d1b8a878a45750bf1", null ], + [ "StrictTotallyOrdered", "stl_8h.html#a720d6ece86f3f3320816aaae02eb16e4", null ], + [ "StrictTotallyOrderedWith", "stl_8h.html#a5599d14d1bd008e4c14787d610a2b429", null ], + [ "StrictWeakOrder", "stl_8h.html#aa4b7b9105cfab3cd72865b5e0db23b11", null ], + [ "Swappable", "stl_8h.html#ae2b149b19fb3d69a4fc555e4474bf9de", null ], + [ "SwappableWith", "stl_8h.html#a4a3bb850ba59d499382bd11153104af7", null ], + [ "UnsignedIntegral", "stl_8h.html#a7fb6eaf8fc1c5d65755c8c96a7a9b61f", null ], + [ "WeaklyEqualityComparableWith", "stl_8h.html#a216f6e14ca647d85841fa13c40dc4ee3", null ] +]; \ No newline at end of file diff --git a/doc/html/stl_8h_source.html b/doc/html/stl_8h_source.html new file mode 100644 index 0000000..bb7c9a6 --- /dev/null +++ b/doc/html/stl_8h_source.html @@ -0,0 +1,216 @@ + + + + + + + +uTL: include/utl/concepts/stl.h Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    stl.h
    +
    +
    +Go to the documentation of this file.
    1 
    21 #ifndef __utl_concepts_stl_h__
    22 #define __utl_concepts_stl_h__
    23 
    24 #include <utl/core/impl.h>
    25 #include <utl/meta/meta.h>
    26 #include <utl/utility/invoke.h>
    27 
    28 #include <utl/concepts/defines.h>
    29 
    38 namespace utl {
    40 
    41  template <typename T>
    42  using remove_cvref_t = std::remove_cv_t< std::remove_reference_t<T> >;
    43 
    44  template <typename T>
    45  using cref_ = const std::remove_reference_t<T>&;
    46 
    47  template <typename T>
    48  using _ref_t = std::add_lvalue_reference_t<T>;
    49 
    50  template <typename _T1, typename _T2, typename _Ret =_T1>
    51  using use_if_same_t = meta::eval<
    54  >
    55  >;
    56 
    57 
    61  template <class T, class U>
    63 
    64 // template<class T>
    65 // _utlConcept Decayed = Same<T, std::decay_t<T>>;
    66 
    70  template <class Derived, class Base>
    72  std::is_base_of<Base, Derived>::value &&
    73  std::is_convertible<const volatile Derived*, const volatile Base*>::value;
    74 
    75 
    79  template <class From, class To>
    80  #if CXX_CONCEPTS
    82  std::is_convertible<From, To>::value &&
    83  requires(From (&f)()) {
    84  static_cast<To>(f());
    85  };
    86  #else
    87  _utlConcept ConvertibleTo = std::is_convertible<From, To>::value;
    88  #endif
    89 
    93  namespace common_impl {
    96  // ========== common reference ===========
    97  template<class T, class U>
    98  using __cond_res =
    99  decltype(false ? std::declval<T(&)()>()() : std::declval<U(&)()>()());
    100 
    101  template<class From>
    102  struct __copy_cv_ {
    103  static_assert(!std::is_reference<From>::value);
    104  template<class To> using apply = To;
    105  };
    106  template<class From>
    107  struct __copy_cv_<const From> {
    108  template<class To> using apply = const To;
    109  };
    110  template<class From>
    111  struct __copy_cv_<volatile From> {
    112  template<class To> using apply = volatile To;
    113  };
    114  template<class From>
    115  struct __copy_cv_<const volatile From> {
    116  template<class To> using apply = const volatile To;
    117  };
    118  template<class From, class To>
    120 
    121  // CREF [meta.trans.other]/2.1
    122  template<class T>
    123  using __cref = std::add_lvalue_reference_t<const std::remove_reference_t<T>>;
    124 
    125  // COMMON_REF [meta.trans.other]/2
    126  template<class T, class U, class = void>
    127  struct __common_ref_ {
    128  static_assert(std::is_reference<T>::value, "");
    129  static_assert(std::is_reference<U>::value, "");
    130  };
    131 
    132  template<class T, class U>
    134 
    135  // [meta.trans.other]/2.5
    136  template<class T, class U>
    137  using __lref_res = __cond_res<
    138  __copy_cv<T, U> &,
    140  >;
    141 
    142  // [meta.trans.other]/2.6
    143  template<class T, class U, class R = __common_ref<T&, U&>>
    144  using __rref_res = std::remove_reference_t<R>&&;
    145 
    146  template<class T, class U>
    147  struct __common_ref_<T&, U&,
    151  };
    152 
    153  template<class T, class U>
    154  struct __common_ref_<T&&, U&&,
    159  };
    160 
    161  // [meta.trans.other]/2.7
    162  template<class T, class U>
    163  struct __common_ref_<T&&, U&,
    167  };
    168 
    169  // [meta.trans.other]/2.8
    170  template<class T, class U>
    171  struct __common_ref_<T&, U&&,
    175  };
    176 
    177  template<class>
    178  struct __xref {
    179  template<class U> using apply = U;
    180  };
    181  template<class T>
    182  struct __xref<const T> {
    183  template<class U> using apply = const U;
    184  };
    185  template<class T>
    186  struct __xref<volatile T> {
    187  template<class U> using apply = volatile U;
    188  };
    189  template<class T>
    190  struct __xref<const volatile T> {
    191  template<class U> using apply = const volatile U;
    192  };
    193  template<class T>
    194  struct __xref<T&> {
    195  template<class U> using apply =
    196  std::add_lvalue_reference_t<meta::invoke<__xref<T>, U>>;
    197  };
    198  template<class T>
    199  struct __xref<T&&> {
    200  template<class U> using apply =
    201  std::add_rvalue_reference_t<meta::invoke<__xref<T>, U>>;
    202  };
    203 
    204  template<class,
    205  class,
    206  template<class> class,
    207  template<class> class
    208  >
    210 
    211  template<class T, class U>
    218  >
    219  >;
    220 
    221  template<class...>
    222  struct common_reference {};
    223 
    224  template<class... Ts>
    226  common_reference<Ts...>
    227  >;
    228 
    229  // [meta.trans.other]/5.2
    230  template<class T>
    231  struct common_reference<T> {
    232  using type = T;
    233  };
    234 
    235  // [meta.trans.other]/5.3.4
    236  template<class T, class U, class...>
    238  : std::common_type<T, U> {};
    239 
    240  // [meta.trans.other]/5.3.3
    241  template<class T, class U>
    242  struct __common_reference3<T, U,
    245  };
    246 
    247  template<class T, class U, class...>
    250 
    251  // [meta.trans.other]/5.3.2
    252  template<class T, class U>
    253  struct __common_reference2<T, U,
    256  };
    257 
    258  template <class T, class U, class...>
    261 
    262  template <class T, class U>
    263  struct __common_reference<T, U,
    264  meta::when<std::is_reference<T>::value && std::is_reference<U>::value>> {
    266  };
    267 
    268  template<class T, class U>
    269  struct common_reference<T, U> : __common_reference<T, U> { };
    270 
    271  // [meta.trans.other]/5.4
    272  template<class T, class U, class V, class... W>
    273  //requires requires { typename common_reference_t<T, U>; }
    274  struct common_reference<T, U, V, W...>
    275  : common_reference <
    276  common_reference_t<T, U>, V, W...
    277  > {};
    278  }
    279 
    280  template<typename...Ts>
    282 
    283  template<typename... Ts>
    285  common_reference<Ts...>
    286  >;
    287 
    289 
    290 
    291  //FIXME: CommonReference needs better implementation
    292  template <class T, class U>
    294  Same<common_reference_t<T, U>, common_reference_t<U, T>> &&
    295  ConvertibleTo<T, common_reference_t<T, U>> &&
    296  ConvertibleTo<U, common_reference_t<T, U>>;
    297 
    298 
    299  // != std::Common on CommonReference
    300  template <class T, class U>
    302  #if CXX_CONCEPTS
    303  Same<std::common_type_t<T, U>, std::common_type_t<U, T>> &&
    304  requires {
    305  static_cast<std::common_type_t<T, U>>(std::declval<T>());
    306  static_cast<std::common_type_t<T, U>>(std::declval<U>());
    307  };
    308 // } &&
    309 // CommonReference<
    310 // std::add_lvalue_reference_t<const T>,
    311 // std::add_lvalue_reference_t<const U>> &&
    312 // CommonReference<
    313 // std::add_lvalue_reference_t<std::common_type_t<T, U>>,
    314 // std::common_reference_t<
    315 // std::add_lvalue_reference_t<const T>,
    316 // std::add_lvalue_reference_t<const U>
    317 // >
    318 // >;
    319  #else
    320 // meta::and_ <
    321  Same<std::common_type_t<T, U>, std::common_type_t<U, T>>; //>
    322 // meta::bool_<CommonReference<
    323 // std::add_lvalue_reference_t<const T>,
    324 // std::add_lvalue_reference_t<const U>
    325 // >>,
    326 // meta::bool_< CommonReference<
    327 // std::add_lvalue_reference_t<std::common_type_t<T, U>>,
    328 // common_reference_t<
    329 // std::add_lvalue_reference_t<const T>,
    330 // std::add_lvalue_reference_t<const U>
    331 // >
    332 // >>
    333 // >::value;
    334  #endif
    335 
    339  template <class T>
    340  _utlConcept Integral = std::is_integral<T>::value;
    341 
    345  template <class T>
    346  _utlConcept SignedIntegral = Integral<T> && std::is_signed<T>::value;
    347 
    351  template <class T>
    352  _utlConcept UnsignedIntegral = Integral<T> && !std::is_signed<T>::value;
    353 
    354 
    355  template <typename T>
    356  _utlConcept MoveAssignable = std::is_move_assignable<T>::value;
    357 
    358  template <typename T>
    359  _utlConcept CopyAssignable = std::is_copy_assignable<T>::value;
    360 
    365  template<class LHS, class RHS>
    367  #if CXX_CONCEPTS
    368  std::is_lvalue_reference<LHS>::value &&
    369 // CommonReference<
    370 // const std::remove_reference_t<L>&,
    371 // const std::remove_reference_t<R>&> &&
    372  requires(LHS lhs, RHS&& rhs) {
    373  lhs = std::forward<RHS>(rhs);
    374  requires Same<
    375  decltype(lhs = std::forward<RHS>(rhs)), LHS
    376  >;
    377  };
    378  #else
    379  std::is_assignable<LHS, RHS>::value;
    380  #endif
    381 
    385  #if CXX_VER < CXX_VER_STD_17
    387  namespace swappable_with_impl {
    388  struct is_swappable_with_ {
    389  // can apply std::swap
    390  template<typename _Tp,
    391  typename _Up,
    392  typename
    393  = decltype(std::swap(std::declval<_Tp&>(), std::declval<_Up&>())),
    394  typename
    395  = decltype(std::swap(std::declval<_Up&>(), std::declval<_Tp&>()))>
    396  static meta::true_ check(int);
    397  // can not apply std::swap
    398  template<typename, typename> static meta::false_ check(...);
    399  };
    400  }
    401  template <typename _Tp, typename _Up>
    402  struct is_swappable_with
    403  : swappable_with_impl::is_swappable_with_ {
    404  using type = decltype(check<_Tp, _Up>(0));
    405  };
    406  #else
    409  #endif
    410 
    411  // != std:: on CommonReference
    412  template<class T, class U>
    418 // std::CommonReference<
    419 // const std::remove_reference_t<T>&,
    420 // const std::remove_reference_t<U>&
    421 // >;
    422 
    423  // != std:: we use is_swappable_with now is_swappable
    424  template<class T>
    427 
    431  template <class T>
    432  _utlConcept Destructible = std::is_nothrow_destructible<T>::value;
    433 
    437  template <class T, class... Args>
    439  Destructible<T> && std::is_constructible<T, Args...>::value;
    443  template <class T>
    444  _utlConcept DefaultConstructible = Constructible<T>;
    445 
    451  template<class T>
    453  Constructible<T, T> && ConvertibleTo<T, T>;
    454 
    458  template <class T>
    460  MoveConstructible<T> &&
    461  Constructible<T, _ref_t<T>> && ConvertibleTo<_ref_t<T>, T> &&
    462  Constructible<T, const _ref_t<T>> && ConvertibleTo<const _ref_t<T>, T> &&
    463  Constructible<T, const T> && ConvertibleTo<const T, T>;
    464 
    468  template <class T>
    470  std::is_object<T>::value &&
    471  MoveConstructible<T> &&
    472  Assignable<_ref_t<T>, T> &&
    473  Swappable<T>;
    474 
    475 
    479  template <class T>
    481  CopyConstructible<T> &&
    482  Movable<T> &&
    483  Assignable<_ref_t<T>, const _ref_t<T>>;
    484 
    485 
    489  #if CXX_CONCEPTS
    490  template <class B>
    492  Movable<remove_cvref_t<B>> &&
    493  requires(const std::remove_reference_t<B>& b1,
    494  const std::remove_reference_t<B>& b2, const bool a) {
    495  requires ConvertibleTo<const std::remove_reference_t<B>&, bool>;
    496  !b1; requires ConvertibleTo<decltype(!b1), bool>;
    497  b1 && a; requires Same<decltype(b1 && a), bool>;
    498  b1 || a; requires Same<decltype(b1 || a), bool>;
    499  b1 && b2; requires Same<decltype(b1 && b2), bool>;
    500  a && b2; requires Same<decltype(a && b2), bool>;
    501  b1 || b2; requires Same<decltype(b1 || b2), bool>;
    502  a || b2; requires Same<decltype(a || b2), bool>;
    503  b1 == b2; requires ConvertibleTo<decltype(b1 == b2), bool>;
    504  b1 == a; requires ConvertibleTo<decltype(b1 == a), bool>;
    505  a == b2; requires ConvertibleTo<decltype(a == b2), bool>;
    506  b1 != b2; requires ConvertibleTo<decltype(b1 != b2), bool>;
    507  b1 != a; requires ConvertibleTo<decltype(b1 != a), bool>;
    508  a != b2; requires ConvertibleTo<decltype(a != b2), bool>;
    509  };
    510  #else
    511  namespace details {
    512 // template <typename B> using try_op_not_ = decltype(!std::declval<cref_<B>>());
    513 // template <typename B> using try_op_eq_ = decltype(std::declval<cref_<B>>() == std::declval<cref_<B>>());
    514 // template <typename B> using try_op_neq_ = decltype(std::declval<cref_<B>>() != std::declval<cref_<B>>());
    515 // template <typename B> using try_op_and_ = decltype(std::declval<cref_<B>>() && std::declval<cref_<B>>());
    516 // template <typename B> using try_op_or_ = decltype(std::declval<cref_<B>>() || std::declval<cref_<B>>());
    517 //
    518 // template <typename B>
    519 // struct is_boolean__ {
    520 // using type = meta::and_ <
    521 // meta::is_detected<B, try_op_not_>,
    522 // meta::is_detected<B, try_op_eq_>,
    523 // meta::is_detected<B, try_op_neq_>,
    524 // meta::is_detected<B, try_op_and_>,
    525 // meta::is_detected<B, try_op_or_>
    526 // >;
    527 // };
    528 
    529  template <typename B, typename = void>
    530  struct is_boolean_ {
    532  };
    533 
    534  template <typename B>
    535  struct is_boolean_ <B, meta::void_t<
    536  meta::use_if_same_t<bool, decltype(!std::declval<cref_<B>>())>,
    537  meta::use_if_same_t<bool, decltype(std::declval<cref_<B>>() == std::declval<cref_<B>>())>,
    538  meta::use_if_same_t<bool, decltype(std::declval<cref_<B>>() != std::declval<cref_<B>>())>,
    539  meta::use_if_same_t<bool, decltype(std::declval<cref_<B>>() && std::declval<cref_<B>>())>,
    540  meta::use_if_same_t<bool, decltype(std::declval<cref_<B>>() || std::declval<cref_<B>>())>
    541  >> {
    542  using type = meta::true_;
    543  };
    544 
    545  template <typename B>
    546  using is_boolean_t = meta::eval <
    548  >;
    549  }
    550  template <class B>
    552  Movable<remove_cvref_t<B>> &&
    553  //ConvertibleTo<const std::remove_reference_t<B>&, bool> &&
    554  ConvertibleTo<const _ref_t<B>, bool> &&
    555  Same<meta::true_, details::is_boolean_t<B>>;
    556  #endif
    557 
    558 
    559  namespace details {
    560  template <typename T, typename U, typename = void>
    563  };
    564 
    565  template <typename T, typename U>
    567  meta::use_if_same_t<bool, decltype(std::declval<cref_<T>>() == std::declval<cref_<U>>())>,
    568  meta::use_if_same_t<bool, decltype(std::declval<cref_<T>>() != std::declval<cref_<U>>())>,
    569  meta::use_if_same_t<bool, decltype(std::declval<cref_<U>>() == std::declval<cref_<T>>())>,
    570  meta::use_if_same_t<bool, decltype(std::declval<cref_<U>>() != std::declval<cref_<T>>())>
    571  >> {
    572  using type = meta::true_;
    573  };
    574 
    575  template <typename T, typename U>
    578  >;
    579  }
    580 
    581  template <class T, class U>
    583  #if CXX_CONCEPTS
    584  requires(const std::remove_reference_t<T>& t,
    585  const std::remove_reference_t<U>& u) {
    586  t == u; requires Boolean<decltype(t == u)>;
    587  t != u; requires Boolean<decltype(t != u)>;
    588  u == t; requires Boolean<decltype(u == t)>;
    589  u != t; requires Boolean<decltype(u != t)>;
    590  };
    591  #else
    592  Same<meta::true_, details::is_weakly_equality_comparable_with_t<T, U>>;
    593  #endif
    594 
    595  template <class T>
    596  _utlConcept EqualityComparable = WeaklyEqualityComparableWith<T, T>;
    597 
    598  template <class T, class U>
    600  EqualityComparable<T> &&
    601  EqualityComparable<U> &&
    602 // CommonReference<
    603 // const std::remove_reference_t<T>&,
    604 // const std::remove_reference_t<U>&> &&
    605 // EqualityComparable<
    606 // common_reference_t<
    607 // const std::remove_reference_t<T>&,
    608 // const std::remove_reference_t<U>&>> &&
    609  WeaklyEqualityComparableWith<T, U>;
    610 
    611 
    612 
    613  #if CXX_CONCEPTS
    614  template <class T>
    616  EqualityComparable<T> &&
    617  requires(const std::remove_reference_t<T>& a,
    618  const std::remove_reference_t<T>& b) {
    619  a < b; requires Boolean<decltype(a < b)>;
    620  a > b; requires Boolean<decltype(a > b)>;
    621  a <= b; requires Boolean<decltype(a <= b)>;
    622  a >= b; requires Boolean<decltype(a >= b)>;
    623  };
    624  #else
    625  namespace details {
    626  template <typename T, typename = void>
    629  };
    630 
    631  template <typename T>
    633  meta::use_if_same_t<bool, decltype(std::declval<cref_<T>>() < std::declval<cref_<T>>())>,
    634  meta::use_if_same_t<bool, decltype(std::declval<cref_<T>>() > std::declval<cref_<T>>())>,
    635  meta::use_if_same_t<bool, decltype(std::declval<cref_<T>>() <= std::declval<cref_<T>>())>,
    636  meta::use_if_same_t<bool, decltype(std::declval<cref_<T>>() >= std::declval<cref_<T>>())>
    637  >> {
    638  using type = meta::true_;
    639  };
    640 
    641  template <typename T>
    644  >;
    645  }
    646  template <class T>
    648  EqualityComparable<T> &&
    649  Same <meta::true_, details::is_strict_totally_ordered_t<T>>;
    650  #endif
    651 
    652  #if CXX_CONCEPTS
    653  template <class T, class U>
    655  StrictTotallyOrdered<T> &&
    656  StrictTotallyOrdered<U> &&
    657 // CommonReference<
    658 // const std::remove_reference_t<T>&,
    659 // const std::remove_reference_t<U>&
    660 // > &&
    661 // StrictTotallyOrdered<
    662 // common_reference_t<
    663 // const std::remove_reference_t<T>&,
    664 // const std::remove_reference_t<U>&
    665 // >
    666 // > &&
    667  EqualityComparableWith<T, U> &&
    668  requires(const std::remove_reference_t<T>& t,
    669  const std::remove_reference_t<U>& u) {
    670  t < u; requires Boolean<decltype(t < u)>;
    671  t > u; requires Boolean<decltype(t > u)>;
    672  t <= u; requires Boolean<decltype(t <= u)>;
    673  t >= u; requires Boolean<decltype(t >= u)>;
    674  u < t; requires Boolean<decltype(u < t)>;
    675  u > t; requires Boolean<decltype(u > t)>;
    676  u <= t; requires Boolean<decltype(u <= t)>;
    677  u >= t; requires Boolean<decltype(u >= t)>;
    678  };
    679  #else
    680  namespace details {
    681  template <typename T, typename U, typename = void>
    684  };
    685 
    686  template <typename T, typename U>
    688  meta::use_if_same_t<bool, decltype(std::declval<cref_<T>>() < std::declval<cref_<U>>())>,
    689  meta::use_if_same_t<bool, decltype(std::declval<cref_<T>>() > std::declval<cref_<U>>())>,
    690  meta::use_if_same_t<bool, decltype(std::declval<cref_<T>>() <= std::declval<cref_<U>>())>,
    691  meta::use_if_same_t<bool, decltype(std::declval<cref_<T>>() >= std::declval<cref_<U>>())>,
    692  meta::use_if_same_t<bool, decltype(std::declval<cref_<U>>() < std::declval<cref_<T>>())>,
    693  meta::use_if_same_t<bool, decltype(std::declval<cref_<U>>() > std::declval<cref_<T>>())>,
    694  meta::use_if_same_t<bool, decltype(std::declval<cref_<U>>() <= std::declval<cref_<T>>())>,
    695  meta::use_if_same_t<bool, decltype(std::declval<cref_<U>>() >= std::declval<cref_<T>>())>
    696  >> {
    697  using type = meta::true_;
    698  };
    699 
    700  template <typename T, typename U>
    703  >;
    704  }
    705  template <class T, class U>
    707  StrictTotallyOrdered<T> &&
    708  StrictTotallyOrdered<U> &&
    709  EqualityComparableWith<T, U> &&
    710  Same <meta::true_, details::is_strict_totally_ordered_with_t<T, U>>;
    711  #endif
    712 
    716  template <class T>
    717  _utlConcept Semiregular = Copyable<T> && DefaultConstructible<T>;
    718 
    722  template <class T>
    723  _utlConcept Regular = Semiregular<T> && EqualityComparable<T>;
    724 
    728  template<class T>
    730  std::is_scalar<T>::value && Regular<T>;
    731 
    735  template<class T>
    737  std::is_arithmetic<T>::value && Scalar<T> && StrictTotallyOrdered<T>;
    738 
    742  template<class T>
    744  std::is_floating_point<T>::value && Arithmetic<T>;
    745 
    749  template <class F, class... Args>
    750  _utlConcept Invocable = is_invocable<F, Args...>::value;
    751 // requires(F&& f, Args&&... args) {
    752 // invoke(std::forward<F>(f), std::forward<Args>(args)...);
    753 // };
    754 
    755  template< class F, class... Args >
    757 
    758  template < class F, class... Args >
    760  RegularInvocable<F, Args...> &&
    761  Boolean<invoke_result_t<F, Args...>>;
    762 
    763  template <class R, class T, class U>
    765  Predicate<R, T, T> && Predicate<R, U, U> &&
    766  Predicate<R, T, U> && Predicate<R, U, T>;
    767 
    768  template < class R, class T, class U >
    769  _utlConcept StrictWeakOrder = Relation<R, T, U>;
    770 }
    772 
    773 
    774 
    775 
    776 #endif /* __utl_concepts_stl_h__ */
    _utlConcept Semiregular
    Definition: stl.h:717
    + +
    _utlConcept Swappable
    Definition: stl.h:425
    +
    std::is_swappable is_swappable
    Definition: stl.h:407
    +
    _utlConcept SwappableWith
    Definition: stl.h:413
    + +
    Include all meta library.
    +
    _utlConcept WeaklyEqualityComparableWith
    Definition: stl.h:582
    +
    _utlConcept Common
    Definition: stl.h:301
    +
    #define _utlConcept
    utl concept keyword syntax wrapper
    Definition: defines.h:56
    +
    _utlConcept Copyable
    Definition: stl.h:480
    + +
    void void_t
    void_t type alias
    Definition: detection.h:55
    + + +
    _utlConcept StrictWeakOrder
    Definition: stl.h:769
    + +
    _utlConcept FloatingPoint
    Definition: stl.h:743
    +
    decltype(false ? std::declval< T(&)()>()() :std::declval< U(&)()>()()) __cond_res
    Definition: stl.h:99
    + +
    meta::eval< __common_ref_< T, U > > __common_ref
    Definition: stl.h:133
    + + +
    bool_< true > true_
    The type used as a compile-time boolean with true value.
    Definition: integral.h:68
    +
    const std::remove_reference_t< T > & cref_
    Definition: stl.h:45
    +
    _utlConcept StrictTotallyOrdered
    Definition: stl.h:647
    + +
    _utlConcept Assignable
    Definition: stl.h:366
    +
    _utlConcept Scalar
    Definition: stl.h:729
    +
    _utlConcept ConvertibleTo
    Definition: stl.h:87
    + +
    std::add_lvalue_reference_t< const std::remove_reference_t< T > > __cref
    Definition: stl.h:123
    +
    _utlConcept CopyAssignable
    Definition: stl.h:359
    +
    std::add_rvalue_reference_t< meta::invoke< __xref< T >, U > > apply
    Definition: stl.h:201
    +
    std::enable_if< If, _Tp > enable_if
    enable_if, imported from stl
    Definition: sfinae.h:60
    +
    meta::eval< meta::enable_if< meta::same_< _T1, _T2 >::value, _Ret > > use_if_same_t
    Definition: stl.h:55
    +
    apply_impl::apply_< Fn, Seq > apply
    Definition: typelist.h:197
    +
    _utlConcept Destructible
    Definition: stl.h:432
    +
    _utlConcept Invocable
    Definition: stl.h:750
    + +
    meta::eval< is_strict_totally_ordered_< T > > is_strict_totally_ordered_t
    Definition: stl.h:644
    +
    _utlConcept Same
    Definition: stl.h:62
    +
    meta::false_ type
    Definition: stl.h:531
    + + + +
    meta::eval< common_reference< Ts... > > common_reference_t
    Definition: stl.h:286
    + + +
    _utlConcept CommonReference
    Definition: stl.h:293
    +
    bool_< false > false_
    The type used as a compile-time boolean with false value.
    Definition: integral.h:69
    +
    typename Tp::type eval
    Type alias for Tp::type. Used to evaluate/extract return type of metafunctions.
    Definition: integral.h:49
    +
    invoke() and invoke traits implementation
    + +
    Concepts defines.
    +
    _utlConcept DerivedFrom
    Definition: stl.h:71
    + +
    _utlConcept EqualityComparableWith
    Definition: stl.h:599
    + +
    __cond_res< __copy_cv< T, U > &, __copy_cv< U, T > &> __lref_res
    Definition: stl.h:140
    +
    std::add_lvalue_reference_t< meta::invoke< __xref< T >, U > > apply
    Definition: stl.h:196
    +
    STL&#39;s core language concepts.
    Definition: _1wire.h:30
    +
    _utlConcept Predicate
    Definition: stl.h:759
    +
    _utlConcept MoveAssignable
    Definition: stl.h:356
    + + + +
    _utlConcept RegularInvocable
    Definition: stl.h:756
    +
    _utlConcept DefaultConstructible
    Definition: stl.h:444
    +
    _utlConcept CopyConstructible
    Definition: stl.h:459
    + +
    std::remove_cv_t< std::remove_reference_t< T > > remove_cvref_t
    Definition: stl.h:42
    +
    meta::eval< is_boolean_< B > > is_boolean_t
    Definition: stl.h:548
    +
    _utlConcept EqualityComparable
    Definition: stl.h:596
    +
    _utlConcept Integral
    Definition: stl.h:340
    +
    _utlConcept StrictTotallyOrderedWith
    Definition: stl.h:706
    +
    meta::eval< invoke_result< _Callable, _Args... > > invoke_result_t
    invoke_result_t (for C++14)
    Definition: invoke.h:180
    + +
    _utlConcept MoveConstructible
    Definition: stl.h:452
    + + +
    std::add_lvalue_reference_t< T > _ref_t
    Definition: stl.h:48
    +
    _utlConcept Movable
    Definition: stl.h:469
    +
    _utlConcept UnsignedIntegral
    Definition: stl.h:352
    +
    std::remove_reference_t< R > && __rref_res
    Definition: stl.h:144
    +
    meta::eval< common_reference< Ts... > > common_reference_t
    Definition: stl.h:227
    +
    _utlConcept Boolean
    Definition: stl.h:551
    +
    meta::invoke< __copy_cv_< From >, To > __copy_cv
    Definition: stl.h:119
    + +
    _utlConcept Regular
    Definition: stl.h:723
    +
    _utlConcept Constructible
    Definition: stl.h:438
    +
    meta::eval< is_weakly_equality_comparable_with_< T, U > > is_weakly_equality_comparable_with_t
    Definition: stl.h:578
    + + +
    typename Fn::template apply< Args... > invoke
    Definition: invoke.h:81
    +
    meta::eval< is_strict_totally_ordered_with_< T, U > > is_strict_totally_ordered_with_t
    Definition: stl.h:703
    + +
    void swap(array< _Tp, _Nm > &lhs, array< _Tp, _Nm > &rhs) noexcept(noexcept(lhs.swap(rhs)))
    Definition: array.h:214
    +
    meta::eval< basic_common_reference< remove_cvref_t< T >, remove_cvref_t< U >, __xref< T >::template apply, __xref< U >::template apply > > __basic_common_reference_t
    Definition: stl.h:219
    +
    _utlConcept Relation
    Definition: stl.h:764
    + +
    _utlConcept Arithmetic
    Definition: stl.h:736
    + +
    eval< detail::when_< If > > when
    Well formed only if If is true.
    Definition: sfinae.h:46
    + + +
    _utlConcept SignedIntegral
    Definition: stl.h:346
    +
    Implementation detail main forward header.
    + +
    std::is_invocable trait for C++11
    Definition: invoke.h:130
    +
    std::is_swappable_with is_swappable_with
    Definition: stl.h:408
    +
    +
    + + + + diff --git a/doc/html/struct_tmeta_basic_1_1_identity-members.html b/doc/html/struct_tmeta_basic_1_1_identity-members.html new file mode 100644 index 0000000..2784edc --- /dev/null +++ b/doc/html/struct_tmeta_basic_1_1_identity-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    TmetaBasic::Identity< T > Member List
    +
    +
    + +

    This is the complete list of members for TmetaBasic::Identity< T >, including all inherited members.

    + + +
    type typedefTmetaBasic::Identity< T >
    +
    + + + + diff --git a/doc/html/struct_tmeta_basic_1_1_identity.html b/doc/html/struct_tmeta_basic_1_1_identity.html new file mode 100644 index 0000000..e879db3 --- /dev/null +++ b/doc/html/struct_tmeta_basic_1_1_identity.html @@ -0,0 +1,142 @@ + + + + + + + +uTL: TmetaBasic::Identity< T > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    TmetaBasic::Identity< T > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = T
     
    +

    Detailed Description

    +

    template<class T>
    +struct TmetaBasic::Identity< T >

    + + +

    Definition at line 32 of file TmetaBasic.cpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class T >
    + + + + +
    using TmetaBasic::Identity< T >::type = T
    +
    + +

    Definition at line 33 of file TmetaBasic.cpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/struct_tmeta_basic_1_1_identity.js b/doc/html/struct_tmeta_basic_1_1_identity.js new file mode 100644 index 0000000..92db53f --- /dev/null +++ b/doc/html/struct_tmeta_basic_1_1_identity.js @@ -0,0 +1,4 @@ +var struct_tmeta_basic_1_1_identity = +[ + [ "type", "struct_tmeta_basic_1_1_identity.html#a9ab7e06acd9e4e822d8b925fd7749b5e", null ] +]; \ No newline at end of file diff --git a/doc/html/struct_tmeta_detection_1_1_a-members.html b/doc/html/struct_tmeta_detection_1_1_a-members.html new file mode 100644 index 0000000..977a7dc --- /dev/null +++ b/doc/html/struct_tmeta_detection_1_1_a-members.html @@ -0,0 +1,111 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    TmetaDetection::A< T > Member List
    +
    +
    + +

    This is the complete list of members for TmetaDetection::A< T >, including all inherited members.

    + + + + + +
    A(int i, double d)TmetaDetection::A< T >inline
    operator++()TmetaDetection::A< T >inline
    sfun()TmetaDetection::A< T >inline
    type typedefTmetaDetection::A< T >
    +
    + + + + diff --git a/doc/html/struct_tmeta_detection_1_1_a.html b/doc/html/struct_tmeta_detection_1_1_a.html new file mode 100644 index 0000000..2fe4366 --- /dev/null +++ b/doc/html/struct_tmeta_detection_1_1_a.html @@ -0,0 +1,255 @@ + + + + + + + +uTL: TmetaDetection::A< T > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    TmetaDetection::A< T > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = T
     
    + + + + + + + + +

    +Public Member Functions

     A (int i, double d)
     
    Aoperator++ ()
     
    template<typename TT = T, typename = when<std::is_integral<TT>::type::value>>
    TT sfun ()
     
    +

    Detailed Description

    +

    template<typename T>
    +struct TmetaDetection::A< T >

    + + +

    Definition at line 34 of file TmetaDetection.cpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename T >
    + + + + +
    using TmetaDetection::A< T >::type = T
    +
    + +

    Definition at line 35 of file TmetaDetection.cpp.

    + +
    +
    +

    Constructor & Destructor Documentation

    + +

    ◆ A()

    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    TmetaDetection::A< T >::A (int i,
    double d 
    )
    +
    +inline
    +
    + +

    Definition at line 36 of file TmetaDetection.cpp.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ operator++()

    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + +
    A& TmetaDetection::A< T >::operator++ ()
    +
    +inline
    +
    + +

    Definition at line 37 of file TmetaDetection.cpp.

    + +
    +
    + +

    ◆ sfun()

    + +
    +
    +
    +template<typename T >
    +
    +template<typename TT = T, typename = when<std::is_integral<TT>::type::value>>
    + + + + + +
    + + + + + + + +
    TT TmetaDetection::A< T >::sfun ()
    +
    +inline
    +
    + +

    Definition at line 41 of file TmetaDetection.cpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/struct_tmeta_detection_1_1_a.js b/doc/html/struct_tmeta_detection_1_1_a.js new file mode 100644 index 0000000..7aaeb5f --- /dev/null +++ b/doc/html/struct_tmeta_detection_1_1_a.js @@ -0,0 +1,7 @@ +var struct_tmeta_detection_1_1_a = +[ + [ "type", "struct_tmeta_detection_1_1_a.html#abb4c8bfc99b5eda5cf4022aebe3ce14c", null ], + [ "A", "struct_tmeta_detection_1_1_a.html#a370babd29cb6d649218312629232ca2e", null ], + [ "operator++", "struct_tmeta_detection_1_1_a.html#a8d9dcbc3f32ae8c0a881855f6a589e5a", null ], + [ "sfun", "struct_tmeta_detection_1_1_a.html#ada3b575458a82b475f0c11dc2187af3c", null ] +]; \ No newline at end of file diff --git a/doc/html/struct_tmeta_detection_1_1_bar.html b/doc/html/struct_tmeta_detection_1_1_bar.html new file mode 100644 index 0000000..c3c9576 --- /dev/null +++ b/doc/html/struct_tmeta_detection_1_1_bar.html @@ -0,0 +1,111 @@ + + + + + + + +uTL: TmetaDetection::Bar Struct Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    TmetaDetection::Bar Struct Reference
    +
    +
    +

    Detailed Description

    +
    +

    Definition at line 32 of file TmetaDetection.cpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/struct_tmeta_detection_1_1_foo.html b/doc/html/struct_tmeta_detection_1_1_foo.html new file mode 100644 index 0000000..2694cca --- /dev/null +++ b/doc/html/struct_tmeta_detection_1_1_foo.html @@ -0,0 +1,111 @@ + + + + + + + +uTL: TmetaDetection::Foo Struct Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    TmetaDetection::Foo Struct Reference
    +
    +
    +

    Detailed Description

    +
    +

    Definition at line 31 of file TmetaDetection.cpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/struct_tmeta_detection_1_1m_fun-members.html b/doc/html/struct_tmeta_detection_1_1m_fun-members.html new file mode 100644 index 0000000..c44626c --- /dev/null +++ b/doc/html/struct_tmeta_detection_1_1m_fun-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    TmetaDetection::mFun< T1, T2 > Member List
    +
    +
    + +

    This is the complete list of members for TmetaDetection::mFun< T1, T2 >, including all inherited members.

    + + +
    type typedefTmetaDetection::mFun< T1, T2 >
    +
    + + + + diff --git a/doc/html/struct_tmeta_detection_1_1m_fun.html b/doc/html/struct_tmeta_detection_1_1m_fun.html new file mode 100644 index 0000000..834efb4 --- /dev/null +++ b/doc/html/struct_tmeta_detection_1_1m_fun.html @@ -0,0 +1,142 @@ + + + + + + + +uTL: TmetaDetection::mFun< T1, T2 > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    TmetaDetection::mFun< T1, T2 > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = std::is_same< T1, T2 >
     
    +

    Detailed Description

    +

    template<typename T1, typename T2>
    +struct TmetaDetection::mFun< T1, T2 >

    + + +

    Definition at line 48 of file TmetaDetection.cpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename T1 , typename T2 >
    + + + + +
    using TmetaDetection::mFun< T1, T2 >::type = std::is_same <T1, T2>
    +
    + +

    Definition at line 49 of file TmetaDetection.cpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/struct_tmeta_detection_1_1m_fun.js b/doc/html/struct_tmeta_detection_1_1m_fun.js new file mode 100644 index 0000000..c1131ff --- /dev/null +++ b/doc/html/struct_tmeta_detection_1_1m_fun.js @@ -0,0 +1,4 @@ +var struct_tmeta_detection_1_1m_fun = +[ + [ "type", "struct_tmeta_detection_1_1m_fun.html#a27c6b961c5aad1b23c58d9809698489f", null ] +]; \ No newline at end of file diff --git a/doc/html/struct_tmeta_typelist_1_1_f.html b/doc/html/struct_tmeta_typelist_1_1_f.html new file mode 100644 index 0000000..7753873 --- /dev/null +++ b/doc/html/struct_tmeta_typelist_1_1_f.html @@ -0,0 +1,114 @@ + + + + + + + +uTL: TmetaTypelist::F< T1, T2 > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    TmetaTypelist::F< T1, T2 > Struct Template Reference
    +
    +
    +

    Detailed Description

    +

    template<class T1, class T2>
    +struct TmetaTypelist::F< T1, T2 >

    + + +

    Definition at line 193 of file TmetaTypelist.cpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/struct_tmeta_typelist_1_1_identity-members.html b/doc/html/struct_tmeta_typelist_1_1_identity-members.html new file mode 100644 index 0000000..3ab5555 --- /dev/null +++ b/doc/html/struct_tmeta_typelist_1_1_identity-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    TmetaTypelist::Identity< T > Member List
    +
    +
    + +

    This is the complete list of members for TmetaTypelist::Identity< T >, including all inherited members.

    + + +
    type typedefTmetaTypelist::Identity< T >
    +
    + + + + diff --git a/doc/html/struct_tmeta_typelist_1_1_identity.html b/doc/html/struct_tmeta_typelist_1_1_identity.html new file mode 100644 index 0000000..ce868c7 --- /dev/null +++ b/doc/html/struct_tmeta_typelist_1_1_identity.html @@ -0,0 +1,142 @@ + + + + + + + +uTL: TmetaTypelist::Identity< T > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    TmetaTypelist::Identity< T > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = T
     
    +

    Detailed Description

    +

    template<class T>
    +struct TmetaTypelist::Identity< T >

    + + +

    Definition at line 32 of file TmetaTypelist.cpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class T >
    + + + + +
    using TmetaTypelist::Identity< T >::type = T
    +
    + +

    Definition at line 33 of file TmetaTypelist.cpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/struct_tmeta_typelist_1_1_identity.js b/doc/html/struct_tmeta_typelist_1_1_identity.js new file mode 100644 index 0000000..eb626d4 --- /dev/null +++ b/doc/html/struct_tmeta_typelist_1_1_identity.js @@ -0,0 +1,4 @@ +var struct_tmeta_typelist_1_1_identity = +[ + [ "type", "struct_tmeta_typelist_1_1_identity.html#a8d5ff8e95ed09810df25c535a3f01d60", null ] +]; \ No newline at end of file diff --git a/doc/html/struct_tmeta_typelist_1_1_mfun_bin-members.html b/doc/html/struct_tmeta_typelist_1_1_mfun_bin-members.html new file mode 100644 index 0000000..7d81b87 --- /dev/null +++ b/doc/html/struct_tmeta_typelist_1_1_mfun_bin-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    TmetaTypelist::MfunBin< T1, T2 > Member List
    +
    +
    + +

    This is the complete list of members for TmetaTypelist::MfunBin< T1, T2 >, including all inherited members.

    + + +
    type typedefTmetaTypelist::MfunBin< T1, T2 >
    +
    + + + + diff --git a/doc/html/struct_tmeta_typelist_1_1_mfun_bin.html b/doc/html/struct_tmeta_typelist_1_1_mfun_bin.html new file mode 100644 index 0000000..c31888f --- /dev/null +++ b/doc/html/struct_tmeta_typelist_1_1_mfun_bin.html @@ -0,0 +1,142 @@ + + + + + + + +uTL: TmetaTypelist::MfunBin< T1, T2 > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    TmetaTypelist::MfunBin< T1, T2 > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = int
     
    +

    Detailed Description

    +

    template<class T1, class T2>
    +struct TmetaTypelist::MfunBin< T1, T2 >

    + + +

    Definition at line 35 of file TmetaTypelist.cpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class T1 , class T2 >
    + + + + +
    using TmetaTypelist::MfunBin< T1, T2 >::type = int
    +
    + +

    Definition at line 36 of file TmetaTypelist.cpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/struct_tmeta_typelist_1_1_mfun_bin.js b/doc/html/struct_tmeta_typelist_1_1_mfun_bin.js new file mode 100644 index 0000000..2df2afa --- /dev/null +++ b/doc/html/struct_tmeta_typelist_1_1_mfun_bin.js @@ -0,0 +1,4 @@ +var struct_tmeta_typelist_1_1_mfun_bin = +[ + [ "type", "struct_tmeta_typelist_1_1_mfun_bin.html#a35734082fbcbd3494f9ee57d54d1254c", null ] +]; \ No newline at end of file diff --git a/doc/html/struct_tmeta_typelist_1_1_mfun_bin__i-members.html b/doc/html/struct_tmeta_typelist_1_1_mfun_bin__i-members.html new file mode 100644 index 0000000..e22b2ec --- /dev/null +++ b/doc/html/struct_tmeta_typelist_1_1_mfun_bin__i-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    TmetaTypelist::MfunBin_i< a, b > Member List
    +
    +
    + +

    This is the complete list of members for TmetaTypelist::MfunBin_i< a, b >, including all inherited members.

    + + +
    type typedefTmetaTypelist::MfunBin_i< a, b >
    +
    + + + + diff --git a/doc/html/struct_tmeta_typelist_1_1_mfun_bin__i.html b/doc/html/struct_tmeta_typelist_1_1_mfun_bin__i.html new file mode 100644 index 0000000..bbcc5ee --- /dev/null +++ b/doc/html/struct_tmeta_typelist_1_1_mfun_bin__i.html @@ -0,0 +1,142 @@ + + + + + + + +uTL: TmetaTypelist::MfunBin_i< a, b > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    TmetaTypelist::MfunBin_i< a, b > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = int
     
    +

    Detailed Description

    +

    template<int a, int b>
    +struct TmetaTypelist::MfunBin_i< a, b >

    + + +

    Definition at line 38 of file TmetaTypelist.cpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<int a, int b>
    + + + + +
    using TmetaTypelist::MfunBin_i< a, b >::type = int
    +
    + +

    Definition at line 39 of file TmetaTypelist.cpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/struct_tmeta_typelist_1_1_mfun_bin__i.js b/doc/html/struct_tmeta_typelist_1_1_mfun_bin__i.js new file mode 100644 index 0000000..642f9dd --- /dev/null +++ b/doc/html/struct_tmeta_typelist_1_1_mfun_bin__i.js @@ -0,0 +1,4 @@ +var struct_tmeta_typelist_1_1_mfun_bin__i = +[ + [ "type", "struct_tmeta_typelist_1_1_mfun_bin__i.html#acb696c030e1a438da62e7972e8545d88", null ] +]; \ No newline at end of file diff --git a/doc/html/struct_tmeta_typelist_1_1_mfun_un1-members.html b/doc/html/struct_tmeta_typelist_1_1_mfun_un1-members.html new file mode 100644 index 0000000..482a95d --- /dev/null +++ b/doc/html/struct_tmeta_typelist_1_1_mfun_un1-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    TmetaTypelist::MfunUn1< T1 > Member List
    +
    +
    + +

    This is the complete list of members for TmetaTypelist::MfunUn1< T1 >, including all inherited members.

    + + +
    type typedefTmetaTypelist::MfunUn1< T1 >
    +
    + + + + diff --git a/doc/html/struct_tmeta_typelist_1_1_mfun_un1.html b/doc/html/struct_tmeta_typelist_1_1_mfun_un1.html new file mode 100644 index 0000000..809f817 --- /dev/null +++ b/doc/html/struct_tmeta_typelist_1_1_mfun_un1.html @@ -0,0 +1,142 @@ + + + + + + + +uTL: TmetaTypelist::MfunUn1< T1 > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    TmetaTypelist::MfunUn1< T1 > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = int
     
    +

    Detailed Description

    +

    template<class T1>
    +struct TmetaTypelist::MfunUn1< T1 >

    + + +

    Definition at line 41 of file TmetaTypelist.cpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class T1 >
    + + + + +
    using TmetaTypelist::MfunUn1< T1 >::type = int
    +
    + +

    Definition at line 42 of file TmetaTypelist.cpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/struct_tmeta_typelist_1_1_mfun_un1.js b/doc/html/struct_tmeta_typelist_1_1_mfun_un1.js new file mode 100644 index 0000000..f79fe8e --- /dev/null +++ b/doc/html/struct_tmeta_typelist_1_1_mfun_un1.js @@ -0,0 +1,4 @@ +var struct_tmeta_typelist_1_1_mfun_un1 = +[ + [ "type", "struct_tmeta_typelist_1_1_mfun_un1.html#a34236e5007f9095ab4ad0f7934cc6181", null ] +]; \ No newline at end of file diff --git a/doc/html/struct_tmeta_typelist_1_1_mfun_un2-members.html b/doc/html/struct_tmeta_typelist_1_1_mfun_un2-members.html new file mode 100644 index 0000000..ee98f95 --- /dev/null +++ b/doc/html/struct_tmeta_typelist_1_1_mfun_un2-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    TmetaTypelist::MfunUn2< T1 > Member List
    +
    +
    + +

    This is the complete list of members for TmetaTypelist::MfunUn2< T1 >, including all inherited members.

    + + +
    type typedefTmetaTypelist::MfunUn2< T1 >
    +
    + + + + diff --git a/doc/html/struct_tmeta_typelist_1_1_mfun_un2.html b/doc/html/struct_tmeta_typelist_1_1_mfun_un2.html new file mode 100644 index 0000000..456b43a --- /dev/null +++ b/doc/html/struct_tmeta_typelist_1_1_mfun_un2.html @@ -0,0 +1,142 @@ + + + + + + + +uTL: TmetaTypelist::MfunUn2< T1 > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    TmetaTypelist::MfunUn2< T1 > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = int
     
    +

    Detailed Description

    +

    template<class T1>
    +struct TmetaTypelist::MfunUn2< T1 >

    + + +

    Definition at line 44 of file TmetaTypelist.cpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class T1 >
    + + + + +
    using TmetaTypelist::MfunUn2< T1 >::type = int
    +
    + +

    Definition at line 45 of file TmetaTypelist.cpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/struct_tmeta_typelist_1_1_mfun_un2.js b/doc/html/struct_tmeta_typelist_1_1_mfun_un2.js new file mode 100644 index 0000000..3b3b63e --- /dev/null +++ b/doc/html/struct_tmeta_typelist_1_1_mfun_un2.js @@ -0,0 +1,4 @@ +var struct_tmeta_typelist_1_1_mfun_un2 = +[ + [ "type", "struct_tmeta_typelist_1_1_mfun_un2.html#a9573455d6a3878f2b8a900f8a8dca2f8", null ] +]; \ No newline at end of file diff --git a/doc/html/struct_tmeta_typelist_1_1_pred__is_int-members.html b/doc/html/struct_tmeta_typelist_1_1_pred__is_int-members.html new file mode 100644 index 0000000..7e025ea --- /dev/null +++ b/doc/html/struct_tmeta_typelist_1_1_pred__is_int-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    TmetaTypelist::Pred_isInt< T > Member List
    +
    +
    + +

    This is the complete list of members for TmetaTypelist::Pred_isInt< T >, including all inherited members.

    + + +
    type typedefTmetaTypelist::Pred_isInt< T >
    +
    + + + + diff --git a/doc/html/struct_tmeta_typelist_1_1_pred__is_int.html b/doc/html/struct_tmeta_typelist_1_1_pred__is_int.html new file mode 100644 index 0000000..7c11fdc --- /dev/null +++ b/doc/html/struct_tmeta_typelist_1_1_pred__is_int.html @@ -0,0 +1,142 @@ + + + + + + + +uTL: TmetaTypelist::Pred_isInt< T > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    TmetaTypelist::Pred_isInt< T > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = std::is_integral< T >
     
    +

    Detailed Description

    +

    template<typename T>
    +struct TmetaTypelist::Pred_isInt< T >

    + + +

    Definition at line 48 of file TmetaTypelist.cpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename T >
    + + + + +
    using TmetaTypelist::Pred_isInt< T >::type = std::is_integral<T>
    +
    + +

    Definition at line 49 of file TmetaTypelist.cpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/struct_tmeta_typelist_1_1_pred__is_int.js b/doc/html/struct_tmeta_typelist_1_1_pred__is_int.js new file mode 100644 index 0000000..2fe351c --- /dev/null +++ b/doc/html/struct_tmeta_typelist_1_1_pred__is_int.js @@ -0,0 +1,4 @@ +var struct_tmeta_typelist_1_1_pred__is_int = +[ + [ "type", "struct_tmeta_typelist_1_1_pred__is_int.html#aa747f96578f9bdd93d9614f917da53b4", null ] +]; \ No newline at end of file diff --git a/doc/html/struct_tmeta_typelist_1_1_pred__is_void-members.html b/doc/html/struct_tmeta_typelist_1_1_pred__is_void-members.html new file mode 100644 index 0000000..1442733 --- /dev/null +++ b/doc/html/struct_tmeta_typelist_1_1_pred__is_void-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    TmetaTypelist::Pred_isVoid< T > Member List
    +
    +
    + +

    This is the complete list of members for TmetaTypelist::Pred_isVoid< T >, including all inherited members.

    + + +
    type typedefTmetaTypelist::Pred_isVoid< T >
    +
    + + + + diff --git a/doc/html/struct_tmeta_typelist_1_1_pred__is_void.html b/doc/html/struct_tmeta_typelist_1_1_pred__is_void.html new file mode 100644 index 0000000..bbce186 --- /dev/null +++ b/doc/html/struct_tmeta_typelist_1_1_pred__is_void.html @@ -0,0 +1,142 @@ + + + + + + + +uTL: TmetaTypelist::Pred_isVoid< T > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    TmetaTypelist::Pred_isVoid< T > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = std::is_void< T >
     
    +

    Detailed Description

    +

    template<typename T>
    +struct TmetaTypelist::Pred_isVoid< T >

    + + +

    Definition at line 52 of file TmetaTypelist.cpp.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename T >
    + + + + +
    using TmetaTypelist::Pred_isVoid< T >::type = std::is_void<T>
    +
    + +

    Definition at line 53 of file TmetaTypelist.cpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/struct_tmeta_typelist_1_1_pred__is_void.js b/doc/html/struct_tmeta_typelist_1_1_pred__is_void.js new file mode 100644 index 0000000..95ef145 --- /dev/null +++ b/doc/html/struct_tmeta_typelist_1_1_pred__is_void.js @@ -0,0 +1,4 @@ +var struct_tmeta_typelist_1_1_pred__is_void = +[ + [ "type", "struct_tmeta_typelist_1_1_pred__is_void.html#a94fdd3de588a464307c4683cfc386708", null ] +]; \ No newline at end of file diff --git a/doc/html/structtest__concepts_1_1_a-members.html b/doc/html/structtest__concepts_1_1_a-members.html new file mode 100644 index 0000000..064d495 --- /dev/null +++ b/doc/html/structtest__concepts_1_1_a-members.html @@ -0,0 +1,111 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    test_concepts::A Member List
    +
    +
    + +

    This is the complete list of members for test_concepts::A, including all inherited members.

    + + + + + +
    A(int a=0)test_concepts::Ainline
    A(const A &)=defaulttest_concepts::A
    A(A &&)=defaulttest_concepts::A
    a_test_concepts::A
    +
    + + + + diff --git a/doc/html/structtest__concepts_1_1_a.html b/doc/html/structtest__concepts_1_1_a.html new file mode 100644 index 0000000..812a045 --- /dev/null +++ b/doc/html/structtest__concepts_1_1_a.html @@ -0,0 +1,228 @@ + + + + + + + +uTL: test_concepts::A Struct Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    test_concepts::A Struct Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

     A (int a=0)
     
     A (const A &)=default
     
     A (A &&)=default
     
    + + + +

    +Public Attributes

    int a_
     
    +

    Detailed Description

    +
    +

    Definition at line 62 of file TConcepts.cpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ A() [1/3]

    + +
    +
    + + + + + +
    + + + + + + + + +
    test_concepts::A::A (int a = 0)
    +
    +inline
    +
    + +

    Definition at line 65 of file TConcepts.cpp.

    + +
    +
    + +

    ◆ A() [2/3]

    + +
    +
    + + + + + +
    + + + + + + + + +
    test_concepts::A::A (const A)
    +
    +default
    +
    + +
    +
    + +

    ◆ A() [3/3]

    + +
    +
    + + + + + +
    + + + + + + + + +
    test_concepts::A::A (A && )
    +
    +default
    +
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ a_

    + +
    +
    + + + + +
    int test_concepts::A::a_
    +
    + +

    Definition at line 63 of file TConcepts.cpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structtest__concepts_1_1_a.js b/doc/html/structtest__concepts_1_1_a.js new file mode 100644 index 0000000..d5d1ebb --- /dev/null +++ b/doc/html/structtest__concepts_1_1_a.js @@ -0,0 +1,7 @@ +var structtest__concepts_1_1_a = +[ + [ "A", "structtest__concepts_1_1_a.html#aef6f3f3d17d29e347b2dcfa5f85d7357", null ], + [ "A", "structtest__concepts_1_1_a.html#ac329b6178993104585d0b4078443dbb0", null ], + [ "A", "structtest__concepts_1_1_a.html#aba6f04a66e943f55c973abca59a28d55", null ], + [ "a_", "structtest__concepts_1_1_a.html#a362094ae51a62bafa1e30538e9289115", null ] +]; \ No newline at end of file diff --git a/doc/html/structtest__concepts_1_1_b-members.html b/doc/html/structtest__concepts_1_1_b-members.html new file mode 100644 index 0000000..1403457 --- /dev/null +++ b/doc/html/structtest__concepts_1_1_b-members.html @@ -0,0 +1,113 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    test_concepts::B Member List
    +
    +
    + +

    This is the complete list of members for test_concepts::B, including all inherited members.

    + + + + + + + +
    B(int b=0)test_concepts::Binline
    B(const B &)=defaulttest_concepts::B
    B(B &&)=defaulttest_concepts::B
    b_test_concepts::B
    operator=(const B &)=defaulttest_concepts::B
    operator=(B &&)=defaulttest_concepts::B
    +
    + + + + diff --git a/doc/html/structtest__concepts_1_1_b.html b/doc/html/structtest__concepts_1_1_b.html new file mode 100644 index 0000000..9470eec --- /dev/null +++ b/doc/html/structtest__concepts_1_1_b.html @@ -0,0 +1,285 @@ + + + + + + + +uTL: test_concepts::B Struct Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    test_concepts::B Struct Reference
    +
    +
    + + + + + + + + + + + + +

    +Public Member Functions

     B (int b=0)
     
     B (const B &)=default
     
     B (B &&)=default
     
    Boperator= (const B &)=default
     
    Boperator= (B &&)=default
     
    + + + +

    +Public Attributes

    int b_
     
    +

    Detailed Description

    +
    +

    Definition at line 72 of file TConcepts.cpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ B() [1/3]

    + +
    +
    + + + + + +
    + + + + + + + + +
    test_concepts::B::B (int b = 0)
    +
    +inline
    +
    + +

    Definition at line 75 of file TConcepts.cpp.

    + +
    +
    + +

    ◆ B() [2/3]

    + +
    +
    + + + + + +
    + + + + + + + + +
    test_concepts::B::B (const B)
    +
    +default
    +
    + +
    +
    + +

    ◆ B() [3/3]

    + +
    +
    + + + + + +
    + + + + + + + + +
    test_concepts::B::B (B && )
    +
    +default
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ operator=() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    B& test_concepts::B::operator= (const B)
    +
    +default
    +
    + +
    +
    + +

    ◆ operator=() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    B& test_concepts::B::operator= (B && )
    +
    +default
    +
    + +
    +
    +

    Member Data Documentation

    + +

    ◆ b_

    + +
    +
    + + + + +
    int test_concepts::B::b_
    +
    + +

    Definition at line 73 of file TConcepts.cpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structtest__concepts_1_1_b.js b/doc/html/structtest__concepts_1_1_b.js new file mode 100644 index 0000000..85d1f76 --- /dev/null +++ b/doc/html/structtest__concepts_1_1_b.js @@ -0,0 +1,9 @@ +var structtest__concepts_1_1_b = +[ + [ "B", "structtest__concepts_1_1_b.html#a3dbd72f4bae630407c91619fb617b36b", null ], + [ "B", "structtest__concepts_1_1_b.html#ab10395b4e6974d633bac8a0412df9fe6", null ], + [ "B", "structtest__concepts_1_1_b.html#ad0eb3cde8a3046f2d2f256aee1bcd3be", null ], + [ "operator=", "structtest__concepts_1_1_b.html#a448f5cc4e3f714b84ff4ae3ac52b0aba", null ], + [ "operator=", "structtest__concepts_1_1_b.html#a275c244ada6534beff83a21b31a2c7a5", null ], + [ "b_", "structtest__concepts_1_1_b.html#a353f206f1add4707cbf7c6bbb2636686", null ] +]; \ No newline at end of file diff --git a/doc/html/structtest__concepts_1_1_empty.html b/doc/html/structtest__concepts_1_1_empty.html new file mode 100644 index 0000000..f67d712 --- /dev/null +++ b/doc/html/structtest__concepts_1_1_empty.html @@ -0,0 +1,111 @@ + + + + + + + +uTL: test_concepts::Empty Struct Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    test_concepts::Empty Struct Reference
    +
    +
    +

    Detailed Description

    +
    +

    Definition at line 31 of file TConcepts.cpp.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structtest__concepts_1_1_have_copy_and_move-members.html b/doc/html/structtest__concepts_1_1_have_copy_and_move-members.html new file mode 100644 index 0000000..8c561d8 --- /dev/null +++ b/doc/html/structtest__concepts_1_1_have_copy_and_move-members.html @@ -0,0 +1,111 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    test_concepts::HaveCopyAndMove Member List
    +
    +
    + +

    This is the complete list of members for test_concepts::HaveCopyAndMove, including all inherited members.

    + + + + + +
    HaveCopyAndMove(const HaveCopyAndMove &)=defaulttest_concepts::HaveCopyAndMove
    HaveCopyAndMove(HaveCopyAndMove &&)=defaulttest_concepts::HaveCopyAndMove
    operator=(const HaveCopyAndMove &)=defaulttest_concepts::HaveCopyAndMove
    operator=(HaveCopyAndMove &&)=defaulttest_concepts::HaveCopyAndMove
    +
    + + + + diff --git a/doc/html/structtest__concepts_1_1_have_copy_and_move.html b/doc/html/structtest__concepts_1_1_have_copy_and_move.html new file mode 100644 index 0000000..570d231 --- /dev/null +++ b/doc/html/structtest__concepts_1_1_have_copy_and_move.html @@ -0,0 +1,232 @@ + + + + + + + +uTL: test_concepts::HaveCopyAndMove Struct Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    test_concepts::HaveCopyAndMove Struct Reference
    +
    +
    + + + + + + + + + + +

    +Public Member Functions

     HaveCopyAndMove (const HaveCopyAndMove &)=default
     
     HaveCopyAndMove (HaveCopyAndMove &&)=default
     
    HaveCopyAndMoveoperator= (const HaveCopyAndMove &)=default
     
    HaveCopyAndMoveoperator= (HaveCopyAndMove &&)=default
     
    +

    Detailed Description

    +
    +

    Definition at line 44 of file TConcepts.cpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ HaveCopyAndMove() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    test_concepts::HaveCopyAndMove::HaveCopyAndMove (const HaveCopyAndMove)
    +
    +default
    +
    + +
    +
    + +

    ◆ HaveCopyAndMove() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    test_concepts::HaveCopyAndMove::HaveCopyAndMove (HaveCopyAndMove && )
    +
    +default
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ operator=() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    HaveCopyAndMove& test_concepts::HaveCopyAndMove::operator= (const HaveCopyAndMove)
    +
    +default
    +
    + +
    +
    + +

    ◆ operator=() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    HaveCopyAndMove& test_concepts::HaveCopyAndMove::operator= (HaveCopyAndMove && )
    +
    +default
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structtest__concepts_1_1_have_copy_and_move.js b/doc/html/structtest__concepts_1_1_have_copy_and_move.js new file mode 100644 index 0000000..a991ceb --- /dev/null +++ b/doc/html/structtest__concepts_1_1_have_copy_and_move.js @@ -0,0 +1,7 @@ +var structtest__concepts_1_1_have_copy_and_move = +[ + [ "HaveCopyAndMove", "structtest__concepts_1_1_have_copy_and_move.html#a09658b6e67212daef556c1316a576ece", null ], + [ "HaveCopyAndMove", "structtest__concepts_1_1_have_copy_and_move.html#a1a96ca3715809096cd84cb4ef7139549", null ], + [ "operator=", "structtest__concepts_1_1_have_copy_and_move.html#af57925d4cd3ac1049566548d01ef962d", null ], + [ "operator=", "structtest__concepts_1_1_have_copy_and_move.html#adec7534ded23d293c3926fa4ead5680a", null ] +]; \ No newline at end of file diff --git a/doc/html/structtest__concepts_1_1_have_only_copy-members.html b/doc/html/structtest__concepts_1_1_have_only_copy-members.html new file mode 100644 index 0000000..7ffceab --- /dev/null +++ b/doc/html/structtest__concepts_1_1_have_only_copy-members.html @@ -0,0 +1,111 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    test_concepts::HaveOnlyCopy Member List
    +
    +
    + +

    This is the complete list of members for test_concepts::HaveOnlyCopy, including all inherited members.

    + + + + + +
    HaveOnlyCopy(const HaveOnlyCopy &)=defaulttest_concepts::HaveOnlyCopy
    HaveOnlyCopy(HaveOnlyCopy &&)=deletetest_concepts::HaveOnlyCopy
    operator=(const HaveOnlyCopy &)=defaulttest_concepts::HaveOnlyCopy
    operator=(HaveOnlyCopy &&)=deletetest_concepts::HaveOnlyCopy
    +
    + + + + diff --git a/doc/html/structtest__concepts_1_1_have_only_copy.html b/doc/html/structtest__concepts_1_1_have_only_copy.html new file mode 100644 index 0000000..1055939 --- /dev/null +++ b/doc/html/structtest__concepts_1_1_have_only_copy.html @@ -0,0 +1,232 @@ + + + + + + + +uTL: test_concepts::HaveOnlyCopy Struct Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    test_concepts::HaveOnlyCopy Struct Reference
    +
    +
    + + + + + + + + + + +

    +Public Member Functions

     HaveOnlyCopy (const HaveOnlyCopy &)=default
     
     HaveOnlyCopy (HaveOnlyCopy &&)=delete
     
    HaveOnlyCopyoperator= (const HaveOnlyCopy &)=default
     
    HaveOnlyCopyoperator= (HaveOnlyCopy &&)=delete
     
    +

    Detailed Description

    +
    +

    Definition at line 32 of file TConcepts.cpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ HaveOnlyCopy() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    test_concepts::HaveOnlyCopy::HaveOnlyCopy (const HaveOnlyCopy)
    +
    +default
    +
    + +
    +
    + +

    ◆ HaveOnlyCopy() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    test_concepts::HaveOnlyCopy::HaveOnlyCopy (HaveOnlyCopy && )
    +
    +delete
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ operator=() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    HaveOnlyCopy& test_concepts::HaveOnlyCopy::operator= (const HaveOnlyCopy)
    +
    +default
    +
    + +
    +
    + +

    ◆ operator=() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    HaveOnlyCopy& test_concepts::HaveOnlyCopy::operator= (HaveOnlyCopy && )
    +
    +delete
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structtest__concepts_1_1_have_only_copy.js b/doc/html/structtest__concepts_1_1_have_only_copy.js new file mode 100644 index 0000000..fb8b63b --- /dev/null +++ b/doc/html/structtest__concepts_1_1_have_only_copy.js @@ -0,0 +1,7 @@ +var structtest__concepts_1_1_have_only_copy = +[ + [ "HaveOnlyCopy", "structtest__concepts_1_1_have_only_copy.html#a8f3b6c73ec90983639343bd0052b27dc", null ], + [ "HaveOnlyCopy", "structtest__concepts_1_1_have_only_copy.html#a58cb944b280005e00c903bea1ebe4184", null ], + [ "operator=", "structtest__concepts_1_1_have_only_copy.html#a0e12eb47333846c1726d8ac52768e086", null ], + [ "operator=", "structtest__concepts_1_1_have_only_copy.html#a28535890574b8d58255a574481860e4b", null ] +]; \ No newline at end of file diff --git a/doc/html/structtest__concepts_1_1_have_only_move-members.html b/doc/html/structtest__concepts_1_1_have_only_move-members.html new file mode 100644 index 0000000..e035637 --- /dev/null +++ b/doc/html/structtest__concepts_1_1_have_only_move-members.html @@ -0,0 +1,111 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    test_concepts::HaveOnlyMove Member List
    +
    +
    + +

    This is the complete list of members for test_concepts::HaveOnlyMove, including all inherited members.

    + + + + + +
    HaveOnlyMove(const HaveOnlyMove &)=deletetest_concepts::HaveOnlyMove
    HaveOnlyMove(HaveOnlyMove &&)=defaulttest_concepts::HaveOnlyMove
    operator=(const HaveOnlyMove &)=deletetest_concepts::HaveOnlyMove
    operator=(HaveOnlyMove &&)=defaulttest_concepts::HaveOnlyMove
    +
    + + + + diff --git a/doc/html/structtest__concepts_1_1_have_only_move.html b/doc/html/structtest__concepts_1_1_have_only_move.html new file mode 100644 index 0000000..171f234 --- /dev/null +++ b/doc/html/structtest__concepts_1_1_have_only_move.html @@ -0,0 +1,232 @@ + + + + + + + +uTL: test_concepts::HaveOnlyMove Struct Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    test_concepts::HaveOnlyMove Struct Reference
    +
    +
    + + + + + + + + + + +

    +Public Member Functions

     HaveOnlyMove (const HaveOnlyMove &)=delete
     
     HaveOnlyMove (HaveOnlyMove &&)=default
     
    HaveOnlyMoveoperator= (const HaveOnlyMove &)=delete
     
    HaveOnlyMoveoperator= (HaveOnlyMove &&)=default
     
    +

    Detailed Description

    +
    +

    Definition at line 38 of file TConcepts.cpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ HaveOnlyMove() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    test_concepts::HaveOnlyMove::HaveOnlyMove (const HaveOnlyMove)
    +
    +delete
    +
    + +
    +
    + +

    ◆ HaveOnlyMove() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    test_concepts::HaveOnlyMove::HaveOnlyMove (HaveOnlyMove && )
    +
    +default
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ operator=() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    HaveOnlyMove& test_concepts::HaveOnlyMove::operator= (const HaveOnlyMove)
    +
    +delete
    +
    + +
    +
    + +

    ◆ operator=() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    HaveOnlyMove& test_concepts::HaveOnlyMove::operator= (HaveOnlyMove && )
    +
    +default
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structtest__concepts_1_1_have_only_move.js b/doc/html/structtest__concepts_1_1_have_only_move.js new file mode 100644 index 0000000..384751c --- /dev/null +++ b/doc/html/structtest__concepts_1_1_have_only_move.js @@ -0,0 +1,7 @@ +var structtest__concepts_1_1_have_only_move = +[ + [ "HaveOnlyMove", "structtest__concepts_1_1_have_only_move.html#a898d69d83a3866bc116bda321000436c", null ], + [ "HaveOnlyMove", "structtest__concepts_1_1_have_only_move.html#a20d36cfe0cedc4bfa8a567cafaa378ea", null ], + [ "operator=", "structtest__concepts_1_1_have_only_move.html#ab1c8ccd231973a2a043cb66035839fd9", null ], + [ "operator=", "structtest__concepts_1_1_have_only_move.html#a5d43196f89ea807f2de5b5725dc42da6", null ] +]; \ No newline at end of file diff --git a/doc/html/structtest__concepts_1_1_incr-members.html b/doc/html/structtest__concepts_1_1_incr-members.html new file mode 100644 index 0000000..338bc95 --- /dev/null +++ b/doc/html/structtest__concepts_1_1_incr-members.html @@ -0,0 +1,109 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    test_concepts::Incr Member List
    +
    +
    + +

    This is the complete list of members for test_concepts::Incr, including all inherited members.

    + + + +
    operator++()test_concepts::Incrinline
    operator++(int)test_concepts::Incrinline
    +
    + + + + diff --git a/doc/html/structtest__concepts_1_1_incr.html b/doc/html/structtest__concepts_1_1_incr.html new file mode 100644 index 0000000..c4a377c --- /dev/null +++ b/doc/html/structtest__concepts_1_1_incr.html @@ -0,0 +1,178 @@ + + + + + + + +uTL: test_concepts::Incr Struct Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    test_concepts::Incr Struct Reference
    +
    +
    + + + + + + +

    +Public Member Functions

    Incroperator++ ()
     
    Incr operator++ (int)
     
    +

    Detailed Description

    +
    +

    Definition at line 405 of file TConcepts.cpp.

    +

    Member Function Documentation

    + +

    ◆ operator++() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + +
    Incr& test_concepts::Incr::operator++ ()
    +
    +inline
    +
    + +

    Definition at line 406 of file TConcepts.cpp.

    + +
    +
    + +

    ◆ operator++() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    Incr test_concepts::Incr::operator++ (int )
    +
    +inline
    +
    + +

    Definition at line 407 of file TConcepts.cpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structtest__concepts_1_1_incr.js b/doc/html/structtest__concepts_1_1_incr.js new file mode 100644 index 0000000..d287b73 --- /dev/null +++ b/doc/html/structtest__concepts_1_1_incr.js @@ -0,0 +1,5 @@ +var structtest__concepts_1_1_incr = +[ + [ "operator++", "structtest__concepts_1_1_incr.html#abae843908ab62034a1d2a97eb4f617e8", null ], + [ "operator++", "structtest__concepts_1_1_incr.html#a9627c856660e2333af05e3b3154f63b5", null ] +]; \ No newline at end of file diff --git a/doc/html/structtest__concepts_1_1_inv-members.html b/doc/html/structtest__concepts_1_1_inv-members.html new file mode 100644 index 0000000..e1c9c1c --- /dev/null +++ b/doc/html/structtest__concepts_1_1_inv-members.html @@ -0,0 +1,109 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    test_concepts::Inv Member List
    +
    +
    + +

    This is the complete list of members for test_concepts::Inv, including all inherited members.

    + + + +
    operator()(int)test_concepts::Invinline
    operator()()test_concepts::Invinline
    +
    + + + + diff --git a/doc/html/structtest__concepts_1_1_inv.html b/doc/html/structtest__concepts_1_1_inv.html new file mode 100644 index 0000000..9290222 --- /dev/null +++ b/doc/html/structtest__concepts_1_1_inv.html @@ -0,0 +1,178 @@ + + + + + + + +uTL: test_concepts::Inv Struct Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    test_concepts::Inv Struct Reference
    +
    +
    + + + + + + +

    +Public Member Functions

    void operator() (int)
     
    void operator() ()
     
    +

    Detailed Description

    +
    +

    Definition at line 377 of file TConcepts.cpp.

    +

    Member Function Documentation

    + +

    ◆ operator()() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    void test_concepts::Inv::operator() (int )
    +
    +inline
    +
    + +

    Definition at line 378 of file TConcepts.cpp.

    + +
    +
    + +

    ◆ operator()() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + +
    void test_concepts::Inv::operator() ()
    +
    +inline
    +
    + +

    Definition at line 379 of file TConcepts.cpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structtest__concepts_1_1_inv.js b/doc/html/structtest__concepts_1_1_inv.js new file mode 100644 index 0000000..c974d5a --- /dev/null +++ b/doc/html/structtest__concepts_1_1_inv.js @@ -0,0 +1,5 @@ +var structtest__concepts_1_1_inv = +[ + [ "operator()", "structtest__concepts_1_1_inv.html#a48577007f9d0d2958252cb3e8da5e765", null ], + [ "operator()", "structtest__concepts_1_1_inv.html#ac8c7c5074842856b9542f2e0828b2be4", null ] +]; \ No newline at end of file diff --git a/doc/html/structtest__concepts_1_1_pred-members.html b/doc/html/structtest__concepts_1_1_pred-members.html new file mode 100644 index 0000000..f780e4f --- /dev/null +++ b/doc/html/structtest__concepts_1_1_pred-members.html @@ -0,0 +1,109 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    test_concepts::Pred Member List
    +
    +
    + +

    This is the complete list of members for test_concepts::Pred, including all inherited members.

    + + + +
    operator()(int)test_concepts::Predinline
    operator()(int, int)test_concepts::Predinline
    +
    + + + + diff --git a/doc/html/structtest__concepts_1_1_pred.html b/doc/html/structtest__concepts_1_1_pred.html new file mode 100644 index 0000000..b27eb90 --- /dev/null +++ b/doc/html/structtest__concepts_1_1_pred.html @@ -0,0 +1,189 @@ + + + + + + + +uTL: test_concepts::Pred Struct Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    test_concepts::Pred Struct Reference
    +
    +
    + + + + + + +

    +Public Member Functions

    bool operator() (int)
     
    bool operator() (int, int)
     
    +

    Detailed Description

    +
    +

    Definition at line 381 of file TConcepts.cpp.

    +

    Member Function Documentation

    + +

    ◆ operator()() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    bool test_concepts::Pred::operator() (int )
    +
    +inline
    +
    + +

    Definition at line 382 of file TConcepts.cpp.

    + +
    +
    + +

    ◆ operator()() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    bool test_concepts::Pred::operator() (int ,
    int  
    )
    +
    +inline
    +
    + +

    Definition at line 383 of file TConcepts.cpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structtest__concepts_1_1_pred.js b/doc/html/structtest__concepts_1_1_pred.js new file mode 100644 index 0000000..e22e2b7 --- /dev/null +++ b/doc/html/structtest__concepts_1_1_pred.js @@ -0,0 +1,5 @@ +var structtest__concepts_1_1_pred = +[ + [ "operator()", "structtest__concepts_1_1_pred.html#a2aacfb4e27c4de57190e3a9e9ff1ab07", null ], + [ "operator()", "structtest__concepts_1_1_pred.html#a2677c56663ab4525a03eae496af547fa", null ] +]; \ No newline at end of file diff --git a/doc/html/structtest__meta_1_1_ibar-members.html b/doc/html/structtest__meta_1_1_ibar-members.html new file mode 100644 index 0000000..60358e6 --- /dev/null +++ b/doc/html/structtest__meta_1_1_ibar-members.html @@ -0,0 +1,111 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    test_meta::Ibar Member List
    +
    +
    + +

    This is the complete list of members for test_meta::Ibar, including all inherited members.

    + + + + + +
    echo(int i) consttest_meta::Ibarinline
    get() consttest_meta::Ibarinline
    Ibar(int num)test_meta::Ibarinline
    num_test_meta::Ibar
    +
    + + + + diff --git a/doc/html/structtest__meta_1_1_ibar.html b/doc/html/structtest__meta_1_1_ibar.html new file mode 100644 index 0000000..28357ef --- /dev/null +++ b/doc/html/structtest__meta_1_1_ibar.html @@ -0,0 +1,232 @@ + + + + + + + +uTL: test_meta::Ibar Struct Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    test_meta::Ibar Struct Reference
    +
    +
    + + + + + + + + +

    +Public Member Functions

     Ibar (int num)
     
    int echo (int i) const
     
    int get () const
     
    + + + +

    +Public Attributes

    int num_
     
    +

    Detailed Description

    +
    +

    Definition at line 37 of file Tinvoke.cpp.

    +

    Constructor & Destructor Documentation

    + +

    ◆ Ibar()

    + +
    +
    + + + + + +
    + + + + + + + + +
    test_meta::Ibar::Ibar (int num)
    +
    +inline
    +
    + +

    Definition at line 38 of file Tinvoke.cpp.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ echo()

    + +
    +
    + + + + + +
    + + + + + + + + +
    int test_meta::Ibar::echo (int i) const
    +
    +inline
    +
    + +

    Definition at line 39 of file Tinvoke.cpp.

    + +
    +
    + +

    ◆ get()

    + +
    +
    + + + + + +
    + + + + + + + +
    int test_meta::Ibar::get () const
    +
    +inline
    +
    + +

    Definition at line 40 of file Tinvoke.cpp.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ num_

    + +
    +
    + + + + +
    int test_meta::Ibar::num_
    +
    + +

    Definition at line 41 of file Tinvoke.cpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structtest__meta_1_1_ibar.js b/doc/html/structtest__meta_1_1_ibar.js new file mode 100644 index 0000000..cad86ca --- /dev/null +++ b/doc/html/structtest__meta_1_1_ibar.js @@ -0,0 +1,7 @@ +var structtest__meta_1_1_ibar = +[ + [ "Ibar", "structtest__meta_1_1_ibar.html#a4b52f5ff89dbc9a79b081b12da4754fa", null ], + [ "echo", "structtest__meta_1_1_ibar.html#a18e922be4d4097228f43933a701c772d", null ], + [ "get", "structtest__meta_1_1_ibar.html#af30218244215b7fa6257d6876544cf5c", null ], + [ "num_", "structtest__meta_1_1_ibar.html#a7bebffb49d52462872795f491ba0037d", null ] +]; \ No newline at end of file diff --git a/doc/html/structtest__meta_1_1_ifoo-members.html b/doc/html/structtest__meta_1_1_ifoo-members.html new file mode 100644 index 0000000..67cb566 --- /dev/null +++ b/doc/html/structtest__meta_1_1_ifoo-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    test_meta::Ifoo Member List
    +
    +
    + +

    This is the complete list of members for test_meta::Ifoo, including all inherited members.

    + + +
    operator()(int i)test_meta::Ifooinline
    +
    + + + + diff --git a/doc/html/structtest__meta_1_1_ifoo.html b/doc/html/structtest__meta_1_1_ifoo.html new file mode 100644 index 0000000..236d62e --- /dev/null +++ b/doc/html/structtest__meta_1_1_ifoo.html @@ -0,0 +1,149 @@ + + + + + + + +uTL: test_meta::Ifoo Struct Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    test_meta::Ifoo Struct Reference
    +
    +
    + + + + +

    +Public Member Functions

    int operator() (int i)
     
    +

    Detailed Description

    +
    +

    Definition at line 31 of file Tinvoke.cpp.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    + + + + + +
    + + + + + + + + +
    int test_meta::Ifoo::operator() (int i)
    +
    +inline
    +
    + +

    Definition at line 32 of file Tinvoke.cpp.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structtest__meta_1_1_ifoo.js b/doc/html/structtest__meta_1_1_ifoo.js new file mode 100644 index 0000000..00b90de --- /dev/null +++ b/doc/html/structtest__meta_1_1_ifoo.js @@ -0,0 +1,4 @@ +var structtest__meta_1_1_ifoo = +[ + [ "operator()", "structtest__meta_1_1_ifoo.html#aa7054705a6159214e95b432699f2d2ab", null ] +]; \ No newline at end of file diff --git a/doc/html/structtesting_1_1_print_to_string_param_name-members.html b/doc/html/structtesting_1_1_print_to_string_param_name-members.html new file mode 100644 index 0000000..433561c --- /dev/null +++ b/doc/html/structtesting_1_1_print_to_string_param_name-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    testing::PrintToStringParamName Member List
    +
    +
    + +

    This is the complete list of members for testing::PrintToStringParamName, including all inherited members.

    + + +
    operator()(const TestParamInfo< ParamType > &info) consttesting::PrintToStringParamNameinline
    +
    + + + + diff --git a/doc/html/structtesting_1_1_print_to_string_param_name.html b/doc/html/structtesting_1_1_print_to_string_param_name.html new file mode 100644 index 0000000..73ad22b --- /dev/null +++ b/doc/html/structtesting_1_1_print_to_string_param_name.html @@ -0,0 +1,154 @@ + + + + + + + +uTL: testing::PrintToStringParamName Struct Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    testing::PrintToStringParamName Struct Reference
    +
    +
    + +

    #include <gtest.h>

    + + + + + +

    +Public Member Functions

    template<class ParamType >
    std::string operator() (const TestParamInfo< ParamType > &info) const
     
    +

    Detailed Description

    +
    +

    Definition at line 10604 of file gtest.h.

    +

    Member Function Documentation

    + +

    ◆ operator()()

    + +
    +
    +
    +template<class ParamType >
    + + + + + +
    + + + + + + + + +
    std::string testing::PrintToStringParamName::operator() (const TestParamInfo< ParamType > & info) const
    +
    +inline
    +
    + +

    Definition at line 10606 of file gtest.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • test/eclipse-cygwin/lib/gtest/gtest.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structtesting_1_1_print_to_string_param_name.js b/doc/html/structtesting_1_1_print_to_string_param_name.js new file mode 100644 index 0000000..0d41e68 --- /dev/null +++ b/doc/html/structtesting_1_1_print_to_string_param_name.js @@ -0,0 +1,4 @@ +var structtesting_1_1_print_to_string_param_name = +[ + [ "operator()", "structtesting_1_1_print_to_string_param_name.html#a05b411cfb75dadb2c3c0355aee1dcf21", null ] +]; \ No newline at end of file diff --git a/doc/html/structtesting_1_1_test_param_info-members.html b/doc/html/structtesting_1_1_test_param_info-members.html new file mode 100644 index 0000000..903404d --- /dev/null +++ b/doc/html/structtesting_1_1_test_param_info-members.html @@ -0,0 +1,110 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    testing::TestParamInfo< ParamType > Member List
    +
    +
    + +

    This is the complete list of members for testing::TestParamInfo< ParamType >, including all inherited members.

    + + + + +
    indextesting::TestParamInfo< ParamType >
    paramtesting::TestParamInfo< ParamType >
    TestParamInfo(const ParamType &a_param, size_t an_index)testing::TestParamInfo< ParamType >inline
    +
    + + + + diff --git a/doc/html/structtesting_1_1_test_param_info.html b/doc/html/structtesting_1_1_test_param_info.html new file mode 100644 index 0000000..6b532f9 --- /dev/null +++ b/doc/html/structtesting_1_1_test_param_info.html @@ -0,0 +1,211 @@ + + + + + + + +uTL: testing::TestParamInfo< ParamType > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    testing::TestParamInfo< ParamType > Struct Template Reference
    +
    +
    + +

    #include <gtest.h>

    + + + + +

    +Public Member Functions

     TestParamInfo (const ParamType &a_param, size_t an_index)
     
    + + + + + +

    +Public Attributes

    ParamType param
     
    size_t index
     
    +

    Detailed Description

    +

    template<class ParamType>
    +struct testing::TestParamInfo< ParamType >

    + + +

    Definition at line 10594 of file gtest.h.

    +

    Constructor & Destructor Documentation

    + +

    ◆ TestParamInfo()

    + +
    +
    +
    +template<class ParamType>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    testing::TestParamInfo< ParamType >::TestParamInfo (const ParamType & a_param,
    size_t an_index 
    )
    +
    +inline
    +
    + +

    Definition at line 10595 of file gtest.h.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ index

    + +
    +
    +
    +template<class ParamType>
    + + + + +
    size_t testing::TestParamInfo< ParamType >::index
    +
    + +

    Definition at line 10599 of file gtest.h.

    + +
    +
    + +

    ◆ param

    + +
    +
    +
    +template<class ParamType>
    + + + + +
    ParamType testing::TestParamInfo< ParamType >::param
    +
    + +

    Definition at line 10598 of file gtest.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • test/eclipse-cygwin/lib/gtest/gtest.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structtesting_1_1_test_param_info.js b/doc/html/structtesting_1_1_test_param_info.js new file mode 100644 index 0000000..b985983 --- /dev/null +++ b/doc/html/structtesting_1_1_test_param_info.js @@ -0,0 +1,6 @@ +var structtesting_1_1_test_param_info = +[ + [ "TestParamInfo", "structtesting_1_1_test_param_info.html#aa54199319bcad5a33c8538ecaecb6de5", null ], + [ "index", "structtesting_1_1_test_param_info.html#ad4d7bc02cbcc571eb3c1d2ec3ba5bb53", null ], + [ "param", "structtesting_1_1_test_param_info.html#a146d921039f9da8b1336f7cc6e8436c2", null ] +]; \ No newline at end of file diff --git a/doc/html/structtesting_1_1internal_1_1_add_reference-members.html b/doc/html/structtesting_1_1internal_1_1_add_reference-members.html new file mode 100644 index 0000000..fd16483 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_add_reference-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    testing::internal::AddReference< T > Member List
    +
    +
    + +

    This is the complete list of members for testing::internal::AddReference< T >, including all inherited members.

    + + +
    type typedeftesting::internal::AddReference< T >
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_add_reference.html b/doc/html/structtesting_1_1internal_1_1_add_reference.html new file mode 100644 index 0000000..351c6c6 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_add_reference.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: testing::internal::AddReference< T > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    testing::internal::AddReference< T > Struct Template Reference
    +
    +
    + +

    #include <gtest.h>

    + + + + +

    +Public Types

    typedef T & type
     
    +

    Detailed Description

    +

    template<typename T>
    +struct testing::internal::AddReference< T >

    + + +

    Definition at line 1292 of file gtest.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename T>
    + + + + +
    typedef T& testing::internal::AddReference< T >::type
    +
    + +

    Definition at line 1292 of file gtest.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • test/eclipse-cygwin/lib/gtest/gtest.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_add_reference.js b/doc/html/structtesting_1_1internal_1_1_add_reference.js new file mode 100644 index 0000000..9ebf261 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_add_reference.js @@ -0,0 +1,4 @@ +var structtesting_1_1internal_1_1_add_reference = +[ + [ "type", "structtesting_1_1internal_1_1_add_reference.html#a2df8dd7c4e41f6390e6e66b1a9a67bb4", null ] +]; \ No newline at end of file diff --git a/doc/html/structtesting_1_1internal_1_1_add_reference_3_01_t_01_6_01_4-members.html b/doc/html/structtesting_1_1internal_1_1_add_reference_3_01_t_01_6_01_4-members.html new file mode 100644 index 0000000..d7b1baf --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_add_reference_3_01_t_01_6_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    testing::internal::AddReference< T & > Member List
    +
    +
    + +

    This is the complete list of members for testing::internal::AddReference< T & >, including all inherited members.

    + + +
    type typedeftesting::internal::AddReference< T & >
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_add_reference_3_01_t_01_6_01_4.html b/doc/html/structtesting_1_1internal_1_1_add_reference_3_01_t_01_6_01_4.html new file mode 100644 index 0000000..35ffa5a --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_add_reference_3_01_t_01_6_01_4.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: testing::internal::AddReference< T & > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    testing::internal::AddReference< T & > Struct Template Reference
    +
    +
    + +

    #include <gtest.h>

    + + + + +

    +Public Types

    typedef T & type
     
    +

    Detailed Description

    +

    template<typename T>
    +struct testing::internal::AddReference< T & >

    + + +

    Definition at line 1294 of file gtest.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename T >
    + + + + +
    typedef T& testing::internal::AddReference< T & >::type
    +
    + +

    Definition at line 1294 of file gtest.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • test/eclipse-cygwin/lib/gtest/gtest.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_add_reference_3_01_t_01_6_01_4.js b/doc/html/structtesting_1_1internal_1_1_add_reference_3_01_t_01_6_01_4.js new file mode 100644 index 0000000..928b9b5 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_add_reference_3_01_t_01_6_01_4.js @@ -0,0 +1,4 @@ +var structtesting_1_1internal_1_1_add_reference_3_01_t_01_6_01_4 = +[ + [ "type", "structtesting_1_1internal_1_1_add_reference_3_01_t_01_6_01_4.html#a93c064cdcdaced0abd167258425e57af", null ] +]; \ No newline at end of file diff --git a/doc/html/structtesting_1_1internal_1_1_code_location-members.html b/doc/html/structtesting_1_1internal_1_1_code_location-members.html new file mode 100644 index 0000000..46f94df --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_code_location-members.html @@ -0,0 +1,110 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    testing::internal::CodeLocation Member List
    +
    +
    + +

    This is the complete list of members for testing::internal::CodeLocation, including all inherited members.

    + + + + +
    CodeLocation(const std::string &a_file, int a_line)testing::internal::CodeLocationinline
    filetesting::internal::CodeLocation
    linetesting::internal::CodeLocation
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_code_location.html b/doc/html/structtesting_1_1internal_1_1_code_location.html new file mode 100644 index 0000000..3a1ad49 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_code_location.html @@ -0,0 +1,202 @@ + + + + + + + +uTL: testing::internal::CodeLocation Struct Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    testing::internal::CodeLocation Struct Reference
    +
    +
    + +

    #include <gtest.h>

    + + + + +

    +Public Member Functions

     CodeLocation (const std::string &a_file, int a_line)
     
    + + + + + +

    +Public Attributes

    std::string file
     
    int line
     
    +

    Detailed Description

    +
    +

    Definition at line 6929 of file gtest.h.

    +

    Constructor & Destructor Documentation

    + +

    ◆ CodeLocation()

    + +
    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    testing::internal::CodeLocation::CodeLocation (const std::string & a_file,
    int a_line 
    )
    +
    +inline
    +
    + +

    Definition at line 6930 of file gtest.h.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ file

    + +
    +
    + + + + +
    std::string testing::internal::CodeLocation::file
    +
    + +

    Definition at line 6933 of file gtest.h.

    + +
    +
    + +

    ◆ line

    + +
    +
    + + + + +
    int testing::internal::CodeLocation::line
    +
    + +

    Definition at line 6934 of file gtest.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • test/eclipse-cygwin/lib/gtest/gtest.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_code_location.js b/doc/html/structtesting_1_1internal_1_1_code_location.js new file mode 100644 index 0000000..f79100f --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_code_location.js @@ -0,0 +1,6 @@ +var structtesting_1_1internal_1_1_code_location = +[ + [ "CodeLocation", "structtesting_1_1internal_1_1_code_location.html#a323a11851c81629d632c47b9b767b8ac", null ], + [ "file", "structtesting_1_1internal_1_1_code_location.html#a38118056ad3c11359920274e393bc6b3", null ], + [ "line", "structtesting_1_1internal_1_1_code_location.html#a01c977c7e8834a05a6d6c40b0c416045", null ] +]; \ No newline at end of file diff --git a/doc/html/structtesting_1_1internal_1_1_compile_assert_types_equal.html b/doc/html/structtesting_1_1internal_1_1_compile_assert_types_equal.html new file mode 100644 index 0000000..f65165c --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_compile_assert_types_equal.html @@ -0,0 +1,116 @@ + + + + + + + +uTL: testing::internal::CompileAssertTypesEqual< T1, T2 > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    testing::internal::CompileAssertTypesEqual< T1, T2 > Struct Template Reference
    +
    +
    + +

    #include <gtest.h>

    +

    Detailed Description

    +

    template<typename T1, typename T2>
    +struct testing::internal::CompileAssertTypesEqual< T1, T2 >

    + + +

    Definition at line 7296 of file gtest.h.

    +

    The documentation for this struct was generated from the following file:
      +
    • test/eclipse-cygwin/lib/gtest/gtest.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_compile_assert_types_equal_3_01_t_00_01_t_01_4.html b/doc/html/structtesting_1_1internal_1_1_compile_assert_types_equal_3_01_t_00_01_t_01_4.html new file mode 100644 index 0000000..32bada6 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_compile_assert_types_equal_3_01_t_00_01_t_01_4.html @@ -0,0 +1,116 @@ + + + + + + + +uTL: testing::internal::CompileAssertTypesEqual< T, T > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    testing::internal::CompileAssertTypesEqual< T, T > Struct Template Reference
    +
    +
    + +

    #include <gtest.h>

    +

    Detailed Description

    +

    template<typename T>
    +struct testing::internal::CompileAssertTypesEqual< T, T >

    + + +

    Definition at line 7299 of file gtest.h.

    +

    The documentation for this struct was generated from the following file:
      +
    • test/eclipse-cygwin/lib/gtest/gtest.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_const_char_ptr-members.html b/doc/html/structtesting_1_1internal_1_1_const_char_ptr-members.html new file mode 100644 index 0000000..ca61d63 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_const_char_ptr-members.html @@ -0,0 +1,110 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    testing::internal::ConstCharPtr Member List
    +
    +
    + +

    This is the complete list of members for testing::internal::ConstCharPtr, including all inherited members.

    + + + + +
    ConstCharPtr(const char *str)testing::internal::ConstCharPtrinline
    operator bool() consttesting::internal::ConstCharPtrinline
    valuetesting::internal::ConstCharPtr
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_const_char_ptr.html b/doc/html/structtesting_1_1internal_1_1_const_char_ptr.html new file mode 100644 index 0000000..12223e2 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_const_char_ptr.html @@ -0,0 +1,204 @@ + + + + + + + +uTL: testing::internal::ConstCharPtr Struct Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    testing::internal::ConstCharPtr Struct Reference
    +
    +
    + +

    #include <gtest.h>

    + + + + + + +

    +Public Member Functions

     ConstCharPtr (const char *str)
     
     operator bool () const
     
    + + + +

    +Public Attributes

    const char * value
     
    +

    Detailed Description

    +
    +

    Definition at line 7265 of file gtest.h.

    +

    Constructor & Destructor Documentation

    + +

    ◆ ConstCharPtr()

    + +
    +
    + + + + + +
    + + + + + + + + +
    testing::internal::ConstCharPtr::ConstCharPtr (const char * str)
    +
    +inline
    +
    + +

    Definition at line 7266 of file gtest.h.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ operator bool()

    + +
    +
    + + + + + +
    + + + + + + + +
    testing::internal::ConstCharPtr::operator bool () const
    +
    +inline
    +
    + +

    Definition at line 7267 of file gtest.h.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ value

    + +
    +
    + + + + +
    const char* testing::internal::ConstCharPtr::value
    +
    + +

    Definition at line 7268 of file gtest.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • test/eclipse-cygwin/lib/gtest/gtest.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_const_char_ptr.js b/doc/html/structtesting_1_1internal_1_1_const_char_ptr.js new file mode 100644 index 0000000..96a67b2 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_const_char_ptr.js @@ -0,0 +1,6 @@ +var structtesting_1_1internal_1_1_const_char_ptr = +[ + [ "ConstCharPtr", "structtesting_1_1internal_1_1_const_char_ptr.html#ae94f6453fa679d815994eccc63062907", null ], + [ "operator bool", "structtesting_1_1internal_1_1_const_char_ptr.html#a85c8174b5d4db8fe96863509ba767b27", null ], + [ "value", "structtesting_1_1internal_1_1_const_char_ptr.html#adba40d23d5986904b605946f643cf26e", null ] +]; \ No newline at end of file diff --git a/doc/html/structtesting_1_1internal_1_1_const_ref-members.html b/doc/html/structtesting_1_1internal_1_1_const_ref-members.html new file mode 100644 index 0000000..02c9c73 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_const_ref-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    testing::internal::ConstRef< T > Member List
    +
    +
    + +

    This is the complete list of members for testing::internal::ConstRef< T >, including all inherited members.

    + + +
    type typedeftesting::internal::ConstRef< T >
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_const_ref.html b/doc/html/structtesting_1_1internal_1_1_const_ref.html new file mode 100644 index 0000000..2325f22 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_const_ref.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: testing::internal::ConstRef< T > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    testing::internal::ConstRef< T > Struct Template Reference
    +
    +
    + +

    #include <gtest.h>

    + + + + +

    +Public Types

    typedef const T & type
     
    +

    Detailed Description

    +

    template<typename T>
    +struct testing::internal::ConstRef< T >

    + + +

    Definition at line 1313 of file gtest.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename T >
    + + + + +
    typedef const T& testing::internal::ConstRef< T >::type
    +
    + +

    Definition at line 1313 of file gtest.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • test/eclipse-cygwin/lib/gtest/gtest.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_const_ref.js b/doc/html/structtesting_1_1internal_1_1_const_ref.js new file mode 100644 index 0000000..3f7baea --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_const_ref.js @@ -0,0 +1,4 @@ +var structtesting_1_1internal_1_1_const_ref = +[ + [ "type", "structtesting_1_1internal_1_1_const_ref.html#a53610a4d0e72958332222b0a85f8937a", null ] +]; \ No newline at end of file diff --git a/doc/html/structtesting_1_1internal_1_1_const_ref_3_01_t_01_6_01_4-members.html b/doc/html/structtesting_1_1internal_1_1_const_ref_3_01_t_01_6_01_4-members.html new file mode 100644 index 0000000..89b5379 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_const_ref_3_01_t_01_6_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    testing::internal::ConstRef< T & > Member List
    +
    +
    + +

    This is the complete list of members for testing::internal::ConstRef< T & >, including all inherited members.

    + + +
    type typedeftesting::internal::ConstRef< T & >
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_const_ref_3_01_t_01_6_01_4.html b/doc/html/structtesting_1_1internal_1_1_const_ref_3_01_t_01_6_01_4.html new file mode 100644 index 0000000..17215f8 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_const_ref_3_01_t_01_6_01_4.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: testing::internal::ConstRef< T & > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    testing::internal::ConstRef< T & > Struct Template Reference
    +
    +
    + +

    #include <gtest.h>

    + + + + +

    +Public Types

    typedef T & type
     
    +

    Detailed Description

    +

    template<typename T>
    +struct testing::internal::ConstRef< T & >

    + + +

    Definition at line 1315 of file gtest.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename T >
    + + + + +
    typedef T& testing::internal::ConstRef< T & >::type
    +
    + +

    Definition at line 1315 of file gtest.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • test/eclipse-cygwin/lib/gtest/gtest.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_const_ref_3_01_t_01_6_01_4.js b/doc/html/structtesting_1_1internal_1_1_const_ref_3_01_t_01_6_01_4.js new file mode 100644 index 0000000..bd27714 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_const_ref_3_01_t_01_6_01_4.js @@ -0,0 +1,4 @@ +var structtesting_1_1internal_1_1_const_ref_3_01_t_01_6_01_4 = +[ + [ "type", "structtesting_1_1internal_1_1_const_ref_3_01_t_01_6_01_4.html#a9f664dd25649a0d260cfb1f610c7a349", null ] +]; \ No newline at end of file diff --git a/doc/html/structtesting_1_1internal_1_1_double_sequence.html b/doc/html/structtesting_1_1internal_1_1_double_sequence.html new file mode 100644 index 0000000..194dcdc --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_double_sequence.html @@ -0,0 +1,116 @@ + + + + + + + +uTL: testing::internal::DoubleSequence< plus_one, T, sizeofT > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    testing::internal::DoubleSequence< plus_one, T, sizeofT > Struct Template Reference
    +
    +
    + +

    #include <gtest.h>

    +

    Detailed Description

    +

    template<bool plus_one, typename T, size_t sizeofT>
    +struct testing::internal::DoubleSequence< plus_one, T, sizeofT >

    + + +

    Definition at line 7652 of file gtest.h.

    +

    The documentation for this struct was generated from the following file:
      +
    • test/eclipse-cygwin/lib/gtest/gtest.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_double_sequence_3_01false_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4-members.html b/doc/html/structtesting_1_1internal_1_1_double_sequence_3_01false_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4-members.html new file mode 100644 index 0000000..5302e4c --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_double_sequence_3_01false_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    testing::internal::DoubleSequence< false, IndexSequence< I... >, sizeofT > Member List
    +
    + +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_double_sequence_3_01false_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4.html b/doc/html/structtesting_1_1internal_1_1_double_sequence_3_01false_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4.html new file mode 100644 index 0000000..11ea425 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_double_sequence_3_01false_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: testing::internal::DoubleSequence< false, IndexSequence< I... >, sizeofT > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    testing::internal::DoubleSequence< false, IndexSequence< I... >, sizeofT > Struct Template Reference
    +
    +
    + +

    #include <gtest.h>

    + + + + +

    +Public Types

    using type = IndexSequence< I...,(sizeofT+I)... >
     
    +

    Detailed Description

    +

    template<size_t... I, size_t sizeofT>
    +struct testing::internal::DoubleSequence< false, IndexSequence< I... >, sizeofT >

    + + +

    Definition at line 7658 of file gtest.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<size_t... I, size_t sizeofT>
    + + + + +
    using testing::internal::DoubleSequence< false, IndexSequence< I... >, sizeofT >::type = IndexSequence<I..., (sizeofT + I)...>
    +
    + +

    Definition at line 7659 of file gtest.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • test/eclipse-cygwin/lib/gtest/gtest.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_double_sequence_3_01false_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4.js b/doc/html/structtesting_1_1internal_1_1_double_sequence_3_01false_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4.js new file mode 100644 index 0000000..6ff0bfb --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_double_sequence_3_01false_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4.js @@ -0,0 +1,4 @@ +var structtesting_1_1internal_1_1_double_sequence_3_01false_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4 = +[ + [ "type", "structtesting_1_1internal_1_1_double_sequence_3_01false_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4.html#af11568320fe19e984e2eb5ab9ad026aa", null ] +]; \ No newline at end of file diff --git a/doc/html/structtesting_1_1internal_1_1_double_sequence_3_01true_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4-members.html b/doc/html/structtesting_1_1internal_1_1_double_sequence_3_01true_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4-members.html new file mode 100644 index 0000000..686c723 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_double_sequence_3_01true_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    testing::internal::DoubleSequence< true, IndexSequence< I... >, sizeofT > Member List
    +
    + +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_double_sequence_3_01true_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4.html b/doc/html/structtesting_1_1internal_1_1_double_sequence_3_01true_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4.html new file mode 100644 index 0000000..7b42cac --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_double_sequence_3_01true_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: testing::internal::DoubleSequence< true, IndexSequence< I... >, sizeofT > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    testing::internal::DoubleSequence< true, IndexSequence< I... >, sizeofT > Struct Template Reference
    +
    +
    + +

    #include <gtest.h>

    + + + + +

    +Public Types

    using type = IndexSequence< I...,(sizeofT+I)..., 2 *sizeofT >
     
    +

    Detailed Description

    +

    template<size_t... I, size_t sizeofT>
    +struct testing::internal::DoubleSequence< true, IndexSequence< I... >, sizeofT >

    + + +

    Definition at line 7654 of file gtest.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<size_t... I, size_t sizeofT>
    + + + + +
    using testing::internal::DoubleSequence< true, IndexSequence< I... >, sizeofT >::type = IndexSequence<I..., (sizeofT + I)..., 2 * sizeofT>
    +
    + +

    Definition at line 7655 of file gtest.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • test/eclipse-cygwin/lib/gtest/gtest.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_double_sequence_3_01true_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4.js b/doc/html/structtesting_1_1internal_1_1_double_sequence_3_01true_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4.js new file mode 100644 index 0000000..d0970d5 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_double_sequence_3_01true_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4.js @@ -0,0 +1,4 @@ +var structtesting_1_1internal_1_1_double_sequence_3_01true_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4 = +[ + [ "type", "structtesting_1_1internal_1_1_double_sequence_3_01true_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4.html#a6f0fbcc14f5264c7db52f3ba3e264545", null ] +]; \ No newline at end of file diff --git a/doc/html/structtesting_1_1internal_1_1_elem_from_list.html b/doc/html/structtesting_1_1internal_1_1_elem_from_list.html new file mode 100644 index 0000000..d8a2ddc --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_elem_from_list.html @@ -0,0 +1,116 @@ + + + + + + + +uTL: testing::internal::ElemFromList< N, I, T > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    testing::internal::ElemFromList< N, I, T > Struct Template Reference
    +
    +
    + +

    #include <gtest.h>

    +

    Detailed Description

    +

    template<size_t N, typename I, typename... T>
    +struct testing::internal::ElemFromList< N, I, T >

    + + +

    Definition at line 7686 of file gtest.h.

    +

    The documentation for this struct was generated from the following file:
      +
    • test/eclipse-cygwin/lib/gtest/gtest.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_elem_from_list_3_01_n_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01_t_8_8_8_01_4.html b/doc/html/structtesting_1_1internal_1_1_elem_from_list_3_01_n_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01_t_8_8_8_01_4.html new file mode 100644 index 0000000..d490d3e --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_elem_from_list_3_01_n_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01_t_8_8_8_01_4.html @@ -0,0 +1,125 @@ + + + + + + + +uTL: testing::internal::ElemFromList< N, IndexSequence< I... >, T... > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    testing::internal::ElemFromList< N, IndexSequence< I... >, T... > Struct Template Reference
    +
    +
    + +

    #include <gtest.h>

    +
    +Inheritance diagram for testing::internal::ElemFromList< N, IndexSequence< I... >, T... >:
    +
    +
    + + +testing::internal::ElemFromListImpl< T, N, I > + +
    +

    Detailed Description

    +

    template<size_t N, size_t... I, typename... T>
    +struct testing::internal::ElemFromList< N, IndexSequence< I... >, T... >

    + + +

    Definition at line 7689 of file gtest.h.

    +

    The documentation for this struct was generated from the following file:
      +
    • test/eclipse-cygwin/lib/gtest/gtest.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_elem_from_list_3_01_n_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01_t_8_8_8_01_4.png b/doc/html/structtesting_1_1internal_1_1_elem_from_list_3_01_n_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01_t_8_8_8_01_4.png new file mode 100644 index 0000000000000000000000000000000000000000..774ec274eba9dec3f758b17131f1d82b5f08347d GIT binary patch literal 1231 zcmeAS@N?(olHy`uVBq!ia0y~yU@QT$12~w0q}}(ruRuy7z$e7@|Ns9$=8HF9OZyK^ z0J6aNz<~p-opJ-ojEvTzs~7ROQxkpK02c0sp;7jd ze!auO?;t%ofnQaveKl|PA_5ZX#|I;~Y-``@8nr$`peN1~~|F?H# zGlgHgwVE&fa(1<=)u|V!LwTlc&iun=o?uq={fqGnouJ^X?Q`#@Oo@E4Jkxj5voBFE z%GNip$l1Bdqc=v&z;ds3zb)hJhyONI^;ca#r@Yg){JV;6_g~cu<}AOr&TZP)zcK5+ zuk=f?{o5_u-`Nzcvn;DUyTncY>-og`&?Vo)f7LDde#L6RTP}X*>8Dnlas8$F<$TAN z)z&o?75aPcG{&h!r!5fA3{Wfnb#q~ji(hM;>8wnRoMyoIC$N@r3B#i) z7Z{View})S(P=7(b=GDjvy0Y3<`(UV%q-dqX^UU;JL@l<5~8{ENGH<-rj8&dc8)M) z-1_cj{dNDo#~J%<*5BG`dqes4UhV~x%g@|g8+!YORLSKy9ae+IogZIMTgSV80dovA zwWwdn|62KCuH}K|S<-dav)cC^d$euh+s|Tix1My0nLQgR*)ZL|ab;!AbE`FaPi)FB z%-w&Sck@5#$+ca(w%l~s{^<0=*>lA#5GiQ;-J3m|4@;Kps?_Q*EP21E^s|S@)h8>q zEWX`rp3Su7Rq#oPT^psH^XI-@bm{%ElY2STmX|-@xZK|Oj{LN*E56>@Z#{RvnbNC$ zv-d6ByEp0XECxTh-!GM~9y?uk;kNGU8F3ExkDJ7qy%HhqW7{g%7MgS~oB5RjTw6wbsRV`oGMJV&4+`F!6<*>lvr_?^^mFC+3)Q z@3+0gZh2Sjz{xK~>{X1w6gU4#$^QH2;*0gZE7{X#8?%;FZQ(t*?K0o%^6NI;d{wo|+4F8cvz}%-!Mtwft$&x7nv{RGzOpvGSvf;r zDn4yPg(NaocF={*W16D%#ULTV(>># mNw1}=G?y;%(p2^N&mbn`yDT;FffKOwVeoYIb6Mw<&;$TKEJ}O; literal 0 HcmV?d00001 diff --git a/doc/html/structtesting_1_1internal_1_1_elem_from_list_impl.html b/doc/html/structtesting_1_1internal_1_1_elem_from_list_impl.html new file mode 100644 index 0000000..4dad946 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_elem_from_list_impl.html @@ -0,0 +1,116 @@ + + + + + + + +uTL: testing::internal::ElemFromListImpl< T, size_t, size_t > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    testing::internal::ElemFromListImpl< T, size_t, size_t > Struct Template Reference
    +
    +
    + +

    #include <gtest.h>

    +

    Detailed Description

    +

    template<typename T, size_t, size_t>
    +struct testing::internal::ElemFromListImpl< T, size_t, size_t >

    + + +

    Definition at line 7676 of file gtest.h.

    +

    The documentation for this struct was generated from the following file:
      +
    • test/eclipse-cygwin/lib/gtest/gtest.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_elem_from_list_impl_3_01_t_00_01_i_00_01_i_01_4-members.html b/doc/html/structtesting_1_1internal_1_1_elem_from_list_impl_3_01_t_00_01_i_00_01_i_01_4-members.html new file mode 100644 index 0000000..1c6d58a --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_elem_from_list_impl_3_01_t_00_01_i_00_01_i_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    testing::internal::ElemFromListImpl< T, I, I > Member List
    +
    +
    + +

    This is the complete list of members for testing::internal::ElemFromListImpl< T, I, I >, including all inherited members.

    + + +
    type typedeftesting::internal::ElemFromListImpl< T, I, I >
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_elem_from_list_impl_3_01_t_00_01_i_00_01_i_01_4.html b/doc/html/structtesting_1_1internal_1_1_elem_from_list_impl_3_01_t_00_01_i_00_01_i_01_4.html new file mode 100644 index 0000000..2bc4bf7 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_elem_from_list_impl_3_01_t_00_01_i_00_01_i_01_4.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: testing::internal::ElemFromListImpl< T, I, I > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    testing::internal::ElemFromListImpl< T, I, I > Struct Template Reference
    +
    +
    + +

    #include <gtest.h>

    + + + + +

    +Public Types

    using type = T
     
    +

    Detailed Description

    +

    template<typename T, size_t I>
    +struct testing::internal::ElemFromListImpl< T, I, I >

    + + +

    Definition at line 7679 of file gtest.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename T , size_t I>
    + + + + +
    using testing::internal::ElemFromListImpl< T, I, I >::type = T
    +
    + +

    Definition at line 7680 of file gtest.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • test/eclipse-cygwin/lib/gtest/gtest.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_elem_from_list_impl_3_01_t_00_01_i_00_01_i_01_4.js b/doc/html/structtesting_1_1internal_1_1_elem_from_list_impl_3_01_t_00_01_i_00_01_i_01_4.js new file mode 100644 index 0000000..b04d583 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_elem_from_list_impl_3_01_t_00_01_i_00_01_i_01_4.js @@ -0,0 +1,4 @@ +var structtesting_1_1internal_1_1_elem_from_list_impl_3_01_t_00_01_i_00_01_i_01_4 = +[ + [ "type", "structtesting_1_1internal_1_1_elem_from_list_impl_3_01_t_00_01_i_00_01_i_01_4.html#ab1552e339cc1ff1e0aa448d684ffaf39", null ] +]; \ No newline at end of file diff --git a/doc/html/structtesting_1_1internal_1_1_enable_if.html b/doc/html/structtesting_1_1internal_1_1_enable_if.html new file mode 100644 index 0000000..37ddbf1 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_enable_if.html @@ -0,0 +1,116 @@ + + + + + + + +uTL: testing::internal::EnableIf< bool > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    testing::internal::EnableIf< bool > Struct Template Reference
    +
    +
    + +

    #include <gtest.h>

    +

    Detailed Description

    +

    template<bool>
    +struct testing::internal::EnableIf< bool >

    + + +

    Definition at line 7491 of file gtest.h.

    +

    The documentation for this struct was generated from the following file:
      +
    • test/eclipse-cygwin/lib/gtest/gtest.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_enable_if_3_01true_01_4-members.html b/doc/html/structtesting_1_1internal_1_1_enable_if_3_01true_01_4-members.html new file mode 100644 index 0000000..7305e84 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_enable_if_3_01true_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    testing::internal::EnableIf< true > Member List
    +
    +
    + +

    This is the complete list of members for testing::internal::EnableIf< true >, including all inherited members.

    + + +
    type typedeftesting::internal::EnableIf< true >
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_enable_if_3_01true_01_4.html b/doc/html/structtesting_1_1internal_1_1_enable_if_3_01true_01_4.html new file mode 100644 index 0000000..bf1bf5e --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_enable_if_3_01true_01_4.html @@ -0,0 +1,142 @@ + + + + + + + +uTL: testing::internal::EnableIf< true > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    testing::internal::EnableIf< true > Struct Template Reference
    +
    +
    + +

    #include <gtest.h>

    + + + + +

    +Public Types

    typedef void type
     
    +

    Detailed Description

    +

    template<>
    +struct testing::internal::EnableIf< true >

    + + +

    Definition at line 7492 of file gtest.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    + + + + +
    typedef void testing::internal::EnableIf< true >::type
    +
    + +

    Definition at line 7492 of file gtest.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • test/eclipse-cygwin/lib/gtest/gtest.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_enable_if_3_01true_01_4.js b/doc/html/structtesting_1_1internal_1_1_enable_if_3_01true_01_4.js new file mode 100644 index 0000000..f349457 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_enable_if_3_01true_01_4.js @@ -0,0 +1,4 @@ +var structtesting_1_1internal_1_1_enable_if_3_01true_01_4 = +[ + [ "type", "structtesting_1_1internal_1_1_enable_if_3_01true_01_4.html#a9398d803f1fdd99ff41823746f6299ff", null ] +]; \ No newline at end of file diff --git a/doc/html/structtesting_1_1internal_1_1_flat_tuple_base.html b/doc/html/structtesting_1_1internal_1_1_flat_tuple_base.html new file mode 100644 index 0000000..69d7596 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_flat_tuple_base.html @@ -0,0 +1,116 @@ + + + + + + + +uTL: testing::internal::FlatTupleBase< Derived, Idx > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    testing::internal::FlatTupleBase< Derived, Idx > Struct Template Reference
    +
    +
    + +

    #include <gtest.h>

    +

    Detailed Description

    +

    template<typename Derived, typename Idx>
    +struct testing::internal::FlatTupleBase< Derived, Idx >

    + + +

    Definition at line 7709 of file gtest.h.

    +

    The documentation for this struct was generated from the following file:
      +
    • test/eclipse-cygwin/lib/gtest/gtest.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_flat_tuple_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_index_sequ39648cad53441158091e09ac7d0841c0.html b/doc/html/structtesting_1_1internal_1_1_flat_tuple_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_index_sequ39648cad53441158091e09ac7d0841c0.html new file mode 100644 index 0000000..999401b --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_flat_tuple_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_index_sequ39648cad53441158091e09ac7d0841c0.html @@ -0,0 +1,110 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    testing::internal::FlatTupleBase< FlatTuple< T... >, IndexSequence< Idx... > > Member List
    +
    + +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_flat_tuple_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_index_sequence_3_01_idx_8_8_8_01_4_01_4.html b/doc/html/structtesting_1_1internal_1_1_flat_tuple_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_index_sequence_3_01_idx_8_8_8_01_4_01_4.html new file mode 100644 index 0000000..997239c --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_flat_tuple_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_index_sequence_3_01_idx_8_8_8_01_4_01_4.html @@ -0,0 +1,219 @@ + + + + + + + +uTL: testing::internal::FlatTupleBase< FlatTuple< T... >, IndexSequence< Idx... > > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    testing::internal::FlatTupleBase< FlatTuple< T... >, IndexSequence< Idx... > > Struct Template Reference
    +
    +
    + +

    #include <gtest.h>

    +
    +Inheritance diagram for testing::internal::FlatTupleBase< FlatTuple< T... >, IndexSequence< Idx... > >:
    +
    +
    + + +testing::internal::FlatTupleElemBase< FlatTuple< T... >, Idx > + +
    + + + + +

    +Public Types

    using Indices = IndexSequence< Idx... >
     
    + + + + + +

    +Public Member Functions

     FlatTupleBase ()=default
     
     FlatTupleBase (T... t)
     
    +

    Detailed Description

    +

    template<size_t... Idx, typename... T>
    +struct testing::internal::FlatTupleBase< FlatTuple< T... >, IndexSequence< Idx... > >

    + + +

    Definition at line 7712 of file gtest.h.

    +

    Member Typedef Documentation

    + +

    ◆ Indices

    + +
    +
    +
    +template<size_t... Idx, typename... T>
    + + + + +
    using testing::internal::FlatTupleBase< FlatTuple< T... >, IndexSequence< Idx... > >::Indices = IndexSequence<Idx...>
    +
    + +

    Definition at line 7714 of file gtest.h.

    + +
    +
    +

    Constructor & Destructor Documentation

    + +

    ◆ FlatTupleBase() [1/2]

    + +
    +
    +
    +template<size_t... Idx, typename... T>
    + + + + + +
    + + + + + + + +
    testing::internal::FlatTupleBase< FlatTuple< T... >, IndexSequence< Idx... > >::FlatTupleBase ()
    +
    +default
    +
    + +
    +
    + +

    ◆ FlatTupleBase() [2/2]

    + +
    +
    +
    +template<size_t... Idx, typename... T>
    + + + + + +
    + + + + + + + + +
    testing::internal::FlatTupleBase< FlatTuple< T... >, IndexSequence< Idx... > >::FlatTupleBase (T... t)
    +
    +inlineexplicit
    +
    + +

    Definition at line 7716 of file gtest.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • test/eclipse-cygwin/lib/gtest/gtest.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_flat_tuple_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_index_sequence_3_01_idx_8_8_8_01_4_01_4.js b/doc/html/structtesting_1_1internal_1_1_flat_tuple_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_index_sequence_3_01_idx_8_8_8_01_4_01_4.js new file mode 100644 index 0000000..9939dc0 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_flat_tuple_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_index_sequence_3_01_idx_8_8_8_01_4_01_4.js @@ -0,0 +1,6 @@ +var structtesting_1_1internal_1_1_flat_tuple_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_index_sequence_3_01_idx_8_8_8_01_4_01_4 = +[ + [ "Indices", "structtesting_1_1internal_1_1_flat_tuple_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_index_sequence_3_01_idx_8_8_8_01_4_01_4.html#ada1941ebde1ec1c844b72970e0ccb304", null ], + [ "FlatTupleBase", "structtesting_1_1internal_1_1_flat_tuple_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_index_sequence_3_01_idx_8_8_8_01_4_01_4.html#ae509b146e74176bceddc0d2f2d1cb0dc", null ], + [ "FlatTupleBase", "structtesting_1_1internal_1_1_flat_tuple_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_index_sequence_3_01_idx_8_8_8_01_4_01_4.html#ac515eec5c0647748bf8fa4ff553c706e", null ] +]; \ No newline at end of file diff --git a/doc/html/structtesting_1_1internal_1_1_flat_tuple_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_index_sequence_3_01_idx_8_8_8_01_4_01_4.png b/doc/html/structtesting_1_1internal_1_1_flat_tuple_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_index_sequence_3_01_idx_8_8_8_01_4_01_4.png new file mode 100644 index 0000000000000000000000000000000000000000..ca4001f6b3ae942a59250799664c3b30281180df GIT binary patch literal 1387 zcmb`HX;4#F6vyvNqAVgd;fRlf99T<^P7_s z;OD(kf1N%6U?s)JGY|j>!E}Hw9y{-SI9!KaYXc4idug>=Opd6g+5DC~O#Ph*f-K7! z*oZxKlLP&N0A~6tdY%P;2>@Z9;<+z46+(-;c*B+kUPh$u1+7g2DLTuyxHMX_p~|iG zu!0ab**s(4UgPj%WT@!M$;&1AM6Y06ehET_1tuYS0Ro&oL=9v_EDIs_Cux*>U0$p| z6m?8A-BG2u&Q3Gzouvz=Jm~}1MgDta{#W}2L~@S~MD0G{i&K3)amP8`+*fR*qQzTZ zb!>b4Js8+NmNGn3H8xGQ2(?t4s%L7N{FgLc%c4Z<-&Dl&%-%am=F(;9<7qtbQdV&K zi5ueNc9%pGSd8QvxbY$nPK19t<(_q>+=}$lLhMsF;}R>6Dtug7s1f5It*K90)ICU( z<@#_0MBfja0V{4{&ZRl%@-?xcOf7g<;D14Wg2gD)Fv5gNG>Jc$IEHt3s2qRHn2tO@ z0S5SKy!UI1^@O(GhQ(Ep{#K)=jW+KD^l-IO>Mnb8u9;;#<%si+fwgumq@A4w7oHj< z+a{K01=Uv6a;T1Ldb*B0h#!^xHuJz>YSV(LS>I@;^yiL(PE%-p+<80`57W7fUNoFs zE!L9AiT1>7HOu?<9+RiMbp&piI*YBD`b=GQ^uFA-*05L5;QG;eaU`>_l3NjTe0_eW zZN1=m)GG@9^sQ{C?q zrx{f(KHb?Sj(F=)^Z78n0&KYH^nYe*?LpD6AZ(>%vhfWL?Se2-q@FFT4RZ&!@D(Zy zlBPci2~dk2gnQJJdwezF+j4^Ls<0d*%j(sZ9t>*_7()bP761q%1V=c6Bj{FOh7i3~ z|A%3T3zy~#>`L>m+yW)Q3TxuuKN!N>+7uJetNGbYn&HS$?Sc#qZ7YkwPkPehZeT2a z4DwsCg|lKuH^3tY$T;1}03px}xn8=_0R|dQn(sKZ{UjfHIsQ4LgagH^QyaZCz0=H% ze1|;rPWau$*EZV45!@~sFNjWRGx$^!KRW9O_QYak>lnrt#k0G2F{xZj&iN$@kNrjB zPiCpt`o0^if7dpya4Q{p(tp7Ct$c8)rj~uQekT&GNLkz(%u3_ltUfZq9Bai7MVk%_ zXQN^B6k5EN3}Uy2)UP9^t?aU37P`v z-OYVUp&P!>tB+aS{vM;2Q?494dNmexvi>z(WrEP-&N<*8yxH9(bN-4?dWP)ND|(9f z8723ek)D63+sWzZm_ekdgj~%E=Bjx7Afvdz1gVZ3514LfX1J{P>_gT~CL3~%NmH?3 z$M!Spg(V7m4$P)jw%!i2STXJ@O-~BgUlxaF?n2j852x*$S=)G)#R=a~n6rI%t5B8X zTDlzZ(D8t?#YH-keGL*q8(j)nrJ}vDkBFNc + + + + + + +uTL: testing::internal::FlatTupleElemBase< Derived, I > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    testing::internal::FlatTupleElemBase< Derived, I > Struct Template Reference
    +
    +
    + +

    #include <gtest.h>

    +

    Detailed Description

    +

    template<typename Derived, size_t I>
    +struct testing::internal::FlatTupleElemBase< Derived, I >

    + + +

    Definition at line 7696 of file gtest.h.

    +

    The documentation for this struct was generated from the following file:
      +
    • test/eclipse-cygwin/lib/gtest/gtest.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_flat_tuple_elem_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_i_01_4-members.html b/doc/html/structtesting_1_1internal_1_1_flat_tuple_elem_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_i_01_4-members.html new file mode 100644 index 0000000..df2a8b4 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_flat_tuple_elem_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_i_01_4-members.html @@ -0,0 +1,111 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    testing::internal::FlatTupleElemBase< FlatTuple< T... >, I > Member List
    +
    + +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_flat_tuple_elem_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_i_01_4.html b/doc/html/structtesting_1_1internal_1_1_flat_tuple_elem_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_i_01_4.html new file mode 100644 index 0000000..1a81531 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_flat_tuple_elem_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_i_01_4.html @@ -0,0 +1,235 @@ + + + + + + + +uTL: testing::internal::FlatTupleElemBase< FlatTuple< T... >, I > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    testing::internal::FlatTupleElemBase< FlatTuple< T... >, I > Struct Template Reference
    +
    +
    + +

    #include <gtest.h>

    + + + + +

    +Public Types

    using value_type = typename ElemFromList< I, typename MakeIndexSequence< sizeof...(T)>::type, T... >::type
     
    + + + + + +

    +Public Member Functions

     FlatTupleElemBase ()=default
     
     FlatTupleElemBase (value_type t)
     
    + + + +

    +Public Attributes

    value_type value
     
    +

    Detailed Description

    +

    template<typename... T, size_t I>
    +struct testing::internal::FlatTupleElemBase< FlatTuple< T... >, I >

    + + +

    Definition at line 7699 of file gtest.h.

    +

    Member Typedef Documentation

    + +

    ◆ value_type

    + +
    +
    +
    +template<typename... T, size_t I>
    + + + + +
    using testing::internal::FlatTupleElemBase< FlatTuple< T... >, I >::value_type = typename ElemFromList<I, typename MakeIndexSequence<sizeof...(T)>::type, T...>::type
    +
    + +

    Definition at line 7702 of file gtest.h.

    + +
    +
    +

    Constructor & Destructor Documentation

    + +

    ◆ FlatTupleElemBase() [1/2]

    + +
    +
    +
    +template<typename... T, size_t I>
    + + + + + +
    + + + + + + + +
    testing::internal::FlatTupleElemBase< FlatTuple< T... >, I >::FlatTupleElemBase ()
    +
    +default
    +
    + +
    +
    + +

    ◆ FlatTupleElemBase() [2/2]

    + +
    +
    +
    +template<typename... T, size_t I>
    + + + + + +
    + + + + + + + + +
    testing::internal::FlatTupleElemBase< FlatTuple< T... >, I >::FlatTupleElemBase (value_type t)
    +
    +inlineexplicit
    +
    + +

    Definition at line 7704 of file gtest.h.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ value

    + +
    +
    +
    +template<typename... T, size_t I>
    + + + + +
    value_type testing::internal::FlatTupleElemBase< FlatTuple< T... >, I >::value
    +
    + +

    Definition at line 7705 of file gtest.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • test/eclipse-cygwin/lib/gtest/gtest.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_flat_tuple_elem_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_i_01_4.js b/doc/html/structtesting_1_1internal_1_1_flat_tuple_elem_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_i_01_4.js new file mode 100644 index 0000000..da145b4 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_flat_tuple_elem_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_i_01_4.js @@ -0,0 +1,7 @@ +var structtesting_1_1internal_1_1_flat_tuple_elem_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_i_01_4 = +[ + [ "value_type", "structtesting_1_1internal_1_1_flat_tuple_elem_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_i_01_4.html#a6b87a445f87724f9363b348e6c697766", null ], + [ "FlatTupleElemBase", "structtesting_1_1internal_1_1_flat_tuple_elem_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_i_01_4.html#a7b460283c4ba5ad116a4305d05155546", null ], + [ "FlatTupleElemBase", "structtesting_1_1internal_1_1_flat_tuple_elem_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_i_01_4.html#a153da382b00977dfb5974f85dd31ea58", null ], + [ "value", "structtesting_1_1internal_1_1_flat_tuple_elem_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_i_01_4.html#ac175518e7807c0b49c0ba8c1c78269ec", null ] +]; \ No newline at end of file diff --git a/doc/html/structtesting_1_1internal_1_1_index_sequence-members.html b/doc/html/structtesting_1_1internal_1_1_index_sequence-members.html new file mode 100644 index 0000000..6bf3dda --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_index_sequence-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    testing::internal::IndexSequence< Is > Member List
    +
    +
    + +

    This is the complete list of members for testing::internal::IndexSequence< Is >, including all inherited members.

    + + +
    type typedeftesting::internal::IndexSequence< Is >
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_index_sequence.html b/doc/html/structtesting_1_1internal_1_1_index_sequence.html new file mode 100644 index 0000000..79e6a87 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_index_sequence.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: testing::internal::IndexSequence< Is > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    testing::internal::IndexSequence< Is > Struct Template Reference
    +
    +
    + +

    #include <gtest.h>

    + + + + +

    +Public Types

    using type = IndexSequence
     
    +

    Detailed Description

    +

    template<size_t... Is>
    +struct testing::internal::IndexSequence< Is >

    + + +

    Definition at line 7646 of file gtest.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<size_t... Is>
    + + + + +
    using testing::internal::IndexSequence< Is >::type = IndexSequence
    +
    + +

    Definition at line 7647 of file gtest.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • test/eclipse-cygwin/lib/gtest/gtest.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_index_sequence.js b/doc/html/structtesting_1_1internal_1_1_index_sequence.js new file mode 100644 index 0000000..26300d4 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_index_sequence.js @@ -0,0 +1,4 @@ +var structtesting_1_1internal_1_1_index_sequence = +[ + [ "type", "structtesting_1_1internal_1_1_index_sequence.html#a89bb13a7b5d169b69659f395dcec2b2d", null ] +]; \ No newline at end of file diff --git a/doc/html/structtesting_1_1internal_1_1_is_a_protocol_message-members.html b/doc/html/structtesting_1_1internal_1_1_is_a_protocol_message-members.html new file mode 100644 index 0000000..f41d09d --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_is_a_protocol_message-members.html @@ -0,0 +1,109 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_is_a_protocol_message.html b/doc/html/structtesting_1_1internal_1_1_is_a_protocol_message.html new file mode 100644 index 0000000..aed8077 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_is_a_protocol_message.html @@ -0,0 +1,137 @@ + + + + + + + +uTL: testing::internal::IsAProtocolMessage< T > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    testing::internal::IsAProtocolMessage< T > Struct Template Reference
    +
    +
    + +

    #include <gtest.h>

    +
    +Inheritance diagram for testing::internal::IsAProtocolMessage< T >:
    +
    +
    + + +testing::internal::bool_constant< ImplicitlyConvertible< const T *, const ::ProtocolMessage *>::value||ImplicitlyConvertible< const T *, const ::proto2::Message *>::value > + +
    + + + + + + + + +

    +Additional Inherited Members

    - Public Types inherited from testing::internal::bool_constant< ImplicitlyConvertible< const T *, const ::ProtocolMessage *>::value||ImplicitlyConvertible< const T *, const ::proto2::Message *>::value >
    typedef bool_constant< bool_value > type
     
    - Static Public Attributes inherited from testing::internal::bool_constant< ImplicitlyConvertible< const T *, const ::ProtocolMessage *>::value||ImplicitlyConvertible< const T *, const ::proto2::Message *>::value >
    static const bool value
     
    +

    Detailed Description

    +

    template<typename T>
    +struct testing::internal::IsAProtocolMessage< T >

    + + +

    Definition at line 7392 of file gtest.h.

    +

    The documentation for this struct was generated from the following file:
      +
    • test/eclipse-cygwin/lib/gtest/gtest.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_is_a_protocol_message.png b/doc/html/structtesting_1_1internal_1_1_is_a_protocol_message.png new file mode 100644 index 0000000000000000000000000000000000000000..fee50908d51178ee17101904d40ecf51769de82e GIT binary patch literal 1924 zcmdUudsNbC8pnUEjiu|Qsa(W7t25zr8U@WVFFWB*Df z4h}qOZfau+0Dw8x*9QjxMiPS#-ezRzVR2BpVXzMN4@H9@XppaG7SkCW|1hYJO)M6F zc3EX-z-?)`z!1RTv}y9Ep{@Y1btl&6+tBk6U73=_wKqe%UldM)-n3eI4qegiiSB#T z-@FTA)cXbh)s4np&-lXB{;#w*F6KI6G0dxQ7}jQc;)&k{^uG)CO$~hCs9JQk_G~zn zIeeUuyyRtjUs;p*>^e6k^TMSEL+T)A|7i@tM(|S6)6=nx43bgKOnPv>u3wS`R$O~_ zrJKTPBW{P+>`A*cElL3$+$dZU*6Wp<(5WV}6eH6u7H1tOxZldi#(ME&bHbn4a%4mH z$eUCU#Uo+m-Ih7<^rm^mnTKZ$p-aPaX-!UA$vnmMTk@6B8>OZD=fNQn9xqcp#0y(c z2mACiROX!OpV~HA5X{P}OUJNtEaElQS& z5>QQZo5oT2#yN;0Z$>+lw$&oqRIQ*}m$1w4$PU zO1QhxhRuD!G-O;ocC7ZM*>?343v-BAK}$^-P&1wPo)) z8ZMvC`tjW#%fa;`MUyHFhh04+BR5l#*deV)`4b!~R2M(7aspv#n`=kWyDy}Pkl-(` z;cuWG3$yYvHaBYJ=kphEl092rLQOevy%SXU>6>QkuP0$$ncu_7(f>pIIkNxL4-e?~ zWNf2D&c|;6)_~DTAg?RZ*aa{?8L_c0xDGL+L#(Y5VPe3V9z*ke9{X`BxSq7>iRt$H zh=z?evHS7wf&VW^Z`sQ$^7q@vDZ;t#;~j*HJL$k|j z+TJa~6&H+#G~+f_#qhQteG&bL!RK`?2;^Er82=Q)NYxvbgn!$}(>T;Go(qsjcLL*% z9&BL4YQ$As;9s1$k0@2vz*&{meIgO;0O(xieZdCdt$9YKZFDCzB$rfc#$z8~pe=rP zQccE*F`El=gMG`AeoMDR*9(ig^4x}x3)Uv3Uk>R-QGC|0Nr?qD(2*V`U_st;tp=Oh zn!|!}@;m}ki9Zo*SFW*Im&_3@JMgs8OU)u`EJSrlX!gV25PYe_AtEwi#j~<7L79C# zct&+)%}0WMQji}rGMbe!wMBW@QwSt?MjGEMtVZpS_fOA77H8oJ&~<)-NTz-Ic!DwQ zDt0_+I3AWiKp=z}IU=ZMPJ5cZXR?;tQ>J1Mr{|pRER&gzhu4$nf8pf1RIR3EMc=%7 zB*tvj)#de+`7DA|dOJh7fivo$e725X=){K|NA}tHLtl`% T15Vkc01Spj2l_M|Ihpe>1G + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    testing::internal::IsHashTable< T > Member List
    +
    +
    + +

    This is the complete list of members for testing::internal::IsHashTable< T >, including all inherited members.

    + + +
    valuetesting::internal::IsHashTable< T >static
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_is_hash_table.html b/doc/html/structtesting_1_1internal_1_1_is_hash_table.html new file mode 100644 index 0000000..3ec3676 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_is_hash_table.html @@ -0,0 +1,152 @@ + + + + + + + +uTL: testing::internal::IsHashTable< T > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    testing::internal::IsHashTable< T > Struct Template Reference
    +
    +
    + +

    #include <gtest.h>

    + + + + +

    +Static Public Attributes

    static const bool value = sizeof(test<T>(nullptr, nullptr)) == sizeof(int)
     
    +

    Detailed Description

    +

    template<typename T>
    +struct testing::internal::IsHashTable< T >

    + + +

    Definition at line 7442 of file gtest.h.

    +

    Member Data Documentation

    + +

    ◆ value

    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + +
    const bool testing::internal::IsHashTable< T >::value = sizeof(test<T>(nullptr, nullptr)) == sizeof(int)
    +
    +static
    +
    + +

    Definition at line 7452 of file gtest.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • test/eclipse-cygwin/lib/gtest/gtest.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_is_recursive_container.html b/doc/html/structtesting_1_1internal_1_1_is_recursive_container.html new file mode 100644 index 0000000..6335955 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_is_recursive_container.html @@ -0,0 +1,124 @@ + + + + + + + +uTL: testing::internal::IsRecursiveContainer< C > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    testing::internal::IsRecursiveContainer< C > Struct Template Reference
    +
    +
    + +

    #include <gtest.h>

    +
    +Inheritance diagram for testing::internal::IsRecursiveContainer< C >:
    +
    +
    + + + +
    +

    Detailed Description

    +

    template<typename C>
    +struct testing::internal::IsRecursiveContainer< C >

    + + +

    Definition at line 7485 of file gtest.h.

    +

    The documentation for this struct was generated from the following file:
      +
    • test/eclipse-cygwin/lib/gtest/gtest.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_is_recursive_container.png b/doc/html/structtesting_1_1internal_1_1_is_recursive_container.png new file mode 100644 index 0000000000000000000000000000000000000000..797cc48f6f301963fe6962ffc43e7876755eb1a5 GIT binary patch literal 916 zcmV;F18e+=P)vTJkN^MxkN^Mxkifve1&Q1r00008bW%=J0RR90|NsC0)yh;d0009cNkl{1**q>QMbn{0(x%x7IHx~Q^-~ieDU0lyc z*Xw`nX`OvwJ(AP(u&w{j5!&hD?d)ydwWq&U{=hc?zX6~%y}N0zB1N^~(OC|r_04p& z&trSz5IfcmybfUou)Yk>08|dJ+p>SGUp8v)Ao0N^$U*edX)9I&baSC$&CKu;T{Alvx9s(?!MstSk{(^P@c%okOl zPb(s_)(U`#$hXT~-WzpZL}aBO37{n>5s@$ICjuBVtcb{`_1^;!5&4%&00|%gh=|11 z3qUEQ1Qx)z>H{FMq67H&2u>h6fY<(G69^9=lVAc!005Dd001H@0RTi+0sx4t1OO0O z2>>9n5&%GCB>;fPN&oh)DD**sRRssO{PL)zhWKjU(Dgh*b1OO0M4Zz6Z^?ie; zcQ4tsAN$LZbOF|KY}}EX3t72X0{~d+T>!g&0gU{SZ@IdgyaG7zT#V}L5d^JE@8j$? zW6rBr6ZtE-kbL}e6$_*UJ8C23?>hQ zTlMHHo$05^FBDbZd#HW?h@Q zt^KMB)Cyy-fG$p|h}$I6s?}6C+>keSVgdlL)TatK!2hj10Jazd{2FaWfFC{pKVAD* q0N@uY0VIF~01#I%0Hu@?SbqSRGL^BmGj$yR0000 + + + + + + +uTL: testing::internal::IsRecursiveContainerImpl< C, bool > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    testing::internal::IsRecursiveContainerImpl< C, bool > Struct Template Reference
    +
    +
    + +

    #include <gtest.h>

    +

    Detailed Description

    +

    template<typename C, bool = sizeof(IsContainerTest<C>(0)) == sizeof(IsContainer)>
    +struct testing::internal::IsRecursiveContainerImpl< C, bool >

    + + +

    Definition at line 7460 of file gtest.h.

    +

    The documentation for this struct was generated from the following file:
      +
    • test/eclipse-cygwin/lib/gtest/gtest.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01false_01_4-members.html b/doc/html/structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01false_01_4-members.html new file mode 100644 index 0000000..aec6fee --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01false_01_4-members.html @@ -0,0 +1,109 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    testing::internal::IsRecursiveContainerImpl< C, false > Member List
    +
    + +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01false_01_4.html b/doc/html/structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01false_01_4.html new file mode 100644 index 0000000..2019bff --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01false_01_4.html @@ -0,0 +1,137 @@ + + + + + + + +uTL: testing::internal::IsRecursiveContainerImpl< C, false > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    testing::internal::IsRecursiveContainerImpl< C, false > Struct Template Reference
    +
    +
    + +

    #include <gtest.h>

    +
    +Inheritance diagram for testing::internal::IsRecursiveContainerImpl< C, false >:
    +
    +
    + + +testing::internal::bool_constant< bool_value > + +
    + + + + + + + + +

    +Additional Inherited Members

    - Public Types inherited from testing::internal::bool_constant< bool_value >
    typedef bool_constant< bool_value > type
     
    - Static Public Attributes inherited from testing::internal::bool_constant< bool_value >
    static const bool value = bool_value
     
    +

    Detailed Description

    +

    template<typename C>
    +struct testing::internal::IsRecursiveContainerImpl< C, false >

    + + +

    Definition at line 7463 of file gtest.h.

    +

    The documentation for this struct was generated from the following file:
      +
    • test/eclipse-cygwin/lib/gtest/gtest.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01false_01_4.png b/doc/html/structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01false_01_4.png new file mode 100644 index 0000000000000000000000000000000000000000..6149cd6cf6941d1fd1b47ce58bbdaeb314d8f356 GIT binary patch literal 1107 zcmeAS@N?(olHy`uVBq!ia0y~yV6+0V12~w0$>!dYm3)R^V!|J?pK1C@%Q$*Sv+CY>BXXP7O!TVuh4q+ z>&{Nu()%^L9k1{PJ>}bBey>z*&pEZ6_IHV6>bxmvS)sV^duAA1z-OFw* z<+Q$j`<7m4#Ppgp!~cI{4y|L`ACjn=8U9^n(vtlP%@=1sa+#Euz3+U!TZhWt==XiQ z{B0Ji{B5XHNK}1U9{>t7p}8upQ(mZOE^$%!RJ6U|d)Z{^vdmd}Tn~!BvQA*yvC4&A z;Ntc0P0Sn`7a3i?C`^CDuul6TBg@nW48U+_P*k;Qm>?wU;L*vaumq?yXc04q=0(Pq zDK99M{*_a*bjl>HrBhZfVpzfejBHdxwRTN=u=qdkmE4NyRkb^9&!loD#52!+ct+XX z?KQ)?Qtte_%HiKHFur-EwQKWhCX3#5x%s>YGAq2SGv=LNH2dNHeFuJ7u*b=6Vwsj` zp8oT{QQbd_q}wMhWxo+SyE>O~f8?wWRbOYnoxA+l{ICACcOOWwE-XK@j`K#^;=JPO z?8VEM1%JQcrr8snd|~Yco$R`8>kV$~yS=9@J>}n4&r=^&4J;hCng|?!@#aohk$XFn z-`~pYl-m}@=B@K*E!#nfG!})k}J{?NLsx7F9^{xNNxwP;V?{fex=hPfe$XAk)vx+eYDrIq!@)ky1x z^Oq-nZ@fI$+5AreL%kdOJ$JrxqgTfixj(pnVSYE?KcXRI5%Z4KNNM1UL%5gb${??u aE9&30I^Ip}l~Dth01Te4elF{r5}E*cV-Jh~ literal 0 HcmV?d00001 diff --git a/doc/html/structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01true_01_4-members.html b/doc/html/structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01true_01_4-members.html new file mode 100644 index 0000000..c103fb3 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01true_01_4-members.html @@ -0,0 +1,109 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    testing::internal::IsRecursiveContainerImpl< C, true > Member List
    +
    + +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01true_01_4.html b/doc/html/structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01true_01_4.html new file mode 100644 index 0000000..1d60686 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01true_01_4.html @@ -0,0 +1,164 @@ + + + + + + + +uTL: testing::internal::IsRecursiveContainerImpl< C, true > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    testing::internal::IsRecursiveContainerImpl< C, true > Struct Template Reference
    +
    +
    + +

    #include <gtest.h>

    + + + + + + +

    +Public Types

    using value_type = decltype(*std::declval< typename C::const_iterator >())
     
    using type = is_same< typename std::remove_const< typename std::remove_reference< value_type >::type >::type, C >
     
    +

    Detailed Description

    +

    template<typename C>
    +struct testing::internal::IsRecursiveContainerImpl< C, true >

    + + +

    Definition at line 7470 of file gtest.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename C >
    + + + + +
    using testing::internal::IsRecursiveContainerImpl< C, true >::type = is_same<typename std::remove_const< typename std::remove_reference<value_type>::type>::type, C>
    +
    + +

    Definition at line 7475 of file gtest.h.

    + +
    +
    + +

    ◆ value_type

    + +
    +
    +
    +template<typename C >
    + + + + +
    using testing::internal::IsRecursiveContainerImpl< C, true >::value_type = decltype(*std::declval<typename C::const_iterator>())
    +
    + +

    Definition at line 7471 of file gtest.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • test/eclipse-cygwin/lib/gtest/gtest.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01true_01_4.js b/doc/html/structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01true_01_4.js new file mode 100644 index 0000000..1f211d6 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01true_01_4.js @@ -0,0 +1,5 @@ +var structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01true_01_4 = +[ + [ "type", "structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01true_01_4.html#a24b611fbe1b9a7c524ee54ae01324388", null ], + [ "value_type", "structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01true_01_4.html#a5e8e2cf58f0d2581e9e3ab5f5630cd61", null ] +]; \ No newline at end of file diff --git a/doc/html/structtesting_1_1internal_1_1_is_same-members.html b/doc/html/structtesting_1_1internal_1_1_is_same-members.html new file mode 100644 index 0000000..51c2272 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_is_same-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    testing::internal::IsSame< T, U > Member List
    +
    +
    + +

    This is the complete list of members for testing::internal::IsSame< T, U >, including all inherited members.

    + + +
    value enum valuetesting::internal::IsSame< T, U >
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_is_same.html b/doc/html/structtesting_1_1internal_1_1_is_same.html new file mode 100644 index 0000000..b80dccc --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_is_same.html @@ -0,0 +1,148 @@ + + + + + + + +uTL: testing::internal::IsSame< T, U > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    testing::internal::IsSame< T, U > Struct Template Reference
    +
    +
    + +

    #include <gtest.h>

    + + + + +

    +Public Types

    enum  { value = false + }
     
    +

    Detailed Description

    +

    template<typename T, typename U>
    +struct testing::internal::IsSame< T, U >

    + + +

    Definition at line 1101 of file gtest.h.

    +

    Member Enumeration Documentation

    + +

    ◆ anonymous enum

    + +
    +
    +
    +template<typename T , typename U >
    + + + + +
    anonymous enum
    +
    + + +
    Enumerator
    value 
    + +

    Definition at line 1102 of file gtest.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • test/eclipse-cygwin/lib/gtest/gtest.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_is_same.js b/doc/html/structtesting_1_1internal_1_1_is_same.js new file mode 100644 index 0000000..93519dd --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_is_same.js @@ -0,0 +1,4 @@ +var structtesting_1_1internal_1_1_is_same = +[ + [ "value", "structtesting_1_1internal_1_1_is_same.html#a4dfd313ccff08905c7c36f990ab52e1ca58968a8c680eff4326a25fab55aa0a5e", null ] +]; \ No newline at end of file diff --git a/doc/html/structtesting_1_1internal_1_1_is_same_3_01_t_00_01_t_01_4-members.html b/doc/html/structtesting_1_1internal_1_1_is_same_3_01_t_00_01_t_01_4-members.html new file mode 100644 index 0000000..3cc5204 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_is_same_3_01_t_00_01_t_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    testing::internal::IsSame< T, T > Member List
    +
    +
    + +

    This is the complete list of members for testing::internal::IsSame< T, T >, including all inherited members.

    + + +
    value enum valuetesting::internal::IsSame< T, T >
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_is_same_3_01_t_00_01_t_01_4.html b/doc/html/structtesting_1_1internal_1_1_is_same_3_01_t_00_01_t_01_4.html new file mode 100644 index 0000000..c709972 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_is_same_3_01_t_00_01_t_01_4.html @@ -0,0 +1,148 @@ + + + + + + + +uTL: testing::internal::IsSame< T, T > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    testing::internal::IsSame< T, T > Struct Template Reference
    +
    +
    + +

    #include <gtest.h>

    + + + + +

    +Public Types

    enum  { value = true + }
     
    +

    Detailed Description

    +

    template<typename T>
    +struct testing::internal::IsSame< T, T >

    + + +

    Definition at line 1105 of file gtest.h.

    +

    Member Enumeration Documentation

    + +

    ◆ anonymous enum

    + +
    +
    +
    +template<typename T >
    + + + + +
    anonymous enum
    +
    + + +
    Enumerator
    value 
    + +

    Definition at line 1106 of file gtest.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • test/eclipse-cygwin/lib/gtest/gtest.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_is_same_3_01_t_00_01_t_01_4.js b/doc/html/structtesting_1_1internal_1_1_is_same_3_01_t_00_01_t_01_4.js new file mode 100644 index 0000000..0ea5089 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_is_same_3_01_t_00_01_t_01_4.js @@ -0,0 +1,4 @@ +var structtesting_1_1internal_1_1_is_same_3_01_t_00_01_t_01_4 = +[ + [ "value", "structtesting_1_1internal_1_1_is_same_3_01_t_00_01_t_01_4.html#a87b00ed787e27293dafab4afac29184ba0bb1c61b491e4e13216a3f9e9cd24c69", null ] +]; \ No newline at end of file diff --git a/doc/html/structtesting_1_1internal_1_1_iterator_traits-members.html b/doc/html/structtesting_1_1internal_1_1_iterator_traits-members.html new file mode 100644 index 0000000..4823c7a --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_iterator_traits-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    testing::internal::IteratorTraits< Iterator > Member List
    +
    +
    + +

    This is the complete list of members for testing::internal::IteratorTraits< Iterator >, including all inherited members.

    + + +
    value_type typedeftesting::internal::IteratorTraits< Iterator >
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_iterator_traits.html b/doc/html/structtesting_1_1internal_1_1_iterator_traits.html new file mode 100644 index 0000000..7613d54 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_iterator_traits.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: testing::internal::IteratorTraits< Iterator > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    testing::internal::IteratorTraits< Iterator > Struct Template Reference
    +
    +
    + +

    #include <gtest.h>

    + + + + +

    +Public Types

    typedef Iterator::value_type value_type
     
    +

    Detailed Description

    +

    template<typename Iterator>
    +struct testing::internal::IteratorTraits< Iterator >

    + + +

    Definition at line 2200 of file gtest.h.

    +

    Member Typedef Documentation

    + +

    ◆ value_type

    + +
    +
    +
    +template<typename Iterator >
    + + + + +
    typedef Iterator::value_type testing::internal::IteratorTraits< Iterator >::value_type
    +
    + +

    Definition at line 2201 of file gtest.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • test/eclipse-cygwin/lib/gtest/gtest.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_iterator_traits.js b/doc/html/structtesting_1_1internal_1_1_iterator_traits.js new file mode 100644 index 0000000..54b1344 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_iterator_traits.js @@ -0,0 +1,4 @@ +var structtesting_1_1internal_1_1_iterator_traits = +[ + [ "value_type", "structtesting_1_1internal_1_1_iterator_traits.html#a29de4320a9c53ce438d3561b94e515bb", null ] +]; \ No newline at end of file diff --git a/doc/html/structtesting_1_1internal_1_1_iterator_traits_3_01_t_01_5_01_4-members.html b/doc/html/structtesting_1_1internal_1_1_iterator_traits_3_01_t_01_5_01_4-members.html new file mode 100644 index 0000000..e7b36f3 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_iterator_traits_3_01_t_01_5_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    testing::internal::IteratorTraits< T * > Member List
    +
    +
    + +

    This is the complete list of members for testing::internal::IteratorTraits< T * >, including all inherited members.

    + + +
    value_type typedeftesting::internal::IteratorTraits< T * >
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_iterator_traits_3_01_t_01_5_01_4.html b/doc/html/structtesting_1_1internal_1_1_iterator_traits_3_01_t_01_5_01_4.html new file mode 100644 index 0000000..1e09014 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_iterator_traits_3_01_t_01_5_01_4.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: testing::internal::IteratorTraits< T * > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    testing::internal::IteratorTraits< T * > Struct Template Reference
    +
    +
    + +

    #include <gtest.h>

    + + + + +

    +Public Types

    typedef T value_type
     
    +

    Detailed Description

    +

    template<typename T>
    +struct testing::internal::IteratorTraits< T * >

    + + +

    Definition at line 2206 of file gtest.h.

    +

    Member Typedef Documentation

    + +

    ◆ value_type

    + +
    +
    +
    +template<typename T >
    + + + + +
    typedef T testing::internal::IteratorTraits< T * >::value_type
    +
    + +

    Definition at line 2207 of file gtest.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • test/eclipse-cygwin/lib/gtest/gtest.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_iterator_traits_3_01_t_01_5_01_4.js b/doc/html/structtesting_1_1internal_1_1_iterator_traits_3_01_t_01_5_01_4.js new file mode 100644 index 0000000..cdca4fd --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_iterator_traits_3_01_t_01_5_01_4.js @@ -0,0 +1,4 @@ +var structtesting_1_1internal_1_1_iterator_traits_3_01_t_01_5_01_4 = +[ + [ "value_type", "structtesting_1_1internal_1_1_iterator_traits_3_01_t_01_5_01_4.html#a7e46869ed36cc5aea898e243d270a8be", null ] +]; \ No newline at end of file diff --git a/doc/html/structtesting_1_1internal_1_1_iterator_traits_3_01const_01_t_01_5_01_4-members.html b/doc/html/structtesting_1_1internal_1_1_iterator_traits_3_01const_01_t_01_5_01_4-members.html new file mode 100644 index 0000000..36683c9 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_iterator_traits_3_01const_01_t_01_5_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    testing::internal::IteratorTraits< const T * > Member List
    +
    +
    + +

    This is the complete list of members for testing::internal::IteratorTraits< const T * >, including all inherited members.

    + + +
    value_type typedeftesting::internal::IteratorTraits< const T * >
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_iterator_traits_3_01const_01_t_01_5_01_4.html b/doc/html/structtesting_1_1internal_1_1_iterator_traits_3_01const_01_t_01_5_01_4.html new file mode 100644 index 0000000..0e743fb --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_iterator_traits_3_01const_01_t_01_5_01_4.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: testing::internal::IteratorTraits< const T * > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    testing::internal::IteratorTraits< const T * > Struct Template Reference
    +
    +
    + +

    #include <gtest.h>

    + + + + +

    +Public Types

    typedef T value_type
     
    +

    Detailed Description

    +

    template<typename T>
    +struct testing::internal::IteratorTraits< const T * >

    + + +

    Definition at line 2211 of file gtest.h.

    +

    Member Typedef Documentation

    + +

    ◆ value_type

    + +
    +
    +
    +template<typename T >
    + + + + +
    typedef T testing::internal::IteratorTraits< const T * >::value_type
    +
    + +

    Definition at line 2212 of file gtest.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • test/eclipse-cygwin/lib/gtest/gtest.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_iterator_traits_3_01const_01_t_01_5_01_4.js b/doc/html/structtesting_1_1internal_1_1_iterator_traits_3_01const_01_t_01_5_01_4.js new file mode 100644 index 0000000..481c5ec --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_iterator_traits_3_01const_01_t_01_5_01_4.js @@ -0,0 +1,4 @@ +var structtesting_1_1internal_1_1_iterator_traits_3_01const_01_t_01_5_01_4 = +[ + [ "value_type", "structtesting_1_1internal_1_1_iterator_traits_3_01const_01_t_01_5_01_4.html#ae7c8867223e106f374b56a7dc4a85547", null ] +]; \ No newline at end of file diff --git a/doc/html/structtesting_1_1internal_1_1_make_index_sequence.html b/doc/html/structtesting_1_1internal_1_1_make_index_sequence.html new file mode 100644 index 0000000..9a0a692 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_make_index_sequence.html @@ -0,0 +1,124 @@ + + + + + + + +uTL: testing::internal::MakeIndexSequence< N > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    testing::internal::MakeIndexSequence< N > Struct Template Reference
    +
    +
    + +

    #include <gtest.h>

    +
    +Inheritance diagram for testing::internal::MakeIndexSequence< N >:
    +
    +
    + + + +
    +

    Detailed Description

    +

    template<size_t N>
    +struct testing::internal::MakeIndexSequence< N >

    + + +

    Definition at line 7665 of file gtest.h.

    +

    The documentation for this struct was generated from the following file:
      +
    • test/eclipse-cygwin/lib/gtest/gtest.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_make_index_sequence.png b/doc/html/structtesting_1_1internal_1_1_make_index_sequence.png new file mode 100644 index 0000000000000000000000000000000000000000..edf1de7d0cc3c911bfadab55ca25f610a106fbca GIT binary patch literal 1318 zcmeAS@N?(olHy`uVBq!ia0y~yU_1z92XHV0$uJGO4j?5F;1lBd|Nnm=^TnI5rTvE{ z09jys;J^Xa&O7ozE=Ng_UoZnu5eQs86=KA|z_QiT#WAFU@$KA;O^+0KT>15j|Nrm5 zK6BdyhO1%jb9c=Ax^9}2f~893(kVefOQ#5hheJ_~4w4r_};ymb+s2)yo;mlk`^BUUN6DYI=|iRI0Ol{;l1<9~vb63ucDq z{}tN%>&fQC-dj)qr`62fw0BedZU6j=qK$tdtDCIny%%0{{GHsHkJk%@SMIizsgdZO zvAg{G;=&_mJTCm&&9bmAOg=|XC-~d7ANuxh*3N2qnRh$u-?6K2FK6{`-rM*=zed_F(qv@2l?J+LrzOo@zw32m8}k zn(sarJaZQRd2`LnSc|-8ERL5S++O_sd|&AQGrR2OZr{GHY{vs@hVWU(8Fs2Z=(<%T zuYER3_O9dkN{jD_*Fs_?)Gu13Ka1g;W%vHw{V#s!ytdEI3tsDdMR1Go-Mu%?9^93& zV$t=aNv0gC)<*T>r)K{qrdcRK81c zzx9)rtKVsp9sj+;;)lVVb#t>e-)7IBoyn5Tl)t@-H|90xTA|*{+nR5jd#$#u;HpQY zF>}wmWwYe$)=7wcUA`f-;6=^X6{2@*<<9jbXMYb+`L_7s`q%p;-2*1QyAsL0d6AxH z|7%UR`5EQS9w|fWs8IT#0NT3%ePhA9$fd=`_laDpZR`QnA9~dP+6+- zQr4?!l1QXyz$7JYPOqR8aN6NM806(SHOR|{v1ZFYh9CyVsVt04uU~5mG93vOV&PcB zeZYl7Ak0%hVcR5m2cVXQ6JAXWz|_VFG=s?{Oo*jpjS7cABv8SoNea|ZP-_QuQ9vNj zIf@uI>8sqxFR8qDb2o3iZA|UXzc(VE_wuNne#-xVQTO%z$=vT%ISNAAIoAp9>3(qj zbF*Va*}sw|d-K}8?{1%;Z?eYOZ27dr?P))^`~CYjOK8pdUF_RWCvE?{e{SyF6rLNo z+t(|0{deZu_F&ujH{stmuwCv8+A!br+_TVFv-?M-@=Z7RZQP!)>1~)<^v`W9@_MHj z+P~^G*|nMJ2wxK^c(rSV;*PzmQggR;?-kLle7pPQpR{{x%VzJH_pqC@?*GgQvPwJF z79L!kx*;_7dzNgi^GyC-SA>lc~5Ubg<4mPN_F+#u(0{;hM@2Ia7wx%};FXkc_AL)=nvA(kDh z?29Mu7Zz%e{-w + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    testing::internal::MakeIndexSequence< 0 > Member List
    +
    +
    + +

    This is the complete list of members for testing::internal::MakeIndexSequence< 0 >, including all inherited members.

    + + +
    type typedeftesting::internal::IndexSequence<>
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_make_index_sequence_3_010_01_4.html b/doc/html/structtesting_1_1internal_1_1_make_index_sequence_3_010_01_4.html new file mode 100644 index 0000000..b7e20ab --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_make_index_sequence_3_010_01_4.html @@ -0,0 +1,134 @@ + + + + + + + +uTL: testing::internal::MakeIndexSequence< 0 > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    testing::internal::MakeIndexSequence< 0 > Struct Template Reference
    +
    +
    + +

    #include <gtest.h>

    +
    +Inheritance diagram for testing::internal::MakeIndexSequence< 0 >:
    +
    +
    + + +testing::internal::IndexSequence<> + +
    + + + + + +

    +Additional Inherited Members

    - Public Types inherited from testing::internal::IndexSequence<>
    using type = IndexSequence
     
    +

    Detailed Description

    +

    template<>
    +struct testing::internal::MakeIndexSequence< 0 >

    + + +

    Definition at line 7670 of file gtest.h.

    +

    The documentation for this struct was generated from the following file:
      +
    • test/eclipse-cygwin/lib/gtest/gtest.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_make_index_sequence_3_010_01_4.png b/doc/html/structtesting_1_1internal_1_1_make_index_sequence_3_010_01_4.png new file mode 100644 index 0000000000000000000000000000000000000000..16d7279cc9293988ab65f8acc0f379568b98d241 GIT binary patch literal 913 zcmV;C18)3@P)vTJkN^MxkN^Mxkifve1&Q1r00008bW%=J0RR90|NsC0)yh;d0009ZNkl2mZc3$*X%6@3wy&bEofh~G{8g{pm#bcPzGy8yb>E)y-ls!9n>P#m8m|wM)Mntt zfImg|p51@CTyNa{)?D`$z8J74R+4P1=9LQX0)Ar}6~nf|*YCQm@NQyL?_XcxCFxXe z{q{=Q+lxv%OHwr5(3fRdLJHvb^aT)8 zanZlN!m`IjzmZ2}4~#x5JU~26bbx4@=m60)(E*}qq60+JL}^0n&<%0G|>T~X`%!Cf>KH;rbqx0HPHd0X`%x}Q$=rY;P!rSDSP+nt<}NuaInsA z(rvkxVt^+!-r@`$;8YjUwO>vn6l|2)|p zX3^_V^Wsj~_HEK}w=GXH8`xt9F1~|a&4Faw=&5bAaw*Z-nj-Z|<$Pu2EAd40;)=VLUp;-sT=Ic5FD`B(7cEdEMNIwJ1l>kx?V` zvc{cSBX&;^H&h~X=rCtSW1B~}eU)SFbV1(+d<~?5pGfTOzSrGlx28DsF5u7Ix2L@K z>Cn$jxqi^=gIss{crD-u=>5=W6PN3@%(YXxqVQy{`wCx9*fS@AZS{PYxV7;5`TbB1 z*e<)<3SYnLw!*uKO}!s|#P5990Z#Sg#}(i;dX*v9&=07%; n6CEI$COSYg-Oy7?DWv`ZwP!SuIgT7700000NkvXXu0mjf+#k<- literal 0 HcmV?d00001 diff --git a/doc/html/structtesting_1_1internal_1_1_param_name_gen_func-members.html b/doc/html/structtesting_1_1internal_1_1_param_name_gen_func-members.html new file mode 100644 index 0000000..6bf53ec --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_param_name_gen_func-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    testing::internal::ParamNameGenFunc< ParamType > Member List
    +
    +
    + +

    This is the complete list of members for testing::internal::ParamNameGenFunc< ParamType >, including all inherited members.

    + + +
    Type typedeftesting::internal::ParamNameGenFunc< ParamType >
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_param_name_gen_func.html b/doc/html/structtesting_1_1internal_1_1_param_name_gen_func.html new file mode 100644 index 0000000..ea28aad --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_param_name_gen_func.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: testing::internal::ParamNameGenFunc< ParamType > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    testing::internal::ParamNameGenFunc< ParamType > Struct Template Reference
    +
    +
    + +

    #include <gtest.h>

    + + + + +

    +Public Types

    typedef std::string Type(const TestParamInfo< ParamType > &)
     
    +

    Detailed Description

    +

    template<class ParamType>
    +struct testing::internal::ParamNameGenFunc< ParamType >

    + + +

    Definition at line 10929 of file gtest.h.

    +

    Member Typedef Documentation

    + +

    ◆ Type

    + +
    +
    +
    +template<class ParamType >
    + + + + +
    typedef std::string testing::internal::ParamNameGenFunc< ParamType >::Type(const TestParamInfo< ParamType > &)
    +
    + +

    Definition at line 10930 of file gtest.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • test/eclipse-cygwin/lib/gtest/gtest.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_param_name_gen_func.js b/doc/html/structtesting_1_1internal_1_1_param_name_gen_func.js new file mode 100644 index 0000000..29f0df1 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_param_name_gen_func.js @@ -0,0 +1,4 @@ +var structtesting_1_1internal_1_1_param_name_gen_func = +[ + [ "Type", "structtesting_1_1internal_1_1_param_name_gen_func.html#adf1ce5df22a930ae715082862d72590f", null ] +]; \ No newline at end of file diff --git a/doc/html/structtesting_1_1internal_1_1_relation_to_source_copy.html b/doc/html/structtesting_1_1internal_1_1_relation_to_source_copy.html new file mode 100644 index 0000000..6390789 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_relation_to_source_copy.html @@ -0,0 +1,113 @@ + + + + + + + +uTL: testing::internal::RelationToSourceCopy Struct Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    testing::internal::RelationToSourceCopy Struct Reference
    +
    +
    + +

    #include <gtest.h>

    +

    Detailed Description

    +
    +

    Definition at line 7568 of file gtest.h.

    +

    The documentation for this struct was generated from the following file:
      +
    • test/eclipse-cygwin/lib/gtest/gtest.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_relation_to_source_reference.html b/doc/html/structtesting_1_1internal_1_1_relation_to_source_reference.html new file mode 100644 index 0000000..578e6f4 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_relation_to_source_reference.html @@ -0,0 +1,113 @@ + + + + + + + +uTL: testing::internal::RelationToSourceReference Struct Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    testing::internal::RelationToSourceReference Struct Reference
    +
    +
    + +

    #include <gtest.h>

    +

    Detailed Description

    +
    +

    Definition at line 7567 of file gtest.h.

    +

    The documentation for this struct was generated from the following file:
      +
    • test/eclipse-cygwin/lib/gtest/gtest.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_remove_const-members.html b/doc/html/structtesting_1_1internal_1_1_remove_const-members.html new file mode 100644 index 0000000..1d4cbb9 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_remove_const-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    testing::internal::RemoveConst< T > Member List
    +
    +
    + +

    This is the complete list of members for testing::internal::RemoveConst< T >, including all inherited members.

    + + +
    type typedeftesting::internal::RemoveConst< T >
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_remove_const.html b/doc/html/structtesting_1_1internal_1_1_remove_const.html new file mode 100644 index 0000000..ba67327 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_remove_const.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: testing::internal::RemoveConst< T > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    testing::internal::RemoveConst< T > Struct Template Reference
    +
    +
    + +

    #include <gtest.h>

    + + + + +

    +Public Types

    typedef T type
     
    +

    Detailed Description

    +

    template<typename T>
    +struct testing::internal::RemoveConst< T >

    + + +

    Definition at line 7319 of file gtest.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename T>
    + + + + +
    typedef T testing::internal::RemoveConst< T >::type
    +
    + +

    Definition at line 7319 of file gtest.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • test/eclipse-cygwin/lib/gtest/gtest.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_remove_const.js b/doc/html/structtesting_1_1internal_1_1_remove_const.js new file mode 100644 index 0000000..540b6f3 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_remove_const.js @@ -0,0 +1,4 @@ +var structtesting_1_1internal_1_1_remove_const = +[ + [ "type", "structtesting_1_1internal_1_1_remove_const.html#a1be32027ea4edcc0d15abd59aba4a97f", null ] +]; \ No newline at end of file diff --git a/doc/html/structtesting_1_1internal_1_1_remove_const_3_01const_01_t[_n]_4-members.html b/doc/html/structtesting_1_1internal_1_1_remove_const_3_01const_01_t[_n]_4-members.html new file mode 100644 index 0000000..255b3b0 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_remove_const_3_01const_01_t[_n]_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    testing::internal::RemoveConst< const T[N]> Member List
    +
    +
    + +

    This is the complete list of members for testing::internal::RemoveConst< const T[N]>, including all inherited members.

    + + +
    type typedeftesting::internal::RemoveConst< const T[N]>
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_remove_const_3_01const_01_t[_n]_4.html b/doc/html/structtesting_1_1internal_1_1_remove_const_3_01const_01_t[_n]_4.html new file mode 100644 index 0000000..3fa2675 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_remove_const_3_01const_01_t[_n]_4.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: testing::internal::RemoveConst< const T[N]> Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    testing::internal::RemoveConst< const T[N]> Struct Template Reference
    +
    +
    + +

    #include <gtest.h>

    + + + + +

    +Public Types

    typedef RemoveConst< T >::type type[N]
     
    +

    Detailed Description

    +

    template<typename T, size_t N>
    +struct testing::internal::RemoveConst< const T[N]>

    + + +

    Definition at line 7327 of file gtest.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename T , size_t N>
    + + + + +
    typedef RemoveConst<T>::type testing::internal::RemoveConst< const T[N]>::type[N]
    +
    + +

    Definition at line 7328 of file gtest.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • test/eclipse-cygwin/lib/gtest/gtest.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_remove_const_3_01const_01_t[_n]_4.js b/doc/html/structtesting_1_1internal_1_1_remove_const_3_01const_01_t[_n]_4.js new file mode 100644 index 0000000..fcb8c51 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_remove_const_3_01const_01_t[_n]_4.js @@ -0,0 +1,4 @@ +var structtesting_1_1internal_1_1_remove_const_3_01const_01_t[_n]_4 = +[ + [ "type", "structtesting_1_1internal_1_1_remove_const_3_01const_01_t[_n]_4.html#ac976b53cb5d031a120fafbe790650068", null ] +]; \ No newline at end of file diff --git a/doc/html/structtesting_1_1internal_1_1_remove_const_3_01const_01_t_01_4-members.html b/doc/html/structtesting_1_1internal_1_1_remove_const_3_01const_01_t_01_4-members.html new file mode 100644 index 0000000..dddb6b1 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_remove_const_3_01const_01_t_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    testing::internal::RemoveConst< const T > Member List
    +
    +
    + +

    This is the complete list of members for testing::internal::RemoveConst< const T >, including all inherited members.

    + + +
    type typedeftesting::internal::RemoveConst< const T >
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_remove_const_3_01const_01_t_01_4.html b/doc/html/structtesting_1_1internal_1_1_remove_const_3_01const_01_t_01_4.html new file mode 100644 index 0000000..8e16e12 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_remove_const_3_01const_01_t_01_4.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: testing::internal::RemoveConst< const T > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    testing::internal::RemoveConst< const T > Struct Template Reference
    +
    +
    + +

    #include <gtest.h>

    + + + + +

    +Public Types

    typedef T type
     
    +

    Detailed Description

    +

    template<typename T>
    +struct testing::internal::RemoveConst< const T >

    + + +

    Definition at line 7321 of file gtest.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename T >
    + + + + +
    typedef T testing::internal::RemoveConst< const T >::type
    +
    + +

    Definition at line 7321 of file gtest.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • test/eclipse-cygwin/lib/gtest/gtest.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_remove_const_3_01const_01_t_01_4.js b/doc/html/structtesting_1_1internal_1_1_remove_const_3_01const_01_t_01_4.js new file mode 100644 index 0000000..cb0c7ef --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_remove_const_3_01const_01_t_01_4.js @@ -0,0 +1,4 @@ +var structtesting_1_1internal_1_1_remove_const_3_01const_01_t_01_4 = +[ + [ "type", "structtesting_1_1internal_1_1_remove_const_3_01const_01_t_01_4.html#ac88c6824d228ab05091e5a4f1c1a95fc", null ] +]; \ No newline at end of file diff --git a/doc/html/structtesting_1_1internal_1_1_remove_reference-members.html b/doc/html/structtesting_1_1internal_1_1_remove_reference-members.html new file mode 100644 index 0000000..af87e52 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_remove_reference-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    testing::internal::RemoveReference< T > Member List
    +
    +
    + +

    This is the complete list of members for testing::internal::RemoveReference< T >, including all inherited members.

    + + +
    type typedeftesting::internal::RemoveReference< T >
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_remove_reference.html b/doc/html/structtesting_1_1internal_1_1_remove_reference.html new file mode 100644 index 0000000..88b30dd --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_remove_reference.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: testing::internal::RemoveReference< T > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    testing::internal::RemoveReference< T > Struct Template Reference
    +
    +
    + +

    #include <gtest.h>

    + + + + +

    +Public Types

    typedef T type
     
    +

    Detailed Description

    +

    template<typename T>
    +struct testing::internal::RemoveReference< T >

    + + +

    Definition at line 7306 of file gtest.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename T >
    + + + + +
    typedef T testing::internal::RemoveReference< T >::type
    +
    + +

    Definition at line 7306 of file gtest.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • test/eclipse-cygwin/lib/gtest/gtest.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_remove_reference.js b/doc/html/structtesting_1_1internal_1_1_remove_reference.js new file mode 100644 index 0000000..4e64724 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_remove_reference.js @@ -0,0 +1,4 @@ +var structtesting_1_1internal_1_1_remove_reference = +[ + [ "type", "structtesting_1_1internal_1_1_remove_reference.html#a9ca4f6499579225f7986b789ee4b2895", null ] +]; \ No newline at end of file diff --git a/doc/html/structtesting_1_1internal_1_1_remove_reference_3_01_t_01_6_01_4-members.html b/doc/html/structtesting_1_1internal_1_1_remove_reference_3_01_t_01_6_01_4-members.html new file mode 100644 index 0000000..0f9812c --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_remove_reference_3_01_t_01_6_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    testing::internal::RemoveReference< T & > Member List
    +
    +
    + +

    This is the complete list of members for testing::internal::RemoveReference< T & >, including all inherited members.

    + + +
    type typedeftesting::internal::RemoveReference< T & >
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_remove_reference_3_01_t_01_6_01_4.html b/doc/html/structtesting_1_1internal_1_1_remove_reference_3_01_t_01_6_01_4.html new file mode 100644 index 0000000..8a91ac9 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_remove_reference_3_01_t_01_6_01_4.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: testing::internal::RemoveReference< T & > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    testing::internal::RemoveReference< T & > Struct Template Reference
    +
    +
    + +

    #include <gtest.h>

    + + + + +

    +Public Types

    typedef T type
     
    +

    Detailed Description

    +

    template<typename T>
    +struct testing::internal::RemoveReference< T & >

    + + +

    Definition at line 7308 of file gtest.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename T >
    + + + + +
    typedef T testing::internal::RemoveReference< T & >::type
    +
    + +

    Definition at line 7308 of file gtest.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • test/eclipse-cygwin/lib/gtest/gtest.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_remove_reference_3_01_t_01_6_01_4.js b/doc/html/structtesting_1_1internal_1_1_remove_reference_3_01_t_01_6_01_4.js new file mode 100644 index 0000000..9398dda --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_remove_reference_3_01_t_01_6_01_4.js @@ -0,0 +1,4 @@ +var structtesting_1_1internal_1_1_remove_reference_3_01_t_01_6_01_4 = +[ + [ "type", "structtesting_1_1internal_1_1_remove_reference_3_01_t_01_6_01_4.html#a3d0f32a66759f333c2dd66aa31005e6d", null ] +]; \ No newline at end of file diff --git a/doc/html/structtesting_1_1internal_1_1_static_assert_type_eq_helper.html b/doc/html/structtesting_1_1internal_1_1_static_assert_type_eq_helper.html new file mode 100644 index 0000000..f3ea779 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_static_assert_type_eq_helper.html @@ -0,0 +1,116 @@ + + + + + + + +uTL: testing::internal::StaticAssertTypeEqHelper< T1, T2 > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    testing::internal::StaticAssertTypeEqHelper< T1, T2 > Struct Template Reference
    +
    +
    + +

    #include <gtest.h>

    +

    Detailed Description

    +

    template<typename T1, typename T2>
    +struct testing::internal::StaticAssertTypeEqHelper< T1, T2 >

    + + +

    Definition at line 1092 of file gtest.h.

    +

    The documentation for this struct was generated from the following file:
      +
    • test/eclipse-cygwin/lib/gtest/gtest.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_static_assert_type_eq_helper_3_01_t_00_01_t_01_4-members.html b/doc/html/structtesting_1_1internal_1_1_static_assert_type_eq_helper_3_01_t_00_01_t_01_4-members.html new file mode 100644 index 0000000..dc2697c --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_static_assert_type_eq_helper_3_01_t_00_01_t_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    testing::internal::StaticAssertTypeEqHelper< T, T > Member List
    +
    +
    + +

    This is the complete list of members for testing::internal::StaticAssertTypeEqHelper< T, T >, including all inherited members.

    + + +
    value enum valuetesting::internal::StaticAssertTypeEqHelper< T, T >
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_static_assert_type_eq_helper_3_01_t_00_01_t_01_4.html b/doc/html/structtesting_1_1internal_1_1_static_assert_type_eq_helper_3_01_t_00_01_t_01_4.html new file mode 100644 index 0000000..8dd6e0d --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_static_assert_type_eq_helper_3_01_t_00_01_t_01_4.html @@ -0,0 +1,148 @@ + + + + + + + +uTL: testing::internal::StaticAssertTypeEqHelper< T, T > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    testing::internal::StaticAssertTypeEqHelper< T, T > Struct Template Reference
    +
    +
    + +

    #include <gtest.h>

    + + + + +

    +Public Types

    enum  { value = true + }
     
    +

    Detailed Description

    +

    template<typename T>
    +struct testing::internal::StaticAssertTypeEqHelper< T, T >

    + + +

    Definition at line 1095 of file gtest.h.

    +

    Member Enumeration Documentation

    + +

    ◆ anonymous enum

    + +
    +
    +
    +template<typename T >
    + + + + +
    anonymous enum
    +
    + + +
    Enumerator
    value 
    + +

    Definition at line 1096 of file gtest.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • test/eclipse-cygwin/lib/gtest/gtest.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_static_assert_type_eq_helper_3_01_t_00_01_t_01_4.js b/doc/html/structtesting_1_1internal_1_1_static_assert_type_eq_helper_3_01_t_00_01_t_01_4.js new file mode 100644 index 0000000..a77e41b --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_static_assert_type_eq_helper_3_01_t_00_01_t_01_4.js @@ -0,0 +1,4 @@ +var structtesting_1_1internal_1_1_static_assert_type_eq_helper_3_01_t_00_01_t_01_4 = +[ + [ "value", "structtesting_1_1internal_1_1_static_assert_type_eq_helper_3_01_t_00_01_t_01_4.html#a70d7e229f58313a1086e819dd09b652da63c475f543e4e977d43c5093dd2b7f3f", null ] +]; \ No newline at end of file diff --git a/doc/html/structtesting_1_1internal_1_1_suite_api_resolver-members.html b/doc/html/structtesting_1_1internal_1_1_suite_api_resolver-members.html new file mode 100644 index 0000000..bca84b8 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_suite_api_resolver-members.html @@ -0,0 +1,110 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    testing::internal::SuiteApiResolver< T > Member List
    +
    + +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_suite_api_resolver.html b/doc/html/structtesting_1_1internal_1_1_suite_api_resolver.html new file mode 100644 index 0000000..55d63e7 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_suite_api_resolver.html @@ -0,0 +1,219 @@ + + + + + + + +uTL: testing::internal::SuiteApiResolver< T > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    testing::internal::SuiteApiResolver< T > Struct Template Reference
    +
    +
    + +

    #include <gtest.h>

    +
    +Inheritance diagram for testing::internal::SuiteApiResolver< T >:
    +
    +
    + + + +
    + + + + +

    +Public Types

    using Test = typename std::conditional< sizeof(T) !=0, ::testing::Test, void >::type
     
    + + + + + +

    +Static Public Member Functions

    static SetUpTearDownSuiteFuncType GetSetUpCaseOrSuite ()
     
    static SetUpTearDownSuiteFuncType GetTearDownCaseOrSuite ()
     
    +

    Detailed Description

    +

    template<typename T>
    +struct testing::internal::SuiteApiResolver< T >

    + + +

    Definition at line 6952 of file gtest.h.

    +

    Member Typedef Documentation

    + +

    ◆ Test

    + +
    +
    +
    +template<typename T >
    + + + + +
    using testing::internal::SuiteApiResolver< T >::Test = typename std::conditional<sizeof(T) != 0, ::testing::Test, void>::type
    +
    + +

    Definition at line 6956 of file gtest.h.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ GetSetUpCaseOrSuite()

    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + +
    static SetUpTearDownSuiteFuncType testing::internal::SuiteApiResolver< T >::GetSetUpCaseOrSuite ()
    +
    +inlinestatic
    +
    + +

    Definition at line 6958 of file gtest.h.

    + +
    +
    + +

    ◆ GetTearDownCaseOrSuite()

    + +
    +
    +
    +template<typename T >
    + + + + + +
    + + + + + + + +
    static SetUpTearDownSuiteFuncType testing::internal::SuiteApiResolver< T >::GetTearDownCaseOrSuite ()
    +
    +inlinestatic
    +
    + +

    Definition at line 6971 of file gtest.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • test/eclipse-cygwin/lib/gtest/gtest.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1_suite_api_resolver.js b/doc/html/structtesting_1_1internal_1_1_suite_api_resolver.js new file mode 100644 index 0000000..163eb12 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_suite_api_resolver.js @@ -0,0 +1,4 @@ +var structtesting_1_1internal_1_1_suite_api_resolver = +[ + [ "Test", "structtesting_1_1internal_1_1_suite_api_resolver.html#a343c36f492a946d302b1cfc930266768", null ] +]; \ No newline at end of file diff --git a/doc/html/structtesting_1_1internal_1_1_suite_api_resolver.png b/doc/html/structtesting_1_1internal_1_1_suite_api_resolver.png new file mode 100644 index 0000000000000000000000000000000000000000..9b0d3fff6d692e46b5967d290764a556c3aed98e GIT binary patch literal 637 zcmeAS@N?(olHy`uVBq!ia0vp^&wx09gBeI#ssDTkq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0csyMkLn;{G&b?i<+JMJ(dfcY}|NC#N z9Gj+J@WLmvx$HA$rP%9JG|F5q_EETJ1)Y__fsJmvmzapw89GUsEG?{+OVJo7(kv&@=h zv)^R~@0eq>HjUTHJ*Fq^!kec0TvPG%%euF3`c^NnocnTF<+q$)GEezVzTA8>{nn)D zyPoDBmiFbIuBa6%d4K(V8h6m`omXvUW@gX6rvKnn;WAc>CvU15;-BAop>Dc+Gv|l5 ye>l(nGGyP;vVS4x2m8s;pti9;otAd-CxiOc{>__2{7ivqg~8L+&t;ucLK6TxUoXA@ literal 0 HcmV?d00001 diff --git a/doc/html/structtesting_1_1internal_1_1_wrap_printer_type.html b/doc/html/structtesting_1_1internal_1_1_wrap_printer_type.html new file mode 100644 index 0000000..26a0509 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1_wrap_printer_type.html @@ -0,0 +1,116 @@ + + + + + + + +uTL: testing::internal::WrapPrinterType< type > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    testing::internal::WrapPrinterType< type > Struct Template Reference
    +
    +
    + +

    #include <gtest.h>

    +

    Detailed Description

    +

    template<DefaultPrinterType type>
    +struct testing::internal::WrapPrinterType< type >

    + + +

    Definition at line 8440 of file gtest.h.

    +

    The documentation for this struct was generated from the following file:
      +
    • test/eclipse-cygwin/lib/gtest/gtest.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1bool__constant-members.html b/doc/html/structtesting_1_1internal_1_1bool__constant-members.html new file mode 100644 index 0000000..d24ee55 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1bool__constant-members.html @@ -0,0 +1,109 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    testing::internal::bool_constant< bool_value > Member List
    +
    +
    + +

    This is the complete list of members for testing::internal::bool_constant< bool_value >, including all inherited members.

    + + + +
    type typedeftesting::internal::bool_constant< bool_value >
    valuetesting::internal::bool_constant< bool_value >static
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1bool__constant.html b/doc/html/structtesting_1_1internal_1_1bool__constant.html new file mode 100644 index 0000000..6ac777e --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1bool__constant.html @@ -0,0 +1,188 @@ + + + + + + + +uTL: testing::internal::bool_constant< bool_value > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    testing::internal::bool_constant< bool_value > Struct Template Reference
    +
    +
    + +

    #include <gtest.h>

    +
    +Inheritance diagram for testing::internal::bool_constant< bool_value >:
    +
    +
    + + +testing::internal::is_same< T, U > +testing::internal::is_same< T, T > +testing::internal::IsRecursiveContainerImpl< C, false > + +
    + + + + +

    +Public Types

    typedef bool_constant< bool_value > type
     
    + + + +

    +Static Public Attributes

    static const bool value = bool_value
     
    +

    Detailed Description

    +

    template<bool bool_value>
    +struct testing::internal::bool_constant< bool_value >

    + + +

    Definition at line 2184 of file gtest.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<bool bool_value>
    + + + + +
    typedef bool_constant<bool_value> testing::internal::bool_constant< bool_value >::type
    +
    + +

    Definition at line 2185 of file gtest.h.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ value

    + +
    +
    +
    +template<bool bool_value>
    + + + + + +
    + + + + +
    const bool testing::internal::bool_constant< bool_value >::value = bool_value
    +
    +static
    +
    + +

    Definition at line 2186 of file gtest.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • test/eclipse-cygwin/lib/gtest/gtest.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1bool__constant.js b/doc/html/structtesting_1_1internal_1_1bool__constant.js new file mode 100644 index 0000000..00b81c9 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1bool__constant.js @@ -0,0 +1,4 @@ +var structtesting_1_1internal_1_1bool__constant = +[ + [ "type", "structtesting_1_1internal_1_1bool__constant.html#aba6d09ecf7eecea6c93480f0d627a167", null ] +]; \ No newline at end of file diff --git a/doc/html/structtesting_1_1internal_1_1bool__constant.png b/doc/html/structtesting_1_1internal_1_1bool__constant.png new file mode 100644 index 0000000000000000000000000000000000000000..93e703ecebc50f4aad904d96a1f798ee026202bc GIT binary patch literal 1922 zcmb_beLU0q9{;VSb_{vAybzsM9%?oZr^_j#Vmq1RaptC&heI^P9AQdQr(sFU#<)7j z*(BAmF^j{A-HldB9Absr&bI5JLz#z)F!wj^-}l@GYB(&?g`pttb|g+eXb z*q7iZ>>S=d7yyGbYv>u_D*)JTfWsUkP$2Irr&)ZYKBlGnRLA<>YMesrrm0rZoLgxs zy|@`&LR^dlp#4Xs>6LHW8b;x{5J#X)?z8o-Py{i}O-!}kLWq(BIzmCKAq2@I1KWN- z6;1<;Lk|K_GP(hitBtbAg|xDEl$NirX0A=#$f7upFUB|}Fda;ey%sh+AM$UeLO}XV zi=z z$ojS7@gO7@{Ys?C?U5<}rGJvWh;BCxH=qv~ST3t5KG$8UT%X)PNv6O1+~l6-adTqJ zz8E+Ztp0V3T=0`a+a3geU?3XKHfGPqDoNdJES$@o;M2}VYxb}cwYqd2`)Ej{ba(2j zv4IDq6)@ZbXmXF(oU5I_6@uyL7d!ouHsyw?{5yhrxWtkhRf~j|+48vX9VYh4-nVo& z0`9+#lj}9bB($WUe{AHb+zvFXsMd&s1drHV9d-Npx^LN+H*z{xqgEfxp6K1tYo9Si zDXp++vz;)r)S{Ev!DDs{bM?|2%XP^WX77V1p3Vnfn`@S^G>vOz4g0Lh{?>%ni2@pG zYYi9PZ|i>+X_uW1=uQ0od^6&X&tXX-&`IBj=`Mu@UZz4F0jc7DoF`G5erLKZ*#X!l z1Wa>(+yz>&MYc&`qoRQK-^fPA8e~i-%v6K7&rL>M*zhhygZ%*`y^^9dk;(a*{5ryS zJaF`2;g*|oZxNepa|DN&p&2D8qqiwD`X92}W|~d1{q5P6H;Wf#w>oB5dH_e@LgP8$ zY^YbR%LBwwW0u}+-9%V_p7Ykbq5(*Av@T?Xmj{G|x^BQbhxKo3f4f}+pAnmHAw<6g zG_Zz^L|Goyz#u!2S_{>{8umTj|5Ln3Htcv+KZoT38skJ$PuST|vA*Y-A9mxuVSF?w ztF|)3jpRF*a9on2arZ>ywm7gdT!Pqy#X*MWFka^U33P);w%zZcZdjsCAOwa5mYQ3Wd9$ z6ij3wpKkqyO|>SKIuue`uk1vFzh?yG5BO)9IX;4ahzh&1R*E@aTSUnx)lNx!l+wvJ zhjhCYkMfuoA})EUlqCg~GybHPtzO)eq86UY60@2|?W_?KbOzHN|8}xio?z}9+^eXi z2gI58#s|zQ@oQKEy_H5DYgW zkrS7sSl`4@M#cUNIX~UB5FsEj5GP0;z3s>3bA|ZN)=VBBw>jRcSx`r zg)y`0nT9O9^?kdS(KgbD_SxQ$sxxxgUz{F!;KUA7D(Q1Yhg*JJ=B0<^s@pt7$>|p* z_F)J8Dt^xCSlb7u-$P-DLGB^nhYs`nuz2)z+_h^)r>zAEaxZNa1-{-|01xWxSHWGo zI?K=&67=4}H8(upvAULeqU9OML>au@J>t-TwH-5}p31d_$A2fC78xPfj zS98S{2ko53cjfpg;!+=fb-uDm5`Um*(#SIHkHrstbNo69=Qlehr)00@_*keXtVu@k z9?PNdZwHX;oC0I>h`JxF1oNbi#`oR+De87V&iJT$#ZDNRs^_j0nyBNkWA$=`tM|a^ z?DC7fiWjpY=a9X)BYj`Dt2&X22;CH}_=~|KG7)1jVBQbZ>@4_`Yw%w#j~Zp+3A4GX ppJ7-U2}6|Yd%mJM>maVWsG&yJpGejk{pSF1;jsRg2G6J~{|3~haohj^ literal 0 HcmV?d00001 diff --git a/doc/html/structtesting_1_1internal_1_1faketype.html b/doc/html/structtesting_1_1internal_1_1faketype.html new file mode 100644 index 0000000..1e48cc8 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1faketype.html @@ -0,0 +1,113 @@ + + + + + + + +uTL: testing::internal::faketype Struct Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    testing::internal::faketype Struct Reference
    +
    +
    + +

    #include <gtest.h>

    +

    Detailed Description

    +
    +

    Definition at line 16105 of file gtest.h.

    +

    The documentation for this struct was generated from the following file:
      +
    • test/eclipse-cygwin/lib/gtest/gtest.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1is__same-members.html b/doc/html/structtesting_1_1internal_1_1is__same-members.html new file mode 100644 index 0000000..9eb4976 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1is__same-members.html @@ -0,0 +1,109 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    testing::internal::is_same< T, U > Member List
    +
    +
    + +

    This is the complete list of members for testing::internal::is_same< T, U >, including all inherited members.

    + + + +
    type typedeftesting::internal::bool_constant< bool_value >
    valuetesting::internal::bool_constant< bool_value >static
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1is__same.html b/doc/html/structtesting_1_1internal_1_1is__same.html new file mode 100644 index 0000000..bf63d22 --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1is__same.html @@ -0,0 +1,137 @@ + + + + + + + +uTL: testing::internal::is_same< T, U > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    testing::internal::is_same< T, U > Struct Template Reference
    +
    +
    + +

    #include <gtest.h>

    +
    +Inheritance diagram for testing::internal::is_same< T, U >:
    +
    +
    + + +testing::internal::bool_constant< bool_value > + +
    + + + + + + + + +

    +Additional Inherited Members

    - Public Types inherited from testing::internal::bool_constant< bool_value >
    typedef bool_constant< bool_value > type
     
    - Static Public Attributes inherited from testing::internal::bool_constant< bool_value >
    static const bool value = bool_value
     
    +

    Detailed Description

    +

    template<typename T, typename U>
    +struct testing::internal::is_same< T, U >

    + + +

    Definition at line 2194 of file gtest.h.

    +

    The documentation for this struct was generated from the following file:
      +
    • test/eclipse-cygwin/lib/gtest/gtest.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1is__same.png b/doc/html/structtesting_1_1internal_1_1is__same.png new file mode 100644 index 0000000000000000000000000000000000000000..659be1622a46c93f26d60352499327609ac363c9 GIT binary patch literal 842 zcmeAS@N?(olHy`uVBq!ia0vp^&w)6AgBeI(eLCqrkdg@S332`Z|38rV;?396{zDUh zEHFNB-~emq9eE&^qa?^Lm;tB=1g@S6F=Aj~y6NfS7*fIbcJAA0s}*=$&5v(=_E-Mr zHmw;htG3KNcgJzroRtYbZg_h9H}bt)!f5Cj^j&Jsq$~Yw%T>NEJ~UJ1X4&iG3*Vl7 z=Q*kA)ag}MA6{v9+wCluf9Zs#XZx>QzstE#eaf$&`7fq_SN{2gX^PeFQg57%v|Ii0 z@97)2AO0vae|P>tTe!DD!CH>b_lB^}6VS&a=61Kbc8yxf1PZ6>?dB zp32|pS&w-HCoI`+D&Di|z3R)|S0&ERx1OL<>+rTx+p|8rIe5~qiw~wOsVjLrXIbW} zcn15m`VHJKl;*_8UuW3M@tpUw(1P%XGGE0OsPpRU}sGp4ZuKvPjZ-sV*RddZ{+SEH~g~|5d zZL{Vkixt^fK3G%nwDR2DOs5(dF3vfJ-u9XAb&`>}CU&0rlJL2&x1MjwesrdI&9oM~ z^S4=|Xa9cqM!oX)gfBMps@>-w-+UnCQqt*TpS?HP|89R2xi{jO*S4p*t)Cy%9c#6# zv#;IDdv)QLB*B}n)}Fo{(v2%~iWA*Q7BElpf$LSn>XcElWk*`S*XcmhYa= zus&m*NiSpN<%9aiKTrM4_-E3+lhF + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    testing::internal::is_same< T, T > Member List
    +
    +
    + +

    This is the complete list of members for testing::internal::is_same< T, T >, including all inherited members.

    + + + +
    type typedeftesting::internal::bool_constant< bool_value >
    valuetesting::internal::bool_constant< bool_value >static
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1is__same_3_01_t_00_01_t_01_4.html b/doc/html/structtesting_1_1internal_1_1is__same_3_01_t_00_01_t_01_4.html new file mode 100644 index 0000000..1ace8cf --- /dev/null +++ b/doc/html/structtesting_1_1internal_1_1is__same_3_01_t_00_01_t_01_4.html @@ -0,0 +1,137 @@ + + + + + + + +uTL: testing::internal::is_same< T, T > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    testing::internal::is_same< T, T > Struct Template Reference
    +
    +
    + +

    #include <gtest.h>

    +
    +Inheritance diagram for testing::internal::is_same< T, T >:
    +
    +
    + + +testing::internal::bool_constant< bool_value > + +
    + + + + + + + + +

    +Additional Inherited Members

    - Public Types inherited from testing::internal::bool_constant< bool_value >
    typedef bool_constant< bool_value > type
     
    - Static Public Attributes inherited from testing::internal::bool_constant< bool_value >
    static const bool value = bool_value
     
    +

    Detailed Description

    +

    template<typename T>
    +struct testing::internal::is_same< T, T >

    + + +

    Definition at line 2197 of file gtest.h.

    +

    The documentation for this struct was generated from the following file:
      +
    • test/eclipse-cygwin/lib/gtest/gtest.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structtesting_1_1internal_1_1is__same_3_01_t_00_01_t_01_4.png b/doc/html/structtesting_1_1internal_1_1is__same_3_01_t_00_01_t_01_4.png new file mode 100644 index 0000000000000000000000000000000000000000..c80e36478a46f8713718e0e0c891219d1209f9af GIT binary patch literal 826 zcmeAS@N?(olHy`uVBq!ia0vp^kAOIUgBeH~pNX6eq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0PI|gHhEy=Vo%?p$5(OUC?$?%||Ml;A z%g)6(v8*c1T<`Loz$AyRmLJnIXDv(b_M9|tO{0eAJyQYIle^1~C}`%c-)Ac8-(~G- zbW1*L?<{BkxjhTBC#fw`F@4Hy*kYOUdH>H%_w*X?_`aMJUTl{3H}~9U)sOyXzhx$# zzdm86`T3j&zaEu3ecmH<^sKRm`|7(h&zV(cg$7(&V`Y;Lf6q}| z*1e^fn~PO*a-+sgt|P0a&((?Ry1R1Srw^wEp6~y$LENy8KVvD3 z?rz)?=wrP%&?JAez;=Px+&lV`7%OVUCKr5F%WC{_EmG%tz_a|^`08^>ae>>VWC=^XmGSH}9O2zhdWi72TcRpY&Bg_4s=IK<$p+%^B*yPHvtN9umy* zZQfc@ch|E*rR%3$+!+@ryxz_A?H_@7B_@-vo$qB1{I2?Z_PfC5%^U^p-j10n5)Qua y`*uhkwf1KIA-!w<3I;tBSjYhrnt + + + + + + +uTL: utl::_1wire_i_det::is_1wire_< _Tp, typename > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::_1wire_i_det::is_1wire_< _Tp, typename > Struct Template Reference
    +
    +
    + +

    Primary template to catch any non 1-wire interface types. + More...

    + +

    #include <_1wire.h>

    +
    +Inheritance diagram for utl::_1wire_i_det::is_1wire_< _Tp, typename >:
    +
    +
    + + + +
    +

    Detailed Description

    +

    template<typename _Tp, typename = void>
    +struct utl::_1wire_i_det::is_1wire_< _Tp, typename >

    + +

    Primary template to catch any non 1-wire interface types.

    + +

    Definition at line 684 of file _1wire.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1__1wire__i__det_1_1is__1wire__.png b/doc/html/structutl_1_1__1wire__i__det_1_1is__1wire__.png new file mode 100644 index 0000000000000000000000000000000000000000..6dc3d2d2fb0a2f84d88daf0036d73828fd238169 GIT binary patch literal 755 zcmeAS@N?(olHy`uVBq!ia0y~yVB`m~12~w0q(L0REFdKj;1lBd|Nnm=^TnI5rTvE{ z09jys;J^Xa&O7ozE=Ng_UoZnu5eQs86=KA|z|`dF;uuoF_;&8yOREe7Sgg&@{oemE zP|-lq@#rS5eOArJr~L1<_>~oVYc4%<+HvBN3cEwjlQeBqW!XCI@Omt^LN>$?LHT$v;6sKFC`nfpMlel&aq2ZKjZr8sK3ffljU_D zMsw%sf1mtDe^QBW{DkA1SIyfRu*nW?G{T~n=N3;1dQ`;_bI`oO!iJ&hejcNc9E0=y zLKcq-hBp=_48au)%RVspJY<}4h}oc(J%Nk=fQVd!rVSYqms2aI1bOX|5oy@5uI~dw z7~HhX(~s+}GQXO|khAA{n&odj9f#Mu_!)ZZjMvM5kSOK*aEe*ZVR8PUeO*73<@)FU zK3c#$Z=P=MtMboobynLeZQ^eGZ0~DheetK}pTrxs_cCkjW-^tAfBk*lwul7Dw~?SFo8%GP$EN+^(<%JgzFAy~rkB=AmJ& z+vFYF?SB1Dovr`=kX)3!x9BatggN^b$IWR^l}d<;U&;`@f35uOpVmU(0{&*Kz7Y5A z%TJ?K@>|bb*;!@(q5s=-vj+&r`ur_ literal 0 HcmV?d00001 diff --git a/doc/html/structutl_1_1__1wire__i__det_1_1is__1wire___3_01___tp_00_01meta_1_1void__t_3_01void_01_4_01_4.html b/doc/html/structutl_1_1__1wire__i__det_1_1is__1wire___3_01___tp_00_01meta_1_1void__t_3_01void_01_4_01_4.html new file mode 100644 index 0000000..be2df82 --- /dev/null +++ b/doc/html/structutl_1_1__1wire__i__det_1_1is__1wire___3_01___tp_00_01meta_1_1void__t_3_01void_01_4_01_4.html @@ -0,0 +1,128 @@ + + + + + + + +uTL: utl::_1wire_i_det::is_1wire_< _Tp, meta::void_t< void > > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::_1wire_i_det::is_1wire_< _Tp, meta::void_t< void > > Struct Template Reference
    +
    +
    + +

    template to catch a proper 1-wire interface type + More...

    + +

    #include <_1wire.h>

    +
    +Inheritance diagram for utl::_1wire_i_det::is_1wire_< _Tp, meta::void_t< void > >:
    +
    +
    + + + +
    +

    Detailed Description

    +

    template<typename _Tp>
    +struct utl::_1wire_i_det::is_1wire_< _Tp, meta::void_t< void > >

    + +

    template to catch a proper 1-wire interface type

    + +

    Definition at line 688 of file _1wire.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1__1wire__i__det_1_1is__1wire___3_01___tp_00_01meta_1_1void__t_3_01void_01_4_01_4.png b/doc/html/structutl_1_1__1wire__i__det_1_1is__1wire___3_01___tp_00_01meta_1_1void__t_3_01void_01_4_01_4.png new file mode 100644 index 0000000000000000000000000000000000000000..b07f46aa396bdfbd830c6d7990c6653dfda1e5f9 GIT binary patch literal 853 zcmeAS@N?(olHy`uVBq!ia0y~yVDtvE12~w0_(8t-CaErR$`Bzzb&m%@VtAeJa%7gU(Hmnpyeg+ijL{2zI6ARzFyw*)pYl( zOI1qGD97k+^Ywf+wJ)}=yKu)xOFhs3Lj1*+^Bneyt#}h>?SWYt=Y&J|=ch8IBur<}F=K75N5+!PX)||dR|KVwa17(b7efEc&P1`Z@s~-3Am$gk_xoq08^!fMBtX`H;VlTB|S%IfPe0B3bmo3jqWt@#4 z@@KB*oDn^5EWoNbZ?#~bVm~%C?wr_g&AC0&Dr8`%xnykld|NEkQ>Cc&Gd8f0OSl-d^-Wcaq zowz^e-K5oT7ukuMeLsEo#p1u8b{E!XKdHE|{M^UVL&v1l6OLXjt|^Qm literal 0 HcmV?d00001 diff --git a/doc/html/structutl_1_1array-members.html b/doc/html/structutl_1_1array-members.html new file mode 100644 index 0000000..6ed85f1 --- /dev/null +++ b/doc/html/structutl_1_1array-members.html @@ -0,0 +1,147 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::array< _Tp, _Nm > Member List
    +
    +
    + +

    This is the complete list of members for utl::array< _Tp, _Nm >, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    _datautl::array< _Tp, _Nm >
    array_t typedefutl::array< _Tp, _Nm >
    at(size_type n) noexceptutl::array< _Tp, _Nm >inline
    at(size_type n) const noexceptutl::array< _Tp, _Nm >inline
    back() noexceptutl::array< _Tp, _Nm >inline
    back() const noexceptutl::array< _Tp, _Nm >inline
    begin() noexceptutl::array< _Tp, _Nm >inline
    begin() const noexceptutl::array< _Tp, _Nm >inline
    cbegin() const noexceptutl::array< _Tp, _Nm >inline
    cend() const noexceptutl::array< _Tp, _Nm >inline
    const_iterator typedefutl::array< _Tp, _Nm >
    const_pointer typedefutl::array< _Tp, _Nm >
    const_reference typedefutl::array< _Tp, _Nm >
    const_reverse_iterator typedefutl::array< _Tp, _Nm >
    crbegin() const noexceptutl::array< _Tp, _Nm >inline
    crend() const noexceptutl::array< _Tp, _Nm >inline
    data() noexceptutl::array< _Tp, _Nm >inline
    data() const noexceptutl::array< _Tp, _Nm >inline
    difference_type typedefutl::array< _Tp, _Nm >
    empty() const noexceptutl::array< _Tp, _Nm >inline
    end() noexceptutl::array< _Tp, _Nm >inline
    end() const noexceptutl::array< _Tp, _Nm >inline
    fill(const value_type &v)utl::array< _Tp, _Nm >inline
    front() noexceptutl::array< _Tp, _Nm >inline
    front() const noexceptutl::array< _Tp, _Nm >inline
    iterator typedefutl::array< _Tp, _Nm >
    max_size() const noexceptutl::array< _Tp, _Nm >inline
    operator[](size_type n) noexceptutl::array< _Tp, _Nm >inline
    operator[](size_type n) const noexceptutl::array< _Tp, _Nm >inline
    pointer typedefutl::array< _Tp, _Nm >
    rbegin() noexceptutl::array< _Tp, _Nm >inline
    rbegin() const noexceptutl::array< _Tp, _Nm >inline
    reference typedefutl::array< _Tp, _Nm >
    rend() noexceptutl::array< _Tp, _Nm >inline
    rend() const noexceptutl::array< _Tp, _Nm >inline
    reverse_iterator typedefutl::array< _Tp, _Nm >
    size() const noexceptutl::array< _Tp, _Nm >inline
    size_type typedefutl::array< _Tp, _Nm >
    swap(array &other) noexceptutl::array< _Tp, _Nm >inline
    value_type typedefutl::array< _Tp, _Nm >
    +
    + + + + diff --git a/doc/html/structutl_1_1array.html b/doc/html/structutl_1_1array.html new file mode 100644 index 0000000..66ca77c --- /dev/null +++ b/doc/html/structutl_1_1array.html @@ -0,0 +1,1262 @@ + + + + + + + +uTL: utl::array< _Tp, _Nm > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::array< _Tp, _Nm > Struct Template Reference
    +
    +
    + +

    A standard container for storing a fixed size sequence of elements. + More...

    + +

    #include <array.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Types

    using value_type = _Tp
     
    using pointer = value_type *
     
    using const_pointer = const value_type *
     
    using reference = value_type &
     
    using const_reference = const value_type &
     
    using iterator = value_type *
     
    using const_iterator = const value_type *
     
    using size_type = size_t
     
    using difference_type = ptrdiff_t
     
    using reverse_iterator = std::reverse_iterator< iterator >
     
    using const_reverse_iterator = std::reverse_iterator< const_iterator >
     
    using array_t = array_traits< _Tp, _Nm >
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    void fill (const value_type &v)
     
    void swap (array &other) noexcept
     
    Iterators.
    iterator begin () noexcept
     
    const_iterator begin () const noexcept
     
    iterator end () noexcept
     
    const_iterator end () const noexcept
     
    const_iterator cbegin () const noexcept
     
    const_iterator cend () const noexcept
     
    reverse_iterator rbegin () noexcept
     
    reverse_iterator rend () noexcept
     
    const_reverse_iterator rbegin () const noexcept
     
    const_reverse_iterator rend () const noexcept
     
    const_reverse_iterator crbegin () const noexcept
     
    const_reverse_iterator crend () const noexcept
     
    Capacity.
    constexpr size_type size () const noexcept
     
    constexpr size_type max_size () const noexcept
     
    constexpr bool empty () const noexcept
     
    Element access.
    reference operator[] (size_type n) noexcept
     Operator []. More...
     
    constexpr const_reference operator[] (size_type n) const noexcept
     Operator [] for const. More...
     
    reference at (size_type n) noexcept
     
    constexpr const_reference at (size_type n) const noexcept
     Compile time boundary check dereference operator. More...
     
    reference front () noexcept
     
    constexpr const_reference front () const noexcept
     
    reference back () noexcept
     
    constexpr const_reference back () const noexcept
     
    pointer data () noexcept
     
    const_pointer data () const noexcept
     
    + + + +

    +Public Attributes

    array_t::type _data
     
    +

    Detailed Description

    +

    template<typename _Tp, size_t _Nm>
    +struct utl::array< _Tp, _Nm >

    + +

    A standard container for storing a fixed size sequence of elements.

    +

    Meets the requirements of: container, reversible container, sequence. Sets support random access iterators.

    +
    Template Parameters
    + + + +
    _Tptype of element. Required to be a complete type.
    _NmNumber of elements.
    +
    +
    + +

    Definition at line 77 of file array.h.

    +

    Member Typedef Documentation

    + +

    ◆ array_t

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + +
    using utl::array< _Tp, _Nm >::array_t = array_traits<_Tp, _Nm>
    +
    + +

    Definition at line 93 of file array.h.

    + +
    +
    + +

    ◆ const_iterator

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + +
    using utl::array< _Tp, _Nm >::const_iterator = const value_type*
    +
    + +

    Definition at line 84 of file array.h.

    + +
    +
    + +

    ◆ const_pointer

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + +
    using utl::array< _Tp, _Nm >::const_pointer = const value_type*
    +
    + +

    Definition at line 80 of file array.h.

    + +
    +
    + +

    ◆ const_reference

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + +
    using utl::array< _Tp, _Nm >::const_reference = const value_type&
    +
    + +

    Definition at line 82 of file array.h.

    + +
    +
    + +

    ◆ const_reverse_iterator

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + +
    using utl::array< _Tp, _Nm >::const_reverse_iterator = std::reverse_iterator <const_iterator>
    +
    + +

    Definition at line 89 of file array.h.

    + +
    +
    + +

    ◆ difference_type

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + +
    using utl::array< _Tp, _Nm >::difference_type = ptrdiff_t
    +
    + +

    Definition at line 86 of file array.h.

    + +
    +
    + +

    ◆ iterator

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + +
    using utl::array< _Tp, _Nm >::iterator = value_type*
    +
    + +

    Definition at line 83 of file array.h.

    + +
    +
    + +

    ◆ pointer

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + +
    using utl::array< _Tp, _Nm >::pointer = value_type*
    +
    + +

    Definition at line 79 of file array.h.

    + +
    +
    + +

    ◆ reference

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + +
    using utl::array< _Tp, _Nm >::reference = value_type&
    +
    + +

    Definition at line 81 of file array.h.

    + +
    +
    + +

    ◆ reverse_iterator

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + +
    using utl::array< _Tp, _Nm >::reverse_iterator = std::reverse_iterator <iterator>
    +
    + +

    Definition at line 87 of file array.h.

    + +
    +
    + +

    ◆ size_type

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + +
    using utl::array< _Tp, _Nm >::size_type = size_t
    +
    + +

    Definition at line 85 of file array.h.

    + +
    +
    + +

    ◆ value_type

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + +
    using utl::array< _Tp, _Nm >::value_type = _Tp
    +
    + +

    Definition at line 78 of file array.h.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ at() [1/2]

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + + +
    reference utl::array< _Tp, _Nm >::at (size_type n)
    +
    +inlinenoexcept
    +
    +

    Boundary check dereference operator. If out of bounds, abort (for now)

    + +

    Definition at line 144 of file array.h.

    + +
    +
    + +

    ◆ at() [2/2]

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + + +
    constexpr const_reference utl::array< _Tp, _Nm >::at (size_type n) const
    +
    +inlinenoexcept
    +
    + +

    Compile time boundary check dereference operator.

    + +

    Definition at line 151 of file array.h.

    + +
    +
    + +

    ◆ back() [1/2]

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + +
    reference utl::array< _Tp, _Nm >::back ()
    +
    +inlinenoexcept
    +
    + +

    Definition at line 164 of file array.h.

    + +
    +
    + +

    ◆ back() [2/2]

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + +
    constexpr const_reference utl::array< _Tp, _Nm >::back () const
    +
    +inlinenoexcept
    +
    + +

    Definition at line 167 of file array.h.

    + +
    +
    + +

    ◆ begin() [1/2]

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + +
    iterator utl::array< _Tp, _Nm >::begin ()
    +
    +inlinenoexcept
    +
    + +

    Definition at line 107 of file array.h.

    + +
    +
    + +

    ◆ begin() [2/2]

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + +
    const_iterator utl::array< _Tp, _Nm >::begin () const
    +
    +inlinenoexcept
    +
    + +

    Definition at line 108 of file array.h.

    + +
    +
    + +

    ◆ cbegin()

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + +
    const_iterator utl::array< _Tp, _Nm >::cbegin () const
    +
    +inlinenoexcept
    +
    + +

    Definition at line 111 of file array.h.

    + +
    +
    + +

    ◆ cend()

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + +
    const_iterator utl::array< _Tp, _Nm >::cend () const
    +
    +inlinenoexcept
    +
    + +

    Definition at line 112 of file array.h.

    + +
    +
    + +

    ◆ crbegin()

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + +
    const_reverse_iterator utl::array< _Tp, _Nm >::crbegin () const
    +
    +inlinenoexcept
    +
    + +

    Definition at line 118 of file array.h.

    + +
    +
    + +

    ◆ crend()

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + +
    const_reverse_iterator utl::array< _Tp, _Nm >::crend () const
    +
    +inlinenoexcept
    +
    + +

    Definition at line 119 of file array.h.

    + +
    +
    + +

    ◆ data() [1/2]

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + +
    pointer utl::array< _Tp, _Nm >::data ()
    +
    +inlinenoexcept
    +
    + +

    Definition at line 173 of file array.h.

    + +
    +
    + +

    ◆ data() [2/2]

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + +
    const_pointer utl::array< _Tp, _Nm >::data () const
    +
    +inlinenoexcept
    +
    + +

    Definition at line 174 of file array.h.

    + +
    +
    + +

    ◆ empty()

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + +
    constexpr bool utl::array< _Tp, _Nm >::empty () const
    +
    +inlinenoexcept
    +
    + +

    Definition at line 125 of file array.h.

    + +
    +
    + +

    ◆ end() [1/2]

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + +
    iterator utl::array< _Tp, _Nm >::end ()
    +
    +inlinenoexcept
    +
    + +

    Definition at line 109 of file array.h.

    + +
    +
    + +

    ◆ end() [2/2]

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + +
    const_iterator utl::array< _Tp, _Nm >::end () const
    +
    +inlinenoexcept
    +
    + +

    Definition at line 110 of file array.h.

    + +
    +
    + +

    ◆ fill()

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + + +
    void utl::array< _Tp, _Nm >::fill (const value_typev)
    +
    +inline
    +
    + +

    Definition at line 99 of file array.h.

    + +
    +
    + +

    ◆ front() [1/2]

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + +
    reference utl::array< _Tp, _Nm >::front ()
    +
    +inlinenoexcept
    +
    + +

    Definition at line 156 of file array.h.

    + +
    +
    + +

    ◆ front() [2/2]

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + +
    constexpr const_reference utl::array< _Tp, _Nm >::front () const
    +
    +inlinenoexcept
    +
    + +

    Definition at line 159 of file array.h.

    + +
    +
    + +

    ◆ max_size()

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + +
    constexpr size_type utl::array< _Tp, _Nm >::max_size () const
    +
    +inlinenoexcept
    +
    + +

    Definition at line 124 of file array.h.

    + +
    +
    + +

    ◆ operator[]() [1/2]

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + + +
    reference utl::array< _Tp, _Nm >::operator[] (size_type n)
    +
    +inlinenoexcept
    +
    + +

    Operator [].

    + +

    Definition at line 132 of file array.h.

    + +
    +
    + +

    ◆ operator[]() [2/2]

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + + +
    constexpr const_reference utl::array< _Tp, _Nm >::operator[] (size_type n) const
    +
    +inlinenoexcept
    +
    + +

    Operator [] for const.

    + +

    Definition at line 136 of file array.h.

    + +
    +
    + +

    ◆ rbegin() [1/2]

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + +
    reverse_iterator utl::array< _Tp, _Nm >::rbegin ()
    +
    +inlinenoexcept
    +
    + +

    Definition at line 114 of file array.h.

    + +
    +
    + +

    ◆ rbegin() [2/2]

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + +
    const_reverse_iterator utl::array< _Tp, _Nm >::rbegin () const
    +
    +inlinenoexcept
    +
    + +

    Definition at line 116 of file array.h.

    + +
    +
    + +

    ◆ rend() [1/2]

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + +
    reverse_iterator utl::array< _Tp, _Nm >::rend ()
    +
    +inlinenoexcept
    +
    + +

    Definition at line 115 of file array.h.

    + +
    +
    + +

    ◆ rend() [2/2]

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + +
    const_reverse_iterator utl::array< _Tp, _Nm >::rend () const
    +
    +inlinenoexcept
    +
    + +

    Definition at line 117 of file array.h.

    + +
    +
    + +

    ◆ size()

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + +
    constexpr size_type utl::array< _Tp, _Nm >::size () const
    +
    +inlinenoexcept
    +
    + +

    Definition at line 123 of file array.h.

    + +
    +
    + +

    ◆ swap()

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + + +
    void utl::array< _Tp, _Nm >::swap (array< _Tp, _Nm > & other)
    +
    +inlinenoexcept
    +
    + +

    Definition at line 101 of file array.h.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ _data

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + +
    array_t::type utl::array< _Tp, _Nm >::_data
    +
    + +

    Definition at line 94 of file array.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1array.js b/doc/html/structutl_1_1array.js new file mode 100644 index 0000000..2aae180 --- /dev/null +++ b/doc/html/structutl_1_1array.js @@ -0,0 +1,43 @@ +var structutl_1_1array = +[ + [ "array_t", "structutl_1_1array.html#ae479687ad5c7259e5258c093bda99c89", null ], + [ "const_iterator", "structutl_1_1array.html#ab1b4f132f7babac61535fe1f7634089a", null ], + [ "const_pointer", "structutl_1_1array.html#a61ccd50cead4ae2041fa561b1cf4d79d", null ], + [ "const_reference", "structutl_1_1array.html#aab01825d62c21fcf252a64fbeda2bbc4", null ], + [ "const_reverse_iterator", "structutl_1_1array.html#a2870f89643a20193a2fc420476833256", null ], + [ "difference_type", "structutl_1_1array.html#a7b0b7e9d236db2d3d90465fa6638d22b", null ], + [ "iterator", "structutl_1_1array.html#a1cc94e09b75412ad9d7cf636b550ef2d", null ], + [ "pointer", "structutl_1_1array.html#a90f23795637ad96d367bf7d978f7e5e6", null ], + [ "reference", "structutl_1_1array.html#a054dd1ab28d43ec0676dbe2056f63cf4", null ], + [ "reverse_iterator", "structutl_1_1array.html#a777805d325ff4de41bdf0c81427a42d1", null ], + [ "size_type", "structutl_1_1array.html#aab1bf2f35917b742e5d79ddcab335ef5", null ], + [ "value_type", "structutl_1_1array.html#a2486d9a16559e5edbf8c0f6457cc1223", null ], + [ "at", "structutl_1_1array.html#aa7ebc09a296077f0ee23919c92138801", null ], + [ "at", "structutl_1_1array.html#a5525bc148cd57fdc41380593a9732ce7", null ], + [ "back", "structutl_1_1array.html#a5cd956a1087ce3652c79b36316f5875b", null ], + [ "back", "structutl_1_1array.html#a4a641f61dda90de1c93d3e62bf587bd3", null ], + [ "begin", "structutl_1_1array.html#a4b475a8e3d0c7cc41b251f08aef040f0", null ], + [ "begin", "structutl_1_1array.html#ae72df0eae3b306e0a5410d724665c27a", null ], + [ "cbegin", "structutl_1_1array.html#a4b48e7c5d18ca4f48e187a727bad65f1", null ], + [ "cend", "structutl_1_1array.html#a707a8e620497173544904f3d11324604", null ], + [ "crbegin", "structutl_1_1array.html#afdac98eac4c6edc09f478af083029eec", null ], + [ "crend", "structutl_1_1array.html#abcdc4718426e62fec38c380a4221b144", null ], + [ "data", "structutl_1_1array.html#a32e4367239fb6fc2f9b0c700ef4e0de6", null ], + [ "data", "structutl_1_1array.html#a07bb0f3b54805d733e97025e68f8bcbc", null ], + [ "empty", "structutl_1_1array.html#ac919fc992acdda9b562f5fc6414552b6", null ], + [ "end", "structutl_1_1array.html#a76158e0e9b7c019fe69ead7cd4800522", null ], + [ "end", "structutl_1_1array.html#a7a0cf890bc35437821e35484a1fd8fc7", null ], + [ "fill", "structutl_1_1array.html#a388a40a3a4450a562010859ef2286587", null ], + [ "front", "structutl_1_1array.html#a3f325450d5240f982b2b712d72f9a411", null ], + [ "front", "structutl_1_1array.html#a055c38b4345d1aa5bb8cc9172887165c", null ], + [ "max_size", "structutl_1_1array.html#ae9145a3585ab42ad57d232863f0445dc", null ], + [ "operator[]", "structutl_1_1array.html#a63373518cc6efade8c555ee1ebc1f754", null ], + [ "operator[]", "structutl_1_1array.html#a4f91b2d8e9f4c2365d4d58cf1657ac95", null ], + [ "rbegin", "structutl_1_1array.html#aeeca6bc1e57a142c30590d3c7dc134a5", null ], + [ "rbegin", "structutl_1_1array.html#a921a4f2e174c274f26189f89d38187ca", null ], + [ "rend", "structutl_1_1array.html#a322f008d90c279fc4170d3ae679d13ea", null ], + [ "rend", "structutl_1_1array.html#ac46fe45806b4328b6bed1fb1313818a2", null ], + [ "size", "structutl_1_1array.html#ab3fa3ca8c774c210a55dbd699ceb345b", null ], + [ "swap", "structutl_1_1array.html#a437559d71769318cc7289dce06659c39", null ], + [ "_data", "structutl_1_1array.html#a3c49a8073abb7072f4b902982789dedc", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1array__traits-members.html b/doc/html/structutl_1_1array__traits-members.html new file mode 100644 index 0000000..f2371cb --- /dev/null +++ b/doc/html/structutl_1_1array__traits-members.html @@ -0,0 +1,110 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::array_traits< _Tp, _Nm > Member List
    +
    +
    + +

    This is the complete list of members for utl::array_traits< _Tp, _Nm >, including all inherited members.

    + + + + +
    Ptr(const type &t) noexceptutl::array_traits< _Tp, _Nm >inlinestatic
    Ref(const type &t, size_t n) noexceptutl::array_traits< _Tp, _Nm >inlinestatic
    type typedefutl::array_traits< _Tp, _Nm >
    +
    + + + + diff --git a/doc/html/structutl_1_1array__traits.html b/doc/html/structutl_1_1array__traits.html new file mode 100644 index 0000000..7d9b6f0 --- /dev/null +++ b/doc/html/structutl_1_1array__traits.html @@ -0,0 +1,227 @@ + + + + + + + +uTL: utl::array_traits< _Tp, _Nm > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::array_traits< _Tp, _Nm > Struct Template Reference
    +
    +
    + +

    array container traits helper + More...

    + +

    #include <array.h>

    + + + + +

    +Public Types

    typedef _Tp type[_Nm]
     
    + + + + + +

    +Static Public Member Functions

    static constexpr _Tp & Ref (const type &t, size_t n) noexcept
     
    static constexpr _Tp * Ptr (const type &t) noexcept
     
    +

    Detailed Description

    +

    template<typename _Tp, size_t _Nm>
    +struct utl::array_traits< _Tp, _Nm >

    + +

    array container traits helper

    + +

    Definition at line 36 of file array.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename _Tp , size_t _Nm>
    + + + + +
    typedef _Tp utl::array_traits< _Tp, _Nm >::type[_Nm]
    +
    + +

    Definition at line 37 of file array.h.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ Ptr()

    + +
    +
    +
    +template<typename _Tp , size_t _Nm>
    + + + + + +
    + + + + + + + + +
    static constexpr _Tp* utl::array_traits< _Tp, _Nm >::Ptr (const typet)
    +
    +inlinestaticnoexcept
    +
    + +

    Definition at line 43 of file array.h.

    + +
    +
    + +

    ◆ Ref()

    + +
    +
    +
    +template<typename _Tp , size_t _Nm>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static constexpr _Tp& utl::array_traits< _Tp, _Nm >::Ref (const typet,
    size_t n 
    )
    +
    +inlinestaticnoexcept
    +
    + +

    Definition at line 39 of file array.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1array__traits.js b/doc/html/structutl_1_1array__traits.js new file mode 100644 index 0000000..8c6cc60 --- /dev/null +++ b/doc/html/structutl_1_1array__traits.js @@ -0,0 +1,6 @@ +var structutl_1_1array__traits = +[ + [ "type", "structutl_1_1array__traits.html#a297f692ae07fd5c9b02a989fe5736909", null ], + [ "Ptr", "structutl_1_1array__traits.html#ac642d673d85d054616bb143326a9ea79", null ], + [ "Ref", "structutl_1_1array__traits.html#a7a759b20a4dc743a66c3b1729358f605", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1array__traits_3_01___tp_00_010_01_4-members.html b/doc/html/structutl_1_1array__traits_3_01___tp_00_010_01_4-members.html new file mode 100644 index 0000000..8987318 --- /dev/null +++ b/doc/html/structutl_1_1array__traits_3_01___tp_00_010_01_4-members.html @@ -0,0 +1,109 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::array_traits< _Tp, 0 > Member List
    +
    +
    + +

    This is the complete list of members for utl::array_traits< _Tp, 0 >, including all inherited members.

    + + + +
    Ptr(const type &) noexceptutl::array_traits< _Tp, 0 >inlinestatic
    Ref(const type &, size_t) noexceptutl::array_traits< _Tp, 0 >inlinestatic
    +
    + + + + diff --git a/doc/html/structutl_1_1array__traits_3_01___tp_00_010_01_4.html b/doc/html/structutl_1_1array__traits_3_01___tp_00_010_01_4.html new file mode 100644 index 0000000..cc49513 --- /dev/null +++ b/doc/html/structutl_1_1array__traits_3_01___tp_00_010_01_4.html @@ -0,0 +1,204 @@ + + + + + + + +uTL: utl::array_traits< _Tp, 0 > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::array_traits< _Tp, 0 > Struct Template Reference
    +
    +
    + +

    #include <array.h>

    + + + + +

    +Classes

    struct  type
     
    + + + + + +

    +Static Public Member Functions

    static constexpr _Tp & Ref (const type &, size_t) noexcept
     
    static constexpr _Tp * Ptr (const type &) noexcept
     
    +

    Detailed Description

    +

    template<typename _Tp>
    +struct utl::array_traits< _Tp, 0 >

    + + +

    Definition at line 49 of file array.h.

    +

    Member Function Documentation

    + +

    ◆ Ptr()

    + +
    +
    +
    +template<typename _Tp >
    + + + + + +
    + + + + + + + + +
    static constexpr _Tp* utl::array_traits< _Tp, 0 >::Ptr (const type & )
    +
    +inlinestaticnoexcept
    +
    + +

    Definition at line 56 of file array.h.

    + +
    +
    + +

    ◆ Ref()

    + +
    +
    +
    +template<typename _Tp >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static constexpr _Tp& utl::array_traits< _Tp, 0 >::Ref (const type & ,
    size_t  
    )
    +
    +inlinestaticnoexcept
    +
    + +

    Definition at line 52 of file array.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1array__traits_3_01___tp_00_010_01_4.js b/doc/html/structutl_1_1array__traits_3_01___tp_00_010_01_4.js new file mode 100644 index 0000000..b1d5afe --- /dev/null +++ b/doc/html/structutl_1_1array__traits_3_01___tp_00_010_01_4.js @@ -0,0 +1,6 @@ +var structutl_1_1array__traits_3_01___tp_00_010_01_4 = +[ + [ "type", "structutl_1_1array__traits_3_01___tp_00_010_01_4_1_1type.html", null ], + [ "Ptr", "structutl_1_1array__traits_3_01___tp_00_010_01_4.html#ad5f207688e873862870d58889b2e5fec", null ], + [ "Ref", "structutl_1_1array__traits_3_01___tp_00_010_01_4.html#a3f90cb0fbb870fcc36fc6d404857032b", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1array__traits_3_01___tp_00_010_01_4_1_1type.html b/doc/html/structutl_1_1array__traits_3_01___tp_00_010_01_4_1_1type.html new file mode 100644 index 0000000..5b9237c --- /dev/null +++ b/doc/html/structutl_1_1array__traits_3_01___tp_00_010_01_4_1_1type.html @@ -0,0 +1,116 @@ + + + + + + + +uTL: utl::array_traits< _Tp, 0 >::type Struct Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::array_traits< _Tp, 0 >::type Struct Reference
    +
    +
    + +

    #include <array.h>

    +

    Detailed Description

    +

    template<typename _Tp>
    +struct utl::array_traits< _Tp, 0 >::type

    + + +

    Definition at line 50 of file array.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1bidirectional__iterator__tag.html b/doc/html/structutl_1_1bidirectional__iterator__tag.html new file mode 100644 index 0000000..3725295 --- /dev/null +++ b/doc/html/structutl_1_1bidirectional__iterator__tag.html @@ -0,0 +1,125 @@ + + + + + + + +uTL: utl::bidirectional_iterator_tag Struct Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::bidirectional_iterator_tag Struct Reference
    +
    +
    + +

    #include <dev_iterators.h>

    +
    +Inheritance diagram for utl::bidirectional_iterator_tag:
    +
    +
    + + +utl::forward_iterator_tag +utl::input_iterator_tag +utl::random_access_iterator_tag +utl::contiguous_iterator_tag + +
    +

    Detailed Description

    +
    +

    Definition at line 58 of file dev_iterators.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1bidirectional__iterator__tag.png b/doc/html/structutl_1_1bidirectional__iterator__tag.png new file mode 100644 index 0000000000000000000000000000000000000000..53baffad6b6479fcb6d364461f6983a1f0100e15 GIT binary patch literal 1708 zcma)-X;4#F7={xW#f8NdkwqjTVR0jZjHswlK_R3p5)?%RT0{h`fCgGYxVVAH5(p|3 z3el1QEn&roSA|%(u;)IX|9xzxO12dAMjV zHeQUuV6;iD&feG#;@_X*^f5hT*i+jyK%Gb;$`qv4!+WQn~H!+$}jK9 zvF@>(U(wYQBC!p)p9%LYYbhj4w&(K9NyiG{b$7S7QILe|AA3rE*nm4@OrhJ%WkNyK zj%abGbknID%yVcxK*II>;^l~Z7PN3o-cdn&CSG(&6BRahcXbn-9VlWYv<38DFGEZ5 zJ&G)aPs*FMJip_&#OJAuUrHiyEF%5oh}G32bPro8W3Vr8(LWO?tjcEEFa|+?3Ao0= z8@)y8$CH#~`pPUQ)i!-eox^#oR>u&^>g`)%H~<8oEQh0_M2VtiDqxP|cQ*n>hkb@&OG>`Y1Dhf40$KYXvJ z6!XhR%%0}W`X7#ncZE^DdvNSjNLrE6qmw&R@!bQ{zFv{|TW@<06b)5hnw~l^nRXI> zsN3M`&C>&`Z)D|;Hy43Wd!)nI;vUZmDGrGrV^p%@lxVCHH%9>aObwZbuLc#NC|L+Q zF09x!2ALQngip^i%z2Iku*wZKRskkaI&Ys`uFwcfR%-OU zMKRG;#DtY%-N2-8jS+hmnrUfa0}p-STqq$n$%|wz+bYAyHV;p+Yp`o=9?3I7cZStD zefL2bq*)ZCrzq}{|{*%3gKnOCR|SD$v8aBo5-`6;_~Iw!|(xC`i$b9yc57*U@} z9%XW7jbsg_Xrb@r;Z8ek!OLCIN8!hNVCSpH*zH$AsB~i^7x~~hcMs|`?{8htnzdO8 z>>C|sId7Ow9kd#go9bb1HoIjNJ6tmz&1n50AF<(ne6zSF`bRxAV=Fq$EWci8opG$*M1BUh0>B|50SPA9m zlE%(<+mIfQzL2d76M+tCJ$P-rtll}A8@rWqGBnqTtTbJpbgaIXqNvdY&jwz}TXj0^ zqm55#`=X28xZ8!xJ+=3i`Gr?kM!IQy;K%$*Xx>m59EMMM2FV(2@^csEJ)T9sk+2-Dop35J2yUgh&-Z(=^-WNbH;?A>pFY0FW8SVlOK_6;6aeD#RjU zZhen7zbe=Cm(dcCLT3;6j&aOJQhzT+eKn2cqv|0tG+>0EYZsfyGYCOrYi>f0P{kb&IoO!PRE;V_ z`UT5u2RgQf-Ck^Z@cNoI(K^fuJA + + + + + + +uTL: utl::common_impl::__common_ref_< T, U, class > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::common_impl::__common_ref_< T, U, class > Struct Template Reference
    +
    +
    + +

    #include <stl.h>

    +

    Detailed Description

    +

    template<class T, class U, class = void>
    +struct utl::common_impl::__common_ref_< T, U, class >

    + + +

    Definition at line 127 of file stl.h.

    +

    The documentation for this struct was generated from the following file:
      +
    • include/utl/concepts/stl.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_00_01meta_1_1void__t_3_05e5aa384829bb34312a7b8ee4ecaa00f.html b/doc/html/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_00_01meta_1_1void__t_3_05e5aa384829bb34312a7b8ee4ecaa00f.html new file mode 100644 index 0000000..1349a46 --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_00_01meta_1_1void__t_3_05e5aa384829bb34312a7b8ee4ecaa00f.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: utl::common_impl::__common_ref_< T &, U &, meta::void_t< __lref_res< T, U >, meta::when< std::is_reference< __lref_res< T, U > >::value > > > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::common_impl::__common_ref_< T &, U &, meta::void_t< __lref_res< T, U >, meta::when< std::is_reference< __lref_res< T, U > >::value > > > Struct Template Reference
    +
    +
    + +

    #include <stl.h>

    + + + + +

    +Public Types

    using type = __lref_res< T, U >
     
    +

    Detailed Description

    +

    template<class T, class U>
    +struct utl::common_impl::__common_ref_< T &, U &, meta::void_t< __lref_res< T, U >, meta::when< std::is_reference< __lref_res< T, U > >::value > > >

    + + +

    Definition at line 147 of file stl.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class T , class U >
    + + + + +
    using utl::common_impl::__common_ref_< T &, U &, meta::void_t< __lref_res< T, U >, meta::when< std::is_reference< __lref_res< T, U > >::value > > >::type = __lref_res<T, U>
    +
    + +

    Definition at line 150 of file stl.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/utl/concepts/stl.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_00_01meta_1_1void__t_3_05e5aa384829bb34312a7b8ee4ecaa00f.js b/doc/html/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_00_01meta_1_1void__t_3_05e5aa384829bb34312a7b8ee4ecaa00f.js new file mode 100644 index 0000000..d296c20 --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_00_01meta_1_1void__t_3_05e5aa384829bb34312a7b8ee4ecaa00f.js @@ -0,0 +1,4 @@ +var structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_00_01meta_1_1void__t_3_05e5aa384829bb34312a7b8ee4ecaa00f = +[ + [ "type", "structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_00_01meta_1_1void__t_3_05e5aa384829bb34312a7b8ee4ecaa00f.html#a9818dd472dbf7e5819a37c772d0566d2", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_00_01meta_1_1void__t_3_0713e3da9a16fa287c3da4804d8a82e2a.html b/doc/html/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_00_01meta_1_1void__t_3_0713e3da9a16fa287c3da4804d8a82e2a.html new file mode 100644 index 0000000..692c799 --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_00_01meta_1_1void__t_3_0713e3da9a16fa287c3da4804d8a82e2a.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::common_impl::__common_ref_< T &, U &, meta::void_t< __lref_res< T, U >, meta::when< std::is_reference< __lref_res< T, U > >::value > > > Member List
    +
    + +
    + + + + diff --git a/doc/html/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_6_00_01meta_1_1void__t_329fba5aeac3b93aa9cfa5aa7e282e196.html b/doc/html/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_6_00_01meta_1_1void__t_329fba5aeac3b93aa9cfa5aa7e282e196.html new file mode 100644 index 0000000..35ac10f --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_6_00_01meta_1_1void__t_329fba5aeac3b93aa9cfa5aa7e282e196.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: utl::common_impl::__common_ref_< T &, U &&, meta::void_t< __common_ref< T &, const U & >, meta::when< ConvertibleTo< U &&, __common_ref< T &, const U & > > > > > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::common_impl::__common_ref_< T &, U &&, meta::void_t< __common_ref< T &, const U & >, meta::when< ConvertibleTo< U &&, __common_ref< T &, const U & > > > > > Struct Template Reference
    +
    +
    + +

    #include <stl.h>

    + + + + +

    +Public Types

    using type = __common_ref< T &, const U & >
     
    +

    Detailed Description

    +

    template<class T, class U>
    +struct utl::common_impl::__common_ref_< T &, U &&, meta::void_t< __common_ref< T &, const U & >, meta::when< ConvertibleTo< U &&, __common_ref< T &, const U & > > > > >

    + + +

    Definition at line 171 of file stl.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class T , class U >
    + + + + +
    using utl::common_impl::__common_ref_< T &, U &&, meta::void_t< __common_ref< T &, const U & >, meta::when< ConvertibleTo< U &&, __common_ref< T &, const U & > > > > >::type = __common_ref<T&, const U&>
    +
    + +

    Definition at line 174 of file stl.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/utl/concepts/stl.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_6_00_01meta_1_1void__t_329fba5aeac3b93aa9cfa5aa7e282e196.js b/doc/html/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_6_00_01meta_1_1void__t_329fba5aeac3b93aa9cfa5aa7e282e196.js new file mode 100644 index 0000000..d4ca729 --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_6_00_01meta_1_1void__t_329fba5aeac3b93aa9cfa5aa7e282e196.js @@ -0,0 +1,4 @@ +var structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_6_00_01meta_1_1void__t_329fba5aeac3b93aa9cfa5aa7e282e196 = +[ + [ "type", "structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_6_00_01meta_1_1void__t_329fba5aeac3b93aa9cfa5aa7e282e196.html#a382d2ef7e9cf4cba7efe589969b64b07", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_6_00_01meta_1_1void__t_39d51aabb1b6e285a8820883623b777b6.html b/doc/html/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_6_00_01meta_1_1void__t_39d51aabb1b6e285a8820883623b777b6.html new file mode 100644 index 0000000..546be4c --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_6_00_01meta_1_1void__t_39d51aabb1b6e285a8820883623b777b6.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::common_impl::__common_ref_< T &, U &&, meta::void_t< __common_ref< T &, const U & >, meta::when< ConvertibleTo< U &&, __common_ref< T &, const U & > > > > > Member List
    +
    + +
    + + + + diff --git a/doc/html/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_00_01meta_1_1void__t_3972a8d6e6799b6ee6537c969cdced343.html b/doc/html/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_00_01meta_1_1void__t_3972a8d6e6799b6ee6537c969cdced343.html new file mode 100644 index 0000000..8f824af --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_00_01meta_1_1void__t_3972a8d6e6799b6ee6537c969cdced343.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: utl::common_impl::__common_ref_< T &&, U &, meta::void_t< __common_ref< const T &, U & >, meta::when< ConvertibleTo< T &&, __common_ref< const T &, U & > > > > > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::common_impl::__common_ref_< T &&, U &, meta::void_t< __common_ref< const T &, U & >, meta::when< ConvertibleTo< T &&, __common_ref< const T &, U & > > > > > Struct Template Reference
    +
    +
    + +

    #include <stl.h>

    + + + + +

    +Public Types

    using type = __common_ref< const T &, U & >
     
    +

    Detailed Description

    +

    template<class T, class U>
    +struct utl::common_impl::__common_ref_< T &&, U &, meta::void_t< __common_ref< const T &, U & >, meta::when< ConvertibleTo< T &&, __common_ref< const T &, U & > > > > >

    + + +

    Definition at line 163 of file stl.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class T , class U >
    + + + + +
    using utl::common_impl::__common_ref_< T &&, U &, meta::void_t< __common_ref< const T &, U & >, meta::when< ConvertibleTo< T &&, __common_ref< const T &, U & > > > > >::type = __common_ref<const T&, U&>
    +
    + +

    Definition at line 166 of file stl.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/utl/concepts/stl.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_00_01meta_1_1void__t_3972a8d6e6799b6ee6537c969cdced343.js b/doc/html/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_00_01meta_1_1void__t_3972a8d6e6799b6ee6537c969cdced343.js new file mode 100644 index 0000000..61fd651 --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_00_01meta_1_1void__t_3972a8d6e6799b6ee6537c969cdced343.js @@ -0,0 +1,4 @@ +var structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_00_01meta_1_1void__t_3972a8d6e6799b6ee6537c969cdced343 = +[ + [ "type", "structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_00_01meta_1_1void__t_3972a8d6e6799b6ee6537c969cdced343.html#ade0c54407b6f17f667c01eec748c7e14", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_00_01meta_1_1void__t_3caf0f226d0c1286077388e70348a8308.html b/doc/html/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_00_01meta_1_1void__t_3caf0f226d0c1286077388e70348a8308.html new file mode 100644 index 0000000..9523627 --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_00_01meta_1_1void__t_3caf0f226d0c1286077388e70348a8308.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::common_impl::__common_ref_< T &&, U &, meta::void_t< __common_ref< const T &, U & >, meta::when< ConvertibleTo< T &&, __common_ref< const T &, U & > > > > > Member List
    +
    + +
    + + + + diff --git a/doc/html/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_6_00_01meta_1_1void__t1694845b4ab351e97156ad142728ca62.html b/doc/html/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_6_00_01meta_1_1void__t1694845b4ab351e97156ad142728ca62.html new file mode 100644 index 0000000..48080df --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_6_00_01meta_1_1void__t1694845b4ab351e97156ad142728ca62.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::common_impl::__common_ref_< T &&, U &&, meta::void_t< __common_ref< T &, U & >, meta::when< ConvertibleTo< T &&, __rref_res< T, U > > >, meta::when< ConvertibleTo< U &&, __rref_res< T, U > > > > > Member List
    +
    + +
    + + + + diff --git a/doc/html/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_6_00_01meta_1_1void__tc4e71c227f251cadf0e0fb7b1ba6f1e9.html b/doc/html/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_6_00_01meta_1_1void__tc4e71c227f251cadf0e0fb7b1ba6f1e9.html new file mode 100644 index 0000000..5d98745 --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_6_00_01meta_1_1void__tc4e71c227f251cadf0e0fb7b1ba6f1e9.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: utl::common_impl::__common_ref_< T &&, U &&, meta::void_t< __common_ref< T &, U & >, meta::when< ConvertibleTo< T &&, __rref_res< T, U > > >, meta::when< ConvertibleTo< U &&, __rref_res< T, U > > > > > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::common_impl::__common_ref_< T &&, U &&, meta::void_t< __common_ref< T &, U & >, meta::when< ConvertibleTo< T &&, __rref_res< T, U > > >, meta::when< ConvertibleTo< U &&, __rref_res< T, U > > > > > Struct Template Reference
    +
    +
    + +

    #include <stl.h>

    + + + + +

    +Public Types

    using type = __rref_res< T, U >
     
    +

    Detailed Description

    +

    template<class T, class U>
    +struct utl::common_impl::__common_ref_< T &&, U &&, meta::void_t< __common_ref< T &, U & >, meta::when< ConvertibleTo< T &&, __rref_res< T, U > > >, meta::when< ConvertibleTo< U &&, __rref_res< T, U > > > > >

    + + +

    Definition at line 154 of file stl.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class T , class U >
    + + + + +
    using utl::common_impl::__common_ref_< T &&, U &&, meta::void_t< __common_ref< T &, U & >, meta::when< ConvertibleTo< T &&, __rref_res< T, U > > >, meta::when< ConvertibleTo< U &&, __rref_res< T, U > > > > >::type = __rref_res<T, U>
    +
    + +

    Definition at line 158 of file stl.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/utl/concepts/stl.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_6_00_01meta_1_1void__tc4e71c227f251cadf0e0fb7b1ba6f1e9.js b/doc/html/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_6_00_01meta_1_1void__tc4e71c227f251cadf0e0fb7b1ba6f1e9.js new file mode 100644 index 0000000..910dbba --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_6_00_01meta_1_1void__tc4e71c227f251cadf0e0fb7b1ba6f1e9.js @@ -0,0 +1,4 @@ +var structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_6_00_01meta_1_1void__tc4e71c227f251cadf0e0fb7b1ba6f1e9 = +[ + [ "type", "structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_6_00_01meta_1_1void__tc4e71c227f251cadf0e0fb7b1ba6f1e9.html#a8f2b4a68e68f34543fa6e73774bec517", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1common__impl_1_1____common__reference.html b/doc/html/structutl_1_1common__impl_1_1____common__reference.html new file mode 100644 index 0000000..9b5f9e3 --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1____common__reference.html @@ -0,0 +1,126 @@ + + + + + + + +uTL: utl::common_impl::__common_reference< T, U,... > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::common_impl::__common_reference< T, U,... > Struct Template Reference
    +
    +
    + +

    #include <stl.h>

    +
    +Inheritance diagram for utl::common_impl::__common_reference< T, U,... >:
    +
    +
    + + +utl::common_impl::__common_reference2< T, U > +utl::common_impl::__common_reference3< T, U > + +
    +

    Detailed Description

    +

    template<class T, class U, class...>
    +struct utl::common_impl::__common_reference< T, U,... >

    + + +

    Definition at line 259 of file stl.h.

    +

    The documentation for this struct was generated from the following file:
      +
    • include/utl/concepts/stl.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structutl_1_1common__impl_1_1____common__reference.png b/doc/html/structutl_1_1common__impl_1_1____common__reference.png new file mode 100644 index 0000000000000000000000000000000000000000..8e4302da3e077b0e94ef543537b3d21117b87921 GIT binary patch literal 1866 zcmcJQeN@s{7{`B9+A^u5Q*>%sW-q=(=G1aadl3?-&>{580!h>ter=sCWM2TVe1^wtCZ9m)3-vdDD6_S=64%L_tW#ZBC^;Q-)p4}? zL9iD#&q_XLPw)(h;BlQxViaRA`7G8Vou`{y77dFTC>OF=E)08{^QzUN`&@AxacnWW z6k8-YH6>=;$~K|FZt=;C`GxdK05=;wOx4OP|ZFhZ!q50Z+M_}qAxO| z^!Z0=N9gE$2kMLCmC|Ix41I%`aF6N)=5TB)RxPAWE2iVA8BYR@liB(}$K{uO*LkmO zH2$2T?VqAB*V@<|_wJZjTnii%bl#L>QG&QvgwaHR8 z3wQLBxJY20&T7fo9f*N)uXGoN#W}eMNL1QyS|FPRZvX_s&Mex$aT>!xxsUaJ$INI4 zOS~_qGJ}REEs$|aTo}vofjR;wag2I#&-s#!W6Zis;hca~VX^4e{%ws0iKAxceaRh8 ziN#2wVf)JjooDThW|?%QESo0})lanED6T4SelCs(Wi%PLm@3}x_77m=uMhDkgG2Bvl`?mib$+O! z+xcFSJsAY-jsoWZEu|-dM9VEX64q>Tp+W~A zHoRR=Z5JjV9*dER+y`R=%#obn%%`iuAgCwAb-1u@X$=m~Y%V5pDz~9awHMvhCuClD z(=sJ&m3!e^qCpN11<2LzvK%V zBDTWge?j}}i*X%_cg$?Cmiy@LF2Qf*Fy6gh7K}QVCrtF>96LuG>9!?wSgOyo#eHy+ ze`f|I?`<)nKu%>pO~iYUl0$2h*e8P%vEbt*F~93Ms9HaJAfho98J3VvuBYR&=~ko*qB-)67g<# zb^l7F{eGY%XzUfr1hbrT0+uV# zvq3myW=0`4$oJ3?Q%nC^JXJpmxTNhK-|60L%qdxE9kJ}w$MDAo;ITxEXv^NyzW`qw BiJbrd literal 0 HcmV?d00001 diff --git a/doc/html/structutl_1_1common__impl_1_1____common__reference2.html b/doc/html/structutl_1_1common__impl_1_1____common__reference2.html new file mode 100644 index 0000000..ddfbe9c --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1____common__reference2.html @@ -0,0 +1,125 @@ + + + + + + + +uTL: utl::common_impl::__common_reference2< T, U,... > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::common_impl::__common_reference2< T, U,... > Struct Template Reference
    +
    +
    + +

    #include <stl.h>

    +
    +Inheritance diagram for utl::common_impl::__common_reference2< T, U,... >:
    +
    +
    + + +utl::common_impl::__common_reference3< T, U > + +
    +

    Detailed Description

    +

    template<class T, class U, class...>
    +struct utl::common_impl::__common_reference2< T, U,... >

    + + +

    Definition at line 248 of file stl.h.

    +

    The documentation for this struct was generated from the following file:
      +
    • include/utl/concepts/stl.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structutl_1_1common__impl_1_1____common__reference2.png b/doc/html/structutl_1_1common__impl_1_1____common__reference2.png new file mode 100644 index 0000000000000000000000000000000000000000..8dbab0090a3d9617c221278a12726a814e99978f GIT binary patch literal 1400 zcmeAS@N?(olHy`uVBq!ia0y~yU^D`R{q)wwJ5&0~PQ88lX`kl` z`^9IJyjIJHhn!@*2BCckilR`tbW^pqbfIOw)80W&2P4 z`!dQb|IE`Pd;VYgc7&&U+0;He*EII^erGmWEH)GrtS&rptf%8fZ)jmxN5tp-v)F>F&#W$;wtQD~jQxMYG+g9uRE=@dhdhol3SCNnVb7&Mnq zB6;+?*6d}OLYGZ^qZ5nD#oxWVJ;A8_yGYQpck`T1-MJg=F>`lym;0$Vx9;4%pJMQP zbHlrL{2N?SUbD}SkNLOje2vgYgVcBLWZgASAKBXz+nXQ1Wa{0dxGmEoKP%nQyWaO~ zS;>~{(0-Y^SL_d;zdOBpXEooZJ#lI#58JKE0-rteU9ErJKQnJyUsSR6rL*3}-&gGw zt*g|TF1?!b?gH1EtqlHCc)$HAPW3&q@ytQ@Q0r>b19$g6Ui)FIdhvJ0xAkk6-M^Z5 zdehV`_ruCo-@f|xRVinDR?YUK@p)(RzMM~w48L@J{p#g;% zJ;!WeBSQB-M`j1eofu2y?fft{Bh z_Z?wj$E8_Z?ym?8BF%HBmSxU5V&Z$*jbYzp;Rc2qT~ioSEapDpQD_7)q$e9UyamRp z5GNI46?Ca zSzE_$ZRQsiUXg0=Qr~3#dA0oc6ry9e?c$bSMSrI}OMAJ(bi1;l7xSubVLzU3jLBQ0 zR?<98;VP5L6w}Rar)G5|&s^NE1&m&X1>o3aX4~?=bf#T(wz1j7)X+`;7Hx{YyDl$$ z{puxJ%)dS>?KFIT(|&eptY`fGb@N^o{!WVwWpO*omUA^uqdMTI9mo9JGZv@bUOz4L z==MLWzj++ah + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::common_impl::__common_reference2< T, U, meta::void_t< __basic_common_reference_t< T, U > > > Member List
    +
    + +
    + + + + diff --git a/doc/html/structutl_1_1common__impl_1_1____common__reference2_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____785d0aa2f8a62416e19573fcbdd83836.html b/doc/html/structutl_1_1common__impl_1_1____common__reference2_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____785d0aa2f8a62416e19573fcbdd83836.html new file mode 100644 index 0000000..3046adf --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1____common__reference2_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____785d0aa2f8a62416e19573fcbdd83836.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: utl::common_impl::__common_reference2< T, U, meta::void_t< __basic_common_reference_t< T, U > > > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::common_impl::__common_reference2< T, U, meta::void_t< __basic_common_reference_t< T, U > > > Struct Template Reference
    +
    +
    + +

    #include <stl.h>

    + + + + +

    +Public Types

    using type = __basic_common_reference_t< T, U >
     
    +

    Detailed Description

    +

    template<class T, class U>
    +struct utl::common_impl::__common_reference2< T, U, meta::void_t< __basic_common_reference_t< T, U > > >

    + + +

    Definition at line 253 of file stl.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class T , class U >
    + + + + +
    using utl::common_impl::__common_reference2< T, U, meta::void_t< __basic_common_reference_t< T, U > > >::type = __basic_common_reference_t<T, U>
    +
    + +

    Definition at line 255 of file stl.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/utl/concepts/stl.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structutl_1_1common__impl_1_1____common__reference2_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____785d0aa2f8a62416e19573fcbdd83836.js b/doc/html/structutl_1_1common__impl_1_1____common__reference2_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____785d0aa2f8a62416e19573fcbdd83836.js new file mode 100644 index 0000000..4a76aa6 --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1____common__reference2_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____785d0aa2f8a62416e19573fcbdd83836.js @@ -0,0 +1,4 @@ +var structutl_1_1common__impl_1_1____common__reference2_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____785d0aa2f8a62416e19573fcbdd83836 = +[ + [ "type", "structutl_1_1common__impl_1_1____common__reference2_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____785d0aa2f8a62416e19573fcbdd83836.html#abad429fee19f4f511abfe089fa480404", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1common__impl_1_1____common__reference3.html b/doc/html/structutl_1_1common__impl_1_1____common__reference3.html new file mode 100644 index 0000000..1287542 --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1____common__reference3.html @@ -0,0 +1,124 @@ + + + + + + + +uTL: utl::common_impl::__common_reference3< T, U,... > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::common_impl::__common_reference3< T, U,... > Struct Template Reference
    +
    +
    + +

    #include <stl.h>

    +
    +Inheritance diagram for utl::common_impl::__common_reference3< T, U,... >:
    +
    +
    + + + +
    +

    Detailed Description

    +

    template<class T, class U, class...>
    +struct utl::common_impl::__common_reference3< T, U,... >

    + + +

    Definition at line 237 of file stl.h.

    +

    The documentation for this struct was generated from the following file:
      +
    • include/utl/concepts/stl.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structutl_1_1common__impl_1_1____common__reference3.png b/doc/html/structutl_1_1common__impl_1_1____common__reference3.png new file mode 100644 index 0000000000000000000000000000000000000000..8299aaeed4623399779122fb1929d3e6baa0fee7 GIT binary patch literal 893 zcmeAS@N?(olHy`uVBq!ia0y~yU^D`<12~w0viiOTd(8}3dh+WpttrKPju2DhT8+oW%asgtH0I;Eo7I@L3XOMCJXk#x=I z#rwo-j=%XT@cP-DS#0;$STCQwuKlQIfH`@GJ zS<=1zTWk$Qv!Y(U2u>;e@aBk4x3RRcr+eY4V^fwKmgt(S()(xs`5zvs+qL#T^P28F z$>gzp-O=Ugk)=5vm()M}ln$O`2lii>ny2O(pGiRxGgX%E(CF?k5EQg#{NYo_z;hsO z4UfX%^Zj!fRW=wk@Q5duv2BpoX7)%*WY7f4v`%GQ0u&bsW1Dd36hlyiqyraFGBK4B zNxSe!NL(-`FaV~R6)(zdSJ=v#}+5fw>f2Z=Jho=~<&IL{D ztd_Ozk+-v5p3_-*H7;#!_lB4}*|WYcGp?_av;4a{za@V6`t{e|nV$GoHTy!#{8tt( zl8%>OoqoIC#5~%4?M_+G0I7hj(+}nMKiy>D^MWn+(P~x?jqJ3uQ%nV)8>!c?x^?p~ zLqp&6L)Ygq&A9L{%k=NMZ(DU%Px>l7Rkw8aF4?&0AC?{~kG9!sc>QMl?9^CK`S@`E zyKHs_r&lQ%XqyQ*S1)=qUF)0Mk2}ZaxLU587J791AGhiyf+lNA{>(~!>$4zleM|oN zOTUiDsBKYCv$XiFqpcZqbk?6wD|j9x`0?--2wYw)^FW+0xJ-L9|LNDYCvsE{ILFOm z`7mXTVY;M4U+`4MKenhb^JtNd(jga@H&5gpBzDwqjg!9t%qt9@u6{1-oD!M<7_pAC literal 0 HcmV?d00001 diff --git a/doc/html/structutl_1_1common__impl_1_1____common__reference3_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____015b01ed12d2d90ee57fbf756ab847e9.html b/doc/html/structutl_1_1common__impl_1_1____common__reference3_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____015b01ed12d2d90ee57fbf756ab847e9.html new file mode 100644 index 0000000..33d7c46 --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1____common__reference3_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____015b01ed12d2d90ee57fbf756ab847e9.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: utl::common_impl::__common_reference3< T, U, meta::void_t< __cond_res< T, U > > > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::common_impl::__common_reference3< T, U, meta::void_t< __cond_res< T, U > > > Struct Template Reference
    +
    +
    + +

    #include <stl.h>

    + + + + +

    +Public Types

    using type = __cond_res< T, U >
     
    +

    Detailed Description

    +

    template<class T, class U>
    +struct utl::common_impl::__common_reference3< T, U, meta::void_t< __cond_res< T, U > > >

    + + +

    Definition at line 242 of file stl.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class T , class U >
    + + + + +
    using utl::common_impl::__common_reference3< T, U, meta::void_t< __cond_res< T, U > > >::type = __cond_res<T, U>
    +
    + +

    Definition at line 244 of file stl.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/utl/concepts/stl.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structutl_1_1common__impl_1_1____common__reference3_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____015b01ed12d2d90ee57fbf756ab847e9.js b/doc/html/structutl_1_1common__impl_1_1____common__reference3_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____015b01ed12d2d90ee57fbf756ab847e9.js new file mode 100644 index 0000000..fbe0dc7 --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1____common__reference3_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____015b01ed12d2d90ee57fbf756ab847e9.js @@ -0,0 +1,4 @@ +var structutl_1_1common__impl_1_1____common__reference3_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____015b01ed12d2d90ee57fbf756ab847e9 = +[ + [ "type", "structutl_1_1common__impl_1_1____common__reference3_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____015b01ed12d2d90ee57fbf756ab847e9.html#a41c50c14e6bc947987661add1a95e777", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1common__impl_1_1____common__reference3_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____0b88805ce5232fbdb9a7fdd38466508d.html b/doc/html/structutl_1_1common__impl_1_1____common__reference3_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____0b88805ce5232fbdb9a7fdd38466508d.html new file mode 100644 index 0000000..9444968 --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1____common__reference3_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____0b88805ce5232fbdb9a7fdd38466508d.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::common_impl::__common_reference3< T, U, meta::void_t< __cond_res< T, U > > > Member List
    +
    + +
    + + + + diff --git a/doc/html/structutl_1_1common__impl_1_1____common__reference_3_01_t_00_01_u_00_01meta_1_1when_3_01std_1_1i23b95b4b3a65ce598dbcc7f52e9dab2c.html b/doc/html/structutl_1_1common__impl_1_1____common__reference_3_01_t_00_01_u_00_01meta_1_1when_3_01std_1_1i23b95b4b3a65ce598dbcc7f52e9dab2c.html new file mode 100644 index 0000000..1fd51dc --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1____common__reference_3_01_t_00_01_u_00_01meta_1_1when_3_01std_1_1i23b95b4b3a65ce598dbcc7f52e9dab2c.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: utl::common_impl::__common_reference< T, U, meta::when< std::is_reference< T >::value &&std::is_reference< U >::value > > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::common_impl::__common_reference< T, U, meta::when< std::is_reference< T >::value &&std::is_reference< U >::value > > Struct Template Reference
    +
    +
    + +

    #include <stl.h>

    + + + + +

    +Public Types

    using type = __common_ref< T, U >
     
    +

    Detailed Description

    +

    template<class T, class U>
    +struct utl::common_impl::__common_reference< T, U, meta::when< std::is_reference< T >::value &&std::is_reference< U >::value > >

    + + +

    Definition at line 263 of file stl.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class T , class U >
    + + + + +
    using utl::common_impl::__common_reference< T, U, meta::when< std::is_reference< T >::value &&std::is_reference< U >::value > >::type = __common_ref<T, U>
    +
    + +

    Definition at line 265 of file stl.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/utl/concepts/stl.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structutl_1_1common__impl_1_1____common__reference_3_01_t_00_01_u_00_01meta_1_1when_3_01std_1_1i23b95b4b3a65ce598dbcc7f52e9dab2c.js b/doc/html/structutl_1_1common__impl_1_1____common__reference_3_01_t_00_01_u_00_01meta_1_1when_3_01std_1_1i23b95b4b3a65ce598dbcc7f52e9dab2c.js new file mode 100644 index 0000000..a616d7c --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1____common__reference_3_01_t_00_01_u_00_01meta_1_1when_3_01std_1_1i23b95b4b3a65ce598dbcc7f52e9dab2c.js @@ -0,0 +1,4 @@ +var structutl_1_1common__impl_1_1____common__reference_3_01_t_00_01_u_00_01meta_1_1when_3_01std_1_1i23b95b4b3a65ce598dbcc7f52e9dab2c = +[ + [ "type", "structutl_1_1common__impl_1_1____common__reference_3_01_t_00_01_u_00_01meta_1_1when_3_01std_1_1i23b95b4b3a65ce598dbcc7f52e9dab2c.html#af8297c9aa25bfb27c58f0f58722a0d28", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1common__impl_1_1____common__reference_3_01_t_00_01_u_00_01meta_1_1when_3_01std_1_1ided146ccd9cf12e9462fbb7f93734932.html b/doc/html/structutl_1_1common__impl_1_1____common__reference_3_01_t_00_01_u_00_01meta_1_1when_3_01std_1_1ided146ccd9cf12e9462fbb7f93734932.html new file mode 100644 index 0000000..adaddb8 --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1____common__reference_3_01_t_00_01_u_00_01meta_1_1when_3_01std_1_1ided146ccd9cf12e9462fbb7f93734932.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::common_impl::__common_reference< T, U, meta::when< std::is_reference< T >::value &&std::is_reference< U >::value > > Member List
    +
    + +
    + + + + diff --git a/doc/html/structutl_1_1common__impl_1_1____copy__cv__-members.html b/doc/html/structutl_1_1common__impl_1_1____copy__cv__-members.html new file mode 100644 index 0000000..789a3c8 --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1____copy__cv__-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::common_impl::__copy_cv_< From > Member List
    +
    +
    + +

    This is the complete list of members for utl::common_impl::__copy_cv_< From >, including all inherited members.

    + + +
    apply typedefutl::common_impl::__copy_cv_< From >
    +
    + + + + diff --git a/doc/html/structutl_1_1common__impl_1_1____copy__cv__.html b/doc/html/structutl_1_1common__impl_1_1____copy__cv__.html new file mode 100644 index 0000000..64251ee --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1____copy__cv__.html @@ -0,0 +1,147 @@ + + + + + + + +uTL: utl::common_impl::__copy_cv_< From > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::common_impl::__copy_cv_< From > Struct Template Reference
    +
    +
    + +

    #include <stl.h>

    + + + + + +

    +Public Types

    template<class To >
    using apply = To
     
    +

    Detailed Description

    +

    template<class From>
    +struct utl::common_impl::__copy_cv_< From >

    + + +

    Definition at line 102 of file stl.h.

    +

    Member Typedef Documentation

    + +

    ◆ apply

    + +
    +
    +
    +template<class From >
    +
    +template<class To >
    + + + + +
    using utl::common_impl::__copy_cv_< From >::apply = To
    +
    + +

    Definition at line 104 of file stl.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/utl/concepts/stl.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structutl_1_1common__impl_1_1____copy__cv__.js b/doc/html/structutl_1_1common__impl_1_1____copy__cv__.js new file mode 100644 index 0000000..808495b --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1____copy__cv__.js @@ -0,0 +1,4 @@ +var structutl_1_1common__impl_1_1____copy__cv__ = +[ + [ "apply", "structutl_1_1common__impl_1_1____copy__cv__.html#aab9e00c637c2bbbdb6d1398aca8e3f96", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1common__impl_1_1____copy__cv___3_01const_01_from_01_4-members.html b/doc/html/structutl_1_1common__impl_1_1____copy__cv___3_01const_01_from_01_4-members.html new file mode 100644 index 0000000..5d86711 --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1____copy__cv___3_01const_01_from_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::common_impl::__copy_cv_< const From > Member List
    +
    +
    + +

    This is the complete list of members for utl::common_impl::__copy_cv_< const From >, including all inherited members.

    + + +
    apply typedefutl::common_impl::__copy_cv_< const From >
    +
    + + + + diff --git a/doc/html/structutl_1_1common__impl_1_1____copy__cv___3_01const_01_from_01_4.html b/doc/html/structutl_1_1common__impl_1_1____copy__cv___3_01const_01_from_01_4.html new file mode 100644 index 0000000..4bf6c90 --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1____copy__cv___3_01const_01_from_01_4.html @@ -0,0 +1,147 @@ + + + + + + + +uTL: utl::common_impl::__copy_cv_< const From > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::common_impl::__copy_cv_< const From > Struct Template Reference
    +
    +
    + +

    #include <stl.h>

    + + + + + +

    +Public Types

    template<class To >
    using apply = const To
     
    +

    Detailed Description

    +

    template<class From>
    +struct utl::common_impl::__copy_cv_< const From >

    + + +

    Definition at line 107 of file stl.h.

    +

    Member Typedef Documentation

    + +

    ◆ apply

    + +
    +
    +
    +template<class From >
    +
    +template<class To >
    + + + + +
    using utl::common_impl::__copy_cv_< const From >::apply = const To
    +
    + +

    Definition at line 108 of file stl.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/utl/concepts/stl.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structutl_1_1common__impl_1_1____copy__cv___3_01const_01_from_01_4.js b/doc/html/structutl_1_1common__impl_1_1____copy__cv___3_01const_01_from_01_4.js new file mode 100644 index 0000000..c086102 --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1____copy__cv___3_01const_01_from_01_4.js @@ -0,0 +1,4 @@ +var structutl_1_1common__impl_1_1____copy__cv___3_01const_01_from_01_4 = +[ + [ "apply", "structutl_1_1common__impl_1_1____copy__cv___3_01const_01_from_01_4.html#a6dfb1b1162563a05f62a004de401367e", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1common__impl_1_1____copy__cv___3_01const_01volatile_01_from_01_4-members.html b/doc/html/structutl_1_1common__impl_1_1____copy__cv___3_01const_01volatile_01_from_01_4-members.html new file mode 100644 index 0000000..532c7f5 --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1____copy__cv___3_01const_01volatile_01_from_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::common_impl::__copy_cv_< const volatile From > Member List
    +
    +
    + +

    This is the complete list of members for utl::common_impl::__copy_cv_< const volatile From >, including all inherited members.

    + + +
    apply typedefutl::common_impl::__copy_cv_< const volatile From >
    +
    + + + + diff --git a/doc/html/structutl_1_1common__impl_1_1____copy__cv___3_01const_01volatile_01_from_01_4.html b/doc/html/structutl_1_1common__impl_1_1____copy__cv___3_01const_01volatile_01_from_01_4.html new file mode 100644 index 0000000..8d01b78 --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1____copy__cv___3_01const_01volatile_01_from_01_4.html @@ -0,0 +1,147 @@ + + + + + + + +uTL: utl::common_impl::__copy_cv_< const volatile From > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::common_impl::__copy_cv_< const volatile From > Struct Template Reference
    +
    +
    + +

    #include <stl.h>

    + + + + + +

    +Public Types

    template<class To >
    using apply = const volatile To
     
    +

    Detailed Description

    +

    template<class From>
    +struct utl::common_impl::__copy_cv_< const volatile From >

    + + +

    Definition at line 115 of file stl.h.

    +

    Member Typedef Documentation

    + +

    ◆ apply

    + +
    +
    +
    +template<class From >
    +
    +template<class To >
    + + + + +
    using utl::common_impl::__copy_cv_< const volatile From >::apply = const volatile To
    +
    + +

    Definition at line 116 of file stl.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/utl/concepts/stl.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structutl_1_1common__impl_1_1____copy__cv___3_01const_01volatile_01_from_01_4.js b/doc/html/structutl_1_1common__impl_1_1____copy__cv___3_01const_01volatile_01_from_01_4.js new file mode 100644 index 0000000..1cc8261 --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1____copy__cv___3_01const_01volatile_01_from_01_4.js @@ -0,0 +1,4 @@ +var structutl_1_1common__impl_1_1____copy__cv___3_01const_01volatile_01_from_01_4 = +[ + [ "apply", "structutl_1_1common__impl_1_1____copy__cv___3_01const_01volatile_01_from_01_4.html#a3b90863f9819b9537789a30ab6863aca", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1common__impl_1_1____copy__cv___3_01volatile_01_from_01_4-members.html b/doc/html/structutl_1_1common__impl_1_1____copy__cv___3_01volatile_01_from_01_4-members.html new file mode 100644 index 0000000..c4a6ea9 --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1____copy__cv___3_01volatile_01_from_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::common_impl::__copy_cv_< volatile From > Member List
    +
    +
    + +

    This is the complete list of members for utl::common_impl::__copy_cv_< volatile From >, including all inherited members.

    + + +
    apply typedefutl::common_impl::__copy_cv_< volatile From >
    +
    + + + + diff --git a/doc/html/structutl_1_1common__impl_1_1____copy__cv___3_01volatile_01_from_01_4.html b/doc/html/structutl_1_1common__impl_1_1____copy__cv___3_01volatile_01_from_01_4.html new file mode 100644 index 0000000..d9f4b6a --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1____copy__cv___3_01volatile_01_from_01_4.html @@ -0,0 +1,147 @@ + + + + + + + +uTL: utl::common_impl::__copy_cv_< volatile From > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::common_impl::__copy_cv_< volatile From > Struct Template Reference
    +
    +
    + +

    #include <stl.h>

    + + + + + +

    +Public Types

    template<class To >
    using apply = volatile To
     
    +

    Detailed Description

    +

    template<class From>
    +struct utl::common_impl::__copy_cv_< volatile From >

    + + +

    Definition at line 111 of file stl.h.

    +

    Member Typedef Documentation

    + +

    ◆ apply

    + +
    +
    +
    +template<class From >
    +
    +template<class To >
    + + + + +
    using utl::common_impl::__copy_cv_< volatile From >::apply = volatile To
    +
    + +

    Definition at line 112 of file stl.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/utl/concepts/stl.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structutl_1_1common__impl_1_1____copy__cv___3_01volatile_01_from_01_4.js b/doc/html/structutl_1_1common__impl_1_1____copy__cv___3_01volatile_01_from_01_4.js new file mode 100644 index 0000000..1bff54a --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1____copy__cv___3_01volatile_01_from_01_4.js @@ -0,0 +1,4 @@ +var structutl_1_1common__impl_1_1____copy__cv___3_01volatile_01_from_01_4 = +[ + [ "apply", "structutl_1_1common__impl_1_1____copy__cv___3_01volatile_01_from_01_4.html#a1066914bb7b2d20c25f9f6b953f40edd", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1common__impl_1_1____xref-members.html b/doc/html/structutl_1_1common__impl_1_1____xref-members.html new file mode 100644 index 0000000..8f01971 --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1____xref-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::common_impl::__xref< class > Member List
    +
    +
    + +

    This is the complete list of members for utl::common_impl::__xref< class >, including all inherited members.

    + + +
    apply typedefutl::common_impl::__xref< class >
    +
    + + + + diff --git a/doc/html/structutl_1_1common__impl_1_1____xref.html b/doc/html/structutl_1_1common__impl_1_1____xref.html new file mode 100644 index 0000000..d1ff91a --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1____xref.html @@ -0,0 +1,147 @@ + + + + + + + +uTL: utl::common_impl::__xref< class > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::common_impl::__xref< class > Struct Template Reference
    +
    +
    + +

    #include <stl.h>

    + + + + + +

    +Public Types

    template<class U >
    using apply = U
     
    +

    Detailed Description

    +

    template<class>
    +struct utl::common_impl::__xref< class >

    + + +

    Definition at line 178 of file stl.h.

    +

    Member Typedef Documentation

    + +

    ◆ apply

    + +
    +
    +
    +template<class >
    +
    +template<class U >
    + + + + +
    using utl::common_impl::__xref< class >::apply = U
    +
    + +

    Definition at line 179 of file stl.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/utl/concepts/stl.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structutl_1_1common__impl_1_1____xref.js b/doc/html/structutl_1_1common__impl_1_1____xref.js new file mode 100644 index 0000000..d638480 --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1____xref.js @@ -0,0 +1,4 @@ +var structutl_1_1common__impl_1_1____xref = +[ + [ "apply", "structutl_1_1common__impl_1_1____xref.html#a032704fe2160d375719ade17fd93f91b", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1common__impl_1_1____xref_3_01_t_01_6_01_4-members.html b/doc/html/structutl_1_1common__impl_1_1____xref_3_01_t_01_6_01_4-members.html new file mode 100644 index 0000000..6ef2723 --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1____xref_3_01_t_01_6_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::common_impl::__xref< T & > Member List
    +
    +
    + +

    This is the complete list of members for utl::common_impl::__xref< T & >, including all inherited members.

    + + +
    apply typedefutl::common_impl::__xref< T & >
    +
    + + + + diff --git a/doc/html/structutl_1_1common__impl_1_1____xref_3_01_t_01_6_01_4.html b/doc/html/structutl_1_1common__impl_1_1____xref_3_01_t_01_6_01_4.html new file mode 100644 index 0000000..752fa0d --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1____xref_3_01_t_01_6_01_4.html @@ -0,0 +1,147 @@ + + + + + + + +uTL: utl::common_impl::__xref< T & > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::common_impl::__xref< T & > Struct Template Reference
    +
    +
    + +

    #include <stl.h>

    + + + + + +

    +Public Types

    template<class U >
    using apply = std::add_lvalue_reference_t< meta::invoke< __xref< T >, U > >
     
    +

    Detailed Description

    +

    template<class T>
    +struct utl::common_impl::__xref< T & >

    + + +

    Definition at line 194 of file stl.h.

    +

    Member Typedef Documentation

    + +

    ◆ apply

    + +
    +
    +
    +template<class T >
    +
    +template<class U >
    + + + + +
    using utl::common_impl::__xref< T & >::apply = std::add_lvalue_reference_t<meta::invoke<__xref<T>, U> >
    +
    + +

    Definition at line 196 of file stl.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/utl/concepts/stl.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structutl_1_1common__impl_1_1____xref_3_01_t_01_6_01_4.js b/doc/html/structutl_1_1common__impl_1_1____xref_3_01_t_01_6_01_4.js new file mode 100644 index 0000000..e6c5d82 --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1____xref_3_01_t_01_6_01_4.js @@ -0,0 +1,4 @@ +var structutl_1_1common__impl_1_1____xref_3_01_t_01_6_01_4 = +[ + [ "apply", "structutl_1_1common__impl_1_1____xref_3_01_t_01_6_01_4.html#a45952ba243315d71be48069faeb0aff0", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1common__impl_1_1____xref_3_01_t_01_6_6_01_4-members.html b/doc/html/structutl_1_1common__impl_1_1____xref_3_01_t_01_6_6_01_4-members.html new file mode 100644 index 0000000..9e99b87 --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1____xref_3_01_t_01_6_6_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::common_impl::__xref< T && > Member List
    +
    +
    + +

    This is the complete list of members for utl::common_impl::__xref< T && >, including all inherited members.

    + + +
    apply typedefutl::common_impl::__xref< T && >
    +
    + + + + diff --git a/doc/html/structutl_1_1common__impl_1_1____xref_3_01_t_01_6_6_01_4.html b/doc/html/structutl_1_1common__impl_1_1____xref_3_01_t_01_6_6_01_4.html new file mode 100644 index 0000000..02a2a47 --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1____xref_3_01_t_01_6_6_01_4.html @@ -0,0 +1,147 @@ + + + + + + + +uTL: utl::common_impl::__xref< T && > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::common_impl::__xref< T && > Struct Template Reference
    +
    +
    + +

    #include <stl.h>

    + + + + + +

    +Public Types

    template<class U >
    using apply = std::add_rvalue_reference_t< meta::invoke< __xref< T >, U > >
     
    +

    Detailed Description

    +

    template<class T>
    +struct utl::common_impl::__xref< T && >

    + + +

    Definition at line 199 of file stl.h.

    +

    Member Typedef Documentation

    + +

    ◆ apply

    + +
    +
    +
    +template<class T >
    +
    +template<class U >
    + + + + +
    using utl::common_impl::__xref< T && >::apply = std::add_rvalue_reference_t<meta::invoke<__xref<T>, U> >
    +
    + +

    Definition at line 201 of file stl.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/utl/concepts/stl.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structutl_1_1common__impl_1_1____xref_3_01_t_01_6_6_01_4.js b/doc/html/structutl_1_1common__impl_1_1____xref_3_01_t_01_6_6_01_4.js new file mode 100644 index 0000000..e67d5c3 --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1____xref_3_01_t_01_6_6_01_4.js @@ -0,0 +1,4 @@ +var structutl_1_1common__impl_1_1____xref_3_01_t_01_6_6_01_4 = +[ + [ "apply", "structutl_1_1common__impl_1_1____xref_3_01_t_01_6_6_01_4.html#ab2e3a215cd9be370de57febb6cc290ec", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1common__impl_1_1____xref_3_01const_01_t_01_4-members.html b/doc/html/structutl_1_1common__impl_1_1____xref_3_01const_01_t_01_4-members.html new file mode 100644 index 0000000..f1a9ea6 --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1____xref_3_01const_01_t_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::common_impl::__xref< const T > Member List
    +
    +
    + +

    This is the complete list of members for utl::common_impl::__xref< const T >, including all inherited members.

    + + +
    apply typedefutl::common_impl::__xref< const T >
    +
    + + + + diff --git a/doc/html/structutl_1_1common__impl_1_1____xref_3_01const_01_t_01_4.html b/doc/html/structutl_1_1common__impl_1_1____xref_3_01const_01_t_01_4.html new file mode 100644 index 0000000..f466e2b --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1____xref_3_01const_01_t_01_4.html @@ -0,0 +1,147 @@ + + + + + + + +uTL: utl::common_impl::__xref< const T > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::common_impl::__xref< const T > Struct Template Reference
    +
    +
    + +

    #include <stl.h>

    + + + + + +

    +Public Types

    template<class U >
    using apply = const U
     
    +

    Detailed Description

    +

    template<class T>
    +struct utl::common_impl::__xref< const T >

    + + +

    Definition at line 182 of file stl.h.

    +

    Member Typedef Documentation

    + +

    ◆ apply

    + +
    +
    +
    +template<class T >
    +
    +template<class U >
    + + + + +
    using utl::common_impl::__xref< const T >::apply = const U
    +
    + +

    Definition at line 183 of file stl.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/utl/concepts/stl.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structutl_1_1common__impl_1_1____xref_3_01const_01_t_01_4.js b/doc/html/structutl_1_1common__impl_1_1____xref_3_01const_01_t_01_4.js new file mode 100644 index 0000000..e89a934 --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1____xref_3_01const_01_t_01_4.js @@ -0,0 +1,4 @@ +var structutl_1_1common__impl_1_1____xref_3_01const_01_t_01_4 = +[ + [ "apply", "structutl_1_1common__impl_1_1____xref_3_01const_01_t_01_4.html#aa0c18f8f497297768174b0d272209f4c", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1common__impl_1_1____xref_3_01const_01volatile_01_t_01_4-members.html b/doc/html/structutl_1_1common__impl_1_1____xref_3_01const_01volatile_01_t_01_4-members.html new file mode 100644 index 0000000..c81588f --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1____xref_3_01const_01volatile_01_t_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::common_impl::__xref< const volatile T > Member List
    +
    +
    + +

    This is the complete list of members for utl::common_impl::__xref< const volatile T >, including all inherited members.

    + + +
    apply typedefutl::common_impl::__xref< const volatile T >
    +
    + + + + diff --git a/doc/html/structutl_1_1common__impl_1_1____xref_3_01const_01volatile_01_t_01_4.html b/doc/html/structutl_1_1common__impl_1_1____xref_3_01const_01volatile_01_t_01_4.html new file mode 100644 index 0000000..60e0020 --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1____xref_3_01const_01volatile_01_t_01_4.html @@ -0,0 +1,147 @@ + + + + + + + +uTL: utl::common_impl::__xref< const volatile T > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::common_impl::__xref< const volatile T > Struct Template Reference
    +
    +
    + +

    #include <stl.h>

    + + + + + +

    +Public Types

    template<class U >
    using apply = const volatile U
     
    +

    Detailed Description

    +

    template<class T>
    +struct utl::common_impl::__xref< const volatile T >

    + + +

    Definition at line 190 of file stl.h.

    +

    Member Typedef Documentation

    + +

    ◆ apply

    + +
    +
    +
    +template<class T >
    +
    +template<class U >
    + + + + +
    using utl::common_impl::__xref< const volatile T >::apply = const volatile U
    +
    + +

    Definition at line 191 of file stl.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/utl/concepts/stl.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structutl_1_1common__impl_1_1____xref_3_01const_01volatile_01_t_01_4.js b/doc/html/structutl_1_1common__impl_1_1____xref_3_01const_01volatile_01_t_01_4.js new file mode 100644 index 0000000..5bcddf6 --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1____xref_3_01const_01volatile_01_t_01_4.js @@ -0,0 +1,4 @@ +var structutl_1_1common__impl_1_1____xref_3_01const_01volatile_01_t_01_4 = +[ + [ "apply", "structutl_1_1common__impl_1_1____xref_3_01const_01volatile_01_t_01_4.html#a298403b8085c58e3f18d61877f2186a5", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1common__impl_1_1____xref_3_01volatile_01_t_01_4-members.html b/doc/html/structutl_1_1common__impl_1_1____xref_3_01volatile_01_t_01_4-members.html new file mode 100644 index 0000000..2885dc4 --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1____xref_3_01volatile_01_t_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::common_impl::__xref< volatile T > Member List
    +
    +
    + +

    This is the complete list of members for utl::common_impl::__xref< volatile T >, including all inherited members.

    + + +
    apply typedefutl::common_impl::__xref< volatile T >
    +
    + + + + diff --git a/doc/html/structutl_1_1common__impl_1_1____xref_3_01volatile_01_t_01_4.html b/doc/html/structutl_1_1common__impl_1_1____xref_3_01volatile_01_t_01_4.html new file mode 100644 index 0000000..5b6945c --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1____xref_3_01volatile_01_t_01_4.html @@ -0,0 +1,147 @@ + + + + + + + +uTL: utl::common_impl::__xref< volatile T > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::common_impl::__xref< volatile T > Struct Template Reference
    +
    +
    + +

    #include <stl.h>

    + + + + + +

    +Public Types

    template<class U >
    using apply = volatile U
     
    +

    Detailed Description

    +

    template<class T>
    +struct utl::common_impl::__xref< volatile T >

    + + +

    Definition at line 186 of file stl.h.

    +

    Member Typedef Documentation

    + +

    ◆ apply

    + +
    +
    +
    +template<class T >
    +
    +template<class U >
    + + + + +
    using utl::common_impl::__xref< volatile T >::apply = volatile U
    +
    + +

    Definition at line 187 of file stl.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/utl/concepts/stl.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structutl_1_1common__impl_1_1____xref_3_01volatile_01_t_01_4.js b/doc/html/structutl_1_1common__impl_1_1____xref_3_01volatile_01_t_01_4.js new file mode 100644 index 0000000..5a14744 --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1____xref_3_01volatile_01_t_01_4.js @@ -0,0 +1,4 @@ +var structutl_1_1common__impl_1_1____xref_3_01volatile_01_t_01_4 = +[ + [ "apply", "structutl_1_1common__impl_1_1____xref_3_01volatile_01_t_01_4.html#affd4de84c60ada7d645b9f4d66f17b25", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1common__impl_1_1basic__common__reference.html b/doc/html/structutl_1_1common__impl_1_1basic__common__reference.html new file mode 100644 index 0000000..126f4cc --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1basic__common__reference.html @@ -0,0 +1,116 @@ + + + + + + + +uTL: utl::common_impl::basic_common_reference< class, class, class, class > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::common_impl::basic_common_reference< class, class, class, class > Struct Template Reference
    +
    +
    + +

    #include <stl.h>

    +

    Detailed Description

    +

    template<class, class, template< class > class, template< class > class>
    +struct utl::common_impl::basic_common_reference< class, class, class, class >

    + + +

    Definition at line 209 of file stl.h.

    +

    The documentation for this struct was generated from the following file:
      +
    • include/utl/concepts/stl.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structutl_1_1common__impl_1_1common__reference.html b/doc/html/structutl_1_1common__impl_1_1common__reference.html new file mode 100644 index 0000000..7580f6a --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1common__reference.html @@ -0,0 +1,116 @@ + + + + + + + +uTL: utl::common_impl::common_reference<... > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::common_impl::common_reference<... > Struct Template Reference
    +
    +
    + +

    #include <stl.h>

    +

    Detailed Description

    +

    template<class...>
    +struct utl::common_impl::common_reference<... >

    + + +

    Definition at line 222 of file stl.h.

    +

    The documentation for this struct was generated from the following file:
      +
    • include/utl/concepts/stl.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_00_01_v_00_01_w_8_8_8_01_4.html b/doc/html/structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_00_01_v_00_01_w_8_8_8_01_4.html new file mode 100644 index 0000000..d9bcb4c --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_00_01_v_00_01_w_8_8_8_01_4.html @@ -0,0 +1,125 @@ + + + + + + + +uTL: utl::common_impl::common_reference< T, U, V, W... > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::common_impl::common_reference< T, U, V, W... > Struct Template Reference
    +
    +
    + +

    #include <stl.h>

    +
    +Inheritance diagram for utl::common_impl::common_reference< T, U, V, W... >:
    +
    +
    + + +utl::common_impl::common_reference< common_reference_t< T, U >, V, W... > + +
    +

    Detailed Description

    +

    template<class T, class U, class V, class... W>
    +struct utl::common_impl::common_reference< T, U, V, W... >

    + + +

    Definition at line 274 of file stl.h.

    +

    The documentation for this struct was generated from the following file:
      +
    • include/utl/concepts/stl.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_00_01_v_00_01_w_8_8_8_01_4.png b/doc/html/structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_00_01_v_00_01_w_8_8_8_01_4.png new file mode 100644 index 0000000000000000000000000000000000000000..602ac17d5b7cd44d5d3334f1719aba8714fe2ba1 GIT binary patch literal 1107 zcmeAS@N?(olHy`uVBq!ia0y~yU_1w82XHV0$>qwatUyX4z$e7@|Ns9$=8HF9OZyK^ z0J6aNz<~p-oplRDQmo!m;LzwRIz=1aY?z~%*~Cj-1`OnM`gFz6)q^#n09u4noH@5pL@^#hy1oGxl>ugCf>Rr>??{&g?YpLiTtT5&3>Yq~=Aw_68V*;kb~ zr|0Xn`0-4Cbv*UbozqbP(w|KYV|Lj;_*Gneri6Ev*Sm~;(dnis497Pr%O^}<{;DL{ zK+JZQojLcuLmwNqIy1BVsLQ&~|8mZL2HEA@e+}kdKEAi?X7ms5G~8C_kuee|vFvaYA1FbLl&CFH58| zU%hhfaU8#SGa?<#{Jk}W_tECv9~`EN?Y}*LZBvQ6`|4r?jRs@OSoH%Z|LhdxD_00u z8ZY%Z{<7uT?`6?8CWitY8rXmAHY+Y?I`UAqgh_?L96dCDT+2+GHe)911Nmt@ak8OK S;=tU_z~JfX=d#Wzp$Py0cm{z0 literal 0 HcmV?d00001 diff --git a/doc/html/structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_01_4.html b/doc/html/structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_01_4.html new file mode 100644 index 0000000..6caf75a --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_01_4.html @@ -0,0 +1,127 @@ + + + + + + + +uTL: utl::common_impl::common_reference< T, U > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::common_impl::common_reference< T, U > Struct Template Reference
    +
    +
    + +

    #include <stl.h>

    +
    +Inheritance diagram for utl::common_impl::common_reference< T, U >:
    +
    +
    + + +utl::common_impl::__common_reference< T, U > +utl::common_impl::__common_reference2< T, U > +utl::common_impl::__common_reference3< T, U > + +
    +

    Detailed Description

    +

    template<class T, class U>
    +struct utl::common_impl::common_reference< T, U >

    + + +

    Definition at line 269 of file stl.h.

    +

    The documentation for this struct was generated from the following file:
      +
    • include/utl/concepts/stl.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_01_4.png b/doc/html/structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_01_4.png new file mode 100644 index 0000000000000000000000000000000000000000..9e873d57b3c5d8a018054607aedae72b4d282b3e GIT binary patch literal 2281 zcmeHJT~L$P7X1Q95zqlNK%t08L_!D@E#&e~lu!7g5J(6J2nC@8P{0d>pOzTfUO|!) z$VZfpL2Y6pM1cwf5Rf0MRs|&x!B)8vuOk?KgC!8fLKb$NHj;J`2A(W$kN7p*J4 zk%`;tn|GzHaOp`ejzvPZ<}$suh`HcK(51s9t<%j(JhF8{^FLu!M zMA+E$_t4=)K<}&~5v+kC3kyK^>PaLb@UTmso=E}-m`3f()4N)ZM9e1O0lP>&lOx~< zCV8#n%bJiu&n)~Ils%MG9}MqZk26eJcd!hv-z`7j2w4j)cGrHf(E5Bi);Oo~RW1li zo{^dH_r7Aq-Bu&JnAUO1aYAun>18_#>^PL=-1 z2P~zmx^vL7mWW8-e`=i-P@Igv+&T4jly)u$#?ll-$(L8L z)bMj=7r&3>pw8WYl;#S_Z;m?>$+>d#n{x}U$y?EoU8xr&bLsN*Wuee7E;3P5>ZTo# z;d*p9^?OpQat8k|>R+NlR_jEy3XBt90ic-Uj`W$GkkybsZQieNnwtD6Yx1r};Hiy=<*i1YK|6gv^+ak!+(sGGCadeUR%;2pIf zrKMi{);-S%jr&T_;H8?XU2+hg$+TwN3YL9yIT#L2nUPcrm5Ev0 zT68Dl(sA$KjXnkmq`Ul3STc|qD%HyQrfvtcLSJu&cX=Z-d+_m#nnis;etSb7a4b=4 z(rT6sLhq1iz^&0r8^p0B5b!=^5^xHM_?Nc!LFuj<{byUnR_?qPEVIPGLX&l<{92If z3g=ehm1;ABOn)kDQuP}9b312x3lo)gqjsx}bWB|oIgCX;HOAejn)z#@u2o4m6)aSP zCwwBkhZ6FD40n7vKP0Li;pT5ei!pN(Yl``l%+%Ip4&gFLB5xL5&^#LWmQo6awL9yA zMtmN#Gcc*}B7Wp_r(vaVL#eDi9u^{2$+4x<2LhMhs7T+ovB^A2+(S9WA}5K;cOUNc zVXcheX^UCzxXn^QifM(15xSwDEhvvul&gNkN^<_Emb2$mX)fO#(bw88x$Qg#`n+$? zO>gorJ=Qq?c5h|45OwmCX%sZ(b9z=&WDd!;U5G?M{%j;fI<*dWDdB^jyqcVG;91u- zz_J)yZ?OG&c9VTEfYCX1&8peHIHTSm;Ugm*gQgwDCYTRQZ~Q>CD49e^GcqeiSZW() z-Dq!aP{e4?cjJ{?{O>INfGFVf?zwCmUNikI6ELr-UMRTK^U@7$XC7S|rDdGG@9&~6 znZM+rvaKsGIy?^j!(D#)(j@xcVc&d(OgF@nXj;}NseT*K$?M>^4h6xA{+W$0dzXGo z7)>-C!43or7rdHBPs`X7Iy|ePnInAe q`IGb(uKe9Shmj&K453Av)^uH8P(-Q5M;EpK5&!~20~_}yeDen!nBEcq literal 0 HcmV?d00001 diff --git a/doc/html/structutl_1_1common__impl_1_1common__reference_3_01_t_01_4-members.html b/doc/html/structutl_1_1common__impl_1_1common__reference_3_01_t_01_4-members.html new file mode 100644 index 0000000..5b7661a --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1common__reference_3_01_t_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::common_impl::common_reference< T > Member List
    +
    +
    + +

    This is the complete list of members for utl::common_impl::common_reference< T >, including all inherited members.

    + + +
    type typedefutl::common_impl::common_reference< T >
    +
    + + + + diff --git a/doc/html/structutl_1_1common__impl_1_1common__reference_3_01_t_01_4.html b/doc/html/structutl_1_1common__impl_1_1common__reference_3_01_t_01_4.html new file mode 100644 index 0000000..7c81711 --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1common__reference_3_01_t_01_4.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: utl::common_impl::common_reference< T > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::common_impl::common_reference< T > Struct Template Reference
    +
    +
    + +

    #include <stl.h>

    + + + + +

    +Public Types

    using type = T
     
    +

    Detailed Description

    +

    template<class T>
    +struct utl::common_impl::common_reference< T >

    + + +

    Definition at line 231 of file stl.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<class T >
    + + + + +
    using utl::common_impl::common_reference< T >::type = T
    +
    + +

    Definition at line 232 of file stl.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/utl/concepts/stl.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structutl_1_1common__impl_1_1common__reference_3_01_t_01_4.js b/doc/html/structutl_1_1common__impl_1_1common__reference_3_01_t_01_4.js new file mode 100644 index 0000000..a81944d --- /dev/null +++ b/doc/html/structutl_1_1common__impl_1_1common__reference_3_01_t_01_4.js @@ -0,0 +1,4 @@ +var structutl_1_1common__impl_1_1common__reference_3_01_t_01_4 = +[ + [ "type", "structutl_1_1common__impl_1_1common__reference_3_01_t_01_4.html#ad228404ea08fbb8929dc7792a803c5a4", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1contiguous__iterator__tag.html b/doc/html/structutl_1_1contiguous__iterator__tag.html new file mode 100644 index 0000000..c371f5e --- /dev/null +++ b/doc/html/structutl_1_1contiguous__iterator__tag.html @@ -0,0 +1,125 @@ + + + + + + + +uTL: utl::contiguous_iterator_tag Struct Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::contiguous_iterator_tag Struct Reference
    +
    +
    + +

    #include <dev_iterators.h>

    +
    +Inheritance diagram for utl::contiguous_iterator_tag:
    +
    +
    + + +utl::random_access_iterator_tag +utl::bidirectional_iterator_tag +utl::forward_iterator_tag +utl::input_iterator_tag + +
    +

    Detailed Description

    +
    +

    Definition at line 60 of file dev_iterators.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1contiguous__iterator__tag.png b/doc/html/structutl_1_1contiguous__iterator__tag.png new file mode 100644 index 0000000000000000000000000000000000000000..6f47d1a116229ec10d8f3ea67878d6e19372077f GIT binary patch literal 1689 zcma)-c~H|=5XYlb4h1ucRzc~nmQcl`R8cWO3|0j~Fi1c}r<_6&5dsDTE97TAOQ(uP zZbU?m$YshIDTPE(5W^uL=BB+ z!BXR;7!1aMNDnvaO9y{(D0A7d{*LcztzcRPLr2Een zAGqQ_W`P$8w)>GL6J<#_Vyzbwi5kzSuV5r)8<>UIlQ&C9Zp>TCYh0Yf#X#YO2)V>n6wfHxYb)OEw)TGV{*rIK6I{*r9zxE0W;GQDw#09*r_8H!OleQe2r|Dei!l zbCHO1)>y$rd^R1e1!~%g)Ea1ktp;~so97eCE=yAT5-igEw47gV@ysVzAP1pn>uMjg z&!K6a^>g6vYPZzN7fyA-;U2zup%9zM41eLgl!Hqj9w*imTN!#sDnzqh%;ic%DI8GS zBW8`UAG%qK&|50KFg1phX{7o#p3MyZv9iu{3R`*0u{}|Qast@e1SOZ{SQm>eWD)CgZ^))k+NTUE zZci!WJR;!vfLn>H6Cb79F;9jlx8$9<7O1+AWVT28fDwHdP|6s+X@R)Bu~>L@N&IvL zy$kF-S(8d3^@{GIb(X|=EA?#mDNqiu2n#s2Uw@mOrng*825faRUcz!Sqe zWe%O0HmaLVmXGZ@jkt%T_|Dph6VmyDCzO&{N>=dewH~T1jb*rm3I%(iTR;`MvYb|j zd|BK^FnHO{bgG&WF6+6rxvGD|8kE)6yb6-Tz*^3>OTN4FLiuvM%)&K#1nE1_JNmj! znU><*3NP5Qk>;=_TAL@@r7Ud(WFWyEM>#XF`F3)qQD2DqL;;`bH>oP!7wzi&Qg3TQ zu72RdH{*qOa2<(V+(EeH9P^1P(l>GL*@C52WJ)|Hrp&<(rLm$;JWPuTm zE_t;*eSzy4Lwi66`?+F+xoK!#hj;h?X!&00!K?S^(`!p`5#$fW%h15Hn#nlI#q|$| z7U{S+gMi#MsB|DZUc1ReD$&o(3(`NV4*KQ(`K3@yJXbs?<>$a2XAQT}lPceYjz^k^O+32X%-|PUL;k)Cg(CFK0O2Idu6WN|+WqdFj*!Kval71a20J-tbw=lo^ukeo z95vs)bYPXBIRo$i#;?q9z2f)|4niAywi}+D-q}Zf|oDjSzTBZ?j%Cl$A#<01@J5B_gd8p_Uc74+<#&D4`}yn z$cZOh|K!!S_bVW5nmCtElb*wP_YTQ6x;!WoE@cb#{!b%1P1_9Nl}Ae2$Qg`=(ab_89&xh4P&;wAwGnw&>zg)NP|`--{v#F(&^xsqya$tvqyxf&V+ zRF}kGsV^NpJn~hp`_49=o^3dmdLh*OyPL3i7*>qsS=Inc)CSZ|?IfDaS}zN2Jg?|L ybfS1#R+pgAvf73j9o`S`8H)np+3{2kqNV#qQsJC&cbn!P!H^D74nF?I`|_Vzf0z*f literal 0 HcmV?d00001 diff --git a/doc/html/structutl_1_1crtp__tag.html b/doc/html/structutl_1_1crtp__tag.html new file mode 100644 index 0000000..ac8bced --- /dev/null +++ b/doc/html/structutl_1_1crtp__tag.html @@ -0,0 +1,117 @@ + + + + + + + +uTL: utl::crtp_tag Struct Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::crtp_tag Struct Reference
    +
    +
    + +

    CRTP support tag type. + More...

    + +

    #include <crtp.h>

    +

    Detailed Description

    +

    CRTP support tag type.

    + +

    Definition at line 38 of file crtp.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1detail_1_1invoke__result__-members.html b/doc/html/structutl_1_1detail_1_1invoke__result__-members.html new file mode 100644 index 0000000..627ff3d --- /dev/null +++ b/doc/html/structutl_1_1detail_1_1invoke__result__-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::detail::invoke_result_< B, _Callable, _Args > Member List
    +
    +
    + +

    This is the complete list of members for utl::detail::invoke_result_< B, _Callable, _Args >, including all inherited members.

    + + +
    type typedefutl::detail::invoke_result_< B, _Callable, _Args >
    +
    + + + + diff --git a/doc/html/structutl_1_1detail_1_1invoke__result__.html b/doc/html/structutl_1_1detail_1_1invoke__result__.html new file mode 100644 index 0000000..bbdd504 --- /dev/null +++ b/doc/html/structutl_1_1detail_1_1invoke__result__.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: utl::detail::invoke_result_< B, _Callable, _Args > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::detail::invoke_result_< B, _Callable, _Args > Struct Template Reference
    +
    +
    + +

    #include <invoke.h>

    + + + + +

    +Public Types

    using type = meta::nil_
     
    +

    Detailed Description

    +

    template<bool B, typename _Callable, typename... _Args>
    +struct utl::detail::invoke_result_< B, _Callable, _Args >

    + + +

    Definition at line 157 of file invoke.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<bool B, typename _Callable , typename... _Args>
    + + + + +
    using utl::detail::invoke_result_< B, _Callable, _Args >::type = meta::nil_
    +
    + +

    Definition at line 158 of file invoke.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1detail_1_1invoke__result__.js b/doc/html/structutl_1_1detail_1_1invoke__result__.js new file mode 100644 index 0000000..a8f94c5 --- /dev/null +++ b/doc/html/structutl_1_1detail_1_1invoke__result__.js @@ -0,0 +1,4 @@ +var structutl_1_1detail_1_1invoke__result__ = +[ + [ "type", "structutl_1_1detail_1_1invoke__result__.html#a03e0ac5bf1e7751812af8828eb6550b3", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1detail_1_1invoke__result___3_01true_00_01___callable_00_01___args_8_8_8_01_4-members.html b/doc/html/structutl_1_1detail_1_1invoke__result___3_01true_00_01___callable_00_01___args_8_8_8_01_4-members.html new file mode 100644 index 0000000..368f908 --- /dev/null +++ b/doc/html/structutl_1_1detail_1_1invoke__result___3_01true_00_01___callable_00_01___args_8_8_8_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::detail::invoke_result_< true, _Callable, _Args... > Member List
    +
    +
    + +

    This is the complete list of members for utl::detail::invoke_result_< true, _Callable, _Args... >, including all inherited members.

    + + +
    type typedefutl::detail::invoke_result_< true, _Callable, _Args... >
    +
    + + + + diff --git a/doc/html/structutl_1_1detail_1_1invoke__result___3_01true_00_01___callable_00_01___args_8_8_8_01_4.html b/doc/html/structutl_1_1detail_1_1invoke__result___3_01true_00_01___callable_00_01___args_8_8_8_01_4.html new file mode 100644 index 0000000..7e8ea11 --- /dev/null +++ b/doc/html/structutl_1_1detail_1_1invoke__result___3_01true_00_01___callable_00_01___args_8_8_8_01_4.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: utl::detail::invoke_result_< true, _Callable, _Args... > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::detail::invoke_result_< true, _Callable, _Args... > Struct Template Reference
    +
    +
    + +

    #include <invoke.h>

    + + + + +

    +Public Types

    using type = meta::invoke_t< meta::quote< try_invoke >, _Callable, _Args... >
     
    +

    Detailed Description

    +

    template<typename _Callable, typename... _Args>
    +struct utl::detail::invoke_result_< true, _Callable, _Args... >

    + + +

    Definition at line 162 of file invoke.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename _Callable , typename... _Args>
    + + + + +
    using utl::detail::invoke_result_< true, _Callable, _Args... >::type = meta::invoke_t< meta::quote<try_invoke>, _Callable, _Args... >
    +
    + +

    Definition at line 165 of file invoke.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1detail_1_1invoke__result___3_01true_00_01___callable_00_01___args_8_8_8_01_4.js b/doc/html/structutl_1_1detail_1_1invoke__result___3_01true_00_01___callable_00_01___args_8_8_8_01_4.js new file mode 100644 index 0000000..45a102f --- /dev/null +++ b/doc/html/structutl_1_1detail_1_1invoke__result___3_01true_00_01___callable_00_01___args_8_8_8_01_4.js @@ -0,0 +1,4 @@ +var structutl_1_1detail_1_1invoke__result___3_01true_00_01___callable_00_01___args_8_8_8_01_4 = +[ + [ "type", "structutl_1_1detail_1_1invoke__result___3_01true_00_01___callable_00_01___args_8_8_8_01_4.html#af68f2e0441486139aab41a8d5e74b35a", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1detail_1_1is__ref__wrapper.html b/doc/html/structutl_1_1detail_1_1is__ref__wrapper.html new file mode 100644 index 0000000..a9b41e0 --- /dev/null +++ b/doc/html/structutl_1_1detail_1_1is__ref__wrapper.html @@ -0,0 +1,124 @@ + + + + + + + +uTL: utl::detail::is_ref_wrapper< T > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::detail::is_ref_wrapper< T > Struct Template Reference
    +
    +
    + +

    #include <invoke.h>

    +
    +Inheritance diagram for utl::detail::is_ref_wrapper< T >:
    +
    +
    + + + +
    +

    Detailed Description

    +

    template<class T>
    +struct utl::detail::is_ref_wrapper< T >

    + + +

    Definition at line 40 of file invoke.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1detail_1_1is__ref__wrapper.png b/doc/html/structutl_1_1detail_1_1is__ref__wrapper.png new file mode 100644 index 0000000000000000000000000000000000000000..fbb6b90793f503faf3f497070c3a6866e8b52d3e GIT binary patch literal 605 zcmeAS@N?(olHy`uVBq!ia0vp^JAgQVgBeK9{pBwOq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IXg-*~z>hEy=VoqM-$wE+*?ar3|T{`XF2 z;yveoGmk$)ebQ1MRg;#3g=cir(u|utFV!sBq2fB}(IkZt|@2TKg)_XWFf; z2or6H2$E5lB*NaIa+DFMqrn3&SIl^`G6y?4)>Er>jF zaNAFpn%gqfmwJwE@h>dzIeNF}ZE{@p2eZ&P?N5%}*~f4EJa*NNgz}g7p8Zgmd%mbfU-9?GCk`vMZvS~L%6y;gp=P(8nEvOU)m#Bv zKd)jE@R=XTAYU}~$87#PyWijYugv!$e3>Zwk6F;5stl_)-u&|iV`5ZcxO2b + + + + + + +uTL: utl::detail::is_ref_wrapper< std::reference_wrapper< U > > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::detail::is_ref_wrapper< std::reference_wrapper< U > > Struct Template Reference
    +
    +
    + +

    #include <invoke.h>

    +
    +Inheritance diagram for utl::detail::is_ref_wrapper< std::reference_wrapper< U > >:
    +
    +
    + + + +
    +

    Detailed Description

    +

    template<class U>
    +struct utl::detail::is_ref_wrapper< std::reference_wrapper< U > >

    + + +

    Definition at line 42 of file invoke.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1detail_1_1is__ref__wrapper_3_01std_1_1reference__wrapper_3_01_u_01_4_01_4.png b/doc/html/structutl_1_1detail_1_1is__ref__wrapper_3_01std_1_1reference__wrapper_3_01_u_01_4_01_4.png new file mode 100644 index 0000000000000000000000000000000000000000..3556500a3ad08345c1aebb8bac1e2c9f0bfad6f3 GIT binary patch literal 858 zcmeAS@N?(olHy`uVBq!ia0y~yUgN_=vp;Eh?oN9jme09sZcN!a=OwStt@XOZXu0U>=XqOSFY#T6X4R2ZDmyzv zJ&QI+u3g0y8fwSDcSziU!9Zv=L)yN5i$o82uVI>TbBUXF!_)}Y55mhC@{&Xk_^x5v z(HY8MzLD#JS{UPqm$%MezGusGzr5(kXNi@*EAp;}g&kkEtn!_) z{?nAL@l(GY+dA9s(7xYQ^O)F{?O49{;opi~-z)9vkG^_Y9KAhFasO(DyRxsBXSm5M z-`MQ z@7ueVozJ{}INI2sz3M7ww{rFArVp{K8JCi@GLvOzE4_LB%33rbYV!FWybm6K~$K_r1F5ggV S?0E&u2n?RCelF{r5}E+lqNQR0 literal 0 HcmV?d00001 diff --git a/doc/html/structutl_1_1detail_1_1try__invoke-members.html b/doc/html/structutl_1_1detail_1_1try__invoke-members.html new file mode 100644 index 0000000..5a39281 --- /dev/null +++ b/doc/html/structutl_1_1detail_1_1try__invoke-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::detail::try_invoke< _Callable, _Args > Member List
    +
    +
    + +

    This is the complete list of members for utl::detail::try_invoke< _Callable, _Args >, including all inherited members.

    + + +
    type typedefutl::detail::try_invoke< _Callable, _Args >
    +
    + + + + diff --git a/doc/html/structutl_1_1detail_1_1try__invoke.html b/doc/html/structutl_1_1detail_1_1try__invoke.html new file mode 100644 index 0000000..bd3d0d6 --- /dev/null +++ b/doc/html/structutl_1_1detail_1_1try__invoke.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: utl::detail::try_invoke< _Callable, _Args > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::detail::try_invoke< _Callable, _Args > Struct Template Reference
    +
    +
    + +

    #include <invoke.h>

    + + + + +

    +Public Types

    using type = decltype(detail::invoke_impl_(std::declval< _Callable && >(), std::declval< _Args && >()...))
     
    +

    Detailed Description

    +

    template<typename _Callable, typename... _Args>
    +struct utl::detail::try_invoke< _Callable, _Args >

    + + +

    Definition at line 150 of file invoke.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename _Callable , typename... _Args>
    + + + + +
    using utl::detail::try_invoke< _Callable, _Args >::type = decltype ( detail::invoke_impl_(std::declval<_Callable&&>(), std::declval<_Args&&>()...) )
    +
    + +

    Definition at line 153 of file invoke.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1detail_1_1try__invoke.js b/doc/html/structutl_1_1detail_1_1try__invoke.js new file mode 100644 index 0000000..331fbcf --- /dev/null +++ b/doc/html/structutl_1_1detail_1_1try__invoke.js @@ -0,0 +1,4 @@ +var structutl_1_1detail_1_1try__invoke = +[ + [ "type", "structutl_1_1detail_1_1try__invoke.html#a23491c600d42090f3eb400eadc49ef7f", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1details_1_1is__boolean__-members.html b/doc/html/structutl_1_1details_1_1is__boolean__-members.html new file mode 100644 index 0000000..dcd4b8c --- /dev/null +++ b/doc/html/structutl_1_1details_1_1is__boolean__-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::details::is_boolean_< B, typename > Member List
    +
    +
    + +

    This is the complete list of members for utl::details::is_boolean_< B, typename >, including all inherited members.

    + + +
    type typedefutl::details::is_boolean_< B, typename >
    +
    + + + + diff --git a/doc/html/structutl_1_1details_1_1is__boolean__.html b/doc/html/structutl_1_1details_1_1is__boolean__.html new file mode 100644 index 0000000..3e67e6d --- /dev/null +++ b/doc/html/structutl_1_1details_1_1is__boolean__.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: utl::details::is_boolean_< B, typename > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::details::is_boolean_< B, typename > Struct Template Reference
    +
    +
    + +

    #include <stl.h>

    + + + + +

    +Public Types

    using type = meta::false_
     
    +

    Detailed Description

    +

    template<typename B, typename = void>
    +struct utl::details::is_boolean_< B, typename >

    + + +

    Definition at line 530 of file stl.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename B , typename = void>
    + + + + +
    using utl::details::is_boolean_< B, typename >::type = meta::false_
    +
    + +

    Definition at line 531 of file stl.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/utl/concepts/stl.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structutl_1_1details_1_1is__boolean__.js b/doc/html/structutl_1_1details_1_1is__boolean__.js new file mode 100644 index 0000000..afcf1d9 --- /dev/null +++ b/doc/html/structutl_1_1details_1_1is__boolean__.js @@ -0,0 +1,4 @@ +var structutl_1_1details_1_1is__boolean__ = +[ + [ "type", "structutl_1_1details_1_1is__boolean__.html#ad34df9d79caf33bf92019da4232b791c", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1details_1_1is__boolean___3_01_b_00_01meta_1_1void__t_3_01meta_1_1use__if__same__t_37e77ed45a431955fc15b4c1210ad8491.html b/doc/html/structutl_1_1details_1_1is__boolean___3_01_b_00_01meta_1_1void__t_3_01meta_1_1use__if__same__t_37e77ed45a431955fc15b4c1210ad8491.html new file mode 100644 index 0000000..049e1a9 --- /dev/null +++ b/doc/html/structutl_1_1details_1_1is__boolean___3_01_b_00_01meta_1_1void__t_3_01meta_1_1use__if__same__t_37e77ed45a431955fc15b4c1210ad8491.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: utl::details::is_boolean_< B, meta::void_t< meta::use_if_same_t< bool, decltype(!std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>()==std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>() !=std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>() &&std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>()||std::declval< cref_< B >>())> > > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::details::is_boolean_< B, meta::void_t< meta::use_if_same_t< bool, decltype(!std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>()==std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>() !=std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>() &&std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>()||std::declval< cref_< B >>())> > > Struct Template Reference
    +
    +
    + +

    #include <stl.h>

    + + + + +

    +Public Types

    using type = meta::true_
     
    +

    Detailed Description

    +

    template<typename B>
    +struct utl::details::is_boolean_< B, meta::void_t< meta::use_if_same_t< bool, decltype(!std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>()==std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>() !=std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>() &&std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>()||std::declval< cref_< B >>())> > >

    + + +

    Definition at line 535 of file stl.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename B >
    + + + + +
    using utl::details::is_boolean_< B, meta::void_t< meta::use_if_same_t< bool, decltype(!std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>()==std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>() !=std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>() &&std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>()||std::declval< cref_< B >>())> > >::type = meta::true_
    +
    + +

    Definition at line 542 of file stl.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/utl/concepts/stl.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structutl_1_1details_1_1is__boolean___3_01_b_00_01meta_1_1void__t_3_01meta_1_1use__if__same__t_37e77ed45a431955fc15b4c1210ad8491.js b/doc/html/structutl_1_1details_1_1is__boolean___3_01_b_00_01meta_1_1void__t_3_01meta_1_1use__if__same__t_37e77ed45a431955fc15b4c1210ad8491.js new file mode 100644 index 0000000..0f58c04 --- /dev/null +++ b/doc/html/structutl_1_1details_1_1is__boolean___3_01_b_00_01meta_1_1void__t_3_01meta_1_1use__if__same__t_37e77ed45a431955fc15b4c1210ad8491.js @@ -0,0 +1,4 @@ +var structutl_1_1details_1_1is__boolean___3_01_b_00_01meta_1_1void__t_3_01meta_1_1use__if__same__t_37e77ed45a431955fc15b4c1210ad8491 = +[ + [ "type", "structutl_1_1details_1_1is__boolean___3_01_b_00_01meta_1_1void__t_3_01meta_1_1use__if__same__t_37e77ed45a431955fc15b4c1210ad8491.html#abfb3ea1ef62c31310d992fde67f92900", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1details_1_1is__boolean___3_01_b_00_01meta_1_1void__t_3_01meta_1_1use__if__same__t_3ad1d6c2db324c85cc71a9bc43da835ec.html b/doc/html/structutl_1_1details_1_1is__boolean___3_01_b_00_01meta_1_1void__t_3_01meta_1_1use__if__same__t_3ad1d6c2db324c85cc71a9bc43da835ec.html new file mode 100644 index 0000000..c4b53eb --- /dev/null +++ b/doc/html/structutl_1_1details_1_1is__boolean___3_01_b_00_01meta_1_1void__t_3_01meta_1_1use__if__same__t_3ad1d6c2db324c85cc71a9bc43da835ec.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::details::is_boolean_< B, meta::void_t< meta::use_if_same_t< bool, decltype(!std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>()==std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>() !=std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>() &&std::declval< cref_< B >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< B >>()||std::declval< cref_< B >>())> > > Member List
    +
    + +
    + + + + diff --git a/doc/html/structutl_1_1details_1_1is__strict__totally__ordered__-members.html b/doc/html/structutl_1_1details_1_1is__strict__totally__ordered__-members.html new file mode 100644 index 0000000..694253b --- /dev/null +++ b/doc/html/structutl_1_1details_1_1is__strict__totally__ordered__-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::details::is_strict_totally_ordered_< T, typename > Member List
    +
    +
    + +

    This is the complete list of members for utl::details::is_strict_totally_ordered_< T, typename >, including all inherited members.

    + + +
    type typedefutl::details::is_strict_totally_ordered_< T, typename >
    +
    + + + + diff --git a/doc/html/structutl_1_1details_1_1is__strict__totally__ordered__.html b/doc/html/structutl_1_1details_1_1is__strict__totally__ordered__.html new file mode 100644 index 0000000..1556160 --- /dev/null +++ b/doc/html/structutl_1_1details_1_1is__strict__totally__ordered__.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: utl::details::is_strict_totally_ordered_< T, typename > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::details::is_strict_totally_ordered_< T, typename > Struct Template Reference
    +
    +
    + +

    #include <stl.h>

    + + + + +

    +Public Types

    using type = meta::false_
     
    +

    Detailed Description

    +

    template<typename T, typename = void>
    +struct utl::details::is_strict_totally_ordered_< T, typename >

    + + +

    Definition at line 627 of file stl.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename T , typename = void>
    + + + + +
    using utl::details::is_strict_totally_ordered_< T, typename >::type = meta::false_
    +
    + +

    Definition at line 628 of file stl.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/utl/concepts/stl.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structutl_1_1details_1_1is__strict__totally__ordered__.js b/doc/html/structutl_1_1details_1_1is__strict__totally__ordered__.js new file mode 100644 index 0000000..c230f68 --- /dev/null +++ b/doc/html/structutl_1_1details_1_1is__strict__totally__ordered__.js @@ -0,0 +1,4 @@ +var structutl_1_1details_1_1is__strict__totally__ordered__ = +[ + [ "type", "structutl_1_1details_1_1is__strict__totally__ordered__.html#acb182f06d015a63fbe00a9700422046f", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1details_1_1is__strict__totally__ordered___3_01_t_00_01meta_1_1void__t_3_01meta_1_1u81d73edcb77c29e6078e6f471605fc0e.html b/doc/html/structutl_1_1details_1_1is__strict__totally__ordered___3_01_t_00_01meta_1_1void__t_3_01meta_1_1u81d73edcb77c29e6078e6f471605fc0e.html new file mode 100644 index 0000000..afad9ad --- /dev/null +++ b/doc/html/structutl_1_1details_1_1is__strict__totally__ordered___3_01_t_00_01meta_1_1void__t_3_01meta_1_1u81d73edcb77c29e6078e6f471605fc0e.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/doc/html/structutl_1_1details_1_1is__strict__totally__ordered___3_01_t_00_01meta_1_1void__t_3_01meta_1_1uab48bcfc89164f446368b35bcc7c8bcd.html b/doc/html/structutl_1_1details_1_1is__strict__totally__ordered___3_01_t_00_01meta_1_1void__t_3_01meta_1_1uab48bcfc89164f446368b35bcc7c8bcd.html new file mode 100644 index 0000000..6fdedfb --- /dev/null +++ b/doc/html/structutl_1_1details_1_1is__strict__totally__ordered___3_01_t_00_01meta_1_1void__t_3_01meta_1_1uab48bcfc89164f446368b35bcc7c8bcd.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: utl::details::is_strict_totally_ordered_< T, meta::void_t< meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()< std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() > std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()<=std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() >=std::declval< cref_< T >>())> > > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::details::is_strict_totally_ordered_< T, meta::void_t< meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()< std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() > std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()<=std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() >=std::declval< cref_< T >>())> > > Struct Template Reference
    +
    +
    + +

    #include <stl.h>

    + + + + +

    +Public Types

    using type = meta::true_
     
    +

    Detailed Description

    +

    template<typename T>
    +struct utl::details::is_strict_totally_ordered_< T, meta::void_t< meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()< std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() > std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()<=std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() >=std::declval< cref_< T >>())> > >

    + + +

    Definition at line 632 of file stl.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename T >
    + + + + +
    using utl::details::is_strict_totally_ordered_< T, meta::void_t< meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()< std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() > std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()<=std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() >=std::declval< cref_< T >>())> > >::type = meta::true_
    +
    + +

    Definition at line 638 of file stl.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/utl/concepts/stl.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structutl_1_1details_1_1is__strict__totally__ordered___3_01_t_00_01meta_1_1void__t_3_01meta_1_1uab48bcfc89164f446368b35bcc7c8bcd.js b/doc/html/structutl_1_1details_1_1is__strict__totally__ordered___3_01_t_00_01meta_1_1void__t_3_01meta_1_1uab48bcfc89164f446368b35bcc7c8bcd.js new file mode 100644 index 0000000..f68c087 --- /dev/null +++ b/doc/html/structutl_1_1details_1_1is__strict__totally__ordered___3_01_t_00_01meta_1_1void__t_3_01meta_1_1uab48bcfc89164f446368b35bcc7c8bcd.js @@ -0,0 +1,4 @@ +var structutl_1_1details_1_1is__strict__totally__ordered___3_01_t_00_01meta_1_1void__t_3_01meta_1_1uab48bcfc89164f446368b35bcc7c8bcd = +[ + [ "type", "structutl_1_1details_1_1is__strict__totally__ordered___3_01_t_00_01meta_1_1void__t_3_01meta_1_1uab48bcfc89164f446368b35bcc7c8bcd.html#a221f1b2e947002d4888711116e5ebfb5", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1details_1_1is__strict__totally__ordered__with__-members.html b/doc/html/structutl_1_1details_1_1is__strict__totally__ordered__with__-members.html new file mode 100644 index 0000000..390d40d --- /dev/null +++ b/doc/html/structutl_1_1details_1_1is__strict__totally__ordered__with__-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::details::is_strict_totally_ordered_with_< T, U, typename > Member List
    +
    +
    + +

    This is the complete list of members for utl::details::is_strict_totally_ordered_with_< T, U, typename >, including all inherited members.

    + + +
    type typedefutl::details::is_strict_totally_ordered_with_< T, U, typename >
    +
    + + + + diff --git a/doc/html/structutl_1_1details_1_1is__strict__totally__ordered__with__.html b/doc/html/structutl_1_1details_1_1is__strict__totally__ordered__with__.html new file mode 100644 index 0000000..6253cd2 --- /dev/null +++ b/doc/html/structutl_1_1details_1_1is__strict__totally__ordered__with__.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: utl::details::is_strict_totally_ordered_with_< T, U, typename > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::details::is_strict_totally_ordered_with_< T, U, typename > Struct Template Reference
    +
    +
    + +

    #include <stl.h>

    + + + + +

    +Public Types

    using type = meta::false_
     
    +

    Detailed Description

    +

    template<typename T, typename U, typename = void>
    +struct utl::details::is_strict_totally_ordered_with_< T, U, typename >

    + + +

    Definition at line 682 of file stl.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename T , typename U , typename = void>
    + + + + +
    using utl::details::is_strict_totally_ordered_with_< T, U, typename >::type = meta::false_
    +
    + +

    Definition at line 683 of file stl.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/utl/concepts/stl.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structutl_1_1details_1_1is__strict__totally__ordered__with__.js b/doc/html/structutl_1_1details_1_1is__strict__totally__ordered__with__.js new file mode 100644 index 0000000..faf97cf --- /dev/null +++ b/doc/html/structutl_1_1details_1_1is__strict__totally__ordered__with__.js @@ -0,0 +1,4 @@ +var structutl_1_1details_1_1is__strict__totally__ordered__with__ = +[ + [ "type", "structutl_1_1details_1_1is__strict__totally__ordered__with__.html#a4687be9ddf2910a323d69193c0291723", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1details_1_1is__strict__totally__ordered__with___3_01_t_00_01_u_00_01meta_1_1void__t8fb7dd5a6ad25952241e37c6f163f434.html b/doc/html/structutl_1_1details_1_1is__strict__totally__ordered__with___3_01_t_00_01_u_00_01meta_1_1void__t8fb7dd5a6ad25952241e37c6f163f434.html new file mode 100644 index 0000000..ce933f2 --- /dev/null +++ b/doc/html/structutl_1_1details_1_1is__strict__totally__ordered__with___3_01_t_00_01_u_00_01meta_1_1void__t8fb7dd5a6ad25952241e37c6f163f434.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: utl::details::is_strict_totally_ordered_with_< T, U, meta::void_t< meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()< std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() > std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()<=std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() >=std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>()< std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>() > std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>()<=std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>() >=std::declval< cref_< T >>())> > > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::details::is_strict_totally_ordered_with_< T, U, meta::void_t< meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()< std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() > std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()<=std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() >=std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>()< std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>() > std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>()<=std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>() >=std::declval< cref_< T >>())> > > Struct Template Reference
    +
    +
    + +

    #include <stl.h>

    + + + + +

    +Public Types

    using type = meta::true_
     
    +

    Detailed Description

    +

    template<typename T, typename U>
    +struct utl::details::is_strict_totally_ordered_with_< T, U, meta::void_t< meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()< std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() > std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()<=std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() >=std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>()< std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>() > std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>()<=std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>() >=std::declval< cref_< T >>())> > >

    + + +

    Definition at line 687 of file stl.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename T , typename U >
    + + + + +
    using utl::details::is_strict_totally_ordered_with_< T, U, meta::void_t< meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()< std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() > std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()<=std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() >=std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>()< std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>() > std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>()<=std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>() >=std::declval< cref_< T >>())> > >::type = meta::true_
    +
    + +

    Definition at line 697 of file stl.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/utl/concepts/stl.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structutl_1_1details_1_1is__strict__totally__ordered__with___3_01_t_00_01_u_00_01meta_1_1void__t8fb7dd5a6ad25952241e37c6f163f434.js b/doc/html/structutl_1_1details_1_1is__strict__totally__ordered__with___3_01_t_00_01_u_00_01meta_1_1void__t8fb7dd5a6ad25952241e37c6f163f434.js new file mode 100644 index 0000000..f998c4c --- /dev/null +++ b/doc/html/structutl_1_1details_1_1is__strict__totally__ordered__with___3_01_t_00_01_u_00_01meta_1_1void__t8fb7dd5a6ad25952241e37c6f163f434.js @@ -0,0 +1,4 @@ +var structutl_1_1details_1_1is__strict__totally__ordered__with___3_01_t_00_01_u_00_01meta_1_1void__t8fb7dd5a6ad25952241e37c6f163f434 = +[ + [ "type", "structutl_1_1details_1_1is__strict__totally__ordered__with___3_01_t_00_01_u_00_01meta_1_1void__t8fb7dd5a6ad25952241e37c6f163f434.html#a447a36dc0b2239ee20876c6255033345", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1details_1_1is__strict__totally__ordered__with___3_01_t_00_01_u_00_01meta_1_1void__tbfa3d43701320cc59da10160e5809f24.html b/doc/html/structutl_1_1details_1_1is__strict__totally__ordered__with___3_01_t_00_01_u_00_01meta_1_1void__tbfa3d43701320cc59da10160e5809f24.html new file mode 100644 index 0000000..32eb121 --- /dev/null +++ b/doc/html/structutl_1_1details_1_1is__strict__totally__ordered__with___3_01_t_00_01_u_00_01meta_1_1void__tbfa3d43701320cc59da10160e5809f24.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::details::is_strict_totally_ordered_with_< T, U, meta::void_t< meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()< std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() > std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()<=std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() >=std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>()< std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>() > std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>()<=std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>() >=std::declval< cref_< T >>())> > > Member List
    +
    +
    + +

    This is the complete list of members for utl::details::is_strict_totally_ordered_with_< T, U, meta::void_t< meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()< std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() > std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()<=std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() >=std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>()< std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>() > std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>()<=std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>() >=std::declval< cref_< T >>())> > >, including all inherited members.

    + + +
    type typedefutl::details::is_strict_totally_ordered_with_< T, U, meta::void_t< meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()< std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() > std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()<=std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() >=std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>()< std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>() > std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>()<=std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>() >=std::declval< cref_< T >>())> > >
    +
    + + + + diff --git a/doc/html/structutl_1_1details_1_1is__weakly__equality__comparable__with__-members.html b/doc/html/structutl_1_1details_1_1is__weakly__equality__comparable__with__-members.html new file mode 100644 index 0000000..431bbc7 --- /dev/null +++ b/doc/html/structutl_1_1details_1_1is__weakly__equality__comparable__with__-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::details::is_weakly_equality_comparable_with_< T, U, typename > Member List
    +
    +
    + +

    This is the complete list of members for utl::details::is_weakly_equality_comparable_with_< T, U, typename >, including all inherited members.

    + + +
    type typedefutl::details::is_weakly_equality_comparable_with_< T, U, typename >
    +
    + + + + diff --git a/doc/html/structutl_1_1details_1_1is__weakly__equality__comparable__with__.html b/doc/html/structutl_1_1details_1_1is__weakly__equality__comparable__with__.html new file mode 100644 index 0000000..ebc52d6 --- /dev/null +++ b/doc/html/structutl_1_1details_1_1is__weakly__equality__comparable__with__.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: utl::details::is_weakly_equality_comparable_with_< T, U, typename > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::details::is_weakly_equality_comparable_with_< T, U, typename > Struct Template Reference
    +
    +
    + +

    #include <stl.h>

    + + + + +

    +Public Types

    using type = meta::false_
     
    +

    Detailed Description

    +

    template<typename T, typename U, typename = void>
    +struct utl::details::is_weakly_equality_comparable_with_< T, U, typename >

    + + +

    Definition at line 561 of file stl.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename T , typename U , typename = void>
    + + + + +
    using utl::details::is_weakly_equality_comparable_with_< T, U, typename >::type = meta::false_
    +
    + +

    Definition at line 562 of file stl.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/utl/concepts/stl.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structutl_1_1details_1_1is__weakly__equality__comparable__with__.js b/doc/html/structutl_1_1details_1_1is__weakly__equality__comparable__with__.js new file mode 100644 index 0000000..694c3e5 --- /dev/null +++ b/doc/html/structutl_1_1details_1_1is__weakly__equality__comparable__with__.js @@ -0,0 +1,4 @@ +var structutl_1_1details_1_1is__weakly__equality__comparable__with__ = +[ + [ "type", "structutl_1_1details_1_1is__weakly__equality__comparable__with__.html#ab700b64203b780a4e35e0b9362224da4", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1details_1_1is__weakly__equality__comparable__with___3_01_t_00_01_u_00_01meta_1_1voi4404f901930622694666ca68fb75381b.html b/doc/html/structutl_1_1details_1_1is__weakly__equality__comparable__with___3_01_t_00_01_u_00_01meta_1_1voi4404f901930622694666ca68fb75381b.html new file mode 100644 index 0000000..173bab4 --- /dev/null +++ b/doc/html/structutl_1_1details_1_1is__weakly__equality__comparable__with___3_01_t_00_01_u_00_01meta_1_1voi4404f901930622694666ca68fb75381b.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: utl::details::is_weakly_equality_comparable_with_< T, U, meta::void_t< meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()==std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() !=std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>()==std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>() !=std::declval< cref_< T >>())> > > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::details::is_weakly_equality_comparable_with_< T, U, meta::void_t< meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()==std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() !=std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>()==std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>() !=std::declval< cref_< T >>())> > > Struct Template Reference
    +
    +
    + +

    #include <stl.h>

    + + + + +

    +Public Types

    using type = meta::true_
     
    +

    Detailed Description

    +

    template<typename T, typename U>
    +struct utl::details::is_weakly_equality_comparable_with_< T, U, meta::void_t< meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()==std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() !=std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>()==std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>() !=std::declval< cref_< T >>())> > >

    + + +

    Definition at line 566 of file stl.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename T , typename U >
    + + + + +
    using utl::details::is_weakly_equality_comparable_with_< T, U, meta::void_t< meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()==std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() !=std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>()==std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>() !=std::declval< cref_< T >>())> > >::type = meta::true_
    +
    + +

    Definition at line 572 of file stl.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/utl/concepts/stl.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structutl_1_1details_1_1is__weakly__equality__comparable__with___3_01_t_00_01_u_00_01meta_1_1voi4404f901930622694666ca68fb75381b.js b/doc/html/structutl_1_1details_1_1is__weakly__equality__comparable__with___3_01_t_00_01_u_00_01meta_1_1voi4404f901930622694666ca68fb75381b.js new file mode 100644 index 0000000..0534a29 --- /dev/null +++ b/doc/html/structutl_1_1details_1_1is__weakly__equality__comparable__with___3_01_t_00_01_u_00_01meta_1_1voi4404f901930622694666ca68fb75381b.js @@ -0,0 +1,4 @@ +var structutl_1_1details_1_1is__weakly__equality__comparable__with___3_01_t_00_01_u_00_01meta_1_1voi4404f901930622694666ca68fb75381b = +[ + [ "type", "structutl_1_1details_1_1is__weakly__equality__comparable__with___3_01_t_00_01_u_00_01meta_1_1voi4404f901930622694666ca68fb75381b.html#a107023c7eaad95d6f6ed8eeb60801d69", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1details_1_1is__weakly__equality__comparable__with___3_01_t_00_01_u_00_01meta_1_1voibfc2d6389a7246a6162e601b9118387f.html b/doc/html/structutl_1_1details_1_1is__weakly__equality__comparable__with___3_01_t_00_01_u_00_01meta_1_1voibfc2d6389a7246a6162e601b9118387f.html new file mode 100644 index 0000000..0241295 --- /dev/null +++ b/doc/html/structutl_1_1details_1_1is__weakly__equality__comparable__with___3_01_t_00_01_u_00_01meta_1_1voibfc2d6389a7246a6162e601b9118387f.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::details::is_weakly_equality_comparable_with_< T, U, meta::void_t< meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>()==std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< T >>() !=std::declval< cref_< U >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>()==std::declval< cref_< T >>())>, meta::use_if_same_t< bool, decltype(std::declval< cref_< U >>() !=std::declval< cref_< T >>())> > > Member List
    +
    + +
    + + + + diff --git a/doc/html/structutl_1_1dev__iterator__traits-members.html b/doc/html/structutl_1_1dev__iterator__traits-members.html new file mode 100644 index 0000000..3985da9 --- /dev/null +++ b/doc/html/structutl_1_1dev__iterator__traits-members.html @@ -0,0 +1,112 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::dev_iterator_traits< _Cat, _Tp, _Diff > Member List
    +
    + +
    + + + + diff --git a/doc/html/structutl_1_1dev__iterator__traits.html b/doc/html/structutl_1_1dev__iterator__traits.html new file mode 100644 index 0000000..74013a4 --- /dev/null +++ b/doc/html/structutl_1_1dev__iterator__traits.html @@ -0,0 +1,230 @@ + + + + + + + +uTL: utl::dev_iterator_traits< _Cat, _Tp, _Diff > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::dev_iterator_traits< _Cat, _Tp, _Diff > Struct Template Reference
    +
    +
    + +

    Device iterator collection. + More...

    + +

    #include <dev_iterators.h>

    + + + + + + + + + + + + +

    +Public Types

    using iterator_category = _Cat
     
    using value_type = _Tp
     
    using difference_type = _Diff
     
    using pointer = _Tp *
     
    using reference = _Tp &
     
    +

    Detailed Description

    +

    template<typename _Cat, typename _Tp, typename _Diff = ptrdiff_t>
    +struct utl::dev_iterator_traits< _Cat, _Tp, _Diff >

    + +

    Device iterator collection.

    +

    Traits class for dev_iterators.

    +

    This class does nothing but define nested typedefs. The general version simply forwards the nested typedefs from the Iterator argument.

    + +

    Definition at line 43 of file dev_iterators.h.

    +

    Member Typedef Documentation

    + +

    ◆ difference_type

    + +
    +
    +
    +template<typename _Cat, typename _Tp, typename _Diff = ptrdiff_t>
    + + + + +
    using utl::dev_iterator_traits< _Cat, _Tp, _Diff >::difference_type = _Diff
    +
    + +

    Definition at line 46 of file dev_iterators.h.

    + +
    +
    + +

    ◆ iterator_category

    + +
    +
    +
    +template<typename _Cat, typename _Tp, typename _Diff = ptrdiff_t>
    + + + + +
    using utl::dev_iterator_traits< _Cat, _Tp, _Diff >::iterator_category = _Cat
    +
    + +

    Definition at line 44 of file dev_iterators.h.

    + +
    +
    + +

    ◆ pointer

    + +
    +
    +
    +template<typename _Cat, typename _Tp, typename _Diff = ptrdiff_t>
    + + + + +
    using utl::dev_iterator_traits< _Cat, _Tp, _Diff >::pointer = _Tp*
    +
    + +

    Definition at line 47 of file dev_iterators.h.

    + +
    +
    + +

    ◆ reference

    + +
    +
    +
    +template<typename _Cat, typename _Tp, typename _Diff = ptrdiff_t>
    + + + + +
    using utl::dev_iterator_traits< _Cat, _Tp, _Diff >::reference = _Tp&
    +
    + +

    Definition at line 48 of file dev_iterators.h.

    + +
    +
    + +

    ◆ value_type

    + +
    +
    +
    +template<typename _Cat, typename _Tp, typename _Diff = ptrdiff_t>
    + + + + +
    using utl::dev_iterator_traits< _Cat, _Tp, _Diff >::value_type = _Tp
    +
    + +

    Definition at line 45 of file dev_iterators.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1dev__iterator__traits.js b/doc/html/structutl_1_1dev__iterator__traits.js new file mode 100644 index 0000000..fda9462 --- /dev/null +++ b/doc/html/structutl_1_1dev__iterator__traits.js @@ -0,0 +1,8 @@ +var structutl_1_1dev__iterator__traits = +[ + [ "difference_type", "structutl_1_1dev__iterator__traits.html#a7445a2713455342fb817d0cdaaf1855c", null ], + [ "iterator_category", "structutl_1_1dev__iterator__traits.html#a458414025d5e52646ddf90a3e9f04261", null ], + [ "pointer", "structutl_1_1dev__iterator__traits.html#a4b06368f7cb0bc44dc21582be7808ca6", null ], + [ "reference", "structutl_1_1dev__iterator__traits.html#a2747e8f629aaaa8a47ac8d3cd9527fad", null ], + [ "value_type", "structutl_1_1dev__iterator__traits.html#a4092b379cea659f2d79908b356ec6fb2", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1forward__iterator__tag.html b/doc/html/structutl_1_1forward__iterator__tag.html new file mode 100644 index 0000000..8599747 --- /dev/null +++ b/doc/html/structutl_1_1forward__iterator__tag.html @@ -0,0 +1,125 @@ + + + + + + + +uTL: utl::forward_iterator_tag Struct Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::forward_iterator_tag Struct Reference
    +
    +
    + +

    #include <dev_iterators.h>

    +
    +Inheritance diagram for utl::forward_iterator_tag:
    +
    +
    + + +utl::input_iterator_tag +utl::bidirectional_iterator_tag +utl::random_access_iterator_tag +utl::contiguous_iterator_tag + +
    +

    Detailed Description

    +
    +

    Definition at line 57 of file dev_iterators.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1forward__iterator__tag.png b/doc/html/structutl_1_1forward__iterator__tag.png new file mode 100644 index 0000000000000000000000000000000000000000..44ba83eed47f93d95f2bd9247ebf8c4fd31cf606 GIT binary patch literal 1705 zcma)7X;70_6io(E(V`XVh*Fzc0u)eFaX~`cXv^Y9Fepn~j2M}q>;_Fh1mTIrGRQzM z2pEH62MCHwT&7SI{Q_D7vMH3s2m~k)Foe)R0%ZAKL#LhTueNXIo_o*C`*Y5m`(D-o znvdm*4J&XsoF%f)Gr-hQQ_U|oGvUQ3$)Ks(9PkVBf)JX<@kvbrw?5A_{aIqM*gUI` zV4}-80klAz>C)oqdKu)3!!6y7c#}8K3rS=6{qB9~f)H8V6n@bHOOjVN~ zu;FI6>ynnR^^bCG{Kp!TqAYsHcSyZkQ;8FK5twf!JvEYWVC@larKcj3K6bfmW!ebJ ze&T^uyjFK{d^_C15X9&iLX`xIfnbE;fATTZ`0+S(X5i6DrBb?X__M$%J=hK97e52L ztk^~;=2b6J!SSuGo$-**~4UhAS*LVV~u_$Xx()xvZ*>wn%-NprLQP*;R8^nz5W|D`39@x_p9 z07Y=dmJA9n-0>vGJbkqhY|W4dETe0;-eaF(gU4y!C-0%n$UszwJX z0GDg=m;O1{K3}JVm14Iuc#fYO6MZXNIo=0esgm(e^*%=YH1U6WwdmyTP4Z&2(ZvMI zLwJwv4fajk=^`Q}*Vx(Ht$qj7yh0_E=a( zu-k2}OKSZkdw&b73BTCdb0;EkD|?9C_Wqh=`rMAn7oAkI6<-_g`}j{+a*6 zTe0KQ>cVho0X)(;aP#5Yji-jdhJL@_Pr^A_4cJ*fS=Mwrp)noshi&z;6CDl}xmsDv z*~jqhvgA=#6*Dbct47;O_G1hk%dtj{7C>rN$con9L`D0d(85mwdrCAzg5-e2qqlY( z+h@I#9+5-jcfV1IO5uFN3F|#PZSN{n0C}^Fht;|^wGYqPv^l15A!_DyySqFMKkq;~ zmpjo1HSbdJ*YvA(p`;t9;Y|we`d^vynKzqXgW=Ntl{$_T&#XH$YJyGFfa(mCxUj|) zc^^edg9DOzSVQgDvPz}-_}v6-nXQNYg3BG}YKET{Z`zTN^W!aG+1*JSD*bxla0MvY zYE-oDdhL3eAG690^L37^ePc!17<@m3Rl|`VaHwieo)V4SElr62Ae#xtvO>v9ha2v9 z>Y`(r$s6vDZQs~~J-2(JWHemW@2~4O@B@$2yglmDfjzq!enX3$sTctII1;FGdpjp$ z$#jD9l6jVTHgEwpf_yk5*bS~`SMb6I9O(z1R?@ru*1CV!F zrtFJu^oJniv7YC1Y6kD|kDDvr8Y}>E%5gDHbrgBA-h5C{iz5r!u;;eQoHIokKmGLF zfUy+AC0YHKk^iu{IFH@N7%4D8#%847YSGWdCq#}##qv1fQ5+)NxC&Sm1W8p!`w2Yw z4L);qDo?kvZR>vigsuDXdQPU(5%0|riP8rwepGFwWp8B7P;!s4t61l9D_WaZRvG8h z>r^R^`t}=cbT@qt_M*vGQWAZJ1%?%l_ z`F^}O33i;W{iPsWIuP@U_JElzg9kCv+GDp|%J2NzRbELMJxcW!P^vmwzNc=BF;KHo zz5~RG_3gldIAI~1p|sFuI=7*Zc$}uh`A$Po*|N{$^UDbFoJ{U0m+1cf-(tT9ZSHf; Z6veS3`WM+FLesy3L%e97_r5xM{tq`$kzW7+ literal 0 HcmV?d00001 diff --git a/doc/html/structutl_1_1i2c__i__details_1_1is__i2c__.html b/doc/html/structutl_1_1i2c__i__details_1_1is__i2c__.html new file mode 100644 index 0000000..368f222 --- /dev/null +++ b/doc/html/structutl_1_1i2c__i__details_1_1is__i2c__.html @@ -0,0 +1,128 @@ + + + + + + + +uTL: utl::i2c_i_details::is_i2c_< _Tp, typename > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::i2c_i_details::is_i2c_< _Tp, typename > Struct Template Reference
    +
    +
    + +

    Primary template to catch any non I2C interface types. + More...

    + +

    #include <i2c.h>

    +
    +Inheritance diagram for utl::i2c_i_details::is_i2c_< _Tp, typename >:
    +
    +
    + + + +
    +

    Detailed Description

    +

    template<typename _Tp, typename = void>
    +struct utl::i2c_i_details::is_i2c_< _Tp, typename >

    + +

    Primary template to catch any non I2C interface types.

    + +

    Definition at line 257 of file i2c.h.

    +

    The documentation for this struct was generated from the following file:
      +
    • include/utl/com/i2c.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structutl_1_1i2c__i__details_1_1is__i2c__.png b/doc/html/structutl_1_1i2c__i__details_1_1is__i2c__.png new file mode 100644 index 0000000000000000000000000000000000000000..91f307f7058415b7ab848034f59ae77a7755d7df GIT binary patch literal 680 zcmeAS@N?(olHy`uVBq!ia0vp^|A9DwgBeIZoD+N)NJ#|vgt-3y4-$Xz=4)yHp$R}1 z7#}!rfVK0EJdn##666=m08|75S5Ji)F)%Qhd%8G=R4~4sd-2j@0}eNS^QV9BSFDv% zRSEp<@4lPaxNfbd)B_f$d_h4@9hXqkHIwXrhK4TI`uYCZ^s^83=lps5=UA-EznAjm z|L?3ylw7^)-dguh`%l^Viylt?x_>hJlliaqE~(wi=O5e9{`&sD6|3&8+w-6Q>i;i7 zoBpp}^>0F5NBz5|a&f0;P-7>@hnlWZs}r2KgQ+4&zu^Gax&Kv1?HV5Z5w3f|+;MLH zU;CeokF-d@uL^;N9dKeer1f*MyuzwU`=8BsyM5&M)4Pg|uQJQN+`D6zpPC}QAnfI3 zhp#p2`R;#IeHu1a{h5Afcf#)z*QWoRp0Uc_Wp|QrLj3gk=THB3w{+cnlDB;uqtw~g z?;pI{q@f-W)|GFr^?P@ojJ?y>87952_H1}}Md9)CO&4#K9Z&gr`;yMRtowCaWTun` zKV5n}UiSCN-t{ZKANY0g*OYCgcTQjWwwtm3{b~0{K|5rRa{iyUT>0Np$F)au{>Wah zKVJ4e0-geuK@!tafAJ1E+PT5(;RN%UJ?%YcAtJ&gv-|-a0{*V86d!@u5hWp{4 k)a@NYRQGpyB>ZLm&^&j!;`UqnfXRx%)78&qol`;+0NH+I+W-In literal 0 HcmV?d00001 diff --git a/doc/html/structutl_1_1i2c__i__details_1_1is__i2c___3_01___tp_00_01meta_1_1void__t_3_01typename_01___tp_1_1_sequence_00_01void_01_4_01_4.html b/doc/html/structutl_1_1i2c__i__details_1_1is__i2c___3_01___tp_00_01meta_1_1void__t_3_01typename_01___tp_1_1_sequence_00_01void_01_4_01_4.html new file mode 100644 index 0000000..2649f28 --- /dev/null +++ b/doc/html/structutl_1_1i2c__i__details_1_1is__i2c___3_01___tp_00_01meta_1_1void__t_3_01typename_01___tp_1_1_sequence_00_01void_01_4_01_4.html @@ -0,0 +1,128 @@ + + + + + + + +uTL: utl::i2c_i_details::is_i2c_< _Tp, meta::void_t< typename _Tp::Sequence, void > > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::i2c_i_details::is_i2c_< _Tp, meta::void_t< typename _Tp::Sequence, void > > Struct Template Reference
    +
    +
    + +

    template to catch a proper I2C interface type + More...

    + +

    #include <i2c.h>

    +
    +Inheritance diagram for utl::i2c_i_details::is_i2c_< _Tp, meta::void_t< typename _Tp::Sequence, void > >:
    +
    +
    + + + +
    +

    Detailed Description

    +

    template<typename _Tp>
    +struct utl::i2c_i_details::is_i2c_< _Tp, meta::void_t< typename _Tp::Sequence, void > >

    + +

    template to catch a proper I2C interface type

    + +

    Definition at line 261 of file i2c.h.

    +

    The documentation for this struct was generated from the following file:
      +
    • include/utl/com/i2c.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structutl_1_1i2c__i__details_1_1is__i2c___3_01___tp_00_01meta_1_1void__t_3_01typename_01___tp_1_1_sequence_00_01void_01_4_01_4.png b/doc/html/structutl_1_1i2c__i__details_1_1is__i2c___3_01___tp_00_01meta_1_1void__t_3_01typename_01___tp_1_1_sequence_00_01void_01_4_01_4.png new file mode 100644 index 0000000000000000000000000000000000000000..0f2730cff011c1ed9d2176bf130d6a574787b75f GIT binary patch literal 1072 zcmeAS@N?(olHy`uVBq!ia0y~yV7vrm2XHV0$ypm&l7W;&fKQ0)|NsAi%olIImi8Z- z0AzvjfddCvJMYK?xf~@ye!&btMIdnXREQA+1M_}Q7srqa#`+HA(cE zmwoZpWkBAc$jl?TIUE1le#tXeIVts9t2X2Ajk8{p4F7rY2dz~3n-{h8`*fAc&zYfG zp3iE!Ebs?tzc>8+(^7jqdZkLO-2CNV!d8LQO#&)I*s?NY(i)GYlTuu@ zrmAS?c_}MR>fjJ&uxr+DU^&nl!u88az1Er}<7KO&M{1|IImNKL*31H9;(rgf2 zDRQ7Ige$>Si**A~LBvEaMxap)K(i^8wsX&f1P$W^hKdPj#;(0|d;9g?-|Zc7mEVuN z2>u*#`}CUphFQ_8e{(0C+;#Nx^}tQy^VlpB=R8|_hEeY#FVlkLr6uz#8!RVB?t1p% zR)zl7s?8VuwPn9;y!-QG?uS*EjV7@Nv$} zU3bNPe)JaJ8)vw_=UdA6PnoMS>l6An+h4EIPG)*~b@|P<+l#hzPG#J+XIeAEi_9rP zA>lV)r!?RFDyyXUEc~kb{qp2}b5@rz-&9MM+`Ip}>W2FoQP=vn-(NMup>S&EweDRW ziz2KRGx+X5?HHmO)R(hl%U!du<>_<%tygZoTzc)hL&n8*?+Zn0?WA*G-F<0aoz1K_ zWm~4$>2IMg9$P$i)MGcCRJH6&M5^}E@7J^2UtD{U^H}za?Y(CIDcdftUU+tD*v40C zzU$BK=!~jxf#!f=#1a7{7D*LT{3rnc^+yN<(GTZJo?**4gce&_HA2hy!7v+ zY`GclYMQxZm+!p4(rPxFMEJiVf%MR*E7ucl?XRA;Ep)@X-@ThlBsS*+`F(8NTrz*( z$v~fg*w>r4gh$O=>RWm4{H3P~=gwVHjyO^xglg3H#T3G5+JU-<(#r%!_f~>Gy$L6By>8rz`WNf`XndEu8fX6<-yf=zQ8* Q4b0vQp00i_>zopr0FU+YMgRZ+ literal 0 HcmV?d00001 diff --git a/doc/html/structutl_1_1id__t-members.html b/doc/html/structutl_1_1id__t-members.html new file mode 100644 index 0000000..12b1afe --- /dev/null +++ b/doc/html/structutl_1_1id__t-members.html @@ -0,0 +1,149 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::id_t< _Tp, _Nm > Member List
    +
    +
    + +

    This is the complete list of members for utl::id_t< _Tp, _Nm >, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    _datautl::id_t< _Tp, _Nm >
    at(size_type n) noexceptutl::id_t< _Tp, _Nm >inline
    at(size_type n) const noexceptutl::id_t< _Tp, _Nm >inline
    back() noexceptutl::id_t< _Tp, _Nm >inline
    back() const noexceptutl::id_t< _Tp, _Nm >inline
    begin() noexceptutl::id_t< _Tp, _Nm >inline
    begin() const noexceptutl::id_t< _Tp, _Nm >inline
    bit(uint8_t bit) const noexceptutl::id_t< _Tp, _Nm >inline
    bit(uint8_t bit, bool v) noexceptutl::id_t< _Tp, _Nm >inline
    cbegin() const noexceptutl::id_t< _Tp, _Nm >inline
    cend() const noexceptutl::id_t< _Tp, _Nm >inline
    const_iterator typedefutl::id_t< _Tp, _Nm >
    const_pointer typedefutl::id_t< _Tp, _Nm >
    const_reference typedefutl::id_t< _Tp, _Nm >
    const_reverse_iterator typedefutl::id_t< _Tp, _Nm >
    crbegin() const noexceptutl::id_t< _Tp, _Nm >inline
    crend() const noexceptutl::id_t< _Tp, _Nm >inline
    data() noexceptutl::id_t< _Tp, _Nm >inline
    data() const noexceptutl::id_t< _Tp, _Nm >inline
    difference_type typedefutl::id_t< _Tp, _Nm >
    empty() const noexceptutl::id_t< _Tp, _Nm >inline
    end() noexceptutl::id_t< _Tp, _Nm >inline
    end() const noexceptutl::id_t< _Tp, _Nm >inline
    fill(const value_type &v)utl::id_t< _Tp, _Nm >inline
    front() noexceptutl::id_t< _Tp, _Nm >inline
    front() const noexceptutl::id_t< _Tp, _Nm >inline
    iterator typedefutl::id_t< _Tp, _Nm >
    max_size() const noexceptutl::id_t< _Tp, _Nm >inline
    operator[](size_type n) noexceptutl::id_t< _Tp, _Nm >inline
    operator[](size_type n) const noexceptutl::id_t< _Tp, _Nm >inline
    pointer typedefutl::id_t< _Tp, _Nm >
    rbegin() noexceptutl::id_t< _Tp, _Nm >inline
    rbegin() const noexceptutl::id_t< _Tp, _Nm >inline
    reference typedefutl::id_t< _Tp, _Nm >
    rend() noexceptutl::id_t< _Tp, _Nm >inline
    rend() const noexceptutl::id_t< _Tp, _Nm >inline
    reverse_iterator typedefutl::id_t< _Tp, _Nm >
    size() const noexceptutl::id_t< _Tp, _Nm >inline
    size_type typedefutl::id_t< _Tp, _Nm >
    swap(id_t &other) noexceptutl::id_t< _Tp, _Nm >inline
    traits_t typedefutl::id_t< _Tp, _Nm >
    value_type typedefutl::id_t< _Tp, _Nm >
    +
    + + + + diff --git a/doc/html/structutl_1_1id__t.html b/doc/html/structutl_1_1id__t.html new file mode 100644 index 0000000..3b83c6d --- /dev/null +++ b/doc/html/structutl_1_1id__t.html @@ -0,0 +1,1348 @@ + + + + + + + +uTL: utl::id_t< _Tp, _Nm > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::id_t< _Tp, _Nm > Struct Template Reference
    +
    +
    + +

    A standard container for storing IDs as a fixed size sequence of bytes. This type is based on etl::array Meets the requirements of: container, reversible container, sequence. Sets support random access iterators. + More...

    + +

    #include <id.h>

    + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Types

    using value_type = _Tp
     
    using pointer = value_type *
     
    using const_pointer = const value_type *
     
    using reference = value_type &
     
    using const_reference = const value_type &
     
    using iterator = value_type *
     
    using const_iterator = const value_type *
     
    using size_type = size_t
     
    using difference_type = std::ptrdiff_t
     
    using reverse_iterator = std::reverse_iterator< iterator >
     
    using const_reverse_iterator = std::reverse_iterator< const_iterator >
     
    using traits_t = id_traits< _Tp, _Nm >
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    void fill (const value_type &v)
     
    void swap (id_t &other) noexcept
     
    Iterators.
    iterator begin () noexcept
     
    const_iterator begin () const noexcept
     
    iterator end () noexcept
     
    const_iterator end () const noexcept
     
    const_iterator cbegin () const noexcept
     
    const_iterator cend () const noexcept
     
    reverse_iterator rbegin () noexcept
     
    reverse_iterator rend () noexcept
     
    const_reverse_iterator rbegin () const noexcept
     
    const_reverse_iterator rend () const noexcept
     
    const_reverse_iterator crbegin () const noexcept
     
    const_reverse_iterator crend () const noexcept
     
    Capacity.
    constexpr size_type size () const noexcept
     
    constexpr size_type max_size () const noexcept
     
    constexpr bool empty () const noexcept
     
    Element access.
    reference operator[] (size_type n) noexcept
     Operator []. More...
     
    constexpr const_reference operator[] (size_type n) const noexcept
     Operator [] for const. More...
     
    reference at (size_type n) noexcept
     
    constexpr const_reference at (size_type n) const noexcept
     Compile time boundary check dereference operator. More...
     
    constexpr bool bit (uint8_t bit) const noexcept
     
    void bit (uint8_t bit, bool v) noexcept
     
    reference front () noexcept
     
    constexpr const_reference front () const noexcept
     
    reference back () noexcept
     
    constexpr const_reference back () const noexcept
     
    pointer data () noexcept
     
    const_pointer data () const noexcept
     
    + + + +

    +Public Attributes

    traits_t::type _data
     
    +

    Detailed Description

    +

    template<typename _Tp, size_t _Nm>
    +struct utl::id_t< _Tp, _Nm >

    + +

    A standard container for storing IDs as a fixed size sequence of bytes. This type is based on etl::array Meets the requirements of: container, reversible container, sequence. Sets support random access iterators.

    +
    Template Parameters
    + + + +
    _TpThe base type
    _NmNumber of bytes.
    +
    +
    + +

    Definition at line 78 of file id.h.

    +

    Member Typedef Documentation

    + +

    ◆ const_iterator

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + +
    using utl::id_t< _Tp, _Nm >::const_iterator = const value_type*
    +
    + +

    Definition at line 85 of file id.h.

    + +
    +
    + +

    ◆ const_pointer

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + +
    using utl::id_t< _Tp, _Nm >::const_pointer = const value_type*
    +
    + +

    Definition at line 81 of file id.h.

    + +
    +
    + +

    ◆ const_reference

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + +
    using utl::id_t< _Tp, _Nm >::const_reference = const value_type&
    +
    + +

    Definition at line 83 of file id.h.

    + +
    +
    + +

    ◆ const_reverse_iterator

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + +
    using utl::id_t< _Tp, _Nm >::const_reverse_iterator = std::reverse_iterator <const_iterator>
    +
    + +

    Definition at line 90 of file id.h.

    + +
    +
    + +

    ◆ difference_type

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + +
    using utl::id_t< _Tp, _Nm >::difference_type = std::ptrdiff_t
    +
    + +

    Definition at line 87 of file id.h.

    + +
    +
    + +

    ◆ iterator

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + +
    using utl::id_t< _Tp, _Nm >::iterator = value_type*
    +
    + +

    Definition at line 84 of file id.h.

    + +
    +
    + +

    ◆ pointer

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + +
    using utl::id_t< _Tp, _Nm >::pointer = value_type*
    +
    + +

    Definition at line 80 of file id.h.

    + +
    +
    + +

    ◆ reference

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + +
    using utl::id_t< _Tp, _Nm >::reference = value_type&
    +
    + +

    Definition at line 82 of file id.h.

    + +
    +
    + +

    ◆ reverse_iterator

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + +
    using utl::id_t< _Tp, _Nm >::reverse_iterator = std::reverse_iterator <iterator>
    +
    + +

    Definition at line 88 of file id.h.

    + +
    +
    + +

    ◆ size_type

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + +
    using utl::id_t< _Tp, _Nm >::size_type = size_t
    +
    + +

    Definition at line 86 of file id.h.

    + +
    +
    + +

    ◆ traits_t

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + +
    using utl::id_t< _Tp, _Nm >::traits_t = id_traits<_Tp, _Nm>
    +
    + +

    Definition at line 93 of file id.h.

    + +
    +
    + +

    ◆ value_type

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + +
    using utl::id_t< _Tp, _Nm >::value_type = _Tp
    +
    + +

    Definition at line 79 of file id.h.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ at() [1/2]

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + + +
    reference utl::id_t< _Tp, _Nm >::at (size_type n)
    +
    +inlinenoexcept
    +
    +

    Boundary check dereference operator. If out of bounds, abort (for now).

    + +

    Definition at line 144 of file id.h.

    + +
    +
    + +

    ◆ at() [2/2]

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + + +
    constexpr const_reference utl::id_t< _Tp, _Nm >::at (size_type n) const
    +
    +inlinenoexcept
    +
    + +

    Compile time boundary check dereference operator.

    + +

    Definition at line 151 of file id.h.

    + +
    +
    + +

    ◆ back() [1/2]

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + +
    reference utl::id_t< _Tp, _Nm >::back ()
    +
    +inlinenoexcept
    +
    + +

    Definition at line 184 of file id.h.

    + +
    +
    + +

    ◆ back() [2/2]

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + +
    constexpr const_reference utl::id_t< _Tp, _Nm >::back () const
    +
    +inlinenoexcept
    +
    + +

    Definition at line 187 of file id.h.

    + +
    +
    + +

    ◆ begin() [1/2]

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + +
    iterator utl::id_t< _Tp, _Nm >::begin ()
    +
    +inlinenoexcept
    +
    + +

    Definition at line 107 of file id.h.

    + +
    +
    + +

    ◆ begin() [2/2]

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + +
    const_iterator utl::id_t< _Tp, _Nm >::begin () const
    +
    +inlinenoexcept
    +
    + +

    Definition at line 108 of file id.h.

    + +
    +
    + +

    ◆ bit() [1/2]

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + + +
    constexpr bool utl::id_t< _Tp, _Nm >::bit (uint8_t bit) const
    +
    +inlinenoexcept
    +
    +

    Read a bit position from a id

    Parameters
    + + +
    bitThe bit location we want to read
    +
    +
    + +

    Definition at line 159 of file id.h.

    + +
    +
    + +

    ◆ bit() [2/2]

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    void utl::id_t< _Tp, _Nm >::bit (uint8_t bit,
    bool v 
    )
    +
    +inlinenoexcept
    +
    +

    Write/modify a bit position from a id

    Parameters
    + + + +
    bitThe bit location we want to set
    vThe value we want to set
    +
    +
    + +

    Definition at line 169 of file id.h.

    + +
    +
    + +

    ◆ cbegin()

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + +
    const_iterator utl::id_t< _Tp, _Nm >::cbegin () const
    +
    +inlinenoexcept
    +
    + +

    Definition at line 111 of file id.h.

    + +
    +
    + +

    ◆ cend()

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + +
    const_iterator utl::id_t< _Tp, _Nm >::cend () const
    +
    +inlinenoexcept
    +
    + +

    Definition at line 112 of file id.h.

    + +
    +
    + +

    ◆ crbegin()

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + +
    const_reverse_iterator utl::id_t< _Tp, _Nm >::crbegin () const
    +
    +inlinenoexcept
    +
    + +

    Definition at line 118 of file id.h.

    + +
    +
    + +

    ◆ crend()

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + +
    const_reverse_iterator utl::id_t< _Tp, _Nm >::crend () const
    +
    +inlinenoexcept
    +
    + +

    Definition at line 119 of file id.h.

    + +
    +
    + +

    ◆ data() [1/2]

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + +
    pointer utl::id_t< _Tp, _Nm >::data ()
    +
    +inlinenoexcept
    +
    + +

    Definition at line 193 of file id.h.

    + +
    +
    + +

    ◆ data() [2/2]

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + +
    const_pointer utl::id_t< _Tp, _Nm >::data () const
    +
    +inlinenoexcept
    +
    + +

    Definition at line 194 of file id.h.

    + +
    +
    + +

    ◆ empty()

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + +
    constexpr bool utl::id_t< _Tp, _Nm >::empty () const
    +
    +inlinenoexcept
    +
    + +

    Definition at line 125 of file id.h.

    + +
    +
    + +

    ◆ end() [1/2]

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + +
    iterator utl::id_t< _Tp, _Nm >::end ()
    +
    +inlinenoexcept
    +
    + +

    Definition at line 109 of file id.h.

    + +
    +
    + +

    ◆ end() [2/2]

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + +
    const_iterator utl::id_t< _Tp, _Nm >::end () const
    +
    +inlinenoexcept
    +
    + +

    Definition at line 110 of file id.h.

    + +
    +
    + +

    ◆ fill()

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + + +
    void utl::id_t< _Tp, _Nm >::fill (const value_typev)
    +
    +inline
    +
    + +

    Definition at line 99 of file id.h.

    + +
    +
    + +

    ◆ front() [1/2]

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + +
    reference utl::id_t< _Tp, _Nm >::front ()
    +
    +inlinenoexcept
    +
    + +

    Definition at line 176 of file id.h.

    + +
    +
    + +

    ◆ front() [2/2]

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + +
    constexpr const_reference utl::id_t< _Tp, _Nm >::front () const
    +
    +inlinenoexcept
    +
    + +

    Definition at line 179 of file id.h.

    + +
    +
    + +

    ◆ max_size()

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + +
    constexpr size_type utl::id_t< _Tp, _Nm >::max_size () const
    +
    +inlinenoexcept
    +
    + +

    Definition at line 124 of file id.h.

    + +
    +
    + +

    ◆ operator[]() [1/2]

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + + +
    reference utl::id_t< _Tp, _Nm >::operator[] (size_type n)
    +
    +inlinenoexcept
    +
    + +

    Operator [].

    + +

    Definition at line 132 of file id.h.

    + +
    +
    + +

    ◆ operator[]() [2/2]

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + + +
    constexpr const_reference utl::id_t< _Tp, _Nm >::operator[] (size_type n) const
    +
    +inlinenoexcept
    +
    + +

    Operator [] for const.

    + +

    Definition at line 136 of file id.h.

    + +
    +
    + +

    ◆ rbegin() [1/2]

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + +
    reverse_iterator utl::id_t< _Tp, _Nm >::rbegin ()
    +
    +inlinenoexcept
    +
    + +

    Definition at line 114 of file id.h.

    + +
    +
    + +

    ◆ rbegin() [2/2]

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + +
    const_reverse_iterator utl::id_t< _Tp, _Nm >::rbegin () const
    +
    +inlinenoexcept
    +
    + +

    Definition at line 116 of file id.h.

    + +
    +
    + +

    ◆ rend() [1/2]

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + +
    reverse_iterator utl::id_t< _Tp, _Nm >::rend ()
    +
    +inlinenoexcept
    +
    + +

    Definition at line 115 of file id.h.

    + +
    +
    + +

    ◆ rend() [2/2]

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + +
    const_reverse_iterator utl::id_t< _Tp, _Nm >::rend () const
    +
    +inlinenoexcept
    +
    + +

    Definition at line 117 of file id.h.

    + +
    +
    + +

    ◆ size()

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + +
    constexpr size_type utl::id_t< _Tp, _Nm >::size () const
    +
    +inlinenoexcept
    +
    + +

    Definition at line 123 of file id.h.

    + +
    +
    + +

    ◆ swap()

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + + +
    + + + + + + + + +
    void utl::id_t< _Tp, _Nm >::swap (id_t< _Tp, _Nm > & other)
    +
    +inlinenoexcept
    +
    + +

    Definition at line 101 of file id.h.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ _data

    + +
    +
    +
    +template<typename _Tp, size_t _Nm>
    + + + + +
    traits_t::type utl::id_t< _Tp, _Nm >::_data
    +
    + +

    Definition at line 94 of file id.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/utl/container/id.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structutl_1_1id__t.js b/doc/html/structutl_1_1id__t.js new file mode 100644 index 0000000..b592ff3 --- /dev/null +++ b/doc/html/structutl_1_1id__t.js @@ -0,0 +1,45 @@ +var structutl_1_1id__t = +[ + [ "const_iterator", "structutl_1_1id__t.html#ae27418faa4801ec414140df1bc422350", null ], + [ "const_pointer", "structutl_1_1id__t.html#a6fbd7a944a981e0cc293319e25d77220", null ], + [ "const_reference", "structutl_1_1id__t.html#aa7a965a5bb74490f5a999d5fa08cee2c", null ], + [ "const_reverse_iterator", "structutl_1_1id__t.html#adac2f02dfe10ad607f5b226fd98bd0d6", null ], + [ "difference_type", "structutl_1_1id__t.html#a7341366f60f8ecd4a1e8dcefa33a4018", null ], + [ "iterator", "structutl_1_1id__t.html#acbcdd4547bde10bbbab7a72ad1adbf21", null ], + [ "pointer", "structutl_1_1id__t.html#ab93692ef0c67737db55a38d658375ce3", null ], + [ "reference", "structutl_1_1id__t.html#a7c0de57bc3065501a953f4811bd9e183", null ], + [ "reverse_iterator", "structutl_1_1id__t.html#a708f6a3b9b85d211f933bbe66db26a2b", null ], + [ "size_type", "structutl_1_1id__t.html#aa4bd898906751aa7d77fb78bcf6ee9bb", null ], + [ "traits_t", "structutl_1_1id__t.html#a9951b895fb9cd9d9b40871ba95df98a0", null ], + [ "value_type", "structutl_1_1id__t.html#a9f1d9c9792705f9d358018d174f22429", null ], + [ "at", "structutl_1_1id__t.html#abb17fc36dd256093e265985e68e25f32", null ], + [ "at", "structutl_1_1id__t.html#aa965355792d724f40260bce7d855aae7", null ], + [ "back", "structutl_1_1id__t.html#a9a289ddc68f8ceec5368bf63334a2829", null ], + [ "back", "structutl_1_1id__t.html#a5a87967bad104213150f3dedf7e0291f", null ], + [ "begin", "structutl_1_1id__t.html#abf6354098b87ecd333bfb3a160e757df", null ], + [ "begin", "structutl_1_1id__t.html#a6a38ff9b9efdc99120dd4ce852813e8a", null ], + [ "bit", "structutl_1_1id__t.html#a870b1c8cc468c8b9d7e76fd4d4fb8b2d", null ], + [ "bit", "structutl_1_1id__t.html#af6b5f41a6367c32c4087be3d7a8f5fde", null ], + [ "cbegin", "structutl_1_1id__t.html#a1e753829714d8782eab69249cc61a2ce", null ], + [ "cend", "structutl_1_1id__t.html#aa2e98b11c236e1dda8decedbe18d283e", null ], + [ "crbegin", "structutl_1_1id__t.html#a9ba9d37208f8c4c964574b1a4e3e285a", null ], + [ "crend", "structutl_1_1id__t.html#a5b358a67cec1f283e1685ddf7af5d8bd", null ], + [ "data", "structutl_1_1id__t.html#a6b328d4c3175afaf9f22c8fa8b772eb6", null ], + [ "data", "structutl_1_1id__t.html#a67c50e2f7c4d7108023ea1e6ca4263eb", null ], + [ "empty", "structutl_1_1id__t.html#a5052e5dd26342349236eff91766e332e", null ], + [ "end", "structutl_1_1id__t.html#ad3e1553b24e43c71b64d080922c42148", null ], + [ "end", "structutl_1_1id__t.html#a82bef2fee2dfad5d895af2b01b888c54", null ], + [ "fill", "structutl_1_1id__t.html#a99464dc25ccbc124e3c1a21f6889b23a", null ], + [ "front", "structutl_1_1id__t.html#a00d98ffd688e3c146b7dca509487b821", null ], + [ "front", "structutl_1_1id__t.html#a01a1945e5d9ee1b926bb305d65dbc28b", null ], + [ "max_size", "structutl_1_1id__t.html#abeaee41b9ae199fe6f4b40ada1ca9ffa", null ], + [ "operator[]", "structutl_1_1id__t.html#acc2df57ec1921165238adc13f1a2ad7d", null ], + [ "operator[]", "structutl_1_1id__t.html#a70f4ed6c1efda0d4098ba2e3177da329", null ], + [ "rbegin", "structutl_1_1id__t.html#a96ed68f02faf9800e93113bef1e30182", null ], + [ "rbegin", "structutl_1_1id__t.html#a52f0a2de4ae90137d40a645389a6ec53", null ], + [ "rend", "structutl_1_1id__t.html#a14050fe2cdcdd4a524d5e3f46f9d51f9", null ], + [ "rend", "structutl_1_1id__t.html#ae04946523c0131b6fb73f1de369c2558", null ], + [ "size", "structutl_1_1id__t.html#aff09cfb8c3d106dd24a7107f7c9a68f3", null ], + [ "swap", "structutl_1_1id__t.html#af2d4fabd51c5e3aabbb828d356354977", null ], + [ "_data", "structutl_1_1id__t.html#af45f6388a067b5e34f5c82c1ac2b32b6", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1id__traits-members.html b/doc/html/structutl_1_1id__traits-members.html new file mode 100644 index 0000000..dcb9a72 --- /dev/null +++ b/doc/html/structutl_1_1id__traits-members.html @@ -0,0 +1,110 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::id_traits< _Tp, _Nm > Member List
    +
    +
    + +

    This is the complete list of members for utl::id_traits< _Tp, _Nm >, including all inherited members.

    + + + + +
    Ptr(const type &t) noexceptutl::id_traits< _Tp, _Nm >inlinestatic
    Ref(const type &t, size_t n) noexceptutl::id_traits< _Tp, _Nm >inlinestatic
    type typedefutl::id_traits< _Tp, _Nm >
    +
    + + + + diff --git a/doc/html/structutl_1_1id__traits.html b/doc/html/structutl_1_1id__traits.html new file mode 100644 index 0000000..73e289c --- /dev/null +++ b/doc/html/structutl_1_1id__traits.html @@ -0,0 +1,227 @@ + + + + + + + +uTL: utl::id_traits< _Tp, _Nm > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::id_traits< _Tp, _Nm > Struct Template Reference
    +
    +
    + +

    id container traits helper + More...

    + +

    #include <id.h>

    + + + + +

    +Public Types

    typedef _Tp type[_Nm]
     
    + + + + + +

    +Static Public Member Functions

    static constexpr _Tp & Ref (const type &t, size_t n) noexcept
     
    static constexpr _Tp * Ptr (const type &t) noexcept
     
    +

    Detailed Description

    +

    template<typename _Tp, size_t _Nm>
    +struct utl::id_traits< _Tp, _Nm >

    + +

    id container traits helper

    + +

    Definition at line 38 of file id.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename _Tp , size_t _Nm>
    + + + + +
    typedef _Tp utl::id_traits< _Tp, _Nm >::type[_Nm]
    +
    + +

    Definition at line 39 of file id.h.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ Ptr()

    + +
    +
    +
    +template<typename _Tp , size_t _Nm>
    + + + + + +
    + + + + + + + + +
    static constexpr _Tp* utl::id_traits< _Tp, _Nm >::Ptr (const typet)
    +
    +inlinestaticnoexcept
    +
    + +

    Definition at line 45 of file id.h.

    + +
    +
    + +

    ◆ Ref()

    + +
    +
    +
    +template<typename _Tp , size_t _Nm>
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static constexpr _Tp& utl::id_traits< _Tp, _Nm >::Ref (const typet,
    size_t n 
    )
    +
    +inlinestaticnoexcept
    +
    + +

    Definition at line 41 of file id.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/utl/container/id.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structutl_1_1id__traits.js b/doc/html/structutl_1_1id__traits.js new file mode 100644 index 0000000..41d59ff --- /dev/null +++ b/doc/html/structutl_1_1id__traits.js @@ -0,0 +1,6 @@ +var structutl_1_1id__traits = +[ + [ "type", "structutl_1_1id__traits.html#ae8c2dc9bc8ff3284dc89e7760ef601f8", null ], + [ "Ptr", "structutl_1_1id__traits.html#a570679371037d3f6716f2bb87f9e67d5", null ], + [ "Ref", "structutl_1_1id__traits.html#adcca147b5e6dd495ce61272257867a13", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1id__traits_3_01___tp_00_010_01_4-members.html b/doc/html/structutl_1_1id__traits_3_01___tp_00_010_01_4-members.html new file mode 100644 index 0000000..666203f --- /dev/null +++ b/doc/html/structutl_1_1id__traits_3_01___tp_00_010_01_4-members.html @@ -0,0 +1,109 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::id_traits< _Tp, 0 > Member List
    +
    +
    + +

    This is the complete list of members for utl::id_traits< _Tp, 0 >, including all inherited members.

    + + + +
    Ptr(const type &t) noexceptutl::id_traits< _Tp, 0 >inlinestatic
    Ref(const type &t, size_t n) noexceptutl::id_traits< _Tp, 0 >inlinestatic
    +
    + + + + diff --git a/doc/html/structutl_1_1id__traits_3_01___tp_00_010_01_4.html b/doc/html/structutl_1_1id__traits_3_01___tp_00_010_01_4.html new file mode 100644 index 0000000..ffb8a20 --- /dev/null +++ b/doc/html/structutl_1_1id__traits_3_01___tp_00_010_01_4.html @@ -0,0 +1,204 @@ + + + + + + + +uTL: utl::id_traits< _Tp, 0 > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::id_traits< _Tp, 0 > Struct Template Reference
    +
    +
    + +

    #include <id.h>

    + + + + +

    +Classes

    struct  type
     
    + + + + + +

    +Static Public Member Functions

    static constexpr _Tp & Ref (const type &t, size_t n) noexcept
     
    static constexpr _Tp * Ptr (const type &t) noexcept
     
    +

    Detailed Description

    +

    template<typename _Tp>
    +struct utl::id_traits< _Tp, 0 >

    + + +

    Definition at line 51 of file id.h.

    +

    Member Function Documentation

    + +

    ◆ Ptr()

    + +
    +
    +
    +template<typename _Tp >
    + + + + + +
    + + + + + + + + +
    static constexpr _Tp* utl::id_traits< _Tp, 0 >::Ptr (const type & t)
    +
    +inlinestaticnoexcept
    +
    + +

    Definition at line 58 of file id.h.

    + +
    +
    + +

    ◆ Ref()

    + +
    +
    +
    +template<typename _Tp >
    + + + + + +
    + + + + + + + + + + + + + + + + + + +
    static constexpr _Tp& utl::id_traits< _Tp, 0 >::Ref (const type & t,
    size_t n 
    )
    +
    +inlinestaticnoexcept
    +
    + +

    Definition at line 54 of file id.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file:
      +
    • include/utl/container/id.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structutl_1_1id__traits_3_01___tp_00_010_01_4.js b/doc/html/structutl_1_1id__traits_3_01___tp_00_010_01_4.js new file mode 100644 index 0000000..adc7104 --- /dev/null +++ b/doc/html/structutl_1_1id__traits_3_01___tp_00_010_01_4.js @@ -0,0 +1,6 @@ +var structutl_1_1id__traits_3_01___tp_00_010_01_4 = +[ + [ "type", "structutl_1_1id__traits_3_01___tp_00_010_01_4_1_1type.html", null ], + [ "Ptr", "structutl_1_1id__traits_3_01___tp_00_010_01_4.html#a4d66c1e3f4bf6b06bbe030a28cd5e878", null ], + [ "Ref", "structutl_1_1id__traits_3_01___tp_00_010_01_4.html#a578c8ad9389e23cfb3322ebe67875f4c", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1id__traits_3_01___tp_00_010_01_4_1_1type.html b/doc/html/structutl_1_1id__traits_3_01___tp_00_010_01_4_1_1type.html new file mode 100644 index 0000000..59a3781 --- /dev/null +++ b/doc/html/structutl_1_1id__traits_3_01___tp_00_010_01_4_1_1type.html @@ -0,0 +1,116 @@ + + + + + + + +uTL: utl::id_traits< _Tp, 0 >::type Struct Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::id_traits< _Tp, 0 >::type Struct Reference
    +
    +
    + +

    #include <id.h>

    +

    Detailed Description

    +

    template<typename _Tp>
    +struct utl::id_traits< _Tp, 0 >::type

    + + +

    Definition at line 52 of file id.h.

    +

    The documentation for this struct was generated from the following file:
      +
    • include/utl/container/id.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structutl_1_1idx__dev__details_1_1is__idx__dev__.html b/doc/html/structutl_1_1idx__dev__details_1_1is__idx__dev__.html new file mode 100644 index 0000000..c012007 --- /dev/null +++ b/doc/html/structutl_1_1idx__dev__details_1_1is__idx__dev__.html @@ -0,0 +1,128 @@ + + + + + + + +uTL: utl::idx_dev_details::is_idx_dev_< _Tp, typename > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::idx_dev_details::is_idx_dev_< _Tp, typename > Struct Template Reference
    +
    +
    + +

    Primary template to catch any non input device types. + More...

    + +

    #include <idx_dev.h>

    +
    +Inheritance diagram for utl::idx_dev_details::is_idx_dev_< _Tp, typename >:
    +
    +
    + + + +
    +

    Detailed Description

    +

    template<typename _Tp, typename = void>
    +struct utl::idx_dev_details::is_idx_dev_< _Tp, typename >

    + +

    Primary template to catch any non input device types.

    + +

    Definition at line 495 of file idx_dev.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1idx__dev__details_1_1is__idx__dev__.png b/doc/html/structutl_1_1idx__dev__details_1_1is__idx__dev__.png new file mode 100644 index 0000000000000000000000000000000000000000..f38306576fe8d279bdd251c563dd177526eca73c GIT binary patch literal 824 zcmeAS@N?(olHy`uVBq!ia0y~yVAKY(12~w0WZ8?w20%(8z$e7@|Ns9$=8HF9OZyK^ z0J6aNz<~p-op{WR12leVCsn$jaNr%633cN4-VO*ym zGUZ8xt3?X$H1kO&9Pfa}C2x?LlUKv%btyl+BD}a=Uisi0bW6%qJuTmOO)BzPr=;ZL zazvKl@kb^DhV3^*9lEZc-o#)8Vt7tXWmMUq-JoN}I^pm-h9aOC-)^Q8iQx>EZ@3iN zV;P?SC1uJekxUKHF;OZ0qLqysf{ctFdiQ z*~Jne%+(NIuACn$+KCnova=1DmtAzM=a7MTj^=c*3`g#7Nu9`F0f4DSARM=q5o6X z&o3Je_${{R4%(G9`{*^NS7p)LCp>1m_jPsIYJ0wKE8^F#yOsJ?tn%vmYumP&ZQq-< zu76qbX5GHEPi5{%rzwAYX*t8<@9N?WzYc!&C|x(LTW2xj(NJ~M1Mvy#XKjAP@}q@) z-Lt;(dja~#8Ge=QtC3h!8MI`>wbr=W=mj7Ws-n-Lg U(~0k*z+}$g>FVdQ&MBb@06o)vUjP6A literal 0 HcmV?d00001 diff --git a/doc/html/structutl_1_1idx__dev__details_1_1is__idx__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1ae8b6b24c31c81bdd901da6e6387d84b.html b/doc/html/structutl_1_1idx__dev__details_1_1is__idx__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1ae8b6b24c31c81bdd901da6e6387d84b.html new file mode 100644 index 0000000..d04402c --- /dev/null +++ b/doc/html/structutl_1_1idx__dev__details_1_1is__idx__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1ae8b6b24c31c81bdd901da6e6387d84b.html @@ -0,0 +1,128 @@ + + + + + + + +uTL: utl::idx_dev_details::is_idx_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_get1_t< _Tp >, size_t >, use_if_same_t< try_get2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::idx_dev_details::is_idx_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_get1_t< _Tp >, size_t >, use_if_same_t< try_get2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > > Struct Template Reference
    +
    +
    + +

    template to catch a proper input device type + More...

    + +

    #include <idx_dev.h>

    +
    +Inheritance diagram for utl::idx_dev_details::is_idx_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_get1_t< _Tp >, size_t >, use_if_same_t< try_get2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > >:
    +
    +
    + + + +
    +

    Detailed Description

    +

    template<typename _Tp>
    +struct utl::idx_dev_details::is_idx_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_get1_t< _Tp >, size_t >, use_if_same_t< try_get2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > >

    + +

    template to catch a proper input device type

    + +

    Definition at line 499 of file idx_dev.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1idx__dev__details_1_1is__idx__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1ae8b6b24c31c81bdd901da6e6387d84b.png b/doc/html/structutl_1_1idx__dev__details_1_1is__idx__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1ae8b6b24c31c81bdd901da6e6387d84b.png new file mode 100644 index 0000000000000000000000000000000000000000..84a28c954ef0c35845b3e2a1765315f1b9caa092 GIT binary patch literal 3627 zcmeHKeN+=y7RRDk6`{&1S}IxFwX|I|XbVXBNKsk*3Rr=%C?sxsYPv{?h!P0-aJ7(C zTEY<}Rv_uF1qujhMGTOTK@bFjWGx4x=3@eAhJ=J9Bq0g;n2p;C;(B)ZWB=UWxijy+ zH}~B8yYJ3BbLafQ*qD{eUtjL#=C*S0p52Gs+`LFG{ot$at~>uh-(AbTl;n%+_D(*AX|x3@1jFG0Abubw&-8}H^adWxaGgzYYWt$TMzCFCs9NX4J}w5%?; zUs*=d!rguaC7K;~0t1(+QPZz*r5E=lrYVO*q5cI+ct_3E+Ls7XnpsWxa3(zq5g){esi`QR_2e6%XhI_90x3q{ zX)0-amXc!h4lg^>nfT0O0@|b@s~=x~jw4%RnVr@UCm$$h6Uxf`l#&%WV{dxqttxG6 z(V?)=*NibiSegFtMR$iSh47^ z=QnLOuqtXH)tKAuwA%k^!3RRK7A*8LfB6MC=FxeOuZjzt2i=+K>VS3gkRu%&^zobr zo=Q1}n787|Q~dkVdzEcAeel@Ya7N{MQ%h-g$v+_~`#> z%+=~Y>;`8b6t`f3R(Z`ieX8*$NjWbRuWo?m`+|{bfkvrRID5oEoAAT%r|q1&xDa$k zo~8Hp34J8XDGy_=H0}FBw+rJr*0m9_&S;J{9VFq`KQ;^*`cA;n4LXgZ?XuIbjhsH^ z9%Yy8b3#mkpEj5nz7Z)gFsrFSKLO+!GeoO1$KggQ)NZ;nAoq^5C!uo%MYxqiv;)Iq zl{M{6ns8LbLo@Se&TZ^Xe$tZW%#7D%N*E&q{WSTDQETONFOMY3_8Q_%`Xfmt5 z1CZ}En@S4RoF&%J^ma}QF})H_Ie=lC}TlVLD*K>HB@ob}{Q zJgb4kGwKWCEnTbt3tH0+nvSjtQAx97+GHd$b%MZ*_}q%CNgiZV0d@UQa%GXky0qwXotrd#X6B9cChNV2b znW~7=9*{rmoO)1lnk|FJT70)_Mah_tQiMCKr{FqnC zJ;GyaFp(JzGsMz+0;S}D^37mU9*EQ?P6%0;^+w>lD*0H$NvGFY-Zv02IRa_c_6;>& zA|L)xsIs^?8?$g|$!3eT+ez94hL$s-$HXg$+#3xv?p1kXiv&C`yKTgCF2H~ixV0&g znQy+~&O;ZmtEZ}~W(ckqh411{NT7?Cr$g4RFd^cy9LNTe*YIuDU0xZqw%o}KwoEZ| z+*?TH4&J_(&f0Pgv0j~Fom{KU;xg!Eb^J(&g_N9{q?lSMnq-){F)~LK_)cwIIdJZ` z_|aTuSJ_FpAw??I<9*e_J49Rn$=We8MHWA7tcIFs#$(la_FiJP_;U<1CYyaf?240M zv)HQPo>EKBT3MHu?pP>4ON+Ro!tw=ev><@UgNQDsPr`((5;>4dW-mulomU&_8hnSt zZZd31Vj$gl9jvTR7EvytgPuA<%04TrV+DJ%*Z>VqL5hmq$?w;POXe>{d>x6?&A|Ci0B zl3`ZTNWKs}IXyC3ZA`iA(Ayw2<^$L`2rb5-C#E>mDsv?b>Dv$n3@E+5JUIO8Ux_m! z3DZF_jKU{Xd@O!uSjfp{0jb|BkEbK^Gr#R)*8^3G%Ta9K5hPuejAcN^FIR(GdvN*` zoc>51m~xv-PObkAQDhRgHupen_4?5w-_L-?i-_DkT2FUT!<1D`6WpYZTbg=ggGN+= zZS4nwQZ-x68UEHdpX3NxQUpKtSeOtg&2@ga819pt<$X@~I<^1NGy_HVGEkA_3+Unef2^yG#Y7?j>j zs|>HZ;d|IAKN`Y_q~>g4YCWfvqx9Hu$~xWO1#g=@$b1Fm&k1yssXMCUE!p<35#(3+ z1n4xDZnQs&U&KmA5f0Yf@@OyyW>y9eXe$TvYCDorKkrMO!y*ZU#@Ypr;o}2rF>>;isQIz|aN-51#$FHTH9l2Y- zTz75&Y+gOTWi; + + + + + + +uTL: utl::idxdev_it_details::is_idxdev_it_< _Tp, typename > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::idxdev_it_details::is_idxdev_it_< _Tp, typename > Struct Template Reference
    +
    +
    + +

    Primary template to catch any non SPI interface types. + More...

    + +

    #include <dev_iterators.h>

    +
    +Inheritance diagram for utl::idxdev_it_details::is_idxdev_it_< _Tp, typename >:
    +
    +
    + + + +
    +

    Detailed Description

    +

    template<typename _Tp, typename = void>
    +struct utl::idxdev_it_details::is_idxdev_it_< _Tp, typename >

    + +

    Primary template to catch any non SPI interface types.

    + +

    Definition at line 980 of file dev_iterators.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1idxdev__it__details_1_1is__idxdev__it__.png b/doc/html/structutl_1_1idxdev__it__details_1_1is__idxdev__it__.png new file mode 100644 index 0000000000000000000000000000000000000000..7dc0099557687313b4c044753976f3e0e04e3e26 GIT binary patch literal 840 zcmeAS@N?(olHy`uVBq!ia0y~yU^EA^12~w0q<7V!Fd!un;1lBd|Nnm=^TnI5rTvE{ z09jys;J^Xa&O7ozE=Ng_UoZnu5eQs86=KA|z;xZy#WAFU@$KA;lOAgbuxyTB_V0iH z^=wZwg_DmbslU6?*%ff>kei9uu7^`stqKTDb@U9Hpwe71S!F&l-nr*$veD-C&qD6a zT6tu)%3k-omvjHtq};zWZOP0TdiTR_WgmModz0V%V~>0%?Mq<KDX=O>;K}sIR;H z&27>$rQfqve)>c%-#&ZJ@=0HQ|8U=P*S~$Hkp53KPrHv;uz7xH=)zT}7!$(wF)%f_ z?qR%9Q|l_z;0g)H&vQ`OxtO%J_O(Q|oC?(L61H|l!b-k4t}Ae4|IyX5uO zy$@^kPTSvp;GA9k&)~#^-lTF-oAqz6e%CiN+12;FS>C2n^T~t#U(LQ`x4l+3-zIi2 z_e|cw{yn{d)6{?6-2ct2L}t(2{lBkHV815!v+UK|oDWUkvXbpY;y!H4+kW?2#f#jR zJFZ0<_f9XZ(tJ{QaNmb*@_!`DJ-+V?xPGkq-m$FP@|x*C%M5&e%Q=6p^3cA2t+4E} z&CQ^`Z%x;tCky>e+x&L@-L%h(9^AWm|Jc$021~Z?&%IZcU2JqU{P*o`ym_-9ZeHfc zxBaiT%>3o2zicbK#dT-;TXsc8w_TsNRR8=p|J{bX<+s|{X01M5(-41r^QJy6i3eQs zt9IwlzTH*A+pxWG-XFauAA&d6^6LHf&u1tuE{i)NeW2cV595y`(hdF)>ipU0(9jjD ciheN97dmhz=X912FxfMBy85}Sb4q9e0P>NfO8@`> literal 0 HcmV?d00001 diff --git a/doc/html/structutl_1_1idxdev__it__details_1_1is__idxdev__it___3_01___tp_00_01meta_1_1void__t_3_01typenamebd9ada52ca7b7570c26d0c280af5e635.html b/doc/html/structutl_1_1idxdev__it__details_1_1is__idxdev__it___3_01___tp_00_01meta_1_1void__t_3_01typenamebd9ada52ca7b7570c26d0c280af5e635.html new file mode 100644 index 0000000..39be852 --- /dev/null +++ b/doc/html/structutl_1_1idxdev__it__details_1_1is__idxdev__it___3_01___tp_00_01meta_1_1void__t_3_01typenamebd9ada52ca7b7570c26d0c280af5e635.html @@ -0,0 +1,128 @@ + + + + + + + +uTL: utl::idxdev_it_details::is_idxdev_it_< _Tp, meta::void_t< typename _Tp::value_type, typename _Tp::difference_type, typename _Tp::pointer, typename _Tp::reference, void > > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::idxdev_it_details::is_idxdev_it_< _Tp, meta::void_t< typename _Tp::value_type, typename _Tp::difference_type, typename _Tp::pointer, typename _Tp::reference, void > > Struct Template Reference
    +
    +
    + +

    template to catch a proper SPI interface type + More...

    + +

    #include <dev_iterators.h>

    +
    +Inheritance diagram for utl::idxdev_it_details::is_idxdev_it_< _Tp, meta::void_t< typename _Tp::value_type, typename _Tp::difference_type, typename _Tp::pointer, typename _Tp::reference, void > >:
    +
    +
    + + + +
    +

    Detailed Description

    +

    template<typename _Tp>
    +struct utl::idxdev_it_details::is_idxdev_it_< _Tp, meta::void_t< typename _Tp::value_type, typename _Tp::difference_type, typename _Tp::pointer, typename _Tp::reference, void > >

    + +

    template to catch a proper SPI interface type

    + +

    Definition at line 984 of file dev_iterators.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1idxdev__it__details_1_1is__idxdev__it___3_01___tp_00_01meta_1_1void__t_3_01typenamebd9ada52ca7b7570c26d0c280af5e635.png b/doc/html/structutl_1_1idxdev__it__details_1_1is__idxdev__it___3_01___tp_00_01meta_1_1void__t_3_01typenamebd9ada52ca7b7570c26d0c280af5e635.png new file mode 100644 index 0000000000000000000000000000000000000000..da99e8e2e3ad2d1ce043ec002300dd0c0d458ab3 GIT binary patch literal 1654 zcmd6odrZ?;6vwL!K^|(HAg|D=1q34m$Ux;$1q7;$Vj&6^ilap15QHMsLR(M=1SPT* zr2`8!!A)6tND&GJT57c*MPTAAq%AE-LCT|0d9?JkU)eufmMz(TyUG3D&$;)Wn{yvI zw=^a?!rH>Y0t5nC!y>~FAdra+;23igKqHlqk3eG=6BT#bU@!pqX<;p={N)b-ZPni1 zUei($7%f2_j5D{+BL&_NZq z4tc2D#vW?fJpNSi`GV1=Y}q32yb_{LdoP3e1R=?6BIya_&FYqA z))NRjLmGr9)j~#F347uFN~!9$n_cv&-IQs<$$nytUobwa&8y&}nMHciD$yE(Oam zfQF!=P>(`yZ67^H1~eN{4yZ4}$p0(lN>cuE!8`T=v3qRoApGyz?pe?o06nH_amZYZ ziXReMCFv$COnI@Nz zlBF~A2&M)!G#%phRwF&3c|u3N7^~*iYc58{uf#lu@7iP}>3bcZvr1Z8Hx1$`?yvLP&3ioO-{`i+!i~~S06t?KGwLwLTmQ0 zLpE~P=QwmwWsu_Pc!1lSWoH+X`uxgA40p*PvFYsV^rMW<1nX{=iZkd{B%;{zov!nG z9?nERn8Ykn)AQA8PRexN=6Z(Bm-o`#KQoJIJI79U1xSTcek-=JT$fkPBR#@}be6zn z)yXDeOwoWf1rPb8uh1rRqX?7KsiF~rEJt#y?ytMJ zAgc@x716_k<*L0{@D%yeMB~~@jz?j-8}9u2ha*9hE<)Y$2KZPO7NkvXU0^PM;nxMC z&d^57Qxq59!AtKP(QYuoN%Q2(iU1m3AoFq?n4gvIaGvq?RTPN=H|@+N(&Cq+;}%qD zysHR({PW@UQ|Siml+*&+py9L;udcJ&`XzI+<$d}Z^mN*&f~SXNWfoCKbVbHNY3!f^ t$UIW7f66k-DdkogKgTnsFHyIG_Lk literal 0 HcmV?d00001 diff --git a/doc/html/structutl_1_1in__dev__details_1_1is__in__dev__.html b/doc/html/structutl_1_1in__dev__details_1_1is__in__dev__.html new file mode 100644 index 0000000..0146c7c --- /dev/null +++ b/doc/html/structutl_1_1in__dev__details_1_1is__in__dev__.html @@ -0,0 +1,128 @@ + + + + + + + +uTL: utl::in_dev_details::is_in_dev_< _Tp, typename > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::in_dev_details::is_in_dev_< _Tp, typename > Struct Template Reference
    +
    +
    + +

    Primary template to catch any non input device types. + More...

    + +

    #include <in_dev.h>

    +
    +Inheritance diagram for utl::in_dev_details::is_in_dev_< _Tp, typename >:
    +
    +
    + + + +
    +

    Detailed Description

    +

    template<typename _Tp, typename = void>
    +struct utl::in_dev_details::is_in_dev_< _Tp, typename >

    + +

    Primary template to catch any non input device types.

    + +

    Definition at line 307 of file in_dev.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1in__dev__details_1_1is__in__dev__.png b/doc/html/structutl_1_1in__dev__details_1_1is__in__dev__.png new file mode 100644 index 0000000000000000000000000000000000000000..36e76a6c33ef6a2cbc2e4f5d5ae6892e5a22ddcb GIT binary patch literal 801 zcmeAS@N?(olHy`uVBq!ia0y~yV3Y^412~w0r1*!%A|NFZ;1lBd|Nnm=^TnI5rTvE{ z09jys;J^Xa&O0Ct93?@1!3;n}AaM0mh!Fz=(*{o$$B+ufw{tJ%JvQKBY1hB||NrC9 zOUralMr}VAD<~du;PMecl~u}Xi5Vq*J$Q zl~d?do(AiWi~h<5P+xI!%iL9O5#whXf-THU)-?;Dkz2R=0G;hW{yGq77?P}LETKo@0_dR`n zard*eA4_-+6wjzMJo6#=avWQ_{X6yt-*)ViwP&z*MTtOYtoPU(f7!S}uKhteFg-JP My85}Sb4q9e03gDX%K!iX literal 0 HcmV?d00001 diff --git a/doc/html/structutl_1_1in__dev__details_1_1is__in__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1dad922a62deb7c32e2cff18d66b8c887d2.html b/doc/html/structutl_1_1in__dev__details_1_1is__in__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1dad922a62deb7c32e2cff18d66b8c887d2.html new file mode 100644 index 0000000..d4c551e --- /dev/null +++ b/doc/html/structutl_1_1in__dev__details_1_1is__in__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1dad922a62deb7c32e2cff18d66b8c887d2.html @@ -0,0 +1,128 @@ + + + + + + + +uTL: utl::in_dev_details::is_in_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_get1_t< _Tp >, size_t >, use_if_same_t< try_get2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::in_dev_details::is_in_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_get1_t< _Tp >, size_t >, use_if_same_t< try_get2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > > Struct Template Reference
    +
    +
    + +

    template to catch a proper input device type + More...

    + +

    #include <in_dev.h>

    +
    +Inheritance diagram for utl::in_dev_details::is_in_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_get1_t< _Tp >, size_t >, use_if_same_t< try_get2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > >:
    +
    +
    + + + +
    +

    Detailed Description

    +

    template<typename _Tp>
    +struct utl::in_dev_details::is_in_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_get1_t< _Tp >, size_t >, use_if_same_t< try_get2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > >

    + +

    template to catch a proper input device type

    + +

    Definition at line 311 of file in_dev.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1in__dev__details_1_1is__in__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1dad922a62deb7c32e2cff18d66b8c887d2.png b/doc/html/structutl_1_1in__dev__details_1_1is__in__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1dad922a62deb7c32e2cff18d66b8c887d2.png new file mode 100644 index 0000000000000000000000000000000000000000..66825a45bf573fc6065c465e9e7c421eb3ff7658 GIT binary patch literal 3604 zcmeHKYfw{X8pgG1iwJIAKx<8~j0;A|+ zjVnvp7LshY^#%n-frgNfAS|SakYUphx#hy`kc5~($UP@#W4i@$omqeE?5}<1JtyCp z@0;g+-tT?#<>d0m(c!DSU-S0z@>&&faDSYamv5$L{PD|6J@@a%w?=qA)_xqBZ~%s3 z&v0tmoX2dt<{ABbwYIh{yF85aJieS87ai~AS@Z<52MIeoeBVaw-Qq8}MLv4;2R z#l9OAGy~jOA^m{nT~NSkb=^%IZAy;2^U=1E-C$+t3rBcm)t#@O6V9vgA%~w6dCIJ+ zn`zI9$CzkYLez7DE`Dx;JI#jo7ZSh}%kzd-Hr@tTH6sX4V+wxP^=+`|8G>^}kj!DNUkiILxP}HUBnE zb3IiE;2VqC`E-WzbD0Y=0}Y>or+?jxo?G>^6{fy&V19Ykq;z9i>Y@ehv35;^%cvex znr2Go>#MS7UmE--X`!$MfvESN-tQC)2Uuu|+jNyxwy<=ejpo9!=k_RJg!Dh~K`8j} zg#-JWr9YzxG;CSB2;}ismM;Q=Or;hUEP|8GW*=JwRqZV%Zu=r+N~B`sBI>nGhG)4c z&oGBS%loJQDDVFi^X)?X7x&_Rz4e9NZ#e5r*@^1i>(D>6j=h7YcaiW;9h@d44#o54%MIBFXp5b=Egr_h(dBi;rVp zpY<8ppkk8!@>$of1{`npqXwiiJup zLwYGN65y03k+)#H1Z{?t6TrzTb%CEd9xo+`xGW=$j+R!I)GvYud}WTa_F+?Cjp6W;+DhOxhRdYpn9L5+~Idc8- zT6!~0CYGO*P$^;D>I!(>Y%&gR;5!VQzThF8_t@Sz;m#@IRc*7m9K{w}x5X3JjUUFM zlW0dI%A@!B^ppm;?v;bj zX&01Q4m&i2Jv>fnR*S)%8=&a&Jx?^isaJ_qcq|UeKgUA@^RX*#H!GNa^1>BFqSwW_D_A z7GcU7E0wX@ssD(9XlqZ^P9CSoO7rO5rUdMz>5NTcuC*c(POB8Wrv`z|9)BL~-^`wbDjDElUY8-z zwW638UkhYY$|frCkA1T1y^#=){cz=GI%DFdnS09mkH5m4+Zj7dv{&f3i%R4;i;Vct zj>$0}%fr#$BKYf0;ZSFa6PId{*Y4rnhjWN=QI>!_R37T+^k zFs&66w(PAyS`}aqwj%mn+8LoX3ymA1_)3(bY;eHA@N@P6_1+{LXXtnxn~%xw6m!6{ z#5#JkzC6aN%^R4NwGY27A1S1twc0N6rgU!>Nw#E%e3g1vJ>+CWp#A{Z=U97TT)+*~@j3w)}x5iZ{jO@%H$52;;E`!Bj2AREhJJ{a|v9vOwlX zMgm{?y*G;CzE-4rqPzP(M`>)->l-Utpwn#hN>yI_@U{Vu>d${sZR!}hk(=}dNNma# zeTPEiSXa=$y&atG_AM0r5!_XhIN?s=HFLWObH>uUiU9}#WRcy%$J3J1^+!5w>Yec6H(dYq+4qxNxP+^V%`4=rg*xgbbBBBaF>KV{Jfst@Z zRU!(#&YOt?dIrRnM7843qw;*=1pppAl++acz;9I!_aw*A%#W^ZYkJ3h03rNxZnrDE zlyYD#^ZG1nuPDD=bVVCofIqsA_`C5aEb2r1`gZa+rND1>+#q5gY{uKNr%8#kEWI&% zv!dU4IHupcEpebJZ~*#{h=uY~%>*n|!N&K={7$KBNaxWHXJjqFXH~#Vur(NAADXK} z5b?~CeIB(JFcM^$N(9hhakWup;#SgavpH0cO#&mJ)P6!7>D_NYd05o66bBww4LV{^;y-`9_d_rbh z{5Alnd)D_LraElc$K9+U;CO*8knHF$#f3tSdcnI zvEvFd#fciB49L@|Zp9uB`ZfwpcY(b%R;P`zkFoV$6!Nj7N9s8S^L8*I0u&i5$YZaI zD*rADlHq_h(YH?wC-xYw0ON*w>&;)3Sd*vGaL?A(O`sB&X7qJcZ5tz4Ohr8+%oOpG zw%AE62~vl*lx|n)Q=-NQXAr>2eY@yQhScjbtN^$p+z`?iEHlD)sjbeLlA8^4?H35^ z^{@KiG7g_d=DIt}yncC8{MTL7`+`5&i(U_pscKE?Ws8WGk~V;qJ6||VKf+%0$d_(E V8Wz3f`3vV2aUgns?Y?7${{&o-LN5RS literal 0 HcmV?d00001 diff --git a/doc/html/structutl_1_1inbuf__dev__details_1_1is__inbuf__dev__.html b/doc/html/structutl_1_1inbuf__dev__details_1_1is__inbuf__dev__.html new file mode 100644 index 0000000..925e013 --- /dev/null +++ b/doc/html/structutl_1_1inbuf__dev__details_1_1is__inbuf__dev__.html @@ -0,0 +1,128 @@ + + + + + + + +uTL: utl::inbuf_dev_details::is_inbuf_dev_< _Tp, typename > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::inbuf_dev_details::is_inbuf_dev_< _Tp, typename > Struct Template Reference
    +
    +
    + +

    Primary template to catch any non input device types. + More...

    + +

    #include <inbuf_dev.h>

    +
    +Inheritance diagram for utl::inbuf_dev_details::is_inbuf_dev_< _Tp, typename >:
    +
    +
    + + + +
    +

    Detailed Description

    +

    template<typename _Tp, typename = void>
    +struct utl::inbuf_dev_details::is_inbuf_dev_< _Tp, typename >

    + +

    Primary template to catch any non input device types.

    + +

    Definition at line 352 of file inbuf_dev.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1inbuf__dev__details_1_1is__inbuf__dev__.png b/doc/html/structutl_1_1inbuf__dev__details_1_1is__inbuf__dev__.png new file mode 100644 index 0000000000000000000000000000000000000000..89efc32578b54708d05ec732648b5dc0ddf4cd81 GIT binary patch literal 842 zcmeAS@N?(olHy`uVBq!ia0y~yU~~qu12~w0yE{-7;jBn>&ELv>9C`<$)r=(D~Q*6$`YwE4NucI0h6*~ zE+*dD{zdZr_a?r}Z9suI^}Ng-b@w)ZdcRjCw!iz?L$7`7W=|1c_w?>OS+7glIa_xx zy&rY!y6&^n*NgrsdWs+U3o>NKwCVD8(^X&AKUget&u`jm)g_;S!Z#MGT;1U8xhk=J zQpjOG)s<~P%X^O|y0mn5%wT%GB~?=KM{B=dQU*Y<9b;g)7h`{{!~8spmU9%ZQh2DU+yhuW;WsZ|Klv* z{{7QtKTUmV^QUeTpGo~>wjyyG<4VPqJ)Ndw?FKP@j9RT%52lx>vwZM zv+t}a@VF57_PS!=_l+iXW@SQ3{NIh2Gs$<=mEV{e8MTo2%Kg7n=N>lEG$^X*DEM(o zvgF+di_C;KHypYe+1cJ#R=oOHqiZKHKtL@4H)ay(~v}&z70;S(R2FHr$i5 z^tr2$zwLHG*EQFwcsV)06@g4|WApmXeT}&{yIB4E zl4 + + + + + + +uTL: utl::inbuf_dev_details::is_inbuf_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_get1_t< _Tp >, size_t >, use_if_same_t< try_get2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::inbuf_dev_details::is_inbuf_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_get1_t< _Tp >, size_t >, use_if_same_t< try_get2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > > Struct Template Reference
    +
    +
    + +

    template to catch a proper input device type + More...

    + +

    #include <inbuf_dev.h>

    +
    +Inheritance diagram for utl::inbuf_dev_details::is_inbuf_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_get1_t< _Tp >, size_t >, use_if_same_t< try_get2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > >:
    +
    +
    + + + +
    +

    Detailed Description

    +

    template<typename _Tp>
    +struct utl::inbuf_dev_details::is_inbuf_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_get1_t< _Tp >, size_t >, use_if_same_t< try_get2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > >

    + +

    template to catch a proper input device type

    + +

    Definition at line 356 of file inbuf_dev.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1inbuf__dev__details_1_1is__inbuf__dev___3_01___tp_00_01void__t_3_01typename_01___tpc269ee3885240cc8c352f3c6b3a67cd7.png b/doc/html/structutl_1_1inbuf__dev__details_1_1is__inbuf__dev___3_01___tp_00_01void__t_3_01typename_01___tpc269ee3885240cc8c352f3c6b3a67cd7.png new file mode 100644 index 0000000000000000000000000000000000000000..441af4148ec1769ee1ec6c932fa3954c34438990 GIT binary patch literal 3656 zcmeHKdsGu=7RQ5+DkANohE^r*s_Pb8uzIY8Bt)u|wIZctQbIpsle9(GUcA z)nUCghtYD%t35rMo114G?}vLYU;FCwxOgA$q$lWZPgw2sC)>0!DuFz0R3YEHp!LrVJAxwMcaq zrwl$R&EHnoC5ii_b~$BGCvqXxlp}4MoJn{Ap}h8+F7ld{#(C}fYt z17Y?42U5;RYy2rEXRs$N#*lmG21Pom5vl@TScE=k_! z<0%4A|JHsVlaMbM79o)@nslf?n5s}T&*4K;Afwn_vwWw3Yx9|M?MpEI-!OSa{`b}c zoh=C`zOoS1FLaNNi3tmu0`e`(;~A54_VwlFMmFu5f`{D_4s7le@cY2=2A9WOWY{0d zJs2v$Gw<3oxIji@ovI~lIEYbf84933)PWpo5s$q3+ZBzpD2_0!64qv8MJXkh_BS}g zvX2@>j8wO7uY)GWOgA;0b4k}S!uZrKaiIC`T6mrv=IfLf0RXM;BOLQ+K#gy+pG*1f zM9h`9SVn4YeYXa>6^!wp5t^yZ%SlC33e~fL4i|30!}j_H6WzH^#=ogu@x6Os7hdtf zPI5{O@MSMMLon+;@?IPNsJi&q&{YAU=(`dcAR_pNc^s4yTu6VkYh!gNDcPXjj!4=khlh z+uG$d#;9B$8rmaXth(tDU3S>?*#^NNA+VN0E2Fpy-6VumV*%m{p#iWdq`6Cw?95zW z93vW%^U{M)4(RG*wCo7mMi>KwSAmtq!e1}SY4{JbbDXwNxXR)#ioxQJ<+w-X@uRn2 zXSCKy%qiztkH>rcltJBF?uCww=f5vZKef)(pK8k9>`C6;pQ%fYgEFob8$_dJbux3{ z4V7e2^bWHAO4dU0iETaB<&1dK#(gA0HVv&zv18pXMJtfjhR0}l`_###0@8hx>bns< zU!4E-a;UXPF=CQf$@4pNS@;_k*Jram=~`Q*u~iC9C&&L-x?9OtNX?9p0}CL{k)8SZ z=_1mn4uXIia~zvsHlQaZu?`S*tDN^C)<$A;27m#C!rG zh}OF_AX_c?YmYdWemw=pn>$blambAU31odf~JC5D(Wh)?43olf#+gqFl zAH!LV_(xYog=eU-Kjt5nDv_vCq;O?u!;z8nAxSOheq*8(l7{rVX<3a;J4iNF^@syB z98BkF1KlI*!yG=&0ar10s|;dpIUuCw$zRqSzDE{%7Ubi!d3aNrwYnfc*) z2t`&Qzg=TVfz;(jI>#`-`zc}UleVbr7p}zGSkqze^H=vE5QAOl#ldjd$z)9Bewe;{ zp51&VhuEv(_kWUWxDv3+1;1^w1whM_2E?_-cXA6zViPkRYEFR6$zx0JgWZ~?vb_jt zm@3axHXZuaLQNz)EWEOO0Tj|7vjL1eD>fk=L-K+#w(~Pwb=UaM#fGz1aUx0EnYgPY zaPZGqRXZJZfpg4OxQg{@*BWLd_0FR5hWHwIY%OVy`7bQ^C*Y!1d(=|G*VYcbkQIpC ztge4xkPIS{9u39vuc@DQFt)c2*6S`+=Gkp5EnqSdc2J_?(Pxg@l+%=Cn_X*bw>YUca_Op$m)5Dcxs!+=Op6CU^{)U4Yn4_lr zLB^Qp?3MiyO=V?5WM%2?V6>2X+D?yB-X)%EGmzYmp1flA%yfTsRi$k!rzz#D;mM|b zdQz%+^Flo{>tSbfBq0tN=j0q?pU^M$hlq8UteJqq$i|NE9cuGdqkw~w%yKCN3tq=*Icw%(>5d616BjpuU(&s@ z&tW)x1O~pnySdgQw~`g|bgGb~s_N@As?lbR635%3HkqcCC}Y}9cvc#@XJlHK5lRZM ze>aLeFod1B4f=C$gfwHqxhK>#@bDsZ#4HT;4invL>c-&FNSHhz0yJx+^Ty~w#!Dhz zzivD?)YJJBuBQhvYj&84wcDjnvv-^+$!xkbq^$;Pj^{TGTS^cmN`eMF!VjtOhmSda zZ55SkBHk1(^E2>#`NU$N?5^w|j0@xm#VLs$eGw`vNEY1%Ho vnNxrprBUuo-8@t+(Uz@wWw9)Td>ig9TA!L-73=-&^Vt*~x3T);U4{PwGUGhj literal 0 HcmV?d00001 diff --git a/doc/html/structutl_1_1indev__it__details_1_1is__indev__it__.html b/doc/html/structutl_1_1indev__it__details_1_1is__indev__it__.html new file mode 100644 index 0000000..6ee8e72 --- /dev/null +++ b/doc/html/structutl_1_1indev__it__details_1_1is__indev__it__.html @@ -0,0 +1,128 @@ + + + + + + + +uTL: utl::indev_it_details::is_indev_it_< _Tp, typename > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::indev_it_details::is_indev_it_< _Tp, typename > Struct Template Reference
    +
    +
    + +

    Primary template to catch any non SPI interface types. + More...

    + +

    #include <dev_iterators.h>

    +
    +Inheritance diagram for utl::indev_it_details::is_indev_it_< _Tp, typename >:
    +
    +
    + + + +
    +

    Detailed Description

    +

    template<typename _Tp, typename = void>
    +struct utl::indev_it_details::is_indev_it_< _Tp, typename >

    + +

    Primary template to catch any non SPI interface types.

    + +

    Definition at line 695 of file dev_iterators.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1indev__it__details_1_1is__indev__it__.png b/doc/html/structutl_1_1indev__it__details_1_1is__indev__it__.png new file mode 100644 index 0000000000000000000000000000000000000000..952fe3e617dbaffdb4aba39bc14d99091dee0698 GIT binary patch literal 826 zcmeAS@N?(olHy`uVBq!ia0y~yVAKY(12~w0WZ8?w20%(8z$e7@|Ns9$=8HF9OZyK^ z0J6aNz<~p-opE6L-?u$|ZJWy3gD#a{mE?<6Z>E_3$UV7ECG$vFakSN5 zucCEIb2hPk?o{z@`VKV8Fp^hK{U4v#rTyo=tea>3M~3s+o=Hoj%2Yi~-*`>RLbfrv zP*gBcNogI!jDGe8#vMo2F?iX?O=Ar>2xRE2(&1jv5X%^{QL{m+j5Xl!I))yk_{Zh?M$6ap z-naiYkeJZ-wwl%C`1vP?t-~Fx?j6}(R$9LAX#xZ9;oJ6aUcJuG)ajn|`PJ)FyArb7 z)3cN171yS``|)?PuH(BKX7*fc7dH1@;Mu!BR5-c%;j*o^_B@w%DrNNl%c*}|s3vDM zk7suNcmHY4rQ0^IUKcO5Zf@B9sHM+loc+`nBdgT&&o8D_);j!oey#nD16SsSFJE_# zjsJvu-_GpaPhV{Gbk z{V(hSu-U{a57KcW;f)UH2<< zuJ5P2bz5_@Z$G=XH20s0>~i~meCvd(<4&4d=$!0tV*Fxq|KPLM+tz2@&HRnp*)Cm7 zu{cnFu>5MzD&YshcI991Fqr@MWnSR(_T=h>yGysomj0_dE_z_ioVP#ASU;GfMqcmH eP;kP0#INYG(_zI%mS4bx&fw|l=d#Wzp$P!!Uwj$> literal 0 HcmV?d00001 diff --git a/doc/html/structutl_1_1indev__it__details_1_1is__indev__it___3_01___tp_00_01meta_1_1void__t_3_01typename_06508604dcee4010234c84cc332fa196b.html b/doc/html/structutl_1_1indev__it__details_1_1is__indev__it___3_01___tp_00_01meta_1_1void__t_3_01typename_06508604dcee4010234c84cc332fa196b.html new file mode 100644 index 0000000..6663702 --- /dev/null +++ b/doc/html/structutl_1_1indev__it__details_1_1is__indev__it___3_01___tp_00_01meta_1_1void__t_3_01typename_06508604dcee4010234c84cc332fa196b.html @@ -0,0 +1,128 @@ + + + + + + + +uTL: utl::indev_it_details::is_indev_it_< _Tp, meta::void_t< typename _Tp::value_type, typename _Tp::difference_type, typename _Tp::pointer, typename _Tp::reference, void > > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::indev_it_details::is_indev_it_< _Tp, meta::void_t< typename _Tp::value_type, typename _Tp::difference_type, typename _Tp::pointer, typename _Tp::reference, void > > Struct Template Reference
    +
    +
    + +

    template to catch a proper SPI interface type + More...

    + +

    #include <dev_iterators.h>

    +
    +Inheritance diagram for utl::indev_it_details::is_indev_it_< _Tp, meta::void_t< typename _Tp::value_type, typename _Tp::difference_type, typename _Tp::pointer, typename _Tp::reference, void > >:
    +
    +
    + + + +
    +

    Detailed Description

    +

    template<typename _Tp>
    +struct utl::indev_it_details::is_indev_it_< _Tp, meta::void_t< typename _Tp::value_type, typename _Tp::difference_type, typename _Tp::pointer, typename _Tp::reference, void > >

    + +

    template to catch a proper SPI interface type

    + +

    Definition at line 699 of file dev_iterators.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1indev__it__details_1_1is__indev__it___3_01___tp_00_01meta_1_1void__t_3_01typename_06508604dcee4010234c84cc332fa196b.png b/doc/html/structutl_1_1indev__it__details_1_1is__indev__it___3_01___tp_00_01meta_1_1void__t_3_01typename_06508604dcee4010234c84cc332fa196b.png new file mode 100644 index 0000000000000000000000000000000000000000..d8780f9249477f91761be78c553092723f9fa0ce GIT binary patch literal 1649 zcmd5-YfzF|7)Bk-)e$G1(zJ~&HFMX?s3n<37d53cS##AgOk>nG3d2J1f@GI<%L}Hv z+D=I|=2lYzN(B{&R~!>>tA@lS&Afu55qu~r`{A$MX13pZX3le-_nhaP^PYKT-g6yw zB+S~<(GmiISR=zjq9G77G00ICW+3j~bMPl{a6m=Ggc=M6kWMN!1Zs0B$X0t}W25G1eE@%53(T^6o^ zqJJ=N3|FZl>4_N&k}EFmNMCP4W?6)=qiaG%Wf)`6)i{hnXO({hP-$)*txv0#7m?uI zc1Mko^0U$?^IMgL@>jT#;1Vm^xWtt#XsGZ6KEjx(8k|BJx3P?eq>t9%`FX~iuYNt} z|9Tg9S5A@78wbp9K7#F-qIs2>d7cU7-oAWOJ5*Y5zG?Z~L{zP{xutM_6^Iedg>~3- z+fhlD(`P~4JdFi$!z%w@q0Y1DUk+a~HMcani@MhcTKgq}K4bv%NouRJ@!j#(Tpe~N zg(tPYl8i6zUrWy*w=Rfy00-kQ9ftl9XA5Z$ijoEZjJ>j(r#u+x17x0W9cRUCJ#_+V zFZvUa+_EzbgGV2me8GZ6zLPZ#Uw+*jv}@8ZqYQkjL!`mz`0T}09H}UMz#2;%SLR68 zEV%-^_0KSj_OALgJ|Y0N9byc_Sm59}2 zQ(?|jo{Q>~hm|#yzP_#bCLy-l|3spKU*XE`AA_6ORG?S5v@9ZXP|Or6&PWpia338I zj2RZ8XNAOc$O<5niRt=qfh0YjB`8=lY;v*x$zxS4E2?mLE4YfbO+P}BxC=2z;>u>z9!qq{XZ z3T2yB5Csdb0rt(}-cHcjuvxKvIbEaV-JxgXsZspR%ECQ4{Pl@Mtrm40##x(k(Om~k zQ>`Bv|11~e)pJH;iQ=wU6H4i>c}sDZVlos0V%0JMcqiOTVt^Q#PfiU-W7a7s1@5(`Khf$t#b$W=e`- zmTR!x?z@VQljfa2(wR1D`VJ)x2D^e7&Fv0+@A;Q*eruR7+YxaC>$kjJo8feK3+|Y` z>bZU+(dk3Mr2MI7h2V9G0FYv}UU9DiiIVa9guBd7K>gSfX;~?4lu6<0Smt0gkUwXCqAwE>JYu3vY4)t}15T+1 z)D$-;RF^6v(lx;>Ag)j-V~w~kQA$b}k^GJNz_uon_xJTy*yUbjQ?PIfEHT6IXk!%u sOWl_^_d&T@v3?XdR2TUO_&o;5piOFnImu=Z_&-39p+`dK2a+!T4R()CTL1t6 literal 0 HcmV?d00001 diff --git a/doc/html/structutl_1_1input__iterator__tag.html b/doc/html/structutl_1_1input__iterator__tag.html new file mode 100644 index 0000000..5be3997 --- /dev/null +++ b/doc/html/structutl_1_1input__iterator__tag.html @@ -0,0 +1,125 @@ + + + + + + + +uTL: utl::input_iterator_tag Struct Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::input_iterator_tag Struct Reference
    +
    +
    + +

    #include <dev_iterators.h>

    +
    +Inheritance diagram for utl::input_iterator_tag:
    +
    +
    + + +utl::forward_iterator_tag +utl::bidirectional_iterator_tag +utl::random_access_iterator_tag +utl::contiguous_iterator_tag + +
    +

    Detailed Description

    +
    +

    Definition at line 56 of file dev_iterators.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1input__iterator__tag.png b/doc/html/structutl_1_1input__iterator__tag.png new file mode 100644 index 0000000000000000000000000000000000000000..a1e8d13dff5b8b98a2b57d369856061887b0f324 GIT binary patch literal 1711 zcmcgtX-rdD6s|G|gF2{0(PF7HP#h4e2-+ZOof#2c!J-Hf+)9*HP=o@q*~chiPzg{J zC|h-CskjsnGKh!|El@172!e{xQp+MsDGFsN?YmPZ`q#{_ImubR6S1qu7KY3)H*4@Uriw)`}vj7)uzrmg<<+S*#(PNU!4`Z}V3)U&}*oMI@*#qtS%_Dk|Jb#qQ-LPy)ZmN|8q`#G=^!2i2zQrQqZd098 zmu*l2_a-*!hc;`eVV~2i&g|zl1po8~`AKP=Jn(kK#zP6G8B)Vir|o_4XK-Ug*d6Qe zfNPj7*j40;+OvKUa0xzzvOtp>g|d#luXjYCTI4B>c|)yWJocj|EM@c~^lAr`_xejm z#Nxb3V^k2pxR#2fYO+w!h!lK`0HZ7nF}g2w$GMBu%B5l1mNOb84;*&PM)~GNs>2Nr z*6jAmDQ>(WI2%z_e_Zgoz@XY0t2LQ@qt8&qxu`!L@4>#rJUSztIFv_Aw1%2jEexM^Vd8~oP+*fnRXXKtB`*~;wDL1KtDTI{ zI&emm5$AbAp@R9&lww|@s=PQr-|h4sp5V50D{WgtQE;ZMLsr#!mah@c>BC){CsSU` zAjshna}l7@a7rWz5l*d<55W24Ts1N!p@t8@o50X2TjQKN@-8;_ z$t%YqKDkLiQgX&>j|Yj;Jl}-mZ)f@*JuRU*0clFFMS{7!496e=!Z6|+s!SP3HTV4g zcnt=2cF@lLdo<>`u;>!KLvA3T$QWgdIX7cpt!58Q-6;#!PtmxP7DO$><3tiaRqJpM z(i38|nVwZuG$Eov+~uTP8Mn}Y-*t@GYkxCYUS6QOA2S-5kFEds4p!C?^P`N~)@S-` zkMfJfJ{+{gy+t)<)pA-x&V0)AUNy_zpR(WK`JXU>-UNtOi3s* zO>!ZBmh=x-egWyg0`N#-s$in23p0itqIo~)X6a2DX??to&b1^Rb2NS)ez_TSad(OD zfTMNgEtGZ}#PnGfV7^)AXWu;Nrj?O{bPL3oLhXloh?vm!MRu+-^u*ig#n>5zGWX=( zQS=au+4bXp5a~AwQycAvjEBQp<{TTDZ>$%FFZ^8CI6KJ#(mVcBns2vsV&fr*s}a+f zrV}KTy(zzN5DnI^;wy|m_H?XLS9Lif6( z67&CxEr{|{-tCMXMe*}qhV<5P=lBeGQ%6T&WRs^5uPXTxKw%LCNg1|)D`|qs@GB4A zJi>Bio)x10$ENFV`F4wgOAAg3r=EdAHG7ljxEIB{_`ZuLEP9@KBNBZ_v0YBA4;i3Q zdITyns5KfTq;WPr9fGs-2Rm$P%9#-_qh>qQSscAx=QB9?^AT4|v=X&n@oh6};1>JJ aCi0P$SsQ{Pvp#6A3kGte?&JUNbLk)H- + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + + + + + + diff --git a/doc/html/structutl_1_1iodev__it_1_1value__type__t.html b/doc/html/structutl_1_1iodev__it_1_1value__type__t.html new file mode 100644 index 0000000..3bd9b82 --- /dev/null +++ b/doc/html/structutl_1_1iodev__it_1_1value__type__t.html @@ -0,0 +1,279 @@ + + + + + + + +uTL: utl::iodev_it< cont_t, iter_t, _beg, _size >::value_type_t Struct Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::iodev_it< cont_t, iter_t, _beg, _size >::value_type_t Struct Reference
    +
    +
    + + + + + + + + + + +

    +Public Member Functions

     value_type_t (value_type v=value_type{})
     
     operator value_type ()
     
     operator reference ()
     
    value_typeoperator= (const value_type &v)
     
    + + + + +

    +Public Attributes

    value_type v_
     Current value buffer to access via get. More...
     
    +

    Detailed Description

    +

    template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
    +struct utl::iodev_it< cont_t, iter_t, _beg, _size >::value_type_t

    + +

    Current value wrapper type, to used as put event catcher owner_->get : Use v_ directly owner_->put : Use operator= to a dereferenced iterator

    + +

    Definition at line 773 of file dev_iterators.h.

    +

    Constructor & Destructor Documentation

    + +

    ◆ value_type_t()

    + +
    +
    +
    +template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
    + + + + + +
    + + + + + + + + +
    utl::iodev_it< cont_t, iter_t, _beg, _size >::value_type_t::value_type_t (value_type v = value_type{})
    +
    +inline
    +
    + +

    Definition at line 775 of file dev_iterators.h.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ operator reference()

    + +
    +
    +
    +template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
    + + + + + +
    + + + + + + + +
    utl::iodev_it< cont_t, iter_t, _beg, _size >::value_type_t::operator reference ()
    +
    +inline
    +
    + +

    Definition at line 778 of file dev_iterators.h.

    + +
    +
    + +

    ◆ operator value_type()

    + +
    +
    +
    +template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
    + + + + + +
    + + + + + + + +
    utl::iodev_it< cont_t, iter_t, _beg, _size >::value_type_t::operator value_type ()
    +
    +inline
    +
    + +

    Definition at line 777 of file dev_iterators.h.

    + +
    +
    + +

    ◆ operator=()

    + +
    +
    +
    +template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
    + + + + + +
    + + + + + + + + +
    value_type& utl::iodev_it< cont_t, iter_t, _beg, _size >::value_type_t::operator= (const value_typev)
    +
    +inline
    +
    +

    < Catch any attempt to write to value_ and sync the data back to device

    + +

    Definition at line 779 of file dev_iterators.h.

    + +
    +
    +

    Member Data Documentation

    + +

    ◆ v_

    + +
    +
    +
    +template<typename cont_t, typename iter_t, index_t _beg = 0, size_t _size = static_cast<size_t>(-1)-_beg>
    + + + + +
    value_type utl::iodev_it< cont_t, iter_t, _beg, _size >::value_type_t::v_
    +
    + +

    Current value buffer to access via get.

    + +

    Definition at line 774 of file dev_iterators.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1iodev__it_1_1value__type__t.js b/doc/html/structutl_1_1iodev__it_1_1value__type__t.js new file mode 100644 index 0000000..d2fa6b8 --- /dev/null +++ b/doc/html/structutl_1_1iodev__it_1_1value__type__t.js @@ -0,0 +1,8 @@ +var structutl_1_1iodev__it_1_1value__type__t = +[ + [ "value_type_t", "structutl_1_1iodev__it_1_1value__type__t.html#a337f27b0b4f79742a0076b203bc547ed", null ], + [ "operator reference", "structutl_1_1iodev__it_1_1value__type__t.html#a07c942db086f695666cbb66adc0bcf14", null ], + [ "operator value_type", "structutl_1_1iodev__it_1_1value__type__t.html#a987f92d1edf063461833c620ecdf57d0", null ], + [ "operator=", "structutl_1_1iodev__it_1_1value__type__t.html#a63b8721380bbfb5f976bd050f2f1f203", null ], + [ "v_", "structutl_1_1iodev__it_1_1value__type__t.html#a62dd0ffec4198f9a81a93323582c4c9e", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1is__invocable.html b/doc/html/structutl_1_1is__invocable.html new file mode 100644 index 0000000..7848bfe --- /dev/null +++ b/doc/html/structutl_1_1is__invocable.html @@ -0,0 +1,128 @@ + + + + + + + +uTL: utl::is_invocable< F, Args > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::is_invocable< F, Args > Struct Template Reference
    +
    +
    + +

    std::is_invocable trait for C++11 + More...

    + +

    #include <invoke.h>

    +
    +Inheritance diagram for utl::is_invocable< F, Args >:
    +
    +
    + + + +
    +

    Detailed Description

    +

    template<typename F, typename... Args>
    +struct utl::is_invocable< F, Args >

    + +

    std::is_invocable trait for C++11

    + +

    Definition at line 130 of file invoke.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1is__invocable.png b/doc/html/structutl_1_1is__invocable.png new file mode 100644 index 0000000000000000000000000000000000000000..5826ae0417b95dd64ffa0d47e56f712e5af29c56 GIT binary patch literal 1552 zcmcIkYf#cz9Q`92W?G|_nw2C$4!VS^X=xT|*oL**5-MS8nlDt;MeQXi(`>2fu1bK8 zNUn+R2dyti(psue3+D+gDwRqNCudgT(pxgr=<955Zq`Z}fU39J zv3R$OfLgRUq#Xon0MN?AVVwv!K(pMw0GWfX76g4lrD}hh3ZJX~_@OBD_GLG&)h?rG z&8G(X{xH~iEOxs#&YBSjM}m9tj5Ii+h2+Y}tJJCJ#{t*uovRmB{rSG}~ zn2qSlQQwg6&|kVv4h~B@9wnU1TD93m(y=}=v5mj9xoj_(VQVP>Z1xD#2{rbUy@gwy9Lj=ko7iSC9?`!wOg@F zzlbFC2Q<{X9-U4nv46(l#Thxg5*f#Z=Hnc)cW*$vS!{^QQ|~FU`hwP8l`p$n7rpL2 zvwSa+*Cmm6&iRtRSP1=;tLrBNITeR>7&-NqpTz2_dz?Y&H+>uye-R}n)F`I-ltyX6 z=X%WQpma(E>ot*Qe@Q0Fo9nvbwqCVWyIX)|(RHQ~aPD4>WmAm8&>Xgn2Y384Tl=Af|RhnWzxN z0;!tGgN_e(u%F$|aqrm-Mq&Fu1j8SNczG5NizJ=FW+!X!)X&razzcB+AY%ZW0S@1K z1z1{`&T7=O0?3cqz?K6$j#|zl=%5#O>eN)}W2TzY?=@%!;4LH#W4bzXYMb_^&A=Z8 z(me&MP>aw0v?)&c>i=KGBk{?}R{HvfU@(X#9b^UU`L`q2(ww)RhNg!v_MPd3w2y)b zo&FG_KPnytO2~^rfk^wV(-Bb9hl+PmX2QbiL*Bimv-vXxqa$k*@z#Jvwi71iaE`-~QMqLOwwAlptSi%o1h z%U-hqXvaZO=l#zFanam0zxJ!Fz@+?BZ?>RB-_wLlD1Xd{Uc9@~Qw~d*TwO1uo!DTJ z29j#UZH;W%61$tEvFHJ*ed5Mcm4vkqS{CR literal 0 HcmV?d00001 diff --git a/doc/html/structutl_1_1is__invocable__r.html b/doc/html/structutl_1_1is__invocable__r.html new file mode 100644 index 0000000..eccf75d --- /dev/null +++ b/doc/html/structutl_1_1is__invocable__r.html @@ -0,0 +1,128 @@ + + + + + + + +uTL: utl::is_invocable_r< R, F, Args > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::is_invocable_r< R, F, Args > Struct Template Reference
    +
    +
    + +

    std::is_invocable_r trait for C++11 + More...

    + +

    #include <invoke.h>

    +
    +Inheritance diagram for utl::is_invocable_r< R, F, Args >:
    +
    +
    + + + +
    +

    Detailed Description

    +

    template<typename R, typename F, typename... Args>
    +struct utl::is_invocable_r< R, F, Args >

    + +

    std::is_invocable_r trait for C++11

    + +

    Definition at line 138 of file invoke.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1is__invocable__r.png b/doc/html/structutl_1_1is__invocable__r.png new file mode 100644 index 0000000000000000000000000000000000000000..6b19104fad29d0d60a36b60137a3addf5cc2be6a GIT binary patch literal 1545 zcmc(fc~H`67{`BjXR>B)GlnUfkwxo~1({0PDk^xdc;u?7TV|TqW}23ZW%g5R)HK37 zaucmQHbO~V70TMQyh89;A@V4%Kuk$Rk)`&pX8M1hnfG}=-&RWO^;uOL6IWx%oKC<#Gj1e~={RJ-wlzFNeiqsb=%w3aN3< z+k*foiarPTrOyEXP%Xk^fAUF&2+K!*9ktd{Q8(wyts%u~^PgTtPl!7k=9@2mFBopDZ*KfEpg$SPPQO2+_!O~u$If_(yeMeMs%;+m~R?YCC zRWiI?G#0S5t!*+dYDHvbKCl~KID&4ik%`xw_Bc$fe^kRTV|5D!gVa|i(#!&#C=>jL zmG4XVDI>8+Vvl>F0YSwaoeI*-ZdG=t#*;~jbP3ZGIT{Z?n>KB#Lsv}+&Ykteyvh^q zDxu0;)suaV2Tim~acoE_xKrqlo0&~$B3|VjpF3(3UeH@-GD)+P(;D|cCX>QUsRp36^Zp;44&y|a9)}TWA20fiE@KhU(5((78@sgx|Uel zbFg`yw|-d5GO((iCpv60{0N2Y_aE=#S3(zD)%DmWk<7mf$~_Z|#_PvEpkp-o#UOoX zwi4!1(@UuV9iDWWcl}1Vz1MnEoy>GwBR(A*0OB^*zxfPSCtz=-zI1 z?nAo}>y1dXRwUD#VE7#-HC(nR00Zcc_XtvWE)_ECH=<)5N4DT+x4YzhFO-}j*v4kl zSzyp{95;aAabEfnB1QFaW~0RM>vx@Qmwa4Im4!*uTapTR@BG5Zk~va1oiXh?Ti;*d$+Ydr=Y7(;&Cdwybt{zi&B7laMQ7pEN4$&6hJ`PM>i8T@E-y zsVR13S+1X=0|V*G)*f$KbYZi^MTnWvB1Rlu>RilpEI_^c1GJ>f!|~DxJ=ZQ@sJz$8 zGhxLPMidaDH`5Sp|T&d*AhAjy;vK#c`(LZJ|?qXtakhy$SP1)^2<1BpD7hD<>1j^-JSP{4(j zp};MlQIiJ#&nQM48M$FIva{}82KFnwD1Fn`4ebGO(y*{~_3hABTK9z`Rw7E+4|NI9 zm1HP{NSTAZkG#2Cb;M(w*|KmrE$re!tEqBHk9W9Y?w)&>kd|0pkQgIp`8PIXEx6bdAAyhdB z49>Xn4`5f?Hy9uNGH}iCdGaruXwI2NANp(B&8Q|(KhO03@=haS6WENToIXtIBsEpQ z+M{1y1Wbc*^&nuEN%hNdPk9hFv~OUD5j{xKPk7V6-*LraD=`;bj*zDIw>d3VwZa}X zbj#)z;^HU~B}Lim(ujVIl%v3yE#%%C+zdQv76)&O#NB^L5uqw#oh++jvm;0`_S}%0gNNj AkpKVy literal 0 HcmV?d00001 diff --git a/doc/html/structutl_1_1meta_1_1apply__impl_1_1apply__.html b/doc/html/structutl_1_1meta_1_1apply__impl_1_1apply__.html new file mode 100644 index 0000000..94d51ac --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1apply__impl_1_1apply__.html @@ -0,0 +1,116 @@ + + + + + + + +uTL: utl::meta::apply_impl::apply_< Fn, Seq > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::apply_impl::apply_< Fn, Seq > Struct Template Reference
    +
    +
    + +

    #include <typelist.h>

    +

    Detailed Description

    +

    template<typename Fn, typename Seq>
    +struct utl::meta::apply_impl::apply_< Fn, Seq >

    + + +

    Definition at line 172 of file typelist.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01integer__sequence_3_01_t_00_01_is_8_8_8_01_4_01_4-members.html b/doc/html/structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01integer__sequence_3_01_t_00_01_is_8_8_8_01_4_01_4-members.html new file mode 100644 index 0000000..615ef77 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01integer__sequence_3_01_t_00_01_is_8_8_8_01_4_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::apply_impl::apply_< Fn, integer_sequence< T, Is... > > Member List
    +
    +
    + +

    This is the complete list of members for utl::meta::apply_impl::apply_< Fn, integer_sequence< T, Is... > >, including all inherited members.

    + + +
    type typedefutl::meta::apply_impl::apply_< Fn, integer_sequence< T, Is... > >
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01integer__sequence_3_01_t_00_01_is_8_8_8_01_4_01_4.html b/doc/html/structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01integer__sequence_3_01_t_00_01_is_8_8_8_01_4_01_4.html new file mode 100644 index 0000000..a565f70 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01integer__sequence_3_01_t_00_01_is_8_8_8_01_4_01_4.html @@ -0,0 +1,148 @@ + + + + + + + +uTL: utl::meta::apply_impl::apply_< Fn, integer_sequence< T, Is... > > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::apply_impl::apply_< Fn, integer_sequence< T, Is... > > Struct Template Reference
    +
    +
    + +

    Sequence == integer_sequence<> + More...

    + +

    #include <typelist.h>

    + + + + +

    +Public Types

    using type = invoke< Fn, integral_< T, Is >... >
     
    +

    Detailed Description

    +

    template<typename Fn, typename T, T... Is>
    +struct utl::meta::apply_impl::apply_< Fn, integer_sequence< T, Is... > >

    + +

    Sequence == integer_sequence<>

    + +

    Definition at line 181 of file typelist.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename Fn , typename T , T... Is>
    + + + + +
    using utl::meta::apply_impl::apply_< Fn, integer_sequence< T, Is... > >::type = invoke<Fn, integral_<T, Is>...>
    +
    + +

    Definition at line 182 of file typelist.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01integer__sequence_3_01_t_00_01_is_8_8_8_01_4_01_4.js b/doc/html/structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01integer__sequence_3_01_t_00_01_is_8_8_8_01_4_01_4.js new file mode 100644 index 0000000..113c119 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01integer__sequence_3_01_t_00_01_is_8_8_8_01_4_01_4.js @@ -0,0 +1,4 @@ +var structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01integer__sequence_3_01_t_00_01_is_8_8_8_01_4_01_4 = +[ + [ "type", "structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01integer__sequence_3_01_t_00_01_is_8_8_8_01_4_01_4.html#a0452e2478b7abc590c3f2e6e26f98b67", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01typelist_3_01_list_8_8_8_01_4_01_4-members.html b/doc/html/structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01typelist_3_01_list_8_8_8_01_4_01_4-members.html new file mode 100644 index 0000000..b93d4fc --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01typelist_3_01_list_8_8_8_01_4_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::apply_impl::apply_< Fn, typelist< List... > > Member List
    +
    +
    + +

    This is the complete list of members for utl::meta::apply_impl::apply_< Fn, typelist< List... > >, including all inherited members.

    + + +
    type typedefutl::meta::apply_impl::apply_< Fn, typelist< List... > >
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01typelist_3_01_list_8_8_8_01_4_01_4.html b/doc/html/structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01typelist_3_01_list_8_8_8_01_4_01_4.html new file mode 100644 index 0000000..ffd56ef --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01typelist_3_01_list_8_8_8_01_4_01_4.html @@ -0,0 +1,148 @@ + + + + + + + +uTL: utl::meta::apply_impl::apply_< Fn, typelist< List... > > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::apply_impl::apply_< Fn, typelist< List... > > Struct Template Reference
    +
    +
    + +

    Sequence == typelist<> + More...

    + +

    #include <typelist.h>

    + + + + +

    +Public Types

    using type = invoke< Fn, List... >
     
    +

    Detailed Description

    +

    template<typename Fn, typename ... List>
    +struct utl::meta::apply_impl::apply_< Fn, typelist< List... > >

    + +

    Sequence == typelist<>

    + +

    Definition at line 176 of file typelist.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename Fn , typename ... List>
    + + + + +
    using utl::meta::apply_impl::apply_< Fn, typelist< List... > >::type = invoke<Fn, List...>
    +
    + +

    Definition at line 177 of file typelist.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01typelist_3_01_list_8_8_8_01_4_01_4.js b/doc/html/structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01typelist_3_01_list_8_8_8_01_4_01_4.js new file mode 100644 index 0000000..4590a1a --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01typelist_3_01_list_8_8_8_01_4_01_4.js @@ -0,0 +1,4 @@ +var structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01typelist_3_01_list_8_8_8_01_4_01_4 = +[ + [ "type", "structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01typelist_3_01_list_8_8_8_01_4_01_4.html#a1f8a57b3a017d48791972780cc34fffc", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1at__impl_1_1__add__pointer-members.html b/doc/html/structutl_1_1meta_1_1at__impl_1_1__add__pointer-members.html new file mode 100644 index 0000000..ad9d7db --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1at__impl_1_1__add__pointer-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::at_impl::_add_pointer< T > Member List
    +
    +
    + +

    This is the complete list of members for utl::meta::at_impl::_add_pointer< T >, including all inherited members.

    + + +
    type typedefutl::meta::at_impl::_add_pointer< T >
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1at__impl_1_1__add__pointer.html b/doc/html/structutl_1_1meta_1_1at__impl_1_1__add__pointer.html new file mode 100644 index 0000000..427208e --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1at__impl_1_1__add__pointer.html @@ -0,0 +1,145 @@ + + + + + + + +uTL: utl::meta::at_impl::_add_pointer< T > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::at_impl::_add_pointer< T > Struct Template Reference
    +
    +
    + +

    #include <typelist.h>

    + + + + +

    +Public Types

    using type = T *
     
    +

    Detailed Description

    +

    template<typename T>
    +struct utl::meta::at_impl::_add_pointer< T >

    + + +

    Definition at line 211 of file typelist.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename T >
    + + + + +
    using utl::meta::at_impl::_add_pointer< T >::type = T*
    +
    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/typelist.h.
    +
    +

    Definition at line 211 of file typelist.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1at__impl_1_1__add__pointer.js b/doc/html/structutl_1_1meta_1_1at__impl_1_1__add__pointer.js new file mode 100644 index 0000000..5145646 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1at__impl_1_1__add__pointer.js @@ -0,0 +1,4 @@ +var structutl_1_1meta_1_1at__impl_1_1__add__pointer = +[ + [ "type", "structutl_1_1meta_1_1at__impl_1_1__add__pointer.html#a372a7a88f139a95fc12a4da82483d269", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1at__impl_1_1at__.html b/doc/html/structutl_1_1meta_1_1at__impl_1_1at__.html new file mode 100644 index 0000000..c5e5574 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1at__impl_1_1at__.html @@ -0,0 +1,116 @@ + + + + + + + +uTL: utl::meta::at_impl::at_< List, N > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::at_impl::at_< List, N > Struct Template Reference
    +
    +
    + +

    #include <typelist.h>

    +

    Detailed Description

    +

    template<typename List, index_t N>
    +struct utl::meta::at_impl::at_< List, N >

    + + +

    Definition at line 226 of file typelist.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1at__impl_1_1at___3_01typelist_3_01_list_8_8_8_01_4_00_01_n_01_4-members.html b/doc/html/structutl_1_1meta_1_1at__impl_1_1at___3_01typelist_3_01_list_8_8_8_01_4_00_01_n_01_4-members.html new file mode 100644 index 0000000..02cdf7c --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1at__impl_1_1at___3_01typelist_3_01_list_8_8_8_01_4_00_01_n_01_4-members.html @@ -0,0 +1,109 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::at_impl::at_< typelist< List... >, N > Member List
    +
    + +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1at__impl_1_1at___3_01typelist_3_01_list_8_8_8_01_4_00_01_n_01_4.html b/doc/html/structutl_1_1meta_1_1at__impl_1_1at___3_01typelist_3_01_list_8_8_8_01_4_00_01_n_01_4.html new file mode 100644 index 0000000..1208ae6 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1at__impl_1_1at___3_01typelist_3_01_list_8_8_8_01_4_00_01_n_01_4.html @@ -0,0 +1,164 @@ + + + + + + + +uTL: utl::meta::at_impl::at_< typelist< List... >, N > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::at_impl::at_< typelist< List... >, N > Struct Template Reference
    +
    +
    + +

    #include <typelist.h>

    + + + + + + +

    +Public Types

    using head_ = at_head_< typelist< void * >::times< N > >
     
    using type = decltype(head_::select(static_cast< add_pointer< List > >(nullptr)...))
     
    +

    Detailed Description

    +

    template<typename... List, index_t N>
    +struct utl::meta::at_impl::at_< typelist< List... >, N >

    + + +

    Definition at line 229 of file typelist.h.

    +

    Member Typedef Documentation

    + +

    ◆ head_

    + +
    +
    +
    +template<typename... List, index_t N>
    + + + + +
    using utl::meta::at_impl::at_< typelist< List... >, N >::head_ = at_head_<typelist<void*>::times<N> >
    +
    + +

    Definition at line 230 of file typelist.h.

    + +
    +
    + +

    ◆ type

    + +
    +
    +
    +template<typename... List, index_t N>
    + + + + +
    using utl::meta::at_impl::at_< typelist< List... >, N >::type = decltype( head_::select(static_cast<add_pointer<List> >(nullptr)...) )
    +
    + +

    Definition at line 233 of file typelist.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1at__impl_1_1at___3_01typelist_3_01_list_8_8_8_01_4_00_01_n_01_4.js b/doc/html/structutl_1_1meta_1_1at__impl_1_1at___3_01typelist_3_01_list_8_8_8_01_4_00_01_n_01_4.js new file mode 100644 index 0000000..92949a0 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1at__impl_1_1at___3_01typelist_3_01_list_8_8_8_01_4_00_01_n_01_4.js @@ -0,0 +1,5 @@ +var structutl_1_1meta_1_1at__impl_1_1at___3_01typelist_3_01_list_8_8_8_01_4_00_01_n_01_4 = +[ + [ "head_", "structutl_1_1meta_1_1at__impl_1_1at___3_01typelist_3_01_list_8_8_8_01_4_00_01_n_01_4.html#ae3269f1784b11ab8789715d3b213e18b", null ], + [ "type", "structutl_1_1meta_1_1at__impl_1_1at___3_01typelist_3_01_list_8_8_8_01_4_00_01_n_01_4.html#ac335ce21f528d54140bdc0273d60b0ac", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1at__impl_1_1at__head__.html b/doc/html/structutl_1_1meta_1_1at__impl_1_1at__head__.html new file mode 100644 index 0000000..5c0dca2 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1at__impl_1_1at__head__.html @@ -0,0 +1,116 @@ + + + + + + + +uTL: utl::meta::at_impl::at_head_<... > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::at_impl::at_head_<... > Struct Template Reference
    +
    +
    + +

    #include <typelist.h>

    +

    Detailed Description

    +

    template<typename ...>
    +struct utl::meta::at_impl::at_head_<... >

    + + +

    Definition at line 215 of file typelist.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1at__impl_1_1at__head___3_01typelist_3_01voids_8_8_8_01_4_01_4-members.html b/doc/html/structutl_1_1meta_1_1at__impl_1_1at__head___3_01typelist_3_01voids_8_8_8_01_4_01_4-members.html new file mode 100644 index 0000000..aab2ce1 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1at__impl_1_1at__head___3_01typelist_3_01voids_8_8_8_01_4_01_4-members.html @@ -0,0 +1,109 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::at_impl::at_head_< typelist< voids... > > Member List
    +
    +
    + +

    This is the complete list of members for utl::meta::at_impl::at_head_< typelist< voids... > >, including all inherited members.

    + + + +
    select(voids..., T *,...)utl::meta::at_impl::at_head_< typelist< voids... > >static
    select(...)utl::meta::at_impl::at_head_< typelist< voids... > >static
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1at__impl_1_1at__head___3_01typelist_3_01voids_8_8_8_01_4_01_4.html b/doc/html/structutl_1_1meta_1_1at__impl_1_1at__head___3_01typelist_3_01voids_8_8_8_01_4_01_4.html new file mode 100644 index 0000000..edc526d --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1at__impl_1_1at__head___3_01typelist_3_01voids_8_8_8_01_4_01_4.html @@ -0,0 +1,203 @@ + + + + + + + +uTL: utl::meta::at_impl::at_head_< typelist< voids... > > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::at_impl::at_head_< typelist< voids... > > Struct Template Reference
    +
    +
    + +

    #include <typelist.h>

    + + + + + + + +

    +Static Public Member Functions

    template<typename T >
    static constexpr T select (voids..., T *,...)
     
    static constexpr nil_ select (...)
     
    +

    Detailed Description

    +

    template<typename... voids>
    +struct utl::meta::at_impl::at_head_< typelist< voids... > >

    + + +

    Definition at line 218 of file typelist.h.

    +

    Member Function Documentation

    + +

    ◆ select() [1/2]

    + +
    +
    +
    +template<typename... voids>
    +
    +template<typename T >
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    static constexpr T utl::meta::at_impl::at_head_< typelist< voids... > >::select (voids... ,
    T * ,
     ... 
    )
    +
    +static
    +
    + +
    +
    + +

    ◆ select() [2/2]

    + +
    +
    +
    +template<typename... voids>
    + + + + + +
    + + + + + + + + +
    static constexpr nil_ utl::meta::at_impl::at_head_< typelist< voids... > >::select ( ...)
    +
    +static
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1at__impl_1_1at__head___3_01typelist_3_01voids_8_8_8_01_4_01_4.js b/doc/html/structutl_1_1meta_1_1at__impl_1_1at__head___3_01typelist_3_01voids_8_8_8_01_4_01_4.js new file mode 100644 index 0000000..84dc7b9 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1at__impl_1_1at__head___3_01typelist_3_01voids_8_8_8_01_4_01_4.js @@ -0,0 +1,5 @@ +var structutl_1_1meta_1_1at__impl_1_1at__head___3_01typelist_3_01voids_8_8_8_01_4_01_4 = +[ + [ "select", "structutl_1_1meta_1_1at__impl_1_1at__head___3_01typelist_3_01voids_8_8_8_01_4_01_4.html#a6bab76042dcae821a961a0a4410c83ff", null ], + [ "select", "structutl_1_1meta_1_1at__impl_1_1at__head___3_01typelist_3_01voids_8_8_8_01_4_01_4.html#a139a326849d5869fbe877260ff3cff31", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1back__impl_1_1back__.html b/doc/html/structutl_1_1meta_1_1back__impl_1_1back__.html new file mode 100644 index 0000000..72daab9 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1back__impl_1_1back__.html @@ -0,0 +1,116 @@ + + + + + + + +uTL: utl::meta::back_impl::back_< List > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::back_impl::back_< List > Struct Template Reference
    +
    +
    + +

    #include <typelist.h>

    +

    Detailed Description

    +

    template<typename List>
    +struct utl::meta::back_impl::back_< List >

    + + +

    Definition at line 281 of file typelist.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1back__impl_1_1back___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4-members.html b/doc/html/structutl_1_1meta_1_1back__impl_1_1back___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4-members.html new file mode 100644 index 0000000..5974535 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1back__impl_1_1back___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::back_impl::back_< typelist< Head, Tail... > > Member List
    +
    +
    + +

    This is the complete list of members for utl::meta::back_impl::back_< typelist< Head, Tail... > >, including all inherited members.

    + + +
    type typedefutl::meta::back_impl::back_< typelist< Head, Tail... > >
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1back__impl_1_1back___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.html b/doc/html/structutl_1_1meta_1_1back__impl_1_1back___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.html new file mode 100644 index 0000000..18409e6 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1back__impl_1_1back___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: utl::meta::back_impl::back_< typelist< Head, Tail... > > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::back_impl::back_< typelist< Head, Tail... > > Struct Template Reference
    +
    +
    + +

    #include <typelist.h>

    + + + + +

    +Public Types

    using type = at_c< typelist< Head, Tail... >, sizeof...(Tail) >
     
    +

    Detailed Description

    +

    template<typename Head, typename... Tail>
    +struct utl::meta::back_impl::back_< typelist< Head, Tail... > >

    + + +

    Definition at line 284 of file typelist.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename Head , typename... Tail>
    + + + + +
    using utl::meta::back_impl::back_< typelist< Head, Tail... > >::type = at_c < typelist<Head, Tail...>, sizeof...(Tail) >
    +
    + +

    Definition at line 287 of file typelist.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1back__impl_1_1back___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.js b/doc/html/structutl_1_1meta_1_1back__impl_1_1back___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.js new file mode 100644 index 0000000..cf277d5 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1back__impl_1_1back___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.js @@ -0,0 +1,4 @@ +var structutl_1_1meta_1_1back__impl_1_1back___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4 = +[ + [ "type", "structutl_1_1meta_1_1back__impl_1_1back___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.html#a8d21b435cc06609d36638fe8de568e4b", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1bind__back-members.html b/doc/html/structutl_1_1meta_1_1bind__back-members.html new file mode 100644 index 0000000..2554017 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1bind__back-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::bind_back< Fn, Ts > Member List
    +
    +
    + +

    This is the complete list of members for utl::meta::bind_back< Fn, Ts >, including all inherited members.

    + + +
    apply typedefutl::meta::bind_back< Fn, Ts >
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1bind__back.html b/doc/html/structutl_1_1meta_1_1bind__back.html new file mode 100644 index 0000000..2175653 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1bind__back.html @@ -0,0 +1,149 @@ + + + + + + + +uTL: utl::meta::bind_back< Fn, Ts > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::bind_back< Fn, Ts > Struct Template Reference
    +
    +
    + +

    #include <invoke.h>

    + + + + + +

    +Public Types

    template<typename... Us>
    using apply = invoke< Fn, Us..., Ts... >
     
    +

    Detailed Description

    +

    template<typename Fn, typename... Ts>
    +struct utl::meta::bind_back< Fn, Ts >

    + +

    Applies the Invocable Fn by binding the arguments Ts to the back of Fn.

    + +

    Definition at line 342 of file invoke.h.

    +

    Member Typedef Documentation

    + +

    ◆ apply

    + +
    +
    +
    +template<typename Fn , typename... Ts>
    +
    +template<typename... Us>
    + + + + +
    using utl::meta::bind_back< Fn, Ts >::apply = invoke<Fn, Us..., Ts...>
    +
    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/invoke.h.
    +
    +

    Definition at line 344 of file invoke.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1bind__back.js b/doc/html/structutl_1_1meta_1_1bind__back.js new file mode 100644 index 0000000..a1deba4 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1bind__back.js @@ -0,0 +1,4 @@ +var structutl_1_1meta_1_1bind__back = +[ + [ "apply", "structutl_1_1meta_1_1bind__back.html#a2f8a5ad9fd3b9e5ed79ace2c18d1ec9a", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1bind__front-members.html b/doc/html/structutl_1_1meta_1_1bind__front-members.html new file mode 100644 index 0000000..c461875 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1bind__front-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::bind_front< Fn, Ts > Member List
    +
    +
    + +

    This is the complete list of members for utl::meta::bind_front< Fn, Ts >, including all inherited members.

    + + +
    apply typedefutl::meta::bind_front< Fn, Ts >
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1bind__front.html b/doc/html/structutl_1_1meta_1_1bind__front.html new file mode 100644 index 0000000..8a4593d --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1bind__front.html @@ -0,0 +1,149 @@ + + + + + + + +uTL: utl::meta::bind_front< Fn, Ts > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::bind_front< Fn, Ts > Struct Template Reference
    +
    +
    + +

    #include <invoke.h>

    + + + + + +

    +Public Types

    template<typename... Us>
    using apply = invoke< Fn, Ts..., Us... >
     
    +

    Detailed Description

    +

    template<typename Fn, typename... Ts>
    +struct utl::meta::bind_front< Fn, Ts >

    + +

    Applies the invocable Fn by binding the arguments Ts to the front of Fn.

    + +

    Definition at line 332 of file invoke.h.

    +

    Member Typedef Documentation

    + +

    ◆ apply

    + +
    +
    +
    +template<typename Fn , typename... Ts>
    +
    +template<typename... Us>
    + + + + +
    using utl::meta::bind_front< Fn, Ts >::apply = invoke<Fn, Ts..., Us...>
    +
    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/invoke.h.
    +
    +

    Definition at line 334 of file invoke.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1bind__front.js b/doc/html/structutl_1_1meta_1_1bind__front.js new file mode 100644 index 0000000..ea4895b --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1bind__front.js @@ -0,0 +1,4 @@ +var structutl_1_1meta_1_1bind__front = +[ + [ "apply", "structutl_1_1meta_1_1bind__front.html#a4247cb2b0a19e3168161dead529c532c", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1cat__impl_1_1cat__.html b/doc/html/structutl_1_1meta_1_1cat__impl_1_1cat__.html new file mode 100644 index 0000000..8c73aa8 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1cat__impl_1_1cat__.html @@ -0,0 +1,116 @@ + + + + + + + +uTL: utl::meta::cat_impl::cat_< Lists > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::cat_impl::cat_< Lists > Struct Template Reference
    +
    +
    + +

    #include <typelist.h>

    +

    Detailed Description

    +

    template<typename... Lists>
    +struct utl::meta::cat_impl::cat_< Lists >

    + + +

    Definition at line 306 of file typelist.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_00_01_ln_8_8_8_01_4.html b/doc/html/structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_00_01_ln_8_8_8_01_4.html new file mode 100644 index 0000000..fb8db6e --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_00_01_ln_8_8_8_01_4.html @@ -0,0 +1,125 @@ + + + + + + + +uTL: utl::meta::cat_impl::cat_< typelist< L1... >, typelist< L2... >, Ln... > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::cat_impl::cat_< typelist< L1... >, typelist< L2... >, Ln... > Struct Template Reference
    +
    +
    + +

    #include <typelist.h>

    +
    +Inheritance diagram for utl::meta::cat_impl::cat_< typelist< L1... >, typelist< L2... >, Ln... >:
    +
    +
    + + +utl::meta::cat_impl::cat_< typelist< L1..., L2... >, Ln... > + +
    +

    Detailed Description

    +

    template<typename... L1, typename... L2, typename... Ln>
    +struct utl::meta::cat_impl::cat_< typelist< L1... >, typelist< L2... >, Ln... >

    + + +

    Definition at line 324 of file typelist.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_00_01_ln_8_8_8_01_4.png b/doc/html/structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_00_01_ln_8_8_8_01_4.png new file mode 100644 index 0000000000000000000000000000000000000000..880aec50454d0d10c6bb59d3f92c81553589767e GIT binary patch literal 1196 zcmeAS@N?(olHy`uVBq!ia0y~yU~B}k12~w0#WAFU@$KB#d0VV_T*J+R?*E_Y z-|ndp&M{@B|JTYR>%2BRKBB$x|0bQ&kD{if8VYr*>{L1F;^#0)=P8TI$sjmGoU`TY z#3f;e`LAB@yL(`(y-nBT^=mgt_LloNS=>8*B~3LmjEzNQ<)vU2H?xmlHFlp&G1|S~ z|H0l(*Tpt{o>H;K`u6`Ew)fM29eyPm8y`GPe98OC>s8i0v^|@**Z1bfJq7IR1UUuZ!L6A=Lm$HdA3ufzVe{%4fcj{Q z|JE`owmjfcWKkAmh+$AGVq%zvj8}2i?B|^*v-#HkvNvq&{yq$xQU?pc0w?RHJ;dDq_^=vRtSny`#rVug}}LUq`G-Kl5mf6iL1wPiQkih1k& z@08c^bLTSw(~!))Ro@)$_g&z>*g2u?_wqL_4*Slj#qYgq#`0@j^86xS*?`hCsp*q{ z1s(d=%W>RQ+u7Rr!B_8WtyR9eu1x0)u{-*S`@GS=Y13X+`G+iARCBMtARuHFM|!UE zEdTqBkJfxy6r*$@Y~iaNxvjf;Er*!SVC^@O=ifudO)J--~Tc}p<~*D5@H zUR?Vit;O=ta+WGkYGPdVywvk@R(NxgMQ`cJqaUkQ9a|oG@3vOdksp=48n(%znpqX; zpKr$HyLmL8Q-0I>`@kLrh7Wu4&d+-){6KPR>!Zbj41Ql#8mCs*mN0-5lFnJ Pv@m$O`njxgN@xNAN0Jtu literal 0 HcmV?d00001 diff --git a/doc/html/structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4-members.html b/doc/html/structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4-members.html new file mode 100644 index 0000000..354daae --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::cat_impl::cat_< typelist< L1... >, typelist< L2... > > Member List
    +
    +
    + +

    This is the complete list of members for utl::meta::cat_impl::cat_< typelist< L1... >, typelist< L2... > >, including all inherited members.

    + + +
    type typedefutl::meta::cat_impl::cat_< typelist< L1... >, typelist< L2... > >
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4.html b/doc/html/structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4.html new file mode 100644 index 0000000..caaf98f --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: utl::meta::cat_impl::cat_< typelist< L1... >, typelist< L2... > > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::cat_impl::cat_< typelist< L1... >, typelist< L2... > > Struct Template Reference
    +
    +
    + +

    #include <typelist.h>

    + + + + +

    +Public Types

    using type = typelist< L1..., L2... >
     
    +

    Detailed Description

    +

    template<typename... L1, typename... L2>
    +struct utl::meta::cat_impl::cat_< typelist< L1... >, typelist< L2... > >

    + + +

    Definition at line 319 of file typelist.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename... L1, typename... L2>
    + + + + +
    using utl::meta::cat_impl::cat_< typelist< L1... >, typelist< L2... > >::type = typelist<L1..., L2...>
    +
    + +

    Definition at line 320 of file typelist.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4.js b/doc/html/structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4.js new file mode 100644 index 0000000..298a431 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4.js @@ -0,0 +1,4 @@ +var structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4 = +[ + [ "type", "structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4.html#a33c0c07037f594dc11a4eb7ecac7a428", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_01_4-members.html b/doc/html/structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_01_4-members.html new file mode 100644 index 0000000..3b5ad02 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::cat_impl::cat_< typelist< L1... > > Member List
    +
    +
    + +

    This is the complete list of members for utl::meta::cat_impl::cat_< typelist< L1... > >, including all inherited members.

    + + +
    type typedefutl::meta::cat_impl::cat_< typelist< L1... > >
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_01_4.html b/doc/html/structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_01_4.html new file mode 100644 index 0000000..3aa9dea --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_01_4.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: utl::meta::cat_impl::cat_< typelist< L1... > > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::cat_impl::cat_< typelist< L1... > > Struct Template Reference
    +
    +
    + +

    #include <typelist.h>

    + + + + +

    +Public Types

    using type = typelist< L1... >
     
    +

    Detailed Description

    +

    template<typename... L1>
    +struct utl::meta::cat_impl::cat_< typelist< L1... > >

    + + +

    Definition at line 314 of file typelist.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename... L1>
    + + + + +
    using utl::meta::cat_impl::cat_< typelist< L1... > >::type = typelist<L1...>
    +
    + +

    Definition at line 315 of file typelist.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_01_4.js b/doc/html/structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_01_4.js new file mode 100644 index 0000000..b362bc7 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_01_4.js @@ -0,0 +1,4 @@ +var structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_01_4 = +[ + [ "type", "structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_01_4.html#a453cfcf1d029d16a35b0f6b3329393e1", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1cat__impl_1_1cat___3_4-members.html b/doc/html/structutl_1_1meta_1_1cat__impl_1_1cat___3_4-members.html new file mode 100644 index 0000000..f53214c --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1cat__impl_1_1cat___3_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::cat_impl::cat_<> Member List
    +
    +
    + +

    This is the complete list of members for utl::meta::cat_impl::cat_<>, including all inherited members.

    + + +
    type typedefutl::meta::cat_impl::cat_<>
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1cat__impl_1_1cat___3_4.html b/doc/html/structutl_1_1meta_1_1cat__impl_1_1cat___3_4.html new file mode 100644 index 0000000..cb01031 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1cat__impl_1_1cat___3_4.html @@ -0,0 +1,142 @@ + + + + + + + +uTL: utl::meta::cat_impl::cat_<> Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::cat_impl::cat_<> Struct Template Reference
    +
    +
    + +

    #include <typelist.h>

    + + + + +

    +Public Types

    using type = typelist<>
     
    +

    Detailed Description

    +

    template<>
    +struct utl::meta::cat_impl::cat_<>

    + + +

    Definition at line 309 of file typelist.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    + + + + +
    using utl::meta::cat_impl::cat_<>::type = typelist<>
    +
    + +

    Definition at line 310 of file typelist.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1cat__impl_1_1cat___3_4.js b/doc/html/structutl_1_1meta_1_1cat__impl_1_1cat___3_4.js new file mode 100644 index 0000000..ab2568a --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1cat__impl_1_1cat___3_4.js @@ -0,0 +1,4 @@ +var structutl_1_1meta_1_1cat__impl_1_1cat___3_4 = +[ + [ "type", "structutl_1_1meta_1_1cat__impl_1_1cat___3_4.html#a23a045e4af6ea5083c04d3d070436938", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1count__if__impl_1_1count__if__.html b/doc/html/structutl_1_1meta_1_1count__if__impl_1_1count__if__.html new file mode 100644 index 0000000..c9cdcac --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1count__if__impl_1_1count__if__.html @@ -0,0 +1,116 @@ + + + + + + + +uTL: utl::meta::count_if_impl::count_if_< typename, typename, size_t > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::count_if_impl::count_if_< typename, typename, size_t > Struct Template Reference
    +
    +
    + +

    #include <typelist.h>

    +

    Detailed Description

    +

    template<typename, typename, size_t>
    +struct utl::meta::count_if_impl::count_if_< typename, typename, size_t >

    + + +

    Definition at line 718 of file typelist.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4-members.html b/doc/html/structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4-members.html new file mode 100644 index 0000000..30bfe8e --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::count_if_impl::count_if_< typelist< Head, Tail... >, Fn, N > Member List
    +
    + +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.html b/doc/html/structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.html new file mode 100644 index 0000000..f1ba5c7 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: utl::meta::count_if_impl::count_if_< typelist< Head, Tail... >, Fn, N > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::count_if_impl::count_if_< typelist< Head, Tail... >, Fn, N > Struct Template Reference
    +
    +
    + +

    #include <typelist.h>

    + + + + +

    +Public Types

    using type = if_< invoke_t< Fn, Head >, eval< count_if_< typelist< Tail... >, Fn, N+1 > >, eval< count_if_< typelist< Tail... >, Fn, N > > >
     
    +

    Detailed Description

    +

    template<typename Head, typename... Tail, typename Fn, size_t N>
    +struct utl::meta::count_if_impl::count_if_< typelist< Head, Tail... >, Fn, N >

    + + +

    Definition at line 721 of file typelist.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename Head , typename... Tail, typename Fn , size_t N>
    + + + + +
    using utl::meta::count_if_impl::count_if_< typelist< Head, Tail... >, Fn, N >::type = if_ < invoke_t<Fn, Head>, eval< count_if_<typelist<Tail...>, Fn, N+1> >, eval< count_if_<typelist<Tail...>, Fn, N> > >
    +
    + +

    Definition at line 732 of file typelist.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.js b/doc/html/structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.js new file mode 100644 index 0000000..2a7e1b4 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.js @@ -0,0 +1,4 @@ +var structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4 = +[ + [ "type", "structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.html#aaa24b23395ae90c9aa56c78b299d1124", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4-members.html b/doc/html/structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4-members.html new file mode 100644 index 0000000..e00270e --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::count_if_impl::count_if_< typelist<>, Fn, N > Member List
    +
    +
    + +

    This is the complete list of members for utl::meta::count_if_impl::count_if_< typelist<>, Fn, N >, including all inherited members.

    + + +
    type typedefutl::meta::count_if_impl::count_if_< typelist<>, Fn, N >
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.html b/doc/html/structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.html new file mode 100644 index 0000000..1129c09 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: utl::meta::count_if_impl::count_if_< typelist<>, Fn, N > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::count_if_impl::count_if_< typelist<>, Fn, N > Struct Template Reference
    +
    +
    + +

    #include <typelist.h>

    + + + + +

    +Public Types

    using type = size_< N >
     
    +

    Detailed Description

    +

    template<typename Fn, size_t N>
    +struct utl::meta::count_if_impl::count_if_< typelist<>, Fn, N >

    + + +

    Definition at line 737 of file typelist.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename Fn , size_t N>
    + + + + +
    using utl::meta::count_if_impl::count_if_< typelist<>, Fn, N >::type = size_<N>
    +
    + +

    Definition at line 738 of file typelist.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.js b/doc/html/structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.js new file mode 100644 index 0000000..e7b62b5 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.js @@ -0,0 +1,4 @@ +var structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4 = +[ + [ "type", "structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.html#a6817148d6cfbde3cbd495deed94bb469", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1__and__.html b/doc/html/structutl_1_1meta_1_1detail_1_1__and__.html new file mode 100644 index 0000000..100307c --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1__and__.html @@ -0,0 +1,116 @@ + + + + + + + +uTL: utl::meta::detail::_and_<... > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::detail::_and_<... > Struct Template Reference
    +
    +
    + +

    #include <operations.h>

    +

    Detailed Description

    +

    template<typename...>
    +struct utl::meta::detail::_and_<... >

    + + +

    Definition at line 76 of file operations.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4.html b/doc/html/structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4.html new file mode 100644 index 0000000..4602ea3 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4.html @@ -0,0 +1,124 @@ + + + + + + + +uTL: utl::meta::detail::_and_< _T1, _T2, _T3, _Tn... > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::detail::_and_< _T1, _T2, _T3, _Tn... > Struct Template Reference
    +
    +
    + +

    #include <operations.h>

    +
    +Inheritance diagram for utl::meta::detail::_and_< _T1, _T2, _T3, _Tn... >:
    +
    +
    + + + +
    +

    Detailed Description

    +

    template<typename _T1, typename _T2, typename _T3, typename... _Tn>
    +struct utl::meta::detail::_and_< _T1, _T2, _T3, _Tn... >

    + + +

    Definition at line 91 of file operations.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4.png b/doc/html/structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4.png new file mode 100644 index 0000000000000000000000000000000000000000..37284f8e5bba92c0e269e20faa45c18c7c6f87bb GIT binary patch literal 939 zcmeAS@N?(olHy`uVBq!ia0y~yV3Y*112~w0q}02Qra(#}z$e7@|Ns9$=8HF9OZyK^ z0J6aNz<~p-op%KmTtM061_w41hrY~>Lo1XTD zZ~ugSeuXu6=I5+R`}I`YllNKYvgfUm_TR7Oy_zBETeflE_cLEs9XxyEOHK9JD_&{Y zX(4sn&p+?KcIIz!+W#3=>2`_FEt^$0TJm{5VlfNvX4A1>=wGA50z$eoG`74qp#n#hBq~%+S_8BZT?Fgfs@5m#haS zrZLE5vQd}%SU$6}!$V2QPk@2b!F3j60nm1L2zC7CnaBIrX^C6Zt=<>=TJGx&z4mj; z+h1(v4%l{59689OW9uaxuN@tf~_M*g%;jRUN^XFm72YPzq+HYg`N>1|D))$Zsg zmV0Wr9K0ur9_UnZZ4ef|s4LjOr*6#R8hvd2`(9I?JZqigcfVy3R;HJyU4LzAyiYT4-uZoL=U(TQUA}qd!5qfEYcnbj zTYly=emCbP-|e?2)^4@QpZ4{erQg#>d0C6L&bJNXV|fuU^W(j1v3EN2wr8a42&gw~ zie1L>VY%e;A6_C04!57xd3|fQ-R&9g>q5TnUd&+ouX7gTkGF_mgN5E<9~T!P!NAYl Z2PZ6__adfcCNO6)c)I$ztaD0e0suWryUYLp literal 0 HcmV?d00001 diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_01_4.html b/doc/html/structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_01_4.html new file mode 100644 index 0000000..a731a04 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_01_4.html @@ -0,0 +1,124 @@ + + + + + + + +uTL: utl::meta::detail::_and_< _T1, _T2 > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::detail::_and_< _T1, _T2 > Struct Template Reference
    +
    +
    + +

    #include <operations.h>

    +
    +Inheritance diagram for utl::meta::detail::_and_< _T1, _T2 >:
    +
    +
    + + + +
    +

    Detailed Description

    +

    template<typename _T1, typename _T2>
    +struct utl::meta::detail::_and_< _T1, _T2 >

    + + +

    Definition at line 87 of file operations.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_01_4.png b/doc/html/structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_01_4.png new file mode 100644 index 0000000000000000000000000000000000000000..ee7e468ee64b247ae8a9735313b92a0f55d9767a GIT binary patch literal 689 zcmeAS@N?(olHy`uVBq!ia0vp^7lAl{gBeI};7C{iq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ096VhdLn;{G&b{0BS%Jr;Ki}&8|6}*_ zoP|7moGz``?bb02y7llld-KktXL2+WCz(uW@|g51Ou#ef{w}XCw{P>cEvcGZ<)wA& zkzcIJ)3+6CRJOiw>pRD0Q)~X@>RR7oo3KfKrMB+NU#tG^Sn*1}f9jIpyB4KS8*JmH zC+5FD7UzGx+vQzphGJIvdZWEAPxP+|73T()zcF3*{>h46&$btr{Fd7)T>D4P^HP{= zh+Y2IyFZ=QPF|vIHSe!%_I>53`0tDNe~PL-Javh5Re7Jv%gtO$p0A=ERXl66J(P?$ zPh|NZXv@%cslcWGc!tMe!M_Z=Z6i6n{#(1cfgi% zfw@O+UwNGQTTy?V{b?tYpRShmb?buPe^)KNx9i@zGv`eH{JD5y5z`F~Zovf?+BlT6 z&oczooZc@HXm3dE}Op84o!Yq=dbn0&E zB(p^&!k4$+$^CO|?VMd)6YImHI?U2$t*~^D)A1|Pvb?qY^H-T%uUXRx%YJx@|OoQ z*F;ZusxiL!>lgEsBAflctGZrI{<~3z(F7i7ik)Z9xLvX@{aW|t{b!pBVESV4boFyt I=akR{0EfgsegFUf literal 0 HcmV?d00001 diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1__and___3_01___t1_01_4.html b/doc/html/structutl_1_1meta_1_1detail_1_1__and___3_01___t1_01_4.html new file mode 100644 index 0000000..4852a36 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1__and___3_01___t1_01_4.html @@ -0,0 +1,124 @@ + + + + + + + +uTL: utl::meta::detail::_and_< _T1 > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::detail::_and_< _T1 > Struct Template Reference
    +
    +
    + +

    #include <operations.h>

    +
    +Inheritance diagram for utl::meta::detail::_and_< _T1 >:
    +
    +
    + + + +
    +

    Detailed Description

    +

    template<typename _T1>
    +struct utl::meta::detail::_and_< _T1 >

    + + +

    Definition at line 83 of file operations.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1__and___3_01___t1_01_4.png b/doc/html/structutl_1_1meta_1_1detail_1_1__and___3_01___t1_01_4.png new file mode 100644 index 0000000000000000000000000000000000000000..85fd93d1d22ab7af5e4eeddaf0ad46feba3cbe92 GIT binary patch literal 534 zcmeAS@N?(olHy`uVBq!ia0vp^n}IlhgBeJsN^N-yq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IXgmwLK5hEy=VoqM;hMS;i7KmS?vfAhHO z_8Lu(Tj#bc;Y>e#>y=E_!RRw*)R-qPS?Q7P*`+>LRdb%k^V;_R=T%;YGQHkoSMhn; zlJ6a5^ERG)Ip^G@D-+JW)bX@`TKfDGj|I1mC;`+CnG z^B5QXfOR`>es{W)Ds%j>g7%@G-4_@4nC_`$w(xtN8~W};^zx_AJ}tkJynAiuw`;X7 z+ivfd-#AsYVR7NH6~}%F?><;5x>)La;PQY=-)BbK1oU?oPrX#W?)Qce%{DCzU=d%+w1Q8w{6m2UHn++>$CJF`vemXEG}kF5NeuxTAcU5 o<<7fH)8{hQc|yGo4zG{w%d7I$F9k$K10#{a)78&qol`;+09M)lR{#J2 literal 0 HcmV?d00001 diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1__and___3_4.html b/doc/html/structutl_1_1meta_1_1detail_1_1__and___3_4.html new file mode 100644 index 0000000..7116e2d --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1__and___3_4.html @@ -0,0 +1,124 @@ + + + + + + + +uTL: utl::meta::detail::_and_<> Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::detail::_and_<> Struct Template Reference
    +
    +
    + +

    #include <operations.h>

    +
    +Inheritance diagram for utl::meta::detail::_and_<>:
    +
    +
    + + + +
    +

    Detailed Description

    +

    template<>
    +struct utl::meta::detail::_and_<>

    + + +

    Definition at line 79 of file operations.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1__and___3_4.png b/doc/html/structutl_1_1meta_1_1detail_1_1__and___3_4.png new file mode 100644 index 0000000000000000000000000000000000000000..6872b41c5b59e8617f93e3cf2ed6ff69ff36139c GIT binary patch literal 530 zcmeAS@N?(olHy`uVBq!ia0vp^Q-C;tgBeJkn7zgYNJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~F7$M945?szJNNFUW(6KLbMwFV{`c}H zt!=omtofXQZRXvuPJ3^Titd>=a}p+*h%2gk$~k#Wvgz@>du8GM$zIy0l(yA`AH1XB zncS0}C3-q1Z<5I&)*$O*FI{<0sVAR&JTGZX_Y_^K>gmkmmHX1u`tlh&&s~kuONw^# zFV%@VG3klo5|xwA9-fohRZ`Q;BpJj%GR)|eTq@Vkxi)Qzm*3||Uro`?{0H1U7%Mn5 z8Tb`hA1E$iuxSx#XrI9JK_G}h&WY=QGeYv=^`&Rdq%kwk=!Qy1tt=_Yy24hgTgDKO6dG3CpYC*Dc}y{Z{VzlJ8tPA#1Vv;c}&` zR}P2Ie06u-*O)@f`-DBU#6K$r|_ZJk&44$rjF6*2UngE5B B=ZpXV literal 0 HcmV?d00001 diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1__or__.html b/doc/html/structutl_1_1meta_1_1detail_1_1__or__.html new file mode 100644 index 0000000..cac6a76 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1__or__.html @@ -0,0 +1,116 @@ + + + + + + + +uTL: utl::meta::detail::_or_<... > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::detail::_or_<... > Struct Template Reference
    +
    +
    + +

    #include <operations.h>

    +

    Detailed Description

    +

    template<typename...>
    +struct utl::meta::detail::_or_<... >

    + + +

    Definition at line 52 of file operations.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4.html b/doc/html/structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4.html new file mode 100644 index 0000000..b7fb3f8 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4.html @@ -0,0 +1,124 @@ + + + + + + + +uTL: utl::meta::detail::_or_< _T1, _T2, _T3, _Tn... > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::detail::_or_< _T1, _T2, _T3, _Tn... > Struct Template Reference
    +
    +
    + +

    #include <operations.h>

    +
    +Inheritance diagram for utl::meta::detail::_or_< _T1, _T2, _T3, _Tn... >:
    +
    +
    + + + +
    +

    Detailed Description

    +

    template<typename _T1, typename _T2, typename _T3, typename... _Tn>
    +struct utl::meta::detail::_or_< _T1, _T2, _T3, _Tn... >

    + + +

    Definition at line 65 of file operations.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4.png b/doc/html/structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4.png new file mode 100644 index 0000000000000000000000000000000000000000..52cf8118bcc6a4b854fd58c704c70e29f2b9362e GIT binary patch literal 865 zcmeAS@N?(olHy`uVBq!ia0y~yU=#qd12~w07M@O|NoCC zf89zra3oINb@j$wOOGVy9W~f9Dah;LUq#QLidv=)m2ifMPq-8&#W1=|dd>0VdHt(^ zsIHHnmM-!6yFz7d_3Pw!9+R>Sv^>LO&Q93;Z&^k0jk=IY=WM@UoOQ|}WRl*_X^P9c zBM;dstbK9md$oXPR#o@6>30s77P_x;SF105^V4cVY4m5i*~(j1Y@1ctwym!u|AwH# z)#fVs6Zt&_FCFG8S~3RRZ@JHMNqXVbFWVdDDExfJlPT6{t@=H!%_huQquka1whs@vPd zu|d0mVVQZqf{+8lEIyeAAa5N5(+(z%2V4r2b6#gRESVBiQSZU#E#h=0lOeI)f{N_~X^=CY1vo+hVwr|@m`3|Nz70gE8r`$b! z`Fw5Haoz|!y~U<0ymxOF&YH}qkz>rPVI%N2Qo-RktANn5m47$wd8^AAY(L94J#Bh0 zlTk0@%J%Eq=Dx6sRhYbWCG*F}lXbsr5Z;=RdWF|R{J6q|*FP`Y1pH1p)}Zq>OVeL< zf{_)=l6@1Ez4KK6>MGoBX){(i-R9gjW#^}awlCTLj!ud`KcT2x+kF|!rIm^Y)=5q1 zHhsdWuvKc)wewrMo|!zmoxIcin^X4oGm5j4Z{|rhY%^9UjXBMk>oS`;)#26eUcj%#i&mqW5bC2zRhOHMDE!^|q S^Dbb1VDNPHb6Mw<&;$TY{eM*e literal 0 HcmV?d00001 diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_01_4.html b/doc/html/structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_01_4.html new file mode 100644 index 0000000..d6905f2 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_01_4.html @@ -0,0 +1,124 @@ + + + + + + + +uTL: utl::meta::detail::_or_< _T1, _T2 > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::detail::_or_< _T1, _T2 > Struct Template Reference
    +
    +
    + +

    #include <operations.h>

    +
    +Inheritance diagram for utl::meta::detail::_or_< _T1, _T2 >:
    +
    +
    + + + +
    +

    Detailed Description

    +

    template<typename _T1, typename _T2>
    +struct utl::meta::detail::_or_< _T1, _T2 >

    + + +

    Definition at line 61 of file operations.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_01_4.png b/doc/html/structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_01_4.png new file mode 100644 index 0000000000000000000000000000000000000000..50542b44d7885da648a2cb32f271bb7c16e9d69b GIT binary patch literal 654 zcmeAS@N?(olHy`uVBq!ia0vp^CxAGBgBeI>Z$8xoq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0WIbIRLn;{G&W+7GqQJv;T>tmo|HpF8 zpRhX#d6-Y_)-en+OKUuMa8FX28Pg1vzx7TolWYW)COzron>fF(?2>h8|CQjNYf_7Y z#XVmw(N_+yz5ns>)-5j5Y7>{(#!BwIvrfb=`c>!`f0r)HZ&C9FB3pO$yz9R5>}SJ? zt0I#^9wATI^v;}md4ER!9u@5P{Q@eSE(Z@ zA`|ob4Sm`KJ6Ewj=oVo7;L^cRq2$5<^Z)};3xj_PM}xW(%K>3UrU#v<(rahT>}6p4 z@ShW^%4_2L`1Z7|2Y%^Q@7iiz{L^wqW}jbd!x~$~q6?xAy1xH^r5(HI>qGI0n)9wc z{{GnNOPzJlbEBx+Jzw^(*00S2b_xToOF3FGe%SZMMs+=L=kya4c(_WjyKa zKRxBtJh?L-fpfAXHOn`D%ABgCp3V{x?fc}Jq~(q7tvySMZRfwcleEfhrQTZBgy5}Z z7h}>_Mll>uQ7S$Aa~Fadw_|D!PC{xWt~$(698r)BT@hW literal 0 HcmV?d00001 diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1__or___3_01___t1_01_4.html b/doc/html/structutl_1_1meta_1_1detail_1_1__or___3_01___t1_01_4.html new file mode 100644 index 0000000..617d5f2 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1__or___3_01___t1_01_4.html @@ -0,0 +1,124 @@ + + + + + + + +uTL: utl::meta::detail::_or_< _T1 > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::detail::_or_< _T1 > Struct Template Reference
    +
    +
    + +

    #include <operations.h>

    +
    +Inheritance diagram for utl::meta::detail::_or_< _T1 >:
    +
    +
    + + + +
    +

    Detailed Description

    +

    template<typename _T1>
    +struct utl::meta::detail::_or_< _T1 >

    + + +

    Definition at line 58 of file operations.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1__or___3_01___t1_01_4.png b/doc/html/structutl_1_1meta_1_1detail_1_1__or___3_01___t1_01_4.png new file mode 100644 index 0000000000000000000000000000000000000000..a5197b672ae9165a5fa400ec3726c8e82e0adf52 GIT binary patch literal 521 zcmeAS@N?(olHy`uVBq!ia0vp^tAIFwgBeKfTPSxPNJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~&hT_`45?szJNI_qVFe!67 zs~6*RD<^fy)~wEzK^!LwvR-JXr5PSj(PUbw<#}((DwRrO$I{#D_lHk{PQuT zswdk!S2YIthI$sMga(^-ty0idRHQk%4D(i7iRUX#qbSIvy%VE9wX za73Z+)nmb9rhTuHq>h?S$ePE%@NbD$gZWCX2fnMADkiUDxQCnj`Rgi>gBX-1K$Y!% z_37=UT9bfZvsU+C+n@iX`=xQn`g^P&+Me$T6<_c$AXfbHoVfF+jds>dk+_z5_eI9e z+k48thMiMQ%KvY@qjlB=&By`W)oe&w#&7ado% zzw*AAxaxTB_mJyZ_v_wF&a$ua{<=zzopr@y~wXgYG?Ukx^*44Kkr>+iFKajaa)XtBgAvCs#e?f6*VyAUhM`@y#n{ c&1`+ZzK$ugrmkGX2^en-p00i_>zopr0NKp*g8%>k literal 0 HcmV?d00001 diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1__or___3_4.html b/doc/html/structutl_1_1meta_1_1detail_1_1__or___3_4.html new file mode 100644 index 0000000..2d56896 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1__or___3_4.html @@ -0,0 +1,124 @@ + + + + + + + +uTL: utl::meta::detail::_or_<> Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::detail::_or_<> Struct Template Reference
    +
    +
    + +

    #include <operations.h>

    +
    +Inheritance diagram for utl::meta::detail::_or_<>:
    +
    +
    + + + +
    +

    Detailed Description

    +

    template<>
    +struct utl::meta::detail::_or_<>

    + + +

    Definition at line 55 of file operations.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1__or___3_4.png b/doc/html/structutl_1_1meta_1_1detail_1_1__or___3_4.png new file mode 100644 index 0000000000000000000000000000000000000000..e80df4b5febba492a11da4b55620c276d8362b4b GIT binary patch literal 519 zcmeAS@N?(olHy`uVBq!ia0vp^-9Q|`!3-qj?8+2@lth3}i0l9V|AEXGZ@!lHADRGU zf$@O@2Ut7r$OE|?B|(0{3_wL7aP?G(5d#C`G*1`DkP61Pb7LnpD+sVv$9=l{|CqLv zsKk~{FQ$c*X>G9=n3N{*K-74%;{laSjzg}KY#u6k&WjVjz3Z;|G{5O2>M(!%`K` z?ZvxK&pBAj*tIzjVr0QYmGe)M(#+Txu2(Yh9CFZGf8D}}d8d!o;S)VigkEzjaNWUB zaftPRupYy_0>%$5+zsk63^os$9&m~?_#>qBOAL*rS$GmSph|D0R#{KUHhoiiH26Bh z|3gn7tY%oAqxaHm@00GDx;giQO3Q9;U$!**>Mg1ByYFXuh3H8{dgi^>&)+H$X_>G4 zXiLWQCRg9vs`J-BvhVtle$_QwS#P#?>ZJSjB{R)ml-kYlzWZyUx9Ro$UEYGs;?u31 zraunqUuo#R^|a?chU(0nGS5%XT9&hyHU7mg`@) qzFGAshs8n#;ulZ%jWcfw{9!0b3^h-fbRiKKYYd*QelF{r5}E*QDdO1x literal 0 HcmV?d00001 diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1compose__.html b/doc/html/structutl_1_1meta_1_1detail_1_1compose__.html new file mode 100644 index 0000000..b4b5806 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1compose__.html @@ -0,0 +1,116 @@ + + + + + + + +uTL: utl::meta::detail::compose_< Fns > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::detail::compose_< Fns > Struct Template Reference
    +
    +
    + +

    #include <invoke.h>

    +

    Detailed Description

    +

    template<typename ... Fns>
    +struct utl::meta::detail::compose_< Fns >

    + + +

    Definition at line 275 of file invoke.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_00_01_fns_8_8_8_01_4-members.html b/doc/html/structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_00_01_fns_8_8_8_01_4-members.html new file mode 100644 index 0000000..af306e1 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_00_01_fns_8_8_8_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::detail::compose_< Fn0, Fns... > Member List
    +
    +
    + +

    This is the complete list of members for utl::meta::detail::compose_< Fn0, Fns... >, including all inherited members.

    + + +
    apply typedefutl::meta::detail::compose_< Fn0, Fns... >
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_00_01_fns_8_8_8_01_4.html b/doc/html/structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_00_01_fns_8_8_8_01_4.html new file mode 100644 index 0000000..d3c4e31 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_00_01_fns_8_8_8_01_4.html @@ -0,0 +1,147 @@ + + + + + + + +uTL: utl::meta::detail::compose_< Fn0, Fns... > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::detail::compose_< Fn0, Fns... > Struct Template Reference
    +
    +
    + +

    #include <invoke.h>

    + + + + + +

    +Public Types

    template<typename ... Args>
    using apply = invoke< Fn0, invoke< compose_< Fns... >, Args... > >
     
    +

    Detailed Description

    +

    template<typename Fn0, typename ... Fns>
    +struct utl::meta::detail::compose_< Fn0, Fns... >

    + + +

    Definition at line 279 of file invoke.h.

    +

    Member Typedef Documentation

    + +

    ◆ apply

    + +
    +
    +
    +template<typename Fn0 , typename ... Fns>
    +
    +template<typename ... Args>
    + + + + +
    using utl::meta::detail::compose_< Fn0, Fns... >::apply = invoke< Fn0, invoke<compose_<Fns...>, Args...> >
    +
    + +

    Definition at line 284 of file invoke.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_00_01_fns_8_8_8_01_4.js b/doc/html/structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_00_01_fns_8_8_8_01_4.js new file mode 100644 index 0000000..d827a71 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_00_01_fns_8_8_8_01_4.js @@ -0,0 +1,4 @@ +var structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_00_01_fns_8_8_8_01_4 = +[ + [ "apply", "structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_00_01_fns_8_8_8_01_4.html#ad26c783fae3d45b81dd443293886206b", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_01_4-members.html b/doc/html/structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_01_4-members.html new file mode 100644 index 0000000..f7617f7 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::detail::compose_< Fn0 > Member List
    +
    +
    + +

    This is the complete list of members for utl::meta::detail::compose_< Fn0 >, including all inherited members.

    + + +
    apply typedefutl::meta::detail::compose_< Fn0 >
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_01_4.html b/doc/html/structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_01_4.html new file mode 100644 index 0000000..997e564 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_01_4.html @@ -0,0 +1,147 @@ + + + + + + + +uTL: utl::meta::detail::compose_< Fn0 > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::detail::compose_< Fn0 > Struct Template Reference
    +
    +
    + +

    #include <invoke.h>

    + + + + + +

    +Public Types

    template<typename... Args>
    using apply = invoke< Fn0, Args... >
     
    +

    Detailed Description

    +

    template<typename Fn0>
    +struct utl::meta::detail::compose_< Fn0 >

    + + +

    Definition at line 288 of file invoke.h.

    +

    Member Typedef Documentation

    + +

    ◆ apply

    + +
    +
    +
    +template<typename Fn0 >
    +
    +template<typename... Args>
    + + + + +
    using utl::meta::detail::compose_< Fn0 >::apply = invoke<Fn0, Args...>
    +
    + +

    Definition at line 290 of file invoke.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_01_4.js b/doc/html/structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_01_4.js new file mode 100644 index 0000000..bd63050 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_01_4.js @@ -0,0 +1,4 @@ +var structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_01_4 = +[ + [ "apply", "structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_01_4.html#aafd319bda715a126343256f18b823f97", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1compose__f__.html b/doc/html/structutl_1_1meta_1_1detail_1_1compose__f__.html new file mode 100644 index 0000000..14c3592 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1compose__f__.html @@ -0,0 +1,116 @@ + + + + + + + +uTL: utl::meta::detail::compose_f_< Fns > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::detail::compose_f_< Fns > Struct Template Reference
    +
    +
    + +

    #include <invoke.h>

    +

    Detailed Description

    +

    template<template< typename... > class... Fns>
    +struct utl::meta::detail::compose_f_< Fns >

    + + +

    Definition at line 255 of file invoke.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_00_01_fns_8_8_8_01_4-members.html b/doc/html/structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_00_01_fns_8_8_8_01_4-members.html new file mode 100644 index 0000000..9c34b2e --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_00_01_fns_8_8_8_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::detail::compose_f_< Fn0, Fns... > Member List
    +
    +
    + +

    This is the complete list of members for utl::meta::detail::compose_f_< Fn0, Fns... >, including all inherited members.

    + + +
    apply typedefutl::meta::detail::compose_f_< Fn0, Fns... >
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_00_01_fns_8_8_8_01_4.html b/doc/html/structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_00_01_fns_8_8_8_01_4.html new file mode 100644 index 0000000..627d88b --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_00_01_fns_8_8_8_01_4.html @@ -0,0 +1,147 @@ + + + + + + + +uTL: utl::meta::detail::compose_f_< Fn0, Fns... > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::detail::compose_f_< Fn0, Fns... > Struct Template Reference
    +
    +
    + +

    #include <invoke.h>

    + + + + + +

    +Public Types

    template<typename... Args>
    using apply = invoke< quote< Fn0 >, invoke< compose_f_< Fns... >, Args... > >
     
    +

    Detailed Description

    +

    template<template< typename... > class Fn0, template< typename... > class... Fns>
    +struct utl::meta::detail::compose_f_< Fn0, Fns... >

    + + +

    Definition at line 260 of file invoke.h.

    +

    Member Typedef Documentation

    + +

    ◆ apply

    + +
    +
    +
    +template<template< typename... > class Fn0, template< typename... > class... Fns>
    +
    +template<typename... Args>
    + + + + +
    using utl::meta::detail::compose_f_< Fn0, Fns... >::apply = invoke< quote<Fn0>, invoke<compose_f_<Fns...>, Args...> >
    +
    + +

    Definition at line 265 of file invoke.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_00_01_fns_8_8_8_01_4.js b/doc/html/structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_00_01_fns_8_8_8_01_4.js new file mode 100644 index 0000000..24cfa28 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_00_01_fns_8_8_8_01_4.js @@ -0,0 +1,4 @@ +var structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_00_01_fns_8_8_8_01_4 = +[ + [ "apply", "structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_00_01_fns_8_8_8_01_4.html#af08d514072a8e41dd5f105de46262142", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_01_4-members.html b/doc/html/structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_01_4-members.html new file mode 100644 index 0000000..112bc6e --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::detail::compose_f_< Fn0 > Member List
    +
    +
    + +

    This is the complete list of members for utl::meta::detail::compose_f_< Fn0 >, including all inherited members.

    + + +
    apply typedefutl::meta::detail::compose_f_< Fn0 >
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_01_4.html b/doc/html/structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_01_4.html new file mode 100644 index 0000000..2190dee --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_01_4.html @@ -0,0 +1,147 @@ + + + + + + + +uTL: utl::meta::detail::compose_f_< Fn0 > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::detail::compose_f_< Fn0 > Struct Template Reference
    +
    +
    + +

    #include <invoke.h>

    + + + + + +

    +Public Types

    template<typename ... Args>
    using apply = invoke< quote< Fn0 >, Args... >
     
    +

    Detailed Description

    +

    template<template< typename... > class Fn0>
    +struct utl::meta::detail::compose_f_< Fn0 >

    + + +

    Definition at line 269 of file invoke.h.

    +

    Member Typedef Documentation

    + +

    ◆ apply

    + +
    +
    +
    +template<template< typename... > class Fn0>
    +
    +template<typename ... Args>
    + + + + +
    using utl::meta::detail::compose_f_< Fn0 >::apply = invoke<quote<Fn0>, Args...>
    +
    + +

    Definition at line 271 of file invoke.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_01_4.js b/doc/html/structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_01_4.js new file mode 100644 index 0000000..a0e40f3 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_01_4.js @@ -0,0 +1,4 @@ +var structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_01_4 = +[ + [ "apply", "structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_01_4.html#a287c03e3a63511803b68d39c4c06927b", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1defer__-members.html b/doc/html/structutl_1_1meta_1_1detail_1_1defer__-members.html new file mode 100644 index 0000000..72ddea7 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1defer__-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::detail::defer_< F, Ts > Member List
    +
    +
    + +

    This is the complete list of members for utl::meta::detail::defer_< F, Ts >, including all inherited members.

    + + +
    type typedefutl::meta::detail::defer_< F, Ts >
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1defer__.html b/doc/html/structutl_1_1meta_1_1detail_1_1defer__.html new file mode 100644 index 0000000..c23ee5e --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1defer__.html @@ -0,0 +1,145 @@ + + + + + + + +uTL: utl::meta::detail::defer_< F, Ts > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::detail::defer_< F, Ts > Struct Template Reference
    +
    +
    + +

    #include <invoke.h>

    + + + + +

    +Public Types

    using type = F< Ts... >
     
    +

    Detailed Description

    +

    template<template< typename... > class F, typename... Ts>
    +struct utl::meta::detail::defer_< F, Ts >

    + + +

    Definition at line 183 of file invoke.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<template< typename... > class F, typename... Ts>
    + + + + +
    using utl::meta::detail::defer_< F, Ts >::type = F<Ts...>
    +
    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/invoke.h.
    +
    +

    Definition at line 184 of file invoke.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1defer__.js b/doc/html/structutl_1_1meta_1_1detail_1_1defer__.js new file mode 100644 index 0000000..bb715f1 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1defer__.js @@ -0,0 +1,4 @@ +var structutl_1_1meta_1_1detail_1_1defer__ = +[ + [ "type", "structutl_1_1meta_1_1detail_1_1defer__.html#ac8e2ede36472a15488ffdb49a6935be2", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1defer__i__-members.html b/doc/html/structutl_1_1meta_1_1detail_1_1defer__i__-members.html new file mode 100644 index 0000000..3598292 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1defer__i__-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::detail::defer_i_< T, F, Is > Member List
    +
    +
    + +

    This is the complete list of members for utl::meta::detail::defer_i_< T, F, Is >, including all inherited members.

    + + +
    type typedefutl::meta::detail::defer_i_< T, F, Is >
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1defer__i__.html b/doc/html/structutl_1_1meta_1_1detail_1_1defer__i__.html new file mode 100644 index 0000000..ba5e610 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1defer__i__.html @@ -0,0 +1,145 @@ + + + + + + + +uTL: utl::meta::detail::defer_i_< T, F, Is > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::detail::defer_i_< T, F, Is > Struct Template Reference
    +
    +
    + +

    #include <invoke.h>

    + + + + +

    +Public Types

    using type = F< Is... >
     
    +

    Detailed Description

    +

    template<typename T, template< T... > class F, T... Is>
    +struct utl::meta::detail::defer_i_< T, F, Is >

    + + +

    Definition at line 188 of file invoke.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename T , template< T... > class F, T... Is>
    + + + + +
    using utl::meta::detail::defer_i_< T, F, Is >::type = F<Is...>
    +
    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/invoke.h.
    +
    +

    Definition at line 189 of file invoke.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1defer__i__.js b/doc/html/structutl_1_1meta_1_1detail_1_1defer__i__.js new file mode 100644 index 0000000..232f910 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1defer__i__.js @@ -0,0 +1,4 @@ +var structutl_1_1meta_1_1detail_1_1defer__i__ = +[ + [ "type", "structutl_1_1meta_1_1detail_1_1defer__i__.html#af8659048a08bb48bae5c0dc3f9595bf7", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1detector-members.html b/doc/html/structutl_1_1meta_1_1detail_1_1detector-members.html new file mode 100644 index 0000000..aed98fb --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1detector-members.html @@ -0,0 +1,109 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::detail::detector< Default, AlwaysVoid, Op, Args > Member List
    +
    + +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1detector.html b/doc/html/structutl_1_1meta_1_1detail_1_1detector.html new file mode 100644 index 0000000..1650f27 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1detector.html @@ -0,0 +1,164 @@ + + + + + + + +uTL: utl::meta::detail::detector< Default, AlwaysVoid, Op, Args > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::detail::detector< Default, AlwaysVoid, Op, Args > Struct Template Reference
    +
    +
    + +

    #include <detection.h>

    + + + + + + +

    +Public Types

    using detected = false_
     
    using type = Default
     
    +

    Detailed Description

    +

    template<typename Default, typename AlwaysVoid, template< typename... > class Op, typename... Args>
    +struct utl::meta::detail::detector< Default, AlwaysVoid, Op, Args >

    + + +

    Definition at line 76 of file detection.h.

    +

    Member Typedef Documentation

    + +

    ◆ detected

    + +
    +
    +
    +template<typename Default , typename AlwaysVoid , template< typename... > class Op, typename... Args>
    + + + + +
    using utl::meta::detail::detector< Default, AlwaysVoid, Op, Args >::detected = false_
    +
    + +

    Definition at line 77 of file detection.h.

    + +
    +
    + +

    ◆ type

    + +
    +
    +
    +template<typename Default , typename AlwaysVoid , template< typename... > class Op, typename... Args>
    + + + + +
    using utl::meta::detail::detector< Default, AlwaysVoid, Op, Args >::type = Default
    +
    + +

    Definition at line 78 of file detection.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1detector.js b/doc/html/structutl_1_1meta_1_1detail_1_1detector.js new file mode 100644 index 0000000..388ba93 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1detector.js @@ -0,0 +1,5 @@ +var structutl_1_1meta_1_1detail_1_1detector = +[ + [ "detected", "structutl_1_1meta_1_1detail_1_1detector.html#a8090990f11c250f679b44a6fd48f8114", null ], + [ "type", "structutl_1_1meta_1_1detail_1_1detector.html#a747c70e71225be5ecaa6d20edce5512b", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1detector_3_01_default_00_01void__t_3_01_op_3_01_args_8_8_8_01_4_014c7e3230400bd80d9ca2cd7241031cf.html b/doc/html/structutl_1_1meta_1_1detail_1_1detector_3_01_default_00_01void__t_3_01_op_3_01_args_8_8_8_01_4_014c7e3230400bd80d9ca2cd7241031cf.html new file mode 100644 index 0000000..c29cba3 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1detector_3_01_default_00_01void__t_3_01_op_3_01_args_8_8_8_01_4_014c7e3230400bd80d9ca2cd7241031cf.html @@ -0,0 +1,109 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::detail::detector< Default, void_t< Op< Args... > >, Op, Args... > Member List
    +
    + +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1detector_3_01_default_00_01void__t_3_01_op_3_01_args_8_8_8_01_4_0c35bdbd19f56980c0b5ee6d490bfb634.html b/doc/html/structutl_1_1meta_1_1detail_1_1detector_3_01_default_00_01void__t_3_01_op_3_01_args_8_8_8_01_4_0c35bdbd19f56980c0b5ee6d490bfb634.html new file mode 100644 index 0000000..74ec4e7 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1detector_3_01_default_00_01void__t_3_01_op_3_01_args_8_8_8_01_4_0c35bdbd19f56980c0b5ee6d490bfb634.html @@ -0,0 +1,164 @@ + + + + + + + +uTL: utl::meta::detail::detector< Default, void_t< Op< Args... > >, Op, Args... > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::detail::detector< Default, void_t< Op< Args... > >, Op, Args... > Struct Template Reference
    +
    +
    + +

    #include <detection.h>

    + + + + + + +

    +Public Types

    using detected = true_
     
    using type = Op< Args... >
     
    +

    Detailed Description

    +

    template<typename Default, template< typename... > class Op, typename... Args>
    +struct utl::meta::detail::detector< Default, void_t< Op< Args... > >, Op, Args... >

    + + +

    Definition at line 83 of file detection.h.

    +

    Member Typedef Documentation

    + +

    ◆ detected

    + +
    +
    +
    +template<typename Default , template< typename... > class Op, typename... Args>
    + + + + +
    using utl::meta::detail::detector< Default, void_t< Op< Args... > >, Op, Args... >::detected = true_
    +
    + +

    Definition at line 84 of file detection.h.

    + +
    +
    + +

    ◆ type

    + +
    +
    +
    +template<typename Default , template< typename... > class Op, typename... Args>
    + + + + +
    using utl::meta::detail::detector< Default, void_t< Op< Args... > >, Op, Args... >::type = Op<Args...>
    +
    + +

    Definition at line 85 of file detection.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1detector_3_01_default_00_01void__t_3_01_op_3_01_args_8_8_8_01_4_0c35bdbd19f56980c0b5ee6d490bfb634.js b/doc/html/structutl_1_1meta_1_1detail_1_1detector_3_01_default_00_01void__t_3_01_op_3_01_args_8_8_8_01_4_0c35bdbd19f56980c0b5ee6d490bfb634.js new file mode 100644 index 0000000..906e493 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1detector_3_01_default_00_01void__t_3_01_op_3_01_args_8_8_8_01_4_0c35bdbd19f56980c0b5ee6d490bfb634.js @@ -0,0 +1,5 @@ +var structutl_1_1meta_1_1detail_1_1detector_3_01_default_00_01void__t_3_01_op_3_01_args_8_8_8_01_4_0c35bdbd19f56980c0b5ee6d490bfb634 = +[ + [ "detected", "structutl_1_1meta_1_1detail_1_1detector_3_01_default_00_01void__t_3_01_op_3_01_args_8_8_8_01_4_0c35bdbd19f56980c0b5ee6d490bfb634.html#ac8aebc89aa52ef6bde346c593a8feb74", null ], + [ "type", "structutl_1_1meta_1_1detail_1_1detector_3_01_default_00_01void__t_3_01_op_3_01_args_8_8_8_01_4_0c35bdbd19f56980c0b5ee6d490bfb634.html#af9cba657766ddb15348043a15c5bc234", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1if__c__-members.html b/doc/html/structutl_1_1meta_1_1detail_1_1if__c__-members.html new file mode 100644 index 0000000..65f1cb1 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1if__c__-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::detail::if_c_< If,... > Member List
    +
    +
    + +

    This is the complete list of members for utl::meta::detail::if_c_< If,... >, including all inherited members.

    + + +
    type typedefutl::meta::detail::if_c_< If,... >
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1if__c__.html b/doc/html/structutl_1_1meta_1_1detail_1_1if__c__.html new file mode 100644 index 0000000..1bf13a8 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1if__c__.html @@ -0,0 +1,126 @@ + + + + + + + +uTL: utl::meta::detail::if_c_< If,... > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::detail::if_c_< If,... > Struct Template Reference
    +
    +
    + +

    #include <selection.h>

    + + + + + +

    +Public Types

    using type = nil_
     avoid ill formed result More...
     
    +

    Detailed Description

    +

    template<bool If, typename...>
    +struct utl::meta::detail::if_c_< If,... >

    + + +

    Definition at line 44 of file selection.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1if__c__.js b/doc/html/structutl_1_1meta_1_1detail_1_1if__c__.js new file mode 100644 index 0000000..4c2305b --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1if__c__.js @@ -0,0 +1,4 @@ +var structutl_1_1meta_1_1detail_1_1if__c__ = +[ + [ "type", "group__type.html#gaefeff9de7bff8811e49692343ce6187e", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1if__c___3_01false_00_01_then_00_01_else_01_4-members.html b/doc/html/structutl_1_1meta_1_1detail_1_1if__c___3_01false_00_01_then_00_01_else_01_4-members.html new file mode 100644 index 0000000..2e306e2 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1if__c___3_01false_00_01_then_00_01_else_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::detail::if_c_< false, Then, Else > Member List
    +
    +
    + +

    This is the complete list of members for utl::meta::detail::if_c_< false, Then, Else >, including all inherited members.

    + + +
    type typedefutl::meta::detail::if_c_< false, Then, Else >
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1if__c___3_01false_00_01_then_00_01_else_01_4.html b/doc/html/structutl_1_1meta_1_1detail_1_1if__c___3_01false_00_01_then_00_01_else_01_4.html new file mode 100644 index 0000000..56ea169 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1if__c___3_01false_00_01_then_00_01_else_01_4.html @@ -0,0 +1,125 @@ + + + + + + + +uTL: utl::meta::detail::if_c_< false, Then, Else > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::detail::if_c_< false, Then, Else > Struct Template Reference
    +
    +
    + +

    #include <selection.h>

    + + + + +

    +Public Types

    using type = Else
     
    +

    Detailed Description

    +

    template<typename Then, typename Else>
    +struct utl::meta::detail::if_c_< false, Then, Else >

    + + +

    Definition at line 56 of file selection.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1if__c___3_01false_00_01_then_00_01_else_01_4.js b/doc/html/structutl_1_1meta_1_1detail_1_1if__c___3_01false_00_01_then_00_01_else_01_4.js new file mode 100644 index 0000000..e5c0f21 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1if__c___3_01false_00_01_then_00_01_else_01_4.js @@ -0,0 +1,4 @@ +var structutl_1_1meta_1_1detail_1_1if__c___3_01false_00_01_then_00_01_else_01_4 = +[ + [ "type", "group__type.html#ga2fbed149992c081ac85eefaf63a388ca", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_00_01_else_01_4-members.html b/doc/html/structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_00_01_else_01_4-members.html new file mode 100644 index 0000000..c4f3f26 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_00_01_else_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::detail::if_c_< true, Then, Else > Member List
    +
    +
    + +

    This is the complete list of members for utl::meta::detail::if_c_< true, Then, Else >, including all inherited members.

    + + +
    type typedefutl::meta::detail::if_c_< true, Then, Else >
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_00_01_else_01_4.html b/doc/html/structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_00_01_else_01_4.html new file mode 100644 index 0000000..ea9b810 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_00_01_else_01_4.html @@ -0,0 +1,125 @@ + + + + + + + +uTL: utl::meta::detail::if_c_< true, Then, Else > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::detail::if_c_< true, Then, Else > Struct Template Reference
    +
    +
    + +

    #include <selection.h>

    + + + + +

    +Public Types

    using type = Then
     
    +

    Detailed Description

    +

    template<typename Then, typename Else>
    +struct utl::meta::detail::if_c_< true, Then, Else >

    + + +

    Definition at line 52 of file selection.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_00_01_else_01_4.js b/doc/html/structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_00_01_else_01_4.js new file mode 100644 index 0000000..6f52ac5 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_00_01_else_01_4.js @@ -0,0 +1,4 @@ +var structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_00_01_else_01_4 = +[ + [ "type", "group__type.html#ga15100ac40785819517c5defacb19915c", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_01_4-members.html b/doc/html/structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_01_4-members.html new file mode 100644 index 0000000..1698e02 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::detail::if_c_< true, Then > Member List
    +
    +
    + +

    This is the complete list of members for utl::meta::detail::if_c_< true, Then >, including all inherited members.

    + + +
    type typedefutl::meta::detail::if_c_< true, Then >
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_01_4.html b/doc/html/structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_01_4.html new file mode 100644 index 0000000..e42e09d --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_01_4.html @@ -0,0 +1,125 @@ + + + + + + + +uTL: utl::meta::detail::if_c_< true, Then > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::detail::if_c_< true, Then > Struct Template Reference
    +
    +
    + +

    #include <selection.h>

    + + + + +

    +Public Types

    using type = Then
     
    +

    Detailed Description

    +

    template<typename Then>
    +struct utl::meta::detail::if_c_< true, Then >

    + + +

    Definition at line 48 of file selection.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_01_4.js b/doc/html/structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_01_4.js new file mode 100644 index 0000000..03277a6 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_01_4.js @@ -0,0 +1,4 @@ +var structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_01_4 = +[ + [ "type", "group__type.html#gaa7f24607990e92d8263246fc5f7003b7", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1is__applicable__-members.html b/doc/html/structutl_1_1meta_1_1detail_1_1is__applicable__-members.html new file mode 100644 index 0000000..3d12c5c --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1is__applicable__-members.html @@ -0,0 +1,110 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::detail::is_applicable_< F, T > Member List
    +
    +
    + +

    This is the complete list of members for utl::meta::detail::is_applicable_< F, T >, including all inherited members.

    + + + + +
    check(int)utl::meta::detail::is_applicable_< F, T >static
    check(...)utl::meta::detail::is_applicable_< F, T >static
    type typedefutl::meta::detail::is_applicable_< F, T >
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1is__applicable__.html b/doc/html/structutl_1_1meta_1_1detail_1_1is__applicable__.html new file mode 100644 index 0000000..f58e68a --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1is__applicable__.html @@ -0,0 +1,217 @@ + + + + + + + +uTL: utl::meta::detail::is_applicable_< F, T > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::detail::is_applicable_< F, T > Struct Template Reference
    +
    +
    + +

    #include <invoke.h>

    + + + + +

    +Public Types

    using type = decltype(check< F >(0))
     
    + + + + + + + +

    +Static Public Member Functions

    template<template< typename... > class G, typename = G<T...>>
    static true_ check (int)
     
    template<template< typename... > class>
    static false_ check (...)
     
    +

    Detailed Description

    +

    template<template< typename... > class F, typename... T>
    +struct utl::meta::detail::is_applicable_< F, T >

    + + +

    Definition at line 119 of file invoke.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<template< typename... > class F, typename... T>
    + + + + +
    using utl::meta::detail::is_applicable_< F, T >::type = decltype(check<F>(0))
    +
    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/invoke.h.
    +
    +

    Definition at line 125 of file invoke.h.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ check() [1/2]

    + +
    +
    +
    +template<template< typename... > class F, typename... T>
    +
    +template<template< typename... > class G, typename = G<T...>>
    + + + + + +
    + + + + + + + + +
    static true_ utl::meta::detail::is_applicable_< F, T >::check (int )
    +
    +static
    +
    +
    + +

    ◆ check() [2/2]

    + +
    +
    +
    +template<template< typename... > class F, typename... T>
    +
    +template<template< typename... > class>
    + + + + + +
    + + + + + + + + +
    static false_ utl::meta::detail::is_applicable_< F, T >::check ( ...)
    +
    +static
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1is__applicable__.js b/doc/html/structutl_1_1meta_1_1detail_1_1is__applicable__.js new file mode 100644 index 0000000..73e7f0c --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1is__applicable__.js @@ -0,0 +1,6 @@ +var structutl_1_1meta_1_1detail_1_1is__applicable__ = +[ + [ "type", "structutl_1_1meta_1_1detail_1_1is__applicable__.html#ababc9a374e6321fb8ded4b2dde19795c", null ], + [ "check", "structutl_1_1meta_1_1detail_1_1is__applicable__.html#abdbf481cbdd5183b42e3cabdb77d282a", null ], + [ "check", "structutl_1_1meta_1_1detail_1_1is__applicable__.html#a5095a52a4bdbf224a73c575e402ac797", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1is__applicable__i__-members.html b/doc/html/structutl_1_1meta_1_1detail_1_1is__applicable__i__-members.html new file mode 100644 index 0000000..00e4654 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1is__applicable__i__-members.html @@ -0,0 +1,110 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::detail::is_applicable_i_< T, F, Is > Member List
    +
    + +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1is__applicable__i__.html b/doc/html/structutl_1_1meta_1_1detail_1_1is__applicable__i__.html new file mode 100644 index 0000000..04813d6 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1is__applicable__i__.html @@ -0,0 +1,217 @@ + + + + + + + +uTL: utl::meta::detail::is_applicable_i_< T, F, Is > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::detail::is_applicable_i_< T, F, Is > Struct Template Reference
    +
    +
    + +

    #include <invoke.h>

    + + + + +

    +Public Types

    using type = decltype(check< T, F >(0))
     
    + + + + + + + +

    +Static Public Member Functions

    template<typename TT , template< TT... > class G, typename = G<Is...>>
    static true_ check (int)
     
    template<typename TT , template< TT... > class G>
    static false_ check (...)
     
    +

    Detailed Description

    +

    template<typename T, template< T... > class F, T... Is>
    +struct utl::meta::detail::is_applicable_i_< T, F, Is >

    + + +

    Definition at line 149 of file invoke.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename T , template< T... > class F, T... Is>
    + + + + +
    using utl::meta::detail::is_applicable_i_< T, F, Is >::type = decltype(check<T, F>(0))
    +
    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/invoke.h.
    +
    +

    Definition at line 155 of file invoke.h.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ check() [1/2]

    + +
    +
    +
    +template<typename T , template< T... > class F, T... Is>
    +
    +template<typename TT , template< TT... > class G, typename = G<Is...>>
    + + + + + +
    + + + + + + + + +
    static true_ utl::meta::detail::is_applicable_i_< T, F, Is >::check (int )
    +
    +static
    +
    +
    + +

    ◆ check() [2/2]

    + +
    +
    +
    +template<typename T , template< T... > class F, T... Is>
    +
    +template<typename TT , template< TT... > class G>
    + + + + + +
    + + + + + + + + +
    static false_ utl::meta::detail::is_applicable_i_< T, F, Is >::check ( ...)
    +
    +static
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1is__applicable__i__.js b/doc/html/structutl_1_1meta_1_1detail_1_1is__applicable__i__.js new file mode 100644 index 0000000..e4bad3b --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1is__applicable__i__.js @@ -0,0 +1,6 @@ +var structutl_1_1meta_1_1detail_1_1is__applicable__i__ = +[ + [ "type", "structutl_1_1meta_1_1detail_1_1is__applicable__i__.html#ac512fdc9db578f9244b861f84c177ca7", null ], + [ "check", "structutl_1_1meta_1_1detail_1_1is__applicable__i__.html#ac03023fb86dba10d9dfbd0ba553daccd", null ], + [ "check", "structutl_1_1meta_1_1detail_1_1is__applicable__i__.html#a680891ad1380504fa6917cb5f0040db5", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1is__applicable__q__-members.html b/doc/html/structutl_1_1meta_1_1detail_1_1is__applicable__q__-members.html new file mode 100644 index 0000000..3406ec6 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1is__applicable__q__-members.html @@ -0,0 +1,110 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::detail::is_applicable_q_< F, T > Member List
    +
    + +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1is__applicable__q__.html b/doc/html/structutl_1_1meta_1_1detail_1_1is__applicable__q__.html new file mode 100644 index 0000000..42a8552 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1is__applicable__q__.html @@ -0,0 +1,217 @@ + + + + + + + +uTL: utl::meta::detail::is_applicable_q_< F, T > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::detail::is_applicable_q_< F, T > Struct Template Reference
    +
    +
    + +

    #include <invoke.h>

    + + + + +

    +Public Types

    using type = if_< not_same_< nil_, decltype(check< F >(0)) >, true_, false_ >
     
    + + + + + + + +

    +Static Public Member Functions

    template<typename G , typename Ret = invoke_t<G, T...>>
    static Ret check (int)
     
    template<typename... >
    static nil_ check (...)
     
    +

    Detailed Description

    +

    template<typename F, typename... T>
    +struct utl::meta::detail::is_applicable_q_< F, T >

    + + +

    Definition at line 129 of file invoke.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename F , typename... T>
    + + + + +
    using utl::meta::detail::is_applicable_q_< F, T >::type = if_ < not_same_< nil_, decltype(check<F>(0)) >, true_, false_ >
    +
    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/invoke.h.
    +
    +

    Definition at line 140 of file invoke.h.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ check() [1/2]

    + +
    +
    +
    +template<typename F , typename... T>
    +
    +template<typename G , typename Ret = invoke_t<G, T...>>
    + + + + + +
    + + + + + + + + +
    static Ret utl::meta::detail::is_applicable_q_< F, T >::check (int )
    +
    +static
    +
    +
    + +

    ◆ check() [2/2]

    + +
    +
    +
    +template<typename F , typename... T>
    +
    +template<typename... >
    + + + + + +
    + + + + + + + + +
    static nil_ utl::meta::detail::is_applicable_q_< F, T >::check ( ...)
    +
    +static
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1is__applicable__q__.js b/doc/html/structutl_1_1meta_1_1detail_1_1is__applicable__q__.js new file mode 100644 index 0000000..26a2d05 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1is__applicable__q__.js @@ -0,0 +1,6 @@ +var structutl_1_1meta_1_1detail_1_1is__applicable__q__ = +[ + [ "type", "structutl_1_1meta_1_1detail_1_1is__applicable__q__.html#a175161a76c46c8da1d170e329d17ce43", null ], + [ "check", "structutl_1_1meta_1_1detail_1_1is__applicable__q__.html#a6d258d626fb7889506d8d0c9c6ab14b1", null ], + [ "check", "structutl_1_1meta_1_1detail_1_1is__applicable__q__.html#ac96d763225bd114b68b208211818d788", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1when__.html b/doc/html/structutl_1_1meta_1_1detail_1_1when__.html new file mode 100644 index 0000000..6810545 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1when__.html @@ -0,0 +1,116 @@ + + + + + + + +uTL: utl::meta::detail::when_< If > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::detail::when_< If > Struct Template Reference
    +
    +
    + +

    #include <sfinae.h>

    +

    Detailed Description

    +

    template<bool If>
    +struct utl::meta::detail::when_< If >

    + + +

    Definition at line 41 of file sfinae.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1when___3_01true_01_4-members.html b/doc/html/structutl_1_1meta_1_1detail_1_1when___3_01true_01_4-members.html new file mode 100644 index 0000000..ed33db5 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1when___3_01true_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::detail::when_< true > Member List
    +
    +
    + +

    This is the complete list of members for utl::meta::detail::when_< true >, including all inherited members.

    + + +
    type typedefutl::meta::detail::when_< true >
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1when___3_01true_01_4.html b/doc/html/structutl_1_1meta_1_1detail_1_1when___3_01true_01_4.html new file mode 100644 index 0000000..85efba2 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1when___3_01true_01_4.html @@ -0,0 +1,142 @@ + + + + + + + +uTL: utl::meta::detail::when_< true > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::detail::when_< true > Struct Template Reference
    +
    +
    + +

    #include <sfinae.h>

    + + + + +

    +Public Types

    using type = void
     
    +

    Detailed Description

    +

    template<>
    +struct utl::meta::detail::when_< true >

    + + +

    Definition at line 42 of file sfinae.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    + + + + +
    using utl::meta::detail::when_< true >::type = void
    +
    + +

    Definition at line 42 of file sfinae.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1detail_1_1when___3_01true_01_4.js b/doc/html/structutl_1_1meta_1_1detail_1_1when___3_01true_01_4.js new file mode 100644 index 0000000..4ae83aa --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1detail_1_1when___3_01true_01_4.js @@ -0,0 +1,4 @@ +var structutl_1_1meta_1_1detail_1_1when___3_01true_01_4 = +[ + [ "type", "structutl_1_1meta_1_1detail_1_1when___3_01true_01_4.html#a2d6b156939c43f8236a109310733323c", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1filter__impl_1_1filter__.html b/doc/html/structutl_1_1meta_1_1filter__impl_1_1filter__.html new file mode 100644 index 0000000..abdc23a --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1filter__impl_1_1filter__.html @@ -0,0 +1,116 @@ + + + + + + + +uTL: utl::meta::filter_impl::filter_< typename, typename, typename > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::filter_impl::filter_< typename, typename, typename > Struct Template Reference
    +
    +
    + +

    #include <typelist.h>

    +

    Detailed Description

    +

    template<typename, typename, typename>
    +struct utl::meta::filter_impl::filter_< typename, typename, typename >

    + + +

    Definition at line 768 of file typelist.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_l_01_4-members.html b/doc/html/structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_l_01_4-members.html new file mode 100644 index 0000000..6fda814 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_l_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::filter_impl::filter_< typelist< Head, Tail... >, Fn, L > Member List
    +
    +
    + +

    This is the complete list of members for utl::meta::filter_impl::filter_< typelist< Head, Tail... >, Fn, L >, including all inherited members.

    + + +
    type typedefutl::meta::filter_impl::filter_< typelist< Head, Tail... >, Fn, L >
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_l_01_4.html b/doc/html/structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_l_01_4.html new file mode 100644 index 0000000..dd9dc01 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_l_01_4.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: utl::meta::filter_impl::filter_< typelist< Head, Tail... >, Fn, L > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::filter_impl::filter_< typelist< Head, Tail... >, Fn, L > Struct Template Reference
    +
    +
    + +

    #include <typelist.h>

    + + + + +

    +Public Types

    using type = if_< invoke_t< Fn, Head >, eval< filter_< typelist< Tail... >, Fn, cat< L, typelist< Head > >> >, eval< filter_< typelist< Tail... >, Fn, L > > >
     
    +

    Detailed Description

    +

    template<typename Head, typename... Tail, typename Fn, typename L>
    +struct utl::meta::filter_impl::filter_< typelist< Head, Tail... >, Fn, L >

    + + +

    Definition at line 771 of file typelist.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename Head , typename... Tail, typename Fn , typename L >
    + + + + +
    using utl::meta::filter_impl::filter_< typelist< Head, Tail... >, Fn, L >::type = if_ < invoke_t <Fn, Head>, eval<filter_<typelist<Tail...>, Fn, cat<L, typelist<Head> >> >, eval<filter_<typelist<Tail...>, Fn, L> > >
    +
    + +

    Definition at line 778 of file typelist.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_l_01_4.js b/doc/html/structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_l_01_4.js new file mode 100644 index 0000000..a987050 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_l_01_4.js @@ -0,0 +1,4 @@ +var structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_l_01_4 = +[ + [ "type", "structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_l_01_4.html#a8cb888a78e40c7ce91d286e6f5153f2f", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_4_00_01_fn_00_01_l_01_4-members.html b/doc/html/structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_4_00_01_fn_00_01_l_01_4-members.html new file mode 100644 index 0000000..ca09734 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_4_00_01_fn_00_01_l_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::filter_impl::filter_< typelist<>, Fn, L > Member List
    +
    +
    + +

    This is the complete list of members for utl::meta::filter_impl::filter_< typelist<>, Fn, L >, including all inherited members.

    + + +
    type typedefutl::meta::filter_impl::filter_< typelist<>, Fn, L >
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_4_00_01_fn_00_01_l_01_4.html b/doc/html/structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_4_00_01_fn_00_01_l_01_4.html new file mode 100644 index 0000000..3b2b12b --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_4_00_01_fn_00_01_l_01_4.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: utl::meta::filter_impl::filter_< typelist<>, Fn, L > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::filter_impl::filter_< typelist<>, Fn, L > Struct Template Reference
    +
    +
    + +

    #include <typelist.h>

    + + + + +

    +Public Types

    using type = L
     
    +

    Detailed Description

    +

    template<typename Fn, typename L>
    +struct utl::meta::filter_impl::filter_< typelist<>, Fn, L >

    + + +

    Definition at line 783 of file typelist.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename Fn , typename L >
    + + + + +
    using utl::meta::filter_impl::filter_< typelist<>, Fn, L >::type = L
    +
    + +

    Definition at line 784 of file typelist.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_4_00_01_fn_00_01_l_01_4.js b/doc/html/structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_4_00_01_fn_00_01_l_01_4.js new file mode 100644 index 0000000..0b76516 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_4_00_01_fn_00_01_l_01_4.js @@ -0,0 +1,4 @@ +var structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_4_00_01_fn_00_01_l_01_4 = +[ + [ "type", "structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_4_00_01_fn_00_01_l_01_4.html#afdefe3c45a1bf1d8b5419014a16dc80e", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1find__if__impl_1_1find__if__.html b/doc/html/structutl_1_1meta_1_1find__if__impl_1_1find__if__.html new file mode 100644 index 0000000..2620b75 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1find__if__impl_1_1find__if__.html @@ -0,0 +1,116 @@ + + + + + + + +uTL: utl::meta::find_if_impl::find_if_< typename, typename, index_t > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::find_if_impl::find_if_< typename, typename, index_t > Struct Template Reference
    +
    +
    + +

    #include <typelist.h>

    +

    Detailed Description

    +

    template<typename, typename, index_t>
    +struct utl::meta::find_if_impl::find_if_< typename, typename, index_t >

    + + +

    Definition at line 622 of file typelist.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4-members.html b/doc/html/structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4-members.html new file mode 100644 index 0000000..8c67dba --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::find_if_impl::find_if_< typelist< Head, Tail... >, Fn, N > Member List
    +
    + +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.html b/doc/html/structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.html new file mode 100644 index 0000000..d7622c5 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: utl::meta::find_if_impl::find_if_< typelist< Head, Tail... >, Fn, N > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::find_if_impl::find_if_< typelist< Head, Tail... >, Fn, N > Struct Template Reference
    +
    +
    + +

    #include <typelist.h>

    + + + + +

    +Public Types

    using type = if_< invoke_t< Fn, Head >, index_< N >, eval< find_if_< typelist< Tail... >, Fn, N+1 > > >
     
    +

    Detailed Description

    +

    template<typename Head, typename... Tail, typename Fn, index_t N>
    +struct utl::meta::find_if_impl::find_if_< typelist< Head, Tail... >, Fn, N >

    + + +

    Definition at line 625 of file typelist.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename Head , typename... Tail, typename Fn , index_t N>
    + + + + +
    using utl::meta::find_if_impl::find_if_< typelist< Head, Tail... >, Fn, N >::type = if_ < invoke_t<Fn, Head>, index_<N>, eval<find_if_< typelist<Tail...>, Fn, N+1> > >
    +
    + +

    Definition at line 633 of file typelist.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.js b/doc/html/structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.js new file mode 100644 index 0000000..2441941 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.js @@ -0,0 +1,4 @@ +var structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4 = +[ + [ "type", "structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.html#aa3109a5803c72b9688b928a72d357982", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4-members.html b/doc/html/structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4-members.html new file mode 100644 index 0000000..ac1cd9d --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::find_if_impl::find_if_< typelist<>, Fn, N > Member List
    +
    +
    + +

    This is the complete list of members for utl::meta::find_if_impl::find_if_< typelist<>, Fn, N >, including all inherited members.

    + + +
    type typedefutl::meta::find_if_impl::find_if_< typelist<>, Fn, N >
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.html b/doc/html/structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.html new file mode 100644 index 0000000..b923831 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: utl::meta::find_if_impl::find_if_< typelist<>, Fn, N > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::find_if_impl::find_if_< typelist<>, Fn, N > Struct Template Reference
    +
    +
    + +

    #include <typelist.h>

    + + + + +

    +Public Types

    using type = Npos
     
    +

    Detailed Description

    +

    template<typename Fn, index_t N>
    +struct utl::meta::find_if_impl::find_if_< typelist<>, Fn, N >

    + + +

    Definition at line 638 of file typelist.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename Fn , index_t N>
    + + + + +
    using utl::meta::find_if_impl::find_if_< typelist<>, Fn, N >::type = Npos
    +
    + +

    Definition at line 639 of file typelist.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.js b/doc/html/structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.js new file mode 100644 index 0000000..32e7437 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.js @@ -0,0 +1,4 @@ +var structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4 = +[ + [ "type", "structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.html#aaa7d3cf83c1c12443a002061cad448ef", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1fold__impl_1_1fold__.html b/doc/html/structutl_1_1meta_1_1fold__impl_1_1fold__.html new file mode 100644 index 0000000..54941ec --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1fold__impl_1_1fold__.html @@ -0,0 +1,116 @@ + + + + + + + +uTL: utl::meta::fold_impl::fold_< typename, typename, typename > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::fold_impl::fold_< typename, typename, typename > Struct Template Reference
    +
    +
    + +

    #include <typelist.h>

    +

    Detailed Description

    +

    template<typename, typename, typename>
    +struct utl::meta::fold_impl::fold_< typename, typename, typename >

    + + +

    Definition at line 347 of file typelist.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4-members.html b/doc/html/structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4-members.html new file mode 100644 index 0000000..43bf1cf --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::fold_impl::fold_< typelist< Head, Tail... >, V, Fn > Member List
    +
    +
    + +

    This is the complete list of members for utl::meta::fold_impl::fold_< typelist< Head, Tail... >, V, Fn >, including all inherited members.

    + + +
    type typedefutl::meta::fold_impl::fold_< typelist< Head, Tail... >, V, Fn >
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4.html b/doc/html/structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4.html new file mode 100644 index 0000000..704aaac --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: utl::meta::fold_impl::fold_< typelist< Head, Tail... >, V, Fn > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::fold_impl::fold_< typelist< Head, Tail... >, V, Fn > Struct Template Reference
    +
    +
    + +

    #include <typelist.h>

    + + + + +

    +Public Types

    using type = eval< fold_< typelist< Tail... >, invoke< Fn, V, Head >, Fn > >
     
    +

    Detailed Description

    +

    template<typename Head, typename... Tail, typename V, typename Fn>
    +struct utl::meta::fold_impl::fold_< typelist< Head, Tail... >, V, Fn >

    + + +

    Definition at line 353 of file typelist.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename Head , typename... Tail, typename V , typename Fn >
    + + + + +
    using utl::meta::fold_impl::fold_< typelist< Head, Tail... >, V, Fn >::type = eval< fold_< typelist<Tail...>, invoke<Fn, V, Head>, Fn > >
    +
    + +

    Definition at line 361 of file typelist.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4.js b/doc/html/structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4.js new file mode 100644 index 0000000..4d7900e --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4.js @@ -0,0 +1,4 @@ +var structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4 = +[ + [ "type", "structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4.html#abb224956ed3d1439190f0ca0afbfeea1", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_4_00_01_v0_00_01_fn_01_4-members.html b/doc/html/structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_4_00_01_v0_00_01_fn_01_4-members.html new file mode 100644 index 0000000..e4a3a2f --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_4_00_01_v0_00_01_fn_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::fold_impl::fold_< typelist<>, V0, Fn > Member List
    +
    +
    + +

    This is the complete list of members for utl::meta::fold_impl::fold_< typelist<>, V0, Fn >, including all inherited members.

    + + +
    type typedefutl::meta::fold_impl::fold_< typelist<>, V0, Fn >
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_4_00_01_v0_00_01_fn_01_4.html b/doc/html/structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_4_00_01_v0_00_01_fn_01_4.html new file mode 100644 index 0000000..a2a4ed0 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_4_00_01_v0_00_01_fn_01_4.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: utl::meta::fold_impl::fold_< typelist<>, V0, Fn > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::fold_impl::fold_< typelist<>, V0, Fn > Struct Template Reference
    +
    +
    + +

    #include <typelist.h>

    + + + + +

    +Public Types

    using type = V0
     
    +

    Detailed Description

    +

    template<typename V0, typename Fn>
    +struct utl::meta::fold_impl::fold_< typelist<>, V0, Fn >

    + + +

    Definition at line 365 of file typelist.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename V0 , typename Fn >
    + + + + +
    using utl::meta::fold_impl::fold_< typelist<>, V0, Fn >::type = V0
    +
    + +

    Definition at line 366 of file typelist.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_4_00_01_v0_00_01_fn_01_4.js b/doc/html/structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_4_00_01_v0_00_01_fn_01_4.js new file mode 100644 index 0000000..b7335f8 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_4_00_01_v0_00_01_fn_01_4.js @@ -0,0 +1,4 @@ +var structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_4_00_01_v0_00_01_fn_01_4 = +[ + [ "type", "structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_4_00_01_v0_00_01_fn_01_4.html#a8455824c7006528cdabb3d56a60ae9d6", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1front__impl_1_1front__.html b/doc/html/structutl_1_1meta_1_1front__impl_1_1front__.html new file mode 100644 index 0000000..90adeb8 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1front__impl_1_1front__.html @@ -0,0 +1,116 @@ + + + + + + + +uTL: utl::meta::front_impl::front_< L > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::front_impl::front_< L > Struct Template Reference
    +
    +
    + +

    #include <typelist.h>

    +

    Detailed Description

    +

    template<typename L>
    +struct utl::meta::front_impl::front_< L >

    + + +

    Definition at line 261 of file typelist.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1front__impl_1_1front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4-members.html b/doc/html/structutl_1_1meta_1_1front__impl_1_1front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4-members.html new file mode 100644 index 0000000..823f789 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1front__impl_1_1front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::front_impl::front_< typelist< Head, Tail... > > Member List
    +
    +
    + +

    This is the complete list of members for utl::meta::front_impl::front_< typelist< Head, Tail... > >, including all inherited members.

    + + +
    type typedefutl::meta::front_impl::front_< typelist< Head, Tail... > >
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1front__impl_1_1front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.html b/doc/html/structutl_1_1meta_1_1front__impl_1_1front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.html new file mode 100644 index 0000000..c12624d --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1front__impl_1_1front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: utl::meta::front_impl::front_< typelist< Head, Tail... > > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::front_impl::front_< typelist< Head, Tail... > > Struct Template Reference
    +
    +
    + +

    #include <typelist.h>

    + + + + +

    +Public Types

    using type = Head
     
    +

    Detailed Description

    +

    template<typename Head, typename... Tail>
    +struct utl::meta::front_impl::front_< typelist< Head, Tail... > >

    + + +

    Definition at line 264 of file typelist.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename Head , typename... Tail>
    + + + + +
    using utl::meta::front_impl::front_< typelist< Head, Tail... > >::type = Head
    +
    + +

    Definition at line 265 of file typelist.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1front__impl_1_1front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.js b/doc/html/structutl_1_1meta_1_1front__impl_1_1front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.js new file mode 100644 index 0000000..63db1eb --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1front__impl_1_1front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.js @@ -0,0 +1,4 @@ +var structutl_1_1meta_1_1front__impl_1_1front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4 = +[ + [ "type", "structutl_1_1meta_1_1front__impl_1_1front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.html#a964bc85961c4935570021361b0d4f514", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1identity-members.html b/doc/html/structutl_1_1meta_1_1identity-members.html new file mode 100644 index 0000000..a4881be --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1identity-members.html @@ -0,0 +1,109 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::identity< _Tp > Member List
    +
    +
    + +

    This is the complete list of members for utl::meta::identity< _Tp >, including all inherited members.

    + + + +
    apply typedefutl::meta::identity< _Tp >
    type typedefutl::meta::identity< _Tp >
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1identity.html b/doc/html/structutl_1_1meta_1_1identity.html new file mode 100644 index 0000000..209ba89 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1identity.html @@ -0,0 +1,176 @@ + + + + + + + +uTL: utl::meta::identity< _Tp > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::identity< _Tp > Struct Template Reference
    +
    +
    + +

    #include <invoke.h>

    + + + + + + + + + +

    +Public Types

    template<typename... >
    using apply = _Tp
     identity is invokable, must also have apply More...
     
    using type = _Tp
     identity More...
     
    +

    Detailed Description

    +

    template<typename _Tp>
    +struct utl::meta::identity< _Tp >

    + +

    identity, identity_t.

    + +

    Definition at line 54 of file invoke.h.

    +

    Member Typedef Documentation

    + +

    ◆ apply

    + +
    +
    +
    +template<typename _Tp >
    +
    +template<typename... >
    + + + + +
    using utl::meta::identity< _Tp >::apply = _Tp
    +
    + +

    identity is invokable, must also have apply

    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/invoke.h.
    +
    +

    Definition at line 61 of file invoke.h.

    + +
    +
    + +

    ◆ type

    + +
    +
    +
    +template<typename _Tp >
    + + + + +
    using utl::meta::identity< _Tp >::type = _Tp
    +
    + +

    identity

    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/invoke.h.
    +
    +

    Definition at line 63 of file invoke.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1identity.js b/doc/html/structutl_1_1meta_1_1identity.js new file mode 100644 index 0000000..b084077 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1identity.js @@ -0,0 +1,5 @@ +var structutl_1_1meta_1_1identity = +[ + [ "apply", "structutl_1_1meta_1_1identity.html#ab13e3134ffe9c6fabb22f67d7b87b2dd", null ], + [ "type", "structutl_1_1meta_1_1identity.html#a9aab221df05f226c227a6e508460f7b7", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1nat__-members.html b/doc/html/structutl_1_1meta_1_1nat__-members.html new file mode 100644 index 0000000..3a5f53f --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1nat__-members.html @@ -0,0 +1,111 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::nat_ Member List
    +
    +
    + +

    This is the complete list of members for utl::meta::nat_, including all inherited members.

    + + + + + +
    nat_()=deleteutl::meta::nat_
    nat_(nat_ const &)=deleteutl::meta::nat_
    operator=(nat_ const &)=deleteutl::meta::nat_
    ~nat_()=deleteutl::meta::nat_
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1nat__.html b/doc/html/structutl_1_1meta_1_1nat__.html new file mode 100644 index 0000000..f1f3fd7 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1nat__.html @@ -0,0 +1,233 @@ + + + + + + + +uTL: utl::meta::nat_ Struct Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::nat_ Struct Reference
    +
    +
    + +

    #include <detection.h>

    + + + + + + + + + + +

    +Public Member Functions

     nat_ ()=delete
     
     ~nat_ ()=delete
     
     nat_ (nat_ const &)=delete
     
    void operator= (nat_ const &)=delete
     
    +

    Detailed Description

    +

    Not a type to use in detected idiom. This type can not be constructed, destructed or copied

    + +

    Definition at line 63 of file detection.h.

    +

    Constructor & Destructor Documentation

    + +

    ◆ nat_() [1/2]

    + +
    +
    + + + + + +
    + + + + + + + +
    utl::meta::nat_::nat_ ()
    +
    +delete
    +
    + +
    +
    + +

    ◆ ~nat_()

    + +
    +
    + + + + + +
    + + + + + + + +
    utl::meta::nat_::~nat_ ()
    +
    +delete
    +
    + +
    +
    + +

    ◆ nat_() [2/2]

    + +
    +
    + + + + + +
    + + + + + + + + +
    utl::meta::nat_::nat_ (nat_ const & )
    +
    +delete
    +
    + +
    +
    +

    Member Function Documentation

    + +

    ◆ operator=()

    + +
    +
    + + + + + +
    + + + + + + + + +
    void utl::meta::nat_::operator= (nat_ const & )
    +
    +delete
    +
    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1nat__.js b/doc/html/structutl_1_1meta_1_1nat__.js new file mode 100644 index 0000000..aba0b6c --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1nat__.js @@ -0,0 +1,7 @@ +var structutl_1_1meta_1_1nat__ = +[ + [ "nat_", "structutl_1_1meta_1_1nat__.html#adccaf921c4aa751d22831fcc10d5a673", null ], + [ "~nat_", "structutl_1_1meta_1_1nat__.html#a133e363072f900269933f6c163b294f8", null ], + [ "nat_", "structutl_1_1meta_1_1nat__.html#a42d01fdec9b91bc31c325a51e28b5d41", null ], + [ "operator=", "structutl_1_1meta_1_1nat__.html#a905f7286e42782137f31227a7c891355", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1nil__-members.html b/doc/html/structutl_1_1meta_1_1nil__-members.html new file mode 100644 index 0000000..48a554d --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1nil__-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::nil_ Member List
    +
    +
    + +

    This is the complete list of members for utl::meta::nil_, including all inherited members.

    + + +
    type typedefutl::meta::nil_
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1nil__.html b/doc/html/structutl_1_1meta_1_1nil__.html new file mode 100644 index 0000000..8dd5eb1 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1nil__.html @@ -0,0 +1,140 @@ + + + + + + + +uTL: utl::meta::nil_ Struct Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::nil_ Struct Reference
    +
    +
    + +

    #include <integral.h>

    + + + + +

    +Public Types

    using type = nil_
     
    +

    Detailed Description

    +

    Empty type utl::meta's nil type is not pure nil. It's a recursive "de-referencable nil. Each time someone applies ::type to it, he gets back nil_. This way we can prevent a lot of compilation errors in a wrong meta:: handling.

    + +

    Definition at line 43 of file integral.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    + + + + +
    using utl::meta::nil_::type = nil_
    +
    + +

    Definition at line 44 of file integral.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1nil__.js b/doc/html/structutl_1_1meta_1_1nil__.js new file mode 100644 index 0000000..d13101b --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1nil__.js @@ -0,0 +1,4 @@ +var structutl_1_1meta_1_1nil__ = +[ + [ "type", "structutl_1_1meta_1_1nil__.html#a497da8469a94140b0285ba5864d794c8", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1not__same__as.html b/doc/html/structutl_1_1meta_1_1not__same__as.html new file mode 100644 index 0000000..2f30e1c --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1not__same__as.html @@ -0,0 +1,124 @@ + + + + + + + +uTL: utl::meta::not_same_as< T1 > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::not_same_as< T1 > Struct Template Reference
    +
    +
    + +

    #include <invoke.h>

    + + + + +

    +Classes

    struct  apply
     
    +

    Detailed Description

    +

    template<typename T1>
    +struct utl::meta::not_same_as< T1 >

    + + +

    Definition at line 358 of file invoke.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1not__same__as_1_1apply.html b/doc/html/structutl_1_1meta_1_1not__same__as_1_1apply.html new file mode 100644 index 0000000..df1f028 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1not__same__as_1_1apply.html @@ -0,0 +1,125 @@ + + + + + + + +uTL: utl::meta::not_same_as< T1 >::apply< T2 > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::not_same_as< T1 >::apply< T2 > Struct Template Reference
    +
    +
    + +

    #include <invoke.h>

    +
    +Inheritance diagram for utl::meta::not_same_as< T1 >::apply< T2 >:
    +
    +
    + + + +
    +

    Detailed Description

    +

    template<typename T1>
    +template<typename T2>
    +struct utl::meta::not_same_as< T1 >::apply< T2 >

    + + +

    Definition at line 360 of file invoke.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1not__same__as_1_1apply.png b/doc/html/structutl_1_1meta_1_1not__same__as_1_1apply.png new file mode 100644 index 0000000000000000000000000000000000000000..648d721f449e9ef1ee7b87b72e1c7e49c78d8332 GIT binary patch literal 780 zcmeAS@N?(olHy`uVBq!ia0vp^KY=)agBeJ^X;N+hQW60^A+G=b{|7Q(y!l$%e`o@b z1;z&s9ANFdBM;wb{ecrD7|9h98 zoxf4Z#8ZCz&I)T%o!)H$x9lfo=g()ZjPChw9@)#|6N_-?Ijy?&tF$r z*}t#7X76^jIotJrO;cIU_v9N-8MkG>_3b*zx09wuW>1PgyGq6KtHS)5(-x&X$g4i( z|Lc9ez56_)3(BmqS^K=>o-I%-7kGbi?$gq5(kFwr&z^G4=vWj({>kpUr{9!M62HCj zSvAA^6WubkrDsn+zW?Ui<>z~f*MC=uZ?DMSwtlnjOwS-y_c)a!bA>#2t$O#q*z?t* z-H&%Q)~q_`SlgGIr+?!6wU|lot|&}j5&`zX!josuC~-ZQ|B_K4DDk9x|B4rhC+9zK zy!d!h|4lvt-)0$wX>67bI=n>N0pP%pNY2ACi!k_K>&fhclFMIne>l^!yuencFFD~1{p!@dbxplYLq<_}j-TQ3W ze9bD+Q$+Jw4S@dVo+LG7K9`CZlBiUl^-dZTqc|vc8%ex8YHdkCv#_Y;laXO@=t$sy$ z{jIB(pHhQ#k{@^2l + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::pop_back_impl::pop_back_< List > Member List
    +
    +
    + +

    This is the complete list of members for utl::meta::pop_back_impl::pop_back_< List >, including all inherited members.

    + + +
    type typedefutl::meta::pop_back_impl::pop_back_< List >
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1pop__back__impl_1_1pop__back__.html b/doc/html/structutl_1_1meta_1_1pop__back__impl_1_1pop__back__.html new file mode 100644 index 0000000..c45e7b5 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1pop__back__impl_1_1pop__back__.html @@ -0,0 +1,145 @@ + + + + + + + +uTL: utl::meta::pop_back_impl::pop_back_< List > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::pop_back_impl::pop_back_< List > Struct Template Reference
    +
    +
    + +

    #include <typelist.h>

    + + + + +

    +Public Types

    using type = reverse< pop_front< reverse< List > > >
     
    +

    Detailed Description

    +

    template<typename List>
    +struct utl::meta::pop_back_impl::pop_back_< List >

    + + +

    Definition at line 509 of file typelist.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename List >
    + + + + +
    using utl::meta::pop_back_impl::pop_back_< List >::type = reverse< pop_front<reverse<List> > >
    +
    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/typelist.h.
    +
    +

    Definition at line 512 of file typelist.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1pop__back__impl_1_1pop__back__.js b/doc/html/structutl_1_1meta_1_1pop__back__impl_1_1pop__back__.js new file mode 100644 index 0000000..d29c624 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1pop__back__impl_1_1pop__back__.js @@ -0,0 +1,4 @@ +var structutl_1_1meta_1_1pop__back__impl_1_1pop__back__ = +[ + [ "type", "structutl_1_1meta_1_1pop__back__impl_1_1pop__back__.html#a8b82ff5dcd6fcda89b36f8e587e64d24", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1pop__front__impl_1_1pop__front__.html b/doc/html/structutl_1_1meta_1_1pop__front__impl_1_1pop__front__.html new file mode 100644 index 0000000..2f7208f --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1pop__front__impl_1_1pop__front__.html @@ -0,0 +1,116 @@ + + + + + + + +uTL: utl::meta::pop_front_impl::pop_front_< List > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::pop_front_impl::pop_front_< List > Struct Template Reference
    +
    +
    + +

    #include <typelist.h>

    +

    Detailed Description

    +

    template<typename List>
    +struct utl::meta::pop_front_impl::pop_front_< List >

    + + +

    Definition at line 486 of file typelist.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1pop__front__impl_1_1pop__front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4-members.html b/doc/html/structutl_1_1meta_1_1pop__front__impl_1_1pop__front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4-members.html new file mode 100644 index 0000000..4658dba --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1pop__front__impl_1_1pop__front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::pop_front_impl::pop_front_< typelist< Head, Tail... > > Member List
    +
    +
    + +

    This is the complete list of members for utl::meta::pop_front_impl::pop_front_< typelist< Head, Tail... > >, including all inherited members.

    + + +
    type typedefutl::meta::pop_front_impl::pop_front_< typelist< Head, Tail... > >
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1pop__front__impl_1_1pop__front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.html b/doc/html/structutl_1_1meta_1_1pop__front__impl_1_1pop__front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.html new file mode 100644 index 0000000..f7dc868 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1pop__front__impl_1_1pop__front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: utl::meta::pop_front_impl::pop_front_< typelist< Head, Tail... > > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::pop_front_impl::pop_front_< typelist< Head, Tail... > > Struct Template Reference
    +
    +
    + +

    #include <typelist.h>

    + + + + +

    +Public Types

    using type = typelist< Tail... >
     
    +

    Detailed Description

    +

    template<typename Head, typename... Tail>
    +struct utl::meta::pop_front_impl::pop_front_< typelist< Head, Tail... > >

    + + +

    Definition at line 489 of file typelist.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename Head , typename... Tail>
    + + + + +
    using utl::meta::pop_front_impl::pop_front_< typelist< Head, Tail... > >::type = typelist<Tail...>
    +
    + +

    Definition at line 490 of file typelist.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1pop__front__impl_1_1pop__front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.js b/doc/html/structutl_1_1meta_1_1pop__front__impl_1_1pop__front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.js new file mode 100644 index 0000000..aad5359 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1pop__front__impl_1_1pop__front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.js @@ -0,0 +1,4 @@ +var structutl_1_1meta_1_1pop__front__impl_1_1pop__front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4 = +[ + [ "type", "structutl_1_1meta_1_1pop__front__impl_1_1pop__front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.html#a7387d0025d1dcece8e63a3bba5426ac8", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1quote-members.html b/doc/html/structutl_1_1meta_1_1quote-members.html new file mode 100644 index 0000000..80d5d54 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1quote-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::quote< F > Member List
    +
    +
    + +

    This is the complete list of members for utl::meta::quote< F >, including all inherited members.

    + + +
    apply typedefutl::meta::quote< F >
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1quote.html b/doc/html/structutl_1_1meta_1_1quote.html new file mode 100644 index 0000000..49cd8d8 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1quote.html @@ -0,0 +1,150 @@ + + + + + + + +uTL: utl::meta::quote< F > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::quote< F > Struct Template Reference
    +
    +
    + +

    #include <invoke.h>

    + + + + + +

    +Public Types

    template<typename... Args>
    using apply = eval< defer< F, Args... > >
     
    +

    Detailed Description

    +

    template<template< typename... > class F>
    +struct utl::meta::quote< F >

    + +

    quote

    +

    quote deferred is a higher-order primitive that wraps an n-ary Metafunction to create a corresponding Metafunction Class (Invocable) using defer<> to postpone the evaluation of Metafunction. This is a safe version of wrap<>. Again this way we can pass Metafunctions as types to other metafunctions and let them invoke the inner templated apply

    + +

    Definition at line 234 of file invoke.h.

    +

    Member Typedef Documentation

    + +

    ◆ apply

    + +
    +
    +
    +template<template< typename... > class F>
    +
    +template<typename... Args>
    + + + + +
    using utl::meta::quote< F >::apply = eval< defer<F, Args...> >
    +
    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/invoke.h.
    +
    +

    Definition at line 238 of file invoke.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1quote.js b/doc/html/structutl_1_1meta_1_1quote.js new file mode 100644 index 0000000..89743e2 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1quote.js @@ -0,0 +1,4 @@ +var structutl_1_1meta_1_1quote = +[ + [ "apply", "structutl_1_1meta_1_1quote.html#a7741173cf865291c89d374c2fac0d17e", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1quote__i-members.html b/doc/html/structutl_1_1meta_1_1quote__i-members.html new file mode 100644 index 0000000..ea98a69 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1quote__i-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::quote_i< T, F > Member List
    +
    +
    + +

    This is the complete list of members for utl::meta::quote_i< T, F >, including all inherited members.

    + + +
    apply typedefutl::meta::quote_i< T, F >
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1quote__i.html b/doc/html/structutl_1_1meta_1_1quote__i.html new file mode 100644 index 0000000..fdc104a --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1quote__i.html @@ -0,0 +1,152 @@ + + + + + + + +uTL: utl::meta::quote_i< T, F > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::quote_i< T, F > Struct Template Reference
    +
    +
    + +

    Wrap a template F taking literal constants of type T into an Invokable. + More...

    + +

    #include <invoke.h>

    + + + + + +

    +Public Types

    template<typename... Ts>
    using apply = eval< defer_i< T, F, Ts::type::value... > >
     
    +

    Detailed Description

    +

    template<typename T, template< T... > class F>
    +struct utl::meta::quote_i< T, F >

    + +

    Wrap a template F taking literal constants of type T into an Invokable.

    + +

    Definition at line 243 of file invoke.h.

    +

    Member Typedef Documentation

    + +

    ◆ apply

    + +
    +
    +
    +template<typename T , template< T... > class F>
    +
    +template<typename... Ts>
    + + + + +
    using utl::meta::quote_i< T, F >::apply = eval< defer_i<T, F, Ts::type::value...> >
    +
    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/invoke.h.
    +
    +

    Definition at line 248 of file invoke.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1quote__i.js b/doc/html/structutl_1_1meta_1_1quote__i.js new file mode 100644 index 0000000..7d5cd58 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1quote__i.js @@ -0,0 +1,4 @@ +var structutl_1_1meta_1_1quote__i = +[ + [ "apply", "structutl_1_1meta_1_1quote__i.html#a32099809fbac1c620ad3993e8ab1b8c0", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1replace__if__impl_1_1replace__if__.html b/doc/html/structutl_1_1meta_1_1replace__if__impl_1_1replace__if__.html new file mode 100644 index 0000000..8a5e1e1 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1replace__if__impl_1_1replace__if__.html @@ -0,0 +1,116 @@ + + + + + + + +uTL: utl::meta::replace_if_impl::replace_if_< typename, typename, typename, typename > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::replace_if_impl::replace_if_< typename, typename, typename, typename > Struct Template Reference
    +
    +
    + +

    #include <typelist.h>

    +

    Detailed Description

    +

    template<typename, typename, typename, typename>
    +struct utl::meta::replace_if_impl::replace_if_< typename, typename, typename, typename >

    + + +

    Definition at line 807 of file typelist.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_01_head_00_01_tail_8_8_8_5e985261da7db491aaa0c46140e32daf.html b/doc/html/structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_01_head_00_01_tail_8_8_8_5e985261da7db491aaa0c46140e32daf.html new file mode 100644 index 0000000..9180fb9 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_01_head_00_01_tail_8_8_8_5e985261da7db491aaa0c46140e32daf.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::replace_if_impl::replace_if_< typelist< Head, Tail... >, Fn, T, Ret > Member List
    +
    + +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_01_head_00_01_tail_8_8_8_dfa8065a3617f53ecded260506092a07.html b/doc/html/structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_01_head_00_01_tail_8_8_8_dfa8065a3617f53ecded260506092a07.html new file mode 100644 index 0000000..7cddfd5 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_01_head_00_01_tail_8_8_8_dfa8065a3617f53ecded260506092a07.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: utl::meta::replace_if_impl::replace_if_< typelist< Head, Tail... >, Fn, T, Ret > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::replace_if_impl::replace_if_< typelist< Head, Tail... >, Fn, T, Ret > Struct Template Reference
    +
    +
    + +

    #include <typelist.h>

    + + + + +

    +Public Types

    using type = if_< invoke_t< Fn, Head >, eval< replace_if_< typelist< Tail... >, Fn, T, cat< Ret, typelist< T > >> >, eval< replace_if_< typelist< Tail... >, Fn, T, cat< Ret, typelist< Head > >> > >
     
    +

    Detailed Description

    +

    template<typename Head, typename... Tail, typename Fn, typename T, typename Ret>
    +struct utl::meta::replace_if_impl::replace_if_< typelist< Head, Tail... >, Fn, T, Ret >

    + + +

    Definition at line 810 of file typelist.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename Head , typename... Tail, typename Fn , typename T , typename Ret >
    + + + + +
    using utl::meta::replace_if_impl::replace_if_< typelist< Head, Tail... >, Fn, T, Ret >::type = if_ < invoke_t<Fn, Head>, eval<replace_if_<typelist<Tail...>, Fn, T, cat<Ret, typelist<T> >> >, eval<replace_if_<typelist<Tail...>, Fn, T, cat<Ret, typelist<Head> >> > >
    +
    + +

    Definition at line 817 of file typelist.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_01_head_00_01_tail_8_8_8_dfa8065a3617f53ecded260506092a07.js b/doc/html/structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_01_head_00_01_tail_8_8_8_dfa8065a3617f53ecded260506092a07.js new file mode 100644 index 0000000..f54bc62 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_01_head_00_01_tail_8_8_8_dfa8065a3617f53ecded260506092a07.js @@ -0,0 +1,4 @@ +var structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_01_head_00_01_tail_8_8_8_dfa8065a3617f53ecded260506092a07 = +[ + [ "type", "structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_01_head_00_01_tail_8_8_8_dfa8065a3617f53ecded260506092a07.html#ad7d3db888c18a6e48ed800f0c484701d", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_4_00_01_fn_00_01_t_00_01_ret_01_4-members.html b/doc/html/structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_4_00_01_fn_00_01_t_00_01_ret_01_4-members.html new file mode 100644 index 0000000..f35dddf --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_4_00_01_fn_00_01_t_00_01_ret_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::replace_if_impl::replace_if_< typelist<>, Fn, T, Ret > Member List
    +
    +
    + +

    This is the complete list of members for utl::meta::replace_if_impl::replace_if_< typelist<>, Fn, T, Ret >, including all inherited members.

    + + +
    type typedefutl::meta::replace_if_impl::replace_if_< typelist<>, Fn, T, Ret >
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_4_00_01_fn_00_01_t_00_01_ret_01_4.html b/doc/html/structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_4_00_01_fn_00_01_t_00_01_ret_01_4.html new file mode 100644 index 0000000..1294de4 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_4_00_01_fn_00_01_t_00_01_ret_01_4.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: utl::meta::replace_if_impl::replace_if_< typelist<>, Fn, T, Ret > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::replace_if_impl::replace_if_< typelist<>, Fn, T, Ret > Struct Template Reference
    +
    +
    + +

    #include <typelist.h>

    + + + + +

    +Public Types

    using type = Ret
     
    +

    Detailed Description

    +

    template<typename Fn, typename T, typename Ret>
    +struct utl::meta::replace_if_impl::replace_if_< typelist<>, Fn, T, Ret >

    + + +

    Definition at line 822 of file typelist.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename Fn , typename T , typename Ret >
    + + + + +
    using utl::meta::replace_if_impl::replace_if_< typelist<>, Fn, T, Ret >::type = Ret
    +
    + +

    Definition at line 823 of file typelist.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_4_00_01_fn_00_01_t_00_01_ret_01_4.js b/doc/html/structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_4_00_01_fn_00_01_t_00_01_ret_01_4.js new file mode 100644 index 0000000..fa7ed72 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_4_00_01_fn_00_01_t_00_01_ret_01_4.js @@ -0,0 +1,4 @@ +var structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_4_00_01_fn_00_01_t_00_01_ret_01_4 = +[ + [ "type", "structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_4_00_01_fn_00_01_t_00_01_ret_01_4.html#a45470ea1b5d2ddc6ff9054e66b193d78", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold__.html b/doc/html/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold__.html new file mode 100644 index 0000000..0401653 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold__.html @@ -0,0 +1,116 @@ + + + + + + + +uTL: utl::meta::rev_fold_impl::rev_fold_< typename, typename, typename > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::rev_fold_impl::rev_fold_< typename, typename, typename > Struct Template Reference
    +
    +
    + +

    #include <typelist.h>

    +

    Detailed Description

    +

    template<typename, typename, typename>
    +struct utl::meta::rev_fold_impl::rev_fold_< typename, typename, typename >

    + + +

    Definition at line 393 of file typelist.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4-members.html b/doc/html/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4-members.html new file mode 100644 index 0000000..4e19dab --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::rev_fold_impl::rev_fold_< typelist< Head, Tail... >, V, Fn > Member List
    +
    + +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4.html b/doc/html/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4.html new file mode 100644 index 0000000..2c1b3cb --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: utl::meta::rev_fold_impl::rev_fold_< typelist< Head, Tail... >, V, Fn > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::rev_fold_impl::rev_fold_< typelist< Head, Tail... >, V, Fn > Struct Template Reference
    +
    +
    + +

    #include <typelist.h>

    + + + + +

    +Public Types

    using type = invoke< Fn, Head, eval< rev_fold_< typelist< Tail... >, V, Fn > > >
     
    +

    Detailed Description

    +

    template<typename Head, typename... Tail, typename V, typename Fn>
    +struct utl::meta::rev_fold_impl::rev_fold_< typelist< Head, Tail... >, V, Fn >

    + + +

    Definition at line 399 of file typelist.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename Head , typename... Tail, typename V , typename Fn >
    + + + + +
    using utl::meta::rev_fold_impl::rev_fold_< typelist< Head, Tail... >, V, Fn >::type = invoke < Fn, Head, eval< rev_fold_ < typelist<Tail...>, V, Fn > > >
    +
    + +

    Definition at line 409 of file typelist.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4.js b/doc/html/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4.js new file mode 100644 index 0000000..19acb88 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4.js @@ -0,0 +1,4 @@ +var structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4 = +[ + [ "type", "structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4.html#ad7c51dcac1ed18739bdce2eb75695a7a", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_tail_01_4_00_01_v_00_01_fn_01_4-members.html b/doc/html/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_tail_01_4_00_01_v_00_01_fn_01_4-members.html new file mode 100644 index 0000000..8d0101c --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_tail_01_4_00_01_v_00_01_fn_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::rev_fold_impl::rev_fold_< typelist< Tail >, V, Fn > Member List
    +
    +
    + +

    This is the complete list of members for utl::meta::rev_fold_impl::rev_fold_< typelist< Tail >, V, Fn >, including all inherited members.

    + + +
    type typedefutl::meta::rev_fold_impl::rev_fold_< typelist< Tail >, V, Fn >
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_tail_01_4_00_01_v_00_01_fn_01_4.html b/doc/html/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_tail_01_4_00_01_v_00_01_fn_01_4.html new file mode 100644 index 0000000..e13fb7a --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_tail_01_4_00_01_v_00_01_fn_01_4.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: utl::meta::rev_fold_impl::rev_fold_< typelist< Tail >, V, Fn > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::rev_fold_impl::rev_fold_< typelist< Tail >, V, Fn > Struct Template Reference
    +
    +
    + +

    #include <typelist.h>

    + + + + +

    +Public Types

    using type = invoke< Fn, Tail, V >
     
    +

    Detailed Description

    +

    template<typename Tail, typename V, typename Fn>
    +struct utl::meta::rev_fold_impl::rev_fold_< typelist< Tail >, V, Fn >

    + + +

    Definition at line 413 of file typelist.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename Tail , typename V , typename Fn >
    + + + + +
    using utl::meta::rev_fold_impl::rev_fold_< typelist< Tail >, V, Fn >::type = invoke<Fn, Tail, V>
    +
    + +

    Definition at line 414 of file typelist.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_tail_01_4_00_01_v_00_01_fn_01_4.js b/doc/html/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_tail_01_4_00_01_v_00_01_fn_01_4.js new file mode 100644 index 0000000..19cee8b --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_tail_01_4_00_01_v_00_01_fn_01_4.js @@ -0,0 +1,4 @@ +var structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_tail_01_4_00_01_v_00_01_fn_01_4 = +[ + [ "type", "structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_tail_01_4_00_01_v_00_01_fn_01_4.html#a84a91d7ad7d46de8f4b4b2237c75b3e8", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_4_00_01_v_00_01_fn_01_4-members.html b/doc/html/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_4_00_01_v_00_01_fn_01_4-members.html new file mode 100644 index 0000000..5aded42 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_4_00_01_v_00_01_fn_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::rev_fold_impl::rev_fold_< typelist<>, V, Fn > Member List
    +
    +
    + +

    This is the complete list of members for utl::meta::rev_fold_impl::rev_fold_< typelist<>, V, Fn >, including all inherited members.

    + + +
    type typedefutl::meta::rev_fold_impl::rev_fold_< typelist<>, V, Fn >
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_4_00_01_v_00_01_fn_01_4.html b/doc/html/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_4_00_01_v_00_01_fn_01_4.html new file mode 100644 index 0000000..f6e2b4a --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_4_00_01_v_00_01_fn_01_4.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: utl::meta::rev_fold_impl::rev_fold_< typelist<>, V, Fn > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::rev_fold_impl::rev_fold_< typelist<>, V, Fn > Struct Template Reference
    +
    +
    + +

    #include <typelist.h>

    + + + + +

    +Public Types

    using type = V
     
    +

    Detailed Description

    +

    template<typename V, typename Fn>
    +struct utl::meta::rev_fold_impl::rev_fold_< typelist<>, V, Fn >

    + + +

    Definition at line 418 of file typelist.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename V , typename Fn >
    + + + + +
    using utl::meta::rev_fold_impl::rev_fold_< typelist<>, V, Fn >::type = V
    +
    + +

    Definition at line 419 of file typelist.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_4_00_01_v_00_01_fn_01_4.js b/doc/html/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_4_00_01_v_00_01_fn_01_4.js new file mode 100644 index 0000000..e7f9480 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_4_00_01_v_00_01_fn_01_4.js @@ -0,0 +1,4 @@ +var structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_4_00_01_v_00_01_fn_01_4 = +[ + [ "type", "structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_4_00_01_v_00_01_fn_01_4.html#a07d723d69e4acba3b20a1d47c4c6da35", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1reverse__impl_1_1reverse__-members.html b/doc/html/structutl_1_1meta_1_1reverse__impl_1_1reverse__-members.html new file mode 100644 index 0000000..8c351ca --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1reverse__impl_1_1reverse__-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::reverse_impl::reverse_< List, V > Member List
    +
    +
    + +

    This is the complete list of members for utl::meta::reverse_impl::reverse_< List, V >, including all inherited members.

    + + +
    type typedefutl::meta::reverse_impl::reverse_< List, V >
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1reverse__impl_1_1reverse__.html b/doc/html/structutl_1_1meta_1_1reverse__impl_1_1reverse__.html new file mode 100644 index 0000000..3f8f565 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1reverse__impl_1_1reverse__.html @@ -0,0 +1,145 @@ + + + + + + + +uTL: utl::meta::reverse_impl::reverse_< List, V > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::reverse_impl::reverse_< List, V > Struct Template Reference
    +
    +
    + +

    #include <typelist.h>

    + + + + +

    +Public Types

    using type = fold< List, V, quote< push_front > >
     
    +

    Detailed Description

    +

    template<typename List, typename V = typelist<>>
    +struct utl::meta::reverse_impl::reverse_< List, V >

    + + +

    Definition at line 467 of file typelist.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename List , typename V = typelist<>>
    + + + + +
    using utl::meta::reverse_impl::reverse_< List, V >::type = fold<List, V, quote<push_front> >
    +
    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/typelist.h.
    +
    +

    Definition at line 468 of file typelist.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1reverse__impl_1_1reverse__.js b/doc/html/structutl_1_1meta_1_1reverse__impl_1_1reverse__.js new file mode 100644 index 0000000..f429e40 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1reverse__impl_1_1reverse__.js @@ -0,0 +1,4 @@ +var structutl_1_1meta_1_1reverse__impl_1_1reverse__ = +[ + [ "type", "structutl_1_1meta_1_1reverse__impl_1_1reverse__.html#ad1618828ac681258d9909839df60dd39", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1same__.html b/doc/html/structutl_1_1meta_1_1same__.html new file mode 100644 index 0000000..a1e9112 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1same__.html @@ -0,0 +1,125 @@ + + + + + + + +uTL: utl::meta::same_< _T1, _T2 > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::same_< _T1, _T2 > Struct Template Reference
    +
    +
    + +

    #include <operations.h>

    +
    +Inheritance diagram for utl::meta::same_< _T1, _T2 >:
    +
    +
    + + + +
    +

    Detailed Description

    +

    template<typename _T1, typename _T2>
    +struct utl::meta::same_< _T1, _T2 >

    + +

    same

    + +

    Definition at line 102 of file operations.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1same__.png b/doc/html/structutl_1_1meta_1_1same__.png new file mode 100644 index 0000000000000000000000000000000000000000..527c6a0bde8dae9954e6c09c4bd9f50f1eab1e3e GIT binary patch literal 564 zcmeAS@N?(olHy`uVBq!ia0vp^>wq|bgBeI}_u97=NJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~9` zZVFf#oZb z-fOm3drBR-@Z#MMGm9&SCok;!x9{Dj86_t-*qNzjN;sZ;ps$iC^1t+*-v7U!{{20r z;Q6t}vD~(x`Out;Q@+i820I<)yLV0S{=BN)c1~A$*mfMz)C*`MT@i`FRK=08;!bL;8$ z!~4VAsup>v7VQ7E#psLqFKcT;u*L0_v;d1s literal 0 HcmV?d00001 diff --git a/doc/html/structutl_1_1meta_1_1same___3_01___tp_00_01___tp_01_4.html b/doc/html/structutl_1_1meta_1_1same___3_01___tp_00_01___tp_01_4.html new file mode 100644 index 0000000..8499c91 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1same___3_01___tp_00_01___tp_01_4.html @@ -0,0 +1,124 @@ + + + + + + + +uTL: utl::meta::same_< _Tp, _Tp > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::same_< _Tp, _Tp > Struct Template Reference
    +
    +
    + +

    #include <operations.h>

    +
    +Inheritance diagram for utl::meta::same_< _Tp, _Tp >:
    +
    +
    + + + +
    +

    Detailed Description

    +

    template<typename _Tp>
    +struct utl::meta::same_< _Tp, _Tp >

    + + +

    Definition at line 105 of file operations.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1same___3_01___tp_00_01___tp_01_4.png b/doc/html/structutl_1_1meta_1_1same___3_01___tp_00_01___tp_01_4.png new file mode 100644 index 0000000000000000000000000000000000000000..e3f8d6de24274284e02b77a6f0528e10282ccad4 GIT binary patch literal 561 zcmeAS@N?(olHy`uVBq!ia0vp^>wq|bgBeI}_u97=NJ#|vgt-3y{~ySF@#br3|Dg#$ z78oBmaDcV*jy#adQ4-`A%m7pb0#{Fk7%?y~9`JN=45?szJNIVMVFe!7{51zLuSw#vrS==&&A&Rg>(LsU|2nT; zHmZ~^DJ~IzdL&KP^X`kavn74Y_o=K@-*<89l65~`h-vD0{(Z4>cWcQnBZt%pD*1a# zFE_pxf7Y>1rBV=PA zxQijKMXx~|4>xbunKQ>2nI&2;uzpY~Vce5Zx_r0ye>?8meHI5M{=TRG!fx)1b>-LR z+Ao{EY17j6FZI@%|39_xhV|`(4AXTEU%Sqz^{z@fwrA1O^04l|nr^qxv2E|R;)>0E zvT*y12Qk}ydb~E>T2my}bH}T9v%=bsyRWW&e*bLzrPxjOyqepq{MnlCoKk%L`|q}Q zb{9`yJj=K)&GKyj?~oUwcV(8GPFaz*)8{$=lXqnS+a3q~|M~R8`l*WZSL_uM$=@3- zsVDY%i4jB1ls)?ybj8EscB%iLJImd7uH}2yRp0);V3PS+zKbDW7#ae_mS)D%t@f=U W**^0G8_xjam%-E3&t;ucLK6T^5e7W~ literal 0 HcmV?d00001 diff --git a/doc/html/structutl_1_1meta_1_1same__as.html b/doc/html/structutl_1_1meta_1_1same__as.html new file mode 100644 index 0000000..0c641c9 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1same__as.html @@ -0,0 +1,124 @@ + + + + + + + +uTL: utl::meta::same_as< T1 > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::same_as< T1 > Struct Template Reference
    +
    +
    + +

    #include <invoke.h>

    + + + + +

    +Classes

    struct  apply
     
    +

    Detailed Description

    +

    template<typename T1>
    +struct utl::meta::same_as< T1 >

    + + +

    Definition at line 352 of file invoke.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1same__as_1_1apply.html b/doc/html/structutl_1_1meta_1_1same__as_1_1apply.html new file mode 100644 index 0000000..4354a5a --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1same__as_1_1apply.html @@ -0,0 +1,126 @@ + + + + + + + +uTL: utl::meta::same_as< T1 >::apply< T2 > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::same_as< T1 >::apply< T2 > Struct Template Reference
    +
    +
    + +

    #include <invoke.h>

    +
    +Inheritance diagram for utl::meta::same_as< T1 >::apply< T2 >:
    +
    +
    + + +utl::meta::same_< T1, T2 > + +
    +

    Detailed Description

    +

    template<typename T1>
    +template<typename T2>
    +struct utl::meta::same_as< T1 >::apply< T2 >

    + + +

    Definition at line 354 of file invoke.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1same__as_1_1apply.png b/doc/html/structutl_1_1meta_1_1same__as_1_1apply.png new file mode 100644 index 0000000000000000000000000000000000000000..7388e83e9030cb72f0b8f4e960c010ec0b9668be GIT binary patch literal 997 zcmeAS@N?(olHy`uVBq!ia0vp^4}rLYgBeJwO{=*Dq$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ0OFUg1Ln;{G&b>Wtl>v`K`QfN%|NsBc z*dABtAn5C#w#%I@>-OCx52p$^y^v~Jm34f_!d0ts?*xQiH4~R;D{Wh!^XxhA3>_CH{+VeZ4BEAof&TLP;AJ(BXGbhk0U|aoMl6=G}Db^yo@=h z(hp+V5+!!EIl3%Kz7ybb#4JxkDQWiNw!|DICDYmbE-wGneC(e(yng#~X2%J|x)TMG z3(aQc?YB6bcQ~`@_?y=zk5gkp_FlaFRcQK}%^eg_|GnY3!7RCe+Oq~{Z=A_aKHltcE2uSR<9XiA^LERgH=N^rFh=~94zJS2rLkSD zcBVS--j&+uwi))g21s@8-gzOt?Py$$N}Hj`?8sS?d2(l`pL>{XS@k5>@OtOcs3+R< zPCbqBPIipUPXDy_?$#{==Ql;Wq^P^!Z&y+h|M>6q*VS#wF7u8(Q8^gjx3J>`=Z=LP z9l)3ZdiH?s^*m$*EYSrCD(>e3f*Y|%kTDSP#@|RVduGcK@KD;5?p*vGzL5i%|?~G~{Z?+Q} zJe(@IGUk0zaZk5*ojW;YV|-eaw5-<0c{HR)S#H99`k&m(2=UX>6Fl637^T%e_ z*KOhx&n-XKe&6LHy`OvdPxn(xpRgF7tvf?kzYbBK zmNjv`#mO!1?O(qIeVLSRnw2>>?0ikxM9|<4=-jsORA{Yxj&ENgB&zzo_!oD<-{TTnZKN6+ehnZH*J7 + + + + + + +uTL: utl::meta::seek_if_impl::seek_if_< typename, typename, index_t > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::seek_if_impl::seek_if_< typename, typename, index_t > Struct Template Reference
    +
    +
    + +

    #include <typelist.h>

    +

    Detailed Description

    +

    template<typename, typename, index_t>
    +struct utl::meta::seek_if_impl::seek_if_< typename, typename, index_t >

    + + +

    Definition at line 670 of file typelist.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4-members.html b/doc/html/structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4-members.html new file mode 100644 index 0000000..075d8c9 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::seek_if_impl::seek_if_< typelist< Head, Tail... >, Fn, N > Member List
    +
    + +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.html b/doc/html/structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.html new file mode 100644 index 0000000..329948d --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: utl::meta::seek_if_impl::seek_if_< typelist< Head, Tail... >, Fn, N > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::seek_if_impl::seek_if_< typelist< Head, Tail... >, Fn, N > Struct Template Reference
    +
    +
    + +

    #include <typelist.h>

    + + + + +

    +Public Types

    using type = if_< invoke_t< Fn, Head >, typelist< Head, Tail... >, eval< seek_if_< typelist< Tail... >, Fn, N+1 > > >
     
    +

    Detailed Description

    +

    template<typename Head, typename... Tail, typename Fn, index_t N>
    +struct utl::meta::seek_if_impl::seek_if_< typelist< Head, Tail... >, Fn, N >

    + + +

    Definition at line 673 of file typelist.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename Head , typename... Tail, typename Fn , index_t N>
    + + + + +
    using utl::meta::seek_if_impl::seek_if_< typelist< Head, Tail... >, Fn, N >::type = if_ < invoke_t<Fn, Head>, typelist<Head, Tail...>, eval<seek_if_< typelist<Tail...>, Fn, N+1> > >
    +
    + +

    Definition at line 681 of file typelist.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.js b/doc/html/structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.js new file mode 100644 index 0000000..af07155 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.js @@ -0,0 +1,4 @@ +var structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4 = +[ + [ "type", "structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.html#a2eddb7dab6c905a487811e253dc5b917", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4-members.html b/doc/html/structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4-members.html new file mode 100644 index 0000000..4bde29f --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::seek_if_impl::seek_if_< typelist<>, Fn, N > Member List
    +
    +
    + +

    This is the complete list of members for utl::meta::seek_if_impl::seek_if_< typelist<>, Fn, N >, including all inherited members.

    + + +
    type typedefutl::meta::seek_if_impl::seek_if_< typelist<>, Fn, N >
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.html b/doc/html/structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.html new file mode 100644 index 0000000..b34a491 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: utl::meta::seek_if_impl::seek_if_< typelist<>, Fn, N > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::seek_if_impl::seek_if_< typelist<>, Fn, N > Struct Template Reference
    +
    +
    + +

    #include <typelist.h>

    + + + + +

    +Public Types

    using type = typelist<>
     
    +

    Detailed Description

    +

    template<typename Fn, index_t N>
    +struct utl::meta::seek_if_impl::seek_if_< typelist<>, Fn, N >

    + + +

    Definition at line 686 of file typelist.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename Fn , index_t N>
    + + + + +
    using utl::meta::seek_if_impl::seek_if_< typelist<>, Fn, N >::type = typelist<>
    +
    + +

    Definition at line 687 of file typelist.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.js b/doc/html/structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.js new file mode 100644 index 0000000..b7e47b8 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.js @@ -0,0 +1,4 @@ +var structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4 = +[ + [ "type", "structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.html#a4a8d37653df9971c37bba6bfc346d009", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1transform__impl_1_1transform__.html b/doc/html/structutl_1_1meta_1_1transform__impl_1_1transform__.html new file mode 100644 index 0000000..a2806e7 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1transform__impl_1_1transform__.html @@ -0,0 +1,116 @@ + + + + + + + +uTL: utl::meta::transform_impl::transform_< typename, typename > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::transform_impl::transform_< typename, typename > Struct Template Reference
    +
    +
    + +

    #include <typelist.h>

    +

    Detailed Description

    +

    template<typename, typename = void>
    +struct utl::meta::transform_impl::transform_< typename, typename >

    + + +

    Definition at line 533 of file typelist.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts0_8_8_8_01_210aa6f1cfc8f50301d614f1b83a2a4f.html b/doc/html/structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts0_8_8_8_01_210aa6f1cfc8f50301d614f1b83a2a4f.html new file mode 100644 index 0000000..bec1265 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts0_8_8_8_01_210aa6f1cfc8f50301d614f1b83a2a4f.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::transform_impl::transform_< typelist< typelist< Ts0... >, typelist< Ts1... >, Fn >, void_t< invoke< Fn, Ts0, Ts1 >... > > Member List
    +
    + +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts0_8_8_8_01_8fba6bf3d0565d17a96950cb517db5f1.html b/doc/html/structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts0_8_8_8_01_8fba6bf3d0565d17a96950cb517db5f1.html new file mode 100644 index 0000000..fd8ec16 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts0_8_8_8_01_8fba6bf3d0565d17a96950cb517db5f1.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: utl::meta::transform_impl::transform_< typelist< typelist< Ts0... >, typelist< Ts1... >, Fn >, void_t< invoke< Fn, Ts0, Ts1 >... > > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::transform_impl::transform_< typelist< typelist< Ts0... >, typelist< Ts1... >, Fn >, void_t< invoke< Fn, Ts0, Ts1 >... > > Struct Template Reference
    +
    +
    + +

    #include <typelist.h>

    + + + + +

    +Public Types

    using type = typelist< invoke_t< Fn, Ts0, Ts1 >... >
     
    +

    Detailed Description

    +

    template<typename... Ts0, typename... Ts1, typename Fn>
    +struct utl::meta::transform_impl::transform_< typelist< typelist< Ts0... >, typelist< Ts1... >, Fn >, void_t< invoke< Fn, Ts0, Ts1 >... > >

    + + +

    Definition at line 544 of file typelist.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename... Ts0, typename... Ts1, typename Fn >
    + + + + +
    using utl::meta::transform_impl::transform_< typelist< typelist< Ts0... >, typelist< Ts1... >, Fn >, void_t< invoke< Fn, Ts0, Ts1 >... > >::type = typelist< invoke_t<Fn, Ts0, Ts1>... >
    +
    + +

    Definition at line 548 of file typelist.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts0_8_8_8_01_8fba6bf3d0565d17a96950cb517db5f1.js b/doc/html/structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts0_8_8_8_01_8fba6bf3d0565d17a96950cb517db5f1.js new file mode 100644 index 0000000..afa45d0 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts0_8_8_8_01_8fba6bf3d0565d17a96950cb517db5f1.js @@ -0,0 +1,4 @@ +var structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts0_8_8_8_01_8fba6bf3d0565d17a96950cb517db5f1 = +[ + [ "type", "structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts0_8_8_8_01_8fba6bf3d0565d17a96950cb517db5f1.html#a284cc6268deadee714a5107d5d153285", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts_8_8_8_01_40fe2b1c8ede658aadb6925de73541689.html b/doc/html/structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts_8_8_8_01_40fe2b1c8ede658aadb6925de73541689.html new file mode 100644 index 0000000..68b0f9e --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts_8_8_8_01_40fe2b1c8ede658aadb6925de73541689.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: utl::meta::transform_impl::transform_< typelist< typelist< Ts... >, Fn >, void_t< invoke< Fn, Ts >... > > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::transform_impl::transform_< typelist< typelist< Ts... >, Fn >, void_t< invoke< Fn, Ts >... > > Struct Template Reference
    +
    +
    + +

    #include <typelist.h>

    + + + + +

    +Public Types

    using type = typelist< invoke_t< Fn, Ts >... >
     
    +

    Detailed Description

    +

    template<typename... Ts, typename Fn>
    +struct utl::meta::transform_impl::transform_< typelist< typelist< Ts... >, Fn >, void_t< invoke< Fn, Ts >... > >

    + + +

    Definition at line 536 of file typelist.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename... Ts, typename Fn >
    + + + + +
    using utl::meta::transform_impl::transform_< typelist< typelist< Ts... >, Fn >, void_t< invoke< Fn, Ts >... > >::type = typelist< invoke_t<Fn, Ts>... >
    +
    + +

    Definition at line 540 of file typelist.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts_8_8_8_01_40fe2b1c8ede658aadb6925de73541689.js b/doc/html/structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts_8_8_8_01_40fe2b1c8ede658aadb6925de73541689.js new file mode 100644 index 0000000..2e743a4 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts_8_8_8_01_40fe2b1c8ede658aadb6925de73541689.js @@ -0,0 +1,4 @@ +var structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts_8_8_8_01_40fe2b1c8ede658aadb6925de73541689 = +[ + [ "type", "structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts_8_8_8_01_40fe2b1c8ede658aadb6925de73541689.html#afb15f91a804a184a7b614c632737f0d0", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts_8_8_8_01_493f0366db194c680358b180935dbfb7b.html b/doc/html/structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts_8_8_8_01_493f0366db194c680358b180935dbfb7b.html new file mode 100644 index 0000000..2da354d --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts_8_8_8_01_493f0366db194c680358b180935dbfb7b.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::transform_impl::transform_< typelist< typelist< Ts... >, Fn >, void_t< invoke< Fn, Ts >... > > Member List
    +
    + +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy__.html b/doc/html/structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy__.html new file mode 100644 index 0000000..1c6bf10 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy__.html @@ -0,0 +1,116 @@ + + + + + + + +uTL: utl::meta::transform_lazy_impl::transform_lazy_< typename, typename > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::transform_lazy_impl::transform_lazy_< typename, typename > Struct Template Reference
    +
    +
    + +

    #include <typelist.h>

    +

    Detailed Description

    +

    template<typename, typename = void>
    +struct utl::meta::transform_lazy_impl::transform_lazy_< typename, typename >

    + + +

    Definition at line 575 of file typelist.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t00b6012e781e63c677ebb80dc9a18995.html b/doc/html/structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t00b6012e781e63c677ebb80dc9a18995.html new file mode 100644 index 0000000..93d5af7 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t00b6012e781e63c677ebb80dc9a18995.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::transform_lazy_impl::transform_lazy_< typelist< typelist< Ts... >, Fn >, void_t< invoke< Fn, Ts >... > > Member List
    +
    + +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t14ff615a4bff6c4c3701df9c38aaa6a5.html b/doc/html/structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t14ff615a4bff6c4c3701df9c38aaa6a5.html new file mode 100644 index 0000000..63375eb --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t14ff615a4bff6c4c3701df9c38aaa6a5.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: utl::meta::transform_lazy_impl::transform_lazy_< typelist< typelist< Ts0... >, typelist< Ts1... >, Fn >, void_t< invoke< Fn, Ts0, Ts1 >... > > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::transform_lazy_impl::transform_lazy_< typelist< typelist< Ts0... >, typelist< Ts1... >, Fn >, void_t< invoke< Fn, Ts0, Ts1 >... > > Struct Template Reference
    +
    +
    + +

    #include <typelist.h>

    + + + + +

    +Public Types

    using type = typelist< invoke< Fn, Ts0, Ts1 >... >
     
    +

    Detailed Description

    +

    template<typename... Ts0, typename... Ts1, typename Fn>
    +struct utl::meta::transform_lazy_impl::transform_lazy_< typelist< typelist< Ts0... >, typelist< Ts1... >, Fn >, void_t< invoke< Fn, Ts0, Ts1 >... > >

    + + +

    Definition at line 588 of file typelist.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename... Ts0, typename... Ts1, typename Fn >
    + + + + +
    using utl::meta::transform_lazy_impl::transform_lazy_< typelist< typelist< Ts0... >, typelist< Ts1... >, Fn >, void_t< invoke< Fn, Ts0, Ts1 >... > >::type = typelist< invoke<Fn, Ts0, Ts1>... >
    +
    + +

    Definition at line 592 of file typelist.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t14ff615a4bff6c4c3701df9c38aaa6a5.js b/doc/html/structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t14ff615a4bff6c4c3701df9c38aaa6a5.js new file mode 100644 index 0000000..e9af87e --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t14ff615a4bff6c4c3701df9c38aaa6a5.js @@ -0,0 +1,4 @@ +var structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t14ff615a4bff6c4c3701df9c38aaa6a5 = +[ + [ "type", "structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t14ff615a4bff6c4c3701df9c38aaa6a5.html#a09eb2a1f5d8fa4468eef608f5abfa22d", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t56243bc35bf73da8271cb88f34751f3a.html b/doc/html/structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t56243bc35bf73da8271cb88f34751f3a.html new file mode 100644 index 0000000..2670e3a --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t56243bc35bf73da8271cb88f34751f3a.html @@ -0,0 +1,144 @@ + + + + + + + +uTL: utl::meta::transform_lazy_impl::transform_lazy_< typelist< typelist< Ts... >, Fn >, void_t< invoke< Fn, Ts >... > > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::transform_lazy_impl::transform_lazy_< typelist< typelist< Ts... >, Fn >, void_t< invoke< Fn, Ts >... > > Struct Template Reference
    +
    +
    + +

    #include <typelist.h>

    + + + + +

    +Public Types

    using type = typelist< invoke< Fn, Ts >... >
     
    +

    Detailed Description

    +

    template<typename... Ts, typename Fn>
    +struct utl::meta::transform_lazy_impl::transform_lazy_< typelist< typelist< Ts... >, Fn >, void_t< invoke< Fn, Ts >... > >

    + + +

    Definition at line 579 of file typelist.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename... Ts, typename Fn >
    + + + + +
    using utl::meta::transform_lazy_impl::transform_lazy_< typelist< typelist< Ts... >, Fn >, void_t< invoke< Fn, Ts >... > >::type = typelist< invoke<Fn, Ts>... >
    +
    + +

    Definition at line 583 of file typelist.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t56243bc35bf73da8271cb88f34751f3a.js b/doc/html/structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t56243bc35bf73da8271cb88f34751f3a.js new file mode 100644 index 0000000..b1fc6a3 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t56243bc35bf73da8271cb88f34751f3a.js @@ -0,0 +1,4 @@ +var structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t56243bc35bf73da8271cb88f34751f3a = +[ + [ "type", "structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t56243bc35bf73da8271cb88f34751f3a.html#add92e9d4d6e95f5710d87cd4fe7c50da", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t6d1a2f622232e354dad83e3d378deba7.html b/doc/html/structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t6d1a2f622232e354dad83e3d378deba7.html new file mode 100644 index 0000000..860d054 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t6d1a2f622232e354dad83e3d378deba7.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::transform_lazy_impl::transform_lazy_< typelist< typelist< Ts0... >, typelist< Ts1... >, Fn >, void_t< invoke< Fn, Ts0, Ts1 >... > > Member List
    +
    + +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1typelist-members.html b/doc/html/structutl_1_1meta_1_1typelist-members.html new file mode 100644 index 0000000..db9fe90 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1typelist-members.html @@ -0,0 +1,111 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::typelist< Ts > Member List
    +
    +
    + +

    This is the complete list of members for utl::meta::typelist< Ts >, including all inherited members.

    + + + + + +
    empty() noexceptutl::meta::typelist< Ts >inlinestatic
    size() noexceptutl::meta::typelist< Ts >inlinestatic
    times typedefutl::meta::typelist< Ts >
    type typedefutl::meta::typelist< Ts >
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1typelist.html b/doc/html/structutl_1_1meta_1_1typelist.html new file mode 100644 index 0000000..e348138 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1typelist.html @@ -0,0 +1,257 @@ + + + + + + + +uTL: utl::meta::typelist< Ts > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::typelist< Ts > Struct Template Reference
    +
    +
    + +

    #include <typelist.h>

    + + + + + + + + + + + + +

    +Classes

    struct  cat_
     
    struct  cat_< typelist< L1... >, typelist< L2... > >
     
    struct  times_
     
    struct  times_< 0, T... >
     
    struct  times_< 1, T... >
     
    + + + + + + + +

    +Public Types

    using type = typelist
     act as identity More...
     
    template<size_t N>
    using times = eval< times_< N, Ts... > >
     
    + + + + + +

    +Static Public Member Functions

    static constexpr size_t size () noexcept
     
    static constexpr bool empty () noexcept
     
    +

    Detailed Description

    +

    template<typename... Ts>
    +struct utl::meta::typelist< Ts >

    + + +

    Definition at line 65 of file typelist.h.

    +

    Member Typedef Documentation

    + +

    ◆ times

    + +
    +
    +
    +template<typename... Ts>
    +
    +template<size_t N>
    + + + + +
    using utl::meta::typelist< Ts >::times = eval< times_<N, Ts...> >
    +
    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/typelist.h.
    +
    +

    Definition at line 117 of file typelist.h.

    + +
    +
    + +

    ◆ type

    + +
    +
    +
    +template<typename... Ts>
    + + + + +
    using utl::meta::typelist< Ts >::type = typelist
    +
    + +

    act as identity

    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/typelist.h.
    +
    +

    Definition at line 66 of file typelist.h.

    + +
    +
    +

    Member Function Documentation

    + +

    ◆ empty()

    + +
    +
    +
    +template<typename... Ts>
    + + + + + +
    + + + + + + + +
    static constexpr bool utl::meta::typelist< Ts >::empty ()
    +
    +inlinestaticnoexcept
    +
    +
    Returns
    true if empty
    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/typelist.h.
    +
    +

    Definition at line 73 of file typelist.h.

    + +
    +
    + +

    ◆ size()

    + +
    +
    +
    +template<typename... Ts>
    + + + + + +
    + + + + + + + +
    static constexpr size_t utl::meta::typelist< Ts >::size ()
    +
    +inlinestaticnoexcept
    +
    +
    Returns
    sizeof...(Ts)
    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/typelist.h.
    +
    +

    Definition at line 69 of file typelist.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1typelist.js b/doc/html/structutl_1_1meta_1_1typelist.js new file mode 100644 index 0000000..531ba4d --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1typelist.js @@ -0,0 +1,12 @@ +var structutl_1_1meta_1_1typelist = +[ + [ "cat_", "structutl_1_1meta_1_1typelist_1_1cat__.html", null ], + [ "cat_< typelist< L1... >, typelist< L2... > >", "structutl_1_1meta_1_1typelist_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4.html", "structutl_1_1meta_1_1typelist_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4" ], + [ "times_", "structutl_1_1meta_1_1typelist_1_1times__.html", "structutl_1_1meta_1_1typelist_1_1times__" ], + [ "times_< 0, T... >", "structutl_1_1meta_1_1typelist_1_1times___3_010_00_01_t_8_8_8_01_4.html", "structutl_1_1meta_1_1typelist_1_1times___3_010_00_01_t_8_8_8_01_4" ], + [ "times_< 1, T... >", "structutl_1_1meta_1_1typelist_1_1times___3_011_00_01_t_8_8_8_01_4.html", "structutl_1_1meta_1_1typelist_1_1times___3_011_00_01_t_8_8_8_01_4" ], + [ "times", "structutl_1_1meta_1_1typelist.html#ac444325211852c503605ec6c820f3eae", null ], + [ "type", "structutl_1_1meta_1_1typelist.html#a7332ca3d7a7ec5b730e24a4dab743fa6", null ], + [ "empty", "structutl_1_1meta_1_1typelist.html#ac502a5ad1b830e75693c2e3c7a7b1cb8", null ], + [ "size", "structutl_1_1meta_1_1typelist.html#af898a273ef1135286de6cef169db9c2d", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1typelist_1_1cat__.html b/doc/html/structutl_1_1meta_1_1typelist_1_1cat__.html new file mode 100644 index 0000000..5784490 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1typelist_1_1cat__.html @@ -0,0 +1,115 @@ + + + + + + + +uTL: utl::meta::typelist< Ts >::cat_<... > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::typelist< Ts >::cat_<... > Struct Template Reference
    +
    +
    +

    Detailed Description

    +

    template<typename... Ts>
    +template<typename...>
    +struct utl::meta::typelist< Ts >::cat_<... >

    + + +

    Definition at line 78 of file typelist.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1typelist_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4-members.html b/doc/html/structutl_1_1meta_1_1typelist_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4-members.html new file mode 100644 index 0000000..3324527 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1typelist_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::typelist< Ts >::cat_< typelist< L1... >, typelist< L2... > > Member List
    +
    + +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1typelist_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4.html b/doc/html/structutl_1_1meta_1_1typelist_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4.html new file mode 100644 index 0000000..08fbb72 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1typelist_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4.html @@ -0,0 +1,145 @@ + + + + + + + +uTL: utl::meta::typelist< Ts >::cat_< typelist< L1... >, typelist< L2... > > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::typelist< Ts >::cat_< typelist< L1... >, typelist< L2... > > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = typelist< L1..., L2... >
     
    +

    Detailed Description

    +

    template<typename... Ts>
    +template<typename... L1, typename... L2>
    +struct utl::meta::typelist< Ts >::cat_< typelist< L1... >, typelist< L2... > >

    + + +

    Definition at line 80 of file typelist.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename... Ts>
    +
    +template<typename... L1, typename... L2>
    + + + + +
    using utl::meta::typelist< Ts >::cat_< typelist< L1... >, typelist< L2... > >::type = typelist<L1..., L2...>
    +
    + +

    Definition at line 81 of file typelist.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1typelist_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4.js b/doc/html/structutl_1_1meta_1_1typelist_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4.js new file mode 100644 index 0000000..95b6278 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1typelist_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4.js @@ -0,0 +1,4 @@ +var structutl_1_1meta_1_1typelist_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4 = +[ + [ "type", "structutl_1_1meta_1_1typelist_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4.html#adae915036f972f13b580e335c2ec2fa2", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1typelist_1_1times__-members.html b/doc/html/structutl_1_1meta_1_1typelist_1_1times__-members.html new file mode 100644 index 0000000..dcc4edc --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1typelist_1_1times__-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::typelist< Ts >::times_< N, T > Member List
    +
    +
    + +

    This is the complete list of members for utl::meta::typelist< Ts >::times_< N, T >, including all inherited members.

    + + +
    type typedefutl::meta::typelist< Ts >::times_< N, T >
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1typelist_1_1times__.html b/doc/html/structutl_1_1meta_1_1typelist_1_1times__.html new file mode 100644 index 0000000..dc90fae --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1typelist_1_1times__.html @@ -0,0 +1,146 @@ + + + + + + + +uTL: utl::meta::typelist< Ts >::times_< N, T > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::typelist< Ts >::times_< N, T > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = eval< cat_< eval< times_< N/2, T... > >, eval< times_< N - N/2, T... > > > >
     
    +

    Detailed Description

    +

    template<typename... Ts>
    +template<size_t N, typename ... T>
    +struct utl::meta::typelist< Ts >::times_< N, T >

    + + +

    Definition at line 85 of file typelist.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename... Ts>
    +
    +template<size_t N, typename ... T>
    + + + + +
    using utl::meta::typelist< Ts >::times_< N, T >::type = eval< cat_< eval<times_<N/2, T...> >, eval<times_<N - N/2, T...> > > >
    +
    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/typelist.h.
    +
    +

    Definition at line 92 of file typelist.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1typelist_1_1times__.js b/doc/html/structutl_1_1meta_1_1typelist_1_1times__.js new file mode 100644 index 0000000..a409a97 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1typelist_1_1times__.js @@ -0,0 +1,4 @@ +var structutl_1_1meta_1_1typelist_1_1times__ = +[ + [ "type", "structutl_1_1meta_1_1typelist_1_1times__.html#abcf09cf6ea99301ed77748d71ea093ac", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1typelist_1_1times___3_010_00_01_t_8_8_8_01_4-members.html b/doc/html/structutl_1_1meta_1_1typelist_1_1times___3_010_00_01_t_8_8_8_01_4-members.html new file mode 100644 index 0000000..eade8d3 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1typelist_1_1times___3_010_00_01_t_8_8_8_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::typelist< Ts >::times_< 0, T... > Member List
    +
    +
    + +

    This is the complete list of members for utl::meta::typelist< Ts >::times_< 0, T... >, including all inherited members.

    + + +
    type typedefutl::meta::typelist< Ts >::times_< 0, T... >
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1typelist_1_1times___3_010_00_01_t_8_8_8_01_4.html b/doc/html/structutl_1_1meta_1_1typelist_1_1times___3_010_00_01_t_8_8_8_01_4.html new file mode 100644 index 0000000..9ab0dc6 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1typelist_1_1times___3_010_00_01_t_8_8_8_01_4.html @@ -0,0 +1,145 @@ + + + + + + + +uTL: utl::meta::typelist< Ts >::times_< 0, T... > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::typelist< Ts >::times_< 0, T... > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = typelist<>
     
    +

    Detailed Description

    +

    template<typename... Ts>
    +template<typename ... T>
    +struct utl::meta::typelist< Ts >::times_< 0, T... >

    + + +

    Definition at line 99 of file typelist.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename... Ts>
    +
    +template<typename ... T>
    + + + + +
    using utl::meta::typelist< Ts >::times_< 0, T... >::type = typelist<>
    +
    + +

    Definition at line 100 of file typelist.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1typelist_1_1times___3_010_00_01_t_8_8_8_01_4.js b/doc/html/structutl_1_1meta_1_1typelist_1_1times___3_010_00_01_t_8_8_8_01_4.js new file mode 100644 index 0000000..54753a7 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1typelist_1_1times___3_010_00_01_t_8_8_8_01_4.js @@ -0,0 +1,4 @@ +var structutl_1_1meta_1_1typelist_1_1times___3_010_00_01_t_8_8_8_01_4 = +[ + [ "type", "structutl_1_1meta_1_1typelist_1_1times___3_010_00_01_t_8_8_8_01_4.html#a1a23fce8f9777a9dfe123c02a16c9a5d", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1typelist_1_1times___3_011_00_01_t_8_8_8_01_4-members.html b/doc/html/structutl_1_1meta_1_1typelist_1_1times___3_011_00_01_t_8_8_8_01_4-members.html new file mode 100644 index 0000000..5415b65 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1typelist_1_1times___3_011_00_01_t_8_8_8_01_4-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::typelist< Ts >::times_< 1, T... > Member List
    +
    +
    + +

    This is the complete list of members for utl::meta::typelist< Ts >::times_< 1, T... >, including all inherited members.

    + + +
    type typedefutl::meta::typelist< Ts >::times_< 1, T... >
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1typelist_1_1times___3_011_00_01_t_8_8_8_01_4.html b/doc/html/structutl_1_1meta_1_1typelist_1_1times___3_011_00_01_t_8_8_8_01_4.html new file mode 100644 index 0000000..8a6daa9 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1typelist_1_1times___3_011_00_01_t_8_8_8_01_4.html @@ -0,0 +1,145 @@ + + + + + + + +uTL: utl::meta::typelist< Ts >::times_< 1, T... > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::typelist< Ts >::times_< 1, T... > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    using type = typelist< T... >
     
    +

    Detailed Description

    +

    template<typename... Ts>
    +template<typename ... T>
    +struct utl::meta::typelist< Ts >::times_< 1, T... >

    + + +

    Definition at line 95 of file typelist.h.

    +

    Member Typedef Documentation

    + +

    ◆ type

    + +
    +
    +
    +template<typename... Ts>
    +
    +template<typename ... T>
    + + + + +
    using utl::meta::typelist< Ts >::times_< 1, T... >::type = typelist<T...>
    +
    + +

    Definition at line 96 of file typelist.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1typelist_1_1times___3_011_00_01_t_8_8_8_01_4.js b/doc/html/structutl_1_1meta_1_1typelist_1_1times___3_011_00_01_t_8_8_8_01_4.js new file mode 100644 index 0000000..3b469a4 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1typelist_1_1times___3_011_00_01_t_8_8_8_01_4.js @@ -0,0 +1,4 @@ +var structutl_1_1meta_1_1typelist_1_1times___3_011_00_01_t_8_8_8_01_4 = +[ + [ "type", "structutl_1_1meta_1_1typelist_1_1times___3_011_00_01_t_8_8_8_01_4.html#af90bd9e6b4394edbc09990f3fd1246b6", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1wrap-members.html b/doc/html/structutl_1_1meta_1_1wrap-members.html new file mode 100644 index 0000000..20b2098 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1wrap-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::wrap< F > Member List
    +
    +
    + +

    This is the complete list of members for utl::meta::wrap< F >, including all inherited members.

    + + +
    apply typedefutl::meta::wrap< F >
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1wrap.html b/doc/html/structutl_1_1meta_1_1wrap.html new file mode 100644 index 0000000..487679e --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1wrap.html @@ -0,0 +1,150 @@ + + + + + + + +uTL: utl::meta::wrap< F > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::wrap< F > Struct Template Reference
    +
    +
    + +

    #include <invoke.h>

    + + + + + +

    +Public Types

    template<typename... Args>
    using apply = F< Args... >
     
    +

    Detailed Description

    +

    template<template< typename... > class F>
    +struct utl::meta::wrap< F >

    + +

    wrap

    +

    wrap is a higher-order primitive that wraps an n-ary Metafunction to create a corresponding Metafunction Class (Invocable). This way we can pass Metafunctions as types to other metafunctions and let them invoke the inner templated apply

    + +

    Definition at line 100 of file invoke.h.

    +

    Member Typedef Documentation

    + +

    ◆ apply

    + +
    +
    +
    +template<template< typename... > class F>
    +
    +template<typename... Args>
    + + + + +
    using utl::meta::wrap< F >::apply = F<Args...>
    +
    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/invoke.h.
    +
    +

    Definition at line 102 of file invoke.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1wrap.js b/doc/html/structutl_1_1meta_1_1wrap.js new file mode 100644 index 0000000..4a07666 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1wrap.js @@ -0,0 +1,4 @@ +var structutl_1_1meta_1_1wrap = +[ + [ "apply", "structutl_1_1meta_1_1wrap.html#a71fe22d6a841f27b891ca3344ee97b07", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1meta_1_1wrap__i-members.html b/doc/html/structutl_1_1meta_1_1wrap__i-members.html new file mode 100644 index 0000000..89af7df --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1wrap__i-members.html @@ -0,0 +1,108 @@ + + + + + + + +uTL: Member List + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::meta::wrap_i< T, F > Member List
    +
    +
    + +

    This is the complete list of members for utl::meta::wrap_i< T, F >, including all inherited members.

    + + +
    apply typedefutl::meta::wrap_i< T, F >
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1wrap__i.html b/doc/html/structutl_1_1meta_1_1wrap__i.html new file mode 100644 index 0000000..a87f671 --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1wrap__i.html @@ -0,0 +1,152 @@ + + + + + + + +uTL: utl::meta::wrap_i< T, F > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    utl::meta::wrap_i< T, F > Struct Template Reference
    +
    +
    + +

    Wrap a template F taking literal constants of type T into an Invokable. + More...

    + +

    #include <invoke.h>

    + + + + + +

    +Public Types

    template<typename... Ts>
    using apply = F< Ts::type::value... >
     
    +

    Detailed Description

    +

    template<typename T, template< T... > class F>
    +struct utl::meta::wrap_i< T, F >

    + +

    Wrap a template F taking literal constants of type T into an Invokable.

    + +

    Definition at line 107 of file invoke.h.

    +

    Member Typedef Documentation

    + +

    ◆ apply

    + +
    +
    +
    +template<typename T , template< T... > class F>
    +
    +template<typename... Ts>
    + + + + +
    using utl::meta::wrap_i< T, F >::apply = F<Ts::type::value...>
    +
    +
    Examples:
    W:/Work/Software/Libraries/utl/include/utl/meta/invoke.h.
    +
    +

    Definition at line 110 of file invoke.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1meta_1_1wrap__i.js b/doc/html/structutl_1_1meta_1_1wrap__i.js new file mode 100644 index 0000000..bae970b --- /dev/null +++ b/doc/html/structutl_1_1meta_1_1wrap__i.js @@ -0,0 +1,4 @@ +var structutl_1_1meta_1_1wrap__i = +[ + [ "apply", "structutl_1_1meta_1_1wrap__i.html#a14e7ddd17abbcecf2658a3dd4616e0d2", null ] +]; \ No newline at end of file diff --git a/doc/html/structutl_1_1out__dev__details_1_1is__out__dev__.html b/doc/html/structutl_1_1out__dev__details_1_1is__out__dev__.html new file mode 100644 index 0000000..a587803 --- /dev/null +++ b/doc/html/structutl_1_1out__dev__details_1_1is__out__dev__.html @@ -0,0 +1,128 @@ + + + + + + + +uTL: utl::out_dev_details::is_out_dev_< _Tp, typename > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::out_dev_details::is_out_dev_< _Tp, typename > Struct Template Reference
    +
    +
    + +

    Primary template to catch any non output device types. + More...

    + +

    #include <out_dev.h>

    +
    +Inheritance diagram for utl::out_dev_details::is_out_dev_< _Tp, typename >:
    +
    +
    + + + +
    +

    Detailed Description

    +

    template<typename _Tp, typename = void>
    +struct utl::out_dev_details::is_out_dev_< _Tp, typename >

    + +

    Primary template to catch any non output device types.

    + +

    Definition at line 329 of file out_dev.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1out__dev__details_1_1is__out__dev__.png b/doc/html/structutl_1_1out__dev__details_1_1is__out__dev__.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc572c78f0c3abf74591d0e6aaa87b788113a6 GIT binary patch literal 813 zcmeAS@N?(olHy`uVBq!ia0y~yVAKV&12~w0Wc9bpazz$e7@|Ns9$=8HF9OZyK^ z0J6aNz<~p-opT@}UXz+s_Nr`CIjM?-Q>CK6#vDI#+q`>i zn&?JV&+sd@Tc=%5UuOGGHB%_<)Y{f>vve+|tv+%#ILGsnVfNFtnp;Jlr7X2bSKTJB zk|}m+yUNMbZC-n7Pt4Tt{LlFL_O9>0JSXYwRQ1#Y8is+*qeDX%u6kw4ApD6{fPp88 z`@oae+PfHRKnyh?LkGxEU&jywq*S+2nM&Il8Y;SK6^}*(!-q*Xm|8Ky(2i`U-1 zbGiSnoS{7@`R?+E6JN)ETFiKM>%3Tp^1nWQf2OT17yq+z?PmG^8`i$xe*0{0^ep@8 z`%7|De*gQJYFuNnZSR`h7yK^WuM^`A3j%v>0Mz2f_YTWv4Pew?^=`s@4DINRa}Y4M-uyI2=| zJ+n4AI{mZgmhkXo`-JSw<*~0{AD_mR6;=?}Deq#vW}0@iukLnjnXsEK(n^0*^WO4x zEnf2K+1oU8?T;q6qIYh!*%kfJbH7E`rCV7=2_h92J-=1|Se4(q`)}oz?Z2*Nym?`KUex)`)v$$ m?WiF=d+n-K0ij=K*^3nHs(Jq+`XDfEGkCiCxvX + + + + + + +uTL: utl::out_dev_details::is_out_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_put1_t< _Tp >, size_t >, use_if_same_t< try_put2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::out_dev_details::is_out_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_put1_t< _Tp >, size_t >, use_if_same_t< try_put2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > > Struct Template Reference
    +
    +
    + +

    template to catch a proper output device type + More...

    + +

    #include <out_dev.h>

    +
    +Inheritance diagram for utl::out_dev_details::is_out_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_put1_t< _Tp >, size_t >, use_if_same_t< try_put2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > >:
    +
    +
    + + + +
    +

    Detailed Description

    +

    template<typename _Tp>
    +struct utl::out_dev_details::is_out_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_put1_t< _Tp >, size_t >, use_if_same_t< try_put2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > >

    + +

    template to catch a proper output device type

    + +

    Definition at line 333 of file out_dev.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1out__dev__details_1_1is__out__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1fbf8d2409fc6de9dd6b9649bedc1b379.png b/doc/html/structutl_1_1out__dev__details_1_1is__out__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1fbf8d2409fc6de9dd6b9649bedc1b379.png new file mode 100644 index 0000000000000000000000000000000000000000..471ccd020b199ef635e8f2f40389fcf1fe8e62dd GIT binary patch literal 3639 zcmeHKi&qm@8V6}N79VtNRVtLY?N&Th1BC*zJaXufTC0FnFe^f$QUswTJPd>Y8I>Xj z5u#@os0N72Rum+uA|S6B1Vah|BCV0-kp~2b5c4vGye7%URxI(*Q~rScoo{CD%>3^C ze&6@aow-x6KXmsR`%U&XHa2Vae6j0*jm=uJrM-Wpon_y$W0T%;aNNHyJlJeDTbfUw zsR@+Mi~Va{!a6T;K6HU zeP*-Bj_0h{aWwwv8ziRJ@uA?KpOk({A`JMZE!#LLH8&ELu*#J3np;27Ho!*!|6EhmOK<=L^)iHHXe|e?a;#>BbZ)AEO29_t}4sG26Qo%Q+zIi`T?$XJS(z`nPM{K zGPI}6UtJXpyZ9>-92wraT~!dOrg|cay%|?g%J9H?Q)dYg@W)L`ZCEj@OWgRp!w&uZuwe58#ZNE&!;p~0aBvl?@+e~D07{+hr1aGk&6(Jt6HgdVQ$;DBRq8sSB8KZ zb_oY2YAU`(|&{y&@?yeBBmH25beO`d# zTC$oo>T7oY#EGKubU`08@_N%U&6+(5q`xJviWUxsEW0RTr>NArK`4!!X=uozNZJ!b z-lxS!4E{KoXI2C&cLW`gb$FVcSLn*fO39kfG`EE5VjVFd{HbZDBC_fX;K=3e&5(Lut>)hz-Hke^ z{PJsuRlcAz{%0dK-E@R!Hs`gfwaBl>Lola(`joUwv$VF}_T1lM$nbR8__uGTbnk8B z;7f$)bTa;3P;X$^$UlF2%pSK_I`lL7ow?WzNuj{a21KsL+{d4U>7|Hcg8rT%Fv&1i zVhgsVVf5_3!;w|y(D01Q&E@+A#p6Q=-R4S66(!bIw%Zq202q$ zK{9=|g)NQ+lJuwk>I6Dd5Zao#YMdZ`PEat5^2GQ8h#-D2lV=t{iz$rvyTapT+2?$!-Z?;kZX9 z+Y~J@M0zBpsXnX=aPEL;q@9UL*PD~zkGIhf+Qy9x^-O^~mi=N@PTQH?YY?KjlDE{K z2l1II?pENKBktBD@}d5tpIUuWDqwuKDS3-vM=?g;QB|gG_L0nAqJHCl{#nX3ADOAD z!T>!o8n(AZax-Gb>wbNF`|F{THNf+aHEXBgZ)=?>8K1ad?Cz9^UFrT%#91?}Ga`|B z7&6c^oL>l3i?82>kZ`v6I?R+xz-XSK7677kQ6j>w!`dK9uW5gdBoN*U z@<%8;4&L|YkJoA{Q{nvTP2fq9ZJ1VGjL7akd1MqmhrILEX?ZI6;W?ECIi?#4 zAo3DFg6bQnduinCZC4qeKG!hi(m|2CFrqBj#fyZNkQ2f=Ty=L)rzhXzf;{IY!j{uz1eT>{cY&*ZU~N+tY!B&?@%w9W=!E@HSU9llUg@N@F` z0lYt7MEqvz48o-At=ARRigrAqny0sRBo3efu8^lYyy_?PZLwb=VEHn=&CM86ZwTtt zkX(;-jJC?U(KC)ickzAr0w^~2i*@f*y2EMkc`)*kzQF+?*vaM2uet&pPf@{2zYx&Ew*%KVP Ki~iZsv;PC=7Hebx literal 0 HcmV?d00001 diff --git a/doc/html/structutl_1_1outdev__it__details_1_1is__outdev__it__.html b/doc/html/structutl_1_1outdev__it__details_1_1is__outdev__it__.html new file mode 100644 index 0000000..dfcddeb --- /dev/null +++ b/doc/html/structutl_1_1outdev__it__details_1_1is__outdev__it__.html @@ -0,0 +1,128 @@ + + + + + + + +uTL: utl::outdev_it_details::is_outdev_it_< _Tp, typename > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::outdev_it_details::is_outdev_it_< _Tp, typename > Struct Template Reference
    +
    +
    + +

    Primary template to catch any non SPI interface types. + More...

    + +

    #include <dev_iterators.h>

    +
    +Inheritance diagram for utl::outdev_it_details::is_outdev_it_< _Tp, typename >:
    +
    +
    + + + +
    +

    Detailed Description

    +

    template<typename _Tp, typename = void>
    +struct utl::outdev_it_details::is_outdev_it_< _Tp, typename >

    + +

    Primary template to catch any non SPI interface types.

    + +

    Definition at line 417 of file dev_iterators.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1outdev__it__details_1_1is__outdev__it__.png b/doc/html/structutl_1_1outdev__it__details_1_1is__outdev__it__.png new file mode 100644 index 0000000000000000000000000000000000000000..03fb6a75b0b2a19df3b617590eda4a4f56e6f67b GIT binary patch literal 832 zcmeAS@N?(olHy`uVBq!ia0y~yV6+6X12~w0Wa#EkPl1#~fKQ0)|NsAi%olIImi8Z- z0AzvjfddCvJMYK?xf~@ye!&btMIdnXREQA+1Jij=7srqa#i_PYzwHb|KUqFk(QH2J8N@bw@)91P zsgf{jBhI+G%;@MaWLWl;{Qv_`QZWN(UELbK1ew{)9veC~TQwx+@F}$KWlY&%*}!AQ zKH=aq2BRA?4s5fTPb3sGNCG9B&r%{e<93WoOJ|2f3xffJGpfPP*?F0b4}C&WPZzWgd8s~dYb*rZ+q1kNcv|=UTZHgK!x>-C-K)HO>;8MT%rk-^?teGe zxfk!9zGgZ5@4ev@Zzc8|%UQm_;JQtCNqGOd+_hb&XI!20{Y-5A(Vx!`#e7ake)sF~ zWkc(Ga+c+p?^b&tbi2}&XI*PDQomiBqn`TxoYnPn|CbxK zU)y>2&ScSr(QEgX=Ed`Ucl~(de4q7KyYhcs|L*PDTe&+ZEPH!}eJAIIptozUKEGbR zs&}_cwxpCspVn{2Iz{)|udgH&4j+H^?)7s!%~0kCxo!7qL^tmY(Mj$-Tc5?3P_(X$ pZ#MIf->AWUI7ttbJbON}@7{EXC*WSzQebjt@O1TaS?83{1OOy3fbjqT literal 0 HcmV?d00001 diff --git a/doc/html/structutl_1_1outdev__it__details_1_1is__outdev__it___3_01___tp_00_01meta_1_1void__t_3_01typename8786ebbbd0dc9ca1b14571e779d99d60.html b/doc/html/structutl_1_1outdev__it__details_1_1is__outdev__it___3_01___tp_00_01meta_1_1void__t_3_01typename8786ebbbd0dc9ca1b14571e779d99d60.html new file mode 100644 index 0000000..3f40462 --- /dev/null +++ b/doc/html/structutl_1_1outdev__it__details_1_1is__outdev__it___3_01___tp_00_01meta_1_1void__t_3_01typename8786ebbbd0dc9ca1b14571e779d99d60.html @@ -0,0 +1,128 @@ + + + + + + + +uTL: utl::outdev_it_details::is_outdev_it_< _Tp, meta::void_t< typename _Tp::value_type, typename _Tp::difference_type, typename _Tp::pointer, typename _Tp::reference, void > > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::outdev_it_details::is_outdev_it_< _Tp, meta::void_t< typename _Tp::value_type, typename _Tp::difference_type, typename _Tp::pointer, typename _Tp::reference, void > > Struct Template Reference
    +
    +
    + +

    template to catch a proper SPI interface type + More...

    + +

    #include <dev_iterators.h>

    +
    +Inheritance diagram for utl::outdev_it_details::is_outdev_it_< _Tp, meta::void_t< typename _Tp::value_type, typename _Tp::difference_type, typename _Tp::pointer, typename _Tp::reference, void > >:
    +
    +
    + + + +
    +

    Detailed Description

    +

    template<typename _Tp>
    +struct utl::outdev_it_details::is_outdev_it_< _Tp, meta::void_t< typename _Tp::value_type, typename _Tp::difference_type, typename _Tp::pointer, typename _Tp::reference, void > >

    + +

    template to catch a proper SPI interface type

    + +

    Definition at line 421 of file dev_iterators.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1outdev__it__details_1_1is__outdev__it___3_01___tp_00_01meta_1_1void__t_3_01typename8786ebbbd0dc9ca1b14571e779d99d60.png b/doc/html/structutl_1_1outdev__it__details_1_1is__outdev__it___3_01___tp_00_01meta_1_1void__t_3_01typename8786ebbbd0dc9ca1b14571e779d99d60.png new file mode 100644 index 0000000000000000000000000000000000000000..5c3cacbf80cd7fe232a453308da8c64a35883eec GIT binary patch literal 1646 zcmcgteKgZ+9A8{bZs`w+UeyUxVR3FrHoNk=>ort2VKU{&%hE2hjjgVG6Or14yv;p{ zT!&r}Hgsj$uq9?{{JccJ7*p10*mi&R$36F-&bfcx=bYzxKHqab-_Q4RzUMsOCo{m$ zbCbb#0~idp3G3w+2!rW@5Dw7Sg-##%7XZ3U1AKzrH5v^BKh7$Wa{syoA?*f-ivTkmq@Aypf*5AjG4pg>ghnaC+!?QijZz&TI z3fvGQN+6i@Psp+J*oM!x=bE0+wyW&$Vld1tus<<;Jkb7H_@SZTOh*jGvP}s`o?1Grx1dX4d4ZWtm@GgstnXjb@cTytS(f{+PF&D6Sly+*s-tJ% z*4A&H&XUDa|XPbV>EfABrkFy9IC2rl zLc5I>rw+>dvpEUQH;h#cl296XB+ak*>y$FGyc2j9m!c$)^{wBWor}TcZa53j(&Cd9 zf-2k*rH%JvgQf?3%Smb{a1EvU0uYFe*_l&Gr5{cjO5vnPjAIiKE$E*5;U$^f2s-Vh zxdRdagm>#b3RC-61D>~A16o?7Ms;sf5`GSoK4c~pg9T&K;&}g#+E|q#?t0V6p{*x@ zXVkMLr%!Awh;_(NU>DU9eV0elsEt{fo%KHQqZu7Kq3$h`F$phz!e;BR%XQrCB~cVX z%5fx?F**SXtvs1D2wre%ol|~JS*nzkgZDcJn`-~W-E6`uyAqmBh{!gHqct4}d+J$j zm@n>&9O9i5tyCg2yeG)KIWi5uKo0__k`;xOkQZ6yl{+9)FAozZyvy2X`DvTcn8T>d z$HVsw?<*-i=Va?@4*VjClqM@ui{z=Ir9pD51J{!4B81~Qu<+v*1<7k^} zoc!oSV(4q%?DSm|eT6NREaA%?W%IJ@-MpsBM?leFzuZ>y?p3;jCb($DakjQlIz-x$ zifmGZY#TbaB+ZaJ7cQ1=lHLuXhE;f8Bt@smLRwK~xZP#%kPPR;t6!&9#VhiIHXl4iKdFsH*np*5Uaz#VTM<7vG zdr|Ejsr4)2vo-kXDn`1ldWDT~8bsCtBoAc+h%Dwyqrvsgy{_o_&S4aVpg%h1kp-%Z zcSm4+pLab0!)HrHs!jUN3*W)er|QgBYyoGf7?pM literal 0 HcmV?d00001 diff --git a/doc/html/structutl_1_1output__iterator__tag.html b/doc/html/structutl_1_1output__iterator__tag.html new file mode 100644 index 0000000..991c9e0 --- /dev/null +++ b/doc/html/structutl_1_1output__iterator__tag.html @@ -0,0 +1,117 @@ + + + + + + + +uTL: utl::output_iterator_tag Struct Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::output_iterator_tag Struct Reference
    +
    +
    + +

    Iterator tags [std.iterator.tags] Extension: contiguous_iterator_tag for denoting contiguous iterators. + More...

    + +

    #include <dev_iterators.h>

    +

    Detailed Description

    +

    Iterator tags [std.iterator.tags] Extension: contiguous_iterator_tag for denoting contiguous iterators.

    + +

    Definition at line 55 of file dev_iterators.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1random__access__iterator__tag.html b/doc/html/structutl_1_1random__access__iterator__tag.html new file mode 100644 index 0000000..718653e --- /dev/null +++ b/doc/html/structutl_1_1random__access__iterator__tag.html @@ -0,0 +1,125 @@ + + + + + + + +uTL: utl::random_access_iterator_tag Struct Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::random_access_iterator_tag Struct Reference
    +
    +
    + +

    #include <dev_iterators.h>

    +
    +Inheritance diagram for utl::random_access_iterator_tag:
    +
    +
    + + +utl::bidirectional_iterator_tag +utl::forward_iterator_tag +utl::input_iterator_tag +utl::contiguous_iterator_tag + +
    +

    Detailed Description

    +
    +

    Definition at line 59 of file dev_iterators.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/structutl_1_1random__access__iterator__tag.png b/doc/html/structutl_1_1random__access__iterator__tag.png new file mode 100644 index 0000000000000000000000000000000000000000..ca46b11e288c535ea278fb13643c1a898106f19e GIT binary patch literal 1700 zcmb_dX-rdD7%dv9Iv_DdTu`f_9TbH!1qA`EC{iCwQCfo$p)x24BA_5B3N?;s&|!O2 zwpwbWfMt-SqKIf(8MHt_1Y{W~LS+*Rr50LBmv^U{;qPRA%uT*6x%rZFa?ZV}N6949 zl^a*0P$*OAh`XPm@(rP0zSNNKh6{%cW&Kfa>R|wYq5U$YyqwXHY3P20Kp5>O~(d&u35dc|m(bsiqsYGTaHC=-JwsX9e4lYgd$8s59_`Lf%_ zq88ev_jMsn@JAa79!kE&$1Z&PKui-R+CUbbVpR?`-Rcu|Hc)N}Sd%g} z+e1_w&fvr%4L~2gx}YLM->U*m{4Jm3fHVs`c@vFWN zC>n=*LDp@j&XmaZyd+msUu5)RAm>r5lmM7~aSp@pW3H$g(9bU5p*z=;L3AZziNK@o zYA+b`9gzvLcS4Lu4UI1Q@C!@J4@$y6j0J9d>9RQ)Mu`?=%h7U6osn)i9Yt)w2r~X{ z9KQ7+R<@ppz3jEPTs-SLQY~h9LC%e?!O^PvQzTrtC>9J9`EO?Fh7J`63(-A;n2;{7 zD~?ZId&gXd;(@T_(jA-JBAxzIq?$RQWJD$wy1BNgiMZW4U9g z^tC+3`16asz~Q8=PZ4%{76K9$Tf)il$q1pn^2Krp`s z+F{E05aU?;yQHpN8$abxm_sV*)3qjs2?=HuzePTxL|g3k$VEH}B)FwoT`BEz^&?VB zz1Kz=S9ds@wtR$JFOKoo@zxxVuMf1<`4%y^?Uw;0K}J*Bxr8esrY{ZCZmZuRwal7k zZjs*6k}U(Ol%NIXbRPfFYhC4RST@K-2HYxi(PO~x*PMg)Tk4fzPi(!ixYBlw!e`$O zmnv#OXK`x5lcyeVYsX(Rl|?}PHfqfQSk)KLX99SR#;eu5SCC-qMcDr z_m6&00*Nfb4HF=joHBbX{@oPL~7?W6hX7DkwD|FZW67L>&|2Kp;p};8db2c(! zbuPhtIFFVvB%)W1B-P_r`=^ES3r7?Xn36K`}R7P + + + + + + +uTL: utl::spi_i_details::is_spi_< _Tp, typename > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::spi_i_details::is_spi_< _Tp, typename > Struct Template Reference
    +
    +
    + +

    Primary template to catch any non SPI interface types. + More...

    + +

    #include <spi.h>

    +
    +Inheritance diagram for utl::spi_i_details::is_spi_< _Tp, typename >:
    +
    +
    + + + +
    +

    Detailed Description

    +

    template<typename _Tp, typename = void>
    +struct utl::spi_i_details::is_spi_< _Tp, typename >

    + +

    Primary template to catch any non SPI interface types.

    + +

    Definition at line 305 of file spi.h.

    +

    The documentation for this struct was generated from the following file:
      +
    • include/utl/com/spi.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structutl_1_1spi__i__details_1_1is__spi__.png b/doc/html/structutl_1_1spi__i__details_1_1is__spi__.png new file mode 100644 index 0000000000000000000000000000000000000000..fbdde5d0cfcb2d3de6ae963954f7c55c763e5e49 GIT binary patch literal 689 zcmeAS@N?(olHy`uVBq!ia0vp^e}OoFgBeIZ&20V$q$C1-LR|m<{|{uoc=NTi|Ih>= z3ycpOIKbL@M;^%KC<*clW&kPzfvcxNj2IZ096VhdLn;{G&b_;BkpWNZ{yTI2{>!)N zaJYS;=*rOs-XGu>P%}(qilY? z6ph}u-KXN5>dU0Ng1=qA?$8u`ck0g}*}l3{Ure8PE8dy%>w8+=U-wDt!mjOAiCwz( zxV_!Os(mW8{rlSM-qnh$J06Rhl%(}iRdd-SAR}v$xpB8vgY;Ksfv|-y>+6&rw=bLj zfcf$9W#{Md3xs;|3j`C73#OkrbBK$XW7QJ&j+H>H>2H7b*E@~ya{e#>cKY(g)|3># zJ?mh6uJh*UFATQ4dy10WO1E3h{P)q=cUJg=H=mCm6@0p>iqG$7RBS}+8DIBk<~Jty zbO3lUmXD z+xGL^-N#k$EnjcGvZtVJ%ImwivI z@VfguU~c$#?Y;I@DJKH&u78`DD-^wM->uK{)6Rt7I&R(iq4Ipbz%A=iL(?`9;l{Kd z-)$XM3*W!vV0`b!t|wXR)fnt9N`EPS9L;f;8O`20ISH>^{n7$Z1UHx3vIVCg!08Lg)iU0rr literal 0 HcmV?d00001 diff --git a/doc/html/structutl_1_1spi__i__details_1_1is__spi___3_01___tp_00_01meta_1_1void__t_3_01meta_1_1use__if__sa2db29f6d65d34ecf5e49ec30b6600d78.html b/doc/html/structutl_1_1spi__i__details_1_1is__spi___3_01___tp_00_01meta_1_1void__t_3_01meta_1_1use__if__sa2db29f6d65d34ecf5e49ec30b6600d78.html new file mode 100644 index 0000000..7932c48 --- /dev/null +++ b/doc/html/structutl_1_1spi__i__details_1_1is__spi___3_01___tp_00_01meta_1_1void__t_3_01meta_1_1use__if__sa2db29f6d65d34ecf5e49ec30b6600d78.html @@ -0,0 +1,128 @@ + + + + + + + +uTL: utl::spi_i_details::is_spi_< _Tp, meta::void_t< meta::use_if_same_t< try_cclock_t< _Tp >, uint32_t >, meta::use_if_same_t< try_clock_t< _Tp >, void >, meta::use_if_same_t< try_tx_t< _Tp >, byte_t >, meta::use_if_same_t< try_rx_t< _Tp >, byte_t > > > Struct Template Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::spi_i_details::is_spi_< _Tp, meta::void_t< meta::use_if_same_t< try_cclock_t< _Tp >, uint32_t >, meta::use_if_same_t< try_clock_t< _Tp >, void >, meta::use_if_same_t< try_tx_t< _Tp >, byte_t >, meta::use_if_same_t< try_rx_t< _Tp >, byte_t > > > Struct Template Reference
    +
    +
    + +

    template to catch a proper SPI interface type + More...

    + +

    #include <spi.h>

    +
    +Inheritance diagram for utl::spi_i_details::is_spi_< _Tp, meta::void_t< meta::use_if_same_t< try_cclock_t< _Tp >, uint32_t >, meta::use_if_same_t< try_clock_t< _Tp >, void >, meta::use_if_same_t< try_tx_t< _Tp >, byte_t >, meta::use_if_same_t< try_rx_t< _Tp >, byte_t > > >:
    +
    +
    + + + +
    +

    Detailed Description

    +

    template<typename _Tp>
    +struct utl::spi_i_details::is_spi_< _Tp, meta::void_t< meta::use_if_same_t< try_cclock_t< _Tp >, uint32_t >, meta::use_if_same_t< try_clock_t< _Tp >, void >, meta::use_if_same_t< try_tx_t< _Tp >, byte_t >, meta::use_if_same_t< try_rx_t< _Tp >, byte_t > > >

    + +

    template to catch a proper SPI interface type

    + +

    Definition at line 309 of file spi.h.

    +

    The documentation for this struct was generated from the following file:
      +
    • include/utl/com/spi.h
    • +
    +
    +
    + + + + diff --git a/doc/html/structutl_1_1spi__i__details_1_1is__spi___3_01___tp_00_01meta_1_1void__t_3_01meta_1_1use__if__sa2db29f6d65d34ecf5e49ec30b6600d78.png b/doc/html/structutl_1_1spi__i__details_1_1is__spi___3_01___tp_00_01meta_1_1void__t_3_01meta_1_1use__if__sa2db29f6d65d34ecf5e49ec30b6600d78.png new file mode 100644 index 0000000000000000000000000000000000000000..1017475312a6eefa80d02b68089838268f309ca8 GIT binary patch literal 2005 zcmdT_dr(qo6lXUp*K&7fva%GNSq&@KEYu92*;a;`mX+A5pesU!K?-JwO4;_BQcF_9 zx4kIekCOF4mX<`OY?fgPl4+3&DQ`iPy`sA_&F;+3{<**3x%d0-`Ofd$bMC$K-HUqz zd`(SOn}9$dQ~0j!K_JjV8Zh5$yZ|_des4hq2J^lC2X^T7dSLoVtc=fSy#mY($D>D& z7GC6A1DD36pn&}#AZQjn&ksOBpv7qTcAo<$zmf=Ep19#>X7szjkvXH!AV4pg7`OZH zyjuSJH#?)jt=74th^Wi^zBDOmXXb&w=yAvi246o<)l2_?Ouu<1JJV>lGUtf4?i{wg zH_x}e21z=D=nCjkGB9yKHp@T}9vF01hCo>UrUA(KqKU-8+j3QYU&XfZnH6z00+d;^N|n@BZ|J+Pcnp7SDTjFI!~-04VBQDgfX$7zEby z%f3$ki{&#GQI}VLX$&Wz@#5lloLtWAL#fWdK+OP%Z_<}81Tb|N@{^B`&ttD_x=zJQ z+=Wsh3##iMtc`P;BqYPUQr_L^_f1M^a#?g;)9$8B`2Bw=2E2)w9s_}e>XyzyaOI5^pRmu-y5Av#} zV=K6#jrPuEBvur0Bh!NE@$P0fdmqD(wocl!9C@FRajdt!yj3BO>m>J2!CH&dgWadH zPJ@p$=KD!{mW70%YX?V(1C7szJD53brc5uI6T;7tM(Iv_8aqDTs);N|=@Nx;OGRKc zqDi;Og7Zt5Xy8RDK8ylwEE{P!;a#+-LD4sMdlPP|d_U^h8x1ywDINXudxU_&*GnR^5*-~)i zlAU7uC@LU3D-#t?!2} z@{Uc;T>-TUKXo)$E+uT<`Zw`avgPU|UpSY^@$BMdqFmK7^ zhkbk+hlza964J-))_nYddp!wRF?$C@-Ka8;sD$Xz@5B0HUysxl;<;m-QI#{z@lsd$ zSzKToxvQ^?6?9ZX3Qi;oGUP$^bPjHuU4AjAqmy@G_ewk>PcU|{v8qe^SV8P*8F}DZ z8*OjTvwj9n3$=n$jS|qZpHCws{Whyl5QD)bFj2pL@Cgh>9r)0;Cx<8qPpqv;ZfIi` zSbNf!PRLh}^>9Va({AADhw-Jyy$D*7ctxdOTh@L%EGsWNoHg0dAX4JA8&{Z4*Y=T% zb8^Rk-Y$@BTnnFwVUBO^a2`NhAnx@!HCgQym2c&Y?|`yo;C(6cm>iR~$K z6}`S{tsc|~*4)GMU+fOdDf3SW3XEt|UTYN-sScCbglmNx5+*D>(J{Ck)T9z#qKRIG zPvKXiy7QZ~$5Bd@Q}|3IAaI3h98^LoCUgQU2R>VZCD~2E7@D4PXN&91IpFvfw~zM~ z!sIh!>`K?qAd%b literal 0 HcmV?d00001 diff --git a/doc/html/structutl_1_1virtual__tag.html b/doc/html/structutl_1_1virtual__tag.html new file mode 100644 index 0000000..843c7a3 --- /dev/null +++ b/doc/html/structutl_1_1virtual__tag.html @@ -0,0 +1,117 @@ + + + + + + + +uTL: utl::virtual_tag Struct Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    utl::virtual_tag Struct Reference
    +
    +
    + +

    virtual support tag type + More...

    + +

    #include <crtp.h>

    +

    Detailed Description

    +

    virtual support tag type

    + +

    Definition at line 40 of file crtp.h.

    +

    The documentation for this struct was generated from the following file: +
    +
    + + + + diff --git a/doc/html/sync_off.png b/doc/html/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/doc/html/sync_on.png b/doc/html/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/doc/html/tab_a.png b/doc/html/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/doc/html/tab_b.png b/doc/html/tab_b.png new file mode 100644 index 0000000000000000000000000000000000000000..e2b4a8638cb3496a016eaed9e16ffc12846dea18 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QU#tajv*C{Z}0l@H7kg?K0Lnr z!j&C6_(~HV9oQ0Pa6x{-v0AGV_E?vLn=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/doc/html/tabs.css b/doc/html/tabs.css new file mode 100644 index 0000000..a28614b --- /dev/null +++ b/doc/html/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}#doc-content{overflow:auto;display:block;padding:0;margin:0;-webkit-overflow-scrolling:touch}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace!important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0!important;-webkit-border-radius:0;border-radius:0!important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px!important;-webkit-border-radius:5px;border-radius:5px!important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0!important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px!important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} \ No newline at end of file diff --git a/doc/html/test__1w__impl_8cpp.html b/doc/html/test__1w__impl_8cpp.html new file mode 100644 index 0000000..ac4dc0a --- /dev/null +++ b/doc/html/test__1w__impl_8cpp.html @@ -0,0 +1,142 @@ + + + + + + + +uTL: test/tests/test_1w_impl.cpp File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    test_1w_impl.cpp File Reference
    +
    +
    +
    #include <gtest/gtest.h>
    +#include <utl/com/_1wire_uart.h>
    +
    +

    Go to the source code of this file.

    + + + + + + +

    +Classes

    class  test_1w::OW
     
    class  test_1w::Test_1w_impl
     
    + + + +

    +Namespaces

     test_1w
     
    + + + + + + + +

    +Functions

     test_1w::TEST_F (Test_1w_impl, TestConcept)
     
     test_1w::TEST_F (Test_1w_impl, TestConstruction)
     
     test_1w::TEST_F (Test_1w_impl, TestFunctionality)
     
    +

    Detailed Description

    +

    Copyright (C) 2018 Christos Choutouridis

    +

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    +

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

    +

    You should have received a copy of the GNU Lesser General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    + +

    Definition in file test_1w_impl.cpp.

    +
    +
    + + + + diff --git a/doc/html/test__1w__impl_8cpp.js b/doc/html/test__1w__impl_8cpp.js new file mode 100644 index 0000000..37979bb --- /dev/null +++ b/doc/html/test__1w__impl_8cpp.js @@ -0,0 +1,8 @@ +var test__1w__impl_8cpp = +[ + [ "OW", "classtest__1w_1_1_o_w.html", null ], + [ "Test_1w_impl", "classtest__1w_1_1_test__1w__impl.html", "classtest__1w_1_1_test__1w__impl" ], + [ "TEST_F", "test__1w__impl_8cpp.html#a91bee95e2ca23e750b4a33479aea8029", null ], + [ "TEST_F", "test__1w__impl_8cpp.html#a2e7d40e0befd264af7e7b6794b447555", null ], + [ "TEST_F", "test__1w__impl_8cpp.html#ab5d5a9f17f851deeb0058589c4bdbdfc", null ] +]; \ No newline at end of file diff --git a/doc/html/test__1w__impl_8cpp_source.html b/doc/html/test__1w__impl_8cpp_source.html new file mode 100644 index 0000000..9ee1672 --- /dev/null +++ b/doc/html/test__1w__impl_8cpp_source.html @@ -0,0 +1,120 @@ + + + + + + + +uTL: test/tests/test_1w_impl.cpp Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    test_1w_impl.cpp
    +
    +
    +Go to the documentation of this file.
    1 
    20 #include <gtest/gtest.h>
    21 #include <utl/com/_1wire_uart.h>
    22 
    29 namespace test_1w {
    30  using namespace utl;
    31 
    32  // implementer class stub
    33  class OW : public _1wire_uart_i<OW> {
    34  friend _1wire_uart_i<OW>;
    35  byte_t UART_RW (byte_t byte) {
    36  // return the given. This also mean no-device
    37  return byte;
    38  }
    39  void UART_BR (uint32_t br) {} // imaginary baud-rate implementation
    40  };
    41 
    42  // fixture
    43  class Test_1w_impl : public ::testing::Test {
    44  protected:
    45  //void SetUp() override { }
    46  //void TearDown() override { }
    47  OW ow;
    48  };
    49 
    50  TEST_F(Test_1w_impl, TestConcept) {
    51 // EXPECT_EQ(_1Wire_i<OW>, true);
    52  }
    53 
    54  TEST_F(Test_1w_impl, TestConstruction) {
    55  EXPECT_GT(sizeof(ow), 0UL);
    56  }
    57 
    58  TEST_F (Test_1w_impl, TestFunctionality) {
    59  byte_t b {42};
    60 
    61  _1wire_id_t id = ow.first(OW::Speed::STD);
    62  EXPECT_EQ (id != _1wire_id_t::nullDev(), false); // as long as there is no slave Mock
    63 
    64  EXPECT_EQ (ow.reset(OW::Speed::STD), false); // as long as there is no slave Mock
    65  //ow.match(id, OW::Speed::STD);
    66  EXPECT_EQ(ow.rx_data(OW::Speed::STD), 0xFF);
    67  EXPECT_EQ(ow.tx_data(b, OW::Speed::STD), 42);
    68 
    69  }
    70 }
    TEST_F(Test_1w_impl, TestConcept)
    + + + + +
    #define EXPECT_GT(val1, val2)
    Definition: gtest.h:16655
    +
    STL&#39;s core language concepts.
    Definition: _1wire.h:30
    +
    static constexpr const _1wire_id_t & nullDev()
    Return nullDev reference.
    Definition: _1wire_id.h:50
    + + +
    #define EXPECT_EQ(val1, val2)
    Definition: gtest.h:16643
    +
    uint8_t byte_t
    8 bits wide
    Definition: types.h:31
    +
    1-wire UART interface template class using CRTP Using the private virtual interface we provide the in...
    Definition: _1wire_uart.h:52
    +
    A 1-wire implementation using a microprocessor&#39;s uart for bit timing.
    + +
    +
    + + + + diff --git a/doc/html/test__i2c__impl_8cpp.html b/doc/html/test__i2c__impl_8cpp.html new file mode 100644 index 0000000..d360587 --- /dev/null +++ b/doc/html/test__i2c__impl_8cpp.html @@ -0,0 +1,140 @@ + + + + + + + +uTL: test/tests/test_i2c_impl.cpp File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    test_i2c_impl.cpp File Reference
    +
    +
    +
    #include <gtest/gtest.h>
    +#include <utl/com/i2c_bb.h>
    +
    +

    Go to the source code of this file.

    + + + + +

    +Classes

    class  test_i2c::I2C
     
    + + + +

    +Namespaces

     test_i2c
     
    + + + + + + + +

    +Functions

     test_i2c::TEST (Test_i2c_impl, TestConcept)
     
     test_i2c::TEST (Test_i2c_impl, TestConstruction)
     
     test_i2c::TEST (Test_i2c_impl, TestFunctionality)
     
    +

    Detailed Description

    +

    Copyright (C) 2018 Christos Choutouridis

    +

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    +

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

    +

    You should have received a copy of the GNU Lesser General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    + +

    Definition in file test_i2c_impl.cpp.

    +
    +
    + + + + diff --git a/doc/html/test__i2c__impl_8cpp.js b/doc/html/test__i2c__impl_8cpp.js new file mode 100644 index 0000000..ce41505 --- /dev/null +++ b/doc/html/test__i2c__impl_8cpp.js @@ -0,0 +1,7 @@ +var test__i2c__impl_8cpp = +[ + [ "I2C", "classtest__i2c_1_1_i2_c.html", "classtest__i2c_1_1_i2_c" ], + [ "TEST", "test__i2c__impl_8cpp.html#a04c34c5bd7848008eb6803be850b2296", null ], + [ "TEST", "test__i2c__impl_8cpp.html#a74c8554cb3a4c7bd022cd854feb06688", null ], + [ "TEST", "test__i2c__impl_8cpp.html#aee88e63fc24ad87c0987c6f207dd20fa", null ] +]; \ No newline at end of file diff --git a/doc/html/test__i2c__impl_8cpp_source.html b/doc/html/test__i2c__impl_8cpp_source.html new file mode 100644 index 0000000..cf2610b --- /dev/null +++ b/doc/html/test__i2c__impl_8cpp_source.html @@ -0,0 +1,116 @@ + + + + + + + +uTL: test/tests/test_i2c_impl.cpp Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    test_i2c_impl.cpp
    +
    +
    +Go to the documentation of this file.
    1 
    20 #include <gtest/gtest.h>
    21 #include <utl/com/i2c_bb.h>
    22 
    29 namespace test_i2c {
    30  using namespace utl;
    31 
    32  // implementer class stub
    33  class I2C : public i2c_bb_i<I2C> {
    34  friend i2c_bb_i<I2C>;
    35  void SCL (bool x) { (void)x; } // imaginary SCL pin functionality
    36  bool SDA (SDAMode mode, bool x) {
    37  (void)mode;
    38  (void)x;
    39  // always read 0 back (which means always ACK)
    40  return 0;
    41  }
    42  void delay (uint32_t u) {
    43  (void)u;
    44  // Pseudo-delay
    45  for (int i =0 ; i<10 ; ++i)
    46  ;
    47  }
    48 
    49  public:
    50  I2C (uint32_t clk =100000) noexcept
    51  : i2c_bb_i<I2C>(clk) {
    52  start();
    53  }
    54  };
    55 
    56  TEST(Test_i2c_impl, TestConcept) {
    57  I2C i2c {};
    58 // EXPECT_EQ(I2c_i<I2C>, true);
    59  }
    60 
    61  TEST(Test_i2c_impl, TestConstruction) {
    62  I2C i2c {};
    63  EXPECT_EQ(i2c.clock(), 100000UL);
    64  }
    65 
    66  TEST(Test_i2c_impl, TestFunctionality) {
    67  I2C i2c {};
    68  uint8_t b = 42;
    69 
    70  i2c.clock(200000UL);
    71  //EXPECT_EQ(i2c.clock(), 200000UL);
    72 
    73  EXPECT_EQ(i2c.tx_data(b), true);
    74  EXPECT_EQ(i2c.rx_data(true), 0x00);
    75  EXPECT_EQ(i2c.rx_data(false), 0x00);
    76  }
    77 }
    I2C(uint32_t clk=100000) noexcept
    + +
    TEST(Test_i2c_impl, TestConcept)
    + +
    SDAMode
    SDA pin direction enumerator.
    Definition: i2c_bb.h:55
    +
    A bit banking implementation of i2c bus inherited from i2c_i base class.
    +
    STL&#39;s core language concepts.
    Definition: _1wire.h:30
    +
    uint32_t clock() const
    Definition: i2c.h:87
    +
    #define EXPECT_EQ(val1, val2)
    Definition: gtest.h:16643
    +
    A bit banking implementation of i2c bus inherited from i2c_i base class.
    Definition: i2c_bb.h:47
    + +
    +
    + + + + diff --git a/doc/html/test__ostream__dev_8cpp.html b/doc/html/test__ostream__dev_8cpp.html new file mode 100644 index 0000000..d3227e1 --- /dev/null +++ b/doc/html/test__ostream__dev_8cpp.html @@ -0,0 +1,175 @@ + + + + + + + +uTL: test/tests/test_ostream_dev.cpp File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    test_ostream_dev.cpp File Reference
    +
    +
    +
    #include <gtest/gtest.h>
    +#include <utl/dev/ostream_dev.h>
    +#include <array>
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + +

    +Classes

    class  test_ostream_dev::Ostream_dev_impl
     
    class  test_ostream_dev::Ostream_vdev_impl
     
    class  test_ostream_dev::Tostream_Idev
     
    class  test_ostream_dev::Tostream_Vdev
     
    + + + +

    +Namespaces

     test_ostream_dev
     
    + + + +

    +Typedefs

    using test_ostream_dev::test_data_t = uint8_t
     
    + + + + + + + + + + + + + + + + + +

    +Functions

     test_ostream_dev::TEST_F (Tostream_Idev, Construction)
     
     test_ostream_dev::TEST_F (Tostream_Idev, Api)
     
     test_ostream_dev::TEST_F (Tostream_Idev, streamOperator)
     
     test_ostream_dev::TEST_F (Tostream_Idev, Iterator1)
     
     test_ostream_dev::TEST_F (Tostream_Idev, Iterator2)
     
     test_ostream_dev::TEST_F (Tostream_Vdev, virtualApi)
     
     test_ostream_dev::TEST_F (Tostream_Vdev, virtualStream)
     
     test_ostream_dev::TEST_F (Tostream_Vdev, virtualIterator)
     
    + + + + + + + + + +

    +Variables

    test_data_t test_ostream_dev::Idata = 42
     
    test_data_t & test_ostream_dev::IdataR = Idata
     
    test_data_t && test_ostream_dev::IdataRR = 0xAA
     
    test_data_t test_ostream_dev::Ibuffer [] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
     
    +

    Detailed Description

    +

    Copyright (C) 2018 Christos Choutouridis

    +

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    +

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

    +

    You should have received a copy of the GNU Lesser General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    + +

    Definition in file test_ostream_dev.cpp.

    +
    +
    + + + + diff --git a/doc/html/test__ostream__dev_8cpp.js b/doc/html/test__ostream__dev_8cpp.js new file mode 100644 index 0000000..ba81bbf --- /dev/null +++ b/doc/html/test__ostream__dev_8cpp.js @@ -0,0 +1,20 @@ +var test__ostream__dev_8cpp = +[ + [ "Ostream_dev_impl", "classtest__ostream__dev_1_1_ostream__dev__impl.html", "classtest__ostream__dev_1_1_ostream__dev__impl" ], + [ "Ostream_vdev_impl", "classtest__ostream__dev_1_1_ostream__vdev__impl.html", "classtest__ostream__dev_1_1_ostream__vdev__impl" ], + [ "Tostream_Idev", "classtest__ostream__dev_1_1_tostream___idev.html", "classtest__ostream__dev_1_1_tostream___idev" ], + [ "Tostream_Vdev", "classtest__ostream__dev_1_1_tostream___vdev.html", "classtest__ostream__dev_1_1_tostream___vdev" ], + [ "test_data_t", "test__ostream__dev_8cpp.html#a63ac45c38a80885dda445ddee2a1e0c8", null ], + [ "TEST_F", "test__ostream__dev_8cpp.html#a7d0ba57fc928d165451e031ab6935d1c", null ], + [ "TEST_F", "test__ostream__dev_8cpp.html#a933ad1f9cbffc56c355494b2e5a898ed", null ], + [ "TEST_F", "test__ostream__dev_8cpp.html#a48320d39ddad3627913184df15a6eeae", null ], + [ "TEST_F", "test__ostream__dev_8cpp.html#a15b2cd537bd2f755805c043397a90369", null ], + [ "TEST_F", "test__ostream__dev_8cpp.html#a0f24de95548df2cfaee079bb7569b43d", null ], + [ "TEST_F", "test__ostream__dev_8cpp.html#a5b0629176b2db8d5e78c26337bab73fd", null ], + [ "TEST_F", "test__ostream__dev_8cpp.html#a362bd1b25e349211c067276cbed35fbc", null ], + [ "TEST_F", "test__ostream__dev_8cpp.html#ac73a944cfce63878b27a9bc5843d1047", null ], + [ "Ibuffer", "test__ostream__dev_8cpp.html#ab0ee4bd586c47ce5f9dcc0fe60dd27a2", null ], + [ "Idata", "test__ostream__dev_8cpp.html#a7e9209298f1eec33fb72637fd17720d6", null ], + [ "IdataR", "test__ostream__dev_8cpp.html#a1a5e65c79718b3bbc72501c02e090ac0", null ], + [ "IdataRR", "test__ostream__dev_8cpp.html#ad7ded62f12c3abfcaddae39a905793b4", null ] +]; \ No newline at end of file diff --git a/doc/html/test__ostream__dev_8cpp_source.html b/doc/html/test__ostream__dev_8cpp_source.html new file mode 100644 index 0000000..5c54544 --- /dev/null +++ b/doc/html/test__ostream__dev_8cpp_source.html @@ -0,0 +1,130 @@ + + + + + + + +uTL: test/tests/test_ostream_dev.cpp Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    test_ostream_dev.cpp
    +
    +
    +Go to the documentation of this file.
    1 
    20 #include <gtest/gtest.h>
    21 #include <utl/dev/ostream_dev.h>
    22 #include <array>
    23 
    24 namespace test_ostream_dev {
    25  using namespace utl;
    26 
    27  // Device base data types
    28  // MUST be DefaultConstructible, Copyable
    29  using test_data_t = uint8_t;
    30 
    31  // Test data
    32  static const size_t SIZE = 10;
    33 
    36  test_data_t&& IdataRR = 0xAA;
    37  test_data_t Ibuffer[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    38 
    39  // ostream device implementer (Mocks)
    40  class Ostream_dev_impl : public ostream_dev<Ostream_dev_impl, test_data_t> {
    42  public:
    43  // virtual device
    44  static constexpr size_t N =SIZE;
    45  std::array<test_data_t, N> v {}; // more than one so we can remember N-1 previous values
    46  size_t c {0};
    47 
    48  protected:
    49  // ostream_dev requirements
    50  size_t put_ (const test_data_t& data) {
    51  v[c++] = data;
    52  if (c >= N)
    53  c = 0;
    54  return 1;
    55  }
    56  size_t put_ (const test_data_t* data, size_t n) {
    57  for (size_t i=0 ; i<n && i<N; ++i) {
    58  v[i] = data[i];
    59  }
    60  return n;
    61  }
    62  public:
    63  test_data_t& getLastV () { return (c) ? v[c-1] : v[N-1]; }
    64  };
    65  // virtual ostream device
    66  class Ostream_vdev_impl : public ostream_dev<virtual_tag, test_data_t> {
    67  public:
    68  // virtual device
    69  static constexpr size_t N =SIZE;
    70  std::array<test_data_t, N> v {};
    71  size_t c {0};
    72 
    73  protected:
    74  // ostream_dev requirements
    75  size_t put_ (const test_data_t& data) {
    76  v[c++] = data;
    77  if (c >= N)
    78  c = 0;
    79  return 1;
    80  }
    81  size_t put_ (const test_data_t* data, size_t n) {
    82  for (size_t i=0 ; i<n && i<N; ++i) {
    83  v[i] = data[i];
    84  }
    85  return n;
    86  }
    87  public:
    88  test_data_t& getLastV () { return (c) ? v[c-1] : v[N-1]; }
    89  };
    90 
    91  // fixtures
    92  class Tostream_Idev : public ::testing::Test {
    93  protected:
    94  // zero initialized device
    95  Ostream_dev_impl osIdev {};
    96  };
    97  class Tostream_Vdev : public ::testing::Test {
    98  protected:
    99  // zero initialized devices
    100  std::array<Ostream_vdev_impl, 5> osVdev {};
    102  };
    103 
    104  //ToDo: Must add Concept test for ostream_dev
    105 // TEST_F(Tostream_Idev, TestConcept) {
    106 // EXPECT_EQ(true, Ostream_dev<osIdev>);
    107 // }
    108 
    109  TEST_F(Tostream_Idev, Construction) {
    110  EXPECT_LT(0UL, sizeof(osIdev));
    111  }
    112 
    114  EXPECT_EQ(1UL, osIdev.put(Idata)); // single write from var
    115  EXPECT_EQ(Idata, osIdev.getLastV ());
    116 
    117  EXPECT_EQ(1UL, osIdev.put(IdataR));// single write from lvalue ref
    118  EXPECT_EQ(IdataR, osIdev.getLastV ());
    119 
    120  EXPECT_EQ(1UL, osIdev.put(IdataRR));// single write from rvalue ref
    121  EXPECT_EQ(IdataRR, osIdev.getLastV ());
    122 
    123  EXPECT_EQ(1UL, osIdev.put(42));// single write from rvalue
    124  EXPECT_EQ(42U, osIdev.getLastV ());
    125 
    126  EXPECT_EQ(7U, osIdev.put(Ibuffer, 7)); // batch write some data
    127  for (size_t i =0 ; i<7 ; ++i) {
    128  EXPECT_EQ(Ibuffer[i], osIdev.v[i]);
    129  }
    130  EXPECT_EQ(0, osIdev.v[7]);
    131 
    132  EXPECT_EQ(SIZE, osIdev.put(Ibuffer, SIZE)); // batch write all data
    133  for (size_t i =0 ; i<SIZE ; ++i) {
    134  EXPECT_EQ(Ibuffer[i], osIdev.v[i]);
    135  }
    136  }
    137 
    138  TEST_F (Tostream_Idev, streamOperator) {
    139  struct Blop {
    140  test_data_t x, y, z;
    141  };
    142 
    143  osIdev << Idata; // single write from var
    144  EXPECT_EQ(Idata, osIdev.getLastV ());
    145 
    146  osIdev << IdataR;// single write from lvalue ref
    147  EXPECT_EQ(IdataR, osIdev.getLastV ());
    148 
    149  osIdev << IdataRR;// single write from rvalue ref
    150  EXPECT_EQ(IdataRR, osIdev.getLastV ());
    151 
    152  osIdev << (test_data_t)42; // single write from rvalue
    153  EXPECT_EQ(42U, osIdev.getLastV ());
    154 
    155  // stream a blop of data (should use put(T*, N) version)
    156  Blop blop {1, 1, 42};
    157  osIdev << blop;
    158  EXPECT_EQ(1U, osIdev.v[0]);
    159  EXPECT_EQ(1U, osIdev.v[1]);
    160  EXPECT_EQ(42U, osIdev.v[2]);
    161 
    162  const Blop cblop {2, 2, 42};
    163  osIdev << cblop;
    164  EXPECT_EQ(2U, osIdev.v[0]);
    165  EXPECT_EQ(2U, osIdev.v[1]);
    166  EXPECT_EQ(42U, osIdev.v[2]);
    167  }
    168 
    169  TEST_F (Tostream_Idev, Iterator1) {
    170  // default constructible
    172  EXPECT_EQ (0, *(int32_t*)&def_it); // not dereferencable
    173 
    174  // output iterator requirements
    175  // https://en.cppreference.com/w/cpp/named_req/OutputIterator
    176  auto it = osIdev.begin();
    177  auto it2(it);
    178  EXPECT_EQ (*(int32_t*)&it, *(int32_t*)&it2);
    179 
    180  it2 = it;
    181  EXPECT_EQ (*(int32_t*)&it, *(int32_t*)&it2);
    182  def_it = it;
    183  EXPECT_EQ (*(int32_t*)&it, *(int32_t*)&def_it);
    184  ++it, it++;
    185 
    186  *it = Idata;
    187  EXPECT_EQ (Idata, osIdev.getLastV ());
    188  *it = IdataR;
    189  EXPECT_EQ (IdataR, osIdev.getLastV ());
    190  *it = IdataRR;
    191  EXPECT_EQ (IdataRR, osIdev.getLastV ());
    192 
    193  *it++ = Idata;
    194  EXPECT_EQ (Idata, osIdev.getLastV ());
    195 
    196  }
    197 
    198  TEST_F (Tostream_Idev, Iterator2) {
    199  auto it = osIdev.begin();
    200 
    201  std::fill_n(it, SIZE, Idata);
    202  for (size_t i=0 ;i<SIZE ; ++i) {
    203  EXPECT_EQ (Idata, osIdev.v[i]);
    204  }
    205  }
    206 
    207  TEST_F (Tostream_Vdev, virtualApi) {
    208  // loop to virtual devices and use them via base pointer
    209  for (auto& dev : osVdev) {
    210  basePointer = &dev;
    211  basePointer->put(Idata);
    212  EXPECT_EQ(Idata, dev.v[0]);
    213 
    214  EXPECT_EQ(SIZE, basePointer->put(Ibuffer, SIZE)); // batch write all data
    215  for (size_t i =0 ; i<SIZE ; ++i) {
    216  EXPECT_EQ(Ibuffer[i], dev.v[i]);
    217  }
    218  }
    219  }
    220 
    221  TEST_F (Tostream_Vdev, virtualStream) {
    222  struct Blop {
    223  test_data_t x, y, z;
    224  };
    225  Blop blop {1, 1, 42};
    226  const Blop cblop {2, 2, 42};
    227 
    228  // loop to virtual devices and use them via base pointer
    229  for (auto& dev : osVdev) {
    230  basePointer = &dev;
    231  *basePointer << IdataR;
    232  EXPECT_EQ(IdataR, dev.v[0]);
    233 
    234  *basePointer << blop;
    235  EXPECT_EQ(1U, dev.v[0]);
    236  EXPECT_EQ(1U, dev.v[1]);
    237  EXPECT_EQ(42U, dev.v[2]);
    238 
    239  *basePointer << cblop;
    240  EXPECT_EQ(2U, dev.v[0]);
    241  EXPECT_EQ(2U, dev.v[1]);
    242  EXPECT_EQ(42U, dev.v[2]);
    243  }
    244  }
    245 
    246  TEST_F (Tostream_Vdev, virtualIterator) {
    247  // loop to virtual devices and use them via base pointer
    248  for (auto& dev : osVdev) {
    249  basePointer = &dev;
    250  auto it = *basePointer->begin();
    251  std::fill_n(it, SIZE, Idata);
    252  for (size_t i=0 ;i<SIZE ; ++i) {
    253  EXPECT_EQ (Idata, dev.v[i]);
    254  }
    255  }
    256  }
    257 }
    +
    size_t put_(const test_data_t *data, size_t n)
    + +
    test_data_t Ibuffer[]
    + +
    size_t put_(const test_data_t &data)
    + +
    test_data_t && IdataRR
    +
    size_t put_(const test_data_t &data)
    +
    #define EXPECT_LT(val1, val2)
    Definition: gtest.h:16651
    +
    Abstract base classes for output stream devices.
    Definition: ostream_dev.h:52
    + +
    STL&#39;s core language concepts.
    Definition: _1wire.h:30
    + + +
    TEST_F(Tostream_Idev, Construction)
    +
    size_t put_(const test_data_t *data, size_t n)
    + + + + +
    #define EXPECT_EQ(val1, val2)
    Definition: gtest.h:16643
    + +
    Abstract base class interface for output devices of utl.
    +
    test_data_t & IdataR
    +
    +
    + + + + diff --git a/doc/html/test__spi__impl_8cpp.html b/doc/html/test__spi__impl_8cpp.html new file mode 100644 index 0000000..24123c9 --- /dev/null +++ b/doc/html/test__spi__impl_8cpp.html @@ -0,0 +1,142 @@ + + + + + + + +uTL: test/tests/test_spi_impl.cpp File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    test_spi_impl.cpp File Reference
    +
    +
    +
    #include <gtest/gtest.h>
    +#include <utl/com/spi_bb.h>
    +
    +

    Go to the source code of this file.

    + + + + + + +

    +Classes

    class  test_spi::SPI
     
    class  test_spi::Test_spi_impl
     
    + + + +

    +Namespaces

     test_spi
     
    + + + + + + + +

    +Functions

     test_spi::TEST_F (Test_spi_impl, TestConcept)
     
     test_spi::TEST_F (Test_spi_impl, TestConstruction)
     
     test_spi::TEST_F (Test_spi_impl, TestFunctionality)
     
    +

    Detailed Description

    +

    Copyright (C) 2018 Christos Choutouridis

    +

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    +

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

    +

    You should have received a copy of the GNU Lesser General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    + +

    Definition in file test_spi_impl.cpp.

    +
    +
    + + + + diff --git a/doc/html/test__spi__impl_8cpp.js b/doc/html/test__spi__impl_8cpp.js new file mode 100644 index 0000000..1f42fa6 --- /dev/null +++ b/doc/html/test__spi__impl_8cpp.js @@ -0,0 +1,8 @@ +var test__spi__impl_8cpp = +[ + [ "SPI", "classtest__spi_1_1_s_p_i.html", "classtest__spi_1_1_s_p_i" ], + [ "Test_spi_impl", "classtest__spi_1_1_test__spi__impl.html", "classtest__spi_1_1_test__spi__impl" ], + [ "TEST_F", "test__spi__impl_8cpp.html#a08b6fb6773314f5914664f2089ea4eac", null ], + [ "TEST_F", "test__spi__impl_8cpp.html#a751c0b9fe17b002b0ab620f180a46307", null ], + [ "TEST_F", "test__spi__impl_8cpp.html#aa98da2aecf8b42f492ec1c206e8b8aba", null ] +]; \ No newline at end of file diff --git a/doc/html/test__spi__impl_8cpp_source.html b/doc/html/test__spi__impl_8cpp_source.html new file mode 100644 index 0000000..26c0107 --- /dev/null +++ b/doc/html/test__spi__impl_8cpp_source.html @@ -0,0 +1,118 @@ + + + + + + + +uTL: test/tests/test_spi_impl.cpp Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    test_spi_impl.cpp
    +
    +
    +Go to the documentation of this file.
    1 
    20 #include <gtest/gtest.h>
    21 #include <utl/com/spi_bb.h>
    22 
    23 
    30 namespace test_spi {
    31  using namespace utl;
    32 
    33  // implementer class stub
    34  class SPI : public spi_bb_i<SPI, spi::cpol::LOW, spi::cpha::LOW> {
    36  void MOSI (bool st) { (void)st; } // Imaginary pin functionality
    37  bool MISO () { return true; } // All reads become 0xFF
    38  void SCLK (bool st) { (void)st; } // Imaginary pin functionality
    39  void delay (uint32_t nsec) { (void)nsec; } // Imaginary delay functionality
    40 
    41  public:
    42  SPI (uint32_t clk =100000) noexcept : // expect 100000 default constructed clock
    43  spi_bb_i<SPI, spi::cpol::LOW, spi::cpha::LOW>(clk) {
    44  }
    45  };
    46 
    47  // fixture
    48  class Test_spi_impl : public ::testing::Test {
    49  protected:
    50  //void SetUp() override { }
    51  //void TearDown() override { }
    52  SPI spi {};
    53  };
    54 
    55  TEST_F(Test_spi_impl, TestConcept) {
    56 // EXPECT_EQ(Spi_i<SPI>, true);
    57  }
    58 
    59  TEST_F(Test_spi_impl, TestConstruction) {
    60  EXPECT_EQ(spi.clock(), 100000UL);
    61  }
    62 
    63  TEST_F (Test_spi_impl, TestFunctionality) {
    64  uint8_t b = 42;
    65  uint8_t bb[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    66  uint8_t bbb[sizeof bb];
    67 
    68  spi.clock(500000UL);
    69  EXPECT_EQ(spi.clock(), 500000UL);
    70 
    71  EXPECT_EQ(spi.tx_data(b), 0xFF);
    72  EXPECT_EQ(spi.tx_data(bb, bbb, sizeof(bb)), sizeof (bb));
    73  EXPECT_EQ(spi.rx_data(), 0xFF);
    74 
    75  spi.rx_data(bbb, sizeof bb);
    76  for (unsigned int i=0 ; i<sizeof bb ; ++i) {
    77  EXPECT_EQ (bbb[i], 0xFF);
    78  }
    79  }
    80 }
    cpol
    Definition: spi.h:47
    + + + +
    TEST_F(Test_spi_impl, TestConcept)
    + +
    cpha
    Definition: spi.h:54
    +
    STL&#39;s core language concepts.
    Definition: _1wire.h:30
    +
    A bit banking implementation of spi bus inherited from spi_i base class.
    Definition: spi_bb.h:56
    + +
    A bit banking implementation of spi bus inherited from spi_i base class.
    +
    #define EXPECT_EQ(val1, val2)
    Definition: gtest.h:16643
    +
    SPI(uint32_t clk=100000) noexcept
    +
    +
    + + + + diff --git a/doc/html/typelist_8h.html b/doc/html/typelist_8h.html new file mode 100644 index 0000000..df4f6d1 --- /dev/null +++ b/doc/html/typelist_8h.html @@ -0,0 +1,411 @@ + + + + + + + +uTL: include/utl/meta/typelist.h File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    typelist.h File Reference
    +
    +
    + +

    A template parameter "container". +More...

    +
    #include <utl/core/impl.h>
    +#include <utl/meta/integral.h>
    +#include <utl/meta/detection.h>
    +#include <utl/meta/invoke.h>
    +#include <utl/meta/sfinae.h>
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Classes

    struct  utl::meta::typelist< Ts >
     
    struct  utl::meta::typelist< Ts >::cat_<... >
     
    struct  utl::meta::typelist< Ts >::cat_< typelist< L1... >, typelist< L2... > >
     
    struct  utl::meta::typelist< Ts >::times_< N, T >
     
    struct  utl::meta::typelist< Ts >::times_< 1, T... >
     
    struct  utl::meta::typelist< Ts >::times_< 0, T... >
     
    struct  utl::meta::apply_impl::apply_< Fn, Seq >
     
    struct  utl::meta::apply_impl::apply_< Fn, typelist< List... > >
     Sequence == typelist<> More...
     
    struct  utl::meta::apply_impl::apply_< Fn, integer_sequence< T, Is... > >
     Sequence == integer_sequence<> More...
     
    struct  utl::meta::at_impl::_add_pointer< T >
     
    struct  utl::meta::at_impl::at_head_<... >
     
    struct  utl::meta::at_impl::at_head_< typelist< voids... > >
     
    struct  utl::meta::at_impl::at_< List, N >
     
    struct  utl::meta::at_impl::at_< typelist< List... >, N >
     
    struct  utl::meta::front_impl::front_< L >
     
    struct  utl::meta::front_impl::front_< typelist< Head, Tail... > >
     
    struct  utl::meta::back_impl::back_< List >
     
    struct  utl::meta::back_impl::back_< typelist< Head, Tail... > >
     
    struct  utl::meta::cat_impl::cat_< Lists >
     
    struct  utl::meta::cat_impl::cat_<>
     
    struct  utl::meta::cat_impl::cat_< typelist< L1... > >
     
    struct  utl::meta::cat_impl::cat_< typelist< L1... >, typelist< L2... > >
     
    struct  utl::meta::cat_impl::cat_< typelist< L1... >, typelist< L2... >, Ln... >
     
    struct  utl::meta::fold_impl::fold_< typename, typename, typename >
     
    struct  utl::meta::fold_impl::fold_< typelist< Head, Tail... >, V, Fn >
     
    struct  utl::meta::fold_impl::fold_< typelist<>, V0, Fn >
     
    struct  utl::meta::rev_fold_impl::rev_fold_< typename, typename, typename >
     
    struct  utl::meta::rev_fold_impl::rev_fold_< typelist< Head, Tail... >, V, Fn >
     
    struct  utl::meta::rev_fold_impl::rev_fold_< typelist< Tail >, V, Fn >
     
    struct  utl::meta::rev_fold_impl::rev_fold_< typelist<>, V, Fn >
     
    struct  utl::meta::reverse_impl::reverse_< List, V >
     
    struct  utl::meta::pop_front_impl::pop_front_< List >
     
    struct  utl::meta::pop_front_impl::pop_front_< typelist< Head, Tail... > >
     
    struct  utl::meta::pop_back_impl::pop_back_< List >
     
    struct  utl::meta::transform_impl::transform_< typename, typename >
     
    struct  utl::meta::transform_impl::transform_< typelist< typelist< Ts... >, Fn >, void_t< invoke< Fn, Ts >... > >
     
    struct  utl::meta::transform_impl::transform_< typelist< typelist< Ts0... >, typelist< Ts1... >, Fn >, void_t< invoke< Fn, Ts0, Ts1 >... > >
     
    struct  utl::meta::transform_lazy_impl::transform_lazy_< typename, typename >
     
    struct  utl::meta::transform_lazy_impl::transform_lazy_< typelist< typelist< Ts... >, Fn >, void_t< invoke< Fn, Ts >... > >
     
    struct  utl::meta::transform_lazy_impl::transform_lazy_< typelist< typelist< Ts0... >, typelist< Ts1... >, Fn >, void_t< invoke< Fn, Ts0, Ts1 >... > >
     
    struct  utl::meta::find_if_impl::find_if_< typename, typename, index_t >
     
    struct  utl::meta::find_if_impl::find_if_< typelist< Head, Tail... >, Fn, N >
     
    struct  utl::meta::find_if_impl::find_if_< typelist<>, Fn, N >
     
    struct  utl::meta::seek_if_impl::seek_if_< typename, typename, index_t >
     
    struct  utl::meta::seek_if_impl::seek_if_< typelist< Head, Tail... >, Fn, N >
     
    struct  utl::meta::seek_if_impl::seek_if_< typelist<>, Fn, N >
     
    struct  utl::meta::count_if_impl::count_if_< typename, typename, size_t >
     
    struct  utl::meta::count_if_impl::count_if_< typelist< Head, Tail... >, Fn, N >
     
    struct  utl::meta::count_if_impl::count_if_< typelist<>, Fn, N >
     
    struct  utl::meta::filter_impl::filter_< typename, typename, typename >
     
    struct  utl::meta::filter_impl::filter_< typelist< Head, Tail... >, Fn, L >
     
    struct  utl::meta::filter_impl::filter_< typelist<>, Fn, L >
     
    struct  utl::meta::replace_if_impl::replace_if_< typename, typename, typename, typename >
     
    struct  utl::meta::replace_if_impl::replace_if_< typelist< Head, Tail... >, Fn, T, Ret >
     
    struct  utl::meta::replace_if_impl::replace_if_< typelist<>, Fn, T, Ret >
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Namespaces

     utl
     STL's core language concepts.
     
     utl::meta
     
     utl::meta::apply_impl
     
     utl::meta::at_impl
     
     utl::meta::front_impl
     
     utl::meta::back_impl
     
     utl::meta::cat_impl
     
     utl::meta::fold_impl
     
     utl::meta::rev_fold_impl
     
     utl::meta::reverse_impl
     
     utl::meta::pop_front_impl
     
     utl::meta::pop_back_impl
     
     utl::meta::transform_impl
     
     utl::meta::transform_lazy_impl
     
     utl::meta::find_if_impl
     
     utl::meta::seek_if_impl
     
     utl::meta::count_if_impl
     
     utl::meta::filter_impl
     
     utl::meta::replace_if_impl
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Typedefs

    template<typename List >
    using utl::meta::size = size_< List::size()>
     
    template<typename List >
    using utl::meta::empty = bool_< List::empty()>
     
    template<typename T1 , typename T2 >
    using utl::meta::pair = typelist< T1, T2 >
     
    template<typename T >
    using utl::meta::at_impl::add_pointer = eval< _add_pointer< T > >
     
    template<typename List , typename... Ts>
    using utl::meta::push_front = eval< apply< bind_front< quote< typelist >, Ts... >, List > >
     
    template<typename List , typename... Ts>
    using utl::meta::push_back = eval< apply< bind_back< quote< typelist >, Ts... >, List > >
     
    template<typename List , typename Pred >
    using utl::meta::all_of = if_< empty< List >, false_, empty< filter< List, compose< quote< not_ >, Pred > > > >
     
    template<typename List , typename Pred >
    using utl::meta::any_of = not_< empty< filter< List, Pred > > >
     
    template<typename List , typename Pred >
    using utl::meta::none_of = empty< filter< List, Pred > >
     
    template<size_t N, typename ... Ts>
    using utl::meta::repeat_c = typename typelist< Ts... >::template times< N >
     
    template<typename N , typename ... Ts>
    using utl::meta::repeat = repeat_c< N::type::value, Ts... >
     
    template<typename Fn , typename Seq >
    using utl::meta::apply = apply_impl::apply_< Fn, Seq >
     
    template<typename Fn , typename Seq >
    using utl::meta::apply_t = eval< apply< Fn, Seq > >
     
    template<typename List , index_t N>
    using utl::meta::at_c = eval< at_impl::at_< List, N > >
     
    template<typename List , typename N >
    using utl::meta::at = at_c< List, N::type::value >
     
    template<typename List >
    using utl::meta::front = eval< front_impl::front_< List > >
     
    template<typename List >
    using utl::meta::back = eval< back_impl::back_< List > >
     
    template<typename... Lists>
    using utl::meta::cat = eval< cat_impl::cat_< Lists... > >
     
    template<typename List , typename V , typename Fn >
    using utl::meta::fold = eval< fold_impl::fold_< List, V, Fn > >
     
    template<typename List , typename V , typename Fn >
    using utl::meta::accumulate = fold< List, V, Fn >
     accumulate is an stl name for fold More...
     
    template<typename List , typename V , typename Fn >
    using utl::meta::rev_fold = eval< rev_fold_impl::rev_fold_< List, V, Fn > >
     
    template<typename List >
    using utl::meta::reverse = eval< reverse_impl::reverse_< List > >
     
    template<typename List >
    using utl::meta::pop_front = eval< pop_front_impl::pop_front_< List > >
     
    template<typename List >
    using utl::meta::pop_back = eval< pop_back_impl::pop_back_< List > >
     
    template<typename... Args>
    using utl::meta::transform = eval< transform_impl::transform_< typelist< Args... > > >
     
    template<typename... Args>
    using utl::meta::transform_lazy = eval< transform_lazy_impl::transform_lazy_< typelist< Args... > > >
     
    template<typename List , typename Pred >
    using utl::meta::find_if = eval< find_if_impl::find_if_< List, Pred, 0 > >
     
    template<typename List , typename T >
    using utl::meta::find = find_if< List, same_as< T > >
     
    template<typename List , typename Pred >
    using utl::meta::seek_if = eval< seek_if_impl::seek_if_< List, Pred, 0 > >
     
    template<typename List , typename T >
    using utl::meta::seek = seek_if< List, same_as< T > >
     
    template<typename List , typename Pred >
    using utl::meta::count_if = eval< count_if_impl::count_if_< List, Pred, 0 > >
     
    template<typename List , typename T >
    using utl::meta::count = count_if< List, same_as< T > >
     
    template<typename List , typename Pred >
    using utl::meta::filter = eval< filter_impl::filter_< List, Pred, typelist<> > >
     
    template<typename List , typename Pred , typename T >
    using utl::meta::replace_if = eval< replace_if_impl::replace_if_< List, Pred, T, typelist<> > >
     
    template<typename List , typename T , typename U >
    using utl::meta::replace = eval< replace_if< List, same_as< T >, U > >
     
    +

    Detailed Description

    +

    A template parameter "container".

    +

    Copyright (C) 2018-2019 Christos Choutouridis

    +

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    +

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

    +

    You should have received a copy of the GNU Lesser General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    + +

    Definition in file typelist.h.

    +
    +
    + + + + diff --git a/doc/html/typelist_8h.js b/doc/html/typelist_8h.js new file mode 100644 index 0000000..6d1e71d --- /dev/null +++ b/doc/html/typelist_8h.js @@ -0,0 +1,93 @@ +var typelist_8h = +[ + [ "typelist", "structutl_1_1meta_1_1typelist.html", "structutl_1_1meta_1_1typelist" ], + [ "cat_", "structutl_1_1meta_1_1typelist_1_1cat__.html", null ], + [ "cat_< typelist< L1... >, typelist< L2... > >", "structutl_1_1meta_1_1typelist_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4.html", "structutl_1_1meta_1_1typelist_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4" ], + [ "times_", "structutl_1_1meta_1_1typelist_1_1times__.html", "structutl_1_1meta_1_1typelist_1_1times__" ], + [ "times_< 1, T... >", "structutl_1_1meta_1_1typelist_1_1times___3_011_00_01_t_8_8_8_01_4.html", "structutl_1_1meta_1_1typelist_1_1times___3_011_00_01_t_8_8_8_01_4" ], + [ "times_< 0, T... >", "structutl_1_1meta_1_1typelist_1_1times___3_010_00_01_t_8_8_8_01_4.html", "structutl_1_1meta_1_1typelist_1_1times___3_010_00_01_t_8_8_8_01_4" ], + [ "apply_", "structutl_1_1meta_1_1apply__impl_1_1apply__.html", null ], + [ "apply_< Fn, typelist< List... > >", "structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01typelist_3_01_list_8_8_8_01_4_01_4.html", "structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01typelist_3_01_list_8_8_8_01_4_01_4" ], + [ "apply_< Fn, integer_sequence< T, Is... > >", "structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01integer__sequence_3_01_t_00_01_is_8_8_8_01_4_01_4.html", "structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01integer__sequence_3_01_t_00_01_is_8_8_8_01_4_01_4" ], + [ "_add_pointer", "structutl_1_1meta_1_1at__impl_1_1__add__pointer.html", "structutl_1_1meta_1_1at__impl_1_1__add__pointer" ], + [ "at_head_", "structutl_1_1meta_1_1at__impl_1_1at__head__.html", null ], + [ "at_head_< typelist< voids... > >", "structutl_1_1meta_1_1at__impl_1_1at__head___3_01typelist_3_01voids_8_8_8_01_4_01_4.html", "structutl_1_1meta_1_1at__impl_1_1at__head___3_01typelist_3_01voids_8_8_8_01_4_01_4" ], + [ "at_", "structutl_1_1meta_1_1at__impl_1_1at__.html", null ], + [ "at_< typelist< List... >, N >", "structutl_1_1meta_1_1at__impl_1_1at___3_01typelist_3_01_list_8_8_8_01_4_00_01_n_01_4.html", "structutl_1_1meta_1_1at__impl_1_1at___3_01typelist_3_01_list_8_8_8_01_4_00_01_n_01_4" ], + [ "front_", "structutl_1_1meta_1_1front__impl_1_1front__.html", null ], + [ "front_< typelist< Head, Tail... > >", "structutl_1_1meta_1_1front__impl_1_1front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.html", "structutl_1_1meta_1_1front__impl_1_1front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4" ], + [ "back_", "structutl_1_1meta_1_1back__impl_1_1back__.html", null ], + [ "back_< typelist< Head, Tail... > >", "structutl_1_1meta_1_1back__impl_1_1back___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.html", "structutl_1_1meta_1_1back__impl_1_1back___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4" ], + [ "cat_", "structutl_1_1meta_1_1cat__impl_1_1cat__.html", null ], + [ "cat_<>", "structutl_1_1meta_1_1cat__impl_1_1cat___3_4.html", "structutl_1_1meta_1_1cat__impl_1_1cat___3_4" ], + [ "cat_< typelist< L1... > >", "structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_01_4.html", "structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_01_4" ], + [ "cat_< typelist< L1... >, typelist< L2... > >", "structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4.html", "structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4" ], + [ "cat_< typelist< L1... >, typelist< L2... >, Ln... >", "structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_00_01_ln_8_8_8_01_4.html", null ], + [ "fold_", "structutl_1_1meta_1_1fold__impl_1_1fold__.html", null ], + [ "fold_< typelist< Head, Tail... >, V, Fn >", "structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4.html", "structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4" ], + [ "fold_< typelist<>, V0, Fn >", "structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_4_00_01_v0_00_01_fn_01_4.html", "structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_4_00_01_v0_00_01_fn_01_4" ], + [ "rev_fold_", "structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold__.html", null ], + [ "rev_fold_< typelist< Head, Tail... >, V, Fn >", "structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4.html", "structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4" ], + [ "rev_fold_< typelist< Tail >, V, Fn >", "structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_tail_01_4_00_01_v_00_01_fn_01_4.html", "structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_tail_01_4_00_01_v_00_01_fn_01_4" ], + [ "rev_fold_< typelist<>, V, Fn >", "structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_4_00_01_v_00_01_fn_01_4.html", "structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_4_00_01_v_00_01_fn_01_4" ], + [ "reverse_", "structutl_1_1meta_1_1reverse__impl_1_1reverse__.html", "structutl_1_1meta_1_1reverse__impl_1_1reverse__" ], + [ "pop_front_", "structutl_1_1meta_1_1pop__front__impl_1_1pop__front__.html", null ], + [ "pop_front_< typelist< Head, Tail... > >", "structutl_1_1meta_1_1pop__front__impl_1_1pop__front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.html", "structutl_1_1meta_1_1pop__front__impl_1_1pop__front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4" ], + [ "pop_back_", "structutl_1_1meta_1_1pop__back__impl_1_1pop__back__.html", "structutl_1_1meta_1_1pop__back__impl_1_1pop__back__" ], + [ "transform_", "structutl_1_1meta_1_1transform__impl_1_1transform__.html", null ], + [ "transform_< typelist< typelist< Ts... >, Fn >, void_t< invoke< Fn, Ts >... > >", "structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts_8_8_8_01_40fe2b1c8ede658aadb6925de73541689.html", "structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts_8_8_8_01_40fe2b1c8ede658aadb6925de73541689" ], + [ "transform_< typelist< typelist< Ts0... >, typelist< Ts1... >, Fn >, void_t< invoke< Fn, Ts0, Ts1 >... > >", "structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts0_8_8_8_01_8fba6bf3d0565d17a96950cb517db5f1.html", "structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts0_8_8_8_01_8fba6bf3d0565d17a96950cb517db5f1" ], + [ "transform_lazy_", "structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy__.html", null ], + [ "transform_lazy_< typelist< typelist< Ts... >, Fn >, void_t< invoke< Fn, Ts >... > >", "structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t56243bc35bf73da8271cb88f34751f3a.html", "structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t56243bc35bf73da8271cb88f34751f3a" ], + [ "transform_lazy_< typelist< typelist< Ts0... >, typelist< Ts1... >, Fn >, void_t< invoke< Fn, Ts0, Ts1 >... > >", "structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t14ff615a4bff6c4c3701df9c38aaa6a5.html", "structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t14ff615a4bff6c4c3701df9c38aaa6a5" ], + [ "find_if_", "structutl_1_1meta_1_1find__if__impl_1_1find__if__.html", null ], + [ "find_if_< typelist< Head, Tail... >, Fn, N >", "structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.html", "structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4" ], + [ "find_if_< typelist<>, Fn, N >", "structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.html", "structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4" ], + [ "seek_if_", "structutl_1_1meta_1_1seek__if__impl_1_1seek__if__.html", null ], + [ "seek_if_< typelist< Head, Tail... >, Fn, N >", "structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.html", "structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4" ], + [ "seek_if_< typelist<>, Fn, N >", "structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.html", "structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4" ], + [ "count_if_", "structutl_1_1meta_1_1count__if__impl_1_1count__if__.html", null ], + [ "count_if_< typelist< Head, Tail... >, Fn, N >", "structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.html", "structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4" ], + [ "count_if_< typelist<>, Fn, N >", "structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.html", "structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4" ], + [ "filter_", "structutl_1_1meta_1_1filter__impl_1_1filter__.html", null ], + [ "filter_< typelist< Head, Tail... >, Fn, L >", "structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_l_01_4.html", "structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_l_01_4" ], + [ "filter_< typelist<>, Fn, L >", "structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_4_00_01_fn_00_01_l_01_4.html", "structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_4_00_01_fn_00_01_l_01_4" ], + [ "replace_if_", "structutl_1_1meta_1_1replace__if__impl_1_1replace__if__.html", null ], + [ "replace_if_< typelist< Head, Tail... >, Fn, T, Ret >", "structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_01_head_00_01_tail_8_8_8_dfa8065a3617f53ecded260506092a07.html", "structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_01_head_00_01_tail_8_8_8_dfa8065a3617f53ecded260506092a07" ], + [ "replace_if_< typelist<>, Fn, T, Ret >", "structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_4_00_01_fn_00_01_t_00_01_ret_01_4.html", "structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_4_00_01_fn_00_01_t_00_01_ret_01_4" ], + [ "accumulate", "typelist_8h.html#aeb5cb48e804cd160b39f8c3ed2967c37", null ], + [ "add_pointer", "typelist_8h.html#a1759f370bc952ff21077efca9fe0e0b4", null ], + [ "all_of", "typelist_8h.html#ace96e2f19376375cc71ee0cd80f4bb75", null ], + [ "any_of", "typelist_8h.html#a212c26a29491610187f6e8543f06df5f", null ], + [ "apply", "typelist_8h.html#a3f684549221fac60bc8c7979cb4b98f4", null ], + [ "apply_t", "typelist_8h.html#ac2952cd4ed04938edc6de21ffe200e9b", null ], + [ "at", "typelist_8h.html#a67329ec425c857dcaf4cde9044674c90", null ], + [ "at_c", "typelist_8h.html#a6683b804a20d54817d61ce4663527084", null ], + [ "back", "typelist_8h.html#ad9ee55707fc633d53577b81a59136b7d", null ], + [ "cat", "typelist_8h.html#a70d0910ace47f4e12e8fa0788679044a", null ], + [ "count", "typelist_8h.html#ab5508236016638fa8e6b97cd17dfc9c2", null ], + [ "count_if", "typelist_8h.html#a981e18b40d69cdd76466de7bfe24e619", null ], + [ "empty", "typelist_8h.html#a58c1744750d0df133034f60a95f87e19", null ], + [ "filter", "typelist_8h.html#ac72acc616316c322e750d20a46553ba4", null ], + [ "find", "typelist_8h.html#af4c9b6350bba98cc0dd73e87cb4ce413", null ], + [ "find_if", "typelist_8h.html#aacf124929c0cbb3b29d34679bff50a96", null ], + [ "fold", "typelist_8h.html#a6108f39d28c924146eff4143a61af226", null ], + [ "front", "typelist_8h.html#ace309fb2eff5c4a5a806b9393abea486", null ], + [ "none_of", "typelist_8h.html#af324255cfaa0be3f02843961f5becb85", null ], + [ "pair", "typelist_8h.html#aa6513d9d2a5db3ba3517efff33adc761", null ], + [ "pop_back", "typelist_8h.html#a86a37f5803c474823963e1f3c6f7a6d6", null ], + [ "pop_front", "typelist_8h.html#aa4a307a81c0640c6c0dd08f8a53f3c32", null ], + [ "push_back", "typelist_8h.html#adf545ba110edc6a34ddcaf2280a0c7f4", null ], + [ "push_front", "typelist_8h.html#ab0f84ba0807b6fd36fa9e4e5cfc4cd32", null ], + [ "repeat", "typelist_8h.html#aa013c45afb59b5c132a72be54ba145fb", null ], + [ "repeat_c", "typelist_8h.html#af6ff0017ea5e914543527b7135930f47", null ], + [ "replace", "typelist_8h.html#ac9d120f858ebfa2b0ef74c6305a9fb6d", null ], + [ "replace_if", "typelist_8h.html#a848a47bf281bf3eaf932cc9113477102", null ], + [ "rev_fold", "typelist_8h.html#ab1a91edef4cf9fd56b73c9a03eaeb3d4", null ], + [ "reverse", "typelist_8h.html#a2ae6bfa22f1912b0ba09d24e0ae2ccd9", null ], + [ "seek", "typelist_8h.html#aa550d9dc96d34623af4ce71f8a1eaff5", null ], + [ "seek_if", "typelist_8h.html#ab8eafd75f3077a36c4e3363b742da64a", null ], + [ "size", "typelist_8h.html#a0edfc2c15e42531e53c0822264d220ec", null ], + [ "transform", "typelist_8h.html#ac8bbf187eea3cb5da38d1bdc97b52334", null ], + [ "transform_lazy", "typelist_8h.html#a55c0405bfb94c1d285d3131390c31451", null ] +]; \ No newline at end of file diff --git a/doc/html/typelist_8h_source.html b/doc/html/typelist_8h_source.html new file mode 100644 index 0000000..9735e97 --- /dev/null +++ b/doc/html/typelist_8h_source.html @@ -0,0 +1,208 @@ + + + + + + + +uTL: include/utl/meta/typelist.h Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    typelist.h
    +
    +
    +Go to the documentation of this file.
    1 
    20 #ifndef __utl_meta_typelist_h__
    21 #define __utl_meta_typelist_h__
    22 
    23 #include <utl/core/impl.h>
    24 #include <utl/meta/integral.h>
    25 #include <utl/meta/detection.h>
    26 #include <utl/meta/invoke.h>
    27 #include <utl/meta/sfinae.h>
    32 
    34 namespace utl {
    35 namespace meta {
    36 
    64  template <typename... Ts>
    65  struct typelist {
    66  using type = typelist;
    67 
    69  static constexpr size_t size() noexcept {
    70  return sizeof...(Ts);
    71  }
    73  static constexpr bool empty() noexcept {
    74  return (sizeof...(Ts) == 0);
    75  }
    76  // ======= times utility =======
    77  private:
    78  template <typename... > struct cat_ { };
    79  template <typename... L1, typename... L2>
    80  struct cat_<typelist<L1...>, typelist<L2...>> {
    81  using type = typelist<L1..., L2...>;
    82  };
    83 
    84  template <size_t N, typename ...T>
    85  struct times_ {
    86  //static_assert( N >= 0, "Cannot make typelist of negative length" );
    87  using type = eval<
    88  cat_<
    89  eval<times_<N/2, T...>>,
    90  eval<times_<N - N/2, T...>>
    91  >
    92  >;
    93  };
    94  template <typename ...T>
    95  struct times_<1, T...> {
    96  using type = typelist<T...>;
    97  };
    98  template <typename ...T>
    99  struct times_<0, T...> {
    100  using type = typelist<>;
    101  };
    102  public:
    114  template<size_t N>
    115  using times = eval<
    116  times_<N, Ts...>
    117  >;
    118  };
    119 
    128  template <typename List>
    130 
    139  template <typename List>
    141 
    144  template <typename T1, typename T2>
    146 
    147 
    150 
    154  template <size_t N, typename ...Ts>
    155  using repeat_c = typename typelist<Ts...>::template times<N>;
    156 
    160  template <typename N, typename ...Ts>
    161  using repeat = repeat_c<N::type::value, Ts...>;
    163 
    169  namespace apply_impl {
    171  template <typename Fn, typename Seq>
    172  struct apply_ { };
    173 
    175  template<typename Fn, typename ...List>
    176  struct apply_<Fn, typelist<List...>> {
    177  using type = invoke<Fn, List...>;
    178  };
    180  template <typename Fn, typename T, T... Is>
    181  struct apply_<Fn, integer_sequence<T, Is...>> {
    183  };
    184  }
    185 
    196  template <typename Fn, typename Seq>
    198 
    199  template <typename Fn, typename Seq>
    201 
    203 
    204  /*
    205  * ========= element access ========
    206  */
    209  namespace at_impl {
    210 
    211  template <typename T> struct _add_pointer { using type = T*; };
    212  template <typename T> using add_pointer = eval < _add_pointer <T> >;
    213 
    214  template <typename ...>
    215  struct at_head_ { };
    216 
    217  template <typename... voids>
    218  struct at_head_ <typelist<voids...>> {
    219  // successful selection N voids, one T* and the rest
    220  template <typename T> static constexpr T select(voids..., T*, ...);
    221  // selection on error
    222  static constexpr nil_ select (...);
    223  };
    224 
    225  template<typename List, index_t N>
    226  struct at_ { };
    227 
    228  template<typename... List, index_t N>
    229  struct at_<typelist<List...>, N> {
    230  using head_ = at_head_<typelist<void*>::times<N>>; //< make at_head_<> with N void*
    231  using type = decltype(
    232  head_::select(static_cast<add_pointer<List>>(nullptr)...) //< pass all as List*...
    233  );
    234  };
    235  }
    236 
    242  template <typename List, index_t N>
    243  using at_c = eval<
    245  >;
    246 
    252  template <typename List, typename N>
    255 
    256 
    259  namespace front_impl {
    260  template <typename L>
    261  struct front_ { };
    262 
    263  template <typename Head, typename... Tail>
    264  struct front_<typelist<Head, Tail...>> {
    265  using type = Head;
    266  };
    267  }
    268 
    271  template <typename List>
    272  using front = eval<
    274  >;
    276 
    279  namespace back_impl {
    280  template <typename List>
    281  struct back_ { };
    282 
    283  template <typename Head, typename... Tail>
    284  struct back_<typelist<Head, Tail...>> {
    285  using type = at_c <
    286  typelist<Head, Tail...>, sizeof...(Tail)
    287  >;
    288  };
    289  }
    290 
    293  template <typename List>
    294  using back = eval<
    296  >;
    298  /*
    299  * ========= typelist operations =========
    300  */
    301 
    304  namespace cat_impl {
    305  template <typename... Lists>
    306  struct cat_ { };
    307 
    308  template <>
    309  struct cat_<> {
    310  using type = typelist<>;
    311  };
    312 
    313  template <typename... L1>
    314  struct cat_<typelist<L1...>> {
    315  using type = typelist<L1...>;
    316  };
    317 
    318  template <typename... L1, typename... L2>
    319  struct cat_<typelist<L1...>, typelist<L2...>> {
    320  using type = typelist<L1..., L2...>;
    321  };
    322 
    323  template <typename... L1, typename... L2, typename... Ln>
    324  struct cat_<typelist<L1...>, typelist<L2...>, Ln...>
    325  : cat_ <typelist<L1..., L2...>, Ln...> { };
    326 
    327  }
    328 
    335  template <typename... Lists>
    336  using cat = eval<
    337  cat_impl::cat_<Lists...>
    338  >;
    340 
    341 
    344  namespace fold_impl {
    345  // fold<<T1, T2, T3>, V, F> == F<F<F<V, T1>, T2>, T3>
    346  template<typename, typename, typename>
    347  struct fold_ { }; // ill formed
    348 
    349  // recursive call
    350  template<typename Head, typename... Tail,
    351  typename V,
    352  typename Fn>
    353  struct fold_<typelist<Head, Tail...>, V, Fn> {
    354  // recursive call of fold_ by consuming typelist and invoking Fn
    355  using type = eval<
    356  fold_<
    357  typelist<Tail...>,
    359  Fn
    360  >
    361  >;
    362  };
    363  // termination call
    364  template<typename V0, typename Fn>
    365  struct fold_<typelist<>, V0, Fn> {
    366  using type = V0;
    367  };
    368  }
    369 
    382  template <typename List, typename V, typename Fn>
    384 
    386  template <typename List, typename V, typename Fn>
    388 
    389  namespace rev_fold_impl {
    390 
    391  // rev_fold<<T1, T2, T3>, V, F> == F<T1, F<T2, F<T3, V>>>
    392  template<typename, typename, typename>
    393  struct rev_fold_ { }; // ill formed
    394 
    395  // recursive call
    396  template<typename Head, typename... Tail,
    397  typename V,
    398  typename Fn>
    399  struct rev_fold_<typelist<Head, Tail...>, V, Fn> {
    400  // recursive call inside invoke. This way the 2nd argument of Fn
    401  // becoming the recursive "thing", inside Fn<>
    402  using type = invoke <
    403  Fn, Head, eval<
    404  rev_fold_ <
    405  typelist<Tail...>,
    406  V,
    407  Fn
    408  >>
    409  >;
    410  };
    411  // pre-termination call
    412  template<typename Tail, typename V, typename Fn>
    413  struct rev_fold_ <typelist<Tail>, V, Fn> {
    415  };
    416  // termination call
    417  template<typename V, typename Fn>
    418  struct rev_fold_ <typelist<>, V, Fn> {
    419  using type = V;
    420  };
    421  }
    422 
    435  template <typename List, typename V, typename Fn>
    436  using rev_fold = eval<
    438  >;
    440 
    445  template <typename List, typename... Ts>
    446  using push_front = eval<
    447  apply <
    448  bind_front<quote<typelist>, Ts...>, List
    449  >
    450  >;
    451 
    456  template <typename List, typename... Ts>
    457  using push_back = eval<
    458  apply <
    459  bind_back<quote<typelist>, Ts...>, List
    460  >
    461  >;
    462 
    465  namespace reverse_impl {
    466  template <typename List, typename V = typelist<>>
    467  struct reverse_ {
    469  };
    470  }
    471 
    476  template <typename List>
    477  using reverse = eval<
    479  >;
    481 
    484  namespace pop_front_impl {
    485  template <typename List>
    486  struct pop_front_ { };
    487 
    488  template <typename Head, typename... Tail>
    489  struct pop_front_<typelist <Head, Tail...>> {
    490  using type = typelist<Tail...>;
    491  };
    492  }
    493 
    499  template <typename List>
    500  using pop_front = eval<
    502  >;
    504 
    507  namespace pop_back_impl {
    508  template <typename List>
    509  struct pop_back_ {
    510  using type = reverse<
    512  >;
    513  };
    514  }
    515 
    523  template <typename List>
    524  using pop_back = eval <
    526  >;
    528 
    531  namespace transform_impl {
    532  template <typename, typename = void>
    533  struct transform_ { };
    534 
    535  template <typename... Ts, typename Fn>
    536  struct transform_<typelist<typelist<Ts...>, Fn>,
    537  void_t<invoke<Fn, Ts>...> > /* SFINAE check */ {
    538  using type = typelist<
    540  >;
    541  };
    542 
    543  template <typename... Ts0, typename... Ts1, typename Fn>
    544  struct transform_<typelist<typelist<Ts0...>, typelist<Ts1...>, Fn>,
    545  void_t<invoke<Fn, Ts0, Ts1>...>> /* SFINAE check */ {
    546  using type = typelist<
    548  >;
    549  };
    550  }
    551 
    565  template <typename... Args>
    566  using transform = eval<
    568  >;
    570 
    573  namespace transform_lazy_impl {
    574  template <typename, typename = void>
    575  struct transform_lazy_ { };
    576 
    577  // Match for Unary Fn with one typelist
    578  template <typename... Ts, typename Fn>
    579  struct transform_lazy_<typelist<typelist<Ts...>, Fn>,
    580  void_t<invoke<Fn, Ts>...> > /* SFINAE check */ {
    581  using type = typelist<
    582  invoke<Fn, Ts>...
    583  >;
    584  };
    585 
    586  // Match for Binary Fn with two typelists
    587  template <typename... Ts0, typename... Ts1, typename Fn>
    588  struct transform_lazy_<typelist<typelist<Ts0...>, typelist<Ts1...>, Fn>,
    589  void_t<invoke<Fn, Ts0, Ts1>...>> /* SFINAE check */ {
    590  using type = typelist<
    592  >;
    593  };
    594  }
    595 
    611  template <typename... Args>
    612  using transform_lazy = eval<
    614  >;
    616 
    617 
    620  namespace find_if_impl {
    621  template <typename, typename, index_t>
    622  struct find_if_ { };
    623 
    624  template<typename Head, typename... Tail, typename Fn, index_t N>
    625  struct find_if_<typelist<Head, Tail...>, Fn, N> {
    626  // Recursive call to find_if_ until Fn returns true_
    627  using type = if_ <
    629  index_<N>, // done, return current index
    630  eval<find_if_< // not done, re-call find_if_ with the Tail...
    631  typelist<Tail...>, Fn, N+1>
    632  >
    633  >;
    634  };
    635 
    636  // When empty or when we are one place after the last item return Npos
    637  template<typename Fn, index_t N>
    638  struct find_if_<typelist<>, Fn, N> {
    639  using type = Npos;
    640  };
    641  }
    642 
    654  template<typename List, typename Pred>
    655  using find_if = eval<
    657  >;
    658 
    662  template <typename List, typename T>
    665 
    668  namespace seek_if_impl {
    669  template <typename, typename, index_t>
    670  struct seek_if_ { };
    671 
    672  template<typename Head, typename... Tail, typename Fn, index_t N>
    673  struct seek_if_<typelist<Head, Tail...>, Fn, N> {
    674  // recursive call to seek_if_ until Fn returns true_
    675  using type = if_ <
    677  typelist<Head, Tail...>, // done, return the typelist starting from here
    678  eval<seek_if_< // not done, re-call seek_if_ with the Tail...
    679  typelist<Tail...>, Fn, N+1>
    680  >
    681  >;
    682  };
    683 
    684  // When empty or when we are one place after the last item return empty typelist
    685  template<typename Fn, index_t N>
    686  struct seek_if_<typelist<>, Fn, N> {
    687  using type = typelist<>;
    688  };
    689  }
    690 
    702  template <typename List, typename Pred>
    703  using seek_if = eval<
    705  >;
    710  template <typename List, typename T>
    713 
    716  namespace count_if_impl {
    717  template <typename, typename, size_t>
    718  struct count_if_ { };
    719 
    720  template<typename Head, typename... Tail, typename Fn, size_t N>
    721  struct count_if_<typelist<Head, Tail...>, Fn, N> {
    722  // Recursive call to count_if_ up to the end of List, counting all invokes of Fn
    723  // returning true_
    724  using type = if_ <
    726  eval<
    727  count_if_<typelist<Tail...>, Fn, N+1> // increase and re-call
    728  >,
    729  eval<
    730  count_if_<typelist<Tail...>, Fn, N> // re-call without increasing
    731  >
    732  >;
    733  };
    734 
    735  // At the end of the List return the counter
    736  template<typename Fn, size_t N>
    737  struct count_if_<typelist<>, Fn, N> {
    738  using type = size_<N>;
    739  };
    740  }
    741 
    752  template <typename List, typename Pred>
    753  using count_if = eval<
    755  >;
    756 
    760  template <typename List, typename T>
    763 
    766  namespace filter_impl {
    767  template <typename, typename, typename>
    768  struct filter_ { };
    769 
    770  template<typename Head, typename... Tail, typename Fn, typename L>
    771  struct filter_<typelist<Head, Tail...>, Fn, L> {
    772  // Recursive call to filter_ up to the end of the List, creating a new list
    773  // of items for which the invoke of Fn returns true_
    774  using type = if_ <
    776  eval<filter_<typelist<Tail...>, Fn, cat<L, typelist<Head>>>>, // Add the element and re-call
    777  eval<filter_<typelist<Tail...>, Fn, L>> // re-call with the same list
    778  >;
    779  };
    780 
    781  // At the end return the produced list
    782  template<typename Fn, typename L>
    783  struct filter_<typelist<>, Fn, L> {
    784  using type = L;
    785  };
    786  }
    787 
    797  template <typename List, typename Pred>
    798  using filter = eval<
    800  >;
    802 
    805  namespace replace_if_impl {
    806  template <typename, typename, typename, typename>
    807  struct replace_if_ { };
    808 
    809  template <typename Head, typename... Tail, typename Fn, typename T, typename Ret>
    810  struct replace_if_<typelist<Head, Tail...>, Fn, T, Ret> {
    811  // Recursive call to replace_if_ up to the end of the List, creating a new list
    812  // of items based on invocation of Fn
    813  using type = if_ <
    815  eval<replace_if_<typelist<Tail...>, Fn, T, cat<Ret, typelist<T>>>>, // re-call with change to T
    816  eval<replace_if_<typelist<Tail...>, Fn, T, cat<Ret, typelist<Head>>>> // re-call with no change
    817  >;
    818  };
    819 
    820  // At the end return the produced list
    821  template <typename Fn, typename T, typename Ret>
    822  struct replace_if_ <typelist<>, Fn, T, Ret> {
    823  using type = Ret;
    824  };
    825  }
    826 
    838  template<typename List, typename Pred, typename T>
    839  using replace_if = eval<
    841  >;
    842 
    845  template <typename List, typename T, typename U>
    846  using replace = eval <
    848  >;
    850 
    851 
    854  template <typename List, typename Pred>
    855  using all_of = if_ <
    856  empty <List>,
    857  false_,
    858  empty <
    860  >
    861  >;
    862 
    865  template <typename List, typename Pred>
    866  using any_of = not_<
    868  >;
    869 
    872  template <typename List, typename Pred>
    873  using none_of = empty<
    875  >;
    876 
    877 }}
    878 
    880 
    881 #endif /* __utl_meta_typelist_h__ */
    fold< List, V, Fn > accumulate
    accumulate is an stl name for fold
    Definition: typelist.h:387
    + + +
    empty< filter< List, Pred > > none_of
    Definition: typelist.h:875
    + +
    if_c< If::type::value, Args... > if_
    Select one type or another depending on a compile-time Boolean type.
    Definition: selection.h:66
    +
    void void_t
    void_t type alias
    Definition: detection.h:55
    +
    eval< count_if_impl::count_if_< List, Pred, 0 > > count_if
    Definition: typelist.h:755
    +
    eval< filter_impl::filter_< List, Pred, typelist<> > > filter
    Definition: typelist.h:800
    +
    eval< at_impl::at_< List, N > > at_c
    Definition: typelist.h:245
    +
    eval< cat_< eval< times_< N/2, T... > >, eval< times_< N - N/2, T... > > > > type
    Definition: typelist.h:92
    +
    eval< _add_pointer< T > > add_pointer
    Definition: typelist.h:212
    + +
    eval< replace_if_impl::replace_if_< List, Pred, T, typelist<> > > replace_if
    Definition: typelist.h:841
    +
    if_< invoke_t< Fn, Head >, eval< replace_if_< typelist< Tail... >, Fn, T, cat< Ret, typelist< T > >> >, eval< replace_if_< typelist< Tail... >, Fn, T, cat< Ret, typelist< Head > >> > > type
    Definition: typelist.h:817
    +
    size_< List::size()> size
    Definition: typelist.h:129
    + +
    eval< apply< bind_back< quote< typelist >, Ts... >, List > > push_back
    Definition: typelist.h:461
    +
    eval< back_impl::back_< List > > back
    Definition: typelist.h:296
    +
    eval< fold_< typelist< Tail... >, invoke< Fn, V, Head >, Fn > > type
    Definition: typelist.h:361
    + + + +
    static constexpr size_t size() noexcept
    Definition: typelist.h:69
    +
    at_c< List, N::type::value > at
    Definition: typelist.h:253
    +
    eval< reverse_impl::reverse_< List > > reverse
    Definition: typelist.h:479
    +
    repeat_c< N::type::value, Ts... > repeat
    Definition: typelist.h:161
    +
    integral_< size_t, v > size_
    size_ type: integral constant wrapper for size_t a.k.a std::size_t
    Definition: integral.h:110
    + +
    if_< invoke_t< Fn, Head >, eval< filter_< typelist< Tail... >, Fn, cat< L, typelist< Head > >> >, eval< filter_< typelist< Tail... >, Fn, L > > > type
    Definition: typelist.h:778
    + + +
    eval< replace_if< List, same_as< T >, U > > replace
    Definition: typelist.h:848
    +
    invoke< Fn, Head, eval< rev_fold_< typelist< Tail... >, V, Fn > > > type
    Definition: typelist.h:409
    +
    find_if< List, same_as< T > > find
    Definition: typelist.h:663
    + + + +
    count_if< List, same_as< T > > count
    Definition: typelist.h:761
    + +
    if_< invoke_t< Fn, Head >, eval< count_if_< typelist< Tail... >, Fn, N+1 > >, eval< count_if_< typelist< Tail... >, Fn, N > > > type
    Definition: typelist.h:732
    +
    size_< index_t(-1)> Npos
    The last position we can express for indexing.
    Definition: integral.h:124
    + +
    if_< invoke_t< Fn, Head >, typelist< Head, Tail... >, eval< seek_if_< typelist< Tail... >, Fn, N+1 > > > type
    Definition: typelist.h:681
    +
    eval< cat_impl::cat_< Lists... > > cat
    Definition: typelist.h:338
    + +
    static constexpr bool empty() noexcept
    Definition: typelist.h:73
    +
    bool_< false > false_
    The type used as a compile-time boolean with false value.
    Definition: integral.h:69
    +
    eval< seek_if_impl::seek_if_< List, Pred, 0 > > seek_if
    Definition: typelist.h:705
    +
    eval< rev_fold_impl::rev_fold_< List, V, Fn > > rev_fold
    Definition: typelist.h:438
    +
    eval< fold_impl::fold_< List, V, Fn > > fold
    Definition: typelist.h:383
    +
    typename Tp::type eval
    Type alias for Tp::type. Used to evaluate/extract return type of metafunctions.
    Definition: integral.h:49
    +
    fold< List, V, quote< push_front > > type
    Definition: typelist.h:468
    +
    Detection idiom based on WG21&#39;s N4502 [n4502 1] from Walter E. Brown.
    +
    not_< empty< filter< List, Pred > > > any_of
    Definition: typelist.h:868
    +
    STL&#39;s core language concepts.
    Definition: _1wire.h:30
    +
    if_< empty< List >, false_, empty< filter< List, compose< quote< not_ >, Pred > > > > all_of
    Definition: typelist.h:861
    + +
    at_c< typelist< Head, Tail... >, sizeof...(Tail) > type
    Definition: typelist.h:287
    + +
    eval< pop_back_impl::pop_back_< List > > pop_back
    Definition: typelist.h:526
    +
    eval< apply< bind_front< quote< typelist >, Ts... >, List > > push_front
    Definition: typelist.h:450
    + +
    Template meta-programming SFINAE helpers.
    +
    decltype(head_::select(static_cast< add_pointer< List > >(nullptr)...)) type
    Definition: typelist.h:233
    +
    eval< pop_front_impl::pop_front_< List > > pop_front
    Definition: typelist.h:502
    +
    integral_< index_t, v > index_
    index_ type: integral constant wrapper for index_t a.k.a std::size_t
    Definition: integral.h:106
    + +
    eval< times_< N, Ts... > > times
    Definition: typelist.h:117
    + +
    if_< invoke_t< Fn, Head >, index_< N >, eval< find_if_< typelist< Tail... >, Fn, N+1 > > > type
    Definition: typelist.h:633
    +
    integral_< bool, v > bool_
    bool_ type: integral constant wrapper for bool
    Definition: integral.h:66
    +
    size_t index_t
    index_t and size_t mend to be interchangeable
    Definition: types.h:38
    + + + +
    eval< front_impl::front_< List > > front
    Definition: typelist.h:274
    + +
    eval< find_if_impl::find_if_< List, Pred, 0 > > find_if
    Definition: typelist.h:657
    + +
    typename typelist< Ts... >::template times< N > repeat_c
    Definition: typelist.h:155
    + +
    std::integer_sequence< Tp, Ints... > integer_sequence
    Definition: integral.h:129
    +
    reverse< pop_front< reverse< List > > > type
    Definition: typelist.h:512
    + +
    eval< transform_impl::transform_< typelist< Args... > > > transform
    Definition: typelist.h:568
    + + +
    eval< invoke< Fn, Args... > > invoke_t
    Definition: invoke.h:88
    + + +
    eval< apply< Fn, Seq > > apply_t
    Definition: typelist.h:200
    +
    typename Fn::template apply< Args... > invoke
    Definition: invoke.h:81
    +
    not_c< _Tp::type::value > not_
    not
    Definition: operations.h:47
    + + +
    seek_if< List, same_as< T > > seek
    Definition: typelist.h:711
    + + +
    bool_< List::empty()> empty
    Definition: typelist.h:140
    +
    Implementation detail main forward header.
    + +
    eval< transform_lazy_impl::transform_lazy_< typelist< Args... > > > transform_lazy
    Definition: typelist.h:614
    +
    +
    + + + + diff --git a/doc/html/types_8h.html b/doc/html/types_8h.html new file mode 100644 index 0000000..2eb6c68 --- /dev/null +++ b/doc/html/types_8h.html @@ -0,0 +1,149 @@ + + + + + + + +uTL: include/utl/core/types.h File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    types.h File Reference
    +
    +
    + +

    Basic type alias support. +More...

    +
    #include <cstddef>
    +#include <cstdint>
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Namespaces

     utl
     STL's core language concepts.
     
    + + + + + + + + + + + + + + + + + + +

    +Typedefs

    byte and word types
    using utl::byte_t = uint8_t
     8 bits wide More...
     
    using utl::word_t = uint16_t
     16 bits wide More...
     
    using utl::dword_t = uint32_t
     
    size and index
    using utl::size_t = std::size_t
     
    using utl::index_t = size_t
     index_t and size_t mend to be interchangeable More...
     
    using utl::ptrdiff_t = std::ptrdiff_t
     
    +

    Detailed Description

    +

    Basic type alias support.

    +

    Copyright (C) 2018 Christos Choutouridis

    +

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    +

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

    +

    You should have received a copy of the GNU Lesser General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    + +

    Definition in file types.h.

    +
    +
    + + + + diff --git a/doc/html/types_8h.js b/doc/html/types_8h.js new file mode 100644 index 0000000..261c964 --- /dev/null +++ b/doc/html/types_8h.js @@ -0,0 +1,9 @@ +var types_8h = +[ + [ "byte_t", "types_8h.html#a1427cb5a2b13313147a902173b91e3c1", null ], + [ "dword_t", "types_8h.html#abc93b88d0c0f95081ecd3d2194daf0fb", null ], + [ "index_t", "types_8h.html#a676c0acd539dd04048dcc7b4d698577e", null ], + [ "ptrdiff_t", "types_8h.html#a1b83655ba00b548af9b51f169c6c567a", null ], + [ "size_t", "types_8h.html#a22cbecb50ee5c1032de66133e96cbac6", null ], + [ "word_t", "types_8h.html#a1368cb6928f648fe4db1c85c190f0548", null ] +]; \ No newline at end of file diff --git a/doc/html/types_8h_source.html b/doc/html/types_8h_source.html new file mode 100644 index 0000000..875b8e1 --- /dev/null +++ b/doc/html/types_8h_source.html @@ -0,0 +1,112 @@ + + + + + + + +uTL: include/utl/core/types.h Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    types.h
    +
    +
    +Go to the documentation of this file.
    1 
    21 #ifndef __utl_core_types_h__
    22 #define __utl_core_types_h__
    23 
    24 #include <cstddef>
    25 #include <cstdint>
    26 
    27 //#include <type_traits>
    28 
    29 namespace utl {
    31  using byte_t = uint8_t;
    32  using word_t = uint16_t;
    33  using dword_t = uint32_t;
    34 
    37  using size_t = std::size_t;
    38  using index_t = size_t;
    39 
    42 }
    43 
    44 #endif /* __utl_core_types_h__ */
    uint32_t dword_t
    Definition: types.h:33
    +
    std::ptrdiff_t ptrdiff_t
    Definition: types.h:40
    +
    std::size_t size_t
    Definition: types.h:37
    +
    STL&#39;s core language concepts.
    Definition: _1wire.h:30
    +
    size_t index_t
    index_t and size_t mend to be interchangeable
    Definition: types.h:38
    +
    uint16_t word_t
    16 bits wide
    Definition: types.h:32
    +
    uint8_t byte_t
    8 bits wide
    Definition: types.h:31
    +
    +
    + + + + diff --git a/doc/html/useif_8h.html b/doc/html/useif_8h.html new file mode 100644 index 0000000..552dfed --- /dev/null +++ b/doc/html/useif_8h.html @@ -0,0 +1,152 @@ + + + + + + + +uTL: include/utl/meta/useif.h File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    useif.h File Reference
    +
    +
    + +

    Template meta-programming SFINAE helpers. +More...

    +
    #include <utl/core/impl.h>
    +#include <utl/meta/operations.h>
    +#include <utl/meta/sfinae.h>
    +
    +

    Go to the source code of this file.

    + + + + + + + +

    +Namespaces

     utl
     STL's core language concepts.
     
     utl::meta
     
    + + + + + + + + + + + + + + + + + +

    +Typedefs

    template<typename _T1 , typename _T2 , typename _Ret = _T1>
    using utl::meta::use_if_same_t = enable_if_t< same_< _T1, _T2 >::value, _Ret >
     If same type resolves to _Ret, else SFINAE. More...
     
    template<typename _T1 , typename _T2 , typename _Ret = _T1>
    using utl::meta::use_if_not_same_t = enable_if_t< !same_< _T1, _T2 >::value, _Ret >
     If not same type resolves to _Ret, else SFINAE. More...
     
    template<typename T1 , typename... Ts>
    using utl::meta::use_if_any_t = enable_if_t< or_< T1, Ts... >::value, T1 >
     If any type (_T1 or _T2) type resolves to _Ret, else to SFINAE. More...
     
    template<typename T1 , typename... Ts>
    using utl::meta::use_if_all_t = enable_if_t< and_< T1, Ts... >::value, T1 >
     If both type (_T1 and _T2) type resolves to _Ret, else to SFINAE. More...
     
    +

    Detailed Description

    +

    Template meta-programming SFINAE helpers.

    +

    Copyright (C) 2018 Christos Choutouridis

    +

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    +

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

    +

    You should have received a copy of the GNU Lesser General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    + +

    Definition in file useif.h.

    +
    +
    + + + + diff --git a/doc/html/useif_8h.js b/doc/html/useif_8h.js new file mode 100644 index 0000000..4a65cb5 --- /dev/null +++ b/doc/html/useif_8h.js @@ -0,0 +1,7 @@ +var useif_8h = +[ + [ "use_if_all_t", "useif_8h.html#a52ff6257bf079904f9cb51a65f5a7397", null ], + [ "use_if_any_t", "useif_8h.html#ad0394846551cd881782e46d2d05190de", null ], + [ "use_if_not_same_t", "useif_8h.html#af590469269a8c378d937d8d75ee96e8c", null ], + [ "use_if_same_t", "useif_8h.html#a7b4ba22b3afb3e7a98e1012a350cb573", null ] +]; \ No newline at end of file diff --git a/doc/html/useif_8h_source.html b/doc/html/useif_8h_source.html new file mode 100644 index 0000000..6dd0584 --- /dev/null +++ b/doc/html/useif_8h_source.html @@ -0,0 +1,117 @@ + + + + + + + +uTL: include/utl/meta/useif.h Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    useif.h
    +
    +
    +Go to the documentation of this file.
    1 
    20 #ifndef __utl_meta_useif_h__
    21 #define __utl_meta_useif_h__
    22 
    23 #include <utl/core/impl.h>
    24 #include <utl/meta/operations.h>
    25 #include <utl/meta/sfinae.h>
    26 
    32 namespace utl {
    34 namespace meta {
    35 
    37  template <typename _T1, typename _T2, typename _Ret =_T1>
    38  using use_if_same_t = enable_if_t<
    39  same_<_T1, _T2>::value, _Ret
    40  >;
    42  template <typename _T1, typename _T2, typename _Ret =_T1>
    45  >;
    47  template <typename T1, typename... Ts>
    48  using use_if_any_t = enable_if_t<
    49  or_<T1, Ts...>::value, T1
    50  >;
    51 
    53  template <typename T1, typename... Ts>
    54  using use_if_all_t = enable_if_t<
    55  and_<T1, Ts...>::value, T1
    56  >;
    57 
    58 }}
    59 
    61 
    62 #endif /* __utl_meta_useif_h__ */
    enable_if_t< same_< _T1, _T2 >::value, _Ret > use_if_same_t
    If same type resolves to _Ret, else SFINAE.
    Definition: useif.h:40
    +
    enable_if_t< !same_< _T1, _T2 >::value, _Ret > use_if_not_same_t
    If not same type resolves to _Ret, else SFINAE.
    Definition: useif.h:45
    +
    Integral constant operations and logical operations.
    +
    enable_if_t< and_< T1, Ts... >::value, T1 > use_if_all_t
    If both type (_T1 and _T2) type resolves to _Ret, else to SFINAE.
    Definition: useif.h:56
    +
    STL&#39;s core language concepts.
    Definition: _1wire.h:30
    + +
    Template meta-programming SFINAE helpers.
    +
    eval< enable_if< If, _Tp > > enable_if_t
    alias template for enable_if
    Definition: sfinae.h:63
    +
    eval< detail::_or_< _Ts... > > or_
    Definition: operations.h:70
    +
    eval< detail::_and_< _Ts... > > and_
    Definition: operations.h:96
    +
    enable_if_t< or_< T1, Ts... >::value, T1 > use_if_any_t
    If any type (_T1 or _T2) type resolves to _Ret, else to SFINAE.
    Definition: useif.h:50
    +
    Implementation detail main forward header.
    +
    +
    + + + + diff --git a/doc/html/utility_2invoke_8h.html b/doc/html/utility_2invoke_8h.html new file mode 100644 index 0000000..6237876 --- /dev/null +++ b/doc/html/utility_2invoke_8h.html @@ -0,0 +1,180 @@ + + + + + + + +uTL: include/utl/utility/invoke.h File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    invoke.h File Reference
    +
    +
    + +

    invoke() and invoke traits implementation +More...

    +
    #include <utl/core/impl.h>
    +#include <utl/meta/meta.h>
    +#include <type_traits>
    +#include <functional>
    +#include <utility>
    +
    +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + +

    +Classes

    struct  utl::detail::is_ref_wrapper< T >
     
    struct  utl::detail::is_ref_wrapper< std::reference_wrapper< U > >
     
    struct  utl::is_invocable< F, Args >
     std::is_invocable trait for C++11 More...
     
    struct  utl::is_invocable_r< R, F, Args >
     std::is_invocable_r trait for C++11 More...
     
    struct  utl::detail::try_invoke< _Callable, _Args >
     
    struct  utl::detail::invoke_result_< B, _Callable, _Args >
     
    struct  utl::detail::invoke_result_< true, _Callable, _Args... >
     
    + + + + + + +

    +Namespaces

     utl
     STL's core language concepts.
     
     utl::detail
     
    + + + + + + + + + + +

    +Typedefs

    template<typename _Callable , typename... _Args>
    using utl::invoke_result = detail::invoke_result_< is_invocable< _Callable, _Args... >::value, _Callable, _Args... >
     invoke_result (for C++14) More...
     
    template<typename _Callable , typename... _Args>
    using utl::invoke_result_t = meta::eval< invoke_result< _Callable, _Args... > >
     invoke_result_t (for C++14) More...
     
    + + + + + + + + + + + +

    +Functions

    template<class T , class Type , class T1 , class... Args, meta::enable_if_t< std::is_member_function_pointer< std::decay_t< Type T::*>>::value &&std::is_base_of< T, std::decay_t< T1 >>::value, int > = 0>
    decltype(auto) utl::detail::invoke_impl_ (Type T::*f, T1 &&t1, Args &&... args)
     
    template<class F , class... Args>
    decltype(auto) utl::detail::invoke_impl_ (F &&f, Args &&... args)
     
    template<typename _Callable , typename... _Args>
    decltype(auto) utl::invoke (_Callable &&fn, _Args &&... args)
     Invoke a callable object (for C++14) More...
     
    +

    Detailed Description

    +

    invoke() and invoke traits implementation

    +

    Copyright (C) 2018-2019 Christos Choutouridis

    +

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    +

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more detail.

    +

    You should have received a copy of the GNU Lesser General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    + +

    Definition in file invoke.h.

    +
    +
    + + + + diff --git a/doc/html/utility_2invoke_8h.js b/doc/html/utility_2invoke_8h.js new file mode 100644 index 0000000..82645b4 --- /dev/null +++ b/doc/html/utility_2invoke_8h.js @@ -0,0 +1,15 @@ +var utility_2invoke_8h = +[ + [ "is_ref_wrapper", "structutl_1_1detail_1_1is__ref__wrapper.html", null ], + [ "is_ref_wrapper< std::reference_wrapper< U > >", "structutl_1_1detail_1_1is__ref__wrapper_3_01std_1_1reference__wrapper_3_01_u_01_4_01_4.html", null ], + [ "is_invocable", "structutl_1_1is__invocable.html", null ], + [ "is_invocable_r", "structutl_1_1is__invocable__r.html", null ], + [ "try_invoke", "structutl_1_1detail_1_1try__invoke.html", "structutl_1_1detail_1_1try__invoke" ], + [ "invoke_result_", "structutl_1_1detail_1_1invoke__result__.html", "structutl_1_1detail_1_1invoke__result__" ], + [ "invoke_result_< true, _Callable, _Args... >", "structutl_1_1detail_1_1invoke__result___3_01true_00_01___callable_00_01___args_8_8_8_01_4.html", "structutl_1_1detail_1_1invoke__result___3_01true_00_01___callable_00_01___args_8_8_8_01_4" ], + [ "invoke_result", "utility_2invoke_8h.html#a9dd560a1b217a10af34d1ade3e77a76b", null ], + [ "invoke_result_t", "utility_2invoke_8h.html#ae40494acc30f2894c74544f3e9142933", null ], + [ "invoke", "utility_2invoke_8h.html#adc675874b5426194d04112f76b356714", null ], + [ "invoke_impl_", "utility_2invoke_8h.html#a2c39a67272ada5da5f1b84115dadc4a1", null ], + [ "invoke_impl_", "utility_2invoke_8h.html#a09341831ecc9aab67a23d3a47b2d114f", null ] +]; \ No newline at end of file diff --git a/doc/html/utility_2invoke_8h_source.html b/doc/html/utility_2invoke_8h_source.html new file mode 100644 index 0000000..bc68796 --- /dev/null +++ b/doc/html/utility_2invoke_8h_source.html @@ -0,0 +1,126 @@ + + + + + + + +uTL: include/utl/utility/invoke.h Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    invoke.h
    +
    +
    +Go to the documentation of this file.
    1 
    20 #ifndef __utl_utility_invoke_h__
    21 #define __utl_utility_invoke_h__
    22 
    23 #include <utl/core/impl.h>
    24 #include <utl/meta/meta.h>
    25 
    26 #include <type_traits>
    27 #include <functional>
    28 #include <utility>
    29 
    34 namespace utl {
    36 
    37  namespace detail {
    38 
    39  template <class T>
    41  template <class U>
    42  struct is_ref_wrapper<std::reference_wrapper<U>> : meta::true_ {};
    43 
    44  // 1
    45  template <class T, class Type, class T1, class... Args,
    47  std::is_member_function_pointer<std::decay_t<Type T::*>>::value &&
    48  std::is_base_of<T, std::decay_t<T1>>::value,
    49  int> =0
    50  >
    51  decltype(auto) invoke_impl_(Type T::* f, T1&& t1, Args&&... args) {
    52  return (std::forward<T1>(t1).*f)(std::forward<Args>(args)...);
    53  }
    54 
    55  // 2
    56  template <class T, class Type, class T1, class... Args,
    58  std::is_member_function_pointer<std::decay_t<Type T::*>>::value &&
    59  is_ref_wrapper<std::decay_t<T1>>::value,
    60  int> =0
    61  >
    62  decltype(auto) invoke_impl_(Type T::* f, T1&& t1, Args&&... args) {
    63  return (t1.get().*f)(std::forward<Args>(args)...);
    64  }
    65 
    66  // 3
    67  template <class T, class Type, class T1, class... Args,
    69  std::is_member_function_pointer<std::decay_t<Type T::*>>::value &&
    70  !std::is_base_of<T, std::decay_t<T1>>::value &&
    71  !is_ref_wrapper<std::decay_t<T1>>::value,
    72  int> =0
    73  >
    74  decltype(auto) invoke_impl_(Type T::* f, T1&& t1, Args&&... args) {
    75  return ((*std::forward<T1>(t1)).*f)(std::forward<Args>(args)...);
    76  }
    77 
    78  // 4
    79  template <class T, class Type, class T1, class... Args,
    81  std::is_member_object_pointer<std::decay_t<Type T::*>>::value &&
    82  std::is_base_of<T, std::decay_t<T1>>::value,
    83  int> =0
    84  >
    85  decltype(auto) invoke_impl_(Type T::* f, T1&& t1, Args&&... args) {
    86  return std::forward<T1>(t1).*f;
    87  }
    88 
    89  // 5
    90  template <class T, class Type, class T1, class... Args,
    92  std::is_member_object_pointer<std::decay_t<Type T::*>>::value &&
    93  is_ref_wrapper<std::decay_t<T1>>::value,
    94  int> =0
    95  >
    96  decltype(auto) invoke_impl_(Type T::* f, T1&& t1, Args&&... args) {
    97  return t1.get().*f;
    98  }
    99 
    100  // 6
    101  template <class T, class Type, class T1, class... Args,
    103  std::is_member_object_pointer<std::decay_t<Type T::*>>::value &&
    104  !std::is_base_of<T, std::decay_t<T1>>::value &&
    105  !is_ref_wrapper<std::decay_t<T1>>::value,
    106  int> =0
    107  >
    108  decltype(auto) invoke_impl_(Type T::* f, T1&& t1, Args&&... args) {
    109  return (*std::forward<T1>(t1)).*f;
    110  }
    111 
    112  template <class F, class... Args>
    113  decltype(auto) invoke_impl_(F&& f, Args&&... args) {
    114  return std::forward<F>(f)(std::forward<Args>(args)...);
    115  }
    116 
    117  } // namespace detail
    118 
    120  template<typename _Callable, typename... _Args>
    121  inline decltype(auto) invoke(_Callable&& fn, _Args&&... args) {
    122  return detail::invoke_impl_(
    123  std::forward<_Callable>(fn), std::forward<_Args>(args)...
    124  );
    125  }
    127 
    129  template <typename F, typename... Args>
    130  struct is_invocable :
    131  std::is_constructible<
    132  std::function<void(Args ...)>,
    133  std::reference_wrapper<typename std::remove_reference<F>::type>
    134  > { };
    135 
    137  template <typename R, typename F, typename... Args>
    138  struct is_invocable_r :
    139  std::is_constructible<
    140  std::function<R(Args ...)>,
    141  std::reference_wrapper<typename std::remove_reference<F>::type>
    142  > { };
    143 
    147  namespace detail {
    149  template<typename _Callable, typename... _Args>
    150  struct try_invoke {
    151  using type = decltype (
    152  detail::invoke_impl_(std::declval<_Callable&&>(), std::declval<_Args&&>()...)
    153  );
    154  };
    155 
    156  template<bool B, typename _Callable, typename... _Args>
    157  struct invoke_result_ {
    158  using type = meta::nil_;
    159  };
    160 
    161  template <typename _Callable, typename... _Args>
    162  struct invoke_result_ <true, _Callable, _Args...> {
    163  using type = meta::invoke_t<
    164  meta::quote<try_invoke>, _Callable, _Args...
    165  >;
    166  };
    167  }
    169  template <typename _Callable, typename... _Args>
    171  is_invocable<_Callable, _Args...>::value,
    172  _Callable,
    173  _Args...
    174  >;
    175 
    177  template<typename _Callable, typename... _Args>
    178  using invoke_result_t = meta::eval <
    179  invoke_result<_Callable, _Args...>
    180  >;
    181 }
    182 
    184 
    185 
    186 #endif /* __utl_utility_invoke_h__ */
    decltype(auto) invoke_impl_(Type T::*f, T1 &&t1, Args &&... args)
    Definition: invoke.h:51
    + +
    Include all meta library.
    +
    decltype(auto) invoke(_Callable &&fn, _Args &&... args)
    Invoke a callable object (for C++14)
    Definition: invoke.h:121
    + +
    bool_< true > true_
    The type used as a compile-time boolean with true value.
    Definition: integral.h:68
    +
    STL namespace.
    +
    meta::invoke_t< meta::quote< try_invoke >, _Callable, _Args... > type
    Definition: invoke.h:165
    + + +
    bool_< false > false_
    The type used as a compile-time boolean with false value.
    Definition: integral.h:69
    + +
    typename Tp::type eval
    Type alias for Tp::type. Used to evaluate/extract return type of metafunctions.
    Definition: integral.h:49
    +
    STL&#39;s core language concepts.
    Definition: _1wire.h:30
    +
    eval< enable_if< If, _Tp > > enable_if_t
    alias template for enable_if
    Definition: sfinae.h:63
    +
    meta::eval< invoke_result< _Callable, _Args... > > invoke_result_t
    invoke_result_t (for C++14)
    Definition: invoke.h:180
    +
    std::is_invocable_r trait for C++11
    Definition: invoke.h:138
    +
    decltype(detail::invoke_impl_(std::declval< _Callable && >(), std::declval< _Args && >()...)) type
    Definition: invoke.h:153
    +
    eval< invoke< Fn, Args... > > invoke_t
    Definition: invoke.h:88
    +
    Implementation detail main forward header.
    +
    std::is_invocable trait for C++11
    Definition: invoke.h:130
    +
    +
    + + + + diff --git a/doc/html/version_8h.html b/doc/html/version_8h.html new file mode 100644 index 0000000..d8677fc --- /dev/null +++ b/doc/html/version_8h.html @@ -0,0 +1,155 @@ + + + + + + + +uTL: include/utl/core/version.h File Reference + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    + +
    +
    version.h File Reference
    +
    +
    + +

    version and cpp version checks +More...

    + +

    Go to the source code of this file.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Macros

    #define UTL_VERSION   "0.1.0"
     utl version More...
     
    #define UTL_VERSION_MAJOR   0
     
    #define UTL_VERSION_MINOR   1
     
    #define UTL_VERSION_PATCH   0
     
    #define UTL_VERSION_VALUE
     
    #define CXX_VER   __cplusplus
     C++ versions. More...
     
    #define CXX_VER_STD_11   201103L
     
    #define CXX_VER_STD_14   201402L
     
    #define CXX_VER_STD_17   201703L
     
    #define CXX_VARIABLE_TEMPLATES   (CXX_VER >= CXX_VER_STD_14)
     Check for variable templates. More...
     
    #define CXX_CONCEPTS   0
     Check concepts. More...
     
    #define CXX_INLINE_VARIABLES   (CXX_VER >= CXX_VER_STD_17)
     Check for inline variables. More...
     
    #define CXX_FOLD_EXPRESSIONS   (CXX_VER >= CXX_VER_STD_17)
     
    +

    Detailed Description

    +

    version and cpp version checks

    +

    Copyright (C) 2018-2019 Christos Choutouridis

    +

    This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

    +

    This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

    +

    You should have received a copy of the GNU Lesser General Public License along with this program. If not, see http://www.gnu.org/licenses/.

    + +

    Definition in file version.h.

    +
    +
    + + + + diff --git a/doc/html/version_8h.js b/doc/html/version_8h.js new file mode 100644 index 0000000..3a927ad --- /dev/null +++ b/doc/html/version_8h.js @@ -0,0 +1,16 @@ +var version_8h = +[ + [ "CXX_CONCEPTS", "group__version.html#ga80d0fb430c83076ebe61d619a7e606a9", null ], + [ "CXX_FOLD_EXPRESSIONS", "group__version.html#gad8bb48d6d660495b6eb3d4bbecd7ec26", null ], + [ "CXX_INLINE_VARIABLES", "group__version.html#gad7f44253df62ec7f9455af26507a289b", null ], + [ "CXX_VARIABLE_TEMPLATES", "group__version.html#gaa3f471a65b0eb6118e8a2cb547a46d7a", null ], + [ "CXX_VER", "group__version.html#ga01247740b4b51ce21e9bb3c3c602996d", null ], + [ "CXX_VER_STD_11", "group__version.html#gabef125dbb6ab064efeef0491a2a43da6", null ], + [ "CXX_VER_STD_14", "group__version.html#gaaa8cecbe78cff8d75dba25e39d5205f9", null ], + [ "CXX_VER_STD_17", "group__version.html#ga20a6261e3bdd7cad0eb7850e29ddfbe0", null ], + [ "UTL_VERSION", "group__version.html#ga7665eee3bbd12a8d910e6237e59d3aee", null ], + [ "UTL_VERSION_MAJOR", "group__version.html#ga127ec85c06925fbd866584721188df32", null ], + [ "UTL_VERSION_MINOR", "group__version.html#ga9bc1d657cd305d09ffe825ab50672c2e", null ], + [ "UTL_VERSION_PATCH", "group__version.html#ga0ccbcd211a838107438ae0e194f871a9", null ], + [ "UTL_VERSION_VALUE", "group__version.html#ga7af1c603dc248e854fc773c26761ed83", null ] +]; \ No newline at end of file diff --git a/doc/html/version_8h_source.html b/doc/html/version_8h_source.html new file mode 100644 index 0000000..a947c79 --- /dev/null +++ b/doc/html/version_8h_source.html @@ -0,0 +1,105 @@ + + + + + + + +uTL: include/utl/core/version.h Source File + + + + + + + + + + + + + + +
    +
    + + + + + + +
    +
    uTL +
    +
    micro Template library
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    version.h
    +
    +
    +Go to the documentation of this file.
    1 
    21 #ifndef __utl_core_version_h__
    22 #define __utl_core_version_h__
    23 
    27 
    29 #define UTL_VERSION "0.1.0"
    30 #define UTL_VERSION_MAJOR 0
    31 #define UTL_VERSION_MINOR 1
    32 #define UTL_VERSION_PATCH 0
    33 #define UTL_VERSION_VALUE ( (UTL_VERSION_MAJOR * 10000) \
    34  + (UTL_VERSION_MINOR * 100) \
    35  + UTL_VERSION_PATCH)
    36 
    38 #define CXX_VER __cplusplus
    39 #define CXX_VER_STD_11 201103L
    40 #define CXX_VER_STD_14 201402L
    41 #define CXX_VER_STD_17 201703L
    42 
    44 #ifndef CXX_VARIABLE_TEMPLATES
    45  #ifdef __cpp_variable_templates
    46  #define CXX_VARIABLE_TEMPLATES __cpp_variable_templates
    47  #else
    48  #define CXX_VARIABLE_TEMPLATES (CXX_VER >= CXX_VER_STD_14)
    49  #endif
    50 #endif
    51 
    53 #ifndef CXX_CONCEPTS
    54  #ifdef __cpp_concepts
    55  #define CXX_CONCEPTS __cpp_concepts
    56  #else
    57  #define CXX_CONCEPTS 0
    58  #endif
    59 #endif
    60 
    62 #ifndef CXX_INLINE_VARIABLES
    63  #ifdef __cpp_inline_variables
    64  #define CXX_INLINE_VARIABLES __cpp_inline_variables
    65  #else
    66  #define CXX_INLINE_VARIABLES (CXX_VER >= CXX_VER_STD_17)
    67  #endif
    68 #endif
    69 
    70 #ifndef CXX_FOLD_EXPRESSIONS
    71  #ifdef __cpp_fold_expressions
    72  #define CXX_FOLD_EXPRESSIONS __cpp_fold_expressions
    73  #else
    74  #define CXX_FOLD_EXPRESSIONS (CXX_VER >= CXX_VER_STD_17)
    75  #endif
    76 #endif
    77 
    78 /*
    79  * Workaround inspections
    80  */
    81 #if defined(__GNUC__) && (__GNUC__ < 5)
    82  // https://wg21.link/cwg1558
    83  #define UTL_WORKAROUND_CWG_1558
    84 #endif
    85 
    86 
    88 #if CXX_VER < CXX_VER_STD_14
    89 #error "uTL requires C++14"
    90 #endif
    91 
    93 #endif /* #ifndef __utl_core_version_h__ */
    +
    + + + + diff --git a/doc/latex/Makefile b/doc/latex/Makefile new file mode 100644 index 0000000..8cc3866 --- /dev/null +++ b/doc/latex/Makefile @@ -0,0 +1,21 @@ +all: refman.pdf + +pdf: refman.pdf + +refman.pdf: clean refman.tex + pdflatex refman + makeindex refman.idx + pdflatex refman + latex_count=8 ; \ + while egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\ + do \ + echo "Rerunning latex...." ;\ + pdflatex refman ;\ + latex_count=`expr $$latex_count - 1` ;\ + done + makeindex refman.idx + pdflatex refman + + +clean: + rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out *.brf *.blg *.bbl refman.pdf diff --git a/doc/latex/__1wire_8h.tex b/doc/latex/__1wire_8h.tex new file mode 100644 index 0000000..1840da9 --- /dev/null +++ b/doc/latex/__1wire_8h.tex @@ -0,0 +1,79 @@ +\hypertarget{__1wire_8h}{}\section{include/utl/com/\+\_\+1wire.h File Reference} +\label{__1wire_8h}\index{include/utl/com/\+\_\+1wire.\+h@{include/utl/com/\+\_\+1wire.\+h}} + + +An 1-\/wire interface implementation. + + +{\ttfamily \#include $<$utl/core/impl.\+h$>$}\newline +{\ttfamily \#include $<$utl/core/crtp.\+h$>$}\newline +{\ttfamily \#include $<$utl/com/\+\_\+1wire\+\_\+id.\+h$>$}\newline +{\ttfamily \#include $<$utl/meta/meta.\+h$>$}\newline +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +class \mbox{\hyperlink{classutl_1_1__1wire__i}{utl\+::\+\_\+1wire\+\_\+i$<$ impl\+\_\+t $>$}} +\begin{DoxyCompactList}\small\item\em Template base class for 1-\/wire communication interface using C\+R\+TP. \end{DoxyCompactList}\item +class \mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4}{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}} +\begin{DoxyCompactList}\small\item\em A virtual base class implementation. \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1__1wire__i__det_1_1is__1wire__}{utl\+::\+\_\+1wire\+\_\+i\+\_\+det\+::is\+\_\+1wire\+\_\+$<$ \+\_\+\+Tp, typename $>$}} +\begin{DoxyCompactList}\small\item\em Primary template to catch any non 1-\/wire interface types. \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1__1wire__i__det_1_1is__1wire___3_01___tp_00_01meta_1_1void__t_3_01void_01_4_01_4}{utl\+::\+\_\+1wire\+\_\+i\+\_\+det\+::is\+\_\+1wire\+\_\+$<$ \+\_\+\+Tp, meta\+::void\+\_\+t$<$ void $>$ $>$}} +\begin{DoxyCompactList}\small\item\em template to catch a proper 1-\/wire interface type \end{DoxyCompactList}\end{DoxyCompactItemize} +\subsection*{Namespaces} +\begin{DoxyCompactItemize} +\item + \mbox{\hyperlink{namespaceutl}{utl}} +\begin{DoxyCompactList}\small\item\em S\+TL\textquotesingle{}s core language concepts. \end{DoxyCompactList}\item + \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det}{utl\+::\+\_\+1wire\+\_\+i\+\_\+det}} +\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det_a502fff2c967d26334aa3c2fcf0b037ba}{utl\+::\+\_\+1wire\+\_\+i\+\_\+det\+::try\+\_\+reset\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().reset(declval$<$ typename \+\_\+\+Tp\+::\+Speed $>$())) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det_a303cf58468da38ceeaa2477570f82948}{utl\+::\+\_\+1wire\+\_\+i\+\_\+det\+::try\+\_\+rx1\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().rx\+\_\+data(declval$<$ typename \+\_\+\+Tp\+::\+Speed $>$())) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det_ac6a2b551bcf51b426c2e8506ab2473fe}{utl\+::\+\_\+1wire\+\_\+i\+\_\+det\+::try\+\_\+tx1\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().tx\+\_\+data(declval$<$ byte\+\_\+t $>$(), declval$<$ typename \+\_\+\+Tp\+::\+Speed $>$())) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det_a3416ddb06e089a5c191d356dd358ff00}{utl\+::\+\_\+1wire\+\_\+i\+\_\+det\+::try\+\_\+match\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().match(declval$<$ \+\_\+1wire\+\_\+id\+\_\+t \& $>$(), declval$<$ typename \+\_\+\+Tp\+::\+Speed $>$())) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det_aa85f59a97c388dc259589cb517824233}{utl\+::\+\_\+1wire\+\_\+i\+\_\+det\+::try\+\_\+match\+\_\+n\+\_\+ovdr\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().match\+\_\+n\+\_\+ovdr(declval$<$ \+\_\+1wire\+\_\+id\+\_\+t \& $>$())) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det_a9d0825a40484e7868bf41fc4825b4f7d}{utl\+::\+\_\+1wire\+\_\+i\+\_\+det\+::try\+\_\+skip\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().skip(declval$<$ typename \+\_\+\+Tp\+::\+Speed $>$())) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det_af6c9df3cb6bf2479e8d30a5d36ab71cb}{utl\+::\+\_\+1wire\+\_\+i\+\_\+det\+::try\+\_\+skip\+\_\+n\+\_\+ovdr\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().skip\+\_\+n\+\_\+ovdr()) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det_a3dc7b4df37cebf753556ba527306cf9f}{utl\+::\+\_\+1wire\+\_\+i\+\_\+det\+::try\+\_\+first\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().first(declval$<$ typename \+\_\+\+Tp\+::\+Speed $>$())) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det_a67a086b8e4e3ee051ccb0351e6456630}{utl\+::\+\_\+1wire\+\_\+i\+\_\+det\+::try\+\_\+next\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().next(declval$<$ typename \+\_\+\+Tp\+::\+Speed $>$())) +\end{DoxyCompactItemize} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename \+\_\+T $>$ }\\byte\+\_\+t \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det_a85a3a19778edb037f6341f37135a5494}{utl\+::\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+touch}} (\+\_\+T \&obj, byte\+\_\+t out, typename \+\_\+\+T\+::\+Speed s) +\begin{DoxyCompactList}\small\item\em Write a byte to 1-\/\+Wire bus and read the response. \end{DoxyCompactList}\item +{\footnotesize template$<$typename \+\_\+T $>$ }\\void \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det_a1b07e623a39ce82f1514846169f3a954}{utl\+::\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+match}} (\+\_\+T \&obj, \+\_\+1wire\+\_\+id\+\_\+t \&id, typename \+\_\+\+T\+::\+Speed s) +\item +{\footnotesize template$<$typename \+\_\+T $>$ }\\void \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det_a1e14f734d5e232c914be6ea97982aa40}{utl\+::\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+match\+\_\+n\+\_\+ovdr}} (\+\_\+T \&obj, \+\_\+1wire\+\_\+id\+\_\+t \&id) +\item +{\footnotesize template$<$typename \+\_\+T $>$ }\\void \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det_a9ea80f4ef2422a7fd71788c42b228053}{utl\+::\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+skip}} (\+\_\+T \&obj, typename \+\_\+\+T\+::\+Speed s) +\item +{\footnotesize template$<$typename \+\_\+T $>$ }\\void \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det_ace224a4d329166bfd9f3448e492baf2b}{utl\+::\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+skip\+\_\+n\+\_\+ovdr}} (\+\_\+T \&obj) +\item +{\footnotesize template$<$typename \+\_\+T $>$ }\\\+\_\+1wire\+\_\+id\+\_\+t \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det_a237719ffa105f988cb175d6720712a4a}{utl\+::\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+first}} (\+\_\+T \&obj, typename \+\_\+\+T\+::\+Speed s, bool alarm) +\begin{DoxyCompactList}\small\item\em \textquotesingle{}first\textquotesingle{} operation, to search on the 1-\/\+Wire for the first device. This is performed by setting dec\+\_\+, pos\+\_\+ and cur\+\_\+ to zero and then doing the search. \end{DoxyCompactList}\item +{\footnotesize template$<$typename \+\_\+T $>$ }\\\+\_\+1wire\+\_\+id\+\_\+t \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det_a1f7b692a40769ebe59343613b147e01d}{utl\+::\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+next}} (\+\_\+T \&obj, typename \+\_\+\+T\+::\+Speed s, bool alarm) +\begin{DoxyCompactList}\small\item\em \textquotesingle{}next\textquotesingle{} operation, to search on the 1-\/\+Wire for the next device. This search is usually performed after a \textquotesingle{}first\textquotesingle{} operation or another \textquotesingle{}next\textquotesingle{} operation. Based on maxim-\/ic application note 187. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +An 1-\/wire interface implementation. + +Copyright (C) 2018 Christos Choutouridis + +This program is free software\+: you can redistribute it and/or modify it under the terms of the G\+NU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but W\+I\+T\+H\+O\+UT A\+NY W\+A\+R\+R\+A\+N\+TY; without even the implied warranty of M\+E\+R\+C\+H\+A\+N\+T\+A\+B\+I\+L\+I\+TY or F\+I\+T\+N\+E\+SS F\+OR A P\+A\+R\+T\+I\+C\+U\+L\+AR P\+U\+R\+P\+O\+SE. See the G\+NU Lesser General Public License for more details. + +You should have received a copy of the G\+NU Lesser General Public License along with this program. If not, see \href{http://www.gnu.org/licenses/}{\tt http\+://www.\+gnu.\+org/licenses/}. \ No newline at end of file diff --git a/doc/latex/__1wire__id_8h.tex b/doc/latex/__1wire__id_8h.tex new file mode 100644 index 0000000..5c1ea51 --- /dev/null +++ b/doc/latex/__1wire__id_8h.tex @@ -0,0 +1,31 @@ +\hypertarget{__1wire__id_8h}{}\section{include/utl/com/\+\_\+1wire\+\_\+id.h File Reference} +\label{__1wire__id_8h}\index{include/utl/com/\+\_\+1wire\+\_\+id.\+h@{include/utl/com/\+\_\+1wire\+\_\+id.\+h}} + + +An 1-\/wire Rom ID type. + + +{\ttfamily \#include $<$utl/core/impl.\+h$>$}\newline +{\ttfamily \#include $<$utl/container/id.\+h$>$}\newline +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +class \mbox{\hyperlink{classutl_1_1__1wire__id__t}{utl\+::\+\_\+1wire\+\_\+id\+\_\+t}} +\end{DoxyCompactItemize} +\subsection*{Namespaces} +\begin{DoxyCompactItemize} +\item + \mbox{\hyperlink{namespaceutl}{utl}} +\begin{DoxyCompactList}\small\item\em S\+TL\textquotesingle{}s core language concepts. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +An 1-\/wire Rom ID type. + +Copyright (C) 2018 Christos Choutouridis + +This program is free software\+: you can redistribute it and/or modify it under the terms of the G\+NU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but W\+I\+T\+H\+O\+UT A\+NY W\+A\+R\+R\+A\+N\+TY; without even the implied warranty of M\+E\+R\+C\+H\+A\+N\+T\+A\+B\+I\+L\+I\+TY or F\+I\+T\+N\+E\+SS F\+OR A P\+A\+R\+T\+I\+C\+U\+L\+AR P\+U\+R\+P\+O\+SE. See the G\+NU Lesser General Public License for more details. + +You should have received a copy of the G\+NU Lesser General Public License along with this program. If not, see \href{http://www.gnu.org/licenses/}{\tt http\+://www.\+gnu.\+org/licenses/}. \ No newline at end of file diff --git a/doc/latex/__1wire__uart_8h.tex b/doc/latex/__1wire__uart_8h.tex new file mode 100644 index 0000000..59bed36 --- /dev/null +++ b/doc/latex/__1wire__uart_8h.tex @@ -0,0 +1,37 @@ +\hypertarget{__1wire__uart_8h}{}\section{include/utl/com/\+\_\+1wire\+\_\+uart.h File Reference} +\label{__1wire__uart_8h}\index{include/utl/com/\+\_\+1wire\+\_\+uart.\+h@{include/utl/com/\+\_\+1wire\+\_\+uart.\+h}} + + +A 1-\/wire implementation using a microprocessor\textquotesingle{}s uart for bit timing. + + +{\ttfamily \#include $<$utl/core/impl.\+h$>$}\newline +{\ttfamily \#include $<$utl/core/crtp.\+h$>$}\newline +{\ttfamily \#include $<$utl/com/\+\_\+1wire.\+h$>$}\newline +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +class \mbox{\hyperlink{classutl_1_1__1wire__uart__i}{utl\+::\+\_\+1wire\+\_\+uart\+\_\+i$<$ Impl\+\_\+t $>$}} +\begin{DoxyCompactList}\small\item\em 1-\/wire U\+A\+RT interface template class using C\+R\+TP Using the private virtual interface we provide the interface from \+\_\+1wire\+\_\+i$<$$>$ \end{DoxyCompactList}\item +class \mbox{\hyperlink{classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4}{utl\+::\+\_\+1wire\+\_\+uart\+\_\+i$<$ virtual\+\_\+tag $>$}} +\begin{DoxyCompactList}\small\item\em A virtual base class interface implementation. Using the private virtual interface we provide the interface from \mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4}{\+\_\+1wire\+\_\+i$<$virtual\+\_\+tag$>$}} \end{DoxyCompactList}\end{DoxyCompactItemize} +\subsection*{Namespaces} +\begin{DoxyCompactItemize} +\item + \mbox{\hyperlink{namespaceutl}{utl}} +\begin{DoxyCompactList}\small\item\em S\+TL\textquotesingle{}s core language concepts. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +A 1-\/wire implementation using a microprocessor\textquotesingle{}s uart for bit timing. + +\begin{DoxyNote}{Note} +This 1-\/wire implementation is based on M\+CU U\+A\+RT functionality. The implementation expects\+: 1) An Open drain tx and a floating(or pull-\/up) rx U\+A\+RT pin configuration with both pins connected to the 1-\/wire bus wire 2) A Transmit/receive function even in blocking/polling mode 3) A baudrate set function +\end{DoxyNote} +Copyright (C) 2018 Christos Choutouridis + +This program is free software\+: you can redistribute it and/or modify it under the terms of the G\+NU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but W\+I\+T\+H\+O\+UT A\+NY W\+A\+R\+R\+A\+N\+TY; without even the implied warranty of M\+E\+R\+C\+H\+A\+N\+T\+A\+B\+I\+L\+I\+TY or F\+I\+T\+N\+E\+SS F\+OR A P\+A\+R\+T\+I\+C\+U\+L\+AR P\+U\+R\+P\+O\+SE. See the G\+NU Lesser General Public License for more details. + +You should have received a copy of the G\+NU Lesser General Public License along with this program. If not, see \href{http://www.gnu.org/licenses/}{\tt http\+://www.\+gnu.\+org/licenses/}. \ No newline at end of file diff --git a/doc/latex/_concepts_2lib_2gtest_2gtest-all_8d.tex b/doc/latex/_concepts_2lib_2gtest_2gtest-all_8d.tex new file mode 100644 index 0000000..f08990e --- /dev/null +++ b/doc/latex/_concepts_2lib_2gtest_2gtest-all_8d.tex @@ -0,0 +1,2 @@ +\hypertarget{_concepts_2lib_2gtest_2gtest-all_8d}{}\section{test/eclipse-\/cygwin/\+C++14-\/\+Concepts/lib/gtest/gtest-\/all.d File Reference} +\label{_concepts_2lib_2gtest_2gtest-all_8d}\index{test/eclipse-\/cygwin/\+C++14-\/\+Concepts/lib/gtest/gtest-\/all.\+d@{test/eclipse-\/cygwin/\+C++14-\/\+Concepts/lib/gtest/gtest-\/all.\+d}} diff --git a/doc/latex/_concepts_2source_2main_8d.tex b/doc/latex/_concepts_2source_2main_8d.tex new file mode 100644 index 0000000..1db1149 --- /dev/null +++ b/doc/latex/_concepts_2source_2main_8d.tex @@ -0,0 +1,2 @@ +\hypertarget{_concepts_2source_2main_8d}{}\section{test/eclipse-\/cygwin/\+C++14-\/\+Concepts/source/main.d File Reference} +\label{_concepts_2source_2main_8d}\index{test/eclipse-\/cygwin/\+C++14-\/\+Concepts/source/main.\+d@{test/eclipse-\/cygwin/\+C++14-\/\+Concepts/source/main.\+d}} diff --git a/doc/latex/_concepts_2source_2tests_2_t_concepts_8d.tex b/doc/latex/_concepts_2source_2tests_2_t_concepts_8d.tex new file mode 100644 index 0000000..950889c --- /dev/null +++ b/doc/latex/_concepts_2source_2tests_2_t_concepts_8d.tex @@ -0,0 +1,2 @@ +\hypertarget{_concepts_2source_2tests_2_t_concepts_8d}{}\section{test/eclipse-\/cygwin/\+C++14-\/\+Concepts/source/tests/\+T\+Concepts.d File Reference} +\label{_concepts_2source_2tests_2_t_concepts_8d}\index{test/eclipse-\/cygwin/\+C++14-\/\+Concepts/source/tests/\+T\+Concepts.\+d@{test/eclipse-\/cygwin/\+C++14-\/\+Concepts/source/tests/\+T\+Concepts.\+d}} diff --git a/doc/latex/_concepts_2source_2tests_2_tinvoke_8d.tex b/doc/latex/_concepts_2source_2tests_2_tinvoke_8d.tex new file mode 100644 index 0000000..05d2ca6 --- /dev/null +++ b/doc/latex/_concepts_2source_2tests_2_tinvoke_8d.tex @@ -0,0 +1,2 @@ +\hypertarget{_concepts_2source_2tests_2_tinvoke_8d}{}\section{test/eclipse-\/cygwin/\+C++14-\/\+Concepts/source/tests/\+Tinvoke.d File Reference} +\label{_concepts_2source_2tests_2_tinvoke_8d}\index{test/eclipse-\/cygwin/\+C++14-\/\+Concepts/source/tests/\+Tinvoke.\+d@{test/eclipse-\/cygwin/\+C++14-\/\+Concepts/source/tests/\+Tinvoke.\+d}} diff --git a/doc/latex/_concepts_2source_2tests_2test__1w__impl_8d.tex b/doc/latex/_concepts_2source_2tests_2test__1w__impl_8d.tex new file mode 100644 index 0000000..5db055d --- /dev/null +++ b/doc/latex/_concepts_2source_2tests_2test__1w__impl_8d.tex @@ -0,0 +1,2 @@ +\hypertarget{_concepts_2source_2tests_2test__1w__impl_8d}{}\section{test/eclipse-\/cygwin/\+C++14-\/\+Concepts/source/tests/test\+\_\+1w\+\_\+impl.d File Reference} +\label{_concepts_2source_2tests_2test__1w__impl_8d}\index{test/eclipse-\/cygwin/\+C++14-\/\+Concepts/source/tests/test\+\_\+1w\+\_\+impl.\+d@{test/eclipse-\/cygwin/\+C++14-\/\+Concepts/source/tests/test\+\_\+1w\+\_\+impl.\+d}} diff --git a/doc/latex/_concepts_2source_2tests_2test__i2c__impl_8d.tex b/doc/latex/_concepts_2source_2tests_2test__i2c__impl_8d.tex new file mode 100644 index 0000000..03224fb --- /dev/null +++ b/doc/latex/_concepts_2source_2tests_2test__i2c__impl_8d.tex @@ -0,0 +1,2 @@ +\hypertarget{_concepts_2source_2tests_2test__i2c__impl_8d}{}\section{test/eclipse-\/cygwin/\+C++14-\/\+Concepts/source/tests/test\+\_\+i2c\+\_\+impl.d File Reference} +\label{_concepts_2source_2tests_2test__i2c__impl_8d}\index{test/eclipse-\/cygwin/\+C++14-\/\+Concepts/source/tests/test\+\_\+i2c\+\_\+impl.\+d@{test/eclipse-\/cygwin/\+C++14-\/\+Concepts/source/tests/test\+\_\+i2c\+\_\+impl.\+d}} diff --git a/doc/latex/_concepts_2source_2tests_2test__ostream__dev_8d.tex b/doc/latex/_concepts_2source_2tests_2test__ostream__dev_8d.tex new file mode 100644 index 0000000..c061229 --- /dev/null +++ b/doc/latex/_concepts_2source_2tests_2test__ostream__dev_8d.tex @@ -0,0 +1,2 @@ +\hypertarget{_concepts_2source_2tests_2test__ostream__dev_8d}{}\section{test/eclipse-\/cygwin/\+C++14-\/\+Concepts/source/tests/test\+\_\+ostream\+\_\+dev.d File Reference} +\label{_concepts_2source_2tests_2test__ostream__dev_8d}\index{test/eclipse-\/cygwin/\+C++14-\/\+Concepts/source/tests/test\+\_\+ostream\+\_\+dev.\+d@{test/eclipse-\/cygwin/\+C++14-\/\+Concepts/source/tests/test\+\_\+ostream\+\_\+dev.\+d}} diff --git a/doc/latex/_concepts_2source_2tests_2test__spi__impl_8d.tex b/doc/latex/_concepts_2source_2tests_2test__spi__impl_8d.tex new file mode 100644 index 0000000..e445c61 --- /dev/null +++ b/doc/latex/_concepts_2source_2tests_2test__spi__impl_8d.tex @@ -0,0 +1,2 @@ +\hypertarget{_concepts_2source_2tests_2test__spi__impl_8d}{}\section{test/eclipse-\/cygwin/\+C++14-\/\+Concepts/source/tests/test\+\_\+spi\+\_\+impl.d File Reference} +\label{_concepts_2source_2tests_2test__spi__impl_8d}\index{test/eclipse-\/cygwin/\+C++14-\/\+Concepts/source/tests/test\+\_\+spi\+\_\+impl.\+d@{test/eclipse-\/cygwin/\+C++14-\/\+Concepts/source/tests/test\+\_\+spi\+\_\+impl.\+d}} diff --git a/doc/latex/_r_e_a_d_m_e_8md.tex b/doc/latex/_r_e_a_d_m_e_8md.tex new file mode 100644 index 0000000..190498d --- /dev/null +++ b/doc/latex/_r_e_a_d_m_e_8md.tex @@ -0,0 +1,2 @@ +\hypertarget{_r_e_a_d_m_e_8md}{}\section{R\+E\+A\+D\+M\+E.\+md File Reference} +\label{_r_e_a_d_m_e_8md}\index{R\+E\+A\+D\+M\+E.\+md@{R\+E\+A\+D\+M\+E.\+md}} diff --git a/doc/latex/_t_concepts_8cpp.tex b/doc/latex/_t_concepts_8cpp.tex new file mode 100644 index 0000000..eb8ba2d --- /dev/null +++ b/doc/latex/_t_concepts_8cpp.tex @@ -0,0 +1,90 @@ +\hypertarget{_t_concepts_8cpp}{}\section{test/tests/\+T\+Concepts.cpp File Reference} +\label{_t_concepts_8cpp}\index{test/tests/\+T\+Concepts.\+cpp@{test/tests/\+T\+Concepts.\+cpp}} +{\ttfamily \#include $<$utl/concepts/concepts.\+h$>$}\newline +{\ttfamily \#include $<$utl/meta/meta.\+h$>$}\newline +{\ttfamily \#include $<$gtest/gtest.\+h$>$}\newline +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structtest__concepts_1_1_empty}{test\+\_\+concepts\+::\+Empty}} +\item +struct \mbox{\hyperlink{structtest__concepts_1_1_have_only_copy}{test\+\_\+concepts\+::\+Have\+Only\+Copy}} +\item +struct \mbox{\hyperlink{structtest__concepts_1_1_have_only_move}{test\+\_\+concepts\+::\+Have\+Only\+Move}} +\item +struct \mbox{\hyperlink{structtest__concepts_1_1_have_copy_and_move}{test\+\_\+concepts\+::\+Have\+Copy\+And\+Move}} +\item +class \mbox{\hyperlink{classtest__concepts_1_1_have_perfect_forwarding}{test\+\_\+concepts\+::\+Have\+Perfect\+Forwarding}} +\item +class \mbox{\hyperlink{classtest__concepts_1_1_base}{test\+\_\+concepts\+::\+Base}} +\item +class \mbox{\hyperlink{classtest__concepts_1_1_derived1}{test\+\_\+concepts\+::\+Derived1}} +\item +class \mbox{\hyperlink{classtest__concepts_1_1_derived2}{test\+\_\+concepts\+::\+Derived2}} +\item +class \mbox{\hyperlink{classtest__concepts_1_1_have_operator_base}{test\+\_\+concepts\+::\+Have\+Operator\+Base}} +\item +struct \mbox{\hyperlink{structtest__concepts_1_1_a}{test\+\_\+concepts\+::A}} +\item +struct \mbox{\hyperlink{structtest__concepts_1_1_b}{test\+\_\+concepts\+::B}} +\item +struct \mbox{\hyperlink{structtest__concepts_1_1_inv}{test\+\_\+concepts\+::\+Inv}} +\item +struct \mbox{\hyperlink{structtest__concepts_1_1_pred}{test\+\_\+concepts\+::\+Pred}} +\item +struct \mbox{\hyperlink{structtest__concepts_1_1_incr}{test\+\_\+concepts\+::\+Incr}} +\end{DoxyCompactItemize} +\subsection*{Namespaces} +\begin{DoxyCompactItemize} +\item + \mbox{\hyperlink{namespacetest__concepts}{test\+\_\+concepts}} +\end{DoxyCompactItemize} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +bool \mbox{\hyperlink{namespacetest__concepts_ae09100ab70ff8d9779ab82a64b32c379}{test\+\_\+concepts\+::operator==}} (const A \&l, const A \&r) +\item +bool \mbox{\hyperlink{namespacetest__concepts_aa7a67208d83b1c5bfe71be98a508b2a2}{test\+\_\+concepts\+::operator!=}} (const A \&l, const A \&r) +\item +bool \mbox{\hyperlink{namespacetest__concepts_a2bd289c839a61f3a1a4a993b8d19c252}{test\+\_\+concepts\+::operator==}} (const B \&l, const B \&r) +\item +bool \mbox{\hyperlink{namespacetest__concepts_a5020d93acd11bc3ef58376d39742f252}{test\+\_\+concepts\+::operator!=}} (const B \&l, const B \&r) +\item +bool \mbox{\hyperlink{namespacetest__concepts_a7df33a6fa1bf9b0e019c754ad8130861}{test\+\_\+concepts\+::operator$<$}} (const B \&l, const B \&r) +\item +bool \mbox{\hyperlink{namespacetest__concepts_a0a84bdf10913e789466806c544c3cd23}{test\+\_\+concepts\+::operator$<$=}} (const B \&l, const B \&r) +\item +bool \mbox{\hyperlink{namespacetest__concepts_a6c2d2768666e0eb1c5523345b8925e32}{test\+\_\+concepts\+::operator$>$}} (const B \&l, const B \&r) +\item +bool \mbox{\hyperlink{namespacetest__concepts_aa621df5520d29f172fa1cef1d286936a}{test\+\_\+concepts\+::operator$>$=}} (const B \&l, const B \&r) +\item +\mbox{\hyperlink{namespacetest__concepts_ab245465c002e0ed0837b91aa4c88a349}{test\+\_\+concepts\+::\+T\+E\+ST}} (T\+Concepts, Same) +\item +\mbox{\hyperlink{namespacetest__concepts_a5d2e53efce2d5c77999eb133966f898b}{test\+\_\+concepts\+::\+T\+E\+ST}} (T\+Concepts, Derived\+From) +\item +\mbox{\hyperlink{namespacetest__concepts_ae54bd81fa0239d5d914483314e328e4e}{test\+\_\+concepts\+::\+T\+E\+ST}} (T\+Concepts, Convertible\+To) +\item +\mbox{\hyperlink{namespacetest__concepts_a8be0d791fe0ee2055d58940e360ff8ce}{test\+\_\+concepts\+::\+T\+E\+ST}} (T\+Concepts, Common\+Reference) +\item +\mbox{\hyperlink{namespacetest__concepts_ace7dd5dcd339ad2bf5fd7b08b582ec7a}{test\+\_\+concepts\+::\+T\+E\+ST}} (T\+Concepts, Integral) +\item +\mbox{\hyperlink{namespacetest__concepts_a1259dbf85ef361ae709e8b7d08ad0c8a}{test\+\_\+concepts\+::\+T\+E\+ST}} (T\+Concepts, Assignable) +\item +\mbox{\hyperlink{namespacetest__concepts_abe06b1186f30147f38171a2f5e95920e}{test\+\_\+concepts\+::\+T\+E\+ST}} (T\+Concepts, Swappable) +\item +\mbox{\hyperlink{namespacetest__concepts_af3f33066823dea74a24d89399fa26adb}{test\+\_\+concepts\+::\+T\+E\+ST}} (T\+Concepts, Constructible) +\item +\mbox{\hyperlink{namespacetest__concepts_a169b771eff69e1e3086857d88a28b239}{test\+\_\+concepts\+::\+T\+E\+ST}} (T\+Concepts, Movable\+Copyable) +\item +\mbox{\hyperlink{namespacetest__concepts_a0f4ad0aba9c032d90024e839f2d9f380}{test\+\_\+concepts\+::\+T\+E\+ST}} (T\+Concepts, Boolean) +\item +\mbox{\hyperlink{namespacetest__concepts_a8f88e84cffb84123f470858c5c28c4fb}{test\+\_\+concepts\+::\+T\+E\+ST}} (T\+Concepts, Comparable) +\item +\mbox{\hyperlink{namespacetest__concepts_a9f6330d88c4d4c26e80f6c1b5546ea51}{test\+\_\+concepts\+::\+T\+E\+ST}} (T\+Concepts, Types) +\item +\mbox{\hyperlink{namespacetest__concepts_a0575232afeb3a1aed915d6de6e63a328}{test\+\_\+concepts\+::\+T\+E\+ST}} (T\+Concepts, Callable) +\item +int \mbox{\hyperlink{namespacetest__concepts_adb4992f432f2a8cfed2c5bfa4bc5adaf}{test\+\_\+concepts\+::type\+\_\+printer}} (int $\ast$i) +\item +\mbox{\hyperlink{namespacetest__concepts_acef6bf32c3066c6c73a1055184a61c08}{test\+\_\+concepts\+::\+T\+E\+ST}} (T\+Concepts, Iterators) +\end{DoxyCompactItemize} diff --git a/doc/latex/_tinvoke_8cpp.tex b/doc/latex/_tinvoke_8cpp.tex new file mode 100644 index 0000000..195367a --- /dev/null +++ b/doc/latex/_tinvoke_8cpp.tex @@ -0,0 +1,34 @@ +\hypertarget{_tinvoke_8cpp}{}\section{test/tests/\+Tinvoke.cpp File Reference} +\label{_tinvoke_8cpp}\index{test/tests/\+Tinvoke.\+cpp@{test/tests/\+Tinvoke.\+cpp}} +{\ttfamily \#include $<$utl/utility/invoke.\+h$>$}\newline +{\ttfamily \#include $<$gtest/gtest.\+h$>$}\newline +{\ttfamily \#include $<$type\+\_\+traits$>$}\newline +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structtest__meta_1_1_ifoo}{test\+\_\+meta\+::\+Ifoo}} +\item +struct \mbox{\hyperlink{structtest__meta_1_1_ibar}{test\+\_\+meta\+::\+Ibar}} +\end{DoxyCompactItemize} +\subsection*{Namespaces} +\begin{DoxyCompactItemize} +\item + \mbox{\hyperlink{namespacetest__meta}{test\+\_\+meta}} +\end{DoxyCompactItemize} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +int \mbox{\hyperlink{namespacetest__meta_a21d4736fe75f1a8389d1eb7359a4f8f1}{test\+\_\+meta\+::\+Ifun}} (int i) +\item +\mbox{\hyperlink{namespacetest__meta_a569cf8c253b61a7bdd8a893dd7af7adb}{test\+\_\+meta\+::\+T\+E\+ST}} (Tinvoke, Invoke) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Copyright (C) 2018-\/2019 Christos Choutouridis + +This program is free software\+: you can redistribute it and/or modify it under the terms of the G\+NU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but W\+I\+T\+H\+O\+UT A\+NY W\+A\+R\+R\+A\+N\+TY; without even the implied warranty of M\+E\+R\+C\+H\+A\+N\+T\+A\+B\+I\+L\+I\+TY or F\+I\+T\+N\+E\+SS F\+OR A P\+A\+R\+T\+I\+C\+U\+L\+AR P\+U\+R\+P\+O\+SE. See the G\+NU Lesser General Public License for more details. + +You should have received a copy of the G\+NU Lesser General Public License along with this program. If not, see \href{http://www.gnu.org/licenses/}{\tt http\+://www.\+gnu.\+org/licenses/}. \ No newline at end of file diff --git a/doc/latex/_tmeta_8d.tex b/doc/latex/_tmeta_8d.tex new file mode 100644 index 0000000..539cd39 --- /dev/null +++ b/doc/latex/_tmeta_8d.tex @@ -0,0 +1,2 @@ +\hypertarget{_tmeta_8d}{}\section{test/eclipse-\/cygwin/\+C++14-\/\+Concepts/source/tests/\+Tmeta.d File Reference} +\label{_tmeta_8d}\index{test/eclipse-\/cygwin/\+C++14-\/\+Concepts/source/tests/\+Tmeta.\+d@{test/eclipse-\/cygwin/\+C++14-\/\+Concepts/source/tests/\+Tmeta.\+d}} diff --git a/doc/latex/_tmeta_basic_8cpp.tex b/doc/latex/_tmeta_basic_8cpp.tex new file mode 100644 index 0000000..d71fe0b --- /dev/null +++ b/doc/latex/_tmeta_basic_8cpp.tex @@ -0,0 +1,54 @@ +\hypertarget{_tmeta_basic_8cpp}{}\section{test/tests/\+Tmeta\+Basic.cpp File Reference} +\label{_tmeta_basic_8cpp}\index{test/tests/\+Tmeta\+Basic.\+cpp@{test/tests/\+Tmeta\+Basic.\+cpp}} +{\ttfamily \#include $<$utl/meta/meta.\+h$>$}\newline +{\ttfamily \#include $<$gtest/gtest.\+h$>$}\newline +{\ttfamily \#include $<$type\+\_\+traits$>$}\newline +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{struct_tmeta_basic_1_1_identity}{Tmeta\+Basic\+::\+Identity$<$ T $>$}} +\end{DoxyCompactItemize} +\subsection*{Namespaces} +\begin{DoxyCompactItemize} +\item + \mbox{\hyperlink{namespace_tmeta_basic}{Tmeta\+Basic}} +\end{DoxyCompactItemize} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{namespace_tmeta_basic_adbcfd80fbcc5a0fa1a132ea56c18e7ec}{Tmeta\+Basic\+::\+T\+E\+ST}} (Tmeta\+Basic, Integreal\+Type) +\item +\mbox{\hyperlink{namespace_tmeta_basic_a9366a9541a3c137f06a56bb0de5dea26}{Tmeta\+Basic\+::\+T\+E\+ST}} (Tmeta\+Basic, Integreal\+Constant) +\item +\mbox{\hyperlink{namespace_tmeta_basic_a76a07a924d058a3e5f60e1b40417348a}{Tmeta\+Basic\+::\+T\+E\+ST}} (Tmeta\+Basic, Basic\+Types) +\item +\mbox{\hyperlink{namespace_tmeta_basic_aa66e8f02bed5fa0b5a84c70f80c29b98}{Tmeta\+Basic\+::\+T\+E\+ST}} (Tmeta\+Basic, Selection) +\item +\mbox{\hyperlink{namespace_tmeta_basic_a8ee52197913571c983d610af12a1a664}{Tmeta\+Basic\+::\+T\+E\+ST}} (Tmeta\+Basic, Logical\+Operations) +\item +\mbox{\hyperlink{namespace_tmeta_basic_aabef072b3cd9e8f59bd696590b1b5dfd}{Tmeta\+Basic\+::\+T\+E\+ST}} (Tmeta\+Basic, Arithmetic\+Operations) +\item +\mbox{\hyperlink{namespace_tmeta_basic_a3ba38c6705e4f363cf52f330afedfdb6}{Tmeta\+Basic\+::\+T\+E\+ST}} (Tmeta\+Basic, Comparison\+Operations) +\item +\mbox{\hyperlink{namespace_tmeta_basic_ae75afce18d82aad495ef6b9f7d5c0470}{Tmeta\+Basic\+::\+T\+E\+ST}} (Tmeta\+Basic, Bit\+Operations) +\item +{\footnotesize template$<$typename T , typename = when$<$same\+\_\+$<$\+T, int$>$\+::type\+::value$>$$>$ }\\int \mbox{\hyperlink{namespace_tmeta_basic_ace6bcbc9c530fa498900e5fbcf6e7f49}{Tmeta\+Basic\+::check1}} (T x) +\item +int \mbox{\hyperlink{namespace_tmeta_basic_a8fd829e39bf3d2429d66205a392a458f}{Tmeta\+Basic\+::check1}} (...) +\item +{\footnotesize template$<$typename T , typename = enable\+\_\+if\+\_\+t$<$same\+\_\+$<$\+T, int$>$\+::type\+::value, void$>$$>$ }\\int \mbox{\hyperlink{namespace_tmeta_basic_a693588cb4aefc8048c1bc4fb414fa5fe}{Tmeta\+Basic\+::check2}} (T x) +\item +int \mbox{\hyperlink{namespace_tmeta_basic_a691f22848ac59a710a5a588e25b79bdf}{Tmeta\+Basic\+::check2}} (...) +\item +\mbox{\hyperlink{namespace_tmeta_basic_a5662c8ed09164d9e4ffbcc3931580eb9}{Tmeta\+Basic\+::\+T\+E\+ST}} (Tmeta\+Basic, Sfinae) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Copyright (C) 2018 Christos Choutouridis + +This program is free software\+: you can redistribute it and/or modify it under the terms of the G\+NU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but W\+I\+T\+H\+O\+UT A\+NY W\+A\+R\+R\+A\+N\+TY; without even the implied warranty of M\+E\+R\+C\+H\+A\+N\+T\+A\+B\+I\+L\+I\+TY or F\+I\+T\+N\+E\+SS F\+OR A P\+A\+R\+T\+I\+C\+U\+L\+AR P\+U\+R\+P\+O\+SE. See the G\+NU Lesser General Public License for more details. + +You should have received a copy of the G\+NU Lesser General Public License along with this program. If not, see \href{http://www.gnu.org/licenses/}{\tt http\+://www.\+gnu.\+org/licenses/}. \ No newline at end of file diff --git a/doc/latex/_tmeta_basic_8d.tex b/doc/latex/_tmeta_basic_8d.tex new file mode 100644 index 0000000..537f6b3 --- /dev/null +++ b/doc/latex/_tmeta_basic_8d.tex @@ -0,0 +1,2 @@ +\hypertarget{_tmeta_basic_8d}{}\section{test/eclipse-\/cygwin/\+C++14/source/tests/\+Tmeta\+Basic.d File Reference} +\label{_tmeta_basic_8d}\index{test/eclipse-\/cygwin/\+C++14/source/tests/\+Tmeta\+Basic.\+d@{test/eclipse-\/cygwin/\+C++14/source/tests/\+Tmeta\+Basic.\+d}} diff --git a/doc/latex/_tmeta_detection_8cpp.tex b/doc/latex/_tmeta_detection_8cpp.tex new file mode 100644 index 0000000..5876094 --- /dev/null +++ b/doc/latex/_tmeta_detection_8cpp.tex @@ -0,0 +1,59 @@ +\hypertarget{_tmeta_detection_8cpp}{}\section{test/tests/\+Tmeta\+Detection.cpp File Reference} +\label{_tmeta_detection_8cpp}\index{test/tests/\+Tmeta\+Detection.\+cpp@{test/tests/\+Tmeta\+Detection.\+cpp}} +{\ttfamily \#include $<$utl/meta/meta.\+h$>$}\newline +{\ttfamily \#include $<$gtest/gtest.\+h$>$}\newline +{\ttfamily \#include $<$type\+\_\+traits$>$}\newline +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{struct_tmeta_detection_1_1_foo}{Tmeta\+Detection\+::\+Foo}} +\item +struct \mbox{\hyperlink{struct_tmeta_detection_1_1_bar}{Tmeta\+Detection\+::\+Bar}} +\item +struct \mbox{\hyperlink{struct_tmeta_detection_1_1_a}{Tmeta\+Detection\+::\+A$<$ T $>$}} +\item +struct \mbox{\hyperlink{struct_tmeta_detection_1_1m_fun}{Tmeta\+Detection\+::m\+Fun$<$ T1, T2 $>$}} +\end{DoxyCompactItemize} +\subsection*{Namespaces} +\begin{DoxyCompactItemize} +\item + \mbox{\hyperlink{namespace_tmeta_detection}{Tmeta\+Detection}} +\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename T $>$ }\\using \mbox{\hyperlink{namespace_tmeta_detection_a8afedee9c8f0f980114df2970b85b3d6}{Tmeta\+Detection\+::try\+\_\+type}} = typename T\+::type +\item +{\footnotesize template$<$typename T $>$ }\\using \mbox{\hyperlink{namespace_tmeta_detection_a5b1aa9fde2d938f131aa21dfbc31066d}{Tmeta\+Detection\+::try\+\_\+none}} = typename T\+::none +\item +{\footnotesize template$<$typename T $>$ }\\using \mbox{\hyperlink{namespace_tmeta_detection_a51bb4ddb42b30683a5838f8425126955}{Tmeta\+Detection\+::try\+\_\+ctor1}} = decltype(T(std\+::declval$<$ int $>$(), std\+::declval$<$ double $>$())) +\item +{\footnotesize template$<$typename T $>$ }\\using \mbox{\hyperlink{namespace_tmeta_detection_a9fb54f795c97999192547571ba631be7}{Tmeta\+Detection\+::try\+\_\+ctor2}} = decltype(T(std\+::declval$<$ int $>$())) +\item +{\footnotesize template$<$typename T $>$ }\\using \mbox{\hyperlink{namespace_tmeta_detection_a5a316a6cdd1fcf52966fee4f648f5986}{Tmeta\+Detection\+::try\+\_\+ppT}} = decltype(++(std\+::declval$<$ T $>$())) +\item +{\footnotesize template$<$typename T $>$ }\\using \mbox{\hyperlink{namespace_tmeta_detection_a449d376e34edf3b90990510b64998ed6}{Tmeta\+Detection\+::try\+\_\+\+Tpp}} = decltype(std\+::declval$<$ T $>$()++) +\item +{\footnotesize template$<$typename T $>$ }\\using \mbox{\hyperlink{namespace_tmeta_detection_ae8a09443bafe27ded567410f5d028934}{Tmeta\+Detection\+::try\+\_\+sfun}} = decltype(std\+::declval$<$ T $>$().sfun()) +\end{DoxyCompactItemize} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{namespace_tmeta_detection_aa064e60dc07918977247e299899d361b}{Tmeta\+Detection\+::\+T\+E\+ST}} (Tmeta\+Detection, Void\+Type) +\item +\mbox{\hyperlink{namespace_tmeta_detection_aad05cd282a58a320252a8de7a8ec9ba5}{Tmeta\+Detection\+::\+T\+E\+ST}} (Tmeta\+Detection, Not\+A\+Type) +\item +\mbox{\hyperlink{namespace_tmeta_detection_a022c84980b3a19f2087bf4694ff652a7}{Tmeta\+Detection\+::\+T\+E\+ST}} (Tmeta\+Detection, Is\+Detected) +\item +\mbox{\hyperlink{namespace_tmeta_detection_ae8ced9a0416f4a848bc4de38355d5ee8}{Tmeta\+Detection\+::\+T\+E\+ST}} (Tmeta\+Detection, Toolkit) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Copyright (C) 2018 Christos Choutouridis + +This program is free software\+: you can redistribute it and/or modify it under the terms of the G\+NU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but W\+I\+T\+H\+O\+UT A\+NY W\+A\+R\+R\+A\+N\+TY; without even the implied warranty of M\+E\+R\+C\+H\+A\+N\+T\+A\+B\+I\+L\+I\+TY or F\+I\+T\+N\+E\+SS F\+OR A P\+A\+R\+T\+I\+C\+U\+L\+AR P\+U\+R\+P\+O\+SE. See the G\+NU Lesser General Public License for more details. + +You should have received a copy of the G\+NU Lesser General Public License along with this program. If not, see \href{http://www.gnu.org/licenses/}{\tt http\+://www.\+gnu.\+org/licenses/}. \ No newline at end of file diff --git a/doc/latex/_tmeta_detection_8d.tex b/doc/latex/_tmeta_detection_8d.tex new file mode 100644 index 0000000..f36f7b3 --- /dev/null +++ b/doc/latex/_tmeta_detection_8d.tex @@ -0,0 +1,2 @@ +\hypertarget{_tmeta_detection_8d}{}\section{test/eclipse-\/cygwin/\+C++14/source/tests/\+Tmeta\+Detection.d File Reference} +\label{_tmeta_detection_8d}\index{test/eclipse-\/cygwin/\+C++14/source/tests/\+Tmeta\+Detection.\+d@{test/eclipse-\/cygwin/\+C++14/source/tests/\+Tmeta\+Detection.\+d}} diff --git a/doc/latex/_tmeta_typelist_8cpp.tex b/doc/latex/_tmeta_typelist_8cpp.tex new file mode 100644 index 0000000..3b0837f --- /dev/null +++ b/doc/latex/_tmeta_typelist_8cpp.tex @@ -0,0 +1,66 @@ +\hypertarget{_tmeta_typelist_8cpp}{}\section{test/tests/\+Tmeta\+Typelist.cpp File Reference} +\label{_tmeta_typelist_8cpp}\index{test/tests/\+Tmeta\+Typelist.\+cpp@{test/tests/\+Tmeta\+Typelist.\+cpp}} +{\ttfamily \#include $<$utl/meta/meta.\+h$>$}\newline +{\ttfamily \#include $<$gtest/gtest.\+h$>$}\newline +{\ttfamily \#include $<$type\+\_\+traits$>$}\newline +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{struct_tmeta_typelist_1_1_identity}{Tmeta\+Typelist\+::\+Identity$<$ T $>$}} +\item +struct \mbox{\hyperlink{struct_tmeta_typelist_1_1_mfun_bin}{Tmeta\+Typelist\+::\+Mfun\+Bin$<$ T1, T2 $>$}} +\item +struct \mbox{\hyperlink{struct_tmeta_typelist_1_1_mfun_bin__i}{Tmeta\+Typelist\+::\+Mfun\+Bin\+\_\+i$<$ a, b $>$}} +\item +struct \mbox{\hyperlink{struct_tmeta_typelist_1_1_mfun_un1}{Tmeta\+Typelist\+::\+Mfun\+Un1$<$ T1 $>$}} +\item +struct \mbox{\hyperlink{struct_tmeta_typelist_1_1_mfun_un2}{Tmeta\+Typelist\+::\+Mfun\+Un2$<$ T1 $>$}} +\item +struct \mbox{\hyperlink{struct_tmeta_typelist_1_1_pred__is_int}{Tmeta\+Typelist\+::\+Pred\+\_\+is\+Int$<$ T $>$}} +\item +struct \mbox{\hyperlink{struct_tmeta_typelist_1_1_pred__is_void}{Tmeta\+Typelist\+::\+Pred\+\_\+is\+Void$<$ T $>$}} +\item +struct \mbox{\hyperlink{struct_tmeta_typelist_1_1_f}{Tmeta\+Typelist\+::\+F$<$ T1, T2 $>$}} +\end{DoxyCompactItemize} +\subsection*{Namespaces} +\begin{DoxyCompactItemize} +\item + \mbox{\hyperlink{namespace_tmeta_typelist}{Tmeta\+Typelist}} +\end{DoxyCompactItemize} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{namespace_tmeta_typelist_a0efd5c09e08d72ca3dd8236e59ca0907}{Tmeta\+Typelist\+::\+T\+E\+ST}} (Tmeta\+Typelist, Invoke) +\item +\mbox{\hyperlink{namespace_tmeta_typelist_a487d8ae681bd99bee73bff152870b288}{Tmeta\+Typelist\+::\+T\+E\+ST}} (Tmeta\+Typelist, Basics) +\item +\mbox{\hyperlink{namespace_tmeta_typelist_a923b1c0b0dc401bd6360f86bea674239}{Tmeta\+Typelist\+::\+T\+E\+ST}} (Tmeta\+Typelist, Element\+Access) +\item +\mbox{\hyperlink{namespace_tmeta_typelist_a43c71fc11f99d862f2a965a36b7e9562}{Tmeta\+Typelist\+::\+T\+E\+ST}} (Tmeta\+Typelist, Concat) +\item +\mbox{\hyperlink{namespace_tmeta_typelist_aab40220bb9343d3b08715d741a87b813}{Tmeta\+Typelist\+::\+T\+E\+ST}} (Tmeta\+Typelist, Fold) +\item +\mbox{\hyperlink{namespace_tmeta_typelist_a346d379aa948955d431367fb850a58d5}{Tmeta\+Typelist\+::\+T\+E\+ST}} (Tmeta\+Typelist, Push\+Pop\+Reverse) +\item +\mbox{\hyperlink{namespace_tmeta_typelist_a716c04dce454d80e8d1258f357524513}{Tmeta\+Typelist\+::\+T\+E\+ST}} (Tmeta\+Typelist, Transform) +\item +\mbox{\hyperlink{namespace_tmeta_typelist_a7842447ab76734f253d3f9ac69ef6909}{Tmeta\+Typelist\+::\+T\+E\+ST}} (Tmeta\+Typelist, Find) +\item +\mbox{\hyperlink{namespace_tmeta_typelist_a973fce2375bc2b023f9c8fe8fdbdf1d8}{Tmeta\+Typelist\+::\+T\+E\+ST}} (Tmeta\+Typelist, Count) +\item +\mbox{\hyperlink{namespace_tmeta_typelist_ae822d411c84a042d49709373dd943af0}{Tmeta\+Typelist\+::\+T\+E\+ST}} (Tmeta\+Typelist, Filter) +\item +\mbox{\hyperlink{namespace_tmeta_typelist_ad468d62cfaa953d118cf11d2f59b81b5}{Tmeta\+Typelist\+::\+T\+E\+ST}} (Tmeta\+Typelist, Replace) +\item +\mbox{\hyperlink{namespace_tmeta_typelist_a26027622e87df6c393dfae7b42c3e061}{Tmeta\+Typelist\+::\+T\+E\+ST}} (Tmeta\+Typelist, All\+Any\+None) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Copyright (C) 2018 Christos Choutouridis + +This program is free software\+: you can redistribute it and/or modify it under the terms of the G\+NU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but W\+I\+T\+H\+O\+UT A\+NY W\+A\+R\+R\+A\+N\+TY; without even the implied warranty of M\+E\+R\+C\+H\+A\+N\+T\+A\+B\+I\+L\+I\+TY or F\+I\+T\+N\+E\+SS F\+OR A P\+A\+R\+T\+I\+C\+U\+L\+AR P\+U\+R\+P\+O\+SE. See the G\+NU Lesser General Public License for more details. + +You should have received a copy of the G\+NU Lesser General Public License along with this program. If not, see \href{http://www.gnu.org/licenses/}{\tt http\+://www.\+gnu.\+org/licenses/}. \ No newline at end of file diff --git a/doc/latex/_tmeta_typelist_8d.tex b/doc/latex/_tmeta_typelist_8d.tex new file mode 100644 index 0000000..2aaa052 --- /dev/null +++ b/doc/latex/_tmeta_typelist_8d.tex @@ -0,0 +1,2 @@ +\hypertarget{_tmeta_typelist_8d}{}\section{test/eclipse-\/cygwin/\+C++14/source/tests/\+Tmeta\+Typelist.d File Reference} +\label{_tmeta_typelist_8d}\index{test/eclipse-\/cygwin/\+C++14/source/tests/\+Tmeta\+Typelist.\+d@{test/eclipse-\/cygwin/\+C++14/source/tests/\+Tmeta\+Typelist.\+d}} diff --git a/doc/latex/_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2concepts_2defines_8h-example.tex b/doc/latex/_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2concepts_2defines_8h-example.tex new file mode 100644 index 0000000..760ad25 --- /dev/null +++ b/doc/latex/_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2concepts_2defines_8h-example.tex @@ -0,0 +1,46 @@ +\hypertarget{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2concepts_2defines_8h-example}{}\section{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/concepts/defines.\+h} +utl typename constraints wrapper +\begin{DoxyCode} +\textcolor{keyword}{template} \textcolor{keyword}{struct }lala \{ \}; +\textcolor{comment}{// will expand to something like:} +\textcolor{comment}{// template struct lala \{ \};} +\textcolor{comment}{// or} +\textcolor{comment}{// template struct lala \{ \};} +\end{DoxyCode} + + + +\begin{DoxyCodeInclude} + +\textcolor{preprocessor}{#ifndef \_\_utl\_concepts\_defines\_h\_\_} +\textcolor{preprocessor}{#define \_\_utl\_concepts\_defines\_h\_\_} + + +\textcolor{preprocessor}{#if CXX\_CONCEPTS} +\textcolor{preprocessor}{ #define utlConstrainType(\_Concept\_) \_Concept\_} +\textcolor{preprocessor}{#else} +\textcolor{preprocessor}{ #define utlConstrainType(\_Concept\_) typename} +\textcolor{preprocessor}{#endif} + +\textcolor{preprocessor}{#if CXX\_CONCEPTS} +\textcolor{preprocessor}{ #if \_\_cpp\_concepts <= 201507L} +\textcolor{preprocessor}{ #define \_utlConcept concept bool} +\textcolor{preprocessor}{ #else} +\textcolor{preprocessor}{ #define \_utlConcept concept} +\textcolor{preprocessor}{ #endif} +\textcolor{preprocessor}{#else} +\textcolor{preprocessor}{ #define \_utlConcept constexpr bool} +\textcolor{preprocessor}{#endif} + +\textcolor{preprocessor}{#ifndef CXX\_LIB\_INVOKE} +\textcolor{preprocessor}{ #ifdef \_\_cpp\_lib\_invoke} +\textcolor{preprocessor}{ #define CXX\_LIB\_INVOKE \_\_cpp\_lib\_invoke} +\textcolor{preprocessor}{ #else} +\textcolor{preprocessor}{ #define CXX\_LIB\_INVOKE 0} +\textcolor{preprocessor}{ #endif} +\textcolor{preprocessor}{#endif} + + +\textcolor{preprocessor}{#endif }\textcolor{comment}{/* \_\_utl\_concepts\_defines\_h\_\_ */}\textcolor{preprocessor}{} +\end{DoxyCodeInclude} + \ No newline at end of file diff --git a/doc/latex/_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2detection_8h-example.tex b/doc/latex/_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2detection_8h-example.tex new file mode 100644 index 0000000..b0fde54 --- /dev/null +++ b/doc/latex/_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2detection_8h-example.tex @@ -0,0 +1,123 @@ +\hypertarget{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2detection_8h-example}{}\section{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/detection.\+h} +detection interface + +Checks if Op$<$\+Args...$>$ is a valid expression without evaluating it. + + +\begin{DoxyTemplParams}{Template Parameters} +{\em Op} & a meta-\/callback function to pass Args... \\ +\hline +{\em Args...} & types to pass to Op for checking \\ +\hline +\end{DoxyTemplParams} +\begin{DoxyReturn}{Returns} +status of the operation \mbox{[}bool\+\_\+\mbox{]} \begin{DoxyItemize} +\item true\+\_\+ if Op$<$\+Args...$>$ is valid expression \item false\+\_\+ if Op$<$\+Args...$>$ is not valid\end{DoxyItemize} + +\begin{DoxyCode} +\textcolor{comment}{// archetypal alias for a copy assignment operation} +\textcolor{keyword}{template}< \textcolor{keyword}{class} T > \textcolor{keyword}{using} copy\_assign\_t = decltype( declval() = declval() ); + +\textcolor{keyword}{template}< \textcolor{keyword}{class} T > \textcolor{keyword}{using} is\_copy\_assignable = is\_detected< copy\_assign\_t, T >; +\end{DoxyCode} + +\end{DoxyReturn} + +\begin{DoxyCodeInclude} + +\textcolor{preprocessor}{#ifndef \_\_utl\_meta\_detection\_h\_\_} +\textcolor{preprocessor}{#define \_\_utl\_meta\_detection\_h\_\_} + +\textcolor{preprocessor}{#include <\mbox{\hyperlink{impl_8h}{utl/core/impl.h}}>} +\textcolor{preprocessor}{#include <\mbox{\hyperlink{operations_8h}{utl/meta/operations.h}}>} +\textcolor{preprocessor}{#include } + + +\textcolor{keyword}{namespace }\mbox{\hyperlink{namespaceutl}{utl}} \{ +\textcolor{keyword}{namespace }meta \{ + +\textcolor{preprocessor}{ #if defined(UTL\_WORKAROUND\_CWG\_1558)} + \textcolor{keyword}{template}<\textcolor{keyword}{typename}... \_Ts> + \textcolor{keyword}{struct }\mbox{\hyperlink{group__detection_gac16d50de47cf57734433e9ea636522c5}{void\_}} \{ + \textcolor{keyword}{using} type = void; + \}; + \textcolor{keyword}{template}<\textcolor{keyword}{typename}... \_Ts> + \textcolor{keyword}{using} \mbox{\hyperlink{group__detection_gae7373c997420d16cf37e542eb3cfa3ad}{void\_t}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}<\mbox{\hyperlink{group__detection_gac16d50de47cf57734433e9ea636522c5}{void\_}}<\_Ts...>>; +\textcolor{preprocessor}{ #else} + \textcolor{keyword}{template} <\textcolor{keyword}{typename}...> \textcolor{keyword}{using} \mbox{\hyperlink{group__detection_gac16d50de47cf57734433e9ea636522c5}{void\_}} = void; + \textcolor{keyword}{template} <\textcolor{keyword}{typename}...> \textcolor{keyword}{using} \mbox{\hyperlink{group__detection_gae7373c997420d16cf37e542eb3cfa3ad}{void\_t}} = void; +\textcolor{preprocessor}{ #endif} + + \textcolor{keyword}{struct }nat\_ \{ + nat\_() = \textcolor{keyword}{delete}; + ~nat\_() = \textcolor{keyword}{delete}; + nat\_(nat\_ \textcolor{keyword}{const}&) = \textcolor{keyword}{delete}; + \textcolor{keywordtype}{void} operator = (nat\_ \textcolor{keyword}{const}&) = \textcolor{keyword}{delete}; + \}; + + \textcolor{keyword}{namespace }detail \{ + \textcolor{keyword}{template} <\textcolor{keyword}{typename} Default, + \textcolor{keyword}{typename} AlwaysVoid, + \textcolor{keyword}{template}<\textcolor{keyword}{typename}...> \textcolor{keyword}{class }Op, \textcolor{keyword}{typename}... Args> + \textcolor{keyword}{struct }detector \{ + \textcolor{keyword}{using} detected = \mbox{\hyperlink{namespaceutl_1_1meta_a55511dbaa0adb605ce22dcec11f8d22d}{false\_}}; + \textcolor{keyword}{using} type = Default; + \}; + + \textcolor{keyword}{template} <\textcolor{keyword}{typename} Default, + \textcolor{keyword}{template}<\textcolor{keyword}{typename}...> \textcolor{keyword}{class }Op, \textcolor{keyword}{typename}... Args> + \textcolor{keyword}{struct }detector >, Op, Args...> \{ + \textcolor{keyword}{using} detected = \mbox{\hyperlink{namespaceutl_1_1meta_ae9a5a8fbe8202785f059935af219fb97}{true\_}}; + \textcolor{keyword}{using} type = Op; + \}; + + \textcolor{keyword}{template} <\textcolor{keyword}{typename} Default, + \textcolor{keyword}{template}<\textcolor{keyword}{typename}...> \textcolor{keyword}{class }Op, \textcolor{keyword}{typename}... Args> + \textcolor{keyword}{using} \mbox{\hyperlink{namespaceutl_1_1meta_1_1detail_a835827cb3116483228d6f7f774b68970}{detected\_or}} = detector; + \} \textcolor{comment}{// namespace detail} +\textcolor{comment}{} + + \textcolor{keyword}{template} <\textcolor{keyword}{template}<\textcolor{keyword}{typename}...> \textcolor{keyword}{class }Op, \textcolor{keyword}{typename}... Args> + \textcolor{keyword}{using} \mbox{\hyperlink{namespaceutl_1_1meta_a5329219a9d2f195421a78d8e07873507}{is\_detected}} = \textcolor{keyword}{typename} detail::detector::detected; + + \textcolor{keyword}{template}< \textcolor{keyword}{template}<\textcolor{keyword}{typename}...> \textcolor{keyword}{class }Op, \textcolor{keyword}{typename}... Args> + constexpr \textcolor{keywordtype}{bool} \mbox{\hyperlink{namespaceutl_1_1meta_a4f3184ccb8e8ba2a78e2d2e83a0b9885}{is\_detected\_v}} = \mbox{\hyperlink{namespaceutl_1_1meta_a5329219a9d2f195421a78d8e07873507}{is\_detected}}::value; + + \textcolor{keyword}{template} <\textcolor{keyword}{template}<\textcolor{keyword}{typename}...> \textcolor{keyword}{class }Op, \textcolor{keyword}{typename}... Args> + \textcolor{keyword}{using} \mbox{\hyperlink{namespaceutl_1_1meta_aa654a286b3bc8e6d8116ee1f57087110}{detected\_t}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}} < + detail::detector + >; + + \textcolor{keyword}{template} <\textcolor{keyword}{typename} Default, + \textcolor{keyword}{template}<\textcolor{keyword}{typename}...> \textcolor{keyword}{class }Op, \textcolor{keyword}{typename}... Args> + \textcolor{keyword}{using} \mbox{\hyperlink{namespaceutl_1_1meta_a8fd055bc6c6c3b1d551e9605aa35644c}{detected\_or\_t}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}} < + \mbox{\hyperlink{namespaceutl_1_1meta_1_1detail_a835827cb3116483228d6f7f774b68970}{detail::detected\_or}} + >; + + \textcolor{keyword}{template} <\textcolor{keyword}{typename} Expected, + \textcolor{keyword}{template}<\textcolor{keyword}{typename}...> \textcolor{keyword}{class }Op, \textcolor{keyword}{typename}... Args > + \textcolor{keyword}{using} \mbox{\hyperlink{namespaceutl_1_1meta_ad5224ef66e8f40efaaf3ad3d605dd629}{is\_detected\_exact}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}} < + same\_> + >; + + \textcolor{keyword}{template} <\textcolor{keyword}{typename} Expected, + \textcolor{keyword}{template}<\textcolor{keyword}{typename}...> \textcolor{keyword}{class }Op, \textcolor{keyword}{typename}... Args > + constexpr \textcolor{keywordtype}{bool} \mbox{\hyperlink{namespaceutl_1_1meta_a960827a1d72083a511f8ea4ccc8beceb}{is\_detected\_exact\_v}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad5224ef66e8f40efaaf3ad3d605dd629}{is\_detected\_exact}}< Expected, Op + , Args...>::value; + + \textcolor{keyword}{template} <\textcolor{keyword}{typename} To, + \textcolor{keyword}{template}<\textcolor{keyword}{typename}...> \textcolor{keyword}{class }Op, \textcolor{keyword}{typename}... Args > + \textcolor{keyword}{using} \mbox{\hyperlink{namespaceutl_1_1meta_afa24702fa15a1d0a8a05761c54b79def}{is\_detected\_convertible}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}} < + std::is\_convertible< \mbox{\hyperlink{namespaceutl_1_1meta_aa654a286b3bc8e6d8116ee1f57087110}{detected\_t}}, To > + >; + + \textcolor{keyword}{template} <\textcolor{keyword}{typename} To, + \textcolor{keyword}{template}<\textcolor{keyword}{typename}...> \textcolor{keyword}{class }Op, \textcolor{keyword}{typename}... Args > + constexpr \textcolor{keywordtype}{bool} \mbox{\hyperlink{namespaceutl_1_1meta_acba521b528e775be4b37d2e481e0f138}{is\_detected\_convertible\_v}} = + \mbox{\hyperlink{namespaceutl_1_1meta_afa24702fa15a1d0a8a05761c54b79def}{is\_detected\_convertible}}::value; + +\}\} + +\textcolor{preprocessor}{#endif }\textcolor{comment}{/* \_\_utl\_meta\_detection\_h\_\_ */}\textcolor{preprocessor}{} +\end{DoxyCodeInclude} + \ No newline at end of file diff --git a/doc/latex/_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example.tex b/doc/latex/_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example.tex new file mode 100644 index 0000000..2256c66 --- /dev/null +++ b/doc/latex/_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example.tex @@ -0,0 +1,242 @@ +\hypertarget{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example}{}\section{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/invoke.\+h} +Create an invocable from other invocables(quoted metafunctions) by composition. \begin{DoxyNote}{Note} +This implies from N invocables in {\ttfamily Fns} the first N-\/1 has to be unary. Thats because of the \char`\"{}return\char`\"{} type of metafunction. They can only return one type. So for n-\/ary invocables in the N-\/1 places the typelist$<$$>$ is the solution. +\end{DoxyNote} + +\begin{DoxyCode} +static\_assert( std::is\_same< + \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}}<\mbox{\hyperlink{namespaceutl_1_1meta_a4f0c06cabe66bc73b703eb8509c7bb07}{compose}}, quote, quote>, \textcolor{keywordtype}{int}>, F1>> +>, \textcolor{stringliteral}{""}); +\end{DoxyCode} + + + +\begin{DoxyCodeInclude} + +\textcolor{preprocessor}{#ifndef \_\_utl\_meta\_invoke\_h\_\_} +\textcolor{preprocessor}{#define \_\_utl\_meta\_invoke\_h\_\_} + +\textcolor{preprocessor}{#include <\mbox{\hyperlink{impl_8h}{utl/core/impl.h}}>} +\textcolor{preprocessor}{#include <\mbox{\hyperlink{integral_8h}{utl/meta/integral.h}}>} +\textcolor{preprocessor}{#include <\mbox{\hyperlink{detection_8h}{utl/meta/detection.h}}>} +\textcolor{preprocessor}{#include <\mbox{\hyperlink{operations_8h}{utl/meta/operations.h}}>} + +\textcolor{keyword}{namespace }\mbox{\hyperlink{namespaceutl}{utl}} \{ +\textcolor{keyword}{namespace }meta\{ + + + \textcolor{keyword}{template} <\textcolor{keyword}{typename} \_Tp> + \textcolor{keyword}{struct }identity \{ +\textcolor{preprocessor}{ #if defined (UTL\_WORKAROUND\_CWG\_1558)} + \textcolor{comment}{// redirect unused Ts... via void\_t} + \textcolor{keyword}{template} <\textcolor{keyword}{typename}... Ts> + \textcolor{keyword}{using} \mbox{\hyperlink{structutl_1_1meta_1_1identity_ab13e3134ffe9c6fabb22f67d7b87b2dd}{apply}} = \mbox{\hyperlink{group__type_gaf7089523d21cd405c76985643f31092a}{first\_of}}<\_Tp, \mbox{\hyperlink{group__detection_gae7373c997420d16cf37e542eb3cfa3ad}{void\_t}}>; +\textcolor{preprocessor}{ #else} + \textcolor{keyword}{template} <\textcolor{keyword}{typename}...> + \textcolor{keyword}{using} \mbox{\hyperlink{structutl_1_1meta_1_1identity_ab13e3134ffe9c6fabb22f67d7b87b2dd}{apply}} = \_Tp; +\textcolor{preprocessor}{ #endif} + \textcolor{keyword}{using} \mbox{\hyperlink{structutl_1_1meta_1_1identity_a9aab221df05f226c227a6e508460f7b7}{type}} = \_Tp; + \}; + + \textcolor{keyword}{template} <\textcolor{keyword}{typename} \_Tp> + \textcolor{keyword}{using} \mbox{\hyperlink{namespaceutl_1_1meta_a63c0b6b08f4c1d9bd3c4db7432e9b2af}{identity\_t}} = eval>; + + + \textcolor{keyword}{template} <\textcolor{keyword}{typename} Fn, \textcolor{keyword}{typename}... Args> + \textcolor{keyword}{using} \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}} = \textcolor{keyword}{typename} Fn::template \mbox{\hyperlink{namespaceutl_1_1meta_a3f684549221fac60bc8c7979cb4b98f4}{apply}}; + + \textcolor{keyword}{template} <\textcolor{keyword}{typename} Fn, \textcolor{keyword}{typename}... Args> + \textcolor{keyword}{using} \mbox{\hyperlink{namespaceutl_1_1meta_ac27f3e5f3ec42921d9f8a6bb85560cf1}{invoke\_t}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}< \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}} >; + + + \textcolor{keyword}{template} <\textcolor{keyword}{template} <\textcolor{keyword}{typename}...> \textcolor{keyword}{class }F> + \textcolor{keyword}{struct }wrap \{ + \textcolor{keyword}{template} <\textcolor{keyword}{typename}... Args> + \textcolor{keyword}{using} \mbox{\hyperlink{structutl_1_1meta_1_1wrap_a71fe22d6a841f27b891ca3344ee97b07}{apply}} = F; + \}; + + \textcolor{keyword}{template} <\textcolor{keyword}{typename} T, \textcolor{keyword}{template} \textcolor{keyword}{class }F> + \textcolor{keyword}{struct }wrap\_i \{ + \textcolor{comment}{// requires meta::Integral} + \textcolor{keyword}{template} <\textcolor{keyword}{typename}... Ts> + \textcolor{keyword}{using} \mbox{\hyperlink{structutl_1_1meta_1_1wrap__i_a14e7ddd17abbcecf2658a3dd4616e0d2}{apply}} = F; + \}; + + \textcolor{keyword}{namespace }detail \{ + + \textcolor{keyword}{template}<\textcolor{keyword}{template}<\textcolor{keyword}{typename}...> \textcolor{keyword}{class }F, \textcolor{keyword}{typename}... T> + \textcolor{keyword}{struct }is\_applicable\_ \{ + \textcolor{keyword}{template}<\textcolor{keyword}{template}<\textcolor{keyword}{typename}...> \textcolor{keyword}{class }G, \textcolor{keyword}{typename} = G> + \textcolor{keyword}{static} \mbox{\hyperlink{namespaceutl_1_1meta_ae9a5a8fbe8202785f059935af219fb97}{true\_}} \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable___abdbf481cbdd5183b42e3cabdb77d282a}{check}} (\textcolor{keywordtype}{int}); \textcolor{comment}{//< T.. can be passed to G} + \textcolor{keyword}{template}<\textcolor{keyword}{template}<\textcolor{keyword}{typename}...> \textcolor{keyword}{class}> + \textcolor{keyword}{static} \mbox{\hyperlink{namespaceutl_1_1meta_a55511dbaa0adb605ce22dcec11f8d22d}{false\_}} \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable___abdbf481cbdd5183b42e3cabdb77d282a}{check}} (...); \textcolor{comment}{//< all other combinations} + + \textcolor{keyword}{using} \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable___ababc9a374e6321fb8ded4b2dde19795c}{type}} = decltype(check(0)); + \}; + + \textcolor{keyword}{template}<\textcolor{keyword}{typename} F, \textcolor{keyword}{typename}... T> + \textcolor{keyword}{struct }is\_applicable\_q\_ \{ + \textcolor{keyword}{template}<\textcolor{keyword}{typename} G, \textcolor{keyword}{typename} Ret = \mbox{\hyperlink{namespaceutl_1_1meta_ac27f3e5f3ec42921d9f8a6bb85560cf1}{invoke\_t}}> + \textcolor{keyword}{static} Ret \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__q___a6d258d626fb7889506d8d0c9c6ab14b1}{check}} (\textcolor{keywordtype}{int}); \textcolor{comment}{//< T.. can be passed to G} + \textcolor{keyword}{template}<\textcolor{keyword}{typename}...> + \textcolor{keyword}{static} nil\_ \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__q___a6d258d626fb7889506d8d0c9c6ab14b1}{check}} (...); \textcolor{comment}{//< all other combinations} + + \textcolor{keyword}{using} \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__q___a175161a76c46c8da1d170e329d17ce43}{type}} = \mbox{\hyperlink{group__type_ga39cc4e727a8faa5ea176f543e62c05c0}{if\_}} < + \mbox{\hyperlink{group__integral_ga4dfaf054d891eb35d741662b077bbbd2}{not\_same\_}}< + nil\_, + decltype(check(0)) + >, \mbox{\hyperlink{namespaceutl_1_1meta_ae9a5a8fbe8202785f059935af219fb97}{true\_}}, \mbox{\hyperlink{namespaceutl_1_1meta_a55511dbaa0adb605ce22dcec11f8d22d}{false\_}} + >; + \}; + + \textcolor{keyword}{template}<\textcolor{keyword}{typename} T, \textcolor{keyword}{template} \textcolor{keyword}{class }F, T... Is> + \textcolor{keyword}{struct }is\_applicable\_i\_ \{ + \textcolor{keyword}{template}<\textcolor{keyword}{typename} TT, \textcolor{keyword}{template} \textcolor{keyword}{class }G, \textcolor{keyword}{typename} = G> + \textcolor{keyword}{static} \mbox{\hyperlink{namespaceutl_1_1meta_ae9a5a8fbe8202785f059935af219fb97}{true\_}} \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__i___ac03023fb86dba10d9dfbd0ba553daccd}{check}} (\textcolor{keywordtype}{int}); \textcolor{comment}{//< Is... can be passed to G} + \textcolor{keyword}{template}<\textcolor{keyword}{typename} TT, \textcolor{keyword}{template} \textcolor{keyword}{class }G> + \textcolor{keyword}{static} \mbox{\hyperlink{namespaceutl_1_1meta_a55511dbaa0adb605ce22dcec11f8d22d}{false\_}} \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__i___ac03023fb86dba10d9dfbd0ba553daccd}{check}} (...); \textcolor{comment}{//< all other combinations} + + \textcolor{keyword}{using} \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__i___ac512fdc9db578f9244b861f84c177ca7}{type}} = decltype(check(0)); + \}; + \} + + \textcolor{keyword}{template}<\textcolor{keyword}{template}<\textcolor{keyword}{typename}...> \textcolor{keyword}{class }F, \textcolor{keyword}{typename}... T> + \textcolor{keyword}{using} \mbox{\hyperlink{namespaceutl_1_1meta_a695a94a2bbe51b0d0eec9bf82214d094}{is\_applicable\_t}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}< + detail::is\_applicable\_ + >; + \textcolor{keyword}{template}<\textcolor{keyword}{typename} Q, \textcolor{keyword}{typename}... T> + \textcolor{keyword}{using} \mbox{\hyperlink{namespaceutl_1_1meta_a52c0afa73f63dc889e44cc6cc180f1f8}{is\_applicable\_qt}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}} < + detail::is\_applicable\_q\_ + >; + + \textcolor{keyword}{template} <\textcolor{keyword}{typename} T, \textcolor{keyword}{template} \textcolor{keyword}{class }F, T... Is> + \textcolor{keyword}{using} \mbox{\hyperlink{namespaceutl_1_1meta_add602488265f07c7a3080355350cda70}{is\_applicable\_it}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}< + detail::is\_applicable\_i\_ + >; + + + \textcolor{keyword}{namespace }detail \{ + \textcolor{keyword}{template}<\textcolor{keyword}{template}<\textcolor{keyword}{typename}...> \textcolor{keyword}{class }F, \textcolor{keyword}{typename}... Ts> + \textcolor{keyword}{struct }defer\_ \{ + \textcolor{keyword}{using} \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1defer___ac8e2ede36472a15488ffdb49a6935be2}{type}} = F; + \}; + + \textcolor{keyword}{template}<\textcolor{keyword}{typename} T, \textcolor{keyword}{template} \textcolor{keyword}{class }F, T... Is> + \textcolor{keyword}{struct }defer\_i\_ \{ + \textcolor{keyword}{using} \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1defer__i___af8659048a08bb48bae5c0dc3f9595bf7}{type}} = F; + \}; + + \} + + \textcolor{keyword}{template}<\textcolor{keyword}{template}<\textcolor{keyword}{class}...> \textcolor{keyword}{class }F, \textcolor{keyword}{class}... Ts> + \textcolor{keyword}{using} \mbox{\hyperlink{namespaceutl_1_1meta_a48f9a1220931596a9652351d2e7242be}{defer}} = \mbox{\hyperlink{group__type_ga39cc4e727a8faa5ea176f543e62c05c0}{if\_}}< + detail::is\_applicable\_, + detail::defer\_, + nil\_ + >; + + \textcolor{keyword}{template} <\textcolor{keyword}{typename} T, \textcolor{keyword}{template} \textcolor{keyword}{class }F, T... Is> + \textcolor{keyword}{using} \mbox{\hyperlink{namespaceutl_1_1meta_a01f183f337439e414184beedc9bcf9e3}{defer\_i}} = \mbox{\hyperlink{group__type_ga39cc4e727a8faa5ea176f543e62c05c0}{if\_}} < + detail::is\_applicable\_i\_, + detail::defer\_i\_, + nil\_ + >; + + + \textcolor{keyword}{template} <\textcolor{keyword}{template} <\textcolor{keyword}{typename}...> \textcolor{keyword}{class }F> + \textcolor{keyword}{struct }quote \{ + \textcolor{keyword}{template} <\textcolor{keyword}{typename}... Args> + \textcolor{keyword}{using} \mbox{\hyperlink{structutl_1_1meta_1_1quote_a7741173cf865291c89d374c2fac0d17e}{apply}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}< + \mbox{\hyperlink{namespaceutl_1_1meta_a48f9a1220931596a9652351d2e7242be}{defer}} + >; + \}; + + \textcolor{keyword}{template} <\textcolor{keyword}{typename} T, \textcolor{keyword}{template} \textcolor{keyword}{class }F> + \textcolor{keyword}{struct }quote\_i \{ + \textcolor{comment}{// requires meta::Integral} + \textcolor{keyword}{template} <\textcolor{keyword}{typename}... Ts> + \textcolor{keyword}{using} \mbox{\hyperlink{structutl_1_1meta_1_1quote__i_a32099809fbac1c620ad3993e8ab1b8c0}{apply}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}< + \mbox{\hyperlink{namespaceutl_1_1meta_a01f183f337439e414184beedc9bcf9e3}{defer\_i}} + >; + \}; + + \textcolor{keyword}{namespace }detail \{ + \textcolor{keyword}{template} <\textcolor{keyword}{template} <\textcolor{keyword}{typename}...> \textcolor{keyword}{class}... Fns> \textcolor{keyword}{struct }compose\_f\_ \{\}; + + \textcolor{comment}{// recursive call to all invokes} + \textcolor{keyword}{template} <\textcolor{keyword}{template} <\textcolor{keyword}{typename}...> \textcolor{keyword}{class }Fn0, + \textcolor{keyword}{template} <\textcolor{keyword}{typename}...> \textcolor{keyword}{class}... Fns> + \textcolor{keyword}{struct }compose\_f\_ \{ + \textcolor{keyword}{template} <\textcolor{keyword}{typename}... Args> + \textcolor{keyword}{using} \mbox{\hyperlink{namespaceutl_1_1meta_a3f684549221fac60bc8c7979cb4b98f4}{apply}} = \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}}< + quote, + \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}}, Args...> + >; + \}; + \textcolor{comment}{// Termination specialization, finally pass the arguments} + \textcolor{keyword}{template} <\textcolor{keyword}{template} <\textcolor{keyword}{typename}...> \textcolor{keyword}{class }Fn0> + \textcolor{keyword}{struct }compose\_f\_ \{ + \textcolor{keyword}{template} <\textcolor{keyword}{typename} ...Args> + \textcolor{keyword}{using} \mbox{\hyperlink{namespaceutl_1_1meta_a3f684549221fac60bc8c7979cb4b98f4}{apply}} = invoke, Args...>; + \}; + + + \textcolor{keyword}{template}<\textcolor{keyword}{typename} ...Fns> \textcolor{keyword}{struct }compose\_ \{\}; + + \textcolor{comment}{// recursive call to all invokes} + \textcolor{keyword}{template}<\textcolor{keyword}{typename} Fn0, \textcolor{keyword}{typename} ...Fns> + \textcolor{keyword}{struct }compose\_ \{ + \textcolor{keyword}{template} <\textcolor{keyword}{typename} ...Args> + \textcolor{keyword}{using} \mbox{\hyperlink{namespaceutl_1_1meta_a3f684549221fac60bc8c7979cb4b98f4}{apply}} = \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}}< + Fn0, + \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}}, Args...> + >; + \}; + \textcolor{comment}{// Termination specialization, finally pass the arguments} + \textcolor{keyword}{template}<\textcolor{keyword}{typename} Fn0> + \textcolor{keyword}{struct }compose\_ \{ + \textcolor{keyword}{template} <\textcolor{keyword}{typename}... Args> + \textcolor{keyword}{using} \mbox{\hyperlink{namespaceutl_1_1meta_a3f684549221fac60bc8c7979cb4b98f4}{apply}} = \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}}; + \}; + \} + + \textcolor{keyword}{template} <\textcolor{keyword}{typename}... Fns> + \textcolor{keyword}{using} \mbox{\hyperlink{namespaceutl_1_1meta_a4f0c06cabe66bc73b703eb8509c7bb07}{compose}} = detail::compose\_; + + \textcolor{keyword}{template} <\textcolor{keyword}{template} <\textcolor{keyword}{typename}...> \textcolor{keyword}{class}... Fns> + \textcolor{keyword}{using} \mbox{\hyperlink{namespaceutl_1_1meta_a729294327829b3068632da1235dc3090}{compose\_f}} = detail::compose\_f\_; + + \textcolor{keyword}{template}<\textcolor{keyword}{typename} Fn, \textcolor{keyword}{typename}... Ts> + \textcolor{keyword}{struct }bind\_front \{ + \textcolor{keyword}{template}<\textcolor{keyword}{typename}... Us> + \textcolor{keyword}{using} \mbox{\hyperlink{structutl_1_1meta_1_1bind__front_a4247cb2b0a19e3168161dead529c532c}{apply}} = \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}}; + \}; + + \textcolor{keyword}{template}<\textcolor{keyword}{typename} Fn, \textcolor{keyword}{typename}... Ts> + \textcolor{keyword}{struct }bind\_back \{ + \textcolor{keyword}{template}<\textcolor{keyword}{typename}... Us> + \textcolor{keyword}{using} \mbox{\hyperlink{structutl_1_1meta_1_1bind__back_a2f8a5ad9fd3b9e5ed79ace2c18d1ec9a}{apply}} = \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}}; + \}; + + + \textcolor{comment}{/*} +\textcolor{comment}{ * ========== meta:: predicates ============} +\textcolor{comment}{ */} + \textcolor{keyword}{template} <\textcolor{keyword}{typename} T1> + \textcolor{keyword}{struct }same\_as \{ + \textcolor{keyword}{template} <\textcolor{keyword}{typename} T2> + \textcolor{keyword}{struct }\mbox{\hyperlink{namespaceutl_1_1meta_a3f684549221fac60bc8c7979cb4b98f4}{apply}} : same\_ \{ \}; + \}; + + \textcolor{keyword}{template} <\textcolor{keyword}{typename} T1> + \textcolor{keyword}{struct }not\_same\_as \{ + \textcolor{keyword}{template} <\textcolor{keyword}{typename} T2> + \textcolor{keyword}{struct }\mbox{\hyperlink{namespaceutl_1_1meta_a3f684549221fac60bc8c7979cb4b98f4}{apply}} : \mbox{\hyperlink{group__integral_ga4dfaf054d891eb35d741662b077bbbd2}{not\_same\_}} \{ \}; + \}; + +\}\} + + +\textcolor{preprocessor}{#endif }\textcolor{comment}{/* \_\_utl\_meta\_invoke\_h\_\_ */}\textcolor{preprocessor}{} +\end{DoxyCodeInclude} + \ No newline at end of file diff --git a/doc/latex/_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example.tex b/doc/latex/_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example.tex new file mode 100644 index 0000000..97f6ff1 --- /dev/null +++ b/doc/latex/_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example.tex @@ -0,0 +1,588 @@ +\hypertarget{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{}\section{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h} +A class template that just holds a parameter pack.\+The idea came from M\+PL\textquotesingle{}s sequence concept \mbox{[}\mbox{\hyperlink{invoke.h_link1}{link1}} 1\mbox{]} and from N4115 \mbox{[}\mbox{\hyperlink{invoke.h_link2}{link2}} 2\mbox{]}. In addition to N4115\textquotesingle{}s name \char`\"{}packer\char`\"{} we just prefer a name which is object, not a subject. This way the name gives the feeling of a container and smells like Python. + +In addition to tuple we lack members, so typelist could serve as an empty base class, and an object of the ultimate type could always be instantiated (even if the parameter typelist contains void or some type that lacks a default constructor). + + +\begin{DoxyCode} +\textcolor{keyword}{using} l1 = typelist; +l1 a \{\}; +\end{DoxyCode} + + +boost\+::hana \mbox{[}\mbox{\hyperlink{typelist.h_link3}{link3}} 3\mbox{]} suggests a more powerful scheme were type invariant structures can be used for metaprograming also. This lib does not need (yet) this kind of power (we afraid the responsibility that comes along). So a simple python-\/like list with some extra vector-\/like element access functionalities and no iterators is good enough(for now). + +\label{invoke.h_link1}% +\Hypertarget{invoke.h_link1}% +\mbox{[}1\mbox{]}\+: \href{https://www.boost.org/doc/}{\tt https\+://www.\+boost.\+org/doc/} \label{invoke.h_link2}% +\Hypertarget{invoke.h_link2}% +\mbox{[}2\mbox{]}\+: \href{http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4115.html}{\tt http\+://www.\+open-\/std.\+org/jtc1/sc22/wg21/docs/papers/2014/n4115.\+html} \label{typelist.h_link3}% +\Hypertarget{typelist.h_link3}% +\mbox{[}3\mbox{]}\+: \href{https://github.com/boostorg/hana}{\tt https\+://github.\+com/boostorg/hana} + + +\begin{DoxyCodeInclude} + +\textcolor{preprocessor}{#ifndef \_\_utl\_meta\_typelist\_h\_\_} +\textcolor{preprocessor}{#define \_\_utl\_meta\_typelist\_h\_\_} + +\textcolor{preprocessor}{#include <\mbox{\hyperlink{impl_8h}{utl/core/impl.h}}>} +\textcolor{preprocessor}{#include <\mbox{\hyperlink{integral_8h}{utl/meta/integral.h}}>} +\textcolor{preprocessor}{#include <\mbox{\hyperlink{detection_8h}{utl/meta/detection.h}}>} +\textcolor{preprocessor}{#include <\mbox{\hyperlink{meta_2invoke_8h}{utl/meta/invoke.h}}>} +\textcolor{preprocessor}{#include <\mbox{\hyperlink{sfinae_8h}{utl/meta/sfinae.h}}>} + +\textcolor{keyword}{namespace }\mbox{\hyperlink{namespaceutl}{utl}} \{ +\textcolor{keyword}{namespace }meta \{ + + \textcolor{keyword}{template} <\textcolor{keyword}{typename}... Ts> + \textcolor{keyword}{struct }typelist \{ + \textcolor{keyword}{using} \mbox{\hyperlink{structutl_1_1meta_1_1typelist_a7332ca3d7a7ec5b730e24a4dab743fa6}{type}} = typelist; + + \textcolor{keyword}{static} constexpr \textcolor{keywordtype}{size\_t} \mbox{\hyperlink{structutl_1_1meta_1_1typelist_af898a273ef1135286de6cef169db9c2d}{size}}() noexcept \{ + \textcolor{keywordflow}{return} \textcolor{keyword}{sizeof}...(Ts); + \} + \textcolor{keyword}{static} constexpr \textcolor{keywordtype}{bool} \mbox{\hyperlink{structutl_1_1meta_1_1typelist_ac502a5ad1b830e75693c2e3c7a7b1cb8}{empty}}() noexcept \{ + \textcolor{keywordflow}{return} (\textcolor{keyword}{sizeof}...(Ts) == 0); + \} + \textcolor{comment}{// ======= times utility =======} + \textcolor{keyword}{private}: + \textcolor{keyword}{template} <\textcolor{keyword}{typename}... > \textcolor{keyword}{struct }cat\_ \{ \}; + \textcolor{keyword}{template} <\textcolor{keyword}{typename}... L1, \textcolor{keyword}{typename}... L2> + \textcolor{keyword}{struct }cat\_, typelist> \{ + \textcolor{keyword}{using} \mbox{\hyperlink{structutl_1_1meta_1_1typelist_a7332ca3d7a7ec5b730e24a4dab743fa6}{type}} = typelist; + \}; + + \textcolor{keyword}{template} <\textcolor{keywordtype}{size\_t} N, \textcolor{keyword}{typename} ...T> + \textcolor{keyword}{struct }times\_ \{ + \textcolor{comment}{//static\_assert( N >= 0, "Cannot make typelist of negative length" );} + \textcolor{keyword}{using} \mbox{\hyperlink{structutl_1_1meta_1_1typelist_a7332ca3d7a7ec5b730e24a4dab743fa6}{type}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}< + cat\_< + \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}>, + \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}> + > + >; + \}; + \textcolor{keyword}{template} <\textcolor{keyword}{typename} ...T> + \textcolor{keyword}{struct }times\_<1, T...> \{ + \textcolor{keyword}{using} \mbox{\hyperlink{structutl_1_1meta_1_1typelist_a7332ca3d7a7ec5b730e24a4dab743fa6}{type}} = typelist; + \}; + \textcolor{keyword}{template} <\textcolor{keyword}{typename} ...T> + \textcolor{keyword}{struct }times\_<0, T...> \{ + \textcolor{keyword}{using} \mbox{\hyperlink{structutl_1_1meta_1_1typelist_a7332ca3d7a7ec5b730e24a4dab743fa6}{type}} = typelist<>; + \}; + \textcolor{keyword}{public}: + \textcolor{keyword}{template}<\textcolor{keywordtype}{size\_t} N> + \textcolor{keyword}{using} \mbox{\hyperlink{structutl_1_1meta_1_1typelist_ac444325211852c503605ec6c820f3eae}{times}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}< + times\_ + >; + \}; + + \textcolor{keyword}{template} <\textcolor{keyword}{typename} List> + \textcolor{keyword}{using} \mbox{\hyperlink{namespaceutl_1_1meta_a0edfc2c15e42531e53c0822264d220ec}{size}} = size\_; + + \textcolor{keyword}{template} <\textcolor{keyword}{typename} List> + \textcolor{keyword}{using} \mbox{\hyperlink{namespaceutl_1_1meta_a58c1744750d0df133034f60a95f87e19}{empty}} = bool\_; + + \textcolor{keyword}{template} <\textcolor{keyword}{typename} T1, \textcolor{keyword}{typename} T2> + \textcolor{keyword}{using} \mbox{\hyperlink{namespaceutl_1_1meta_aa6513d9d2a5db3ba3517efff33adc761}{pair}} = typelist; + + + + \textcolor{keyword}{template} <\textcolor{keywordtype}{size\_t} N, \textcolor{keyword}{typename} ...Ts> + \textcolor{keyword}{using} \mbox{\hyperlink{namespaceutl_1_1meta_af6ff0017ea5e914543527b7135930f47}{repeat\_c}} = \textcolor{keyword}{typename} typelist::template times; + + \textcolor{keyword}{template} <\textcolor{keyword}{typename} N, \textcolor{keyword}{typename} ...Ts> + \textcolor{keyword}{using} \mbox{\hyperlink{namespaceutl_1_1meta_aa013c45afb59b5c132a72be54ba145fb}{repeat}} = \mbox{\hyperlink{namespaceutl_1_1meta_af6ff0017ea5e914543527b7135930f47}{repeat\_c}}; + + \textcolor{keyword}{namespace }apply\_impl \{ + \textcolor{keyword}{template} <\textcolor{keyword}{typename} Fn, \textcolor{keyword}{typename} Seq> + \textcolor{keyword}{struct }apply\_ \{ \}; + + \textcolor{keyword}{template}<\textcolor{keyword}{typename} Fn, \textcolor{keyword}{typename} ...List> + \textcolor{keyword}{struct }apply\_> \{ + \textcolor{keyword}{using} type = \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}}; + \}; + \textcolor{keyword}{template} <\textcolor{keyword}{typename} Fn, \textcolor{keyword}{typename} T, T... Is> + \textcolor{keyword}{struct }apply\_> \{ + \textcolor{keyword}{using} type = invoke...>; + \}; + \} + + \textcolor{keyword}{template} <\textcolor{keyword}{typename} Fn, \textcolor{keyword}{typename} Seq> + \textcolor{keyword}{using} \mbox{\hyperlink{namespaceutl_1_1meta_a3f684549221fac60bc8c7979cb4b98f4}{apply}} = apply\_impl::apply\_; + + \textcolor{keyword}{template} <\textcolor{keyword}{typename} Fn, \textcolor{keyword}{typename} Seq> + \textcolor{keyword}{using} \mbox{\hyperlink{namespaceutl_1_1meta_ac2952cd4ed04938edc6de21ffe200e9b}{apply\_t}} = eval >; + + + \textcolor{comment}{/*} +\textcolor{comment}{ * ========= element access ========} +\textcolor{comment}{ */} + \textcolor{keyword}{namespace }at\_impl \{ + + \textcolor{keyword}{template} <\textcolor{keyword}{typename} T> \textcolor{keyword}{struct }\_add\_pointer \{ \textcolor{keyword}{using} \mbox{\hyperlink{structutl_1_1meta_1_1at__impl_1_1__add__pointer_a372a7a88f139a95fc12a4da82483d269}{type}} = T*; \}; + \textcolor{keyword}{template} <\textcolor{keyword}{typename} T> \textcolor{keyword}{using} \mbox{\hyperlink{namespaceutl_1_1meta_1_1at__impl_a1759f370bc952ff21077efca9fe0e0b4}{add\_pointer}} = eval < \_add\_pointer >; + + \textcolor{keyword}{template} <\textcolor{keyword}{typename} ...> + \textcolor{keyword}{struct }at\_head\_ \{ \}; + + \textcolor{keyword}{template} <\textcolor{keyword}{typename}... voids> + \textcolor{keyword}{struct }at\_head\_ > \{ + \textcolor{comment}{// successful selection N voids, one T* and the rest} + \textcolor{keyword}{template} <\textcolor{keyword}{typename} T> \textcolor{keyword}{static} constexpr T select(voids..., T*, ...); + \textcolor{comment}{// selection on error} + \textcolor{keyword}{static} constexpr nil\_ select (...); + \}; + + \textcolor{keyword}{template}<\textcolor{keyword}{typename} List, index\_t N> + \textcolor{keyword}{struct }at\_ \{ \}; + + \textcolor{keyword}{template}<\textcolor{keyword}{typename}... List, \mbox{\hyperlink{namespaceutl_a676c0acd539dd04048dcc7b4d698577e}{index\_t}} N> + \textcolor{keyword}{struct }at\_, N> \{ + \textcolor{keyword}{using} head\_ = at\_head\_::times>; \textcolor{comment}{//< make at\_head\_<> with N void*} + \textcolor{keyword}{using} type = decltype( + head\_::select(\textcolor{keyword}{static\_cast<}add\_pointer\textcolor{keyword}{>}(\textcolor{keyword}{nullptr})...) \textcolor{comment}{//< pass all as List*...} + ); + \}; + \} + + \textcolor{keyword}{template} <\textcolor{keyword}{typename} List, index\_t N> + \textcolor{keyword}{using} \mbox{\hyperlink{namespaceutl_1_1meta_a6683b804a20d54817d61ce4663527084}{at\_c}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}< + at\_impl::at\_ + >; + + \textcolor{keyword}{template} <\textcolor{keyword}{typename} List, \textcolor{keyword}{typename} N> + \textcolor{keyword}{using} \mbox{\hyperlink{namespaceutl_1_1meta_a67329ec425c857dcaf4cde9044674c90}{at}} = at\_c; + + + \textcolor{keyword}{namespace }front\_impl \{ + \textcolor{keyword}{template} <\textcolor{keyword}{typename} L> + \textcolor{keyword}{struct }front\_ \{ \}; + + \textcolor{keyword}{template} <\textcolor{keyword}{typename} Head, \textcolor{keyword}{typename}... Tail> + \textcolor{keyword}{struct }front\_> \{ + \textcolor{keyword}{using} type = Head; + \}; + \} + + \textcolor{keyword}{template} <\textcolor{keyword}{typename} List> + \textcolor{keyword}{using} \mbox{\hyperlink{namespaceutl_1_1meta_ace309fb2eff5c4a5a806b9393abea486}{front}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}< + front\_impl::front\_ + >; + + \textcolor{keyword}{namespace }back\_impl \{ + \textcolor{keyword}{template} <\textcolor{keyword}{typename} List> + \textcolor{keyword}{struct }back\_ \{ \}; + + \textcolor{keyword}{template} <\textcolor{keyword}{typename} Head, \textcolor{keyword}{typename}... Tail> + \textcolor{keyword}{struct }back\_> \{ + \textcolor{keyword}{using} type = \mbox{\hyperlink{namespaceutl_1_1meta_a6683b804a20d54817d61ce4663527084}{at\_c}} < + typelist, \textcolor{keyword}{sizeof}...(Tail) + >; + \}; + \} + + \textcolor{keyword}{template} <\textcolor{keyword}{typename} List> + \textcolor{keyword}{using} \mbox{\hyperlink{namespaceutl_1_1meta_ad9ee55707fc633d53577b81a59136b7d}{back}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}< + back\_impl::back\_ + >; + \textcolor{comment}{/*} +\textcolor{comment}{ * ========= typelist operations =========} +\textcolor{comment}{ */} + + \textcolor{keyword}{namespace }cat\_impl \{ + \textcolor{keyword}{template} <\textcolor{keyword}{typename}... Lists> + \textcolor{keyword}{struct }cat\_ \{ \}; + + \textcolor{keyword}{template} <> + \textcolor{keyword}{struct }cat\_<> \{ + \textcolor{keyword}{using} type = typelist<>; + \}; + + \textcolor{keyword}{template} <\textcolor{keyword}{typename}... L1> + \textcolor{keyword}{struct }cat\_> \{ + \textcolor{keyword}{using} type = typelist; + \}; + + \textcolor{keyword}{template} <\textcolor{keyword}{typename}... L1, \textcolor{keyword}{typename}... L2> + \textcolor{keyword}{struct }cat\_, typelist> \{ + \textcolor{keyword}{using} type = typelist; + \}; + + \textcolor{keyword}{template} <\textcolor{keyword}{typename}... L1, \textcolor{keyword}{typename}... L2, \textcolor{keyword}{typename}... Ln> + \textcolor{keyword}{struct }cat\_, typelist, Ln...> + : cat\_ , Ln...> \{ \}; + + \} + + \textcolor{keyword}{template} <\textcolor{keyword}{typename}... Lists> + \textcolor{keyword}{using} \mbox{\hyperlink{namespaceutl_1_1meta_a70d0910ace47f4e12e8fa0788679044a}{cat}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}< + cat\_impl::cat\_ + >; + + + \textcolor{keyword}{namespace }fold\_impl \{ + \textcolor{comment}{// fold<, V, F> == F, T2>, T3>} + \textcolor{keyword}{template}<\textcolor{keyword}{typename}, \textcolor{keyword}{typename}, \textcolor{keyword}{typename}> + \textcolor{keyword}{struct }fold\_ \{ \}; \textcolor{comment}{// ill formed} + + \textcolor{comment}{// recursive call} + \textcolor{keyword}{template}<\textcolor{keyword}{typename} Head, \textcolor{keyword}{typename}... Tail, + \textcolor{keyword}{typename} V, + \textcolor{keyword}{typename} Fn> + \textcolor{keyword}{struct }fold\_, V, Fn> \{ + \textcolor{comment}{// recursive call of fold\_ by consuming typelist and invoking Fn} + \textcolor{keyword}{using} type = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}< + fold\_< + typelist, + invoke, + Fn + > + >; + \}; + \textcolor{comment}{// termination call} + \textcolor{keyword}{template}<\textcolor{keyword}{typename} V0, \textcolor{keyword}{typename} Fn> + \textcolor{keyword}{struct }fold\_, V0, Fn> \{ + \textcolor{keyword}{using} type = V0; + \}; + \} + + \textcolor{keyword}{template} <\textcolor{keyword}{typename} List, \textcolor{keyword}{typename} V, \textcolor{keyword}{typename} Fn> + \textcolor{keyword}{using} \mbox{\hyperlink{namespaceutl_1_1meta_a6108f39d28c924146eff4143a61af226}{fold}} = eval>; + + \textcolor{keyword}{template} <\textcolor{keyword}{typename} List, \textcolor{keyword}{typename} V, \textcolor{keyword}{typename} Fn> + \textcolor{keyword}{using} \mbox{\hyperlink{namespaceutl_1_1meta_aeb5cb48e804cd160b39f8c3ed2967c37}{accumulate}} = fold; + + \textcolor{keyword}{namespace }rev\_fold\_impl \{ + + \textcolor{comment}{// rev\_fold<, V, F> == F>>} + \textcolor{keyword}{template}<\textcolor{keyword}{typename}, \textcolor{keyword}{typename}, \textcolor{keyword}{typename}> + \textcolor{keyword}{struct }rev\_fold\_ \{ \}; \textcolor{comment}{// ill formed} + + \textcolor{comment}{// recursive call} + \textcolor{keyword}{template}<\textcolor{keyword}{typename} Head, \textcolor{keyword}{typename}... Tail, + \textcolor{keyword}{typename} V, + \textcolor{keyword}{typename} Fn> + \textcolor{keyword}{struct }rev\_fold\_, V, Fn> \{ + \textcolor{comment}{// recursive call inside invoke. This way the 2nd argument of Fn} + \textcolor{comment}{// becoming the recursive "thing", inside Fn<>} + \textcolor{keyword}{using} type = \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}} < + Fn, Head, \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}< + rev\_fold\_ < + typelist, + V, + Fn + >> + >; + \}; + \textcolor{comment}{// pre-termination call} + \textcolor{keyword}{template}<\textcolor{keyword}{typename} Tail, \textcolor{keyword}{typename} V, \textcolor{keyword}{typename} Fn> + \textcolor{keyword}{struct }rev\_fold\_ , V, Fn> \{ + \textcolor{keyword}{using} type = invoke; + \}; + \textcolor{comment}{// termination call} + \textcolor{keyword}{template}<\textcolor{keyword}{typename} V, \textcolor{keyword}{typename} Fn> + \textcolor{keyword}{struct }rev\_fold\_ , V, Fn> \{ + \textcolor{keyword}{using} type = V; + \}; + \} + + \textcolor{keyword}{template} <\textcolor{keyword}{typename} List, \textcolor{keyword}{typename} V, \textcolor{keyword}{typename} Fn> + \textcolor{keyword}{using} \mbox{\hyperlink{namespaceutl_1_1meta_ab1a91edef4cf9fd56b73c9a03eaeb3d4}{rev\_fold}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}< + rev\_fold\_impl::rev\_fold\_ + >; + + \textcolor{keyword}{template} <\textcolor{keyword}{typename} List, \textcolor{keyword}{typename}... Ts> + \textcolor{keyword}{using} \mbox{\hyperlink{namespaceutl_1_1meta_ab0f84ba0807b6fd36fa9e4e5cfc4cd32}{push\_front}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}< + \mbox{\hyperlink{namespaceutl_1_1meta_a3f684549221fac60bc8c7979cb4b98f4}{apply}} < + bind\_front, Ts...>, List + > + >; + + \textcolor{keyword}{template} <\textcolor{keyword}{typename} List, \textcolor{keyword}{typename}... Ts> + \textcolor{keyword}{using} \mbox{\hyperlink{namespaceutl_1_1meta_adf545ba110edc6a34ddcaf2280a0c7f4}{push\_back}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}< + \mbox{\hyperlink{namespaceutl_1_1meta_a3f684549221fac60bc8c7979cb4b98f4}{apply}} < + bind\_back, Ts...>, List + > + >; + + \textcolor{keyword}{namespace }reverse\_impl \{ + \textcolor{keyword}{template} <\textcolor{keyword}{typename} List, \textcolor{keyword}{typename} V = typelist<>> + \textcolor{keyword}{struct }reverse\_ \{ + \textcolor{keyword}{using} \mbox{\hyperlink{structutl_1_1meta_1_1reverse__impl_1_1reverse___ad1618828ac681258d9909839df60dd39}{type}} = fold>; + \}; + \} + + \textcolor{keyword}{template} <\textcolor{keyword}{typename} List> + \textcolor{keyword}{using} \mbox{\hyperlink{namespaceutl_1_1meta_a2ae6bfa22f1912b0ba09d24e0ae2ccd9}{reverse}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}< + reverse\_impl::reverse\_ + >; + + \textcolor{keyword}{namespace }pop\_front\_impl \{ + \textcolor{keyword}{template} <\textcolor{keyword}{typename} List> + \textcolor{keyword}{struct }pop\_front\_ \{ \}; + + \textcolor{keyword}{template} <\textcolor{keyword}{typename} Head, \textcolor{keyword}{typename}... Tail> + \textcolor{keyword}{struct }pop\_front\_> \{ + \textcolor{keyword}{using} type = typelist; + \}; + \} + + \textcolor{keyword}{template} <\textcolor{keyword}{typename} List> + \textcolor{keyword}{using} \mbox{\hyperlink{namespaceutl_1_1meta_aa4a307a81c0640c6c0dd08f8a53f3c32}{pop\_front}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}< + pop\_front\_impl::pop\_front\_ + >; + + \textcolor{keyword}{namespace }pop\_back\_impl \{ + \textcolor{keyword}{template} <\textcolor{keyword}{typename} List> + \textcolor{keyword}{struct }pop\_back\_ \{ + \textcolor{keyword}{using} \mbox{\hyperlink{structutl_1_1meta_1_1pop__back__impl_1_1pop__back___a8b82ff5dcd6fcda89b36f8e587e64d24}{type}} = \mbox{\hyperlink{namespaceutl_1_1meta_a2ae6bfa22f1912b0ba09d24e0ae2ccd9}{reverse}}< + pop\_front> + >; + \}; + \} + + \textcolor{keyword}{template} <\textcolor{keyword}{typename} List> + \textcolor{keyword}{using} \mbox{\hyperlink{namespaceutl_1_1meta_a86a37f5803c474823963e1f3c6f7a6d6}{pop\_back}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}} < + pop\_back\_impl::pop\_back\_ + >; + + \textcolor{keyword}{namespace }transform\_impl \{ + \textcolor{keyword}{template} <\textcolor{keyword}{typename}, \textcolor{keyword}{typename} = \textcolor{keywordtype}{void}> + \textcolor{keyword}{struct }transform\_ \{ \}; + + \textcolor{keyword}{template} <\textcolor{keyword}{typename}... Ts, \textcolor{keyword}{typename} Fn> + \textcolor{keyword}{struct }transform\_, Fn>, + \mbox{\hyperlink{group__detection_gae7373c997420d16cf37e542eb3cfa3ad}{void\_t}}<\mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}}...> > \textcolor{comment}{/* SFINAE check */} \{ + \textcolor{keyword}{using} type = typelist< + invoke\_t... + >; + \}; + + \textcolor{keyword}{template} <\textcolor{keyword}{typename}... Ts0, \textcolor{keyword}{typename}... Ts1, \textcolor{keyword}{typename} Fn> + \textcolor{keyword}{struct }transform\_, typelist, Fn>, + \mbox{\hyperlink{group__detection_gae7373c997420d16cf37e542eb3cfa3ad}{void\_t}}<\mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}}...>> \textcolor{comment}{/* SFINAE check */} \{ + \textcolor{keyword}{using} type = typelist< + invoke\_t... + >; + \}; + \} + + \textcolor{keyword}{template} <\textcolor{keyword}{typename}... Args> + \textcolor{keyword}{using} \mbox{\hyperlink{namespaceutl_1_1meta_ac8bbf187eea3cb5da38d1bdc97b52334}{transform}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}< + transform\_impl::transform\_> + >; + + \textcolor{keyword}{namespace }transform\_lazy\_impl \{ + \textcolor{keyword}{template} <\textcolor{keyword}{typename}, \textcolor{keyword}{typename} = \textcolor{keywordtype}{void}> + \textcolor{keyword}{struct }transform\_lazy\_ \{ \}; + + \textcolor{comment}{// Match for Unary Fn with one typelist} + \textcolor{keyword}{template} <\textcolor{keyword}{typename}... Ts, \textcolor{keyword}{typename} Fn> + \textcolor{keyword}{struct }transform\_lazy\_, Fn>, + \mbox{\hyperlink{group__detection_gae7373c997420d16cf37e542eb3cfa3ad}{void\_t}}<\mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}}...> > \textcolor{comment}{/* SFINAE check */} \{ + \textcolor{keyword}{using} type = typelist< + invoke... + >; + \}; + + \textcolor{comment}{// Match for Binary Fn with two typelists} + \textcolor{keyword}{template} <\textcolor{keyword}{typename}... Ts0, \textcolor{keyword}{typename}... Ts1, \textcolor{keyword}{typename} Fn> + \textcolor{keyword}{struct }transform\_lazy\_, typelist, Fn>, + \mbox{\hyperlink{group__detection_gae7373c997420d16cf37e542eb3cfa3ad}{void\_t}}<\mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}}...>> \textcolor{comment}{/* SFINAE check */} \{ + \textcolor{keyword}{using} type = typelist< + invoke... + >; + \}; + \} + + \textcolor{keyword}{template} <\textcolor{keyword}{typename}... Args> + \textcolor{keyword}{using} \mbox{\hyperlink{namespaceutl_1_1meta_a55c0405bfb94c1d285d3131390c31451}{transform\_lazy}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}< + transform\_lazy\_impl::transform\_lazy\_> + >; + + + \textcolor{keyword}{namespace }find\_if\_impl \{ + \textcolor{keyword}{template} <\textcolor{keyword}{typename}, \textcolor{keyword}{typename}, index\_t> + \textcolor{keyword}{struct }find\_if\_ \{ \}; + + \textcolor{keyword}{template}<\textcolor{keyword}{typename} Head, \textcolor{keyword}{typename}... Tail, \textcolor{keyword}{typename} Fn, \mbox{\hyperlink{namespaceutl_a676c0acd539dd04048dcc7b4d698577e}{index\_t}} N> + \textcolor{keyword}{struct }find\_if\_, Fn, N> \{ + \textcolor{comment}{// Recursive call to find\_if\_ until Fn returns true\_} + \textcolor{keyword}{using} type = \mbox{\hyperlink{group__type_ga39cc4e727a8faa5ea176f543e62c05c0}{if\_}} < + invoke\_t, + index\_, \textcolor{comment}{// done, return current index} + \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}, Fn, N+1> + > + >; + \}; + + \textcolor{comment}{// When empty or when we are one place after the last item return Npos} + \textcolor{keyword}{template}<\textcolor{keyword}{typename} Fn, index\_t N> + \textcolor{keyword}{struct }find\_if\_, Fn, N> \{ + \textcolor{keyword}{using} type = \mbox{\hyperlink{namespaceutl_1_1meta_af0c85cc6480a9e7a8e4fb7d8f936f01b}{Npos}}; + \}; + \} + + \textcolor{keyword}{template}<\textcolor{keyword}{typename} List, \textcolor{keyword}{typename} Pred> + \textcolor{keyword}{using} \mbox{\hyperlink{namespaceutl_1_1meta_aacf124929c0cbb3b29d34679bff50a96}{find\_if}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}< + find\_if\_impl::find\_if\_ + >; + + \textcolor{keyword}{template} <\textcolor{keyword}{typename} List, \textcolor{keyword}{typename} T> + \textcolor{keyword}{using} \mbox{\hyperlink{namespaceutl_1_1meta_af4c9b6350bba98cc0dd73e87cb4ce413}{find}} = find\_if>; + + \textcolor{keyword}{namespace }seek\_if\_impl \{ + \textcolor{keyword}{template} <\textcolor{keyword}{typename}, \textcolor{keyword}{typename}, index\_t> + \textcolor{keyword}{struct }seek\_if\_ \{ \}; + + \textcolor{keyword}{template}<\textcolor{keyword}{typename} Head, \textcolor{keyword}{typename}... Tail, \textcolor{keyword}{typename} Fn, \mbox{\hyperlink{namespaceutl_a676c0acd539dd04048dcc7b4d698577e}{index\_t}} N> + \textcolor{keyword}{struct }seek\_if\_, Fn, N> \{ + \textcolor{comment}{// recursive call to seek\_if\_ until Fn returns true\_} + \textcolor{keyword}{using} type = \mbox{\hyperlink{group__type_ga39cc4e727a8faa5ea176f543e62c05c0}{if\_}} < + invoke\_t, + typelist, \textcolor{comment}{// done, return the typelist starting from here} + \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}, Fn, N+1> + > + >; + \}; + + \textcolor{comment}{// When empty or when we are one place after the last item return empty typelist} + \textcolor{keyword}{template}<\textcolor{keyword}{typename} Fn, index\_t N> + \textcolor{keyword}{struct }seek\_if\_, Fn, N> \{ + \textcolor{keyword}{using} type = typelist<>; + \}; + \} + + \textcolor{keyword}{template} <\textcolor{keyword}{typename} List, \textcolor{keyword}{typename} Pred> + \textcolor{keyword}{using} \mbox{\hyperlink{namespaceutl_1_1meta_ab8eafd75f3077a36c4e3363b742da64a}{seek\_if}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}< + seek\_if\_impl::seek\_if\_ + >; + \textcolor{keyword}{template} <\textcolor{keyword}{typename} List, \textcolor{keyword}{typename} T> + \textcolor{keyword}{using} \mbox{\hyperlink{namespaceutl_1_1meta_aa550d9dc96d34623af4ce71f8a1eaff5}{seek}} = seek\_if >; + + \textcolor{keyword}{namespace }count\_if\_impl \{ + \textcolor{keyword}{template} <\textcolor{keyword}{typename}, \textcolor{keyword}{typename}, \textcolor{keywordtype}{size\_t}> + \textcolor{keyword}{struct }count\_if\_ \{ \}; + + \textcolor{keyword}{template}<\textcolor{keyword}{typename} Head, \textcolor{keyword}{typename}... Tail, \textcolor{keyword}{typename} Fn, \textcolor{keywordtype}{size\_t} N> + \textcolor{keyword}{struct }count\_if\_, Fn, N> \{ + \textcolor{comment}{// Recursive call to count\_if\_ up to the end of List, counting all invokes of Fn} + \textcolor{comment}{// returning true\_} + \textcolor{keyword}{using} type = \mbox{\hyperlink{group__type_ga39cc4e727a8faa5ea176f543e62c05c0}{if\_}} < + invoke\_t, + \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}< + count\_if\_, Fn, N+1> \textcolor{comment}{// increase and re-call} + >, + \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}< + count\_if\_, Fn, N> \textcolor{comment}{// re-call without increasing} + > + >; + \}; + + \textcolor{comment}{// At the end of the List return the counter} + \textcolor{keyword}{template}<\textcolor{keyword}{typename} Fn, \textcolor{keywordtype}{size\_t} N> + \textcolor{keyword}{struct }count\_if\_, Fn, N> \{ + \textcolor{keyword}{using} type = size\_; + \}; + \} + + \textcolor{keyword}{template} <\textcolor{keyword}{typename} List, \textcolor{keyword}{typename} Pred> + \textcolor{keyword}{using} \mbox{\hyperlink{namespaceutl_1_1meta_a981e18b40d69cdd76466de7bfe24e619}{count\_if}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}< + count\_if\_impl::count\_if\_ + >; + + \textcolor{keyword}{template} <\textcolor{keyword}{typename} List, \textcolor{keyword}{typename} T> + \textcolor{keyword}{using} \mbox{\hyperlink{namespaceutl_1_1meta_ab5508236016638fa8e6b97cd17dfc9c2}{count}} = count\_if>; + + \textcolor{keyword}{namespace }filter\_impl \{ + \textcolor{keyword}{template} <\textcolor{keyword}{typename}, \textcolor{keyword}{typename}, \textcolor{keyword}{typename}> + \textcolor{keyword}{struct }filter\_ \{ \}; + + \textcolor{keyword}{template}<\textcolor{keyword}{typename} Head, \textcolor{keyword}{typename}... Tail, \textcolor{keyword}{typename} Fn, \textcolor{keyword}{typename} L> + \textcolor{keyword}{struct }filter\_, Fn, L> \{ + \textcolor{comment}{// Recursive call to filter\_ up to the end of the List, creating a new list} + \textcolor{comment}{// of items for which the invoke of Fn returns true\_} + \textcolor{keyword}{using} type = \mbox{\hyperlink{group__type_ga39cc4e727a8faa5ea176f543e62c05c0}{if\_}} < + invoke\_t , + \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}, Fn, cat>>>, \textcolor{comment}{// Add the element and + re-call} + \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}, Fn, L>> \textcolor{comment}{// re-call with the same list} + >; + \}; + + \textcolor{comment}{// At the end return the produced list} + \textcolor{keyword}{template}<\textcolor{keyword}{typename} Fn, \textcolor{keyword}{typename} L> + \textcolor{keyword}{struct }filter\_, Fn, L> \{ + \textcolor{keyword}{using} type = L; + \}; + \} + + \textcolor{keyword}{template} <\textcolor{keyword}{typename} List, \textcolor{keyword}{typename} Pred> + \textcolor{keyword}{using} \mbox{\hyperlink{namespaceutl_1_1meta_ac72acc616316c322e750d20a46553ba4}{filter}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}< + filter\_impl::filter\_> + >; + + \textcolor{keyword}{namespace }replace\_if\_impl \{ + \textcolor{keyword}{template} <\textcolor{keyword}{typename}, \textcolor{keyword}{typename}, \textcolor{keyword}{typename}, \textcolor{keyword}{typename}> + \textcolor{keyword}{struct }replace\_if\_ \{ \}; + + \textcolor{keyword}{template} <\textcolor{keyword}{typename} Head, \textcolor{keyword}{typename}... Tail, \textcolor{keyword}{typename} Fn, \textcolor{keyword}{typename} T, \textcolor{keyword}{typename} Ret> + \textcolor{keyword}{struct }replace\_if\_, Fn, T, Ret> \{ + \textcolor{comment}{// Recursive call to replace\_if\_ up to the end of the List, creating a new list} + \textcolor{comment}{// of items based on invocation of Fn} + \textcolor{keyword}{using} type = \mbox{\hyperlink{group__type_ga39cc4e727a8faa5ea176f543e62c05c0}{if\_}} < + invoke\_t, + \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}, Fn, T, cat>>>, \textcolor{comment}{// re-call with + change to T} + \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}, Fn, T, cat>>> \textcolor{comment}{// re-call with no + change} + >; + \}; + + \textcolor{comment}{// At the end return the produced list} + \textcolor{keyword}{template} <\textcolor{keyword}{typename} Fn, \textcolor{keyword}{typename} T, \textcolor{keyword}{typename} Ret> + \textcolor{keyword}{struct }replace\_if\_ , Fn, T, Ret> \{ + \textcolor{keyword}{using} type = Ret; + \}; + \} + + \textcolor{keyword}{template}<\textcolor{keyword}{typename} List, \textcolor{keyword}{typename} Pred, \textcolor{keyword}{typename} T> + \textcolor{keyword}{using} \mbox{\hyperlink{namespaceutl_1_1meta_a848a47bf281bf3eaf932cc9113477102}{replace\_if}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}< + replace\_if\_impl::replace\_if\_> + >; + + \textcolor{keyword}{template} <\textcolor{keyword}{typename} List, \textcolor{keyword}{typename} T, \textcolor{keyword}{typename} U> + \textcolor{keyword}{using} \mbox{\hyperlink{namespaceutl_1_1meta_ac9d120f858ebfa2b0ef74c6305a9fb6d}{replace}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}} < + replace\_if , U> + >; + + + \textcolor{keyword}{template} <\textcolor{keyword}{typename} List, \textcolor{keyword}{typename} Pred> + \textcolor{keyword}{using} \mbox{\hyperlink{namespaceutl_1_1meta_ace96e2f19376375cc71ee0cd80f4bb75}{all\_of}} = \mbox{\hyperlink{group__type_ga39cc4e727a8faa5ea176f543e62c05c0}{if\_}} < + empty , + \mbox{\hyperlink{namespaceutl_1_1meta_a55511dbaa0adb605ce22dcec11f8d22d}{false\_}}, + \mbox{\hyperlink{namespaceutl_1_1meta_a58c1744750d0df133034f60a95f87e19}{empty}} < + filter , Pred>> + > + >; + + \textcolor{keyword}{template} <\textcolor{keyword}{typename} List, \textcolor{keyword}{typename} Pred> + \textcolor{keyword}{using} \mbox{\hyperlink{namespaceutl_1_1meta_a212c26a29491610187f6e8543f06df5f}{any\_of}} = \mbox{\hyperlink{group__integral_ga16df145331d3c62e624385c5949d90c4}{not\_}}< + empty> + >; + + \textcolor{keyword}{template} <\textcolor{keyword}{typename} List, \textcolor{keyword}{typename} Pred> + \textcolor{keyword}{using} \mbox{\hyperlink{namespaceutl_1_1meta_af324255cfaa0be3f02843961f5becb85}{none\_of}} = \mbox{\hyperlink{namespaceutl_1_1meta_a58c1744750d0df133034f60a95f87e19}{empty}}< + filter + >; + +\}\} + + +\textcolor{preprocessor}{#endif }\textcolor{comment}{/* \_\_utl\_meta\_typelist\_h\_\_ */}\textcolor{preprocessor}{} +\end{DoxyCodeInclude} + \ No newline at end of file diff --git a/doc/latex/annotated.tex b/doc/latex/annotated.tex new file mode 100644 index 0000000..4adf10d --- /dev/null +++ b/doc/latex/annotated.tex @@ -0,0 +1,375 @@ +\section{Class List} +Here are the classes, structs, unions and interfaces with brief descriptions\+:\begin{DoxyCompactList} +\item\contentsline{section}{\mbox{\hyperlink{classutl_1_1__1wire__i}{utl\+::\+\_\+1wire\+\_\+i$<$ impl\+\_\+t $>$}} \\*Template base class for 1-\/wire communication interface using C\+R\+TP }{\pageref{classutl_1_1__1wire__i}}{} +\item\contentsline{section}{\mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4}{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}} \\*A virtual base class implementation }{\pageref{classutl_1_1__1wire__i_3_01virtual__tag_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{classutl_1_1__1wire__id__t}{utl\+::\+\_\+1wire\+\_\+id\+\_\+t}} }{\pageref{classutl_1_1__1wire__id__t}}{} +\item\contentsline{section}{\mbox{\hyperlink{classutl_1_1__1wire__uart__i}{utl\+::\+\_\+1wire\+\_\+uart\+\_\+i$<$ Impl\+\_\+t $>$}} \\*1-\/wire U\+A\+RT interface template class using C\+R\+TP Using the private virtual interface we provide the interface from \+\_\+1wire\+\_\+i$<$$>$ }{\pageref{classutl_1_1__1wire__uart__i}}{} +\item\contentsline{section}{\mbox{\hyperlink{classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4}{utl\+::\+\_\+1wire\+\_\+uart\+\_\+i$<$ virtual\+\_\+tag $>$}} \\*A virtual base class interface implementation. Using the private virtual interface we provide the interface from \mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4}{\+\_\+1wire\+\_\+i$<$virtual\+\_\+tag$>$}} }{\pageref{classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1common__impl_1_1____common__ref__}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T, U, class $>$}} }{\pageref{structutl_1_1common__impl_1_1____common__ref__}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_6_00_01meta_1_1void__tc4e71c227f251cadf0e0fb7b1ba6f1e9}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T \&\&, U \&\&, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+common\+\_\+ref$<$ T \&, U \& $>$, meta\+::when$<$ Convertible\+To$<$ T \&\&, \+\_\+\+\_\+rref\+\_\+res$<$ T, U $>$ $>$ $>$, meta\+::when$<$ Convertible\+To$<$ U \&\&, \+\_\+\+\_\+rref\+\_\+res$<$ T, U $>$ $>$ $>$ $>$ $>$}} }{\pageref{structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_6_00_01meta_1_1void__tc4e71c227f251cadf0e0fb7b1ba6f1e9}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_00_01meta_1_1void__t_3972a8d6e6799b6ee6537c969cdced343}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T \&\&, U \&, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+common\+\_\+ref$<$ const T \&, U \& $>$, meta\+::when$<$ Convertible\+To$<$ T \&\&, \+\_\+\+\_\+common\+\_\+ref$<$ const T \&, U \& $>$ $>$ $>$ $>$ $>$}} }{\pageref{structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_00_01meta_1_1void__t_3972a8d6e6799b6ee6537c969cdced343}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_6_00_01meta_1_1void__t_329fba5aeac3b93aa9cfa5aa7e282e196}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T \&, U \&\&, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+common\+\_\+ref$<$ T \&, const U \& $>$, meta\+::when$<$ Convertible\+To$<$ U \&\&, \+\_\+\+\_\+common\+\_\+ref$<$ T \&, const U \& $>$ $>$ $>$ $>$ $>$}} }{\pageref{structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_6_00_01meta_1_1void__t_329fba5aeac3b93aa9cfa5aa7e282e196}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_00_01meta_1_1void__t_3_05e5aa384829bb34312a7b8ee4ecaa00f}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T \&, U \&, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+lref\+\_\+res$<$ T, U $>$, meta\+::when$<$ std\+::is\+\_\+reference$<$ \+\_\+\+\_\+lref\+\_\+res$<$ T, U $>$ $>$\+::value $>$ $>$ $>$}} }{\pageref{structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_00_01meta_1_1void__t_3_05e5aa384829bb34312a7b8ee4ecaa00f}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1common__impl_1_1____common__reference}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+reference$<$ T, U,... $>$}} }{\pageref{structutl_1_1common__impl_1_1____common__reference}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1common__impl_1_1____common__reference2}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+reference2$<$ T, U,... $>$}} }{\pageref{structutl_1_1common__impl_1_1____common__reference2}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1common__impl_1_1____common__reference2_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____785d0aa2f8a62416e19573fcbdd83836}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+reference2$<$ T, U, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+basic\+\_\+common\+\_\+reference\+\_\+t$<$ T, U $>$ $>$ $>$}} }{\pageref{structutl_1_1common__impl_1_1____common__reference2_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____785d0aa2f8a62416e19573fcbdd83836}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1common__impl_1_1____common__reference3}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+reference3$<$ T, U,... $>$}} }{\pageref{structutl_1_1common__impl_1_1____common__reference3}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1common__impl_1_1____common__reference3_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____015b01ed12d2d90ee57fbf756ab847e9}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+reference3$<$ T, U, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+cond\+\_\+res$<$ T, U $>$ $>$ $>$}} }{\pageref{structutl_1_1common__impl_1_1____common__reference3_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____015b01ed12d2d90ee57fbf756ab847e9}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1common__impl_1_1____common__reference_3_01_t_00_01_u_00_01meta_1_1when_3_01std_1_1i23b95b4b3a65ce598dbcc7f52e9dab2c}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+reference$<$ T, U, meta\+::when$<$ std\+::is\+\_\+reference$<$ T $>$\+::value \&\&std\+::is\+\_\+reference$<$ U $>$\+::value $>$ $>$}} }{\pageref{structutl_1_1common__impl_1_1____common__reference_3_01_t_00_01_u_00_01meta_1_1when_3_01std_1_1i23b95b4b3a65ce598dbcc7f52e9dab2c}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1common__impl_1_1____copy__cv__}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+copy\+\_\+cv\+\_\+$<$ From $>$}} }{\pageref{structutl_1_1common__impl_1_1____copy__cv__}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1common__impl_1_1____copy__cv___3_01const_01_from_01_4}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+copy\+\_\+cv\+\_\+$<$ const From $>$}} }{\pageref{structutl_1_1common__impl_1_1____copy__cv___3_01const_01_from_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1common__impl_1_1____copy__cv___3_01const_01volatile_01_from_01_4}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+copy\+\_\+cv\+\_\+$<$ const volatile From $>$}} }{\pageref{structutl_1_1common__impl_1_1____copy__cv___3_01const_01volatile_01_from_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1common__impl_1_1____copy__cv___3_01volatile_01_from_01_4}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+copy\+\_\+cv\+\_\+$<$ volatile From $>$}} }{\pageref{structutl_1_1common__impl_1_1____copy__cv___3_01volatile_01_from_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1common__impl_1_1____xref}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ class $>$}} }{\pageref{structutl_1_1common__impl_1_1____xref}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1common__impl_1_1____xref_3_01const_01_t_01_4}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ const T $>$}} }{\pageref{structutl_1_1common__impl_1_1____xref_3_01const_01_t_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1common__impl_1_1____xref_3_01const_01volatile_01_t_01_4}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ const volatile T $>$}} }{\pageref{structutl_1_1common__impl_1_1____xref_3_01const_01volatile_01_t_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1common__impl_1_1____xref_3_01_t_01_6_01_4}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ T \& $>$}} }{\pageref{structutl_1_1common__impl_1_1____xref_3_01_t_01_6_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1common__impl_1_1____xref_3_01_t_01_6_6_01_4}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ T \&\& $>$}} }{\pageref{structutl_1_1common__impl_1_1____xref_3_01_t_01_6_6_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1common__impl_1_1____xref_3_01volatile_01_t_01_4}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ volatile T $>$}} }{\pageref{structutl_1_1common__impl_1_1____xref_3_01volatile_01_t_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1at__impl_1_1__add__pointer}{utl\+::meta\+::at\+\_\+impl\+::\+\_\+add\+\_\+pointer$<$ T $>$}} }{\pageref{structutl_1_1meta_1_1at__impl_1_1__add__pointer}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1__and__}{utl\+::meta\+::detail\+::\+\_\+and\+\_\+$<$... $>$}} }{\pageref{structutl_1_1meta_1_1detail_1_1__and__}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1__and___3_01___t1_01_4}{utl\+::meta\+::detail\+::\+\_\+and\+\_\+$<$ \+\_\+\+T1 $>$}} }{\pageref{structutl_1_1meta_1_1detail_1_1__and___3_01___t1_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_01_4}{utl\+::meta\+::detail\+::\+\_\+and\+\_\+$<$ \+\_\+\+T1, \+\_\+\+T2 $>$}} }{\pageref{structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4}{utl\+::meta\+::detail\+::\+\_\+and\+\_\+$<$ \+\_\+\+T1, \+\_\+\+T2, \+\_\+\+T3, \+\_\+\+Tn... $>$}} }{\pageref{structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1__and___3_4}{utl\+::meta\+::detail\+::\+\_\+and\+\_\+$<$$>$}} }{\pageref{structutl_1_1meta_1_1detail_1_1__and___3_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1__or__}{utl\+::meta\+::detail\+::\+\_\+or\+\_\+$<$... $>$}} }{\pageref{structutl_1_1meta_1_1detail_1_1__or__}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1__or___3_01___t1_01_4}{utl\+::meta\+::detail\+::\+\_\+or\+\_\+$<$ \+\_\+\+T1 $>$}} }{\pageref{structutl_1_1meta_1_1detail_1_1__or___3_01___t1_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_01_4}{utl\+::meta\+::detail\+::\+\_\+or\+\_\+$<$ \+\_\+\+T1, \+\_\+\+T2 $>$}} }{\pageref{structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4}{utl\+::meta\+::detail\+::\+\_\+or\+\_\+$<$ \+\_\+\+T1, \+\_\+\+T2, \+\_\+\+T3, \+\_\+\+Tn... $>$}} }{\pageref{structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1__or___3_4}{utl\+::meta\+::detail\+::\+\_\+or\+\_\+$<$$>$}} }{\pageref{structutl_1_1meta_1_1detail_1_1__or___3_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtest__concepts_1_1_a}{test\+\_\+concepts\+::A}} }{\pageref{structtest__concepts_1_1_a}}{} +\item\contentsline{section}{\mbox{\hyperlink{struct_tmeta_detection_1_1_a}{Tmeta\+Detection\+::\+A$<$ T $>$}} }{\pageref{struct_tmeta_detection_1_1_a}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtesting_1_1internal_1_1_add_reference}{testing\+::internal\+::\+Add\+Reference$<$ T $>$}} }{\pageref{structtesting_1_1internal_1_1_add_reference}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtesting_1_1internal_1_1_add_reference_3_01_t_01_6_01_4}{testing\+::internal\+::\+Add\+Reference$<$ T \& $>$}} }{\pageref{structtesting_1_1internal_1_1_add_reference_3_01_t_01_6_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1same__as_1_1apply}{utl\+::meta\+::same\+\_\+as$<$ T1 $>$\+::apply$<$ T2 $>$}} }{\pageref{structutl_1_1meta_1_1same__as_1_1apply}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1not__same__as_1_1apply}{utl\+::meta\+::not\+\_\+same\+\_\+as$<$ T1 $>$\+::apply$<$ T2 $>$}} }{\pageref{structutl_1_1meta_1_1not__same__as_1_1apply}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1apply__impl_1_1apply__}{utl\+::meta\+::apply\+\_\+impl\+::apply\+\_\+$<$ Fn, Seq $>$}} }{\pageref{structutl_1_1meta_1_1apply__impl_1_1apply__}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01integer__sequence_3_01_t_00_01_is_8_8_8_01_4_01_4}{utl\+::meta\+::apply\+\_\+impl\+::apply\+\_\+$<$ Fn, integer\+\_\+sequence$<$ T, Is... $>$ $>$}} \\*Sequence == integer\+\_\+sequence$<$$>$ }{\pageref{structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01integer__sequence_3_01_t_00_01_is_8_8_8_01_4_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01typelist_3_01_list_8_8_8_01_4_01_4}{utl\+::meta\+::apply\+\_\+impl\+::apply\+\_\+$<$ Fn, typelist$<$ List... $>$ $>$}} \\*{\ttfamily Sequence} == typelist$<$$>$ }{\pageref{structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01typelist_3_01_list_8_8_8_01_4_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1array}{utl\+::array$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$}} \\*A standard container for storing a fixed size sequence of elements }{\pageref{structutl_1_1array}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1array__traits}{utl\+::array\+\_\+traits$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$}} \\*Array container traits helper }{\pageref{structutl_1_1array__traits}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1array__traits_3_01___tp_00_010_01_4}{utl\+::array\+\_\+traits$<$ \+\_\+\+Tp, 0 $>$}} }{\pageref{structutl_1_1array__traits_3_01___tp_00_010_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_assert_helper}{testing\+::internal\+::\+Assert\+Helper}} }{\pageref{classtesting_1_1internal_1_1_assert_helper}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1at__impl_1_1at__}{utl\+::meta\+::at\+\_\+impl\+::at\+\_\+$<$ List, N $>$}} }{\pageref{structutl_1_1meta_1_1at__impl_1_1at__}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1at__impl_1_1at___3_01typelist_3_01_list_8_8_8_01_4_00_01_n_01_4}{utl\+::meta\+::at\+\_\+impl\+::at\+\_\+$<$ typelist$<$ List... $>$, N $>$}} }{\pageref{structutl_1_1meta_1_1at__impl_1_1at___3_01typelist_3_01_list_8_8_8_01_4_00_01_n_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1at__impl_1_1at__head__}{utl\+::meta\+::at\+\_\+impl\+::at\+\_\+head\+\_\+$<$... $>$}} }{\pageref{structutl_1_1meta_1_1at__impl_1_1at__head__}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1at__impl_1_1at__head___3_01typelist_3_01voids_8_8_8_01_4_01_4}{utl\+::meta\+::at\+\_\+impl\+::at\+\_\+head\+\_\+$<$ typelist$<$ voids... $>$ $>$}} }{\pageref{structutl_1_1meta_1_1at__impl_1_1at__head___3_01typelist_3_01voids_8_8_8_01_4_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtest__concepts_1_1_b}{test\+\_\+concepts\+::B}} }{\pageref{structtest__concepts_1_1_b}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1back__impl_1_1back__}{utl\+::meta\+::back\+\_\+impl\+::back\+\_\+$<$ List $>$}} }{\pageref{structutl_1_1meta_1_1back__impl_1_1back__}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1back__impl_1_1back___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4}{utl\+::meta\+::back\+\_\+impl\+::back\+\_\+$<$ typelist$<$ Head, Tail... $>$ $>$}} }{\pageref{structutl_1_1meta_1_1back__impl_1_1back___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{struct_tmeta_detection_1_1_bar}{Tmeta\+Detection\+::\+Bar}} }{\pageref{struct_tmeta_detection_1_1_bar}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtest__concepts_1_1_base}{test\+\_\+concepts\+::\+Base}} }{\pageref{classtest__concepts_1_1_base}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1common__impl_1_1basic__common__reference}{utl\+::common\+\_\+impl\+::basic\+\_\+common\+\_\+reference$<$ class, class, class, class $>$}} }{\pageref{structutl_1_1common__impl_1_1basic__common__reference}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1bidirectional__iterator__tag}{utl\+::bidirectional\+\_\+iterator\+\_\+tag}} }{\pageref{structutl_1_1bidirectional__iterator__tag}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1bind__back}{utl\+::meta\+::bind\+\_\+back$<$ Fn, Ts $>$}} }{\pageref{structutl_1_1meta_1_1bind__back}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1bind__front}{utl\+::meta\+::bind\+\_\+front$<$ Fn, Ts $>$}} }{\pageref{structutl_1_1meta_1_1bind__front}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtesting_1_1internal_1_1bool__constant}{testing\+::internal\+::bool\+\_\+constant$<$ bool\+\_\+value $>$}} }{\pageref{structtesting_1_1internal_1_1bool__constant}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_captured_stream}{testing\+::internal\+::\+Captured\+Stream}} }{\pageref{classtesting_1_1internal_1_1_captured_stream}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator10}{testing\+::internal\+::\+Cartesian\+Product\+Generator10$<$ T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 $>$}} }{\pageref{classtesting_1_1internal_1_1_cartesian_product_generator10}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator2}{testing\+::internal\+::\+Cartesian\+Product\+Generator2$<$ T1, T2 $>$}} }{\pageref{classtesting_1_1internal_1_1_cartesian_product_generator2}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator3}{testing\+::internal\+::\+Cartesian\+Product\+Generator3$<$ T1, T2, T3 $>$}} }{\pageref{classtesting_1_1internal_1_1_cartesian_product_generator3}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator4}{testing\+::internal\+::\+Cartesian\+Product\+Generator4$<$ T1, T2, T3, T4 $>$}} }{\pageref{classtesting_1_1internal_1_1_cartesian_product_generator4}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator5}{testing\+::internal\+::\+Cartesian\+Product\+Generator5$<$ T1, T2, T3, T4, T5 $>$}} }{\pageref{classtesting_1_1internal_1_1_cartesian_product_generator5}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator6}{testing\+::internal\+::\+Cartesian\+Product\+Generator6$<$ T1, T2, T3, T4, T5, T6 $>$}} }{\pageref{classtesting_1_1internal_1_1_cartesian_product_generator6}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator7}{testing\+::internal\+::\+Cartesian\+Product\+Generator7$<$ T1, T2, T3, T4, T5, T6, T7 $>$}} }{\pageref{classtesting_1_1internal_1_1_cartesian_product_generator7}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator8}{testing\+::internal\+::\+Cartesian\+Product\+Generator8$<$ T1, T2, T3, T4, T5, T6, T7, T8 $>$}} }{\pageref{classtesting_1_1internal_1_1_cartesian_product_generator8}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator9}{testing\+::internal\+::\+Cartesian\+Product\+Generator9$<$ T1, T2, T3, T4, T5, T6, T7, T8, T9 $>$}} }{\pageref{classtesting_1_1internal_1_1_cartesian_product_generator9}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder10}{testing\+::internal\+::\+Cartesian\+Product\+Holder10$<$ Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8, Generator9, Generator10 $>$}} }{\pageref{classtesting_1_1internal_1_1_cartesian_product_holder10}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder2}{testing\+::internal\+::\+Cartesian\+Product\+Holder2$<$ Generator1, Generator2 $>$}} }{\pageref{classtesting_1_1internal_1_1_cartesian_product_holder2}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder3}{testing\+::internal\+::\+Cartesian\+Product\+Holder3$<$ Generator1, Generator2, Generator3 $>$}} }{\pageref{classtesting_1_1internal_1_1_cartesian_product_holder3}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder4}{testing\+::internal\+::\+Cartesian\+Product\+Holder4$<$ Generator1, Generator2, Generator3, Generator4 $>$}} }{\pageref{classtesting_1_1internal_1_1_cartesian_product_holder4}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder5}{testing\+::internal\+::\+Cartesian\+Product\+Holder5$<$ Generator1, Generator2, Generator3, Generator4, Generator5 $>$}} }{\pageref{classtesting_1_1internal_1_1_cartesian_product_holder5}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder6}{testing\+::internal\+::\+Cartesian\+Product\+Holder6$<$ Generator1, Generator2, Generator3, Generator4, Generator5, Generator6 $>$}} }{\pageref{classtesting_1_1internal_1_1_cartesian_product_holder6}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder7}{testing\+::internal\+::\+Cartesian\+Product\+Holder7$<$ Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7 $>$}} }{\pageref{classtesting_1_1internal_1_1_cartesian_product_holder7}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder8}{testing\+::internal\+::\+Cartesian\+Product\+Holder8$<$ Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8 $>$}} }{\pageref{classtesting_1_1internal_1_1_cartesian_product_holder8}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder9}{testing\+::internal\+::\+Cartesian\+Product\+Holder9$<$ Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8, Generator9 $>$}} }{\pageref{classtesting_1_1internal_1_1_cartesian_product_holder9}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1cat__impl_1_1cat__}{utl\+::meta\+::cat\+\_\+impl\+::cat\+\_\+$<$ Lists $>$}} }{\pageref{structutl_1_1meta_1_1cat__impl_1_1cat__}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_01_4}{utl\+::meta\+::cat\+\_\+impl\+::cat\+\_\+$<$ typelist$<$ L1... $>$ $>$}} }{\pageref{structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4}{utl\+::meta\+::cat\+\_\+impl\+::cat\+\_\+$<$ typelist$<$ L1... $>$, typelist$<$ L2... $>$ $>$}} }{\pageref{structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_00_01_ln_8_8_8_01_4}{utl\+::meta\+::cat\+\_\+impl\+::cat\+\_\+$<$ typelist$<$ L1... $>$, typelist$<$ L2... $>$, Ln... $>$}} }{\pageref{structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_00_01_ln_8_8_8_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1cat__impl_1_1cat___3_4}{utl\+::meta\+::cat\+\_\+impl\+::cat\+\_\+$<$$>$}} }{\pageref{structutl_1_1meta_1_1cat__impl_1_1cat___3_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtesting_1_1internal_1_1_code_location}{testing\+::internal\+::\+Code\+Location}} }{\pageref{structtesting_1_1internal_1_1_code_location}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1common__impl_1_1common__reference}{utl\+::common\+\_\+impl\+::common\+\_\+reference$<$... $>$}} }{\pageref{structutl_1_1common__impl_1_1common__reference}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1common__impl_1_1common__reference_3_01_t_01_4}{utl\+::common\+\_\+impl\+::common\+\_\+reference$<$ T $>$}} }{\pageref{structutl_1_1common__impl_1_1common__reference_3_01_t_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_01_4}{utl\+::common\+\_\+impl\+::common\+\_\+reference$<$ T, U $>$}} }{\pageref{structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_00_01_v_00_01_w_8_8_8_01_4}{utl\+::common\+\_\+impl\+::common\+\_\+reference$<$ T, U, V, W... $>$}} }{\pageref{structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_00_01_v_00_01_w_8_8_8_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtesting_1_1internal_1_1_compile_assert_types_equal}{testing\+::internal\+::\+Compile\+Assert\+Types\+Equal$<$ T1, T2 $>$}} }{\pageref{structtesting_1_1internal_1_1_compile_assert_types_equal}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtesting_1_1internal_1_1_compile_assert_types_equal_3_01_t_00_01_t_01_4}{testing\+::internal\+::\+Compile\+Assert\+Types\+Equal$<$ T, T $>$}} }{\pageref{structtesting_1_1internal_1_1_compile_assert_types_equal_3_01_t_00_01_t_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1compose__}{utl\+::meta\+::detail\+::compose\+\_\+$<$ Fns $>$}} }{\pageref{structutl_1_1meta_1_1detail_1_1compose__}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_01_4}{utl\+::meta\+::detail\+::compose\+\_\+$<$ Fn0 $>$}} }{\pageref{structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_00_01_fns_8_8_8_01_4}{utl\+::meta\+::detail\+::compose\+\_\+$<$ Fn0, Fns... $>$}} }{\pageref{structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_00_01_fns_8_8_8_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1compose__f__}{utl\+::meta\+::detail\+::compose\+\_\+f\+\_\+$<$ Fns $>$}} }{\pageref{structutl_1_1meta_1_1detail_1_1compose__f__}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_01_4}{utl\+::meta\+::detail\+::compose\+\_\+f\+\_\+$<$ Fn0 $>$}} }{\pageref{structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_00_01_fns_8_8_8_01_4}{utl\+::meta\+::detail\+::compose\+\_\+f\+\_\+$<$ Fn0, Fns... $>$}} }{\pageref{structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_00_01_fns_8_8_8_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtesting_1_1internal_1_1_const_char_ptr}{testing\+::internal\+::\+Const\+Char\+Ptr}} }{\pageref{structtesting_1_1internal_1_1_const_char_ptr}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtesting_1_1internal_1_1_const_ref}{testing\+::internal\+::\+Const\+Ref$<$ T $>$}} }{\pageref{structtesting_1_1internal_1_1_const_ref}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtesting_1_1internal_1_1_const_ref_3_01_t_01_6_01_4}{testing\+::internal\+::\+Const\+Ref$<$ T \& $>$}} }{\pageref{structtesting_1_1internal_1_1_const_ref_3_01_t_01_6_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1contiguous__iterator__tag}{utl\+::contiguous\+\_\+iterator\+\_\+tag}} }{\pageref{structutl_1_1contiguous__iterator__tag}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1count__if__impl_1_1count__if__}{utl\+::meta\+::count\+\_\+if\+\_\+impl\+::count\+\_\+if\+\_\+$<$ typename, typename, size\+\_\+t $>$}} }{\pageref{structutl_1_1meta_1_1count__if__impl_1_1count__if__}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4}{utl\+::meta\+::count\+\_\+if\+\_\+impl\+::count\+\_\+if\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, N $>$}} }{\pageref{structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4}{utl\+::meta\+::count\+\_\+if\+\_\+impl\+::count\+\_\+if\+\_\+$<$ typelist$<$$>$, Fn, N $>$}} }{\pageref{structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1crtp__tag}{utl\+::crtp\+\_\+tag}} \\*C\+R\+TP support tag type }{\pageref{structutl_1_1crtp__tag}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1defer__}{utl\+::meta\+::detail\+::defer\+\_\+$<$ F, Ts $>$}} }{\pageref{structutl_1_1meta_1_1detail_1_1defer__}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1defer__i__}{utl\+::meta\+::detail\+::defer\+\_\+i\+\_\+$<$ T, F, Is $>$}} }{\pageref{structutl_1_1meta_1_1detail_1_1defer__i__}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtest__concepts_1_1_derived1}{test\+\_\+concepts\+::\+Derived1}} }{\pageref{classtest__concepts_1_1_derived1}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtest__concepts_1_1_derived2}{test\+\_\+concepts\+::\+Derived2}} }{\pageref{classtest__concepts_1_1_derived2}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1detector}{utl\+::meta\+::detail\+::detector$<$ Default, Always\+Void, Op, Args $>$}} }{\pageref{structutl_1_1meta_1_1detail_1_1detector}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1detector_3_01_default_00_01void__t_3_01_op_3_01_args_8_8_8_01_4_0c35bdbd19f56980c0b5ee6d490bfb634}{utl\+::meta\+::detail\+::detector$<$ Default, void\+\_\+t$<$ Op$<$ Args... $>$ $>$, Op, Args... $>$}} }{\pageref{structutl_1_1meta_1_1detail_1_1detector_3_01_default_00_01void__t_3_01_op_3_01_args_8_8_8_01_4_0c35bdbd19f56980c0b5ee6d490bfb634}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1dev__iterator__traits}{utl\+::dev\+\_\+iterator\+\_\+traits$<$ \+\_\+\+Cat, \+\_\+\+Tp, \+\_\+\+Diff $>$}} \\*Device iterator collection }{\pageref{structutl_1_1dev__iterator__traits}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtesting_1_1internal_1_1_double_sequence}{testing\+::internal\+::\+Double\+Sequence$<$ plus\+\_\+one, T, sizeof\+T $>$}} }{\pageref{structtesting_1_1internal_1_1_double_sequence}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtesting_1_1internal_1_1_double_sequence_3_01false_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4}{testing\+::internal\+::\+Double\+Sequence$<$ false, Index\+Sequence$<$ I... $>$, sizeof\+T $>$}} }{\pageref{structtesting_1_1internal_1_1_double_sequence_3_01false_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtesting_1_1internal_1_1_double_sequence_3_01true_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4}{testing\+::internal\+::\+Double\+Sequence$<$ true, Index\+Sequence$<$ I... $>$, sizeof\+T $>$}} }{\pageref{structtesting_1_1internal_1_1_double_sequence_3_01true_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtesting_1_1internal_1_1_elem_from_list}{testing\+::internal\+::\+Elem\+From\+List$<$ N, I, T $>$}} }{\pageref{structtesting_1_1internal_1_1_elem_from_list}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtesting_1_1internal_1_1_elem_from_list_3_01_n_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01_t_8_8_8_01_4}{testing\+::internal\+::\+Elem\+From\+List$<$ N, Index\+Sequence$<$ I... $>$, T... $>$}} }{\pageref{structtesting_1_1internal_1_1_elem_from_list_3_01_n_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01_t_8_8_8_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtesting_1_1internal_1_1_elem_from_list_impl}{testing\+::internal\+::\+Elem\+From\+List\+Impl$<$ T, size\+\_\+t, size\+\_\+t $>$}} }{\pageref{structtesting_1_1internal_1_1_elem_from_list_impl}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtesting_1_1internal_1_1_elem_from_list_impl_3_01_t_00_01_i_00_01_i_01_4}{testing\+::internal\+::\+Elem\+From\+List\+Impl$<$ T, I, I $>$}} }{\pageref{structtesting_1_1internal_1_1_elem_from_list_impl_3_01_t_00_01_i_00_01_i_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtest__concepts_1_1_empty}{test\+\_\+concepts\+::\+Empty}} }{\pageref{structtest__concepts_1_1_empty}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1_empty_test_event_listener}{testing\+::\+Empty\+Test\+Event\+Listener}} }{\pageref{classtesting_1_1_empty_test_event_listener}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtesting_1_1internal_1_1_enable_if}{testing\+::internal\+::\+Enable\+If$<$ bool $>$}} }{\pageref{structtesting_1_1internal_1_1_enable_if}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtesting_1_1internal_1_1_enable_if_3_01true_01_4}{testing\+::internal\+::\+Enable\+If$<$ true $>$}} }{\pageref{structtesting_1_1internal_1_1_enable_if_3_01true_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1_environment}{testing\+::\+Environment}} }{\pageref{classtesting_1_1_environment}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_eq_helper}{testing\+::internal\+::\+Eq\+Helper$<$ lhs\+\_\+is\+\_\+null\+\_\+literal $>$}} }{\pageref{classtesting_1_1internal_1_1_eq_helper}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_eq_helper_3_01true_01_4}{testing\+::internal\+::\+Eq\+Helper$<$ true $>$}} }{\pageref{classtesting_1_1internal_1_1_eq_helper_3_01true_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{struct_tmeta_typelist_1_1_f}{Tmeta\+Typelist\+::\+F$<$ T1, T2 $>$}} }{\pageref{struct_tmeta_typelist_1_1_f}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtesting_1_1internal_1_1faketype}{testing\+::internal\+::faketype}} }{\pageref{structtesting_1_1internal_1_1faketype}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1filter__impl_1_1filter__}{utl\+::meta\+::filter\+\_\+impl\+::filter\+\_\+$<$ typename, typename, typename $>$}} }{\pageref{structutl_1_1meta_1_1filter__impl_1_1filter__}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_l_01_4}{utl\+::meta\+::filter\+\_\+impl\+::filter\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, L $>$}} }{\pageref{structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_l_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_4_00_01_fn_00_01_l_01_4}{utl\+::meta\+::filter\+\_\+impl\+::filter\+\_\+$<$ typelist$<$$>$, Fn, L $>$}} }{\pageref{structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_4_00_01_fn_00_01_l_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1find__if__impl_1_1find__if__}{utl\+::meta\+::find\+\_\+if\+\_\+impl\+::find\+\_\+if\+\_\+$<$ typename, typename, index\+\_\+t $>$}} }{\pageref{structutl_1_1meta_1_1find__if__impl_1_1find__if__}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4}{utl\+::meta\+::find\+\_\+if\+\_\+impl\+::find\+\_\+if\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, N $>$}} }{\pageref{structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4}{utl\+::meta\+::find\+\_\+if\+\_\+impl\+::find\+\_\+if\+\_\+$<$ typelist$<$$>$, Fn, N $>$}} }{\pageref{structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_flat_tuple}{testing\+::internal\+::\+Flat\+Tuple$<$ T $>$}} }{\pageref{classtesting_1_1internal_1_1_flat_tuple}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtesting_1_1internal_1_1_flat_tuple_base}{testing\+::internal\+::\+Flat\+Tuple\+Base$<$ Derived, Idx $>$}} }{\pageref{structtesting_1_1internal_1_1_flat_tuple_base}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtesting_1_1internal_1_1_flat_tuple_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_index_sequence_3_01_idx_8_8_8_01_4_01_4}{testing\+::internal\+::\+Flat\+Tuple\+Base$<$ Flat\+Tuple$<$ T... $>$, Index\+Sequence$<$ Idx... $>$ $>$}} }{\pageref{structtesting_1_1internal_1_1_flat_tuple_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_index_sequence_3_01_idx_8_8_8_01_4_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtesting_1_1internal_1_1_flat_tuple_elem_base}{testing\+::internal\+::\+Flat\+Tuple\+Elem\+Base$<$ Derived, I $>$}} }{\pageref{structtesting_1_1internal_1_1_flat_tuple_elem_base}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtesting_1_1internal_1_1_flat_tuple_elem_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_i_01_4}{testing\+::internal\+::\+Flat\+Tuple\+Elem\+Base$<$ Flat\+Tuple$<$ T... $>$, I $>$}} }{\pageref{structtesting_1_1internal_1_1_flat_tuple_elem_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_i_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point}{testing\+::internal\+::\+Floating\+Point$<$ Raw\+Type $>$}} }{\pageref{classtesting_1_1internal_1_1_floating_point}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1fold__impl_1_1fold__}{utl\+::meta\+::fold\+\_\+impl\+::fold\+\_\+$<$ typename, typename, typename $>$}} }{\pageref{structutl_1_1meta_1_1fold__impl_1_1fold__}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4}{utl\+::meta\+::fold\+\_\+impl\+::fold\+\_\+$<$ typelist$<$ Head, Tail... $>$, V, Fn $>$}} }{\pageref{structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_4_00_01_v0_00_01_fn_01_4}{utl\+::meta\+::fold\+\_\+impl\+::fold\+\_\+$<$ typelist$<$$>$, V0, Fn $>$}} }{\pageref{structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_4_00_01_v0_00_01_fn_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{struct_tmeta_detection_1_1_foo}{Tmeta\+Detection\+::\+Foo}} }{\pageref{struct_tmeta_detection_1_1_foo}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_format_for_comparison}{testing\+::internal\+::\+Format\+For\+Comparison$<$ To\+Print, Other\+Operand $>$}} }{\pageref{classtesting_1_1internal_1_1_format_for_comparison}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_format_for_comparison_3_01_to_print[_n]_00_01_other_operand_01_4}{testing\+::internal\+::\+Format\+For\+Comparison$<$ To\+Print\mbox{[}\+N\mbox{]}, Other\+Operand $>$}} }{\pageref{classtesting_1_1internal_1_1_format_for_comparison_3_01_to_print[_n]_00_01_other_operand_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1forward__iterator__tag}{utl\+::forward\+\_\+iterator\+\_\+tag}} }{\pageref{structutl_1_1forward__iterator__tag}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1front__impl_1_1front__}{utl\+::meta\+::front\+\_\+impl\+::front\+\_\+$<$ L $>$}} }{\pageref{structutl_1_1meta_1_1front__impl_1_1front__}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1front__impl_1_1front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4}{utl\+::meta\+::front\+\_\+impl\+::front\+\_\+$<$ typelist$<$ Head, Tail... $>$ $>$}} }{\pageref{structutl_1_1meta_1_1front__impl_1_1front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_g_test_log}{testing\+::internal\+::\+G\+Test\+Log}} }{\pageref{classtesting_1_1internal_1_1_g_test_log}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_g_test_mutex_lock}{testing\+::internal\+::\+G\+Test\+Mutex\+Lock}} }{\pageref{classtesting_1_1internal_1_1_g_test_mutex_lock}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtest__concepts_1_1_have_copy_and_move}{test\+\_\+concepts\+::\+Have\+Copy\+And\+Move}} }{\pageref{structtest__concepts_1_1_have_copy_and_move}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtest__concepts_1_1_have_only_copy}{test\+\_\+concepts\+::\+Have\+Only\+Copy}} }{\pageref{structtest__concepts_1_1_have_only_copy}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtest__concepts_1_1_have_only_move}{test\+\_\+concepts\+::\+Have\+Only\+Move}} }{\pageref{structtest__concepts_1_1_have_only_move}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtest__concepts_1_1_have_operator_base}{test\+\_\+concepts\+::\+Have\+Operator\+Base}} }{\pageref{classtest__concepts_1_1_have_operator_base}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtest__concepts_1_1_have_perfect_forwarding}{test\+\_\+concepts\+::\+Have\+Perfect\+Forwarding}} }{\pageref{classtest__concepts_1_1_have_perfect_forwarding}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtest__i2c_1_1_i2_c}{test\+\_\+i2c\+::\+I2C}} }{\pageref{classtest__i2c_1_1_i2_c}}{} +\item\contentsline{section}{\mbox{\hyperlink{classutl_1_1i2c__bb__i}{utl\+::i2c\+\_\+bb\+\_\+i$<$ impl\+\_\+t $>$}} \\*A bit banking implementation of i2c bus inherited from \mbox{\hyperlink{classutl_1_1i2c__i}{i2c\+\_\+i}} base class }{\pageref{classutl_1_1i2c__bb__i}}{} +\item\contentsline{section}{\mbox{\hyperlink{classutl_1_1i2c__bb__i_3_01virtual__tag_01_4}{utl\+::i2c\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag $>$}} \\*A virtual base class interface specialization. Using the private virtual interface we provide the interface from \mbox{\hyperlink{classutl_1_1i2c__i_3_01virtual__tag_01_4}{i2c\+\_\+i$<$virtual\+\_\+tag$>$}} }{\pageref{classutl_1_1i2c__bb__i_3_01virtual__tag_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{classutl_1_1i2c__i}{utl\+::i2c\+\_\+i$<$ impl\+\_\+t $>$}} \\*Abstract base class for i2c bus }{\pageref{classutl_1_1i2c__i}}{} +\item\contentsline{section}{\mbox{\hyperlink{classutl_1_1i2c__i_3_01virtual__tag_01_4}{utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$}} \\*A virtual base class specialization }{\pageref{classutl_1_1i2c__i_3_01virtual__tag_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtest__meta_1_1_ibar}{test\+\_\+meta\+::\+Ibar}} }{\pageref{structtest__meta_1_1_ibar}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1id__t}{utl\+::id\+\_\+t$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$}} \\*A standard container for storing I\+Ds as a fixed size sequence of bytes. This type is based on etl\+::array Meets the requirements of\+: \href{tables.html#65}{\tt container}, \href{tables.html#66}{\tt reversible container}, \href{tables.html#67}{\tt sequence}. Sets support random access iterators }{\pageref{structutl_1_1id__t}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1id__traits}{utl\+::id\+\_\+traits$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$}} \\*Id container traits helper }{\pageref{structutl_1_1id__traits}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1id__traits_3_01___tp_00_010_01_4}{utl\+::id\+\_\+traits$<$ \+\_\+\+Tp, 0 $>$}} }{\pageref{structutl_1_1id__traits_3_01___tp_00_010_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{struct_tmeta_basic_1_1_identity}{Tmeta\+Basic\+::\+Identity$<$ T $>$}} }{\pageref{struct_tmeta_basic_1_1_identity}}{} +\item\contentsline{section}{\mbox{\hyperlink{struct_tmeta_typelist_1_1_identity}{Tmeta\+Typelist\+::\+Identity$<$ T $>$}} }{\pageref{struct_tmeta_typelist_1_1_identity}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1identity}{utl\+::meta\+::identity$<$ \+\_\+\+Tp $>$}} }{\pageref{structutl_1_1meta_1_1identity}}{} +\item\contentsline{section}{\mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev$<$ impl\+\_\+t, data\+\_\+t, idx\+\_\+t, N $>$}} \\*Abstract base class for indexed devices }{\pageref{classutl_1_1idx__dev}}{} +\item\contentsline{section}{\mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4}{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}} \\*A virtual base class specialization }{\pageref{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1if__c__}{utl\+::meta\+::detail\+::if\+\_\+c\+\_\+$<$ If,... $>$}} }{\pageref{structutl_1_1meta_1_1detail_1_1if__c__}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1if__c___3_01false_00_01_then_00_01_else_01_4}{utl\+::meta\+::detail\+::if\+\_\+c\+\_\+$<$ false, Then, Else $>$}} }{\pageref{structutl_1_1meta_1_1detail_1_1if__c___3_01false_00_01_then_00_01_else_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_01_4}{utl\+::meta\+::detail\+::if\+\_\+c\+\_\+$<$ true, Then $>$}} }{\pageref{structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_00_01_else_01_4}{utl\+::meta\+::detail\+::if\+\_\+c\+\_\+$<$ true, Then, Else $>$}} }{\pageref{structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_00_01_else_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtest__meta_1_1_ifoo}{test\+\_\+meta\+::\+Ifoo}} }{\pageref{structtest__meta_1_1_ifoo}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_ignored_value}{testing\+::internal\+::\+Ignored\+Value}} }{\pageref{classtesting_1_1internal_1_1_ignored_value}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_implicitly_convertible}{testing\+::internal\+::\+Implicitly\+Convertible$<$ From, To $>$}} }{\pageref{classtesting_1_1internal_1_1_implicitly_convertible}}{} +\item\contentsline{section}{\mbox{\hyperlink{classutl_1_1in__dev}{utl\+::in\+\_\+dev$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$}} \\*Abstract base class for input devices }{\pageref{classutl_1_1in__dev}}{} +\item\contentsline{section}{\mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} \\*A virtual base class specialization }{\pageref{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$}} \\*Abstract base class for input buffered devices }{\pageref{classutl_1_1inbuf__dev}}{} +\item\contentsline{section}{\mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} \\*A virtual base class specialization }{\pageref{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtest__concepts_1_1_incr}{test\+\_\+concepts\+::\+Incr}} }{\pageref{structtest__concepts_1_1_incr}}{} +\item\contentsline{section}{\mbox{\hyperlink{classutl_1_1indev__it}{utl\+::indev\+\_\+it$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$}} \\*Input device iterator type. We \char`\"{}future call\char`\"{} interface methods from owner class to provide iterator functionality }{\pageref{classutl_1_1indev__it}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtesting_1_1internal_1_1_index_sequence}{testing\+::internal\+::\+Index\+Sequence$<$ Is $>$}} }{\pageref{structtesting_1_1internal_1_1_index_sequence}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1input__iterator__tag}{utl\+::input\+\_\+iterator\+\_\+tag}} }{\pageref{structutl_1_1input__iterator__tag}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtest__concepts_1_1_inv}{test\+\_\+concepts\+::\+Inv}} }{\pageref{structtest__concepts_1_1_inv}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1detail_1_1invoke__result__}{utl\+::detail\+::invoke\+\_\+result\+\_\+$<$ B, \+\_\+\+Callable, \+\_\+\+Args $>$}} }{\pageref{structutl_1_1detail_1_1invoke__result__}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1detail_1_1invoke__result___3_01true_00_01___callable_00_01___args_8_8_8_01_4}{utl\+::detail\+::invoke\+\_\+result\+\_\+$<$ true, \+\_\+\+Callable, \+\_\+\+Args... $>$}} }{\pageref{structutl_1_1detail_1_1invoke__result___3_01true_00_01___callable_00_01___args_8_8_8_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{classutl_1_1iodev__it}{utl\+::iodev\+\_\+it$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$}} \\*Indexed device iterator type. We \char`\"{}future call\char`\"{} interface methods from owner class to provide iterator functionality }{\pageref{classutl_1_1iodev__it}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1__1wire__i__det_1_1is__1wire__}{utl\+::\+\_\+1wire\+\_\+i\+\_\+det\+::is\+\_\+1wire\+\_\+$<$ \+\_\+\+Tp, typename $>$}} \\*Primary template to catch any non 1-\/wire interface types }{\pageref{structutl_1_1__1wire__i__det_1_1is__1wire__}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1__1wire__i__det_1_1is__1wire___3_01___tp_00_01meta_1_1void__t_3_01void_01_4_01_4}{utl\+::\+\_\+1wire\+\_\+i\+\_\+det\+::is\+\_\+1wire\+\_\+$<$ \+\_\+\+Tp, meta\+::void\+\_\+t$<$ void $>$ $>$}} \\*Template to catch a proper 1-\/wire interface type }{\pageref{structutl_1_1__1wire__i__det_1_1is__1wire___3_01___tp_00_01meta_1_1void__t_3_01void_01_4_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__}{utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+$<$ F, T $>$}} }{\pageref{structutl_1_1meta_1_1detail_1_1is__applicable__}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__i__}{utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+i\+\_\+$<$ T, F, Is $>$}} }{\pageref{structutl_1_1meta_1_1detail_1_1is__applicable__i__}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__q__}{utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+q\+\_\+$<$ F, T $>$}} }{\pageref{structutl_1_1meta_1_1detail_1_1is__applicable__q__}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1details_1_1is__boolean__}{utl\+::details\+::is\+\_\+boolean\+\_\+$<$ B, typename $>$}} }{\pageref{structutl_1_1details_1_1is__boolean__}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1details_1_1is__boolean___3_01_b_00_01meta_1_1void__t_3_01meta_1_1use__if__same__t_37e77ed45a431955fc15b4c1210ad8491}{utl\+::details\+::is\+\_\+boolean\+\_\+$<$ B, meta\+::void\+\_\+t$<$ meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(!std\+::declval$<$ cref\+\_\+$<$ B $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ B $>$$>$()==std\+::declval$<$ cref\+\_\+$<$ B $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ B $>$$>$() !=std\+::declval$<$ cref\+\_\+$<$ B $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ B $>$$>$() \&\&std\+::declval$<$ cref\+\_\+$<$ B $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ B $>$$>$()$\vert$$\vert$std\+::declval$<$ cref\+\_\+$<$ B $>$$>$())$>$ $>$ $>$}} }{\pageref{structutl_1_1details_1_1is__boolean___3_01_b_00_01meta_1_1void__t_3_01meta_1_1use__if__same__t_37e77ed45a431955fc15b4c1210ad8491}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1i2c__i__details_1_1is__i2c__}{utl\+::i2c\+\_\+i\+\_\+details\+::is\+\_\+i2c\+\_\+$<$ \+\_\+\+Tp, typename $>$}} \\*Primary template to catch any non I2C interface types }{\pageref{structutl_1_1i2c__i__details_1_1is__i2c__}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1i2c__i__details_1_1is__i2c___3_01___tp_00_01meta_1_1void__t_3_01typename_01___tp_1_1_sequence_00_01void_01_4_01_4}{utl\+::i2c\+\_\+i\+\_\+details\+::is\+\_\+i2c\+\_\+$<$ \+\_\+\+Tp, meta\+::void\+\_\+t$<$ typename \+\_\+\+Tp\+::\+Sequence, void $>$ $>$}} \\*Template to catch a proper I2C interface type }{\pageref{structutl_1_1i2c__i__details_1_1is__i2c___3_01___tp_00_01meta_1_1void__t_3_01typename_01___tp_1_1_sequence_00_01void_01_4_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1idx__dev__details_1_1is__idx__dev__}{utl\+::idx\+\_\+dev\+\_\+details\+::is\+\_\+idx\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, typename $>$}} \\*Primary template to catch any non input device types }{\pageref{structutl_1_1idx__dev__details_1_1is__idx__dev__}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1idx__dev__details_1_1is__idx__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1ae8b6b24c31c81bdd901da6e6387d84b}{utl\+::idx\+\_\+dev\+\_\+details\+::is\+\_\+idx\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, void\+\_\+t$<$ typename \+\_\+\+Tp\+::data\+\_\+type, typename \+\_\+\+Tp\+::pointer\+\_\+type, typename \+\_\+\+Tp\+::iterator, typename \+\_\+\+Tp\+::const\+\_\+iterator, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+get1\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+get2\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cbegin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cend\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$ $>$ $>$}} \\*Template to catch a proper input device type }{\pageref{structutl_1_1idx__dev__details_1_1is__idx__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1ae8b6b24c31c81bdd901da6e6387d84b}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1idxdev__it__details_1_1is__idxdev__it__}{utl\+::idxdev\+\_\+it\+\_\+details\+::is\+\_\+idxdev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, typename $>$}} \\*Primary template to catch any non S\+PI interface types }{\pageref{structutl_1_1idxdev__it__details_1_1is__idxdev__it__}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1idxdev__it__details_1_1is__idxdev__it___3_01___tp_00_01meta_1_1void__t_3_01typenamebd9ada52ca7b7570c26d0c280af5e635}{utl\+::idxdev\+\_\+it\+\_\+details\+::is\+\_\+idxdev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, meta\+::void\+\_\+t$<$ typename \+\_\+\+Tp\+::value\+\_\+type, typename \+\_\+\+Tp\+::difference\+\_\+type, typename \+\_\+\+Tp\+::pointer, typename \+\_\+\+Tp\+::reference, void $>$ $>$}} \\*Template to catch a proper S\+PI interface type }{\pageref{structutl_1_1idxdev__it__details_1_1is__idxdev__it___3_01___tp_00_01meta_1_1void__t_3_01typenamebd9ada52ca7b7570c26d0c280af5e635}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1in__dev__details_1_1is__in__dev__}{utl\+::in\+\_\+dev\+\_\+details\+::is\+\_\+in\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, typename $>$}} \\*Primary template to catch any non input device types }{\pageref{structutl_1_1in__dev__details_1_1is__in__dev__}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1in__dev__details_1_1is__in__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1dad922a62deb7c32e2cff18d66b8c887d2}{utl\+::in\+\_\+dev\+\_\+details\+::is\+\_\+in\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, void\+\_\+t$<$ typename \+\_\+\+Tp\+::data\+\_\+type, typename \+\_\+\+Tp\+::pointer\+\_\+type, typename \+\_\+\+Tp\+::iterator, typename \+\_\+\+Tp\+::const\+\_\+iterator, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+get1\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+get2\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cbegin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cend\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$ $>$ $>$}} \\*Template to catch a proper input device type }{\pageref{structutl_1_1in__dev__details_1_1is__in__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1dad922a62deb7c32e2cff18d66b8c887d2}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1inbuf__dev__details_1_1is__inbuf__dev__}{utl\+::inbuf\+\_\+dev\+\_\+details\+::is\+\_\+inbuf\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, typename $>$}} \\*Primary template to catch any non input device types }{\pageref{structutl_1_1inbuf__dev__details_1_1is__inbuf__dev__}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1inbuf__dev__details_1_1is__inbuf__dev___3_01___tp_00_01void__t_3_01typename_01___tpc269ee3885240cc8c352f3c6b3a67cd7}{utl\+::inbuf\+\_\+dev\+\_\+details\+::is\+\_\+inbuf\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, void\+\_\+t$<$ typename \+\_\+\+Tp\+::data\+\_\+type, typename \+\_\+\+Tp\+::pointer\+\_\+type, typename \+\_\+\+Tp\+::iterator, typename \+\_\+\+Tp\+::const\+\_\+iterator, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+get1\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+get2\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cbegin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cend\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$ $>$ $>$}} \\*Template to catch a proper input device type }{\pageref{structutl_1_1inbuf__dev__details_1_1is__inbuf__dev___3_01___tp_00_01void__t_3_01typename_01___tpc269ee3885240cc8c352f3c6b3a67cd7}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1indev__it__details_1_1is__indev__it__}{utl\+::indev\+\_\+it\+\_\+details\+::is\+\_\+indev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, typename $>$}} \\*Primary template to catch any non S\+PI interface types }{\pageref{structutl_1_1indev__it__details_1_1is__indev__it__}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1indev__it__details_1_1is__indev__it___3_01___tp_00_01meta_1_1void__t_3_01typename_06508604dcee4010234c84cc332fa196b}{utl\+::indev\+\_\+it\+\_\+details\+::is\+\_\+indev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, meta\+::void\+\_\+t$<$ typename \+\_\+\+Tp\+::value\+\_\+type, typename \+\_\+\+Tp\+::difference\+\_\+type, typename \+\_\+\+Tp\+::pointer, typename \+\_\+\+Tp\+::reference, void $>$ $>$}} \\*Template to catch a proper S\+PI interface type }{\pageref{structutl_1_1indev__it__details_1_1is__indev__it___3_01___tp_00_01meta_1_1void__t_3_01typename_06508604dcee4010234c84cc332fa196b}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1is__invocable}{utl\+::is\+\_\+invocable$<$ F, Args $>$}} \\*Std\+::is\+\_\+invocable trait for C++11 }{\pageref{structutl_1_1is__invocable}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1is__invocable__r}{utl\+::is\+\_\+invocable\+\_\+r$<$ R, F, Args $>$}} \\*Std\+::is\+\_\+invocable\+\_\+r trait for C++11 }{\pageref{structutl_1_1is__invocable__r}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1out__dev__details_1_1is__out__dev__}{utl\+::out\+\_\+dev\+\_\+details\+::is\+\_\+out\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, typename $>$}} \\*Primary template to catch any non output device types }{\pageref{structutl_1_1out__dev__details_1_1is__out__dev__}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1out__dev__details_1_1is__out__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1fbf8d2409fc6de9dd6b9649bedc1b379}{utl\+::out\+\_\+dev\+\_\+details\+::is\+\_\+out\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, void\+\_\+t$<$ typename \+\_\+\+Tp\+::data\+\_\+type, typename \+\_\+\+Tp\+::pointer\+\_\+type, typename \+\_\+\+Tp\+::iterator, typename \+\_\+\+Tp\+::const\+\_\+iterator, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+put1\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+put2\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cbegin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cend\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$ $>$ $>$}} \\*Template to catch a proper output device type }{\pageref{structutl_1_1out__dev__details_1_1is__out__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1fbf8d2409fc6de9dd6b9649bedc1b379}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1outdev__it__details_1_1is__outdev__it__}{utl\+::outdev\+\_\+it\+\_\+details\+::is\+\_\+outdev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, typename $>$}} \\*Primary template to catch any non S\+PI interface types }{\pageref{structutl_1_1outdev__it__details_1_1is__outdev__it__}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1outdev__it__details_1_1is__outdev__it___3_01___tp_00_01meta_1_1void__t_3_01typename8786ebbbd0dc9ca1b14571e779d99d60}{utl\+::outdev\+\_\+it\+\_\+details\+::is\+\_\+outdev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, meta\+::void\+\_\+t$<$ typename \+\_\+\+Tp\+::value\+\_\+type, typename \+\_\+\+Tp\+::difference\+\_\+type, typename \+\_\+\+Tp\+::pointer, typename \+\_\+\+Tp\+::reference, void $>$ $>$}} \\*Template to catch a proper S\+PI interface type }{\pageref{structutl_1_1outdev__it__details_1_1is__outdev__it___3_01___tp_00_01meta_1_1void__t_3_01typename8786ebbbd0dc9ca1b14571e779d99d60}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1detail_1_1is__ref__wrapper}{utl\+::detail\+::is\+\_\+ref\+\_\+wrapper$<$ T $>$}} }{\pageref{structutl_1_1detail_1_1is__ref__wrapper}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1detail_1_1is__ref__wrapper_3_01std_1_1reference__wrapper_3_01_u_01_4_01_4}{utl\+::detail\+::is\+\_\+ref\+\_\+wrapper$<$ std\+::reference\+\_\+wrapper$<$ U $>$ $>$}} }{\pageref{structutl_1_1detail_1_1is__ref__wrapper_3_01std_1_1reference__wrapper_3_01_u_01_4_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtesting_1_1internal_1_1is__same}{testing\+::internal\+::is\+\_\+same$<$ T, U $>$}} }{\pageref{structtesting_1_1internal_1_1is__same}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtesting_1_1internal_1_1is__same_3_01_t_00_01_t_01_4}{testing\+::internal\+::is\+\_\+same$<$ T, T $>$}} }{\pageref{structtesting_1_1internal_1_1is__same_3_01_t_00_01_t_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1spi__i__details_1_1is__spi__}{utl\+::spi\+\_\+i\+\_\+details\+::is\+\_\+spi\+\_\+$<$ \+\_\+\+Tp, typename $>$}} \\*Primary template to catch any non S\+PI interface types }{\pageref{structutl_1_1spi__i__details_1_1is__spi__}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1spi__i__details_1_1is__spi___3_01___tp_00_01meta_1_1void__t_3_01meta_1_1use__if__sa2db29f6d65d34ecf5e49ec30b6600d78}{utl\+::spi\+\_\+i\+\_\+details\+::is\+\_\+spi\+\_\+$<$ \+\_\+\+Tp, meta\+::void\+\_\+t$<$ meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cclock\+\_\+t$<$ \+\_\+\+Tp $>$, uint32\+\_\+t $>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+clock\+\_\+t$<$ \+\_\+\+Tp $>$, void $>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+tx\+\_\+t$<$ \+\_\+\+Tp $>$, byte\+\_\+t $>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+rx\+\_\+t$<$ \+\_\+\+Tp $>$, byte\+\_\+t $>$ $>$ $>$}} \\*Template to catch a proper S\+PI interface type }{\pageref{structutl_1_1spi__i__details_1_1is__spi___3_01___tp_00_01meta_1_1void__t_3_01meta_1_1use__if__sa2db29f6d65d34ecf5e49ec30b6600d78}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1details_1_1is__strict__totally__ordered__}{utl\+::details\+::is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+$<$ T, typename $>$}} }{\pageref{structutl_1_1details_1_1is__strict__totally__ordered__}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1details_1_1is__strict__totally__ordered___3_01_t_00_01meta_1_1void__t_3_01meta_1_1uab48bcfc89164f446368b35bcc7c8bcd}{utl\+::details\+::is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+$<$ T, meta\+::void\+\_\+t$<$ meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$()$<$ std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$() $>$ std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$()$<$=std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$() $>$=std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$ $>$ $>$}} }{\pageref{structutl_1_1details_1_1is__strict__totally__ordered___3_01_t_00_01meta_1_1void__t_3_01meta_1_1uab48bcfc89164f446368b35bcc7c8bcd}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1details_1_1is__strict__totally__ordered__with__}{utl\+::details\+::is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+with\+\_\+$<$ T, U, typename $>$}} }{\pageref{structutl_1_1details_1_1is__strict__totally__ordered__with__}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1details_1_1is__strict__totally__ordered__with___3_01_t_00_01_u_00_01meta_1_1void__t8fb7dd5a6ad25952241e37c6f163f434}{utl\+::details\+::is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+with\+\_\+$<$ T, U, meta\+::void\+\_\+t$<$ meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$()$<$ std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$() $>$ std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$()$<$=std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$() $>$=std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$()$<$ std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$() $>$ std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$()$<$=std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$() $>$=std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$ $>$ $>$}} }{\pageref{structutl_1_1details_1_1is__strict__totally__ordered__with___3_01_t_00_01_u_00_01meta_1_1void__t8fb7dd5a6ad25952241e37c6f163f434}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1details_1_1is__weakly__equality__comparable__with__}{utl\+::details\+::is\+\_\+weakly\+\_\+equality\+\_\+comparable\+\_\+with\+\_\+$<$ T, U, typename $>$}} }{\pageref{structutl_1_1details_1_1is__weakly__equality__comparable__with__}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1details_1_1is__weakly__equality__comparable__with___3_01_t_00_01_u_00_01meta_1_1voi4404f901930622694666ca68fb75381b}{utl\+::details\+::is\+\_\+weakly\+\_\+equality\+\_\+comparable\+\_\+with\+\_\+$<$ T, U, meta\+::void\+\_\+t$<$ meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$()==std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$() !=std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$()==std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$() !=std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$ $>$ $>$}} }{\pageref{structutl_1_1details_1_1is__weakly__equality__comparable__with___3_01_t_00_01_u_00_01meta_1_1voi4404f901930622694666ca68fb75381b}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtesting_1_1internal_1_1_is_a_protocol_message}{testing\+::internal\+::\+Is\+A\+Protocol\+Message$<$ T $>$}} }{\pageref{structtesting_1_1internal_1_1_is_a_protocol_message}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtesting_1_1internal_1_1_is_hash_table}{testing\+::internal\+::\+Is\+Hash\+Table$<$ T $>$}} }{\pageref{structtesting_1_1internal_1_1_is_hash_table}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtesting_1_1internal_1_1_is_recursive_container}{testing\+::internal\+::\+Is\+Recursive\+Container$<$ C $>$}} }{\pageref{structtesting_1_1internal_1_1_is_recursive_container}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtesting_1_1internal_1_1_is_recursive_container_impl}{testing\+::internal\+::\+Is\+Recursive\+Container\+Impl$<$ C, bool $>$}} }{\pageref{structtesting_1_1internal_1_1_is_recursive_container_impl}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01false_01_4}{testing\+::internal\+::\+Is\+Recursive\+Container\+Impl$<$ C, false $>$}} }{\pageref{structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01false_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01true_01_4}{testing\+::internal\+::\+Is\+Recursive\+Container\+Impl$<$ C, true $>$}} }{\pageref{structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01true_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtesting_1_1internal_1_1_is_same}{testing\+::internal\+::\+Is\+Same$<$ T, U $>$}} }{\pageref{structtesting_1_1internal_1_1_is_same}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtesting_1_1internal_1_1_is_same_3_01_t_00_01_t_01_4}{testing\+::internal\+::\+Is\+Same$<$ T, T $>$}} }{\pageref{structtesting_1_1internal_1_1_is_same_3_01_t_00_01_t_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{classutl_1_1istreamdev__it}{utl\+::istreamdev\+\_\+it$<$ cont\+\_\+t, data\+\_\+t $>$}} }{\pageref{classutl_1_1istreamdev__it}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtesting_1_1internal_1_1_iterator_traits}{testing\+::internal\+::\+Iterator\+Traits$<$ Iterator $>$}} }{\pageref{structtesting_1_1internal_1_1_iterator_traits}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtesting_1_1internal_1_1_iterator_traits_3_01const_01_t_01_5_01_4}{testing\+::internal\+::\+Iterator\+Traits$<$ const T $\ast$ $>$}} }{\pageref{structtesting_1_1internal_1_1_iterator_traits_3_01const_01_t_01_5_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtesting_1_1internal_1_1_iterator_traits_3_01_t_01_5_01_4}{testing\+::internal\+::\+Iterator\+Traits$<$ T $\ast$ $>$}} }{\pageref{structtesting_1_1internal_1_1_iterator_traits_3_01_t_01_5_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtesting_1_1internal_1_1_make_index_sequence}{testing\+::internal\+::\+Make\+Index\+Sequence$<$ N $>$}} }{\pageref{structtesting_1_1internal_1_1_make_index_sequence}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtesting_1_1internal_1_1_make_index_sequence_3_010_01_4}{testing\+::internal\+::\+Make\+Index\+Sequence$<$ 0 $>$}} }{\pageref{structtesting_1_1internal_1_1_make_index_sequence_3_010_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1_message}{testing\+::\+Message}} }{\pageref{classtesting_1_1_message}}{} +\item\contentsline{section}{\mbox{\hyperlink{struct_tmeta_detection_1_1m_fun}{Tmeta\+Detection\+::m\+Fun$<$ T1, T2 $>$}} }{\pageref{struct_tmeta_detection_1_1m_fun}}{} +\item\contentsline{section}{\mbox{\hyperlink{struct_tmeta_typelist_1_1_mfun_bin}{Tmeta\+Typelist\+::\+Mfun\+Bin$<$ T1, T2 $>$}} }{\pageref{struct_tmeta_typelist_1_1_mfun_bin}}{} +\item\contentsline{section}{\mbox{\hyperlink{struct_tmeta_typelist_1_1_mfun_bin__i}{Tmeta\+Typelist\+::\+Mfun\+Bin\+\_\+i$<$ a, b $>$}} }{\pageref{struct_tmeta_typelist_1_1_mfun_bin__i}}{} +\item\contentsline{section}{\mbox{\hyperlink{struct_tmeta_typelist_1_1_mfun_un1}{Tmeta\+Typelist\+::\+Mfun\+Un1$<$ T1 $>$}} }{\pageref{struct_tmeta_typelist_1_1_mfun_un1}}{} +\item\contentsline{section}{\mbox{\hyperlink{struct_tmeta_typelist_1_1_mfun_un2}{Tmeta\+Typelist\+::\+Mfun\+Un2$<$ T1 $>$}} }{\pageref{struct_tmeta_typelist_1_1_mfun_un2}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_mutex}{testing\+::internal\+::\+Mutex}} }{\pageref{classtesting_1_1internal_1_1_mutex}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1nat__}{utl\+::meta\+::nat\+\_\+}} }{\pageref{structutl_1_1meta_1_1nat__}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_native_array}{testing\+::internal\+::\+Native\+Array$<$ Element $>$}} }{\pageref{classtesting_1_1internal_1_1_native_array}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1nil__}{utl\+::meta\+::nil\+\_\+}} }{\pageref{structutl_1_1meta_1_1nil__}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1not__same__as}{utl\+::meta\+::not\+\_\+same\+\_\+as$<$ T1 $>$}} }{\pageref{structutl_1_1meta_1_1not__same__as}}{} +\item\contentsline{section}{\mbox{\hyperlink{classutl_1_1ostream__dev}{utl\+::ostream\+\_\+dev$<$ impl\+\_\+t, data\+\_\+t $>$}} \\*Abstract base classes for output stream devices }{\pageref{classutl_1_1ostream__dev}}{} +\item\contentsline{section}{\mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4}{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$}} }{\pageref{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtest__ostream__dev_1_1_ostream__dev__impl}{test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+dev\+\_\+impl}} }{\pageref{classtest__ostream__dev_1_1_ostream__dev__impl}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtest__ostream__dev_1_1_ostream__vdev__impl}{test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+vdev\+\_\+impl}} }{\pageref{classtest__ostream__dev_1_1_ostream__vdev__impl}}{} +\item\contentsline{section}{\mbox{\hyperlink{classutl_1_1ostreamdev__it}{utl\+::ostreamdev\+\_\+it$<$ cont\+\_\+t, data\+\_\+t $>$}} }{\pageref{classutl_1_1ostreamdev__it}}{} +\item\contentsline{section}{\mbox{\hyperlink{classutl_1_1out__dev}{utl\+::out\+\_\+dev$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$}} \\*Abstract base classes for output devices }{\pageref{classutl_1_1out__dev}}{} +\item\contentsline{section}{\mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} \\*A virtual base class specialization }{\pageref{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{classutl_1_1outdev__it}{utl\+::outdev\+\_\+it$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+end $>$}} \\*Output device iterator type. We \char`\"{}future call\char`\"{} interface methods from owner class to provide iterator functionality }{\pageref{classutl_1_1outdev__it}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1output__iterator__tag}{utl\+::output\+\_\+iterator\+\_\+tag}} \\*Iterator tags \mbox{[}std.\+iterator.\+tags\mbox{]} Extension\+: \mbox{\hyperlink{structutl_1_1contiguous__iterator__tag}{contiguous\+\_\+iterator\+\_\+tag}} for denoting contiguous iterators }{\pageref{structutl_1_1output__iterator__tag}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtest__1w_1_1_o_w}{test\+\_\+1w\+::\+OW}} }{\pageref{classtest__1w_1_1_o_w}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_factory}{testing\+::internal\+::\+Parameterized\+Test\+Factory$<$ Test\+Class $>$}} }{\pageref{classtesting_1_1internal_1_1_parameterized_test_factory}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_info}{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info$<$ Test\+Suite $>$}} }{\pageref{classtesting_1_1internal_1_1_parameterized_test_suite_info}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_info_base}{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info\+Base}} }{\pageref{classtesting_1_1internal_1_1_parameterized_test_suite_info_base}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_registry}{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Registry}} }{\pageref{classtesting_1_1internal_1_1_parameterized_test_suite_registry}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{testing\+::internal\+::\+Param\+Generator$<$ T $>$}} }{\pageref{classtesting_1_1internal_1_1_param_generator}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator_interface}{testing\+::internal\+::\+Param\+Generator\+Interface$<$ T $>$}} }{\pageref{classtesting_1_1internal_1_1_param_generator_interface}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator}{testing\+::internal\+::\+Param\+Iterator$<$ T $>$}} }{\pageref{classtesting_1_1internal_1_1_param_iterator}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{testing\+::internal\+::\+Param\+Iterator\+Interface$<$ T $>$}} }{\pageref{classtesting_1_1internal_1_1_param_iterator_interface}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtesting_1_1internal_1_1_param_name_gen_func}{testing\+::internal\+::\+Param\+Name\+Gen\+Func$<$ Param\+Type $>$}} }{\pageref{structtesting_1_1internal_1_1_param_name_gen_func}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1pop__back__impl_1_1pop__back__}{utl\+::meta\+::pop\+\_\+back\+\_\+impl\+::pop\+\_\+back\+\_\+$<$ List $>$}} }{\pageref{structutl_1_1meta_1_1pop__back__impl_1_1pop__back__}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1pop__front__impl_1_1pop__front__}{utl\+::meta\+::pop\+\_\+front\+\_\+impl\+::pop\+\_\+front\+\_\+$<$ List $>$}} }{\pageref{structutl_1_1meta_1_1pop__front__impl_1_1pop__front__}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1pop__front__impl_1_1pop__front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4}{utl\+::meta\+::pop\+\_\+front\+\_\+impl\+::pop\+\_\+front\+\_\+$<$ typelist$<$ Head, Tail... $>$ $>$}} }{\pageref{structutl_1_1meta_1_1pop__front__impl_1_1pop__front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtest__concepts_1_1_pred}{test\+\_\+concepts\+::\+Pred}} }{\pageref{structtest__concepts_1_1_pred}}{} +\item\contentsline{section}{\mbox{\hyperlink{struct_tmeta_typelist_1_1_pred__is_int}{Tmeta\+Typelist\+::\+Pred\+\_\+is\+Int$<$ T $>$}} }{\pageref{struct_tmeta_typelist_1_1_pred__is_int}}{} +\item\contentsline{section}{\mbox{\hyperlink{struct_tmeta_typelist_1_1_pred__is_void}{Tmeta\+Typelist\+::\+Pred\+\_\+is\+Void$<$ T $>$}} }{\pageref{struct_tmeta_typelist_1_1_pred__is_void}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtesting_1_1_print_to_string_param_name}{testing\+::\+Print\+To\+String\+Param\+Name}} }{\pageref{structtesting_1_1_print_to_string_param_name}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1quote}{utl\+::meta\+::quote$<$ F $>$}} }{\pageref{structutl_1_1meta_1_1quote}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1quote__i}{utl\+::meta\+::quote\+\_\+i$<$ T, F $>$}} \\*Wrap a template {\ttfamily F} taking literal constants of type {\ttfamily T} into an Invokable }{\pageref{structutl_1_1meta_1_1quote__i}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_random}{testing\+::internal\+::\+Random}} }{\pageref{classtesting_1_1internal_1_1_random}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1random__access__iterator__tag}{utl\+::random\+\_\+access\+\_\+iterator\+\_\+tag}} }{\pageref{structutl_1_1random__access__iterator__tag}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_range_generator}{testing\+::internal\+::\+Range\+Generator$<$ T, Increment\+T $>$}} }{\pageref{classtesting_1_1internal_1_1_range_generator}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_r_e}{testing\+::internal\+::\+RE}} }{\pageref{classtesting_1_1internal_1_1_r_e}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtesting_1_1internal_1_1_relation_to_source_copy}{testing\+::internal\+::\+Relation\+To\+Source\+Copy}} }{\pageref{structtesting_1_1internal_1_1_relation_to_source_copy}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtesting_1_1internal_1_1_relation_to_source_reference}{testing\+::internal\+::\+Relation\+To\+Source\+Reference}} }{\pageref{structtesting_1_1internal_1_1_relation_to_source_reference}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtesting_1_1internal_1_1_remove_const}{testing\+::internal\+::\+Remove\+Const$<$ T $>$}} }{\pageref{structtesting_1_1internal_1_1_remove_const}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtesting_1_1internal_1_1_remove_const_3_01const_01_t_01_4}{testing\+::internal\+::\+Remove\+Const$<$ const T $>$}} }{\pageref{structtesting_1_1internal_1_1_remove_const_3_01const_01_t_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtesting_1_1internal_1_1_remove_const_3_01const_01_t[_n]_4}{testing\+::internal\+::\+Remove\+Const$<$ const T\mbox{[}\+N\mbox{]}$>$}} }{\pageref{structtesting_1_1internal_1_1_remove_const_3_01const_01_t[_n]_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtesting_1_1internal_1_1_remove_reference}{testing\+::internal\+::\+Remove\+Reference$<$ T $>$}} }{\pageref{structtesting_1_1internal_1_1_remove_reference}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtesting_1_1internal_1_1_remove_reference_3_01_t_01_6_01_4}{testing\+::internal\+::\+Remove\+Reference$<$ T \& $>$}} }{\pageref{structtesting_1_1internal_1_1_remove_reference_3_01_t_01_6_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1replace__if__impl_1_1replace__if__}{utl\+::meta\+::replace\+\_\+if\+\_\+impl\+::replace\+\_\+if\+\_\+$<$ typename, typename, typename, typename $>$}} }{\pageref{structutl_1_1meta_1_1replace__if__impl_1_1replace__if__}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_01_head_00_01_tail_8_8_8_dfa8065a3617f53ecded260506092a07}{utl\+::meta\+::replace\+\_\+if\+\_\+impl\+::replace\+\_\+if\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, T, Ret $>$}} }{\pageref{structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_01_head_00_01_tail_8_8_8_dfa8065a3617f53ecded260506092a07}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_4_00_01_fn_00_01_t_00_01_ret_01_4}{utl\+::meta\+::replace\+\_\+if\+\_\+impl\+::replace\+\_\+if\+\_\+$<$ typelist$<$$>$, Fn, T, Ret $>$}} }{\pageref{structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_4_00_01_fn_00_01_t_00_01_ret_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold__}{utl\+::meta\+::rev\+\_\+fold\+\_\+impl\+::rev\+\_\+fold\+\_\+$<$ typename, typename, typename $>$}} }{\pageref{structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold__}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4}{utl\+::meta\+::rev\+\_\+fold\+\_\+impl\+::rev\+\_\+fold\+\_\+$<$ typelist$<$ Head, Tail... $>$, V, Fn $>$}} }{\pageref{structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_tail_01_4_00_01_v_00_01_fn_01_4}{utl\+::meta\+::rev\+\_\+fold\+\_\+impl\+::rev\+\_\+fold\+\_\+$<$ typelist$<$ Tail $>$, V, Fn $>$}} }{\pageref{structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_tail_01_4_00_01_v_00_01_fn_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_4_00_01_v_00_01_fn_01_4}{utl\+::meta\+::rev\+\_\+fold\+\_\+impl\+::rev\+\_\+fold\+\_\+$<$ typelist$<$$>$, V, Fn $>$}} }{\pageref{structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_4_00_01_v_00_01_fn_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1reverse__impl_1_1reverse__}{utl\+::meta\+::reverse\+\_\+impl\+::reverse\+\_\+$<$ List, V $>$}} }{\pageref{structutl_1_1meta_1_1reverse__impl_1_1reverse__}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1same__}{utl\+::meta\+::same\+\_\+$<$ \+\_\+\+T1, \+\_\+\+T2 $>$}} }{\pageref{structutl_1_1meta_1_1same__}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1same___3_01___tp_00_01___tp_01_4}{utl\+::meta\+::same\+\_\+$<$ \+\_\+\+Tp, \+\_\+\+Tp $>$}} }{\pageref{structutl_1_1meta_1_1same___3_01___tp_00_01___tp_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1same__as}{utl\+::meta\+::same\+\_\+as$<$ T1 $>$}} }{\pageref{structutl_1_1meta_1_1same__as}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1_scoped_trace}{testing\+::\+Scoped\+Trace}} }{\pageref{classtesting_1_1_scoped_trace}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1seek__if__impl_1_1seek__if__}{utl\+::meta\+::seek\+\_\+if\+\_\+impl\+::seek\+\_\+if\+\_\+$<$ typename, typename, index\+\_\+t $>$}} }{\pageref{structutl_1_1meta_1_1seek__if__impl_1_1seek__if__}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4}{utl\+::meta\+::seek\+\_\+if\+\_\+impl\+::seek\+\_\+if\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, N $>$}} }{\pageref{structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4}{utl\+::meta\+::seek\+\_\+if\+\_\+impl\+::seek\+\_\+if\+\_\+$<$ typelist$<$$>$, Fn, N $>$}} }{\pageref{structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtest__spi_1_1_s_p_i}{test\+\_\+spi\+::\+S\+PI}} }{\pageref{classtest__spi_1_1_s_p_i}}{} +\item\contentsline{section}{\mbox{\hyperlink{classutl_1_1spi__bb__i}{utl\+::spi\+\_\+bb\+\_\+i$<$ impl\+\_\+t, C\+P\+O\+L, C\+P\+H\+A, Bit\+Order $>$}} \\*A bit banking implementation of spi bus inherited from \mbox{\hyperlink{classutl_1_1spi__i}{spi\+\_\+i}} base class }{\pageref{classutl_1_1spi__bb__i}}{} +\item\contentsline{section}{\mbox{\hyperlink{classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4}{utl\+::spi\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag, C\+P\+O\+L, C\+P\+H\+A, Bit\+Order $>$}} \\*A virtual base class interface specialization. Using the private virtual interface we provide the interface from \mbox{\hyperlink{classutl_1_1spi__i_3_01virtual__tag_01_4}{spi\+\_\+i$<$virtual\+\_\+tag$>$}} }{\pageref{classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{classutl_1_1spi__i}{utl\+::spi\+\_\+i$<$ impl\+\_\+t $>$}} }{\pageref{classutl_1_1spi__i}}{} +\item\contentsline{section}{\mbox{\hyperlink{classutl_1_1spi__i_3_01virtual__tag_01_4}{utl\+::spi\+\_\+i$<$ virtual\+\_\+tag $>$}} \\*A virtual base class implementation }{\pageref{classutl_1_1spi__i_3_01virtual__tag_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtesting_1_1internal_1_1_static_assert_type_eq_helper}{testing\+::internal\+::\+Static\+Assert\+Type\+Eq\+Helper$<$ T1, T2 $>$}} }{\pageref{structtesting_1_1internal_1_1_static_assert_type_eq_helper}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtesting_1_1internal_1_1_static_assert_type_eq_helper_3_01_t_00_01_t_01_4}{testing\+::internal\+::\+Static\+Assert\+Type\+Eq\+Helper$<$ T, T $>$}} }{\pageref{structtesting_1_1internal_1_1_static_assert_type_eq_helper_3_01_t_00_01_t_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtesting_1_1internal_1_1_suite_api_resolver}{testing\+::internal\+::\+Suite\+Api\+Resolver$<$ T $>$}} }{\pageref{structtesting_1_1internal_1_1_suite_api_resolver}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1_test}{testing\+::\+Test}} }{\pageref{classtesting_1_1_test}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtest__1w_1_1_test__1w__impl}{test\+\_\+1w\+::\+Test\+\_\+1w\+\_\+impl}} }{\pageref{classtest__1w_1_1_test__1w__impl}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtest__spi_1_1_test__spi__impl}{test\+\_\+spi\+::\+Test\+\_\+spi\+\_\+impl}} }{\pageref{classtest__spi_1_1_test__spi__impl}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1_test_event_listener}{testing\+::\+Test\+Event\+Listener}} }{\pageref{classtesting_1_1_test_event_listener}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1_test_event_listeners}{testing\+::\+Test\+Event\+Listeners}} }{\pageref{classtesting_1_1_test_event_listeners}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_test_factory_base}{testing\+::internal\+::\+Test\+Factory\+Base}} }{\pageref{classtesting_1_1internal_1_1_test_factory_base}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_test_factory_impl}{testing\+::internal\+::\+Test\+Factory\+Impl$<$ Test\+Class $>$}} }{\pageref{classtesting_1_1internal_1_1_test_factory_impl}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1_test_info}{testing\+::\+Test\+Info}} }{\pageref{classtesting_1_1_test_info}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_test_meta_factory}{testing\+::internal\+::\+Test\+Meta\+Factory$<$ Test\+Suite $>$}} }{\pageref{classtesting_1_1internal_1_1_test_meta_factory}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_test_meta_factory_base}{testing\+::internal\+::\+Test\+Meta\+Factory\+Base$<$ Param\+Type $>$}} }{\pageref{classtesting_1_1internal_1_1_test_meta_factory_base}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtesting_1_1_test_param_info}{testing\+::\+Test\+Param\+Info$<$ Param\+Type $>$}} }{\pageref{structtesting_1_1_test_param_info}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1_test_property}{testing\+::\+Test\+Property}} }{\pageref{classtesting_1_1_test_property}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1_test_result}{testing\+::\+Test\+Result}} }{\pageref{classtesting_1_1_test_result}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1_test_suite}{testing\+::\+Test\+Suite}} }{\pageref{classtesting_1_1_test_suite}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1_test_with_param}{testing\+::\+Test\+With\+Param$<$ T $>$}} }{\pageref{classtesting_1_1_test_with_param}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_thread_local}{testing\+::internal\+::\+Thread\+Local$<$ T $>$}} }{\pageref{classtesting_1_1internal_1_1_thread_local}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtest__ostream__dev_1_1_tostream___idev}{test\+\_\+ostream\+\_\+dev\+::\+Tostream\+\_\+\+Idev}} }{\pageref{classtest__ostream__dev_1_1_tostream___idev}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtest__ostream__dev_1_1_tostream___vdev}{test\+\_\+ostream\+\_\+dev\+::\+Tostream\+\_\+\+Vdev}} }{\pageref{classtest__ostream__dev_1_1_tostream___vdev}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1transform__impl_1_1transform__}{utl\+::meta\+::transform\+\_\+impl\+::transform\+\_\+$<$ typename, typename $>$}} }{\pageref{structutl_1_1meta_1_1transform__impl_1_1transform__}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts_8_8_8_01_40fe2b1c8ede658aadb6925de73541689}{utl\+::meta\+::transform\+\_\+impl\+::transform\+\_\+$<$ typelist$<$ typelist$<$ Ts... $>$, Fn $>$, void\+\_\+t$<$ invoke$<$ Fn, Ts $>$... $>$ $>$}} }{\pageref{structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts_8_8_8_01_40fe2b1c8ede658aadb6925de73541689}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts0_8_8_8_01_8fba6bf3d0565d17a96950cb517db5f1}{utl\+::meta\+::transform\+\_\+impl\+::transform\+\_\+$<$ typelist$<$ typelist$<$ Ts0... $>$, typelist$<$ Ts1... $>$, Fn $>$, void\+\_\+t$<$ invoke$<$ Fn, Ts0, Ts1 $>$... $>$ $>$}} }{\pageref{structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts0_8_8_8_01_8fba6bf3d0565d17a96950cb517db5f1}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy__}{utl\+::meta\+::transform\+\_\+lazy\+\_\+impl\+::transform\+\_\+lazy\+\_\+$<$ typename, typename $>$}} }{\pageref{structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy__}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t56243bc35bf73da8271cb88f34751f3a}{utl\+::meta\+::transform\+\_\+lazy\+\_\+impl\+::transform\+\_\+lazy\+\_\+$<$ typelist$<$ typelist$<$ Ts... $>$, Fn $>$, void\+\_\+t$<$ invoke$<$ Fn, Ts $>$... $>$ $>$}} }{\pageref{structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t56243bc35bf73da8271cb88f34751f3a}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t14ff615a4bff6c4c3701df9c38aaa6a5}{utl\+::meta\+::transform\+\_\+lazy\+\_\+impl\+::transform\+\_\+lazy\+\_\+$<$ typelist$<$ typelist$<$ Ts0... $>$, typelist$<$ Ts1... $>$, Fn $>$, void\+\_\+t$<$ invoke$<$ Fn, Ts0, Ts1 $>$... $>$ $>$}} }{\pageref{structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t14ff615a4bff6c4c3701df9c38aaa6a5}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1detail_1_1try__invoke}{utl\+::detail\+::try\+\_\+invoke$<$ \+\_\+\+Callable, \+\_\+\+Args $>$}} }{\pageref{structutl_1_1detail_1_1try__invoke}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1array__traits_3_01___tp_00_010_01_4_1_1type}{utl\+::array\+\_\+traits$<$ \+\_\+\+Tp, 0 $>$\+::type}} }{\pageref{structutl_1_1array__traits_3_01___tp_00_010_01_4_1_1type}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1id__traits_3_01___tp_00_010_01_4_1_1type}{utl\+::id\+\_\+traits$<$ \+\_\+\+Tp, 0 $>$\+::type}} }{\pageref{structutl_1_1id__traits_3_01___tp_00_010_01_4_1_1type}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_type_id_helper}{testing\+::internal\+::\+Type\+Id\+Helper$<$ T $>$}} }{\pageref{classtesting_1_1internal_1_1_type_id_helper}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1typelist}{utl\+::meta\+::typelist$<$ Ts $>$}} }{\pageref{structutl_1_1meta_1_1typelist}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal2_1_1_type_without_formatter}{testing\+::internal2\+::\+Type\+Without\+Formatter$<$ T, k\+Type\+Kind $>$}} }{\pageref{classtesting_1_1internal2_1_1_type_without_formatter}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal2_1_1_type_without_formatter_3_01_t_00_01k_convertible_to_integer_01_4}{testing\+::internal2\+::\+Type\+Without\+Formatter$<$ T, k\+Convertible\+To\+Integer $>$}} }{\pageref{classtesting_1_1internal2_1_1_type_without_formatter_3_01_t_00_01k_convertible_to_integer_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal2_1_1_type_without_formatter_3_01_t_00_01k_protobuf_01_4}{testing\+::internal2\+::\+Type\+Without\+Formatter$<$ T, k\+Protobuf $>$}} }{\pageref{classtesting_1_1internal2_1_1_type_without_formatter_3_01_t_00_01k_protobuf_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_type_with_size}{testing\+::internal\+::\+Type\+With\+Size$<$ size $>$}} }{\pageref{classtesting_1_1internal_1_1_type_with_size}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_type_with_size_3_014_01_4}{testing\+::internal\+::\+Type\+With\+Size$<$ 4 $>$}} }{\pageref{classtesting_1_1internal_1_1_type_with_size_3_014_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_type_with_size_3_018_01_4}{testing\+::internal\+::\+Type\+With\+Size$<$ 8 $>$}} }{\pageref{classtesting_1_1internal_1_1_type_with_size_3_018_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1_unit_test}{testing\+::\+Unit\+Test}} }{\pageref{classtesting_1_1_unit_test}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_universal_printer}{testing\+::internal\+::\+Universal\+Printer$<$ T $>$}} }{\pageref{classtesting_1_1internal_1_1_universal_printer}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_universal_printer_3_01_t_01_6_01_4}{testing\+::internal\+::\+Universal\+Printer$<$ T \& $>$}} }{\pageref{classtesting_1_1internal_1_1_universal_printer_3_01_t_01_6_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_universal_printer_3_01_t[_n]_4}{testing\+::internal\+::\+Universal\+Printer$<$ T\mbox{[}\+N\mbox{]}$>$}} }{\pageref{classtesting_1_1internal_1_1_universal_printer_3_01_t[_n]_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_universal_terse_printer}{testing\+::internal\+::\+Universal\+Terse\+Printer$<$ T $>$}} }{\pageref{classtesting_1_1internal_1_1_universal_terse_printer}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_universal_terse_printer_3_01char_01_5_01_4}{testing\+::internal\+::\+Universal\+Terse\+Printer$<$ char $\ast$ $>$}} }{\pageref{classtesting_1_1internal_1_1_universal_terse_printer_3_01char_01_5_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_universal_terse_printer_3_01const_01char_01_5_01_4}{testing\+::internal\+::\+Universal\+Terse\+Printer$<$ const char $\ast$ $>$}} }{\pageref{classtesting_1_1internal_1_1_universal_terse_printer_3_01const_01char_01_5_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_universal_terse_printer_3_01const_01wchar__t_01_5_01_4}{testing\+::internal\+::\+Universal\+Terse\+Printer$<$ const wchar\+\_\+t $\ast$ $>$}} }{\pageref{classtesting_1_1internal_1_1_universal_terse_printer_3_01const_01wchar__t_01_5_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_universal_terse_printer_3_01_t_01_6_01_4}{testing\+::internal\+::\+Universal\+Terse\+Printer$<$ T \& $>$}} }{\pageref{classtesting_1_1internal_1_1_universal_terse_printer_3_01_t_01_6_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_universal_terse_printer_3_01_t[_n]_4}{testing\+::internal\+::\+Universal\+Terse\+Printer$<$ T\mbox{[}\+N\mbox{]}$>$}} }{\pageref{classtesting_1_1internal_1_1_universal_terse_printer_3_01_t[_n]_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_universal_terse_printer_3_01wchar__t_01_5_01_4}{testing\+::internal\+::\+Universal\+Terse\+Printer$<$ wchar\+\_\+t $\ast$ $>$}} }{\pageref{classtesting_1_1internal_1_1_universal_terse_printer_3_01wchar__t_01_5_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_value_array}{testing\+::internal\+::\+Value\+Array$<$ Ts $>$}} }{\pageref{classtesting_1_1internal_1_1_value_array}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1internal_1_1_values_in_iterator_range_generator}{testing\+::internal\+::\+Values\+In\+Iterator\+Range\+Generator$<$ T $>$}} }{\pageref{classtesting_1_1internal_1_1_values_in_iterator_range_generator}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1virtual__tag}{utl\+::virtual\+\_\+tag}} \\*Virtual support tag type }{\pageref{structutl_1_1virtual__tag}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1when__}{utl\+::meta\+::detail\+::when\+\_\+$<$ If $>$}} }{\pageref{structutl_1_1meta_1_1detail_1_1when__}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1when___3_01true_01_4}{utl\+::meta\+::detail\+::when\+\_\+$<$ true $>$}} }{\pageref{structutl_1_1meta_1_1detail_1_1when___3_01true_01_4}}{} +\item\contentsline{section}{\mbox{\hyperlink{classtesting_1_1_with_param_interface}{testing\+::\+With\+Param\+Interface$<$ T $>$}} }{\pageref{classtesting_1_1_with_param_interface}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1wrap}{utl\+::meta\+::wrap$<$ F $>$}} }{\pageref{structutl_1_1meta_1_1wrap}}{} +\item\contentsline{section}{\mbox{\hyperlink{structutl_1_1meta_1_1wrap__i}{utl\+::meta\+::wrap\+\_\+i$<$ T, F $>$}} \\*Wrap a template {\ttfamily F} taking literal constants of type {\ttfamily T} into an Invokable }{\pageref{structutl_1_1meta_1_1wrap__i}}{} +\item\contentsline{section}{\mbox{\hyperlink{structtesting_1_1internal_1_1_wrap_printer_type}{testing\+::internal\+::\+Wrap\+Printer\+Type$<$ type $>$}} }{\pageref{structtesting_1_1internal_1_1_wrap_printer_type}}{} +\end{DoxyCompactList} diff --git a/doc/latex/array_8h.tex b/doc/latex/array_8h.tex new file mode 100644 index 0000000..52946af --- /dev/null +++ b/doc/latex/array_8h.tex @@ -0,0 +1,47 @@ +\hypertarget{array_8h}{}\section{include/utl/container/array.h File Reference} +\label{array_8h}\index{include/utl/container/array.\+h@{include/utl/container/array.\+h}} +{\ttfamily \#include $<$utl/core/impl.\+h$>$}\newline +{\ttfamily \#include $<$algorithm$>$}\newline +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structutl_1_1array__traits}{utl\+::array\+\_\+traits$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$}} +\begin{DoxyCompactList}\small\item\em array container traits helper \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1array__traits_3_01___tp_00_010_01_4}{utl\+::array\+\_\+traits$<$ \+\_\+\+Tp, 0 $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1array__traits_3_01___tp_00_010_01_4_1_1type}{utl\+::array\+\_\+traits$<$ \+\_\+\+Tp, 0 $>$\+::type}} +\item +struct \mbox{\hyperlink{structutl_1_1array}{utl\+::array$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$}} +\begin{DoxyCompactList}\small\item\em A standard container for storing a fixed size sequence of elements. \end{DoxyCompactList}\end{DoxyCompactItemize} +\subsection*{Namespaces} +\begin{DoxyCompactItemize} +\item + \mbox{\hyperlink{namespaceutl}{utl}} +\begin{DoxyCompactList}\small\item\em S\+TL\textquotesingle{}s core language concepts. \end{DoxyCompactList}\end{DoxyCompactItemize} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename \+\_\+\+Tp , size\+\_\+t \+\_\+\+Nm$>$ }\\void \mbox{\hyperlink{namespaceutl_ae0f873b4883af7cc18cb23dd2810f4e6}{utl\+::swap}} (array$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&lhs, array$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&rhs) noexcept(noexcept(lhs.\+swap(rhs))) +\item +{\footnotesize template$<$size\+\_\+t \+\_\+\+Int, typename \+\_\+\+Tp , size\+\_\+t \+\_\+\+Nm$>$ }\\constexpr \+\_\+\+Tp \& \mbox{\hyperlink{namespaceutl_a29057d2e164fe6dd3f3095f0d69c6546}{utl\+::get}} (array$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&arr) noexcept +\item +{\footnotesize template$<$size\+\_\+t \+\_\+\+Int, typename \+\_\+\+Tp , size\+\_\+t \+\_\+\+Nm$>$ }\\constexpr \+\_\+\+Tp \&\& \mbox{\hyperlink{namespaceutl_ab0087ff901c30848b7ac6f5ffa31f5cf}{utl\+::get}} (array$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&\&arr) noexcept +\item +{\footnotesize template$<$size\+\_\+t \+\_\+\+Int, typename \+\_\+\+Tp , size\+\_\+t \+\_\+\+Nm$>$ }\\constexpr const \+\_\+\+Tp \& \mbox{\hyperlink{namespaceutl_aad376ab583a0db920180465f9f35d67b}{utl\+::get}} (const array$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&arr) noexcept +\end{DoxyCompactItemize} +\begin{Indent}\textbf{ Array comparisons.}\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename \+\_\+\+Tp , size\+\_\+t \+\_\+\+Nm$>$ }\\bool \mbox{\hyperlink{namespaceutl_a841f326020eb98fa4b8f764bf35442c0}{utl\+::operator==}} (const array$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&lhs, const array$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&rhs) +\item +{\footnotesize template$<$typename \+\_\+\+Tp , size\+\_\+t \+\_\+\+Nm$>$ }\\bool \mbox{\hyperlink{namespaceutl_a45cd30dab2ec904b6fd64641d777b35e}{utl\+::operator!=}} (const array$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&lhs, const array$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&rhs) +\item +{\footnotesize template$<$typename \+\_\+\+Tp , size\+\_\+t \+\_\+\+Nm$>$ }\\bool \mbox{\hyperlink{namespaceutl_a633f700b294b53e4f58183fd4bc6963f}{utl\+::operator$<$}} (const array$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&lhs, const array$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&rhs) +\item +{\footnotesize template$<$typename \+\_\+\+Tp , size\+\_\+t \+\_\+\+Nm$>$ }\\bool \mbox{\hyperlink{namespaceutl_a1d5c761bf59037aeed9157e4f63bed9e}{utl\+::operator$>$}} (const array$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&lhs, const array$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&rhs) +\item +{\footnotesize template$<$typename \+\_\+\+Tp , size\+\_\+t \+\_\+\+Nm$>$ }\\bool \mbox{\hyperlink{namespaceutl_a36f9fadffe88aefcc2d37249eaf951c3}{utl\+::operator$<$=}} (const array$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&lhs, const array$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&rhs) +\item +{\footnotesize template$<$typename \+\_\+\+Tp , size\+\_\+t \+\_\+\+Nm$>$ }\\bool \mbox{\hyperlink{namespaceutl_a942cac675f6dd1313807eccb407ebec6}{utl\+::operator$>$=}} (const array$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&lhs, const array$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&rhs) +\end{DoxyCompactItemize} +\end{Indent} diff --git a/doc/latex/classtest__1w_1_1_o_w.eps b/doc/latex/classtest__1w_1_1_o_w.eps new file mode 100644 index 0000000..0b57a90 --- /dev/null +++ b/doc/latex/classtest__1w_1_1_o_w.eps @@ -0,0 +1,203 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 245.901639 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.033333 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 3 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(test_1w::OW) cw +(utl::_1wire_uart_i< OW >) cw +(utl::_1wire_i< _1wire_uart_i< Impl_t > >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (test_1w::OW) 0.000000 0.000000 box + (utl::_1wire_uart_i< OW >) 0.000000 1.000000 box + (utl::_1wire_i< _1wire_uart_i< Impl_t > >) 0.000000 2.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in +solid +0 0.000000 1.000000 out +solid +1 0.000000 2.000000 in diff --git a/doc/latex/classtest__1w_1_1_o_w.tex b/doc/latex/classtest__1w_1_1_o_w.tex new file mode 100644 index 0000000..b0a3b11 --- /dev/null +++ b/doc/latex/classtest__1w_1_1_o_w.tex @@ -0,0 +1,21 @@ +\hypertarget{classtest__1w_1_1_o_w}{}\section{test\+\_\+1w\+:\+:OW Class Reference} +\label{classtest__1w_1_1_o_w}\index{test\+\_\+1w\+::\+OW@{test\+\_\+1w\+::\+OW}} +Inheritance diagram for test\+\_\+1w\+:\+:OW\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3.000000cm]{classtest__1w_1_1_o_w} +\end{center} +\end{figure} +\subsection*{Additional Inherited Members} + + +\subsection{Detailed Description} + + +Definition at line 33 of file test\+\_\+1w\+\_\+impl.\+cpp. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/tests/\mbox{\hyperlink{test__1w__impl_8cpp}{test\+\_\+1w\+\_\+impl.\+cpp}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtest__1w_1_1_test__1w__impl.eps b/doc/latex/classtest__1w_1_1_test__1w__impl.eps new file mode 100644 index 0000000..43771e9 --- /dev/null +++ b/doc/latex/classtest__1w_1_1_test__1w__impl.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 279.720280 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.787500 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(test_1w::Test_1w_impl) cw +(testing::Test) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (test_1w::Test_1w_impl) 0.000000 0.000000 box + (testing::Test) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/classtest__1w_1_1_test__1w__impl.tex b/doc/latex/classtest__1w_1_1_test__1w__impl.tex new file mode 100644 index 0000000..3aee9b1 --- /dev/null +++ b/doc/latex/classtest__1w_1_1_test__1w__impl.tex @@ -0,0 +1,39 @@ +\hypertarget{classtest__1w_1_1_test__1w__impl}{}\section{test\+\_\+1w\+:\+:Test\+\_\+1w\+\_\+impl Class Reference} +\label{classtest__1w_1_1_test__1w__impl}\index{test\+\_\+1w\+::\+Test\+\_\+1w\+\_\+impl@{test\+\_\+1w\+::\+Test\+\_\+1w\+\_\+impl}} +Inheritance diagram for test\+\_\+1w\+:\+:Test\+\_\+1w\+\_\+impl\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{classtest__1w_1_1_test__1w__impl} +\end{center} +\end{figure} +\subsection*{Protected Attributes} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classtest__1w_1_1_o_w}{OW}} \mbox{\hyperlink{classtest__1w_1_1_test__1w__impl_aa0eda9594f798f3ebed80f179741293a}{ow}} +\end{DoxyCompactItemize} +\subsection*{Additional Inherited Members} + + +\subsection{Detailed Description} + + +Definition at line 43 of file test\+\_\+1w\+\_\+impl.\+cpp. + + + +\subsection{Member Data Documentation} +\mbox{\Hypertarget{classtest__1w_1_1_test__1w__impl_aa0eda9594f798f3ebed80f179741293a}\label{classtest__1w_1_1_test__1w__impl_aa0eda9594f798f3ebed80f179741293a}} +\index{test\+\_\+1w\+::\+Test\+\_\+1w\+\_\+impl@{test\+\_\+1w\+::\+Test\+\_\+1w\+\_\+impl}!ow@{ow}} +\index{ow@{ow}!test\+\_\+1w\+::\+Test\+\_\+1w\+\_\+impl@{test\+\_\+1w\+::\+Test\+\_\+1w\+\_\+impl}} +\subsubsection{\texorpdfstring{ow}{ow}} +{\footnotesize\ttfamily \mbox{\hyperlink{classtest__1w_1_1_o_w}{OW}} test\+\_\+1w\+::\+Test\+\_\+1w\+\_\+impl\+::ow\hspace{0.3cm}{\ttfamily [protected]}} + + + +Definition at line 47 of file test\+\_\+1w\+\_\+impl.\+cpp. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/tests/\mbox{\hyperlink{test__1w__impl_8cpp}{test\+\_\+1w\+\_\+impl.\+cpp}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtest__concepts_1_1_base.eps b/doc/latex/classtest__concepts_1_1_base.eps new file mode 100644 index 0000000..085bc95 --- /dev/null +++ b/doc/latex/classtest__concepts_1_1_base.eps @@ -0,0 +1,203 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 387.096774 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.291667 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 3 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(test_concepts::Base) cw +(test_concepts::Derived1) cw +(test_concepts::Derived2) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (test_concepts::Base) 0.000000 2.000000 box + (test_concepts::Derived1) 0.000000 1.000000 box + (test_concepts::Derived2) 0.000000 0.000000 box + +% ----- relations ----- + +solid +1 0.000000 1.250000 out +solid +0 0.000000 1.750000 in +solid +1 0.000000 0.250000 out +solid +0 0.000000 0.750000 in diff --git a/doc/latex/classtest__concepts_1_1_base.tex b/doc/latex/classtest__concepts_1_1_base.tex new file mode 100644 index 0000000..23b2c2a --- /dev/null +++ b/doc/latex/classtest__concepts_1_1_base.tex @@ -0,0 +1,20 @@ +\hypertarget{classtest__concepts_1_1_base}{}\section{test\+\_\+concepts\+:\+:Base Class Reference} +\label{classtest__concepts_1_1_base}\index{test\+\_\+concepts\+::\+Base@{test\+\_\+concepts\+::\+Base}} +Inheritance diagram for test\+\_\+concepts\+:\+:Base\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3.000000cm]{classtest__concepts_1_1_base} +\end{center} +\end{figure} + + +\subsection{Detailed Description} + + +Definition at line 53 of file T\+Concepts.\+cpp. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/tests/\mbox{\hyperlink{_t_concepts_8cpp}{T\+Concepts.\+cpp}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtest__concepts_1_1_derived1.eps b/doc/latex/classtest__concepts_1_1_derived1.eps new file mode 100644 index 0000000..c437abd --- /dev/null +++ b/doc/latex/classtest__concepts_1_1_derived1.eps @@ -0,0 +1,203 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 387.096774 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.291667 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 3 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(test_concepts::Derived1) cw +(test_concepts::Base) cw +(test_concepts::Derived2) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (test_concepts::Derived1) 0.000000 1.000000 box + (test_concepts::Base) 0.000000 2.000000 box + (test_concepts::Derived2) 0.000000 0.000000 box + +% ----- relations ----- + +solid +0 0.000000 1.000000 out +solid +1 0.000000 2.000000 in +solid +1 0.000000 0.250000 out +solid +0 0.000000 0.750000 in diff --git a/doc/latex/classtest__concepts_1_1_derived1.tex b/doc/latex/classtest__concepts_1_1_derived1.tex new file mode 100644 index 0000000..ed40d3d --- /dev/null +++ b/doc/latex/classtest__concepts_1_1_derived1.tex @@ -0,0 +1,20 @@ +\hypertarget{classtest__concepts_1_1_derived1}{}\section{test\+\_\+concepts\+:\+:Derived1 Class Reference} +\label{classtest__concepts_1_1_derived1}\index{test\+\_\+concepts\+::\+Derived1@{test\+\_\+concepts\+::\+Derived1}} +Inheritance diagram for test\+\_\+concepts\+:\+:Derived1\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3.000000cm]{classtest__concepts_1_1_derived1} +\end{center} +\end{figure} + + +\subsection{Detailed Description} + + +Definition at line 54 of file T\+Concepts.\+cpp. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/tests/\mbox{\hyperlink{_t_concepts_8cpp}{T\+Concepts.\+cpp}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtest__concepts_1_1_derived2.eps b/doc/latex/classtest__concepts_1_1_derived2.eps new file mode 100644 index 0000000..6b47641 --- /dev/null +++ b/doc/latex/classtest__concepts_1_1_derived2.eps @@ -0,0 +1,203 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 387.096774 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.291667 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 3 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(test_concepts::Derived2) cw +(test_concepts::Derived1) cw +(test_concepts::Base) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (test_concepts::Derived2) 0.000000 0.000000 box + (test_concepts::Derived1) 0.000000 1.000000 box + (test_concepts::Base) 0.000000 2.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in +solid +0 0.000000 1.000000 out +solid +1 0.000000 2.000000 in diff --git a/doc/latex/classtest__concepts_1_1_derived2.tex b/doc/latex/classtest__concepts_1_1_derived2.tex new file mode 100644 index 0000000..f0725aa --- /dev/null +++ b/doc/latex/classtest__concepts_1_1_derived2.tex @@ -0,0 +1,20 @@ +\hypertarget{classtest__concepts_1_1_derived2}{}\section{test\+\_\+concepts\+:\+:Derived2 Class Reference} +\label{classtest__concepts_1_1_derived2}\index{test\+\_\+concepts\+::\+Derived2@{test\+\_\+concepts\+::\+Derived2}} +Inheritance diagram for test\+\_\+concepts\+:\+:Derived2\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3.000000cm]{classtest__concepts_1_1_derived2} +\end{center} +\end{figure} + + +\subsection{Detailed Description} + + +Definition at line 55 of file T\+Concepts.\+cpp. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/tests/\mbox{\hyperlink{_t_concepts_8cpp}{T\+Concepts.\+cpp}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtest__concepts_1_1_have_operator_base.tex b/doc/latex/classtest__concepts_1_1_have_operator_base.tex new file mode 100644 index 0000000..c1a13f3 --- /dev/null +++ b/doc/latex/classtest__concepts_1_1_have_operator_base.tex @@ -0,0 +1,50 @@ +\hypertarget{classtest__concepts_1_1_have_operator_base}{}\section{test\+\_\+concepts\+:\+:Have\+Operator\+Base Class Reference} +\label{classtest__concepts_1_1_have_operator_base}\index{test\+\_\+concepts\+::\+Have\+Operator\+Base@{test\+\_\+concepts\+::\+Have\+Operator\+Base}} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classtest__concepts_1_1_have_operator_base_a5b1cfa094d6d536f44092e825a9dfd8b}{operator Base}} () +\end{DoxyCompactItemize} +\subsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classtest__concepts_1_1_base}{Base}} \mbox{\hyperlink{classtest__concepts_1_1_have_operator_base_af2b6e459482509ffbca2402906ddbd52}{base}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} + + +Definition at line 56 of file T\+Concepts.\+cpp. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtest__concepts_1_1_have_operator_base_a5b1cfa094d6d536f44092e825a9dfd8b}\label{classtest__concepts_1_1_have_operator_base_a5b1cfa094d6d536f44092e825a9dfd8b}} +\index{test\+\_\+concepts\+::\+Have\+Operator\+Base@{test\+\_\+concepts\+::\+Have\+Operator\+Base}!operator Base@{operator Base}} +\index{operator Base@{operator Base}!test\+\_\+concepts\+::\+Have\+Operator\+Base@{test\+\_\+concepts\+::\+Have\+Operator\+Base}} +\subsubsection{\texorpdfstring{operator Base()}{operator Base()}} +{\footnotesize\ttfamily test\+\_\+concepts\+::\+Have\+Operator\+Base\+::operator \mbox{\hyperlink{classtest__concepts_1_1_base}{Base}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 57 of file T\+Concepts.\+cpp. + + + +\subsection{Member Data Documentation} +\mbox{\Hypertarget{classtest__concepts_1_1_have_operator_base_af2b6e459482509ffbca2402906ddbd52}\label{classtest__concepts_1_1_have_operator_base_af2b6e459482509ffbca2402906ddbd52}} +\index{test\+\_\+concepts\+::\+Have\+Operator\+Base@{test\+\_\+concepts\+::\+Have\+Operator\+Base}!base@{base}} +\index{base@{base}!test\+\_\+concepts\+::\+Have\+Operator\+Base@{test\+\_\+concepts\+::\+Have\+Operator\+Base}} +\subsubsection{\texorpdfstring{base}{base}} +{\footnotesize\ttfamily \mbox{\hyperlink{classtest__concepts_1_1_base}{Base}} test\+\_\+concepts\+::\+Have\+Operator\+Base\+::base} + + + +Definition at line 58 of file T\+Concepts.\+cpp. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/tests/\mbox{\hyperlink{_t_concepts_8cpp}{T\+Concepts.\+cpp}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtest__concepts_1_1_have_perfect_forwarding.tex b/doc/latex/classtest__concepts_1_1_have_perfect_forwarding.tex new file mode 100644 index 0000000..4792413 --- /dev/null +++ b/doc/latex/classtest__concepts_1_1_have_perfect_forwarding.tex @@ -0,0 +1,33 @@ +\hypertarget{classtest__concepts_1_1_have_perfect_forwarding}{}\section{test\+\_\+concepts\+:\+:Have\+Perfect\+Forwarding Class Reference} +\label{classtest__concepts_1_1_have_perfect_forwarding}\index{test\+\_\+concepts\+::\+Have\+Perfect\+Forwarding@{test\+\_\+concepts\+::\+Have\+Perfect\+Forwarding}} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{classtest__concepts_1_1_have_perfect_forwarding_ad68602af66c1a516e8428408731839d1}{Have\+Perfect\+Forwarding}} (T \&\&) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} + + +Definition at line 50 of file T\+Concepts.\+cpp. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtest__concepts_1_1_have_perfect_forwarding_ad68602af66c1a516e8428408731839d1}\label{classtest__concepts_1_1_have_perfect_forwarding_ad68602af66c1a516e8428408731839d1}} +\index{test\+\_\+concepts\+::\+Have\+Perfect\+Forwarding@{test\+\_\+concepts\+::\+Have\+Perfect\+Forwarding}!Have\+Perfect\+Forwarding@{Have\+Perfect\+Forwarding}} +\index{Have\+Perfect\+Forwarding@{Have\+Perfect\+Forwarding}!test\+\_\+concepts\+::\+Have\+Perfect\+Forwarding@{test\+\_\+concepts\+::\+Have\+Perfect\+Forwarding}} +\subsubsection{\texorpdfstring{Have\+Perfect\+Forwarding()}{HavePerfectForwarding()}} +{\footnotesize\ttfamily template$<$class T $>$ \\ +test\+\_\+concepts\+::\+Have\+Perfect\+Forwarding\+::\+Have\+Perfect\+Forwarding (\begin{DoxyParamCaption}\item[{T \&\&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 51 of file T\+Concepts.\+cpp. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/tests/\mbox{\hyperlink{_t_concepts_8cpp}{T\+Concepts.\+cpp}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtest__i2c_1_1_i2_c.eps b/doc/latex/classtest__i2c_1_1_i2_c.eps new file mode 100644 index 0000000..aed9399 --- /dev/null +++ b/doc/latex/classtest__i2c_1_1_i2_c.eps @@ -0,0 +1,203 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 331.491713 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.508333 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 3 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(test_i2c::I2C) cw +(utl::i2c_bb_i< I2C >) cw +(utl::i2c_i< i2c_bb_i< I2C > >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (test_i2c::I2C) 0.000000 0.000000 box + (utl::i2c_bb_i< I2C >) 0.000000 1.000000 box + (utl::i2c_i< i2c_bb_i< I2C > >) 0.000000 2.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in +solid +0 0.000000 1.000000 out +solid +1 0.000000 2.000000 in diff --git a/doc/latex/classtest__i2c_1_1_i2_c.tex b/doc/latex/classtest__i2c_1_1_i2_c.tex new file mode 100644 index 0000000..8973997 --- /dev/null +++ b/doc/latex/classtest__i2c_1_1_i2_c.tex @@ -0,0 +1,39 @@ +\hypertarget{classtest__i2c_1_1_i2_c}{}\section{test\+\_\+i2c\+:\+:I2C Class Reference} +\label{classtest__i2c_1_1_i2_c}\index{test\+\_\+i2c\+::\+I2C@{test\+\_\+i2c\+::\+I2C}} +Inheritance diagram for test\+\_\+i2c\+:\+:I2C\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3.000000cm]{classtest__i2c_1_1_i2_c} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classtest__i2c_1_1_i2_c_accd54d8b7f168eece3d462194964f967}{I2C}} (uint32\+\_\+t clk=100000) noexcept +\end{DoxyCompactItemize} +\subsection*{Additional Inherited Members} + + +\subsection{Detailed Description} + + +Definition at line 33 of file test\+\_\+i2c\+\_\+impl.\+cpp. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtest__i2c_1_1_i2_c_accd54d8b7f168eece3d462194964f967}\label{classtest__i2c_1_1_i2_c_accd54d8b7f168eece3d462194964f967}} +\index{test\+\_\+i2c\+::\+I2C@{test\+\_\+i2c\+::\+I2C}!I2C@{I2C}} +\index{I2C@{I2C}!test\+\_\+i2c\+::\+I2C@{test\+\_\+i2c\+::\+I2C}} +\subsubsection{\texorpdfstring{I2\+C()}{I2C()}} +{\footnotesize\ttfamily test\+\_\+i2c\+::\+I2\+C\+::\+I2C (\begin{DoxyParamCaption}\item[{uint32\+\_\+t}]{clk = {\ttfamily 100000} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 50 of file test\+\_\+i2c\+\_\+impl.\+cpp. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/tests/\mbox{\hyperlink{test__i2c__impl_8cpp}{test\+\_\+i2c\+\_\+impl.\+cpp}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtest__ostream__dev_1_1_ostream__dev__impl.eps b/doc/latex/classtest__ostream__dev_1_1_ostream__dev__impl.eps new file mode 100644 index 0000000..2c1a21e --- /dev/null +++ b/doc/latex/classtest__ostream__dev_1_1_ostream__dev__impl.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 129.870130 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 3.850000 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(test_ostream_dev::Ostream_dev_impl) cw +(utl::ostream_dev< Ostream_dev_impl, test_data_t >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (test_ostream_dev::Ostream_dev_impl) 0.000000 0.000000 box + (utl::ostream_dev< Ostream_dev_impl, test_data_t >) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/classtest__ostream__dev_1_1_ostream__dev__impl.tex b/doc/latex/classtest__ostream__dev_1_1_ostream__dev__impl.tex new file mode 100644 index 0000000..3d58edf --- /dev/null +++ b/doc/latex/classtest__ostream__dev_1_1_ostream__dev__impl.tex @@ -0,0 +1,111 @@ +\hypertarget{classtest__ostream__dev_1_1_ostream__dev__impl}{}\section{test\+\_\+ostream\+\_\+dev\+:\+:Ostream\+\_\+dev\+\_\+impl Class Reference} +\label{classtest__ostream__dev_1_1_ostream__dev__impl}\index{test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+dev\+\_\+impl@{test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+dev\+\_\+impl}} +Inheritance diagram for test\+\_\+ostream\+\_\+dev\+:\+:Ostream\+\_\+dev\+\_\+impl\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{classtest__ostream__dev_1_1_ostream__dev__impl} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{namespacetest__ostream__dev_a63ac45c38a80885dda445ddee2a1e0c8}{test\+\_\+data\+\_\+t}} \& \mbox{\hyperlink{classtest__ostream__dev_1_1_ostream__dev__impl_a94ea8195e734ad5e6e76a263df86a7ab}{get\+LastV}} () +\end{DoxyCompactItemize} +\subsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +std\+::array$<$ \mbox{\hyperlink{namespacetest__ostream__dev_a63ac45c38a80885dda445ddee2a1e0c8}{test\+\_\+data\+\_\+t}}, \mbox{\hyperlink{classtest__ostream__dev_1_1_ostream__dev__impl_ae94524fafad7bf6c6f9dc07a4798648b}{N}} $>$ \mbox{\hyperlink{classtest__ostream__dev_1_1_ostream__dev__impl_a782792f34ec64257188ef223b969e148}{v}} \{\} +\item +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classtest__ostream__dev_1_1_ostream__dev__impl_aa37383bb13f3fe02f21fa7d8558158a9}{c}} \{0\} +\end{DoxyCompactItemize} +\subsection*{Static Public Attributes} +\begin{DoxyCompactItemize} +\item +static constexpr \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classtest__ostream__dev_1_1_ostream__dev__impl_ae94524fafad7bf6c6f9dc07a4798648b}{N}} =S\+I\+ZE +\end{DoxyCompactItemize} +\subsection*{Protected Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classtest__ostream__dev_1_1_ostream__dev__impl_a439ae6127956a8b3a049b35ac79fcf2b}{put\+\_\+}} (const \mbox{\hyperlink{namespacetest__ostream__dev_a63ac45c38a80885dda445ddee2a1e0c8}{test\+\_\+data\+\_\+t}} \&data) +\item +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classtest__ostream__dev_1_1_ostream__dev__impl_a7b3e45d7aab2cf5d4ee6fd21074ef86e}{put\+\_\+}} (const \mbox{\hyperlink{namespacetest__ostream__dev_a63ac45c38a80885dda445ddee2a1e0c8}{test\+\_\+data\+\_\+t}} $\ast$data, \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} n) +\end{DoxyCompactItemize} +\subsection*{Additional Inherited Members} + + +\subsection{Detailed Description} + + +Definition at line 40 of file test\+\_\+ostream\+\_\+dev.\+cpp. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtest__ostream__dev_1_1_ostream__dev__impl_a94ea8195e734ad5e6e76a263df86a7ab}\label{classtest__ostream__dev_1_1_ostream__dev__impl_a94ea8195e734ad5e6e76a263df86a7ab}} +\index{test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+dev\+\_\+impl@{test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+dev\+\_\+impl}!get\+LastV@{get\+LastV}} +\index{get\+LastV@{get\+LastV}!test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+dev\+\_\+impl@{test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+dev\+\_\+impl}} +\subsubsection{\texorpdfstring{get\+Last\+V()}{getLastV()}} +{\footnotesize\ttfamily \mbox{\hyperlink{namespacetest__ostream__dev_a63ac45c38a80885dda445ddee2a1e0c8}{test\+\_\+data\+\_\+t}}\& test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+dev\+\_\+impl\+::get\+LastV (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 63 of file test\+\_\+ostream\+\_\+dev.\+cpp. + +\mbox{\Hypertarget{classtest__ostream__dev_1_1_ostream__dev__impl_a439ae6127956a8b3a049b35ac79fcf2b}\label{classtest__ostream__dev_1_1_ostream__dev__impl_a439ae6127956a8b3a049b35ac79fcf2b}} +\index{test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+dev\+\_\+impl@{test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+dev\+\_\+impl}!put\+\_\+@{put\+\_\+}} +\index{put\+\_\+@{put\+\_\+}!test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+dev\+\_\+impl@{test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+dev\+\_\+impl}} +\subsubsection{\texorpdfstring{put\+\_\+()}{put\_()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+dev\+\_\+impl\+::put\+\_\+ (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{namespacetest__ostream__dev_a63ac45c38a80885dda445ddee2a1e0c8}{test\+\_\+data\+\_\+t}} \&}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [protected]}} + + + +Definition at line 50 of file test\+\_\+ostream\+\_\+dev.\+cpp. + +\mbox{\Hypertarget{classtest__ostream__dev_1_1_ostream__dev__impl_a7b3e45d7aab2cf5d4ee6fd21074ef86e}\label{classtest__ostream__dev_1_1_ostream__dev__impl_a7b3e45d7aab2cf5d4ee6fd21074ef86e}} +\index{test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+dev\+\_\+impl@{test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+dev\+\_\+impl}!put\+\_\+@{put\+\_\+}} +\index{put\+\_\+@{put\+\_\+}!test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+dev\+\_\+impl@{test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+dev\+\_\+impl}} +\subsubsection{\texorpdfstring{put\+\_\+()}{put\_()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+dev\+\_\+impl\+::put\+\_\+ (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{namespacetest__ostream__dev_a63ac45c38a80885dda445ddee2a1e0c8}{test\+\_\+data\+\_\+t}} $\ast$}]{data, }\item[{\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}}}]{n }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [protected]}} + + + +Definition at line 56 of file test\+\_\+ostream\+\_\+dev.\+cpp. + + + +\subsection{Member Data Documentation} +\mbox{\Hypertarget{classtest__ostream__dev_1_1_ostream__dev__impl_aa37383bb13f3fe02f21fa7d8558158a9}\label{classtest__ostream__dev_1_1_ostream__dev__impl_aa37383bb13f3fe02f21fa7d8558158a9}} +\index{test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+dev\+\_\+impl@{test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+dev\+\_\+impl}!c@{c}} +\index{c@{c}!test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+dev\+\_\+impl@{test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+dev\+\_\+impl}} +\subsubsection{\texorpdfstring{c}{c}} +{\footnotesize\ttfamily \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+dev\+\_\+impl\+::c \{0\}} + + + +Definition at line 46 of file test\+\_\+ostream\+\_\+dev.\+cpp. + +\mbox{\Hypertarget{classtest__ostream__dev_1_1_ostream__dev__impl_ae94524fafad7bf6c6f9dc07a4798648b}\label{classtest__ostream__dev_1_1_ostream__dev__impl_ae94524fafad7bf6c6f9dc07a4798648b}} +\index{test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+dev\+\_\+impl@{test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+dev\+\_\+impl}!N@{N}} +\index{N@{N}!test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+dev\+\_\+impl@{test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+dev\+\_\+impl}} +\subsubsection{\texorpdfstring{N}{N}} +{\footnotesize\ttfamily constexpr \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+dev\+\_\+impl\+::N =S\+I\+ZE\hspace{0.3cm}{\ttfamily [static]}} + + + +Definition at line 44 of file test\+\_\+ostream\+\_\+dev.\+cpp. + +\mbox{\Hypertarget{classtest__ostream__dev_1_1_ostream__dev__impl_a782792f34ec64257188ef223b969e148}\label{classtest__ostream__dev_1_1_ostream__dev__impl_a782792f34ec64257188ef223b969e148}} +\index{test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+dev\+\_\+impl@{test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+dev\+\_\+impl}!v@{v}} +\index{v@{v}!test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+dev\+\_\+impl@{test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+dev\+\_\+impl}} +\subsubsection{\texorpdfstring{v}{v}} +{\footnotesize\ttfamily std\+::array$<$\mbox{\hyperlink{namespacetest__ostream__dev_a63ac45c38a80885dda445ddee2a1e0c8}{test\+\_\+data\+\_\+t}}, \mbox{\hyperlink{classtest__ostream__dev_1_1_ostream__dev__impl_ae94524fafad7bf6c6f9dc07a4798648b}{N}}$>$ test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+dev\+\_\+impl\+::v \{\}} + + + +Definition at line 45 of file test\+\_\+ostream\+\_\+dev.\+cpp. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/tests/\mbox{\hyperlink{test__ostream__dev_8cpp}{test\+\_\+ostream\+\_\+dev.\+cpp}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtest__ostream__dev_1_1_ostream__vdev__impl.eps b/doc/latex/classtest__ostream__dev_1_1_ostream__vdev__impl.eps new file mode 100644 index 0000000..43d75e8 --- /dev/null +++ b/doc/latex/classtest__ostream__dev_1_1_ostream__vdev__impl.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 152.091255 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 3.287500 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(test_ostream_dev::Ostream_vdev_impl) cw +(utl::ostream_dev< virtual_tag, test_data_t >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (test_ostream_dev::Ostream_vdev_impl) 0.000000 0.000000 box + (utl::ostream_dev< virtual_tag, test_data_t >) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/classtest__ostream__dev_1_1_ostream__vdev__impl.tex b/doc/latex/classtest__ostream__dev_1_1_ostream__vdev__impl.tex new file mode 100644 index 0000000..7c4a08b --- /dev/null +++ b/doc/latex/classtest__ostream__dev_1_1_ostream__vdev__impl.tex @@ -0,0 +1,111 @@ +\hypertarget{classtest__ostream__dev_1_1_ostream__vdev__impl}{}\section{test\+\_\+ostream\+\_\+dev\+:\+:Ostream\+\_\+vdev\+\_\+impl Class Reference} +\label{classtest__ostream__dev_1_1_ostream__vdev__impl}\index{test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+vdev\+\_\+impl@{test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+vdev\+\_\+impl}} +Inheritance diagram for test\+\_\+ostream\+\_\+dev\+:\+:Ostream\+\_\+vdev\+\_\+impl\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{classtest__ostream__dev_1_1_ostream__vdev__impl} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{namespacetest__ostream__dev_a63ac45c38a80885dda445ddee2a1e0c8}{test\+\_\+data\+\_\+t}} \& \mbox{\hyperlink{classtest__ostream__dev_1_1_ostream__vdev__impl_a8d4f3a9553026155c33c9fd15ed62634}{get\+LastV}} () +\end{DoxyCompactItemize} +\subsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +std\+::array$<$ \mbox{\hyperlink{namespacetest__ostream__dev_a63ac45c38a80885dda445ddee2a1e0c8}{test\+\_\+data\+\_\+t}}, \mbox{\hyperlink{classtest__ostream__dev_1_1_ostream__vdev__impl_adf0a9e1446383983a99ec5e9a58a5044}{N}} $>$ \mbox{\hyperlink{classtest__ostream__dev_1_1_ostream__vdev__impl_a220aec538ada71f940c19ef3252cd039}{v}} \{\} +\item +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classtest__ostream__dev_1_1_ostream__vdev__impl_ade2a195650dfdaf71e69857a4c983e08}{c}} \{0\} +\end{DoxyCompactItemize} +\subsection*{Static Public Attributes} +\begin{DoxyCompactItemize} +\item +static constexpr \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classtest__ostream__dev_1_1_ostream__vdev__impl_adf0a9e1446383983a99ec5e9a58a5044}{N}} =S\+I\+ZE +\end{DoxyCompactItemize} +\subsection*{Protected Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classtest__ostream__dev_1_1_ostream__vdev__impl_a2d2f94b579b360be329380ed2a80f82d}{put\+\_\+}} (const \mbox{\hyperlink{namespacetest__ostream__dev_a63ac45c38a80885dda445ddee2a1e0c8}{test\+\_\+data\+\_\+t}} \&data) +\item +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classtest__ostream__dev_1_1_ostream__vdev__impl_a9251ba3170eebc3d3fa84a3e33b5587b}{put\+\_\+}} (const \mbox{\hyperlink{namespacetest__ostream__dev_a63ac45c38a80885dda445ddee2a1e0c8}{test\+\_\+data\+\_\+t}} $\ast$data, \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} n) +\end{DoxyCompactItemize} +\subsection*{Additional Inherited Members} + + +\subsection{Detailed Description} + + +Definition at line 66 of file test\+\_\+ostream\+\_\+dev.\+cpp. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtest__ostream__dev_1_1_ostream__vdev__impl_a8d4f3a9553026155c33c9fd15ed62634}\label{classtest__ostream__dev_1_1_ostream__vdev__impl_a8d4f3a9553026155c33c9fd15ed62634}} +\index{test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+vdev\+\_\+impl@{test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+vdev\+\_\+impl}!get\+LastV@{get\+LastV}} +\index{get\+LastV@{get\+LastV}!test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+vdev\+\_\+impl@{test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+vdev\+\_\+impl}} +\subsubsection{\texorpdfstring{get\+Last\+V()}{getLastV()}} +{\footnotesize\ttfamily \mbox{\hyperlink{namespacetest__ostream__dev_a63ac45c38a80885dda445ddee2a1e0c8}{test\+\_\+data\+\_\+t}}\& test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+vdev\+\_\+impl\+::get\+LastV (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 88 of file test\+\_\+ostream\+\_\+dev.\+cpp. + +\mbox{\Hypertarget{classtest__ostream__dev_1_1_ostream__vdev__impl_a2d2f94b579b360be329380ed2a80f82d}\label{classtest__ostream__dev_1_1_ostream__vdev__impl_a2d2f94b579b360be329380ed2a80f82d}} +\index{test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+vdev\+\_\+impl@{test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+vdev\+\_\+impl}!put\+\_\+@{put\+\_\+}} +\index{put\+\_\+@{put\+\_\+}!test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+vdev\+\_\+impl@{test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+vdev\+\_\+impl}} +\subsubsection{\texorpdfstring{put\+\_\+()}{put\_()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+vdev\+\_\+impl\+::put\+\_\+ (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{namespacetest__ostream__dev_a63ac45c38a80885dda445ddee2a1e0c8}{test\+\_\+data\+\_\+t}} \&}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [protected]}} + + + +Definition at line 75 of file test\+\_\+ostream\+\_\+dev.\+cpp. + +\mbox{\Hypertarget{classtest__ostream__dev_1_1_ostream__vdev__impl_a9251ba3170eebc3d3fa84a3e33b5587b}\label{classtest__ostream__dev_1_1_ostream__vdev__impl_a9251ba3170eebc3d3fa84a3e33b5587b}} +\index{test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+vdev\+\_\+impl@{test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+vdev\+\_\+impl}!put\+\_\+@{put\+\_\+}} +\index{put\+\_\+@{put\+\_\+}!test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+vdev\+\_\+impl@{test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+vdev\+\_\+impl}} +\subsubsection{\texorpdfstring{put\+\_\+()}{put\_()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+vdev\+\_\+impl\+::put\+\_\+ (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{namespacetest__ostream__dev_a63ac45c38a80885dda445ddee2a1e0c8}{test\+\_\+data\+\_\+t}} $\ast$}]{data, }\item[{\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}}}]{n }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [protected]}} + + + +Definition at line 81 of file test\+\_\+ostream\+\_\+dev.\+cpp. + + + +\subsection{Member Data Documentation} +\mbox{\Hypertarget{classtest__ostream__dev_1_1_ostream__vdev__impl_ade2a195650dfdaf71e69857a4c983e08}\label{classtest__ostream__dev_1_1_ostream__vdev__impl_ade2a195650dfdaf71e69857a4c983e08}} +\index{test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+vdev\+\_\+impl@{test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+vdev\+\_\+impl}!c@{c}} +\index{c@{c}!test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+vdev\+\_\+impl@{test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+vdev\+\_\+impl}} +\subsubsection{\texorpdfstring{c}{c}} +{\footnotesize\ttfamily \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+vdev\+\_\+impl\+::c \{0\}} + + + +Definition at line 71 of file test\+\_\+ostream\+\_\+dev.\+cpp. + +\mbox{\Hypertarget{classtest__ostream__dev_1_1_ostream__vdev__impl_adf0a9e1446383983a99ec5e9a58a5044}\label{classtest__ostream__dev_1_1_ostream__vdev__impl_adf0a9e1446383983a99ec5e9a58a5044}} +\index{test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+vdev\+\_\+impl@{test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+vdev\+\_\+impl}!N@{N}} +\index{N@{N}!test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+vdev\+\_\+impl@{test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+vdev\+\_\+impl}} +\subsubsection{\texorpdfstring{N}{N}} +{\footnotesize\ttfamily constexpr \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+vdev\+\_\+impl\+::N =S\+I\+ZE\hspace{0.3cm}{\ttfamily [static]}} + + + +Definition at line 69 of file test\+\_\+ostream\+\_\+dev.\+cpp. + +\mbox{\Hypertarget{classtest__ostream__dev_1_1_ostream__vdev__impl_a220aec538ada71f940c19ef3252cd039}\label{classtest__ostream__dev_1_1_ostream__vdev__impl_a220aec538ada71f940c19ef3252cd039}} +\index{test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+vdev\+\_\+impl@{test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+vdev\+\_\+impl}!v@{v}} +\index{v@{v}!test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+vdev\+\_\+impl@{test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+vdev\+\_\+impl}} +\subsubsection{\texorpdfstring{v}{v}} +{\footnotesize\ttfamily std\+::array$<$\mbox{\hyperlink{namespacetest__ostream__dev_a63ac45c38a80885dda445ddee2a1e0c8}{test\+\_\+data\+\_\+t}}, \mbox{\hyperlink{classtest__ostream__dev_1_1_ostream__vdev__impl_adf0a9e1446383983a99ec5e9a58a5044}{N}}$>$ test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+vdev\+\_\+impl\+::v \{\}} + + + +Definition at line 70 of file test\+\_\+ostream\+\_\+dev.\+cpp. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/tests/\mbox{\hyperlink{test__ostream__dev_8cpp}{test\+\_\+ostream\+\_\+dev.\+cpp}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtest__ostream__dev_1_1_tostream___idev.eps b/doc/latex/classtest__ostream__dev_1_1_tostream___idev.eps new file mode 100644 index 0000000..a61fa59 --- /dev/null +++ b/doc/latex/classtest__ostream__dev_1_1_tostream___idev.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 194.174757 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.575000 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(test_ostream_dev::Tostream_Idev) cw +(testing::Test) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (test_ostream_dev::Tostream_Idev) 0.000000 0.000000 box + (testing::Test) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/classtest__ostream__dev_1_1_tostream___idev.tex b/doc/latex/classtest__ostream__dev_1_1_tostream___idev.tex new file mode 100644 index 0000000..b543760 --- /dev/null +++ b/doc/latex/classtest__ostream__dev_1_1_tostream___idev.tex @@ -0,0 +1,39 @@ +\hypertarget{classtest__ostream__dev_1_1_tostream___idev}{}\section{test\+\_\+ostream\+\_\+dev\+:\+:Tostream\+\_\+\+Idev Class Reference} +\label{classtest__ostream__dev_1_1_tostream___idev}\index{test\+\_\+ostream\+\_\+dev\+::\+Tostream\+\_\+\+Idev@{test\+\_\+ostream\+\_\+dev\+::\+Tostream\+\_\+\+Idev}} +Inheritance diagram for test\+\_\+ostream\+\_\+dev\+:\+:Tostream\+\_\+\+Idev\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{classtest__ostream__dev_1_1_tostream___idev} +\end{center} +\end{figure} +\subsection*{Protected Attributes} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classtest__ostream__dev_1_1_ostream__dev__impl}{Ostream\+\_\+dev\+\_\+impl}} \mbox{\hyperlink{classtest__ostream__dev_1_1_tostream___idev_a5478f97cab31905180f832c595ec4d1c}{os\+Idev}} \{\} +\end{DoxyCompactItemize} +\subsection*{Additional Inherited Members} + + +\subsection{Detailed Description} + + +Definition at line 92 of file test\+\_\+ostream\+\_\+dev.\+cpp. + + + +\subsection{Member Data Documentation} +\mbox{\Hypertarget{classtest__ostream__dev_1_1_tostream___idev_a5478f97cab31905180f832c595ec4d1c}\label{classtest__ostream__dev_1_1_tostream___idev_a5478f97cab31905180f832c595ec4d1c}} +\index{test\+\_\+ostream\+\_\+dev\+::\+Tostream\+\_\+\+Idev@{test\+\_\+ostream\+\_\+dev\+::\+Tostream\+\_\+\+Idev}!os\+Idev@{os\+Idev}} +\index{os\+Idev@{os\+Idev}!test\+\_\+ostream\+\_\+dev\+::\+Tostream\+\_\+\+Idev@{test\+\_\+ostream\+\_\+dev\+::\+Tostream\+\_\+\+Idev}} +\subsubsection{\texorpdfstring{os\+Idev}{osIdev}} +{\footnotesize\ttfamily \mbox{\hyperlink{classtest__ostream__dev_1_1_ostream__dev__impl}{Ostream\+\_\+dev\+\_\+impl}} test\+\_\+ostream\+\_\+dev\+::\+Tostream\+\_\+\+Idev\+::os\+Idev \{\}\hspace{0.3cm}{\ttfamily [protected]}} + + + +Definition at line 95 of file test\+\_\+ostream\+\_\+dev.\+cpp. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/tests/\mbox{\hyperlink{test__ostream__dev_8cpp}{test\+\_\+ostream\+\_\+dev.\+cpp}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtest__ostream__dev_1_1_tostream___vdev.eps b/doc/latex/classtest__ostream__dev_1_1_tostream___vdev.eps new file mode 100644 index 0000000..ff9ee81 --- /dev/null +++ b/doc/latex/classtest__ostream__dev_1_1_tostream___vdev.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 188.679245 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.650000 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(test_ostream_dev::Tostream_Vdev) cw +(testing::Test) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (test_ostream_dev::Tostream_Vdev) 0.000000 0.000000 box + (testing::Test) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/classtest__ostream__dev_1_1_tostream___vdev.tex b/doc/latex/classtest__ostream__dev_1_1_tostream___vdev.tex new file mode 100644 index 0000000..a405983 --- /dev/null +++ b/doc/latex/classtest__ostream__dev_1_1_tostream___vdev.tex @@ -0,0 +1,51 @@ +\hypertarget{classtest__ostream__dev_1_1_tostream___vdev}{}\section{test\+\_\+ostream\+\_\+dev\+:\+:Tostream\+\_\+\+Vdev Class Reference} +\label{classtest__ostream__dev_1_1_tostream___vdev}\index{test\+\_\+ostream\+\_\+dev\+::\+Tostream\+\_\+\+Vdev@{test\+\_\+ostream\+\_\+dev\+::\+Tostream\+\_\+\+Vdev}} +Inheritance diagram for test\+\_\+ostream\+\_\+dev\+:\+:Tostream\+\_\+\+Vdev\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{classtest__ostream__dev_1_1_tostream___vdev} +\end{center} +\end{figure} +\subsection*{Protected Attributes} +\begin{DoxyCompactItemize} +\item +std\+::array$<$ \mbox{\hyperlink{classtest__ostream__dev_1_1_ostream__vdev__impl}{Ostream\+\_\+vdev\+\_\+impl}}, 5 $>$ \mbox{\hyperlink{classtest__ostream__dev_1_1_tostream___vdev_aa5607a51d6272b468414826bb7701eb2}{os\+Vdev}} \{\} +\item +\mbox{\hyperlink{classutl_1_1ostream__dev}{ostream\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, \mbox{\hyperlink{namespacetest__ostream__dev_a63ac45c38a80885dda445ddee2a1e0c8}{test\+\_\+data\+\_\+t}} $>$ $\ast$ \mbox{\hyperlink{classtest__ostream__dev_1_1_tostream___vdev_a20502252099af2580e32afc2dd483dd4}{base\+Pointer}} = nullptr +\end{DoxyCompactItemize} +\subsection*{Additional Inherited Members} + + +\subsection{Detailed Description} + + +Definition at line 97 of file test\+\_\+ostream\+\_\+dev.\+cpp. + + + +\subsection{Member Data Documentation} +\mbox{\Hypertarget{classtest__ostream__dev_1_1_tostream___vdev_a20502252099af2580e32afc2dd483dd4}\label{classtest__ostream__dev_1_1_tostream___vdev_a20502252099af2580e32afc2dd483dd4}} +\index{test\+\_\+ostream\+\_\+dev\+::\+Tostream\+\_\+\+Vdev@{test\+\_\+ostream\+\_\+dev\+::\+Tostream\+\_\+\+Vdev}!base\+Pointer@{base\+Pointer}} +\index{base\+Pointer@{base\+Pointer}!test\+\_\+ostream\+\_\+dev\+::\+Tostream\+\_\+\+Vdev@{test\+\_\+ostream\+\_\+dev\+::\+Tostream\+\_\+\+Vdev}} +\subsubsection{\texorpdfstring{base\+Pointer}{basePointer}} +{\footnotesize\ttfamily \mbox{\hyperlink{classutl_1_1ostream__dev}{ostream\+\_\+dev}}$<$\mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, \mbox{\hyperlink{namespacetest__ostream__dev_a63ac45c38a80885dda445ddee2a1e0c8}{test\+\_\+data\+\_\+t}}$>$$\ast$ test\+\_\+ostream\+\_\+dev\+::\+Tostream\+\_\+\+Vdev\+::base\+Pointer = nullptr\hspace{0.3cm}{\ttfamily [protected]}} + + + +Definition at line 101 of file test\+\_\+ostream\+\_\+dev.\+cpp. + +\mbox{\Hypertarget{classtest__ostream__dev_1_1_tostream___vdev_aa5607a51d6272b468414826bb7701eb2}\label{classtest__ostream__dev_1_1_tostream___vdev_aa5607a51d6272b468414826bb7701eb2}} +\index{test\+\_\+ostream\+\_\+dev\+::\+Tostream\+\_\+\+Vdev@{test\+\_\+ostream\+\_\+dev\+::\+Tostream\+\_\+\+Vdev}!os\+Vdev@{os\+Vdev}} +\index{os\+Vdev@{os\+Vdev}!test\+\_\+ostream\+\_\+dev\+::\+Tostream\+\_\+\+Vdev@{test\+\_\+ostream\+\_\+dev\+::\+Tostream\+\_\+\+Vdev}} +\subsubsection{\texorpdfstring{os\+Vdev}{osVdev}} +{\footnotesize\ttfamily std\+::array$<$\mbox{\hyperlink{classtest__ostream__dev_1_1_ostream__vdev__impl}{Ostream\+\_\+vdev\+\_\+impl}}, 5$>$ test\+\_\+ostream\+\_\+dev\+::\+Tostream\+\_\+\+Vdev\+::os\+Vdev \{\}\hspace{0.3cm}{\ttfamily [protected]}} + + + +Definition at line 100 of file test\+\_\+ostream\+\_\+dev.\+cpp. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/tests/\mbox{\hyperlink{test__ostream__dev_8cpp}{test\+\_\+ostream\+\_\+dev.\+cpp}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtest__spi_1_1_s_p_i.eps b/doc/latex/classtest__spi_1_1_s_p_i.eps new file mode 100644 index 0000000..7000d18 --- /dev/null +++ b/doc/latex/classtest__spi_1_1_s_p_i.eps @@ -0,0 +1,203 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 146.699267 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 3.408333 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 3 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(test_spi::SPI) cw +(utl::spi_bb_i< SPI, spi::cpol::LOW, spi::cpha::LOW >) cw +(utl::spi_i< spi_bb_i< SPI, CPOL, CPHA, spi::bitOrder::MSB_First > >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (test_spi::SPI) 0.000000 0.000000 box + (utl::spi_bb_i< SPI, spi::cpol::LOW, spi::cpha::LOW >) 0.000000 1.000000 box + (utl::spi_i< spi_bb_i< SPI, CPOL, CPHA, spi::bitOrder::MSB_First > >) 0.000000 2.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in +solid +0 0.000000 1.000000 out +solid +1 0.000000 2.000000 in diff --git a/doc/latex/classtest__spi_1_1_s_p_i.tex b/doc/latex/classtest__spi_1_1_s_p_i.tex new file mode 100644 index 0000000..2d7f339 --- /dev/null +++ b/doc/latex/classtest__spi_1_1_s_p_i.tex @@ -0,0 +1,39 @@ +\hypertarget{classtest__spi_1_1_s_p_i}{}\section{test\+\_\+spi\+:\+:S\+PI Class Reference} +\label{classtest__spi_1_1_s_p_i}\index{test\+\_\+spi\+::\+S\+PI@{test\+\_\+spi\+::\+S\+PI}} +Inheritance diagram for test\+\_\+spi\+:\+:S\+PI\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3.000000cm]{classtest__spi_1_1_s_p_i} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classtest__spi_1_1_s_p_i_a588741b66c9890b0d47d84a09f8a19ce}{S\+PI}} (uint32\+\_\+t clk=100000) noexcept +\end{DoxyCompactItemize} +\subsection*{Additional Inherited Members} + + +\subsection{Detailed Description} + + +Definition at line 34 of file test\+\_\+spi\+\_\+impl.\+cpp. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtest__spi_1_1_s_p_i_a588741b66c9890b0d47d84a09f8a19ce}\label{classtest__spi_1_1_s_p_i_a588741b66c9890b0d47d84a09f8a19ce}} +\index{test\+\_\+spi\+::\+S\+PI@{test\+\_\+spi\+::\+S\+PI}!S\+PI@{S\+PI}} +\index{S\+PI@{S\+PI}!test\+\_\+spi\+::\+S\+PI@{test\+\_\+spi\+::\+S\+PI}} +\subsubsection{\texorpdfstring{S\+P\+I()}{SPI()}} +{\footnotesize\ttfamily test\+\_\+spi\+::\+S\+P\+I\+::\+S\+PI (\begin{DoxyParamCaption}\item[{uint32\+\_\+t}]{clk = {\ttfamily 100000} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 42 of file test\+\_\+spi\+\_\+impl.\+cpp. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/tests/\mbox{\hyperlink{test__spi__impl_8cpp}{test\+\_\+spi\+\_\+impl.\+cpp}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtest__spi_1_1_test__spi__impl.eps b/doc/latex/classtest__spi_1_1_test__spi__impl.eps new file mode 100644 index 0000000..8b5a976 --- /dev/null +++ b/doc/latex/classtest__spi_1_1_test__spi__impl.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 279.720280 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.787500 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(test_spi::Test_spi_impl) cw +(testing::Test) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (test_spi::Test_spi_impl) 0.000000 0.000000 box + (testing::Test) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/classtest__spi_1_1_test__spi__impl.tex b/doc/latex/classtest__spi_1_1_test__spi__impl.tex new file mode 100644 index 0000000..449af5c --- /dev/null +++ b/doc/latex/classtest__spi_1_1_test__spi__impl.tex @@ -0,0 +1,39 @@ +\hypertarget{classtest__spi_1_1_test__spi__impl}{}\section{test\+\_\+spi\+:\+:Test\+\_\+spi\+\_\+impl Class Reference} +\label{classtest__spi_1_1_test__spi__impl}\index{test\+\_\+spi\+::\+Test\+\_\+spi\+\_\+impl@{test\+\_\+spi\+::\+Test\+\_\+spi\+\_\+impl}} +Inheritance diagram for test\+\_\+spi\+:\+:Test\+\_\+spi\+\_\+impl\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{classtest__spi_1_1_test__spi__impl} +\end{center} +\end{figure} +\subsection*{Protected Attributes} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classtest__spi_1_1_s_p_i}{S\+PI}} \mbox{\hyperlink{classtest__spi_1_1_test__spi__impl_aba59883c01ad683d209dcf422991d131}{spi}} \{\} +\end{DoxyCompactItemize} +\subsection*{Additional Inherited Members} + + +\subsection{Detailed Description} + + +Definition at line 48 of file test\+\_\+spi\+\_\+impl.\+cpp. + + + +\subsection{Member Data Documentation} +\mbox{\Hypertarget{classtest__spi_1_1_test__spi__impl_aba59883c01ad683d209dcf422991d131}\label{classtest__spi_1_1_test__spi__impl_aba59883c01ad683d209dcf422991d131}} +\index{test\+\_\+spi\+::\+Test\+\_\+spi\+\_\+impl@{test\+\_\+spi\+::\+Test\+\_\+spi\+\_\+impl}!spi@{spi}} +\index{spi@{spi}!test\+\_\+spi\+::\+Test\+\_\+spi\+\_\+impl@{test\+\_\+spi\+::\+Test\+\_\+spi\+\_\+impl}} +\subsubsection{\texorpdfstring{spi}{spi}} +{\footnotesize\ttfamily \mbox{\hyperlink{classtest__spi_1_1_s_p_i}{S\+PI}} test\+\_\+spi\+::\+Test\+\_\+spi\+\_\+impl\+::spi \{\}\hspace{0.3cm}{\ttfamily [protected]}} + + + +Definition at line 52 of file test\+\_\+spi\+\_\+impl.\+cpp. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/tests/\mbox{\hyperlink{test__spi__impl_8cpp}{test\+\_\+spi\+\_\+impl.\+cpp}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1_empty_test_event_listener.eps b/doc/latex/classtesting_1_1_empty_test_event_listener.eps new file mode 100644 index 0000000..5af30cc --- /dev/null +++ b/doc/latex/classtesting_1_1_empty_test_event_listener.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 204.081633 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.450000 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(testing::EmptyTestEventListener) cw +(testing::TestEventListener) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (testing::EmptyTestEventListener) 0.000000 0.000000 box + (testing::TestEventListener) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/classtesting_1_1_empty_test_event_listener.tex b/doc/latex/classtesting_1_1_empty_test_event_listener.tex new file mode 100644 index 0000000..6a57790 --- /dev/null +++ b/doc/latex/classtesting_1_1_empty_test_event_listener.tex @@ -0,0 +1,270 @@ +\hypertarget{classtesting_1_1_empty_test_event_listener}{}\section{testing\+:\+:Empty\+Test\+Event\+Listener Class Reference} +\label{classtesting_1_1_empty_test_event_listener}\index{testing\+::\+Empty\+Test\+Event\+Listener@{testing\+::\+Empty\+Test\+Event\+Listener}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +Inheritance diagram for testing\+:\+:Empty\+Test\+Event\+Listener\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{classtesting_1_1_empty_test_event_listener} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +void \mbox{\hyperlink{classtesting_1_1_empty_test_event_listener_ac3f5033fcd82080edb45f546ce9854fe}{On\+Test\+Program\+Start}} (const \mbox{\hyperlink{classtesting_1_1_unit_test}{Unit\+Test}} \&) override +\item +void \mbox{\hyperlink{classtesting_1_1_empty_test_event_listener_a31edf103561e8b4d747656bc2d927661}{On\+Test\+Iteration\+Start}} (const \mbox{\hyperlink{classtesting_1_1_unit_test}{Unit\+Test}} \&, int) override +\item +void \mbox{\hyperlink{classtesting_1_1_empty_test_event_listener_a6e498ae763ac8c1a46bd861e0b7ff3f5}{On\+Environments\+Set\+Up\+Start}} (const \mbox{\hyperlink{classtesting_1_1_unit_test}{Unit\+Test}} \&) override +\item +void \mbox{\hyperlink{classtesting_1_1_empty_test_event_listener_a9b4e781c0b38065a55c2fd163724ba69}{On\+Environments\+Set\+Up\+End}} (const \mbox{\hyperlink{classtesting_1_1_unit_test}{Unit\+Test}} \&) override +\item +void \mbox{\hyperlink{classtesting_1_1_empty_test_event_listener_a1e32e4bd4857822b6b50e6900aa5c651}{On\+Test\+Suite\+Start}} (const \mbox{\hyperlink{classtesting_1_1_test_suite}{Test\+Suite}} \&) override +\item +void \mbox{\hyperlink{classtesting_1_1_empty_test_event_listener_aa1fd7d378f2cdde00a4f8a2f4efb95b4}{On\+Test\+Case\+Start}} (const Test\+Case \&tc) override +\item +void \mbox{\hyperlink{classtesting_1_1_empty_test_event_listener_a1d8c7f3f1f92826f668edae1bc5aadf4}{On\+Test\+Start}} (const \mbox{\hyperlink{classtesting_1_1_test_info}{Test\+Info}} \&) override +\item +void \mbox{\hyperlink{classtesting_1_1_empty_test_event_listener_ab95992f0a0b3741d59a24c3a7115fa60}{On\+Test\+Part\+Result}} (const Test\+Part\+Result \&) override +\item +void \mbox{\hyperlink{classtesting_1_1_empty_test_event_listener_a709d7077c086c877d214231bc520ef90}{On\+Test\+End}} (const \mbox{\hyperlink{classtesting_1_1_test_info}{Test\+Info}} \&) override +\item +void \mbox{\hyperlink{classtesting_1_1_empty_test_event_listener_aefdb73682d290791461e186d864db718}{On\+Test\+Suite\+End}} (const \mbox{\hyperlink{classtesting_1_1_test_suite}{Test\+Suite}} \&) override +\item +void \mbox{\hyperlink{classtesting_1_1_empty_test_event_listener_a166bcf075f37bfe14f912d2def55f61a}{On\+Test\+Case\+End}} (const Test\+Case \&tc) override +\item +void \mbox{\hyperlink{classtesting_1_1_empty_test_event_listener_a320780451eac9178434b7c77d948ecbd}{On\+Environments\+Tear\+Down\+Start}} (const \mbox{\hyperlink{classtesting_1_1_unit_test}{Unit\+Test}} \&) override +\item +void \mbox{\hyperlink{classtesting_1_1_empty_test_event_listener_ad9984052e82c3ae26395a2d9480326d2}{On\+Environments\+Tear\+Down\+End}} (const \mbox{\hyperlink{classtesting_1_1_unit_test}{Unit\+Test}} \&) override +\item +void \mbox{\hyperlink{classtesting_1_1_empty_test_event_listener_aae9c5c61e476f0c421402fb1dde434d2}{On\+Test\+Iteration\+End}} (const \mbox{\hyperlink{classtesting_1_1_unit_test}{Unit\+Test}} \&, int) override +\item +void \mbox{\hyperlink{classtesting_1_1_empty_test_event_listener_aaa9d683e8e0c850af67a0b92d785ddb9}{On\+Test\+Program\+End}} (const \mbox{\hyperlink{classtesting_1_1_unit_test}{Unit\+Test}} \&) override +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} + + +Definition at line 15734 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1_empty_test_event_listener_a9b4e781c0b38065a55c2fd163724ba69}\label{classtesting_1_1_empty_test_event_listener_a9b4e781c0b38065a55c2fd163724ba69}} +\index{testing\+::\+Empty\+Test\+Event\+Listener@{testing\+::\+Empty\+Test\+Event\+Listener}!On\+Environments\+Set\+Up\+End@{On\+Environments\+Set\+Up\+End}} +\index{On\+Environments\+Set\+Up\+End@{On\+Environments\+Set\+Up\+End}!testing\+::\+Empty\+Test\+Event\+Listener@{testing\+::\+Empty\+Test\+Event\+Listener}} +\subsubsection{\texorpdfstring{On\+Environments\+Set\+Up\+End()}{OnEnvironmentsSetUpEnd()}} +{\footnotesize\ttfamily void testing\+::\+Empty\+Test\+Event\+Listener\+::\+On\+Environments\+Set\+Up\+End (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classtesting_1_1_unit_test}{Unit\+Test}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\ttfamily [virtual]}} + + + +Implements \mbox{\hyperlink{classtesting_1_1_test_event_listener_aaa1021d75f5dbf3f05c829c1cc520341}{testing\+::\+Test\+Event\+Listener}}. + + + +Definition at line 15740 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_empty_test_event_listener_a6e498ae763ac8c1a46bd861e0b7ff3f5}\label{classtesting_1_1_empty_test_event_listener_a6e498ae763ac8c1a46bd861e0b7ff3f5}} +\index{testing\+::\+Empty\+Test\+Event\+Listener@{testing\+::\+Empty\+Test\+Event\+Listener}!On\+Environments\+Set\+Up\+Start@{On\+Environments\+Set\+Up\+Start}} +\index{On\+Environments\+Set\+Up\+Start@{On\+Environments\+Set\+Up\+Start}!testing\+::\+Empty\+Test\+Event\+Listener@{testing\+::\+Empty\+Test\+Event\+Listener}} +\subsubsection{\texorpdfstring{On\+Environments\+Set\+Up\+Start()}{OnEnvironmentsSetUpStart()}} +{\footnotesize\ttfamily void testing\+::\+Empty\+Test\+Event\+Listener\+::\+On\+Environments\+Set\+Up\+Start (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classtesting_1_1_unit_test}{Unit\+Test}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\ttfamily [virtual]}} + + + +Implements \mbox{\hyperlink{classtesting_1_1_test_event_listener_aa6502e534919605be45f26a6daf9a40c}{testing\+::\+Test\+Event\+Listener}}. + + + +Definition at line 15739 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_empty_test_event_listener_ad9984052e82c3ae26395a2d9480326d2}\label{classtesting_1_1_empty_test_event_listener_ad9984052e82c3ae26395a2d9480326d2}} +\index{testing\+::\+Empty\+Test\+Event\+Listener@{testing\+::\+Empty\+Test\+Event\+Listener}!On\+Environments\+Tear\+Down\+End@{On\+Environments\+Tear\+Down\+End}} +\index{On\+Environments\+Tear\+Down\+End@{On\+Environments\+Tear\+Down\+End}!testing\+::\+Empty\+Test\+Event\+Listener@{testing\+::\+Empty\+Test\+Event\+Listener}} +\subsubsection{\texorpdfstring{On\+Environments\+Tear\+Down\+End()}{OnEnvironmentsTearDownEnd()}} +{\footnotesize\ttfamily void testing\+::\+Empty\+Test\+Event\+Listener\+::\+On\+Environments\+Tear\+Down\+End (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classtesting_1_1_unit_test}{Unit\+Test}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\ttfamily [virtual]}} + + + +Implements \mbox{\hyperlink{classtesting_1_1_test_event_listener_a9ea04fa7f447865ba76df35e12ba2092}{testing\+::\+Test\+Event\+Listener}}. + + + +Definition at line 15756 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_empty_test_event_listener_a320780451eac9178434b7c77d948ecbd}\label{classtesting_1_1_empty_test_event_listener_a320780451eac9178434b7c77d948ecbd}} +\index{testing\+::\+Empty\+Test\+Event\+Listener@{testing\+::\+Empty\+Test\+Event\+Listener}!On\+Environments\+Tear\+Down\+Start@{On\+Environments\+Tear\+Down\+Start}} +\index{On\+Environments\+Tear\+Down\+Start@{On\+Environments\+Tear\+Down\+Start}!testing\+::\+Empty\+Test\+Event\+Listener@{testing\+::\+Empty\+Test\+Event\+Listener}} +\subsubsection{\texorpdfstring{On\+Environments\+Tear\+Down\+Start()}{OnEnvironmentsTearDownStart()}} +{\footnotesize\ttfamily void testing\+::\+Empty\+Test\+Event\+Listener\+::\+On\+Environments\+Tear\+Down\+Start (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classtesting_1_1_unit_test}{Unit\+Test}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\ttfamily [virtual]}} + + + +Implements \mbox{\hyperlink{classtesting_1_1_test_event_listener_a468b5e6701bcb86cb2c956caadbba5e4}{testing\+::\+Test\+Event\+Listener}}. + + + +Definition at line 15755 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_empty_test_event_listener_a166bcf075f37bfe14f912d2def55f61a}\label{classtesting_1_1_empty_test_event_listener_a166bcf075f37bfe14f912d2def55f61a}} +\index{testing\+::\+Empty\+Test\+Event\+Listener@{testing\+::\+Empty\+Test\+Event\+Listener}!On\+Test\+Case\+End@{On\+Test\+Case\+End}} +\index{On\+Test\+Case\+End@{On\+Test\+Case\+End}!testing\+::\+Empty\+Test\+Event\+Listener@{testing\+::\+Empty\+Test\+Event\+Listener}} +\subsubsection{\texorpdfstring{On\+Test\+Case\+End()}{OnTestCaseEnd()}} +{\footnotesize\ttfamily void testing\+::\+Empty\+Test\+Event\+Listener\+::\+On\+Test\+Case\+End (\begin{DoxyParamCaption}\item[{const Test\+Case \&}]{tc }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\ttfamily [virtual]}} + + + +Reimplemented from \mbox{\hyperlink{classtesting_1_1_test_event_listener_a76dbb7c3868d1c9abb957faee2568c0b}{testing\+::\+Test\+Event\+Listener}}. + + + +Definition at line 15752 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_empty_test_event_listener_aa1fd7d378f2cdde00a4f8a2f4efb95b4}\label{classtesting_1_1_empty_test_event_listener_aa1fd7d378f2cdde00a4f8a2f4efb95b4}} +\index{testing\+::\+Empty\+Test\+Event\+Listener@{testing\+::\+Empty\+Test\+Event\+Listener}!On\+Test\+Case\+Start@{On\+Test\+Case\+Start}} +\index{On\+Test\+Case\+Start@{On\+Test\+Case\+Start}!testing\+::\+Empty\+Test\+Event\+Listener@{testing\+::\+Empty\+Test\+Event\+Listener}} +\subsubsection{\texorpdfstring{On\+Test\+Case\+Start()}{OnTestCaseStart()}} +{\footnotesize\ttfamily void testing\+::\+Empty\+Test\+Event\+Listener\+::\+On\+Test\+Case\+Start (\begin{DoxyParamCaption}\item[{const Test\+Case \&}]{tc }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\ttfamily [virtual]}} + + + +Reimplemented from \mbox{\hyperlink{classtesting_1_1_test_event_listener_a96693881a1872657b4683e2f0a236ca5}{testing\+::\+Test\+Event\+Listener}}. + + + +Definition at line 15744 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_empty_test_event_listener_a709d7077c086c877d214231bc520ef90}\label{classtesting_1_1_empty_test_event_listener_a709d7077c086c877d214231bc520ef90}} +\index{testing\+::\+Empty\+Test\+Event\+Listener@{testing\+::\+Empty\+Test\+Event\+Listener}!On\+Test\+End@{On\+Test\+End}} +\index{On\+Test\+End@{On\+Test\+End}!testing\+::\+Empty\+Test\+Event\+Listener@{testing\+::\+Empty\+Test\+Event\+Listener}} +\subsubsection{\texorpdfstring{On\+Test\+End()}{OnTestEnd()}} +{\footnotesize\ttfamily void testing\+::\+Empty\+Test\+Event\+Listener\+::\+On\+Test\+End (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classtesting_1_1_test_info}{Test\+Info}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\ttfamily [virtual]}} + + + +Implements \mbox{\hyperlink{classtesting_1_1_test_event_listener_abb1c44525ef038500608b5dc2f17099b}{testing\+::\+Test\+Event\+Listener}}. + + + +Definition at line 15749 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_empty_test_event_listener_aae9c5c61e476f0c421402fb1dde434d2}\label{classtesting_1_1_empty_test_event_listener_aae9c5c61e476f0c421402fb1dde434d2}} +\index{testing\+::\+Empty\+Test\+Event\+Listener@{testing\+::\+Empty\+Test\+Event\+Listener}!On\+Test\+Iteration\+End@{On\+Test\+Iteration\+End}} +\index{On\+Test\+Iteration\+End@{On\+Test\+Iteration\+End}!testing\+::\+Empty\+Test\+Event\+Listener@{testing\+::\+Empty\+Test\+Event\+Listener}} +\subsubsection{\texorpdfstring{On\+Test\+Iteration\+End()}{OnTestIterationEnd()}} +{\footnotesize\ttfamily void testing\+::\+Empty\+Test\+Event\+Listener\+::\+On\+Test\+Iteration\+End (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classtesting_1_1_unit_test}{Unit\+Test}} \&}]{, }\item[{int}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\ttfamily [virtual]}} + + + +Implements \mbox{\hyperlink{classtesting_1_1_test_event_listener_a550fdb3e55726e4cefa09f5697941425}{testing\+::\+Test\+Event\+Listener}}. + + + +Definition at line 15757 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_empty_test_event_listener_a31edf103561e8b4d747656bc2d927661}\label{classtesting_1_1_empty_test_event_listener_a31edf103561e8b4d747656bc2d927661}} +\index{testing\+::\+Empty\+Test\+Event\+Listener@{testing\+::\+Empty\+Test\+Event\+Listener}!On\+Test\+Iteration\+Start@{On\+Test\+Iteration\+Start}} +\index{On\+Test\+Iteration\+Start@{On\+Test\+Iteration\+Start}!testing\+::\+Empty\+Test\+Event\+Listener@{testing\+::\+Empty\+Test\+Event\+Listener}} +\subsubsection{\texorpdfstring{On\+Test\+Iteration\+Start()}{OnTestIterationStart()}} +{\footnotesize\ttfamily void testing\+::\+Empty\+Test\+Event\+Listener\+::\+On\+Test\+Iteration\+Start (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classtesting_1_1_unit_test}{Unit\+Test}} \&}]{, }\item[{int}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\ttfamily [virtual]}} + + + +Implements \mbox{\hyperlink{classtesting_1_1_test_event_listener_a60cc09b7907cb329d152eb5e7133bdeb}{testing\+::\+Test\+Event\+Listener}}. + + + +Definition at line 15737 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_empty_test_event_listener_ab95992f0a0b3741d59a24c3a7115fa60}\label{classtesting_1_1_empty_test_event_listener_ab95992f0a0b3741d59a24c3a7115fa60}} +\index{testing\+::\+Empty\+Test\+Event\+Listener@{testing\+::\+Empty\+Test\+Event\+Listener}!On\+Test\+Part\+Result@{On\+Test\+Part\+Result}} +\index{On\+Test\+Part\+Result@{On\+Test\+Part\+Result}!testing\+::\+Empty\+Test\+Event\+Listener@{testing\+::\+Empty\+Test\+Event\+Listener}} +\subsubsection{\texorpdfstring{On\+Test\+Part\+Result()}{OnTestPartResult()}} +{\footnotesize\ttfamily void testing\+::\+Empty\+Test\+Event\+Listener\+::\+On\+Test\+Part\+Result (\begin{DoxyParamCaption}\item[{const Test\+Part\+Result \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\ttfamily [virtual]}} + + + +Implements \mbox{\hyperlink{classtesting_1_1_test_event_listener_a054f8705c883fa120b91473aff38f2ee}{testing\+::\+Test\+Event\+Listener}}. + + + +Definition at line 15748 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_empty_test_event_listener_aaa9d683e8e0c850af67a0b92d785ddb9}\label{classtesting_1_1_empty_test_event_listener_aaa9d683e8e0c850af67a0b92d785ddb9}} +\index{testing\+::\+Empty\+Test\+Event\+Listener@{testing\+::\+Empty\+Test\+Event\+Listener}!On\+Test\+Program\+End@{On\+Test\+Program\+End}} +\index{On\+Test\+Program\+End@{On\+Test\+Program\+End}!testing\+::\+Empty\+Test\+Event\+Listener@{testing\+::\+Empty\+Test\+Event\+Listener}} +\subsubsection{\texorpdfstring{On\+Test\+Program\+End()}{OnTestProgramEnd()}} +{\footnotesize\ttfamily void testing\+::\+Empty\+Test\+Event\+Listener\+::\+On\+Test\+Program\+End (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classtesting_1_1_unit_test}{Unit\+Test}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\ttfamily [virtual]}} + + + +Implements \mbox{\hyperlink{classtesting_1_1_test_event_listener_ad15b6246d94c268e233487a86463ef3d}{testing\+::\+Test\+Event\+Listener}}. + + + +Definition at line 15759 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_empty_test_event_listener_ac3f5033fcd82080edb45f546ce9854fe}\label{classtesting_1_1_empty_test_event_listener_ac3f5033fcd82080edb45f546ce9854fe}} +\index{testing\+::\+Empty\+Test\+Event\+Listener@{testing\+::\+Empty\+Test\+Event\+Listener}!On\+Test\+Program\+Start@{On\+Test\+Program\+Start}} +\index{On\+Test\+Program\+Start@{On\+Test\+Program\+Start}!testing\+::\+Empty\+Test\+Event\+Listener@{testing\+::\+Empty\+Test\+Event\+Listener}} +\subsubsection{\texorpdfstring{On\+Test\+Program\+Start()}{OnTestProgramStart()}} +{\footnotesize\ttfamily void testing\+::\+Empty\+Test\+Event\+Listener\+::\+On\+Test\+Program\+Start (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classtesting_1_1_unit_test}{Unit\+Test}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\ttfamily [virtual]}} + + + +Implements \mbox{\hyperlink{classtesting_1_1_test_event_listener_a5f6c84f39851e8a603a2d2e10063816b}{testing\+::\+Test\+Event\+Listener}}. + + + +Definition at line 15736 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_empty_test_event_listener_a1d8c7f3f1f92826f668edae1bc5aadf4}\label{classtesting_1_1_empty_test_event_listener_a1d8c7f3f1f92826f668edae1bc5aadf4}} +\index{testing\+::\+Empty\+Test\+Event\+Listener@{testing\+::\+Empty\+Test\+Event\+Listener}!On\+Test\+Start@{On\+Test\+Start}} +\index{On\+Test\+Start@{On\+Test\+Start}!testing\+::\+Empty\+Test\+Event\+Listener@{testing\+::\+Empty\+Test\+Event\+Listener}} +\subsubsection{\texorpdfstring{On\+Test\+Start()}{OnTestStart()}} +{\footnotesize\ttfamily void testing\+::\+Empty\+Test\+Event\+Listener\+::\+On\+Test\+Start (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classtesting_1_1_test_info}{Test\+Info}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\ttfamily [virtual]}} + + + +Implements \mbox{\hyperlink{classtesting_1_1_test_event_listener_ab4f6a0ca16ae75daf385b3b5914e1048}{testing\+::\+Test\+Event\+Listener}}. + + + +Definition at line 15747 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_empty_test_event_listener_aefdb73682d290791461e186d864db718}\label{classtesting_1_1_empty_test_event_listener_aefdb73682d290791461e186d864db718}} +\index{testing\+::\+Empty\+Test\+Event\+Listener@{testing\+::\+Empty\+Test\+Event\+Listener}!On\+Test\+Suite\+End@{On\+Test\+Suite\+End}} +\index{On\+Test\+Suite\+End@{On\+Test\+Suite\+End}!testing\+::\+Empty\+Test\+Event\+Listener@{testing\+::\+Empty\+Test\+Event\+Listener}} +\subsubsection{\texorpdfstring{On\+Test\+Suite\+End()}{OnTestSuiteEnd()}} +{\footnotesize\ttfamily void testing\+::\+Empty\+Test\+Event\+Listener\+::\+On\+Test\+Suite\+End (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classtesting_1_1_test_suite}{Test\+Suite}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\ttfamily [virtual]}} + + + +Reimplemented from \mbox{\hyperlink{classtesting_1_1_test_event_listener_a841e522e537bb858d21eb75d0228d3b5}{testing\+::\+Test\+Event\+Listener}}. + + + +Definition at line 15750 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_empty_test_event_listener_a1e32e4bd4857822b6b50e6900aa5c651}\label{classtesting_1_1_empty_test_event_listener_a1e32e4bd4857822b6b50e6900aa5c651}} +\index{testing\+::\+Empty\+Test\+Event\+Listener@{testing\+::\+Empty\+Test\+Event\+Listener}!On\+Test\+Suite\+Start@{On\+Test\+Suite\+Start}} +\index{On\+Test\+Suite\+Start@{On\+Test\+Suite\+Start}!testing\+::\+Empty\+Test\+Event\+Listener@{testing\+::\+Empty\+Test\+Event\+Listener}} +\subsubsection{\texorpdfstring{On\+Test\+Suite\+Start()}{OnTestSuiteStart()}} +{\footnotesize\ttfamily void testing\+::\+Empty\+Test\+Event\+Listener\+::\+On\+Test\+Suite\+Start (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classtesting_1_1_test_suite}{Test\+Suite}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\ttfamily [virtual]}} + + + +Reimplemented from \mbox{\hyperlink{classtesting_1_1_test_event_listener_ac6605dbb5859436d59d117348d63746c}{testing\+::\+Test\+Event\+Listener}}. + + + +Definition at line 15741 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1_environment.tex b/doc/latex/classtesting_1_1_environment.tex new file mode 100644 index 0000000..4a941f8 --- /dev/null +++ b/doc/latex/classtesting_1_1_environment.tex @@ -0,0 +1,63 @@ +\hypertarget{classtesting_1_1_environment}{}\section{testing\+:\+:Environment Class Reference} +\label{classtesting_1_1_environment}\index{testing\+::\+Environment@{testing\+::\+Environment}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +virtual \mbox{\hyperlink{classtesting_1_1_environment_a0e41c320362576d752cd1f44cabd57d4}{$\sim$\+Environment}} () +\item +virtual void \mbox{\hyperlink{classtesting_1_1_environment_a1bf8cafaa9d4eba9feb98655ee434eb3}{Set\+Up}} () +\item +virtual void \mbox{\hyperlink{classtesting_1_1_environment_a039bdaa705c46b9b88234cf4d3bb6254}{Tear\+Down}} () +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} + + +Definition at line 15638 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtesting_1_1_environment_a0e41c320362576d752cd1f44cabd57d4}\label{classtesting_1_1_environment_a0e41c320362576d752cd1f44cabd57d4}} +\index{testing\+::\+Environment@{testing\+::\+Environment}!````~Environment@{$\sim$\+Environment}} +\index{````~Environment@{$\sim$\+Environment}!testing\+::\+Environment@{testing\+::\+Environment}} +\subsubsection{\texorpdfstring{$\sim$\+Environment()}{~Environment()}} +{\footnotesize\ttfamily virtual testing\+::\+Environment\+::$\sim$\+Environment (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}} + + + +Definition at line 15641 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1_environment_a1bf8cafaa9d4eba9feb98655ee434eb3}\label{classtesting_1_1_environment_a1bf8cafaa9d4eba9feb98655ee434eb3}} +\index{testing\+::\+Environment@{testing\+::\+Environment}!Set\+Up@{Set\+Up}} +\index{Set\+Up@{Set\+Up}!testing\+::\+Environment@{testing\+::\+Environment}} +\subsubsection{\texorpdfstring{Set\+Up()}{SetUp()}} +{\footnotesize\ttfamily virtual void testing\+::\+Environment\+::\+Set\+Up (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}} + + + +Definition at line 15644 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_environment_a039bdaa705c46b9b88234cf4d3bb6254}\label{classtesting_1_1_environment_a039bdaa705c46b9b88234cf4d3bb6254}} +\index{testing\+::\+Environment@{testing\+::\+Environment}!Tear\+Down@{Tear\+Down}} +\index{Tear\+Down@{Tear\+Down}!testing\+::\+Environment@{testing\+::\+Environment}} +\subsubsection{\texorpdfstring{Tear\+Down()}{TearDown()}} +{\footnotesize\ttfamily virtual void testing\+::\+Environment\+::\+Tear\+Down (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}} + + + +Definition at line 15647 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1_message.tex b/doc/latex/classtesting_1_1_message.tex new file mode 100644 index 0000000..41dcff7 --- /dev/null +++ b/doc/latex/classtesting_1_1_message.tex @@ -0,0 +1,141 @@ +\hypertarget{classtesting_1_1_message}{}\section{testing\+:\+:Message Class Reference} +\label{classtesting_1_1_message}\index{testing\+::\+Message@{testing\+::\+Message}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classtesting_1_1_message_af5ba7216630df9845f18feb64b1a5383}{Message}} () +\item +\mbox{\hyperlink{classtesting_1_1_message_ac126e24804817a053bebba0920d94a11}{Message}} (const \mbox{\hyperlink{classtesting_1_1_message}{Message}} \&msg) +\item +\mbox{\hyperlink{classtesting_1_1_message_a9de694ca239486809fc99fbbea8ac21d}{Message}} (const char $\ast$str) +\item +{\footnotesize template$<$typename T $>$ }\\\mbox{\hyperlink{classtesting_1_1_message}{Message}} \& \mbox{\hyperlink{classtesting_1_1_message_a2e0e71be52d54c20a75a55fca812721f}{operator$<$$<$}} (const T \&val) +\item +{\footnotesize template$<$typename T $>$ }\\\mbox{\hyperlink{classtesting_1_1_message}{Message}} \& \mbox{\hyperlink{classtesting_1_1_message_aa3ab685879958f90d2d8cd5b68d10c34}{operator$<$$<$}} (T $\ast$const \&pointer) +\item +\mbox{\hyperlink{classtesting_1_1_message}{Message}} \& \mbox{\hyperlink{classtesting_1_1_message_a3a71a1c1c8ea52de5852d75483d41453}{operator$<$$<$}} (Basic\+Narrow\+Io\+Manip val) +\item +\mbox{\hyperlink{classtesting_1_1_message}{Message}} \& \mbox{\hyperlink{classtesting_1_1_message_a3e1e04f23b1bdfe18adfd59928296346}{operator$<$$<$}} (bool b) +\item +\mbox{\hyperlink{classtesting_1_1_message}{Message}} \& \mbox{\hyperlink{classtesting_1_1_message_a34774e225944cb6df02db9689d312aae}{operator$<$$<$}} (const wchar\+\_\+t $\ast$wide\+\_\+c\+\_\+str) +\item +\mbox{\hyperlink{classtesting_1_1_message}{Message}} \& \mbox{\hyperlink{classtesting_1_1_message_aae57eefb3a72a19c11453d630b1d846c}{operator$<$$<$}} (wchar\+\_\+t $\ast$wide\+\_\+c\+\_\+str) +\item +\mbox{\hyperlink{classtesting_1_1_message}{Message}} \& \mbox{\hyperlink{classtesting_1_1_message_a0feb54e52c1c27786ad67e93d4356774}{operator$<$$<$}} (const \+::std\+::wstring \&wstr) +\item +std\+::string \mbox{\hyperlink{classtesting_1_1_message_a2cdc4df62bdcc9df37651a1cf527704e}{Get\+String}} () const +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} + + +Definition at line 2644 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtesting_1_1_message_af5ba7216630df9845f18feb64b1a5383}\label{classtesting_1_1_message_af5ba7216630df9845f18feb64b1a5383}} +\index{testing\+::\+Message@{testing\+::\+Message}!Message@{Message}} +\index{Message@{Message}!testing\+::\+Message@{testing\+::\+Message}} +\subsubsection{\texorpdfstring{Message()}{Message()}\hspace{0.1cm}{\footnotesize\ttfamily [1/3]}} +{\footnotesize\ttfamily testing\+::\+Message\+::\+Message (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{classtesting_1_1_message_ac126e24804817a053bebba0920d94a11}\label{classtesting_1_1_message_ac126e24804817a053bebba0920d94a11}} +\index{testing\+::\+Message@{testing\+::\+Message}!Message@{Message}} +\index{Message@{Message}!testing\+::\+Message@{testing\+::\+Message}} +\subsubsection{\texorpdfstring{Message()}{Message()}\hspace{0.1cm}{\footnotesize\ttfamily [2/3]}} +{\footnotesize\ttfamily testing\+::\+Message\+::\+Message (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classtesting_1_1_message}{Message}} \&}]{msg }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 2655 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_message_a9de694ca239486809fc99fbbea8ac21d}\label{classtesting_1_1_message_a9de694ca239486809fc99fbbea8ac21d}} +\index{testing\+::\+Message@{testing\+::\+Message}!Message@{Message}} +\index{Message@{Message}!testing\+::\+Message@{testing\+::\+Message}} +\subsubsection{\texorpdfstring{Message()}{Message()}\hspace{0.1cm}{\footnotesize\ttfamily [3/3]}} +{\footnotesize\ttfamily testing\+::\+Message\+::\+Message (\begin{DoxyParamCaption}\item[{const char $\ast$}]{str }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [explicit]}} + + + +Definition at line 2660 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1_message_a2cdc4df62bdcc9df37651a1cf527704e}\label{classtesting_1_1_message_a2cdc4df62bdcc9df37651a1cf527704e}} +\index{testing\+::\+Message@{testing\+::\+Message}!Get\+String@{Get\+String}} +\index{Get\+String@{Get\+String}!testing\+::\+Message@{testing\+::\+Message}} +\subsubsection{\texorpdfstring{Get\+String()}{GetString()}} +{\footnotesize\ttfamily std\+::string testing\+::\+Message\+::\+Get\+String (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const} + +\mbox{\Hypertarget{classtesting_1_1_message_a2e0e71be52d54c20a75a55fca812721f}\label{classtesting_1_1_message_a2e0e71be52d54c20a75a55fca812721f}} +\index{testing\+::\+Message@{testing\+::\+Message}!operator$<$$<$@{operator$<$$<$}} +\index{operator$<$$<$@{operator$<$$<$}!testing\+::\+Message@{testing\+::\+Message}} +\subsubsection{\texorpdfstring{operator$<$$<$()}{operator<<()}\hspace{0.1cm}{\footnotesize\ttfamily [1/7]}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +\mbox{\hyperlink{classtesting_1_1_message}{Message}}\& testing\+::\+Message\+::operator$<$$<$ (\begin{DoxyParamCaption}\item[{const T \&}]{val }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 2666 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_message_aa3ab685879958f90d2d8cd5b68d10c34}\label{classtesting_1_1_message_aa3ab685879958f90d2d8cd5b68d10c34}} +\index{testing\+::\+Message@{testing\+::\+Message}!operator$<$$<$@{operator$<$$<$}} +\index{operator$<$$<$@{operator$<$$<$}!testing\+::\+Message@{testing\+::\+Message}} +\subsubsection{\texorpdfstring{operator$<$$<$()}{operator<<()}\hspace{0.1cm}{\footnotesize\ttfamily [2/7]}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +\mbox{\hyperlink{classtesting_1_1_message}{Message}}\& testing\+::\+Message\+::operator$<$$<$ (\begin{DoxyParamCaption}\item[{T $\ast$const \&}]{pointer }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 2700 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_message_a3a71a1c1c8ea52de5852d75483d41453}\label{classtesting_1_1_message_a3a71a1c1c8ea52de5852d75483d41453}} +\index{testing\+::\+Message@{testing\+::\+Message}!operator$<$$<$@{operator$<$$<$}} +\index{operator$<$$<$@{operator$<$$<$}!testing\+::\+Message@{testing\+::\+Message}} +\subsubsection{\texorpdfstring{operator$<$$<$()}{operator<<()}\hspace{0.1cm}{\footnotesize\ttfamily [3/7]}} +{\footnotesize\ttfamily \mbox{\hyperlink{classtesting_1_1_message}{Message}}\& testing\+::\+Message\+::operator$<$$<$ (\begin{DoxyParamCaption}\item[{Basic\+Narrow\+Io\+Manip}]{val }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 2715 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_message_a3e1e04f23b1bdfe18adfd59928296346}\label{classtesting_1_1_message_a3e1e04f23b1bdfe18adfd59928296346}} +\index{testing\+::\+Message@{testing\+::\+Message}!operator$<$$<$@{operator$<$$<$}} +\index{operator$<$$<$@{operator$<$$<$}!testing\+::\+Message@{testing\+::\+Message}} +\subsubsection{\texorpdfstring{operator$<$$<$()}{operator<<()}\hspace{0.1cm}{\footnotesize\ttfamily [4/7]}} +{\footnotesize\ttfamily \mbox{\hyperlink{classtesting_1_1_message}{Message}}\& testing\+::\+Message\+::operator$<$$<$ (\begin{DoxyParamCaption}\item[{bool}]{b }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 2721 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_message_a34774e225944cb6df02db9689d312aae}\label{classtesting_1_1_message_a34774e225944cb6df02db9689d312aae}} +\index{testing\+::\+Message@{testing\+::\+Message}!operator$<$$<$@{operator$<$$<$}} +\index{operator$<$$<$@{operator$<$$<$}!testing\+::\+Message@{testing\+::\+Message}} +\subsubsection{\texorpdfstring{operator$<$$<$()}{operator<<()}\hspace{0.1cm}{\footnotesize\ttfamily [5/7]}} +{\footnotesize\ttfamily \mbox{\hyperlink{classtesting_1_1_message}{Message}}\& testing\+::\+Message\+::operator$<$$<$ (\begin{DoxyParamCaption}\item[{const wchar\+\_\+t $\ast$}]{wide\+\_\+c\+\_\+str }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{classtesting_1_1_message_aae57eefb3a72a19c11453d630b1d846c}\label{classtesting_1_1_message_aae57eefb3a72a19c11453d630b1d846c}} +\index{testing\+::\+Message@{testing\+::\+Message}!operator$<$$<$@{operator$<$$<$}} +\index{operator$<$$<$@{operator$<$$<$}!testing\+::\+Message@{testing\+::\+Message}} +\subsubsection{\texorpdfstring{operator$<$$<$()}{operator<<()}\hspace{0.1cm}{\footnotesize\ttfamily [6/7]}} +{\footnotesize\ttfamily \mbox{\hyperlink{classtesting_1_1_message}{Message}}\& testing\+::\+Message\+::operator$<$$<$ (\begin{DoxyParamCaption}\item[{wchar\+\_\+t $\ast$}]{wide\+\_\+c\+\_\+str }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{classtesting_1_1_message_a0feb54e52c1c27786ad67e93d4356774}\label{classtesting_1_1_message_a0feb54e52c1c27786ad67e93d4356774}} +\index{testing\+::\+Message@{testing\+::\+Message}!operator$<$$<$@{operator$<$$<$}} +\index{operator$<$$<$@{operator$<$$<$}!testing\+::\+Message@{testing\+::\+Message}} +\subsubsection{\texorpdfstring{operator$<$$<$()}{operator<<()}\hspace{0.1cm}{\footnotesize\ttfamily [7/7]}} +{\footnotesize\ttfamily \mbox{\hyperlink{classtesting_1_1_message}{Message}}\& testing\+::\+Message\+::operator$<$$<$ (\begin{DoxyParamCaption}\item[{const \+::std\+::wstring \&}]{wstr }\end{DoxyParamCaption})} + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1_scoped_trace.tex b/doc/latex/classtesting_1_1_scoped_trace.tex new file mode 100644 index 0000000..9d5aa5c --- /dev/null +++ b/doc/latex/classtesting_1_1_scoped_trace.tex @@ -0,0 +1,69 @@ +\hypertarget{classtesting_1_1_scoped_trace}{}\section{testing\+:\+:Scoped\+Trace Class Reference} +\label{classtesting_1_1_scoped_trace}\index{testing\+::\+Scoped\+Trace@{testing\+::\+Scoped\+Trace}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename T $>$ }\\\mbox{\hyperlink{classtesting_1_1_scoped_trace_a2da90b95d682d518cca472934d53c59c}{Scoped\+Trace}} (const char $\ast$file, int line, const T \&message) +\item +\mbox{\hyperlink{classtesting_1_1_scoped_trace_accd2a06cc941ffd7d6fe109adfdb4f19}{Scoped\+Trace}} (const char $\ast$file, int line, const char $\ast$message) +\item +\mbox{\hyperlink{classtesting_1_1_scoped_trace_a1f453a2aade0db6955a111a7cb329615}{Scoped\+Trace}} (const char $\ast$file, int line, const std\+::string \&message) +\item +\mbox{\hyperlink{classtesting_1_1_scoped_trace_aa8320ec2679f205cf2c14f508ba35b4d}{$\sim$\+Scoped\+Trace}} () +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} + + +Definition at line 16835 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtesting_1_1_scoped_trace_a2da90b95d682d518cca472934d53c59c}\label{classtesting_1_1_scoped_trace_a2da90b95d682d518cca472934d53c59c}} +\index{testing\+::\+Scoped\+Trace@{testing\+::\+Scoped\+Trace}!Scoped\+Trace@{Scoped\+Trace}} +\index{Scoped\+Trace@{Scoped\+Trace}!testing\+::\+Scoped\+Trace@{testing\+::\+Scoped\+Trace}} +\subsubsection{\texorpdfstring{Scoped\+Trace()}{ScopedTrace()}\hspace{0.1cm}{\footnotesize\ttfamily [1/3]}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +testing\+::\+Scoped\+Trace\+::\+Scoped\+Trace (\begin{DoxyParamCaption}\item[{const char $\ast$}]{file, }\item[{int}]{line, }\item[{const T \&}]{message }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 16843 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_scoped_trace_accd2a06cc941ffd7d6fe109adfdb4f19}\label{classtesting_1_1_scoped_trace_accd2a06cc941ffd7d6fe109adfdb4f19}} +\index{testing\+::\+Scoped\+Trace@{testing\+::\+Scoped\+Trace}!Scoped\+Trace@{Scoped\+Trace}} +\index{Scoped\+Trace@{Scoped\+Trace}!testing\+::\+Scoped\+Trace@{testing\+::\+Scoped\+Trace}} +\subsubsection{\texorpdfstring{Scoped\+Trace()}{ScopedTrace()}\hspace{0.1cm}{\footnotesize\ttfamily [2/3]}} +{\footnotesize\ttfamily testing\+::\+Scoped\+Trace\+::\+Scoped\+Trace (\begin{DoxyParamCaption}\item[{const char $\ast$}]{file, }\item[{int}]{line, }\item[{const char $\ast$}]{message }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 16848 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_scoped_trace_a1f453a2aade0db6955a111a7cb329615}\label{classtesting_1_1_scoped_trace_a1f453a2aade0db6955a111a7cb329615}} +\index{testing\+::\+Scoped\+Trace@{testing\+::\+Scoped\+Trace}!Scoped\+Trace@{Scoped\+Trace}} +\index{Scoped\+Trace@{Scoped\+Trace}!testing\+::\+Scoped\+Trace@{testing\+::\+Scoped\+Trace}} +\subsubsection{\texorpdfstring{Scoped\+Trace()}{ScopedTrace()}\hspace{0.1cm}{\footnotesize\ttfamily [3/3]}} +{\footnotesize\ttfamily testing\+::\+Scoped\+Trace\+::\+Scoped\+Trace (\begin{DoxyParamCaption}\item[{const char $\ast$}]{file, }\item[{int}]{line, }\item[{const std\+::string \&}]{message }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 16858 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_scoped_trace_aa8320ec2679f205cf2c14f508ba35b4d}\label{classtesting_1_1_scoped_trace_aa8320ec2679f205cf2c14f508ba35b4d}} +\index{testing\+::\+Scoped\+Trace@{testing\+::\+Scoped\+Trace}!````~Scoped\+Trace@{$\sim$\+Scoped\+Trace}} +\index{````~Scoped\+Trace@{$\sim$\+Scoped\+Trace}!testing\+::\+Scoped\+Trace@{testing\+::\+Scoped\+Trace}} +\subsubsection{\texorpdfstring{$\sim$\+Scoped\+Trace()}{~ScopedTrace()}} +{\footnotesize\ttfamily testing\+::\+Scoped\+Trace\+::$\sim$\+Scoped\+Trace (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1_test.eps b/doc/latex/classtesting_1_1_test.eps new file mode 100644 index 0000000..e991378 --- /dev/null +++ b/doc/latex/classtesting_1_1_test.eps @@ -0,0 +1,215 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 37.735849 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 13.250000 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 5 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(testing::Test) cw +(test_1w::Test_1w_impl) cw +(test_ostream_dev::Tostream_Idev) cw +(test_ostream_dev::Tostream_Vdev) cw +(test_spi::Test_spi_impl) cw +(testing::TestWithParam< T >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (testing::Test) 2.000000 1.000000 box + (test_1w::Test_1w_impl) 0.000000 0.000000 box + (test_ostream_dev::Tostream_Idev) 1.000000 0.000000 box + (test_ostream_dev::Tostream_Vdev) 2.000000 0.000000 box + (test_spi::Test_spi_impl) 3.000000 0.000000 box + (testing::TestWithParam< T >) 4.000000 0.000000 box + +% ----- relations ----- + +solid +1 2.000000 0.250000 out +solid +0.000000 4.000000 1.000000 conn +solid +0 0.000000 0.750000 in +solid +0 1.000000 0.750000 in +solid +0 2.000000 0.750000 in +solid +0 3.000000 0.750000 in +solid +0 4.000000 0.750000 in diff --git a/doc/latex/classtesting_1_1_test.tex b/doc/latex/classtesting_1_1_test.tex new file mode 100644 index 0000000..dbedc27 --- /dev/null +++ b/doc/latex/classtesting_1_1_test.tex @@ -0,0 +1,189 @@ +\hypertarget{classtesting_1_1_test}{}\section{testing\+:\+:Test Class Reference} +\label{classtesting_1_1_test}\index{testing\+::\+Test@{testing\+::\+Test}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +Inheritance diagram for testing\+:\+:Test\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=1.056604cm]{classtesting_1_1_test} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +virtual \mbox{\hyperlink{classtesting_1_1_test_ad99dc9b12208fd4bffc367f0a1e3df1b}{$\sim$\+Test}} () +\end{DoxyCompactItemize} +\subsection*{Static Public Member Functions} +\begin{DoxyCompactItemize} +\item +static void \mbox{\hyperlink{classtesting_1_1_test_ae173b07a0fdd09fc1d417a2bb6cbdd76}{Set\+Up\+Test\+Suite}} () +\item +static void \mbox{\hyperlink{classtesting_1_1_test_a7704c8223ba28338a66ca2eaeba66383}{Tear\+Down\+Test\+Suite}} () +\item +static void \mbox{\hyperlink{classtesting_1_1_test_af374706cbaf0ffc460f4fd04e7c150f1}{Tear\+Down\+Test\+Case}} () +\item +static void \mbox{\hyperlink{classtesting_1_1_test_a5ccbac42fee8c5b00b0bfe89b6c49d79}{Set\+Up\+Test\+Case}} () +\item +static bool \mbox{\hyperlink{classtesting_1_1_test_a0a89846458f0e8ed1c9457c957e8182a}{Has\+Fatal\+Failure}} () +\item +static bool \mbox{\hyperlink{classtesting_1_1_test_a07e896f1b1836f8ac075c26d7b7c9fb8}{Has\+Nonfatal\+Failure}} () +\item +static bool \mbox{\hyperlink{classtesting_1_1_test_a1723aea1d7bd468265f4134241596752}{Is\+Skipped}} () +\item +static bool \mbox{\hyperlink{classtesting_1_1_test_a7a00be7dd0a6bfdc8d47a1b784623613}{Has\+Failure}} () +\item +static void \mbox{\hyperlink{classtesting_1_1_test_ae0448aec9e389fab70f6a75a59ff6aa2}{Record\+Property}} (const std\+::string \&key, const std\+::string \&value) +\item +static void \mbox{\hyperlink{classtesting_1_1_test_af602903efb17730b977304fc56500881}{Record\+Property}} (const std\+::string \&key, int value) +\end{DoxyCompactItemize} +\subsection*{Protected Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classtesting_1_1_test_a68b7618abd1fc6d13382738b0d3b5c7c}{Test}} () +\item +virtual void \mbox{\hyperlink{classtesting_1_1_test_a8b38992669fb844864807cf32e416853}{Set\+Up}} () +\item +virtual void \mbox{\hyperlink{classtesting_1_1_test_aab3c02c9f81afe1357adfc45afccd474}{Tear\+Down}} () +\end{DoxyCompactItemize} +\subsection*{Friends} +\begin{DoxyCompactItemize} +\item +class \mbox{\hyperlink{classtesting_1_1_test_a4c49c2cdb6c328e6b709b4542f23de3c}{Test\+Info}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} + + +Definition at line 15014 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtesting_1_1_test_ad99dc9b12208fd4bffc367f0a1e3df1b}\label{classtesting_1_1_test_ad99dc9b12208fd4bffc367f0a1e3df1b}} +\index{testing\+::\+Test@{testing\+::\+Test}!````~Test@{$\sim$\+Test}} +\index{````~Test@{$\sim$\+Test}!testing\+::\+Test@{testing\+::\+Test}} +\subsubsection{\texorpdfstring{$\sim$\+Test()}{~Test()}} +{\footnotesize\ttfamily virtual testing\+::\+Test\+::$\sim$\+Test (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}} + +\mbox{\Hypertarget{classtesting_1_1_test_a68b7618abd1fc6d13382738b0d3b5c7c}\label{classtesting_1_1_test_a68b7618abd1fc6d13382738b0d3b5c7c}} +\index{testing\+::\+Test@{testing\+::\+Test}!Test@{Test}} +\index{Test@{Test}!testing\+::\+Test@{testing\+::\+Test}} +\subsubsection{\texorpdfstring{Test()}{Test()}} +{\footnotesize\ttfamily testing\+::\+Test\+::\+Test (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}} + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1_test_a7a00be7dd0a6bfdc8d47a1b784623613}\label{classtesting_1_1_test_a7a00be7dd0a6bfdc8d47a1b784623613}} +\index{testing\+::\+Test@{testing\+::\+Test}!Has\+Failure@{Has\+Failure}} +\index{Has\+Failure@{Has\+Failure}!testing\+::\+Test@{testing\+::\+Test}} +\subsubsection{\texorpdfstring{Has\+Failure()}{HasFailure()}} +{\footnotesize\ttfamily static bool testing\+::\+Test\+::\+Has\+Failure (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}} + + + +Definition at line 15054 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_test_a0a89846458f0e8ed1c9457c957e8182a}\label{classtesting_1_1_test_a0a89846458f0e8ed1c9457c957e8182a}} +\index{testing\+::\+Test@{testing\+::\+Test}!Has\+Fatal\+Failure@{Has\+Fatal\+Failure}} +\index{Has\+Fatal\+Failure@{Has\+Fatal\+Failure}!testing\+::\+Test@{testing\+::\+Test}} +\subsubsection{\texorpdfstring{Has\+Fatal\+Failure()}{HasFatalFailure()}} +{\footnotesize\ttfamily static bool testing\+::\+Test\+::\+Has\+Fatal\+Failure (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} + +\mbox{\Hypertarget{classtesting_1_1_test_a07e896f1b1836f8ac075c26d7b7c9fb8}\label{classtesting_1_1_test_a07e896f1b1836f8ac075c26d7b7c9fb8}} +\index{testing\+::\+Test@{testing\+::\+Test}!Has\+Nonfatal\+Failure@{Has\+Nonfatal\+Failure}} +\index{Has\+Nonfatal\+Failure@{Has\+Nonfatal\+Failure}!testing\+::\+Test@{testing\+::\+Test}} +\subsubsection{\texorpdfstring{Has\+Nonfatal\+Failure()}{HasNonfatalFailure()}} +{\footnotesize\ttfamily static bool testing\+::\+Test\+::\+Has\+Nonfatal\+Failure (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} + +\mbox{\Hypertarget{classtesting_1_1_test_a1723aea1d7bd468265f4134241596752}\label{classtesting_1_1_test_a1723aea1d7bd468265f4134241596752}} +\index{testing\+::\+Test@{testing\+::\+Test}!Is\+Skipped@{Is\+Skipped}} +\index{Is\+Skipped@{Is\+Skipped}!testing\+::\+Test@{testing\+::\+Test}} +\subsubsection{\texorpdfstring{Is\+Skipped()}{IsSkipped()}} +{\footnotesize\ttfamily static bool testing\+::\+Test\+::\+Is\+Skipped (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} + +\mbox{\Hypertarget{classtesting_1_1_test_ae0448aec9e389fab70f6a75a59ff6aa2}\label{classtesting_1_1_test_ae0448aec9e389fab70f6a75a59ff6aa2}} +\index{testing\+::\+Test@{testing\+::\+Test}!Record\+Property@{Record\+Property}} +\index{Record\+Property@{Record\+Property}!testing\+::\+Test@{testing\+::\+Test}} +\subsubsection{\texorpdfstring{Record\+Property()}{RecordProperty()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily static void testing\+::\+Test\+::\+Record\+Property (\begin{DoxyParamCaption}\item[{const std\+::string \&}]{key, }\item[{const std\+::string \&}]{value }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} + +\mbox{\Hypertarget{classtesting_1_1_test_af602903efb17730b977304fc56500881}\label{classtesting_1_1_test_af602903efb17730b977304fc56500881}} +\index{testing\+::\+Test@{testing\+::\+Test}!Record\+Property@{Record\+Property}} +\index{Record\+Property@{Record\+Property}!testing\+::\+Test@{testing\+::\+Test}} +\subsubsection{\texorpdfstring{Record\+Property()}{RecordProperty()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily static void testing\+::\+Test\+::\+Record\+Property (\begin{DoxyParamCaption}\item[{const std\+::string \&}]{key, }\item[{int}]{value }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} + +\mbox{\Hypertarget{classtesting_1_1_test_a8b38992669fb844864807cf32e416853}\label{classtesting_1_1_test_a8b38992669fb844864807cf32e416853}} +\index{testing\+::\+Test@{testing\+::\+Test}!Set\+Up@{Set\+Up}} +\index{Set\+Up@{Set\+Up}!testing\+::\+Test@{testing\+::\+Test}} +\subsubsection{\texorpdfstring{Set\+Up()}{SetUp()}} +{\footnotesize\ttfamily virtual void testing\+::\+Test\+::\+Set\+Up (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [virtual]}} + +\mbox{\Hypertarget{classtesting_1_1_test_a5ccbac42fee8c5b00b0bfe89b6c49d79}\label{classtesting_1_1_test_a5ccbac42fee8c5b00b0bfe89b6c49d79}} +\index{testing\+::\+Test@{testing\+::\+Test}!Set\+Up\+Test\+Case@{Set\+Up\+Test\+Case}} +\index{Set\+Up\+Test\+Case@{Set\+Up\+Test\+Case}!testing\+::\+Test@{testing\+::\+Test}} +\subsubsection{\texorpdfstring{Set\+Up\+Test\+Case()}{SetUpTestCase()}} +{\footnotesize\ttfamily static void testing\+::\+Test\+::\+Set\+Up\+Test\+Case (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}} + + + +Definition at line 15040 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_test_ae173b07a0fdd09fc1d417a2bb6cbdd76}\label{classtesting_1_1_test_ae173b07a0fdd09fc1d417a2bb6cbdd76}} +\index{testing\+::\+Test@{testing\+::\+Test}!Set\+Up\+Test\+Suite@{Set\+Up\+Test\+Suite}} +\index{Set\+Up\+Test\+Suite@{Set\+Up\+Test\+Suite}!testing\+::\+Test@{testing\+::\+Test}} +\subsubsection{\texorpdfstring{Set\+Up\+Test\+Suite()}{SetUpTestSuite()}} +{\footnotesize\ttfamily static void testing\+::\+Test\+::\+Set\+Up\+Test\+Suite (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}} + + + +Definition at line 15027 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_test_aab3c02c9f81afe1357adfc45afccd474}\label{classtesting_1_1_test_aab3c02c9f81afe1357adfc45afccd474}} +\index{testing\+::\+Test@{testing\+::\+Test}!Tear\+Down@{Tear\+Down}} +\index{Tear\+Down@{Tear\+Down}!testing\+::\+Test@{testing\+::\+Test}} +\subsubsection{\texorpdfstring{Tear\+Down()}{TearDown()}} +{\footnotesize\ttfamily virtual void testing\+::\+Test\+::\+Tear\+Down (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [virtual]}} + +\mbox{\Hypertarget{classtesting_1_1_test_af374706cbaf0ffc460f4fd04e7c150f1}\label{classtesting_1_1_test_af374706cbaf0ffc460f4fd04e7c150f1}} +\index{testing\+::\+Test@{testing\+::\+Test}!Tear\+Down\+Test\+Case@{Tear\+Down\+Test\+Case}} +\index{Tear\+Down\+Test\+Case@{Tear\+Down\+Test\+Case}!testing\+::\+Test@{testing\+::\+Test}} +\subsubsection{\texorpdfstring{Tear\+Down\+Test\+Case()}{TearDownTestCase()}} +{\footnotesize\ttfamily static void testing\+::\+Test\+::\+Tear\+Down\+Test\+Case (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}} + + + +Definition at line 15039 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_test_a7704c8223ba28338a66ca2eaeba66383}\label{classtesting_1_1_test_a7704c8223ba28338a66ca2eaeba66383}} +\index{testing\+::\+Test@{testing\+::\+Test}!Tear\+Down\+Test\+Suite@{Tear\+Down\+Test\+Suite}} +\index{Tear\+Down\+Test\+Suite@{Tear\+Down\+Test\+Suite}!testing\+::\+Test@{testing\+::\+Test}} +\subsubsection{\texorpdfstring{Tear\+Down\+Test\+Suite()}{TearDownTestSuite()}} +{\footnotesize\ttfamily static void testing\+::\+Test\+::\+Tear\+Down\+Test\+Suite (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}} + + + +Definition at line 15035 of file gtest.\+h. + + + +\subsection{Friends And Related Function Documentation} +\mbox{\Hypertarget{classtesting_1_1_test_a4c49c2cdb6c328e6b709b4542f23de3c}\label{classtesting_1_1_test_a4c49c2cdb6c328e6b709b4542f23de3c}} +\index{testing\+::\+Test@{testing\+::\+Test}!Test\+Info@{Test\+Info}} +\index{Test\+Info@{Test\+Info}!testing\+::\+Test@{testing\+::\+Test}} +\subsubsection{\texorpdfstring{Test\+Info}{TestInfo}} +{\footnotesize\ttfamily friend class \mbox{\hyperlink{classtesting_1_1_test_info}{Test\+Info}}\hspace{0.3cm}{\ttfamily [friend]}} + + + +Definition at line 15016 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1_test_event_listener.eps b/doc/latex/classtesting_1_1_test_event_listener.eps new file mode 100644 index 0000000..64bb819 --- /dev/null +++ b/doc/latex/classtesting_1_1_test_event_listener.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 204.081633 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.450000 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(testing::TestEventListener) cw +(testing::EmptyTestEventListener) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (testing::TestEventListener) 0.000000 1.000000 box + (testing::EmptyTestEventListener) 0.000000 0.000000 box + +% ----- relations ----- + +solid +1 0.000000 0.250000 out +solid +0 0.000000 0.750000 in diff --git a/doc/latex/classtesting_1_1_test_event_listener.tex b/doc/latex/classtesting_1_1_test_event_listener.tex new file mode 100644 index 0000000..4c01782 --- /dev/null +++ b/doc/latex/classtesting_1_1_test_event_listener.tex @@ -0,0 +1,241 @@ +\hypertarget{classtesting_1_1_test_event_listener}{}\section{testing\+:\+:Test\+Event\+Listener Class Reference} +\label{classtesting_1_1_test_event_listener}\index{testing\+::\+Test\+Event\+Listener@{testing\+::\+Test\+Event\+Listener}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +Inheritance diagram for testing\+:\+:Test\+Event\+Listener\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{classtesting_1_1_test_event_listener} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +virtual \mbox{\hyperlink{classtesting_1_1_test_event_listener_a4512d19e7a108ec4926239ec1ea85d63}{$\sim$\+Test\+Event\+Listener}} () +\item +virtual void \mbox{\hyperlink{classtesting_1_1_test_event_listener_a5f6c84f39851e8a603a2d2e10063816b}{On\+Test\+Program\+Start}} (const \mbox{\hyperlink{classtesting_1_1_unit_test}{Unit\+Test}} \&unit\+\_\+test)=0 +\item +virtual void \mbox{\hyperlink{classtesting_1_1_test_event_listener_a60cc09b7907cb329d152eb5e7133bdeb}{On\+Test\+Iteration\+Start}} (const \mbox{\hyperlink{classtesting_1_1_unit_test}{Unit\+Test}} \&unit\+\_\+test, int iteration)=0 +\item +virtual void \mbox{\hyperlink{classtesting_1_1_test_event_listener_aa6502e534919605be45f26a6daf9a40c}{On\+Environments\+Set\+Up\+Start}} (const \mbox{\hyperlink{classtesting_1_1_unit_test}{Unit\+Test}} \&unit\+\_\+test)=0 +\item +virtual void \mbox{\hyperlink{classtesting_1_1_test_event_listener_aaa1021d75f5dbf3f05c829c1cc520341}{On\+Environments\+Set\+Up\+End}} (const \mbox{\hyperlink{classtesting_1_1_unit_test}{Unit\+Test}} \&unit\+\_\+test)=0 +\item +virtual void \mbox{\hyperlink{classtesting_1_1_test_event_listener_ac6605dbb5859436d59d117348d63746c}{On\+Test\+Suite\+Start}} (const \mbox{\hyperlink{classtesting_1_1_test_suite}{Test\+Suite}} \&test\+\_\+suite) +\item +virtual void \mbox{\hyperlink{classtesting_1_1_test_event_listener_a96693881a1872657b4683e2f0a236ca5}{On\+Test\+Case\+Start}} (const Test\+Case \&test\+\_\+case) +\item +virtual void \mbox{\hyperlink{classtesting_1_1_test_event_listener_ab4f6a0ca16ae75daf385b3b5914e1048}{On\+Test\+Start}} (const \mbox{\hyperlink{classtesting_1_1_test_info}{Test\+Info}} \&test\+\_\+info)=0 +\item +virtual void \mbox{\hyperlink{classtesting_1_1_test_event_listener_a054f8705c883fa120b91473aff38f2ee}{On\+Test\+Part\+Result}} (const Test\+Part\+Result \&test\+\_\+part\+\_\+result)=0 +\item +virtual void \mbox{\hyperlink{classtesting_1_1_test_event_listener_abb1c44525ef038500608b5dc2f17099b}{On\+Test\+End}} (const \mbox{\hyperlink{classtesting_1_1_test_info}{Test\+Info}} \&test\+\_\+info)=0 +\item +virtual void \mbox{\hyperlink{classtesting_1_1_test_event_listener_a841e522e537bb858d21eb75d0228d3b5}{On\+Test\+Suite\+End}} (const \mbox{\hyperlink{classtesting_1_1_test_suite}{Test\+Suite}} \&test\+\_\+suite) +\item +virtual void \mbox{\hyperlink{classtesting_1_1_test_event_listener_a76dbb7c3868d1c9abb957faee2568c0b}{On\+Test\+Case\+End}} (const Test\+Case \&test\+\_\+case) +\item +virtual void \mbox{\hyperlink{classtesting_1_1_test_event_listener_a468b5e6701bcb86cb2c956caadbba5e4}{On\+Environments\+Tear\+Down\+Start}} (const \mbox{\hyperlink{classtesting_1_1_unit_test}{Unit\+Test}} \&unit\+\_\+test)=0 +\item +virtual void \mbox{\hyperlink{classtesting_1_1_test_event_listener_a9ea04fa7f447865ba76df35e12ba2092}{On\+Environments\+Tear\+Down\+End}} (const \mbox{\hyperlink{classtesting_1_1_unit_test}{Unit\+Test}} \&unit\+\_\+test)=0 +\item +virtual void \mbox{\hyperlink{classtesting_1_1_test_event_listener_a550fdb3e55726e4cefa09f5697941425}{On\+Test\+Iteration\+End}} (const \mbox{\hyperlink{classtesting_1_1_unit_test}{Unit\+Test}} \&unit\+\_\+test, int iteration)=0 +\item +virtual void \mbox{\hyperlink{classtesting_1_1_test_event_listener_ad15b6246d94c268e233487a86463ef3d}{On\+Test\+Program\+End}} (const \mbox{\hyperlink{classtesting_1_1_unit_test}{Unit\+Test}} \&unit\+\_\+test)=0 +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} + + +Definition at line 15669 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtesting_1_1_test_event_listener_a4512d19e7a108ec4926239ec1ea85d63}\label{classtesting_1_1_test_event_listener_a4512d19e7a108ec4926239ec1ea85d63}} +\index{testing\+::\+Test\+Event\+Listener@{testing\+::\+Test\+Event\+Listener}!````~Test\+Event\+Listener@{$\sim$\+Test\+Event\+Listener}} +\index{````~Test\+Event\+Listener@{$\sim$\+Test\+Event\+Listener}!testing\+::\+Test\+Event\+Listener@{testing\+::\+Test\+Event\+Listener}} +\subsubsection{\texorpdfstring{$\sim$\+Test\+Event\+Listener()}{~TestEventListener()}} +{\footnotesize\ttfamily virtual testing\+::\+Test\+Event\+Listener\+::$\sim$\+Test\+Event\+Listener (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}} + + + +Definition at line 15671 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1_test_event_listener_aaa1021d75f5dbf3f05c829c1cc520341}\label{classtesting_1_1_test_event_listener_aaa1021d75f5dbf3f05c829c1cc520341}} +\index{testing\+::\+Test\+Event\+Listener@{testing\+::\+Test\+Event\+Listener}!On\+Environments\+Set\+Up\+End@{On\+Environments\+Set\+Up\+End}} +\index{On\+Environments\+Set\+Up\+End@{On\+Environments\+Set\+Up\+End}!testing\+::\+Test\+Event\+Listener@{testing\+::\+Test\+Event\+Listener}} +\subsubsection{\texorpdfstring{On\+Environments\+Set\+Up\+End()}{OnEnvironmentsSetUpEnd()}} +{\footnotesize\ttfamily virtual void testing\+::\+Test\+Event\+Listener\+::\+On\+Environments\+Set\+Up\+End (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classtesting_1_1_unit_test}{Unit\+Test}} \&}]{unit\+\_\+test }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [pure virtual]}} + + + +Implemented in \mbox{\hyperlink{classtesting_1_1_empty_test_event_listener_a9b4e781c0b38065a55c2fd163724ba69}{testing\+::\+Empty\+Test\+Event\+Listener}}. + +\mbox{\Hypertarget{classtesting_1_1_test_event_listener_aa6502e534919605be45f26a6daf9a40c}\label{classtesting_1_1_test_event_listener_aa6502e534919605be45f26a6daf9a40c}} +\index{testing\+::\+Test\+Event\+Listener@{testing\+::\+Test\+Event\+Listener}!On\+Environments\+Set\+Up\+Start@{On\+Environments\+Set\+Up\+Start}} +\index{On\+Environments\+Set\+Up\+Start@{On\+Environments\+Set\+Up\+Start}!testing\+::\+Test\+Event\+Listener@{testing\+::\+Test\+Event\+Listener}} +\subsubsection{\texorpdfstring{On\+Environments\+Set\+Up\+Start()}{OnEnvironmentsSetUpStart()}} +{\footnotesize\ttfamily virtual void testing\+::\+Test\+Event\+Listener\+::\+On\+Environments\+Set\+Up\+Start (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classtesting_1_1_unit_test}{Unit\+Test}} \&}]{unit\+\_\+test }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [pure virtual]}} + + + +Implemented in \mbox{\hyperlink{classtesting_1_1_empty_test_event_listener_a6e498ae763ac8c1a46bd861e0b7ff3f5}{testing\+::\+Empty\+Test\+Event\+Listener}}. + +\mbox{\Hypertarget{classtesting_1_1_test_event_listener_a9ea04fa7f447865ba76df35e12ba2092}\label{classtesting_1_1_test_event_listener_a9ea04fa7f447865ba76df35e12ba2092}} +\index{testing\+::\+Test\+Event\+Listener@{testing\+::\+Test\+Event\+Listener}!On\+Environments\+Tear\+Down\+End@{On\+Environments\+Tear\+Down\+End}} +\index{On\+Environments\+Tear\+Down\+End@{On\+Environments\+Tear\+Down\+End}!testing\+::\+Test\+Event\+Listener@{testing\+::\+Test\+Event\+Listener}} +\subsubsection{\texorpdfstring{On\+Environments\+Tear\+Down\+End()}{OnEnvironmentsTearDownEnd()}} +{\footnotesize\ttfamily virtual void testing\+::\+Test\+Event\+Listener\+::\+On\+Environments\+Tear\+Down\+End (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classtesting_1_1_unit_test}{Unit\+Test}} \&}]{unit\+\_\+test }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [pure virtual]}} + + + +Implemented in \mbox{\hyperlink{classtesting_1_1_empty_test_event_listener_ad9984052e82c3ae26395a2d9480326d2}{testing\+::\+Empty\+Test\+Event\+Listener}}. + +\mbox{\Hypertarget{classtesting_1_1_test_event_listener_a468b5e6701bcb86cb2c956caadbba5e4}\label{classtesting_1_1_test_event_listener_a468b5e6701bcb86cb2c956caadbba5e4}} +\index{testing\+::\+Test\+Event\+Listener@{testing\+::\+Test\+Event\+Listener}!On\+Environments\+Tear\+Down\+Start@{On\+Environments\+Tear\+Down\+Start}} +\index{On\+Environments\+Tear\+Down\+Start@{On\+Environments\+Tear\+Down\+Start}!testing\+::\+Test\+Event\+Listener@{testing\+::\+Test\+Event\+Listener}} +\subsubsection{\texorpdfstring{On\+Environments\+Tear\+Down\+Start()}{OnEnvironmentsTearDownStart()}} +{\footnotesize\ttfamily virtual void testing\+::\+Test\+Event\+Listener\+::\+On\+Environments\+Tear\+Down\+Start (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classtesting_1_1_unit_test}{Unit\+Test}} \&}]{unit\+\_\+test }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [pure virtual]}} + + + +Implemented in \mbox{\hyperlink{classtesting_1_1_empty_test_event_listener_a320780451eac9178434b7c77d948ecbd}{testing\+::\+Empty\+Test\+Event\+Listener}}. + +\mbox{\Hypertarget{classtesting_1_1_test_event_listener_a76dbb7c3868d1c9abb957faee2568c0b}\label{classtesting_1_1_test_event_listener_a76dbb7c3868d1c9abb957faee2568c0b}} +\index{testing\+::\+Test\+Event\+Listener@{testing\+::\+Test\+Event\+Listener}!On\+Test\+Case\+End@{On\+Test\+Case\+End}} +\index{On\+Test\+Case\+End@{On\+Test\+Case\+End}!testing\+::\+Test\+Event\+Listener@{testing\+::\+Test\+Event\+Listener}} +\subsubsection{\texorpdfstring{On\+Test\+Case\+End()}{OnTestCaseEnd()}} +{\footnotesize\ttfamily virtual void testing\+::\+Test\+Event\+Listener\+::\+On\+Test\+Case\+End (\begin{DoxyParamCaption}\item[{const Test\+Case \&}]{test\+\_\+case }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}} + + + +Reimplemented in \mbox{\hyperlink{classtesting_1_1_empty_test_event_listener_a166bcf075f37bfe14f912d2def55f61a}{testing\+::\+Empty\+Test\+Event\+Listener}}. + + + +Definition at line 15712 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_test_event_listener_a96693881a1872657b4683e2f0a236ca5}\label{classtesting_1_1_test_event_listener_a96693881a1872657b4683e2f0a236ca5}} +\index{testing\+::\+Test\+Event\+Listener@{testing\+::\+Test\+Event\+Listener}!On\+Test\+Case\+Start@{On\+Test\+Case\+Start}} +\index{On\+Test\+Case\+Start@{On\+Test\+Case\+Start}!testing\+::\+Test\+Event\+Listener@{testing\+::\+Test\+Event\+Listener}} +\subsubsection{\texorpdfstring{On\+Test\+Case\+Start()}{OnTestCaseStart()}} +{\footnotesize\ttfamily virtual void testing\+::\+Test\+Event\+Listener\+::\+On\+Test\+Case\+Start (\begin{DoxyParamCaption}\item[{const Test\+Case \&}]{test\+\_\+case }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}} + + + +Reimplemented in \mbox{\hyperlink{classtesting_1_1_empty_test_event_listener_aa1fd7d378f2cdde00a4f8a2f4efb95b4}{testing\+::\+Empty\+Test\+Event\+Listener}}. + + + +Definition at line 15693 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_test_event_listener_abb1c44525ef038500608b5dc2f17099b}\label{classtesting_1_1_test_event_listener_abb1c44525ef038500608b5dc2f17099b}} +\index{testing\+::\+Test\+Event\+Listener@{testing\+::\+Test\+Event\+Listener}!On\+Test\+End@{On\+Test\+End}} +\index{On\+Test\+End@{On\+Test\+End}!testing\+::\+Test\+Event\+Listener@{testing\+::\+Test\+Event\+Listener}} +\subsubsection{\texorpdfstring{On\+Test\+End()}{OnTestEnd()}} +{\footnotesize\ttfamily virtual void testing\+::\+Test\+Event\+Listener\+::\+On\+Test\+End (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classtesting_1_1_test_info}{Test\+Info}} \&}]{test\+\_\+info }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [pure virtual]}} + + + +Implemented in \mbox{\hyperlink{classtesting_1_1_empty_test_event_listener_a709d7077c086c877d214231bc520ef90}{testing\+::\+Empty\+Test\+Event\+Listener}}. + +\mbox{\Hypertarget{classtesting_1_1_test_event_listener_a550fdb3e55726e4cefa09f5697941425}\label{classtesting_1_1_test_event_listener_a550fdb3e55726e4cefa09f5697941425}} +\index{testing\+::\+Test\+Event\+Listener@{testing\+::\+Test\+Event\+Listener}!On\+Test\+Iteration\+End@{On\+Test\+Iteration\+End}} +\index{On\+Test\+Iteration\+End@{On\+Test\+Iteration\+End}!testing\+::\+Test\+Event\+Listener@{testing\+::\+Test\+Event\+Listener}} +\subsubsection{\texorpdfstring{On\+Test\+Iteration\+End()}{OnTestIterationEnd()}} +{\footnotesize\ttfamily virtual void testing\+::\+Test\+Event\+Listener\+::\+On\+Test\+Iteration\+End (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classtesting_1_1_unit_test}{Unit\+Test}} \&}]{unit\+\_\+test, }\item[{int}]{iteration }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [pure virtual]}} + + + +Implemented in \mbox{\hyperlink{classtesting_1_1_empty_test_event_listener_aae9c5c61e476f0c421402fb1dde434d2}{testing\+::\+Empty\+Test\+Event\+Listener}}. + +\mbox{\Hypertarget{classtesting_1_1_test_event_listener_a60cc09b7907cb329d152eb5e7133bdeb}\label{classtesting_1_1_test_event_listener_a60cc09b7907cb329d152eb5e7133bdeb}} +\index{testing\+::\+Test\+Event\+Listener@{testing\+::\+Test\+Event\+Listener}!On\+Test\+Iteration\+Start@{On\+Test\+Iteration\+Start}} +\index{On\+Test\+Iteration\+Start@{On\+Test\+Iteration\+Start}!testing\+::\+Test\+Event\+Listener@{testing\+::\+Test\+Event\+Listener}} +\subsubsection{\texorpdfstring{On\+Test\+Iteration\+Start()}{OnTestIterationStart()}} +{\footnotesize\ttfamily virtual void testing\+::\+Test\+Event\+Listener\+::\+On\+Test\+Iteration\+Start (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classtesting_1_1_unit_test}{Unit\+Test}} \&}]{unit\+\_\+test, }\item[{int}]{iteration }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [pure virtual]}} + + + +Implemented in \mbox{\hyperlink{classtesting_1_1_empty_test_event_listener_a31edf103561e8b4d747656bc2d927661}{testing\+::\+Empty\+Test\+Event\+Listener}}. + +\mbox{\Hypertarget{classtesting_1_1_test_event_listener_a054f8705c883fa120b91473aff38f2ee}\label{classtesting_1_1_test_event_listener_a054f8705c883fa120b91473aff38f2ee}} +\index{testing\+::\+Test\+Event\+Listener@{testing\+::\+Test\+Event\+Listener}!On\+Test\+Part\+Result@{On\+Test\+Part\+Result}} +\index{On\+Test\+Part\+Result@{On\+Test\+Part\+Result}!testing\+::\+Test\+Event\+Listener@{testing\+::\+Test\+Event\+Listener}} +\subsubsection{\texorpdfstring{On\+Test\+Part\+Result()}{OnTestPartResult()}} +{\footnotesize\ttfamily virtual void testing\+::\+Test\+Event\+Listener\+::\+On\+Test\+Part\+Result (\begin{DoxyParamCaption}\item[{const Test\+Part\+Result \&}]{test\+\_\+part\+\_\+result }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [pure virtual]}} + + + +Implemented in \mbox{\hyperlink{classtesting_1_1_empty_test_event_listener_ab95992f0a0b3741d59a24c3a7115fa60}{testing\+::\+Empty\+Test\+Event\+Listener}}. + +\mbox{\Hypertarget{classtesting_1_1_test_event_listener_ad15b6246d94c268e233487a86463ef3d}\label{classtesting_1_1_test_event_listener_ad15b6246d94c268e233487a86463ef3d}} +\index{testing\+::\+Test\+Event\+Listener@{testing\+::\+Test\+Event\+Listener}!On\+Test\+Program\+End@{On\+Test\+Program\+End}} +\index{On\+Test\+Program\+End@{On\+Test\+Program\+End}!testing\+::\+Test\+Event\+Listener@{testing\+::\+Test\+Event\+Listener}} +\subsubsection{\texorpdfstring{On\+Test\+Program\+End()}{OnTestProgramEnd()}} +{\footnotesize\ttfamily virtual void testing\+::\+Test\+Event\+Listener\+::\+On\+Test\+Program\+End (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classtesting_1_1_unit_test}{Unit\+Test}} \&}]{unit\+\_\+test }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [pure virtual]}} + + + +Implemented in \mbox{\hyperlink{classtesting_1_1_empty_test_event_listener_aaa9d683e8e0c850af67a0b92d785ddb9}{testing\+::\+Empty\+Test\+Event\+Listener}}. + +\mbox{\Hypertarget{classtesting_1_1_test_event_listener_a5f6c84f39851e8a603a2d2e10063816b}\label{classtesting_1_1_test_event_listener_a5f6c84f39851e8a603a2d2e10063816b}} +\index{testing\+::\+Test\+Event\+Listener@{testing\+::\+Test\+Event\+Listener}!On\+Test\+Program\+Start@{On\+Test\+Program\+Start}} +\index{On\+Test\+Program\+Start@{On\+Test\+Program\+Start}!testing\+::\+Test\+Event\+Listener@{testing\+::\+Test\+Event\+Listener}} +\subsubsection{\texorpdfstring{On\+Test\+Program\+Start()}{OnTestProgramStart()}} +{\footnotesize\ttfamily virtual void testing\+::\+Test\+Event\+Listener\+::\+On\+Test\+Program\+Start (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classtesting_1_1_unit_test}{Unit\+Test}} \&}]{unit\+\_\+test }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [pure virtual]}} + + + +Implemented in \mbox{\hyperlink{classtesting_1_1_empty_test_event_listener_ac3f5033fcd82080edb45f546ce9854fe}{testing\+::\+Empty\+Test\+Event\+Listener}}. + +\mbox{\Hypertarget{classtesting_1_1_test_event_listener_ab4f6a0ca16ae75daf385b3b5914e1048}\label{classtesting_1_1_test_event_listener_ab4f6a0ca16ae75daf385b3b5914e1048}} +\index{testing\+::\+Test\+Event\+Listener@{testing\+::\+Test\+Event\+Listener}!On\+Test\+Start@{On\+Test\+Start}} +\index{On\+Test\+Start@{On\+Test\+Start}!testing\+::\+Test\+Event\+Listener@{testing\+::\+Test\+Event\+Listener}} +\subsubsection{\texorpdfstring{On\+Test\+Start()}{OnTestStart()}} +{\footnotesize\ttfamily virtual void testing\+::\+Test\+Event\+Listener\+::\+On\+Test\+Start (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classtesting_1_1_test_info}{Test\+Info}} \&}]{test\+\_\+info }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [pure virtual]}} + + + +Implemented in \mbox{\hyperlink{classtesting_1_1_empty_test_event_listener_a1d8c7f3f1f92826f668edae1bc5aadf4}{testing\+::\+Empty\+Test\+Event\+Listener}}. + +\mbox{\Hypertarget{classtesting_1_1_test_event_listener_a841e522e537bb858d21eb75d0228d3b5}\label{classtesting_1_1_test_event_listener_a841e522e537bb858d21eb75d0228d3b5}} +\index{testing\+::\+Test\+Event\+Listener@{testing\+::\+Test\+Event\+Listener}!On\+Test\+Suite\+End@{On\+Test\+Suite\+End}} +\index{On\+Test\+Suite\+End@{On\+Test\+Suite\+End}!testing\+::\+Test\+Event\+Listener@{testing\+::\+Test\+Event\+Listener}} +\subsubsection{\texorpdfstring{On\+Test\+Suite\+End()}{OnTestSuiteEnd()}} +{\footnotesize\ttfamily virtual void testing\+::\+Test\+Event\+Listener\+::\+On\+Test\+Suite\+End (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classtesting_1_1_test_suite}{Test\+Suite}} \&}]{test\+\_\+suite }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}} + + + +Reimplemented in \mbox{\hyperlink{classtesting_1_1_empty_test_event_listener_aefdb73682d290791461e186d864db718}{testing\+::\+Empty\+Test\+Event\+Listener}}. + + + +Definition at line 15708 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_test_event_listener_ac6605dbb5859436d59d117348d63746c}\label{classtesting_1_1_test_event_listener_ac6605dbb5859436d59d117348d63746c}} +\index{testing\+::\+Test\+Event\+Listener@{testing\+::\+Test\+Event\+Listener}!On\+Test\+Suite\+Start@{On\+Test\+Suite\+Start}} +\index{On\+Test\+Suite\+Start@{On\+Test\+Suite\+Start}!testing\+::\+Test\+Event\+Listener@{testing\+::\+Test\+Event\+Listener}} +\subsubsection{\texorpdfstring{On\+Test\+Suite\+Start()}{OnTestSuiteStart()}} +{\footnotesize\ttfamily virtual void testing\+::\+Test\+Event\+Listener\+::\+On\+Test\+Suite\+Start (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classtesting_1_1_test_suite}{Test\+Suite}} \&}]{test\+\_\+suite }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}} + + + +Reimplemented in \mbox{\hyperlink{classtesting_1_1_empty_test_event_listener_a1e32e4bd4857822b6b50e6900aa5c651}{testing\+::\+Empty\+Test\+Event\+Listener}}. + + + +Definition at line 15689 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1_test_event_listeners.tex b/doc/latex/classtesting_1_1_test_event_listeners.tex new file mode 100644 index 0000000..be56014 --- /dev/null +++ b/doc/latex/classtesting_1_1_test_event_listeners.tex @@ -0,0 +1,161 @@ +\hypertarget{classtesting_1_1_test_event_listeners}{}\section{testing\+:\+:Test\+Event\+Listeners Class Reference} +\label{classtesting_1_1_test_event_listeners}\index{testing\+::\+Test\+Event\+Listeners@{testing\+::\+Test\+Event\+Listeners}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classtesting_1_1_test_event_listeners_af0716e4067a6f357ee5ea18802a591dd}{Test\+Event\+Listeners}} () +\item +\mbox{\hyperlink{classtesting_1_1_test_event_listeners_abe9fbbbedf7f55fa898abfae60aa4913}{$\sim$\+Test\+Event\+Listeners}} () +\item +void \mbox{\hyperlink{classtesting_1_1_test_event_listeners_a1207dce74d64c1c39ffa6105560536a0}{Append}} (\mbox{\hyperlink{classtesting_1_1_test_event_listener}{Test\+Event\+Listener}} $\ast$listener) +\item +\mbox{\hyperlink{classtesting_1_1_test_event_listener}{Test\+Event\+Listener}} $\ast$ \mbox{\hyperlink{classtesting_1_1_test_event_listeners_a5d4bfb7d8584801d6074bb0ec28f8bda}{Release}} (\mbox{\hyperlink{classtesting_1_1_test_event_listener}{Test\+Event\+Listener}} $\ast$listener) +\item +\mbox{\hyperlink{classtesting_1_1_test_event_listener}{Test\+Event\+Listener}} $\ast$ \mbox{\hyperlink{classtesting_1_1_test_event_listeners_a6293443acb5af942eeec638b6aa6dcf2}{default\+\_\+result\+\_\+printer}} () const +\item +\mbox{\hyperlink{classtesting_1_1_test_event_listener}{Test\+Event\+Listener}} $\ast$ \mbox{\hyperlink{classtesting_1_1_test_event_listeners_aa880de6ddfc3f5824371853c6846abbd}{default\+\_\+xml\+\_\+generator}} () const +\end{DoxyCompactItemize} +\subsection*{Friends} +\begin{DoxyCompactItemize} +\item +class \mbox{\hyperlink{classtesting_1_1_test_event_listeners_ab9aaba231fd11196425e75caf709bfc6}{Test\+Suite}} +\item +class \mbox{\hyperlink{classtesting_1_1_test_event_listeners_a4c49c2cdb6c328e6b709b4542f23de3c}{Test\+Info}} +\item +class \mbox{\hyperlink{classtesting_1_1_test_event_listeners_abae39633da9932847b41cb80efd62115}{internal\+::\+Default\+Global\+Test\+Part\+Result\+Reporter}} +\item +class \mbox{\hyperlink{classtesting_1_1_test_event_listeners_afddba49fdf3f493532b4d5efb9814f4e}{internal\+::\+No\+Exec\+Death\+Test}} +\item +class \mbox{\hyperlink{classtesting_1_1_test_event_listeners_addbc107b6b445617c880182bd4f44cf9}{internal\+::\+Test\+Event\+Listeners\+Accessor}} +\item +class \mbox{\hyperlink{classtesting_1_1_test_event_listeners_acc0a5e7573fd6ae7ad1878613bb86853}{internal\+::\+Unit\+Test\+Impl}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} + + +Definition at line 15763 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtesting_1_1_test_event_listeners_af0716e4067a6f357ee5ea18802a591dd}\label{classtesting_1_1_test_event_listeners_af0716e4067a6f357ee5ea18802a591dd}} +\index{testing\+::\+Test\+Event\+Listeners@{testing\+::\+Test\+Event\+Listeners}!Test\+Event\+Listeners@{Test\+Event\+Listeners}} +\index{Test\+Event\+Listeners@{Test\+Event\+Listeners}!testing\+::\+Test\+Event\+Listeners@{testing\+::\+Test\+Event\+Listeners}} +\subsubsection{\texorpdfstring{Test\+Event\+Listeners()}{TestEventListeners()}} +{\footnotesize\ttfamily testing\+::\+Test\+Event\+Listeners\+::\+Test\+Event\+Listeners (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{classtesting_1_1_test_event_listeners_abe9fbbbedf7f55fa898abfae60aa4913}\label{classtesting_1_1_test_event_listeners_abe9fbbbedf7f55fa898abfae60aa4913}} +\index{testing\+::\+Test\+Event\+Listeners@{testing\+::\+Test\+Event\+Listeners}!````~Test\+Event\+Listeners@{$\sim$\+Test\+Event\+Listeners}} +\index{````~Test\+Event\+Listeners@{$\sim$\+Test\+Event\+Listeners}!testing\+::\+Test\+Event\+Listeners@{testing\+::\+Test\+Event\+Listeners}} +\subsubsection{\texorpdfstring{$\sim$\+Test\+Event\+Listeners()}{~TestEventListeners()}} +{\footnotesize\ttfamily testing\+::\+Test\+Event\+Listeners\+::$\sim$\+Test\+Event\+Listeners (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1_test_event_listeners_a1207dce74d64c1c39ffa6105560536a0}\label{classtesting_1_1_test_event_listeners_a1207dce74d64c1c39ffa6105560536a0}} +\index{testing\+::\+Test\+Event\+Listeners@{testing\+::\+Test\+Event\+Listeners}!Append@{Append}} +\index{Append@{Append}!testing\+::\+Test\+Event\+Listeners@{testing\+::\+Test\+Event\+Listeners}} +\subsubsection{\texorpdfstring{Append()}{Append()}} +{\footnotesize\ttfamily void testing\+::\+Test\+Event\+Listeners\+::\+Append (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classtesting_1_1_test_event_listener}{Test\+Event\+Listener}} $\ast$}]{listener }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{classtesting_1_1_test_event_listeners_a6293443acb5af942eeec638b6aa6dcf2}\label{classtesting_1_1_test_event_listeners_a6293443acb5af942eeec638b6aa6dcf2}} +\index{testing\+::\+Test\+Event\+Listeners@{testing\+::\+Test\+Event\+Listeners}!default\+\_\+result\+\_\+printer@{default\+\_\+result\+\_\+printer}} +\index{default\+\_\+result\+\_\+printer@{default\+\_\+result\+\_\+printer}!testing\+::\+Test\+Event\+Listeners@{testing\+::\+Test\+Event\+Listeners}} +\subsubsection{\texorpdfstring{default\+\_\+result\+\_\+printer()}{default\_result\_printer()}} +{\footnotesize\ttfamily \mbox{\hyperlink{classtesting_1_1_test_event_listener}{Test\+Event\+Listener}}$\ast$ testing\+::\+Test\+Event\+Listeners\+::default\+\_\+result\+\_\+printer (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 15783 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_test_event_listeners_aa880de6ddfc3f5824371853c6846abbd}\label{classtesting_1_1_test_event_listeners_aa880de6ddfc3f5824371853c6846abbd}} +\index{testing\+::\+Test\+Event\+Listeners@{testing\+::\+Test\+Event\+Listeners}!default\+\_\+xml\+\_\+generator@{default\+\_\+xml\+\_\+generator}} +\index{default\+\_\+xml\+\_\+generator@{default\+\_\+xml\+\_\+generator}!testing\+::\+Test\+Event\+Listeners@{testing\+::\+Test\+Event\+Listeners}} +\subsubsection{\texorpdfstring{default\+\_\+xml\+\_\+generator()}{default\_xml\_generator()}} +{\footnotesize\ttfamily \mbox{\hyperlink{classtesting_1_1_test_event_listener}{Test\+Event\+Listener}}$\ast$ testing\+::\+Test\+Event\+Listeners\+::default\+\_\+xml\+\_\+generator (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 15794 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_test_event_listeners_a5d4bfb7d8584801d6074bb0ec28f8bda}\label{classtesting_1_1_test_event_listeners_a5d4bfb7d8584801d6074bb0ec28f8bda}} +\index{testing\+::\+Test\+Event\+Listeners@{testing\+::\+Test\+Event\+Listeners}!Release@{Release}} +\index{Release@{Release}!testing\+::\+Test\+Event\+Listeners@{testing\+::\+Test\+Event\+Listeners}} +\subsubsection{\texorpdfstring{Release()}{Release()}} +{\footnotesize\ttfamily \mbox{\hyperlink{classtesting_1_1_test_event_listener}{Test\+Event\+Listener}}$\ast$ testing\+::\+Test\+Event\+Listeners\+::\+Release (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classtesting_1_1_test_event_listener}{Test\+Event\+Listener}} $\ast$}]{listener }\end{DoxyParamCaption})} + + + +\subsection{Friends And Related Function Documentation} +\mbox{\Hypertarget{classtesting_1_1_test_event_listeners_abae39633da9932847b41cb80efd62115}\label{classtesting_1_1_test_event_listeners_abae39633da9932847b41cb80efd62115}} +\index{testing\+::\+Test\+Event\+Listeners@{testing\+::\+Test\+Event\+Listeners}!internal\+::\+Default\+Global\+Test\+Part\+Result\+Reporter@{internal\+::\+Default\+Global\+Test\+Part\+Result\+Reporter}} +\index{internal\+::\+Default\+Global\+Test\+Part\+Result\+Reporter@{internal\+::\+Default\+Global\+Test\+Part\+Result\+Reporter}!testing\+::\+Test\+Event\+Listeners@{testing\+::\+Test\+Event\+Listeners}} +\subsubsection{\texorpdfstring{internal\+::\+Default\+Global\+Test\+Part\+Result\+Reporter}{internal::DefaultGlobalTestPartResultReporter}} +{\footnotesize\ttfamily friend class internal\+::\+Default\+Global\+Test\+Part\+Result\+Reporter\hspace{0.3cm}{\ttfamily [friend]}} + + + +Definition at line 15801 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_test_event_listeners_afddba49fdf3f493532b4d5efb9814f4e}\label{classtesting_1_1_test_event_listeners_afddba49fdf3f493532b4d5efb9814f4e}} +\index{testing\+::\+Test\+Event\+Listeners@{testing\+::\+Test\+Event\+Listeners}!internal\+::\+No\+Exec\+Death\+Test@{internal\+::\+No\+Exec\+Death\+Test}} +\index{internal\+::\+No\+Exec\+Death\+Test@{internal\+::\+No\+Exec\+Death\+Test}!testing\+::\+Test\+Event\+Listeners@{testing\+::\+Test\+Event\+Listeners}} +\subsubsection{\texorpdfstring{internal\+::\+No\+Exec\+Death\+Test}{internal::NoExecDeathTest}} +{\footnotesize\ttfamily friend class internal\+::\+No\+Exec\+Death\+Test\hspace{0.3cm}{\ttfamily [friend]}} + + + +Definition at line 15802 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_test_event_listeners_addbc107b6b445617c880182bd4f44cf9}\label{classtesting_1_1_test_event_listeners_addbc107b6b445617c880182bd4f44cf9}} +\index{testing\+::\+Test\+Event\+Listeners@{testing\+::\+Test\+Event\+Listeners}!internal\+::\+Test\+Event\+Listeners\+Accessor@{internal\+::\+Test\+Event\+Listeners\+Accessor}} +\index{internal\+::\+Test\+Event\+Listeners\+Accessor@{internal\+::\+Test\+Event\+Listeners\+Accessor}!testing\+::\+Test\+Event\+Listeners@{testing\+::\+Test\+Event\+Listeners}} +\subsubsection{\texorpdfstring{internal\+::\+Test\+Event\+Listeners\+Accessor}{internal::TestEventListenersAccessor}} +{\footnotesize\ttfamily friend class internal\+::\+Test\+Event\+Listeners\+Accessor\hspace{0.3cm}{\ttfamily [friend]}} + + + +Definition at line 15803 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_test_event_listeners_acc0a5e7573fd6ae7ad1878613bb86853}\label{classtesting_1_1_test_event_listeners_acc0a5e7573fd6ae7ad1878613bb86853}} +\index{testing\+::\+Test\+Event\+Listeners@{testing\+::\+Test\+Event\+Listeners}!internal\+::\+Unit\+Test\+Impl@{internal\+::\+Unit\+Test\+Impl}} +\index{internal\+::\+Unit\+Test\+Impl@{internal\+::\+Unit\+Test\+Impl}!testing\+::\+Test\+Event\+Listeners@{testing\+::\+Test\+Event\+Listeners}} +\subsubsection{\texorpdfstring{internal\+::\+Unit\+Test\+Impl}{internal::UnitTestImpl}} +{\footnotesize\ttfamily friend class internal\+::\+Unit\+Test\+Impl\hspace{0.3cm}{\ttfamily [friend]}} + + + +Definition at line 15804 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_test_event_listeners_a4c49c2cdb6c328e6b709b4542f23de3c}\label{classtesting_1_1_test_event_listeners_a4c49c2cdb6c328e6b709b4542f23de3c}} +\index{testing\+::\+Test\+Event\+Listeners@{testing\+::\+Test\+Event\+Listeners}!Test\+Info@{Test\+Info}} +\index{Test\+Info@{Test\+Info}!testing\+::\+Test\+Event\+Listeners@{testing\+::\+Test\+Event\+Listeners}} +\subsubsection{\texorpdfstring{Test\+Info}{TestInfo}} +{\footnotesize\ttfamily friend class \mbox{\hyperlink{classtesting_1_1_test_info}{Test\+Info}}\hspace{0.3cm}{\ttfamily [friend]}} + + + +Definition at line 15800 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_test_event_listeners_ab9aaba231fd11196425e75caf709bfc6}\label{classtesting_1_1_test_event_listeners_ab9aaba231fd11196425e75caf709bfc6}} +\index{testing\+::\+Test\+Event\+Listeners@{testing\+::\+Test\+Event\+Listeners}!Test\+Suite@{Test\+Suite}} +\index{Test\+Suite@{Test\+Suite}!testing\+::\+Test\+Event\+Listeners@{testing\+::\+Test\+Event\+Listeners}} +\subsubsection{\texorpdfstring{Test\+Suite}{TestSuite}} +{\footnotesize\ttfamily friend class \mbox{\hyperlink{classtesting_1_1_test_suite}{Test\+Suite}}\hspace{0.3cm}{\ttfamily [friend]}} + + + +Definition at line 15799 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1_test_info.tex b/doc/latex/classtesting_1_1_test_info.tex new file mode 100644 index 0000000..45fdb5d --- /dev/null +++ b/doc/latex/classtesting_1_1_test_info.tex @@ -0,0 +1,229 @@ +\hypertarget{classtesting_1_1_test_info}{}\section{testing\+:\+:Test\+Info Class Reference} +\label{classtesting_1_1_test_info}\index{testing\+::\+Test\+Info@{testing\+::\+Test\+Info}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classtesting_1_1_test_info_a8d382c1b1b511f0d9112c14684809852}{$\sim$\+Test\+Info}} () +\item +const char $\ast$ \mbox{\hyperlink{classtesting_1_1_test_info_a82a84ffd0e4d18eb5a3f97a2077e12cc}{test\+\_\+suite\+\_\+name}} () const +\item +const char $\ast$ \mbox{\hyperlink{classtesting_1_1_test_info_a036a20710c8c2252889544daba9a8ff9}{test\+\_\+case\+\_\+name}} () const +\item +const char $\ast$ \mbox{\hyperlink{classtesting_1_1_test_info_ac2581b45eccc9a3b94cb41c4807d0e34}{name}} () const +\item +const char $\ast$ \mbox{\hyperlink{classtesting_1_1_test_info_a7759bc57f4350ad406cbbb0b3bcea320}{type\+\_\+param}} () const +\item +const char $\ast$ \mbox{\hyperlink{classtesting_1_1_test_info_abdf2c6cfcf4819e725816c64e1c1fc24}{value\+\_\+param}} () const +\item +const char $\ast$ \mbox{\hyperlink{classtesting_1_1_test_info_a9b74d79cf618ce5bb0d0b1da75ee8b35}{file}} () const +\item +int \mbox{\hyperlink{classtesting_1_1_test_info_af5931cfc594b5d660c56b3c61c41ea13}{line}} () const +\item +bool \mbox{\hyperlink{classtesting_1_1_test_info_a8621f2cf7623fd1609db8e324f0c2fec}{is\+\_\+in\+\_\+another\+\_\+shard}} () const +\item +bool \mbox{\hyperlink{classtesting_1_1_test_info_a866e33b5bc5ab2a6e5375fc7d3af0f96}{should\+\_\+run}} () const +\item +bool \mbox{\hyperlink{classtesting_1_1_test_info_a63e7042028b0b846f4b5a1e5bcffc079}{is\+\_\+reportable}} () const +\item +const \mbox{\hyperlink{classtesting_1_1_test_result}{Test\+Result}} $\ast$ \mbox{\hyperlink{classtesting_1_1_test_info_aee8cb884c95cd446129aba936b4159e0}{result}} () const +\end{DoxyCompactItemize} +\subsection*{Friends} +\begin{DoxyCompactItemize} +\item +class \mbox{\hyperlink{classtesting_1_1_test_info_a5b78b1c2e1fa07ffed92da365593eaa4}{Test}} +\item +class \mbox{\hyperlink{classtesting_1_1_test_info_ab9aaba231fd11196425e75caf709bfc6}{Test\+Suite}} +\item +class \mbox{\hyperlink{classtesting_1_1_test_info_acc0a5e7573fd6ae7ad1878613bb86853}{internal\+::\+Unit\+Test\+Impl}} +\item +class \mbox{\hyperlink{classtesting_1_1_test_info_adc037d188dab349a94868991955c9cd4}{internal\+::\+Streaming\+Listener\+Test}} +\item +\mbox{\hyperlink{classtesting_1_1_test_info}{Test\+Info}} $\ast$ \mbox{\hyperlink{classtesting_1_1_test_info_a63d61c7ffd0423b1d3615f0ff5f2040e}{internal\+::\+Make\+And\+Register\+Test\+Info}} (const char $\ast$\mbox{\hyperlink{classtesting_1_1_test_info_a82a84ffd0e4d18eb5a3f97a2077e12cc}{test\+\_\+suite\+\_\+name}}, const char $\ast$\mbox{\hyperlink{classtesting_1_1_test_info_ac2581b45eccc9a3b94cb41c4807d0e34}{name}}, const char $\ast$\mbox{\hyperlink{classtesting_1_1_test_info_a7759bc57f4350ad406cbbb0b3bcea320}{type\+\_\+param}}, const char $\ast$\mbox{\hyperlink{classtesting_1_1_test_info_abdf2c6cfcf4819e725816c64e1c1fc24}{value\+\_\+param}}, \mbox{\hyperlink{structtesting_1_1internal_1_1_code_location}{internal\+::\+Code\+Location}} code\+\_\+location, \mbox{\hyperlink{namespacetesting_1_1internal_ab1114197d3c657d8b7f8e0c5caa12d00}{internal\+::\+Type\+Id}} fixture\+\_\+class\+\_\+id, \mbox{\hyperlink{namespacetesting_1_1internal_a83e4e0732ac6a9dcfe6ee299dc1b9fa2}{internal\+::\+Set\+Up\+Test\+Suite\+Func}} set\+\_\+up\+\_\+tc, \mbox{\hyperlink{namespacetesting_1_1internal_a8257a87aa42cebaa54b0c48a6ae657a5}{internal\+::\+Tear\+Down\+Test\+Suite\+Func}} tear\+\_\+down\+\_\+tc, \mbox{\hyperlink{classtesting_1_1internal_1_1_test_factory_base}{internal\+::\+Test\+Factory\+Base}} $\ast$factory) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} + + +Definition at line 15294 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtesting_1_1_test_info_a8d382c1b1b511f0d9112c14684809852}\label{classtesting_1_1_test_info_a8d382c1b1b511f0d9112c14684809852}} +\index{testing\+::\+Test\+Info@{testing\+::\+Test\+Info}!````~Test\+Info@{$\sim$\+Test\+Info}} +\index{````~Test\+Info@{$\sim$\+Test\+Info}!testing\+::\+Test\+Info@{testing\+::\+Test\+Info}} +\subsubsection{\texorpdfstring{$\sim$\+Test\+Info()}{~TestInfo()}} +{\footnotesize\ttfamily testing\+::\+Test\+Info\+::$\sim$\+Test\+Info (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1_test_info_a9b74d79cf618ce5bb0d0b1da75ee8b35}\label{classtesting_1_1_test_info_a9b74d79cf618ce5bb0d0b1da75ee8b35}} +\index{testing\+::\+Test\+Info@{testing\+::\+Test\+Info}!file@{file}} +\index{file@{file}!testing\+::\+Test\+Info@{testing\+::\+Test\+Info}} +\subsubsection{\texorpdfstring{file()}{file()}} +{\footnotesize\ttfamily const char$\ast$ testing\+::\+Test\+Info\+::file (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 15326 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_test_info_a8621f2cf7623fd1609db8e324f0c2fec}\label{classtesting_1_1_test_info_a8621f2cf7623fd1609db8e324f0c2fec}} +\index{testing\+::\+Test\+Info@{testing\+::\+Test\+Info}!is\+\_\+in\+\_\+another\+\_\+shard@{is\+\_\+in\+\_\+another\+\_\+shard}} +\index{is\+\_\+in\+\_\+another\+\_\+shard@{is\+\_\+in\+\_\+another\+\_\+shard}!testing\+::\+Test\+Info@{testing\+::\+Test\+Info}} +\subsubsection{\texorpdfstring{is\+\_\+in\+\_\+another\+\_\+shard()}{is\_in\_another\_shard()}} +{\footnotesize\ttfamily bool testing\+::\+Test\+Info\+::is\+\_\+in\+\_\+another\+\_\+shard (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 15332 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_test_info_a63e7042028b0b846f4b5a1e5bcffc079}\label{classtesting_1_1_test_info_a63e7042028b0b846f4b5a1e5bcffc079}} +\index{testing\+::\+Test\+Info@{testing\+::\+Test\+Info}!is\+\_\+reportable@{is\+\_\+reportable}} +\index{is\+\_\+reportable@{is\+\_\+reportable}!testing\+::\+Test\+Info@{testing\+::\+Test\+Info}} +\subsubsection{\texorpdfstring{is\+\_\+reportable()}{is\_reportable()}} +{\footnotesize\ttfamily bool testing\+::\+Test\+Info\+::is\+\_\+reportable (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 15353 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_test_info_af5931cfc594b5d660c56b3c61c41ea13}\label{classtesting_1_1_test_info_af5931cfc594b5d660c56b3c61c41ea13}} +\index{testing\+::\+Test\+Info@{testing\+::\+Test\+Info}!line@{line}} +\index{line@{line}!testing\+::\+Test\+Info@{testing\+::\+Test\+Info}} +\subsubsection{\texorpdfstring{line()}{line()}} +{\footnotesize\ttfamily int testing\+::\+Test\+Info\+::line (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 15329 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_test_info_ac2581b45eccc9a3b94cb41c4807d0e34}\label{classtesting_1_1_test_info_ac2581b45eccc9a3b94cb41c4807d0e34}} +\index{testing\+::\+Test\+Info@{testing\+::\+Test\+Info}!name@{name}} +\index{name@{name}!testing\+::\+Test\+Info@{testing\+::\+Test\+Info}} +\subsubsection{\texorpdfstring{name()}{name()}} +{\footnotesize\ttfamily const char$\ast$ testing\+::\+Test\+Info\+::name (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 15309 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_test_info_aee8cb884c95cd446129aba936b4159e0}\label{classtesting_1_1_test_info_aee8cb884c95cd446129aba936b4159e0}} +\index{testing\+::\+Test\+Info@{testing\+::\+Test\+Info}!result@{result}} +\index{result@{result}!testing\+::\+Test\+Info@{testing\+::\+Test\+Info}} +\subsubsection{\texorpdfstring{result()}{result()}} +{\footnotesize\ttfamily const \mbox{\hyperlink{classtesting_1_1_test_result}{Test\+Result}}$\ast$ testing\+::\+Test\+Info\+::result (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 15360 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_test_info_a866e33b5bc5ab2a6e5375fc7d3af0f96}\label{classtesting_1_1_test_info_a866e33b5bc5ab2a6e5375fc7d3af0f96}} +\index{testing\+::\+Test\+Info@{testing\+::\+Test\+Info}!should\+\_\+run@{should\+\_\+run}} +\index{should\+\_\+run@{should\+\_\+run}!testing\+::\+Test\+Info@{testing\+::\+Test\+Info}} +\subsubsection{\texorpdfstring{should\+\_\+run()}{should\_run()}} +{\footnotesize\ttfamily bool testing\+::\+Test\+Info\+::should\+\_\+run (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 15350 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_test_info_a036a20710c8c2252889544daba9a8ff9}\label{classtesting_1_1_test_info_a036a20710c8c2252889544daba9a8ff9}} +\index{testing\+::\+Test\+Info@{testing\+::\+Test\+Info}!test\+\_\+case\+\_\+name@{test\+\_\+case\+\_\+name}} +\index{test\+\_\+case\+\_\+name@{test\+\_\+case\+\_\+name}!testing\+::\+Test\+Info@{testing\+::\+Test\+Info}} +\subsubsection{\texorpdfstring{test\+\_\+case\+\_\+name()}{test\_case\_name()}} +{\footnotesize\ttfamily const char$\ast$ testing\+::\+Test\+Info\+::test\+\_\+case\+\_\+name (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 15305 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_test_info_a82a84ffd0e4d18eb5a3f97a2077e12cc}\label{classtesting_1_1_test_info_a82a84ffd0e4d18eb5a3f97a2077e12cc}} +\index{testing\+::\+Test\+Info@{testing\+::\+Test\+Info}!test\+\_\+suite\+\_\+name@{test\+\_\+suite\+\_\+name}} +\index{test\+\_\+suite\+\_\+name@{test\+\_\+suite\+\_\+name}!testing\+::\+Test\+Info@{testing\+::\+Test\+Info}} +\subsubsection{\texorpdfstring{test\+\_\+suite\+\_\+name()}{test\_suite\_name()}} +{\footnotesize\ttfamily const char$\ast$ testing\+::\+Test\+Info\+::test\+\_\+suite\+\_\+name (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 15301 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_test_info_a7759bc57f4350ad406cbbb0b3bcea320}\label{classtesting_1_1_test_info_a7759bc57f4350ad406cbbb0b3bcea320}} +\index{testing\+::\+Test\+Info@{testing\+::\+Test\+Info}!type\+\_\+param@{type\+\_\+param}} +\index{type\+\_\+param@{type\+\_\+param}!testing\+::\+Test\+Info@{testing\+::\+Test\+Info}} +\subsubsection{\texorpdfstring{type\+\_\+param()}{type\_param()}} +{\footnotesize\ttfamily const char$\ast$ testing\+::\+Test\+Info\+::type\+\_\+param (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 15313 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_test_info_abdf2c6cfcf4819e725816c64e1c1fc24}\label{classtesting_1_1_test_info_abdf2c6cfcf4819e725816c64e1c1fc24}} +\index{testing\+::\+Test\+Info@{testing\+::\+Test\+Info}!value\+\_\+param@{value\+\_\+param}} +\index{value\+\_\+param@{value\+\_\+param}!testing\+::\+Test\+Info@{testing\+::\+Test\+Info}} +\subsubsection{\texorpdfstring{value\+\_\+param()}{value\_param()}} +{\footnotesize\ttfamily const char$\ast$ testing\+::\+Test\+Info\+::value\+\_\+param (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 15320 of file gtest.\+h. + + + +\subsection{Friends And Related Function Documentation} +\mbox{\Hypertarget{classtesting_1_1_test_info_a63d61c7ffd0423b1d3615f0ff5f2040e}\label{classtesting_1_1_test_info_a63d61c7ffd0423b1d3615f0ff5f2040e}} +\index{testing\+::\+Test\+Info@{testing\+::\+Test\+Info}!internal\+::\+Make\+And\+Register\+Test\+Info@{internal\+::\+Make\+And\+Register\+Test\+Info}} +\index{internal\+::\+Make\+And\+Register\+Test\+Info@{internal\+::\+Make\+And\+Register\+Test\+Info}!testing\+::\+Test\+Info@{testing\+::\+Test\+Info}} +\subsubsection{\texorpdfstring{internal\+::\+Make\+And\+Register\+Test\+Info}{internal::MakeAndRegisterTestInfo}} +{\footnotesize\ttfamily \mbox{\hyperlink{classtesting_1_1_test_info}{Test\+Info}}$\ast$ \mbox{\hyperlink{namespacetesting_1_1internal_a7ab4072540184e26119ad853f45059f7}{internal\+::\+Make\+And\+Register\+Test\+Info}} (\begin{DoxyParamCaption}\item[{const char $\ast$}]{test\+\_\+suite\+\_\+name, }\item[{const char $\ast$}]{name, }\item[{const char $\ast$}]{type\+\_\+param, }\item[{const char $\ast$}]{value\+\_\+param, }\item[{\mbox{\hyperlink{structtesting_1_1internal_1_1_code_location}{internal\+::\+Code\+Location}}}]{code\+\_\+location, }\item[{\mbox{\hyperlink{namespacetesting_1_1internal_ab1114197d3c657d8b7f8e0c5caa12d00}{internal\+::\+Type\+Id}}}]{fixture\+\_\+class\+\_\+id, }\item[{\mbox{\hyperlink{namespacetesting_1_1internal_a83e4e0732ac6a9dcfe6ee299dc1b9fa2}{internal\+::\+Set\+Up\+Test\+Suite\+Func}}}]{set\+\_\+up\+\_\+tc, }\item[{\mbox{\hyperlink{namespacetesting_1_1internal_a8257a87aa42cebaa54b0c48a6ae657a5}{internal\+::\+Tear\+Down\+Test\+Suite\+Func}}}]{tear\+\_\+down\+\_\+tc, }\item[{\mbox{\hyperlink{classtesting_1_1internal_1_1_test_factory_base}{internal\+::\+Test\+Factory\+Base}} $\ast$}]{factory }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [friend]}} + +\mbox{\Hypertarget{classtesting_1_1_test_info_adc037d188dab349a94868991955c9cd4}\label{classtesting_1_1_test_info_adc037d188dab349a94868991955c9cd4}} +\index{testing\+::\+Test\+Info@{testing\+::\+Test\+Info}!internal\+::\+Streaming\+Listener\+Test@{internal\+::\+Streaming\+Listener\+Test}} +\index{internal\+::\+Streaming\+Listener\+Test@{internal\+::\+Streaming\+Listener\+Test}!testing\+::\+Test\+Info@{testing\+::\+Test\+Info}} +\subsubsection{\texorpdfstring{internal\+::\+Streaming\+Listener\+Test}{internal::StreamingListenerTest}} +{\footnotesize\ttfamily friend class internal\+::\+Streaming\+Listener\+Test\hspace{0.3cm}{\ttfamily [friend]}} + + + +Definition at line 15369 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_test_info_acc0a5e7573fd6ae7ad1878613bb86853}\label{classtesting_1_1_test_info_acc0a5e7573fd6ae7ad1878613bb86853}} +\index{testing\+::\+Test\+Info@{testing\+::\+Test\+Info}!internal\+::\+Unit\+Test\+Impl@{internal\+::\+Unit\+Test\+Impl}} +\index{internal\+::\+Unit\+Test\+Impl@{internal\+::\+Unit\+Test\+Impl}!testing\+::\+Test\+Info@{testing\+::\+Test\+Info}} +\subsubsection{\texorpdfstring{internal\+::\+Unit\+Test\+Impl}{internal::UnitTestImpl}} +{\footnotesize\ttfamily friend class internal\+::\+Unit\+Test\+Impl\hspace{0.3cm}{\ttfamily [friend]}} + + + +Definition at line 15368 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_test_info_a5b78b1c2e1fa07ffed92da365593eaa4}\label{classtesting_1_1_test_info_a5b78b1c2e1fa07ffed92da365593eaa4}} +\index{testing\+::\+Test\+Info@{testing\+::\+Test\+Info}!Test@{Test}} +\index{Test@{Test}!testing\+::\+Test\+Info@{testing\+::\+Test\+Info}} +\subsubsection{\texorpdfstring{Test}{Test}} +{\footnotesize\ttfamily friend class \mbox{\hyperlink{classtesting_1_1_test}{Test}}\hspace{0.3cm}{\ttfamily [friend]}} + + + +Definition at line 15366 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_test_info_ab9aaba231fd11196425e75caf709bfc6}\label{classtesting_1_1_test_info_ab9aaba231fd11196425e75caf709bfc6}} +\index{testing\+::\+Test\+Info@{testing\+::\+Test\+Info}!Test\+Suite@{Test\+Suite}} +\index{Test\+Suite@{Test\+Suite}!testing\+::\+Test\+Info@{testing\+::\+Test\+Info}} +\subsubsection{\texorpdfstring{Test\+Suite}{TestSuite}} +{\footnotesize\ttfamily friend class \mbox{\hyperlink{classtesting_1_1_test_suite}{Test\+Suite}}\hspace{0.3cm}{\ttfamily [friend]}} + + + +Definition at line 15367 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1_test_property.tex b/doc/latex/classtesting_1_1_test_property.tex new file mode 100644 index 0000000..7554814 --- /dev/null +++ b/doc/latex/classtesting_1_1_test_property.tex @@ -0,0 +1,75 @@ +\hypertarget{classtesting_1_1_test_property}{}\section{testing\+:\+:Test\+Property Class Reference} +\label{classtesting_1_1_test_property}\index{testing\+::\+Test\+Property@{testing\+::\+Test\+Property}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classtesting_1_1_test_property_a25a0ccf1c75a92af46a48d3c2a873e6d}{Test\+Property}} (const std\+::string \&a\+\_\+key, const std\+::string \&a\+\_\+value) +\item +const char $\ast$ \mbox{\hyperlink{classtesting_1_1_test_property_ad60435d4ad04ac030487d8998fc61c5f}{key}} () const +\item +const char $\ast$ \mbox{\hyperlink{classtesting_1_1_test_property_ad423a07af33c88b0c9ed33ee74815a63}{value}} () const +\item +void \mbox{\hyperlink{classtesting_1_1_test_property_a377245335d9f614cd06d1650e3358e1d}{Set\+Value}} (const std\+::string \&new\+\_\+value) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} + + +Definition at line 15133 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtesting_1_1_test_property_a25a0ccf1c75a92af46a48d3c2a873e6d}\label{classtesting_1_1_test_property_a25a0ccf1c75a92af46a48d3c2a873e6d}} +\index{testing\+::\+Test\+Property@{testing\+::\+Test\+Property}!Test\+Property@{Test\+Property}} +\index{Test\+Property@{Test\+Property}!testing\+::\+Test\+Property@{testing\+::\+Test\+Property}} +\subsubsection{\texorpdfstring{Test\+Property()}{TestProperty()}} +{\footnotesize\ttfamily testing\+::\+Test\+Property\+::\+Test\+Property (\begin{DoxyParamCaption}\item[{const std\+::string \&}]{a\+\_\+key, }\item[{const std\+::string \&}]{a\+\_\+value }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 15138 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1_test_property_ad60435d4ad04ac030487d8998fc61c5f}\label{classtesting_1_1_test_property_ad60435d4ad04ac030487d8998fc61c5f}} +\index{testing\+::\+Test\+Property@{testing\+::\+Test\+Property}!key@{key}} +\index{key@{key}!testing\+::\+Test\+Property@{testing\+::\+Test\+Property}} +\subsubsection{\texorpdfstring{key()}{key()}} +{\footnotesize\ttfamily const char$\ast$ testing\+::\+Test\+Property\+::key (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 15143 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_test_property_a377245335d9f614cd06d1650e3358e1d}\label{classtesting_1_1_test_property_a377245335d9f614cd06d1650e3358e1d}} +\index{testing\+::\+Test\+Property@{testing\+::\+Test\+Property}!Set\+Value@{Set\+Value}} +\index{Set\+Value@{Set\+Value}!testing\+::\+Test\+Property@{testing\+::\+Test\+Property}} +\subsubsection{\texorpdfstring{Set\+Value()}{SetValue()}} +{\footnotesize\ttfamily void testing\+::\+Test\+Property\+::\+Set\+Value (\begin{DoxyParamCaption}\item[{const std\+::string \&}]{new\+\_\+value }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 15153 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_test_property_ad423a07af33c88b0c9ed33ee74815a63}\label{classtesting_1_1_test_property_ad423a07af33c88b0c9ed33ee74815a63}} +\index{testing\+::\+Test\+Property@{testing\+::\+Test\+Property}!value@{value}} +\index{value@{value}!testing\+::\+Test\+Property@{testing\+::\+Test\+Property}} +\subsubsection{\texorpdfstring{value()}{value()}} +{\footnotesize\ttfamily const char$\ast$ testing\+::\+Test\+Property\+::value (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 15148 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1_test_result.tex b/doc/latex/classtesting_1_1_test_result.tex new file mode 100644 index 0000000..a2fccd2 --- /dev/null +++ b/doc/latex/classtesting_1_1_test_result.tex @@ -0,0 +1,245 @@ +\hypertarget{classtesting_1_1_test_result}{}\section{testing\+:\+:Test\+Result Class Reference} +\label{classtesting_1_1_test_result}\index{testing\+::\+Test\+Result@{testing\+::\+Test\+Result}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classtesting_1_1_test_result_a5cf5dd6f416b7334ea601aab21a2fda5}{Test\+Result}} () +\item +\mbox{\hyperlink{classtesting_1_1_test_result_a41f407680b725b75d7eadc3230bc3315}{$\sim$\+Test\+Result}} () +\item +int \mbox{\hyperlink{classtesting_1_1_test_result_a6174aa4019dcda7c34d776b5741c9032}{total\+\_\+part\+\_\+count}} () const +\item +int \mbox{\hyperlink{classtesting_1_1_test_result_afe4523257bbea8bc63b0950b702790be}{test\+\_\+property\+\_\+count}} () const +\item +bool \mbox{\hyperlink{classtesting_1_1_test_result_acf7e6e72f05a0545c48ea48e7f8851df}{Passed}} () const +\item +bool \mbox{\hyperlink{classtesting_1_1_test_result_a4c9e954e0f8c1386206f2e6208c45244}{Skipped}} () const +\item +bool \mbox{\hyperlink{classtesting_1_1_test_result_afacc37e8b43c8574e4101bc61723c769}{Failed}} () const +\item +bool \mbox{\hyperlink{classtesting_1_1_test_result_a30e00d4076ae07fb5ad7b623d9dc1fe4}{Has\+Fatal\+Failure}} () const +\item +bool \mbox{\hyperlink{classtesting_1_1_test_result_a510564fa67b485ed4589a259f2a032d6}{Has\+Nonfatal\+Failure}} () const +\item +\mbox{\hyperlink{namespacetesting_a992de1d091ce660f451d1e8b3ce30fd6}{Time\+In\+Millis}} \mbox{\hyperlink{classtesting_1_1_test_result_a717e05e00d4af5cb809433e343ab63af}{elapsed\+\_\+time}} () const +\item +const Test\+Part\+Result \& \mbox{\hyperlink{classtesting_1_1_test_result_a910b410d0d1e066cd9e182f9e07d1933}{Get\+Test\+Part\+Result}} (int i) const +\item +const \mbox{\hyperlink{classtesting_1_1_test_property}{Test\+Property}} \& \mbox{\hyperlink{classtesting_1_1_test_result_a491ede3939a9ca508e338929762cb148}{Get\+Test\+Property}} (int i) const +\end{DoxyCompactItemize} +\subsection*{Friends} +\begin{DoxyCompactItemize} +\item +class \mbox{\hyperlink{classtesting_1_1_test_result_a4c49c2cdb6c328e6b709b4542f23de3c}{Test\+Info}} +\item +class \mbox{\hyperlink{classtesting_1_1_test_result_ab9aaba231fd11196425e75caf709bfc6}{Test\+Suite}} +\item +class \mbox{\hyperlink{classtesting_1_1_test_result_a832b4d233efee1a32feb0f4190b30d39}{Unit\+Test}} +\item +class \mbox{\hyperlink{classtesting_1_1_test_result_abae39633da9932847b41cb80efd62115}{internal\+::\+Default\+Global\+Test\+Part\+Result\+Reporter}} +\item +class \mbox{\hyperlink{classtesting_1_1_test_result_adf5553cae6aea6f8648d47e299237e34}{internal\+::\+Exec\+Death\+Test}} +\item +class \mbox{\hyperlink{classtesting_1_1_test_result_ae762da04e74a0d3b0daded3c5bd4a8e8}{internal\+::\+Test\+Result\+Accessor}} +\item +class \mbox{\hyperlink{classtesting_1_1_test_result_acc0a5e7573fd6ae7ad1878613bb86853}{internal\+::\+Unit\+Test\+Impl}} +\item +class \mbox{\hyperlink{classtesting_1_1_test_result_a6aeedc04a0590fcc1b3c5f687dbb0f9f}{internal\+::\+Windows\+Death\+Test}} +\item +class \mbox{\hyperlink{classtesting_1_1_test_result_af29d5921f68031cdfba0b28cf4b3b559}{internal\+::\+Fuchsia\+Death\+Test}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} + + +Definition at line 15170 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtesting_1_1_test_result_a5cf5dd6f416b7334ea601aab21a2fda5}\label{classtesting_1_1_test_result_a5cf5dd6f416b7334ea601aab21a2fda5}} +\index{testing\+::\+Test\+Result@{testing\+::\+Test\+Result}!Test\+Result@{Test\+Result}} +\index{Test\+Result@{Test\+Result}!testing\+::\+Test\+Result@{testing\+::\+Test\+Result}} +\subsubsection{\texorpdfstring{Test\+Result()}{TestResult()}} +{\footnotesize\ttfamily testing\+::\+Test\+Result\+::\+Test\+Result (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{classtesting_1_1_test_result_a41f407680b725b75d7eadc3230bc3315}\label{classtesting_1_1_test_result_a41f407680b725b75d7eadc3230bc3315}} +\index{testing\+::\+Test\+Result@{testing\+::\+Test\+Result}!````~Test\+Result@{$\sim$\+Test\+Result}} +\index{````~Test\+Result@{$\sim$\+Test\+Result}!testing\+::\+Test\+Result@{testing\+::\+Test\+Result}} +\subsubsection{\texorpdfstring{$\sim$\+Test\+Result()}{~TestResult()}} +{\footnotesize\ttfamily testing\+::\+Test\+Result\+::$\sim$\+Test\+Result (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1_test_result_a717e05e00d4af5cb809433e343ab63af}\label{classtesting_1_1_test_result_a717e05e00d4af5cb809433e343ab63af}} +\index{testing\+::\+Test\+Result@{testing\+::\+Test\+Result}!elapsed\+\_\+time@{elapsed\+\_\+time}} +\index{elapsed\+\_\+time@{elapsed\+\_\+time}!testing\+::\+Test\+Result@{testing\+::\+Test\+Result}} +\subsubsection{\texorpdfstring{elapsed\+\_\+time()}{elapsed\_time()}} +{\footnotesize\ttfamily \mbox{\hyperlink{namespacetesting_a992de1d091ce660f451d1e8b3ce30fd6}{Time\+In\+Millis}} testing\+::\+Test\+Result\+::elapsed\+\_\+time (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 15201 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_test_result_afacc37e8b43c8574e4101bc61723c769}\label{classtesting_1_1_test_result_afacc37e8b43c8574e4101bc61723c769}} +\index{testing\+::\+Test\+Result@{testing\+::\+Test\+Result}!Failed@{Failed}} +\index{Failed@{Failed}!testing\+::\+Test\+Result@{testing\+::\+Test\+Result}} +\subsubsection{\texorpdfstring{Failed()}{Failed()}} +{\footnotesize\ttfamily bool testing\+::\+Test\+Result\+::\+Failed (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const} + +\mbox{\Hypertarget{classtesting_1_1_test_result_a910b410d0d1e066cd9e182f9e07d1933}\label{classtesting_1_1_test_result_a910b410d0d1e066cd9e182f9e07d1933}} +\index{testing\+::\+Test\+Result@{testing\+::\+Test\+Result}!Get\+Test\+Part\+Result@{Get\+Test\+Part\+Result}} +\index{Get\+Test\+Part\+Result@{Get\+Test\+Part\+Result}!testing\+::\+Test\+Result@{testing\+::\+Test\+Result}} +\subsubsection{\texorpdfstring{Get\+Test\+Part\+Result()}{GetTestPartResult()}} +{\footnotesize\ttfamily const Test\+Part\+Result\& testing\+::\+Test\+Result\+::\+Get\+Test\+Part\+Result (\begin{DoxyParamCaption}\item[{int}]{i }\end{DoxyParamCaption}) const} + +\mbox{\Hypertarget{classtesting_1_1_test_result_a491ede3939a9ca508e338929762cb148}\label{classtesting_1_1_test_result_a491ede3939a9ca508e338929762cb148}} +\index{testing\+::\+Test\+Result@{testing\+::\+Test\+Result}!Get\+Test\+Property@{Get\+Test\+Property}} +\index{Get\+Test\+Property@{Get\+Test\+Property}!testing\+::\+Test\+Result@{testing\+::\+Test\+Result}} +\subsubsection{\texorpdfstring{Get\+Test\+Property()}{GetTestProperty()}} +{\footnotesize\ttfamily const \mbox{\hyperlink{classtesting_1_1_test_property}{Test\+Property}}\& testing\+::\+Test\+Result\+::\+Get\+Test\+Property (\begin{DoxyParamCaption}\item[{int}]{i }\end{DoxyParamCaption}) const} + +\mbox{\Hypertarget{classtesting_1_1_test_result_a30e00d4076ae07fb5ad7b623d9dc1fe4}\label{classtesting_1_1_test_result_a30e00d4076ae07fb5ad7b623d9dc1fe4}} +\index{testing\+::\+Test\+Result@{testing\+::\+Test\+Result}!Has\+Fatal\+Failure@{Has\+Fatal\+Failure}} +\index{Has\+Fatal\+Failure@{Has\+Fatal\+Failure}!testing\+::\+Test\+Result@{testing\+::\+Test\+Result}} +\subsubsection{\texorpdfstring{Has\+Fatal\+Failure()}{HasFatalFailure()}} +{\footnotesize\ttfamily bool testing\+::\+Test\+Result\+::\+Has\+Fatal\+Failure (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const} + +\mbox{\Hypertarget{classtesting_1_1_test_result_a510564fa67b485ed4589a259f2a032d6}\label{classtesting_1_1_test_result_a510564fa67b485ed4589a259f2a032d6}} +\index{testing\+::\+Test\+Result@{testing\+::\+Test\+Result}!Has\+Nonfatal\+Failure@{Has\+Nonfatal\+Failure}} +\index{Has\+Nonfatal\+Failure@{Has\+Nonfatal\+Failure}!testing\+::\+Test\+Result@{testing\+::\+Test\+Result}} +\subsubsection{\texorpdfstring{Has\+Nonfatal\+Failure()}{HasNonfatalFailure()}} +{\footnotesize\ttfamily bool testing\+::\+Test\+Result\+::\+Has\+Nonfatal\+Failure (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const} + +\mbox{\Hypertarget{classtesting_1_1_test_result_acf7e6e72f05a0545c48ea48e7f8851df}\label{classtesting_1_1_test_result_acf7e6e72f05a0545c48ea48e7f8851df}} +\index{testing\+::\+Test\+Result@{testing\+::\+Test\+Result}!Passed@{Passed}} +\index{Passed@{Passed}!testing\+::\+Test\+Result@{testing\+::\+Test\+Result}} +\subsubsection{\texorpdfstring{Passed()}{Passed()}} +{\footnotesize\ttfamily bool testing\+::\+Test\+Result\+::\+Passed (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 15186 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_test_result_a4c9e954e0f8c1386206f2e6208c45244}\label{classtesting_1_1_test_result_a4c9e954e0f8c1386206f2e6208c45244}} +\index{testing\+::\+Test\+Result@{testing\+::\+Test\+Result}!Skipped@{Skipped}} +\index{Skipped@{Skipped}!testing\+::\+Test\+Result@{testing\+::\+Test\+Result}} +\subsubsection{\texorpdfstring{Skipped()}{Skipped()}} +{\footnotesize\ttfamily bool testing\+::\+Test\+Result\+::\+Skipped (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const} + +\mbox{\Hypertarget{classtesting_1_1_test_result_afe4523257bbea8bc63b0950b702790be}\label{classtesting_1_1_test_result_afe4523257bbea8bc63b0950b702790be}} +\index{testing\+::\+Test\+Result@{testing\+::\+Test\+Result}!test\+\_\+property\+\_\+count@{test\+\_\+property\+\_\+count}} +\index{test\+\_\+property\+\_\+count@{test\+\_\+property\+\_\+count}!testing\+::\+Test\+Result@{testing\+::\+Test\+Result}} +\subsubsection{\texorpdfstring{test\+\_\+property\+\_\+count()}{test\_property\_count()}} +{\footnotesize\ttfamily int testing\+::\+Test\+Result\+::test\+\_\+property\+\_\+count (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const} + +\mbox{\Hypertarget{classtesting_1_1_test_result_a6174aa4019dcda7c34d776b5741c9032}\label{classtesting_1_1_test_result_a6174aa4019dcda7c34d776b5741c9032}} +\index{testing\+::\+Test\+Result@{testing\+::\+Test\+Result}!total\+\_\+part\+\_\+count@{total\+\_\+part\+\_\+count}} +\index{total\+\_\+part\+\_\+count@{total\+\_\+part\+\_\+count}!testing\+::\+Test\+Result@{testing\+::\+Test\+Result}} +\subsubsection{\texorpdfstring{total\+\_\+part\+\_\+count()}{total\_part\_count()}} +{\footnotesize\ttfamily int testing\+::\+Test\+Result\+::total\+\_\+part\+\_\+count (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const} + + + +\subsection{Friends And Related Function Documentation} +\mbox{\Hypertarget{classtesting_1_1_test_result_abae39633da9932847b41cb80efd62115}\label{classtesting_1_1_test_result_abae39633da9932847b41cb80efd62115}} +\index{testing\+::\+Test\+Result@{testing\+::\+Test\+Result}!internal\+::\+Default\+Global\+Test\+Part\+Result\+Reporter@{internal\+::\+Default\+Global\+Test\+Part\+Result\+Reporter}} +\index{internal\+::\+Default\+Global\+Test\+Part\+Result\+Reporter@{internal\+::\+Default\+Global\+Test\+Part\+Result\+Reporter}!testing\+::\+Test\+Result@{testing\+::\+Test\+Result}} +\subsubsection{\texorpdfstring{internal\+::\+Default\+Global\+Test\+Part\+Result\+Reporter}{internal::DefaultGlobalTestPartResultReporter}} +{\footnotesize\ttfamily friend class internal\+::\+Default\+Global\+Test\+Part\+Result\+Reporter\hspace{0.3cm}{\ttfamily [friend]}} + + + +Definition at line 15216 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_test_result_adf5553cae6aea6f8648d47e299237e34}\label{classtesting_1_1_test_result_adf5553cae6aea6f8648d47e299237e34}} +\index{testing\+::\+Test\+Result@{testing\+::\+Test\+Result}!internal\+::\+Exec\+Death\+Test@{internal\+::\+Exec\+Death\+Test}} +\index{internal\+::\+Exec\+Death\+Test@{internal\+::\+Exec\+Death\+Test}!testing\+::\+Test\+Result@{testing\+::\+Test\+Result}} +\subsubsection{\texorpdfstring{internal\+::\+Exec\+Death\+Test}{internal::ExecDeathTest}} +{\footnotesize\ttfamily friend class internal\+::\+Exec\+Death\+Test\hspace{0.3cm}{\ttfamily [friend]}} + + + +Definition at line 15217 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_test_result_af29d5921f68031cdfba0b28cf4b3b559}\label{classtesting_1_1_test_result_af29d5921f68031cdfba0b28cf4b3b559}} +\index{testing\+::\+Test\+Result@{testing\+::\+Test\+Result}!internal\+::\+Fuchsia\+Death\+Test@{internal\+::\+Fuchsia\+Death\+Test}} +\index{internal\+::\+Fuchsia\+Death\+Test@{internal\+::\+Fuchsia\+Death\+Test}!testing\+::\+Test\+Result@{testing\+::\+Test\+Result}} +\subsubsection{\texorpdfstring{internal\+::\+Fuchsia\+Death\+Test}{internal::FuchsiaDeathTest}} +{\footnotesize\ttfamily friend class internal\+::\+Fuchsia\+Death\+Test\hspace{0.3cm}{\ttfamily [friend]}} + + + +Definition at line 15221 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_test_result_ae762da04e74a0d3b0daded3c5bd4a8e8}\label{classtesting_1_1_test_result_ae762da04e74a0d3b0daded3c5bd4a8e8}} +\index{testing\+::\+Test\+Result@{testing\+::\+Test\+Result}!internal\+::\+Test\+Result\+Accessor@{internal\+::\+Test\+Result\+Accessor}} +\index{internal\+::\+Test\+Result\+Accessor@{internal\+::\+Test\+Result\+Accessor}!testing\+::\+Test\+Result@{testing\+::\+Test\+Result}} +\subsubsection{\texorpdfstring{internal\+::\+Test\+Result\+Accessor}{internal::TestResultAccessor}} +{\footnotesize\ttfamily friend class internal\+::\+Test\+Result\+Accessor\hspace{0.3cm}{\ttfamily [friend]}} + + + +Definition at line 15218 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_test_result_acc0a5e7573fd6ae7ad1878613bb86853}\label{classtesting_1_1_test_result_acc0a5e7573fd6ae7ad1878613bb86853}} +\index{testing\+::\+Test\+Result@{testing\+::\+Test\+Result}!internal\+::\+Unit\+Test\+Impl@{internal\+::\+Unit\+Test\+Impl}} +\index{internal\+::\+Unit\+Test\+Impl@{internal\+::\+Unit\+Test\+Impl}!testing\+::\+Test\+Result@{testing\+::\+Test\+Result}} +\subsubsection{\texorpdfstring{internal\+::\+Unit\+Test\+Impl}{internal::UnitTestImpl}} +{\footnotesize\ttfamily friend class internal\+::\+Unit\+Test\+Impl\hspace{0.3cm}{\ttfamily [friend]}} + + + +Definition at line 15219 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_test_result_a6aeedc04a0590fcc1b3c5f687dbb0f9f}\label{classtesting_1_1_test_result_a6aeedc04a0590fcc1b3c5f687dbb0f9f}} +\index{testing\+::\+Test\+Result@{testing\+::\+Test\+Result}!internal\+::\+Windows\+Death\+Test@{internal\+::\+Windows\+Death\+Test}} +\index{internal\+::\+Windows\+Death\+Test@{internal\+::\+Windows\+Death\+Test}!testing\+::\+Test\+Result@{testing\+::\+Test\+Result}} +\subsubsection{\texorpdfstring{internal\+::\+Windows\+Death\+Test}{internal::WindowsDeathTest}} +{\footnotesize\ttfamily friend class internal\+::\+Windows\+Death\+Test\hspace{0.3cm}{\ttfamily [friend]}} + + + +Definition at line 15220 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_test_result_a4c49c2cdb6c328e6b709b4542f23de3c}\label{classtesting_1_1_test_result_a4c49c2cdb6c328e6b709b4542f23de3c}} +\index{testing\+::\+Test\+Result@{testing\+::\+Test\+Result}!Test\+Info@{Test\+Info}} +\index{Test\+Info@{Test\+Info}!testing\+::\+Test\+Result@{testing\+::\+Test\+Result}} +\subsubsection{\texorpdfstring{Test\+Info}{TestInfo}} +{\footnotesize\ttfamily friend class \mbox{\hyperlink{classtesting_1_1_test_info}{Test\+Info}}\hspace{0.3cm}{\ttfamily [friend]}} + + + +Definition at line 15213 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_test_result_ab9aaba231fd11196425e75caf709bfc6}\label{classtesting_1_1_test_result_ab9aaba231fd11196425e75caf709bfc6}} +\index{testing\+::\+Test\+Result@{testing\+::\+Test\+Result}!Test\+Suite@{Test\+Suite}} +\index{Test\+Suite@{Test\+Suite}!testing\+::\+Test\+Result@{testing\+::\+Test\+Result}} +\subsubsection{\texorpdfstring{Test\+Suite}{TestSuite}} +{\footnotesize\ttfamily friend class \mbox{\hyperlink{classtesting_1_1_test_suite}{Test\+Suite}}\hspace{0.3cm}{\ttfamily [friend]}} + + + +Definition at line 15214 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_test_result_a832b4d233efee1a32feb0f4190b30d39}\label{classtesting_1_1_test_result_a832b4d233efee1a32feb0f4190b30d39}} +\index{testing\+::\+Test\+Result@{testing\+::\+Test\+Result}!Unit\+Test@{Unit\+Test}} +\index{Unit\+Test@{Unit\+Test}!testing\+::\+Test\+Result@{testing\+::\+Test\+Result}} +\subsubsection{\texorpdfstring{Unit\+Test}{UnitTest}} +{\footnotesize\ttfamily friend class \mbox{\hyperlink{classtesting_1_1_unit_test}{Unit\+Test}}\hspace{0.3cm}{\ttfamily [friend]}} + + + +Definition at line 15215 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1_test_suite.tex b/doc/latex/classtesting_1_1_test_suite.tex new file mode 100644 index 0000000..4c10cde --- /dev/null +++ b/doc/latex/classtesting_1_1_test_suite.tex @@ -0,0 +1,229 @@ +\hypertarget{classtesting_1_1_test_suite}{}\section{testing\+:\+:Test\+Suite Class Reference} +\label{classtesting_1_1_test_suite}\index{testing\+::\+Test\+Suite@{testing\+::\+Test\+Suite}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classtesting_1_1_test_suite_a2d6469bcb83701e1bbfe47c465e9731f}{Test\+Suite}} (const char $\ast$\mbox{\hyperlink{classtesting_1_1_test_suite_ab3369db678ca3d9648d6fd63ad038986}{name}}, const char $\ast$a\+\_\+type\+\_\+param, \mbox{\hyperlink{namespacetesting_1_1internal_a83e4e0732ac6a9dcfe6ee299dc1b9fa2}{internal\+::\+Set\+Up\+Test\+Suite\+Func}} set\+\_\+up\+\_\+tc, \mbox{\hyperlink{namespacetesting_1_1internal_a8257a87aa42cebaa54b0c48a6ae657a5}{internal\+::\+Tear\+Down\+Test\+Suite\+Func}} tear\+\_\+down\+\_\+tc) +\item +virtual \mbox{\hyperlink{classtesting_1_1_test_suite_a78af2d96b44c8b8f2002b4e74df31c38}{$\sim$\+Test\+Suite}} () +\item +const char $\ast$ \mbox{\hyperlink{classtesting_1_1_test_suite_ab3369db678ca3d9648d6fd63ad038986}{name}} () const +\item +const char $\ast$ \mbox{\hyperlink{classtesting_1_1_test_suite_ab2ea12318bdbfb6aa97792344b49e3db}{type\+\_\+param}} () const +\item +bool \mbox{\hyperlink{classtesting_1_1_test_suite_a8f62c17baef80042e0ff03ef5d5e4ba7}{should\+\_\+run}} () const +\item +int \mbox{\hyperlink{classtesting_1_1_test_suite_a85bc4191681df7e8bae810c1744465ec}{successful\+\_\+test\+\_\+count}} () const +\item +int \mbox{\hyperlink{classtesting_1_1_test_suite_ae48c72ff92fa1c555e3b577f8661285c}{skipped\+\_\+test\+\_\+count}} () const +\item +int \mbox{\hyperlink{classtesting_1_1_test_suite_aaf18223e67cf0761f56bd4b8167abc6c}{failed\+\_\+test\+\_\+count}} () const +\item +int \mbox{\hyperlink{classtesting_1_1_test_suite_ab0b3d1ee8efaa18ceb2553a71002c678}{reportable\+\_\+disabled\+\_\+test\+\_\+count}} () const +\item +int \mbox{\hyperlink{classtesting_1_1_test_suite_adba738351633471e3256dcf7d3c2e61e}{disabled\+\_\+test\+\_\+count}} () const +\item +int \mbox{\hyperlink{classtesting_1_1_test_suite_a24f62e17cfd37b90263f1194fb7d4d74}{reportable\+\_\+test\+\_\+count}} () const +\item +int \mbox{\hyperlink{classtesting_1_1_test_suite_a1ccf2681712a3a27659789009815db8f}{test\+\_\+to\+\_\+run\+\_\+count}} () const +\item +int \mbox{\hyperlink{classtesting_1_1_test_suite_a38a5e95341cfee5a88d8910f69da4960}{total\+\_\+test\+\_\+count}} () const +\item +bool \mbox{\hyperlink{classtesting_1_1_test_suite_add51ece89b069b29e07f0476e0e6aae9}{Passed}} () const +\item +bool \mbox{\hyperlink{classtesting_1_1_test_suite_adec55446c23dc2d0bfea91c6125a1047}{Failed}} () const +\item +\mbox{\hyperlink{namespacetesting_a992de1d091ce660f451d1e8b3ce30fd6}{Time\+In\+Millis}} \mbox{\hyperlink{classtesting_1_1_test_suite_a2ede69fa37985ab8b21128955c56d6d7}{elapsed\+\_\+time}} () const +\item +const \mbox{\hyperlink{classtesting_1_1_test_info}{Test\+Info}} $\ast$ \mbox{\hyperlink{classtesting_1_1_test_suite_aa6e617d79e4272362735ca9be4fb40d7}{Get\+Test\+Info}} (int i) const +\item +const \mbox{\hyperlink{classtesting_1_1_test_result}{Test\+Result}} \& \mbox{\hyperlink{classtesting_1_1_test_suite_a3391a0ec111c66e1ac16a800f5068af7}{ad\+\_\+hoc\+\_\+test\+\_\+result}} () const +\end{DoxyCompactItemize} +\subsection*{Friends} +\begin{DoxyCompactItemize} +\item +class \mbox{\hyperlink{classtesting_1_1_test_suite_a5b78b1c2e1fa07ffed92da365593eaa4}{Test}} +\item +class \mbox{\hyperlink{classtesting_1_1_test_suite_acc0a5e7573fd6ae7ad1878613bb86853}{internal\+::\+Unit\+Test\+Impl}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} + + +Definition at line 15429 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtesting_1_1_test_suite_a2d6469bcb83701e1bbfe47c465e9731f}\label{classtesting_1_1_test_suite_a2d6469bcb83701e1bbfe47c465e9731f}} +\index{testing\+::\+Test\+Suite@{testing\+::\+Test\+Suite}!Test\+Suite@{Test\+Suite}} +\index{Test\+Suite@{Test\+Suite}!testing\+::\+Test\+Suite@{testing\+::\+Test\+Suite}} +\subsubsection{\texorpdfstring{Test\+Suite()}{TestSuite()}} +{\footnotesize\ttfamily testing\+::\+Test\+Suite\+::\+Test\+Suite (\begin{DoxyParamCaption}\item[{const char $\ast$}]{name, }\item[{const char $\ast$}]{a\+\_\+type\+\_\+param, }\item[{\mbox{\hyperlink{namespacetesting_1_1internal_a83e4e0732ac6a9dcfe6ee299dc1b9fa2}{internal\+::\+Set\+Up\+Test\+Suite\+Func}}}]{set\+\_\+up\+\_\+tc, }\item[{\mbox{\hyperlink{namespacetesting_1_1internal_a8257a87aa42cebaa54b0c48a6ae657a5}{internal\+::\+Tear\+Down\+Test\+Suite\+Func}}}]{tear\+\_\+down\+\_\+tc }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{classtesting_1_1_test_suite_a78af2d96b44c8b8f2002b4e74df31c38}\label{classtesting_1_1_test_suite_a78af2d96b44c8b8f2002b4e74df31c38}} +\index{testing\+::\+Test\+Suite@{testing\+::\+Test\+Suite}!````~Test\+Suite@{$\sim$\+Test\+Suite}} +\index{````~Test\+Suite@{$\sim$\+Test\+Suite}!testing\+::\+Test\+Suite@{testing\+::\+Test\+Suite}} +\subsubsection{\texorpdfstring{$\sim$\+Test\+Suite()}{~TestSuite()}} +{\footnotesize\ttfamily virtual testing\+::\+Test\+Suite\+::$\sim$\+Test\+Suite (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}} + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1_test_suite_a3391a0ec111c66e1ac16a800f5068af7}\label{classtesting_1_1_test_suite_a3391a0ec111c66e1ac16a800f5068af7}} +\index{testing\+::\+Test\+Suite@{testing\+::\+Test\+Suite}!ad\+\_\+hoc\+\_\+test\+\_\+result@{ad\+\_\+hoc\+\_\+test\+\_\+result}} +\index{ad\+\_\+hoc\+\_\+test\+\_\+result@{ad\+\_\+hoc\+\_\+test\+\_\+result}!testing\+::\+Test\+Suite@{testing\+::\+Test\+Suite}} +\subsubsection{\texorpdfstring{ad\+\_\+hoc\+\_\+test\+\_\+result()}{ad\_hoc\_test\_result()}} +{\footnotesize\ttfamily const \mbox{\hyperlink{classtesting_1_1_test_result}{Test\+Result}}\& testing\+::\+Test\+Suite\+::ad\+\_\+hoc\+\_\+test\+\_\+result (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 15502 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_test_suite_adba738351633471e3256dcf7d3c2e61e}\label{classtesting_1_1_test_suite_adba738351633471e3256dcf7d3c2e61e}} +\index{testing\+::\+Test\+Suite@{testing\+::\+Test\+Suite}!disabled\+\_\+test\+\_\+count@{disabled\+\_\+test\+\_\+count}} +\index{disabled\+\_\+test\+\_\+count@{disabled\+\_\+test\+\_\+count}!testing\+::\+Test\+Suite@{testing\+::\+Test\+Suite}} +\subsubsection{\texorpdfstring{disabled\+\_\+test\+\_\+count()}{disabled\_test\_count()}} +{\footnotesize\ttfamily int testing\+::\+Test\+Suite\+::disabled\+\_\+test\+\_\+count (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const} + +\mbox{\Hypertarget{classtesting_1_1_test_suite_a2ede69fa37985ab8b21128955c56d6d7}\label{classtesting_1_1_test_suite_a2ede69fa37985ab8b21128955c56d6d7}} +\index{testing\+::\+Test\+Suite@{testing\+::\+Test\+Suite}!elapsed\+\_\+time@{elapsed\+\_\+time}} +\index{elapsed\+\_\+time@{elapsed\+\_\+time}!testing\+::\+Test\+Suite@{testing\+::\+Test\+Suite}} +\subsubsection{\texorpdfstring{elapsed\+\_\+time()}{elapsed\_time()}} +{\footnotesize\ttfamily \mbox{\hyperlink{namespacetesting_a992de1d091ce660f451d1e8b3ce30fd6}{Time\+In\+Millis}} testing\+::\+Test\+Suite\+::elapsed\+\_\+time (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 15494 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_test_suite_adec55446c23dc2d0bfea91c6125a1047}\label{classtesting_1_1_test_suite_adec55446c23dc2d0bfea91c6125a1047}} +\index{testing\+::\+Test\+Suite@{testing\+::\+Test\+Suite}!Failed@{Failed}} +\index{Failed@{Failed}!testing\+::\+Test\+Suite@{testing\+::\+Test\+Suite}} +\subsubsection{\texorpdfstring{Failed()}{Failed()}} +{\footnotesize\ttfamily bool testing\+::\+Test\+Suite\+::\+Failed (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 15491 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_test_suite_aaf18223e67cf0761f56bd4b8167abc6c}\label{classtesting_1_1_test_suite_aaf18223e67cf0761f56bd4b8167abc6c}} +\index{testing\+::\+Test\+Suite@{testing\+::\+Test\+Suite}!failed\+\_\+test\+\_\+count@{failed\+\_\+test\+\_\+count}} +\index{failed\+\_\+test\+\_\+count@{failed\+\_\+test\+\_\+count}!testing\+::\+Test\+Suite@{testing\+::\+Test\+Suite}} +\subsubsection{\texorpdfstring{failed\+\_\+test\+\_\+count()}{failed\_test\_count()}} +{\footnotesize\ttfamily int testing\+::\+Test\+Suite\+::failed\+\_\+test\+\_\+count (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const} + +\mbox{\Hypertarget{classtesting_1_1_test_suite_aa6e617d79e4272362735ca9be4fb40d7}\label{classtesting_1_1_test_suite_aa6e617d79e4272362735ca9be4fb40d7}} +\index{testing\+::\+Test\+Suite@{testing\+::\+Test\+Suite}!Get\+Test\+Info@{Get\+Test\+Info}} +\index{Get\+Test\+Info@{Get\+Test\+Info}!testing\+::\+Test\+Suite@{testing\+::\+Test\+Suite}} +\subsubsection{\texorpdfstring{Get\+Test\+Info()}{GetTestInfo()}} +{\footnotesize\ttfamily const \mbox{\hyperlink{classtesting_1_1_test_info}{Test\+Info}}$\ast$ testing\+::\+Test\+Suite\+::\+Get\+Test\+Info (\begin{DoxyParamCaption}\item[{int}]{i }\end{DoxyParamCaption}) const} + +\mbox{\Hypertarget{classtesting_1_1_test_suite_ab3369db678ca3d9648d6fd63ad038986}\label{classtesting_1_1_test_suite_ab3369db678ca3d9648d6fd63ad038986}} +\index{testing\+::\+Test\+Suite@{testing\+::\+Test\+Suite}!name@{name}} +\index{name@{name}!testing\+::\+Test\+Suite@{testing\+::\+Test\+Suite}} +\subsubsection{\texorpdfstring{name()}{name()}} +{\footnotesize\ttfamily const char$\ast$ testing\+::\+Test\+Suite\+::name (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 15451 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_test_suite_add51ece89b069b29e07f0476e0e6aae9}\label{classtesting_1_1_test_suite_add51ece89b069b29e07f0476e0e6aae9}} +\index{testing\+::\+Test\+Suite@{testing\+::\+Test\+Suite}!Passed@{Passed}} +\index{Passed@{Passed}!testing\+::\+Test\+Suite@{testing\+::\+Test\+Suite}} +\subsubsection{\texorpdfstring{Passed()}{Passed()}} +{\footnotesize\ttfamily bool testing\+::\+Test\+Suite\+::\+Passed (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 15488 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_test_suite_ab0b3d1ee8efaa18ceb2553a71002c678}\label{classtesting_1_1_test_suite_ab0b3d1ee8efaa18ceb2553a71002c678}} +\index{testing\+::\+Test\+Suite@{testing\+::\+Test\+Suite}!reportable\+\_\+disabled\+\_\+test\+\_\+count@{reportable\+\_\+disabled\+\_\+test\+\_\+count}} +\index{reportable\+\_\+disabled\+\_\+test\+\_\+count@{reportable\+\_\+disabled\+\_\+test\+\_\+count}!testing\+::\+Test\+Suite@{testing\+::\+Test\+Suite}} +\subsubsection{\texorpdfstring{reportable\+\_\+disabled\+\_\+test\+\_\+count()}{reportable\_disabled\_test\_count()}} +{\footnotesize\ttfamily int testing\+::\+Test\+Suite\+::reportable\+\_\+disabled\+\_\+test\+\_\+count (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const} + +\mbox{\Hypertarget{classtesting_1_1_test_suite_a24f62e17cfd37b90263f1194fb7d4d74}\label{classtesting_1_1_test_suite_a24f62e17cfd37b90263f1194fb7d4d74}} +\index{testing\+::\+Test\+Suite@{testing\+::\+Test\+Suite}!reportable\+\_\+test\+\_\+count@{reportable\+\_\+test\+\_\+count}} +\index{reportable\+\_\+test\+\_\+count@{reportable\+\_\+test\+\_\+count}!testing\+::\+Test\+Suite@{testing\+::\+Test\+Suite}} +\subsubsection{\texorpdfstring{reportable\+\_\+test\+\_\+count()}{reportable\_test\_count()}} +{\footnotesize\ttfamily int testing\+::\+Test\+Suite\+::reportable\+\_\+test\+\_\+count (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const} + +\mbox{\Hypertarget{classtesting_1_1_test_suite_a8f62c17baef80042e0ff03ef5d5e4ba7}\label{classtesting_1_1_test_suite_a8f62c17baef80042e0ff03ef5d5e4ba7}} +\index{testing\+::\+Test\+Suite@{testing\+::\+Test\+Suite}!should\+\_\+run@{should\+\_\+run}} +\index{should\+\_\+run@{should\+\_\+run}!testing\+::\+Test\+Suite@{testing\+::\+Test\+Suite}} +\subsubsection{\texorpdfstring{should\+\_\+run()}{should\_run()}} +{\footnotesize\ttfamily bool testing\+::\+Test\+Suite\+::should\+\_\+run (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 15461 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_test_suite_ae48c72ff92fa1c555e3b577f8661285c}\label{classtesting_1_1_test_suite_ae48c72ff92fa1c555e3b577f8661285c}} +\index{testing\+::\+Test\+Suite@{testing\+::\+Test\+Suite}!skipped\+\_\+test\+\_\+count@{skipped\+\_\+test\+\_\+count}} +\index{skipped\+\_\+test\+\_\+count@{skipped\+\_\+test\+\_\+count}!testing\+::\+Test\+Suite@{testing\+::\+Test\+Suite}} +\subsubsection{\texorpdfstring{skipped\+\_\+test\+\_\+count()}{skipped\_test\_count()}} +{\footnotesize\ttfamily int testing\+::\+Test\+Suite\+::skipped\+\_\+test\+\_\+count (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const} + +\mbox{\Hypertarget{classtesting_1_1_test_suite_a85bc4191681df7e8bae810c1744465ec}\label{classtesting_1_1_test_suite_a85bc4191681df7e8bae810c1744465ec}} +\index{testing\+::\+Test\+Suite@{testing\+::\+Test\+Suite}!successful\+\_\+test\+\_\+count@{successful\+\_\+test\+\_\+count}} +\index{successful\+\_\+test\+\_\+count@{successful\+\_\+test\+\_\+count}!testing\+::\+Test\+Suite@{testing\+::\+Test\+Suite}} +\subsubsection{\texorpdfstring{successful\+\_\+test\+\_\+count()}{successful\_test\_count()}} +{\footnotesize\ttfamily int testing\+::\+Test\+Suite\+::successful\+\_\+test\+\_\+count (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const} + +\mbox{\Hypertarget{classtesting_1_1_test_suite_a1ccf2681712a3a27659789009815db8f}\label{classtesting_1_1_test_suite_a1ccf2681712a3a27659789009815db8f}} +\index{testing\+::\+Test\+Suite@{testing\+::\+Test\+Suite}!test\+\_\+to\+\_\+run\+\_\+count@{test\+\_\+to\+\_\+run\+\_\+count}} +\index{test\+\_\+to\+\_\+run\+\_\+count@{test\+\_\+to\+\_\+run\+\_\+count}!testing\+::\+Test\+Suite@{testing\+::\+Test\+Suite}} +\subsubsection{\texorpdfstring{test\+\_\+to\+\_\+run\+\_\+count()}{test\_to\_run\_count()}} +{\footnotesize\ttfamily int testing\+::\+Test\+Suite\+::test\+\_\+to\+\_\+run\+\_\+count (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const} + +\mbox{\Hypertarget{classtesting_1_1_test_suite_a38a5e95341cfee5a88d8910f69da4960}\label{classtesting_1_1_test_suite_a38a5e95341cfee5a88d8910f69da4960}} +\index{testing\+::\+Test\+Suite@{testing\+::\+Test\+Suite}!total\+\_\+test\+\_\+count@{total\+\_\+test\+\_\+count}} +\index{total\+\_\+test\+\_\+count@{total\+\_\+test\+\_\+count}!testing\+::\+Test\+Suite@{testing\+::\+Test\+Suite}} +\subsubsection{\texorpdfstring{total\+\_\+test\+\_\+count()}{total\_test\_count()}} +{\footnotesize\ttfamily int testing\+::\+Test\+Suite\+::total\+\_\+test\+\_\+count (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const} + +\mbox{\Hypertarget{classtesting_1_1_test_suite_ab2ea12318bdbfb6aa97792344b49e3db}\label{classtesting_1_1_test_suite_ab2ea12318bdbfb6aa97792344b49e3db}} +\index{testing\+::\+Test\+Suite@{testing\+::\+Test\+Suite}!type\+\_\+param@{type\+\_\+param}} +\index{type\+\_\+param@{type\+\_\+param}!testing\+::\+Test\+Suite@{testing\+::\+Test\+Suite}} +\subsubsection{\texorpdfstring{type\+\_\+param()}{type\_param()}} +{\footnotesize\ttfamily const char$\ast$ testing\+::\+Test\+Suite\+::type\+\_\+param (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 15455 of file gtest.\+h. + + + +\subsection{Friends And Related Function Documentation} +\mbox{\Hypertarget{classtesting_1_1_test_suite_acc0a5e7573fd6ae7ad1878613bb86853}\label{classtesting_1_1_test_suite_acc0a5e7573fd6ae7ad1878613bb86853}} +\index{testing\+::\+Test\+Suite@{testing\+::\+Test\+Suite}!internal\+::\+Unit\+Test\+Impl@{internal\+::\+Unit\+Test\+Impl}} +\index{internal\+::\+Unit\+Test\+Impl@{internal\+::\+Unit\+Test\+Impl}!testing\+::\+Test\+Suite@{testing\+::\+Test\+Suite}} +\subsubsection{\texorpdfstring{internal\+::\+Unit\+Test\+Impl}{internal::UnitTestImpl}} +{\footnotesize\ttfamily friend class internal\+::\+Unit\+Test\+Impl\hspace{0.3cm}{\ttfamily [friend]}} + + + +Definition at line 15506 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_test_suite_a5b78b1c2e1fa07ffed92da365593eaa4}\label{classtesting_1_1_test_suite_a5b78b1c2e1fa07ffed92da365593eaa4}} +\index{testing\+::\+Test\+Suite@{testing\+::\+Test\+Suite}!Test@{Test}} +\index{Test@{Test}!testing\+::\+Test\+Suite@{testing\+::\+Test\+Suite}} +\subsubsection{\texorpdfstring{Test}{Test}} +{\footnotesize\ttfamily friend class \mbox{\hyperlink{classtesting_1_1_test}{Test}}\hspace{0.3cm}{\ttfamily [friend]}} + + + +Definition at line 15505 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1_test_with_param.eps b/doc/latex/classtesting_1_1_test_with_param.eps new file mode 100644 index 0000000..b413c0b --- /dev/null +++ b/doc/latex/classtesting_1_1_test_with_param.eps @@ -0,0 +1,203 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 98.522167 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 5.075000 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(testing::TestWithParam< T >) cw +(testing::Test) cw +(testing::WithParamInterface< T >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (testing::TestWithParam< T >) 0.500000 0.000000 box + (testing::Test) 0.000000 1.000000 box + (testing::WithParamInterface< T >) 1.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.500000 0.000000 out +solid +0.000000 1.000000 1.000000 conn +solid +1 0.000000 1.000000 in +solid +1 1.000000 1.000000 in diff --git a/doc/latex/classtesting_1_1_test_with_param.tex b/doc/latex/classtesting_1_1_test_with_param.tex new file mode 100644 index 0000000..c1ce33b --- /dev/null +++ b/doc/latex/classtesting_1_1_test_with_param.tex @@ -0,0 +1,28 @@ +\hypertarget{classtesting_1_1_test_with_param}{}\section{testing\+:\+:Test\+With\+Param$<$ T $>$ Class Template Reference} +\label{classtesting_1_1_test_with_param}\index{testing\+::\+Test\+With\+Param$<$ T $>$@{testing\+::\+Test\+With\+Param$<$ T $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +Inheritance diagram for testing\+:\+:Test\+With\+Param$<$ T $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{classtesting_1_1_test_with_param} +\end{center} +\end{figure} +\subsection*{Additional Inherited Members} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T$>$\newline +class testing\+::\+Test\+With\+Param$<$ T $>$} + + + +Definition at line 16505 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1_unit_test.tex b/doc/latex/classtesting_1_1_unit_test.tex new file mode 100644 index 0000000..a72ea64 --- /dev/null +++ b/doc/latex/classtesting_1_1_unit_test.tex @@ -0,0 +1,377 @@ +\hypertarget{classtesting_1_1_unit_test}{}\section{testing\+:\+:Unit\+Test Class Reference} +\label{classtesting_1_1_unit_test}\index{testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +int \mbox{\hyperlink{classtesting_1_1_unit_test_a2febc800536b44500565f4c423f359d3}{Run}} () \mbox{\hyperlink{gtest_8h_a8e5aab8276b2645f64f41c9e3021b935}{G\+T\+E\+S\+T\+\_\+\+M\+U\+S\+T\+\_\+\+U\+S\+E\+\_\+\+R\+E\+S\+U\+L\+T\+\_\+}} +\item +const char $\ast$ \mbox{\hyperlink{classtesting_1_1_unit_test_af35839566385e14f6b31232489112621}{original\+\_\+working\+\_\+dir}} () const +\item +const \mbox{\hyperlink{classtesting_1_1_test_suite}{Test\+Suite}} $\ast$ \mbox{\hyperlink{classtesting_1_1_unit_test_ac1c9ccf54060771c27fb94c3955459d3}{current\+\_\+test\+\_\+suite}} () const \mbox{\hyperlink{gtest_8h_a69abff5a4efdd07bd5faebe3dd318d06}{G\+T\+E\+S\+T\+\_\+\+L\+O\+C\+K\+\_\+\+E\+X\+C\+L\+U\+D\+E\+D\+\_\+}}(mutex\+\_\+) +\item +const Test\+Case $\ast$ \mbox{\hyperlink{classtesting_1_1_unit_test_a158da6213cf0b2c6100e9cb1f8151e63}{current\+\_\+test\+\_\+case}} () const \mbox{\hyperlink{gtest_8h_a69abff5a4efdd07bd5faebe3dd318d06}{G\+T\+E\+S\+T\+\_\+\+L\+O\+C\+K\+\_\+\+E\+X\+C\+L\+U\+D\+E\+D\+\_\+}}(mutex\+\_\+) +\item +const \mbox{\hyperlink{classtesting_1_1_test_info}{Test\+Info}} $\ast$ \mbox{\hyperlink{classtesting_1_1_unit_test_a02b6ab72bb9d93805bd0efbb099b4ccc}{current\+\_\+test\+\_\+info}} () const \mbox{\hyperlink{gtest_8h_a69abff5a4efdd07bd5faebe3dd318d06}{G\+T\+E\+S\+T\+\_\+\+L\+O\+C\+K\+\_\+\+E\+X\+C\+L\+U\+D\+E\+D\+\_\+}}(mutex\+\_\+) +\item +int \mbox{\hyperlink{classtesting_1_1_unit_test_adddc090a06f2d3a0e68f3762ee262688}{random\+\_\+seed}} () const +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_registry}{internal\+::\+Parameterized\+Test\+Suite\+Registry}} \& \mbox{\hyperlink{classtesting_1_1_unit_test_a3f72b753a9eda20bf7ab2aef0bdcc40f}{parameterized\+\_\+test\+\_\+registry}} () \mbox{\hyperlink{gtest_8h_a69abff5a4efdd07bd5faebe3dd318d06}{G\+T\+E\+S\+T\+\_\+\+L\+O\+C\+K\+\_\+\+E\+X\+C\+L\+U\+D\+E\+D\+\_\+}}(mutex\+\_\+) +\item +int \mbox{\hyperlink{classtesting_1_1_unit_test_aefa4c6654fed9a70c6c5ca61abae2234}{successful\+\_\+test\+\_\+suite\+\_\+count}} () const +\item +int \mbox{\hyperlink{classtesting_1_1_unit_test_a118a74c8cc3845653893ed17245f44ac}{failed\+\_\+test\+\_\+suite\+\_\+count}} () const +\item +int \mbox{\hyperlink{classtesting_1_1_unit_test_af8ed6d43a95405a860fdd898bf0c1a87}{total\+\_\+test\+\_\+suite\+\_\+count}} () const +\item +int \mbox{\hyperlink{classtesting_1_1_unit_test_ade4726c8283513bd2b3391c600503790}{test\+\_\+suite\+\_\+to\+\_\+run\+\_\+count}} () const +\item +int \mbox{\hyperlink{classtesting_1_1_unit_test_acaa2ab71f53c25ffe0242a91c14e173f}{successful\+\_\+test\+\_\+case\+\_\+count}} () const +\item +int \mbox{\hyperlink{classtesting_1_1_unit_test_abc0fa297a4103f7cdd9627ae27d9d0ef}{failed\+\_\+test\+\_\+case\+\_\+count}} () const +\item +int \mbox{\hyperlink{classtesting_1_1_unit_test_a93fc8f4eebc3212d06468ad216830ced}{total\+\_\+test\+\_\+case\+\_\+count}} () const +\item +int \mbox{\hyperlink{classtesting_1_1_unit_test_a965248fbe72f9fede5de921b6666943b}{test\+\_\+case\+\_\+to\+\_\+run\+\_\+count}} () const +\item +int \mbox{\hyperlink{classtesting_1_1_unit_test_a49ee8056e357ad497e67399447dd5a40}{successful\+\_\+test\+\_\+count}} () const +\item +int \mbox{\hyperlink{classtesting_1_1_unit_test_a0082c74809be04baf7e43842ddac4ae5}{skipped\+\_\+test\+\_\+count}} () const +\item +int \mbox{\hyperlink{classtesting_1_1_unit_test_ace1c860482b4ae5c341df5a9665e5c08}{failed\+\_\+test\+\_\+count}} () const +\item +int \mbox{\hyperlink{classtesting_1_1_unit_test_a2a2835db178d5c8569507db9f0a3d54f}{reportable\+\_\+disabled\+\_\+test\+\_\+count}} () const +\item +int \mbox{\hyperlink{classtesting_1_1_unit_test_ad69ccf3d4a9bc7333badeafbde3bc76b}{disabled\+\_\+test\+\_\+count}} () const +\item +int \mbox{\hyperlink{classtesting_1_1_unit_test_a449d0e0350ef146040cd37679c005248}{reportable\+\_\+test\+\_\+count}} () const +\item +int \mbox{\hyperlink{classtesting_1_1_unit_test_af6e02fcf76fd7247687f4e8af6e7ef41}{total\+\_\+test\+\_\+count}} () const +\item +int \mbox{\hyperlink{classtesting_1_1_unit_test_a461f46b2976f135d2a65e8d3def746e9}{test\+\_\+to\+\_\+run\+\_\+count}} () const +\item +\mbox{\hyperlink{namespacetesting_a992de1d091ce660f451d1e8b3ce30fd6}{Time\+In\+Millis}} \mbox{\hyperlink{classtesting_1_1_unit_test_ab6dc32e9f385f164df02899b2b440f04}{start\+\_\+timestamp}} () const +\item +\mbox{\hyperlink{namespacetesting_a992de1d091ce660f451d1e8b3ce30fd6}{Time\+In\+Millis}} \mbox{\hyperlink{classtesting_1_1_unit_test_a410e14e52f505dabe2054e5018e9ca33}{elapsed\+\_\+time}} () const +\item +bool \mbox{\hyperlink{classtesting_1_1_unit_test_a7c9b327bc14cb8a282c789dc6513a55b}{Passed}} () const +\item +bool \mbox{\hyperlink{classtesting_1_1_unit_test_a706f29e765916616b11a271a65948727}{Failed}} () const +\item +const \mbox{\hyperlink{classtesting_1_1_test_suite}{Test\+Suite}} $\ast$ \mbox{\hyperlink{classtesting_1_1_unit_test_a906e19e244ccc129bcc62fe2f3632e1c}{Get\+Test\+Suite}} (int i) const +\item +const Test\+Case $\ast$ \mbox{\hyperlink{classtesting_1_1_unit_test_adf55eb1cc81a43d40ddef75fadded1de}{Get\+Test\+Case}} (int i) const +\item +const \mbox{\hyperlink{classtesting_1_1_test_result}{Test\+Result}} \& \mbox{\hyperlink{classtesting_1_1_unit_test_afb26f53c070675638033436f35bad889}{ad\+\_\+hoc\+\_\+test\+\_\+result}} () const +\item +\mbox{\hyperlink{classtesting_1_1_test_event_listeners}{Test\+Event\+Listeners}} \& \mbox{\hyperlink{classtesting_1_1_unit_test_a1b7387b0b3daa2433ed6b685027bf285}{listeners}} () +\end{DoxyCompactItemize} +\subsection*{Static Public Member Functions} +\begin{DoxyCompactItemize} +\item +static \mbox{\hyperlink{classtesting_1_1_unit_test}{Unit\+Test}} $\ast$ \mbox{\hyperlink{classtesting_1_1_unit_test_af254e2e695471eb9f128bc556bae3668}{Get\+Instance}} () +\end{DoxyCompactItemize} +\subsection*{Friends} +\begin{DoxyCompactItemize} +\item +class \mbox{\hyperlink{classtesting_1_1_unit_test_ada54bdd5bdc24f39b9ca16807326654a}{Scoped\+Trace}} +\item +class \mbox{\hyperlink{classtesting_1_1_unit_test_a5b78b1c2e1fa07ffed92da365593eaa4}{Test}} +\item +class \mbox{\hyperlink{classtesting_1_1_unit_test_a183151aa061362c87572e743fe233db1}{internal\+::\+Assert\+Helper}} +\item +class \mbox{\hyperlink{classtesting_1_1_unit_test_adc037d188dab349a94868991955c9cd4}{internal\+::\+Streaming\+Listener\+Test}} +\item +class \mbox{\hyperlink{classtesting_1_1_unit_test_ae970f89a9f477a349fe5778be85ef42e}{internal\+::\+Unit\+Test\+Record\+Property\+Test\+Helper}} +\item +\mbox{\hyperlink{classtesting_1_1_environment}{Environment}} $\ast$ \mbox{\hyperlink{classtesting_1_1_unit_test_a5ec26e4c31220ff8e769cc09689a4d6d}{Add\+Global\+Test\+Environment}} (\mbox{\hyperlink{classtesting_1_1_environment}{Environment}} $\ast$env) +\item +internal\+::\+Unit\+Test\+Impl $\ast$ \mbox{\hyperlink{classtesting_1_1_unit_test_a56e56be7066957d612e53b5c60f6ac08}{internal\+::\+Get\+Unit\+Test\+Impl}} () +\item +void \mbox{\hyperlink{classtesting_1_1_unit_test_a73f5a158c13793b90c80d854c9a75120}{internal\+::\+Report\+Failure\+In\+Unknown\+Location}} (Test\+Part\+Result\+::\+Type result\+\_\+type, const std\+::string \&message) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} + + +Definition at line 15850 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1_unit_test_afb26f53c070675638033436f35bad889}\label{classtesting_1_1_unit_test_afb26f53c070675638033436f35bad889}} +\index{testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}!ad\+\_\+hoc\+\_\+test\+\_\+result@{ad\+\_\+hoc\+\_\+test\+\_\+result}} +\index{ad\+\_\+hoc\+\_\+test\+\_\+result@{ad\+\_\+hoc\+\_\+test\+\_\+result}!testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}} +\subsubsection{\texorpdfstring{ad\+\_\+hoc\+\_\+test\+\_\+result()}{ad\_hoc\_test\_result()}} +{\footnotesize\ttfamily const \mbox{\hyperlink{classtesting_1_1_test_result}{Test\+Result}}\& testing\+::\+Unit\+Test\+::ad\+\_\+hoc\+\_\+test\+\_\+result (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const} + +\mbox{\Hypertarget{classtesting_1_1_unit_test_a158da6213cf0b2c6100e9cb1f8151e63}\label{classtesting_1_1_unit_test_a158da6213cf0b2c6100e9cb1f8151e63}} +\index{testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}!current\+\_\+test\+\_\+case@{current\+\_\+test\+\_\+case}} +\index{current\+\_\+test\+\_\+case@{current\+\_\+test\+\_\+case}!testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}} +\subsubsection{\texorpdfstring{current\+\_\+test\+\_\+case()}{current\_test\_case()}} +{\footnotesize\ttfamily const Test\+Case$\ast$ testing\+::\+Unit\+Test\+::current\+\_\+test\+\_\+case (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const} + +\mbox{\Hypertarget{classtesting_1_1_unit_test_a02b6ab72bb9d93805bd0efbb099b4ccc}\label{classtesting_1_1_unit_test_a02b6ab72bb9d93805bd0efbb099b4ccc}} +\index{testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}!current\+\_\+test\+\_\+info@{current\+\_\+test\+\_\+info}} +\index{current\+\_\+test\+\_\+info@{current\+\_\+test\+\_\+info}!testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}} +\subsubsection{\texorpdfstring{current\+\_\+test\+\_\+info()}{current\_test\_info()}} +{\footnotesize\ttfamily const \mbox{\hyperlink{classtesting_1_1_test_info}{Test\+Info}}$\ast$ testing\+::\+Unit\+Test\+::current\+\_\+test\+\_\+info (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const} + +\mbox{\Hypertarget{classtesting_1_1_unit_test_ac1c9ccf54060771c27fb94c3955459d3}\label{classtesting_1_1_unit_test_ac1c9ccf54060771c27fb94c3955459d3}} +\index{testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}!current\+\_\+test\+\_\+suite@{current\+\_\+test\+\_\+suite}} +\index{current\+\_\+test\+\_\+suite@{current\+\_\+test\+\_\+suite}!testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}} +\subsubsection{\texorpdfstring{current\+\_\+test\+\_\+suite()}{current\_test\_suite()}} +{\footnotesize\ttfamily const \mbox{\hyperlink{classtesting_1_1_test_suite}{Test\+Suite}}$\ast$ testing\+::\+Unit\+Test\+::current\+\_\+test\+\_\+suite (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const} + +\mbox{\Hypertarget{classtesting_1_1_unit_test_ad69ccf3d4a9bc7333badeafbde3bc76b}\label{classtesting_1_1_unit_test_ad69ccf3d4a9bc7333badeafbde3bc76b}} +\index{testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}!disabled\+\_\+test\+\_\+count@{disabled\+\_\+test\+\_\+count}} +\index{disabled\+\_\+test\+\_\+count@{disabled\+\_\+test\+\_\+count}!testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}} +\subsubsection{\texorpdfstring{disabled\+\_\+test\+\_\+count()}{disabled\_test\_count()}} +{\footnotesize\ttfamily int testing\+::\+Unit\+Test\+::disabled\+\_\+test\+\_\+count (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const} + +\mbox{\Hypertarget{classtesting_1_1_unit_test_a410e14e52f505dabe2054e5018e9ca33}\label{classtesting_1_1_unit_test_a410e14e52f505dabe2054e5018e9ca33}} +\index{testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}!elapsed\+\_\+time@{elapsed\+\_\+time}} +\index{elapsed\+\_\+time@{elapsed\+\_\+time}!testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}} +\subsubsection{\texorpdfstring{elapsed\+\_\+time()}{elapsed\_time()}} +{\footnotesize\ttfamily \mbox{\hyperlink{namespacetesting_a992de1d091ce660f451d1e8b3ce30fd6}{Time\+In\+Millis}} testing\+::\+Unit\+Test\+::elapsed\+\_\+time (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const} + +\mbox{\Hypertarget{classtesting_1_1_unit_test_a706f29e765916616b11a271a65948727}\label{classtesting_1_1_unit_test_a706f29e765916616b11a271a65948727}} +\index{testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}!Failed@{Failed}} +\index{Failed@{Failed}!testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}} +\subsubsection{\texorpdfstring{Failed()}{Failed()}} +{\footnotesize\ttfamily bool testing\+::\+Unit\+Test\+::\+Failed (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const} + +\mbox{\Hypertarget{classtesting_1_1_unit_test_abc0fa297a4103f7cdd9627ae27d9d0ef}\label{classtesting_1_1_unit_test_abc0fa297a4103f7cdd9627ae27d9d0ef}} +\index{testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}!failed\+\_\+test\+\_\+case\+\_\+count@{failed\+\_\+test\+\_\+case\+\_\+count}} +\index{failed\+\_\+test\+\_\+case\+\_\+count@{failed\+\_\+test\+\_\+case\+\_\+count}!testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}} +\subsubsection{\texorpdfstring{failed\+\_\+test\+\_\+case\+\_\+count()}{failed\_test\_case\_count()}} +{\footnotesize\ttfamily int testing\+::\+Unit\+Test\+::failed\+\_\+test\+\_\+case\+\_\+count (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const} + +\mbox{\Hypertarget{classtesting_1_1_unit_test_ace1c860482b4ae5c341df5a9665e5c08}\label{classtesting_1_1_unit_test_ace1c860482b4ae5c341df5a9665e5c08}} +\index{testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}!failed\+\_\+test\+\_\+count@{failed\+\_\+test\+\_\+count}} +\index{failed\+\_\+test\+\_\+count@{failed\+\_\+test\+\_\+count}!testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}} +\subsubsection{\texorpdfstring{failed\+\_\+test\+\_\+count()}{failed\_test\_count()}} +{\footnotesize\ttfamily int testing\+::\+Unit\+Test\+::failed\+\_\+test\+\_\+count (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const} + +\mbox{\Hypertarget{classtesting_1_1_unit_test_a118a74c8cc3845653893ed17245f44ac}\label{classtesting_1_1_unit_test_a118a74c8cc3845653893ed17245f44ac}} +\index{testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}!failed\+\_\+test\+\_\+suite\+\_\+count@{failed\+\_\+test\+\_\+suite\+\_\+count}} +\index{failed\+\_\+test\+\_\+suite\+\_\+count@{failed\+\_\+test\+\_\+suite\+\_\+count}!testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}} +\subsubsection{\texorpdfstring{failed\+\_\+test\+\_\+suite\+\_\+count()}{failed\_test\_suite\_count()}} +{\footnotesize\ttfamily int testing\+::\+Unit\+Test\+::failed\+\_\+test\+\_\+suite\+\_\+count (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const} + +\mbox{\Hypertarget{classtesting_1_1_unit_test_af254e2e695471eb9f128bc556bae3668}\label{classtesting_1_1_unit_test_af254e2e695471eb9f128bc556bae3668}} +\index{testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}!Get\+Instance@{Get\+Instance}} +\index{Get\+Instance@{Get\+Instance}!testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}} +\subsubsection{\texorpdfstring{Get\+Instance()}{GetInstance()}} +{\footnotesize\ttfamily static \mbox{\hyperlink{classtesting_1_1_unit_test}{Unit\+Test}}$\ast$ testing\+::\+Unit\+Test\+::\+Get\+Instance (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} + +\mbox{\Hypertarget{classtesting_1_1_unit_test_adf55eb1cc81a43d40ddef75fadded1de}\label{classtesting_1_1_unit_test_adf55eb1cc81a43d40ddef75fadded1de}} +\index{testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}!Get\+Test\+Case@{Get\+Test\+Case}} +\index{Get\+Test\+Case@{Get\+Test\+Case}!testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}} +\subsubsection{\texorpdfstring{Get\+Test\+Case()}{GetTestCase()}} +{\footnotesize\ttfamily const Test\+Case$\ast$ testing\+::\+Unit\+Test\+::\+Get\+Test\+Case (\begin{DoxyParamCaption}\item[{int}]{i }\end{DoxyParamCaption}) const} + +\mbox{\Hypertarget{classtesting_1_1_unit_test_a906e19e244ccc129bcc62fe2f3632e1c}\label{classtesting_1_1_unit_test_a906e19e244ccc129bcc62fe2f3632e1c}} +\index{testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}!Get\+Test\+Suite@{Get\+Test\+Suite}} +\index{Get\+Test\+Suite@{Get\+Test\+Suite}!testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}} +\subsubsection{\texorpdfstring{Get\+Test\+Suite()}{GetTestSuite()}} +{\footnotesize\ttfamily const \mbox{\hyperlink{classtesting_1_1_test_suite}{Test\+Suite}}$\ast$ testing\+::\+Unit\+Test\+::\+Get\+Test\+Suite (\begin{DoxyParamCaption}\item[{int}]{i }\end{DoxyParamCaption}) const} + +\mbox{\Hypertarget{classtesting_1_1_unit_test_a1b7387b0b3daa2433ed6b685027bf285}\label{classtesting_1_1_unit_test_a1b7387b0b3daa2433ed6b685027bf285}} +\index{testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}!listeners@{listeners}} +\index{listeners@{listeners}!testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}} +\subsubsection{\texorpdfstring{listeners()}{listeners()}} +{\footnotesize\ttfamily \mbox{\hyperlink{classtesting_1_1_test_event_listeners}{Test\+Event\+Listeners}}\& testing\+::\+Unit\+Test\+::listeners (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{classtesting_1_1_unit_test_af35839566385e14f6b31232489112621}\label{classtesting_1_1_unit_test_af35839566385e14f6b31232489112621}} +\index{testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}!original\+\_\+working\+\_\+dir@{original\+\_\+working\+\_\+dir}} +\index{original\+\_\+working\+\_\+dir@{original\+\_\+working\+\_\+dir}!testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}} +\subsubsection{\texorpdfstring{original\+\_\+working\+\_\+dir()}{original\_working\_dir()}} +{\footnotesize\ttfamily const char$\ast$ testing\+::\+Unit\+Test\+::original\+\_\+working\+\_\+dir (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const} + +\mbox{\Hypertarget{classtesting_1_1_unit_test_a3f72b753a9eda20bf7ab2aef0bdcc40f}\label{classtesting_1_1_unit_test_a3f72b753a9eda20bf7ab2aef0bdcc40f}} +\index{testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}!parameterized\+\_\+test\+\_\+registry@{parameterized\+\_\+test\+\_\+registry}} +\index{parameterized\+\_\+test\+\_\+registry@{parameterized\+\_\+test\+\_\+registry}!testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}} +\subsubsection{\texorpdfstring{parameterized\+\_\+test\+\_\+registry()}{parameterized\_test\_registry()}} +{\footnotesize\ttfamily \mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_registry}{internal\+::\+Parameterized\+Test\+Suite\+Registry}}\& testing\+::\+Unit\+Test\+::parameterized\+\_\+test\+\_\+registry (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{classtesting_1_1_unit_test_a7c9b327bc14cb8a282c789dc6513a55b}\label{classtesting_1_1_unit_test_a7c9b327bc14cb8a282c789dc6513a55b}} +\index{testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}!Passed@{Passed}} +\index{Passed@{Passed}!testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}} +\subsubsection{\texorpdfstring{Passed()}{Passed()}} +{\footnotesize\ttfamily bool testing\+::\+Unit\+Test\+::\+Passed (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const} + +\mbox{\Hypertarget{classtesting_1_1_unit_test_adddc090a06f2d3a0e68f3762ee262688}\label{classtesting_1_1_unit_test_adddc090a06f2d3a0e68f3762ee262688}} +\index{testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}!random\+\_\+seed@{random\+\_\+seed}} +\index{random\+\_\+seed@{random\+\_\+seed}!testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}} +\subsubsection{\texorpdfstring{random\+\_\+seed()}{random\_seed()}} +{\footnotesize\ttfamily int testing\+::\+Unit\+Test\+::random\+\_\+seed (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const} + +\mbox{\Hypertarget{classtesting_1_1_unit_test_a2a2835db178d5c8569507db9f0a3d54f}\label{classtesting_1_1_unit_test_a2a2835db178d5c8569507db9f0a3d54f}} +\index{testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}!reportable\+\_\+disabled\+\_\+test\+\_\+count@{reportable\+\_\+disabled\+\_\+test\+\_\+count}} +\index{reportable\+\_\+disabled\+\_\+test\+\_\+count@{reportable\+\_\+disabled\+\_\+test\+\_\+count}!testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}} +\subsubsection{\texorpdfstring{reportable\+\_\+disabled\+\_\+test\+\_\+count()}{reportable\_disabled\_test\_count()}} +{\footnotesize\ttfamily int testing\+::\+Unit\+Test\+::reportable\+\_\+disabled\+\_\+test\+\_\+count (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const} + +\mbox{\Hypertarget{classtesting_1_1_unit_test_a449d0e0350ef146040cd37679c005248}\label{classtesting_1_1_unit_test_a449d0e0350ef146040cd37679c005248}} +\index{testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}!reportable\+\_\+test\+\_\+count@{reportable\+\_\+test\+\_\+count}} +\index{reportable\+\_\+test\+\_\+count@{reportable\+\_\+test\+\_\+count}!testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}} +\subsubsection{\texorpdfstring{reportable\+\_\+test\+\_\+count()}{reportable\_test\_count()}} +{\footnotesize\ttfamily int testing\+::\+Unit\+Test\+::reportable\+\_\+test\+\_\+count (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const} + +\mbox{\Hypertarget{classtesting_1_1_unit_test_a2febc800536b44500565f4c423f359d3}\label{classtesting_1_1_unit_test_a2febc800536b44500565f4c423f359d3}} +\index{testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}!Run@{Run}} +\index{Run@{Run}!testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}} +\subsubsection{\texorpdfstring{Run()}{Run()}} +{\footnotesize\ttfamily int testing\+::\+Unit\+Test\+::\+Run (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{classtesting_1_1_unit_test_a0082c74809be04baf7e43842ddac4ae5}\label{classtesting_1_1_unit_test_a0082c74809be04baf7e43842ddac4ae5}} +\index{testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}!skipped\+\_\+test\+\_\+count@{skipped\+\_\+test\+\_\+count}} +\index{skipped\+\_\+test\+\_\+count@{skipped\+\_\+test\+\_\+count}!testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}} +\subsubsection{\texorpdfstring{skipped\+\_\+test\+\_\+count()}{skipped\_test\_count()}} +{\footnotesize\ttfamily int testing\+::\+Unit\+Test\+::skipped\+\_\+test\+\_\+count (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const} + +\mbox{\Hypertarget{classtesting_1_1_unit_test_ab6dc32e9f385f164df02899b2b440f04}\label{classtesting_1_1_unit_test_ab6dc32e9f385f164df02899b2b440f04}} +\index{testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}!start\+\_\+timestamp@{start\+\_\+timestamp}} +\index{start\+\_\+timestamp@{start\+\_\+timestamp}!testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}} +\subsubsection{\texorpdfstring{start\+\_\+timestamp()}{start\_timestamp()}} +{\footnotesize\ttfamily \mbox{\hyperlink{namespacetesting_a992de1d091ce660f451d1e8b3ce30fd6}{Time\+In\+Millis}} testing\+::\+Unit\+Test\+::start\+\_\+timestamp (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const} + +\mbox{\Hypertarget{classtesting_1_1_unit_test_acaa2ab71f53c25ffe0242a91c14e173f}\label{classtesting_1_1_unit_test_acaa2ab71f53c25ffe0242a91c14e173f}} +\index{testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}!successful\+\_\+test\+\_\+case\+\_\+count@{successful\+\_\+test\+\_\+case\+\_\+count}} +\index{successful\+\_\+test\+\_\+case\+\_\+count@{successful\+\_\+test\+\_\+case\+\_\+count}!testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}} +\subsubsection{\texorpdfstring{successful\+\_\+test\+\_\+case\+\_\+count()}{successful\_test\_case\_count()}} +{\footnotesize\ttfamily int testing\+::\+Unit\+Test\+::successful\+\_\+test\+\_\+case\+\_\+count (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const} + +\mbox{\Hypertarget{classtesting_1_1_unit_test_a49ee8056e357ad497e67399447dd5a40}\label{classtesting_1_1_unit_test_a49ee8056e357ad497e67399447dd5a40}} +\index{testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}!successful\+\_\+test\+\_\+count@{successful\+\_\+test\+\_\+count}} +\index{successful\+\_\+test\+\_\+count@{successful\+\_\+test\+\_\+count}!testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}} +\subsubsection{\texorpdfstring{successful\+\_\+test\+\_\+count()}{successful\_test\_count()}} +{\footnotesize\ttfamily int testing\+::\+Unit\+Test\+::successful\+\_\+test\+\_\+count (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const} + +\mbox{\Hypertarget{classtesting_1_1_unit_test_aefa4c6654fed9a70c6c5ca61abae2234}\label{classtesting_1_1_unit_test_aefa4c6654fed9a70c6c5ca61abae2234}} +\index{testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}!successful\+\_\+test\+\_\+suite\+\_\+count@{successful\+\_\+test\+\_\+suite\+\_\+count}} +\index{successful\+\_\+test\+\_\+suite\+\_\+count@{successful\+\_\+test\+\_\+suite\+\_\+count}!testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}} +\subsubsection{\texorpdfstring{successful\+\_\+test\+\_\+suite\+\_\+count()}{successful\_test\_suite\_count()}} +{\footnotesize\ttfamily int testing\+::\+Unit\+Test\+::successful\+\_\+test\+\_\+suite\+\_\+count (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const} + +\mbox{\Hypertarget{classtesting_1_1_unit_test_a965248fbe72f9fede5de921b6666943b}\label{classtesting_1_1_unit_test_a965248fbe72f9fede5de921b6666943b}} +\index{testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}!test\+\_\+case\+\_\+to\+\_\+run\+\_\+count@{test\+\_\+case\+\_\+to\+\_\+run\+\_\+count}} +\index{test\+\_\+case\+\_\+to\+\_\+run\+\_\+count@{test\+\_\+case\+\_\+to\+\_\+run\+\_\+count}!testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}} +\subsubsection{\texorpdfstring{test\+\_\+case\+\_\+to\+\_\+run\+\_\+count()}{test\_case\_to\_run\_count()}} +{\footnotesize\ttfamily int testing\+::\+Unit\+Test\+::test\+\_\+case\+\_\+to\+\_\+run\+\_\+count (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const} + +\mbox{\Hypertarget{classtesting_1_1_unit_test_ade4726c8283513bd2b3391c600503790}\label{classtesting_1_1_unit_test_ade4726c8283513bd2b3391c600503790}} +\index{testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}!test\+\_\+suite\+\_\+to\+\_\+run\+\_\+count@{test\+\_\+suite\+\_\+to\+\_\+run\+\_\+count}} +\index{test\+\_\+suite\+\_\+to\+\_\+run\+\_\+count@{test\+\_\+suite\+\_\+to\+\_\+run\+\_\+count}!testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}} +\subsubsection{\texorpdfstring{test\+\_\+suite\+\_\+to\+\_\+run\+\_\+count()}{test\_suite\_to\_run\_count()}} +{\footnotesize\ttfamily int testing\+::\+Unit\+Test\+::test\+\_\+suite\+\_\+to\+\_\+run\+\_\+count (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const} + +\mbox{\Hypertarget{classtesting_1_1_unit_test_a461f46b2976f135d2a65e8d3def746e9}\label{classtesting_1_1_unit_test_a461f46b2976f135d2a65e8d3def746e9}} +\index{testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}!test\+\_\+to\+\_\+run\+\_\+count@{test\+\_\+to\+\_\+run\+\_\+count}} +\index{test\+\_\+to\+\_\+run\+\_\+count@{test\+\_\+to\+\_\+run\+\_\+count}!testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}} +\subsubsection{\texorpdfstring{test\+\_\+to\+\_\+run\+\_\+count()}{test\_to\_run\_count()}} +{\footnotesize\ttfamily int testing\+::\+Unit\+Test\+::test\+\_\+to\+\_\+run\+\_\+count (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const} + +\mbox{\Hypertarget{classtesting_1_1_unit_test_a93fc8f4eebc3212d06468ad216830ced}\label{classtesting_1_1_unit_test_a93fc8f4eebc3212d06468ad216830ced}} +\index{testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}!total\+\_\+test\+\_\+case\+\_\+count@{total\+\_\+test\+\_\+case\+\_\+count}} +\index{total\+\_\+test\+\_\+case\+\_\+count@{total\+\_\+test\+\_\+case\+\_\+count}!testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}} +\subsubsection{\texorpdfstring{total\+\_\+test\+\_\+case\+\_\+count()}{total\_test\_case\_count()}} +{\footnotesize\ttfamily int testing\+::\+Unit\+Test\+::total\+\_\+test\+\_\+case\+\_\+count (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const} + +\mbox{\Hypertarget{classtesting_1_1_unit_test_af6e02fcf76fd7247687f4e8af6e7ef41}\label{classtesting_1_1_unit_test_af6e02fcf76fd7247687f4e8af6e7ef41}} +\index{testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}!total\+\_\+test\+\_\+count@{total\+\_\+test\+\_\+count}} +\index{total\+\_\+test\+\_\+count@{total\+\_\+test\+\_\+count}!testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}} +\subsubsection{\texorpdfstring{total\+\_\+test\+\_\+count()}{total\_test\_count()}} +{\footnotesize\ttfamily int testing\+::\+Unit\+Test\+::total\+\_\+test\+\_\+count (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const} + +\mbox{\Hypertarget{classtesting_1_1_unit_test_af8ed6d43a95405a860fdd898bf0c1a87}\label{classtesting_1_1_unit_test_af8ed6d43a95405a860fdd898bf0c1a87}} +\index{testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}!total\+\_\+test\+\_\+suite\+\_\+count@{total\+\_\+test\+\_\+suite\+\_\+count}} +\index{total\+\_\+test\+\_\+suite\+\_\+count@{total\+\_\+test\+\_\+suite\+\_\+count}!testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}} +\subsubsection{\texorpdfstring{total\+\_\+test\+\_\+suite\+\_\+count()}{total\_test\_suite\_count()}} +{\footnotesize\ttfamily int testing\+::\+Unit\+Test\+::total\+\_\+test\+\_\+suite\+\_\+count (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const} + + + +\subsection{Friends And Related Function Documentation} +\mbox{\Hypertarget{classtesting_1_1_unit_test_a5ec26e4c31220ff8e769cc09689a4d6d}\label{classtesting_1_1_unit_test_a5ec26e4c31220ff8e769cc09689a4d6d}} +\index{testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}!Add\+Global\+Test\+Environment@{Add\+Global\+Test\+Environment}} +\index{Add\+Global\+Test\+Environment@{Add\+Global\+Test\+Environment}!testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}} +\subsubsection{\texorpdfstring{Add\+Global\+Test\+Environment}{AddGlobalTestEnvironment}} +{\footnotesize\ttfamily \mbox{\hyperlink{classtesting_1_1_environment}{Environment}}$\ast$ Add\+Global\+Test\+Environment (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classtesting_1_1_environment}{Environment}} $\ast$}]{env }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [friend]}} + + + +Definition at line 16067 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_unit_test_a183151aa061362c87572e743fe233db1}\label{classtesting_1_1_unit_test_a183151aa061362c87572e743fe233db1}} +\index{testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}!internal\+::\+Assert\+Helper@{internal\+::\+Assert\+Helper}} +\index{internal\+::\+Assert\+Helper@{internal\+::\+Assert\+Helper}!testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}} +\subsubsection{\texorpdfstring{internal\+::\+Assert\+Helper}{internal::AssertHelper}} +{\footnotesize\ttfamily friend class \mbox{\hyperlink{classtesting_1_1internal_1_1_assert_helper}{internal\+::\+Assert\+Helper}}\hspace{0.3cm}{\ttfamily [friend]}} + + + +Definition at line 16011 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_unit_test_a56e56be7066957d612e53b5c60f6ac08}\label{classtesting_1_1_unit_test_a56e56be7066957d612e53b5c60f6ac08}} +\index{testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}!internal\+::\+Get\+Unit\+Test\+Impl@{internal\+::\+Get\+Unit\+Test\+Impl}} +\index{internal\+::\+Get\+Unit\+Test\+Impl@{internal\+::\+Get\+Unit\+Test\+Impl}!testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}} +\subsubsection{\texorpdfstring{internal\+::\+Get\+Unit\+Test\+Impl}{internal::GetUnitTestImpl}} +{\footnotesize\ttfamily internal\+::\+Unit\+Test\+Impl$\ast$ internal\+::\+Get\+Unit\+Test\+Impl (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [friend]}} + +\mbox{\Hypertarget{classtesting_1_1_unit_test_a73f5a158c13793b90c80d854c9a75120}\label{classtesting_1_1_unit_test_a73f5a158c13793b90c80d854c9a75120}} +\index{testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}!internal\+::\+Report\+Failure\+In\+Unknown\+Location@{internal\+::\+Report\+Failure\+In\+Unknown\+Location}} +\index{internal\+::\+Report\+Failure\+In\+Unknown\+Location@{internal\+::\+Report\+Failure\+In\+Unknown\+Location}!testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}} +\subsubsection{\texorpdfstring{internal\+::\+Report\+Failure\+In\+Unknown\+Location}{internal::ReportFailureInUnknownLocation}} +{\footnotesize\ttfamily void internal\+::\+Report\+Failure\+In\+Unknown\+Location (\begin{DoxyParamCaption}\item[{Test\+Part\+Result\+::\+Type}]{result\+\_\+type, }\item[{const std\+::string \&}]{message }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [friend]}} + +\mbox{\Hypertarget{classtesting_1_1_unit_test_adc037d188dab349a94868991955c9cd4}\label{classtesting_1_1_unit_test_adc037d188dab349a94868991955c9cd4}} +\index{testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}!internal\+::\+Streaming\+Listener\+Test@{internal\+::\+Streaming\+Listener\+Test}} +\index{internal\+::\+Streaming\+Listener\+Test@{internal\+::\+Streaming\+Listener\+Test}!testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}} +\subsubsection{\texorpdfstring{internal\+::\+Streaming\+Listener\+Test}{internal::StreamingListenerTest}} +{\footnotesize\ttfamily friend class internal\+::\+Streaming\+Listener\+Test\hspace{0.3cm}{\ttfamily [friend]}} + + + +Definition at line 16012 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_unit_test_ae970f89a9f477a349fe5778be85ef42e}\label{classtesting_1_1_unit_test_ae970f89a9f477a349fe5778be85ef42e}} +\index{testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}!internal\+::\+Unit\+Test\+Record\+Property\+Test\+Helper@{internal\+::\+Unit\+Test\+Record\+Property\+Test\+Helper}} +\index{internal\+::\+Unit\+Test\+Record\+Property\+Test\+Helper@{internal\+::\+Unit\+Test\+Record\+Property\+Test\+Helper}!testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}} +\subsubsection{\texorpdfstring{internal\+::\+Unit\+Test\+Record\+Property\+Test\+Helper}{internal::UnitTestRecordPropertyTestHelper}} +{\footnotesize\ttfamily friend class internal\+::\+Unit\+Test\+Record\+Property\+Test\+Helper\hspace{0.3cm}{\ttfamily [friend]}} + + + +Definition at line 16013 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_unit_test_ada54bdd5bdc24f39b9ca16807326654a}\label{classtesting_1_1_unit_test_ada54bdd5bdc24f39b9ca16807326654a}} +\index{testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}!Scoped\+Trace@{Scoped\+Trace}} +\index{Scoped\+Trace@{Scoped\+Trace}!testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}} +\subsubsection{\texorpdfstring{Scoped\+Trace}{ScopedTrace}} +{\footnotesize\ttfamily friend class \mbox{\hyperlink{classtesting_1_1_scoped_trace}{Scoped\+Trace}}\hspace{0.3cm}{\ttfamily [friend]}} + + + +Definition at line 16009 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1_unit_test_a5b78b1c2e1fa07ffed92da365593eaa4}\label{classtesting_1_1_unit_test_a5b78b1c2e1fa07ffed92da365593eaa4}} +\index{testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}!Test@{Test}} +\index{Test@{Test}!testing\+::\+Unit\+Test@{testing\+::\+Unit\+Test}} +\subsubsection{\texorpdfstring{Test}{Test}} +{\footnotesize\ttfamily friend class \mbox{\hyperlink{classtesting_1_1_test}{Test}}\hspace{0.3cm}{\ttfamily [friend]}} + + + +Definition at line 16010 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1_with_param_interface.eps b/doc/latex/classtesting_1_1_with_param_interface.eps new file mode 100644 index 0000000..12efa8f --- /dev/null +++ b/doc/latex/classtesting_1_1_with_param_interface.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 197.044335 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.537500 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(testing::WithParamInterface< T >) cw +(testing::TestWithParam< T >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (testing::WithParamInterface< T >) 0.000000 1.000000 box + (testing::TestWithParam< T >) 0.000000 0.000000 box + +% ----- relations ----- + +solid +1 0.000000 0.250000 out +solid +0 0.000000 0.750000 in diff --git a/doc/latex/classtesting_1_1_with_param_interface.tex b/doc/latex/classtesting_1_1_with_param_interface.tex new file mode 100644 index 0000000..182b6dc --- /dev/null +++ b/doc/latex/classtesting_1_1_with_param_interface.tex @@ -0,0 +1,104 @@ +\hypertarget{classtesting_1_1_with_param_interface}{}\section{testing\+:\+:With\+Param\+Interface$<$ T $>$ Class Template Reference} +\label{classtesting_1_1_with_param_interface}\index{testing\+::\+With\+Param\+Interface$<$ T $>$@{testing\+::\+With\+Param\+Interface$<$ T $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +Inheritance diagram for testing\+:\+:With\+Param\+Interface$<$ T $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{classtesting_1_1_with_param_interface} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +typedef T \mbox{\hyperlink{classtesting_1_1_with_param_interface_a343febaaebf1f025bda484f841d4fec1}{Param\+Type}} +\end{DoxyCompactItemize} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +virtual \mbox{\hyperlink{classtesting_1_1_with_param_interface_a4e170bd42fa5e8ce48b80cee6bb52e26}{$\sim$\+With\+Param\+Interface}} () +\end{DoxyCompactItemize} +\subsection*{Static Public Member Functions} +\begin{DoxyCompactItemize} +\item +static const \mbox{\hyperlink{classtesting_1_1_with_param_interface_a343febaaebf1f025bda484f841d4fec1}{Param\+Type}} \& \mbox{\hyperlink{classtesting_1_1_with_param_interface_a1078d4493d7aa4d3e50d1d6c661bee4d}{Get\+Param}} () +\end{DoxyCompactItemize} +\subsection*{Friends} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$class Test\+Class $>$ }\\class \mbox{\hyperlink{classtesting_1_1_with_param_interface_a7543eb7df89f00fff517dba24bc11dd5}{internal\+::\+Parameterized\+Test\+Factory}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T$>$\newline +class testing\+::\+With\+Param\+Interface$<$ T $>$} + + + +Definition at line 16470 of file gtest.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{classtesting_1_1_with_param_interface_a343febaaebf1f025bda484f841d4fec1}\label{classtesting_1_1_with_param_interface_a343febaaebf1f025bda484f841d4fec1}} +\index{testing\+::\+With\+Param\+Interface@{testing\+::\+With\+Param\+Interface}!Param\+Type@{Param\+Type}} +\index{Param\+Type@{Param\+Type}!testing\+::\+With\+Param\+Interface@{testing\+::\+With\+Param\+Interface}} +\subsubsection{\texorpdfstring{Param\+Type}{ParamType}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +typedef T \mbox{\hyperlink{classtesting_1_1_with_param_interface}{testing\+::\+With\+Param\+Interface}}$<$ T $>$\+::\mbox{\hyperlink{classtesting_1_1_with_param_interface_a343febaaebf1f025bda484f841d4fec1}{Param\+Type}}} + + + +Definition at line 16472 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtesting_1_1_with_param_interface_a4e170bd42fa5e8ce48b80cee6bb52e26}\label{classtesting_1_1_with_param_interface_a4e170bd42fa5e8ce48b80cee6bb52e26}} +\index{testing\+::\+With\+Param\+Interface@{testing\+::\+With\+Param\+Interface}!````~With\+Param\+Interface@{$\sim$\+With\+Param\+Interface}} +\index{````~With\+Param\+Interface@{$\sim$\+With\+Param\+Interface}!testing\+::\+With\+Param\+Interface@{testing\+::\+With\+Param\+Interface}} +\subsubsection{\texorpdfstring{$\sim$\+With\+Param\+Interface()}{~WithParamInterface()}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +virtual \mbox{\hyperlink{classtesting_1_1_with_param_interface}{testing\+::\+With\+Param\+Interface}}$<$ T $>$\+::$\sim$\mbox{\hyperlink{classtesting_1_1_with_param_interface}{With\+Param\+Interface}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}} + + + +Definition at line 16473 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1_with_param_interface_a1078d4493d7aa4d3e50d1d6c661bee4d}\label{classtesting_1_1_with_param_interface_a1078d4493d7aa4d3e50d1d6c661bee4d}} +\index{testing\+::\+With\+Param\+Interface@{testing\+::\+With\+Param\+Interface}!Get\+Param@{Get\+Param}} +\index{Get\+Param@{Get\+Param}!testing\+::\+With\+Param\+Interface@{testing\+::\+With\+Param\+Interface}} +\subsubsection{\texorpdfstring{Get\+Param()}{GetParam()}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +static const \mbox{\hyperlink{classtesting_1_1_with_param_interface_a343febaaebf1f025bda484f841d4fec1}{Param\+Type}}\& \mbox{\hyperlink{classtesting_1_1_with_param_interface}{testing\+::\+With\+Param\+Interface}}$<$ T $>$\+::Get\+Param (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}} + + + +Definition at line 16477 of file gtest.\+h. + + + +\subsection{Friends And Related Function Documentation} +\mbox{\Hypertarget{classtesting_1_1_with_param_interface_a7543eb7df89f00fff517dba24bc11dd5}\label{classtesting_1_1_with_param_interface_a7543eb7df89f00fff517dba24bc11dd5}} +\index{testing\+::\+With\+Param\+Interface@{testing\+::\+With\+Param\+Interface}!internal\+::\+Parameterized\+Test\+Factory@{internal\+::\+Parameterized\+Test\+Factory}} +\index{internal\+::\+Parameterized\+Test\+Factory@{internal\+::\+Parameterized\+Test\+Factory}!testing\+::\+With\+Param\+Interface@{testing\+::\+With\+Param\+Interface}} +\subsubsection{\texorpdfstring{internal\+::\+Parameterized\+Test\+Factory}{internal::ParameterizedTestFactory}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +template$<$class Test\+Class $>$ \\ +friend class \mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_factory}{internal\+::\+Parameterized\+Test\+Factory}}\hspace{0.3cm}{\ttfamily [friend]}} + + + +Definition at line 16495 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal2_1_1_type_without_formatter.tex b/doc/latex/classtesting_1_1internal2_1_1_type_without_formatter.tex new file mode 100644 index 0000000..0706177 --- /dev/null +++ b/doc/latex/classtesting_1_1internal2_1_1_type_without_formatter.tex @@ -0,0 +1,40 @@ +\hypertarget{classtesting_1_1internal2_1_1_type_without_formatter}{}\section{testing\+:\+:internal2\+:\+:Type\+Without\+Formatter$<$ T, k\+Type\+Kind $>$ Class Template Reference} +\label{classtesting_1_1internal2_1_1_type_without_formatter}\index{testing\+::internal2\+::\+Type\+Without\+Formatter$<$ T, k\+Type\+Kind $>$@{testing\+::internal2\+::\+Type\+Without\+Formatter$<$ T, k\+Type\+Kind $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Static Public Member Functions} +\begin{DoxyCompactItemize} +\item +static void \mbox{\hyperlink{classtesting_1_1internal2_1_1_type_without_formatter_a6651f6f7be2c0f899729eeb6038f76d3}{Print\+Value}} (const T \&value, \+::std\+::ostream $\ast$os) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T, Type\+Kind k\+Type\+Kind$>$\newline +class testing\+::internal2\+::\+Type\+Without\+Formatter$<$ T, k\+Type\+Kind $>$} + + + +Definition at line 8180 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal2_1_1_type_without_formatter_a6651f6f7be2c0f899729eeb6038f76d3}\label{classtesting_1_1internal2_1_1_type_without_formatter_a6651f6f7be2c0f899729eeb6038f76d3}} +\index{testing\+::internal2\+::\+Type\+Without\+Formatter@{testing\+::internal2\+::\+Type\+Without\+Formatter}!Print\+Value@{Print\+Value}} +\index{Print\+Value@{Print\+Value}!testing\+::internal2\+::\+Type\+Without\+Formatter@{testing\+::internal2\+::\+Type\+Without\+Formatter}} +\subsubsection{\texorpdfstring{Print\+Value()}{PrintValue()}} +{\footnotesize\ttfamily template$<$typename T , Type\+Kind k\+Type\+Kind$>$ \\ +static void \mbox{\hyperlink{classtesting_1_1internal2_1_1_type_without_formatter}{testing\+::internal2\+::\+Type\+Without\+Formatter}}$<$ T, k\+Type\+Kind $>$\+::Print\+Value (\begin{DoxyParamCaption}\item[{const T \&}]{value, }\item[{\+::std\+::ostream $\ast$}]{os }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}} + + + +Definition at line 8183 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal2_1_1_type_without_formatter_3_01_t_00_01k_convertible_to_integer_01_4.tex b/doc/latex/classtesting_1_1internal2_1_1_type_without_formatter_3_01_t_00_01k_convertible_to_integer_01_4.tex new file mode 100644 index 0000000..a99f638 --- /dev/null +++ b/doc/latex/classtesting_1_1internal2_1_1_type_without_formatter_3_01_t_00_01k_convertible_to_integer_01_4.tex @@ -0,0 +1,40 @@ +\hypertarget{classtesting_1_1internal2_1_1_type_without_formatter_3_01_t_00_01k_convertible_to_integer_01_4}{}\section{testing\+:\+:internal2\+:\+:Type\+Without\+Formatter$<$ T, k\+Convertible\+To\+Integer $>$ Class Template Reference} +\label{classtesting_1_1internal2_1_1_type_without_formatter_3_01_t_00_01k_convertible_to_integer_01_4}\index{testing\+::internal2\+::\+Type\+Without\+Formatter$<$ T, k\+Convertible\+To\+Integer $>$@{testing\+::internal2\+::\+Type\+Without\+Formatter$<$ T, k\+Convertible\+To\+Integer $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Static Public Member Functions} +\begin{DoxyCompactItemize} +\item +static void \mbox{\hyperlink{classtesting_1_1internal2_1_1_type_without_formatter_3_01_t_00_01k_convertible_to_integer_01_4_ab27a411afb608e730a57d232b3f4f486}{Print\+Value}} (const T \&value, \+::std\+::ostream $\ast$os) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T$>$\newline +class testing\+::internal2\+::\+Type\+Without\+Formatter$<$ T, k\+Convertible\+To\+Integer $>$} + + + +Definition at line 8208 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal2_1_1_type_without_formatter_3_01_t_00_01k_convertible_to_integer_01_4_ab27a411afb608e730a57d232b3f4f486}\label{classtesting_1_1internal2_1_1_type_without_formatter_3_01_t_00_01k_convertible_to_integer_01_4_ab27a411afb608e730a57d232b3f4f486}} +\index{testing\+::internal2\+::\+Type\+Without\+Formatter$<$ T, k\+Convertible\+To\+Integer $>$@{testing\+::internal2\+::\+Type\+Without\+Formatter$<$ T, k\+Convertible\+To\+Integer $>$}!Print\+Value@{Print\+Value}} +\index{Print\+Value@{Print\+Value}!testing\+::internal2\+::\+Type\+Without\+Formatter$<$ T, k\+Convertible\+To\+Integer $>$@{testing\+::internal2\+::\+Type\+Without\+Formatter$<$ T, k\+Convertible\+To\+Integer $>$}} +\subsubsection{\texorpdfstring{Print\+Value()}{PrintValue()}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +static void \mbox{\hyperlink{classtesting_1_1internal2_1_1_type_without_formatter}{testing\+::internal2\+::\+Type\+Without\+Formatter}}$<$ T, \mbox{\hyperlink{namespacetesting_1_1internal2_aeb8161b0b3ee503347b0662d7028fd57a9bdcf3f1548f498b2b7f097306ea0224}{k\+Convertible\+To\+Integer}} $>$\+::Print\+Value (\begin{DoxyParamCaption}\item[{const T \&}]{value, }\item[{\+::std\+::ostream $\ast$}]{os }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}} + + + +Definition at line 8217 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal2_1_1_type_without_formatter_3_01_t_00_01k_protobuf_01_4.tex b/doc/latex/classtesting_1_1internal2_1_1_type_without_formatter_3_01_t_00_01k_protobuf_01_4.tex new file mode 100644 index 0000000..22dd101 --- /dev/null +++ b/doc/latex/classtesting_1_1internal2_1_1_type_without_formatter_3_01_t_00_01k_protobuf_01_4.tex @@ -0,0 +1,40 @@ +\hypertarget{classtesting_1_1internal2_1_1_type_without_formatter_3_01_t_00_01k_protobuf_01_4}{}\section{testing\+:\+:internal2\+:\+:Type\+Without\+Formatter$<$ T, k\+Protobuf $>$ Class Template Reference} +\label{classtesting_1_1internal2_1_1_type_without_formatter_3_01_t_00_01k_protobuf_01_4}\index{testing\+::internal2\+::\+Type\+Without\+Formatter$<$ T, k\+Protobuf $>$@{testing\+::internal2\+::\+Type\+Without\+Formatter$<$ T, k\+Protobuf $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Static Public Member Functions} +\begin{DoxyCompactItemize} +\item +static void \mbox{\hyperlink{classtesting_1_1internal2_1_1_type_without_formatter_3_01_t_00_01k_protobuf_01_4_ac96fb775dc776f02da9a671ea0e04599}{Print\+Value}} (const T \&value, \+::std\+::ostream $\ast$os) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T$>$\newline +class testing\+::internal2\+::\+Type\+Without\+Formatter$<$ T, k\+Protobuf $>$} + + + +Definition at line 8196 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal2_1_1_type_without_formatter_3_01_t_00_01k_protobuf_01_4_ac96fb775dc776f02da9a671ea0e04599}\label{classtesting_1_1internal2_1_1_type_without_formatter_3_01_t_00_01k_protobuf_01_4_ac96fb775dc776f02da9a671ea0e04599}} +\index{testing\+::internal2\+::\+Type\+Without\+Formatter$<$ T, k\+Protobuf $>$@{testing\+::internal2\+::\+Type\+Without\+Formatter$<$ T, k\+Protobuf $>$}!Print\+Value@{Print\+Value}} +\index{Print\+Value@{Print\+Value}!testing\+::internal2\+::\+Type\+Without\+Formatter$<$ T, k\+Protobuf $>$@{testing\+::internal2\+::\+Type\+Without\+Formatter$<$ T, k\+Protobuf $>$}} +\subsubsection{\texorpdfstring{Print\+Value()}{PrintValue()}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +static void \mbox{\hyperlink{classtesting_1_1internal2_1_1_type_without_formatter}{testing\+::internal2\+::\+Type\+Without\+Formatter}}$<$ T, \mbox{\hyperlink{namespacetesting_1_1internal2_aeb8161b0b3ee503347b0662d7028fd57a14aaf98a2547ecf43eef0868d54b1383}{k\+Protobuf}} $>$\+::Print\+Value (\begin{DoxyParamCaption}\item[{const T \&}]{value, }\item[{\+::std\+::ostream $\ast$}]{os }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}} + + + +Definition at line 8198 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_assert_helper.tex b/doc/latex/classtesting_1_1internal_1_1_assert_helper.tex new file mode 100644 index 0000000..beb193f --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_assert_helper.tex @@ -0,0 +1,51 @@ +\hypertarget{classtesting_1_1internal_1_1_assert_helper}{}\section{testing\+:\+:internal\+:\+:Assert\+Helper Class Reference} +\label{classtesting_1_1internal_1_1_assert_helper}\index{testing\+::internal\+::\+Assert\+Helper@{testing\+::internal\+::\+Assert\+Helper}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_assert_helper_ac2c9334518fd4087189b4505567a3c90}{Assert\+Helper}} (Test\+Part\+Result\+::\+Type type, const char $\ast$file, int line, const char $\ast$message) +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_assert_helper_a51c640785d4ed4a0155cc9aa857d8931}{$\sim$\+Assert\+Helper}} () +\item +void \mbox{\hyperlink{classtesting_1_1internal_1_1_assert_helper_a97bf22d786131ab7baa86b97a27aeb4d}{operator=}} (const \mbox{\hyperlink{classtesting_1_1_message}{Message}} \&message) const +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} + + +Definition at line 16388 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_assert_helper_ac2c9334518fd4087189b4505567a3c90}\label{classtesting_1_1internal_1_1_assert_helper_ac2c9334518fd4087189b4505567a3c90}} +\index{testing\+::internal\+::\+Assert\+Helper@{testing\+::internal\+::\+Assert\+Helper}!Assert\+Helper@{Assert\+Helper}} +\index{Assert\+Helper@{Assert\+Helper}!testing\+::internal\+::\+Assert\+Helper@{testing\+::internal\+::\+Assert\+Helper}} +\subsubsection{\texorpdfstring{Assert\+Helper()}{AssertHelper()}} +{\footnotesize\ttfamily testing\+::internal\+::\+Assert\+Helper\+::\+Assert\+Helper (\begin{DoxyParamCaption}\item[{Test\+Part\+Result\+::\+Type}]{type, }\item[{const char $\ast$}]{file, }\item[{int}]{line, }\item[{const char $\ast$}]{message }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_assert_helper_a51c640785d4ed4a0155cc9aa857d8931}\label{classtesting_1_1internal_1_1_assert_helper_a51c640785d4ed4a0155cc9aa857d8931}} +\index{testing\+::internal\+::\+Assert\+Helper@{testing\+::internal\+::\+Assert\+Helper}!````~Assert\+Helper@{$\sim$\+Assert\+Helper}} +\index{````~Assert\+Helper@{$\sim$\+Assert\+Helper}!testing\+::internal\+::\+Assert\+Helper@{testing\+::internal\+::\+Assert\+Helper}} +\subsubsection{\texorpdfstring{$\sim$\+Assert\+Helper()}{~AssertHelper()}} +{\footnotesize\ttfamily testing\+::internal\+::\+Assert\+Helper\+::$\sim$\+Assert\+Helper (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_assert_helper_a97bf22d786131ab7baa86b97a27aeb4d}\label{classtesting_1_1internal_1_1_assert_helper_a97bf22d786131ab7baa86b97a27aeb4d}} +\index{testing\+::internal\+::\+Assert\+Helper@{testing\+::internal\+::\+Assert\+Helper}!operator=@{operator=}} +\index{operator=@{operator=}!testing\+::internal\+::\+Assert\+Helper@{testing\+::internal\+::\+Assert\+Helper}} +\subsubsection{\texorpdfstring{operator=()}{operator=()}} +{\footnotesize\ttfamily void testing\+::internal\+::\+Assert\+Helper\+::operator= (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classtesting_1_1_message}{Message}} \&}]{message }\end{DoxyParamCaption}) const} + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_captured_stream.tex b/doc/latex/classtesting_1_1internal_1_1_captured_stream.tex new file mode 100644 index 0000000..6b3e08b --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_captured_stream.tex @@ -0,0 +1,59 @@ +\hypertarget{classtesting_1_1internal_1_1_captured_stream}{}\section{testing\+:\+:internal\+:\+:Captured\+Stream Class Reference} +\label{classtesting_1_1internal_1_1_captured_stream}\index{testing\+::internal\+::\+Captured\+Stream@{testing\+::internal\+::\+Captured\+Stream}} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_captured_stream_a4b05e68491831448c5c575a25146e53d}{Captured\+Stream}} (int fd) +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_captured_stream_af215c7a9326cb5ca61e6b7ca8231dcf1}{$\sim$\+Captured\+Stream}} () +\item +std\+::string \mbox{\hyperlink{classtesting_1_1internal_1_1_captured_stream_a48f400f12afb642387f91a5c20f7a528}{Get\+Captured\+String}} () +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} + + +Definition at line 10674 of file gtest-\/all.\+cc. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_captured_stream_a4b05e68491831448c5c575a25146e53d}\label{classtesting_1_1internal_1_1_captured_stream_a4b05e68491831448c5c575a25146e53d}} +\index{testing\+::internal\+::\+Captured\+Stream@{testing\+::internal\+::\+Captured\+Stream}!Captured\+Stream@{Captured\+Stream}} +\index{Captured\+Stream@{Captured\+Stream}!testing\+::internal\+::\+Captured\+Stream@{testing\+::internal\+::\+Captured\+Stream}} +\subsubsection{\texorpdfstring{Captured\+Stream()}{CapturedStream()}} +{\footnotesize\ttfamily testing\+::internal\+::\+Captured\+Stream\+::\+Captured\+Stream (\begin{DoxyParamCaption}\item[{int}]{fd }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [explicit]}} + + + +Definition at line 10677 of file gtest-\/all.\+cc. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_captured_stream_af215c7a9326cb5ca61e6b7ca8231dcf1}\label{classtesting_1_1internal_1_1_captured_stream_af215c7a9326cb5ca61e6b7ca8231dcf1}} +\index{testing\+::internal\+::\+Captured\+Stream@{testing\+::internal\+::\+Captured\+Stream}!````~Captured\+Stream@{$\sim$\+Captured\+Stream}} +\index{````~Captured\+Stream@{$\sim$\+Captured\+Stream}!testing\+::internal\+::\+Captured\+Stream@{testing\+::internal\+::\+Captured\+Stream}} +\subsubsection{\texorpdfstring{$\sim$\+Captured\+Stream()}{~CapturedStream()}} +{\footnotesize\ttfamily testing\+::internal\+::\+Captured\+Stream\+::$\sim$\+Captured\+Stream (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 10725 of file gtest-\/all.\+cc. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_captured_stream_a48f400f12afb642387f91a5c20f7a528}\label{classtesting_1_1internal_1_1_captured_stream_a48f400f12afb642387f91a5c20f7a528}} +\index{testing\+::internal\+::\+Captured\+Stream@{testing\+::internal\+::\+Captured\+Stream}!Get\+Captured\+String@{Get\+Captured\+String}} +\index{Get\+Captured\+String@{Get\+Captured\+String}!testing\+::internal\+::\+Captured\+Stream@{testing\+::internal\+::\+Captured\+Stream}} +\subsubsection{\texorpdfstring{Get\+Captured\+String()}{GetCapturedString()}} +{\footnotesize\ttfamily std\+::string testing\+::internal\+::\+Captured\+Stream\+::\+Get\+Captured\+String (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 10729 of file gtest-\/all.\+cc. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest-all_8cc}{gtest-\/all.\+cc}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator10.eps b/doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator10.eps new file mode 100644 index 0000000..8faeb61 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator10.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 68.493151 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 7.300000 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(testing::internal::CartesianProductGenerator10< T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >) cw +(testing::internal::ParamGeneratorInterface< ::std::tuple< T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 > >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (testing::internal::CartesianProductGenerator10< T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 >) 0.000000 0.000000 box + (testing::internal::ParamGeneratorInterface< ::std::tuple< T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 > >) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator10.tex b/doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator10.tex new file mode 100644 index 0000000..2acfad1 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator10.tex @@ -0,0 +1,115 @@ +\hypertarget{classtesting_1_1internal_1_1_cartesian_product_generator10}{}\section{testing\+:\+:internal\+:\+:Cartesian\+Product\+Generator10$<$ T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 $>$ Class Template Reference} +\label{classtesting_1_1internal_1_1_cartesian_product_generator10}\index{testing\+::internal\+::\+Cartesian\+Product\+Generator10$<$ T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 $>$@{testing\+::internal\+::\+Cartesian\+Product\+Generator10$<$ T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +Inheritance diagram for testing\+:\+:internal\+:\+:Cartesian\+Product\+Generator10$<$ T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=1.917808cm]{classtesting_1_1internal_1_1_cartesian_product_generator10} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +typedef \+::std\+::tuple$<$ T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 $>$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator10_ac9f50e9b6fff8dad968c5b98989752f9}{Param\+Type}} +\end{DoxyCompactItemize} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator10_a53d945670e910c0baaf14f3d25f1bbb6}{Cartesian\+Product\+Generator10}} (const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T1 $>$ \&g1, const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T2 $>$ \&g2, const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T3 $>$ \&g3, const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T4 $>$ \&g4, const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T5 $>$ \&g5, const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T6 $>$ \&g6, const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T7 $>$ \&g7, const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T8 $>$ \&g8, const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T9 $>$ \&g9, const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T10 $>$ \&g10) +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator10_a2bee6d271df046f7660c85e2b2d305a5}{$\sim$\+Cartesian\+Product\+Generator10}} () override +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{Param\+Iterator\+Interface}}$<$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator10_ac9f50e9b6fff8dad968c5b98989752f9}{Param\+Type}} $>$ $\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator10_a23b2a79fc2fd0224fd31c519520cb945}{Begin}} () const override +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{Param\+Iterator\+Interface}}$<$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator10_ac9f50e9b6fff8dad968c5b98989752f9}{Param\+Type}} $>$ $\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator10_a373c054dc7b60a9ab6236c327cac4e23}{End}} () const override +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9, typename T10$>$\newline +class testing\+::internal\+::\+Cartesian\+Product\+Generator10$<$ T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 $>$} + + + +Definition at line 12780 of file gtest.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_generator10_ac9f50e9b6fff8dad968c5b98989752f9}\label{classtesting_1_1internal_1_1_cartesian_product_generator10_ac9f50e9b6fff8dad968c5b98989752f9}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Generator10@{testing\+::internal\+::\+Cartesian\+Product\+Generator10}!Param\+Type@{Param\+Type}} +\index{Param\+Type@{Param\+Type}!testing\+::internal\+::\+Cartesian\+Product\+Generator10@{testing\+::internal\+::\+Cartesian\+Product\+Generator10}} +\subsubsection{\texorpdfstring{Param\+Type}{ParamType}} +{\footnotesize\ttfamily template$<$typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 $>$ \\ +typedef \+::std\+::tuple$<$T1, T2, T3, T4, T5, T6, T7, T8, T9, T10$>$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator10}{testing\+::internal\+::\+Cartesian\+Product\+Generator10}}$<$ T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator10_ac9f50e9b6fff8dad968c5b98989752f9}{Param\+Type}}} + + + +Definition at line 12784 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_generator10_a53d945670e910c0baaf14f3d25f1bbb6}\label{classtesting_1_1internal_1_1_cartesian_product_generator10_a53d945670e910c0baaf14f3d25f1bbb6}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Generator10@{testing\+::internal\+::\+Cartesian\+Product\+Generator10}!Cartesian\+Product\+Generator10@{Cartesian\+Product\+Generator10}} +\index{Cartesian\+Product\+Generator10@{Cartesian\+Product\+Generator10}!testing\+::internal\+::\+Cartesian\+Product\+Generator10@{testing\+::internal\+::\+Cartesian\+Product\+Generator10}} +\subsubsection{\texorpdfstring{Cartesian\+Product\+Generator10()}{CartesianProductGenerator10()}} +{\footnotesize\ttfamily template$<$typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator10}{testing\+::internal\+::\+Cartesian\+Product\+Generator10}}$<$ T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator10}{Cartesian\+Product\+Generator10}} (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T1 $>$ \&}]{g1, }\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T2 $>$ \&}]{g2, }\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T3 $>$ \&}]{g3, }\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T4 $>$ \&}]{g4, }\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T5 $>$ \&}]{g5, }\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T6 $>$ \&}]{g6, }\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T7 $>$ \&}]{g7, }\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T8 $>$ \&}]{g8, }\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T9 $>$ \&}]{g9, }\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T10 $>$ \&}]{g10 }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 12786 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_generator10_a2bee6d271df046f7660c85e2b2d305a5}\label{classtesting_1_1internal_1_1_cartesian_product_generator10_a2bee6d271df046f7660c85e2b2d305a5}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Generator10@{testing\+::internal\+::\+Cartesian\+Product\+Generator10}!````~Cartesian\+Product\+Generator10@{$\sim$\+Cartesian\+Product\+Generator10}} +\index{````~Cartesian\+Product\+Generator10@{$\sim$\+Cartesian\+Product\+Generator10}!testing\+::internal\+::\+Cartesian\+Product\+Generator10@{testing\+::internal\+::\+Cartesian\+Product\+Generator10}} +\subsubsection{\texorpdfstring{$\sim$\+Cartesian\+Product\+Generator10()}{~CartesianProductGenerator10()}} +{\footnotesize\ttfamily template$<$typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator10}{testing\+::internal\+::\+Cartesian\+Product\+Generator10}}$<$ T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 $>$\+::$\sim$\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator10}{Cartesian\+Product\+Generator10}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}} + + + +Definition at line 12794 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_generator10_a23b2a79fc2fd0224fd31c519520cb945}\label{classtesting_1_1internal_1_1_cartesian_product_generator10_a23b2a79fc2fd0224fd31c519520cb945}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Generator10@{testing\+::internal\+::\+Cartesian\+Product\+Generator10}!Begin@{Begin}} +\index{Begin@{Begin}!testing\+::internal\+::\+Cartesian\+Product\+Generator10@{testing\+::internal\+::\+Cartesian\+Product\+Generator10}} +\subsubsection{\texorpdfstring{Begin()}{Begin()}} +{\footnotesize\ttfamily template$<$typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{Param\+Iterator\+Interface}}$<$\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator10_ac9f50e9b6fff8dad968c5b98989752f9}{Param\+Type}}$>$$\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator10}{testing\+::internal\+::\+Cartesian\+Product\+Generator10}}$<$ T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 $>$\+::Begin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\ttfamily [virtual]}} + + + +Implements \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator_interface_ae1de83b16fe9a53c67778a026c6a9569}{testing\+::internal\+::\+Param\+Generator\+Interface$<$ \+::std\+::tuple$<$ T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 $>$ $>$}}. + + + +Definition at line 12796 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_generator10_a373c054dc7b60a9ab6236c327cac4e23}\label{classtesting_1_1internal_1_1_cartesian_product_generator10_a373c054dc7b60a9ab6236c327cac4e23}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Generator10@{testing\+::internal\+::\+Cartesian\+Product\+Generator10}!End@{End}} +\index{End@{End}!testing\+::internal\+::\+Cartesian\+Product\+Generator10@{testing\+::internal\+::\+Cartesian\+Product\+Generator10}} +\subsubsection{\texorpdfstring{End()}{End()}} +{\footnotesize\ttfamily template$<$typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{Param\+Iterator\+Interface}}$<$\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator10_ac9f50e9b6fff8dad968c5b98989752f9}{Param\+Type}}$>$$\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator10}{testing\+::internal\+::\+Cartesian\+Product\+Generator10}}$<$ T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 $>$\+::End (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\ttfamily [virtual]}} + + + +Implements \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator_interface_afa7211b74990e11d3fc7ad4e7113da4f}{testing\+::internal\+::\+Param\+Generator\+Interface$<$ \+::std\+::tuple$<$ T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 $>$ $>$}}. + + + +Definition at line 12801 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator2.eps b/doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator2.eps new file mode 100644 index 0000000..8914ecc --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator2.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 101.781170 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 4.912500 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(testing::internal::CartesianProductGenerator2< T1, T2 >) cw +(testing::internal::ParamGeneratorInterface< ::std::tuple< T1, T2 > >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (testing::internal::CartesianProductGenerator2< T1, T2 >) 0.000000 0.000000 box + (testing::internal::ParamGeneratorInterface< ::std::tuple< T1, T2 > >) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator2.tex b/doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator2.tex new file mode 100644 index 0000000..5235d98 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator2.tex @@ -0,0 +1,115 @@ +\hypertarget{classtesting_1_1internal_1_1_cartesian_product_generator2}{}\section{testing\+:\+:internal\+:\+:Cartesian\+Product\+Generator2$<$ T1, T2 $>$ Class Template Reference} +\label{classtesting_1_1internal_1_1_cartesian_product_generator2}\index{testing\+::internal\+::\+Cartesian\+Product\+Generator2$<$ T1, T2 $>$@{testing\+::internal\+::\+Cartesian\+Product\+Generator2$<$ T1, T2 $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +Inheritance diagram for testing\+:\+:internal\+:\+:Cartesian\+Product\+Generator2$<$ T1, T2 $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{classtesting_1_1internal_1_1_cartesian_product_generator2} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +typedef \+::std\+::tuple$<$ T1, T2 $>$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator2_a4dd5db877d076b52d44fb631e34cd47f}{Param\+Type}} +\end{DoxyCompactItemize} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator2_a971ef5a45783db277f5fae84eaef41a3}{Cartesian\+Product\+Generator2}} (const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T1 $>$ \&g1, const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T2 $>$ \&g2) +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator2_a4359f80cc1888d4a18d2e0a6865b920d}{$\sim$\+Cartesian\+Product\+Generator2}} () override +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{Param\+Iterator\+Interface}}$<$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator2_a4dd5db877d076b52d44fb631e34cd47f}{Param\+Type}} $>$ $\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator2_aa68e7d9334ba6318bc17ccb0669767fe}{Begin}} () const override +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{Param\+Iterator\+Interface}}$<$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator2_a4dd5db877d076b52d44fb631e34cd47f}{Param\+Type}} $>$ $\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator2_afb1a5fe2810721040689e2e8c85b8a42}{End}} () const override +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T1, typename T2$>$\newline +class testing\+::internal\+::\+Cartesian\+Product\+Generator2$<$ T1, T2 $>$} + + + +Definition at line 11365 of file gtest.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_generator2_a4dd5db877d076b52d44fb631e34cd47f}\label{classtesting_1_1internal_1_1_cartesian_product_generator2_a4dd5db877d076b52d44fb631e34cd47f}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Generator2@{testing\+::internal\+::\+Cartesian\+Product\+Generator2}!Param\+Type@{Param\+Type}} +\index{Param\+Type@{Param\+Type}!testing\+::internal\+::\+Cartesian\+Product\+Generator2@{testing\+::internal\+::\+Cartesian\+Product\+Generator2}} +\subsubsection{\texorpdfstring{Param\+Type}{ParamType}} +{\footnotesize\ttfamily template$<$typename T1 , typename T2 $>$ \\ +typedef \+::std\+::tuple$<$T1, T2$>$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator2}{testing\+::internal\+::\+Cartesian\+Product\+Generator2}}$<$ T1, T2 $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator2_a4dd5db877d076b52d44fb631e34cd47f}{Param\+Type}}} + + + +Definition at line 11368 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_generator2_a971ef5a45783db277f5fae84eaef41a3}\label{classtesting_1_1internal_1_1_cartesian_product_generator2_a971ef5a45783db277f5fae84eaef41a3}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Generator2@{testing\+::internal\+::\+Cartesian\+Product\+Generator2}!Cartesian\+Product\+Generator2@{Cartesian\+Product\+Generator2}} +\index{Cartesian\+Product\+Generator2@{Cartesian\+Product\+Generator2}!testing\+::internal\+::\+Cartesian\+Product\+Generator2@{testing\+::internal\+::\+Cartesian\+Product\+Generator2}} +\subsubsection{\texorpdfstring{Cartesian\+Product\+Generator2()}{CartesianProductGenerator2()}} +{\footnotesize\ttfamily template$<$typename T1 , typename T2 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator2}{testing\+::internal\+::\+Cartesian\+Product\+Generator2}}$<$ T1, T2 $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator2}{Cartesian\+Product\+Generator2}} (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T1 $>$ \&}]{g1, }\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T2 $>$ \&}]{g2 }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 11370 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_generator2_a4359f80cc1888d4a18d2e0a6865b920d}\label{classtesting_1_1internal_1_1_cartesian_product_generator2_a4359f80cc1888d4a18d2e0a6865b920d}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Generator2@{testing\+::internal\+::\+Cartesian\+Product\+Generator2}!````~Cartesian\+Product\+Generator2@{$\sim$\+Cartesian\+Product\+Generator2}} +\index{````~Cartesian\+Product\+Generator2@{$\sim$\+Cartesian\+Product\+Generator2}!testing\+::internal\+::\+Cartesian\+Product\+Generator2@{testing\+::internal\+::\+Cartesian\+Product\+Generator2}} +\subsubsection{\texorpdfstring{$\sim$\+Cartesian\+Product\+Generator2()}{~CartesianProductGenerator2()}} +{\footnotesize\ttfamily template$<$typename T1 , typename T2 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator2}{testing\+::internal\+::\+Cartesian\+Product\+Generator2}}$<$ T1, T2 $>$\+::$\sim$\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator2}{Cartesian\+Product\+Generator2}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}} + + + +Definition at line 11373 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_generator2_aa68e7d9334ba6318bc17ccb0669767fe}\label{classtesting_1_1internal_1_1_cartesian_product_generator2_aa68e7d9334ba6318bc17ccb0669767fe}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Generator2@{testing\+::internal\+::\+Cartesian\+Product\+Generator2}!Begin@{Begin}} +\index{Begin@{Begin}!testing\+::internal\+::\+Cartesian\+Product\+Generator2@{testing\+::internal\+::\+Cartesian\+Product\+Generator2}} +\subsubsection{\texorpdfstring{Begin()}{Begin()}} +{\footnotesize\ttfamily template$<$typename T1 , typename T2 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{Param\+Iterator\+Interface}}$<$\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator2_a4dd5db877d076b52d44fb631e34cd47f}{Param\+Type}}$>$$\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator2}{testing\+::internal\+::\+Cartesian\+Product\+Generator2}}$<$ T1, T2 $>$\+::Begin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\ttfamily [virtual]}} + + + +Implements \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator_interface_ae1de83b16fe9a53c67778a026c6a9569}{testing\+::internal\+::\+Param\+Generator\+Interface$<$ \+::std\+::tuple$<$ T1, T2 $>$ $>$}}. + + + +Definition at line 11375 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_generator2_afb1a5fe2810721040689e2e8c85b8a42}\label{classtesting_1_1internal_1_1_cartesian_product_generator2_afb1a5fe2810721040689e2e8c85b8a42}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Generator2@{testing\+::internal\+::\+Cartesian\+Product\+Generator2}!End@{End}} +\index{End@{End}!testing\+::internal\+::\+Cartesian\+Product\+Generator2@{testing\+::internal\+::\+Cartesian\+Product\+Generator2}} +\subsubsection{\texorpdfstring{End()}{End()}} +{\footnotesize\ttfamily template$<$typename T1 , typename T2 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{Param\+Iterator\+Interface}}$<$\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator2_a4dd5db877d076b52d44fb631e34cd47f}{Param\+Type}}$>$$\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator2}{testing\+::internal\+::\+Cartesian\+Product\+Generator2}}$<$ T1, T2 $>$\+::End (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\ttfamily [virtual]}} + + + +Implements \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator_interface_afa7211b74990e11d3fc7ad4e7113da4f}{testing\+::internal\+::\+Param\+Generator\+Interface$<$ \+::std\+::tuple$<$ T1, T2 $>$ $>$}}. + + + +Definition at line 11378 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator3.eps b/doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator3.eps new file mode 100644 index 0000000..cfb0a96 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator3.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 96.153846 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 5.200000 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(testing::internal::CartesianProductGenerator3< T1, T2, T3 >) cw +(testing::internal::ParamGeneratorInterface< ::std::tuple< T1, T2, T3 > >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (testing::internal::CartesianProductGenerator3< T1, T2, T3 >) 0.000000 0.000000 box + (testing::internal::ParamGeneratorInterface< ::std::tuple< T1, T2, T3 > >) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator3.tex b/doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator3.tex new file mode 100644 index 0000000..645c6cb --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator3.tex @@ -0,0 +1,115 @@ +\hypertarget{classtesting_1_1internal_1_1_cartesian_product_generator3}{}\section{testing\+:\+:internal\+:\+:Cartesian\+Product\+Generator3$<$ T1, T2, T3 $>$ Class Template Reference} +\label{classtesting_1_1internal_1_1_cartesian_product_generator3}\index{testing\+::internal\+::\+Cartesian\+Product\+Generator3$<$ T1, T2, T3 $>$@{testing\+::internal\+::\+Cartesian\+Product\+Generator3$<$ T1, T2, T3 $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +Inheritance diagram for testing\+:\+:internal\+:\+:Cartesian\+Product\+Generator3$<$ T1, T2, T3 $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{classtesting_1_1internal_1_1_cartesian_product_generator3} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +typedef \+::std\+::tuple$<$ T1, T2, T3 $>$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator3_a8ef3e248a6d5ba1ea4ae17a8d045e98a}{Param\+Type}} +\end{DoxyCompactItemize} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator3_afdca1e94b01f654564b9cbe66fb5ca94}{Cartesian\+Product\+Generator3}} (const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T1 $>$ \&g1, const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T2 $>$ \&g2, const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T3 $>$ \&g3) +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator3_a230b2ec353e917e1afeb6aae5668e19e}{$\sim$\+Cartesian\+Product\+Generator3}} () override +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{Param\+Iterator\+Interface}}$<$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator3_a8ef3e248a6d5ba1ea4ae17a8d045e98a}{Param\+Type}} $>$ $\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator3_a2a1d5af705de6cc340291294fa38437e}{Begin}} () const override +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{Param\+Iterator\+Interface}}$<$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator3_a8ef3e248a6d5ba1ea4ae17a8d045e98a}{Param\+Type}} $>$ $\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator3_a474d70e577e76b7f84b0d83e90a6ec89}{End}} () const override +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T1, typename T2, typename T3$>$\newline +class testing\+::internal\+::\+Cartesian\+Product\+Generator3$<$ T1, T2, T3 $>$} + + + +Definition at line 11480 of file gtest.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_generator3_a8ef3e248a6d5ba1ea4ae17a8d045e98a}\label{classtesting_1_1internal_1_1_cartesian_product_generator3_a8ef3e248a6d5ba1ea4ae17a8d045e98a}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Generator3@{testing\+::internal\+::\+Cartesian\+Product\+Generator3}!Param\+Type@{Param\+Type}} +\index{Param\+Type@{Param\+Type}!testing\+::internal\+::\+Cartesian\+Product\+Generator3@{testing\+::internal\+::\+Cartesian\+Product\+Generator3}} +\subsubsection{\texorpdfstring{Param\+Type}{ParamType}} +{\footnotesize\ttfamily template$<$typename T1 , typename T2 , typename T3 $>$ \\ +typedef \+::std\+::tuple$<$T1, T2, T3$>$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator3}{testing\+::internal\+::\+Cartesian\+Product\+Generator3}}$<$ T1, T2, T3 $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator3_a8ef3e248a6d5ba1ea4ae17a8d045e98a}{Param\+Type}}} + + + +Definition at line 11483 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_generator3_afdca1e94b01f654564b9cbe66fb5ca94}\label{classtesting_1_1internal_1_1_cartesian_product_generator3_afdca1e94b01f654564b9cbe66fb5ca94}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Generator3@{testing\+::internal\+::\+Cartesian\+Product\+Generator3}!Cartesian\+Product\+Generator3@{Cartesian\+Product\+Generator3}} +\index{Cartesian\+Product\+Generator3@{Cartesian\+Product\+Generator3}!testing\+::internal\+::\+Cartesian\+Product\+Generator3@{testing\+::internal\+::\+Cartesian\+Product\+Generator3}} +\subsubsection{\texorpdfstring{Cartesian\+Product\+Generator3()}{CartesianProductGenerator3()}} +{\footnotesize\ttfamily template$<$typename T1 , typename T2 , typename T3 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator3}{testing\+::internal\+::\+Cartesian\+Product\+Generator3}}$<$ T1, T2, T3 $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator3}{Cartesian\+Product\+Generator3}} (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T1 $>$ \&}]{g1, }\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T2 $>$ \&}]{g2, }\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T3 $>$ \&}]{g3 }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 11485 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_generator3_a230b2ec353e917e1afeb6aae5668e19e}\label{classtesting_1_1internal_1_1_cartesian_product_generator3_a230b2ec353e917e1afeb6aae5668e19e}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Generator3@{testing\+::internal\+::\+Cartesian\+Product\+Generator3}!````~Cartesian\+Product\+Generator3@{$\sim$\+Cartesian\+Product\+Generator3}} +\index{````~Cartesian\+Product\+Generator3@{$\sim$\+Cartesian\+Product\+Generator3}!testing\+::internal\+::\+Cartesian\+Product\+Generator3@{testing\+::internal\+::\+Cartesian\+Product\+Generator3}} +\subsubsection{\texorpdfstring{$\sim$\+Cartesian\+Product\+Generator3()}{~CartesianProductGenerator3()}} +{\footnotesize\ttfamily template$<$typename T1 , typename T2 , typename T3 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator3}{testing\+::internal\+::\+Cartesian\+Product\+Generator3}}$<$ T1, T2, T3 $>$\+::$\sim$\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator3}{Cartesian\+Product\+Generator3}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}} + + + +Definition at line 11488 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_generator3_a2a1d5af705de6cc340291294fa38437e}\label{classtesting_1_1internal_1_1_cartesian_product_generator3_a2a1d5af705de6cc340291294fa38437e}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Generator3@{testing\+::internal\+::\+Cartesian\+Product\+Generator3}!Begin@{Begin}} +\index{Begin@{Begin}!testing\+::internal\+::\+Cartesian\+Product\+Generator3@{testing\+::internal\+::\+Cartesian\+Product\+Generator3}} +\subsubsection{\texorpdfstring{Begin()}{Begin()}} +{\footnotesize\ttfamily template$<$typename T1 , typename T2 , typename T3 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{Param\+Iterator\+Interface}}$<$\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator3_a8ef3e248a6d5ba1ea4ae17a8d045e98a}{Param\+Type}}$>$$\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator3}{testing\+::internal\+::\+Cartesian\+Product\+Generator3}}$<$ T1, T2, T3 $>$\+::Begin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\ttfamily [virtual]}} + + + +Implements \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator_interface_ae1de83b16fe9a53c67778a026c6a9569}{testing\+::internal\+::\+Param\+Generator\+Interface$<$ \+::std\+::tuple$<$ T1, T2, T3 $>$ $>$}}. + + + +Definition at line 11490 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_generator3_a474d70e577e76b7f84b0d83e90a6ec89}\label{classtesting_1_1internal_1_1_cartesian_product_generator3_a474d70e577e76b7f84b0d83e90a6ec89}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Generator3@{testing\+::internal\+::\+Cartesian\+Product\+Generator3}!End@{End}} +\index{End@{End}!testing\+::internal\+::\+Cartesian\+Product\+Generator3@{testing\+::internal\+::\+Cartesian\+Product\+Generator3}} +\subsubsection{\texorpdfstring{End()}{End()}} +{\footnotesize\ttfamily template$<$typename T1 , typename T2 , typename T3 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{Param\+Iterator\+Interface}}$<$\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator3_a8ef3e248a6d5ba1ea4ae17a8d045e98a}{Param\+Type}}$>$$\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator3}{testing\+::internal\+::\+Cartesian\+Product\+Generator3}}$<$ T1, T2, T3 $>$\+::End (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\ttfamily [virtual]}} + + + +Implements \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator_interface_afa7211b74990e11d3fc7ad4e7113da4f}{testing\+::internal\+::\+Param\+Generator\+Interface$<$ \+::std\+::tuple$<$ T1, T2, T3 $>$ $>$}}. + + + +Definition at line 11494 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator4.eps b/doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator4.eps new file mode 100644 index 0000000..b40ac73 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator4.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 91.116173 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 5.487500 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(testing::internal::CartesianProductGenerator4< T1, T2, T3, T4 >) cw +(testing::internal::ParamGeneratorInterface< ::std::tuple< T1, T2, T3, T4 > >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (testing::internal::CartesianProductGenerator4< T1, T2, T3, T4 >) 0.000000 0.000000 box + (testing::internal::ParamGeneratorInterface< ::std::tuple< T1, T2, T3, T4 > >) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator4.tex b/doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator4.tex new file mode 100644 index 0000000..fbf28c0 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator4.tex @@ -0,0 +1,115 @@ +\hypertarget{classtesting_1_1internal_1_1_cartesian_product_generator4}{}\section{testing\+:\+:internal\+:\+:Cartesian\+Product\+Generator4$<$ T1, T2, T3, T4 $>$ Class Template Reference} +\label{classtesting_1_1internal_1_1_cartesian_product_generator4}\index{testing\+::internal\+::\+Cartesian\+Product\+Generator4$<$ T1, T2, T3, T4 $>$@{testing\+::internal\+::\+Cartesian\+Product\+Generator4$<$ T1, T2, T3, T4 $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +Inheritance diagram for testing\+:\+:internal\+:\+:Cartesian\+Product\+Generator4$<$ T1, T2, T3, T4 $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{classtesting_1_1internal_1_1_cartesian_product_generator4} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +typedef \+::std\+::tuple$<$ T1, T2, T3, T4 $>$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator4_ab5e2480f7abacb80850de470c3225412}{Param\+Type}} +\end{DoxyCompactItemize} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator4_a4e4512b35f0d71f7a718ded6fe829296}{Cartesian\+Product\+Generator4}} (const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T1 $>$ \&g1, const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T2 $>$ \&g2, const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T3 $>$ \&g3, const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T4 $>$ \&g4) +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator4_a75d7d9ee7bae873295df5d4dbec6a165}{$\sim$\+Cartesian\+Product\+Generator4}} () override +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{Param\+Iterator\+Interface}}$<$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator4_ab5e2480f7abacb80850de470c3225412}{Param\+Type}} $>$ $\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator4_ae04bf9d551c6dc3996d18e90e88f4bfd}{Begin}} () const override +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{Param\+Iterator\+Interface}}$<$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator4_ab5e2480f7abacb80850de470c3225412}{Param\+Type}} $>$ $\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator4_ae25a27430e476014a2f07c0be4f030f7}{End}} () const override +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T1, typename T2, typename T3, typename T4$>$\newline +class testing\+::internal\+::\+Cartesian\+Product\+Generator4$<$ T1, T2, T3, T4 $>$} + + + +Definition at line 11612 of file gtest.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_generator4_ab5e2480f7abacb80850de470c3225412}\label{classtesting_1_1internal_1_1_cartesian_product_generator4_ab5e2480f7abacb80850de470c3225412}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Generator4@{testing\+::internal\+::\+Cartesian\+Product\+Generator4}!Param\+Type@{Param\+Type}} +\index{Param\+Type@{Param\+Type}!testing\+::internal\+::\+Cartesian\+Product\+Generator4@{testing\+::internal\+::\+Cartesian\+Product\+Generator4}} +\subsubsection{\texorpdfstring{Param\+Type}{ParamType}} +{\footnotesize\ttfamily template$<$typename T1 , typename T2 , typename T3 , typename T4 $>$ \\ +typedef \+::std\+::tuple$<$T1, T2, T3, T4$>$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator4}{testing\+::internal\+::\+Cartesian\+Product\+Generator4}}$<$ T1, T2, T3, T4 $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator4_ab5e2480f7abacb80850de470c3225412}{Param\+Type}}} + + + +Definition at line 11615 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_generator4_a4e4512b35f0d71f7a718ded6fe829296}\label{classtesting_1_1internal_1_1_cartesian_product_generator4_a4e4512b35f0d71f7a718ded6fe829296}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Generator4@{testing\+::internal\+::\+Cartesian\+Product\+Generator4}!Cartesian\+Product\+Generator4@{Cartesian\+Product\+Generator4}} +\index{Cartesian\+Product\+Generator4@{Cartesian\+Product\+Generator4}!testing\+::internal\+::\+Cartesian\+Product\+Generator4@{testing\+::internal\+::\+Cartesian\+Product\+Generator4}} +\subsubsection{\texorpdfstring{Cartesian\+Product\+Generator4()}{CartesianProductGenerator4()}} +{\footnotesize\ttfamily template$<$typename T1 , typename T2 , typename T3 , typename T4 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator4}{testing\+::internal\+::\+Cartesian\+Product\+Generator4}}$<$ T1, T2, T3, T4 $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator4}{Cartesian\+Product\+Generator4}} (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T1 $>$ \&}]{g1, }\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T2 $>$ \&}]{g2, }\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T3 $>$ \&}]{g3, }\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T4 $>$ \&}]{g4 }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 11617 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_generator4_a75d7d9ee7bae873295df5d4dbec6a165}\label{classtesting_1_1internal_1_1_cartesian_product_generator4_a75d7d9ee7bae873295df5d4dbec6a165}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Generator4@{testing\+::internal\+::\+Cartesian\+Product\+Generator4}!````~Cartesian\+Product\+Generator4@{$\sim$\+Cartesian\+Product\+Generator4}} +\index{````~Cartesian\+Product\+Generator4@{$\sim$\+Cartesian\+Product\+Generator4}!testing\+::internal\+::\+Cartesian\+Product\+Generator4@{testing\+::internal\+::\+Cartesian\+Product\+Generator4}} +\subsubsection{\texorpdfstring{$\sim$\+Cartesian\+Product\+Generator4()}{~CartesianProductGenerator4()}} +{\footnotesize\ttfamily template$<$typename T1 , typename T2 , typename T3 , typename T4 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator4}{testing\+::internal\+::\+Cartesian\+Product\+Generator4}}$<$ T1, T2, T3, T4 $>$\+::$\sim$\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator4}{Cartesian\+Product\+Generator4}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}} + + + +Definition at line 11621 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_generator4_ae04bf9d551c6dc3996d18e90e88f4bfd}\label{classtesting_1_1internal_1_1_cartesian_product_generator4_ae04bf9d551c6dc3996d18e90e88f4bfd}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Generator4@{testing\+::internal\+::\+Cartesian\+Product\+Generator4}!Begin@{Begin}} +\index{Begin@{Begin}!testing\+::internal\+::\+Cartesian\+Product\+Generator4@{testing\+::internal\+::\+Cartesian\+Product\+Generator4}} +\subsubsection{\texorpdfstring{Begin()}{Begin()}} +{\footnotesize\ttfamily template$<$typename T1 , typename T2 , typename T3 , typename T4 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{Param\+Iterator\+Interface}}$<$\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator4_ab5e2480f7abacb80850de470c3225412}{Param\+Type}}$>$$\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator4}{testing\+::internal\+::\+Cartesian\+Product\+Generator4}}$<$ T1, T2, T3, T4 $>$\+::Begin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\ttfamily [virtual]}} + + + +Implements \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator_interface_ae1de83b16fe9a53c67778a026c6a9569}{testing\+::internal\+::\+Param\+Generator\+Interface$<$ \+::std\+::tuple$<$ T1, T2, T3, T4 $>$ $>$}}. + + + +Definition at line 11623 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_generator4_ae25a27430e476014a2f07c0be4f030f7}\label{classtesting_1_1internal_1_1_cartesian_product_generator4_ae25a27430e476014a2f07c0be4f030f7}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Generator4@{testing\+::internal\+::\+Cartesian\+Product\+Generator4}!End@{End}} +\index{End@{End}!testing\+::internal\+::\+Cartesian\+Product\+Generator4@{testing\+::internal\+::\+Cartesian\+Product\+Generator4}} +\subsubsection{\texorpdfstring{End()}{End()}} +{\footnotesize\ttfamily template$<$typename T1 , typename T2 , typename T3 , typename T4 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{Param\+Iterator\+Interface}}$<$\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator4_ab5e2480f7abacb80850de470c3225412}{Param\+Type}}$>$$\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator4}{testing\+::internal\+::\+Cartesian\+Product\+Generator4}}$<$ T1, T2, T3, T4 $>$\+::End (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\ttfamily [virtual]}} + + + +Implements \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator_interface_afa7211b74990e11d3fc7ad4e7113da4f}{testing\+::internal\+::\+Param\+Generator\+Interface$<$ \+::std\+::tuple$<$ T1, T2, T3, T4 $>$ $>$}}. + + + +Definition at line 11627 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator5.eps b/doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator5.eps new file mode 100644 index 0000000..7c586cf --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator5.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 86.580087 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 5.775000 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(testing::internal::CartesianProductGenerator5< T1, T2, T3, T4, T5 >) cw +(testing::internal::ParamGeneratorInterface< ::std::tuple< T1, T2, T3, T4, T5 > >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (testing::internal::CartesianProductGenerator5< T1, T2, T3, T4, T5 >) 0.000000 0.000000 box + (testing::internal::ParamGeneratorInterface< ::std::tuple< T1, T2, T3, T4, T5 > >) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator5.tex b/doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator5.tex new file mode 100644 index 0000000..c0bb40e --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator5.tex @@ -0,0 +1,115 @@ +\hypertarget{classtesting_1_1internal_1_1_cartesian_product_generator5}{}\section{testing\+:\+:internal\+:\+:Cartesian\+Product\+Generator5$<$ T1, T2, T3, T4, T5 $>$ Class Template Reference} +\label{classtesting_1_1internal_1_1_cartesian_product_generator5}\index{testing\+::internal\+::\+Cartesian\+Product\+Generator5$<$ T1, T2, T3, T4, T5 $>$@{testing\+::internal\+::\+Cartesian\+Product\+Generator5$<$ T1, T2, T3, T4, T5 $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +Inheritance diagram for testing\+:\+:internal\+:\+:Cartesian\+Product\+Generator5$<$ T1, T2, T3, T4, T5 $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{classtesting_1_1internal_1_1_cartesian_product_generator5} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +typedef \+::std\+::tuple$<$ T1, T2, T3, T4, T5 $>$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator5_a381a9c3c18106872251acffe59453a95}{Param\+Type}} +\end{DoxyCompactItemize} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator5_ab25fd0df9d6325f10f218c3b7553820d}{Cartesian\+Product\+Generator5}} (const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T1 $>$ \&g1, const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T2 $>$ \&g2, const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T3 $>$ \&g3, const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T4 $>$ \&g4, const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T5 $>$ \&g5) +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator5_a13453a5614cda6c4d4b09011daa37800}{$\sim$\+Cartesian\+Product\+Generator5}} () override +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{Param\+Iterator\+Interface}}$<$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator5_a381a9c3c18106872251acffe59453a95}{Param\+Type}} $>$ $\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator5_aadf6e9a6638c07af046c489b78aed214}{Begin}} () const override +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{Param\+Iterator\+Interface}}$<$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator5_a381a9c3c18106872251acffe59453a95}{Param\+Type}} $>$ $\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator5_af1829ba003b0e7c3a463f87dacd4c3b2}{End}} () const override +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T1, typename T2, typename T3, typename T4, typename T5$>$\newline +class testing\+::internal\+::\+Cartesian\+Product\+Generator5$<$ T1, T2, T3, T4, T5 $>$} + + + +Definition at line 11763 of file gtest.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_generator5_a381a9c3c18106872251acffe59453a95}\label{classtesting_1_1internal_1_1_cartesian_product_generator5_a381a9c3c18106872251acffe59453a95}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Generator5@{testing\+::internal\+::\+Cartesian\+Product\+Generator5}!Param\+Type@{Param\+Type}} +\index{Param\+Type@{Param\+Type}!testing\+::internal\+::\+Cartesian\+Product\+Generator5@{testing\+::internal\+::\+Cartesian\+Product\+Generator5}} +\subsubsection{\texorpdfstring{Param\+Type}{ParamType}} +{\footnotesize\ttfamily template$<$typename T1 , typename T2 , typename T3 , typename T4 , typename T5 $>$ \\ +typedef \+::std\+::tuple$<$T1, T2, T3, T4, T5$>$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator5}{testing\+::internal\+::\+Cartesian\+Product\+Generator5}}$<$ T1, T2, T3, T4, T5 $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator5_a381a9c3c18106872251acffe59453a95}{Param\+Type}}} + + + +Definition at line 11766 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_generator5_ab25fd0df9d6325f10f218c3b7553820d}\label{classtesting_1_1internal_1_1_cartesian_product_generator5_ab25fd0df9d6325f10f218c3b7553820d}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Generator5@{testing\+::internal\+::\+Cartesian\+Product\+Generator5}!Cartesian\+Product\+Generator5@{Cartesian\+Product\+Generator5}} +\index{Cartesian\+Product\+Generator5@{Cartesian\+Product\+Generator5}!testing\+::internal\+::\+Cartesian\+Product\+Generator5@{testing\+::internal\+::\+Cartesian\+Product\+Generator5}} +\subsubsection{\texorpdfstring{Cartesian\+Product\+Generator5()}{CartesianProductGenerator5()}} +{\footnotesize\ttfamily template$<$typename T1 , typename T2 , typename T3 , typename T4 , typename T5 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator5}{testing\+::internal\+::\+Cartesian\+Product\+Generator5}}$<$ T1, T2, T3, T4, T5 $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator5}{Cartesian\+Product\+Generator5}} (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T1 $>$ \&}]{g1, }\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T2 $>$ \&}]{g2, }\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T3 $>$ \&}]{g3, }\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T4 $>$ \&}]{g4, }\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T5 $>$ \&}]{g5 }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 11768 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_generator5_a13453a5614cda6c4d4b09011daa37800}\label{classtesting_1_1internal_1_1_cartesian_product_generator5_a13453a5614cda6c4d4b09011daa37800}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Generator5@{testing\+::internal\+::\+Cartesian\+Product\+Generator5}!````~Cartesian\+Product\+Generator5@{$\sim$\+Cartesian\+Product\+Generator5}} +\index{````~Cartesian\+Product\+Generator5@{$\sim$\+Cartesian\+Product\+Generator5}!testing\+::internal\+::\+Cartesian\+Product\+Generator5@{testing\+::internal\+::\+Cartesian\+Product\+Generator5}} +\subsubsection{\texorpdfstring{$\sim$\+Cartesian\+Product\+Generator5()}{~CartesianProductGenerator5()}} +{\footnotesize\ttfamily template$<$typename T1 , typename T2 , typename T3 , typename T4 , typename T5 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator5}{testing\+::internal\+::\+Cartesian\+Product\+Generator5}}$<$ T1, T2, T3, T4, T5 $>$\+::$\sim$\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator5}{Cartesian\+Product\+Generator5}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}} + + + +Definition at line 11772 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_generator5_aadf6e9a6638c07af046c489b78aed214}\label{classtesting_1_1internal_1_1_cartesian_product_generator5_aadf6e9a6638c07af046c489b78aed214}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Generator5@{testing\+::internal\+::\+Cartesian\+Product\+Generator5}!Begin@{Begin}} +\index{Begin@{Begin}!testing\+::internal\+::\+Cartesian\+Product\+Generator5@{testing\+::internal\+::\+Cartesian\+Product\+Generator5}} +\subsubsection{\texorpdfstring{Begin()}{Begin()}} +{\footnotesize\ttfamily template$<$typename T1 , typename T2 , typename T3 , typename T4 , typename T5 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{Param\+Iterator\+Interface}}$<$\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator5_a381a9c3c18106872251acffe59453a95}{Param\+Type}}$>$$\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator5}{testing\+::internal\+::\+Cartesian\+Product\+Generator5}}$<$ T1, T2, T3, T4, T5 $>$\+::Begin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\ttfamily [virtual]}} + + + +Implements \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator_interface_ae1de83b16fe9a53c67778a026c6a9569}{testing\+::internal\+::\+Param\+Generator\+Interface$<$ \+::std\+::tuple$<$ T1, T2, T3, T4, T5 $>$ $>$}}. + + + +Definition at line 11774 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_generator5_af1829ba003b0e7c3a463f87dacd4c3b2}\label{classtesting_1_1internal_1_1_cartesian_product_generator5_af1829ba003b0e7c3a463f87dacd4c3b2}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Generator5@{testing\+::internal\+::\+Cartesian\+Product\+Generator5}!End@{End}} +\index{End@{End}!testing\+::internal\+::\+Cartesian\+Product\+Generator5@{testing\+::internal\+::\+Cartesian\+Product\+Generator5}} +\subsubsection{\texorpdfstring{End()}{End()}} +{\footnotesize\ttfamily template$<$typename T1 , typename T2 , typename T3 , typename T4 , typename T5 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{Param\+Iterator\+Interface}}$<$\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator5_a381a9c3c18106872251acffe59453a95}{Param\+Type}}$>$$\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator5}{testing\+::internal\+::\+Cartesian\+Product\+Generator5}}$<$ T1, T2, T3, T4, T5 $>$\+::End (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\ttfamily [virtual]}} + + + +Implements \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator_interface_afa7211b74990e11d3fc7ad4e7113da4f}{testing\+::internal\+::\+Param\+Generator\+Interface$<$ \+::std\+::tuple$<$ T1, T2, T3, T4, T5 $>$ $>$}}. + + + +Definition at line 11778 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator6.eps b/doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator6.eps new file mode 100644 index 0000000..2ddaede --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator6.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 82.474227 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 6.062500 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(testing::internal::CartesianProductGenerator6< T1, T2, T3, T4, T5, T6 >) cw +(testing::internal::ParamGeneratorInterface< ::std::tuple< T1, T2, T3, T4, T5, T6 > >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (testing::internal::CartesianProductGenerator6< T1, T2, T3, T4, T5, T6 >) 0.000000 0.000000 box + (testing::internal::ParamGeneratorInterface< ::std::tuple< T1, T2, T3, T4, T5, T6 > >) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator6.tex b/doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator6.tex new file mode 100644 index 0000000..8457697 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator6.tex @@ -0,0 +1,115 @@ +\hypertarget{classtesting_1_1internal_1_1_cartesian_product_generator6}{}\section{testing\+:\+:internal\+:\+:Cartesian\+Product\+Generator6$<$ T1, T2, T3, T4, T5, T6 $>$ Class Template Reference} +\label{classtesting_1_1internal_1_1_cartesian_product_generator6}\index{testing\+::internal\+::\+Cartesian\+Product\+Generator6$<$ T1, T2, T3, T4, T5, T6 $>$@{testing\+::internal\+::\+Cartesian\+Product\+Generator6$<$ T1, T2, T3, T4, T5, T6 $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +Inheritance diagram for testing\+:\+:internal\+:\+:Cartesian\+Product\+Generator6$<$ T1, T2, T3, T4, T5, T6 $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{classtesting_1_1internal_1_1_cartesian_product_generator6} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +typedef \+::std\+::tuple$<$ T1, T2, T3, T4, T5, T6 $>$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator6_aa9d67ce7d77623ebb27053bb2f704c62}{Param\+Type}} +\end{DoxyCompactItemize} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator6_a6ff15d46e4ff7f8f24215b8244a6a094}{Cartesian\+Product\+Generator6}} (const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T1 $>$ \&g1, const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T2 $>$ \&g2, const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T3 $>$ \&g3, const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T4 $>$ \&g4, const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T5 $>$ \&g5, const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T6 $>$ \&g6) +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator6_a6d59c2e75fd2a0a042ee102e08956f7f}{$\sim$\+Cartesian\+Product\+Generator6}} () override +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{Param\+Iterator\+Interface}}$<$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator6_aa9d67ce7d77623ebb27053bb2f704c62}{Param\+Type}} $>$ $\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator6_ae9a8a36d7d4a5270a21ffd38744bbfce}{Begin}} () const override +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{Param\+Iterator\+Interface}}$<$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator6_aa9d67ce7d77623ebb27053bb2f704c62}{Param\+Type}} $>$ $\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator6_a952895ad20d5a89b913f80ad2f54391b}{End}} () const override +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T1, typename T2, typename T3, typename T4, typename T5, typename T6$>$\newline +class testing\+::internal\+::\+Cartesian\+Product\+Generator6$<$ T1, T2, T3, T4, T5, T6 $>$} + + + +Definition at line 11931 of file gtest.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_generator6_aa9d67ce7d77623ebb27053bb2f704c62}\label{classtesting_1_1internal_1_1_cartesian_product_generator6_aa9d67ce7d77623ebb27053bb2f704c62}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Generator6@{testing\+::internal\+::\+Cartesian\+Product\+Generator6}!Param\+Type@{Param\+Type}} +\index{Param\+Type@{Param\+Type}!testing\+::internal\+::\+Cartesian\+Product\+Generator6@{testing\+::internal\+::\+Cartesian\+Product\+Generator6}} +\subsubsection{\texorpdfstring{Param\+Type}{ParamType}} +{\footnotesize\ttfamily template$<$typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 $>$ \\ +typedef \+::std\+::tuple$<$T1, T2, T3, T4, T5, T6$>$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator6}{testing\+::internal\+::\+Cartesian\+Product\+Generator6}}$<$ T1, T2, T3, T4, T5, T6 $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator6_aa9d67ce7d77623ebb27053bb2f704c62}{Param\+Type}}} + + + +Definition at line 11934 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_generator6_a6ff15d46e4ff7f8f24215b8244a6a094}\label{classtesting_1_1internal_1_1_cartesian_product_generator6_a6ff15d46e4ff7f8f24215b8244a6a094}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Generator6@{testing\+::internal\+::\+Cartesian\+Product\+Generator6}!Cartesian\+Product\+Generator6@{Cartesian\+Product\+Generator6}} +\index{Cartesian\+Product\+Generator6@{Cartesian\+Product\+Generator6}!testing\+::internal\+::\+Cartesian\+Product\+Generator6@{testing\+::internal\+::\+Cartesian\+Product\+Generator6}} +\subsubsection{\texorpdfstring{Cartesian\+Product\+Generator6()}{CartesianProductGenerator6()}} +{\footnotesize\ttfamily template$<$typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator6}{testing\+::internal\+::\+Cartesian\+Product\+Generator6}}$<$ T1, T2, T3, T4, T5, T6 $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator6}{Cartesian\+Product\+Generator6}} (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T1 $>$ \&}]{g1, }\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T2 $>$ \&}]{g2, }\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T3 $>$ \&}]{g3, }\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T4 $>$ \&}]{g4, }\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T5 $>$ \&}]{g5, }\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T6 $>$ \&}]{g6 }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 11936 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_generator6_a6d59c2e75fd2a0a042ee102e08956f7f}\label{classtesting_1_1internal_1_1_cartesian_product_generator6_a6d59c2e75fd2a0a042ee102e08956f7f}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Generator6@{testing\+::internal\+::\+Cartesian\+Product\+Generator6}!````~Cartesian\+Product\+Generator6@{$\sim$\+Cartesian\+Product\+Generator6}} +\index{````~Cartesian\+Product\+Generator6@{$\sim$\+Cartesian\+Product\+Generator6}!testing\+::internal\+::\+Cartesian\+Product\+Generator6@{testing\+::internal\+::\+Cartesian\+Product\+Generator6}} +\subsubsection{\texorpdfstring{$\sim$\+Cartesian\+Product\+Generator6()}{~CartesianProductGenerator6()}} +{\footnotesize\ttfamily template$<$typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator6}{testing\+::internal\+::\+Cartesian\+Product\+Generator6}}$<$ T1, T2, T3, T4, T5, T6 $>$\+::$\sim$\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator6}{Cartesian\+Product\+Generator6}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}} + + + +Definition at line 11941 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_generator6_ae9a8a36d7d4a5270a21ffd38744bbfce}\label{classtesting_1_1internal_1_1_cartesian_product_generator6_ae9a8a36d7d4a5270a21ffd38744bbfce}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Generator6@{testing\+::internal\+::\+Cartesian\+Product\+Generator6}!Begin@{Begin}} +\index{Begin@{Begin}!testing\+::internal\+::\+Cartesian\+Product\+Generator6@{testing\+::internal\+::\+Cartesian\+Product\+Generator6}} +\subsubsection{\texorpdfstring{Begin()}{Begin()}} +{\footnotesize\ttfamily template$<$typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{Param\+Iterator\+Interface}}$<$\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator6_aa9d67ce7d77623ebb27053bb2f704c62}{Param\+Type}}$>$$\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator6}{testing\+::internal\+::\+Cartesian\+Product\+Generator6}}$<$ T1, T2, T3, T4, T5, T6 $>$\+::Begin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\ttfamily [virtual]}} + + + +Implements \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator_interface_ae1de83b16fe9a53c67778a026c6a9569}{testing\+::internal\+::\+Param\+Generator\+Interface$<$ \+::std\+::tuple$<$ T1, T2, T3, T4, T5, T6 $>$ $>$}}. + + + +Definition at line 11943 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_generator6_a952895ad20d5a89b913f80ad2f54391b}\label{classtesting_1_1internal_1_1_cartesian_product_generator6_a952895ad20d5a89b913f80ad2f54391b}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Generator6@{testing\+::internal\+::\+Cartesian\+Product\+Generator6}!End@{End}} +\index{End@{End}!testing\+::internal\+::\+Cartesian\+Product\+Generator6@{testing\+::internal\+::\+Cartesian\+Product\+Generator6}} +\subsubsection{\texorpdfstring{End()}{End()}} +{\footnotesize\ttfamily template$<$typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{Param\+Iterator\+Interface}}$<$\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator6_aa9d67ce7d77623ebb27053bb2f704c62}{Param\+Type}}$>$$\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator6}{testing\+::internal\+::\+Cartesian\+Product\+Generator6}}$<$ T1, T2, T3, T4, T5, T6 $>$\+::End (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\ttfamily [virtual]}} + + + +Implements \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator_interface_afa7211b74990e11d3fc7ad4e7113da4f}{testing\+::internal\+::\+Param\+Generator\+Interface$<$ \+::std\+::tuple$<$ T1, T2, T3, T4, T5, T6 $>$ $>$}}. + + + +Definition at line 11947 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator7.eps b/doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator7.eps new file mode 100644 index 0000000..035dbba --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator7.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 78.740157 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 6.350000 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(testing::internal::CartesianProductGenerator7< T1, T2, T3, T4, T5, T6, T7 >) cw +(testing::internal::ParamGeneratorInterface< ::std::tuple< T1, T2, T3, T4, T5, T6, T7 > >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (testing::internal::CartesianProductGenerator7< T1, T2, T3, T4, T5, T6, T7 >) 0.000000 0.000000 box + (testing::internal::ParamGeneratorInterface< ::std::tuple< T1, T2, T3, T4, T5, T6, T7 > >) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator7.tex b/doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator7.tex new file mode 100644 index 0000000..e5fa7f1 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator7.tex @@ -0,0 +1,115 @@ +\hypertarget{classtesting_1_1internal_1_1_cartesian_product_generator7}{}\section{testing\+:\+:internal\+:\+:Cartesian\+Product\+Generator7$<$ T1, T2, T3, T4, T5, T6, T7 $>$ Class Template Reference} +\label{classtesting_1_1internal_1_1_cartesian_product_generator7}\index{testing\+::internal\+::\+Cartesian\+Product\+Generator7$<$ T1, T2, T3, T4, T5, T6, T7 $>$@{testing\+::internal\+::\+Cartesian\+Product\+Generator7$<$ T1, T2, T3, T4, T5, T6, T7 $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +Inheritance diagram for testing\+:\+:internal\+:\+:Cartesian\+Product\+Generator7$<$ T1, T2, T3, T4, T5, T6, T7 $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{classtesting_1_1internal_1_1_cartesian_product_generator7} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +typedef \+::std\+::tuple$<$ T1, T2, T3, T4, T5, T6, T7 $>$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator7_a1481728b2ece0109ac7897074d42a1f4}{Param\+Type}} +\end{DoxyCompactItemize} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator7_aafc9c559223d3a685028ec98aa727818}{Cartesian\+Product\+Generator7}} (const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T1 $>$ \&g1, const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T2 $>$ \&g2, const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T3 $>$ \&g3, const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T4 $>$ \&g4, const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T5 $>$ \&g5, const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T6 $>$ \&g6, const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T7 $>$ \&g7) +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator7_a242bc369feb56ff096b906c833403077}{$\sim$\+Cartesian\+Product\+Generator7}} () override +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{Param\+Iterator\+Interface}}$<$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator7_a1481728b2ece0109ac7897074d42a1f4}{Param\+Type}} $>$ $\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator7_ac8b315cd7dbe5566d5ff98b04921b815}{Begin}} () const override +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{Param\+Iterator\+Interface}}$<$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator7_a1481728b2ece0109ac7897074d42a1f4}{Param\+Type}} $>$ $\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator7_a452dadb9cedbc18f539cfc98eb6e5b88}{End}} () const override +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7$>$\newline +class testing\+::internal\+::\+Cartesian\+Product\+Generator7$<$ T1, T2, T3, T4, T5, T6, T7 $>$} + + + +Definition at line 12116 of file gtest.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_generator7_a1481728b2ece0109ac7897074d42a1f4}\label{classtesting_1_1internal_1_1_cartesian_product_generator7_a1481728b2ece0109ac7897074d42a1f4}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Generator7@{testing\+::internal\+::\+Cartesian\+Product\+Generator7}!Param\+Type@{Param\+Type}} +\index{Param\+Type@{Param\+Type}!testing\+::internal\+::\+Cartesian\+Product\+Generator7@{testing\+::internal\+::\+Cartesian\+Product\+Generator7}} +\subsubsection{\texorpdfstring{Param\+Type}{ParamType}} +{\footnotesize\ttfamily template$<$typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 $>$ \\ +typedef \+::std\+::tuple$<$T1, T2, T3, T4, T5, T6, T7$>$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator7}{testing\+::internal\+::\+Cartesian\+Product\+Generator7}}$<$ T1, T2, T3, T4, T5, T6, T7 $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator7_a1481728b2ece0109ac7897074d42a1f4}{Param\+Type}}} + + + +Definition at line 12120 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_generator7_aafc9c559223d3a685028ec98aa727818}\label{classtesting_1_1internal_1_1_cartesian_product_generator7_aafc9c559223d3a685028ec98aa727818}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Generator7@{testing\+::internal\+::\+Cartesian\+Product\+Generator7}!Cartesian\+Product\+Generator7@{Cartesian\+Product\+Generator7}} +\index{Cartesian\+Product\+Generator7@{Cartesian\+Product\+Generator7}!testing\+::internal\+::\+Cartesian\+Product\+Generator7@{testing\+::internal\+::\+Cartesian\+Product\+Generator7}} +\subsubsection{\texorpdfstring{Cartesian\+Product\+Generator7()}{CartesianProductGenerator7()}} +{\footnotesize\ttfamily template$<$typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator7}{testing\+::internal\+::\+Cartesian\+Product\+Generator7}}$<$ T1, T2, T3, T4, T5, T6, T7 $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator7}{Cartesian\+Product\+Generator7}} (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T1 $>$ \&}]{g1, }\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T2 $>$ \&}]{g2, }\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T3 $>$ \&}]{g3, }\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T4 $>$ \&}]{g4, }\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T5 $>$ \&}]{g5, }\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T6 $>$ \&}]{g6, }\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T7 $>$ \&}]{g7 }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 12122 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_generator7_a242bc369feb56ff096b906c833403077}\label{classtesting_1_1internal_1_1_cartesian_product_generator7_a242bc369feb56ff096b906c833403077}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Generator7@{testing\+::internal\+::\+Cartesian\+Product\+Generator7}!````~Cartesian\+Product\+Generator7@{$\sim$\+Cartesian\+Product\+Generator7}} +\index{````~Cartesian\+Product\+Generator7@{$\sim$\+Cartesian\+Product\+Generator7}!testing\+::internal\+::\+Cartesian\+Product\+Generator7@{testing\+::internal\+::\+Cartesian\+Product\+Generator7}} +\subsubsection{\texorpdfstring{$\sim$\+Cartesian\+Product\+Generator7()}{~CartesianProductGenerator7()}} +{\footnotesize\ttfamily template$<$typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator7}{testing\+::internal\+::\+Cartesian\+Product\+Generator7}}$<$ T1, T2, T3, T4, T5, T6, T7 $>$\+::$\sim$\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator7}{Cartesian\+Product\+Generator7}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}} + + + +Definition at line 12127 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_generator7_ac8b315cd7dbe5566d5ff98b04921b815}\label{classtesting_1_1internal_1_1_cartesian_product_generator7_ac8b315cd7dbe5566d5ff98b04921b815}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Generator7@{testing\+::internal\+::\+Cartesian\+Product\+Generator7}!Begin@{Begin}} +\index{Begin@{Begin}!testing\+::internal\+::\+Cartesian\+Product\+Generator7@{testing\+::internal\+::\+Cartesian\+Product\+Generator7}} +\subsubsection{\texorpdfstring{Begin()}{Begin()}} +{\footnotesize\ttfamily template$<$typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{Param\+Iterator\+Interface}}$<$\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator7_a1481728b2ece0109ac7897074d42a1f4}{Param\+Type}}$>$$\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator7}{testing\+::internal\+::\+Cartesian\+Product\+Generator7}}$<$ T1, T2, T3, T4, T5, T6, T7 $>$\+::Begin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\ttfamily [virtual]}} + + + +Implements \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator_interface_ae1de83b16fe9a53c67778a026c6a9569}{testing\+::internal\+::\+Param\+Generator\+Interface$<$ \+::std\+::tuple$<$ T1, T2, T3, T4, T5, T6, T7 $>$ $>$}}. + + + +Definition at line 12129 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_generator7_a452dadb9cedbc18f539cfc98eb6e5b88}\label{classtesting_1_1internal_1_1_cartesian_product_generator7_a452dadb9cedbc18f539cfc98eb6e5b88}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Generator7@{testing\+::internal\+::\+Cartesian\+Product\+Generator7}!End@{End}} +\index{End@{End}!testing\+::internal\+::\+Cartesian\+Product\+Generator7@{testing\+::internal\+::\+Cartesian\+Product\+Generator7}} +\subsubsection{\texorpdfstring{End()}{End()}} +{\footnotesize\ttfamily template$<$typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{Param\+Iterator\+Interface}}$<$\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator7_a1481728b2ece0109ac7897074d42a1f4}{Param\+Type}}$>$$\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator7}{testing\+::internal\+::\+Cartesian\+Product\+Generator7}}$<$ T1, T2, T3, T4, T5, T6, T7 $>$\+::End (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\ttfamily [virtual]}} + + + +Implements \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator_interface_afa7211b74990e11d3fc7ad4e7113da4f}{testing\+::internal\+::\+Param\+Generator\+Interface$<$ \+::std\+::tuple$<$ T1, T2, T3, T4, T5, T6, T7 $>$ $>$}}. + + + +Definition at line 12134 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator8.eps b/doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator8.eps new file mode 100644 index 0000000..87364a0 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator8.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 75.329567 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 6.637500 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(testing::internal::CartesianProductGenerator8< T1, T2, T3, T4, T5, T6, T7, T8 >) cw +(testing::internal::ParamGeneratorInterface< ::std::tuple< T1, T2, T3, T4, T5, T6, T7, T8 > >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (testing::internal::CartesianProductGenerator8< T1, T2, T3, T4, T5, T6, T7, T8 >) 0.000000 0.000000 box + (testing::internal::ParamGeneratorInterface< ::std::tuple< T1, T2, T3, T4, T5, T6, T7, T8 > >) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator8.tex b/doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator8.tex new file mode 100644 index 0000000..66e492b --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator8.tex @@ -0,0 +1,115 @@ +\hypertarget{classtesting_1_1internal_1_1_cartesian_product_generator8}{}\section{testing\+:\+:internal\+:\+:Cartesian\+Product\+Generator8$<$ T1, T2, T3, T4, T5, T6, T7, T8 $>$ Class Template Reference} +\label{classtesting_1_1internal_1_1_cartesian_product_generator8}\index{testing\+::internal\+::\+Cartesian\+Product\+Generator8$<$ T1, T2, T3, T4, T5, T6, T7, T8 $>$@{testing\+::internal\+::\+Cartesian\+Product\+Generator8$<$ T1, T2, T3, T4, T5, T6, T7, T8 $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +Inheritance diagram for testing\+:\+:internal\+:\+:Cartesian\+Product\+Generator8$<$ T1, T2, T3, T4, T5, T6, T7, T8 $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{classtesting_1_1internal_1_1_cartesian_product_generator8} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +typedef \+::std\+::tuple$<$ T1, T2, T3, T4, T5, T6, T7, T8 $>$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator8_a75fc8856e032710e9efe753ad788dcf1}{Param\+Type}} +\end{DoxyCompactItemize} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator8_a07f33a7263f933d4fbabdb9e930d7f86}{Cartesian\+Product\+Generator8}} (const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T1 $>$ \&g1, const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T2 $>$ \&g2, const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T3 $>$ \&g3, const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T4 $>$ \&g4, const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T5 $>$ \&g5, const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T6 $>$ \&g6, const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T7 $>$ \&g7, const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T8 $>$ \&g8) +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator8_ab5e728b287d0d520e7281799a67189c7}{$\sim$\+Cartesian\+Product\+Generator8}} () override +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{Param\+Iterator\+Interface}}$<$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator8_a75fc8856e032710e9efe753ad788dcf1}{Param\+Type}} $>$ $\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator8_a707b5a6f598da1f6b997e3b1ad771aca}{Begin}} () const override +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{Param\+Iterator\+Interface}}$<$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator8_a75fc8856e032710e9efe753ad788dcf1}{Param\+Type}} $>$ $\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator8_a1893e189b87ba1a7cc664dcd4d87a1fd}{End}} () const override +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8$>$\newline +class testing\+::internal\+::\+Cartesian\+Product\+Generator8$<$ T1, T2, T3, T4, T5, T6, T7, T8 $>$} + + + +Definition at line 12319 of file gtest.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_generator8_a75fc8856e032710e9efe753ad788dcf1}\label{classtesting_1_1internal_1_1_cartesian_product_generator8_a75fc8856e032710e9efe753ad788dcf1}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Generator8@{testing\+::internal\+::\+Cartesian\+Product\+Generator8}!Param\+Type@{Param\+Type}} +\index{Param\+Type@{Param\+Type}!testing\+::internal\+::\+Cartesian\+Product\+Generator8@{testing\+::internal\+::\+Cartesian\+Product\+Generator8}} +\subsubsection{\texorpdfstring{Param\+Type}{ParamType}} +{\footnotesize\ttfamily template$<$typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 $>$ \\ +typedef \+::std\+::tuple$<$T1, T2, T3, T4, T5, T6, T7, T8$>$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator8}{testing\+::internal\+::\+Cartesian\+Product\+Generator8}}$<$ T1, T2, T3, T4, T5, T6, T7, T8 $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator8_a75fc8856e032710e9efe753ad788dcf1}{Param\+Type}}} + + + +Definition at line 12323 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_generator8_a07f33a7263f933d4fbabdb9e930d7f86}\label{classtesting_1_1internal_1_1_cartesian_product_generator8_a07f33a7263f933d4fbabdb9e930d7f86}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Generator8@{testing\+::internal\+::\+Cartesian\+Product\+Generator8}!Cartesian\+Product\+Generator8@{Cartesian\+Product\+Generator8}} +\index{Cartesian\+Product\+Generator8@{Cartesian\+Product\+Generator8}!testing\+::internal\+::\+Cartesian\+Product\+Generator8@{testing\+::internal\+::\+Cartesian\+Product\+Generator8}} +\subsubsection{\texorpdfstring{Cartesian\+Product\+Generator8()}{CartesianProductGenerator8()}} +{\footnotesize\ttfamily template$<$typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator8}{testing\+::internal\+::\+Cartesian\+Product\+Generator8}}$<$ T1, T2, T3, T4, T5, T6, T7, T8 $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator8}{Cartesian\+Product\+Generator8}} (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T1 $>$ \&}]{g1, }\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T2 $>$ \&}]{g2, }\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T3 $>$ \&}]{g3, }\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T4 $>$ \&}]{g4, }\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T5 $>$ \&}]{g5, }\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T6 $>$ \&}]{g6, }\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T7 $>$ \&}]{g7, }\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T8 $>$ \&}]{g8 }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 12325 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_generator8_ab5e728b287d0d520e7281799a67189c7}\label{classtesting_1_1internal_1_1_cartesian_product_generator8_ab5e728b287d0d520e7281799a67189c7}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Generator8@{testing\+::internal\+::\+Cartesian\+Product\+Generator8}!````~Cartesian\+Product\+Generator8@{$\sim$\+Cartesian\+Product\+Generator8}} +\index{````~Cartesian\+Product\+Generator8@{$\sim$\+Cartesian\+Product\+Generator8}!testing\+::internal\+::\+Cartesian\+Product\+Generator8@{testing\+::internal\+::\+Cartesian\+Product\+Generator8}} +\subsubsection{\texorpdfstring{$\sim$\+Cartesian\+Product\+Generator8()}{~CartesianProductGenerator8()}} +{\footnotesize\ttfamily template$<$typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator8}{testing\+::internal\+::\+Cartesian\+Product\+Generator8}}$<$ T1, T2, T3, T4, T5, T6, T7, T8 $>$\+::$\sim$\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator8}{Cartesian\+Product\+Generator8}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}} + + + +Definition at line 12332 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_generator8_a707b5a6f598da1f6b997e3b1ad771aca}\label{classtesting_1_1internal_1_1_cartesian_product_generator8_a707b5a6f598da1f6b997e3b1ad771aca}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Generator8@{testing\+::internal\+::\+Cartesian\+Product\+Generator8}!Begin@{Begin}} +\index{Begin@{Begin}!testing\+::internal\+::\+Cartesian\+Product\+Generator8@{testing\+::internal\+::\+Cartesian\+Product\+Generator8}} +\subsubsection{\texorpdfstring{Begin()}{Begin()}} +{\footnotesize\ttfamily template$<$typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{Param\+Iterator\+Interface}}$<$\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator8_a75fc8856e032710e9efe753ad788dcf1}{Param\+Type}}$>$$\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator8}{testing\+::internal\+::\+Cartesian\+Product\+Generator8}}$<$ T1, T2, T3, T4, T5, T6, T7, T8 $>$\+::Begin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\ttfamily [virtual]}} + + + +Implements \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator_interface_ae1de83b16fe9a53c67778a026c6a9569}{testing\+::internal\+::\+Param\+Generator\+Interface$<$ \+::std\+::tuple$<$ T1, T2, T3, T4, T5, T6, T7, T8 $>$ $>$}}. + + + +Definition at line 12334 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_generator8_a1893e189b87ba1a7cc664dcd4d87a1fd}\label{classtesting_1_1internal_1_1_cartesian_product_generator8_a1893e189b87ba1a7cc664dcd4d87a1fd}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Generator8@{testing\+::internal\+::\+Cartesian\+Product\+Generator8}!End@{End}} +\index{End@{End}!testing\+::internal\+::\+Cartesian\+Product\+Generator8@{testing\+::internal\+::\+Cartesian\+Product\+Generator8}} +\subsubsection{\texorpdfstring{End()}{End()}} +{\footnotesize\ttfamily template$<$typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{Param\+Iterator\+Interface}}$<$\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator8_a75fc8856e032710e9efe753ad788dcf1}{Param\+Type}}$>$$\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator8}{testing\+::internal\+::\+Cartesian\+Product\+Generator8}}$<$ T1, T2, T3, T4, T5, T6, T7, T8 $>$\+::End (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\ttfamily [virtual]}} + + + +Implements \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator_interface_afa7211b74990e11d3fc7ad4e7113da4f}{testing\+::internal\+::\+Param\+Generator\+Interface$<$ \+::std\+::tuple$<$ T1, T2, T3, T4, T5, T6, T7, T8 $>$ $>$}}. + + + +Definition at line 12339 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator9.eps b/doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator9.eps new file mode 100644 index 0000000..2192661 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator9.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 72.202166 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 6.925000 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(testing::internal::CartesianProductGenerator9< T1, T2, T3, T4, T5, T6, T7, T8, T9 >) cw +(testing::internal::ParamGeneratorInterface< ::std::tuple< T1, T2, T3, T4, T5, T6, T7, T8, T9 > >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (testing::internal::CartesianProductGenerator9< T1, T2, T3, T4, T5, T6, T7, T8, T9 >) 0.000000 0.000000 box + (testing::internal::ParamGeneratorInterface< ::std::tuple< T1, T2, T3, T4, T5, T6, T7, T8, T9 > >) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator9.tex b/doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator9.tex new file mode 100644 index 0000000..448c004 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_cartesian_product_generator9.tex @@ -0,0 +1,115 @@ +\hypertarget{classtesting_1_1internal_1_1_cartesian_product_generator9}{}\section{testing\+:\+:internal\+:\+:Cartesian\+Product\+Generator9$<$ T1, T2, T3, T4, T5, T6, T7, T8, T9 $>$ Class Template Reference} +\label{classtesting_1_1internal_1_1_cartesian_product_generator9}\index{testing\+::internal\+::\+Cartesian\+Product\+Generator9$<$ T1, T2, T3, T4, T5, T6, T7, T8, T9 $>$@{testing\+::internal\+::\+Cartesian\+Product\+Generator9$<$ T1, T2, T3, T4, T5, T6, T7, T8, T9 $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +Inheritance diagram for testing\+:\+:internal\+:\+:Cartesian\+Product\+Generator9$<$ T1, T2, T3, T4, T5, T6, T7, T8, T9 $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{classtesting_1_1internal_1_1_cartesian_product_generator9} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +typedef \+::std\+::tuple$<$ T1, T2, T3, T4, T5, T6, T7, T8, T9 $>$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator9_a86742cdf8f015ff11f7a40f0b66179c7}{Param\+Type}} +\end{DoxyCompactItemize} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator9_aff06c7992c06297c6bf5ad5eb56534e9}{Cartesian\+Product\+Generator9}} (const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T1 $>$ \&g1, const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T2 $>$ \&g2, const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T3 $>$ \&g3, const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T4 $>$ \&g4, const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T5 $>$ \&g5, const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T6 $>$ \&g6, const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T7 $>$ \&g7, const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T8 $>$ \&g8, const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T9 $>$ \&g9) +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator9_ab1b886bfb8c9c2c575ee4f9da61e3180}{$\sim$\+Cartesian\+Product\+Generator9}} () override +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{Param\+Iterator\+Interface}}$<$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator9_a86742cdf8f015ff11f7a40f0b66179c7}{Param\+Type}} $>$ $\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator9_a8fc8d5664560c3a788fe51903f896429}{Begin}} () const override +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{Param\+Iterator\+Interface}}$<$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator9_a86742cdf8f015ff11f7a40f0b66179c7}{Param\+Type}} $>$ $\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator9_a60476505c616957d1a04a31d1635df6d}{End}} () const override +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8, typename T9$>$\newline +class testing\+::internal\+::\+Cartesian\+Product\+Generator9$<$ T1, T2, T3, T4, T5, T6, T7, T8, T9 $>$} + + + +Definition at line 12541 of file gtest.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_generator9_a86742cdf8f015ff11f7a40f0b66179c7}\label{classtesting_1_1internal_1_1_cartesian_product_generator9_a86742cdf8f015ff11f7a40f0b66179c7}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Generator9@{testing\+::internal\+::\+Cartesian\+Product\+Generator9}!Param\+Type@{Param\+Type}} +\index{Param\+Type@{Param\+Type}!testing\+::internal\+::\+Cartesian\+Product\+Generator9@{testing\+::internal\+::\+Cartesian\+Product\+Generator9}} +\subsubsection{\texorpdfstring{Param\+Type}{ParamType}} +{\footnotesize\ttfamily template$<$typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 $>$ \\ +typedef \+::std\+::tuple$<$T1, T2, T3, T4, T5, T6, T7, T8, T9$>$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator9}{testing\+::internal\+::\+Cartesian\+Product\+Generator9}}$<$ T1, T2, T3, T4, T5, T6, T7, T8, T9 $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator9_a86742cdf8f015ff11f7a40f0b66179c7}{Param\+Type}}} + + + +Definition at line 12545 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_generator9_aff06c7992c06297c6bf5ad5eb56534e9}\label{classtesting_1_1internal_1_1_cartesian_product_generator9_aff06c7992c06297c6bf5ad5eb56534e9}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Generator9@{testing\+::internal\+::\+Cartesian\+Product\+Generator9}!Cartesian\+Product\+Generator9@{Cartesian\+Product\+Generator9}} +\index{Cartesian\+Product\+Generator9@{Cartesian\+Product\+Generator9}!testing\+::internal\+::\+Cartesian\+Product\+Generator9@{testing\+::internal\+::\+Cartesian\+Product\+Generator9}} +\subsubsection{\texorpdfstring{Cartesian\+Product\+Generator9()}{CartesianProductGenerator9()}} +{\footnotesize\ttfamily template$<$typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator9}{testing\+::internal\+::\+Cartesian\+Product\+Generator9}}$<$ T1, T2, T3, T4, T5, T6, T7, T8, T9 $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator9}{Cartesian\+Product\+Generator9}} (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T1 $>$ \&}]{g1, }\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T2 $>$ \&}]{g2, }\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T3 $>$ \&}]{g3, }\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T4 $>$ \&}]{g4, }\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T5 $>$ \&}]{g5, }\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T6 $>$ \&}]{g6, }\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T7 $>$ \&}]{g7, }\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T8 $>$ \&}]{g8, }\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T9 $>$ \&}]{g9 }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 12547 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_generator9_ab1b886bfb8c9c2c575ee4f9da61e3180}\label{classtesting_1_1internal_1_1_cartesian_product_generator9_ab1b886bfb8c9c2c575ee4f9da61e3180}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Generator9@{testing\+::internal\+::\+Cartesian\+Product\+Generator9}!````~Cartesian\+Product\+Generator9@{$\sim$\+Cartesian\+Product\+Generator9}} +\index{````~Cartesian\+Product\+Generator9@{$\sim$\+Cartesian\+Product\+Generator9}!testing\+::internal\+::\+Cartesian\+Product\+Generator9@{testing\+::internal\+::\+Cartesian\+Product\+Generator9}} +\subsubsection{\texorpdfstring{$\sim$\+Cartesian\+Product\+Generator9()}{~CartesianProductGenerator9()}} +{\footnotesize\ttfamily template$<$typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator9}{testing\+::internal\+::\+Cartesian\+Product\+Generator9}}$<$ T1, T2, T3, T4, T5, T6, T7, T8, T9 $>$\+::$\sim$\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator9}{Cartesian\+Product\+Generator9}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}} + + + +Definition at line 12554 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_generator9_a8fc8d5664560c3a788fe51903f896429}\label{classtesting_1_1internal_1_1_cartesian_product_generator9_a8fc8d5664560c3a788fe51903f896429}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Generator9@{testing\+::internal\+::\+Cartesian\+Product\+Generator9}!Begin@{Begin}} +\index{Begin@{Begin}!testing\+::internal\+::\+Cartesian\+Product\+Generator9@{testing\+::internal\+::\+Cartesian\+Product\+Generator9}} +\subsubsection{\texorpdfstring{Begin()}{Begin()}} +{\footnotesize\ttfamily template$<$typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{Param\+Iterator\+Interface}}$<$\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator9_a86742cdf8f015ff11f7a40f0b66179c7}{Param\+Type}}$>$$\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator9}{testing\+::internal\+::\+Cartesian\+Product\+Generator9}}$<$ T1, T2, T3, T4, T5, T6, T7, T8, T9 $>$\+::Begin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\ttfamily [virtual]}} + + + +Implements \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator_interface_ae1de83b16fe9a53c67778a026c6a9569}{testing\+::internal\+::\+Param\+Generator\+Interface$<$ \+::std\+::tuple$<$ T1, T2, T3, T4, T5, T6, T7, T8, T9 $>$ $>$}}. + + + +Definition at line 12556 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_generator9_a60476505c616957d1a04a31d1635df6d}\label{classtesting_1_1internal_1_1_cartesian_product_generator9_a60476505c616957d1a04a31d1635df6d}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Generator9@{testing\+::internal\+::\+Cartesian\+Product\+Generator9}!End@{End}} +\index{End@{End}!testing\+::internal\+::\+Cartesian\+Product\+Generator9@{testing\+::internal\+::\+Cartesian\+Product\+Generator9}} +\subsubsection{\texorpdfstring{End()}{End()}} +{\footnotesize\ttfamily template$<$typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{Param\+Iterator\+Interface}}$<$\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator9_a86742cdf8f015ff11f7a40f0b66179c7}{Param\+Type}}$>$$\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator9}{testing\+::internal\+::\+Cartesian\+Product\+Generator9}}$<$ T1, T2, T3, T4, T5, T6, T7, T8, T9 $>$\+::End (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\ttfamily [virtual]}} + + + +Implements \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator_interface_afa7211b74990e11d3fc7ad4e7113da4f}{testing\+::internal\+::\+Param\+Generator\+Interface$<$ \+::std\+::tuple$<$ T1, T2, T3, T4, T5, T6, T7, T8, T9 $>$ $>$}}. + + + +Definition at line 12561 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_cartesian_product_holder10.tex b/doc/latex/classtesting_1_1internal_1_1_cartesian_product_holder10.tex new file mode 100644 index 0000000..4eba6e7 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_cartesian_product_holder10.tex @@ -0,0 +1,57 @@ +\hypertarget{classtesting_1_1internal_1_1_cartesian_product_holder10}{}\section{testing\+:\+:internal\+:\+:Cartesian\+Product\+Holder10$<$ Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8, Generator9, Generator10 $>$ Class Template Reference} +\label{classtesting_1_1internal_1_1_cartesian_product_holder10}\index{testing\+::internal\+::\+Cartesian\+Product\+Holder10$<$ Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8, Generator9, Generator10 $>$@{testing\+::internal\+::\+Cartesian\+Product\+Holder10$<$ Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8, Generator9, Generator10 $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder10_a3255f824dd20e02b8bb718bb7d3d3634}{Cartesian\+Product\+Holder10}} (const Generator1 \&g1, const Generator2 \&g2, const Generator3 \&g3, const Generator4 \&g4, const Generator5 \&g5, const Generator6 \&g6, const Generator7 \&g7, const Generator8 \&g8, const Generator9 \&g9, const Generator10 \&g10) +\item +{\footnotesize template$<$typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 $>$ }\\\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder10_a1c9f9e026696dd2618bb7e9e19daf239}{operator Param\+Generator$<$ \+::std\+::tuple$<$ T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 $>$ $>$}} () const +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class Generator1, class Generator2, class Generator3, class Generator4, class Generator5, class Generator6, class Generator7, class Generator8, class Generator9, class Generator10$>$\newline +class testing\+::internal\+::\+Cartesian\+Product\+Holder10$<$ Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8, Generator9, Generator10 $>$} + + + +Definition at line 13295 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_holder10_a3255f824dd20e02b8bb718bb7d3d3634}\label{classtesting_1_1internal_1_1_cartesian_product_holder10_a3255f824dd20e02b8bb718bb7d3d3634}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Holder10@{testing\+::internal\+::\+Cartesian\+Product\+Holder10}!Cartesian\+Product\+Holder10@{Cartesian\+Product\+Holder10}} +\index{Cartesian\+Product\+Holder10@{Cartesian\+Product\+Holder10}!testing\+::internal\+::\+Cartesian\+Product\+Holder10@{testing\+::internal\+::\+Cartesian\+Product\+Holder10}} +\subsubsection{\texorpdfstring{Cartesian\+Product\+Holder10()}{CartesianProductHolder10()}} +{\footnotesize\ttfamily template$<$class Generator1 , class Generator2 , class Generator3 , class Generator4 , class Generator5 , class Generator6 , class Generator7 , class Generator8 , class Generator9 , class Generator10 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder10}{testing\+::internal\+::\+Cartesian\+Product\+Holder10}}$<$ Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8, Generator9, Generator10 $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder10}{Cartesian\+Product\+Holder10}} (\begin{DoxyParamCaption}\item[{const Generator1 \&}]{g1, }\item[{const Generator2 \&}]{g2, }\item[{const Generator3 \&}]{g3, }\item[{const Generator4 \&}]{g4, }\item[{const Generator5 \&}]{g5, }\item[{const Generator6 \&}]{g6, }\item[{const Generator7 \&}]{g7, }\item[{const Generator8 \&}]{g8, }\item[{const Generator9 \&}]{g9, }\item[{const Generator10 \&}]{g10 }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 13297 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_holder10_a1c9f9e026696dd2618bb7e9e19daf239}\label{classtesting_1_1internal_1_1_cartesian_product_holder10_a1c9f9e026696dd2618bb7e9e19daf239}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Holder10@{testing\+::internal\+::\+Cartesian\+Product\+Holder10}!operator Param\+Generator$<$ \+::std\+::tuple$<$ T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 $>$ $>$@{operator Param\+Generator$<$ \+::std\+::tuple$<$ T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 $>$ $>$}} +\index{operator Param\+Generator$<$ \+::std\+::tuple$<$ T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 $>$ $>$@{operator Param\+Generator$<$ \+::std\+::tuple$<$ T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 $>$ $>$}!testing\+::internal\+::\+Cartesian\+Product\+Holder10@{testing\+::internal\+::\+Cartesian\+Product\+Holder10}} +\subsubsection{\texorpdfstring{operator Param\+Generator$<$ \+::std\+::tuple$<$ T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 $>$ $>$()}{operator ParamGenerator< ::std::tuple< T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 > >()}} +{\footnotesize\ttfamily template$<$class Generator1 , class Generator2 , class Generator3 , class Generator4 , class Generator5 , class Generator6 , class Generator7 , class Generator8 , class Generator9 , class Generator10 $>$ \\ +template$<$typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder10}{testing\+::internal\+::\+Cartesian\+Product\+Holder10}}$<$ Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8, Generator9, Generator10 $>$\+::operator \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ \+::std\+::tuple$<$ T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 $>$ $>$ (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 13306 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_cartesian_product_holder2.tex b/doc/latex/classtesting_1_1internal_1_1_cartesian_product_holder2.tex new file mode 100644 index 0000000..f692d44 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_cartesian_product_holder2.tex @@ -0,0 +1,57 @@ +\hypertarget{classtesting_1_1internal_1_1_cartesian_product_holder2}{}\section{testing\+:\+:internal\+:\+:Cartesian\+Product\+Holder2$<$ Generator1, Generator2 $>$ Class Template Reference} +\label{classtesting_1_1internal_1_1_cartesian_product_holder2}\index{testing\+::internal\+::\+Cartesian\+Product\+Holder2$<$ Generator1, Generator2 $>$@{testing\+::internal\+::\+Cartesian\+Product\+Holder2$<$ Generator1, Generator2 $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder2_a504471500c3171f7efee84b830004ff9}{Cartesian\+Product\+Holder2}} (const Generator1 \&g1, const Generator2 \&g2) +\item +{\footnotesize template$<$typename T1 , typename T2 $>$ }\\\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder2_afa0052d44ded139ca23a270375d28e6a}{operator Param\+Generator$<$ \+::std\+::tuple$<$ T1, T2 $>$ $>$}} () const +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class Generator1, class Generator2$>$\newline +class testing\+::internal\+::\+Cartesian\+Product\+Holder2$<$ Generator1, Generator2 $>$} + + + +Definition at line 13041 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_holder2_a504471500c3171f7efee84b830004ff9}\label{classtesting_1_1internal_1_1_cartesian_product_holder2_a504471500c3171f7efee84b830004ff9}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Holder2@{testing\+::internal\+::\+Cartesian\+Product\+Holder2}!Cartesian\+Product\+Holder2@{Cartesian\+Product\+Holder2}} +\index{Cartesian\+Product\+Holder2@{Cartesian\+Product\+Holder2}!testing\+::internal\+::\+Cartesian\+Product\+Holder2@{testing\+::internal\+::\+Cartesian\+Product\+Holder2}} +\subsubsection{\texorpdfstring{Cartesian\+Product\+Holder2()}{CartesianProductHolder2()}} +{\footnotesize\ttfamily template$<$class Generator1, class Generator2$>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder2}{testing\+::internal\+::\+Cartesian\+Product\+Holder2}}$<$ Generator1, Generator2 $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder2}{Cartesian\+Product\+Holder2}} (\begin{DoxyParamCaption}\item[{const Generator1 \&}]{g1, }\item[{const Generator2 \&}]{g2 }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 13043 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_holder2_afa0052d44ded139ca23a270375d28e6a}\label{classtesting_1_1internal_1_1_cartesian_product_holder2_afa0052d44ded139ca23a270375d28e6a}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Holder2@{testing\+::internal\+::\+Cartesian\+Product\+Holder2}!operator Param\+Generator$<$ \+::std\+::tuple$<$ T1, T2 $>$ $>$@{operator Param\+Generator$<$ \+::std\+::tuple$<$ T1, T2 $>$ $>$}} +\index{operator Param\+Generator$<$ \+::std\+::tuple$<$ T1, T2 $>$ $>$@{operator Param\+Generator$<$ \+::std\+::tuple$<$ T1, T2 $>$ $>$}!testing\+::internal\+::\+Cartesian\+Product\+Holder2@{testing\+::internal\+::\+Cartesian\+Product\+Holder2}} +\subsubsection{\texorpdfstring{operator Param\+Generator$<$ \+::std\+::tuple$<$ T1, T2 $>$ $>$()}{operator ParamGenerator< ::std::tuple< T1, T2 > >()}} +{\footnotesize\ttfamily template$<$class Generator1, class Generator2$>$ \\ +template$<$typename T1 , typename T2 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder2}{testing\+::internal\+::\+Cartesian\+Product\+Holder2}}$<$ Generator1, Generator2 $>$\+::operator \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ \+::std\+::tuple$<$ T1, T2 $>$ $>$ (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 13046 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_cartesian_product_holder3.tex b/doc/latex/classtesting_1_1internal_1_1_cartesian_product_holder3.tex new file mode 100644 index 0000000..8fa1443 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_cartesian_product_holder3.tex @@ -0,0 +1,57 @@ +\hypertarget{classtesting_1_1internal_1_1_cartesian_product_holder3}{}\section{testing\+:\+:internal\+:\+:Cartesian\+Product\+Holder3$<$ Generator1, Generator2, Generator3 $>$ Class Template Reference} +\label{classtesting_1_1internal_1_1_cartesian_product_holder3}\index{testing\+::internal\+::\+Cartesian\+Product\+Holder3$<$ Generator1, Generator2, Generator3 $>$@{testing\+::internal\+::\+Cartesian\+Product\+Holder3$<$ Generator1, Generator2, Generator3 $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder3_ad74b6d31441c7f3f7f8514a563c8277e}{Cartesian\+Product\+Holder3}} (const Generator1 \&g1, const Generator2 \&g2, const Generator3 \&g3) +\item +{\footnotesize template$<$typename T1 , typename T2 , typename T3 $>$ }\\\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder3_a10074f00be0b5069dbc67ef5c66fbf0c}{operator Param\+Generator$<$ \+::std\+::tuple$<$ T1, T2, T3 $>$ $>$}} () const +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class Generator1, class Generator2, class Generator3$>$\newline +class testing\+::internal\+::\+Cartesian\+Product\+Holder3$<$ Generator1, Generator2, Generator3 $>$} + + + +Definition at line 13062 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_holder3_ad74b6d31441c7f3f7f8514a563c8277e}\label{classtesting_1_1internal_1_1_cartesian_product_holder3_ad74b6d31441c7f3f7f8514a563c8277e}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Holder3@{testing\+::internal\+::\+Cartesian\+Product\+Holder3}!Cartesian\+Product\+Holder3@{Cartesian\+Product\+Holder3}} +\index{Cartesian\+Product\+Holder3@{Cartesian\+Product\+Holder3}!testing\+::internal\+::\+Cartesian\+Product\+Holder3@{testing\+::internal\+::\+Cartesian\+Product\+Holder3}} +\subsubsection{\texorpdfstring{Cartesian\+Product\+Holder3()}{CartesianProductHolder3()}} +{\footnotesize\ttfamily template$<$class Generator1, class Generator2, class Generator3$>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder3}{testing\+::internal\+::\+Cartesian\+Product\+Holder3}}$<$ Generator1, Generator2, Generator3 $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder3}{Cartesian\+Product\+Holder3}} (\begin{DoxyParamCaption}\item[{const Generator1 \&}]{g1, }\item[{const Generator2 \&}]{g2, }\item[{const Generator3 \&}]{g3 }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 13064 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_holder3_a10074f00be0b5069dbc67ef5c66fbf0c}\label{classtesting_1_1internal_1_1_cartesian_product_holder3_a10074f00be0b5069dbc67ef5c66fbf0c}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Holder3@{testing\+::internal\+::\+Cartesian\+Product\+Holder3}!operator Param\+Generator$<$ \+::std\+::tuple$<$ T1, T2, T3 $>$ $>$@{operator Param\+Generator$<$ \+::std\+::tuple$<$ T1, T2, T3 $>$ $>$}} +\index{operator Param\+Generator$<$ \+::std\+::tuple$<$ T1, T2, T3 $>$ $>$@{operator Param\+Generator$<$ \+::std\+::tuple$<$ T1, T2, T3 $>$ $>$}!testing\+::internal\+::\+Cartesian\+Product\+Holder3@{testing\+::internal\+::\+Cartesian\+Product\+Holder3}} +\subsubsection{\texorpdfstring{operator Param\+Generator$<$ \+::std\+::tuple$<$ T1, T2, T3 $>$ $>$()}{operator ParamGenerator< ::std::tuple< T1, T2, T3 > >()}} +{\footnotesize\ttfamily template$<$class Generator1, class Generator2, class Generator3$>$ \\ +template$<$typename T1 , typename T2 , typename T3 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder3}{testing\+::internal\+::\+Cartesian\+Product\+Holder3}}$<$ Generator1, Generator2, Generator3 $>$\+::operator \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ \+::std\+::tuple$<$ T1, T2, T3 $>$ $>$ (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 13068 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_cartesian_product_holder4.tex b/doc/latex/classtesting_1_1internal_1_1_cartesian_product_holder4.tex new file mode 100644 index 0000000..eaf0fe2 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_cartesian_product_holder4.tex @@ -0,0 +1,57 @@ +\hypertarget{classtesting_1_1internal_1_1_cartesian_product_holder4}{}\section{testing\+:\+:internal\+:\+:Cartesian\+Product\+Holder4$<$ Generator1, Generator2, Generator3, Generator4 $>$ Class Template Reference} +\label{classtesting_1_1internal_1_1_cartesian_product_holder4}\index{testing\+::internal\+::\+Cartesian\+Product\+Holder4$<$ Generator1, Generator2, Generator3, Generator4 $>$@{testing\+::internal\+::\+Cartesian\+Product\+Holder4$<$ Generator1, Generator2, Generator3, Generator4 $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder4_a07fe92a091d7717a159d7ba5f2fe3c75}{Cartesian\+Product\+Holder4}} (const Generator1 \&g1, const Generator2 \&g2, const Generator3 \&g3, const Generator4 \&g4) +\item +{\footnotesize template$<$typename T1 , typename T2 , typename T3 , typename T4 $>$ }\\\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder4_a6138a6d2767e2381266fe8676adbdd0b}{operator Param\+Generator$<$ \+::std\+::tuple$<$ T1, T2, T3, T4 $>$ $>$}} () const +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class Generator1, class Generator2, class Generator3, class Generator4$>$\newline +class testing\+::internal\+::\+Cartesian\+Product\+Holder4$<$ Generator1, Generator2, Generator3, Generator4 $>$} + + + +Definition at line 13087 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_holder4_a07fe92a091d7717a159d7ba5f2fe3c75}\label{classtesting_1_1internal_1_1_cartesian_product_holder4_a07fe92a091d7717a159d7ba5f2fe3c75}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Holder4@{testing\+::internal\+::\+Cartesian\+Product\+Holder4}!Cartesian\+Product\+Holder4@{Cartesian\+Product\+Holder4}} +\index{Cartesian\+Product\+Holder4@{Cartesian\+Product\+Holder4}!testing\+::internal\+::\+Cartesian\+Product\+Holder4@{testing\+::internal\+::\+Cartesian\+Product\+Holder4}} +\subsubsection{\texorpdfstring{Cartesian\+Product\+Holder4()}{CartesianProductHolder4()}} +{\footnotesize\ttfamily template$<$class Generator1 , class Generator2 , class Generator3 , class Generator4 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder4}{testing\+::internal\+::\+Cartesian\+Product\+Holder4}}$<$ Generator1, Generator2, Generator3, Generator4 $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder4}{Cartesian\+Product\+Holder4}} (\begin{DoxyParamCaption}\item[{const Generator1 \&}]{g1, }\item[{const Generator2 \&}]{g2, }\item[{const Generator3 \&}]{g3, }\item[{const Generator4 \&}]{g4 }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 13089 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_holder4_a6138a6d2767e2381266fe8676adbdd0b}\label{classtesting_1_1internal_1_1_cartesian_product_holder4_a6138a6d2767e2381266fe8676adbdd0b}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Holder4@{testing\+::internal\+::\+Cartesian\+Product\+Holder4}!operator Param\+Generator$<$ \+::std\+::tuple$<$ T1, T2, T3, T4 $>$ $>$@{operator Param\+Generator$<$ \+::std\+::tuple$<$ T1, T2, T3, T4 $>$ $>$}} +\index{operator Param\+Generator$<$ \+::std\+::tuple$<$ T1, T2, T3, T4 $>$ $>$@{operator Param\+Generator$<$ \+::std\+::tuple$<$ T1, T2, T3, T4 $>$ $>$}!testing\+::internal\+::\+Cartesian\+Product\+Holder4@{testing\+::internal\+::\+Cartesian\+Product\+Holder4}} +\subsubsection{\texorpdfstring{operator Param\+Generator$<$ \+::std\+::tuple$<$ T1, T2, T3, T4 $>$ $>$()}{operator ParamGenerator< ::std::tuple< T1, T2, T3, T4 > >()}} +{\footnotesize\ttfamily template$<$class Generator1 , class Generator2 , class Generator3 , class Generator4 $>$ \\ +template$<$typename T1 , typename T2 , typename T3 , typename T4 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder4}{testing\+::internal\+::\+Cartesian\+Product\+Holder4}}$<$ Generator1, Generator2, Generator3, Generator4 $>$\+::operator \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ \+::std\+::tuple$<$ T1, T2, T3, T4 $>$ $>$ (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 13093 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_cartesian_product_holder5.tex b/doc/latex/classtesting_1_1internal_1_1_cartesian_product_holder5.tex new file mode 100644 index 0000000..ee62c96 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_cartesian_product_holder5.tex @@ -0,0 +1,57 @@ +\hypertarget{classtesting_1_1internal_1_1_cartesian_product_holder5}{}\section{testing\+:\+:internal\+:\+:Cartesian\+Product\+Holder5$<$ Generator1, Generator2, Generator3, Generator4, Generator5 $>$ Class Template Reference} +\label{classtesting_1_1internal_1_1_cartesian_product_holder5}\index{testing\+::internal\+::\+Cartesian\+Product\+Holder5$<$ Generator1, Generator2, Generator3, Generator4, Generator5 $>$@{testing\+::internal\+::\+Cartesian\+Product\+Holder5$<$ Generator1, Generator2, Generator3, Generator4, Generator5 $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder5_afb3a413ff0e59f31e621937f968d0923}{Cartesian\+Product\+Holder5}} (const Generator1 \&g1, const Generator2 \&g2, const Generator3 \&g3, const Generator4 \&g4, const Generator5 \&g5) +\item +{\footnotesize template$<$typename T1 , typename T2 , typename T3 , typename T4 , typename T5 $>$ }\\\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder5_aff2bd642fe8c52a2b9235e7c9c08cf26}{operator Param\+Generator$<$ \+::std\+::tuple$<$ T1, T2, T3, T4, T5 $>$ $>$}} () const +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class Generator1, class Generator2, class Generator3, class Generator4, class Generator5$>$\newline +class testing\+::internal\+::\+Cartesian\+Product\+Holder5$<$ Generator1, Generator2, Generator3, Generator4, Generator5 $>$} + + + +Definition at line 13114 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_holder5_afb3a413ff0e59f31e621937f968d0923}\label{classtesting_1_1internal_1_1_cartesian_product_holder5_afb3a413ff0e59f31e621937f968d0923}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Holder5@{testing\+::internal\+::\+Cartesian\+Product\+Holder5}!Cartesian\+Product\+Holder5@{Cartesian\+Product\+Holder5}} +\index{Cartesian\+Product\+Holder5@{Cartesian\+Product\+Holder5}!testing\+::internal\+::\+Cartesian\+Product\+Holder5@{testing\+::internal\+::\+Cartesian\+Product\+Holder5}} +\subsubsection{\texorpdfstring{Cartesian\+Product\+Holder5()}{CartesianProductHolder5()}} +{\footnotesize\ttfamily template$<$class Generator1 , class Generator2 , class Generator3 , class Generator4 , class Generator5 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder5}{testing\+::internal\+::\+Cartesian\+Product\+Holder5}}$<$ Generator1, Generator2, Generator3, Generator4, Generator5 $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder5}{Cartesian\+Product\+Holder5}} (\begin{DoxyParamCaption}\item[{const Generator1 \&}]{g1, }\item[{const Generator2 \&}]{g2, }\item[{const Generator3 \&}]{g3, }\item[{const Generator4 \&}]{g4, }\item[{const Generator5 \&}]{g5 }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 13116 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_holder5_aff2bd642fe8c52a2b9235e7c9c08cf26}\label{classtesting_1_1internal_1_1_cartesian_product_holder5_aff2bd642fe8c52a2b9235e7c9c08cf26}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Holder5@{testing\+::internal\+::\+Cartesian\+Product\+Holder5}!operator Param\+Generator$<$ \+::std\+::tuple$<$ T1, T2, T3, T4, T5 $>$ $>$@{operator Param\+Generator$<$ \+::std\+::tuple$<$ T1, T2, T3, T4, T5 $>$ $>$}} +\index{operator Param\+Generator$<$ \+::std\+::tuple$<$ T1, T2, T3, T4, T5 $>$ $>$@{operator Param\+Generator$<$ \+::std\+::tuple$<$ T1, T2, T3, T4, T5 $>$ $>$}!testing\+::internal\+::\+Cartesian\+Product\+Holder5@{testing\+::internal\+::\+Cartesian\+Product\+Holder5}} +\subsubsection{\texorpdfstring{operator Param\+Generator$<$ \+::std\+::tuple$<$ T1, T2, T3, T4, T5 $>$ $>$()}{operator ParamGenerator< ::std::tuple< T1, T2, T3, T4, T5 > >()}} +{\footnotesize\ttfamily template$<$class Generator1 , class Generator2 , class Generator3 , class Generator4 , class Generator5 $>$ \\ +template$<$typename T1 , typename T2 , typename T3 , typename T4 , typename T5 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder5}{testing\+::internal\+::\+Cartesian\+Product\+Holder5}}$<$ Generator1, Generator2, Generator3, Generator4, Generator5 $>$\+::operator \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ \+::std\+::tuple$<$ T1, T2, T3, T4, T5 $>$ $>$ (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 13120 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_cartesian_product_holder6.tex b/doc/latex/classtesting_1_1internal_1_1_cartesian_product_holder6.tex new file mode 100644 index 0000000..2d57e71 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_cartesian_product_holder6.tex @@ -0,0 +1,57 @@ +\hypertarget{classtesting_1_1internal_1_1_cartesian_product_holder6}{}\section{testing\+:\+:internal\+:\+:Cartesian\+Product\+Holder6$<$ Generator1, Generator2, Generator3, Generator4, Generator5, Generator6 $>$ Class Template Reference} +\label{classtesting_1_1internal_1_1_cartesian_product_holder6}\index{testing\+::internal\+::\+Cartesian\+Product\+Holder6$<$ Generator1, Generator2, Generator3, Generator4, Generator5, Generator6 $>$@{testing\+::internal\+::\+Cartesian\+Product\+Holder6$<$ Generator1, Generator2, Generator3, Generator4, Generator5, Generator6 $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder6_a7bb6f9224a1a6766e3634eb392e1b5f6}{Cartesian\+Product\+Holder6}} (const Generator1 \&g1, const Generator2 \&g2, const Generator3 \&g3, const Generator4 \&g4, const Generator5 \&g5, const Generator6 \&g6) +\item +{\footnotesize template$<$typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 $>$ }\\\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder6_aa913929b072ce064ba7d00f030e6e3ed}{operator Param\+Generator$<$ \+::std\+::tuple$<$ T1, T2, T3, T4, T5, T6 $>$ $>$}} () const +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class Generator1, class Generator2, class Generator3, class Generator4, class Generator5, class Generator6$>$\newline +class testing\+::internal\+::\+Cartesian\+Product\+Holder6$<$ Generator1, Generator2, Generator3, Generator4, Generator5, Generator6 $>$} + + + +Definition at line 13143 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_holder6_a7bb6f9224a1a6766e3634eb392e1b5f6}\label{classtesting_1_1internal_1_1_cartesian_product_holder6_a7bb6f9224a1a6766e3634eb392e1b5f6}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Holder6@{testing\+::internal\+::\+Cartesian\+Product\+Holder6}!Cartesian\+Product\+Holder6@{Cartesian\+Product\+Holder6}} +\index{Cartesian\+Product\+Holder6@{Cartesian\+Product\+Holder6}!testing\+::internal\+::\+Cartesian\+Product\+Holder6@{testing\+::internal\+::\+Cartesian\+Product\+Holder6}} +\subsubsection{\texorpdfstring{Cartesian\+Product\+Holder6()}{CartesianProductHolder6()}} +{\footnotesize\ttfamily template$<$class Generator1 , class Generator2 , class Generator3 , class Generator4 , class Generator5 , class Generator6 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder6}{testing\+::internal\+::\+Cartesian\+Product\+Holder6}}$<$ Generator1, Generator2, Generator3, Generator4, Generator5, Generator6 $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder6}{Cartesian\+Product\+Holder6}} (\begin{DoxyParamCaption}\item[{const Generator1 \&}]{g1, }\item[{const Generator2 \&}]{g2, }\item[{const Generator3 \&}]{g3, }\item[{const Generator4 \&}]{g4, }\item[{const Generator5 \&}]{g5, }\item[{const Generator6 \&}]{g6 }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 13145 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_holder6_aa913929b072ce064ba7d00f030e6e3ed}\label{classtesting_1_1internal_1_1_cartesian_product_holder6_aa913929b072ce064ba7d00f030e6e3ed}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Holder6@{testing\+::internal\+::\+Cartesian\+Product\+Holder6}!operator Param\+Generator$<$ \+::std\+::tuple$<$ T1, T2, T3, T4, T5, T6 $>$ $>$@{operator Param\+Generator$<$ \+::std\+::tuple$<$ T1, T2, T3, T4, T5, T6 $>$ $>$}} +\index{operator Param\+Generator$<$ \+::std\+::tuple$<$ T1, T2, T3, T4, T5, T6 $>$ $>$@{operator Param\+Generator$<$ \+::std\+::tuple$<$ T1, T2, T3, T4, T5, T6 $>$ $>$}!testing\+::internal\+::\+Cartesian\+Product\+Holder6@{testing\+::internal\+::\+Cartesian\+Product\+Holder6}} +\subsubsection{\texorpdfstring{operator Param\+Generator$<$ \+::std\+::tuple$<$ T1, T2, T3, T4, T5, T6 $>$ $>$()}{operator ParamGenerator< ::std::tuple< T1, T2, T3, T4, T5, T6 > >()}} +{\footnotesize\ttfamily template$<$class Generator1 , class Generator2 , class Generator3 , class Generator4 , class Generator5 , class Generator6 $>$ \\ +template$<$typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder6}{testing\+::internal\+::\+Cartesian\+Product\+Holder6}}$<$ Generator1, Generator2, Generator3, Generator4, Generator5, Generator6 $>$\+::operator \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ \+::std\+::tuple$<$ T1, T2, T3, T4, T5, T6 $>$ $>$ (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 13151 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_cartesian_product_holder7.tex b/doc/latex/classtesting_1_1internal_1_1_cartesian_product_holder7.tex new file mode 100644 index 0000000..0c9fc4f --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_cartesian_product_holder7.tex @@ -0,0 +1,57 @@ +\hypertarget{classtesting_1_1internal_1_1_cartesian_product_holder7}{}\section{testing\+:\+:internal\+:\+:Cartesian\+Product\+Holder7$<$ Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7 $>$ Class Template Reference} +\label{classtesting_1_1internal_1_1_cartesian_product_holder7}\index{testing\+::internal\+::\+Cartesian\+Product\+Holder7$<$ Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7 $>$@{testing\+::internal\+::\+Cartesian\+Product\+Holder7$<$ Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7 $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder7_a289e661f9252bac3570700410eb041b3}{Cartesian\+Product\+Holder7}} (const Generator1 \&g1, const Generator2 \&g2, const Generator3 \&g3, const Generator4 \&g4, const Generator5 \&g5, const Generator6 \&g6, const Generator7 \&g7) +\item +{\footnotesize template$<$typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 $>$ }\\\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder7_aef46f61ddac11f5daaf7ba59b0616c36}{operator Param\+Generator$<$ \+::std\+::tuple$<$ T1, T2, T3, T4, T5, T6, T7 $>$ $>$}} () const +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class Generator1, class Generator2, class Generator3, class Generator4, class Generator5, class Generator6, class Generator7$>$\newline +class testing\+::internal\+::\+Cartesian\+Product\+Holder7$<$ Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7 $>$} + + + +Definition at line 13176 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_holder7_a289e661f9252bac3570700410eb041b3}\label{classtesting_1_1internal_1_1_cartesian_product_holder7_a289e661f9252bac3570700410eb041b3}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Holder7@{testing\+::internal\+::\+Cartesian\+Product\+Holder7}!Cartesian\+Product\+Holder7@{Cartesian\+Product\+Holder7}} +\index{Cartesian\+Product\+Holder7@{Cartesian\+Product\+Holder7}!testing\+::internal\+::\+Cartesian\+Product\+Holder7@{testing\+::internal\+::\+Cartesian\+Product\+Holder7}} +\subsubsection{\texorpdfstring{Cartesian\+Product\+Holder7()}{CartesianProductHolder7()}} +{\footnotesize\ttfamily template$<$class Generator1 , class Generator2 , class Generator3 , class Generator4 , class Generator5 , class Generator6 , class Generator7 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder7}{testing\+::internal\+::\+Cartesian\+Product\+Holder7}}$<$ Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7 $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder7}{Cartesian\+Product\+Holder7}} (\begin{DoxyParamCaption}\item[{const Generator1 \&}]{g1, }\item[{const Generator2 \&}]{g2, }\item[{const Generator3 \&}]{g3, }\item[{const Generator4 \&}]{g4, }\item[{const Generator5 \&}]{g5, }\item[{const Generator6 \&}]{g6, }\item[{const Generator7 \&}]{g7 }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 13178 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_holder7_aef46f61ddac11f5daaf7ba59b0616c36}\label{classtesting_1_1internal_1_1_cartesian_product_holder7_aef46f61ddac11f5daaf7ba59b0616c36}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Holder7@{testing\+::internal\+::\+Cartesian\+Product\+Holder7}!operator Param\+Generator$<$ \+::std\+::tuple$<$ T1, T2, T3, T4, T5, T6, T7 $>$ $>$@{operator Param\+Generator$<$ \+::std\+::tuple$<$ T1, T2, T3, T4, T5, T6, T7 $>$ $>$}} +\index{operator Param\+Generator$<$ \+::std\+::tuple$<$ T1, T2, T3, T4, T5, T6, T7 $>$ $>$@{operator Param\+Generator$<$ \+::std\+::tuple$<$ T1, T2, T3, T4, T5, T6, T7 $>$ $>$}!testing\+::internal\+::\+Cartesian\+Product\+Holder7@{testing\+::internal\+::\+Cartesian\+Product\+Holder7}} +\subsubsection{\texorpdfstring{operator Param\+Generator$<$ \+::std\+::tuple$<$ T1, T2, T3, T4, T5, T6, T7 $>$ $>$()}{operator ParamGenerator< ::std::tuple< T1, T2, T3, T4, T5, T6, T7 > >()}} +{\footnotesize\ttfamily template$<$class Generator1 , class Generator2 , class Generator3 , class Generator4 , class Generator5 , class Generator6 , class Generator7 $>$ \\ +template$<$typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder7}{testing\+::internal\+::\+Cartesian\+Product\+Holder7}}$<$ Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7 $>$\+::operator \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ \+::std\+::tuple$<$ T1, T2, T3, T4, T5, T6, T7 $>$ $>$ (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 13184 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_cartesian_product_holder8.tex b/doc/latex/classtesting_1_1internal_1_1_cartesian_product_holder8.tex new file mode 100644 index 0000000..2c4269a --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_cartesian_product_holder8.tex @@ -0,0 +1,57 @@ +\hypertarget{classtesting_1_1internal_1_1_cartesian_product_holder8}{}\section{testing\+:\+:internal\+:\+:Cartesian\+Product\+Holder8$<$ Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8 $>$ Class Template Reference} +\label{classtesting_1_1internal_1_1_cartesian_product_holder8}\index{testing\+::internal\+::\+Cartesian\+Product\+Holder8$<$ Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8 $>$@{testing\+::internal\+::\+Cartesian\+Product\+Holder8$<$ Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8 $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder8_adacdd7a2e15963d1b2f559d65f6b2aac}{Cartesian\+Product\+Holder8}} (const Generator1 \&g1, const Generator2 \&g2, const Generator3 \&g3, const Generator4 \&g4, const Generator5 \&g5, const Generator6 \&g6, const Generator7 \&g7, const Generator8 \&g8) +\item +{\footnotesize template$<$typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 $>$ }\\\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder8_a19baa0d0ec826f2e10ffaafffcfdee3f}{operator Param\+Generator$<$ \+::std\+::tuple$<$ T1, T2, T3, T4, T5, T6, T7, T8 $>$ $>$}} () const +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class Generator1, class Generator2, class Generator3, class Generator4, class Generator5, class Generator6, class Generator7, class Generator8$>$\newline +class testing\+::internal\+::\+Cartesian\+Product\+Holder8$<$ Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8 $>$} + + + +Definition at line 13212 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_holder8_adacdd7a2e15963d1b2f559d65f6b2aac}\label{classtesting_1_1internal_1_1_cartesian_product_holder8_adacdd7a2e15963d1b2f559d65f6b2aac}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Holder8@{testing\+::internal\+::\+Cartesian\+Product\+Holder8}!Cartesian\+Product\+Holder8@{Cartesian\+Product\+Holder8}} +\index{Cartesian\+Product\+Holder8@{Cartesian\+Product\+Holder8}!testing\+::internal\+::\+Cartesian\+Product\+Holder8@{testing\+::internal\+::\+Cartesian\+Product\+Holder8}} +\subsubsection{\texorpdfstring{Cartesian\+Product\+Holder8()}{CartesianProductHolder8()}} +{\footnotesize\ttfamily template$<$class Generator1 , class Generator2 , class Generator3 , class Generator4 , class Generator5 , class Generator6 , class Generator7 , class Generator8 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder8}{testing\+::internal\+::\+Cartesian\+Product\+Holder8}}$<$ Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8 $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder8}{Cartesian\+Product\+Holder8}} (\begin{DoxyParamCaption}\item[{const Generator1 \&}]{g1, }\item[{const Generator2 \&}]{g2, }\item[{const Generator3 \&}]{g3, }\item[{const Generator4 \&}]{g4, }\item[{const Generator5 \&}]{g5, }\item[{const Generator6 \&}]{g6, }\item[{const Generator7 \&}]{g7, }\item[{const Generator8 \&}]{g8 }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 13214 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_holder8_a19baa0d0ec826f2e10ffaafffcfdee3f}\label{classtesting_1_1internal_1_1_cartesian_product_holder8_a19baa0d0ec826f2e10ffaafffcfdee3f}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Holder8@{testing\+::internal\+::\+Cartesian\+Product\+Holder8}!operator Param\+Generator$<$ \+::std\+::tuple$<$ T1, T2, T3, T4, T5, T6, T7, T8 $>$ $>$@{operator Param\+Generator$<$ \+::std\+::tuple$<$ T1, T2, T3, T4, T5, T6, T7, T8 $>$ $>$}} +\index{operator Param\+Generator$<$ \+::std\+::tuple$<$ T1, T2, T3, T4, T5, T6, T7, T8 $>$ $>$@{operator Param\+Generator$<$ \+::std\+::tuple$<$ T1, T2, T3, T4, T5, T6, T7, T8 $>$ $>$}!testing\+::internal\+::\+Cartesian\+Product\+Holder8@{testing\+::internal\+::\+Cartesian\+Product\+Holder8}} +\subsubsection{\texorpdfstring{operator Param\+Generator$<$ \+::std\+::tuple$<$ T1, T2, T3, T4, T5, T6, T7, T8 $>$ $>$()}{operator ParamGenerator< ::std::tuple< T1, T2, T3, T4, T5, T6, T7, T8 > >()}} +{\footnotesize\ttfamily template$<$class Generator1 , class Generator2 , class Generator3 , class Generator4 , class Generator5 , class Generator6 , class Generator7 , class Generator8 $>$ \\ +template$<$typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder8}{testing\+::internal\+::\+Cartesian\+Product\+Holder8}}$<$ Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8 $>$\+::operator \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ \+::std\+::tuple$<$ T1, T2, T3, T4, T5, T6, T7, T8 $>$ $>$ (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 13222 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_cartesian_product_holder9.tex b/doc/latex/classtesting_1_1internal_1_1_cartesian_product_holder9.tex new file mode 100644 index 0000000..114c553 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_cartesian_product_holder9.tex @@ -0,0 +1,57 @@ +\hypertarget{classtesting_1_1internal_1_1_cartesian_product_holder9}{}\section{testing\+:\+:internal\+:\+:Cartesian\+Product\+Holder9$<$ Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8, Generator9 $>$ Class Template Reference} +\label{classtesting_1_1internal_1_1_cartesian_product_holder9}\index{testing\+::internal\+::\+Cartesian\+Product\+Holder9$<$ Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8, Generator9 $>$@{testing\+::internal\+::\+Cartesian\+Product\+Holder9$<$ Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8, Generator9 $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder9_a692a537863ab6adfc4001564887a3bc7}{Cartesian\+Product\+Holder9}} (const Generator1 \&g1, const Generator2 \&g2, const Generator3 \&g3, const Generator4 \&g4, const Generator5 \&g5, const Generator6 \&g6, const Generator7 \&g7, const Generator8 \&g8, const Generator9 \&g9) +\item +{\footnotesize template$<$typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 $>$ }\\\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder9_aafc7ce193dd88fc179d5a0c58eede7da}{operator Param\+Generator$<$ \+::std\+::tuple$<$ T1, T2, T3, T4, T5, T6, T7, T8, T9 $>$ $>$}} () const +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class Generator1, class Generator2, class Generator3, class Generator4, class Generator5, class Generator6, class Generator7, class Generator8, class Generator9$>$\newline +class testing\+::internal\+::\+Cartesian\+Product\+Holder9$<$ Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8, Generator9 $>$} + + + +Definition at line 13252 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_holder9_a692a537863ab6adfc4001564887a3bc7}\label{classtesting_1_1internal_1_1_cartesian_product_holder9_a692a537863ab6adfc4001564887a3bc7}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Holder9@{testing\+::internal\+::\+Cartesian\+Product\+Holder9}!Cartesian\+Product\+Holder9@{Cartesian\+Product\+Holder9}} +\index{Cartesian\+Product\+Holder9@{Cartesian\+Product\+Holder9}!testing\+::internal\+::\+Cartesian\+Product\+Holder9@{testing\+::internal\+::\+Cartesian\+Product\+Holder9}} +\subsubsection{\texorpdfstring{Cartesian\+Product\+Holder9()}{CartesianProductHolder9()}} +{\footnotesize\ttfamily template$<$class Generator1 , class Generator2 , class Generator3 , class Generator4 , class Generator5 , class Generator6 , class Generator7 , class Generator8 , class Generator9 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder9}{testing\+::internal\+::\+Cartesian\+Product\+Holder9}}$<$ Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8, Generator9 $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder9}{Cartesian\+Product\+Holder9}} (\begin{DoxyParamCaption}\item[{const Generator1 \&}]{g1, }\item[{const Generator2 \&}]{g2, }\item[{const Generator3 \&}]{g3, }\item[{const Generator4 \&}]{g4, }\item[{const Generator5 \&}]{g5, }\item[{const Generator6 \&}]{g6, }\item[{const Generator7 \&}]{g7, }\item[{const Generator8 \&}]{g8, }\item[{const Generator9 \&}]{g9 }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 13254 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_cartesian_product_holder9_aafc7ce193dd88fc179d5a0c58eede7da}\label{classtesting_1_1internal_1_1_cartesian_product_holder9_aafc7ce193dd88fc179d5a0c58eede7da}} +\index{testing\+::internal\+::\+Cartesian\+Product\+Holder9@{testing\+::internal\+::\+Cartesian\+Product\+Holder9}!operator Param\+Generator$<$ \+::std\+::tuple$<$ T1, T2, T3, T4, T5, T6, T7, T8, T9 $>$ $>$@{operator Param\+Generator$<$ \+::std\+::tuple$<$ T1, T2, T3, T4, T5, T6, T7, T8, T9 $>$ $>$}} +\index{operator Param\+Generator$<$ \+::std\+::tuple$<$ T1, T2, T3, T4, T5, T6, T7, T8, T9 $>$ $>$@{operator Param\+Generator$<$ \+::std\+::tuple$<$ T1, T2, T3, T4, T5, T6, T7, T8, T9 $>$ $>$}!testing\+::internal\+::\+Cartesian\+Product\+Holder9@{testing\+::internal\+::\+Cartesian\+Product\+Holder9}} +\subsubsection{\texorpdfstring{operator Param\+Generator$<$ \+::std\+::tuple$<$ T1, T2, T3, T4, T5, T6, T7, T8, T9 $>$ $>$()}{operator ParamGenerator< ::std::tuple< T1, T2, T3, T4, T5, T6, T7, T8, T9 > >()}} +{\footnotesize\ttfamily template$<$class Generator1 , class Generator2 , class Generator3 , class Generator4 , class Generator5 , class Generator6 , class Generator7 , class Generator8 , class Generator9 $>$ \\ +template$<$typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder9}{testing\+::internal\+::\+Cartesian\+Product\+Holder9}}$<$ Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8, Generator9 $>$\+::operator \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ \+::std\+::tuple$<$ T1, T2, T3, T4, T5, T6, T7, T8, T9 $>$ $>$ (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 13263 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_eq_helper.tex b/doc/latex/classtesting_1_1internal_1_1_eq_helper.tex new file mode 100644 index 0000000..83b2b16 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_eq_helper.tex @@ -0,0 +1,54 @@ +\hypertarget{classtesting_1_1internal_1_1_eq_helper}{}\section{testing\+:\+:internal\+:\+:Eq\+Helper$<$ lhs\+\_\+is\+\_\+null\+\_\+literal $>$ Class Template Reference} +\label{classtesting_1_1internal_1_1_eq_helper}\index{testing\+::internal\+::\+Eq\+Helper$<$ lhs\+\_\+is\+\_\+null\+\_\+literal $>$@{testing\+::internal\+::\+Eq\+Helper$<$ lhs\+\_\+is\+\_\+null\+\_\+literal $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Static Public Member Functions} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename T1 , typename T2 $>$ }\\static Assertion\+Result \mbox{\hyperlink{classtesting_1_1internal_1_1_eq_helper_ae3572c7374534a916b9117efaa89f33f}{Compare}} (const char $\ast$lhs\+\_\+expression, const char $\ast$rhs\+\_\+expression, const T1 \&lhs, const T2 \&rhs) +\item +static Assertion\+Result \mbox{\hyperlink{classtesting_1_1internal_1_1_eq_helper_aaa42c0059bb3dcc43d556243febb5f1c}{Compare}} (const char $\ast$lhs\+\_\+expression, const char $\ast$rhs\+\_\+expression, \mbox{\hyperlink{namespacetesting_1_1internal_a05c6bd9ede5ccdf25191a590d610dcc6}{Biggest\+Int}} lhs, \mbox{\hyperlink{namespacetesting_1_1internal_a05c6bd9ede5ccdf25191a590d610dcc6}{Biggest\+Int}} rhs) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$bool lhs\+\_\+is\+\_\+null\+\_\+literal$>$\newline +class testing\+::internal\+::\+Eq\+Helper$<$ lhs\+\_\+is\+\_\+null\+\_\+literal $>$} + + + +Definition at line 16135 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_eq_helper_ae3572c7374534a916b9117efaa89f33f}\label{classtesting_1_1internal_1_1_eq_helper_ae3572c7374534a916b9117efaa89f33f}} +\index{testing\+::internal\+::\+Eq\+Helper@{testing\+::internal\+::\+Eq\+Helper}!Compare@{Compare}} +\index{Compare@{Compare}!testing\+::internal\+::\+Eq\+Helper@{testing\+::internal\+::\+Eq\+Helper}} +\subsubsection{\texorpdfstring{Compare()}{Compare()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$bool lhs\+\_\+is\+\_\+null\+\_\+literal$>$ \\ +template$<$typename T1 , typename T2 $>$ \\ +static Assertion\+Result \mbox{\hyperlink{classtesting_1_1internal_1_1_eq_helper}{testing\+::internal\+::\+Eq\+Helper}}$<$ lhs\+\_\+is\+\_\+null\+\_\+literal $>$\+::Compare (\begin{DoxyParamCaption}\item[{const char $\ast$}]{lhs\+\_\+expression, }\item[{const char $\ast$}]{rhs\+\_\+expression, }\item[{const T1 \&}]{lhs, }\item[{const T2 \&}]{rhs }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}} + + + +Definition at line 16139 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_eq_helper_aaa42c0059bb3dcc43d556243febb5f1c}\label{classtesting_1_1internal_1_1_eq_helper_aaa42c0059bb3dcc43d556243febb5f1c}} +\index{testing\+::internal\+::\+Eq\+Helper@{testing\+::internal\+::\+Eq\+Helper}!Compare@{Compare}} +\index{Compare@{Compare}!testing\+::internal\+::\+Eq\+Helper@{testing\+::internal\+::\+Eq\+Helper}} +\subsubsection{\texorpdfstring{Compare()}{Compare()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$bool lhs\+\_\+is\+\_\+null\+\_\+literal$>$ \\ +static Assertion\+Result \mbox{\hyperlink{classtesting_1_1internal_1_1_eq_helper}{testing\+::internal\+::\+Eq\+Helper}}$<$ lhs\+\_\+is\+\_\+null\+\_\+literal $>$\+::Compare (\begin{DoxyParamCaption}\item[{const char $\ast$}]{lhs\+\_\+expression, }\item[{const char $\ast$}]{rhs\+\_\+expression, }\item[{\mbox{\hyperlink{namespacetesting_1_1internal_a05c6bd9ede5ccdf25191a590d610dcc6}{Biggest\+Int}}}]{lhs, }\item[{\mbox{\hyperlink{namespacetesting_1_1internal_a05c6bd9ede5ccdf25191a590d610dcc6}{Biggest\+Int}}}]{rhs }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}} + + + +Definition at line 16152 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_eq_helper_3_01true_01_4.tex b/doc/latex/classtesting_1_1internal_1_1_eq_helper_3_01true_01_4.tex new file mode 100644 index 0000000..d36a19f --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_eq_helper_3_01true_01_4.tex @@ -0,0 +1,53 @@ +\hypertarget{classtesting_1_1internal_1_1_eq_helper_3_01true_01_4}{}\section{testing\+:\+:internal\+:\+:Eq\+Helper$<$ true $>$ Class Template Reference} +\label{classtesting_1_1internal_1_1_eq_helper_3_01true_01_4}\index{testing\+::internal\+::\+Eq\+Helper$<$ true $>$@{testing\+::internal\+::\+Eq\+Helper$<$ true $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Static Public Member Functions} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename T1 , typename T2 $>$ }\\static Assertion\+Result \mbox{\hyperlink{classtesting_1_1internal_1_1_eq_helper_3_01true_01_4_a332e92bcca7a71c273e50d800f943fcf}{Compare}} (const char $\ast$lhs\+\_\+expression, const char $\ast$rhs\+\_\+expression, const T1 \&lhs, const T2 \&rhs, typename \mbox{\hyperlink{structtesting_1_1internal_1_1_enable_if}{Enable\+If}}$<$!std\+::is\+\_\+pointer$<$ T2 $>$\+::value $>$\+::type $\ast$=nullptr) +\item +{\footnotesize template$<$typename T $>$ }\\static Assertion\+Result \mbox{\hyperlink{classtesting_1_1internal_1_1_eq_helper_3_01true_01_4_a6f292601a68c8f0d49e6d48bd309b900}{Compare}} (const char $\ast$lhs\+\_\+expression, const char $\ast$rhs\+\_\+expression, Secret $\ast$, T $\ast$rhs) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$$>$\newline +class testing\+::internal\+::\+Eq\+Helper$<$ true $>$} + + + +Definition at line 16163 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_eq_helper_3_01true_01_4_a332e92bcca7a71c273e50d800f943fcf}\label{classtesting_1_1internal_1_1_eq_helper_3_01true_01_4_a332e92bcca7a71c273e50d800f943fcf}} +\index{testing\+::internal\+::\+Eq\+Helper$<$ true $>$@{testing\+::internal\+::\+Eq\+Helper$<$ true $>$}!Compare@{Compare}} +\index{Compare@{Compare}!testing\+::internal\+::\+Eq\+Helper$<$ true $>$@{testing\+::internal\+::\+Eq\+Helper$<$ true $>$}} +\subsubsection{\texorpdfstring{Compare()}{Compare()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename T1 , typename T2 $>$ \\ +static Assertion\+Result \mbox{\hyperlink{classtesting_1_1internal_1_1_eq_helper}{testing\+::internal\+::\+Eq\+Helper}}$<$ true $>$\+::Compare (\begin{DoxyParamCaption}\item[{const char $\ast$}]{lhs\+\_\+expression, }\item[{const char $\ast$}]{rhs\+\_\+expression, }\item[{const T1 \&}]{lhs, }\item[{const T2 \&}]{rhs, }\item[{typename \mbox{\hyperlink{structtesting_1_1internal_1_1_enable_if}{Enable\+If}}$<$!std\+::is\+\_\+pointer$<$ T2 $>$\+::value $>$\+::type $\ast$}]{ = {\ttfamily nullptr} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}} + + + +Definition at line 16170 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_eq_helper_3_01true_01_4_a6f292601a68c8f0d49e6d48bd309b900}\label{classtesting_1_1internal_1_1_eq_helper_3_01true_01_4_a6f292601a68c8f0d49e6d48bd309b900}} +\index{testing\+::internal\+::\+Eq\+Helper$<$ true $>$@{testing\+::internal\+::\+Eq\+Helper$<$ true $>$}!Compare@{Compare}} +\index{Compare@{Compare}!testing\+::internal\+::\+Eq\+Helper$<$ true $>$@{testing\+::internal\+::\+Eq\+Helper$<$ true $>$}} +\subsubsection{\texorpdfstring{Compare()}{Compare()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +static Assertion\+Result \mbox{\hyperlink{classtesting_1_1internal_1_1_eq_helper}{testing\+::internal\+::\+Eq\+Helper}}$<$ true $>$\+::Compare (\begin{DoxyParamCaption}\item[{const char $\ast$}]{lhs\+\_\+expression, }\item[{const char $\ast$}]{rhs\+\_\+expression, }\item[{Secret $\ast$}]{, }\item[{T $\ast$}]{rhs }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}} + + + +Definition at line 16185 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_flat_tuple.eps b/doc/latex/classtesting_1_1internal_1_1_flat_tuple.eps new file mode 100644 index 0000000..998e0b3 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_flat_tuple.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 73.529412 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 6.800000 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(testing::internal::FlatTuple< T >) cw +(testing::internal::FlatTupleBase< FlatTuple< T... >, MakeIndexSequence< sizeof...(T)>::type >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (testing::internal::FlatTuple< T >) 0.000000 0.000000 box + (testing::internal::FlatTupleBase< FlatTuple< T... >, MakeIndexSequence< sizeof...(T)>::type >) 0.000000 1.000000 box + +% ----- relations ----- + +dotted +0 0.000000 0.000000 out +dotted +1 0.000000 1.000000 in diff --git a/doc/latex/classtesting_1_1internal_1_1_flat_tuple.tex b/doc/latex/classtesting_1_1internal_1_1_flat_tuple.tex new file mode 100644 index 0000000..b8c2755 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_flat_tuple.tex @@ -0,0 +1,86 @@ +\hypertarget{classtesting_1_1internal_1_1_flat_tuple}{}\section{testing\+:\+:internal\+:\+:Flat\+Tuple$<$ T $>$ Class Template Reference} +\label{classtesting_1_1internal_1_1_flat_tuple}\index{testing\+::internal\+::\+Flat\+Tuple$<$ T $>$@{testing\+::internal\+::\+Flat\+Tuple$<$ T $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +Inheritance diagram for testing\+:\+:internal\+:\+:Flat\+Tuple$<$ T $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{classtesting_1_1internal_1_1_flat_tuple} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_flat_tuple_a056c58b5dd85f470ec5db1db9956c702}{Flat\+Tuple}} ()=default +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_flat_tuple_a611d01b9ff2437e4b9cfe3bbedc6d6ae}{Flat\+Tuple}} (T... t) +\item +{\footnotesize template$<$size\+\_\+t I$>$ }\\const \mbox{\hyperlink{structtesting_1_1internal_1_1_elem_from_list}{Elem\+From\+List}}$<$ I, Indices, T... $>$\+::type \& \mbox{\hyperlink{classtesting_1_1internal_1_1_flat_tuple_a9ea6508fa6413ceca5e38b8077c67938}{Get}} () const +\item +{\footnotesize template$<$size\+\_\+t I$>$ }\\\mbox{\hyperlink{structtesting_1_1internal_1_1_elem_from_list}{Elem\+From\+List}}$<$ I, Indices, T... $>$\+::type \& \mbox{\hyperlink{classtesting_1_1internal_1_1_flat_tuple_a48a13560f8963f727d81a7922e3b3e50}{Get}} () +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename... T$>$\newline +class testing\+::internal\+::\+Flat\+Tuple$<$ T $>$} + + + +Definition at line 7693 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_flat_tuple_a056c58b5dd85f470ec5db1db9956c702}\label{classtesting_1_1internal_1_1_flat_tuple_a056c58b5dd85f470ec5db1db9956c702}} +\index{testing\+::internal\+::\+Flat\+Tuple@{testing\+::internal\+::\+Flat\+Tuple}!Flat\+Tuple@{Flat\+Tuple}} +\index{Flat\+Tuple@{Flat\+Tuple}!testing\+::internal\+::\+Flat\+Tuple@{testing\+::internal\+::\+Flat\+Tuple}} +\subsubsection{\texorpdfstring{Flat\+Tuple()}{FlatTuple()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename... T$>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_flat_tuple}{testing\+::internal\+::\+Flat\+Tuple}}$<$ T $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_flat_tuple}{Flat\+Tuple}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [default]}} + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_flat_tuple_a611d01b9ff2437e4b9cfe3bbedc6d6ae}\label{classtesting_1_1internal_1_1_flat_tuple_a611d01b9ff2437e4b9cfe3bbedc6d6ae}} +\index{testing\+::internal\+::\+Flat\+Tuple@{testing\+::internal\+::\+Flat\+Tuple}!Flat\+Tuple@{Flat\+Tuple}} +\index{Flat\+Tuple@{Flat\+Tuple}!testing\+::internal\+::\+Flat\+Tuple@{testing\+::internal\+::\+Flat\+Tuple}} +\subsubsection{\texorpdfstring{Flat\+Tuple()}{FlatTuple()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename... T$>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_flat_tuple}{testing\+::internal\+::\+Flat\+Tuple}}$<$ T $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_flat_tuple}{Flat\+Tuple}} (\begin{DoxyParamCaption}\item[{T...}]{t }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [explicit]}} + + + +Definition at line 7737 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_flat_tuple_a9ea6508fa6413ceca5e38b8077c67938}\label{classtesting_1_1internal_1_1_flat_tuple_a9ea6508fa6413ceca5e38b8077c67938}} +\index{testing\+::internal\+::\+Flat\+Tuple@{testing\+::internal\+::\+Flat\+Tuple}!Get@{Get}} +\index{Get@{Get}!testing\+::internal\+::\+Flat\+Tuple@{testing\+::internal\+::\+Flat\+Tuple}} +\subsubsection{\texorpdfstring{Get()}{Get()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename... T$>$ \\ +template$<$size\+\_\+t I$>$ \\ +const \mbox{\hyperlink{structtesting_1_1internal_1_1_elem_from_list}{Elem\+From\+List}}$<$I, Indices, T...$>$\+::type\& \mbox{\hyperlink{classtesting_1_1internal_1_1_flat_tuple}{testing\+::internal\+::\+Flat\+Tuple}}$<$ T $>$\+::Get (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 7740 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_flat_tuple_a48a13560f8963f727d81a7922e3b3e50}\label{classtesting_1_1internal_1_1_flat_tuple_a48a13560f8963f727d81a7922e3b3e50}} +\index{testing\+::internal\+::\+Flat\+Tuple@{testing\+::internal\+::\+Flat\+Tuple}!Get@{Get}} +\index{Get@{Get}!testing\+::internal\+::\+Flat\+Tuple@{testing\+::internal\+::\+Flat\+Tuple}} +\subsubsection{\texorpdfstring{Get()}{Get()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename... T$>$ \\ +template$<$size\+\_\+t I$>$ \\ +\mbox{\hyperlink{structtesting_1_1internal_1_1_elem_from_list}{Elem\+From\+List}}$<$I, Indices, T...$>$\+::type\& \mbox{\hyperlink{classtesting_1_1internal_1_1_flat_tuple}{testing\+::internal\+::\+Flat\+Tuple}}$<$ T $>$\+::Get (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 7745 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_floating_point.tex b/doc/latex/classtesting_1_1internal_1_1_floating_point.tex new file mode 100644 index 0000000..bfc69e8 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_floating_point.tex @@ -0,0 +1,311 @@ +\hypertarget{classtesting_1_1internal_1_1_floating_point}{}\section{testing\+:\+:internal\+:\+:Floating\+Point$<$ Raw\+Type $>$ Class Template Reference} +\label{classtesting_1_1internal_1_1_floating_point}\index{testing\+::internal\+::\+Floating\+Point$<$ Raw\+Type $>$@{testing\+::internal\+::\+Floating\+Point$<$ Raw\+Type $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +typedef \mbox{\hyperlink{classtesting_1_1internal_1_1_type_with_size}{Type\+With\+Size}}$<$ sizeof(Raw\+Type)$>$\+::U\+Int \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point_abf228bf6cd48f12c8b44c85b4971a731}{Bits}} +\end{DoxyCompactItemize} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point_a0dabf840863e0df84046f171c891fe71}{Floating\+Point}} (const Raw\+Type \&x) +\item +const \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point_abf228bf6cd48f12c8b44c85b4971a731}{Bits}} \& \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point_aab053be914bdc9e507c0db89740c318c}{bits}} () const +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point_abf228bf6cd48f12c8b44c85b4971a731}{Bits}} \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point_af6bf8fab8df572ecb137a3516ff390ae}{exponent\+\_\+bits}} () const +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point_abf228bf6cd48f12c8b44c85b4971a731}{Bits}} \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point_aa17337e50a2ac855719bc0676529558f}{fraction\+\_\+bits}} () const +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point_abf228bf6cd48f12c8b44c85b4971a731}{Bits}} \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point_afb8a816bb598225d775caaf43a893ef0}{sign\+\_\+bit}} () const +\item +bool \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point_a1fc654fd206efa98e480aa1e034f30d5}{is\+\_\+nan}} () const +\item +bool \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point_a965214c1af2f9ac5adb1393794aa81e5}{Almost\+Equals}} (const \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point}{Floating\+Point}} \&rhs) const +\item +{\footnotesize template$<$$>$ }\\float \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point_af2eda9331e679229a1baa3404b57b51d}{Max}} () +\item +{\footnotesize template$<$$>$ }\\double \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point_afc2e85c0e886cb13b2300e961c9a9648}{Max}} () +\end{DoxyCompactItemize} +\subsection*{Static Public Member Functions} +\begin{DoxyCompactItemize} +\item +static Raw\+Type \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point_ac551f793522e54fbd8a25acb79eac5b1}{Reinterpret\+Bits}} (const \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point_abf228bf6cd48f12c8b44c85b4971a731}{Bits}} \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point_aab053be914bdc9e507c0db89740c318c}{bits}}) +\item +static Raw\+Type \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point_a460027cc19cf01ae8e09cc3796b2b575}{Infinity}} () +\item +static Raw\+Type \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point_aae5954d8a57d3ff0987c6930cb68e114}{Max}} () +\end{DoxyCompactItemize} +\subsection*{Static Public Attributes} +\begin{DoxyCompactItemize} +\item +static const size\+\_\+t \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point_ab819d2e8f93e9e482373999f0f8d71b9}{k\+Bit\+Count}} = 8$\ast$sizeof(Raw\+Type) +\item +static const size\+\_\+t \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point_a0b756a6d2a4f5f5b41ca79651c06c043}{k\+Fraction\+Bit\+Count}} +\item +static const size\+\_\+t \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point_a1973d843c00781053d3073daa8a40119}{k\+Exponent\+Bit\+Count}} = \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point_ab819d2e8f93e9e482373999f0f8d71b9}{k\+Bit\+Count}} -\/ 1 -\/ \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point_a0b756a6d2a4f5f5b41ca79651c06c043}{k\+Fraction\+Bit\+Count}} +\item +static const \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point_abf228bf6cd48f12c8b44c85b4971a731}{Bits}} \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point_aca98b5ea6f2222a66a82e52421682efa}{k\+Sign\+Bit\+Mask}} = static\+\_\+cast$<$\mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point_abf228bf6cd48f12c8b44c85b4971a731}{Bits}}$>$(1) $<$$<$ (\mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point_ab819d2e8f93e9e482373999f0f8d71b9}{k\+Bit\+Count}} -\/ 1) +\item +static const \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point_abf228bf6cd48f12c8b44c85b4971a731}{Bits}} \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point_a0ac75d4ffd24f14bca452abe8a718da1}{k\+Fraction\+Bit\+Mask}} +\item +static const \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point_abf228bf6cd48f12c8b44c85b4971a731}{Bits}} \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point_a66065dfc4d5f41100f686159637af23b}{k\+Exponent\+Bit\+Mask}} = $\sim$(\mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point_aca98b5ea6f2222a66a82e52421682efa}{k\+Sign\+Bit\+Mask}} $\vert$ \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point_a0ac75d4ffd24f14bca452abe8a718da1}{k\+Fraction\+Bit\+Mask}}) +\item +static const size\+\_\+t \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point_aac498b3714d93f8e88cdc30e4c5935f6}{k\+Max\+Ulps}} = 4 +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename Raw\+Type$>$\newline +class testing\+::internal\+::\+Floating\+Point$<$ Raw\+Type $>$} + + + +Definition at line 6687 of file gtest.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_floating_point_abf228bf6cd48f12c8b44c85b4971a731}\label{classtesting_1_1internal_1_1_floating_point_abf228bf6cd48f12c8b44c85b4971a731}} +\index{testing\+::internal\+::\+Floating\+Point@{testing\+::internal\+::\+Floating\+Point}!Bits@{Bits}} +\index{Bits@{Bits}!testing\+::internal\+::\+Floating\+Point@{testing\+::internal\+::\+Floating\+Point}} +\subsubsection{\texorpdfstring{Bits}{Bits}} +{\footnotesize\ttfamily template$<$typename Raw\+Type$>$ \\ +typedef \mbox{\hyperlink{classtesting_1_1internal_1_1_type_with_size}{Type\+With\+Size}}$<$sizeof(Raw\+Type)$>$\+::U\+Int \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point}{testing\+::internal\+::\+Floating\+Point}}$<$ Raw\+Type $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point_abf228bf6cd48f12c8b44c85b4971a731}{Bits}}} + + + +Definition at line 6691 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_floating_point_a0dabf840863e0df84046f171c891fe71}\label{classtesting_1_1internal_1_1_floating_point_a0dabf840863e0df84046f171c891fe71}} +\index{testing\+::internal\+::\+Floating\+Point@{testing\+::internal\+::\+Floating\+Point}!Floating\+Point@{Floating\+Point}} +\index{Floating\+Point@{Floating\+Point}!testing\+::internal\+::\+Floating\+Point@{testing\+::internal\+::\+Floating\+Point}} +\subsubsection{\texorpdfstring{Floating\+Point()}{FloatingPoint()}} +{\footnotesize\ttfamily template$<$typename Raw\+Type$>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point}{testing\+::internal\+::\+Floating\+Point}}$<$ Raw\+Type $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point}{Floating\+Point}} (\begin{DoxyParamCaption}\item[{const Raw\+Type \&}]{x }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [explicit]}} + + + +Definition at line 6735 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_floating_point_a965214c1af2f9ac5adb1393794aa81e5}\label{classtesting_1_1internal_1_1_floating_point_a965214c1af2f9ac5adb1393794aa81e5}} +\index{testing\+::internal\+::\+Floating\+Point@{testing\+::internal\+::\+Floating\+Point}!Almost\+Equals@{Almost\+Equals}} +\index{Almost\+Equals@{Almost\+Equals}!testing\+::internal\+::\+Floating\+Point@{testing\+::internal\+::\+Floating\+Point}} +\subsubsection{\texorpdfstring{Almost\+Equals()}{AlmostEquals()}} +{\footnotesize\ttfamily template$<$typename Raw\+Type$>$ \\ +bool \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point}{testing\+::internal\+::\+Floating\+Point}}$<$ Raw\+Type $>$\+::Almost\+Equals (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point}{Floating\+Point}}$<$ Raw\+Type $>$ \&}]{rhs }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 6783 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_floating_point_aab053be914bdc9e507c0db89740c318c}\label{classtesting_1_1internal_1_1_floating_point_aab053be914bdc9e507c0db89740c318c}} +\index{testing\+::internal\+::\+Floating\+Point@{testing\+::internal\+::\+Floating\+Point}!bits@{bits}} +\index{bits@{bits}!testing\+::internal\+::\+Floating\+Point@{testing\+::internal\+::\+Floating\+Point}} +\subsubsection{\texorpdfstring{bits()}{bits()}} +{\footnotesize\ttfamily template$<$typename Raw\+Type$>$ \\ +const \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point_abf228bf6cd48f12c8b44c85b4971a731}{Bits}}\& \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point}{testing\+::internal\+::\+Floating\+Point}}$<$ Raw\+Type $>$\+::bits (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 6759 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_floating_point_af6bf8fab8df572ecb137a3516ff390ae}\label{classtesting_1_1internal_1_1_floating_point_af6bf8fab8df572ecb137a3516ff390ae}} +\index{testing\+::internal\+::\+Floating\+Point@{testing\+::internal\+::\+Floating\+Point}!exponent\+\_\+bits@{exponent\+\_\+bits}} +\index{exponent\+\_\+bits@{exponent\+\_\+bits}!testing\+::internal\+::\+Floating\+Point@{testing\+::internal\+::\+Floating\+Point}} +\subsubsection{\texorpdfstring{exponent\+\_\+bits()}{exponent\_bits()}} +{\footnotesize\ttfamily template$<$typename Raw\+Type$>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point_abf228bf6cd48f12c8b44c85b4971a731}{Bits}} \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point}{testing\+::internal\+::\+Floating\+Point}}$<$ Raw\+Type $>$\+::exponent\+\_\+bits (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 6762 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_floating_point_aa17337e50a2ac855719bc0676529558f}\label{classtesting_1_1internal_1_1_floating_point_aa17337e50a2ac855719bc0676529558f}} +\index{testing\+::internal\+::\+Floating\+Point@{testing\+::internal\+::\+Floating\+Point}!fraction\+\_\+bits@{fraction\+\_\+bits}} +\index{fraction\+\_\+bits@{fraction\+\_\+bits}!testing\+::internal\+::\+Floating\+Point@{testing\+::internal\+::\+Floating\+Point}} +\subsubsection{\texorpdfstring{fraction\+\_\+bits()}{fraction\_bits()}} +{\footnotesize\ttfamily template$<$typename Raw\+Type$>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point_abf228bf6cd48f12c8b44c85b4971a731}{Bits}} \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point}{testing\+::internal\+::\+Floating\+Point}}$<$ Raw\+Type $>$\+::fraction\+\_\+bits (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 6765 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_floating_point_a460027cc19cf01ae8e09cc3796b2b575}\label{classtesting_1_1internal_1_1_floating_point_a460027cc19cf01ae8e09cc3796b2b575}} +\index{testing\+::internal\+::\+Floating\+Point@{testing\+::internal\+::\+Floating\+Point}!Infinity@{Infinity}} +\index{Infinity@{Infinity}!testing\+::internal\+::\+Floating\+Point@{testing\+::internal\+::\+Floating\+Point}} +\subsubsection{\texorpdfstring{Infinity()}{Infinity()}} +{\footnotesize\ttfamily template$<$typename Raw\+Type$>$ \\ +static Raw\+Type \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point}{testing\+::internal\+::\+Floating\+Point}}$<$ Raw\+Type $>$\+::Infinity (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}} + + + +Definition at line 6749 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_floating_point_a1fc654fd206efa98e480aa1e034f30d5}\label{classtesting_1_1internal_1_1_floating_point_a1fc654fd206efa98e480aa1e034f30d5}} +\index{testing\+::internal\+::\+Floating\+Point@{testing\+::internal\+::\+Floating\+Point}!is\+\_\+nan@{is\+\_\+nan}} +\index{is\+\_\+nan@{is\+\_\+nan}!testing\+::internal\+::\+Floating\+Point@{testing\+::internal\+::\+Floating\+Point}} +\subsubsection{\texorpdfstring{is\+\_\+nan()}{is\_nan()}} +{\footnotesize\ttfamily template$<$typename Raw\+Type$>$ \\ +bool \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point}{testing\+::internal\+::\+Floating\+Point}}$<$ Raw\+Type $>$\+::is\+\_\+nan (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 6771 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_floating_point_aae5954d8a57d3ff0987c6930cb68e114}\label{classtesting_1_1internal_1_1_floating_point_aae5954d8a57d3ff0987c6930cb68e114}} +\index{testing\+::internal\+::\+Floating\+Point@{testing\+::internal\+::\+Floating\+Point}!Max@{Max}} +\index{Max@{Max}!testing\+::internal\+::\+Floating\+Point@{testing\+::internal\+::\+Floating\+Point}} +\subsubsection{\texorpdfstring{Max()}{Max()}\hspace{0.1cm}{\footnotesize\ttfamily [1/3]}} +{\footnotesize\ttfamily template$<$typename Raw\+Type$>$ \\ +static Raw\+Type \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point}{testing\+::internal\+::\+Floating\+Point}}$<$ Raw\+Type $>$\+::Max (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_floating_point_af2eda9331e679229a1baa3404b57b51d}\label{classtesting_1_1internal_1_1_floating_point_af2eda9331e679229a1baa3404b57b51d}} +\index{testing\+::internal\+::\+Floating\+Point@{testing\+::internal\+::\+Floating\+Point}!Max@{Max}} +\index{Max@{Max}!testing\+::internal\+::\+Floating\+Point@{testing\+::internal\+::\+Floating\+Point}} +\subsubsection{\texorpdfstring{Max()}{Max()}\hspace{0.1cm}{\footnotesize\ttfamily [2/3]}} +{\footnotesize\ttfamily template$<$$>$ \\ +float \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point}{testing\+::internal\+::\+Floating\+Point}}$<$ float $>$\+::Max (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 6839 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_floating_point_afc2e85c0e886cb13b2300e961c9a9648}\label{classtesting_1_1internal_1_1_floating_point_afc2e85c0e886cb13b2300e961c9a9648}} +\index{testing\+::internal\+::\+Floating\+Point@{testing\+::internal\+::\+Floating\+Point}!Max@{Max}} +\index{Max@{Max}!testing\+::internal\+::\+Floating\+Point@{testing\+::internal\+::\+Floating\+Point}} +\subsubsection{\texorpdfstring{Max()}{Max()}\hspace{0.1cm}{\footnotesize\ttfamily [3/3]}} +{\footnotesize\ttfamily template$<$$>$ \\ +double \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point}{testing\+::internal\+::\+Floating\+Point}}$<$ double $>$\+::Max (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 6841 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_floating_point_ac551f793522e54fbd8a25acb79eac5b1}\label{classtesting_1_1internal_1_1_floating_point_ac551f793522e54fbd8a25acb79eac5b1}} +\index{testing\+::internal\+::\+Floating\+Point@{testing\+::internal\+::\+Floating\+Point}!Reinterpret\+Bits@{Reinterpret\+Bits}} +\index{Reinterpret\+Bits@{Reinterpret\+Bits}!testing\+::internal\+::\+Floating\+Point@{testing\+::internal\+::\+Floating\+Point}} +\subsubsection{\texorpdfstring{Reinterpret\+Bits()}{ReinterpretBits()}} +{\footnotesize\ttfamily template$<$typename Raw\+Type$>$ \\ +static Raw\+Type \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point}{testing\+::internal\+::\+Floating\+Point}}$<$ Raw\+Type $>$\+::Reinterpret\+Bits (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point_abf228bf6cd48f12c8b44c85b4971a731}{Bits}}}]{bits }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}} + + + +Definition at line 6742 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_floating_point_afb8a816bb598225d775caaf43a893ef0}\label{classtesting_1_1internal_1_1_floating_point_afb8a816bb598225d775caaf43a893ef0}} +\index{testing\+::internal\+::\+Floating\+Point@{testing\+::internal\+::\+Floating\+Point}!sign\+\_\+bit@{sign\+\_\+bit}} +\index{sign\+\_\+bit@{sign\+\_\+bit}!testing\+::internal\+::\+Floating\+Point@{testing\+::internal\+::\+Floating\+Point}} +\subsubsection{\texorpdfstring{sign\+\_\+bit()}{sign\_bit()}} +{\footnotesize\ttfamily template$<$typename Raw\+Type$>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point_abf228bf6cd48f12c8b44c85b4971a731}{Bits}} \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point}{testing\+::internal\+::\+Floating\+Point}}$<$ Raw\+Type $>$\+::sign\+\_\+bit (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 6768 of file gtest.\+h. + + + +\subsection{Member Data Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_floating_point_ab819d2e8f93e9e482373999f0f8d71b9}\label{classtesting_1_1internal_1_1_floating_point_ab819d2e8f93e9e482373999f0f8d71b9}} +\index{testing\+::internal\+::\+Floating\+Point@{testing\+::internal\+::\+Floating\+Point}!k\+Bit\+Count@{k\+Bit\+Count}} +\index{k\+Bit\+Count@{k\+Bit\+Count}!testing\+::internal\+::\+Floating\+Point@{testing\+::internal\+::\+Floating\+Point}} +\subsubsection{\texorpdfstring{k\+Bit\+Count}{kBitCount}} +{\footnotesize\ttfamily template$<$typename Raw\+Type$>$ \\ +const size\+\_\+t \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point}{testing\+::internal\+::\+Floating\+Point}}$<$ Raw\+Type $>$\+::k\+Bit\+Count = 8$\ast$sizeof(Raw\+Type)\hspace{0.3cm}{\ttfamily [static]}} + + + +Definition at line 6696 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_floating_point_a1973d843c00781053d3073daa8a40119}\label{classtesting_1_1internal_1_1_floating_point_a1973d843c00781053d3073daa8a40119}} +\index{testing\+::internal\+::\+Floating\+Point@{testing\+::internal\+::\+Floating\+Point}!k\+Exponent\+Bit\+Count@{k\+Exponent\+Bit\+Count}} +\index{k\+Exponent\+Bit\+Count@{k\+Exponent\+Bit\+Count}!testing\+::internal\+::\+Floating\+Point@{testing\+::internal\+::\+Floating\+Point}} +\subsubsection{\texorpdfstring{k\+Exponent\+Bit\+Count}{kExponentBitCount}} +{\footnotesize\ttfamily template$<$typename Raw\+Type$>$ \\ +const size\+\_\+t \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point}{testing\+::internal\+::\+Floating\+Point}}$<$ Raw\+Type $>$\+::k\+Exponent\+Bit\+Count = \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point_ab819d2e8f93e9e482373999f0f8d71b9}{k\+Bit\+Count}} -\/ 1 -\/ \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point_a0b756a6d2a4f5f5b41ca79651c06c043}{k\+Fraction\+Bit\+Count}}\hspace{0.3cm}{\ttfamily [static]}} + + + +Definition at line 6703 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_floating_point_a66065dfc4d5f41100f686159637af23b}\label{classtesting_1_1internal_1_1_floating_point_a66065dfc4d5f41100f686159637af23b}} +\index{testing\+::internal\+::\+Floating\+Point@{testing\+::internal\+::\+Floating\+Point}!k\+Exponent\+Bit\+Mask@{k\+Exponent\+Bit\+Mask}} +\index{k\+Exponent\+Bit\+Mask@{k\+Exponent\+Bit\+Mask}!testing\+::internal\+::\+Floating\+Point@{testing\+::internal\+::\+Floating\+Point}} +\subsubsection{\texorpdfstring{k\+Exponent\+Bit\+Mask}{kExponentBitMask}} +{\footnotesize\ttfamily template$<$typename Raw\+Type$>$ \\ +const \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point_abf228bf6cd48f12c8b44c85b4971a731}{Bits}} \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point}{testing\+::internal\+::\+Floating\+Point}}$<$ Raw\+Type $>$\+::k\+Exponent\+Bit\+Mask = $\sim$(\mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point_aca98b5ea6f2222a66a82e52421682efa}{k\+Sign\+Bit\+Mask}} $\vert$ \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point_a0ac75d4ffd24f14bca452abe8a718da1}{k\+Fraction\+Bit\+Mask}})\hspace{0.3cm}{\ttfamily [static]}} + + + +Definition at line 6713 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_floating_point_a0b756a6d2a4f5f5b41ca79651c06c043}\label{classtesting_1_1internal_1_1_floating_point_a0b756a6d2a4f5f5b41ca79651c06c043}} +\index{testing\+::internal\+::\+Floating\+Point@{testing\+::internal\+::\+Floating\+Point}!k\+Fraction\+Bit\+Count@{k\+Fraction\+Bit\+Count}} +\index{k\+Fraction\+Bit\+Count@{k\+Fraction\+Bit\+Count}!testing\+::internal\+::\+Floating\+Point@{testing\+::internal\+::\+Floating\+Point}} +\subsubsection{\texorpdfstring{k\+Fraction\+Bit\+Count}{kFractionBitCount}} +{\footnotesize\ttfamily template$<$typename Raw\+Type$>$ \\ +const size\+\_\+t \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point}{testing\+::internal\+::\+Floating\+Point}}$<$ Raw\+Type $>$\+::k\+Fraction\+Bit\+Count\hspace{0.3cm}{\ttfamily [static]}} + +{\bfseries Initial value\+:} +\begin{DoxyCode} += + std::numeric\_limits::digits - 1 +\end{DoxyCode} + + +Definition at line 6699 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_floating_point_a0ac75d4ffd24f14bca452abe8a718da1}\label{classtesting_1_1internal_1_1_floating_point_a0ac75d4ffd24f14bca452abe8a718da1}} +\index{testing\+::internal\+::\+Floating\+Point@{testing\+::internal\+::\+Floating\+Point}!k\+Fraction\+Bit\+Mask@{k\+Fraction\+Bit\+Mask}} +\index{k\+Fraction\+Bit\+Mask@{k\+Fraction\+Bit\+Mask}!testing\+::internal\+::\+Floating\+Point@{testing\+::internal\+::\+Floating\+Point}} +\subsubsection{\texorpdfstring{k\+Fraction\+Bit\+Mask}{kFractionBitMask}} +{\footnotesize\ttfamily template$<$typename Raw\+Type$>$ \\ +const \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point_abf228bf6cd48f12c8b44c85b4971a731}{Bits}} \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point}{testing\+::internal\+::\+Floating\+Point}}$<$ Raw\+Type $>$\+::k\+Fraction\+Bit\+Mask\hspace{0.3cm}{\ttfamily [static]}} + +{\bfseries Initial value\+:} +\begin{DoxyCode} += + ~static\_cast<\mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point_abf228bf6cd48f12c8b44c85b4971a731}{Bits}}>(0) >> (\mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point_a1973d843c00781053d3073daa8a40119}{kExponentBitCount}} + 1) +\end{DoxyCode} + + +Definition at line 6709 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_floating_point_aac498b3714d93f8e88cdc30e4c5935f6}\label{classtesting_1_1internal_1_1_floating_point_aac498b3714d93f8e88cdc30e4c5935f6}} +\index{testing\+::internal\+::\+Floating\+Point@{testing\+::internal\+::\+Floating\+Point}!k\+Max\+Ulps@{k\+Max\+Ulps}} +\index{k\+Max\+Ulps@{k\+Max\+Ulps}!testing\+::internal\+::\+Floating\+Point@{testing\+::internal\+::\+Floating\+Point}} +\subsubsection{\texorpdfstring{k\+Max\+Ulps}{kMaxUlps}} +{\footnotesize\ttfamily template$<$typename Raw\+Type$>$ \\ +const size\+\_\+t \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point}{testing\+::internal\+::\+Floating\+Point}}$<$ Raw\+Type $>$\+::k\+Max\+Ulps = 4\hspace{0.3cm}{\ttfamily [static]}} + + + +Definition at line 6727 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_floating_point_aca98b5ea6f2222a66a82e52421682efa}\label{classtesting_1_1internal_1_1_floating_point_aca98b5ea6f2222a66a82e52421682efa}} +\index{testing\+::internal\+::\+Floating\+Point@{testing\+::internal\+::\+Floating\+Point}!k\+Sign\+Bit\+Mask@{k\+Sign\+Bit\+Mask}} +\index{k\+Sign\+Bit\+Mask@{k\+Sign\+Bit\+Mask}!testing\+::internal\+::\+Floating\+Point@{testing\+::internal\+::\+Floating\+Point}} +\subsubsection{\texorpdfstring{k\+Sign\+Bit\+Mask}{kSignBitMask}} +{\footnotesize\ttfamily template$<$typename Raw\+Type$>$ \\ +const \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point_abf228bf6cd48f12c8b44c85b4971a731}{Bits}} \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point}{testing\+::internal\+::\+Floating\+Point}}$<$ Raw\+Type $>$\+::k\+Sign\+Bit\+Mask = static\+\_\+cast$<$\mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point_abf228bf6cd48f12c8b44c85b4971a731}{Bits}}$>$(1) $<$$<$ (\mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point_ab819d2e8f93e9e482373999f0f8d71b9}{k\+Bit\+Count}} -\/ 1)\hspace{0.3cm}{\ttfamily [static]}} + + + +Definition at line 6706 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_format_for_comparison.tex b/doc/latex/classtesting_1_1internal_1_1_format_for_comparison.tex new file mode 100644 index 0000000..8883af2 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_format_for_comparison.tex @@ -0,0 +1,40 @@ +\hypertarget{classtesting_1_1internal_1_1_format_for_comparison}{}\section{testing\+:\+:internal\+:\+:Format\+For\+Comparison$<$ To\+Print, Other\+Operand $>$ Class Template Reference} +\label{classtesting_1_1internal_1_1_format_for_comparison}\index{testing\+::internal\+::\+Format\+For\+Comparison$<$ To\+Print, Other\+Operand $>$@{testing\+::internal\+::\+Format\+For\+Comparison$<$ To\+Print, Other\+Operand $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Static Public Member Functions} +\begin{DoxyCompactItemize} +\item +\+::std\+::string \mbox{\hyperlink{classtesting_1_1internal_1_1_format_for_comparison_a2aeb688fc55b57abd3021d82eccad896}{Format}} (const To\+Print \&value) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename To\+Print, typename Other\+Operand$>$\newline +class testing\+::internal\+::\+Format\+For\+Comparison$<$ To\+Print, Other\+Operand $>$} + + + +Definition at line 8340 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_format_for_comparison_a2aeb688fc55b57abd3021d82eccad896}\label{classtesting_1_1internal_1_1_format_for_comparison_a2aeb688fc55b57abd3021d82eccad896}} +\index{testing\+::internal\+::\+Format\+For\+Comparison@{testing\+::internal\+::\+Format\+For\+Comparison}!Format@{Format}} +\index{Format@{Format}!testing\+::internal\+::\+Format\+For\+Comparison@{testing\+::internal\+::\+Format\+For\+Comparison}} +\subsubsection{\texorpdfstring{Format()}{Format()}} +{\footnotesize\ttfamily template$<$typename To\+Print , typename Other\+Operand $>$ \\ +\+::std\+::string \mbox{\hyperlink{classtesting_1_1internal_1_1_format_for_comparison}{testing\+::internal\+::\+Format\+For\+Comparison}}$<$ To\+Print, Other\+Operand $>$\+::Format (\begin{DoxyParamCaption}\item[{const To\+Print \&}]{value }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}} + + + +Definition at line 8342 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_format_for_comparison_3_01_to_print[_n]_00_01_other_operand_01_4.tex b/doc/latex/classtesting_1_1internal_1_1_format_for_comparison_3_01_to_print[_n]_00_01_other_operand_01_4.tex new file mode 100644 index 0000000..5ff24a5 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_format_for_comparison_3_01_to_print[_n]_00_01_other_operand_01_4.tex @@ -0,0 +1,40 @@ +\hypertarget{classtesting_1_1internal_1_1_format_for_comparison_3_01_to_print[_n]_00_01_other_operand_01_4}{}\section{testing\+:\+:internal\+:\+:Format\+For\+Comparison$<$ To\+Print\mbox{[}N\mbox{]}, Other\+Operand $>$ Class Template Reference} +\label{classtesting_1_1internal_1_1_format_for_comparison_3_01_to_print[_n]_00_01_other_operand_01_4}\index{testing\+::internal\+::\+Format\+For\+Comparison$<$ To\+Print\mbox{[}N\mbox{]}, Other\+Operand $>$@{testing\+::internal\+::\+Format\+For\+Comparison$<$ To\+Print[N], Other\+Operand $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Static Public Member Functions} +\begin{DoxyCompactItemize} +\item +\+::std\+::string \mbox{\hyperlink{classtesting_1_1internal_1_1_format_for_comparison_3_01_to_print[_n]_00_01_other_operand_01_4_a76c526461c8fa7df75f7b32ab889b9e0}{Format}} (const To\+Print $\ast$value) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename To\+Print, size\+\_\+t N, typename Other\+Operand$>$\newline +class testing\+::internal\+::\+Format\+For\+Comparison$<$ To\+Print\mbox{[}\+N\mbox{]}, Other\+Operand $>$} + + + +Definition at line 8349 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_format_for_comparison_3_01_to_print[_n]_00_01_other_operand_01_4_a76c526461c8fa7df75f7b32ab889b9e0}\label{classtesting_1_1internal_1_1_format_for_comparison_3_01_to_print[_n]_00_01_other_operand_01_4_a76c526461c8fa7df75f7b32ab889b9e0}} +\index{testing\+::internal\+::\+Format\+For\+Comparison$<$ To\+Print\mbox{[}N\mbox{]}, Other\+Operand $>$@{testing\+::internal\+::\+Format\+For\+Comparison$<$ To\+Print[N], Other\+Operand $>$}!Format@{Format}} +\index{Format@{Format}!testing\+::internal\+::\+Format\+For\+Comparison$<$ To\+Print\mbox{[}N\mbox{]}, Other\+Operand $>$@{testing\+::internal\+::\+Format\+For\+Comparison$<$ To\+Print[N], Other\+Operand $>$}} +\subsubsection{\texorpdfstring{Format()}{Format()}} +{\footnotesize\ttfamily template$<$typename To\+Print , size\+\_\+t N, typename Other\+Operand $>$ \\ +\+::std\+::string \mbox{\hyperlink{classtesting_1_1internal_1_1_format_for_comparison}{testing\+::internal\+::\+Format\+For\+Comparison}}$<$ To\+Print\mbox{[}N\mbox{]}, Other\+Operand $>$\+::Format (\begin{DoxyParamCaption}\item[{const To\+Print $\ast$}]{value }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}} + + + +Definition at line 8351 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_g_test_log.tex b/doc/latex/classtesting_1_1internal_1_1_g_test_log.tex new file mode 100644 index 0000000..1179e44 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_g_test_log.tex @@ -0,0 +1,64 @@ +\hypertarget{classtesting_1_1internal_1_1_g_test_log}{}\section{testing\+:\+:internal\+:\+:G\+Test\+Log Class Reference} +\label{classtesting_1_1internal_1_1_g_test_log}\index{testing\+::internal\+::\+G\+Test\+Log@{testing\+::internal\+::\+G\+Test\+Log}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_g_test_log_a364691bf972983a59cfa2891062a64af}{G\+Test\+Log}} (\mbox{\hyperlink{namespacetesting_1_1internal_aa6255ef3b023c5b4e1a2198d887fb977}{G\+Test\+Log\+Severity}} severity, const char $\ast$file, int line) +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_g_test_log_a978a099703bbaa0f380216e8d7ee03d3}{$\sim$\+G\+Test\+Log}} () +\item +\+::std\+::ostream \& \mbox{\hyperlink{classtesting_1_1internal_1_1_g_test_log_aebb92e67d98eca69f0347d5121dab27a}{Get\+Stream}} () +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} + + +Definition at line 1229 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_g_test_log_a364691bf972983a59cfa2891062a64af}\label{classtesting_1_1internal_1_1_g_test_log_a364691bf972983a59cfa2891062a64af}} +\index{testing\+::internal\+::\+G\+Test\+Log@{testing\+::internal\+::\+G\+Test\+Log}!G\+Test\+Log@{G\+Test\+Log}} +\index{G\+Test\+Log@{G\+Test\+Log}!testing\+::internal\+::\+G\+Test\+Log@{testing\+::internal\+::\+G\+Test\+Log}} +\subsubsection{\texorpdfstring{G\+Test\+Log()}{GTestLog()}} +{\footnotesize\ttfamily testing\+::internal\+::\+G\+Test\+Log\+::\+G\+Test\+Log (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{namespacetesting_1_1internal_aa6255ef3b023c5b4e1a2198d887fb977}{G\+Test\+Log\+Severity}}}]{severity, }\item[{const char $\ast$}]{file, }\item[{int}]{line }\end{DoxyParamCaption})} + + + +Definition at line 10648 of file gtest-\/all.\+cc. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_g_test_log_a978a099703bbaa0f380216e8d7ee03d3}\label{classtesting_1_1internal_1_1_g_test_log_a978a099703bbaa0f380216e8d7ee03d3}} +\index{testing\+::internal\+::\+G\+Test\+Log@{testing\+::internal\+::\+G\+Test\+Log}!````~G\+Test\+Log@{$\sim$\+G\+Test\+Log}} +\index{````~G\+Test\+Log@{$\sim$\+G\+Test\+Log}!testing\+::internal\+::\+G\+Test\+Log@{testing\+::internal\+::\+G\+Test\+Log}} +\subsubsection{\texorpdfstring{$\sim$\+G\+Test\+Log()}{~GTestLog()}} +{\footnotesize\ttfamily testing\+::internal\+::\+G\+Test\+Log\+::$\sim$\+G\+Test\+Log (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + + + +Definition at line 10659 of file gtest-\/all.\+cc. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_g_test_log_aebb92e67d98eca69f0347d5121dab27a}\label{classtesting_1_1internal_1_1_g_test_log_aebb92e67d98eca69f0347d5121dab27a}} +\index{testing\+::internal\+::\+G\+Test\+Log@{testing\+::internal\+::\+G\+Test\+Log}!Get\+Stream@{Get\+Stream}} +\index{Get\+Stream@{Get\+Stream}!testing\+::internal\+::\+G\+Test\+Log@{testing\+::internal\+::\+G\+Test\+Log}} +\subsubsection{\texorpdfstring{Get\+Stream()}{GetStream()}} +{\footnotesize\ttfamily \+::std\+::ostream\& testing\+::internal\+::\+G\+Test\+Log\+::\+Get\+Stream (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 1236 of file gtest.\+h. + + + +The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest-all_8cc}{gtest-\/all.\+cc}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_g_test_mutex_lock.tex b/doc/latex/classtesting_1_1internal_1_1_g_test_mutex_lock.tex new file mode 100644 index 0000000..d6a9e58 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_g_test_mutex_lock.tex @@ -0,0 +1,36 @@ +\hypertarget{classtesting_1_1internal_1_1_g_test_mutex_lock}{}\section{testing\+:\+:internal\+:\+:G\+Test\+Mutex\+Lock Class Reference} +\label{classtesting_1_1internal_1_1_g_test_mutex_lock}\index{testing\+::internal\+::\+G\+Test\+Mutex\+Lock@{testing\+::internal\+::\+G\+Test\+Mutex\+Lock}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_g_test_mutex_lock_a77e3cba326d5356b4a1dea3790559c26}{G\+Test\+Mutex\+Lock}} (\mbox{\hyperlink{classtesting_1_1internal_1_1_mutex}{Mutex}} $\ast$) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} + + +Definition at line 2157 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_g_test_mutex_lock_a77e3cba326d5356b4a1dea3790559c26}\label{classtesting_1_1internal_1_1_g_test_mutex_lock_a77e3cba326d5356b4a1dea3790559c26}} +\index{testing\+::internal\+::\+G\+Test\+Mutex\+Lock@{testing\+::internal\+::\+G\+Test\+Mutex\+Lock}!G\+Test\+Mutex\+Lock@{G\+Test\+Mutex\+Lock}} +\index{G\+Test\+Mutex\+Lock@{G\+Test\+Mutex\+Lock}!testing\+::internal\+::\+G\+Test\+Mutex\+Lock@{testing\+::internal\+::\+G\+Test\+Mutex\+Lock}} +\subsubsection{\texorpdfstring{G\+Test\+Mutex\+Lock()}{GTestMutexLock()}} +{\footnotesize\ttfamily testing\+::internal\+::\+G\+Test\+Mutex\+Lock\+::\+G\+Test\+Mutex\+Lock (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classtesting_1_1internal_1_1_mutex}{Mutex}} $\ast$}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [explicit]}} + + + +Definition at line 2159 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_ignored_value.tex b/doc/latex/classtesting_1_1internal_1_1_ignored_value.tex new file mode 100644 index 0000000..79f85f1 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_ignored_value.tex @@ -0,0 +1,37 @@ +\hypertarget{classtesting_1_1internal_1_1_ignored_value}{}\section{testing\+:\+:internal\+:\+:Ignored\+Value Class Reference} +\label{classtesting_1_1internal_1_1_ignored_value}\index{testing\+::internal\+::\+Ignored\+Value@{testing\+::internal\+::\+Ignored\+Value}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename T $>$ }\\\mbox{\hyperlink{classtesting_1_1internal_1_1_ignored_value_a6c72839c07a9da8d027efb253144bd91}{Ignored\+Value}} (const T \&) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} + + +Definition at line 6544 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_ignored_value_a6c72839c07a9da8d027efb253144bd91}\label{classtesting_1_1internal_1_1_ignored_value_a6c72839c07a9da8d027efb253144bd91}} +\index{testing\+::internal\+::\+Ignored\+Value@{testing\+::internal\+::\+Ignored\+Value}!Ignored\+Value@{Ignored\+Value}} +\index{Ignored\+Value@{Ignored\+Value}!testing\+::internal\+::\+Ignored\+Value@{testing\+::internal\+::\+Ignored\+Value}} +\subsubsection{\texorpdfstring{Ignored\+Value()}{IgnoredValue()}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +testing\+::internal\+::\+Ignored\+Value\+::\+Ignored\+Value (\begin{DoxyParamCaption}\item[{const T \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 6552 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_implicitly_convertible.tex b/doc/latex/classtesting_1_1internal_1_1_implicitly_convertible.tex new file mode 100644 index 0000000..a3854a5 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_implicitly_convertible.tex @@ -0,0 +1,45 @@ +\hypertarget{classtesting_1_1internal_1_1_implicitly_convertible}{}\section{testing\+:\+:internal\+:\+:Implicitly\+Convertible$<$ From, To $>$ Class Template Reference} +\label{classtesting_1_1internal_1_1_implicitly_convertible}\index{testing\+::internal\+::\+Implicitly\+Convertible$<$ From, To $>$@{testing\+::internal\+::\+Implicitly\+Convertible$<$ From, To $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Static Public Attributes} +\begin{DoxyCompactItemize} +\item +static const bool \mbox{\hyperlink{classtesting_1_1internal_1_1_implicitly_convertible_aea51cecabca681fb75659e224771b7b7}{value}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename From, typename To$>$\newline +class testing\+::internal\+::\+Implicitly\+Convertible$<$ From, To $>$} + + + +Definition at line 7344 of file gtest.\+h. + + + +\subsection{Member Data Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_implicitly_convertible_aea51cecabca681fb75659e224771b7b7}\label{classtesting_1_1internal_1_1_implicitly_convertible_aea51cecabca681fb75659e224771b7b7}} +\index{testing\+::internal\+::\+Implicitly\+Convertible@{testing\+::internal\+::\+Implicitly\+Convertible}!value@{value}} +\index{value@{value}!testing\+::internal\+::\+Implicitly\+Convertible@{testing\+::internal\+::\+Implicitly\+Convertible}} +\subsubsection{\texorpdfstring{value}{value}} +{\footnotesize\ttfamily template$<$typename From , typename To $>$ \\ +const bool \mbox{\hyperlink{classtesting_1_1internal_1_1_implicitly_convertible}{testing\+::internal\+::\+Implicitly\+Convertible}}$<$ From, To $>$\+::value\hspace{0.3cm}{\ttfamily [static]}} + +{\bfseries Initial value\+:} +\begin{DoxyCode} += + \textcolor{keyword}{sizeof}(Helper(ImplicitlyConvertible::MakeFrom())) == 1 +\end{DoxyCode} + + +Definition at line 7380 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_mutex.tex b/doc/latex/classtesting_1_1internal_1_1_mutex.tex new file mode 100644 index 0000000..06f7b2e --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_mutex.tex @@ -0,0 +1,75 @@ +\hypertarget{classtesting_1_1internal_1_1_mutex}{}\section{testing\+:\+:internal\+:\+:Mutex Class Reference} +\label{classtesting_1_1internal_1_1_mutex}\index{testing\+::internal\+::\+Mutex@{testing\+::internal\+::\+Mutex}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_mutex_a38e1833a78e3eec81ad23ce1b056b40e}{Mutex}} () +\item +void \mbox{\hyperlink{classtesting_1_1internal_1_1_mutex_ae7e2191886c00182176b23c4f4d049f8}{Lock}} () +\item +void \mbox{\hyperlink{classtesting_1_1internal_1_1_mutex_a315188055de1be98884519ad84eff2e6}{Unlock}} () +\item +void \mbox{\hyperlink{classtesting_1_1internal_1_1_mutex_af45bf1660ac4110338a02a8680b2f486}{Assert\+Held}} () const +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} + + +Definition at line 2139 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_mutex_a38e1833a78e3eec81ad23ce1b056b40e}\label{classtesting_1_1internal_1_1_mutex_a38e1833a78e3eec81ad23ce1b056b40e}} +\index{testing\+::internal\+::\+Mutex@{testing\+::internal\+::\+Mutex}!Mutex@{Mutex}} +\index{Mutex@{Mutex}!testing\+::internal\+::\+Mutex@{testing\+::internal\+::\+Mutex}} +\subsubsection{\texorpdfstring{Mutex()}{Mutex()}} +{\footnotesize\ttfamily testing\+::internal\+::\+Mutex\+::\+Mutex (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 2141 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_mutex_af45bf1660ac4110338a02a8680b2f486}\label{classtesting_1_1internal_1_1_mutex_af45bf1660ac4110338a02a8680b2f486}} +\index{testing\+::internal\+::\+Mutex@{testing\+::internal\+::\+Mutex}!Assert\+Held@{Assert\+Held}} +\index{Assert\+Held@{Assert\+Held}!testing\+::internal\+::\+Mutex@{testing\+::internal\+::\+Mutex}} +\subsubsection{\texorpdfstring{Assert\+Held()}{AssertHeld()}} +{\footnotesize\ttfamily void testing\+::internal\+::\+Mutex\+::\+Assert\+Held (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 2144 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_mutex_ae7e2191886c00182176b23c4f4d049f8}\label{classtesting_1_1internal_1_1_mutex_ae7e2191886c00182176b23c4f4d049f8}} +\index{testing\+::internal\+::\+Mutex@{testing\+::internal\+::\+Mutex}!Lock@{Lock}} +\index{Lock@{Lock}!testing\+::internal\+::\+Mutex@{testing\+::internal\+::\+Mutex}} +\subsubsection{\texorpdfstring{Lock()}{Lock()}} +{\footnotesize\ttfamily void testing\+::internal\+::\+Mutex\+::\+Lock (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 2142 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_mutex_a315188055de1be98884519ad84eff2e6}\label{classtesting_1_1internal_1_1_mutex_a315188055de1be98884519ad84eff2e6}} +\index{testing\+::internal\+::\+Mutex@{testing\+::internal\+::\+Mutex}!Unlock@{Unlock}} +\index{Unlock@{Unlock}!testing\+::internal\+::\+Mutex@{testing\+::internal\+::\+Mutex}} +\subsubsection{\texorpdfstring{Unlock()}{Unlock()}} +{\footnotesize\ttfamily void testing\+::internal\+::\+Mutex\+::\+Unlock (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 2143 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_native_array.tex b/doc/latex/classtesting_1_1internal_1_1_native_array.tex new file mode 100644 index 0000000..051e261 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_native_array.tex @@ -0,0 +1,179 @@ +\hypertarget{classtesting_1_1internal_1_1_native_array}{}\section{testing\+:\+:internal\+:\+:Native\+Array$<$ Element $>$ Class Template Reference} +\label{classtesting_1_1internal_1_1_native_array}\index{testing\+::internal\+::\+Native\+Array$<$ Element $>$@{testing\+::internal\+::\+Native\+Array$<$ Element $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +typedef Element \mbox{\hyperlink{classtesting_1_1internal_1_1_native_array_a12216d686e16e4cc63d952fada5b2ba9}{value\+\_\+type}} +\item +typedef Element $\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_native_array_ac1301a57977b57a1ad013e4e25fc2a72}{iterator}} +\item +typedef const Element $\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_native_array_a9ce7c8408460d7158a2870456d134557}{const\+\_\+iterator}} +\end{DoxyCompactItemize} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_native_array_a52b3689c62532703d11e9d82939a7141}{Native\+Array}} (const Element $\ast$array, size\+\_\+t count, \mbox{\hyperlink{structtesting_1_1internal_1_1_relation_to_source_reference}{Relation\+To\+Source\+Reference}}) +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_native_array_ac184ee5741af5be3402213819c834405}{Native\+Array}} (const Element $\ast$array, size\+\_\+t count, \mbox{\hyperlink{structtesting_1_1internal_1_1_relation_to_source_copy}{Relation\+To\+Source\+Copy}}) +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_native_array_abb346ac3040f5da733f594cc2d5958bc}{Native\+Array}} (const \mbox{\hyperlink{classtesting_1_1internal_1_1_native_array}{Native\+Array}} \&rhs) +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_native_array_a55ab5948d473a487303dcf6e02ad1f60}{$\sim$\+Native\+Array}} () +\item +size\+\_\+t \mbox{\hyperlink{classtesting_1_1internal_1_1_native_array_af96a4a5ca0cdd5d163c47a081f08bd89}{size}} () const +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_native_array_a9ce7c8408460d7158a2870456d134557}{const\+\_\+iterator}} \mbox{\hyperlink{classtesting_1_1internal_1_1_native_array_a3046d93cfa23097e7b7c91f5f982dc78}{begin}} () const +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_native_array_a9ce7c8408460d7158a2870456d134557}{const\+\_\+iterator}} \mbox{\hyperlink{classtesting_1_1internal_1_1_native_array_ae1cda748e49c6906421c6183c4d07c5a}{end}} () const +\item +bool \mbox{\hyperlink{classtesting_1_1internal_1_1_native_array_a81b90f5739ed812610e68dc34c9e3850}{operator==}} (const \mbox{\hyperlink{classtesting_1_1internal_1_1_native_array}{Native\+Array}} \&rhs) const +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename Element$>$\newline +class testing\+::internal\+::\+Native\+Array$<$ Element $>$} + + + +Definition at line 7579 of file gtest.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_native_array_a9ce7c8408460d7158a2870456d134557}\label{classtesting_1_1internal_1_1_native_array_a9ce7c8408460d7158a2870456d134557}} +\index{testing\+::internal\+::\+Native\+Array@{testing\+::internal\+::\+Native\+Array}!const\+\_\+iterator@{const\+\_\+iterator}} +\index{const\+\_\+iterator@{const\+\_\+iterator}!testing\+::internal\+::\+Native\+Array@{testing\+::internal\+::\+Native\+Array}} +\subsubsection{\texorpdfstring{const\+\_\+iterator}{const\_iterator}} +{\footnotesize\ttfamily template$<$typename Element $>$ \\ +typedef const Element$\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_native_array}{testing\+::internal\+::\+Native\+Array}}$<$ Element $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_native_array_a9ce7c8408460d7158a2870456d134557}{const\+\_\+iterator}}} + + + +Definition at line 7584 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_native_array_ac1301a57977b57a1ad013e4e25fc2a72}\label{classtesting_1_1internal_1_1_native_array_ac1301a57977b57a1ad013e4e25fc2a72}} +\index{testing\+::internal\+::\+Native\+Array@{testing\+::internal\+::\+Native\+Array}!iterator@{iterator}} +\index{iterator@{iterator}!testing\+::internal\+::\+Native\+Array@{testing\+::internal\+::\+Native\+Array}} +\subsubsection{\texorpdfstring{iterator}{iterator}} +{\footnotesize\ttfamily template$<$typename Element $>$ \\ +typedef Element$\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_native_array}{testing\+::internal\+::\+Native\+Array}}$<$ Element $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_native_array_ac1301a57977b57a1ad013e4e25fc2a72}{iterator}}} + + + +Definition at line 7583 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_native_array_a12216d686e16e4cc63d952fada5b2ba9}\label{classtesting_1_1internal_1_1_native_array_a12216d686e16e4cc63d952fada5b2ba9}} +\index{testing\+::internal\+::\+Native\+Array@{testing\+::internal\+::\+Native\+Array}!value\+\_\+type@{value\+\_\+type}} +\index{value\+\_\+type@{value\+\_\+type}!testing\+::internal\+::\+Native\+Array@{testing\+::internal\+::\+Native\+Array}} +\subsubsection{\texorpdfstring{value\+\_\+type}{value\_type}} +{\footnotesize\ttfamily template$<$typename Element $>$ \\ +typedef Element \mbox{\hyperlink{classtesting_1_1internal_1_1_native_array}{testing\+::internal\+::\+Native\+Array}}$<$ Element $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_native_array_a12216d686e16e4cc63d952fada5b2ba9}{value\+\_\+type}}} + + + +Definition at line 7582 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_native_array_a52b3689c62532703d11e9d82939a7141}\label{classtesting_1_1internal_1_1_native_array_a52b3689c62532703d11e9d82939a7141}} +\index{testing\+::internal\+::\+Native\+Array@{testing\+::internal\+::\+Native\+Array}!Native\+Array@{Native\+Array}} +\index{Native\+Array@{Native\+Array}!testing\+::internal\+::\+Native\+Array@{testing\+::internal\+::\+Native\+Array}} +\subsubsection{\texorpdfstring{Native\+Array()}{NativeArray()}\hspace{0.1cm}{\footnotesize\ttfamily [1/3]}} +{\footnotesize\ttfamily template$<$typename Element $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_native_array}{testing\+::internal\+::\+Native\+Array}}$<$ Element $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_native_array}{Native\+Array}} (\begin{DoxyParamCaption}\item[{const Element $\ast$}]{array, }\item[{size\+\_\+t}]{count, }\item[{\mbox{\hyperlink{structtesting_1_1internal_1_1_relation_to_source_reference}{Relation\+To\+Source\+Reference}}}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 7587 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_native_array_ac184ee5741af5be3402213819c834405}\label{classtesting_1_1internal_1_1_native_array_ac184ee5741af5be3402213819c834405}} +\index{testing\+::internal\+::\+Native\+Array@{testing\+::internal\+::\+Native\+Array}!Native\+Array@{Native\+Array}} +\index{Native\+Array@{Native\+Array}!testing\+::internal\+::\+Native\+Array@{testing\+::internal\+::\+Native\+Array}} +\subsubsection{\texorpdfstring{Native\+Array()}{NativeArray()}\hspace{0.1cm}{\footnotesize\ttfamily [2/3]}} +{\footnotesize\ttfamily template$<$typename Element $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_native_array}{testing\+::internal\+::\+Native\+Array}}$<$ Element $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_native_array}{Native\+Array}} (\begin{DoxyParamCaption}\item[{const Element $\ast$}]{array, }\item[{size\+\_\+t}]{count, }\item[{\mbox{\hyperlink{structtesting_1_1internal_1_1_relation_to_source_copy}{Relation\+To\+Source\+Copy}}}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 7592 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_native_array_abb346ac3040f5da733f594cc2d5958bc}\label{classtesting_1_1internal_1_1_native_array_abb346ac3040f5da733f594cc2d5958bc}} +\index{testing\+::internal\+::\+Native\+Array@{testing\+::internal\+::\+Native\+Array}!Native\+Array@{Native\+Array}} +\index{Native\+Array@{Native\+Array}!testing\+::internal\+::\+Native\+Array@{testing\+::internal\+::\+Native\+Array}} +\subsubsection{\texorpdfstring{Native\+Array()}{NativeArray()}\hspace{0.1cm}{\footnotesize\ttfamily [3/3]}} +{\footnotesize\ttfamily template$<$typename Element $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_native_array}{testing\+::internal\+::\+Native\+Array}}$<$ Element $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_native_array}{Native\+Array}} (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_native_array}{Native\+Array}}$<$ Element $>$ \&}]{rhs }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 7597 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_native_array_a55ab5948d473a487303dcf6e02ad1f60}\label{classtesting_1_1internal_1_1_native_array_a55ab5948d473a487303dcf6e02ad1f60}} +\index{testing\+::internal\+::\+Native\+Array@{testing\+::internal\+::\+Native\+Array}!````~Native\+Array@{$\sim$\+Native\+Array}} +\index{````~Native\+Array@{$\sim$\+Native\+Array}!testing\+::internal\+::\+Native\+Array@{testing\+::internal\+::\+Native\+Array}} +\subsubsection{\texorpdfstring{$\sim$\+Native\+Array()}{~NativeArray()}} +{\footnotesize\ttfamily template$<$typename Element $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_native_array}{testing\+::internal\+::\+Native\+Array}}$<$ Element $>$\+::$\sim$\mbox{\hyperlink{classtesting_1_1internal_1_1_native_array}{Native\+Array}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 7601 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_native_array_a3046d93cfa23097e7b7c91f5f982dc78}\label{classtesting_1_1internal_1_1_native_array_a3046d93cfa23097e7b7c91f5f982dc78}} +\index{testing\+::internal\+::\+Native\+Array@{testing\+::internal\+::\+Native\+Array}!begin@{begin}} +\index{begin@{begin}!testing\+::internal\+::\+Native\+Array@{testing\+::internal\+::\+Native\+Array}} +\subsubsection{\texorpdfstring{begin()}{begin()}} +{\footnotesize\ttfamily template$<$typename Element $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_native_array_a9ce7c8408460d7158a2870456d134557}{const\+\_\+iterator}} \mbox{\hyperlink{classtesting_1_1internal_1_1_native_array}{testing\+::internal\+::\+Native\+Array}}$<$ Element $>$\+::begin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 7608 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_native_array_ae1cda748e49c6906421c6183c4d07c5a}\label{classtesting_1_1internal_1_1_native_array_ae1cda748e49c6906421c6183c4d07c5a}} +\index{testing\+::internal\+::\+Native\+Array@{testing\+::internal\+::\+Native\+Array}!end@{end}} +\index{end@{end}!testing\+::internal\+::\+Native\+Array@{testing\+::internal\+::\+Native\+Array}} +\subsubsection{\texorpdfstring{end()}{end()}} +{\footnotesize\ttfamily template$<$typename Element $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_native_array_a9ce7c8408460d7158a2870456d134557}{const\+\_\+iterator}} \mbox{\hyperlink{classtesting_1_1internal_1_1_native_array}{testing\+::internal\+::\+Native\+Array}}$<$ Element $>$\+::end (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 7609 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_native_array_a81b90f5739ed812610e68dc34c9e3850}\label{classtesting_1_1internal_1_1_native_array_a81b90f5739ed812610e68dc34c9e3850}} +\index{testing\+::internal\+::\+Native\+Array@{testing\+::internal\+::\+Native\+Array}!operator==@{operator==}} +\index{operator==@{operator==}!testing\+::internal\+::\+Native\+Array@{testing\+::internal\+::\+Native\+Array}} +\subsubsection{\texorpdfstring{operator==()}{operator==()}} +{\footnotesize\ttfamily template$<$typename Element $>$ \\ +bool \mbox{\hyperlink{classtesting_1_1internal_1_1_native_array}{testing\+::internal\+::\+Native\+Array}}$<$ Element $>$\+::operator== (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_native_array}{Native\+Array}}$<$ Element $>$ \&}]{rhs }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 7610 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_native_array_af96a4a5ca0cdd5d163c47a081f08bd89}\label{classtesting_1_1internal_1_1_native_array_af96a4a5ca0cdd5d163c47a081f08bd89}} +\index{testing\+::internal\+::\+Native\+Array@{testing\+::internal\+::\+Native\+Array}!size@{size}} +\index{size@{size}!testing\+::internal\+::\+Native\+Array@{testing\+::internal\+::\+Native\+Array}} +\subsubsection{\texorpdfstring{size()}{size()}} +{\footnotesize\ttfamily template$<$typename Element $>$ \\ +size\+\_\+t \mbox{\hyperlink{classtesting_1_1internal_1_1_native_array}{testing\+::internal\+::\+Native\+Array}}$<$ Element $>$\+::size (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 7607 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_param_generator.tex b/doc/latex/classtesting_1_1internal_1_1_param_generator.tex new file mode 100644 index 0000000..9801e7e --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_param_generator.tex @@ -0,0 +1,114 @@ +\hypertarget{classtesting_1_1internal_1_1_param_generator}{}\section{testing\+:\+:internal\+:\+:Param\+Generator$<$ T $>$ Class Template Reference} +\label{classtesting_1_1internal_1_1_param_generator}\index{testing\+::internal\+::\+Param\+Generator$<$ T $>$@{testing\+::internal\+::\+Param\+Generator$<$ T $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +typedef \mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator}{Param\+Iterator}}$<$ T $>$ \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator_a448b08a8eaae1f1d27840d4dbd66c357}{iterator}} +\end{DoxyCompactItemize} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator_a6b017d4d030927714d495ee95ae92fbc}{Param\+Generator}} (\mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator_interface}{Param\+Generator\+Interface}}$<$ T $>$ $\ast$impl) +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator_a5891d25c31919b3099489f8bbcd58b5e}{Param\+Generator}} (const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}} \&other) +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}} \& \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator_a590a03c6e0a3a3ac6279943ad1f01dc8}{operator=}} (const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}} \&other) +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator_a448b08a8eaae1f1d27840d4dbd66c357}{iterator}} \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator_a14e735c8bd113556ae905a560cd2d607}{begin}} () const +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator_a448b08a8eaae1f1d27840d4dbd66c357}{iterator}} \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator_aaf8f75df1099a07ff771a550b48f9fbe}{end}} () const +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T$>$\newline +class testing\+::internal\+::\+Param\+Generator$<$ T $>$} + + + +Definition at line 10624 of file gtest.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_param_generator_a448b08a8eaae1f1d27840d4dbd66c357}\label{classtesting_1_1internal_1_1_param_generator_a448b08a8eaae1f1d27840d4dbd66c357}} +\index{testing\+::internal\+::\+Param\+Generator@{testing\+::internal\+::\+Param\+Generator}!iterator@{iterator}} +\index{iterator@{iterator}!testing\+::internal\+::\+Param\+Generator@{testing\+::internal\+::\+Param\+Generator}} +\subsubsection{\texorpdfstring{iterator}{iterator}} +{\footnotesize\ttfamily template$<$typename T$>$ \\ +typedef \mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator}{Param\+Iterator}}$<$T$>$ \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{testing\+::internal\+::\+Param\+Generator}}$<$ T $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator_a448b08a8eaae1f1d27840d4dbd66c357}{iterator}}} + + + +Definition at line 10721 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_param_generator_a6b017d4d030927714d495ee95ae92fbc}\label{classtesting_1_1internal_1_1_param_generator_a6b017d4d030927714d495ee95ae92fbc}} +\index{testing\+::internal\+::\+Param\+Generator@{testing\+::internal\+::\+Param\+Generator}!Param\+Generator@{Param\+Generator}} +\index{Param\+Generator@{Param\+Generator}!testing\+::internal\+::\+Param\+Generator@{testing\+::internal\+::\+Param\+Generator}} +\subsubsection{\texorpdfstring{Param\+Generator()}{ParamGenerator()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename T$>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{testing\+::internal\+::\+Param\+Generator}}$<$ T $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}} (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator_interface}{Param\+Generator\+Interface}}$<$ T $>$ $\ast$}]{impl }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [explicit]}} + + + +Definition at line 10723 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_param_generator_a5891d25c31919b3099489f8bbcd58b5e}\label{classtesting_1_1internal_1_1_param_generator_a5891d25c31919b3099489f8bbcd58b5e}} +\index{testing\+::internal\+::\+Param\+Generator@{testing\+::internal\+::\+Param\+Generator}!Param\+Generator@{Param\+Generator}} +\index{Param\+Generator@{Param\+Generator}!testing\+::internal\+::\+Param\+Generator@{testing\+::internal\+::\+Param\+Generator}} +\subsubsection{\texorpdfstring{Param\+Generator()}{ParamGenerator()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename T$>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{testing\+::internal\+::\+Param\+Generator}}$<$ T $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}} (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T $>$ \&}]{other }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 10724 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_param_generator_a14e735c8bd113556ae905a560cd2d607}\label{classtesting_1_1internal_1_1_param_generator_a14e735c8bd113556ae905a560cd2d607}} +\index{testing\+::internal\+::\+Param\+Generator@{testing\+::internal\+::\+Param\+Generator}!begin@{begin}} +\index{begin@{begin}!testing\+::internal\+::\+Param\+Generator@{testing\+::internal\+::\+Param\+Generator}} +\subsubsection{\texorpdfstring{begin()}{begin()}} +{\footnotesize\ttfamily template$<$typename T$>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator_a448b08a8eaae1f1d27840d4dbd66c357}{iterator}} \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{testing\+::internal\+::\+Param\+Generator}}$<$ T $>$\+::begin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 10731 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_param_generator_aaf8f75df1099a07ff771a550b48f9fbe}\label{classtesting_1_1internal_1_1_param_generator_aaf8f75df1099a07ff771a550b48f9fbe}} +\index{testing\+::internal\+::\+Param\+Generator@{testing\+::internal\+::\+Param\+Generator}!end@{end}} +\index{end@{end}!testing\+::internal\+::\+Param\+Generator@{testing\+::internal\+::\+Param\+Generator}} +\subsubsection{\texorpdfstring{end()}{end()}} +{\footnotesize\ttfamily template$<$typename T$>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator_a448b08a8eaae1f1d27840d4dbd66c357}{iterator}} \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{testing\+::internal\+::\+Param\+Generator}}$<$ T $>$\+::end (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 10732 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_param_generator_a590a03c6e0a3a3ac6279943ad1f01dc8}\label{classtesting_1_1internal_1_1_param_generator_a590a03c6e0a3a3ac6279943ad1f01dc8}} +\index{testing\+::internal\+::\+Param\+Generator@{testing\+::internal\+::\+Param\+Generator}!operator=@{operator=}} +\index{operator=@{operator=}!testing\+::internal\+::\+Param\+Generator@{testing\+::internal\+::\+Param\+Generator}} +\subsubsection{\texorpdfstring{operator=()}{operator=()}} +{\footnotesize\ttfamily template$<$typename T$>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}\& \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{testing\+::internal\+::\+Param\+Generator}}$<$ T $>$\+::operator= (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T $>$ \&}]{other }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 10726 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_param_generator_interface.eps b/doc/latex/classtesting_1_1internal_1_1_param_generator_interface.eps new file mode 100644 index 0000000..c3004d6 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_param_generator_interface.eps @@ -0,0 +1,203 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 61.919505 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 8.075000 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(testing::internal::ParamGeneratorInterface< T >) cw +(testing::internal::RangeGenerator< T, IncrementT >) cw +(testing::internal::ValuesInIteratorRangeGenerator< T >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (testing::internal::ParamGeneratorInterface< T >) 0.500000 1.000000 box + (testing::internal::RangeGenerator< T, IncrementT >) 0.000000 0.000000 box + (testing::internal::ValuesInIteratorRangeGenerator< T >) 1.000000 0.000000 box + +% ----- relations ----- + +solid +1 0.500000 0.250000 out +solid +0.000000 1.000000 1.000000 conn +solid +0 0.000000 0.750000 in +solid +0 1.000000 0.750000 in diff --git a/doc/latex/classtesting_1_1internal_1_1_param_generator_interface.tex b/doc/latex/classtesting_1_1internal_1_1_param_generator_interface.tex new file mode 100644 index 0000000..0c872c7 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_param_generator_interface.tex @@ -0,0 +1,94 @@ +\hypertarget{classtesting_1_1internal_1_1_param_generator_interface}{}\section{testing\+:\+:internal\+:\+:Param\+Generator\+Interface$<$ T $>$ Class Template Reference} +\label{classtesting_1_1internal_1_1_param_generator_interface}\index{testing\+::internal\+::\+Param\+Generator\+Interface$<$ T $>$@{testing\+::internal\+::\+Param\+Generator\+Interface$<$ T $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +Inheritance diagram for testing\+:\+:internal\+:\+:Param\+Generator\+Interface$<$ T $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=1.733746cm]{classtesting_1_1internal_1_1_param_generator_interface} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +typedef T \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator_interface_ab33d2ea424c50beaf503cb125b3cd003}{Param\+Type}} +\end{DoxyCompactItemize} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +virtual \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator_interface_ac2767cb9ad2e292e291c4903323c6eff}{$\sim$\+Param\+Generator\+Interface}} () +\item +virtual \mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{Param\+Iterator\+Interface}}$<$ T $>$ $\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator_interface_ae1de83b16fe9a53c67778a026c6a9569}{Begin}} () const =0 +\item +virtual \mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{Param\+Iterator\+Interface}}$<$ T $>$ $\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator_interface_afa7211b74990e11d3fc7ad4e7113da4f}{End}} () const =0 +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T$>$\newline +class testing\+::internal\+::\+Param\+Generator\+Interface$<$ T $>$} + + + +Definition at line 10623 of file gtest.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_param_generator_interface_ab33d2ea424c50beaf503cb125b3cd003}\label{classtesting_1_1internal_1_1_param_generator_interface_ab33d2ea424c50beaf503cb125b3cd003}} +\index{testing\+::internal\+::\+Param\+Generator\+Interface@{testing\+::internal\+::\+Param\+Generator\+Interface}!Param\+Type@{Param\+Type}} +\index{Param\+Type@{Param\+Type}!testing\+::internal\+::\+Param\+Generator\+Interface@{testing\+::internal\+::\+Param\+Generator\+Interface}} +\subsubsection{\texorpdfstring{Param\+Type}{ParamType}} +{\footnotesize\ttfamily template$<$typename T$>$ \\ +typedef T \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator_interface}{testing\+::internal\+::\+Param\+Generator\+Interface}}$<$ T $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator_interface_ab33d2ea424c50beaf503cb125b3cd003}{Param\+Type}}} + + + +Definition at line 10704 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_param_generator_interface_ac2767cb9ad2e292e291c4903323c6eff}\label{classtesting_1_1internal_1_1_param_generator_interface_ac2767cb9ad2e292e291c4903323c6eff}} +\index{testing\+::internal\+::\+Param\+Generator\+Interface@{testing\+::internal\+::\+Param\+Generator\+Interface}!````~Param\+Generator\+Interface@{$\sim$\+Param\+Generator\+Interface}} +\index{````~Param\+Generator\+Interface@{$\sim$\+Param\+Generator\+Interface}!testing\+::internal\+::\+Param\+Generator\+Interface@{testing\+::internal\+::\+Param\+Generator\+Interface}} +\subsubsection{\texorpdfstring{$\sim$\+Param\+Generator\+Interface()}{~ParamGeneratorInterface()}} +{\footnotesize\ttfamily template$<$typename T$>$ \\ +virtual \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator_interface}{testing\+::internal\+::\+Param\+Generator\+Interface}}$<$ T $>$\+::$\sim$\mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator_interface}{Param\+Generator\+Interface}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}} + + + +Definition at line 10706 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_param_generator_interface_ae1de83b16fe9a53c67778a026c6a9569}\label{classtesting_1_1internal_1_1_param_generator_interface_ae1de83b16fe9a53c67778a026c6a9569}} +\index{testing\+::internal\+::\+Param\+Generator\+Interface@{testing\+::internal\+::\+Param\+Generator\+Interface}!Begin@{Begin}} +\index{Begin@{Begin}!testing\+::internal\+::\+Param\+Generator\+Interface@{testing\+::internal\+::\+Param\+Generator\+Interface}} +\subsubsection{\texorpdfstring{Begin()}{Begin()}} +{\footnotesize\ttfamily template$<$typename T$>$ \\ +virtual \mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{Param\+Iterator\+Interface}}$<$T$>$$\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator_interface}{testing\+::internal\+::\+Param\+Generator\+Interface}}$<$ T $>$\+::Begin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [pure virtual]}} + + + +Implemented in \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator10_a23b2a79fc2fd0224fd31c519520cb945}{testing\+::internal\+::\+Cartesian\+Product\+Generator10$<$ T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 $>$}}, \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator9_a8fc8d5664560c3a788fe51903f896429}{testing\+::internal\+::\+Cartesian\+Product\+Generator9$<$ T1, T2, T3, T4, T5, T6, T7, T8, T9 $>$}}, \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator8_a707b5a6f598da1f6b997e3b1ad771aca}{testing\+::internal\+::\+Cartesian\+Product\+Generator8$<$ T1, T2, T3, T4, T5, T6, T7, T8 $>$}}, \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator7_ac8b315cd7dbe5566d5ff98b04921b815}{testing\+::internal\+::\+Cartesian\+Product\+Generator7$<$ T1, T2, T3, T4, T5, T6, T7 $>$}}, \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator6_ae9a8a36d7d4a5270a21ffd38744bbfce}{testing\+::internal\+::\+Cartesian\+Product\+Generator6$<$ T1, T2, T3, T4, T5, T6 $>$}}, \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator5_aadf6e9a6638c07af046c489b78aed214}{testing\+::internal\+::\+Cartesian\+Product\+Generator5$<$ T1, T2, T3, T4, T5 $>$}}, \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator4_ae04bf9d551c6dc3996d18e90e88f4bfd}{testing\+::internal\+::\+Cartesian\+Product\+Generator4$<$ T1, T2, T3, T4 $>$}}, \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator3_a2a1d5af705de6cc340291294fa38437e}{testing\+::internal\+::\+Cartesian\+Product\+Generator3$<$ T1, T2, T3 $>$}}, \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator2_aa68e7d9334ba6318bc17ccb0669767fe}{testing\+::internal\+::\+Cartesian\+Product\+Generator2$<$ T1, T2 $>$}}, \mbox{\hyperlink{classtesting_1_1internal_1_1_values_in_iterator_range_generator_a71ffed6f1deba05f11c9d45f6ab5b85d}{testing\+::internal\+::\+Values\+In\+Iterator\+Range\+Generator$<$ T $>$}}, and \mbox{\hyperlink{classtesting_1_1internal_1_1_range_generator_a502913fbcf14e89d5765dfb44f3c1295}{testing\+::internal\+::\+Range\+Generator$<$ T, Increment\+T $>$}}. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_param_generator_interface_afa7211b74990e11d3fc7ad4e7113da4f}\label{classtesting_1_1internal_1_1_param_generator_interface_afa7211b74990e11d3fc7ad4e7113da4f}} +\index{testing\+::internal\+::\+Param\+Generator\+Interface@{testing\+::internal\+::\+Param\+Generator\+Interface}!End@{End}} +\index{End@{End}!testing\+::internal\+::\+Param\+Generator\+Interface@{testing\+::internal\+::\+Param\+Generator\+Interface}} +\subsubsection{\texorpdfstring{End()}{End()}} +{\footnotesize\ttfamily template$<$typename T$>$ \\ +virtual \mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{Param\+Iterator\+Interface}}$<$T$>$$\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator_interface}{testing\+::internal\+::\+Param\+Generator\+Interface}}$<$ T $>$\+::End (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [pure virtual]}} + + + +Implemented in \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator10_a373c054dc7b60a9ab6236c327cac4e23}{testing\+::internal\+::\+Cartesian\+Product\+Generator10$<$ T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 $>$}}, \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator9_a60476505c616957d1a04a31d1635df6d}{testing\+::internal\+::\+Cartesian\+Product\+Generator9$<$ T1, T2, T3, T4, T5, T6, T7, T8, T9 $>$}}, \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator8_a1893e189b87ba1a7cc664dcd4d87a1fd}{testing\+::internal\+::\+Cartesian\+Product\+Generator8$<$ T1, T2, T3, T4, T5, T6, T7, T8 $>$}}, \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator7_a452dadb9cedbc18f539cfc98eb6e5b88}{testing\+::internal\+::\+Cartesian\+Product\+Generator7$<$ T1, T2, T3, T4, T5, T6, T7 $>$}}, \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator6_a952895ad20d5a89b913f80ad2f54391b}{testing\+::internal\+::\+Cartesian\+Product\+Generator6$<$ T1, T2, T3, T4, T5, T6 $>$}}, \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator5_af1829ba003b0e7c3a463f87dacd4c3b2}{testing\+::internal\+::\+Cartesian\+Product\+Generator5$<$ T1, T2, T3, T4, T5 $>$}}, \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator4_ae25a27430e476014a2f07c0be4f030f7}{testing\+::internal\+::\+Cartesian\+Product\+Generator4$<$ T1, T2, T3, T4 $>$}}, \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator3_a474d70e577e76b7f84b0d83e90a6ec89}{testing\+::internal\+::\+Cartesian\+Product\+Generator3$<$ T1, T2, T3 $>$}}, \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator2_afb1a5fe2810721040689e2e8c85b8a42}{testing\+::internal\+::\+Cartesian\+Product\+Generator2$<$ T1, T2 $>$}}, \mbox{\hyperlink{classtesting_1_1internal_1_1_values_in_iterator_range_generator_a298cfb66a90b1a39c0cea3ca7ae1ece1}{testing\+::internal\+::\+Values\+In\+Iterator\+Range\+Generator$<$ T $>$}}, and \mbox{\hyperlink{classtesting_1_1internal_1_1_range_generator_ac112ca69567b9c47bf14554e0473e1e2}{testing\+::internal\+::\+Range\+Generator$<$ T, Increment\+T $>$}}. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_param_iterator.tex b/doc/latex/classtesting_1_1internal_1_1_param_iterator.tex new file mode 100644 index 0000000..6f79352 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_param_iterator.tex @@ -0,0 +1,198 @@ +\hypertarget{classtesting_1_1internal_1_1_param_iterator}{}\section{testing\+:\+:internal\+:\+:Param\+Iterator$<$ T $>$ Class Template Reference} +\label{classtesting_1_1internal_1_1_param_iterator}\index{testing\+::internal\+::\+Param\+Iterator$<$ T $>$@{testing\+::internal\+::\+Param\+Iterator$<$ T $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +typedef T \mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_a4afe3a68db0d0744753c8afe262e35df}{value\+\_\+type}} +\item +typedef const T \& \mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_ac96f133ffa06fc0f9faff5a1c7954382}{reference}} +\item +typedef ptrdiff\+\_\+t \mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_a6c37240a04ba3fc4c56f6c413cf4771d}{difference\+\_\+type}} +\end{DoxyCompactItemize} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_aa10585055ee055e304703a3004f24f33}{Param\+Iterator}} (const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator}{Param\+Iterator}} \&other) +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator}{Param\+Iterator}} \& \mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_a8019f54ea1c66ca39ffdec47acfabfe6}{operator=}} (const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator}{Param\+Iterator}} \&other) +\item +const T \& \mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_a52e5fdca7d497a0ed358051e36b8b491}{operator$\ast$}} () const +\item +const T $\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_aad035d35e8f0c1412854959a94d4887e}{operator-\/$>$}} () const +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator}{Param\+Iterator}} \& \mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_ab0922f2f554fb3beaf13c442da605e8d}{operator++}} () +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator}{Param\+Iterator}} \mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_af51e17827dd54977165937550c0fb030}{operator++}} (int) +\item +bool \mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_adc356b4789eb0c2a1b5b033c7874e5a6}{operator==}} (const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator}{Param\+Iterator}} \&other) const +\item +bool \mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_a7a6aee04e8e44b5c8294929951cfac2b}{operator!=}} (const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator}{Param\+Iterator}} \&other) const +\end{DoxyCompactItemize} +\subsection*{Friends} +\begin{DoxyCompactItemize} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_ab73a355ae191f2f7eab54b65ca557714}{Param\+Generator$<$ T $>$}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T$>$\newline +class testing\+::internal\+::\+Param\+Iterator$<$ T $>$} + + + +Definition at line 10659 of file gtest.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_param_iterator_a6c37240a04ba3fc4c56f6c413cf4771d}\label{classtesting_1_1internal_1_1_param_iterator_a6c37240a04ba3fc4c56f6c413cf4771d}} +\index{testing\+::internal\+::\+Param\+Iterator@{testing\+::internal\+::\+Param\+Iterator}!difference\+\_\+type@{difference\+\_\+type}} +\index{difference\+\_\+type@{difference\+\_\+type}!testing\+::internal\+::\+Param\+Iterator@{testing\+::internal\+::\+Param\+Iterator}} +\subsubsection{\texorpdfstring{difference\+\_\+type}{difference\_type}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +typedef ptrdiff\+\_\+t \mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator}{testing\+::internal\+::\+Param\+Iterator}}$<$ T $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_a6c37240a04ba3fc4c56f6c413cf4771d}{difference\+\_\+type}}} + + + +Definition at line 10663 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_param_iterator_ac96f133ffa06fc0f9faff5a1c7954382}\label{classtesting_1_1internal_1_1_param_iterator_ac96f133ffa06fc0f9faff5a1c7954382}} +\index{testing\+::internal\+::\+Param\+Iterator@{testing\+::internal\+::\+Param\+Iterator}!reference@{reference}} +\index{reference@{reference}!testing\+::internal\+::\+Param\+Iterator@{testing\+::internal\+::\+Param\+Iterator}} +\subsubsection{\texorpdfstring{reference}{reference}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +typedef const T\& \mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator}{testing\+::internal\+::\+Param\+Iterator}}$<$ T $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_ac96f133ffa06fc0f9faff5a1c7954382}{reference}}} + + + +Definition at line 10662 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_param_iterator_a4afe3a68db0d0744753c8afe262e35df}\label{classtesting_1_1internal_1_1_param_iterator_a4afe3a68db0d0744753c8afe262e35df}} +\index{testing\+::internal\+::\+Param\+Iterator@{testing\+::internal\+::\+Param\+Iterator}!value\+\_\+type@{value\+\_\+type}} +\index{value\+\_\+type@{value\+\_\+type}!testing\+::internal\+::\+Param\+Iterator@{testing\+::internal\+::\+Param\+Iterator}} +\subsubsection{\texorpdfstring{value\+\_\+type}{value\_type}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +typedef T \mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator}{testing\+::internal\+::\+Param\+Iterator}}$<$ T $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_a4afe3a68db0d0744753c8afe262e35df}{value\+\_\+type}}} + + + +Definition at line 10661 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_param_iterator_aa10585055ee055e304703a3004f24f33}\label{classtesting_1_1internal_1_1_param_iterator_aa10585055ee055e304703a3004f24f33}} +\index{testing\+::internal\+::\+Param\+Iterator@{testing\+::internal\+::\+Param\+Iterator}!Param\+Iterator@{Param\+Iterator}} +\index{Param\+Iterator@{Param\+Iterator}!testing\+::internal\+::\+Param\+Iterator@{testing\+::internal\+::\+Param\+Iterator}} +\subsubsection{\texorpdfstring{Param\+Iterator()}{ParamIterator()}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator}{testing\+::internal\+::\+Param\+Iterator}}$<$ T $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator}{Param\+Iterator}} (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator}{Param\+Iterator}}$<$ T $>$ \&}]{other }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 10666 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_param_iterator_a7a6aee04e8e44b5c8294929951cfac2b}\label{classtesting_1_1internal_1_1_param_iterator_a7a6aee04e8e44b5c8294929951cfac2b}} +\index{testing\+::internal\+::\+Param\+Iterator@{testing\+::internal\+::\+Param\+Iterator}!operator"!=@{operator"!=}} +\index{operator"!=@{operator"!=}!testing\+::internal\+::\+Param\+Iterator@{testing\+::internal\+::\+Param\+Iterator}} +\subsubsection{\texorpdfstring{operator"!=()}{operator!=()}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +bool \mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator}{testing\+::internal\+::\+Param\+Iterator}}$<$ T $>$\+::operator!= (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator}{Param\+Iterator}}$<$ T $>$ \&}]{other }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 10689 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_param_iterator_a52e5fdca7d497a0ed358051e36b8b491}\label{classtesting_1_1internal_1_1_param_iterator_a52e5fdca7d497a0ed358051e36b8b491}} +\index{testing\+::internal\+::\+Param\+Iterator@{testing\+::internal\+::\+Param\+Iterator}!operator$\ast$@{operator$\ast$}} +\index{operator$\ast$@{operator$\ast$}!testing\+::internal\+::\+Param\+Iterator@{testing\+::internal\+::\+Param\+Iterator}} +\subsubsection{\texorpdfstring{operator$\ast$()}{operator*()}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +const T\& \mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator}{testing\+::internal\+::\+Param\+Iterator}}$<$ T $>$\+::operator$\ast$ (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 10673 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_param_iterator_ab0922f2f554fb3beaf13c442da605e8d}\label{classtesting_1_1internal_1_1_param_iterator_ab0922f2f554fb3beaf13c442da605e8d}} +\index{testing\+::internal\+::\+Param\+Iterator@{testing\+::internal\+::\+Param\+Iterator}!operator++@{operator++}} +\index{operator++@{operator++}!testing\+::internal\+::\+Param\+Iterator@{testing\+::internal\+::\+Param\+Iterator}} +\subsubsection{\texorpdfstring{operator++()}{operator++()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator}{Param\+Iterator}}\& \mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator}{testing\+::internal\+::\+Param\+Iterator}}$<$ T $>$\+::operator++ (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 10676 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_param_iterator_af51e17827dd54977165937550c0fb030}\label{classtesting_1_1internal_1_1_param_iterator_af51e17827dd54977165937550c0fb030}} +\index{testing\+::internal\+::\+Param\+Iterator@{testing\+::internal\+::\+Param\+Iterator}!operator++@{operator++}} +\index{operator++@{operator++}!testing\+::internal\+::\+Param\+Iterator@{testing\+::internal\+::\+Param\+Iterator}} +\subsubsection{\texorpdfstring{operator++()}{operator++()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator}{Param\+Iterator}} \mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator}{testing\+::internal\+::\+Param\+Iterator}}$<$ T $>$\+::operator++ (\begin{DoxyParamCaption}\item[{int}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 10681 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_param_iterator_aad035d35e8f0c1412854959a94d4887e}\label{classtesting_1_1internal_1_1_param_iterator_aad035d35e8f0c1412854959a94d4887e}} +\index{testing\+::internal\+::\+Param\+Iterator@{testing\+::internal\+::\+Param\+Iterator}!operator-\/$>$@{operator-\/$>$}} +\index{operator-\/$>$@{operator-\/$>$}!testing\+::internal\+::\+Param\+Iterator@{testing\+::internal\+::\+Param\+Iterator}} +\subsubsection{\texorpdfstring{operator-\/$>$()}{operator->()}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +const T$\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator}{testing\+::internal\+::\+Param\+Iterator}}$<$ T $>$\+::operator-\/$>$ (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 10674 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_param_iterator_a8019f54ea1c66ca39ffdec47acfabfe6}\label{classtesting_1_1internal_1_1_param_iterator_a8019f54ea1c66ca39ffdec47acfabfe6}} +\index{testing\+::internal\+::\+Param\+Iterator@{testing\+::internal\+::\+Param\+Iterator}!operator=@{operator=}} +\index{operator=@{operator=}!testing\+::internal\+::\+Param\+Iterator@{testing\+::internal\+::\+Param\+Iterator}} +\subsubsection{\texorpdfstring{operator=()}{operator=()}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator}{Param\+Iterator}}\& \mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator}{testing\+::internal\+::\+Param\+Iterator}}$<$ T $>$\+::operator= (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator}{Param\+Iterator}}$<$ T $>$ \&}]{other }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 10667 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_param_iterator_adc356b4789eb0c2a1b5b033c7874e5a6}\label{classtesting_1_1internal_1_1_param_iterator_adc356b4789eb0c2a1b5b033c7874e5a6}} +\index{testing\+::internal\+::\+Param\+Iterator@{testing\+::internal\+::\+Param\+Iterator}!operator==@{operator==}} +\index{operator==@{operator==}!testing\+::internal\+::\+Param\+Iterator@{testing\+::internal\+::\+Param\+Iterator}} +\subsubsection{\texorpdfstring{operator==()}{operator==()}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +bool \mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator}{testing\+::internal\+::\+Param\+Iterator}}$<$ T $>$\+::operator== (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator}{Param\+Iterator}}$<$ T $>$ \&}]{other }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 10686 of file gtest.\+h. + + + +\subsection{Friends And Related Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_param_iterator_ab73a355ae191f2f7eab54b65ca557714}\label{classtesting_1_1internal_1_1_param_iterator_ab73a355ae191f2f7eab54b65ca557714}} +\index{testing\+::internal\+::\+Param\+Iterator@{testing\+::internal\+::\+Param\+Iterator}!Param\+Generator$<$ T $>$@{Param\+Generator$<$ T $>$}} +\index{Param\+Generator$<$ T $>$@{Param\+Generator$<$ T $>$}!testing\+::internal\+::\+Param\+Iterator@{testing\+::internal\+::\+Param\+Iterator}} +\subsubsection{\texorpdfstring{Param\+Generator$<$ T $>$}{ParamGenerator< T >}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +friend class \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T $>$\hspace{0.3cm}{\ttfamily [friend]}} + + + +Definition at line 10694 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_param_iterator_interface.tex b/doc/latex/classtesting_1_1internal_1_1_param_iterator_interface.tex new file mode 100644 index 0000000..b5c5317 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_param_iterator_interface.tex @@ -0,0 +1,88 @@ +\hypertarget{classtesting_1_1internal_1_1_param_iterator_interface}{}\section{testing\+:\+:internal\+:\+:Param\+Iterator\+Interface$<$ T $>$ Class Template Reference} +\label{classtesting_1_1internal_1_1_param_iterator_interface}\index{testing\+::internal\+::\+Param\+Iterator\+Interface$<$ T $>$@{testing\+::internal\+::\+Param\+Iterator\+Interface$<$ T $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +virtual \mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface_adf6ba49e6b54a6e3b15dbd5733988bef}{$\sim$\+Param\+Iterator\+Interface}} () +\item +virtual const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator_interface}{Param\+Generator\+Interface}}$<$ T $>$ $\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface_a17500953df75ecda1ace46c08ff731e9}{Base\+Generator}} () const =0 +\item +virtual void \mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface_a600dbd35fcb551463e379516a1abea48}{Advance}} ()=0 +\item +virtual \mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{Param\+Iterator\+Interface}} $\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface_a4998c23e27e2943d97546011aa35db80}{Clone}} () const =0 +\item +virtual const T $\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface_adfff808576d929085679c315b255af7e}{Current}} () const =0 +\item +virtual bool \mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface_a9d811697a752d46f7bd6a0082f9040a3}{Equals}} (const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{Param\+Iterator\+Interface}} \&other) const =0 +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T$>$\newline +class testing\+::internal\+::\+Param\+Iterator\+Interface$<$ T $>$} + + + +Definition at line 10629 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_param_iterator_interface_adf6ba49e6b54a6e3b15dbd5733988bef}\label{classtesting_1_1internal_1_1_param_iterator_interface_adf6ba49e6b54a6e3b15dbd5733988bef}} +\index{testing\+::internal\+::\+Param\+Iterator\+Interface@{testing\+::internal\+::\+Param\+Iterator\+Interface}!````~Param\+Iterator\+Interface@{$\sim$\+Param\+Iterator\+Interface}} +\index{````~Param\+Iterator\+Interface@{$\sim$\+Param\+Iterator\+Interface}!testing\+::internal\+::\+Param\+Iterator\+Interface@{testing\+::internal\+::\+Param\+Iterator\+Interface}} +\subsubsection{\texorpdfstring{$\sim$\+Param\+Iterator\+Interface()}{~ParamIteratorInterface()}} +{\footnotesize\ttfamily template$<$typename T$>$ \\ +virtual \mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{testing\+::internal\+::\+Param\+Iterator\+Interface}}$<$ T $>$\+::$\sim$\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{Param\+Iterator\+Interface}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}} + + + +Definition at line 10631 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_param_iterator_interface_a600dbd35fcb551463e379516a1abea48}\label{classtesting_1_1internal_1_1_param_iterator_interface_a600dbd35fcb551463e379516a1abea48}} +\index{testing\+::internal\+::\+Param\+Iterator\+Interface@{testing\+::internal\+::\+Param\+Iterator\+Interface}!Advance@{Advance}} +\index{Advance@{Advance}!testing\+::internal\+::\+Param\+Iterator\+Interface@{testing\+::internal\+::\+Param\+Iterator\+Interface}} +\subsubsection{\texorpdfstring{Advance()}{Advance()}} +{\footnotesize\ttfamily template$<$typename T$>$ \\ +virtual void \mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{testing\+::internal\+::\+Param\+Iterator\+Interface}}$<$ T $>$\+::Advance (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [pure virtual]}} + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_param_iterator_interface_a17500953df75ecda1ace46c08ff731e9}\label{classtesting_1_1internal_1_1_param_iterator_interface_a17500953df75ecda1ace46c08ff731e9}} +\index{testing\+::internal\+::\+Param\+Iterator\+Interface@{testing\+::internal\+::\+Param\+Iterator\+Interface}!Base\+Generator@{Base\+Generator}} +\index{Base\+Generator@{Base\+Generator}!testing\+::internal\+::\+Param\+Iterator\+Interface@{testing\+::internal\+::\+Param\+Iterator\+Interface}} +\subsubsection{\texorpdfstring{Base\+Generator()}{BaseGenerator()}} +{\footnotesize\ttfamily template$<$typename T$>$ \\ +virtual const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator_interface}{Param\+Generator\+Interface}}$<$T$>$$\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{testing\+::internal\+::\+Param\+Iterator\+Interface}}$<$ T $>$\+::Base\+Generator (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [pure virtual]}} + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_param_iterator_interface_a4998c23e27e2943d97546011aa35db80}\label{classtesting_1_1internal_1_1_param_iterator_interface_a4998c23e27e2943d97546011aa35db80}} +\index{testing\+::internal\+::\+Param\+Iterator\+Interface@{testing\+::internal\+::\+Param\+Iterator\+Interface}!Clone@{Clone}} +\index{Clone@{Clone}!testing\+::internal\+::\+Param\+Iterator\+Interface@{testing\+::internal\+::\+Param\+Iterator\+Interface}} +\subsubsection{\texorpdfstring{Clone()}{Clone()}} +{\footnotesize\ttfamily template$<$typename T$>$ \\ +virtual \mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{Param\+Iterator\+Interface}}$\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{testing\+::internal\+::\+Param\+Iterator\+Interface}}$<$ T $>$\+::Clone (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [pure virtual]}} + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_param_iterator_interface_adfff808576d929085679c315b255af7e}\label{classtesting_1_1internal_1_1_param_iterator_interface_adfff808576d929085679c315b255af7e}} +\index{testing\+::internal\+::\+Param\+Iterator\+Interface@{testing\+::internal\+::\+Param\+Iterator\+Interface}!Current@{Current}} +\index{Current@{Current}!testing\+::internal\+::\+Param\+Iterator\+Interface@{testing\+::internal\+::\+Param\+Iterator\+Interface}} +\subsubsection{\texorpdfstring{Current()}{Current()}} +{\footnotesize\ttfamily template$<$typename T$>$ \\ +virtual const T$\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{testing\+::internal\+::\+Param\+Iterator\+Interface}}$<$ T $>$\+::Current (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [pure virtual]}} + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_param_iterator_interface_a9d811697a752d46f7bd6a0082f9040a3}\label{classtesting_1_1internal_1_1_param_iterator_interface_a9d811697a752d46f7bd6a0082f9040a3}} +\index{testing\+::internal\+::\+Param\+Iterator\+Interface@{testing\+::internal\+::\+Param\+Iterator\+Interface}!Equals@{Equals}} +\index{Equals@{Equals}!testing\+::internal\+::\+Param\+Iterator\+Interface@{testing\+::internal\+::\+Param\+Iterator\+Interface}} +\subsubsection{\texorpdfstring{Equals()}{Equals()}} +{\footnotesize\ttfamily template$<$typename T$>$ \\ +virtual bool \mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{testing\+::internal\+::\+Param\+Iterator\+Interface}}$<$ T $>$\+::Equals (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{Param\+Iterator\+Interface}}$<$ T $>$ \&}]{other }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [pure virtual]}} + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_parameterized_test_factory.eps b/doc/latex/classtesting_1_1internal_1_1_parameterized_test_factory.eps new file mode 100644 index 0000000..47ffc88 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_parameterized_test_factory.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 119.047619 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 4.200000 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(testing::internal::ParameterizedTestFactory< TestClass >) cw +(testing::internal::TestFactoryBase) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (testing::internal::ParameterizedTestFactory< TestClass >) 0.000000 0.000000 box + (testing::internal::TestFactoryBase) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/classtesting_1_1internal_1_1_parameterized_test_factory.tex b/doc/latex/classtesting_1_1internal_1_1_parameterized_test_factory.tex new file mode 100644 index 0000000..aff9d19 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_parameterized_test_factory.tex @@ -0,0 +1,86 @@ +\hypertarget{classtesting_1_1internal_1_1_parameterized_test_factory}{}\section{testing\+:\+:internal\+:\+:Parameterized\+Test\+Factory$<$ Test\+Class $>$ Class Template Reference} +\label{classtesting_1_1internal_1_1_parameterized_test_factory}\index{testing\+::internal\+::\+Parameterized\+Test\+Factory$<$ Test\+Class $>$@{testing\+::internal\+::\+Parameterized\+Test\+Factory$<$ Test\+Class $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +Inheritance diagram for testing\+:\+:internal\+:\+:Parameterized\+Test\+Factory$<$ Test\+Class $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{classtesting_1_1internal_1_1_parameterized_test_factory} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +typedef Test\+Class\+::\+Param\+Type \mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_factory_ad9a27b8e1a83de2f1687625bccff460d}{Param\+Type}} +\end{DoxyCompactItemize} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_factory_a82d78356cd402224255edec760a048fb}{Parameterized\+Test\+Factory}} (\mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_factory_ad9a27b8e1a83de2f1687625bccff460d}{Param\+Type}} parameter) +\item +\mbox{\hyperlink{classtesting_1_1_test}{Test}} $\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_factory_a36d962674d7bf845398637338b9f75cb}{Create\+Test}} () override +\end{DoxyCompactItemize} +\subsection*{Additional Inherited Members} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class Test\+Class$>$\newline +class testing\+::internal\+::\+Parameterized\+Test\+Factory$<$ Test\+Class $>$} + + + +Definition at line 10943 of file gtest.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_parameterized_test_factory_ad9a27b8e1a83de2f1687625bccff460d}\label{classtesting_1_1internal_1_1_parameterized_test_factory_ad9a27b8e1a83de2f1687625bccff460d}} +\index{testing\+::internal\+::\+Parameterized\+Test\+Factory@{testing\+::internal\+::\+Parameterized\+Test\+Factory}!Param\+Type@{Param\+Type}} +\index{Param\+Type@{Param\+Type}!testing\+::internal\+::\+Parameterized\+Test\+Factory@{testing\+::internal\+::\+Parameterized\+Test\+Factory}} +\subsubsection{\texorpdfstring{Param\+Type}{ParamType}} +{\footnotesize\ttfamily template$<$class Test\+Class $>$ \\ +typedef Test\+Class\+::\+Param\+Type \mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_factory}{testing\+::internal\+::\+Parameterized\+Test\+Factory}}$<$ Test\+Class $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_factory_ad9a27b8e1a83de2f1687625bccff460d}{Param\+Type}}} + + + +Definition at line 10945 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_parameterized_test_factory_a82d78356cd402224255edec760a048fb}\label{classtesting_1_1internal_1_1_parameterized_test_factory_a82d78356cd402224255edec760a048fb}} +\index{testing\+::internal\+::\+Parameterized\+Test\+Factory@{testing\+::internal\+::\+Parameterized\+Test\+Factory}!Parameterized\+Test\+Factory@{Parameterized\+Test\+Factory}} +\index{Parameterized\+Test\+Factory@{Parameterized\+Test\+Factory}!testing\+::internal\+::\+Parameterized\+Test\+Factory@{testing\+::internal\+::\+Parameterized\+Test\+Factory}} +\subsubsection{\texorpdfstring{Parameterized\+Test\+Factory()}{ParameterizedTestFactory()}} +{\footnotesize\ttfamily template$<$class Test\+Class $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_factory}{testing\+::internal\+::\+Parameterized\+Test\+Factory}}$<$ Test\+Class $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_factory}{Parameterized\+Test\+Factory}} (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_factory_ad9a27b8e1a83de2f1687625bccff460d}{Param\+Type}}}]{parameter }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [explicit]}} + + + +Definition at line 10946 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_parameterized_test_factory_a36d962674d7bf845398637338b9f75cb}\label{classtesting_1_1internal_1_1_parameterized_test_factory_a36d962674d7bf845398637338b9f75cb}} +\index{testing\+::internal\+::\+Parameterized\+Test\+Factory@{testing\+::internal\+::\+Parameterized\+Test\+Factory}!Create\+Test@{Create\+Test}} +\index{Create\+Test@{Create\+Test}!testing\+::internal\+::\+Parameterized\+Test\+Factory@{testing\+::internal\+::\+Parameterized\+Test\+Factory}} +\subsubsection{\texorpdfstring{Create\+Test()}{CreateTest()}} +{\footnotesize\ttfamily template$<$class Test\+Class $>$ \\ +\mbox{\hyperlink{classtesting_1_1_test}{Test}}$\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_factory}{testing\+::internal\+::\+Parameterized\+Test\+Factory}}$<$ Test\+Class $>$\+::Create\+Test (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\ttfamily [virtual]}} + + + +Implements \mbox{\hyperlink{classtesting_1_1internal_1_1_test_factory_base_a07ac3ca0b196cdb092da0bb186b7c030}{testing\+::internal\+::\+Test\+Factory\+Base}}. + + + +Definition at line 10948 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_parameterized_test_suite_info.eps b/doc/latex/classtesting_1_1internal_1_1_parameterized_test_suite_info.eps new file mode 100644 index 0000000..cad9ae6 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_parameterized_test_suite_info.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 118.343195 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 4.225000 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(testing::internal::ParameterizedTestSuiteInfo< TestSuite >) cw +(testing::internal::ParameterizedTestSuiteInfoBase) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (testing::internal::ParameterizedTestSuiteInfo< TestSuite >) 0.000000 0.000000 box + (testing::internal::ParameterizedTestSuiteInfoBase) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/classtesting_1_1internal_1_1_parameterized_test_suite_info.tex b/doc/latex/classtesting_1_1internal_1_1_parameterized_test_suite_info.tex new file mode 100644 index 0000000..1b4d829 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_parameterized_test_suite_info.tex @@ -0,0 +1,168 @@ +\hypertarget{classtesting_1_1internal_1_1_parameterized_test_suite_info}{}\section{testing\+:\+:internal\+:\+:Parameterized\+Test\+Suite\+Info$<$ Test\+Suite $>$ Class Template Reference} +\label{classtesting_1_1internal_1_1_parameterized_test_suite_info}\index{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info$<$ Test\+Suite $>$@{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info$<$ Test\+Suite $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +Inheritance diagram for testing\+:\+:internal\+:\+:Parameterized\+Test\+Suite\+Info$<$ Test\+Suite $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{classtesting_1_1internal_1_1_parameterized_test_suite_info} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_info_a10761bd750a6820a8d8d2c654b10fe54}{Param\+Type}} = typename Test\+Suite\+::\+Param\+Type +\item +typedef \mbox{\hyperlink{structtesting_1_1internal_1_1_param_name_gen_func}{Param\+Name\+Gen\+Func}}$<$ \mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_info_a10761bd750a6820a8d8d2c654b10fe54}{Param\+Type}} $>$\+::Type \mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_info_a35e630877b1d9589a4bbc0439b35bbda}{Param\+Name\+Generator\+Func}} +\end{DoxyCompactItemize} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +typedef \mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_info_ac6230057c507d74e373233edbf0410c2}{Param\+Generator}} (Generator\+Creation\+Func)() +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_info_a56fc02ddec2cf2101332d1125e4c75a9}{Parameterized\+Test\+Suite\+Info}} (const char $\ast$name, \mbox{\hyperlink{structtesting_1_1internal_1_1_code_location}{Code\+Location}} code\+\_\+location) +\item +const std\+::string \& \mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_info_a4a5ddc2cd0404438c2b4d405cd0e706c}{Get\+Test\+Suite\+Name}} () const override +\item +\mbox{\hyperlink{namespacetesting_1_1internal_ab1114197d3c657d8b7f8e0c5caa12d00}{Type\+Id}} \mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_info_af488d1d7c1889a250acff2ea6eba4c84}{Get\+Test\+Suite\+Type\+Id}} () const override +\item +void \mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_info_a07445ac68713383f38747e1c56c6a04a}{Add\+Test\+Pattern}} (const char $\ast$test\+\_\+suite\+\_\+name, const char $\ast$test\+\_\+base\+\_\+name, \mbox{\hyperlink{classtesting_1_1internal_1_1_test_meta_factory_base}{Test\+Meta\+Factory\+Base}}$<$ \mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_info_a10761bd750a6820a8d8d2c654b10fe54}{Param\+Type}} $>$ $\ast$meta\+\_\+factory) +\item +int \mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_info_a174f164f38e522a3935da911a9c1e450}{Add\+Test\+Suite\+Instantiation}} (const std\+::string \&instantiation\+\_\+name, Generator\+Creation\+Func $\ast$func, \mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_info_a35e630877b1d9589a4bbc0439b35bbda}{Param\+Name\+Generator\+Func}} $\ast$name\+\_\+func, const char $\ast$file, int line) +\item +void \mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_info_a8c0af866d3c291a63d3f4581ccd452d1}{Register\+Tests}} () override +\end{DoxyCompactItemize} +\subsection*{Additional Inherited Members} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class Test\+Suite$>$\newline +class testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info$<$ Test\+Suite $>$} + + + +Definition at line 11034 of file gtest.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_parameterized_test_suite_info_a35e630877b1d9589a4bbc0439b35bbda}\label{classtesting_1_1internal_1_1_parameterized_test_suite_info_a35e630877b1d9589a4bbc0439b35bbda}} +\index{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info@{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info}!Param\+Name\+Generator\+Func@{Param\+Name\+Generator\+Func}} +\index{Param\+Name\+Generator\+Func@{Param\+Name\+Generator\+Func}!testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info@{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info}} +\subsubsection{\texorpdfstring{Param\+Name\+Generator\+Func}{ParamNameGeneratorFunc}} +{\footnotesize\ttfamily template$<$class Test\+Suite$>$ \\ +typedef \mbox{\hyperlink{structtesting_1_1internal_1_1_param_name_gen_func}{Param\+Name\+Gen\+Func}}$<$\mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_info_a10761bd750a6820a8d8d2c654b10fe54}{Param\+Type}}$>$\+::Type \mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_info}{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info}}$<$ \mbox{\hyperlink{classtesting_1_1_test_suite}{Test\+Suite}} $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_info_a35e630877b1d9589a4bbc0439b35bbda}{Param\+Name\+Generator\+Func}}} + + + +Definition at line 11042 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_parameterized_test_suite_info_a10761bd750a6820a8d8d2c654b10fe54}\label{classtesting_1_1internal_1_1_parameterized_test_suite_info_a10761bd750a6820a8d8d2c654b10fe54}} +\index{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info@{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info}!Param\+Type@{Param\+Type}} +\index{Param\+Type@{Param\+Type}!testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info@{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info}} +\subsubsection{\texorpdfstring{Param\+Type}{ParamType}} +{\footnotesize\ttfamily template$<$class Test\+Suite$>$ \\ +using \mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_info}{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info}}$<$ \mbox{\hyperlink{classtesting_1_1_test_suite}{Test\+Suite}} $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_info_a10761bd750a6820a8d8d2c654b10fe54}{Param\+Type}} = typename Test\+Suite\+::\+Param\+Type} + + + +Definition at line 11039 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_parameterized_test_suite_info_a56fc02ddec2cf2101332d1125e4c75a9}\label{classtesting_1_1internal_1_1_parameterized_test_suite_info_a56fc02ddec2cf2101332d1125e4c75a9}} +\index{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info@{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info}!Parameterized\+Test\+Suite\+Info@{Parameterized\+Test\+Suite\+Info}} +\index{Parameterized\+Test\+Suite\+Info@{Parameterized\+Test\+Suite\+Info}!testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info@{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info}} +\subsubsection{\texorpdfstring{Parameterized\+Test\+Suite\+Info()}{ParameterizedTestSuiteInfo()}} +{\footnotesize\ttfamily template$<$class Test\+Suite$>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_info}{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info}}$<$ \mbox{\hyperlink{classtesting_1_1_test_suite}{Test\+Suite}} $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_info}{Parameterized\+Test\+Suite\+Info}} (\begin{DoxyParamCaption}\item[{const char $\ast$}]{name, }\item[{\mbox{\hyperlink{structtesting_1_1internal_1_1_code_location}{Code\+Location}}}]{code\+\_\+location }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [explicit]}} + + + +Definition at line 11044 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_parameterized_test_suite_info_a07445ac68713383f38747e1c56c6a04a}\label{classtesting_1_1internal_1_1_parameterized_test_suite_info_a07445ac68713383f38747e1c56c6a04a}} +\index{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info@{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info}!Add\+Test\+Pattern@{Add\+Test\+Pattern}} +\index{Add\+Test\+Pattern@{Add\+Test\+Pattern}!testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info@{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info}} +\subsubsection{\texorpdfstring{Add\+Test\+Pattern()}{AddTestPattern()}} +{\footnotesize\ttfamily template$<$class Test\+Suite$>$ \\ +void \mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_info}{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info}}$<$ \mbox{\hyperlink{classtesting_1_1_test_suite}{Test\+Suite}} $>$\+::Add\+Test\+Pattern (\begin{DoxyParamCaption}\item[{const char $\ast$}]{test\+\_\+suite\+\_\+name, }\item[{const char $\ast$}]{test\+\_\+base\+\_\+name, }\item[{\mbox{\hyperlink{classtesting_1_1internal_1_1_test_meta_factory_base}{Test\+Meta\+Factory\+Base}}$<$ \mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_info_a10761bd750a6820a8d8d2c654b10fe54}{Param\+Type}} $>$ $\ast$}]{meta\+\_\+factory }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 11060 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_parameterized_test_suite_info_a174f164f38e522a3935da911a9c1e450}\label{classtesting_1_1internal_1_1_parameterized_test_suite_info_a174f164f38e522a3935da911a9c1e450}} +\index{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info@{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info}!Add\+Test\+Suite\+Instantiation@{Add\+Test\+Suite\+Instantiation}} +\index{Add\+Test\+Suite\+Instantiation@{Add\+Test\+Suite\+Instantiation}!testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info@{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info}} +\subsubsection{\texorpdfstring{Add\+Test\+Suite\+Instantiation()}{AddTestSuiteInstantiation()}} +{\footnotesize\ttfamily template$<$class Test\+Suite$>$ \\ +int \mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_info}{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info}}$<$ \mbox{\hyperlink{classtesting_1_1_test_suite}{Test\+Suite}} $>$\+::Add\+Test\+Suite\+Instantiation (\begin{DoxyParamCaption}\item[{const std\+::string \&}]{instantiation\+\_\+name, }\item[{Generator\+Creation\+Func $\ast$}]{func, }\item[{\mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_info_a35e630877b1d9589a4bbc0439b35bbda}{Param\+Name\+Generator\+Func}} $\ast$}]{name\+\_\+func, }\item[{const char $\ast$}]{file, }\item[{int}]{line }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 11067 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_parameterized_test_suite_info_a4a5ddc2cd0404438c2b4d405cd0e706c}\label{classtesting_1_1internal_1_1_parameterized_test_suite_info_a4a5ddc2cd0404438c2b4d405cd0e706c}} +\index{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info@{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info}!Get\+Test\+Suite\+Name@{Get\+Test\+Suite\+Name}} +\index{Get\+Test\+Suite\+Name@{Get\+Test\+Suite\+Name}!testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info@{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info}} +\subsubsection{\texorpdfstring{Get\+Test\+Suite\+Name()}{GetTestSuiteName()}} +{\footnotesize\ttfamily template$<$class Test\+Suite$>$ \\ +const std\+::string\& \mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_info}{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info}}$<$ \mbox{\hyperlink{classtesting_1_1_test_suite}{Test\+Suite}} $>$\+::Get\+Test\+Suite\+Name (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\ttfamily [virtual]}} + + + +Implements \mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_info_base_aa6e36241431dc72c251ecee9b637b4d3}{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info\+Base}}. + + + +Definition at line 11049 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_parameterized_test_suite_info_af488d1d7c1889a250acff2ea6eba4c84}\label{classtesting_1_1internal_1_1_parameterized_test_suite_info_af488d1d7c1889a250acff2ea6eba4c84}} +\index{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info@{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info}!Get\+Test\+Suite\+Type\+Id@{Get\+Test\+Suite\+Type\+Id}} +\index{Get\+Test\+Suite\+Type\+Id@{Get\+Test\+Suite\+Type\+Id}!testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info@{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info}} +\subsubsection{\texorpdfstring{Get\+Test\+Suite\+Type\+Id()}{GetTestSuiteTypeId()}} +{\footnotesize\ttfamily template$<$class Test\+Suite$>$ \\ +\mbox{\hyperlink{namespacetesting_1_1internal_ab1114197d3c657d8b7f8e0c5caa12d00}{Type\+Id}} \mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_info}{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info}}$<$ \mbox{\hyperlink{classtesting_1_1_test_suite}{Test\+Suite}} $>$\+::Get\+Test\+Suite\+Type\+Id (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\ttfamily [virtual]}} + + + +Implements \mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_info_base_ac5bcbf8c50a44472d697e0c80b54387d}{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info\+Base}}. + + + +Definition at line 11053 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_parameterized_test_suite_info_ac6230057c507d74e373233edbf0410c2}\label{classtesting_1_1internal_1_1_parameterized_test_suite_info_ac6230057c507d74e373233edbf0410c2}} +\index{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info@{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info}!Param\+Generator@{Param\+Generator}} +\index{Param\+Generator@{Param\+Generator}!testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info@{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info}} +\subsubsection{\texorpdfstring{Param\+Generator()}{ParamGenerator()}} +{\footnotesize\ttfamily template$<$class Test\+Suite$>$ \\ +typedef \mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_info}{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info}}$<$ \mbox{\hyperlink{classtesting_1_1_test_suite}{Test\+Suite}} $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}} (\begin{DoxyParamCaption}\item[{Generator\+Creation\+Func}]{ }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_parameterized_test_suite_info_a8c0af866d3c291a63d3f4581ccd452d1}\label{classtesting_1_1internal_1_1_parameterized_test_suite_info_a8c0af866d3c291a63d3f4581ccd452d1}} +\index{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info@{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info}!Register\+Tests@{Register\+Tests}} +\index{Register\+Tests@{Register\+Tests}!testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info@{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info}} +\subsubsection{\texorpdfstring{Register\+Tests()}{RegisterTests()}} +{\footnotesize\ttfamily template$<$class Test\+Suite$>$ \\ +void \mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_info}{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info}}$<$ \mbox{\hyperlink{classtesting_1_1_test_suite}{Test\+Suite}} $>$\+::Register\+Tests (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\ttfamily [virtual]}} + + + +Implements \mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_info_base_a41d7d663014af0c1e614c5a61293cb5a}{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info\+Base}}. + + + +Definition at line 11080 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_parameterized_test_suite_info_base.eps b/doc/latex/classtesting_1_1internal_1_1_parameterized_test_suite_info_base.eps new file mode 100644 index 0000000..2064e03 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_parameterized_test_suite_info_base.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 118.343195 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 4.225000 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(testing::internal::ParameterizedTestSuiteInfoBase) cw +(testing::internal::ParameterizedTestSuiteInfo< TestSuite >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (testing::internal::ParameterizedTestSuiteInfoBase) 0.000000 1.000000 box + (testing::internal::ParameterizedTestSuiteInfo< TestSuite >) 0.000000 0.000000 box + +% ----- relations ----- + +solid +1 0.000000 0.250000 out +solid +0 0.000000 0.750000 in diff --git a/doc/latex/classtesting_1_1internal_1_1_parameterized_test_suite_info_base.tex b/doc/latex/classtesting_1_1internal_1_1_parameterized_test_suite_info_base.tex new file mode 100644 index 0000000..026c421 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_parameterized_test_suite_info_base.tex @@ -0,0 +1,96 @@ +\hypertarget{classtesting_1_1internal_1_1_parameterized_test_suite_info_base}{}\section{testing\+:\+:internal\+:\+:Parameterized\+Test\+Suite\+Info\+Base Class Reference} +\label{classtesting_1_1internal_1_1_parameterized_test_suite_info_base}\index{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info\+Base@{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info\+Base}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +Inheritance diagram for testing\+:\+:internal\+:\+:Parameterized\+Test\+Suite\+Info\+Base\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{classtesting_1_1internal_1_1_parameterized_test_suite_info_base} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +virtual \mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_info_base_ac2aa0664f56e84cacab823d345c7d67b}{$\sim$\+Parameterized\+Test\+Suite\+Info\+Base}} () +\item +virtual const std\+::string \& \mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_info_base_aa6e36241431dc72c251ecee9b637b4d3}{Get\+Test\+Suite\+Name}} () const =0 +\item +virtual \mbox{\hyperlink{namespacetesting_1_1internal_ab1114197d3c657d8b7f8e0c5caa12d00}{Type\+Id}} \mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_info_base_ac5bcbf8c50a44472d697e0c80b54387d}{Get\+Test\+Suite\+Type\+Id}} () const =0 +\item +virtual void \mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_info_base_a41d7d663014af0c1e614c5a61293cb5a}{Register\+Tests}} ()=0 +\end{DoxyCompactItemize} +\subsection*{Protected Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_info_base_a3b50ae419b0de858f3ad9b8dd49989de}{Parameterized\+Test\+Suite\+Info\+Base}} () +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} + + +Definition at line 11005 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_parameterized_test_suite_info_base_ac2aa0664f56e84cacab823d345c7d67b}\label{classtesting_1_1internal_1_1_parameterized_test_suite_info_base_ac2aa0664f56e84cacab823d345c7d67b}} +\index{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info\+Base@{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info\+Base}!````~Parameterized\+Test\+Suite\+Info\+Base@{$\sim$\+Parameterized\+Test\+Suite\+Info\+Base}} +\index{````~Parameterized\+Test\+Suite\+Info\+Base@{$\sim$\+Parameterized\+Test\+Suite\+Info\+Base}!testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info\+Base@{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info\+Base}} +\subsubsection{\texorpdfstring{$\sim$\+Parameterized\+Test\+Suite\+Info\+Base()}{~ParameterizedTestSuiteInfoBase()}} +{\footnotesize\ttfamily virtual testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info\+Base\+::$\sim$\+Parameterized\+Test\+Suite\+Info\+Base (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}} + + + +Definition at line 11007 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_parameterized_test_suite_info_base_a3b50ae419b0de858f3ad9b8dd49989de}\label{classtesting_1_1internal_1_1_parameterized_test_suite_info_base_a3b50ae419b0de858f3ad9b8dd49989de}} +\index{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info\+Base@{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info\+Base}!Parameterized\+Test\+Suite\+Info\+Base@{Parameterized\+Test\+Suite\+Info\+Base}} +\index{Parameterized\+Test\+Suite\+Info\+Base@{Parameterized\+Test\+Suite\+Info\+Base}!testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info\+Base@{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info\+Base}} +\subsubsection{\texorpdfstring{Parameterized\+Test\+Suite\+Info\+Base()}{ParameterizedTestSuiteInfoBase()}} +{\footnotesize\ttfamily testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info\+Base\+::\+Parameterized\+Test\+Suite\+Info\+Base (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [protected]}} + + + +Definition at line 11020 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_parameterized_test_suite_info_base_aa6e36241431dc72c251ecee9b637b4d3}\label{classtesting_1_1internal_1_1_parameterized_test_suite_info_base_aa6e36241431dc72c251ecee9b637b4d3}} +\index{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info\+Base@{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info\+Base}!Get\+Test\+Suite\+Name@{Get\+Test\+Suite\+Name}} +\index{Get\+Test\+Suite\+Name@{Get\+Test\+Suite\+Name}!testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info\+Base@{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info\+Base}} +\subsubsection{\texorpdfstring{Get\+Test\+Suite\+Name()}{GetTestSuiteName()}} +{\footnotesize\ttfamily virtual const std\+::string\& testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info\+Base\+::\+Get\+Test\+Suite\+Name (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [pure virtual]}} + + + +Implemented in \mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_info_a4a5ddc2cd0404438c2b4d405cd0e706c}{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info$<$ Test\+Suite $>$}}. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_parameterized_test_suite_info_base_ac5bcbf8c50a44472d697e0c80b54387d}\label{classtesting_1_1internal_1_1_parameterized_test_suite_info_base_ac5bcbf8c50a44472d697e0c80b54387d}} +\index{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info\+Base@{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info\+Base}!Get\+Test\+Suite\+Type\+Id@{Get\+Test\+Suite\+Type\+Id}} +\index{Get\+Test\+Suite\+Type\+Id@{Get\+Test\+Suite\+Type\+Id}!testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info\+Base@{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info\+Base}} +\subsubsection{\texorpdfstring{Get\+Test\+Suite\+Type\+Id()}{GetTestSuiteTypeId()}} +{\footnotesize\ttfamily virtual \mbox{\hyperlink{namespacetesting_1_1internal_ab1114197d3c657d8b7f8e0c5caa12d00}{Type\+Id}} testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info\+Base\+::\+Get\+Test\+Suite\+Type\+Id (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [pure virtual]}} + + + +Implemented in \mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_info_af488d1d7c1889a250acff2ea6eba4c84}{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info$<$ Test\+Suite $>$}}. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_parameterized_test_suite_info_base_a41d7d663014af0c1e614c5a61293cb5a}\label{classtesting_1_1internal_1_1_parameterized_test_suite_info_base_a41d7d663014af0c1e614c5a61293cb5a}} +\index{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info\+Base@{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info\+Base}!Register\+Tests@{Register\+Tests}} +\index{Register\+Tests@{Register\+Tests}!testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info\+Base@{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info\+Base}} +\subsubsection{\texorpdfstring{Register\+Tests()}{RegisterTests()}} +{\footnotesize\ttfamily virtual void testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info\+Base\+::\+Register\+Tests (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [pure virtual]}} + + + +Implemented in \mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_info_a8c0af866d3c291a63d3f4581ccd452d1}{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info$<$ Test\+Suite $>$}}. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_parameterized_test_suite_registry.tex b/doc/latex/classtesting_1_1internal_1_1_parameterized_test_suite_registry.tex new file mode 100644 index 0000000..95f685f --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_parameterized_test_suite_registry.tex @@ -0,0 +1,89 @@ +\hypertarget{classtesting_1_1internal_1_1_parameterized_test_suite_registry}{}\section{testing\+:\+:internal\+:\+:Parameterized\+Test\+Suite\+Registry Class Reference} +\label{classtesting_1_1internal_1_1_parameterized_test_suite_registry}\index{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Registry@{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Registry}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_registry_ae3827c085ed16faaa9197486513292c0}{Parameterized\+Test\+Suite\+Registry}} () +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_registry_ab29f7a321883945d7f86f3292c100eb5}{$\sim$\+Parameterized\+Test\+Suite\+Registry}} () +\item +{\footnotesize template$<$class Test\+Suite $>$ }\\\mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_info}{Parameterized\+Test\+Suite\+Info}}$<$ \mbox{\hyperlink{classtesting_1_1_test_suite}{Test\+Suite}} $>$ $\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_registry_a89ef6dd228f4188e1928513e860580d0}{Get\+Test\+Suite\+Pattern\+Holder}} (const char $\ast$test\+\_\+suite\+\_\+name, \mbox{\hyperlink{structtesting_1_1internal_1_1_code_location}{Code\+Location}} code\+\_\+location) +\item +void \mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_registry_a44c2ee0296de42dc6ca7abbf48d00495}{Register\+Tests}} () +\item +{\footnotesize template$<$class Test\+Case $>$ }\\\mbox{\hyperlink{namespacetesting_1_1internal_aac31682b6b41997d6cc610a5787dc8bc}{Parameterized\+Test\+Case\+Info}}$<$ Test\+Case $>$ $\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_registry_a3fe06fb4e1b4194dae1fbcdf3560fbd3}{Get\+Test\+Case\+Pattern\+Holder}} (const char $\ast$test\+\_\+case\+\_\+name, \mbox{\hyperlink{structtesting_1_1internal_1_1_code_location}{Code\+Location}} code\+\_\+location) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} + + +Definition at line 11205 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_parameterized_test_suite_registry_ae3827c085ed16faaa9197486513292c0}\label{classtesting_1_1internal_1_1_parameterized_test_suite_registry_ae3827c085ed16faaa9197486513292c0}} +\index{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Registry@{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Registry}!Parameterized\+Test\+Suite\+Registry@{Parameterized\+Test\+Suite\+Registry}} +\index{Parameterized\+Test\+Suite\+Registry@{Parameterized\+Test\+Suite\+Registry}!testing\+::internal\+::\+Parameterized\+Test\+Suite\+Registry@{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Registry}} +\subsubsection{\texorpdfstring{Parameterized\+Test\+Suite\+Registry()}{ParameterizedTestSuiteRegistry()}} +{\footnotesize\ttfamily testing\+::internal\+::\+Parameterized\+Test\+Suite\+Registry\+::\+Parameterized\+Test\+Suite\+Registry (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 11207 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_parameterized_test_suite_registry_ab29f7a321883945d7f86f3292c100eb5}\label{classtesting_1_1internal_1_1_parameterized_test_suite_registry_ab29f7a321883945d7f86f3292c100eb5}} +\index{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Registry@{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Registry}!````~Parameterized\+Test\+Suite\+Registry@{$\sim$\+Parameterized\+Test\+Suite\+Registry}} +\index{````~Parameterized\+Test\+Suite\+Registry@{$\sim$\+Parameterized\+Test\+Suite\+Registry}!testing\+::internal\+::\+Parameterized\+Test\+Suite\+Registry@{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Registry}} +\subsubsection{\texorpdfstring{$\sim$\+Parameterized\+Test\+Suite\+Registry()}{~ParameterizedTestSuiteRegistry()}} +{\footnotesize\ttfamily testing\+::internal\+::\+Parameterized\+Test\+Suite\+Registry\+::$\sim$\+Parameterized\+Test\+Suite\+Registry (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 11208 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_parameterized_test_suite_registry_a3fe06fb4e1b4194dae1fbcdf3560fbd3}\label{classtesting_1_1internal_1_1_parameterized_test_suite_registry_a3fe06fb4e1b4194dae1fbcdf3560fbd3}} +\index{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Registry@{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Registry}!Get\+Test\+Case\+Pattern\+Holder@{Get\+Test\+Case\+Pattern\+Holder}} +\index{Get\+Test\+Case\+Pattern\+Holder@{Get\+Test\+Case\+Pattern\+Holder}!testing\+::internal\+::\+Parameterized\+Test\+Suite\+Registry@{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Registry}} +\subsubsection{\texorpdfstring{Get\+Test\+Case\+Pattern\+Holder()}{GetTestCasePatternHolder()}} +{\footnotesize\ttfamily template$<$class Test\+Case $>$ \\ +\mbox{\hyperlink{namespacetesting_1_1internal_aac31682b6b41997d6cc610a5787dc8bc}{Parameterized\+Test\+Case\+Info}}$<$Test\+Case$>$$\ast$ testing\+::internal\+::\+Parameterized\+Test\+Suite\+Registry\+::\+Get\+Test\+Case\+Pattern\+Holder (\begin{DoxyParamCaption}\item[{const char $\ast$}]{test\+\_\+case\+\_\+name, }\item[{\mbox{\hyperlink{structtesting_1_1internal_1_1_code_location}{Code\+Location}}}]{code\+\_\+location }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 11253 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_parameterized_test_suite_registry_a89ef6dd228f4188e1928513e860580d0}\label{classtesting_1_1internal_1_1_parameterized_test_suite_registry_a89ef6dd228f4188e1928513e860580d0}} +\index{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Registry@{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Registry}!Get\+Test\+Suite\+Pattern\+Holder@{Get\+Test\+Suite\+Pattern\+Holder}} +\index{Get\+Test\+Suite\+Pattern\+Holder@{Get\+Test\+Suite\+Pattern\+Holder}!testing\+::internal\+::\+Parameterized\+Test\+Suite\+Registry@{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Registry}} +\subsubsection{\texorpdfstring{Get\+Test\+Suite\+Pattern\+Holder()}{GetTestSuitePatternHolder()}} +{\footnotesize\ttfamily template$<$class Test\+Suite $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_info}{Parameterized\+Test\+Suite\+Info}}$<$\mbox{\hyperlink{classtesting_1_1_test_suite}{Test\+Suite}}$>$$\ast$ testing\+::internal\+::\+Parameterized\+Test\+Suite\+Registry\+::\+Get\+Test\+Suite\+Pattern\+Holder (\begin{DoxyParamCaption}\item[{const char $\ast$}]{test\+\_\+suite\+\_\+name, }\item[{\mbox{\hyperlink{structtesting_1_1internal_1_1_code_location}{Code\+Location}}}]{code\+\_\+location }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 11217 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_parameterized_test_suite_registry_a44c2ee0296de42dc6ca7abbf48d00495}\label{classtesting_1_1internal_1_1_parameterized_test_suite_registry_a44c2ee0296de42dc6ca7abbf48d00495}} +\index{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Registry@{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Registry}!Register\+Tests@{Register\+Tests}} +\index{Register\+Tests@{Register\+Tests}!testing\+::internal\+::\+Parameterized\+Test\+Suite\+Registry@{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Registry}} +\subsubsection{\texorpdfstring{Register\+Tests()}{RegisterTests()}} +{\footnotesize\ttfamily void testing\+::internal\+::\+Parameterized\+Test\+Suite\+Registry\+::\+Register\+Tests (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 11245 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_r_e.tex b/doc/latex/classtesting_1_1internal_1_1_r_e.tex new file mode 100644 index 0000000..0809693 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_r_e.tex @@ -0,0 +1,139 @@ +\hypertarget{classtesting_1_1internal_1_1_r_e}{}\section{testing\+:\+:internal\+:\+:RE Class Reference} +\label{classtesting_1_1internal_1_1_r_e}\index{testing\+::internal\+::\+RE@{testing\+::internal\+::\+RE}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_r_e_ab215dbc2565fce641e1746ca43e9d68a}{RE}} (const \mbox{\hyperlink{classtesting_1_1internal_1_1_r_e}{RE}} \&other) +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_r_e_a8840bd639642f3d4769a94a68ce463c2}{RE}} (const \+::std\+::string \®ex) +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_r_e_a908ea936a5b7a14479a1b292a7189ca6}{RE}} (const char $\ast$regex) +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_r_e_af3ad18e6c0b433f3d85ed23eda8119f3}{$\sim$\+RE}} () +\item +const char $\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_r_e_a24236aab3a6b0183a145a6f4c0bb9848}{pattern}} () const +\end{DoxyCompactItemize} +\subsection*{Static Public Member Functions} +\begin{DoxyCompactItemize} +\item +static bool \mbox{\hyperlink{classtesting_1_1internal_1_1_r_e_aa79a950758d0f1d62f7762d1e9cefe86}{Full\+Match}} (const \+::std\+::string \&str, const \mbox{\hyperlink{classtesting_1_1internal_1_1_r_e}{RE}} \&re) +\item +static bool \mbox{\hyperlink{classtesting_1_1internal_1_1_r_e_a1e81f9a87211bdca645e025f8f0236c8}{Partial\+Match}} (const \+::std\+::string \&str, const \mbox{\hyperlink{classtesting_1_1internal_1_1_r_e}{RE}} \&re) +\item +static bool \mbox{\hyperlink{classtesting_1_1internal_1_1_r_e_a0892b449d80184a7074276377401895e}{Full\+Match}} (const char $\ast$str, const \mbox{\hyperlink{classtesting_1_1internal_1_1_r_e}{RE}} \&re) +\item +static bool \mbox{\hyperlink{classtesting_1_1internal_1_1_r_e_ab6b3d18a28c44d3ff9f42840d1fa8d00}{Partial\+Match}} (const char $\ast$str, const \mbox{\hyperlink{classtesting_1_1internal_1_1_r_e}{RE}} \&re) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} + + +Definition at line 1136 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_r_e_ab215dbc2565fce641e1746ca43e9d68a}\label{classtesting_1_1internal_1_1_r_e_ab215dbc2565fce641e1746ca43e9d68a}} +\index{testing\+::internal\+::\+RE@{testing\+::internal\+::\+RE}!RE@{RE}} +\index{RE@{RE}!testing\+::internal\+::\+RE@{testing\+::internal\+::\+RE}} +\subsubsection{\texorpdfstring{R\+E()}{RE()}\hspace{0.1cm}{\footnotesize\ttfamily [1/3]}} +{\footnotesize\ttfamily testing\+::internal\+::\+R\+E\+::\+RE (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_r_e}{RE}} \&}]{other }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 1140 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_r_e_a8840bd639642f3d4769a94a68ce463c2}\label{classtesting_1_1internal_1_1_r_e_a8840bd639642f3d4769a94a68ce463c2}} +\index{testing\+::internal\+::\+RE@{testing\+::internal\+::\+RE}!RE@{RE}} +\index{RE@{RE}!testing\+::internal\+::\+RE@{testing\+::internal\+::\+RE}} +\subsubsection{\texorpdfstring{R\+E()}{RE()}\hspace{0.1cm}{\footnotesize\ttfamily [2/3]}} +{\footnotesize\ttfamily testing\+::internal\+::\+R\+E\+::\+RE (\begin{DoxyParamCaption}\item[{const \+::std\+::string \&}]{regex }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 1143 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_r_e_a908ea936a5b7a14479a1b292a7189ca6}\label{classtesting_1_1internal_1_1_r_e_a908ea936a5b7a14479a1b292a7189ca6}} +\index{testing\+::internal\+::\+RE@{testing\+::internal\+::\+RE}!RE@{RE}} +\index{RE@{RE}!testing\+::internal\+::\+RE@{testing\+::internal\+::\+RE}} +\subsubsection{\texorpdfstring{R\+E()}{RE()}\hspace{0.1cm}{\footnotesize\ttfamily [3/3]}} +{\footnotesize\ttfamily testing\+::internal\+::\+R\+E\+::\+RE (\begin{DoxyParamCaption}\item[{const char $\ast$}]{regex }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 1151 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_r_e_af3ad18e6c0b433f3d85ed23eda8119f3}\label{classtesting_1_1internal_1_1_r_e_af3ad18e6c0b433f3d85ed23eda8119f3}} +\index{testing\+::internal\+::\+RE@{testing\+::internal\+::\+RE}!````~RE@{$\sim$\+RE}} +\index{````~RE@{$\sim$\+RE}!testing\+::internal\+::\+RE@{testing\+::internal\+::\+RE}} +\subsubsection{\texorpdfstring{$\sim$\+R\+E()}{~RE()}} +{\footnotesize\ttfamily testing\+::internal\+::\+R\+E\+::$\sim$\+RE (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + + + +Definition at line 10308 of file gtest-\/all.\+cc. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_r_e_aa79a950758d0f1d62f7762d1e9cefe86}\label{classtesting_1_1internal_1_1_r_e_aa79a950758d0f1d62f7762d1e9cefe86}} +\index{testing\+::internal\+::\+RE@{testing\+::internal\+::\+RE}!Full\+Match@{Full\+Match}} +\index{Full\+Match@{Full\+Match}!testing\+::internal\+::\+RE@{testing\+::internal\+::\+RE}} +\subsubsection{\texorpdfstring{Full\+Match()}{FullMatch()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily static bool testing\+::internal\+::\+R\+E\+::\+Full\+Match (\begin{DoxyParamCaption}\item[{const \+::std\+::string \&}]{str, }\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_r_e}{RE}} \&}]{re }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}} + + + +Definition at line 1161 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_r_e_a0892b449d80184a7074276377401895e}\label{classtesting_1_1internal_1_1_r_e_a0892b449d80184a7074276377401895e}} +\index{testing\+::internal\+::\+RE@{testing\+::internal\+::\+RE}!Full\+Match@{Full\+Match}} +\index{Full\+Match@{Full\+Match}!testing\+::internal\+::\+RE@{testing\+::internal\+::\+RE}} +\subsubsection{\texorpdfstring{Full\+Match()}{FullMatch()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily bool testing\+::internal\+::\+R\+E\+::\+Full\+Match (\begin{DoxyParamCaption}\item[{const char $\ast$}]{str, }\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_r_e}{RE}} \&}]{re }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} + + + +Definition at line 10321 of file gtest-\/all.\+cc. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_r_e_a1e81f9a87211bdca645e025f8f0236c8}\label{classtesting_1_1internal_1_1_r_e_a1e81f9a87211bdca645e025f8f0236c8}} +\index{testing\+::internal\+::\+RE@{testing\+::internal\+::\+RE}!Partial\+Match@{Partial\+Match}} +\index{Partial\+Match@{Partial\+Match}!testing\+::internal\+::\+RE@{testing\+::internal\+::\+RE}} +\subsubsection{\texorpdfstring{Partial\+Match()}{PartialMatch()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily static bool testing\+::internal\+::\+R\+E\+::\+Partial\+Match (\begin{DoxyParamCaption}\item[{const \+::std\+::string \&}]{str, }\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_r_e}{RE}} \&}]{re }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}} + + + +Definition at line 1164 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_r_e_ab6b3d18a28c44d3ff9f42840d1fa8d00}\label{classtesting_1_1internal_1_1_r_e_ab6b3d18a28c44d3ff9f42840d1fa8d00}} +\index{testing\+::internal\+::\+RE@{testing\+::internal\+::\+RE}!Partial\+Match@{Partial\+Match}} +\index{Partial\+Match@{Partial\+Match}!testing\+::internal\+::\+RE@{testing\+::internal\+::\+RE}} +\subsubsection{\texorpdfstring{Partial\+Match()}{PartialMatch()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily bool testing\+::internal\+::\+R\+E\+::\+Partial\+Match (\begin{DoxyParamCaption}\item[{const char $\ast$}]{str, }\item[{const \mbox{\hyperlink{classtesting_1_1internal_1_1_r_e}{RE}} \&}]{re }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} + + + +Definition at line 10330 of file gtest-\/all.\+cc. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_r_e_a24236aab3a6b0183a145a6f4c0bb9848}\label{classtesting_1_1internal_1_1_r_e_a24236aab3a6b0183a145a6f4c0bb9848}} +\index{testing\+::internal\+::\+RE@{testing\+::internal\+::\+RE}!pattern@{pattern}} +\index{pattern@{pattern}!testing\+::internal\+::\+RE@{testing\+::internal\+::\+RE}} +\subsubsection{\texorpdfstring{pattern()}{pattern()}} +{\footnotesize\ttfamily const char$\ast$ testing\+::internal\+::\+R\+E\+::pattern (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 1155 of file gtest.\+h. + + + +The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest-all_8cc}{gtest-\/all.\+cc}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_random.tex b/doc/latex/classtesting_1_1internal_1_1_random.tex new file mode 100644 index 0000000..4a98d27 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_random.tex @@ -0,0 +1,77 @@ +\hypertarget{classtesting_1_1internal_1_1_random}{}\section{testing\+:\+:internal\+:\+:Random Class Reference} +\label{classtesting_1_1internal_1_1_random}\index{testing\+::internal\+::\+Random@{testing\+::internal\+::\+Random}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_random_a6e112be5e7cce00551f6383025f69460}{Random}} (\mbox{\hyperlink{namespacetesting_1_1internal_a40d4fffcd2bf56f18b1c380615aa85e3}{U\+Int32}} seed) +\item +void \mbox{\hyperlink{classtesting_1_1internal_1_1_random_adf2f24199318a46f885c78f50d89a69e}{Reseed}} (\mbox{\hyperlink{namespacetesting_1_1internal_a40d4fffcd2bf56f18b1c380615aa85e3}{U\+Int32}} seed) +\item +\mbox{\hyperlink{namespacetesting_1_1internal_a40d4fffcd2bf56f18b1c380615aa85e3}{U\+Int32}} \mbox{\hyperlink{classtesting_1_1internal_1_1_random_a9315b7fb621cbcfdf92ed4b5e584c0db}{Generate}} (\mbox{\hyperlink{namespacetesting_1_1internal_a40d4fffcd2bf56f18b1c380615aa85e3}{U\+Int32}} range) +\end{DoxyCompactItemize} +\subsection*{Static Public Attributes} +\begin{DoxyCompactItemize} +\item +static const \mbox{\hyperlink{namespacetesting_1_1internal_a40d4fffcd2bf56f18b1c380615aa85e3}{U\+Int32}} \mbox{\hyperlink{classtesting_1_1internal_1_1_random_a36d72dd7063d0b5338f229e75382fdd2}{k\+Max\+Range}} = 1u $<$$<$ 31 +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} + + +Definition at line 7276 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_random_a6e112be5e7cce00551f6383025f69460}\label{classtesting_1_1internal_1_1_random_a6e112be5e7cce00551f6383025f69460}} +\index{testing\+::internal\+::\+Random@{testing\+::internal\+::\+Random}!Random@{Random}} +\index{Random@{Random}!testing\+::internal\+::\+Random@{testing\+::internal\+::\+Random}} +\subsubsection{\texorpdfstring{Random()}{Random()}} +{\footnotesize\ttfamily testing\+::internal\+::\+Random\+::\+Random (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{namespacetesting_1_1internal_a40d4fffcd2bf56f18b1c380615aa85e3}{U\+Int32}}}]{seed }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [explicit]}} + + + +Definition at line 7280 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_random_a9315b7fb621cbcfdf92ed4b5e584c0db}\label{classtesting_1_1internal_1_1_random_a9315b7fb621cbcfdf92ed4b5e584c0db}} +\index{testing\+::internal\+::\+Random@{testing\+::internal\+::\+Random}!Generate@{Generate}} +\index{Generate@{Generate}!testing\+::internal\+::\+Random@{testing\+::internal\+::\+Random}} +\subsubsection{\texorpdfstring{Generate()}{Generate()}} +{\footnotesize\ttfamily \mbox{\hyperlink{namespacetesting_1_1internal_a40d4fffcd2bf56f18b1c380615aa85e3}{U\+Int32}} testing\+::internal\+::\+Random\+::\+Generate (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{namespacetesting_1_1internal_a40d4fffcd2bf56f18b1c380615aa85e3}{U\+Int32}}}]{range }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_random_adf2f24199318a46f885c78f50d89a69e}\label{classtesting_1_1internal_1_1_random_adf2f24199318a46f885c78f50d89a69e}} +\index{testing\+::internal\+::\+Random@{testing\+::internal\+::\+Random}!Reseed@{Reseed}} +\index{Reseed@{Reseed}!testing\+::internal\+::\+Random@{testing\+::internal\+::\+Random}} +\subsubsection{\texorpdfstring{Reseed()}{Reseed()}} +{\footnotesize\ttfamily void testing\+::internal\+::\+Random\+::\+Reseed (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{namespacetesting_1_1internal_a40d4fffcd2bf56f18b1c380615aa85e3}{U\+Int32}}}]{seed }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 7282 of file gtest.\+h. + + + +\subsection{Member Data Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_random_a36d72dd7063d0b5338f229e75382fdd2}\label{classtesting_1_1internal_1_1_random_a36d72dd7063d0b5338f229e75382fdd2}} +\index{testing\+::internal\+::\+Random@{testing\+::internal\+::\+Random}!k\+Max\+Range@{k\+Max\+Range}} +\index{k\+Max\+Range@{k\+Max\+Range}!testing\+::internal\+::\+Random@{testing\+::internal\+::\+Random}} +\subsubsection{\texorpdfstring{k\+Max\+Range}{kMaxRange}} +{\footnotesize\ttfamily const \mbox{\hyperlink{namespacetesting_1_1internal_a40d4fffcd2bf56f18b1c380615aa85e3}{U\+Int32}} testing\+::internal\+::\+Random\+::k\+Max\+Range = 1u $<$$<$ 31\hspace{0.3cm}{\ttfamily [static]}} + + + +Definition at line 7278 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_range_generator.eps b/doc/latex/classtesting_1_1internal_1_1_range_generator.eps new file mode 100644 index 0000000..f5c789e --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_range_generator.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 131.147541 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 3.812500 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(testing::internal::RangeGenerator< T, IncrementT >) cw +(testing::internal::ParamGeneratorInterface< T >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (testing::internal::RangeGenerator< T, IncrementT >) 0.000000 0.000000 box + (testing::internal::ParamGeneratorInterface< T >) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/classtesting_1_1internal_1_1_range_generator.tex b/doc/latex/classtesting_1_1internal_1_1_range_generator.tex new file mode 100644 index 0000000..e5b1f4d --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_range_generator.tex @@ -0,0 +1,97 @@ +\hypertarget{classtesting_1_1internal_1_1_range_generator}{}\section{testing\+:\+:internal\+:\+:Range\+Generator$<$ T, IncrementT $>$ Class Template Reference} +\label{classtesting_1_1internal_1_1_range_generator}\index{testing\+::internal\+::\+Range\+Generator$<$ T, Increment\+T $>$@{testing\+::internal\+::\+Range\+Generator$<$ T, Increment\+T $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +Inheritance diagram for testing\+:\+:internal\+:\+:Range\+Generator$<$ T, IncrementT $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{classtesting_1_1internal_1_1_range_generator} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_range_generator_a5b3b83223b9cada3569bcee729e0fdf3}{Range\+Generator}} (T begin, T end, IncrementT step) +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_range_generator_a72f6e6f65f1dd3f86672f6ed47df74ef}{$\sim$\+Range\+Generator}} () override +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{Param\+Iterator\+Interface}}$<$ T $>$ $\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_range_generator_a502913fbcf14e89d5765dfb44f3c1295}{Begin}} () const override +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{Param\+Iterator\+Interface}}$<$ T $>$ $\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_range_generator_ac112ca69567b9c47bf14554e0473e1e2}{End}} () const override +\end{DoxyCompactItemize} +\subsection*{Additional Inherited Members} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T, typename IncrementT$>$\newline +class testing\+::internal\+::\+Range\+Generator$<$ T, Increment\+T $>$} + + + +Definition at line 10743 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_range_generator_a5b3b83223b9cada3569bcee729e0fdf3}\label{classtesting_1_1internal_1_1_range_generator_a5b3b83223b9cada3569bcee729e0fdf3}} +\index{testing\+::internal\+::\+Range\+Generator@{testing\+::internal\+::\+Range\+Generator}!Range\+Generator@{Range\+Generator}} +\index{Range\+Generator@{Range\+Generator}!testing\+::internal\+::\+Range\+Generator@{testing\+::internal\+::\+Range\+Generator}} +\subsubsection{\texorpdfstring{Range\+Generator()}{RangeGenerator()}} +{\footnotesize\ttfamily template$<$typename T , typename IncrementT $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_range_generator}{testing\+::internal\+::\+Range\+Generator}}$<$ T, IncrementT $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_range_generator}{Range\+Generator}} (\begin{DoxyParamCaption}\item[{T}]{begin, }\item[{T}]{end, }\item[{IncrementT}]{step }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 10745 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_range_generator_a72f6e6f65f1dd3f86672f6ed47df74ef}\label{classtesting_1_1internal_1_1_range_generator_a72f6e6f65f1dd3f86672f6ed47df74ef}} +\index{testing\+::internal\+::\+Range\+Generator@{testing\+::internal\+::\+Range\+Generator}!````~Range\+Generator@{$\sim$\+Range\+Generator}} +\index{````~Range\+Generator@{$\sim$\+Range\+Generator}!testing\+::internal\+::\+Range\+Generator@{testing\+::internal\+::\+Range\+Generator}} +\subsubsection{\texorpdfstring{$\sim$\+Range\+Generator()}{~RangeGenerator()}} +{\footnotesize\ttfamily template$<$typename T , typename IncrementT $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_range_generator}{testing\+::internal\+::\+Range\+Generator}}$<$ T, IncrementT $>$\+::$\sim$\mbox{\hyperlink{classtesting_1_1internal_1_1_range_generator}{Range\+Generator}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}} + + + +Definition at line 10748 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_range_generator_a502913fbcf14e89d5765dfb44f3c1295}\label{classtesting_1_1internal_1_1_range_generator_a502913fbcf14e89d5765dfb44f3c1295}} +\index{testing\+::internal\+::\+Range\+Generator@{testing\+::internal\+::\+Range\+Generator}!Begin@{Begin}} +\index{Begin@{Begin}!testing\+::internal\+::\+Range\+Generator@{testing\+::internal\+::\+Range\+Generator}} +\subsubsection{\texorpdfstring{Begin()}{Begin()}} +{\footnotesize\ttfamily template$<$typename T , typename IncrementT $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{Param\+Iterator\+Interface}}$<$T$>$$\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_range_generator}{testing\+::internal\+::\+Range\+Generator}}$<$ T, IncrementT $>$\+::Begin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\ttfamily [virtual]}} + + + +Implements \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator_interface_ae1de83b16fe9a53c67778a026c6a9569}{testing\+::internal\+::\+Param\+Generator\+Interface$<$ T $>$}}. + + + +Definition at line 10750 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_range_generator_ac112ca69567b9c47bf14554e0473e1e2}\label{classtesting_1_1internal_1_1_range_generator_ac112ca69567b9c47bf14554e0473e1e2}} +\index{testing\+::internal\+::\+Range\+Generator@{testing\+::internal\+::\+Range\+Generator}!End@{End}} +\index{End@{End}!testing\+::internal\+::\+Range\+Generator@{testing\+::internal\+::\+Range\+Generator}} +\subsubsection{\texorpdfstring{End()}{End()}} +{\footnotesize\ttfamily template$<$typename T , typename IncrementT $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{Param\+Iterator\+Interface}}$<$T$>$$\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_range_generator}{testing\+::internal\+::\+Range\+Generator}}$<$ T, IncrementT $>$\+::End (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\ttfamily [virtual]}} + + + +Implements \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator_interface_afa7211b74990e11d3fc7ad4e7113da4f}{testing\+::internal\+::\+Param\+Generator\+Interface$<$ T $>$}}. + + + +Definition at line 10753 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_test_factory_base.eps b/doc/latex/classtesting_1_1internal_1_1_test_factory_base.eps new file mode 100644 index 0000000..8a2de65 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_test_factory_base.eps @@ -0,0 +1,203 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 59.523810 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 8.400000 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 2 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(testing::internal::TestFactoryBase) cw +(testing::internal::ParameterizedTestFactory< TestClass >) cw +(testing::internal::TestFactoryImpl< TestClass >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (testing::internal::TestFactoryBase) 0.500000 1.000000 box + (testing::internal::ParameterizedTestFactory< TestClass >) 0.000000 0.000000 box + (testing::internal::TestFactoryImpl< TestClass >) 1.000000 0.000000 box + +% ----- relations ----- + +solid +1 0.500000 0.250000 out +solid +0.000000 1.000000 1.000000 conn +solid +0 0.000000 0.750000 in +solid +0 1.000000 0.750000 in diff --git a/doc/latex/classtesting_1_1internal_1_1_test_factory_base.tex b/doc/latex/classtesting_1_1internal_1_1_test_factory_base.tex new file mode 100644 index 0000000..beb0734 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_test_factory_base.tex @@ -0,0 +1,72 @@ +\hypertarget{classtesting_1_1internal_1_1_test_factory_base}{}\section{testing\+:\+:internal\+:\+:Test\+Factory\+Base Class Reference} +\label{classtesting_1_1internal_1_1_test_factory_base}\index{testing\+::internal\+::\+Test\+Factory\+Base@{testing\+::internal\+::\+Test\+Factory\+Base}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +Inheritance diagram for testing\+:\+:internal\+:\+:Test\+Factory\+Base\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=1.666667cm]{classtesting_1_1internal_1_1_test_factory_base} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +virtual \mbox{\hyperlink{classtesting_1_1internal_1_1_test_factory_base_a18f22a7594336a36642289c1decddc9e}{$\sim$\+Test\+Factory\+Base}} () +\item +virtual \mbox{\hyperlink{classtesting_1_1_test}{Test}} $\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_test_factory_base_a07ac3ca0b196cdb092da0bb186b7c030}{Create\+Test}} ()=0 +\end{DoxyCompactItemize} +\subsection*{Protected Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_test_factory_base_afedbf147b2a213517b315880d8c81427}{Test\+Factory\+Base}} () +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} + + +Definition at line 6889 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_test_factory_base_a18f22a7594336a36642289c1decddc9e}\label{classtesting_1_1internal_1_1_test_factory_base_a18f22a7594336a36642289c1decddc9e}} +\index{testing\+::internal\+::\+Test\+Factory\+Base@{testing\+::internal\+::\+Test\+Factory\+Base}!````~Test\+Factory\+Base@{$\sim$\+Test\+Factory\+Base}} +\index{````~Test\+Factory\+Base@{$\sim$\+Test\+Factory\+Base}!testing\+::internal\+::\+Test\+Factory\+Base@{testing\+::internal\+::\+Test\+Factory\+Base}} +\subsubsection{\texorpdfstring{$\sim$\+Test\+Factory\+Base()}{~TestFactoryBase()}} +{\footnotesize\ttfamily virtual testing\+::internal\+::\+Test\+Factory\+Base\+::$\sim$\+Test\+Factory\+Base (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}} + + + +Definition at line 6891 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_test_factory_base_afedbf147b2a213517b315880d8c81427}\label{classtesting_1_1internal_1_1_test_factory_base_afedbf147b2a213517b315880d8c81427}} +\index{testing\+::internal\+::\+Test\+Factory\+Base@{testing\+::internal\+::\+Test\+Factory\+Base}!Test\+Factory\+Base@{Test\+Factory\+Base}} +\index{Test\+Factory\+Base@{Test\+Factory\+Base}!testing\+::internal\+::\+Test\+Factory\+Base@{testing\+::internal\+::\+Test\+Factory\+Base}} +\subsubsection{\texorpdfstring{Test\+Factory\+Base()}{TestFactoryBase()}} +{\footnotesize\ttfamily testing\+::internal\+::\+Test\+Factory\+Base\+::\+Test\+Factory\+Base (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [protected]}} + + + +Definition at line 6898 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_test_factory_base_a07ac3ca0b196cdb092da0bb186b7c030}\label{classtesting_1_1internal_1_1_test_factory_base_a07ac3ca0b196cdb092da0bb186b7c030}} +\index{testing\+::internal\+::\+Test\+Factory\+Base@{testing\+::internal\+::\+Test\+Factory\+Base}!Create\+Test@{Create\+Test}} +\index{Create\+Test@{Create\+Test}!testing\+::internal\+::\+Test\+Factory\+Base@{testing\+::internal\+::\+Test\+Factory\+Base}} +\subsubsection{\texorpdfstring{Create\+Test()}{CreateTest()}} +{\footnotesize\ttfamily virtual \mbox{\hyperlink{classtesting_1_1_test}{Test}}$\ast$ testing\+::internal\+::\+Test\+Factory\+Base\+::\+Create\+Test (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [pure virtual]}} + + + +Implemented in \mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_factory_a36d962674d7bf845398637338b9f75cb}{testing\+::internal\+::\+Parameterized\+Test\+Factory$<$ Test\+Class $>$}}, and \mbox{\hyperlink{classtesting_1_1internal_1_1_test_factory_impl_ab9b9236ef39b14f0a78e611748e970e3}{testing\+::internal\+::\+Test\+Factory\+Impl$<$ Test\+Class $>$}}. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_test_factory_impl.eps b/doc/latex/classtesting_1_1internal_1_1_test_factory_impl.eps new file mode 100644 index 0000000..78442da --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_test_factory_impl.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 144.404332 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 3.462500 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(testing::internal::TestFactoryImpl< TestClass >) cw +(testing::internal::TestFactoryBase) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (testing::internal::TestFactoryImpl< TestClass >) 0.000000 0.000000 box + (testing::internal::TestFactoryBase) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/classtesting_1_1internal_1_1_test_factory_impl.tex b/doc/latex/classtesting_1_1internal_1_1_test_factory_impl.tex new file mode 100644 index 0000000..1be5b90 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_test_factory_impl.tex @@ -0,0 +1,51 @@ +\hypertarget{classtesting_1_1internal_1_1_test_factory_impl}{}\section{testing\+:\+:internal\+:\+:Test\+Factory\+Impl$<$ Test\+Class $>$ Class Template Reference} +\label{classtesting_1_1internal_1_1_test_factory_impl}\index{testing\+::internal\+::\+Test\+Factory\+Impl$<$ Test\+Class $>$@{testing\+::internal\+::\+Test\+Factory\+Impl$<$ Test\+Class $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +Inheritance diagram for testing\+:\+:internal\+:\+:Test\+Factory\+Impl$<$ Test\+Class $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{classtesting_1_1internal_1_1_test_factory_impl} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classtesting_1_1_test}{Test}} $\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_test_factory_impl_ab9b9236ef39b14f0a78e611748e970e3}{Create\+Test}} () override +\end{DoxyCompactItemize} +\subsection*{Additional Inherited Members} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class Test\+Class$>$\newline +class testing\+::internal\+::\+Test\+Factory\+Impl$<$ Test\+Class $>$} + + + +Definition at line 6907 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_test_factory_impl_ab9b9236ef39b14f0a78e611748e970e3}\label{classtesting_1_1internal_1_1_test_factory_impl_ab9b9236ef39b14f0a78e611748e970e3}} +\index{testing\+::internal\+::\+Test\+Factory\+Impl@{testing\+::internal\+::\+Test\+Factory\+Impl}!Create\+Test@{Create\+Test}} +\index{Create\+Test@{Create\+Test}!testing\+::internal\+::\+Test\+Factory\+Impl@{testing\+::internal\+::\+Test\+Factory\+Impl}} +\subsubsection{\texorpdfstring{Create\+Test()}{CreateTest()}} +{\footnotesize\ttfamily template$<$class Test\+Class $>$ \\ +\mbox{\hyperlink{classtesting_1_1_test}{Test}}$\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_test_factory_impl}{testing\+::internal\+::\+Test\+Factory\+Impl}}$<$ Test\+Class $>$\+::Create\+Test (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\ttfamily [virtual]}} + + + +Implements \mbox{\hyperlink{classtesting_1_1internal_1_1_test_factory_base_a07ac3ca0b196cdb092da0bb186b7c030}{testing\+::internal\+::\+Test\+Factory\+Base}}. + + + +Definition at line 6909 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_test_meta_factory.eps b/doc/latex/classtesting_1_1internal_1_1_test_meta_factory.eps new file mode 100644 index 0000000..fd42654 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_test_meta_factory.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 105.820106 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 4.725000 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(testing::internal::TestMetaFactory< TestSuite >) cw +(testing::internal::TestMetaFactoryBase< TestSuite::ParamType >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (testing::internal::TestMetaFactory< TestSuite >) 0.000000 0.000000 box + (testing::internal::TestMetaFactoryBase< TestSuite::ParamType >) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/classtesting_1_1internal_1_1_test_meta_factory.tex b/doc/latex/classtesting_1_1internal_1_1_test_meta_factory.tex new file mode 100644 index 0000000..2002f77 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_test_meta_factory.tex @@ -0,0 +1,81 @@ +\hypertarget{classtesting_1_1internal_1_1_test_meta_factory}{}\section{testing\+:\+:internal\+:\+:Test\+Meta\+Factory$<$ Test\+Suite $>$ Class Template Reference} +\label{classtesting_1_1internal_1_1_test_meta_factory}\index{testing\+::internal\+::\+Test\+Meta\+Factory$<$ Test\+Suite $>$@{testing\+::internal\+::\+Test\+Meta\+Factory$<$ Test\+Suite $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +Inheritance diagram for testing\+:\+:internal\+:\+:Test\+Meta\+Factory$<$ Test\+Suite $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{classtesting_1_1internal_1_1_test_meta_factory} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{classtesting_1_1internal_1_1_test_meta_factory_a392ebab15dfdcfa1b54bbe15878aa9cd}{Param\+Type}} = typename Test\+Suite\+::\+Param\+Type +\end{DoxyCompactItemize} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_test_meta_factory_a1a48d63fbff650741c8f718af5c373d2}{Test\+Meta\+Factory}} () +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_test_factory_base}{Test\+Factory\+Base}} $\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_test_meta_factory_abd5d30fab71229deb5e63f5bb5ea3fd8}{Create\+Test\+Factory}} (\mbox{\hyperlink{classtesting_1_1internal_1_1_test_meta_factory_a392ebab15dfdcfa1b54bbe15878aa9cd}{Param\+Type}} parameter) override +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class Test\+Suite$>$\newline +class testing\+::internal\+::\+Test\+Meta\+Factory$<$ Test\+Suite $>$} + + + +Definition at line 10980 of file gtest.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_test_meta_factory_a392ebab15dfdcfa1b54bbe15878aa9cd}\label{classtesting_1_1internal_1_1_test_meta_factory_a392ebab15dfdcfa1b54bbe15878aa9cd}} +\index{testing\+::internal\+::\+Test\+Meta\+Factory@{testing\+::internal\+::\+Test\+Meta\+Factory}!Param\+Type@{Param\+Type}} +\index{Param\+Type@{Param\+Type}!testing\+::internal\+::\+Test\+Meta\+Factory@{testing\+::internal\+::\+Test\+Meta\+Factory}} +\subsubsection{\texorpdfstring{Param\+Type}{ParamType}} +{\footnotesize\ttfamily template$<$class Test\+Suite $>$ \\ +using \mbox{\hyperlink{classtesting_1_1internal_1_1_test_meta_factory}{testing\+::internal\+::\+Test\+Meta\+Factory}}$<$ \mbox{\hyperlink{classtesting_1_1_test_suite}{Test\+Suite}} $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_test_meta_factory_a392ebab15dfdcfa1b54bbe15878aa9cd}{Param\+Type}} = typename Test\+Suite\+::\+Param\+Type} + + + +Definition at line 10983 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_test_meta_factory_a1a48d63fbff650741c8f718af5c373d2}\label{classtesting_1_1internal_1_1_test_meta_factory_a1a48d63fbff650741c8f718af5c373d2}} +\index{testing\+::internal\+::\+Test\+Meta\+Factory@{testing\+::internal\+::\+Test\+Meta\+Factory}!Test\+Meta\+Factory@{Test\+Meta\+Factory}} +\index{Test\+Meta\+Factory@{Test\+Meta\+Factory}!testing\+::internal\+::\+Test\+Meta\+Factory@{testing\+::internal\+::\+Test\+Meta\+Factory}} +\subsubsection{\texorpdfstring{Test\+Meta\+Factory()}{TestMetaFactory()}} +{\footnotesize\ttfamily template$<$class Test\+Suite $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_test_meta_factory}{testing\+::internal\+::\+Test\+Meta\+Factory}}$<$ \mbox{\hyperlink{classtesting_1_1_test_suite}{Test\+Suite}} $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_test_meta_factory}{Test\+Meta\+Factory}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 10985 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_test_meta_factory_abd5d30fab71229deb5e63f5bb5ea3fd8}\label{classtesting_1_1internal_1_1_test_meta_factory_abd5d30fab71229deb5e63f5bb5ea3fd8}} +\index{testing\+::internal\+::\+Test\+Meta\+Factory@{testing\+::internal\+::\+Test\+Meta\+Factory}!Create\+Test\+Factory@{Create\+Test\+Factory}} +\index{Create\+Test\+Factory@{Create\+Test\+Factory}!testing\+::internal\+::\+Test\+Meta\+Factory@{testing\+::internal\+::\+Test\+Meta\+Factory}} +\subsubsection{\texorpdfstring{Create\+Test\+Factory()}{CreateTestFactory()}} +{\footnotesize\ttfamily template$<$class Test\+Suite $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_test_factory_base}{Test\+Factory\+Base}}$\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_test_meta_factory}{testing\+::internal\+::\+Test\+Meta\+Factory}}$<$ \mbox{\hyperlink{classtesting_1_1_test_suite}{Test\+Suite}} $>$\+::Create\+Test\+Factory (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classtesting_1_1internal_1_1_test_meta_factory_a392ebab15dfdcfa1b54bbe15878aa9cd}{Param\+Type}}}]{parameter }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}} + + + +Definition at line 10987 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_test_meta_factory_base.tex b/doc/latex/classtesting_1_1internal_1_1_test_meta_factory_base.tex new file mode 100644 index 0000000..0b3cb65 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_test_meta_factory_base.tex @@ -0,0 +1,52 @@ +\hypertarget{classtesting_1_1internal_1_1_test_meta_factory_base}{}\section{testing\+:\+:internal\+:\+:Test\+Meta\+Factory\+Base$<$ Param\+Type $>$ Class Template Reference} +\label{classtesting_1_1internal_1_1_test_meta_factory_base}\index{testing\+::internal\+::\+Test\+Meta\+Factory\+Base$<$ Param\+Type $>$@{testing\+::internal\+::\+Test\+Meta\+Factory\+Base$<$ Param\+Type $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +virtual \mbox{\hyperlink{classtesting_1_1internal_1_1_test_meta_factory_base_aad80adf04686f7dfcf952e44afc02767}{$\sim$\+Test\+Meta\+Factory\+Base}} () +\item +virtual \mbox{\hyperlink{classtesting_1_1internal_1_1_test_factory_base}{Test\+Factory\+Base}} $\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_test_meta_factory_base_a853daab362740bcac55e180128d564ef}{Create\+Test\+Factory}} (Param\+Type parameter)=0 +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class Param\+Type$>$\newline +class testing\+::internal\+::\+Test\+Meta\+Factory\+Base$<$ Param\+Type $>$} + + + +Definition at line 10964 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_test_meta_factory_base_aad80adf04686f7dfcf952e44afc02767}\label{classtesting_1_1internal_1_1_test_meta_factory_base_aad80adf04686f7dfcf952e44afc02767}} +\index{testing\+::internal\+::\+Test\+Meta\+Factory\+Base@{testing\+::internal\+::\+Test\+Meta\+Factory\+Base}!````~Test\+Meta\+Factory\+Base@{$\sim$\+Test\+Meta\+Factory\+Base}} +\index{````~Test\+Meta\+Factory\+Base@{$\sim$\+Test\+Meta\+Factory\+Base}!testing\+::internal\+::\+Test\+Meta\+Factory\+Base@{testing\+::internal\+::\+Test\+Meta\+Factory\+Base}} +\subsubsection{\texorpdfstring{$\sim$\+Test\+Meta\+Factory\+Base()}{~TestMetaFactoryBase()}} +{\footnotesize\ttfamily template$<$class Param\+Type$>$ \\ +virtual \mbox{\hyperlink{classtesting_1_1internal_1_1_test_meta_factory_base}{testing\+::internal\+::\+Test\+Meta\+Factory\+Base}}$<$ Param\+Type $>$\+::$\sim$\mbox{\hyperlink{classtesting_1_1internal_1_1_test_meta_factory_base}{Test\+Meta\+Factory\+Base}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}} + + + +Definition at line 10966 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_test_meta_factory_base_a853daab362740bcac55e180128d564ef}\label{classtesting_1_1internal_1_1_test_meta_factory_base_a853daab362740bcac55e180128d564ef}} +\index{testing\+::internal\+::\+Test\+Meta\+Factory\+Base@{testing\+::internal\+::\+Test\+Meta\+Factory\+Base}!Create\+Test\+Factory@{Create\+Test\+Factory}} +\index{Create\+Test\+Factory@{Create\+Test\+Factory}!testing\+::internal\+::\+Test\+Meta\+Factory\+Base@{testing\+::internal\+::\+Test\+Meta\+Factory\+Base}} +\subsubsection{\texorpdfstring{Create\+Test\+Factory()}{CreateTestFactory()}} +{\footnotesize\ttfamily template$<$class Param\+Type$>$ \\ +virtual \mbox{\hyperlink{classtesting_1_1internal_1_1_test_factory_base}{Test\+Factory\+Base}}$\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_test_meta_factory_base}{testing\+::internal\+::\+Test\+Meta\+Factory\+Base}}$<$ Param\+Type $>$\+::Create\+Test\+Factory (\begin{DoxyParamCaption}\item[{Param\+Type}]{parameter }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [pure virtual]}} + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_thread_local.tex b/doc/latex/classtesting_1_1internal_1_1_thread_local.tex new file mode 100644 index 0000000..7f8488d --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_thread_local.tex @@ -0,0 +1,108 @@ +\hypertarget{classtesting_1_1internal_1_1_thread_local}{}\section{testing\+:\+:internal\+:\+:Thread\+Local$<$ T $>$ Class Template Reference} +\label{classtesting_1_1internal_1_1_thread_local}\index{testing\+::internal\+::\+Thread\+Local$<$ T $>$@{testing\+::internal\+::\+Thread\+Local$<$ T $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_thread_local_a106f3a3ad15d08f95f9887105d2a1af5}{Thread\+Local}} () +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_thread_local_a85610bdfdbc93a4c56215e0aad7da870}{Thread\+Local}} (const T \&value) +\item +T $\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_thread_local_a882f57fed4b074de83693c0c0fe62858}{pointer}} () +\item +const T $\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_thread_local_a57e45bb60e3cd94abb04fa449e9f0367}{pointer}} () const +\item +const T \& \mbox{\hyperlink{classtesting_1_1internal_1_1_thread_local_ac56aeb97991824979bf192c63d1466f8}{get}} () const +\item +void \mbox{\hyperlink{classtesting_1_1internal_1_1_thread_local_ab5ebc7ba07426cef7167afa2a7707eb4}{set}} (const T \&value) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T$>$\newline +class testing\+::internal\+::\+Thread\+Local$<$ T $>$} + + + +Definition at line 2165 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_thread_local_a106f3a3ad15d08f95f9887105d2a1af5}\label{classtesting_1_1internal_1_1_thread_local_a106f3a3ad15d08f95f9887105d2a1af5}} +\index{testing\+::internal\+::\+Thread\+Local@{testing\+::internal\+::\+Thread\+Local}!Thread\+Local@{Thread\+Local}} +\index{Thread\+Local@{Thread\+Local}!testing\+::internal\+::\+Thread\+Local@{testing\+::internal\+::\+Thread\+Local}} +\subsubsection{\texorpdfstring{Thread\+Local()}{ThreadLocal()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_thread_local}{testing\+::internal\+::\+Thread\+Local}}$<$ T $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_thread_local}{Thread\+Local}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 2167 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_thread_local_a85610bdfdbc93a4c56215e0aad7da870}\label{classtesting_1_1internal_1_1_thread_local_a85610bdfdbc93a4c56215e0aad7da870}} +\index{testing\+::internal\+::\+Thread\+Local@{testing\+::internal\+::\+Thread\+Local}!Thread\+Local@{Thread\+Local}} +\index{Thread\+Local@{Thread\+Local}!testing\+::internal\+::\+Thread\+Local@{testing\+::internal\+::\+Thread\+Local}} +\subsubsection{\texorpdfstring{Thread\+Local()}{ThreadLocal()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_thread_local}{testing\+::internal\+::\+Thread\+Local}}$<$ T $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_thread_local}{Thread\+Local}} (\begin{DoxyParamCaption}\item[{const T \&}]{value }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [explicit]}} + + + +Definition at line 2168 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_thread_local_ac56aeb97991824979bf192c63d1466f8}\label{classtesting_1_1internal_1_1_thread_local_ac56aeb97991824979bf192c63d1466f8}} +\index{testing\+::internal\+::\+Thread\+Local@{testing\+::internal\+::\+Thread\+Local}!get@{get}} +\index{get@{get}!testing\+::internal\+::\+Thread\+Local@{testing\+::internal\+::\+Thread\+Local}} +\subsubsection{\texorpdfstring{get()}{get()}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +const T\& \mbox{\hyperlink{classtesting_1_1internal_1_1_thread_local}{testing\+::internal\+::\+Thread\+Local}}$<$ T $>$\+::get (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 2171 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_thread_local_a882f57fed4b074de83693c0c0fe62858}\label{classtesting_1_1internal_1_1_thread_local_a882f57fed4b074de83693c0c0fe62858}} +\index{testing\+::internal\+::\+Thread\+Local@{testing\+::internal\+::\+Thread\+Local}!pointer@{pointer}} +\index{pointer@{pointer}!testing\+::internal\+::\+Thread\+Local@{testing\+::internal\+::\+Thread\+Local}} +\subsubsection{\texorpdfstring{pointer()}{pointer()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +T$\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_thread_local}{testing\+::internal\+::\+Thread\+Local}}$<$ T $>$\+::pointer (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 2169 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_thread_local_a57e45bb60e3cd94abb04fa449e9f0367}\label{classtesting_1_1internal_1_1_thread_local_a57e45bb60e3cd94abb04fa449e9f0367}} +\index{testing\+::internal\+::\+Thread\+Local@{testing\+::internal\+::\+Thread\+Local}!pointer@{pointer}} +\index{pointer@{pointer}!testing\+::internal\+::\+Thread\+Local@{testing\+::internal\+::\+Thread\+Local}} +\subsubsection{\texorpdfstring{pointer()}{pointer()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +const T$\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_thread_local}{testing\+::internal\+::\+Thread\+Local}}$<$ T $>$\+::pointer (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 2170 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_thread_local_ab5ebc7ba07426cef7167afa2a7707eb4}\label{classtesting_1_1internal_1_1_thread_local_ab5ebc7ba07426cef7167afa2a7707eb4}} +\index{testing\+::internal\+::\+Thread\+Local@{testing\+::internal\+::\+Thread\+Local}!set@{set}} +\index{set@{set}!testing\+::internal\+::\+Thread\+Local@{testing\+::internal\+::\+Thread\+Local}} +\subsubsection{\texorpdfstring{set()}{set()}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +void \mbox{\hyperlink{classtesting_1_1internal_1_1_thread_local}{testing\+::internal\+::\+Thread\+Local}}$<$ T $>$\+::set (\begin{DoxyParamCaption}\item[{const T \&}]{value }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 2172 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_type_id_helper.tex b/doc/latex/classtesting_1_1internal_1_1_type_id_helper.tex new file mode 100644 index 0000000..e2970a3 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_type_id_helper.tex @@ -0,0 +1,40 @@ +\hypertarget{classtesting_1_1internal_1_1_type_id_helper}{}\section{testing\+:\+:internal\+:\+:Type\+Id\+Helper$<$ T $>$ Class Template Reference} +\label{classtesting_1_1internal_1_1_type_id_helper}\index{testing\+::internal\+::\+Type\+Id\+Helper$<$ T $>$@{testing\+::internal\+::\+Type\+Id\+Helper$<$ T $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Static Public Attributes} +\begin{DoxyCompactItemize} +\item +static bool \mbox{\hyperlink{classtesting_1_1internal_1_1_type_id_helper_a372268b1520d965d0bdf01ebad3d270e}{dummy\+\_\+}} = false +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T$>$\newline +class testing\+::internal\+::\+Type\+Id\+Helper$<$ T $>$} + + + +Definition at line 6857 of file gtest.\+h. + + + +\subsection{Member Data Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_type_id_helper_a372268b1520d965d0bdf01ebad3d270e}\label{classtesting_1_1internal_1_1_type_id_helper_a372268b1520d965d0bdf01ebad3d270e}} +\index{testing\+::internal\+::\+Type\+Id\+Helper@{testing\+::internal\+::\+Type\+Id\+Helper}!dummy\+\_\+@{dummy\+\_\+}} +\index{dummy\+\_\+@{dummy\+\_\+}!testing\+::internal\+::\+Type\+Id\+Helper@{testing\+::internal\+::\+Type\+Id\+Helper}} +\subsubsection{\texorpdfstring{dummy\+\_\+}{dummy\_}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +bool \mbox{\hyperlink{classtesting_1_1internal_1_1_type_id_helper}{testing\+::internal\+::\+Type\+Id\+Helper}}$<$ T $>$\+::dummy\+\_\+ = false\hspace{0.3cm}{\ttfamily [static]}} + + + +Definition at line 6862 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_type_with_size.tex b/doc/latex/classtesting_1_1internal_1_1_type_with_size.tex new file mode 100644 index 0000000..6b63fed --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_type_with_size.tex @@ -0,0 +1,40 @@ +\hypertarget{classtesting_1_1internal_1_1_type_with_size}{}\section{testing\+:\+:internal\+:\+:Type\+With\+Size$<$ size $>$ Class Template Reference} +\label{classtesting_1_1internal_1_1_type_with_size}\index{testing\+::internal\+::\+Type\+With\+Size$<$ size $>$@{testing\+::internal\+::\+Type\+With\+Size$<$ size $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +typedef void \mbox{\hyperlink{classtesting_1_1internal_1_1_type_with_size_a3898640d9f6c1e18110eef90f47a5d7b}{U\+Int}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$size\+\_\+t size$>$\newline +class testing\+::internal\+::\+Type\+With\+Size$<$ size $>$} + + + +Definition at line 2442 of file gtest.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_type_with_size_a3898640d9f6c1e18110eef90f47a5d7b}\label{classtesting_1_1internal_1_1_type_with_size_a3898640d9f6c1e18110eef90f47a5d7b}} +\index{testing\+::internal\+::\+Type\+With\+Size@{testing\+::internal\+::\+Type\+With\+Size}!U\+Int@{U\+Int}} +\index{U\+Int@{U\+Int}!testing\+::internal\+::\+Type\+With\+Size@{testing\+::internal\+::\+Type\+With\+Size}} +\subsubsection{\texorpdfstring{U\+Int}{UInt}} +{\footnotesize\ttfamily template$<$size\+\_\+t size$>$ \\ +typedef void \mbox{\hyperlink{classtesting_1_1internal_1_1_type_with_size}{testing\+::internal\+::\+Type\+With\+Size}}$<$ size $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_type_with_size_a3898640d9f6c1e18110eef90f47a5d7b}{U\+Int}}} + + + +Definition at line 2446 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_type_with_size_3_014_01_4.tex b/doc/latex/classtesting_1_1internal_1_1_type_with_size_3_014_01_4.tex new file mode 100644 index 0000000..a4a920e --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_type_with_size_3_014_01_4.tex @@ -0,0 +1,51 @@ +\hypertarget{classtesting_1_1internal_1_1_type_with_size_3_014_01_4}{}\section{testing\+:\+:internal\+:\+:Type\+With\+Size$<$ 4 $>$ Class Template Reference} +\label{classtesting_1_1internal_1_1_type_with_size_3_014_01_4}\index{testing\+::internal\+::\+Type\+With\+Size$<$ 4 $>$@{testing\+::internal\+::\+Type\+With\+Size$<$ 4 $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +typedef int \mbox{\hyperlink{classtesting_1_1internal_1_1_type_with_size_3_014_01_4_a80351860c00ed665e73f952143f4484a}{Int}} +\item +typedef unsigned int \mbox{\hyperlink{classtesting_1_1internal_1_1_type_with_size_3_014_01_4_a7d559570f830bf35d095eeb94d98de58}{U\+Int}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$$>$\newline +class testing\+::internal\+::\+Type\+With\+Size$<$ 4 $>$} + + + +Definition at line 2451 of file gtest.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_type_with_size_3_014_01_4_a80351860c00ed665e73f952143f4484a}\label{classtesting_1_1internal_1_1_type_with_size_3_014_01_4_a80351860c00ed665e73f952143f4484a}} +\index{testing\+::internal\+::\+Type\+With\+Size$<$ 4 $>$@{testing\+::internal\+::\+Type\+With\+Size$<$ 4 $>$}!Int@{Int}} +\index{Int@{Int}!testing\+::internal\+::\+Type\+With\+Size$<$ 4 $>$@{testing\+::internal\+::\+Type\+With\+Size$<$ 4 $>$}} +\subsubsection{\texorpdfstring{Int}{Int}} +{\footnotesize\ttfamily typedef int \mbox{\hyperlink{classtesting_1_1internal_1_1_type_with_size}{testing\+::internal\+::\+Type\+With\+Size}}$<$ 4 $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_type_with_size_3_014_01_4_a80351860c00ed665e73f952143f4484a}{Int}}} + + + +Definition at line 2457 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_type_with_size_3_014_01_4_a7d559570f830bf35d095eeb94d98de58}\label{classtesting_1_1internal_1_1_type_with_size_3_014_01_4_a7d559570f830bf35d095eeb94d98de58}} +\index{testing\+::internal\+::\+Type\+With\+Size$<$ 4 $>$@{testing\+::internal\+::\+Type\+With\+Size$<$ 4 $>$}!U\+Int@{U\+Int}} +\index{U\+Int@{U\+Int}!testing\+::internal\+::\+Type\+With\+Size$<$ 4 $>$@{testing\+::internal\+::\+Type\+With\+Size$<$ 4 $>$}} +\subsubsection{\texorpdfstring{U\+Int}{UInt}} +{\footnotesize\ttfamily typedef unsigned int \mbox{\hyperlink{classtesting_1_1internal_1_1_type_with_size}{testing\+::internal\+::\+Type\+With\+Size}}$<$ 4 $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_type_with_size_3_014_01_4_a7d559570f830bf35d095eeb94d98de58}{U\+Int}}} + + + +Definition at line 2458 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_type_with_size_3_018_01_4.tex b/doc/latex/classtesting_1_1internal_1_1_type_with_size_3_018_01_4.tex new file mode 100644 index 0000000..455c8ea --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_type_with_size_3_018_01_4.tex @@ -0,0 +1,51 @@ +\hypertarget{classtesting_1_1internal_1_1_type_with_size_3_018_01_4}{}\section{testing\+:\+:internal\+:\+:Type\+With\+Size$<$ 8 $>$ Class Template Reference} +\label{classtesting_1_1internal_1_1_type_with_size_3_018_01_4}\index{testing\+::internal\+::\+Type\+With\+Size$<$ 8 $>$@{testing\+::internal\+::\+Type\+With\+Size$<$ 8 $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +typedef long long \mbox{\hyperlink{classtesting_1_1internal_1_1_type_with_size_3_018_01_4_a36d5697e5f5254b0495f13c97d747e36}{Int}} +\item +typedef unsigned long long \mbox{\hyperlink{classtesting_1_1internal_1_1_type_with_size_3_018_01_4_a747e21c5aee8faf07ec65cd4c3d1ca62}{U\+Int}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$$>$\newline +class testing\+::internal\+::\+Type\+With\+Size$<$ 8 $>$} + + + +Definition at line 2463 of file gtest.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_type_with_size_3_018_01_4_a36d5697e5f5254b0495f13c97d747e36}\label{classtesting_1_1internal_1_1_type_with_size_3_018_01_4_a36d5697e5f5254b0495f13c97d747e36}} +\index{testing\+::internal\+::\+Type\+With\+Size$<$ 8 $>$@{testing\+::internal\+::\+Type\+With\+Size$<$ 8 $>$}!Int@{Int}} +\index{Int@{Int}!testing\+::internal\+::\+Type\+With\+Size$<$ 8 $>$@{testing\+::internal\+::\+Type\+With\+Size$<$ 8 $>$}} +\subsubsection{\texorpdfstring{Int}{Int}} +{\footnotesize\ttfamily typedef long long \mbox{\hyperlink{classtesting_1_1internal_1_1_type_with_size}{testing\+::internal\+::\+Type\+With\+Size}}$<$ 8 $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_type_with_size_3_018_01_4_a36d5697e5f5254b0495f13c97d747e36}{Int}}} + + + +Definition at line 2469 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_type_with_size_3_018_01_4_a747e21c5aee8faf07ec65cd4c3d1ca62}\label{classtesting_1_1internal_1_1_type_with_size_3_018_01_4_a747e21c5aee8faf07ec65cd4c3d1ca62}} +\index{testing\+::internal\+::\+Type\+With\+Size$<$ 8 $>$@{testing\+::internal\+::\+Type\+With\+Size$<$ 8 $>$}!U\+Int@{U\+Int}} +\index{U\+Int@{U\+Int}!testing\+::internal\+::\+Type\+With\+Size$<$ 8 $>$@{testing\+::internal\+::\+Type\+With\+Size$<$ 8 $>$}} +\subsubsection{\texorpdfstring{U\+Int}{UInt}} +{\footnotesize\ttfamily typedef unsigned long long \mbox{\hyperlink{classtesting_1_1internal_1_1_type_with_size}{testing\+::internal\+::\+Type\+With\+Size}}$<$ 8 $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_type_with_size_3_018_01_4_a747e21c5aee8faf07ec65cd4c3d1ca62}{U\+Int}}} + + + +Definition at line 2470 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_universal_printer.tex b/doc/latex/classtesting_1_1internal_1_1_universal_printer.tex new file mode 100644 index 0000000..f7d57b8 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_universal_printer.tex @@ -0,0 +1,40 @@ +\hypertarget{classtesting_1_1internal_1_1_universal_printer}{}\section{testing\+:\+:internal\+:\+:Universal\+Printer$<$ T $>$ Class Template Reference} +\label{classtesting_1_1internal_1_1_universal_printer}\index{testing\+::internal\+::\+Universal\+Printer$<$ T $>$@{testing\+::internal\+::\+Universal\+Printer$<$ T $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Static Public Member Functions} +\begin{DoxyCompactItemize} +\item +static void \mbox{\hyperlink{classtesting_1_1internal_1_1_universal_printer_aecec021e1abbaa260b701e24e3fe33eb}{Print}} (const T \&value, \+::std\+::ostream $\ast$os) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T$>$\newline +class testing\+::internal\+::\+Universal\+Printer$<$ T $>$} + + + +Definition at line 8429 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_universal_printer_aecec021e1abbaa260b701e24e3fe33eb}\label{classtesting_1_1internal_1_1_universal_printer_aecec021e1abbaa260b701e24e3fe33eb}} +\index{testing\+::internal\+::\+Universal\+Printer@{testing\+::internal\+::\+Universal\+Printer}!Print@{Print}} +\index{Print@{Print}!testing\+::internal\+::\+Universal\+Printer@{testing\+::internal\+::\+Universal\+Printer}} +\subsubsection{\texorpdfstring{Print()}{Print()}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +static void \mbox{\hyperlink{classtesting_1_1internal_1_1_universal_printer}{testing\+::internal\+::\+Universal\+Printer}}$<$ T $>$\+::Print (\begin{DoxyParamCaption}\item[{const T \&}]{value, }\item[{\+::std\+::ostream $\ast$}]{os }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}} + + + +Definition at line 8724 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_universal_printer_3_01_t[_n]_4.tex b/doc/latex/classtesting_1_1internal_1_1_universal_printer_3_01_t[_n]_4.tex new file mode 100644 index 0000000..9c956bf --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_universal_printer_3_01_t[_n]_4.tex @@ -0,0 +1,40 @@ +\hypertarget{classtesting_1_1internal_1_1_universal_printer_3_01_t[_n]_4}{}\section{testing\+:\+:internal\+:\+:Universal\+Printer$<$ T\mbox{[}N\mbox{]}$>$ Class Template Reference} +\label{classtesting_1_1internal_1_1_universal_printer_3_01_t[_n]_4}\index{testing\+::internal\+::\+Universal\+Printer$<$ T\mbox{[}N\mbox{]}$>$@{testing\+::internal\+::\+Universal\+Printer$<$ T[N]$>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Static Public Member Functions} +\begin{DoxyCompactItemize} +\item +static void \mbox{\hyperlink{classtesting_1_1internal_1_1_universal_printer_3_01_t[_n]_4_a1cf0e7c8db59c090f769116c6421b212}{Print}} (const T(\&a)\mbox{[}N\mbox{]}, \+::std\+::ostream $\ast$os) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T, size\+\_\+t N$>$\newline +class testing\+::internal\+::\+Universal\+Printer$<$ T\mbox{[}\+N\mbox{]}$>$} + + + +Definition at line 8814 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_universal_printer_3_01_t[_n]_4_a1cf0e7c8db59c090f769116c6421b212}\label{classtesting_1_1internal_1_1_universal_printer_3_01_t[_n]_4_a1cf0e7c8db59c090f769116c6421b212}} +\index{testing\+::internal\+::\+Universal\+Printer$<$ T\mbox{[}N\mbox{]}$>$@{testing\+::internal\+::\+Universal\+Printer$<$ T[N]$>$}!Print@{Print}} +\index{Print@{Print}!testing\+::internal\+::\+Universal\+Printer$<$ T\mbox{[}N\mbox{]}$>$@{testing\+::internal\+::\+Universal\+Printer$<$ T[N]$>$}} +\subsubsection{\texorpdfstring{Print()}{Print()}} +{\footnotesize\ttfamily template$<$typename T , size\+\_\+t N$>$ \\ +static void \mbox{\hyperlink{classtesting_1_1internal_1_1_universal_printer}{testing\+::internal\+::\+Universal\+Printer}}$<$ T\mbox{[}N\mbox{]}$>$\+::Print (\begin{DoxyParamCaption}\item[{const T(\&)}]{a\mbox{[}\+N\mbox{]}, }\item[{\+::std\+::ostream $\ast$}]{os }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}} + + + +Definition at line 8818 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_universal_printer_3_01_t_01_6_01_4.tex b/doc/latex/classtesting_1_1internal_1_1_universal_printer_3_01_t_01_6_01_4.tex new file mode 100644 index 0000000..f026e45 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_universal_printer_3_01_t_01_6_01_4.tex @@ -0,0 +1,40 @@ +\hypertarget{classtesting_1_1internal_1_1_universal_printer_3_01_t_01_6_01_4}{}\section{testing\+:\+:internal\+:\+:Universal\+Printer$<$ T \& $>$ Class Template Reference} +\label{classtesting_1_1internal_1_1_universal_printer_3_01_t_01_6_01_4}\index{testing\+::internal\+::\+Universal\+Printer$<$ T \& $>$@{testing\+::internal\+::\+Universal\+Printer$<$ T \& $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Static Public Member Functions} +\begin{DoxyCompactItemize} +\item +static void \mbox{\hyperlink{classtesting_1_1internal_1_1_universal_printer_3_01_t_01_6_01_4_a923a694be8aa66117848c1c5f57ede35}{Print}} (const T \&value, \+::std\+::ostream $\ast$os) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T$>$\newline +class testing\+::internal\+::\+Universal\+Printer$<$ T \& $>$} + + + +Definition at line 8825 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_universal_printer_3_01_t_01_6_01_4_a923a694be8aa66117848c1c5f57ede35}\label{classtesting_1_1internal_1_1_universal_printer_3_01_t_01_6_01_4_a923a694be8aa66117848c1c5f57ede35}} +\index{testing\+::internal\+::\+Universal\+Printer$<$ T \& $>$@{testing\+::internal\+::\+Universal\+Printer$<$ T \& $>$}!Print@{Print}} +\index{Print@{Print}!testing\+::internal\+::\+Universal\+Printer$<$ T \& $>$@{testing\+::internal\+::\+Universal\+Printer$<$ T \& $>$}} +\subsubsection{\texorpdfstring{Print()}{Print()}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +static void \mbox{\hyperlink{classtesting_1_1internal_1_1_universal_printer}{testing\+::internal\+::\+Universal\+Printer}}$<$ T \& $>$\+::Print (\begin{DoxyParamCaption}\item[{const T \&}]{value, }\item[{\+::std\+::ostream $\ast$}]{os }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}} + + + +Definition at line 8831 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_universal_terse_printer.tex b/doc/latex/classtesting_1_1internal_1_1_universal_terse_printer.tex new file mode 100644 index 0000000..ef07f3d --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_universal_terse_printer.tex @@ -0,0 +1,40 @@ +\hypertarget{classtesting_1_1internal_1_1_universal_terse_printer}{}\section{testing\+:\+:internal\+:\+:Universal\+Terse\+Printer$<$ T $>$ Class Template Reference} +\label{classtesting_1_1internal_1_1_universal_terse_printer}\index{testing\+::internal\+::\+Universal\+Terse\+Printer$<$ T $>$@{testing\+::internal\+::\+Universal\+Terse\+Printer$<$ T $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Static Public Member Functions} +\begin{DoxyCompactItemize} +\item +static void \mbox{\hyperlink{classtesting_1_1internal_1_1_universal_terse_printer_a042249cdb42fdb77588c9ad54ea7ed54}{Print}} (const T \&value, \+::std\+::ostream $\ast$os) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T$>$\newline +class testing\+::internal\+::\+Universal\+Terse\+Printer$<$ T $>$} + + + +Definition at line 8848 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_universal_terse_printer_a042249cdb42fdb77588c9ad54ea7ed54}\label{classtesting_1_1internal_1_1_universal_terse_printer_a042249cdb42fdb77588c9ad54ea7ed54}} +\index{testing\+::internal\+::\+Universal\+Terse\+Printer@{testing\+::internal\+::\+Universal\+Terse\+Printer}!Print@{Print}} +\index{Print@{Print}!testing\+::internal\+::\+Universal\+Terse\+Printer@{testing\+::internal\+::\+Universal\+Terse\+Printer}} +\subsubsection{\texorpdfstring{Print()}{Print()}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +static void \mbox{\hyperlink{classtesting_1_1internal_1_1_universal_terse_printer}{testing\+::internal\+::\+Universal\+Terse\+Printer}}$<$ T $>$\+::Print (\begin{DoxyParamCaption}\item[{const T \&}]{value, }\item[{\+::std\+::ostream $\ast$}]{os }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}} + + + +Definition at line 8850 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_universal_terse_printer_3_01_t[_n]_4.tex b/doc/latex/classtesting_1_1internal_1_1_universal_terse_printer_3_01_t[_n]_4.tex new file mode 100644 index 0000000..8821cce --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_universal_terse_printer_3_01_t[_n]_4.tex @@ -0,0 +1,40 @@ +\hypertarget{classtesting_1_1internal_1_1_universal_terse_printer_3_01_t[_n]_4}{}\section{testing\+:\+:internal\+:\+:Universal\+Terse\+Printer$<$ T\mbox{[}N\mbox{]}$>$ Class Template Reference} +\label{classtesting_1_1internal_1_1_universal_terse_printer_3_01_t[_n]_4}\index{testing\+::internal\+::\+Universal\+Terse\+Printer$<$ T\mbox{[}N\mbox{]}$>$@{testing\+::internal\+::\+Universal\+Terse\+Printer$<$ T[N]$>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Static Public Member Functions} +\begin{DoxyCompactItemize} +\item +static void \mbox{\hyperlink{classtesting_1_1internal_1_1_universal_terse_printer_3_01_t[_n]_4_a9e0ceb62fda7dc46ebcf5f911e459a49}{Print}} (const T(\&value)\mbox{[}N\mbox{]}, \+::std\+::ostream $\ast$os) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T, size\+\_\+t N$>$\newline +class testing\+::internal\+::\+Universal\+Terse\+Printer$<$ T\mbox{[}\+N\mbox{]}$>$} + + + +Definition at line 8862 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_universal_terse_printer_3_01_t[_n]_4_a9e0ceb62fda7dc46ebcf5f911e459a49}\label{classtesting_1_1internal_1_1_universal_terse_printer_3_01_t[_n]_4_a9e0ceb62fda7dc46ebcf5f911e459a49}} +\index{testing\+::internal\+::\+Universal\+Terse\+Printer$<$ T\mbox{[}N\mbox{]}$>$@{testing\+::internal\+::\+Universal\+Terse\+Printer$<$ T[N]$>$}!Print@{Print}} +\index{Print@{Print}!testing\+::internal\+::\+Universal\+Terse\+Printer$<$ T\mbox{[}N\mbox{]}$>$@{testing\+::internal\+::\+Universal\+Terse\+Printer$<$ T[N]$>$}} +\subsubsection{\texorpdfstring{Print()}{Print()}} +{\footnotesize\ttfamily template$<$typename T , size\+\_\+t N$>$ \\ +static void \mbox{\hyperlink{classtesting_1_1internal_1_1_universal_terse_printer}{testing\+::internal\+::\+Universal\+Terse\+Printer}}$<$ T\mbox{[}N\mbox{]}$>$\+::Print (\begin{DoxyParamCaption}\item[{const T(\&)}]{value\mbox{[}\+N\mbox{]}, }\item[{\+::std\+::ostream $\ast$}]{os }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}} + + + +Definition at line 8864 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_universal_terse_printer_3_01_t_01_6_01_4.tex b/doc/latex/classtesting_1_1internal_1_1_universal_terse_printer_3_01_t_01_6_01_4.tex new file mode 100644 index 0000000..5f7a9a2 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_universal_terse_printer_3_01_t_01_6_01_4.tex @@ -0,0 +1,40 @@ +\hypertarget{classtesting_1_1internal_1_1_universal_terse_printer_3_01_t_01_6_01_4}{}\section{testing\+:\+:internal\+:\+:Universal\+Terse\+Printer$<$ T \& $>$ Class Template Reference} +\label{classtesting_1_1internal_1_1_universal_terse_printer_3_01_t_01_6_01_4}\index{testing\+::internal\+::\+Universal\+Terse\+Printer$<$ T \& $>$@{testing\+::internal\+::\+Universal\+Terse\+Printer$<$ T \& $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Static Public Member Functions} +\begin{DoxyCompactItemize} +\item +static void \mbox{\hyperlink{classtesting_1_1internal_1_1_universal_terse_printer_3_01_t_01_6_01_4_a931f93cc52a3046706c87d0a90640483}{Print}} (const T \&value, \+::std\+::ostream $\ast$os) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T$>$\newline +class testing\+::internal\+::\+Universal\+Terse\+Printer$<$ T \& $>$} + + + +Definition at line 8855 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_universal_terse_printer_3_01_t_01_6_01_4_a931f93cc52a3046706c87d0a90640483}\label{classtesting_1_1internal_1_1_universal_terse_printer_3_01_t_01_6_01_4_a931f93cc52a3046706c87d0a90640483}} +\index{testing\+::internal\+::\+Universal\+Terse\+Printer$<$ T \& $>$@{testing\+::internal\+::\+Universal\+Terse\+Printer$<$ T \& $>$}!Print@{Print}} +\index{Print@{Print}!testing\+::internal\+::\+Universal\+Terse\+Printer$<$ T \& $>$@{testing\+::internal\+::\+Universal\+Terse\+Printer$<$ T \& $>$}} +\subsubsection{\texorpdfstring{Print()}{Print()}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +static void \mbox{\hyperlink{classtesting_1_1internal_1_1_universal_terse_printer}{testing\+::internal\+::\+Universal\+Terse\+Printer}}$<$ T \& $>$\+::Print (\begin{DoxyParamCaption}\item[{const T \&}]{value, }\item[{\+::std\+::ostream $\ast$}]{os }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}} + + + +Definition at line 8857 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_universal_terse_printer_3_01char_01_5_01_4.tex b/doc/latex/classtesting_1_1internal_1_1_universal_terse_printer_3_01char_01_5_01_4.tex new file mode 100644 index 0000000..ddc9012 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_universal_terse_printer_3_01char_01_5_01_4.tex @@ -0,0 +1,39 @@ +\hypertarget{classtesting_1_1internal_1_1_universal_terse_printer_3_01char_01_5_01_4}{}\section{testing\+:\+:internal\+:\+:Universal\+Terse\+Printer$<$ char $\ast$ $>$ Class Template Reference} +\label{classtesting_1_1internal_1_1_universal_terse_printer_3_01char_01_5_01_4}\index{testing\+::internal\+::\+Universal\+Terse\+Printer$<$ char $\ast$ $>$@{testing\+::internal\+::\+Universal\+Terse\+Printer$<$ char $\ast$ $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Static Public Member Functions} +\begin{DoxyCompactItemize} +\item +static void \mbox{\hyperlink{classtesting_1_1internal_1_1_universal_terse_printer_3_01char_01_5_01_4_aa9ef95587c1461fe33e254af52401a43}{Print}} (char $\ast$str, \+::std\+::ostream $\ast$os) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$$>$\newline +class testing\+::internal\+::\+Universal\+Terse\+Printer$<$ char $\ast$ $>$} + + + +Definition at line 8880 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_universal_terse_printer_3_01char_01_5_01_4_aa9ef95587c1461fe33e254af52401a43}\label{classtesting_1_1internal_1_1_universal_terse_printer_3_01char_01_5_01_4_aa9ef95587c1461fe33e254af52401a43}} +\index{testing\+::internal\+::\+Universal\+Terse\+Printer$<$ char $\ast$ $>$@{testing\+::internal\+::\+Universal\+Terse\+Printer$<$ char $\ast$ $>$}!Print@{Print}} +\index{Print@{Print}!testing\+::internal\+::\+Universal\+Terse\+Printer$<$ char $\ast$ $>$@{testing\+::internal\+::\+Universal\+Terse\+Printer$<$ char $\ast$ $>$}} +\subsubsection{\texorpdfstring{Print()}{Print()}} +{\footnotesize\ttfamily static void \mbox{\hyperlink{classtesting_1_1internal_1_1_universal_terse_printer}{testing\+::internal\+::\+Universal\+Terse\+Printer}}$<$ char $\ast$ $>$\+::Print (\begin{DoxyParamCaption}\item[{char $\ast$}]{str, }\item[{\+::std\+::ostream $\ast$}]{os }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}} + + + +Definition at line 8882 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_universal_terse_printer_3_01const_01char_01_5_01_4.tex b/doc/latex/classtesting_1_1internal_1_1_universal_terse_printer_3_01const_01char_01_5_01_4.tex new file mode 100644 index 0000000..3ea190e --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_universal_terse_printer_3_01const_01char_01_5_01_4.tex @@ -0,0 +1,39 @@ +\hypertarget{classtesting_1_1internal_1_1_universal_terse_printer_3_01const_01char_01_5_01_4}{}\section{testing\+:\+:internal\+:\+:Universal\+Terse\+Printer$<$ const char $\ast$ $>$ Class Template Reference} +\label{classtesting_1_1internal_1_1_universal_terse_printer_3_01const_01char_01_5_01_4}\index{testing\+::internal\+::\+Universal\+Terse\+Printer$<$ const char $\ast$ $>$@{testing\+::internal\+::\+Universal\+Terse\+Printer$<$ const char $\ast$ $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Static Public Member Functions} +\begin{DoxyCompactItemize} +\item +static void \mbox{\hyperlink{classtesting_1_1internal_1_1_universal_terse_printer_3_01const_01char_01_5_01_4_a37a3be2d26dc07b24d16c2b5eb88ecda}{Print}} (const char $\ast$str, \+::std\+::ostream $\ast$os) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$$>$\newline +class testing\+::internal\+::\+Universal\+Terse\+Printer$<$ const char $\ast$ $>$} + + + +Definition at line 8869 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_universal_terse_printer_3_01const_01char_01_5_01_4_a37a3be2d26dc07b24d16c2b5eb88ecda}\label{classtesting_1_1internal_1_1_universal_terse_printer_3_01const_01char_01_5_01_4_a37a3be2d26dc07b24d16c2b5eb88ecda}} +\index{testing\+::internal\+::\+Universal\+Terse\+Printer$<$ const char $\ast$ $>$@{testing\+::internal\+::\+Universal\+Terse\+Printer$<$ const char $\ast$ $>$}!Print@{Print}} +\index{Print@{Print}!testing\+::internal\+::\+Universal\+Terse\+Printer$<$ const char $\ast$ $>$@{testing\+::internal\+::\+Universal\+Terse\+Printer$<$ const char $\ast$ $>$}} +\subsubsection{\texorpdfstring{Print()}{Print()}} +{\footnotesize\ttfamily static void \mbox{\hyperlink{classtesting_1_1internal_1_1_universal_terse_printer}{testing\+::internal\+::\+Universal\+Terse\+Printer}}$<$ const char $\ast$ $>$\+::Print (\begin{DoxyParamCaption}\item[{const char $\ast$}]{str, }\item[{\+::std\+::ostream $\ast$}]{os }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}} + + + +Definition at line 8871 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_universal_terse_printer_3_01const_01wchar__t_01_5_01_4.tex b/doc/latex/classtesting_1_1internal_1_1_universal_terse_printer_3_01const_01wchar__t_01_5_01_4.tex new file mode 100644 index 0000000..cd46a33 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_universal_terse_printer_3_01const_01wchar__t_01_5_01_4.tex @@ -0,0 +1,39 @@ +\hypertarget{classtesting_1_1internal_1_1_universal_terse_printer_3_01const_01wchar__t_01_5_01_4}{}\section{testing\+:\+:internal\+:\+:Universal\+Terse\+Printer$<$ const wchar\+\_\+t $\ast$ $>$ Class Template Reference} +\label{classtesting_1_1internal_1_1_universal_terse_printer_3_01const_01wchar__t_01_5_01_4}\index{testing\+::internal\+::\+Universal\+Terse\+Printer$<$ const wchar\+\_\+t $\ast$ $>$@{testing\+::internal\+::\+Universal\+Terse\+Printer$<$ const wchar\+\_\+t $\ast$ $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Static Public Member Functions} +\begin{DoxyCompactItemize} +\item +static void \mbox{\hyperlink{classtesting_1_1internal_1_1_universal_terse_printer_3_01const_01wchar__t_01_5_01_4_af0d3bb36d6defbc67c43e5785e939478}{Print}} (const wchar\+\_\+t $\ast$str, \+::std\+::ostream $\ast$os) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$$>$\newline +class testing\+::internal\+::\+Universal\+Terse\+Printer$<$ const wchar\+\_\+t $\ast$ $>$} + + + +Definition at line 8889 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_universal_terse_printer_3_01const_01wchar__t_01_5_01_4_af0d3bb36d6defbc67c43e5785e939478}\label{classtesting_1_1internal_1_1_universal_terse_printer_3_01const_01wchar__t_01_5_01_4_af0d3bb36d6defbc67c43e5785e939478}} +\index{testing\+::internal\+::\+Universal\+Terse\+Printer$<$ const wchar\+\_\+t $\ast$ $>$@{testing\+::internal\+::\+Universal\+Terse\+Printer$<$ const wchar\+\_\+t $\ast$ $>$}!Print@{Print}} +\index{Print@{Print}!testing\+::internal\+::\+Universal\+Terse\+Printer$<$ const wchar\+\_\+t $\ast$ $>$@{testing\+::internal\+::\+Universal\+Terse\+Printer$<$ const wchar\+\_\+t $\ast$ $>$}} +\subsubsection{\texorpdfstring{Print()}{Print()}} +{\footnotesize\ttfamily static void \mbox{\hyperlink{classtesting_1_1internal_1_1_universal_terse_printer}{testing\+::internal\+::\+Universal\+Terse\+Printer}}$<$ const wchar\+\_\+t $\ast$ $>$\+::Print (\begin{DoxyParamCaption}\item[{const wchar\+\_\+t $\ast$}]{str, }\item[{\+::std\+::ostream $\ast$}]{os }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}} + + + +Definition at line 8891 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_universal_terse_printer_3_01wchar__t_01_5_01_4.tex b/doc/latex/classtesting_1_1internal_1_1_universal_terse_printer_3_01wchar__t_01_5_01_4.tex new file mode 100644 index 0000000..7d04d8f --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_universal_terse_printer_3_01wchar__t_01_5_01_4.tex @@ -0,0 +1,39 @@ +\hypertarget{classtesting_1_1internal_1_1_universal_terse_printer_3_01wchar__t_01_5_01_4}{}\section{testing\+:\+:internal\+:\+:Universal\+Terse\+Printer$<$ wchar\+\_\+t $\ast$ $>$ Class Template Reference} +\label{classtesting_1_1internal_1_1_universal_terse_printer_3_01wchar__t_01_5_01_4}\index{testing\+::internal\+::\+Universal\+Terse\+Printer$<$ wchar\+\_\+t $\ast$ $>$@{testing\+::internal\+::\+Universal\+Terse\+Printer$<$ wchar\+\_\+t $\ast$ $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Static Public Member Functions} +\begin{DoxyCompactItemize} +\item +static void \mbox{\hyperlink{classtesting_1_1internal_1_1_universal_terse_printer_3_01wchar__t_01_5_01_4_a9cdf673b44d19e6879253f30f11cd740}{Print}} (wchar\+\_\+t $\ast$str, \+::std\+::ostream $\ast$os) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$$>$\newline +class testing\+::internal\+::\+Universal\+Terse\+Printer$<$ wchar\+\_\+t $\ast$ $>$} + + + +Definition at line 8902 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_universal_terse_printer_3_01wchar__t_01_5_01_4_a9cdf673b44d19e6879253f30f11cd740}\label{classtesting_1_1internal_1_1_universal_terse_printer_3_01wchar__t_01_5_01_4_a9cdf673b44d19e6879253f30f11cd740}} +\index{testing\+::internal\+::\+Universal\+Terse\+Printer$<$ wchar\+\_\+t $\ast$ $>$@{testing\+::internal\+::\+Universal\+Terse\+Printer$<$ wchar\+\_\+t $\ast$ $>$}!Print@{Print}} +\index{Print@{Print}!testing\+::internal\+::\+Universal\+Terse\+Printer$<$ wchar\+\_\+t $\ast$ $>$@{testing\+::internal\+::\+Universal\+Terse\+Printer$<$ wchar\+\_\+t $\ast$ $>$}} +\subsubsection{\texorpdfstring{Print()}{Print()}} +{\footnotesize\ttfamily static void \mbox{\hyperlink{classtesting_1_1internal_1_1_universal_terse_printer}{testing\+::internal\+::\+Universal\+Terse\+Printer}}$<$ wchar\+\_\+t $\ast$ $>$\+::Print (\begin{DoxyParamCaption}\item[{wchar\+\_\+t $\ast$}]{str, }\item[{\+::std\+::ostream $\ast$}]{os }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}} + + + +Definition at line 8904 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_value_array.tex b/doc/latex/classtesting_1_1internal_1_1_value_array.tex new file mode 100644 index 0000000..4b3c3f1 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_value_array.tex @@ -0,0 +1,57 @@ +\hypertarget{classtesting_1_1internal_1_1_value_array}{}\section{testing\+:\+:internal\+:\+:Value\+Array$<$ Ts $>$ Class Template Reference} +\label{classtesting_1_1internal_1_1_value_array}\index{testing\+::internal\+::\+Value\+Array$<$ Ts $>$@{testing\+::internal\+::\+Value\+Array$<$ Ts $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_value_array_acd7cd6a969a7e95152eac1787c42c9ed}{Value\+Array}} (Ts... v) +\item +{\footnotesize template$<$typename T $>$ }\\\mbox{\hyperlink{classtesting_1_1internal_1_1_value_array_a019560f10debdce5f47bb18c0e5261b5}{operator Param\+Generator$<$ T $>$}} () const +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename... Ts$>$\newline +class testing\+::internal\+::\+Value\+Array$<$ Ts $>$} + + + +Definition at line 11280 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_value_array_acd7cd6a969a7e95152eac1787c42c9ed}\label{classtesting_1_1internal_1_1_value_array_acd7cd6a969a7e95152eac1787c42c9ed}} +\index{testing\+::internal\+::\+Value\+Array@{testing\+::internal\+::\+Value\+Array}!Value\+Array@{Value\+Array}} +\index{Value\+Array@{Value\+Array}!testing\+::internal\+::\+Value\+Array@{testing\+::internal\+::\+Value\+Array}} +\subsubsection{\texorpdfstring{Value\+Array()}{ValueArray()}} +{\footnotesize\ttfamily template$<$typename... Ts$>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_value_array}{testing\+::internal\+::\+Value\+Array}}$<$ Ts $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_value_array}{Value\+Array}} (\begin{DoxyParamCaption}\item[{Ts...}]{v }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 11282 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_value_array_a019560f10debdce5f47bb18c0e5261b5}\label{classtesting_1_1internal_1_1_value_array_a019560f10debdce5f47bb18c0e5261b5}} +\index{testing\+::internal\+::\+Value\+Array@{testing\+::internal\+::\+Value\+Array}!operator Param\+Generator$<$ T $>$@{operator Param\+Generator$<$ T $>$}} +\index{operator Param\+Generator$<$ T $>$@{operator Param\+Generator$<$ T $>$}!testing\+::internal\+::\+Value\+Array@{testing\+::internal\+::\+Value\+Array}} +\subsubsection{\texorpdfstring{operator Param\+Generator$<$ T $>$()}{operator ParamGenerator< T >()}} +{\footnotesize\ttfamily template$<$typename... Ts$>$ \\ +template$<$typename T $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_value_array}{testing\+::internal\+::\+Value\+Array}}$<$ Ts $>$\+::operator \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}}$<$ T $>$ (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 11285 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classtesting_1_1internal_1_1_values_in_iterator_range_generator.eps b/doc/latex/classtesting_1_1internal_1_1_values_in_iterator_range_generator.eps new file mode 100644 index 0000000..1d53778 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_values_in_iterator_range_generator.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 123.839009 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 4.037500 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(testing::internal::ValuesInIteratorRangeGenerator< T >) cw +(testing::internal::ParamGeneratorInterface< T >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (testing::internal::ValuesInIteratorRangeGenerator< T >) 0.000000 0.000000 box + (testing::internal::ParamGeneratorInterface< T >) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/classtesting_1_1internal_1_1_values_in_iterator_range_generator.tex b/doc/latex/classtesting_1_1internal_1_1_values_in_iterator_range_generator.tex new file mode 100644 index 0000000..cf17387 --- /dev/null +++ b/doc/latex/classtesting_1_1internal_1_1_values_in_iterator_range_generator.tex @@ -0,0 +1,98 @@ +\hypertarget{classtesting_1_1internal_1_1_values_in_iterator_range_generator}{}\section{testing\+:\+:internal\+:\+:Values\+In\+Iterator\+Range\+Generator$<$ T $>$ Class Template Reference} +\label{classtesting_1_1internal_1_1_values_in_iterator_range_generator}\index{testing\+::internal\+::\+Values\+In\+Iterator\+Range\+Generator$<$ T $>$@{testing\+::internal\+::\+Values\+In\+Iterator\+Range\+Generator$<$ T $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +Inheritance diagram for testing\+:\+:internal\+:\+:Values\+In\+Iterator\+Range\+Generator$<$ T $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{classtesting_1_1internal_1_1_values_in_iterator_range_generator} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename Forward\+Iterator $>$ }\\\mbox{\hyperlink{classtesting_1_1internal_1_1_values_in_iterator_range_generator_a8b30f6028bc5739bbd7c24b0f0e409f7}{Values\+In\+Iterator\+Range\+Generator}} (Forward\+Iterator begin, Forward\+Iterator end) +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_values_in_iterator_range_generator_a9070d5b79803164625d3aa77a1659e9f}{$\sim$\+Values\+In\+Iterator\+Range\+Generator}} () override +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{Param\+Iterator\+Interface}}$<$ T $>$ $\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_values_in_iterator_range_generator_a71ffed6f1deba05f11c9d45f6ab5b85d}{Begin}} () const override +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{Param\+Iterator\+Interface}}$<$ T $>$ $\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_values_in_iterator_range_generator_a298cfb66a90b1a39c0cea3ca7ae1ece1}{End}} () const override +\end{DoxyCompactItemize} +\subsection*{Additional Inherited Members} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T$>$\newline +class testing\+::internal\+::\+Values\+In\+Iterator\+Range\+Generator$<$ T $>$} + + + +Definition at line 10828 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_values_in_iterator_range_generator_a8b30f6028bc5739bbd7c24b0f0e409f7}\label{classtesting_1_1internal_1_1_values_in_iterator_range_generator_a8b30f6028bc5739bbd7c24b0f0e409f7}} +\index{testing\+::internal\+::\+Values\+In\+Iterator\+Range\+Generator@{testing\+::internal\+::\+Values\+In\+Iterator\+Range\+Generator}!Values\+In\+Iterator\+Range\+Generator@{Values\+In\+Iterator\+Range\+Generator}} +\index{Values\+In\+Iterator\+Range\+Generator@{Values\+In\+Iterator\+Range\+Generator}!testing\+::internal\+::\+Values\+In\+Iterator\+Range\+Generator@{testing\+::internal\+::\+Values\+In\+Iterator\+Range\+Generator}} +\subsubsection{\texorpdfstring{Values\+In\+Iterator\+Range\+Generator()}{ValuesInIteratorRangeGenerator()}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +template$<$typename Forward\+Iterator $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_values_in_iterator_range_generator}{testing\+::internal\+::\+Values\+In\+Iterator\+Range\+Generator}}$<$ T $>$\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_values_in_iterator_range_generator}{Values\+In\+Iterator\+Range\+Generator}} (\begin{DoxyParamCaption}\item[{Forward\+Iterator}]{begin, }\item[{Forward\+Iterator}]{end }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 10831 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_values_in_iterator_range_generator_a9070d5b79803164625d3aa77a1659e9f}\label{classtesting_1_1internal_1_1_values_in_iterator_range_generator_a9070d5b79803164625d3aa77a1659e9f}} +\index{testing\+::internal\+::\+Values\+In\+Iterator\+Range\+Generator@{testing\+::internal\+::\+Values\+In\+Iterator\+Range\+Generator}!````~Values\+In\+Iterator\+Range\+Generator@{$\sim$\+Values\+In\+Iterator\+Range\+Generator}} +\index{````~Values\+In\+Iterator\+Range\+Generator@{$\sim$\+Values\+In\+Iterator\+Range\+Generator}!testing\+::internal\+::\+Values\+In\+Iterator\+Range\+Generator@{testing\+::internal\+::\+Values\+In\+Iterator\+Range\+Generator}} +\subsubsection{\texorpdfstring{$\sim$\+Values\+In\+Iterator\+Range\+Generator()}{~ValuesInIteratorRangeGenerator()}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_values_in_iterator_range_generator}{testing\+::internal\+::\+Values\+In\+Iterator\+Range\+Generator}}$<$ T $>$\+::$\sim$\mbox{\hyperlink{classtesting_1_1internal_1_1_values_in_iterator_range_generator}{Values\+In\+Iterator\+Range\+Generator}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}} + + + +Definition at line 10833 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classtesting_1_1internal_1_1_values_in_iterator_range_generator_a71ffed6f1deba05f11c9d45f6ab5b85d}\label{classtesting_1_1internal_1_1_values_in_iterator_range_generator_a71ffed6f1deba05f11c9d45f6ab5b85d}} +\index{testing\+::internal\+::\+Values\+In\+Iterator\+Range\+Generator@{testing\+::internal\+::\+Values\+In\+Iterator\+Range\+Generator}!Begin@{Begin}} +\index{Begin@{Begin}!testing\+::internal\+::\+Values\+In\+Iterator\+Range\+Generator@{testing\+::internal\+::\+Values\+In\+Iterator\+Range\+Generator}} +\subsubsection{\texorpdfstring{Begin()}{Begin()}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{Param\+Iterator\+Interface}}$<$T$>$$\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_values_in_iterator_range_generator}{testing\+::internal\+::\+Values\+In\+Iterator\+Range\+Generator}}$<$ T $>$\+::Begin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\ttfamily [virtual]}} + + + +Implements \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator_interface_ae1de83b16fe9a53c67778a026c6a9569}{testing\+::internal\+::\+Param\+Generator\+Interface$<$ T $>$}}. + + + +Definition at line 10835 of file gtest.\+h. + +\mbox{\Hypertarget{classtesting_1_1internal_1_1_values_in_iterator_range_generator_a298cfb66a90b1a39c0cea3ca7ae1ece1}\label{classtesting_1_1internal_1_1_values_in_iterator_range_generator_a298cfb66a90b1a39c0cea3ca7ae1ece1}} +\index{testing\+::internal\+::\+Values\+In\+Iterator\+Range\+Generator@{testing\+::internal\+::\+Values\+In\+Iterator\+Range\+Generator}!End@{End}} +\index{End@{End}!testing\+::internal\+::\+Values\+In\+Iterator\+Range\+Generator@{testing\+::internal\+::\+Values\+In\+Iterator\+Range\+Generator}} +\subsubsection{\texorpdfstring{End()}{End()}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{Param\+Iterator\+Interface}}$<$T$>$$\ast$ \mbox{\hyperlink{classtesting_1_1internal_1_1_values_in_iterator_range_generator}{testing\+::internal\+::\+Values\+In\+Iterator\+Range\+Generator}}$<$ T $>$\+::End (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [override]}, {\ttfamily [virtual]}} + + + +Implements \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator_interface_afa7211b74990e11d3fc7ad4e7113da4f}{testing\+::internal\+::\+Param\+Generator\+Interface$<$ T $>$}}. + + + +Definition at line 10838 of file gtest.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classutl_1_1__1wire__i.tex b/doc/latex/classutl_1_1__1wire__i.tex new file mode 100644 index 0000000..6343bf5 --- /dev/null +++ b/doc/latex/classutl_1_1__1wire__i.tex @@ -0,0 +1,480 @@ +\hypertarget{classutl_1_1__1wire__i}{}\section{utl\+:\+:\+\_\+1wire\+\_\+i$<$ impl\+\_\+t $>$ Class Template Reference} +\label{classutl_1_1__1wire__i}\index{utl\+::\+\_\+1wire\+\_\+i$<$ impl\+\_\+t $>$@{utl\+::\+\_\+1wire\+\_\+i$<$ impl\+\_\+t $>$}} + + +Template base class for 1-\/wire communication interface using C\+R\+TP. + + + + +{\ttfamily \#include $<$\+\_\+1wire.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +enum \mbox{\hyperlink{classutl_1_1__1wire__i_a56bb736aa3620d7795b5914cac5f25cc}{Speed}} \{ \mbox{\hyperlink{classutl_1_1__1wire__i_a56bb736aa3620d7795b5914cac5f25ccac6ce23be5d350ce18a665427d2d950f7}{Speed\+::\+S\+TD}} =0, +\mbox{\hyperlink{classutl_1_1__1wire__i_a56bb736aa3620d7795b5914cac5f25cca1cbf38b04c4249d8ec27d1ec96aaff68}{Speed\+::\+O\+V\+DR}} + \} +\begin{DoxyCompactList}\small\item\em 1-\/wire bus speed \end{DoxyCompactList}\item +using \mbox{\hyperlink{classutl_1_1__1wire__i_afb63e64403924897a8277eb4159ebd44}{type}} = \mbox{\hyperlink{classutl_1_1__1wire__i}{\+\_\+1wire\+\_\+i}} +\begin{DoxyCompactList}\small\item\em Export type as identity meta-\/function. \end{DoxyCompactList}\end{DoxyCompactItemize} +\subsection*{Public Member Functions} +\begin{Indent}\textbf{ User functionality provided by the interface}\par +\begin{DoxyCompactItemize} +\item +bool \mbox{\hyperlink{classutl_1_1__1wire__i_a0a7ef731162e81e0e2e07ae9cb9e6ffa}{reset}} (\mbox{\hyperlink{classutl_1_1__1wire__i_a56bb736aa3620d7795b5914cac5f25cc}{Speed}} s=\mbox{\hyperlink{classutl_1_1__1wire__i_a56bb736aa3620d7795b5914cac5f25ccac6ce23be5d350ce18a665427d2d950f7}{Speed\+::\+S\+TD}}) +\begin{DoxyCompactList}\small\item\em Generate a 1-\/wire reset. \end{DoxyCompactList}\item +\mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} \mbox{\hyperlink{classutl_1_1__1wire__i_a59e7196e10e53467b62ed369ff78f07d}{tx\+\_\+data}} (\mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} out, \mbox{\hyperlink{classutl_1_1__1wire__i_a56bb736aa3620d7795b5914cac5f25cc}{Speed}} s=\mbox{\hyperlink{classutl_1_1__1wire__i_a56bb736aa3620d7795b5914cac5f25ccac6ce23be5d350ce18a665427d2d950f7}{Speed\+::\+S\+TD}}) +\item +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1__1wire__i_ab3bd112ff66074bdaf7357b91ca692a8}{tx\+\_\+data}} (const \mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} $\ast$out, \mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} $\ast$in, \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} n, \mbox{\hyperlink{classutl_1_1__1wire__i_a56bb736aa3620d7795b5914cac5f25cc}{Speed}} s=\mbox{\hyperlink{classutl_1_1__1wire__i_a56bb736aa3620d7795b5914cac5f25ccac6ce23be5d350ce18a665427d2d950f7}{Speed\+::\+S\+TD}}) +\item +\mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} \mbox{\hyperlink{classutl_1_1__1wire__i_a2585e7166d14b7f36bd47db2e43cc0b1}{rx\+\_\+data}} (\mbox{\hyperlink{classutl_1_1__1wire__i_a56bb736aa3620d7795b5914cac5f25cc}{Speed}} s=\mbox{\hyperlink{classutl_1_1__1wire__i_a56bb736aa3620d7795b5914cac5f25ccac6ce23be5d350ce18a665427d2d950f7}{Speed\+::\+S\+TD}}) +\item +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1__1wire__i_ad20382d5d50ee7d457bc4079b9c38a2a}{rx\+\_\+data}} (\mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} $\ast$in, \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} n, \mbox{\hyperlink{classutl_1_1__1wire__i_a56bb736aa3620d7795b5914cac5f25cc}{Speed}} s=\mbox{\hyperlink{classutl_1_1__1wire__i_a56bb736aa3620d7795b5914cac5f25ccac6ce23be5d350ce18a665427d2d950f7}{Speed\+::\+S\+TD}}) +\item +void \mbox{\hyperlink{classutl_1_1__1wire__i_aa2d87a149c4e5dcfefc5a8cde6eaefb2}{match}} (\mbox{\hyperlink{classutl_1_1__1wire__id__t}{\+\_\+1wire\+\_\+id\+\_\+t}} \&id, \mbox{\hyperlink{classutl_1_1__1wire__i_a56bb736aa3620d7795b5914cac5f25cc}{Speed}} s=\mbox{\hyperlink{classutl_1_1__1wire__i_a56bb736aa3620d7795b5914cac5f25ccac6ce23be5d350ce18a665427d2d950f7}{Speed\+::\+S\+TD}}) +\item +void \mbox{\hyperlink{classutl_1_1__1wire__i_ac88f67dd75dc23d39123ac584dce6b40}{match\+\_\+n\+\_\+ovdr}} (\mbox{\hyperlink{classutl_1_1__1wire__id__t}{\+\_\+1wire\+\_\+id\+\_\+t}} \&id) +\item +void \mbox{\hyperlink{classutl_1_1__1wire__i_a0a405f818fd45eb2799e6b4477021a0a}{skip}} (\mbox{\hyperlink{classutl_1_1__1wire__i_a56bb736aa3620d7795b5914cac5f25cc}{Speed}} s=\mbox{\hyperlink{classutl_1_1__1wire__i_a56bb736aa3620d7795b5914cac5f25ccac6ce23be5d350ce18a665427d2d950f7}{Speed\+::\+S\+TD}}) +\item +void \mbox{\hyperlink{classutl_1_1__1wire__i_a8b0b0ea95c02a40721f1e159119b3506}{skip\+\_\+n\+\_\+ovdr}} () +\item +\mbox{\hyperlink{classutl_1_1__1wire__id__t}{\+\_\+1wire\+\_\+id\+\_\+t}} \mbox{\hyperlink{classutl_1_1__1wire__i_a4b6d225963095d36eda832a1e0adba55}{first}} (\mbox{\hyperlink{classutl_1_1__1wire__i_a56bb736aa3620d7795b5914cac5f25cc}{Speed}} s=\mbox{\hyperlink{classutl_1_1__1wire__i_a56bb736aa3620d7795b5914cac5f25ccac6ce23be5d350ce18a665427d2d950f7}{Speed\+::\+S\+TD}}, bool alarm=false) +\begin{DoxyCompactList}\small\item\em \textquotesingle{}first\textquotesingle{} operation, to search on the 1-\/\+Wire for the first device. This is performed by setting dec\+\_\+, pos\+\_\+ and cur\+\_\+ to zero and then doing the search. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1__1wire__id__t}{\+\_\+1wire\+\_\+id\+\_\+t}} \mbox{\hyperlink{classutl_1_1__1wire__i_a3e302085f12a39fef8a378e1dac42f45}{next}} (\mbox{\hyperlink{classutl_1_1__1wire__i_a56bb736aa3620d7795b5914cac5f25cc}{Speed}} s=\mbox{\hyperlink{classutl_1_1__1wire__i_a56bb736aa3620d7795b5914cac5f25ccac6ce23be5d350ce18a665427d2d950f7}{Speed\+::\+S\+TD}}, bool alarm=false) +\begin{DoxyCompactList}\small\item\em \textquotesingle{}next\textquotesingle{} operation, to search on the 1-\/\+Wire for the next device. This search is usually performed after a \textquotesingle{}first\textquotesingle{} operation or another \textquotesingle{}next\textquotesingle{} operation. Based on maxim-\/ic application note 187. \end{DoxyCompactList}\end{DoxyCompactItemize} +\end{Indent} +\subsection*{Protected Member Functions} +\begin{Indent}\textbf{ Object lifetime}\par +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classutl_1_1__1wire__i_a4839577d00fdcefb51ac8d4cd91f0f1a}{\+\_\+1wire\+\_\+i}} ()=default +\begin{DoxyCompactList}\small\item\em Allow constructor from derived only. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1__1wire__i_afb146fda251b25c9fc812718f6c5b3e1}{$\sim$\+\_\+1wire\+\_\+i}} ()=default +\begin{DoxyCompactList}\small\item\em Allow destructor from derived only. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1__1wire__i_adc539ccd0e41f8f830bd96c362094c14}{\+\_\+1wire\+\_\+i}} (const \mbox{\hyperlink{classutl_1_1__1wire__i}{\+\_\+1wire\+\_\+i}} \&)=delete +\begin{DoxyCompactList}\small\item\em No copies. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1__1wire__i}{\+\_\+1wire\+\_\+i}} \& \mbox{\hyperlink{classutl_1_1__1wire__i_a96222b5bd731c2b242e428aabda40642}{operator=}} (const \mbox{\hyperlink{classutl_1_1__1wire__i}{\+\_\+1wire\+\_\+i}} \&)=delete +\end{DoxyCompactItemize} +\end{Indent} +\subsection*{Friends api to provide functionality to all class specializations} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename \+\_\+T $>$ }\\\mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} \mbox{\hyperlink{classutl_1_1__1wire__i_aedee6f129425833a172784ec3c6e21e9}{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+touch}} (\+\_\+T \&, \mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}}, typename \+\_\+\+T\+::\+Speed) +\item +{\footnotesize template$<$typename \+\_\+T $>$ }\\void \mbox{\hyperlink{classutl_1_1__1wire__i_a6deca63bf5935ba3c3aa07f6ca23e33a}{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+match}} (\+\_\+T \&obj, \mbox{\hyperlink{classutl_1_1__1wire__id__t}{\+\_\+1wire\+\_\+id\+\_\+t}} \&id, typename \+\_\+\+T\+::\+Speed s) +\item +{\footnotesize template$<$typename \+\_\+T $>$ }\\void \mbox{\hyperlink{classutl_1_1__1wire__i_a6b70d3457970aa791dd68e20800b6d0d}{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+match\+\_\+n\+\_\+ovdr}} (\+\_\+T \&obj, \mbox{\hyperlink{classutl_1_1__1wire__id__t}{\+\_\+1wire\+\_\+id\+\_\+t}} \&id) +\item +{\footnotesize template$<$typename \+\_\+T $>$ }\\void \mbox{\hyperlink{classutl_1_1__1wire__i_a9041b1220dfa52b4f4b161b718c3d33a}{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+skip}} (\+\_\+T \&obj, typename \+\_\+\+T\+::\+Speed s) +\item +{\footnotesize template$<$typename \+\_\+T $>$ }\\void \mbox{\hyperlink{classutl_1_1__1wire__i_af4dfbd90b0d5606f1f2e515d38a43d66}{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+skip\+\_\+n\+\_\+ovdr}} (\+\_\+T \&obj) +\item +{\footnotesize template$<$typename \+\_\+T $>$ }\\\mbox{\hyperlink{classutl_1_1__1wire__id__t}{\+\_\+1wire\+\_\+id\+\_\+t}} \mbox{\hyperlink{classutl_1_1__1wire__i_a05f0872f43d7b305269904d1522fa437}{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+first}} (\+\_\+T \&, typename \+\_\+\+T\+::\+Speed, bool) +\item +{\footnotesize template$<$typename \+\_\+T $>$ }\\\mbox{\hyperlink{classutl_1_1__1wire__id__t}{\+\_\+1wire\+\_\+id\+\_\+t}} \mbox{\hyperlink{classutl_1_1__1wire__i_af9a6a28b49cd3f51736f7c1f8e67327a}{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+next}} (\+\_\+T \&, typename \+\_\+\+T\+::\+Speed, bool) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename impl\+\_\+t$>$\newline +class utl\+::\+\_\+1wire\+\_\+i$<$ impl\+\_\+t $>$} + +Template base class for 1-\/wire communication interface using C\+R\+TP. + + +\begin{DoxyParams}{Parameters} +{\em impl\+\_\+t} & The C\+R\+TP type (the derived/implementation class typename). \\ +\hline +\end{DoxyParams} + + +Definition at line 57 of file \+\_\+1wire.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{classutl_1_1__1wire__i_afb63e64403924897a8277eb4159ebd44}\label{classutl_1_1__1wire__i_afb63e64403924897a8277eb4159ebd44}} +\index{utl\+::\+\_\+1wire\+\_\+i@{utl\+::\+\_\+1wire\+\_\+i}!type@{type}} +\index{type@{type}!utl\+::\+\_\+1wire\+\_\+i@{utl\+::\+\_\+1wire\+\_\+i}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t$>$ \\ +using \mbox{\hyperlink{classutl_1_1__1wire__i}{utl\+::\+\_\+1wire\+\_\+i}}$<$ impl\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1__1wire__i_afb63e64403924897a8277eb4159ebd44}{type}} = \mbox{\hyperlink{classutl_1_1__1wire__i}{\+\_\+1wire\+\_\+i}}} + + + +Export type as identity meta-\/function. + + + +Definition at line 61 of file \+\_\+1wire.\+h. + + + +\subsection{Member Enumeration Documentation} +\mbox{\Hypertarget{classutl_1_1__1wire__i_a56bb736aa3620d7795b5914cac5f25cc}\label{classutl_1_1__1wire__i_a56bb736aa3620d7795b5914cac5f25cc}} +\index{utl\+::\+\_\+1wire\+\_\+i@{utl\+::\+\_\+1wire\+\_\+i}!Speed@{Speed}} +\index{Speed@{Speed}!utl\+::\+\_\+1wire\+\_\+i@{utl\+::\+\_\+1wire\+\_\+i}} +\subsubsection{\texorpdfstring{Speed}{Speed}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t$>$ \\ +enum \mbox{\hyperlink{classutl_1_1__1wire__i_a56bb736aa3620d7795b5914cac5f25cc}{utl\+::\+\_\+1wire\+\_\+i\+::\+Speed}}\hspace{0.3cm}{\ttfamily [strong]}} + + + +1-\/wire bus speed + +\begin{DoxyEnumFields}{Enumerator} +\raisebox{\heightof{T}}[0pt][0pt]{\index{S\+TD@{S\+TD}!utl\+::\+\_\+1wire\+\_\+i@{utl\+::\+\_\+1wire\+\_\+i}}\index{utl\+::\+\_\+1wire\+\_\+i@{utl\+::\+\_\+1wire\+\_\+i}!S\+TD@{S\+TD}}}\mbox{\Hypertarget{classutl_1_1__1wire__i_a56bb736aa3620d7795b5914cac5f25ccac6ce23be5d350ce18a665427d2d950f7}\label{classutl_1_1__1wire__i_a56bb736aa3620d7795b5914cac5f25ccac6ce23be5d350ce18a665427d2d950f7}} +S\+TD&\\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{O\+V\+DR@{O\+V\+DR}!utl\+::\+\_\+1wire\+\_\+i@{utl\+::\+\_\+1wire\+\_\+i}}\index{utl\+::\+\_\+1wire\+\_\+i@{utl\+::\+\_\+1wire\+\_\+i}!O\+V\+DR@{O\+V\+DR}}}\mbox{\Hypertarget{classutl_1_1__1wire__i_a56bb736aa3620d7795b5914cac5f25cca1cbf38b04c4249d8ec27d1ec96aaff68}\label{classutl_1_1__1wire__i_a56bb736aa3620d7795b5914cac5f25cca1cbf38b04c4249d8ec27d1ec96aaff68}} +O\+V\+DR&\\ +\hline + +\end{DoxyEnumFields} + + +Definition at line 64 of file \+\_\+1wire.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classutl_1_1__1wire__i_a4839577d00fdcefb51ac8d4cd91f0f1a}\label{classutl_1_1__1wire__i_a4839577d00fdcefb51ac8d4cd91f0f1a}} +\index{utl\+::\+\_\+1wire\+\_\+i@{utl\+::\+\_\+1wire\+\_\+i}!\+\_\+1wire\+\_\+i@{\+\_\+1wire\+\_\+i}} +\index{\+\_\+1wire\+\_\+i@{\+\_\+1wire\+\_\+i}!utl\+::\+\_\+1wire\+\_\+i@{utl\+::\+\_\+1wire\+\_\+i}} +\subsubsection{\texorpdfstring{\+\_\+1wire\+\_\+i()}{\_1wire\_i()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t$>$ \\ +\mbox{\hyperlink{classutl_1_1__1wire__i}{utl\+::\+\_\+1wire\+\_\+i}}$<$ impl\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1__1wire__i}{\+\_\+1wire\+\_\+i}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [default]}} + + + +Allow constructor from derived only. + +\mbox{\Hypertarget{classutl_1_1__1wire__i_afb146fda251b25c9fc812718f6c5b3e1}\label{classutl_1_1__1wire__i_afb146fda251b25c9fc812718f6c5b3e1}} +\index{utl\+::\+\_\+1wire\+\_\+i@{utl\+::\+\_\+1wire\+\_\+i}!````~\+\_\+1wire\+\_\+i@{$\sim$\+\_\+1wire\+\_\+i}} +\index{````~\+\_\+1wire\+\_\+i@{$\sim$\+\_\+1wire\+\_\+i}!utl\+::\+\_\+1wire\+\_\+i@{utl\+::\+\_\+1wire\+\_\+i}} +\subsubsection{\texorpdfstring{$\sim$\+\_\+1wire\+\_\+i()}{~\_1wire\_i()}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t$>$ \\ +\mbox{\hyperlink{classutl_1_1__1wire__i}{utl\+::\+\_\+1wire\+\_\+i}}$<$ impl\+\_\+t $>$\+::$\sim$\mbox{\hyperlink{classutl_1_1__1wire__i}{\+\_\+1wire\+\_\+i}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [default]}} + + + +Allow destructor from derived only. + +\mbox{\Hypertarget{classutl_1_1__1wire__i_adc539ccd0e41f8f830bd96c362094c14}\label{classutl_1_1__1wire__i_adc539ccd0e41f8f830bd96c362094c14}} +\index{utl\+::\+\_\+1wire\+\_\+i@{utl\+::\+\_\+1wire\+\_\+i}!\+\_\+1wire\+\_\+i@{\+\_\+1wire\+\_\+i}} +\index{\+\_\+1wire\+\_\+i@{\+\_\+1wire\+\_\+i}!utl\+::\+\_\+1wire\+\_\+i@{utl\+::\+\_\+1wire\+\_\+i}} +\subsubsection{\texorpdfstring{\+\_\+1wire\+\_\+i()}{\_1wire\_i()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t$>$ \\ +\mbox{\hyperlink{classutl_1_1__1wire__i}{utl\+::\+\_\+1wire\+\_\+i}}$<$ impl\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1__1wire__i}{\+\_\+1wire\+\_\+i}} (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1__1wire__i}{\+\_\+1wire\+\_\+i}}$<$ impl\+\_\+t $>$ \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [delete]}} + + + +No copies. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classutl_1_1__1wire__i_a4b6d225963095d36eda832a1e0adba55}\label{classutl_1_1__1wire__i_a4b6d225963095d36eda832a1e0adba55}} +\index{utl\+::\+\_\+1wire\+\_\+i@{utl\+::\+\_\+1wire\+\_\+i}!first@{first}} +\index{first@{first}!utl\+::\+\_\+1wire\+\_\+i@{utl\+::\+\_\+1wire\+\_\+i}} +\subsubsection{\texorpdfstring{first()}{first()}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t$>$ \\ +\mbox{\hyperlink{classutl_1_1__1wire__id__t}{\+\_\+1wire\+\_\+id\+\_\+t}} \mbox{\hyperlink{classutl_1_1__1wire__i}{utl\+::\+\_\+1wire\+\_\+i}}$<$ impl\+\_\+t $>$\+::first (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classutl_1_1__1wire__i_a56bb736aa3620d7795b5914cac5f25cc}{Speed}}}]{s = {\ttfamily \mbox{\hyperlink{classutl_1_1__1wire__i_a56bb736aa3620d7795b5914cac5f25ccac6ce23be5d350ce18a665427d2d950f7}{Speed\+::\+S\+TD}}}, }\item[{bool}]{alarm = {\ttfamily false} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +\textquotesingle{}first\textquotesingle{} operation, to search on the 1-\/\+Wire for the first device. This is performed by setting dec\+\_\+, pos\+\_\+ and cur\+\_\+ to zero and then doing the search. + + +\begin{DoxyParams}{Parameters} +{\em s} & The bus speed \\ +\hline +{\em alarm} & If set, search for alarm devices \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +ID The rom\+ID \begin{DoxyItemize} +\item null\+Dev Indicate no \mbox{[}more\mbox{]} device\mbox{[}s\mbox{]} \end{DoxyItemize} + +\end{DoxyReturn} + + +Definition at line 207 of file \+\_\+1wire.\+h. + +\mbox{\Hypertarget{classutl_1_1__1wire__i_aa2d87a149c4e5dcfefc5a8cde6eaefb2}\label{classutl_1_1__1wire__i_aa2d87a149c4e5dcfefc5a8cde6eaefb2}} +\index{utl\+::\+\_\+1wire\+\_\+i@{utl\+::\+\_\+1wire\+\_\+i}!match@{match}} +\index{match@{match}!utl\+::\+\_\+1wire\+\_\+i@{utl\+::\+\_\+1wire\+\_\+i}} +\subsubsection{\texorpdfstring{match()}{match()}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t$>$ \\ +void \mbox{\hyperlink{classutl_1_1__1wire__i}{utl\+::\+\_\+1wire\+\_\+i}}$<$ impl\+\_\+t $>$\+::match (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classutl_1_1__1wire__id__t}{\+\_\+1wire\+\_\+id\+\_\+t}} \&}]{id, }\item[{\mbox{\hyperlink{classutl_1_1__1wire__i_a56bb736aa3620d7795b5914cac5f25cc}{Speed}}}]{s = {\ttfamily \mbox{\hyperlink{classutl_1_1__1wire__i_a56bb736aa3620d7795b5914cac5f25ccac6ce23be5d350ce18a665427d2d950f7}{Speed\+::\+S\+TD}}} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + +Send match rom command +\begin{DoxyParams}{Parameters} +{\em id} & The ID to select on the bus \\ +\hline +{\em s} & The speed to use for the command \\ +\hline +\end{DoxyParams} + + +Definition at line 173 of file \+\_\+1wire.\+h. + +\mbox{\Hypertarget{classutl_1_1__1wire__i_ac88f67dd75dc23d39123ac584dce6b40}\label{classutl_1_1__1wire__i_ac88f67dd75dc23d39123ac584dce6b40}} +\index{utl\+::\+\_\+1wire\+\_\+i@{utl\+::\+\_\+1wire\+\_\+i}!match\+\_\+n\+\_\+ovdr@{match\+\_\+n\+\_\+ovdr}} +\index{match\+\_\+n\+\_\+ovdr@{match\+\_\+n\+\_\+ovdr}!utl\+::\+\_\+1wire\+\_\+i@{utl\+::\+\_\+1wire\+\_\+i}} +\subsubsection{\texorpdfstring{match\+\_\+n\+\_\+ovdr()}{match\_n\_ovdr()}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t$>$ \\ +void \mbox{\hyperlink{classutl_1_1__1wire__i}{utl\+::\+\_\+1wire\+\_\+i}}$<$ impl\+\_\+t $>$\+::match\+\_\+n\+\_\+ovdr (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classutl_1_1__1wire__id__t}{\+\_\+1wire\+\_\+id\+\_\+t}} \&}]{id }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + +Match and overdrive sequence +\begin{DoxyParams}{Parameters} +{\em obj} & The object from which we call private members \\ +\hline +{\em id} & The ID to select on the bus \\ +\hline +\end{DoxyParams} + + +Definition at line 181 of file \+\_\+1wire.\+h. + +\mbox{\Hypertarget{classutl_1_1__1wire__i_a3e302085f12a39fef8a378e1dac42f45}\label{classutl_1_1__1wire__i_a3e302085f12a39fef8a378e1dac42f45}} +\index{utl\+::\+\_\+1wire\+\_\+i@{utl\+::\+\_\+1wire\+\_\+i}!next@{next}} +\index{next@{next}!utl\+::\+\_\+1wire\+\_\+i@{utl\+::\+\_\+1wire\+\_\+i}} +\subsubsection{\texorpdfstring{next()}{next()}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t$>$ \\ +\mbox{\hyperlink{classutl_1_1__1wire__id__t}{\+\_\+1wire\+\_\+id\+\_\+t}} \mbox{\hyperlink{classutl_1_1__1wire__i}{utl\+::\+\_\+1wire\+\_\+i}}$<$ impl\+\_\+t $>$\+::next (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classutl_1_1__1wire__i_a56bb736aa3620d7795b5914cac5f25cc}{Speed}}}]{s = {\ttfamily \mbox{\hyperlink{classutl_1_1__1wire__i_a56bb736aa3620d7795b5914cac5f25ccac6ce23be5d350ce18a665427d2d950f7}{Speed\+::\+S\+TD}}}, }\item[{bool}]{alarm = {\ttfamily false} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +\textquotesingle{}next\textquotesingle{} operation, to search on the 1-\/\+Wire for the next device. This search is usually performed after a \textquotesingle{}first\textquotesingle{} operation or another \textquotesingle{}next\textquotesingle{} operation. Based on maxim-\/ic application note 187. + + +\begin{DoxyParams}{Parameters} +{\em s} & The bus speed \\ +\hline +{\em alarm} & If set, search for alarm devices \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +ID The rom\+ID \begin{DoxyItemize} +\item null\+Dev Indicate no \mbox{[}more\mbox{]} device\mbox{[}s\mbox{]} \end{DoxyItemize} + +\end{DoxyReturn} + + +Definition at line 220 of file \+\_\+1wire.\+h. + +\mbox{\Hypertarget{classutl_1_1__1wire__i_a96222b5bd731c2b242e428aabda40642}\label{classutl_1_1__1wire__i_a96222b5bd731c2b242e428aabda40642}} +\index{utl\+::\+\_\+1wire\+\_\+i@{utl\+::\+\_\+1wire\+\_\+i}!operator=@{operator=}} +\index{operator=@{operator=}!utl\+::\+\_\+1wire\+\_\+i@{utl\+::\+\_\+1wire\+\_\+i}} +\subsubsection{\texorpdfstring{operator=()}{operator=()}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t$>$ \\ +\mbox{\hyperlink{classutl_1_1__1wire__i}{\+\_\+1wire\+\_\+i}}\& \mbox{\hyperlink{classutl_1_1__1wire__i}{utl\+::\+\_\+1wire\+\_\+i}}$<$ impl\+\_\+t $>$\+::operator= (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1__1wire__i}{\+\_\+1wire\+\_\+i}}$<$ impl\+\_\+t $>$ \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [delete]}} + +\mbox{\Hypertarget{classutl_1_1__1wire__i_a0a7ef731162e81e0e2e07ae9cb9e6ffa}\label{classutl_1_1__1wire__i_a0a7ef731162e81e0e2e07ae9cb9e6ffa}} +\index{utl\+::\+\_\+1wire\+\_\+i@{utl\+::\+\_\+1wire\+\_\+i}!reset@{reset}} +\index{reset@{reset}!utl\+::\+\_\+1wire\+\_\+i@{utl\+::\+\_\+1wire\+\_\+i}} +\subsubsection{\texorpdfstring{reset()}{reset()}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t$>$ \\ +bool \mbox{\hyperlink{classutl_1_1__1wire__i}{utl\+::\+\_\+1wire\+\_\+i}}$<$ impl\+\_\+t $>$\+::reset (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classutl_1_1__1wire__i_a56bb736aa3620d7795b5914cac5f25cc}{Speed}}}]{s = {\ttfamily \mbox{\hyperlink{classutl_1_1__1wire__i_a56bb736aa3620d7795b5914cac5f25ccac6ce23be5d350ce18a665427d2d950f7}{Speed\+::\+S\+TD}}} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Generate a 1-\/wire reset. + + +\begin{DoxyParams}{Parameters} +{\em s} & Bus speed \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +The status of the operation \begin{DoxyItemize} +\item 0 Fail \item 1 Success \end{DoxyItemize} + +\end{DoxyReturn} + + +Definition at line 128 of file \+\_\+1wire.\+h. + +\mbox{\Hypertarget{classutl_1_1__1wire__i_a2585e7166d14b7f36bd47db2e43cc0b1}\label{classutl_1_1__1wire__i_a2585e7166d14b7f36bd47db2e43cc0b1}} +\index{utl\+::\+\_\+1wire\+\_\+i@{utl\+::\+\_\+1wire\+\_\+i}!rx\+\_\+data@{rx\+\_\+data}} +\index{rx\+\_\+data@{rx\+\_\+data}!utl\+::\+\_\+1wire\+\_\+i@{utl\+::\+\_\+1wire\+\_\+i}} +\subsubsection{\texorpdfstring{rx\+\_\+data()}{rx\_data()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t$>$ \\ +\mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} \mbox{\hyperlink{classutl_1_1__1wire__i}{utl\+::\+\_\+1wire\+\_\+i}}$<$ impl\+\_\+t $>$\+::rx\+\_\+data (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classutl_1_1__1wire__i_a56bb736aa3620d7795b5914cac5f25cc}{Speed}}}]{s = {\ttfamily \mbox{\hyperlink{classutl_1_1__1wire__i_a56bb736aa3620d7795b5914cac5f25ccac6ce23be5d350ce18a665427d2d950f7}{Speed\+::\+S\+TD}}} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + +Receive a byte from 1-\/\+Wire bus while transmitting 0x\+FF +\begin{DoxyParams}{Parameters} +{\em s} & Bus speed to use \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +The byte received. +\end{DoxyReturn} + + +Definition at line 156 of file \+\_\+1wire.\+h. + +\mbox{\Hypertarget{classutl_1_1__1wire__i_ad20382d5d50ee7d457bc4079b9c38a2a}\label{classutl_1_1__1wire__i_ad20382d5d50ee7d457bc4079b9c38a2a}} +\index{utl\+::\+\_\+1wire\+\_\+i@{utl\+::\+\_\+1wire\+\_\+i}!rx\+\_\+data@{rx\+\_\+data}} +\index{rx\+\_\+data@{rx\+\_\+data}!utl\+::\+\_\+1wire\+\_\+i@{utl\+::\+\_\+1wire\+\_\+i}} +\subsubsection{\texorpdfstring{rx\+\_\+data()}{rx\_data()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename \+\_\+I $>$ \\ +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1__1wire__i}{utl\+::\+\_\+1wire\+\_\+i}}$<$ \+\_\+I $>$\+::rx\+\_\+data (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} $\ast$}]{in, }\item[{\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}}}]{n, }\item[{\mbox{\hyperlink{classutl_1_1__1wire__i_a56bb736aa3620d7795b5914cac5f25cc}{Speed}}}]{s = {\ttfamily \mbox{\hyperlink{classutl_1_1__1wire__i_a56bb736aa3620d7795b5914cac5f25ccac6ce23be5d350ce18a665427d2d950f7}{Speed\+::\+S\+TD}}} }\end{DoxyParamCaption})} + +Receive a number of bytes from 1-\/wire bus while transmitting 0x\+F\+Fs +\begin{DoxyParams}{Parameters} +{\em in} & Pointer to data to store \\ +\hline +{\em n} & Number of bytes \\ +\hline +{\em s} & Speed to use \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +The number of transmitted bytes +\end{DoxyReturn} + + +Definition at line 248 of file \+\_\+1wire.\+h. + +\mbox{\Hypertarget{classutl_1_1__1wire__i_a0a405f818fd45eb2799e6b4477021a0a}\label{classutl_1_1__1wire__i_a0a405f818fd45eb2799e6b4477021a0a}} +\index{utl\+::\+\_\+1wire\+\_\+i@{utl\+::\+\_\+1wire\+\_\+i}!skip@{skip}} +\index{skip@{skip}!utl\+::\+\_\+1wire\+\_\+i@{utl\+::\+\_\+1wire\+\_\+i}} +\subsubsection{\texorpdfstring{skip()}{skip()}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t$>$ \\ +void \mbox{\hyperlink{classutl_1_1__1wire__i}{utl\+::\+\_\+1wire\+\_\+i}}$<$ impl\+\_\+t $>$\+::skip (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classutl_1_1__1wire__i_a56bb736aa3620d7795b5914cac5f25cc}{Speed}}}]{s = {\ttfamily \mbox{\hyperlink{classutl_1_1__1wire__i_a56bb736aa3620d7795b5914cac5f25ccac6ce23be5d350ce18a665427d2d950f7}{Speed\+::\+S\+TD}}} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + +Send skip command to the bus +\begin{DoxyParams}{Parameters} +{\em id} & The ID to select on the bus \\ +\hline +\end{DoxyParams} + + +Definition at line 188 of file \+\_\+1wire.\+h. + +\mbox{\Hypertarget{classutl_1_1__1wire__i_a8b0b0ea95c02a40721f1e159119b3506}\label{classutl_1_1__1wire__i_a8b0b0ea95c02a40721f1e159119b3506}} +\index{utl\+::\+\_\+1wire\+\_\+i@{utl\+::\+\_\+1wire\+\_\+i}!skip\+\_\+n\+\_\+ovdr@{skip\+\_\+n\+\_\+ovdr}} +\index{skip\+\_\+n\+\_\+ovdr@{skip\+\_\+n\+\_\+ovdr}!utl\+::\+\_\+1wire\+\_\+i@{utl\+::\+\_\+1wire\+\_\+i}} +\subsubsection{\texorpdfstring{skip\+\_\+n\+\_\+ovdr()}{skip\_n\_ovdr()}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t$>$ \\ +void \mbox{\hyperlink{classutl_1_1__1wire__i}{utl\+::\+\_\+1wire\+\_\+i}}$<$ impl\+\_\+t $>$\+::skip\+\_\+n\+\_\+ovdr (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + +Send the Skip and Overdrive sequence + +Definition at line 194 of file \+\_\+1wire.\+h. + +\mbox{\Hypertarget{classutl_1_1__1wire__i_a59e7196e10e53467b62ed369ff78f07d}\label{classutl_1_1__1wire__i_a59e7196e10e53467b62ed369ff78f07d}} +\index{utl\+::\+\_\+1wire\+\_\+i@{utl\+::\+\_\+1wire\+\_\+i}!tx\+\_\+data@{tx\+\_\+data}} +\index{tx\+\_\+data@{tx\+\_\+data}!utl\+::\+\_\+1wire\+\_\+i@{utl\+::\+\_\+1wire\+\_\+i}} +\subsubsection{\texorpdfstring{tx\+\_\+data()}{tx\_data()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t$>$ \\ +\mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} \mbox{\hyperlink{classutl_1_1__1wire__i}{utl\+::\+\_\+1wire\+\_\+i}}$<$ impl\+\_\+t $>$\+::tx\+\_\+data (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}}}]{out, }\item[{\mbox{\hyperlink{classutl_1_1__1wire__i_a56bb736aa3620d7795b5914cac5f25cc}{Speed}}}]{s = {\ttfamily \mbox{\hyperlink{classutl_1_1__1wire__i_a56bb736aa3620d7795b5914cac5f25ccac6ce23be5d350ce18a665427d2d950f7}{Speed\+::\+S\+TD}}} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + +Transmit a byte to 1-\/\+Wire bus and read the response +\begin{DoxyParams}{Parameters} +{\em out} & The byte to write \\ +\hline +{\em s} & Bus speed to use \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +The byte received. +\end{DoxyReturn} + + +Definition at line 138 of file \+\_\+1wire.\+h. + +\mbox{\Hypertarget{classutl_1_1__1wire__i_ab3bd112ff66074bdaf7357b91ca692a8}\label{classutl_1_1__1wire__i_ab3bd112ff66074bdaf7357b91ca692a8}} +\index{utl\+::\+\_\+1wire\+\_\+i@{utl\+::\+\_\+1wire\+\_\+i}!tx\+\_\+data@{tx\+\_\+data}} +\index{tx\+\_\+data@{tx\+\_\+data}!utl\+::\+\_\+1wire\+\_\+i@{utl\+::\+\_\+1wire\+\_\+i}} +\subsubsection{\texorpdfstring{tx\+\_\+data()}{tx\_data()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename \+\_\+I $>$ \\ +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1__1wire__i}{utl\+::\+\_\+1wire\+\_\+i}}$<$ \+\_\+I $>$\+::tx\+\_\+data (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} $\ast$}]{out, }\item[{\mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} $\ast$}]{in, }\item[{\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}}}]{n, }\item[{\mbox{\hyperlink{classutl_1_1__1wire__i_a56bb736aa3620d7795b5914cac5f25cc}{Speed}}}]{s = {\ttfamily \mbox{\hyperlink{classutl_1_1__1wire__i_a56bb736aa3620d7795b5914cac5f25ccac6ce23be5d350ce18a665427d2d950f7}{Speed\+::\+S\+TD}}} }\end{DoxyParamCaption})} + +Transmit a number of bytes to 1-\/wire bus and read the response +\begin{DoxyParams}{Parameters} +{\em out} & Pointer to data to transmit \\ +\hline +{\em in} & Pointer to data to store \\ +\hline +{\em n} & Number of bytes \\ +\hline +{\em s} & Speed to use \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +The number of transmitted bytes +\end{DoxyReturn} + + +Definition at line 241 of file \+\_\+1wire.\+h. + + + +\subsection{Friends And Related Function Documentation} +\mbox{\Hypertarget{classutl_1_1__1wire__i_a05f0872f43d7b305269904d1522fa437}\label{classutl_1_1__1wire__i_a05f0872f43d7b305269904d1522fa437}} +\index{utl\+::\+\_\+1wire\+\_\+i@{utl\+::\+\_\+1wire\+\_\+i}!\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+first@{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+first}} +\index{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+first@{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+first}!utl\+::\+\_\+1wire\+\_\+i@{utl\+::\+\_\+1wire\+\_\+i}} +\subsubsection{\texorpdfstring{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+first}{\_1wire\_i\_det::\_first}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t$>$ \\ +template$<$typename \+\_\+T $>$ \\ +\mbox{\hyperlink{classutl_1_1__1wire__id__t}{\+\_\+1wire\+\_\+id\+\_\+t}} \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det_a237719ffa105f988cb175d6720712a4a}{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+first}} (\begin{DoxyParamCaption}\item[{\+\_\+T \&}]{, }\item[{typename \+\_\+\+T\+::\+Speed}]{, }\item[{bool}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [friend]}} + +\mbox{\Hypertarget{classutl_1_1__1wire__i_a6deca63bf5935ba3c3aa07f6ca23e33a}\label{classutl_1_1__1wire__i_a6deca63bf5935ba3c3aa07f6ca23e33a}} +\index{utl\+::\+\_\+1wire\+\_\+i@{utl\+::\+\_\+1wire\+\_\+i}!\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+match@{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+match}} +\index{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+match@{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+match}!utl\+::\+\_\+1wire\+\_\+i@{utl\+::\+\_\+1wire\+\_\+i}} +\subsubsection{\texorpdfstring{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+match}{\_1wire\_i\_det::\_match}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t$>$ \\ +template$<$typename \+\_\+T $>$ \\ +void \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det_a1b07e623a39ce82f1514846169f3a954}{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+match}} (\begin{DoxyParamCaption}\item[{\+\_\+T \&}]{obj, }\item[{\mbox{\hyperlink{classutl_1_1__1wire__id__t}{\+\_\+1wire\+\_\+id\+\_\+t}} \&}]{id, }\item[{typename \+\_\+\+T\+::\+Speed}]{s }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [friend]}} + +\mbox{\Hypertarget{classutl_1_1__1wire__i_a6b70d3457970aa791dd68e20800b6d0d}\label{classutl_1_1__1wire__i_a6b70d3457970aa791dd68e20800b6d0d}} +\index{utl\+::\+\_\+1wire\+\_\+i@{utl\+::\+\_\+1wire\+\_\+i}!\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+match\+\_\+n\+\_\+ovdr@{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+match\+\_\+n\+\_\+ovdr}} +\index{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+match\+\_\+n\+\_\+ovdr@{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+match\+\_\+n\+\_\+ovdr}!utl\+::\+\_\+1wire\+\_\+i@{utl\+::\+\_\+1wire\+\_\+i}} +\subsubsection{\texorpdfstring{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+match\+\_\+n\+\_\+ovdr}{\_1wire\_i\_det::\_match\_n\_ovdr}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t$>$ \\ +template$<$typename \+\_\+T $>$ \\ +void \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det_a1e14f734d5e232c914be6ea97982aa40}{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+match\+\_\+n\+\_\+ovdr}} (\begin{DoxyParamCaption}\item[{\+\_\+T \&}]{obj, }\item[{\mbox{\hyperlink{classutl_1_1__1wire__id__t}{\+\_\+1wire\+\_\+id\+\_\+t}} \&}]{id }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [friend]}} + +\mbox{\Hypertarget{classutl_1_1__1wire__i_af9a6a28b49cd3f51736f7c1f8e67327a}\label{classutl_1_1__1wire__i_af9a6a28b49cd3f51736f7c1f8e67327a}} +\index{utl\+::\+\_\+1wire\+\_\+i@{utl\+::\+\_\+1wire\+\_\+i}!\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+next@{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+next}} +\index{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+next@{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+next}!utl\+::\+\_\+1wire\+\_\+i@{utl\+::\+\_\+1wire\+\_\+i}} +\subsubsection{\texorpdfstring{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+next}{\_1wire\_i\_det::\_next}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t$>$ \\ +template$<$typename \+\_\+T $>$ \\ +\mbox{\hyperlink{classutl_1_1__1wire__id__t}{\+\_\+1wire\+\_\+id\+\_\+t}} \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det_a1f7b692a40769ebe59343613b147e01d}{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+next}} (\begin{DoxyParamCaption}\item[{\+\_\+T \&}]{, }\item[{typename \+\_\+\+T\+::\+Speed}]{, }\item[{bool}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [friend]}} + +\mbox{\Hypertarget{classutl_1_1__1wire__i_a9041b1220dfa52b4f4b161b718c3d33a}\label{classutl_1_1__1wire__i_a9041b1220dfa52b4f4b161b718c3d33a}} +\index{utl\+::\+\_\+1wire\+\_\+i@{utl\+::\+\_\+1wire\+\_\+i}!\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+skip@{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+skip}} +\index{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+skip@{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+skip}!utl\+::\+\_\+1wire\+\_\+i@{utl\+::\+\_\+1wire\+\_\+i}} +\subsubsection{\texorpdfstring{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+skip}{\_1wire\_i\_det::\_skip}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t$>$ \\ +template$<$typename \+\_\+T $>$ \\ +void \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det_a9ea80f4ef2422a7fd71788c42b228053}{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+skip}} (\begin{DoxyParamCaption}\item[{\+\_\+T \&}]{obj, }\item[{typename \+\_\+\+T\+::\+Speed}]{s }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [friend]}} + +\mbox{\Hypertarget{classutl_1_1__1wire__i_af4dfbd90b0d5606f1f2e515d38a43d66}\label{classutl_1_1__1wire__i_af4dfbd90b0d5606f1f2e515d38a43d66}} +\index{utl\+::\+\_\+1wire\+\_\+i@{utl\+::\+\_\+1wire\+\_\+i}!\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+skip\+\_\+n\+\_\+ovdr@{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+skip\+\_\+n\+\_\+ovdr}} +\index{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+skip\+\_\+n\+\_\+ovdr@{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+skip\+\_\+n\+\_\+ovdr}!utl\+::\+\_\+1wire\+\_\+i@{utl\+::\+\_\+1wire\+\_\+i}} +\subsubsection{\texorpdfstring{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+skip\+\_\+n\+\_\+ovdr}{\_1wire\_i\_det::\_skip\_n\_ovdr}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t$>$ \\ +template$<$typename \+\_\+T $>$ \\ +void \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det_ace224a4d329166bfd9f3448e492baf2b}{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+skip\+\_\+n\+\_\+ovdr}} (\begin{DoxyParamCaption}\item[{\+\_\+T \&}]{obj }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [friend]}} + +\mbox{\Hypertarget{classutl_1_1__1wire__i_aedee6f129425833a172784ec3c6e21e9}\label{classutl_1_1__1wire__i_aedee6f129425833a172784ec3c6e21e9}} +\index{utl\+::\+\_\+1wire\+\_\+i@{utl\+::\+\_\+1wire\+\_\+i}!\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+touch@{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+touch}} +\index{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+touch@{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+touch}!utl\+::\+\_\+1wire\+\_\+i@{utl\+::\+\_\+1wire\+\_\+i}} +\subsubsection{\texorpdfstring{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+touch}{\_1wire\_i\_det::\_touch}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t$>$ \\ +template$<$typename \+\_\+T $>$ \\ +\mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det_a85a3a19778edb037f6341f37135a5494}{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+touch}} (\begin{DoxyParamCaption}\item[{\+\_\+T \&}]{, }\item[{\mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}}}]{, }\item[{typename \+\_\+\+T\+::\+Speed}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [friend]}} + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/com/\mbox{\hyperlink{__1wire_8h}{\+\_\+1wire.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classutl_1_1__1wire__i_3_01virtual__tag_01_4.eps b/doc/latex/classutl_1_1__1wire__i_3_01virtual__tag_01_4.eps new file mode 100644 index 0000000..e45924f --- /dev/null +++ b/doc/latex/classutl_1_1__1wire__i_3_01virtual__tag_01_4.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 201.005025 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.487500 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::_1wire_i< virtual_tag >) cw +(utl::_1wire_uart_i< virtual_tag >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::_1wire_i< virtual_tag >) 0.000000 1.000000 box + (utl::_1wire_uart_i< virtual_tag >) 0.000000 0.000000 box + +% ----- relations ----- + +solid +1 0.000000 0.250000 out +solid +0 0.000000 0.750000 in diff --git a/doc/latex/classutl_1_1__1wire__i_3_01virtual__tag_01_4.tex b/doc/latex/classutl_1_1__1wire__i_3_01virtual__tag_01_4.tex new file mode 100644 index 0000000..30d9186 --- /dev/null +++ b/doc/latex/classutl_1_1__1wire__i_3_01virtual__tag_01_4.tex @@ -0,0 +1,456 @@ +\hypertarget{classutl_1_1__1wire__i_3_01virtual__tag_01_4}{}\section{utl\+:\+:\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$ Class Template Reference} +\label{classutl_1_1__1wire__i_3_01virtual__tag_01_4}\index{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}} + + +A virtual base class implementation. + + + + +{\ttfamily \#include $<$\+\_\+1wire.\+h$>$} + +Inheritance diagram for utl\+:\+:\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{classutl_1_1__1wire__i_3_01virtual__tag_01_4} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +enum \mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a2abb8c6344d17269c55ae0cba63ec512}{Speed}} \{ \mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a2abb8c6344d17269c55ae0cba63ec512ac6ce23be5d350ce18a665427d2d950f7}{Speed\+::\+S\+TD}} =0, +\mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a2abb8c6344d17269c55ae0cba63ec512a1cbf38b04c4249d8ec27d1ec96aaff68}{Speed\+::\+O\+V\+DR}} + \} +\begin{DoxyCompactList}\small\item\em 1-\/wire bus speed \end{DoxyCompactList}\item +using \mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a1b2fa0f5a2946723cd29e689bd38359d}{type}} = \mbox{\hyperlink{classutl_1_1__1wire__i}{\+\_\+1wire\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$ +\begin{DoxyCompactList}\small\item\em Export type as identity meta-\/function. \end{DoxyCompactList}\end{DoxyCompactItemize} +\subsection*{Public Member Functions} +\begin{Indent}\textbf{ User functionality provided by the interface}\par +\begin{DoxyCompactItemize} +\item +bool \mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a735ed5cb622a1478c57537c131ede7a7}{reset}} (\mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a2abb8c6344d17269c55ae0cba63ec512}{Speed}} s=Speed\+::\+S\+TD) +\begin{DoxyCompactList}\small\item\em Generate a 1-\/wire reset. \end{DoxyCompactList}\item +\mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} \mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a9fbf69bafc3b697d3cf5ab09055540c8}{tx\+\_\+data}} (\mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} out, \mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a2abb8c6344d17269c55ae0cba63ec512}{Speed}} s=Speed\+::\+S\+TD) +\item +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a2fe8eabe2f67410123913b240f039b33}{tx\+\_\+data}} (const \mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} $\ast$out, \mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} $\ast$in, \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} n, \mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a2abb8c6344d17269c55ae0cba63ec512}{Speed}} s=Speed\+::\+S\+TD) +\item +\mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} \mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a525b58c7a1110d39f1eb594f12edb16c}{rx\+\_\+data}} (\mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a2abb8c6344d17269c55ae0cba63ec512}{Speed}} s=Speed\+::\+S\+TD) +\item +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a5f3c707157c571d07a8a3d882900de95}{rx\+\_\+data}} (\mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} $\ast$in, \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} n, \mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a2abb8c6344d17269c55ae0cba63ec512}{Speed}} s=Speed\+::\+S\+TD) +\item +void \mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_ac9c4e6123eee9b0af8d94fc8b22af04a}{match}} (\mbox{\hyperlink{classutl_1_1__1wire__id__t}{\+\_\+1wire\+\_\+id\+\_\+t}} \&id, \mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a2abb8c6344d17269c55ae0cba63ec512}{Speed}} s=Speed\+::\+S\+TD) +\item +void \mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a9a3e64459e7fddc89d160a3a379552b6}{match\+\_\+n\+\_\+ovdr}} (\mbox{\hyperlink{classutl_1_1__1wire__id__t}{\+\_\+1wire\+\_\+id\+\_\+t}} \&id) +\item +void \mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_ad480b5053884e51e8089cdc691017e4d}{skip}} (\mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a2abb8c6344d17269c55ae0cba63ec512}{Speed}} s=Speed\+::\+S\+TD) +\item +void \mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a8d45e55f347c35e77ec55b905516f8fd}{skip\+\_\+n\+\_\+ovdr}} () +\item +\mbox{\hyperlink{classutl_1_1__1wire__id__t}{\+\_\+1wire\+\_\+id\+\_\+t}} \mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a0fb2e35eb9c244640014f69808ae2758}{first}} (\mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a2abb8c6344d17269c55ae0cba63ec512}{Speed}} s=Speed\+::\+S\+TD, bool alarm=false) +\begin{DoxyCompactList}\small\item\em \textquotesingle{}first\textquotesingle{} operation, to search on the 1-\/\+Wire for the first device. This is performed by setting dec\+\_\+, pos\+\_\+ and cur\+\_\+ to zero and then doing the search. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1__1wire__id__t}{\+\_\+1wire\+\_\+id\+\_\+t}} \mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a6a3b511a6f7c20bae1e8c7af9f50a0ff}{next}} (\mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a2abb8c6344d17269c55ae0cba63ec512}{Speed}} s=Speed\+::\+S\+TD, bool alarm=false) +\begin{DoxyCompactList}\small\item\em \textquotesingle{}next\textquotesingle{} operation, to search on the 1-\/\+Wire for the next device. This search is usually performed after a \textquotesingle{}first\textquotesingle{} operation or another \textquotesingle{}next\textquotesingle{} operation. Based on maxim-\/ic application note 187. \end{DoxyCompactList}\end{DoxyCompactItemize} +\end{Indent} +\subsection*{Object lifetime} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a21dfe2ba7060c3a8617ced1f841bddaf}{\+\_\+1wire\+\_\+i}} ()=default +\begin{DoxyCompactList}\small\item\em Allow constructor from derived only. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a8f60bc0402c885a3409ba0d53239510f}{\+\_\+1wire\+\_\+i}} (const \mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a1b2fa0f5a2946723cd29e689bd38359d}{type}} \&)=delete +\begin{DoxyCompactList}\small\item\em No copies. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a1b2fa0f5a2946723cd29e689bd38359d}{type}} \& \mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a3e2e3e5f3727eaa9fdf152ae7098c7be}{operator=}} (const \mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a1b2fa0f5a2946723cd29e689bd38359d}{type}} \&)=delete +\item +virtual \mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_af1e2fea1b65ea57f4331c9dbc43e4bbf}{$\sim$\+\_\+1wire\+\_\+i}} ()=default +\end{DoxyCompactItemize} +\subsection*{Friends api to provide functionality to all class specializations} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename \+\_\+T $>$ }\\\mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} \mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_aedee6f129425833a172784ec3c6e21e9}{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+touch}} (\+\_\+T \&, \mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}}, typename \+\_\+\+T\+::\+Speed) +\item +{\footnotesize template$<$typename \+\_\+T $>$ }\\void \mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a6deca63bf5935ba3c3aa07f6ca23e33a}{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+match}} (\+\_\+T \&obj, \mbox{\hyperlink{classutl_1_1__1wire__id__t}{\+\_\+1wire\+\_\+id\+\_\+t}} \&id, typename \+\_\+\+T\+::\+Speed s) +\item +{\footnotesize template$<$typename \+\_\+T $>$ }\\void \mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a6b70d3457970aa791dd68e20800b6d0d}{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+match\+\_\+n\+\_\+ovdr}} (\+\_\+T \&obj, \mbox{\hyperlink{classutl_1_1__1wire__id__t}{\+\_\+1wire\+\_\+id\+\_\+t}} \&id) +\item +{\footnotesize template$<$typename \+\_\+T $>$ }\\void \mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a9041b1220dfa52b4f4b161b718c3d33a}{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+skip}} (\+\_\+T \&obj, typename \+\_\+\+T\+::\+Speed s) +\item +{\footnotesize template$<$typename \+\_\+T $>$ }\\void \mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_af4dfbd90b0d5606f1f2e515d38a43d66}{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+skip\+\_\+n\+\_\+ovdr}} (\+\_\+T \&obj) +\item +{\footnotesize template$<$typename \+\_\+T $>$ }\\\mbox{\hyperlink{classutl_1_1__1wire__id__t}{\+\_\+1wire\+\_\+id\+\_\+t}} \mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a05f0872f43d7b305269904d1522fa437}{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+first}} (\+\_\+T \&, typename \+\_\+\+T\+::\+Speed, bool) +\item +{\footnotesize template$<$typename \+\_\+T $>$ }\\\mbox{\hyperlink{classutl_1_1__1wire__id__t}{\+\_\+1wire\+\_\+id\+\_\+t}} \mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_af9a6a28b49cd3f51736f7c1f8e67327a}{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+next}} (\+\_\+T \&, typename \+\_\+\+T\+::\+Speed, bool) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$$>$\newline +class utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$} + +A virtual base class implementation. + + +\begin{DoxyParams}{Parameters} +{\em impl\+\_\+t} & = \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} \\ +\hline +\end{DoxyParams} + + +Definition at line 260 of file \+\_\+1wire.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a1b2fa0f5a2946723cd29e689bd38359d}\label{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a1b2fa0f5a2946723cd29e689bd38359d}} +\index{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}!type@{type}} +\index{type@{type}!utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily using \mbox{\hyperlink{classutl_1_1__1wire__i}{utl\+::\+\_\+1wire\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$\+::\mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a1b2fa0f5a2946723cd29e689bd38359d}{type}} = \mbox{\hyperlink{classutl_1_1__1wire__i}{\+\_\+1wire\+\_\+i}}$<$\mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}$>$} + + + +Export type as identity meta-\/function. + + + +Definition at line 262 of file \+\_\+1wire.\+h. + + + +\subsection{Member Enumeration Documentation} +\mbox{\Hypertarget{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a2abb8c6344d17269c55ae0cba63ec512}\label{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a2abb8c6344d17269c55ae0cba63ec512}} +\index{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}!Speed@{Speed}} +\index{Speed@{Speed}!utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{Speed}{Speed}} +{\footnotesize\ttfamily enum \mbox{\hyperlink{classutl_1_1__1wire__i}{utl\+::\+\_\+1wire\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$\+::\mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a2abb8c6344d17269c55ae0cba63ec512}{Speed}}\hspace{0.3cm}{\ttfamily [strong]}} + + + +1-\/wire bus speed + +\begin{DoxyEnumFields}{Enumerator} +\raisebox{\heightof{T}}[0pt][0pt]{\index{S\+TD@{S\+TD}!utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}}\index{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}!S\+TD@{S\+TD}}}\mbox{\Hypertarget{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a2abb8c6344d17269c55ae0cba63ec512ac6ce23be5d350ce18a665427d2d950f7}\label{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a2abb8c6344d17269c55ae0cba63ec512ac6ce23be5d350ce18a665427d2d950f7}} +S\+TD&\\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{O\+V\+DR@{O\+V\+DR}!utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}}\index{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}!O\+V\+DR@{O\+V\+DR}}}\mbox{\Hypertarget{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a2abb8c6344d17269c55ae0cba63ec512a1cbf38b04c4249d8ec27d1ec96aaff68}\label{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a2abb8c6344d17269c55ae0cba63ec512a1cbf38b04c4249d8ec27d1ec96aaff68}} +O\+V\+DR&\\ +\hline + +\end{DoxyEnumFields} + + +Definition at line 265 of file \+\_\+1wire.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a21dfe2ba7060c3a8617ced1f841bddaf}\label{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a21dfe2ba7060c3a8617ced1f841bddaf}} +\index{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}!\+\_\+1wire\+\_\+i@{\+\_\+1wire\+\_\+i}} +\index{\+\_\+1wire\+\_\+i@{\+\_\+1wire\+\_\+i}!utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{\+\_\+1wire\+\_\+i()}{\_1wire\_i()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily \mbox{\hyperlink{classutl_1_1__1wire__i}{utl\+::\+\_\+1wire\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$\+::\mbox{\hyperlink{classutl_1_1__1wire__i}{\+\_\+1wire\+\_\+i}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [default]}} + + + +Allow constructor from derived only. + +\mbox{\Hypertarget{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a8f60bc0402c885a3409ba0d53239510f}\label{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a8f60bc0402c885a3409ba0d53239510f}} +\index{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}!\+\_\+1wire\+\_\+i@{\+\_\+1wire\+\_\+i}} +\index{\+\_\+1wire\+\_\+i@{\+\_\+1wire\+\_\+i}!utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{\+\_\+1wire\+\_\+i()}{\_1wire\_i()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily \mbox{\hyperlink{classutl_1_1__1wire__i}{utl\+::\+\_\+1wire\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$\+::\mbox{\hyperlink{classutl_1_1__1wire__i}{\+\_\+1wire\+\_\+i}} (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a1b2fa0f5a2946723cd29e689bd38359d}{type}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [delete]}} + + + +No copies. + +\mbox{\Hypertarget{classutl_1_1__1wire__i_3_01virtual__tag_01_4_af1e2fea1b65ea57f4331c9dbc43e4bbf}\label{classutl_1_1__1wire__i_3_01virtual__tag_01_4_af1e2fea1b65ea57f4331c9dbc43e4bbf}} +\index{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}!````~\+\_\+1wire\+\_\+i@{$\sim$\+\_\+1wire\+\_\+i}} +\index{````~\+\_\+1wire\+\_\+i@{$\sim$\+\_\+1wire\+\_\+i}!utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{$\sim$\+\_\+1wire\+\_\+i()}{~\_1wire\_i()}} +{\footnotesize\ttfamily virtual \mbox{\hyperlink{classutl_1_1__1wire__i}{utl\+::\+\_\+1wire\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$\+::$\sim$\mbox{\hyperlink{classutl_1_1__1wire__i}{\+\_\+1wire\+\_\+i}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}, {\ttfamily [default]}} + +Virtual default destructor + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a0fb2e35eb9c244640014f69808ae2758}\label{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a0fb2e35eb9c244640014f69808ae2758}} +\index{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}!first@{first}} +\index{first@{first}!utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{first()}{first()}} +{\footnotesize\ttfamily \mbox{\hyperlink{classutl_1_1__1wire__id__t}{\+\_\+1wire\+\_\+id\+\_\+t}} \mbox{\hyperlink{classutl_1_1__1wire__i}{utl\+::\+\_\+1wire\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$\+::first (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a2abb8c6344d17269c55ae0cba63ec512}{Speed}}}]{s = {\ttfamily Speed\+:\+:STD}, }\item[{bool}]{alarm = {\ttfamily false} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +\textquotesingle{}first\textquotesingle{} operation, to search on the 1-\/\+Wire for the first device. This is performed by setting dec\+\_\+, pos\+\_\+ and cur\+\_\+ to zero and then doing the search. + + +\begin{DoxyParams}{Parameters} +{\em s} & The bus speed \\ +\hline +{\em alarm} & If set, search for alarm devices \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +ID The rom\+ID \begin{DoxyItemize} +\item null\+Dev Indicate no \mbox{[}more\mbox{]} device\mbox{[}s\mbox{]} \end{DoxyItemize} + +\end{DoxyReturn} + + +Definition at line 406 of file \+\_\+1wire.\+h. + +\mbox{\Hypertarget{classutl_1_1__1wire__i_3_01virtual__tag_01_4_ac9c4e6123eee9b0af8d94fc8b22af04a}\label{classutl_1_1__1wire__i_3_01virtual__tag_01_4_ac9c4e6123eee9b0af8d94fc8b22af04a}} +\index{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}!match@{match}} +\index{match@{match}!utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{match()}{match()}} +{\footnotesize\ttfamily void \mbox{\hyperlink{classutl_1_1__1wire__i}{utl\+::\+\_\+1wire\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$\+::match (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classutl_1_1__1wire__id__t}{\+\_\+1wire\+\_\+id\+\_\+t}} \&}]{id, }\item[{\mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a2abb8c6344d17269c55ae0cba63ec512}{Speed}}}]{s = {\ttfamily Speed\+:\+:STD} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + +Send match rom command +\begin{DoxyParams}{Parameters} +{\em id} & The ID to select on the bus \\ +\hline +{\em s} & The speed to use for the command \\ +\hline +\end{DoxyParams} + + +Definition at line 372 of file \+\_\+1wire.\+h. + +\mbox{\Hypertarget{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a9a3e64459e7fddc89d160a3a379552b6}\label{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a9a3e64459e7fddc89d160a3a379552b6}} +\index{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}!match\+\_\+n\+\_\+ovdr@{match\+\_\+n\+\_\+ovdr}} +\index{match\+\_\+n\+\_\+ovdr@{match\+\_\+n\+\_\+ovdr}!utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{match\+\_\+n\+\_\+ovdr()}{match\_n\_ovdr()}} +{\footnotesize\ttfamily void \mbox{\hyperlink{classutl_1_1__1wire__i}{utl\+::\+\_\+1wire\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$\+::match\+\_\+n\+\_\+ovdr (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classutl_1_1__1wire__id__t}{\+\_\+1wire\+\_\+id\+\_\+t}} \&}]{id }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + +Match and overdrive sequence +\begin{DoxyParams}{Parameters} +{\em obj} & The object from which we call private members \\ +\hline +{\em id} & The ID to select on the bus \\ +\hline +\end{DoxyParams} + + +Definition at line 380 of file \+\_\+1wire.\+h. + +\mbox{\Hypertarget{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a6a3b511a6f7c20bae1e8c7af9f50a0ff}\label{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a6a3b511a6f7c20bae1e8c7af9f50a0ff}} +\index{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}!next@{next}} +\index{next@{next}!utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{next()}{next()}} +{\footnotesize\ttfamily \mbox{\hyperlink{classutl_1_1__1wire__id__t}{\+\_\+1wire\+\_\+id\+\_\+t}} \mbox{\hyperlink{classutl_1_1__1wire__i}{utl\+::\+\_\+1wire\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$\+::next (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a2abb8c6344d17269c55ae0cba63ec512}{Speed}}}]{s = {\ttfamily Speed\+:\+:STD}, }\item[{bool}]{alarm = {\ttfamily false} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +\textquotesingle{}next\textquotesingle{} operation, to search on the 1-\/\+Wire for the next device. This search is usually performed after a \textquotesingle{}first\textquotesingle{} operation or another \textquotesingle{}next\textquotesingle{} operation. Based on maxim-\/ic application note 187. + + +\begin{DoxyParams}{Parameters} +{\em s} & The bus speed \\ +\hline +{\em alarm} & If set, search for alarm devices \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +ID The rom\+ID \begin{DoxyItemize} +\item null\+Dev Indicate no \mbox{[}more\mbox{]} device\mbox{[}s\mbox{]} \end{DoxyItemize} + +\end{DoxyReturn} + + +Definition at line 419 of file \+\_\+1wire.\+h. + +\mbox{\Hypertarget{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a3e2e3e5f3727eaa9fdf152ae7098c7be}\label{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a3e2e3e5f3727eaa9fdf152ae7098c7be}} +\index{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}!operator=@{operator=}} +\index{operator=@{operator=}!utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{operator=()}{operator=()}} +{\footnotesize\ttfamily \mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a1b2fa0f5a2946723cd29e689bd38359d}{type}}\& \mbox{\hyperlink{classutl_1_1__1wire__i}{utl\+::\+\_\+1wire\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$\+::operator= (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a1b2fa0f5a2946723cd29e689bd38359d}{type}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [delete]}} + +\mbox{\Hypertarget{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a735ed5cb622a1478c57537c131ede7a7}\label{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a735ed5cb622a1478c57537c131ede7a7}} +\index{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}!reset@{reset}} +\index{reset@{reset}!utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{reset()}{reset()}} +{\footnotesize\ttfamily bool \mbox{\hyperlink{classutl_1_1__1wire__i}{utl\+::\+\_\+1wire\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$\+::reset (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a2abb8c6344d17269c55ae0cba63ec512}{Speed}}}]{s = {\ttfamily Speed\+:\+:STD} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Generate a 1-\/wire reset. + + +\begin{DoxyParams}{Parameters} +{\em s} & Bus speed \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +The status of the operation \begin{DoxyItemize} +\item 0 Fail \item 1 Success \end{DoxyItemize} + +\end{DoxyReturn} + + +Definition at line 327 of file \+\_\+1wire.\+h. + +\mbox{\Hypertarget{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a525b58c7a1110d39f1eb594f12edb16c}\label{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a525b58c7a1110d39f1eb594f12edb16c}} +\index{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}!rx\+\_\+data@{rx\+\_\+data}} +\index{rx\+\_\+data@{rx\+\_\+data}!utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{rx\+\_\+data()}{rx\_data()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily \mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} \mbox{\hyperlink{classutl_1_1__1wire__i}{utl\+::\+\_\+1wire\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$\+::rx\+\_\+data (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a2abb8c6344d17269c55ae0cba63ec512}{Speed}}}]{s = {\ttfamily Speed\+:\+:STD} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + +Receive a byte from 1-\/\+Wire bus while transmitting 0x\+FF +\begin{DoxyParams}{Parameters} +{\em s} & Bus speed to use \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +The byte received. +\end{DoxyReturn} + + +Definition at line 355 of file \+\_\+1wire.\+h. + +\mbox{\Hypertarget{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a5f3c707157c571d07a8a3d882900de95}\label{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a5f3c707157c571d07a8a3d882900de95}} +\index{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}!rx\+\_\+data@{rx\+\_\+data}} +\index{rx\+\_\+data@{rx\+\_\+data}!utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{rx\+\_\+data()}{rx\_data()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1__1wire__i}{utl\+::\+\_\+1wire\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$\+::rx\+\_\+data (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} $\ast$}]{in, }\item[{\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}}}]{n, }\item[{\mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a2abb8c6344d17269c55ae0cba63ec512}{Speed}}}]{s = {\ttfamily Speed\+:\+:STD} }\end{DoxyParamCaption})} + +Receive a number of bytes from 1-\/wire bus while transmitting 0x\+F\+Fs +\begin{DoxyParams}{Parameters} +{\em in} & Pointer to data to store \\ +\hline +{\em n} & Number of bytes \\ +\hline +{\em s} & Speed to use \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +The number of transmitted bytes +\end{DoxyReturn} + + +Definition at line 446 of file \+\_\+1wire.\+h. + +\mbox{\Hypertarget{classutl_1_1__1wire__i_3_01virtual__tag_01_4_ad480b5053884e51e8089cdc691017e4d}\label{classutl_1_1__1wire__i_3_01virtual__tag_01_4_ad480b5053884e51e8089cdc691017e4d}} +\index{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}!skip@{skip}} +\index{skip@{skip}!utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{skip()}{skip()}} +{\footnotesize\ttfamily void \mbox{\hyperlink{classutl_1_1__1wire__i}{utl\+::\+\_\+1wire\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$\+::skip (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a2abb8c6344d17269c55ae0cba63ec512}{Speed}}}]{s = {\ttfamily Speed\+:\+:STD} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + +Send skip command to the bus +\begin{DoxyParams}{Parameters} +{\em id} & The ID to select on the bus \\ +\hline +\end{DoxyParams} + + +Definition at line 387 of file \+\_\+1wire.\+h. + +\mbox{\Hypertarget{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a8d45e55f347c35e77ec55b905516f8fd}\label{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a8d45e55f347c35e77ec55b905516f8fd}} +\index{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}!skip\+\_\+n\+\_\+ovdr@{skip\+\_\+n\+\_\+ovdr}} +\index{skip\+\_\+n\+\_\+ovdr@{skip\+\_\+n\+\_\+ovdr}!utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{skip\+\_\+n\+\_\+ovdr()}{skip\_n\_ovdr()}} +{\footnotesize\ttfamily void \mbox{\hyperlink{classutl_1_1__1wire__i}{utl\+::\+\_\+1wire\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$\+::skip\+\_\+n\+\_\+ovdr (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + +Send the Skip and Overdrive sequence + +Definition at line 393 of file \+\_\+1wire.\+h. + +\mbox{\Hypertarget{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a9fbf69bafc3b697d3cf5ab09055540c8}\label{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a9fbf69bafc3b697d3cf5ab09055540c8}} +\index{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}!tx\+\_\+data@{tx\+\_\+data}} +\index{tx\+\_\+data@{tx\+\_\+data}!utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{tx\+\_\+data()}{tx\_data()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily \mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} \mbox{\hyperlink{classutl_1_1__1wire__i}{utl\+::\+\_\+1wire\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$\+::tx\+\_\+data (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}}}]{out, }\item[{\mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a2abb8c6344d17269c55ae0cba63ec512}{Speed}}}]{s = {\ttfamily Speed\+:\+:STD} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + +Transmit a byte to 1-\/\+Wire bus and read the response +\begin{DoxyParams}{Parameters} +{\em out} & The byte to write \\ +\hline +{\em s} & Bus speed to use \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +The byte received. +\end{DoxyReturn} + + +Definition at line 337 of file \+\_\+1wire.\+h. + +\mbox{\Hypertarget{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a2fe8eabe2f67410123913b240f039b33}\label{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a2fe8eabe2f67410123913b240f039b33}} +\index{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}!tx\+\_\+data@{tx\+\_\+data}} +\index{tx\+\_\+data@{tx\+\_\+data}!utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{tx\+\_\+data()}{tx\_data()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1__1wire__i}{utl\+::\+\_\+1wire\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$\+::tx\+\_\+data (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} $\ast$}]{out, }\item[{\mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} $\ast$}]{in, }\item[{\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}}}]{n, }\item[{\mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a2abb8c6344d17269c55ae0cba63ec512}{Speed}}}]{s = {\ttfamily Speed\+:\+:STD} }\end{DoxyParamCaption})} + +Transmit a number of bytes to 1-\/wire bus and read the response +\begin{DoxyParams}{Parameters} +{\em out} & Pointer to data to transmit \\ +\hline +{\em in} & Pointer to data to store \\ +\hline +{\em n} & Number of bytes \\ +\hline +{\em s} & Speed to use \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +The number of transmitted bytes +\end{DoxyReturn} + + +Definition at line 440 of file \+\_\+1wire.\+h. + + + +\subsection{Friends And Related Function Documentation} +\mbox{\Hypertarget{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a05f0872f43d7b305269904d1522fa437}\label{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a05f0872f43d7b305269904d1522fa437}} +\index{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}!\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+first@{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+first}} +\index{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+first@{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+first}!utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+first}{\_1wire\_i\_det::\_first}} +{\footnotesize\ttfamily template$<$typename \+\_\+T $>$ \\ +\mbox{\hyperlink{classutl_1_1__1wire__id__t}{\+\_\+1wire\+\_\+id\+\_\+t}} \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det_a237719ffa105f988cb175d6720712a4a}{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+first}} (\begin{DoxyParamCaption}\item[{\+\_\+T \&}]{, }\item[{typename \+\_\+\+T\+::\+Speed}]{, }\item[{bool}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [friend]}} + +\mbox{\Hypertarget{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a6deca63bf5935ba3c3aa07f6ca23e33a}\label{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a6deca63bf5935ba3c3aa07f6ca23e33a}} +\index{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}!\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+match@{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+match}} +\index{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+match@{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+match}!utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+match}{\_1wire\_i\_det::\_match}} +{\footnotesize\ttfamily template$<$typename \+\_\+T $>$ \\ +void \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det_a1b07e623a39ce82f1514846169f3a954}{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+match}} (\begin{DoxyParamCaption}\item[{\+\_\+T \&}]{obj, }\item[{\mbox{\hyperlink{classutl_1_1__1wire__id__t}{\+\_\+1wire\+\_\+id\+\_\+t}} \&}]{id, }\item[{typename \+\_\+\+T\+::\+Speed}]{s }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [friend]}} + +\mbox{\Hypertarget{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a6b70d3457970aa791dd68e20800b6d0d}\label{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a6b70d3457970aa791dd68e20800b6d0d}} +\index{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}!\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+match\+\_\+n\+\_\+ovdr@{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+match\+\_\+n\+\_\+ovdr}} +\index{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+match\+\_\+n\+\_\+ovdr@{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+match\+\_\+n\+\_\+ovdr}!utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+match\+\_\+n\+\_\+ovdr}{\_1wire\_i\_det::\_match\_n\_ovdr}} +{\footnotesize\ttfamily template$<$typename \+\_\+T $>$ \\ +void \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det_a1e14f734d5e232c914be6ea97982aa40}{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+match\+\_\+n\+\_\+ovdr}} (\begin{DoxyParamCaption}\item[{\+\_\+T \&}]{obj, }\item[{\mbox{\hyperlink{classutl_1_1__1wire__id__t}{\+\_\+1wire\+\_\+id\+\_\+t}} \&}]{id }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [friend]}} + +\mbox{\Hypertarget{classutl_1_1__1wire__i_3_01virtual__tag_01_4_af9a6a28b49cd3f51736f7c1f8e67327a}\label{classutl_1_1__1wire__i_3_01virtual__tag_01_4_af9a6a28b49cd3f51736f7c1f8e67327a}} +\index{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}!\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+next@{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+next}} +\index{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+next@{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+next}!utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+next}{\_1wire\_i\_det::\_next}} +{\footnotesize\ttfamily template$<$typename \+\_\+T $>$ \\ +\mbox{\hyperlink{classutl_1_1__1wire__id__t}{\+\_\+1wire\+\_\+id\+\_\+t}} \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det_a1f7b692a40769ebe59343613b147e01d}{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+next}} (\begin{DoxyParamCaption}\item[{\+\_\+T \&}]{, }\item[{typename \+\_\+\+T\+::\+Speed}]{, }\item[{bool}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [friend]}} + +\mbox{\Hypertarget{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a9041b1220dfa52b4f4b161b718c3d33a}\label{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a9041b1220dfa52b4f4b161b718c3d33a}} +\index{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}!\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+skip@{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+skip}} +\index{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+skip@{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+skip}!utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+skip}{\_1wire\_i\_det::\_skip}} +{\footnotesize\ttfamily template$<$typename \+\_\+T $>$ \\ +void \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det_a9ea80f4ef2422a7fd71788c42b228053}{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+skip}} (\begin{DoxyParamCaption}\item[{\+\_\+T \&}]{obj, }\item[{typename \+\_\+\+T\+::\+Speed}]{s }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [friend]}} + +\mbox{\Hypertarget{classutl_1_1__1wire__i_3_01virtual__tag_01_4_af4dfbd90b0d5606f1f2e515d38a43d66}\label{classutl_1_1__1wire__i_3_01virtual__tag_01_4_af4dfbd90b0d5606f1f2e515d38a43d66}} +\index{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}!\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+skip\+\_\+n\+\_\+ovdr@{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+skip\+\_\+n\+\_\+ovdr}} +\index{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+skip\+\_\+n\+\_\+ovdr@{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+skip\+\_\+n\+\_\+ovdr}!utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+skip\+\_\+n\+\_\+ovdr}{\_1wire\_i\_det::\_skip\_n\_ovdr}} +{\footnotesize\ttfamily template$<$typename \+\_\+T $>$ \\ +void \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det_ace224a4d329166bfd9f3448e492baf2b}{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+skip\+\_\+n\+\_\+ovdr}} (\begin{DoxyParamCaption}\item[{\+\_\+T \&}]{obj }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [friend]}} + +\mbox{\Hypertarget{classutl_1_1__1wire__i_3_01virtual__tag_01_4_aedee6f129425833a172784ec3c6e21e9}\label{classutl_1_1__1wire__i_3_01virtual__tag_01_4_aedee6f129425833a172784ec3c6e21e9}} +\index{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}!\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+touch@{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+touch}} +\index{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+touch@{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+touch}!utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+touch}{\_1wire\_i\_det::\_touch}} +{\footnotesize\ttfamily template$<$typename \+\_\+T $>$ \\ +\mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det_a85a3a19778edb037f6341f37135a5494}{\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+touch}} (\begin{DoxyParamCaption}\item[{\+\_\+T \&}]{, }\item[{\mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}}}]{, }\item[{typename \+\_\+\+T\+::\+Speed}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [friend]}} + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/com/\mbox{\hyperlink{__1wire_8h}{\+\_\+1wire.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classutl_1_1__1wire__id__t.eps b/doc/latex/classutl_1_1__1wire__id__t.eps new file mode 100644 index 0000000..8a6010b --- /dev/null +++ b/doc/latex/classutl_1_1__1wire__id__t.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 294.117647 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.700000 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::_1wire_id_t) cw +(utl::id_t< uint8_t, 8 >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::_1wire_id_t) 0.000000 0.000000 box + (utl::id_t< uint8_t, 8 >) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/classutl_1_1__1wire__id__t.tex b/doc/latex/classutl_1_1__1wire__id__t.tex new file mode 100644 index 0000000..9824a29 --- /dev/null +++ b/doc/latex/classutl_1_1__1wire__id__t.tex @@ -0,0 +1,155 @@ +\hypertarget{classutl_1_1__1wire__id__t}{}\section{utl\+:\+:\+\_\+1wire\+\_\+id\+\_\+t Class Reference} +\label{classutl_1_1__1wire__id__t}\index{utl\+::\+\_\+1wire\+\_\+id\+\_\+t@{utl\+::\+\_\+1wire\+\_\+id\+\_\+t}} + + +{\ttfamily \#include $<$\+\_\+1wire\+\_\+id.\+h$>$} + +Inheritance diagram for utl\+:\+:\+\_\+1wire\+\_\+id\+\_\+t\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{classutl_1_1__1wire__id__t} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{Indent}\textbf{ Constructors}\par +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classutl_1_1__1wire__id__t_a813f69adfff7bcdcba6b07bf52e3546e}{\+\_\+1wire\+\_\+id\+\_\+t}} () noexcept +\item +\mbox{\hyperlink{classutl_1_1__1wire__id__t_a042aa65cc13c6040f795c8198f5afc23}{\+\_\+1wire\+\_\+id\+\_\+t}} (const \mbox{\hyperlink{classutl_1_1__1wire__id__t}{\+\_\+1wire\+\_\+id\+\_\+t}} \&id) noexcept +\end{DoxyCompactItemize} +\end{Indent} +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +uint8\+\_\+t \& \mbox{\hyperlink{classutl_1_1__1wire__id__t_a03a112d8910c67611a3b302fe7c0706b}{crc8}} () noexcept +\item +const uint8\+\_\+t \& \mbox{\hyperlink{classutl_1_1__1wire__id__t_af3a0ea2c575f96ac01b0aac91166d767}{crc8}} () const noexcept +\end{DoxyCompactItemize} + +\subsection*{Static Public Member Functions} +\begin{DoxyCompactItemize} +\item +static int \mbox{\hyperlink{classutl_1_1__1wire__id__t_aef89950aeb9d40ca058fabcc5532e01d}{compare}} (const \mbox{\hyperlink{classutl_1_1__1wire__id__t}{\+\_\+1wire\+\_\+id\+\_\+t}} \&lhs, const \mbox{\hyperlink{classutl_1_1__1wire__id__t}{\+\_\+1wire\+\_\+id\+\_\+t}} \&rhs) noexcept +\begin{DoxyCompactList}\small\item\em Full compare two dev\+\_\+ids. \end{DoxyCompactList}\end{DoxyCompactItemize} +\subsection*{User functionality provided by the interface} +\begin{DoxyCompactItemize} +\item +uint8\+\_\+t \& \mbox{\hyperlink{classutl_1_1__1wire__id__t_adb30b65bcab59bdad980793377a8e52f}{family}} () noexcept +\item +const uint8\+\_\+t \& \mbox{\hyperlink{classutl_1_1__1wire__id__t_a6ed0d86d1fce0073776d83092a874b91}{family}} () const noexcept +\item +static constexpr const \mbox{\hyperlink{classutl_1_1__1wire__id__t}{\+\_\+1wire\+\_\+id\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1__1wire__id__t_adad08aa5ce38e1a87800de57a91db81b}{null\+Dev}} () +\begin{DoxyCompactList}\small\item\em Return null\+Dev reference. \end{DoxyCompactList}\end{DoxyCompactItemize} +\subsection*{Additional Inherited Members} + + +\subsection{Detailed Description} +1-\/wire Rom-\/\+ID type + +Definition at line 32 of file \+\_\+1wire\+\_\+id.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classutl_1_1__1wire__id__t_a813f69adfff7bcdcba6b07bf52e3546e}\label{classutl_1_1__1wire__id__t_a813f69adfff7bcdcba6b07bf52e3546e}} +\index{utl\+::\+\_\+1wire\+\_\+id\+\_\+t@{utl\+::\+\_\+1wire\+\_\+id\+\_\+t}!\+\_\+1wire\+\_\+id\+\_\+t@{\+\_\+1wire\+\_\+id\+\_\+t}} +\index{\+\_\+1wire\+\_\+id\+\_\+t@{\+\_\+1wire\+\_\+id\+\_\+t}!utl\+::\+\_\+1wire\+\_\+id\+\_\+t@{utl\+::\+\_\+1wire\+\_\+id\+\_\+t}} +\subsubsection{\texorpdfstring{\+\_\+1wire\+\_\+id\+\_\+t()}{\_1wire\_id\_t()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily utl\+::\+\_\+1wire\+\_\+id\+\_\+t\+::\+\_\+1wire\+\_\+id\+\_\+t (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 39 of file \+\_\+1wire\+\_\+id.\+h. + +\mbox{\Hypertarget{classutl_1_1__1wire__id__t_a042aa65cc13c6040f795c8198f5afc23}\label{classutl_1_1__1wire__id__t_a042aa65cc13c6040f795c8198f5afc23}} +\index{utl\+::\+\_\+1wire\+\_\+id\+\_\+t@{utl\+::\+\_\+1wire\+\_\+id\+\_\+t}!\+\_\+1wire\+\_\+id\+\_\+t@{\+\_\+1wire\+\_\+id\+\_\+t}} +\index{\+\_\+1wire\+\_\+id\+\_\+t@{\+\_\+1wire\+\_\+id\+\_\+t}!utl\+::\+\_\+1wire\+\_\+id\+\_\+t@{utl\+::\+\_\+1wire\+\_\+id\+\_\+t}} +\subsubsection{\texorpdfstring{\+\_\+1wire\+\_\+id\+\_\+t()}{\_1wire\_id\_t()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily utl\+::\+\_\+1wire\+\_\+id\+\_\+t\+::\+\_\+1wire\+\_\+id\+\_\+t (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1__1wire__id__t}{\+\_\+1wire\+\_\+id\+\_\+t}} \&}]{id }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 41 of file \+\_\+1wire\+\_\+id.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classutl_1_1__1wire__id__t_aef89950aeb9d40ca058fabcc5532e01d}\label{classutl_1_1__1wire__id__t_aef89950aeb9d40ca058fabcc5532e01d}} +\index{utl\+::\+\_\+1wire\+\_\+id\+\_\+t@{utl\+::\+\_\+1wire\+\_\+id\+\_\+t}!compare@{compare}} +\index{compare@{compare}!utl\+::\+\_\+1wire\+\_\+id\+\_\+t@{utl\+::\+\_\+1wire\+\_\+id\+\_\+t}} +\subsubsection{\texorpdfstring{compare()}{compare()}} +{\footnotesize\ttfamily static int utl\+::\+\_\+1wire\+\_\+id\+\_\+t\+::compare (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1__1wire__id__t}{\+\_\+1wire\+\_\+id\+\_\+t}} \&}]{lhs, }\item[{const \mbox{\hyperlink{classutl_1_1__1wire__id__t}{\+\_\+1wire\+\_\+id\+\_\+t}} \&}]{rhs }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}, {\ttfamily [noexcept]}} + + + +Full compare two dev\+\_\+ids. + +\begin{DoxyReturn}{Returns} +The comparison result \begin{DoxyItemize} +\item 0 dev\+\_\+ids are equal \item -\/1 dev\+\_\+id lhs is smaller than dev\+\_\+id rhs \item 1 dev\+\_\+id rhs is smaller than dev\+\_\+id lhs \end{DoxyItemize} + +\end{DoxyReturn} + + +Definition at line 72 of file \+\_\+1wire\+\_\+id.\+h. + +\mbox{\Hypertarget{classutl_1_1__1wire__id__t_a03a112d8910c67611a3b302fe7c0706b}\label{classutl_1_1__1wire__id__t_a03a112d8910c67611a3b302fe7c0706b}} +\index{utl\+::\+\_\+1wire\+\_\+id\+\_\+t@{utl\+::\+\_\+1wire\+\_\+id\+\_\+t}!crc8@{crc8}} +\index{crc8@{crc8}!utl\+::\+\_\+1wire\+\_\+id\+\_\+t@{utl\+::\+\_\+1wire\+\_\+id\+\_\+t}} +\subsubsection{\texorpdfstring{crc8()}{crc8()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily uint8\+\_\+t\& utl\+::\+\_\+1wire\+\_\+id\+\_\+t\+::crc8 (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + +Access the C\+R\+C8 byte (The M\+SB). + +Definition at line 60 of file \+\_\+1wire\+\_\+id.\+h. + +\mbox{\Hypertarget{classutl_1_1__1wire__id__t_af3a0ea2c575f96ac01b0aac91166d767}\label{classutl_1_1__1wire__id__t_af3a0ea2c575f96ac01b0aac91166d767}} +\index{utl\+::\+\_\+1wire\+\_\+id\+\_\+t@{utl\+::\+\_\+1wire\+\_\+id\+\_\+t}!crc8@{crc8}} +\index{crc8@{crc8}!utl\+::\+\_\+1wire\+\_\+id\+\_\+t@{utl\+::\+\_\+1wire\+\_\+id\+\_\+t}} +\subsubsection{\texorpdfstring{crc8()}{crc8()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily const uint8\+\_\+t\& utl\+::\+\_\+1wire\+\_\+id\+\_\+t\+::crc8 (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 61 of file \+\_\+1wire\+\_\+id.\+h. + +\mbox{\Hypertarget{classutl_1_1__1wire__id__t_adb30b65bcab59bdad980793377a8e52f}\label{classutl_1_1__1wire__id__t_adb30b65bcab59bdad980793377a8e52f}} +\index{utl\+::\+\_\+1wire\+\_\+id\+\_\+t@{utl\+::\+\_\+1wire\+\_\+id\+\_\+t}!family@{family}} +\index{family@{family}!utl\+::\+\_\+1wire\+\_\+id\+\_\+t@{utl\+::\+\_\+1wire\+\_\+id\+\_\+t}} +\subsubsection{\texorpdfstring{family()}{family()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily uint8\+\_\+t\& utl\+::\+\_\+1wire\+\_\+id\+\_\+t\+::family (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + +Return the Rom\+ID family code (The L\+SB) + +Definition at line 54 of file \+\_\+1wire\+\_\+id.\+h. + +\mbox{\Hypertarget{classutl_1_1__1wire__id__t_a6ed0d86d1fce0073776d83092a874b91}\label{classutl_1_1__1wire__id__t_a6ed0d86d1fce0073776d83092a874b91}} +\index{utl\+::\+\_\+1wire\+\_\+id\+\_\+t@{utl\+::\+\_\+1wire\+\_\+id\+\_\+t}!family@{family}} +\index{family@{family}!utl\+::\+\_\+1wire\+\_\+id\+\_\+t@{utl\+::\+\_\+1wire\+\_\+id\+\_\+t}} +\subsubsection{\texorpdfstring{family()}{family()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily const uint8\+\_\+t\& utl\+::\+\_\+1wire\+\_\+id\+\_\+t\+::family (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 55 of file \+\_\+1wire\+\_\+id.\+h. + +\mbox{\Hypertarget{classutl_1_1__1wire__id__t_adad08aa5ce38e1a87800de57a91db81b}\label{classutl_1_1__1wire__id__t_adad08aa5ce38e1a87800de57a91db81b}} +\index{utl\+::\+\_\+1wire\+\_\+id\+\_\+t@{utl\+::\+\_\+1wire\+\_\+id\+\_\+t}!null\+Dev@{null\+Dev}} +\index{null\+Dev@{null\+Dev}!utl\+::\+\_\+1wire\+\_\+id\+\_\+t@{utl\+::\+\_\+1wire\+\_\+id\+\_\+t}} +\subsubsection{\texorpdfstring{null\+Dev()}{nullDev()}} +{\footnotesize\ttfamily static constexpr const \mbox{\hyperlink{classutl_1_1__1wire__id__t}{\+\_\+1wire\+\_\+id\+\_\+t}}\& utl\+::\+\_\+1wire\+\_\+id\+\_\+t\+::null\+Dev (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}} + + + +Return null\+Dev reference. + + + +Definition at line 50 of file \+\_\+1wire\+\_\+id.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/com/\mbox{\hyperlink{__1wire__id_8h}{\+\_\+1wire\+\_\+id.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classutl_1_1__1wire__uart__i.eps b/doc/latex/classutl_1_1__1wire__uart__i.eps new file mode 100644 index 0000000..ff1f62d --- /dev/null +++ b/doc/latex/classutl_1_1__1wire__uart__i.eps @@ -0,0 +1,203 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 245.901639 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.033333 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 3 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::_1wire_uart_i< Impl_t >) cw +(utl::_1wire_i< _1wire_uart_i< Impl_t > >) cw +(test_1w::OW) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::_1wire_uart_i< Impl_t >) 0.000000 1.000000 box + (utl::_1wire_i< _1wire_uart_i< Impl_t > >) 0.000000 2.000000 box + (test_1w::OW) 0.000000 0.000000 box + +% ----- relations ----- + +solid +0 0.000000 1.000000 out +solid +1 0.000000 2.000000 in +solid +1 0.000000 0.250000 out +solid +0 0.000000 0.750000 in diff --git a/doc/latex/classutl_1_1__1wire__uart__i.tex b/doc/latex/classutl_1_1__1wire__uart__i.tex new file mode 100644 index 0000000..c787c84 --- /dev/null +++ b/doc/latex/classutl_1_1__1wire__uart__i.tex @@ -0,0 +1,108 @@ +\hypertarget{classutl_1_1__1wire__uart__i}{}\section{utl\+:\+:\+\_\+1wire\+\_\+uart\+\_\+i$<$ Impl\+\_\+t $>$ Class Template Reference} +\label{classutl_1_1__1wire__uart__i}\index{utl\+::\+\_\+1wire\+\_\+uart\+\_\+i$<$ Impl\+\_\+t $>$@{utl\+::\+\_\+1wire\+\_\+uart\+\_\+i$<$ Impl\+\_\+t $>$}} + + +1-\/wire U\+A\+RT interface template class using C\+R\+TP Using the private virtual interface we provide the interface from \+\_\+1wire\+\_\+i$<$$>$ + + + + +{\ttfamily \#include $<$\+\_\+1wire\+\_\+uart.\+h$>$} + +Inheritance diagram for utl\+:\+:\+\_\+1wire\+\_\+uart\+\_\+i$<$ Impl\+\_\+t $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3.000000cm]{classutl_1_1__1wire__uart__i} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{classutl_1_1__1wire__uart__i_acc885c6ec2395ad20409b01aa4d5f546}{type}} = \mbox{\hyperlink{classutl_1_1__1wire__uart__i}{\+\_\+1wire\+\_\+uart\+\_\+i}}$<$ Impl\+\_\+t $>$ +\begin{DoxyCompactList}\small\item\em Export type as identity meta-\/function. \end{DoxyCompactList}\item +using \mbox{\hyperlink{classutl_1_1__1wire__uart__i_acc4364e3aa029405a9b2b25e1fea83ac}{Speed}} = typename \mbox{\hyperlink{classutl_1_1__1wire__i}{\+\_\+1wire\+\_\+i}}$<$ \mbox{\hyperlink{classutl_1_1__1wire__uart__i_acc885c6ec2395ad20409b01aa4d5f546}{type}} $>$\+::\mbox{\hyperlink{classutl_1_1__1wire__uart__i_acc4364e3aa029405a9b2b25e1fea83ac}{Speed}} +\begin{DoxyCompactList}\small\item\em Bring bus speed. \end{DoxyCompactList}\end{DoxyCompactItemize} +\subsection*{Protected Member Functions} +\begin{Indent}\textbf{ Object lifetime}\par +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classutl_1_1__1wire__uart__i_ae14ed1ce068d5601c5623c410a0dbc0c}{\+\_\+1wire\+\_\+uart\+\_\+i}} ()=default +\begin{DoxyCompactList}\small\item\em Allow constructor from derived only. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1__1wire__uart__i_afe64da15b5eaf61cd54f357f3ea8b3ea}{$\sim$\+\_\+1wire\+\_\+uart\+\_\+i}} ()=default +\end{DoxyCompactItemize} +\end{Indent} +\subsection*{Additional Inherited Members} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename Impl\+\_\+t$>$\newline +class utl\+::\+\_\+1wire\+\_\+uart\+\_\+i$<$ Impl\+\_\+t $>$} + +1-\/wire U\+A\+RT interface template class using C\+R\+TP Using the private virtual interface we provide the interface from \+\_\+1wire\+\_\+i$<$$>$ + +A 1-\/wire implementation using a microprocessor\textquotesingle{}s uart for bit timing inherited from \mbox{\hyperlink{classutl_1_1__1wire__i}{\+\_\+1wire\+\_\+i}} base class. \begin{DoxySeeAlso}{See also} +\mbox{\hyperlink{classutl_1_1__1wire__i}{\+\_\+1wire\+\_\+i}} +\end{DoxySeeAlso} + + +Definition at line 52 of file \+\_\+1wire\+\_\+uart.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{classutl_1_1__1wire__uart__i_acc4364e3aa029405a9b2b25e1fea83ac}\label{classutl_1_1__1wire__uart__i_acc4364e3aa029405a9b2b25e1fea83ac}} +\index{utl\+::\+\_\+1wire\+\_\+uart\+\_\+i@{utl\+::\+\_\+1wire\+\_\+uart\+\_\+i}!Speed@{Speed}} +\index{Speed@{Speed}!utl\+::\+\_\+1wire\+\_\+uart\+\_\+i@{utl\+::\+\_\+1wire\+\_\+uart\+\_\+i}} +\subsubsection{\texorpdfstring{Speed}{Speed}} +{\footnotesize\ttfamily template$<$typename Impl\+\_\+t$>$ \\ +using \mbox{\hyperlink{classutl_1_1__1wire__uart__i}{utl\+::\+\_\+1wire\+\_\+uart\+\_\+i}}$<$ Impl\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1__1wire__uart__i_acc4364e3aa029405a9b2b25e1fea83ac}{Speed}} = typename \mbox{\hyperlink{classutl_1_1__1wire__i}{\+\_\+1wire\+\_\+i}}$<$\mbox{\hyperlink{classutl_1_1__1wire__uart__i_acc885c6ec2395ad20409b01aa4d5f546}{type}}$>$\+::\mbox{\hyperlink{classutl_1_1__1wire__uart__i_acc4364e3aa029405a9b2b25e1fea83ac}{Speed}}} + + + +Bring bus speed. + + + +Definition at line 57 of file \+\_\+1wire\+\_\+uart.\+h. + +\mbox{\Hypertarget{classutl_1_1__1wire__uart__i_acc885c6ec2395ad20409b01aa4d5f546}\label{classutl_1_1__1wire__uart__i_acc885c6ec2395ad20409b01aa4d5f546}} +\index{utl\+::\+\_\+1wire\+\_\+uart\+\_\+i@{utl\+::\+\_\+1wire\+\_\+uart\+\_\+i}!type@{type}} +\index{type@{type}!utl\+::\+\_\+1wire\+\_\+uart\+\_\+i@{utl\+::\+\_\+1wire\+\_\+uart\+\_\+i}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename Impl\+\_\+t$>$ \\ +using \mbox{\hyperlink{classutl_1_1__1wire__uart__i}{utl\+::\+\_\+1wire\+\_\+uart\+\_\+i}}$<$ Impl\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1__1wire__uart__i_acc885c6ec2395ad20409b01aa4d5f546}{type}} = \mbox{\hyperlink{classutl_1_1__1wire__uart__i}{\+\_\+1wire\+\_\+uart\+\_\+i}}$<$Impl\+\_\+t$>$} + + + +Export type as identity meta-\/function. + + + +Definition at line 56 of file \+\_\+1wire\+\_\+uart.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classutl_1_1__1wire__uart__i_ae14ed1ce068d5601c5623c410a0dbc0c}\label{classutl_1_1__1wire__uart__i_ae14ed1ce068d5601c5623c410a0dbc0c}} +\index{utl\+::\+\_\+1wire\+\_\+uart\+\_\+i@{utl\+::\+\_\+1wire\+\_\+uart\+\_\+i}!\+\_\+1wire\+\_\+uart\+\_\+i@{\+\_\+1wire\+\_\+uart\+\_\+i}} +\index{\+\_\+1wire\+\_\+uart\+\_\+i@{\+\_\+1wire\+\_\+uart\+\_\+i}!utl\+::\+\_\+1wire\+\_\+uart\+\_\+i@{utl\+::\+\_\+1wire\+\_\+uart\+\_\+i}} +\subsubsection{\texorpdfstring{\+\_\+1wire\+\_\+uart\+\_\+i()}{\_1wire\_uart\_i()}} +{\footnotesize\ttfamily template$<$typename Impl\+\_\+t$>$ \\ +\mbox{\hyperlink{classutl_1_1__1wire__uart__i}{utl\+::\+\_\+1wire\+\_\+uart\+\_\+i}}$<$ Impl\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1__1wire__uart__i}{\+\_\+1wire\+\_\+uart\+\_\+i}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [default]}} + + + +Allow constructor from derived only. + +\mbox{\Hypertarget{classutl_1_1__1wire__uart__i_afe64da15b5eaf61cd54f357f3ea8b3ea}\label{classutl_1_1__1wire__uart__i_afe64da15b5eaf61cd54f357f3ea8b3ea}} +\index{utl\+::\+\_\+1wire\+\_\+uart\+\_\+i@{utl\+::\+\_\+1wire\+\_\+uart\+\_\+i}!````~\+\_\+1wire\+\_\+uart\+\_\+i@{$\sim$\+\_\+1wire\+\_\+uart\+\_\+i}} +\index{````~\+\_\+1wire\+\_\+uart\+\_\+i@{$\sim$\+\_\+1wire\+\_\+uart\+\_\+i}!utl\+::\+\_\+1wire\+\_\+uart\+\_\+i@{utl\+::\+\_\+1wire\+\_\+uart\+\_\+i}} +\subsubsection{\texorpdfstring{$\sim$\+\_\+1wire\+\_\+uart\+\_\+i()}{~\_1wire\_uart\_i()}} +{\footnotesize\ttfamily template$<$typename Impl\+\_\+t$>$ \\ +\mbox{\hyperlink{classutl_1_1__1wire__uart__i}{utl\+::\+\_\+1wire\+\_\+uart\+\_\+i}}$<$ Impl\+\_\+t $>$\+::$\sim$\mbox{\hyperlink{classutl_1_1__1wire__uart__i}{\+\_\+1wire\+\_\+uart\+\_\+i}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [default]}} + +Allow destructor from derived only + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/com/\mbox{\hyperlink{__1wire__uart_8h}{\+\_\+1wire\+\_\+uart.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.eps b/doc/latex/classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.eps new file mode 100644 index 0000000..56c254c --- /dev/null +++ b/doc/latex/classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 201.005025 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.487500 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::_1wire_uart_i< virtual_tag >) cw +(utl::_1wire_i< virtual_tag >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::_1wire_uart_i< virtual_tag >) 0.000000 0.000000 box + (utl::_1wire_i< virtual_tag >) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.tex b/doc/latex/classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.tex new file mode 100644 index 0000000..88639f4 --- /dev/null +++ b/doc/latex/classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4.tex @@ -0,0 +1,106 @@ +\hypertarget{classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4}{}\section{utl\+:\+:\+\_\+1wire\+\_\+uart\+\_\+i$<$ virtual\+\_\+tag $>$ Class Template Reference} +\label{classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4}\index{utl\+::\+\_\+1wire\+\_\+uart\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+uart\+\_\+i$<$ virtual\+\_\+tag $>$}} + + +A virtual base class interface implementation. Using the private virtual interface we provide the interface from \mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4}{\+\_\+1wire\+\_\+i$<$virtual\+\_\+tag$>$}} + + + + +{\ttfamily \#include $<$\+\_\+1wire\+\_\+uart.\+h$>$} + +Inheritance diagram for utl\+:\+:\+\_\+1wire\+\_\+uart\+\_\+i$<$ virtual\+\_\+tag $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4_a1d50d0d5460165c3f6046ce6b663cd5e}{type}} = \mbox{\hyperlink{classutl_1_1__1wire__uart__i}{\+\_\+1wire\+\_\+uart\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$ +\begin{DoxyCompactList}\small\item\em Export type as identity meta-\/function. \end{DoxyCompactList}\item +using \mbox{\hyperlink{classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4_a854a62c6f9e6d62597471b887c541e03}{Speed}} = typename \mbox{\hyperlink{classutl_1_1__1wire__i}{\+\_\+1wire\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$\+::\mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a2abb8c6344d17269c55ae0cba63ec512}{Speed}} +\begin{DoxyCompactList}\small\item\em Bring bus speed. \end{DoxyCompactList}\end{DoxyCompactItemize} +\subsection*{Protected Member Functions} +\begin{Indent}\textbf{ Object lifetime}\par +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4_a31bc4dbae704b77ab95b491605b6fa2e}{\+\_\+1wire\+\_\+uart\+\_\+i}} ()=default +\begin{DoxyCompactList}\small\item\em Allow constructor from derived only. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4_ad66d096eca084dec305a9bc85bc5e588}{$\sim$\+\_\+1wire\+\_\+uart\+\_\+i}} ()=default +\end{DoxyCompactItemize} +\end{Indent} +\subsection*{Additional Inherited Members} + + +\subsection{Detailed Description} +\subsubsection*{template$<$$>$\newline +class utl\+::\+\_\+1wire\+\_\+uart\+\_\+i$<$ virtual\+\_\+tag $>$} + +A virtual base class interface implementation. Using the private virtual interface we provide the interface from \mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4}{\+\_\+1wire\+\_\+i$<$virtual\+\_\+tag$>$}} + + +\begin{DoxyParams}{Parameters} +{\em impl\+\_\+t} & = \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} \\ +\hline +\end{DoxyParams} + + +Definition at line 198 of file \+\_\+1wire\+\_\+uart.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4_a854a62c6f9e6d62597471b887c541e03}\label{classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4_a854a62c6f9e6d62597471b887c541e03}} +\index{utl\+::\+\_\+1wire\+\_\+uart\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+uart\+\_\+i$<$ virtual\+\_\+tag $>$}!Speed@{Speed}} +\index{Speed@{Speed}!utl\+::\+\_\+1wire\+\_\+uart\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+uart\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{Speed}{Speed}} +{\footnotesize\ttfamily using \mbox{\hyperlink{classutl_1_1__1wire__uart__i}{utl\+::\+\_\+1wire\+\_\+uart\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$\+::\mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a2abb8c6344d17269c55ae0cba63ec512}{Speed}} = typename \mbox{\hyperlink{classutl_1_1__1wire__i}{\+\_\+1wire\+\_\+i}}$<$\mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}$>$\+::\mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a2abb8c6344d17269c55ae0cba63ec512}{Speed}}} + + + +Bring bus speed. + + + +Definition at line 201 of file \+\_\+1wire\+\_\+uart.\+h. + +\mbox{\Hypertarget{classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4_a1d50d0d5460165c3f6046ce6b663cd5e}\label{classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4_a1d50d0d5460165c3f6046ce6b663cd5e}} +\index{utl\+::\+\_\+1wire\+\_\+uart\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+uart\+\_\+i$<$ virtual\+\_\+tag $>$}!type@{type}} +\index{type@{type}!utl\+::\+\_\+1wire\+\_\+uart\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+uart\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily using \mbox{\hyperlink{classutl_1_1__1wire__uart__i}{utl\+::\+\_\+1wire\+\_\+uart\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$\+::\mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4_a1b2fa0f5a2946723cd29e689bd38359d}{type}} = \mbox{\hyperlink{classutl_1_1__1wire__uart__i}{\+\_\+1wire\+\_\+uart\+\_\+i}}$<$\mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}$>$} + + + +Export type as identity meta-\/function. + + + +Definition at line 200 of file \+\_\+1wire\+\_\+uart.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4_a31bc4dbae704b77ab95b491605b6fa2e}\label{classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4_a31bc4dbae704b77ab95b491605b6fa2e}} +\index{utl\+::\+\_\+1wire\+\_\+uart\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+uart\+\_\+i$<$ virtual\+\_\+tag $>$}!\+\_\+1wire\+\_\+uart\+\_\+i@{\+\_\+1wire\+\_\+uart\+\_\+i}} +\index{\+\_\+1wire\+\_\+uart\+\_\+i@{\+\_\+1wire\+\_\+uart\+\_\+i}!utl\+::\+\_\+1wire\+\_\+uart\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+uart\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{\+\_\+1wire\+\_\+uart\+\_\+i()}{\_1wire\_uart\_i()}} +{\footnotesize\ttfamily \mbox{\hyperlink{classutl_1_1__1wire__uart__i}{utl\+::\+\_\+1wire\+\_\+uart\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$\+::\mbox{\hyperlink{classutl_1_1__1wire__uart__i}{\+\_\+1wire\+\_\+uart\+\_\+i}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [default]}} + + + +Allow constructor from derived only. + +\mbox{\Hypertarget{classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4_ad66d096eca084dec305a9bc85bc5e588}\label{classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4_ad66d096eca084dec305a9bc85bc5e588}} +\index{utl\+::\+\_\+1wire\+\_\+uart\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+uart\+\_\+i$<$ virtual\+\_\+tag $>$}!````~\+\_\+1wire\+\_\+uart\+\_\+i@{$\sim$\+\_\+1wire\+\_\+uart\+\_\+i}} +\index{````~\+\_\+1wire\+\_\+uart\+\_\+i@{$\sim$\+\_\+1wire\+\_\+uart\+\_\+i}!utl\+::\+\_\+1wire\+\_\+uart\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::\+\_\+1wire\+\_\+uart\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{$\sim$\+\_\+1wire\+\_\+uart\+\_\+i()}{~\_1wire\_uart\_i()}} +{\footnotesize\ttfamily \mbox{\hyperlink{classutl_1_1__1wire__uart__i}{utl\+::\+\_\+1wire\+\_\+uart\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$\+::$\sim$\mbox{\hyperlink{classutl_1_1__1wire__uart__i}{\+\_\+1wire\+\_\+uart\+\_\+i}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [default]}} + +Allow destructor from derived only + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/com/\mbox{\hyperlink{__1wire__uart_8h}{\+\_\+1wire\+\_\+uart.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classutl_1_1i2c__bb__i.eps b/doc/latex/classutl_1_1i2c__bb__i.eps new file mode 100644 index 0000000..b2bc145 --- /dev/null +++ b/doc/latex/classutl_1_1i2c__bb__i.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 206.185567 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.425000 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::i2c_bb_i< impl_t >) cw +(utl::i2c_i< i2c_bb_i< impl_t > >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::i2c_bb_i< impl_t >) 0.000000 0.000000 box + (utl::i2c_i< i2c_bb_i< impl_t > >) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/classutl_1_1i2c__bb__i.tex b/doc/latex/classutl_1_1i2c__bb__i.tex new file mode 100644 index 0000000..9c327c8 --- /dev/null +++ b/doc/latex/classutl_1_1i2c__bb__i.tex @@ -0,0 +1,149 @@ +\hypertarget{classutl_1_1i2c__bb__i}{}\section{utl\+:\+:i2c\+\_\+bb\+\_\+i$<$ impl\+\_\+t $>$ Class Template Reference} +\label{classutl_1_1i2c__bb__i}\index{utl\+::i2c\+\_\+bb\+\_\+i$<$ impl\+\_\+t $>$@{utl\+::i2c\+\_\+bb\+\_\+i$<$ impl\+\_\+t $>$}} + + +A bit banking implementation of i2c bus inherited from \mbox{\hyperlink{classutl_1_1i2c__i}{i2c\+\_\+i}} base class. + + + + +{\ttfamily \#include $<$i2c\+\_\+bb.\+h$>$} + +Inheritance diagram for utl\+:\+:i2c\+\_\+bb\+\_\+i$<$ impl\+\_\+t $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{classutl_1_1i2c__bb__i} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +enum \mbox{\hyperlink{classutl_1_1i2c__bb__i_a4369b434fde250d503bfdc07d5c6a26d}{S\+D\+A\+Mode}} \{ \mbox{\hyperlink{classutl_1_1i2c__bb__i_a4369b434fde250d503bfdc07d5c6a26daa84cc046d48610b05c21fd3670d0c829}{S\+D\+A\+Mode\+::\+I\+N\+P\+UT}} =0, +\mbox{\hyperlink{classutl_1_1i2c__bb__i_a4369b434fde250d503bfdc07d5c6a26da50a87f0d71f7221582dad4bf507a0f34}{S\+D\+A\+Mode\+::\+O\+U\+T\+P\+UT}} + \} +\begin{DoxyCompactList}\small\item\em S\+DA pin direction enumerator. \end{DoxyCompactList}\item +using \mbox{\hyperlink{classutl_1_1i2c__bb__i_a428c847d950993fa2cd005416edfb720}{type}} = \mbox{\hyperlink{classutl_1_1i2c__bb__i}{i2c\+\_\+bb\+\_\+i}}$<$ impl\+\_\+t $>$ +\begin{DoxyCompactList}\small\item\em Export type as identity meta-\/function. \end{DoxyCompactList}\item +using \mbox{\hyperlink{classutl_1_1i2c__bb__i_ad2872b7e17116f8379144488fe135052}{Sequence}} = typename \mbox{\hyperlink{classutl_1_1i2c__i}{i2c\+\_\+i}}$<$ \mbox{\hyperlink{classutl_1_1i2c__i_aa9267a8602702b78f188e0cf61b68a55}{type}} $>$\+::\mbox{\hyperlink{classutl_1_1i2c__i_a7e2dde443c6c9bde4a2293beb22950c5}{Sequence}} +\end{DoxyCompactItemize} +\subsection*{Protected Member Functions} +\begin{Indent}\textbf{ Object lifetime}\par +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classutl_1_1i2c__bb__i_ac2d9b97778a5dd57eb5e6425b4b0833c}{$\sim$i2c\+\_\+bb\+\_\+i}} () noexcept=default +\begin{DoxyCompactList}\small\item\em A default destructor, allow destructor from derived only. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1i2c__bb__i_ab657379ca2e4b3624e2d4520542a9464}{i2c\+\_\+bb\+\_\+i}} (uint32\+\_\+t clk) noexcept +\begin{DoxyCompactList}\small\item\em A default constructor. \end{DoxyCompactList}\end{DoxyCompactItemize} +\end{Indent} +\subsection*{Additional Inherited Members} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename impl\+\_\+t$>$\newline +class utl\+::i2c\+\_\+bb\+\_\+i$<$ impl\+\_\+t $>$} + +A bit banking implementation of i2c bus inherited from \mbox{\hyperlink{classutl_1_1i2c__i}{i2c\+\_\+i}} base class. + +\begin{DoxySeeAlso}{See also} +\mbox{\hyperlink{classutl_1_1i2c__i}{i2c\+\_\+i}} +\end{DoxySeeAlso} +I2C bit banking interface template class providing an I2C using bit banking using C\+R\+TP. +\begin{DoxyParams}{Parameters} +{\em impl\+\_\+t} & The C\+R\+TP type (the derived/implementation class typename). \\ +\hline +\end{DoxyParams} + + +Definition at line 47 of file i2c\+\_\+bb.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{classutl_1_1i2c__bb__i_ad2872b7e17116f8379144488fe135052}\label{classutl_1_1i2c__bb__i_ad2872b7e17116f8379144488fe135052}} +\index{utl\+::i2c\+\_\+bb\+\_\+i@{utl\+::i2c\+\_\+bb\+\_\+i}!Sequence@{Sequence}} +\index{Sequence@{Sequence}!utl\+::i2c\+\_\+bb\+\_\+i@{utl\+::i2c\+\_\+bb\+\_\+i}} +\subsubsection{\texorpdfstring{Sequence}{Sequence}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t$>$ \\ +using \mbox{\hyperlink{classutl_1_1i2c__bb__i}{utl\+::i2c\+\_\+bb\+\_\+i}}$<$ impl\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1i2c__i_a7e2dde443c6c9bde4a2293beb22950c5}{Sequence}} = typename \mbox{\hyperlink{classutl_1_1i2c__i}{i2c\+\_\+i}}$<$\mbox{\hyperlink{classutl_1_1i2c__i_aa9267a8602702b78f188e0cf61b68a55}{type}}$>$\+::\mbox{\hyperlink{classutl_1_1i2c__i_a7e2dde443c6c9bde4a2293beb22950c5}{Sequence}}} + + + +Definition at line 53 of file i2c\+\_\+bb.\+h. + +\mbox{\Hypertarget{classutl_1_1i2c__bb__i_a428c847d950993fa2cd005416edfb720}\label{classutl_1_1i2c__bb__i_a428c847d950993fa2cd005416edfb720}} +\index{utl\+::i2c\+\_\+bb\+\_\+i@{utl\+::i2c\+\_\+bb\+\_\+i}!type@{type}} +\index{type@{type}!utl\+::i2c\+\_\+bb\+\_\+i@{utl\+::i2c\+\_\+bb\+\_\+i}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t$>$ \\ +using \mbox{\hyperlink{classutl_1_1i2c__bb__i}{utl\+::i2c\+\_\+bb\+\_\+i}}$<$ impl\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1i2c__i_aa9267a8602702b78f188e0cf61b68a55}{type}} = \mbox{\hyperlink{classutl_1_1i2c__bb__i}{i2c\+\_\+bb\+\_\+i}}$<$impl\+\_\+t$>$} + + + +Export type as identity meta-\/function. + + + +Definition at line 52 of file i2c\+\_\+bb.\+h. + + + +\subsection{Member Enumeration Documentation} +\mbox{\Hypertarget{classutl_1_1i2c__bb__i_a4369b434fde250d503bfdc07d5c6a26d}\label{classutl_1_1i2c__bb__i_a4369b434fde250d503bfdc07d5c6a26d}} +\index{utl\+::i2c\+\_\+bb\+\_\+i@{utl\+::i2c\+\_\+bb\+\_\+i}!S\+D\+A\+Mode@{S\+D\+A\+Mode}} +\index{S\+D\+A\+Mode@{S\+D\+A\+Mode}!utl\+::i2c\+\_\+bb\+\_\+i@{utl\+::i2c\+\_\+bb\+\_\+i}} +\subsubsection{\texorpdfstring{S\+D\+A\+Mode}{SDAMode}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t$>$ \\ +enum \mbox{\hyperlink{classutl_1_1i2c__bb__i_a4369b434fde250d503bfdc07d5c6a26d}{utl\+::i2c\+\_\+bb\+\_\+i\+::\+S\+D\+A\+Mode}}\hspace{0.3cm}{\ttfamily [strong]}} + + + +S\+DA pin direction enumerator. + +\begin{DoxyEnumFields}{Enumerator} +\raisebox{\heightof{T}}[0pt][0pt]{\index{I\+N\+P\+UT@{I\+N\+P\+UT}!utl\+::i2c\+\_\+bb\+\_\+i@{utl\+::i2c\+\_\+bb\+\_\+i}}\index{utl\+::i2c\+\_\+bb\+\_\+i@{utl\+::i2c\+\_\+bb\+\_\+i}!I\+N\+P\+UT@{I\+N\+P\+UT}}}\mbox{\Hypertarget{classutl_1_1i2c__bb__i_a4369b434fde250d503bfdc07d5c6a26daa84cc046d48610b05c21fd3670d0c829}\label{classutl_1_1i2c__bb__i_a4369b434fde250d503bfdc07d5c6a26daa84cc046d48610b05c21fd3670d0c829}} +I\+N\+P\+UT&\\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{O\+U\+T\+P\+UT@{O\+U\+T\+P\+UT}!utl\+::i2c\+\_\+bb\+\_\+i@{utl\+::i2c\+\_\+bb\+\_\+i}}\index{utl\+::i2c\+\_\+bb\+\_\+i@{utl\+::i2c\+\_\+bb\+\_\+i}!O\+U\+T\+P\+UT@{O\+U\+T\+P\+UT}}}\mbox{\Hypertarget{classutl_1_1i2c__bb__i_a4369b434fde250d503bfdc07d5c6a26da50a87f0d71f7221582dad4bf507a0f34}\label{classutl_1_1i2c__bb__i_a4369b434fde250d503bfdc07d5c6a26da50a87f0d71f7221582dad4bf507a0f34}} +O\+U\+T\+P\+UT&\\ +\hline + +\end{DoxyEnumFields} + + +Definition at line 55 of file i2c\+\_\+bb.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classutl_1_1i2c__bb__i_ac2d9b97778a5dd57eb5e6425b4b0833c}\label{classutl_1_1i2c__bb__i_ac2d9b97778a5dd57eb5e6425b4b0833c}} +\index{utl\+::i2c\+\_\+bb\+\_\+i@{utl\+::i2c\+\_\+bb\+\_\+i}!````~i2c\+\_\+bb\+\_\+i@{$\sim$i2c\+\_\+bb\+\_\+i}} +\index{````~i2c\+\_\+bb\+\_\+i@{$\sim$i2c\+\_\+bb\+\_\+i}!utl\+::i2c\+\_\+bb\+\_\+i@{utl\+::i2c\+\_\+bb\+\_\+i}} +\subsubsection{\texorpdfstring{$\sim$i2c\+\_\+bb\+\_\+i()}{~i2c\_bb\_i()}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t$>$ \\ +\mbox{\hyperlink{classutl_1_1i2c__bb__i}{utl\+::i2c\+\_\+bb\+\_\+i}}$<$ impl\+\_\+t $>$\+::$\sim$\mbox{\hyperlink{classutl_1_1i2c__bb__i}{i2c\+\_\+bb\+\_\+i}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [default]}, {\ttfamily [noexcept]}} + + + +A default destructor, allow destructor from derived only. + +\mbox{\Hypertarget{classutl_1_1i2c__bb__i_ab657379ca2e4b3624e2d4520542a9464}\label{classutl_1_1i2c__bb__i_ab657379ca2e4b3624e2d4520542a9464}} +\index{utl\+::i2c\+\_\+bb\+\_\+i@{utl\+::i2c\+\_\+bb\+\_\+i}!i2c\+\_\+bb\+\_\+i@{i2c\+\_\+bb\+\_\+i}} +\index{i2c\+\_\+bb\+\_\+i@{i2c\+\_\+bb\+\_\+i}!utl\+::i2c\+\_\+bb\+\_\+i@{utl\+::i2c\+\_\+bb\+\_\+i}} +\subsubsection{\texorpdfstring{i2c\+\_\+bb\+\_\+i()}{i2c\_bb\_i()}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t$>$ \\ +\mbox{\hyperlink{classutl_1_1i2c__bb__i}{utl\+::i2c\+\_\+bb\+\_\+i}}$<$ impl\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1i2c__bb__i}{i2c\+\_\+bb\+\_\+i}} (\begin{DoxyParamCaption}\item[{uint32\+\_\+t}]{clk }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [protected]}, {\ttfamily [noexcept]}} + + + +A default constructor. + + + +Definition at line 68 of file i2c\+\_\+bb.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/com/\mbox{\hyperlink{i2c__bb_8h}{i2c\+\_\+bb.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.eps b/doc/latex/classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.eps new file mode 100644 index 0000000..2410f3e --- /dev/null +++ b/doc/latex/classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 235.294118 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.125000 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::i2c_bb_i< virtual_tag >) cw +(utl::i2c_i< virtual_tag >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::i2c_bb_i< virtual_tag >) 0.000000 0.000000 box + (utl::i2c_i< virtual_tag >) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.tex b/doc/latex/classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.tex new file mode 100644 index 0000000..77acd94 --- /dev/null +++ b/doc/latex/classutl_1_1i2c__bb__i_3_01virtual__tag_01_4.tex @@ -0,0 +1,141 @@ +\hypertarget{classutl_1_1i2c__bb__i_3_01virtual__tag_01_4}{}\section{utl\+:\+:i2c\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag $>$ Class Template Reference} +\label{classutl_1_1i2c__bb__i_3_01virtual__tag_01_4}\index{utl\+::i2c\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::i2c\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag $>$}} + + +A virtual base class interface specialization. Using the private virtual interface we provide the interface from \mbox{\hyperlink{classutl_1_1i2c__i_3_01virtual__tag_01_4}{i2c\+\_\+i$<$virtual\+\_\+tag$>$}} + + + + +{\ttfamily \#include $<$i2c\+\_\+bb.\+h$>$} + +Inheritance diagram for utl\+:\+:i2c\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{classutl_1_1i2c__bb__i_3_01virtual__tag_01_4} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +enum \mbox{\hyperlink{classutl_1_1i2c__bb__i_3_01virtual__tag_01_4_af4bc7eeeb830e49046a1033e9c79db7f}{S\+D\+A\+Mode}} \{ \mbox{\hyperlink{classutl_1_1i2c__bb__i_3_01virtual__tag_01_4_af4bc7eeeb830e49046a1033e9c79db7faa84cc046d48610b05c21fd3670d0c829}{S\+D\+A\+Mode\+::\+I\+N\+P\+UT}} =0, +\mbox{\hyperlink{classutl_1_1i2c__bb__i_3_01virtual__tag_01_4_af4bc7eeeb830e49046a1033e9c79db7fa50a87f0d71f7221582dad4bf507a0f34}{S\+D\+A\+Mode\+::\+O\+U\+T\+P\+UT}} + \} +\begin{DoxyCompactList}\small\item\em S\+DA pin direction enumerator. \end{DoxyCompactList}\item +using \mbox{\hyperlink{classutl_1_1i2c__bb__i_3_01virtual__tag_01_4_abedad1f30e2c695d47a84dc68ff05897}{type}} = \mbox{\hyperlink{classutl_1_1i2c__bb__i}{i2c\+\_\+bb\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$ +\begin{DoxyCompactList}\small\item\em Export type as identity meta-\/function. \end{DoxyCompactList}\item +using \mbox{\hyperlink{classutl_1_1i2c__bb__i_3_01virtual__tag_01_4_af8c7ac3797343e39e7e052ec51aec232}{Sequence}} = typename \mbox{\hyperlink{classutl_1_1i2c__i}{i2c\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$\+::\mbox{\hyperlink{classutl_1_1i2c__i_3_01virtual__tag_01_4_a260541de452a9a653162b8b109b26c09}{Sequence}} +\end{DoxyCompactItemize} +\subsection*{Protected Member Functions} +\begin{Indent}\textbf{ Object lifetime}\par +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classutl_1_1i2c__bb__i_3_01virtual__tag_01_4_a0c9341b2a60e9400523de0397c472a76}{i2c\+\_\+bb\+\_\+i}} (uint32\+\_\+t clk) noexcept +\begin{DoxyCompactList}\small\item\em Constructor. \end{DoxyCompactList}\item +virtual \mbox{\hyperlink{classutl_1_1i2c__bb__i_3_01virtual__tag_01_4_afcb5292af5af4c90f58945dab756b2ce}{$\sim$i2c\+\_\+bb\+\_\+i}} () noexcept=default +\begin{DoxyCompactList}\small\item\em Virtual destructor. \end{DoxyCompactList}\end{DoxyCompactItemize} +\end{Indent} +\subsection*{Additional Inherited Members} + + +\subsection{Detailed Description} +\subsubsection*{template$<$$>$\newline +class utl\+::i2c\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag $>$} + +A virtual base class interface specialization. Using the private virtual interface we provide the interface from \mbox{\hyperlink{classutl_1_1i2c__i_3_01virtual__tag_01_4}{i2c\+\_\+i$<$virtual\+\_\+tag$>$}} + + +\begin{DoxyParams}{Parameters} +{\em impl\+\_\+t} & = \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} \\ +\hline +\end{DoxyParams} + + +Definition at line 234 of file i2c\+\_\+bb.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{classutl_1_1i2c__bb__i_3_01virtual__tag_01_4_af8c7ac3797343e39e7e052ec51aec232}\label{classutl_1_1i2c__bb__i_3_01virtual__tag_01_4_af8c7ac3797343e39e7e052ec51aec232}} +\index{utl\+::i2c\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::i2c\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag $>$}!Sequence@{Sequence}} +\index{Sequence@{Sequence}!utl\+::i2c\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::i2c\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{Sequence}{Sequence}} +{\footnotesize\ttfamily using \mbox{\hyperlink{classutl_1_1i2c__bb__i}{utl\+::i2c\+\_\+bb\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$\+::\mbox{\hyperlink{classutl_1_1i2c__i_3_01virtual__tag_01_4_a260541de452a9a653162b8b109b26c09}{Sequence}} = typename \mbox{\hyperlink{classutl_1_1i2c__i}{i2c\+\_\+i}}$<$\mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}$>$\+::\mbox{\hyperlink{classutl_1_1i2c__i_3_01virtual__tag_01_4_a260541de452a9a653162b8b109b26c09}{Sequence}}} + + + +Definition at line 237 of file i2c\+\_\+bb.\+h. + +\mbox{\Hypertarget{classutl_1_1i2c__bb__i_3_01virtual__tag_01_4_abedad1f30e2c695d47a84dc68ff05897}\label{classutl_1_1i2c__bb__i_3_01virtual__tag_01_4_abedad1f30e2c695d47a84dc68ff05897}} +\index{utl\+::i2c\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::i2c\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag $>$}!type@{type}} +\index{type@{type}!utl\+::i2c\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::i2c\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily using \mbox{\hyperlink{classutl_1_1i2c__bb__i}{utl\+::i2c\+\_\+bb\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$\+::\mbox{\hyperlink{classutl_1_1i2c__i_3_01virtual__tag_01_4_ac892faacc1566f4ca1438e3df765bcac}{type}} = \mbox{\hyperlink{classutl_1_1i2c__bb__i}{i2c\+\_\+bb\+\_\+i}}$<$\mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}$>$} + + + +Export type as identity meta-\/function. + + + +Definition at line 236 of file i2c\+\_\+bb.\+h. + + + +\subsection{Member Enumeration Documentation} +\mbox{\Hypertarget{classutl_1_1i2c__bb__i_3_01virtual__tag_01_4_af4bc7eeeb830e49046a1033e9c79db7f}\label{classutl_1_1i2c__bb__i_3_01virtual__tag_01_4_af4bc7eeeb830e49046a1033e9c79db7f}} +\index{utl\+::i2c\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::i2c\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag $>$}!S\+D\+A\+Mode@{S\+D\+A\+Mode}} +\index{S\+D\+A\+Mode@{S\+D\+A\+Mode}!utl\+::i2c\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::i2c\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{S\+D\+A\+Mode}{SDAMode}} +{\footnotesize\ttfamily enum \mbox{\hyperlink{classutl_1_1i2c__bb__i}{utl\+::i2c\+\_\+bb\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$\+::\mbox{\hyperlink{classutl_1_1i2c__bb__i_3_01virtual__tag_01_4_af4bc7eeeb830e49046a1033e9c79db7f}{S\+D\+A\+Mode}}\hspace{0.3cm}{\ttfamily [strong]}} + + + +S\+DA pin direction enumerator. + +\begin{DoxyEnumFields}{Enumerator} +\raisebox{\heightof{T}}[0pt][0pt]{\index{I\+N\+P\+UT@{I\+N\+P\+UT}!utl\+::i2c\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::i2c\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag $>$}}\index{utl\+::i2c\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::i2c\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag $>$}!I\+N\+P\+UT@{I\+N\+P\+UT}}}\mbox{\Hypertarget{classutl_1_1i2c__bb__i_3_01virtual__tag_01_4_af4bc7eeeb830e49046a1033e9c79db7faa84cc046d48610b05c21fd3670d0c829}\label{classutl_1_1i2c__bb__i_3_01virtual__tag_01_4_af4bc7eeeb830e49046a1033e9c79db7faa84cc046d48610b05c21fd3670d0c829}} +I\+N\+P\+UT&\\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{O\+U\+T\+P\+UT@{O\+U\+T\+P\+UT}!utl\+::i2c\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::i2c\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag $>$}}\index{utl\+::i2c\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::i2c\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag $>$}!O\+U\+T\+P\+UT@{O\+U\+T\+P\+UT}}}\mbox{\Hypertarget{classutl_1_1i2c__bb__i_3_01virtual__tag_01_4_af4bc7eeeb830e49046a1033e9c79db7fa50a87f0d71f7221582dad4bf507a0f34}\label{classutl_1_1i2c__bb__i_3_01virtual__tag_01_4_af4bc7eeeb830e49046a1033e9c79db7fa50a87f0d71f7221582dad4bf507a0f34}} +O\+U\+T\+P\+UT&\\ +\hline + +\end{DoxyEnumFields} + + +Definition at line 239 of file i2c\+\_\+bb.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classutl_1_1i2c__bb__i_3_01virtual__tag_01_4_a0c9341b2a60e9400523de0397c472a76}\label{classutl_1_1i2c__bb__i_3_01virtual__tag_01_4_a0c9341b2a60e9400523de0397c472a76}} +\index{utl\+::i2c\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::i2c\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag $>$}!i2c\+\_\+bb\+\_\+i@{i2c\+\_\+bb\+\_\+i}} +\index{i2c\+\_\+bb\+\_\+i@{i2c\+\_\+bb\+\_\+i}!utl\+::i2c\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::i2c\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{i2c\+\_\+bb\+\_\+i()}{i2c\_bb\_i()}} +{\footnotesize\ttfamily \mbox{\hyperlink{classutl_1_1i2c__bb__i}{utl\+::i2c\+\_\+bb\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$\+::\mbox{\hyperlink{classutl_1_1i2c__bb__i}{i2c\+\_\+bb\+\_\+i}} (\begin{DoxyParamCaption}\item[{uint32\+\_\+t}]{clk }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [protected]}, {\ttfamily [noexcept]}} + + + +Constructor. + + + +Definition at line 250 of file i2c\+\_\+bb.\+h. + +\mbox{\Hypertarget{classutl_1_1i2c__bb__i_3_01virtual__tag_01_4_afcb5292af5af4c90f58945dab756b2ce}\label{classutl_1_1i2c__bb__i_3_01virtual__tag_01_4_afcb5292af5af4c90f58945dab756b2ce}} +\index{utl\+::i2c\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::i2c\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag $>$}!````~i2c\+\_\+bb\+\_\+i@{$\sim$i2c\+\_\+bb\+\_\+i}} +\index{````~i2c\+\_\+bb\+\_\+i@{$\sim$i2c\+\_\+bb\+\_\+i}!utl\+::i2c\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::i2c\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{$\sim$i2c\+\_\+bb\+\_\+i()}{~i2c\_bb\_i()}} +{\footnotesize\ttfamily virtual \mbox{\hyperlink{classutl_1_1i2c__bb__i}{utl\+::i2c\+\_\+bb\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$\+::$\sim$\mbox{\hyperlink{classutl_1_1i2c__bb__i}{i2c\+\_\+bb\+\_\+i}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [virtual]}, {\ttfamily [default]}, {\ttfamily [noexcept]}} + + + +Virtual destructor. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/com/\mbox{\hyperlink{i2c__bb_8h}{i2c\+\_\+bb.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classutl_1_1i2c__i.eps b/doc/latex/classutl_1_1i2c__i.eps new file mode 100644 index 0000000..93bd17d --- /dev/null +++ b/doc/latex/classutl_1_1i2c__i.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 279.720280 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.787500 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::i2c_i< impl_t >) cw +(utl::i2c_bb_i< impl_t >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::i2c_i< impl_t >) 0.000000 1.000000 box + (utl::i2c_bb_i< impl_t >) 0.000000 0.000000 box + +% ----- relations ----- + +solid +1 0.000000 0.250000 out +solid +0 0.000000 0.750000 in diff --git a/doc/latex/classutl_1_1i2c__i.tex b/doc/latex/classutl_1_1i2c__i.tex new file mode 100644 index 0000000..0e2d74a --- /dev/null +++ b/doc/latex/classutl_1_1i2c__i.tex @@ -0,0 +1,292 @@ +\hypertarget{classutl_1_1i2c__i}{}\section{utl\+:\+:i2c\+\_\+i$<$ impl\+\_\+t $>$ Class Template Reference} +\label{classutl_1_1i2c__i}\index{utl\+::i2c\+\_\+i$<$ impl\+\_\+t $>$@{utl\+::i2c\+\_\+i$<$ impl\+\_\+t $>$}} + + +Abstract base class for i2c bus. + + + + +{\ttfamily \#include $<$i2c.\+h$>$} + +Inheritance diagram for utl\+:\+:i2c\+\_\+i$<$ impl\+\_\+t $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{classutl_1_1i2c__i} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +enum \mbox{\hyperlink{classutl_1_1i2c__i_a7e2dde443c6c9bde4a2293beb22950c5}{Sequence}} \{ \mbox{\hyperlink{classutl_1_1i2c__i_a7e2dde443c6c9bde4a2293beb22950c5ae409eb2ba6eb6801f52763ae370c350e}{Sequence\+::\+B\+Y\+TE}} =0, +\mbox{\hyperlink{classutl_1_1i2c__i_a7e2dde443c6c9bde4a2293beb22950c5a0fc437bc317835cad5faafc12a83fad5}{Sequence\+::\+A\+CK}}, +\mbox{\hyperlink{classutl_1_1i2c__i_a7e2dde443c6c9bde4a2293beb22950c5a01af7e5aa5863a91810dd4e5d0e383ce}{Sequence\+::\+B\+Y\+T\+En\+A\+CK}} + \} +\begin{DoxyCompactList}\small\item\em I2C transmit/receive sequence. \end{DoxyCompactList}\item +using \mbox{\hyperlink{classutl_1_1i2c__i_aa9267a8602702b78f188e0cf61b68a55}{type}} = \mbox{\hyperlink{classutl_1_1i2c__i}{i2c\+\_\+i}}$<$ impl\+\_\+t $>$ +\end{DoxyCompactItemize} +\subsection*{Public Member Functions} +\begin{Indent}\textbf{ Get/\+Set functions}\par +\begin{DoxyCompactItemize} +\item +uint32\+\_\+t \mbox{\hyperlink{classutl_1_1i2c__i_aac5fed816701cc4543acd717ec804ac0}{clock}} () const +\item +void \mbox{\hyperlink{classutl_1_1i2c__i_ae4c59938aeeb1f0726195d425a4c0083}{clock}} (uint32\+\_\+t f) +\begin{DoxyCompactList}\small\item\em set clock frequency of the bus \end{DoxyCompactList}\end{DoxyCompactItemize} +\end{Indent} +\begin{Indent}\textbf{ User functions}\par +\begin{DoxyCompactItemize} +\item +void \mbox{\hyperlink{classutl_1_1i2c__i_a3591683e5fbf17b582f6ac1f79af871d}{start}} () +\begin{DoxyCompactList}\small\item\em Send start functionality. \end{DoxyCompactList}\item +void \mbox{\hyperlink{classutl_1_1i2c__i_a1310b52ac908b8c37059fb253cc3f56e}{stop}} () +\begin{DoxyCompactList}\small\item\em Send stop functionality. \end{DoxyCompactList}\item +\mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} \mbox{\hyperlink{classutl_1_1i2c__i_ab2f6a579096b4872f5dfd1530e200eda}{rx\+\_\+data}} (bool ack, \mbox{\hyperlink{classutl_1_1i2c__i_a7e2dde443c6c9bde4a2293beb22950c5}{Sequence}} seq=\mbox{\hyperlink{classutl_1_1i2c__i_a7e2dde443c6c9bde4a2293beb22950c5a01af7e5aa5863a91810dd4e5d0e383ce}{Sequence\+::\+B\+Y\+T\+En\+A\+CK}}) +\begin{DoxyCompactList}\small\item\em Receive a byte from the i2c bus. \end{DoxyCompactList}\item +bool \mbox{\hyperlink{classutl_1_1i2c__i_aaf0b0ceec57fd8014ea3e6b58e9bfe3d}{tx\+\_\+data}} (\mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} byte, \mbox{\hyperlink{classutl_1_1i2c__i_a7e2dde443c6c9bde4a2293beb22950c5}{Sequence}} seq=\mbox{\hyperlink{classutl_1_1i2c__i_a7e2dde443c6c9bde4a2293beb22950c5a01af7e5aa5863a91810dd4e5d0e383ce}{Sequence\+::\+B\+Y\+T\+En\+A\+CK}}) +\begin{DoxyCompactList}\small\item\em Transmit a byte to the i2c bus. \end{DoxyCompactList}\end{DoxyCompactItemize} +\end{Indent} +\subsection*{Protected Member Functions} +\begin{Indent}\textbf{ Object lifetime}\par +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classutl_1_1i2c__i_a84375c05d1c40d9992aa1290dd488410}{i2c\+\_\+i}} ()=default +\begin{DoxyCompactList}\small\item\em Allow constructor from derived only. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1i2c__i_a6a07d19db8974ad606031b60a6079957}{$\sim$i2c\+\_\+i}} ()=default +\begin{DoxyCompactList}\small\item\em Allow destructor from derived only. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1i2c__i_adff01408628f58b7c6ce9b0cd63d70df}{i2c\+\_\+i}} (const \mbox{\hyperlink{classutl_1_1i2c__i_aa9267a8602702b78f188e0cf61b68a55}{type}} \&)=delete +\begin{DoxyCompactList}\small\item\em No copies. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1i2c__i_aa9267a8602702b78f188e0cf61b68a55}{type}} \& \mbox{\hyperlink{classutl_1_1i2c__i_aee83d11e02c3a0639dd3ed1ea440ed24}{operator=}} (const \mbox{\hyperlink{classutl_1_1i2c__i_aa9267a8602702b78f188e0cf61b68a55}{type}} \&)=delete +\end{DoxyCompactItemize} +\end{Indent} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename impl\+\_\+t$>$\newline +class utl\+::i2c\+\_\+i$<$ impl\+\_\+t $>$} + +Abstract base class for i2c bus. + +this class force a common interface for I2C communication protocol implementations using C\+R\+TP +\begin{DoxyParams}{Parameters} +{\em impl\+\_\+t} & The C\+R\+TP type (the derived/implementation class typename). \\ +\hline +\end{DoxyParams} + + +Definition at line 43 of file i2c.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{classutl_1_1i2c__i_aa9267a8602702b78f188e0cf61b68a55}\label{classutl_1_1i2c__i_aa9267a8602702b78f188e0cf61b68a55}} +\index{utl\+::i2c\+\_\+i@{utl\+::i2c\+\_\+i}!type@{type}} +\index{type@{type}!utl\+::i2c\+\_\+i@{utl\+::i2c\+\_\+i}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t$>$ \\ +using \mbox{\hyperlink{classutl_1_1i2c__i}{utl\+::i2c\+\_\+i}}$<$ impl\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1i2c__i_aa9267a8602702b78f188e0cf61b68a55}{type}} = \mbox{\hyperlink{classutl_1_1i2c__i}{i2c\+\_\+i}}$<$impl\+\_\+t$>$} + +Export type as identity meta-\/function + +Definition at line 47 of file i2c.\+h. + + + +\subsection{Member Enumeration Documentation} +\mbox{\Hypertarget{classutl_1_1i2c__i_a7e2dde443c6c9bde4a2293beb22950c5}\label{classutl_1_1i2c__i_a7e2dde443c6c9bde4a2293beb22950c5}} +\index{utl\+::i2c\+\_\+i@{utl\+::i2c\+\_\+i}!Sequence@{Sequence}} +\index{Sequence@{Sequence}!utl\+::i2c\+\_\+i@{utl\+::i2c\+\_\+i}} +\subsubsection{\texorpdfstring{Sequence}{Sequence}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t$>$ \\ +enum \mbox{\hyperlink{classutl_1_1i2c__i_a7e2dde443c6c9bde4a2293beb22950c5}{utl\+::i2c\+\_\+i\+::\+Sequence}}\hspace{0.3cm}{\ttfamily [strong]}} + + + +I2C transmit/receive sequence. + +\begin{DoxyEnumFields}{Enumerator} +\raisebox{\heightof{T}}[0pt][0pt]{\index{B\+Y\+TE@{B\+Y\+TE}!utl\+::i2c\+\_\+i@{utl\+::i2c\+\_\+i}}\index{utl\+::i2c\+\_\+i@{utl\+::i2c\+\_\+i}!B\+Y\+TE@{B\+Y\+TE}}}\mbox{\Hypertarget{classutl_1_1i2c__i_a7e2dde443c6c9bde4a2293beb22950c5ae409eb2ba6eb6801f52763ae370c350e}\label{classutl_1_1i2c__i_a7e2dde443c6c9bde4a2293beb22950c5ae409eb2ba6eb6801f52763ae370c350e}} +B\+Y\+TE&Only read/write byte \mbox{[}8 clocks\mbox{]}. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{A\+CK@{A\+CK}!utl\+::i2c\+\_\+i@{utl\+::i2c\+\_\+i}}\index{utl\+::i2c\+\_\+i@{utl\+::i2c\+\_\+i}!A\+CK@{A\+CK}}}\mbox{\Hypertarget{classutl_1_1i2c__i_a7e2dde443c6c9bde4a2293beb22950c5a0fc437bc317835cad5faafc12a83fad5}\label{classutl_1_1i2c__i_a7e2dde443c6c9bde4a2293beb22950c5a0fc437bc317835cad5faafc12a83fad5}} +A\+CK&Only send/receive ack \mbox{[}1 clock\mbox{]}. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{B\+Y\+T\+En\+A\+CK@{B\+Y\+T\+En\+A\+CK}!utl\+::i2c\+\_\+i@{utl\+::i2c\+\_\+i}}\index{utl\+::i2c\+\_\+i@{utl\+::i2c\+\_\+i}!B\+Y\+T\+En\+A\+CK@{B\+Y\+T\+En\+A\+CK}}}\mbox{\Hypertarget{classutl_1_1i2c__i_a7e2dde443c6c9bde4a2293beb22950c5a01af7e5aa5863a91810dd4e5d0e383ce}\label{classutl_1_1i2c__i_a7e2dde443c6c9bde4a2293beb22950c5a01af7e5aa5863a91810dd4e5d0e383ce}} +B\+Y\+T\+En\+A\+CK&Read/\+Write byte and ack \mbox{[}9 clocks\mbox{]}. \\ +\hline + +\end{DoxyEnumFields} + + +Definition at line 49 of file i2c.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classutl_1_1i2c__i_a84375c05d1c40d9992aa1290dd488410}\label{classutl_1_1i2c__i_a84375c05d1c40d9992aa1290dd488410}} +\index{utl\+::i2c\+\_\+i@{utl\+::i2c\+\_\+i}!i2c\+\_\+i@{i2c\+\_\+i}} +\index{i2c\+\_\+i@{i2c\+\_\+i}!utl\+::i2c\+\_\+i@{utl\+::i2c\+\_\+i}} +\subsubsection{\texorpdfstring{i2c\+\_\+i()}{i2c\_i()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t$>$ \\ +\mbox{\hyperlink{classutl_1_1i2c__i}{utl\+::i2c\+\_\+i}}$<$ impl\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1i2c__i}{i2c\+\_\+i}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [default]}} + + + +Allow constructor from derived only. + +\mbox{\Hypertarget{classutl_1_1i2c__i_a6a07d19db8974ad606031b60a6079957}\label{classutl_1_1i2c__i_a6a07d19db8974ad606031b60a6079957}} +\index{utl\+::i2c\+\_\+i@{utl\+::i2c\+\_\+i}!````~i2c\+\_\+i@{$\sim$i2c\+\_\+i}} +\index{````~i2c\+\_\+i@{$\sim$i2c\+\_\+i}!utl\+::i2c\+\_\+i@{utl\+::i2c\+\_\+i}} +\subsubsection{\texorpdfstring{$\sim$i2c\+\_\+i()}{~i2c\_i()}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t$>$ \\ +\mbox{\hyperlink{classutl_1_1i2c__i}{utl\+::i2c\+\_\+i}}$<$ impl\+\_\+t $>$\+::$\sim$\mbox{\hyperlink{classutl_1_1i2c__i}{i2c\+\_\+i}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [default]}} + + + +Allow destructor from derived only. + +\mbox{\Hypertarget{classutl_1_1i2c__i_adff01408628f58b7c6ce9b0cd63d70df}\label{classutl_1_1i2c__i_adff01408628f58b7c6ce9b0cd63d70df}} +\index{utl\+::i2c\+\_\+i@{utl\+::i2c\+\_\+i}!i2c\+\_\+i@{i2c\+\_\+i}} +\index{i2c\+\_\+i@{i2c\+\_\+i}!utl\+::i2c\+\_\+i@{utl\+::i2c\+\_\+i}} +\subsubsection{\texorpdfstring{i2c\+\_\+i()}{i2c\_i()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t$>$ \\ +\mbox{\hyperlink{classutl_1_1i2c__i}{utl\+::i2c\+\_\+i}}$<$ impl\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1i2c__i}{i2c\+\_\+i}} (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1i2c__i_aa9267a8602702b78f188e0cf61b68a55}{type}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [delete]}} + + + +No copies. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classutl_1_1i2c__i_aac5fed816701cc4543acd717ec804ac0}\label{classutl_1_1i2c__i_aac5fed816701cc4543acd717ec804ac0}} +\index{utl\+::i2c\+\_\+i@{utl\+::i2c\+\_\+i}!clock@{clock}} +\index{clock@{clock}!utl\+::i2c\+\_\+i@{utl\+::i2c\+\_\+i}} +\subsubsection{\texorpdfstring{clock()}{clock()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t$>$ \\ +uint32\+\_\+t \mbox{\hyperlink{classutl_1_1i2c__i}{utl\+::i2c\+\_\+i}}$<$ impl\+\_\+t $>$\+::clock (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + +\begin{DoxyReturn}{Returns} +clock frequency of the bus +\end{DoxyReturn} + + +Definition at line 87 of file i2c.\+h. + +\mbox{\Hypertarget{classutl_1_1i2c__i_ae4c59938aeeb1f0726195d425a4c0083}\label{classutl_1_1i2c__i_ae4c59938aeeb1f0726195d425a4c0083}} +\index{utl\+::i2c\+\_\+i@{utl\+::i2c\+\_\+i}!clock@{clock}} +\index{clock@{clock}!utl\+::i2c\+\_\+i@{utl\+::i2c\+\_\+i}} +\subsubsection{\texorpdfstring{clock()}{clock()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t$>$ \\ +void \mbox{\hyperlink{classutl_1_1i2c__i}{utl\+::i2c\+\_\+i}}$<$ impl\+\_\+t $>$\+::clock (\begin{DoxyParamCaption}\item[{uint32\+\_\+t}]{f }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +set clock frequency of the bus + + + +Definition at line 88 of file i2c.\+h. + +\mbox{\Hypertarget{classutl_1_1i2c__i_aee83d11e02c3a0639dd3ed1ea440ed24}\label{classutl_1_1i2c__i_aee83d11e02c3a0639dd3ed1ea440ed24}} +\index{utl\+::i2c\+\_\+i@{utl\+::i2c\+\_\+i}!operator=@{operator=}} +\index{operator=@{operator=}!utl\+::i2c\+\_\+i@{utl\+::i2c\+\_\+i}} +\subsubsection{\texorpdfstring{operator=()}{operator=()}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t$>$ \\ +\mbox{\hyperlink{classutl_1_1i2c__i_aa9267a8602702b78f188e0cf61b68a55}{type}}\& \mbox{\hyperlink{classutl_1_1i2c__i}{utl\+::i2c\+\_\+i}}$<$ impl\+\_\+t $>$\+::operator= (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1i2c__i_aa9267a8602702b78f188e0cf61b68a55}{type}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [delete]}} + +\mbox{\Hypertarget{classutl_1_1i2c__i_ab2f6a579096b4872f5dfd1530e200eda}\label{classutl_1_1i2c__i_ab2f6a579096b4872f5dfd1530e200eda}} +\index{utl\+::i2c\+\_\+i@{utl\+::i2c\+\_\+i}!rx\+\_\+data@{rx\+\_\+data}} +\index{rx\+\_\+data@{rx\+\_\+data}!utl\+::i2c\+\_\+i@{utl\+::i2c\+\_\+i}} +\subsubsection{\texorpdfstring{rx\+\_\+data()}{rx\_data()}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t$>$ \\ +\mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} \mbox{\hyperlink{classutl_1_1i2c__i}{utl\+::i2c\+\_\+i}}$<$ impl\+\_\+t $>$\+::rx\+\_\+data (\begin{DoxyParamCaption}\item[{bool}]{ack, }\item[{\mbox{\hyperlink{classutl_1_1i2c__i_a7e2dde443c6c9bde4a2293beb22950c5}{Sequence}}}]{seq = {\ttfamily \mbox{\hyperlink{classutl_1_1i2c__i_a7e2dde443c6c9bde4a2293beb22950c5a01af7e5aa5863a91810dd4e5d0e383ce}{Sequence\+::\+B\+Y\+T\+En\+A\+CK}}} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Receive a byte from the i2c bus. + + +\begin{DoxyParams}{Parameters} +{\em ack} & Optional ack bit. \begin{DoxyItemize} +\item 1 A\+CK the reception \item 0 Don\textquotesingle{}t A\+CK the reception. \end{DoxyItemize} +\\ +\hline +{\em seq} & The operation sequence to execute \begin{DoxyItemize} +\item \mbox{\hyperlink{classutl_1_1i2c__i_a7e2dde443c6c9bde4a2293beb22950c5ae409eb2ba6eb6801f52763ae370c350e}{Sequence\+::\+B\+Y\+TE}} Receive only the byte, do not send ack clock \item \mbox{\hyperlink{classutl_1_1i2c__i_a7e2dde443c6c9bde4a2293beb22950c5a0fc437bc317835cad5faafc12a83fad5}{Sequence\+::\+A\+CK}} Send only the ack bit \item \mbox{\hyperlink{classutl_1_1i2c__i_a7e2dde443c6c9bde4a2293beb22950c5a01af7e5aa5863a91810dd4e5d0e383ce}{Sequence\+::\+B\+Y\+T\+En\+A\+CK}} Receive the byte and send the ack bit \end{DoxyItemize} +\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +The byte received. +\end{DoxyReturn} + + +Definition at line 111 of file i2c.\+h. + +\mbox{\Hypertarget{classutl_1_1i2c__i_a3591683e5fbf17b582f6ac1f79af871d}\label{classutl_1_1i2c__i_a3591683e5fbf17b582f6ac1f79af871d}} +\index{utl\+::i2c\+\_\+i@{utl\+::i2c\+\_\+i}!start@{start}} +\index{start@{start}!utl\+::i2c\+\_\+i@{utl\+::i2c\+\_\+i}} +\subsubsection{\texorpdfstring{start()}{start()}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t$>$ \\ +void \mbox{\hyperlink{classutl_1_1i2c__i}{utl\+::i2c\+\_\+i}}$<$ impl\+\_\+t $>$\+::start (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Send start functionality. + + + +Definition at line 96 of file i2c.\+h. + +\mbox{\Hypertarget{classutl_1_1i2c__i_a1310b52ac908b8c37059fb253cc3f56e}\label{classutl_1_1i2c__i_a1310b52ac908b8c37059fb253cc3f56e}} +\index{utl\+::i2c\+\_\+i@{utl\+::i2c\+\_\+i}!stop@{stop}} +\index{stop@{stop}!utl\+::i2c\+\_\+i@{utl\+::i2c\+\_\+i}} +\subsubsection{\texorpdfstring{stop()}{stop()}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t$>$ \\ +void \mbox{\hyperlink{classutl_1_1i2c__i}{utl\+::i2c\+\_\+i}}$<$ impl\+\_\+t $>$\+::stop (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Send stop functionality. + + + +Definition at line 97 of file i2c.\+h. + +\mbox{\Hypertarget{classutl_1_1i2c__i_aaf0b0ceec57fd8014ea3e6b58e9bfe3d}\label{classutl_1_1i2c__i_aaf0b0ceec57fd8014ea3e6b58e9bfe3d}} +\index{utl\+::i2c\+\_\+i@{utl\+::i2c\+\_\+i}!tx\+\_\+data@{tx\+\_\+data}} +\index{tx\+\_\+data@{tx\+\_\+data}!utl\+::i2c\+\_\+i@{utl\+::i2c\+\_\+i}} +\subsubsection{\texorpdfstring{tx\+\_\+data()}{tx\_data()}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t$>$ \\ +bool \mbox{\hyperlink{classutl_1_1i2c__i}{utl\+::i2c\+\_\+i}}$<$ impl\+\_\+t $>$\+::tx\+\_\+data (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}}}]{byte, }\item[{\mbox{\hyperlink{classutl_1_1i2c__i_a7e2dde443c6c9bde4a2293beb22950c5}{Sequence}}}]{seq = {\ttfamily \mbox{\hyperlink{classutl_1_1i2c__i_a7e2dde443c6c9bde4a2293beb22950c5a01af7e5aa5863a91810dd4e5d0e383ce}{Sequence\+::\+B\+Y\+T\+En\+A\+CK}}} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Transmit a byte to the i2c bus. + + +\begin{DoxyParams}{Parameters} +{\em byte} & The byte to send. \\ +\hline +{\em seq} & The operation sequence to execute \begin{DoxyItemize} +\item \mbox{\hyperlink{classutl_1_1i2c__i_a7e2dde443c6c9bde4a2293beb22950c5ae409eb2ba6eb6801f52763ae370c350e}{Sequence\+::\+B\+Y\+TE}} Transmit only the byte, do not read ack bit \item \mbox{\hyperlink{classutl_1_1i2c__i_a7e2dde443c6c9bde4a2293beb22950c5a0fc437bc317835cad5faafc12a83fad5}{Sequence\+::\+A\+CK}} Read only the ack bit \item \mbox{\hyperlink{classutl_1_1i2c__i_a7e2dde443c6c9bde4a2293beb22950c5a01af7e5aa5863a91810dd4e5d0e383ce}{Sequence\+::\+B\+Y\+T\+En\+A\+CK}} Transmit the byte and read the ack bit \end{DoxyItemize} +\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +Slave\textquotesingle{}s A\+CK bit \begin{DoxyItemize} +\item false Slave didn\textquotesingle{}t A\+CK \item true Slave did A\+CK \end{DoxyItemize} + +\end{DoxyReturn} + + +Definition at line 127 of file i2c.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/com/\mbox{\hyperlink{i2c_8h}{i2c.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classutl_1_1i2c__i_3_01virtual__tag_01_4.eps b/doc/latex/classutl_1_1i2c__i_3_01virtual__tag_01_4.eps new file mode 100644 index 0000000..0e27062 --- /dev/null +++ b/doc/latex/classutl_1_1i2c__i_3_01virtual__tag_01_4.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 235.294118 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.125000 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::i2c_i< virtual_tag >) cw +(utl::i2c_bb_i< virtual_tag >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::i2c_i< virtual_tag >) 0.000000 1.000000 box + (utl::i2c_bb_i< virtual_tag >) 0.000000 0.000000 box + +% ----- relations ----- + +solid +1 0.000000 0.250000 out +solid +0 0.000000 0.750000 in diff --git a/doc/latex/classutl_1_1i2c__i_3_01virtual__tag_01_4.tex b/doc/latex/classutl_1_1i2c__i_3_01virtual__tag_01_4.tex new file mode 100644 index 0000000..5b4920e --- /dev/null +++ b/doc/latex/classutl_1_1i2c__i_3_01virtual__tag_01_4.tex @@ -0,0 +1,270 @@ +\hypertarget{classutl_1_1i2c__i_3_01virtual__tag_01_4}{}\section{utl\+:\+:i2c\+\_\+i$<$ virtual\+\_\+tag $>$ Class Template Reference} +\label{classutl_1_1i2c__i_3_01virtual__tag_01_4}\index{utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$}} + + +A virtual base class specialization. + + + + +{\ttfamily \#include $<$i2c.\+h$>$} + +Inheritance diagram for utl\+:\+:i2c\+\_\+i$<$ virtual\+\_\+tag $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{classutl_1_1i2c__i_3_01virtual__tag_01_4} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +enum \mbox{\hyperlink{classutl_1_1i2c__i_3_01virtual__tag_01_4_a260541de452a9a653162b8b109b26c09}{Sequence}} \{ \mbox{\hyperlink{classutl_1_1i2c__i_3_01virtual__tag_01_4_a260541de452a9a653162b8b109b26c09ae409eb2ba6eb6801f52763ae370c350e}{Sequence\+::\+B\+Y\+TE}} =0, +\mbox{\hyperlink{classutl_1_1i2c__i_3_01virtual__tag_01_4_a260541de452a9a653162b8b109b26c09a0fc437bc317835cad5faafc12a83fad5}{Sequence\+::\+A\+CK}}, +\mbox{\hyperlink{classutl_1_1i2c__i_3_01virtual__tag_01_4_a260541de452a9a653162b8b109b26c09a01af7e5aa5863a91810dd4e5d0e383ce}{Sequence\+::\+B\+Y\+T\+En\+A\+CK}} + \} +\begin{DoxyCompactList}\small\item\em I2C transmit/receive sequence. \end{DoxyCompactList}\item +using \mbox{\hyperlink{classutl_1_1i2c__i_3_01virtual__tag_01_4_ac892faacc1566f4ca1438e3df765bcac}{type}} = \mbox{\hyperlink{classutl_1_1i2c__i}{i2c\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$ +\begin{DoxyCompactList}\small\item\em Export type as identity meta-\/function. \end{DoxyCompactList}\end{DoxyCompactItemize} +\subsection*{Public Member Functions} +\begin{Indent}\textbf{ Get/\+Set functions}\par +\begin{DoxyCompactItemize} +\item +uint32\+\_\+t \mbox{\hyperlink{classutl_1_1i2c__i_3_01virtual__tag_01_4_a7b905fe7f0878a83d1c08a3fb95ac093}{clock}} () const +\item +void \mbox{\hyperlink{classutl_1_1i2c__i_3_01virtual__tag_01_4_a7a267d84ea677bc2d11b25dc828f67a7}{clock}} (uint32\+\_\+t c) +\begin{DoxyCompactList}\small\item\em set clock frequency of the bus \mbox{[}Hz\mbox{]} \end{DoxyCompactList}\end{DoxyCompactItemize} +\end{Indent} +\begin{Indent}\textbf{ User functions}\par +\begin{DoxyCompactItemize} +\item +void \mbox{\hyperlink{classutl_1_1i2c__i_3_01virtual__tag_01_4_ad7e9c66a85ab55f80bb0977208517603}{start}} () +\item +void \mbox{\hyperlink{classutl_1_1i2c__i_3_01virtual__tag_01_4_a86b0da49baf7d149ce5e316db186d65c}{stop}} () +\item +\mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} \mbox{\hyperlink{classutl_1_1i2c__i_3_01virtual__tag_01_4_a6dccb32f00830226f6782034177c7d8b}{rx\+\_\+data}} (bool ack, \mbox{\hyperlink{classutl_1_1i2c__i_3_01virtual__tag_01_4_a260541de452a9a653162b8b109b26c09}{Sequence}} seq=Sequence\+::\+B\+Y\+T\+En\+A\+CK) +\begin{DoxyCompactList}\small\item\em Receive a byte from the i2c bus. \end{DoxyCompactList}\item +bool \mbox{\hyperlink{classutl_1_1i2c__i_3_01virtual__tag_01_4_a5e60b4bda2d7203aa8f2df35aa6dfa5d}{tx\+\_\+data}} (\mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} byte, \mbox{\hyperlink{classutl_1_1i2c__i_3_01virtual__tag_01_4_a260541de452a9a653162b8b109b26c09}{Sequence}} seq=Sequence\+::\+B\+Y\+T\+En\+A\+CK) +\begin{DoxyCompactList}\small\item\em Transmit a byte to the i2c bus. \end{DoxyCompactList}\end{DoxyCompactItemize} +\end{Indent} +\subsection*{Object lifetime} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classutl_1_1i2c__i_3_01virtual__tag_01_4_a31335550747f46adabf153e9ad206882}{i2c\+\_\+i}} ()=default +\begin{DoxyCompactList}\small\item\em Allow constructor from derived only. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1i2c__i_3_01virtual__tag_01_4_a5f530866d47aa343b4372da308f482dc}{i2c\+\_\+i}} (const \mbox{\hyperlink{classutl_1_1i2c__i_3_01virtual__tag_01_4_ac892faacc1566f4ca1438e3df765bcac}{type}} \&)=delete +\begin{DoxyCompactList}\small\item\em No copies. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1i2c__i_3_01virtual__tag_01_4_ac892faacc1566f4ca1438e3df765bcac}{type}} \& \mbox{\hyperlink{classutl_1_1i2c__i_3_01virtual__tag_01_4_a931323b813a653057e039416e0fd5b99}{operator=}} (const \mbox{\hyperlink{classutl_1_1i2c__i_3_01virtual__tag_01_4_ac892faacc1566f4ca1438e3df765bcac}{type}} \&)=delete +\item +virtual \mbox{\hyperlink{classutl_1_1i2c__i_3_01virtual__tag_01_4_a9190c053fb15634b5aab672f17d9544f}{$\sim$i2c\+\_\+i}} ()=default +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$$>$\newline +class utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$} + +A virtual base class specialization. + + +\begin{DoxyParams}{Parameters} +{\em impl\+\_\+t} & = \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} \\ +\hline +\end{DoxyParams} + + +Definition at line 140 of file i2c.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{classutl_1_1i2c__i_3_01virtual__tag_01_4_ac892faacc1566f4ca1438e3df765bcac}\label{classutl_1_1i2c__i_3_01virtual__tag_01_4_ac892faacc1566f4ca1438e3df765bcac}} +\index{utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$}!type@{type}} +\index{type@{type}!utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily using \mbox{\hyperlink{classutl_1_1i2c__i}{utl\+::i2c\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$\+::\mbox{\hyperlink{classutl_1_1i2c__i_3_01virtual__tag_01_4_ac892faacc1566f4ca1438e3df765bcac}{type}} = \mbox{\hyperlink{classutl_1_1i2c__i}{i2c\+\_\+i}} $<$\mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}$>$} + + + +Export type as identity meta-\/function. + + + +Definition at line 142 of file i2c.\+h. + + + +\subsection{Member Enumeration Documentation} +\mbox{\Hypertarget{classutl_1_1i2c__i_3_01virtual__tag_01_4_a260541de452a9a653162b8b109b26c09}\label{classutl_1_1i2c__i_3_01virtual__tag_01_4_a260541de452a9a653162b8b109b26c09}} +\index{utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$}!Sequence@{Sequence}} +\index{Sequence@{Sequence}!utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{Sequence}{Sequence}} +{\footnotesize\ttfamily enum \mbox{\hyperlink{classutl_1_1i2c__i}{utl\+::i2c\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$\+::\mbox{\hyperlink{classutl_1_1i2c__i_3_01virtual__tag_01_4_a260541de452a9a653162b8b109b26c09}{Sequence}}\hspace{0.3cm}{\ttfamily [strong]}} + + + +I2C transmit/receive sequence. + +\begin{DoxyEnumFields}{Enumerator} +\raisebox{\heightof{T}}[0pt][0pt]{\index{B\+Y\+TE@{B\+Y\+TE}!utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$}}\index{utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$}!B\+Y\+TE@{B\+Y\+TE}}}\mbox{\Hypertarget{classutl_1_1i2c__i_3_01virtual__tag_01_4_a260541de452a9a653162b8b109b26c09ae409eb2ba6eb6801f52763ae370c350e}\label{classutl_1_1i2c__i_3_01virtual__tag_01_4_a260541de452a9a653162b8b109b26c09ae409eb2ba6eb6801f52763ae370c350e}} +B\+Y\+TE&Only read/write byte \mbox{[}8 clocks\mbox{]}. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{A\+CK@{A\+CK}!utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$}}\index{utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$}!A\+CK@{A\+CK}}}\mbox{\Hypertarget{classutl_1_1i2c__i_3_01virtual__tag_01_4_a260541de452a9a653162b8b109b26c09a0fc437bc317835cad5faafc12a83fad5}\label{classutl_1_1i2c__i_3_01virtual__tag_01_4_a260541de452a9a653162b8b109b26c09a0fc437bc317835cad5faafc12a83fad5}} +A\+CK&Only send/receive ack \mbox{[}1 clock\mbox{]}. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{B\+Y\+T\+En\+A\+CK@{B\+Y\+T\+En\+A\+CK}!utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$}}\index{utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$}!B\+Y\+T\+En\+A\+CK@{B\+Y\+T\+En\+A\+CK}}}\mbox{\Hypertarget{classutl_1_1i2c__i_3_01virtual__tag_01_4_a260541de452a9a653162b8b109b26c09a01af7e5aa5863a91810dd4e5d0e383ce}\label{classutl_1_1i2c__i_3_01virtual__tag_01_4_a260541de452a9a653162b8b109b26c09a01af7e5aa5863a91810dd4e5d0e383ce}} +B\+Y\+T\+En\+A\+CK&Read/\+Write byte and ack \mbox{[}9 clocks\mbox{]}. \\ +\hline + +\end{DoxyEnumFields} + + +Definition at line 145 of file i2c.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classutl_1_1i2c__i_3_01virtual__tag_01_4_a31335550747f46adabf153e9ad206882}\label{classutl_1_1i2c__i_3_01virtual__tag_01_4_a31335550747f46adabf153e9ad206882}} +\index{utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$}!i2c\+\_\+i@{i2c\+\_\+i}} +\index{i2c\+\_\+i@{i2c\+\_\+i}!utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{i2c\+\_\+i()}{i2c\_i()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily \mbox{\hyperlink{classutl_1_1i2c__i}{utl\+::i2c\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$\+::\mbox{\hyperlink{classutl_1_1i2c__i}{i2c\+\_\+i}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [default]}} + + + +Allow constructor from derived only. + +\mbox{\Hypertarget{classutl_1_1i2c__i_3_01virtual__tag_01_4_a5f530866d47aa343b4372da308f482dc}\label{classutl_1_1i2c__i_3_01virtual__tag_01_4_a5f530866d47aa343b4372da308f482dc}} +\index{utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$}!i2c\+\_\+i@{i2c\+\_\+i}} +\index{i2c\+\_\+i@{i2c\+\_\+i}!utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{i2c\+\_\+i()}{i2c\_i()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily \mbox{\hyperlink{classutl_1_1i2c__i}{utl\+::i2c\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$\+::\mbox{\hyperlink{classutl_1_1i2c__i}{i2c\+\_\+i}} (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1i2c__i_3_01virtual__tag_01_4_ac892faacc1566f4ca1438e3df765bcac}{type}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [delete]}} + + + +No copies. + +\mbox{\Hypertarget{classutl_1_1i2c__i_3_01virtual__tag_01_4_a9190c053fb15634b5aab672f17d9544f}\label{classutl_1_1i2c__i_3_01virtual__tag_01_4_a9190c053fb15634b5aab672f17d9544f}} +\index{utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$}!````~i2c\+\_\+i@{$\sim$i2c\+\_\+i}} +\index{````~i2c\+\_\+i@{$\sim$i2c\+\_\+i}!utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{$\sim$i2c\+\_\+i()}{~i2c\_i()}} +{\footnotesize\ttfamily virtual \mbox{\hyperlink{classutl_1_1i2c__i}{utl\+::i2c\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$\+::$\sim$\mbox{\hyperlink{classutl_1_1i2c__i}{i2c\+\_\+i}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}, {\ttfamily [default]}} + +Virtual default destructor + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classutl_1_1i2c__i_3_01virtual__tag_01_4_a7b905fe7f0878a83d1c08a3fb95ac093}\label{classutl_1_1i2c__i_3_01virtual__tag_01_4_a7b905fe7f0878a83d1c08a3fb95ac093}} +\index{utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$}!clock@{clock}} +\index{clock@{clock}!utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{clock()}{clock()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily uint32\+\_\+t \mbox{\hyperlink{classutl_1_1i2c__i}{utl\+::i2c\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$\+::clock (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + +\begin{DoxyReturn}{Returns} +clock frequency of the bus \mbox{[}Hz\mbox{]} +\end{DoxyReturn} + + +Definition at line 180 of file i2c.\+h. + +\mbox{\Hypertarget{classutl_1_1i2c__i_3_01virtual__tag_01_4_a7a267d84ea677bc2d11b25dc828f67a7}\label{classutl_1_1i2c__i_3_01virtual__tag_01_4_a7a267d84ea677bc2d11b25dc828f67a7}} +\index{utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$}!clock@{clock}} +\index{clock@{clock}!utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{clock()}{clock()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily void \mbox{\hyperlink{classutl_1_1i2c__i}{utl\+::i2c\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$\+::clock (\begin{DoxyParamCaption}\item[{uint32\+\_\+t}]{c }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +set clock frequency of the bus \mbox{[}Hz\mbox{]} + + + +Definition at line 181 of file i2c.\+h. + +\mbox{\Hypertarget{classutl_1_1i2c__i_3_01virtual__tag_01_4_a931323b813a653057e039416e0fd5b99}\label{classutl_1_1i2c__i_3_01virtual__tag_01_4_a931323b813a653057e039416e0fd5b99}} +\index{utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$}!operator=@{operator=}} +\index{operator=@{operator=}!utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{operator=()}{operator=()}} +{\footnotesize\ttfamily \mbox{\hyperlink{classutl_1_1i2c__i_3_01virtual__tag_01_4_ac892faacc1566f4ca1438e3df765bcac}{type}}\& \mbox{\hyperlink{classutl_1_1i2c__i}{utl\+::i2c\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$\+::operator= (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1i2c__i_3_01virtual__tag_01_4_ac892faacc1566f4ca1438e3df765bcac}{type}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [delete]}} + +\mbox{\Hypertarget{classutl_1_1i2c__i_3_01virtual__tag_01_4_a6dccb32f00830226f6782034177c7d8b}\label{classutl_1_1i2c__i_3_01virtual__tag_01_4_a6dccb32f00830226f6782034177c7d8b}} +\index{utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$}!rx\+\_\+data@{rx\+\_\+data}} +\index{rx\+\_\+data@{rx\+\_\+data}!utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{rx\+\_\+data()}{rx\_data()}} +{\footnotesize\ttfamily \mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} \mbox{\hyperlink{classutl_1_1i2c__i}{utl\+::i2c\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$\+::rx\+\_\+data (\begin{DoxyParamCaption}\item[{bool}]{ack, }\item[{\mbox{\hyperlink{classutl_1_1i2c__i_3_01virtual__tag_01_4_a260541de452a9a653162b8b109b26c09}{Sequence}}}]{seq = {\ttfamily Sequence\+:\+:BYTEnACK} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Receive a byte from the i2c bus. + + +\begin{DoxyParams}{Parameters} +{\em ack} & Optional ack bit. \begin{DoxyItemize} +\item 1 A\+CK the reception \item 0 Don\textquotesingle{}t A\+CK the reception. \end{DoxyItemize} +\\ +\hline +{\em seq} & The operation sequence to execute \begin{DoxyItemize} +\item Sequence\+::\+B\+Y\+TE Receive only the byte, do not send ack clock \item Sequence\+::\+A\+CK Send only the ack bit \item Sequence\+::\+B\+Y\+T\+En\+A\+CK Receive the byte and send the ack bit \end{DoxyItemize} +\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +The byte received. +\end{DoxyReturn} + + +Definition at line 203 of file i2c.\+h. + +\mbox{\Hypertarget{classutl_1_1i2c__i_3_01virtual__tag_01_4_ad7e9c66a85ab55f80bb0977208517603}\label{classutl_1_1i2c__i_3_01virtual__tag_01_4_ad7e9c66a85ab55f80bb0977208517603}} +\index{utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$}!start@{start}} +\index{start@{start}!utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{start()}{start()}} +{\footnotesize\ttfamily void \mbox{\hyperlink{classutl_1_1i2c__i}{utl\+::i2c\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$\+::start (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 189 of file i2c.\+h. + +\mbox{\Hypertarget{classutl_1_1i2c__i_3_01virtual__tag_01_4_a86b0da49baf7d149ce5e316db186d65c}\label{classutl_1_1i2c__i_3_01virtual__tag_01_4_a86b0da49baf7d149ce5e316db186d65c}} +\index{utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$}!stop@{stop}} +\index{stop@{stop}!utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{stop()}{stop()}} +{\footnotesize\ttfamily void \mbox{\hyperlink{classutl_1_1i2c__i}{utl\+::i2c\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$\+::stop (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 190 of file i2c.\+h. + +\mbox{\Hypertarget{classutl_1_1i2c__i_3_01virtual__tag_01_4_a5e60b4bda2d7203aa8f2df35aa6dfa5d}\label{classutl_1_1i2c__i_3_01virtual__tag_01_4_a5e60b4bda2d7203aa8f2df35aa6dfa5d}} +\index{utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$}!tx\+\_\+data@{tx\+\_\+data}} +\index{tx\+\_\+data@{tx\+\_\+data}!utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{tx\+\_\+data()}{tx\_data()}} +{\footnotesize\ttfamily bool \mbox{\hyperlink{classutl_1_1i2c__i}{utl\+::i2c\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$\+::tx\+\_\+data (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}}}]{byte, }\item[{\mbox{\hyperlink{classutl_1_1i2c__i_3_01virtual__tag_01_4_a260541de452a9a653162b8b109b26c09}{Sequence}}}]{seq = {\ttfamily Sequence\+:\+:BYTEnACK} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Transmit a byte to the i2c bus. + + +\begin{DoxyParams}{Parameters} +{\em byte} & The byte to send. \\ +\hline +{\em seq} & The operation sequence to execute \begin{DoxyItemize} +\item Sequence\+::\+B\+Y\+TE Transmit only the byte, do not read ack bit \item Sequence\+::\+A\+CK Read only the ack bit \item Sequence\+::\+B\+Y\+T\+En\+A\+CK Transmit the byte and read the ack bit \end{DoxyItemize} +\\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +Slave\textquotesingle{}s A\+CK bit \begin{DoxyItemize} +\item false Slave didn\textquotesingle{}t A\+CK \item true Slave did A\+CK \end{DoxyItemize} + +\end{DoxyReturn} + + +Definition at line 218 of file i2c.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/com/\mbox{\hyperlink{i2c_8h}{i2c.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classutl_1_1idx__dev.tex b/doc/latex/classutl_1_1idx__dev.tex new file mode 100644 index 0000000..5ea3856 --- /dev/null +++ b/doc/latex/classutl_1_1idx__dev.tex @@ -0,0 +1,597 @@ +\hypertarget{classutl_1_1idx__dev}{}\section{utl\+:\+:idx\+\_\+dev$<$ impl\+\_\+t, data\+\_\+t, idx\+\_\+t, N $>$ Class Template Reference} +\label{classutl_1_1idx__dev}\index{utl\+::idx\+\_\+dev$<$ impl\+\_\+t, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ impl\+\_\+t, data\+\_\+t, idx\+\_\+t, N $>$}} + + +Abstract base class for indexed devices. + + + + +{\ttfamily \#include $<$idx\+\_\+dev.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{classutl_1_1idx__dev_a6cdcb1da82a0047d990ee6bce8b6c32b}{type}} = \mbox{\hyperlink{classutl_1_1idx__dev}{idx\+\_\+dev\+\_\+t}} +\begin{DoxyCompactList}\small\item\em Export type as identity meta-\/function. \end{DoxyCompactList}\end{DoxyCompactItemize} +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{classutl_1_1idx__dev_ace7a74e439972658d6006f83371ee0ca}{data\+\_\+type}} = data\+\_\+t +\begin{DoxyCompactList}\small\item\em Export types as index device concept demands. \end{DoxyCompactList}\item +using \mbox{\hyperlink{classutl_1_1idx__dev_acf054246b0c7c8be0a676fc1cf2b090c}{pointer\+\_\+type}} = data\+\_\+t $\ast$ +\item +using \mbox{\hyperlink{classutl_1_1idx__dev_aa8055ff3787876f243710ff194c7b8d0}{idx\+\_\+type}} = idx\+\_\+t +\end{DoxyCompactItemize} + +\subsection*{Public Member Functions} +\begin{Indent}\textbf{ Public index device interface}\par +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1idx__dev_a04f9404d7741c3c6ac421c530dfe867c}{get}} (data\+\_\+t \&data, idx\+\_\+t \mbox{\hyperlink{classutl_1_1idx__dev_a5ec37ed1b09a484563e4ad21107ac5a5}{cursor}}) +\begin{DoxyCompactList}\small\item\em Get interface. This function should read a single data\+\_\+t object from device in blocking mode. \end{DoxyCompactList}\item +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1idx__dev_aeef118cb863218cb2b5a1e8bb2dba600}{get}} (data\+\_\+t $\ast$data, \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} n, idx\+\_\+t \mbox{\hyperlink{classutl_1_1idx__dev_a5ec37ed1b09a484563e4ad21107ac5a5}{cursor}}) +\begin{DoxyCompactList}\small\item\em Old stile get functionality using free standing data\+\_\+t$\ast$. This function should return a stream of data from device. \end{DoxyCompactList}\item +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1idx__dev_af588d605d6968164cca3e348b5363613}{put}} (const data\+\_\+t \&data, idx\+\_\+t \mbox{\hyperlink{classutl_1_1idx__dev_a5ec37ed1b09a484563e4ad21107ac5a5}{cursor}}) +\begin{DoxyCompactList}\small\item\em Put interface. This function should send a single data\+\_\+t object to device. \end{DoxyCompactList}\item +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1idx__dev_a4d91ec798d3bf0da54467b4a394da839}{put}} (const data\+\_\+t $\ast$data, \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} n, idx\+\_\+t \mbox{\hyperlink{classutl_1_1idx__dev_a5ec37ed1b09a484563e4ad21107ac5a5}{cursor}}) +\begin{DoxyCompactList}\small\item\em Put interface. This function should send a stream of data\+\_\+t objects to device. \end{DoxyCompactList}\item +idx\+\_\+t \mbox{\hyperlink{classutl_1_1idx__dev_a5ec37ed1b09a484563e4ad21107ac5a5}{cursor}} () const +\begin{DoxyCompactList}\small\item\em Return the current cursor position. \end{DoxyCompactList}\item +idx\+\_\+t \mbox{\hyperlink{classutl_1_1idx__dev_ab49339f7ff0608ab460f0883224acb3c}{cursor}} (idx\+\_\+t idx) +\begin{DoxyCompactList}\small\item\em Set the cursor position. \end{DoxyCompactList}\end{DoxyCompactItemize} +\end{Indent} +\begin{Indent}\textbf{ Stream operator $>$$>$ interface}\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename \+\_\+\+Dst\+\_\+t $>$ }\\\mbox{\hyperlink{classutl_1_1idx__dev}{idx\+\_\+dev\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1idx__dev_a296be5211871773b2b8aa5409772ce6a}{operator$>$$>$}} (\+\_\+\+Dst\+\_\+t \&dst) +\begin{DoxyCompactList}\small\item\em Template operator$>$$>$ implementation for for all by value/ref parameters. \end{DoxyCompactList}\item +{\footnotesize template$<$typename \+\_\+\+Dst\+\_\+t $>$ }\\\mbox{\hyperlink{classutl_1_1idx__dev}{idx\+\_\+dev\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1idx__dev_af5822e3e77e2748a6eaf13b9381e0736}{operator$>$$>$}} (\+\_\+\+Dst\+\_\+t $\ast$dst)=delete +\begin{DoxyCompactList}\small\item\em Specialization to disallow pointer types as destination. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1idx__dev}{idx\+\_\+dev\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1idx__dev_a3480680f94fcb06f9ee8b2e5dcdb4dcd}{operator$>$$>$}} (data\+\_\+t \&dst) +\begin{DoxyCompactList}\small\item\em Overload for single data\+\_\+t object. \end{DoxyCompactList}\end{DoxyCompactItemize} +\end{Indent} +\begin{Indent}\textbf{ Stream operator$<$$<$ interface}\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename \+\_\+\+Src\+\_\+t $>$ }\\\mbox{\hyperlink{classutl_1_1idx__dev}{idx\+\_\+dev\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1idx__dev_a661ea93cc07a61ef208ab6f021f62907}{operator$<$$<$}} (\+\_\+\+Src\+\_\+t \&src) +\begin{DoxyCompactList}\small\item\em Template operator$<$$<$ implementation for for all by value/ref parameters. \end{DoxyCompactList}\item +{\footnotesize template$<$typename \+\_\+\+Src\+\_\+t $>$ }\\\mbox{\hyperlink{classutl_1_1idx__dev}{idx\+\_\+dev\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1idx__dev_a4e5a520417e7defe7cec77c261a01b73}{operator$<$$<$}} (\+\_\+\+Src\+\_\+t $\ast$src)=delete +\begin{DoxyCompactList}\small\item\em specialization to disallow pointer types as source \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1idx__dev}{idx\+\_\+dev\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1idx__dev_ad1c24182de1432f4d43eaa69db7aaec7}{operator$<$$<$}} (const data\+\_\+t \&src) +\begin{DoxyCompactList}\small\item\em Overload for single data\+\_\+t object. \end{DoxyCompactList}\end{DoxyCompactItemize} +\end{Indent} +\begin{Indent}\textbf{ Helper operators}\par +\begin{DoxyCompactItemize} +\item +data\+\_\+t \& \mbox{\hyperlink{classutl_1_1idx__dev_a5e0d647ad1cc5533e4f70292d8793a9f}{operator\mbox{[}$\,$\mbox{]}}} (const idx\+\_\+t idx) +\end{DoxyCompactItemize} +\end{Indent} +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classutl_1_1idx__dev_a7aa9e9ecfa5035dba4c2f9ef9ec60c2a}{iterator}} \mbox{\hyperlink{classutl_1_1idx__dev_aae291a2bb6788f85aa543861ccdb51c5}{end}} () noexcept +\item +\mbox{\hyperlink{classutl_1_1idx__dev_afa0e264f696f45c5a1b663c7c868a510}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1idx__dev_ae1cf97364a8264b390b361fc6b54b389}{end}} () const noexcept +\item +\mbox{\hyperlink{classutl_1_1idx__dev_afa0e264f696f45c5a1b663c7c868a510}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1idx__dev_a6ee37538b456c4b53b0bd4b3757b5edf}{cend}} () const noexcept +\end{DoxyCompactItemize} + +\subsection*{Protected Member Functions} +\begin{Indent}\textbf{ Constructor / Destructor}\par +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classutl_1_1idx__dev_ac7fc9b499b2c4b73769b68d10181b08b}{$\sim$idx\+\_\+dev}} ()=default +\begin{DoxyCompactList}\small\item\em Allow destructor from derived only. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1idx__dev_a90c6f576acb2a1ced3e973864d5d61b1}{idx\+\_\+dev}} ()=default +\begin{DoxyCompactList}\small\item\em A default constructor from derived only. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1idx__dev_a846e84b90848710336e2763c833eb8ec}{idx\+\_\+dev}} (const \mbox{\hyperlink{classutl_1_1idx__dev}{idx\+\_\+dev\+\_\+t}} \&)=delete +\begin{DoxyCompactList}\small\item\em No copies. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1idx__dev}{idx\+\_\+dev\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1idx__dev_ac817369b5efb068d648328320a9cf6a4}{operator=}} (const \mbox{\hyperlink{classutl_1_1idx__dev}{idx\+\_\+dev\+\_\+t}} \&)=delete +\end{DoxyCompactItemize} +\end{Indent} +\subsection*{S\+T\+L-\/like Input iterator interface} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{classutl_1_1idx__dev_a7aa9e9ecfa5035dba4c2f9ef9ec60c2a}{iterator}} = idxdev\+\_\+it$<$ \mbox{\hyperlink{classutl_1_1idx__dev}{idx\+\_\+dev\+\_\+t}}, data\+\_\+t $\ast$, N $>$ +\begin{DoxyCompactList}\small\item\em Iterator. \end{DoxyCompactList}\item +using \mbox{\hyperlink{classutl_1_1idx__dev_afa0e264f696f45c5a1b663c7c868a510}{const\+\_\+iterator}} = idxdev\+\_\+it$<$ \mbox{\hyperlink{classutl_1_1idx__dev}{idx\+\_\+dev\+\_\+t}}, const data\+\_\+t $\ast$, N $>$ +\begin{DoxyCompactList}\small\item\em Const iterator. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1idx__dev_a7aa9e9ecfa5035dba4c2f9ef9ec60c2a}{iterator}} \mbox{\hyperlink{classutl_1_1idx__dev_a83b186ed15e9bbe1e5d53e3941d517a7}{begin}} () noexcept +\begin{DoxyCompactList}\small\item\em .begin implementation \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1idx__dev_afa0e264f696f45c5a1b663c7c868a510}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1idx__dev_ad456ced43be8ab4fb9a66840afa030f7}{begin}} () const noexcept +\item +\mbox{\hyperlink{classutl_1_1idx__dev_afa0e264f696f45c5a1b663c7c868a510}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1idx__dev_a7550b4dbfea20c02f4600821bf36dc0c}{cbegin}} () const noexcept +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename impl\+\_\+t, typename data\+\_\+t, typename idx\+\_\+t, size\+\_\+t N$>$\newline +class utl\+::idx\+\_\+dev$<$ impl\+\_\+t, data\+\_\+t, idx\+\_\+t, N $>$} + +Abstract base class for indexed devices. + +Template base class for indexed (I/O) devices. using C\+R\+TP + +This class force a common interface for input, indexed (I/O) devices. By using this common interface the class implements +\begin{DoxyItemize} +\item Stream-\/like extracting and insertion operator +\item Helper operators +\item Input iterator +\item Const input iterator to inherit to implementation. +\end{DoxyItemize} + + +\begin{DoxyParams}{Parameters} +{\em impl\+\_\+t} & The C\+R\+TP type (the derived/implementation class typename). \\ +\hline +{\em data\+\_\+t} & The devices base type of data \\ +\hline +{\em idx\+\_\+t} & The type to use for indexing \\ +\hline +{\em streamsize} & The number of elements to indicate eos. \\ +\hline +\end{DoxyParams} + + +Definition at line 56 of file idx\+\_\+dev.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{classutl_1_1idx__dev_afa0e264f696f45c5a1b663c7c868a510}\label{classutl_1_1idx__dev_afa0e264f696f45c5a1b663c7c868a510}} +\index{utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}!const\+\_\+iterator@{const\+\_\+iterator}} +\index{const\+\_\+iterator@{const\+\_\+iterator}!utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}} +\subsubsection{\texorpdfstring{const\+\_\+iterator}{const\_iterator}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +using \mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, idx\+\_\+t, N $>$\+::\mbox{\hyperlink{classutl_1_1idx__dev_afa0e264f696f45c5a1b663c7c868a510}{const\+\_\+iterator}} = idxdev\+\_\+it $<$\mbox{\hyperlink{classutl_1_1idx__dev}{idx\+\_\+dev\+\_\+t}}, const data\+\_\+t$\ast$, N$>$} + + + +Const iterator. + + + +Definition at line 231 of file idx\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1idx__dev_ace7a74e439972658d6006f83371ee0ca}\label{classutl_1_1idx__dev_ace7a74e439972658d6006f83371ee0ca}} +\index{utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}!data\+\_\+type@{data\+\_\+type}} +\index{data\+\_\+type@{data\+\_\+type}!utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}} +\subsubsection{\texorpdfstring{data\+\_\+type}{data\_type}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +using \mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, idx\+\_\+t, N $>$\+::\mbox{\hyperlink{classutl_1_1idx__dev_ace7a74e439972658d6006f83371ee0ca}{data\+\_\+type}} = data\+\_\+t} + + + +Export types as index device concept demands. + + + +Definition at line 62 of file idx\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1idx__dev_aa8055ff3787876f243710ff194c7b8d0}\label{classutl_1_1idx__dev_aa8055ff3787876f243710ff194c7b8d0}} +\index{utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}!idx\+\_\+type@{idx\+\_\+type}} +\index{idx\+\_\+type@{idx\+\_\+type}!utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}} +\subsubsection{\texorpdfstring{idx\+\_\+type}{idx\_type}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +using \mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, idx\+\_\+t, N $>$\+::\mbox{\hyperlink{classutl_1_1idx__dev_aa8055ff3787876f243710ff194c7b8d0}{idx\+\_\+type}} = idx\+\_\+t} + + + +Definition at line 64 of file idx\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1idx__dev_a7aa9e9ecfa5035dba4c2f9ef9ec60c2a}\label{classutl_1_1idx__dev_a7aa9e9ecfa5035dba4c2f9ef9ec60c2a}} +\index{utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}!iterator@{iterator}} +\index{iterator@{iterator}!utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}} +\subsubsection{\texorpdfstring{iterator}{iterator}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +using \mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, idx\+\_\+t, N $>$\+::\mbox{\hyperlink{classutl_1_1idx__dev_a7aa9e9ecfa5035dba4c2f9ef9ec60c2a}{iterator}} = idxdev\+\_\+it $<$\mbox{\hyperlink{classutl_1_1idx__dev}{idx\+\_\+dev\+\_\+t}}, data\+\_\+t$\ast$, N$>$} + + + +Iterator. + + + +Definition at line 230 of file idx\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1idx__dev_acf054246b0c7c8be0a676fc1cf2b090c}\label{classutl_1_1idx__dev_acf054246b0c7c8be0a676fc1cf2b090c}} +\index{utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}!pointer\+\_\+type@{pointer\+\_\+type}} +\index{pointer\+\_\+type@{pointer\+\_\+type}!utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}} +\subsubsection{\texorpdfstring{pointer\+\_\+type}{pointer\_type}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +using \mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, idx\+\_\+t, N $>$\+::\mbox{\hyperlink{classutl_1_1idx__dev_acf054246b0c7c8be0a676fc1cf2b090c}{pointer\+\_\+type}} = data\+\_\+t$\ast$} + + + +Definition at line 63 of file idx\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1idx__dev_a6cdcb1da82a0047d990ee6bce8b6c32b}\label{classutl_1_1idx__dev_a6cdcb1da82a0047d990ee6bce8b6c32b}} +\index{utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}!type@{type}} +\index{type@{type}!utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +using \mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, idx\+\_\+t, N $>$\+::\mbox{\hyperlink{classutl_1_1idx__dev_a6cdcb1da82a0047d990ee6bce8b6c32b}{type}} = \mbox{\hyperlink{classutl_1_1idx__dev}{idx\+\_\+dev\+\_\+t}}} + + + +Export type as identity meta-\/function. + + + +Definition at line 66 of file idx\+\_\+dev.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classutl_1_1idx__dev_ac7fc9b499b2c4b73769b68d10181b08b}\label{classutl_1_1idx__dev_ac7fc9b499b2c4b73769b68d10181b08b}} +\index{utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}!````~idx\+\_\+dev@{$\sim$idx\+\_\+dev}} +\index{````~idx\+\_\+dev@{$\sim$idx\+\_\+dev}!utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}} +\subsubsection{\texorpdfstring{$\sim$idx\+\_\+dev()}{~idx\_dev()}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +\mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, idx\+\_\+t, N $>$\+::$\sim$\mbox{\hyperlink{classutl_1_1idx__dev}{idx\+\_\+dev}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [default]}} + + + +Allow destructor from derived only. + +\mbox{\Hypertarget{classutl_1_1idx__dev_a90c6f576acb2a1ced3e973864d5d61b1}\label{classutl_1_1idx__dev_a90c6f576acb2a1ced3e973864d5d61b1}} +\index{utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}!idx\+\_\+dev@{idx\+\_\+dev}} +\index{idx\+\_\+dev@{idx\+\_\+dev}!utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}} +\subsubsection{\texorpdfstring{idx\+\_\+dev()}{idx\_dev()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +\mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, idx\+\_\+t, N $>$\+::\mbox{\hyperlink{classutl_1_1idx__dev}{idx\+\_\+dev}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [default]}} + + + +A default constructor from derived only. + +\mbox{\Hypertarget{classutl_1_1idx__dev_a846e84b90848710336e2763c833eb8ec}\label{classutl_1_1idx__dev_a846e84b90848710336e2763c833eb8ec}} +\index{utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}!idx\+\_\+dev@{idx\+\_\+dev}} +\index{idx\+\_\+dev@{idx\+\_\+dev}!utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}} +\subsubsection{\texorpdfstring{idx\+\_\+dev()}{idx\_dev()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +\mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, idx\+\_\+t, N $>$\+::\mbox{\hyperlink{classutl_1_1idx__dev}{idx\+\_\+dev}} (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1idx__dev}{idx\+\_\+dev\+\_\+t}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [delete]}} + + + +No copies. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classutl_1_1idx__dev_a83b186ed15e9bbe1e5d53e3941d517a7}\label{classutl_1_1idx__dev_a83b186ed15e9bbe1e5d53e3941d517a7}} +\index{utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}!begin@{begin}} +\index{begin@{begin}!utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}} +\subsubsection{\texorpdfstring{begin()}{begin()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +\mbox{\hyperlink{classutl_1_1idx__dev_a7aa9e9ecfa5035dba4c2f9ef9ec60c2a}{iterator}} \mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, idx\+\_\+t, N $>$\+::begin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +.begin implementation + + + +Definition at line 234 of file idx\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1idx__dev_ad456ced43be8ab4fb9a66840afa030f7}\label{classutl_1_1idx__dev_ad456ced43be8ab4fb9a66840afa030f7}} +\index{utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}!begin@{begin}} +\index{begin@{begin}!utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}} +\subsubsection{\texorpdfstring{begin()}{begin()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +\mbox{\hyperlink{classutl_1_1idx__dev_afa0e264f696f45c5a1b663c7c868a510}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, idx\+\_\+t, N $>$\+::begin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 235 of file idx\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1idx__dev_a7550b4dbfea20c02f4600821bf36dc0c}\label{classutl_1_1idx__dev_a7550b4dbfea20c02f4600821bf36dc0c}} +\index{utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}!cbegin@{cbegin}} +\index{cbegin@{cbegin}!utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}} +\subsubsection{\texorpdfstring{cbegin()}{cbegin()}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +\mbox{\hyperlink{classutl_1_1idx__dev_afa0e264f696f45c5a1b663c7c868a510}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, idx\+\_\+t, N $>$\+::cbegin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 236 of file idx\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1idx__dev_a6ee37538b456c4b53b0bd4b3757b5edf}\label{classutl_1_1idx__dev_a6ee37538b456c4b53b0bd4b3757b5edf}} +\index{utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}!cend@{cend}} +\index{cend@{cend}!utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}} +\subsubsection{\texorpdfstring{cend()}{cend()}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +\mbox{\hyperlink{classutl_1_1idx__dev_afa0e264f696f45c5a1b663c7c868a510}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, idx\+\_\+t, N $>$\+::cend (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 241 of file idx\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1idx__dev_a5ec37ed1b09a484563e4ad21107ac5a5}\label{classutl_1_1idx__dev_a5ec37ed1b09a484563e4ad21107ac5a5}} +\index{utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}!cursor@{cursor}} +\index{cursor@{cursor}!utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}} +\subsubsection{\texorpdfstring{cursor()}{cursor()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +idx\+\_\+t \mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, idx\+\_\+t, N $>$\+::cursor (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Return the current cursor position. + + + +Definition at line 149 of file idx\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1idx__dev_ab49339f7ff0608ab460f0883224acb3c}\label{classutl_1_1idx__dev_ab49339f7ff0608ab460f0883224acb3c}} +\index{utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}!cursor@{cursor}} +\index{cursor@{cursor}!utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}} +\subsubsection{\texorpdfstring{cursor()}{cursor()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +idx\+\_\+t \mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, idx\+\_\+t, N $>$\+::cursor (\begin{DoxyParamCaption}\item[{idx\+\_\+t}]{idx }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Set the cursor position. + + +\begin{DoxyParams}{Parameters} +{\em idx} & Cursor address to set \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +The current cursor +\end{DoxyReturn} + + +Definition at line 156 of file idx\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1idx__dev_aae291a2bb6788f85aa543861ccdb51c5}\label{classutl_1_1idx__dev_aae291a2bb6788f85aa543861ccdb51c5}} +\index{utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}!end@{end}} +\index{end@{end}!utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}} +\subsubsection{\texorpdfstring{end()}{end()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +\mbox{\hyperlink{classutl_1_1idx__dev_a7aa9e9ecfa5035dba4c2f9ef9ec60c2a}{iterator}} \mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, idx\+\_\+t, N $>$\+::end (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + +.end implementation + +Definition at line 239 of file idx\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1idx__dev_ae1cf97364a8264b390b361fc6b54b389}\label{classutl_1_1idx__dev_ae1cf97364a8264b390b361fc6b54b389}} +\index{utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}!end@{end}} +\index{end@{end}!utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}} +\subsubsection{\texorpdfstring{end()}{end()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +\mbox{\hyperlink{classutl_1_1idx__dev_afa0e264f696f45c5a1b663c7c868a510}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, idx\+\_\+t, N $>$\+::end (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 240 of file idx\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1idx__dev_a04f9404d7741c3c6ac421c530dfe867c}\label{classutl_1_1idx__dev_a04f9404d7741c3c6ac421c530dfe867c}} +\index{utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}!get@{get}} +\index{get@{get}!utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}} +\subsubsection{\texorpdfstring{get()}{get()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, idx\+\_\+t, N $>$\+::get (\begin{DoxyParamCaption}\item[{data\+\_\+t \&}]{data, }\item[{idx\+\_\+t}]{cursor }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Get interface. This function should read a single data\+\_\+t object from device in blocking mode. + + +\begin{DoxyParams}{Parameters} +{\em data} & Reference to data output from device. \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +Number of data read from device +\end{DoxyReturn} +\begin{DoxyNote}{Note} +A successful call should return 1 +\end{DoxyNote} + + +Definition at line 104 of file idx\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1idx__dev_aeef118cb863218cb2b5a1e8bb2dba600}\label{classutl_1_1idx__dev_aeef118cb863218cb2b5a1e8bb2dba600}} +\index{utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}!get@{get}} +\index{get@{get}!utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}} +\subsubsection{\texorpdfstring{get()}{get()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, idx\+\_\+t, N $>$\+::get (\begin{DoxyParamCaption}\item[{data\+\_\+t $\ast$}]{data, }\item[{\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}}}]{n, }\item[{idx\+\_\+t}]{cursor }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Old stile get functionality using free standing data\+\_\+t$\ast$. This function should return a stream of data from device. + + +\begin{DoxyParams}{Parameters} +{\em data} & Pointer to buffer to write the data from device. \\ +\hline +{\em n} & The number of data of type data\+\_\+t to read \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +The read data items. +\end{DoxyReturn} + + +Definition at line 116 of file idx\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1idx__dev_a661ea93cc07a61ef208ab6f021f62907}\label{classutl_1_1idx__dev_a661ea93cc07a61ef208ab6f021f62907}} +\index{utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}!operator$<$$<$@{operator$<$$<$}} +\index{operator$<$$<$@{operator$<$$<$}!utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}} +\subsubsection{\texorpdfstring{operator$<$$<$()}{operator<<()}\hspace{0.1cm}{\footnotesize\ttfamily [1/3]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +template$<$typename \+\_\+\+Src\+\_\+t $>$ \\ +\mbox{\hyperlink{classutl_1_1idx__dev}{idx\+\_\+dev\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, idx\+\_\+t, N $>$\+::operator$<$$<$ (\begin{DoxyParamCaption}\item[{\+\_\+\+Src\+\_\+t \&}]{src }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Template operator$<$$<$ implementation for for all by value/ref parameters. + + +\begin{DoxyParams}{Parameters} +{\em src} & Reference to source data \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +Reference to this device for chaining +\end{DoxyReturn} + + +Definition at line 198 of file idx\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1idx__dev_a4e5a520417e7defe7cec77c261a01b73}\label{classutl_1_1idx__dev_a4e5a520417e7defe7cec77c261a01b73}} +\index{utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}!operator$<$$<$@{operator$<$$<$}} +\index{operator$<$$<$@{operator$<$$<$}!utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}} +\subsubsection{\texorpdfstring{operator$<$$<$()}{operator<<()}\hspace{0.1cm}{\footnotesize\ttfamily [2/3]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +template$<$typename \+\_\+\+Src\+\_\+t $>$ \\ +\mbox{\hyperlink{classutl_1_1idx__dev}{idx\+\_\+dev\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, idx\+\_\+t, N $>$\+::operator$<$$<$ (\begin{DoxyParamCaption}\item[{\+\_\+\+Src\+\_\+t $\ast$}]{src }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [delete]}} + + + +specialization to disallow pointer types as source + +\mbox{\Hypertarget{classutl_1_1idx__dev_ad1c24182de1432f4d43eaa69db7aaec7}\label{classutl_1_1idx__dev_ad1c24182de1432f4d43eaa69db7aaec7}} +\index{utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}!operator$<$$<$@{operator$<$$<$}} +\index{operator$<$$<$@{operator$<$$<$}!utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}} +\subsubsection{\texorpdfstring{operator$<$$<$()}{operator<<()}\hspace{0.1cm}{\footnotesize\ttfamily [3/3]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +\mbox{\hyperlink{classutl_1_1idx__dev}{idx\+\_\+dev\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, idx\+\_\+t, N $>$\+::operator$<$$<$ (\begin{DoxyParamCaption}\item[{const data\+\_\+t \&}]{src }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Overload for single data\+\_\+t object. + + + +Definition at line 209 of file idx\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1idx__dev_ac817369b5efb068d648328320a9cf6a4}\label{classutl_1_1idx__dev_ac817369b5efb068d648328320a9cf6a4}} +\index{utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}!operator=@{operator=}} +\index{operator=@{operator=}!utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}} +\subsubsection{\texorpdfstring{operator=()}{operator=()}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +\mbox{\hyperlink{classutl_1_1idx__dev}{idx\+\_\+dev\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, idx\+\_\+t, N $>$\+::operator= (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1idx__dev}{idx\+\_\+dev\+\_\+t}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [delete]}} + +No copy assignments \mbox{\Hypertarget{classutl_1_1idx__dev_a296be5211871773b2b8aa5409772ce6a}\label{classutl_1_1idx__dev_a296be5211871773b2b8aa5409772ce6a}} +\index{utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}!operator$>$$>$@{operator$>$$>$}} +\index{operator$>$$>$@{operator$>$$>$}!utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}} +\subsubsection{\texorpdfstring{operator$>$$>$()}{operator>>()}\hspace{0.1cm}{\footnotesize\ttfamily [1/3]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +template$<$typename \+\_\+\+Dst\+\_\+t $>$ \\ +\mbox{\hyperlink{classutl_1_1idx__dev}{idx\+\_\+dev\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, idx\+\_\+t, N $>$\+::operator$>$$>$ (\begin{DoxyParamCaption}\item[{\+\_\+\+Dst\+\_\+t \&}]{dst }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Template operator$>$$>$ implementation for for all by value/ref parameters. + + +\begin{DoxyParams}{Parameters} +{\em dst} & Reference to destination \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +Reference to this device for chaining +\end{DoxyReturn} + + +Definition at line 170 of file idx\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1idx__dev_af5822e3e77e2748a6eaf13b9381e0736}\label{classutl_1_1idx__dev_af5822e3e77e2748a6eaf13b9381e0736}} +\index{utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}!operator$>$$>$@{operator$>$$>$}} +\index{operator$>$$>$@{operator$>$$>$}!utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}} +\subsubsection{\texorpdfstring{operator$>$$>$()}{operator>>()}\hspace{0.1cm}{\footnotesize\ttfamily [2/3]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +template$<$typename \+\_\+\+Dst\+\_\+t $>$ \\ +\mbox{\hyperlink{classutl_1_1idx__dev}{idx\+\_\+dev\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, idx\+\_\+t, N $>$\+::operator$>$$>$ (\begin{DoxyParamCaption}\item[{\+\_\+\+Dst\+\_\+t $\ast$}]{dst }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [delete]}} + + + +Specialization to disallow pointer types as destination. + +\mbox{\Hypertarget{classutl_1_1idx__dev_a3480680f94fcb06f9ee8b2e5dcdb4dcd}\label{classutl_1_1idx__dev_a3480680f94fcb06f9ee8b2e5dcdb4dcd}} +\index{utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}!operator$>$$>$@{operator$>$$>$}} +\index{operator$>$$>$@{operator$>$$>$}!utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}} +\subsubsection{\texorpdfstring{operator$>$$>$()}{operator>>()}\hspace{0.1cm}{\footnotesize\ttfamily [3/3]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +\mbox{\hyperlink{classutl_1_1idx__dev}{idx\+\_\+dev\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, idx\+\_\+t, N $>$\+::operator$>$$>$ (\begin{DoxyParamCaption}\item[{data\+\_\+t \&}]{dst }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Overload for single data\+\_\+t object. + + + +Definition at line 181 of file idx\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1idx__dev_a5e0d647ad1cc5533e4f70292d8793a9f}\label{classutl_1_1idx__dev_a5e0d647ad1cc5533e4f70292d8793a9f}} +\index{utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}!operator\mbox{[}\mbox{]}@{operator[]}} +\index{operator\mbox{[}\mbox{]}@{operator[]}!utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}} +\subsubsection{\texorpdfstring{operator[]()}{operator[]()}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +data\+\_\+t\& \mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, idx\+\_\+t, N $>$\+::operator\mbox{[}$\,$\mbox{]} (\begin{DoxyParamCaption}\item[{const idx\+\_\+t}]{idx }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 219 of file idx\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1idx__dev_af588d605d6968164cca3e348b5363613}\label{classutl_1_1idx__dev_af588d605d6968164cca3e348b5363613}} +\index{utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}!put@{put}} +\index{put@{put}!utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}} +\subsubsection{\texorpdfstring{put()}{put()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, idx\+\_\+t, N $>$\+::put (\begin{DoxyParamCaption}\item[{const data\+\_\+t \&}]{data, }\item[{idx\+\_\+t}]{cursor }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Put interface. This function should send a single data\+\_\+t object to device. + + +\begin{DoxyParams}{Parameters} +{\em data} & The data to send \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +The number of transmitted data items +\end{DoxyReturn} +\begin{DoxyNote}{Note} +A successful call should return 1 +\end{DoxyNote} + + +Definition at line 129 of file idx\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1idx__dev_a4d91ec798d3bf0da54467b4a394da839}\label{classutl_1_1idx__dev_a4d91ec798d3bf0da54467b4a394da839}} +\index{utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}!put@{put}} +\index{put@{put}!utl\+::idx\+\_\+dev@{utl\+::idx\+\_\+dev}} +\subsubsection{\texorpdfstring{put()}{put()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, idx\+\_\+t, N $>$\+::put (\begin{DoxyParamCaption}\item[{const data\+\_\+t $\ast$}]{data, }\item[{\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}}}]{n, }\item[{idx\+\_\+t}]{cursor }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Put interface. This function should send a stream of data\+\_\+t objects to device. + + +\begin{DoxyParams}{Parameters} +{\em data} & Pointer to buffer indenting write to device. \\ +\hline +{\em n} & The number of data of type data\+\_\+t to send \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +The number of transmitted items. +\end{DoxyReturn} + + +Definition at line 141 of file idx\+\_\+dev.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/dev/\mbox{\hyperlink{idx__dev_8h}{idx\+\_\+dev.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.tex b/doc/latex/classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.tex new file mode 100644 index 0000000..eb91b13 --- /dev/null +++ b/doc/latex/classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4.tex @@ -0,0 +1,585 @@ +\hypertarget{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4}{}\section{utl\+:\+:idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$ Class Template Reference} +\label{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4}\index{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}} + + +A virtual base class specialization. + + + + +{\ttfamily \#include $<$idx\+\_\+dev.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_aa35bd23b888a66ebceffd7ea37f7a230}{type}} = \mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4}{idx\+\_\+dev\+\_\+t}} +\begin{DoxyCompactList}\small\item\em Export type as identity meta-\/function. \end{DoxyCompactList}\end{DoxyCompactItemize} +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_aa26f4d0326232c436f3a312edf89b7e1}{data\+\_\+type}} = data\+\_\+t +\begin{DoxyCompactList}\small\item\em Export types as index device concept demands. \end{DoxyCompactList}\item +using \mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a21fdf221d18bb3a118950d51af0b2df6}{pointer\+\_\+type}} = data\+\_\+t $\ast$ +\item +using \mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a838a5bd9c2abb86ccde6249dc549e11b}{idx\+\_\+type}} = idx\+\_\+t +\end{DoxyCompactItemize} + +\subsection*{Public Member Functions} +\begin{Indent}\textbf{ Public index device interface}\par +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a6d5acffcb7f0ae7d34b47021b55aff6c}{get}} (data\+\_\+t \&data, idx\+\_\+t \mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a2524b96ad86605bdadf47f54265154a7}{cursor}}) +\begin{DoxyCompactList}\small\item\em Get interface. This function should read a single data\+\_\+t object from device in blocking mode. \end{DoxyCompactList}\item +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a58ce6002f3a5daabcc443aebee42e10b}{get}} (data\+\_\+t $\ast$data, \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} n, idx\+\_\+t \mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a2524b96ad86605bdadf47f54265154a7}{cursor}}) +\begin{DoxyCompactList}\small\item\em Old stile get functionality using free standing data\+\_\+t$\ast$. This function should return a stream of data from device. \end{DoxyCompactList}\item +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a183e46d89452a51a029387f621fb4e9f}{put}} (const data\+\_\+t \&data, idx\+\_\+t \mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a2524b96ad86605bdadf47f54265154a7}{cursor}}) +\begin{DoxyCompactList}\small\item\em Put interface. This function should send a single data\+\_\+t object to device. \end{DoxyCompactList}\item +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a58ee979bbc14205548db85cbfbed7aba}{put}} (const data\+\_\+t $\ast$data, \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} n, idx\+\_\+t \mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a2524b96ad86605bdadf47f54265154a7}{cursor}}) +\begin{DoxyCompactList}\small\item\em Put interface. This function should send a stream of data\+\_\+t objects to device. \end{DoxyCompactList}\item +idx\+\_\+t \mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a2524b96ad86605bdadf47f54265154a7}{cursor}} () const +\begin{DoxyCompactList}\small\item\em Return the current cursor position. \end{DoxyCompactList}\item +idx\+\_\+t \mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a4a0f9f2e977055dab73e2ecd0e49d97e}{cursor}} (idx\+\_\+t idx) +\begin{DoxyCompactList}\small\item\em Set the cursor position. \end{DoxyCompactList}\end{DoxyCompactItemize} +\end{Indent} +\begin{Indent}\textbf{ Stream operator$>$$>$ interface}\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename \+\_\+\+Dst\+\_\+t $>$ }\\\mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4}{idx\+\_\+dev\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a6e758bd01a5d893a8b13476ed55213cc}{operator$>$$>$}} (\+\_\+\+Dst\+\_\+t \&dst) +\begin{DoxyCompactList}\small\item\em Template operator$>$$>$ implementation for for all by value/ref parameters. \end{DoxyCompactList}\item +{\footnotesize template$<$typename \+\_\+\+Dst\+\_\+t $>$ }\\\mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4}{idx\+\_\+dev\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_abd071d6feed8ce4d07d1eb2d60995c6d}{operator$>$$>$}} (\+\_\+\+Dst\+\_\+t $\ast$dst)=delete +\begin{DoxyCompactList}\small\item\em specialization to disallow pointer types as destination \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4}{idx\+\_\+dev\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a379c115c72386cd4407443d9f3c6ac53}{operator$>$$>$}} (data\+\_\+t \&dst) +\begin{DoxyCompactList}\small\item\em Overload for single data\+\_\+t object. \end{DoxyCompactList}\end{DoxyCompactItemize} +\end{Indent} +\begin{Indent}\textbf{ Stream operator$<$$<$ interface}\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename \+\_\+\+Src\+\_\+t $>$ }\\\mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4}{idx\+\_\+dev\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_accbb8a8c64fc4cac385081c9b6b7356b}{operator$<$$<$}} (\+\_\+\+Src\+\_\+t \&src) +\begin{DoxyCompactList}\small\item\em Template operator$<$$<$ implementation for for all by value/ref parameters. \end{DoxyCompactList}\item +{\footnotesize template$<$typename \+\_\+\+Src\+\_\+t $>$ }\\\mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4}{idx\+\_\+dev\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a0443e0880c43aedb5735c52a5c9eb144}{operator$<$$<$}} (\+\_\+\+Src\+\_\+t $\ast$src)=delete +\begin{DoxyCompactList}\small\item\em specialization to disallow pointer types as source \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4}{idx\+\_\+dev\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a52d8bf37aa7e4549db3ac11677cf9ec1}{operator$<$$<$}} (const data\+\_\+t \&src) +\begin{DoxyCompactList}\small\item\em Overload for single data\+\_\+t object. \end{DoxyCompactList}\end{DoxyCompactItemize} +\end{Indent} +\begin{Indent}\textbf{ Helper operators}\par +\begin{DoxyCompactItemize} +\item +data\+\_\+t \& \mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_aa636cd6c14608d8f5a0d16d409be3aaa}{operator\mbox{[}$\,$\mbox{]}}} (const idx\+\_\+t idx) +\end{DoxyCompactItemize} +\end{Indent} +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a0965be515cca243b76f571aa425cfd96}{iterator}} \mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_ad9166f4899994039eb64b6f63bcee621}{end}} () noexcept +\item +\mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a66a2229a8f511c9eb147072211bbda92}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a4da6ff073a9f8452ebbd5371e017e4b9}{end}} () const noexcept +\item +\mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a66a2229a8f511c9eb147072211bbda92}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a413c6a4e5bc1c13ac0d78f5c3c228408}{cend}} () const noexcept +\end{DoxyCompactItemize} + +\subsection*{Constructor / Destructor} +\begin{DoxyCompactItemize} +\item +virtual \mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a67f3694debf7a8e563ac7d56c1771dfc}{$\sim$idx\+\_\+dev}} ()=default +\begin{DoxyCompactList}\small\item\em Virtual destructor. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a32699d8dd6ed81986262ba74dccd3957}{idx\+\_\+dev}} ()=default +\begin{DoxyCompactList}\small\item\em A default constructor from derived only. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_ac00ac9cb399b3e08997c45f3204a3151}{idx\+\_\+dev}} (const \mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4}{idx\+\_\+dev\+\_\+t}} \&)=delete +\begin{DoxyCompactList}\small\item\em No copies. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4}{idx\+\_\+dev\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_ae31763ec2ad32c26b43f010f850fe3eb}{operator=}} (const \mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4}{idx\+\_\+dev\+\_\+t}} \&)=delete +\end{DoxyCompactItemize} +\subsection*{S\+T\+L-\/like Input iterator interface} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a0965be515cca243b76f571aa425cfd96}{iterator}} = idxdev\+\_\+it$<$ \mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4}{idx\+\_\+dev\+\_\+t}}, data\+\_\+t $\ast$, N $>$ +\begin{DoxyCompactList}\small\item\em Iterator. \end{DoxyCompactList}\item +using \mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a66a2229a8f511c9eb147072211bbda92}{const\+\_\+iterator}} = idxdev\+\_\+it$<$ \mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4}{idx\+\_\+dev\+\_\+t}}, const data\+\_\+t $\ast$, N $>$ +\begin{DoxyCompactList}\small\item\em Const iterator. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a0965be515cca243b76f571aa425cfd96}{iterator}} \mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a3923ae24a74fef19919f818636e063e4}{begin}} () noexcept +\begin{DoxyCompactList}\small\item\em .begin implementation \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a66a2229a8f511c9eb147072211bbda92}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a07967f7a2c5d324361b7ffc829f31600}{begin}} () const noexcept +\item +\mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a66a2229a8f511c9eb147072211bbda92}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a99e214886247aaff0567799ba7b5c6a9}{cbegin}} () const noexcept +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename data\+\_\+t, typename idx\+\_\+t, size\+\_\+t N$>$\newline +class utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$} + +A virtual base class specialization. + + +\begin{DoxyParams}{Parameters} +{\em impl\+\_\+t} & = \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} \\ +\hline +{\em data\+\_\+t} & The devices base type of data \\ +\hline +{\em idx\+\_\+t} & The type to use for indexing \\ +\hline +{\em streamsize} & The number of elements to indicate eos. \\ +\hline +\end{DoxyParams} + + +Definition at line 256 of file idx\+\_\+dev.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a66a2229a8f511c9eb147072211bbda92}\label{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a66a2229a8f511c9eb147072211bbda92}} +\index{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}!const\+\_\+iterator@{const\+\_\+iterator}} +\index{const\+\_\+iterator@{const\+\_\+iterator}!utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}} +\subsubsection{\texorpdfstring{const\+\_\+iterator}{const\_iterator}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +using \mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, idx\+\_\+t, N $>$\+::\mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a66a2229a8f511c9eb147072211bbda92}{const\+\_\+iterator}} = idxdev\+\_\+it $<$\mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4}{idx\+\_\+dev\+\_\+t}}, const data\+\_\+t$\ast$, N$>$} + + + +Const iterator. + + + +Definition at line 430 of file idx\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_aa26f4d0326232c436f3a312edf89b7e1}\label{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_aa26f4d0326232c436f3a312edf89b7e1}} +\index{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}!data\+\_\+type@{data\+\_\+type}} +\index{data\+\_\+type@{data\+\_\+type}!utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}} +\subsubsection{\texorpdfstring{data\+\_\+type}{data\_type}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +using \mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, idx\+\_\+t, N $>$\+::\mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_aa26f4d0326232c436f3a312edf89b7e1}{data\+\_\+type}} = data\+\_\+t} + + + +Export types as index device concept demands. + + + +Definition at line 261 of file idx\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a838a5bd9c2abb86ccde6249dc549e11b}\label{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a838a5bd9c2abb86ccde6249dc549e11b}} +\index{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}!idx\+\_\+type@{idx\+\_\+type}} +\index{idx\+\_\+type@{idx\+\_\+type}!utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}} +\subsubsection{\texorpdfstring{idx\+\_\+type}{idx\_type}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +using \mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, idx\+\_\+t, N $>$\+::\mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a838a5bd9c2abb86ccde6249dc549e11b}{idx\+\_\+type}} = idx\+\_\+t} + + + +Definition at line 263 of file idx\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a0965be515cca243b76f571aa425cfd96}\label{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a0965be515cca243b76f571aa425cfd96}} +\index{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}!iterator@{iterator}} +\index{iterator@{iterator}!utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}} +\subsubsection{\texorpdfstring{iterator}{iterator}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +using \mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, idx\+\_\+t, N $>$\+::\mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a0965be515cca243b76f571aa425cfd96}{iterator}} = idxdev\+\_\+it $<$\mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4}{idx\+\_\+dev\+\_\+t}}, data\+\_\+t$\ast$, N$>$} + + + +Iterator. + + + +Definition at line 429 of file idx\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a21fdf221d18bb3a118950d51af0b2df6}\label{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a21fdf221d18bb3a118950d51af0b2df6}} +\index{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}!pointer\+\_\+type@{pointer\+\_\+type}} +\index{pointer\+\_\+type@{pointer\+\_\+type}!utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}} +\subsubsection{\texorpdfstring{pointer\+\_\+type}{pointer\_type}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +using \mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, idx\+\_\+t, N $>$\+::\mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a21fdf221d18bb3a118950d51af0b2df6}{pointer\+\_\+type}} = data\+\_\+t$\ast$} + + + +Definition at line 262 of file idx\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_aa35bd23b888a66ebceffd7ea37f7a230}\label{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_aa35bd23b888a66ebceffd7ea37f7a230}} +\index{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}!type@{type}} +\index{type@{type}!utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +using \mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, idx\+\_\+t, N $>$\+::\mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_aa35bd23b888a66ebceffd7ea37f7a230}{type}} = \mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4}{idx\+\_\+dev\+\_\+t}}} + + + +Export type as identity meta-\/function. + + + +Definition at line 265 of file idx\+\_\+dev.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a67f3694debf7a8e563ac7d56c1771dfc}\label{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a67f3694debf7a8e563ac7d56c1771dfc}} +\index{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}!````~idx\+\_\+dev@{$\sim$idx\+\_\+dev}} +\index{````~idx\+\_\+dev@{$\sim$idx\+\_\+dev}!utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}} +\subsubsection{\texorpdfstring{$\sim$idx\+\_\+dev()}{~idx\_dev()}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +virtual \mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, idx\+\_\+t, N $>$\+::$\sim$\mbox{\hyperlink{classutl_1_1idx__dev}{idx\+\_\+dev}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}, {\ttfamily [default]}} + + + +Virtual destructor. + +\mbox{\Hypertarget{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a32699d8dd6ed81986262ba74dccd3957}\label{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a32699d8dd6ed81986262ba74dccd3957}} +\index{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}!idx\+\_\+dev@{idx\+\_\+dev}} +\index{idx\+\_\+dev@{idx\+\_\+dev}!utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}} +\subsubsection{\texorpdfstring{idx\+\_\+dev()}{idx\_dev()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +\mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, idx\+\_\+t, N $>$\+::\mbox{\hyperlink{classutl_1_1idx__dev}{idx\+\_\+dev}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [default]}} + + + +A default constructor from derived only. + +\mbox{\Hypertarget{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_ac00ac9cb399b3e08997c45f3204a3151}\label{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_ac00ac9cb399b3e08997c45f3204a3151}} +\index{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}!idx\+\_\+dev@{idx\+\_\+dev}} +\index{idx\+\_\+dev@{idx\+\_\+dev}!utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}} +\subsubsection{\texorpdfstring{idx\+\_\+dev()}{idx\_dev()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +\mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, idx\+\_\+t, N $>$\+::\mbox{\hyperlink{classutl_1_1idx__dev}{idx\+\_\+dev}} (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4}{idx\+\_\+dev\+\_\+t}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [delete]}} + + + +No copies. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a3923ae24a74fef19919f818636e063e4}\label{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a3923ae24a74fef19919f818636e063e4}} +\index{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}!begin@{begin}} +\index{begin@{begin}!utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}} +\subsubsection{\texorpdfstring{begin()}{begin()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +\mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a0965be515cca243b76f571aa425cfd96}{iterator}} \mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, idx\+\_\+t, N $>$\+::begin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +.begin implementation + + + +Definition at line 433 of file idx\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a07967f7a2c5d324361b7ffc829f31600}\label{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a07967f7a2c5d324361b7ffc829f31600}} +\index{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}!begin@{begin}} +\index{begin@{begin}!utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}} +\subsubsection{\texorpdfstring{begin()}{begin()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +\mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a66a2229a8f511c9eb147072211bbda92}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, idx\+\_\+t, N $>$\+::begin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 434 of file idx\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a99e214886247aaff0567799ba7b5c6a9}\label{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a99e214886247aaff0567799ba7b5c6a9}} +\index{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}!cbegin@{cbegin}} +\index{cbegin@{cbegin}!utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}} +\subsubsection{\texorpdfstring{cbegin()}{cbegin()}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +\mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a66a2229a8f511c9eb147072211bbda92}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, idx\+\_\+t, N $>$\+::cbegin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 435 of file idx\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a413c6a4e5bc1c13ac0d78f5c3c228408}\label{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a413c6a4e5bc1c13ac0d78f5c3c228408}} +\index{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}!cend@{cend}} +\index{cend@{cend}!utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}} +\subsubsection{\texorpdfstring{cend()}{cend()}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +\mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a66a2229a8f511c9eb147072211bbda92}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, idx\+\_\+t, N $>$\+::cend (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 440 of file idx\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a2524b96ad86605bdadf47f54265154a7}\label{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a2524b96ad86605bdadf47f54265154a7}} +\index{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}!cursor@{cursor}} +\index{cursor@{cursor}!utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}} +\subsubsection{\texorpdfstring{cursor()}{cursor()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +idx\+\_\+t \mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, idx\+\_\+t, N $>$\+::cursor (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Return the current cursor position. + + + +Definition at line 348 of file idx\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a4a0f9f2e977055dab73e2ecd0e49d97e}\label{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a4a0f9f2e977055dab73e2ecd0e49d97e}} +\index{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}!cursor@{cursor}} +\index{cursor@{cursor}!utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}} +\subsubsection{\texorpdfstring{cursor()}{cursor()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +idx\+\_\+t \mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, idx\+\_\+t, N $>$\+::cursor (\begin{DoxyParamCaption}\item[{idx\+\_\+t}]{idx }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Set the cursor position. + + +\begin{DoxyParams}{Parameters} +{\em idx} & Cursor address to set \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +The current cursor +\end{DoxyReturn} + + +Definition at line 355 of file idx\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_ad9166f4899994039eb64b6f63bcee621}\label{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_ad9166f4899994039eb64b6f63bcee621}} +\index{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}!end@{end}} +\index{end@{end}!utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}} +\subsubsection{\texorpdfstring{end()}{end()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +\mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a0965be515cca243b76f571aa425cfd96}{iterator}} \mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, idx\+\_\+t, N $>$\+::end (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + +.end implementation + +Definition at line 438 of file idx\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a4da6ff073a9f8452ebbd5371e017e4b9}\label{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a4da6ff073a9f8452ebbd5371e017e4b9}} +\index{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}!end@{end}} +\index{end@{end}!utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}} +\subsubsection{\texorpdfstring{end()}{end()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +\mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a66a2229a8f511c9eb147072211bbda92}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, idx\+\_\+t, N $>$\+::end (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 439 of file idx\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a6d5acffcb7f0ae7d34b47021b55aff6c}\label{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a6d5acffcb7f0ae7d34b47021b55aff6c}} +\index{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}!get@{get}} +\index{get@{get}!utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}} +\subsubsection{\texorpdfstring{get()}{get()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, idx\+\_\+t, N $>$\+::get (\begin{DoxyParamCaption}\item[{data\+\_\+t \&}]{data, }\item[{idx\+\_\+t}]{cursor }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Get interface. This function should read a single data\+\_\+t object from device in blocking mode. + + +\begin{DoxyParams}{Parameters} +{\em data} & Reference to data output from device. \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +Number of data read from device +\end{DoxyReturn} +\begin{DoxyNote}{Note} +A successful call should return 1 +\end{DoxyNote} + + +Definition at line 303 of file idx\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a58ce6002f3a5daabcc443aebee42e10b}\label{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a58ce6002f3a5daabcc443aebee42e10b}} +\index{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}!get@{get}} +\index{get@{get}!utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}} +\subsubsection{\texorpdfstring{get()}{get()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, idx\+\_\+t, N $>$\+::get (\begin{DoxyParamCaption}\item[{data\+\_\+t $\ast$}]{data, }\item[{\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}}}]{n, }\item[{idx\+\_\+t}]{cursor }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Old stile get functionality using free standing data\+\_\+t$\ast$. This function should return a stream of data from device. + + +\begin{DoxyParams}{Parameters} +{\em data} & Pointer to buffer to write the data from device. \\ +\hline +{\em n} & The number of data of type data\+\_\+t to read \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +The read data items. +\end{DoxyReturn} + + +Definition at line 315 of file idx\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_accbb8a8c64fc4cac385081c9b6b7356b}\label{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_accbb8a8c64fc4cac385081c9b6b7356b}} +\index{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}!operator$<$$<$@{operator$<$$<$}} +\index{operator$<$$<$@{operator$<$$<$}!utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}} +\subsubsection{\texorpdfstring{operator$<$$<$()}{operator<<()}\hspace{0.1cm}{\footnotesize\ttfamily [1/3]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +template$<$typename \+\_\+\+Src\+\_\+t $>$ \\ +\mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4}{idx\+\_\+dev\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, idx\+\_\+t, N $>$\+::operator$<$$<$ (\begin{DoxyParamCaption}\item[{\+\_\+\+Src\+\_\+t \&}]{src }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Template operator$<$$<$ implementation for for all by value/ref parameters. + + +\begin{DoxyParams}{Parameters} +{\em src} & Reference to source data \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +Reference to this device for chaining +\end{DoxyReturn} + + +Definition at line 397 of file idx\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a0443e0880c43aedb5735c52a5c9eb144}\label{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a0443e0880c43aedb5735c52a5c9eb144}} +\index{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}!operator$<$$<$@{operator$<$$<$}} +\index{operator$<$$<$@{operator$<$$<$}!utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}} +\subsubsection{\texorpdfstring{operator$<$$<$()}{operator<<()}\hspace{0.1cm}{\footnotesize\ttfamily [2/3]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +template$<$typename \+\_\+\+Src\+\_\+t $>$ \\ +\mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4}{idx\+\_\+dev\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, idx\+\_\+t, N $>$\+::operator$<$$<$ (\begin{DoxyParamCaption}\item[{\+\_\+\+Src\+\_\+t $\ast$}]{src }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [delete]}} + + + +specialization to disallow pointer types as source + +\mbox{\Hypertarget{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a52d8bf37aa7e4549db3ac11677cf9ec1}\label{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a52d8bf37aa7e4549db3ac11677cf9ec1}} +\index{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}!operator$<$$<$@{operator$<$$<$}} +\index{operator$<$$<$@{operator$<$$<$}!utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}} +\subsubsection{\texorpdfstring{operator$<$$<$()}{operator<<()}\hspace{0.1cm}{\footnotesize\ttfamily [3/3]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +\mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4}{idx\+\_\+dev\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, idx\+\_\+t, N $>$\+::operator$<$$<$ (\begin{DoxyParamCaption}\item[{const data\+\_\+t \&}]{src }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Overload for single data\+\_\+t object. + + + +Definition at line 408 of file idx\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_ae31763ec2ad32c26b43f010f850fe3eb}\label{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_ae31763ec2ad32c26b43f010f850fe3eb}} +\index{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}!operator=@{operator=}} +\index{operator=@{operator=}!utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}} +\subsubsection{\texorpdfstring{operator=()}{operator=()}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +\mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4}{idx\+\_\+dev\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, idx\+\_\+t, N $>$\+::operator= (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4}{idx\+\_\+dev\+\_\+t}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [delete]}} + +No copy assignments \mbox{\Hypertarget{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a6e758bd01a5d893a8b13476ed55213cc}\label{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a6e758bd01a5d893a8b13476ed55213cc}} +\index{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}!operator$>$$>$@{operator$>$$>$}} +\index{operator$>$$>$@{operator$>$$>$}!utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}} +\subsubsection{\texorpdfstring{operator$>$$>$()}{operator>>()}\hspace{0.1cm}{\footnotesize\ttfamily [1/3]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +template$<$typename \+\_\+\+Dst\+\_\+t $>$ \\ +\mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4}{idx\+\_\+dev\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, idx\+\_\+t, N $>$\+::operator$>$$>$ (\begin{DoxyParamCaption}\item[{\+\_\+\+Dst\+\_\+t \&}]{dst }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Template operator$>$$>$ implementation for for all by value/ref parameters. + + +\begin{DoxyParams}{Parameters} +{\em dst} & Reference to destination \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +Reference to this device for chaining +\end{DoxyReturn} + + +Definition at line 369 of file idx\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_abd071d6feed8ce4d07d1eb2d60995c6d}\label{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_abd071d6feed8ce4d07d1eb2d60995c6d}} +\index{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}!operator$>$$>$@{operator$>$$>$}} +\index{operator$>$$>$@{operator$>$$>$}!utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}} +\subsubsection{\texorpdfstring{operator$>$$>$()}{operator>>()}\hspace{0.1cm}{\footnotesize\ttfamily [2/3]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +template$<$typename \+\_\+\+Dst\+\_\+t $>$ \\ +\mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4}{idx\+\_\+dev\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, idx\+\_\+t, N $>$\+::operator$>$$>$ (\begin{DoxyParamCaption}\item[{\+\_\+\+Dst\+\_\+t $\ast$}]{dst }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [delete]}} + + + +specialization to disallow pointer types as destination + +\mbox{\Hypertarget{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a379c115c72386cd4407443d9f3c6ac53}\label{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a379c115c72386cd4407443d9f3c6ac53}} +\index{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}!operator$>$$>$@{operator$>$$>$}} +\index{operator$>$$>$@{operator$>$$>$}!utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}} +\subsubsection{\texorpdfstring{operator$>$$>$()}{operator>>()}\hspace{0.1cm}{\footnotesize\ttfamily [3/3]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +\mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4}{idx\+\_\+dev\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, idx\+\_\+t, N $>$\+::operator$>$$>$ (\begin{DoxyParamCaption}\item[{data\+\_\+t \&}]{dst }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Overload for single data\+\_\+t object. + + + +Definition at line 380 of file idx\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_aa636cd6c14608d8f5a0d16d409be3aaa}\label{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_aa636cd6c14608d8f5a0d16d409be3aaa}} +\index{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}!operator\mbox{[}\mbox{]}@{operator[]}} +\index{operator\mbox{[}\mbox{]}@{operator[]}!utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}} +\subsubsection{\texorpdfstring{operator[]()}{operator[]()}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +data\+\_\+t\& \mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, idx\+\_\+t, N $>$\+::operator\mbox{[}$\,$\mbox{]} (\begin{DoxyParamCaption}\item[{const idx\+\_\+t}]{idx }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 418 of file idx\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a183e46d89452a51a029387f621fb4e9f}\label{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a183e46d89452a51a029387f621fb4e9f}} +\index{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}!put@{put}} +\index{put@{put}!utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}} +\subsubsection{\texorpdfstring{put()}{put()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, idx\+\_\+t, N $>$\+::put (\begin{DoxyParamCaption}\item[{const data\+\_\+t \&}]{data, }\item[{idx\+\_\+t}]{cursor }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Put interface. This function should send a single data\+\_\+t object to device. + + +\begin{DoxyParams}{Parameters} +{\em data} & The data to send \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +The number of transmitted data items +\end{DoxyReturn} +\begin{DoxyNote}{Note} +A successful call should return 1 +\end{DoxyNote} + + +Definition at line 328 of file idx\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a58ee979bbc14205548db85cbfbed7aba}\label{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4_a58ee979bbc14205548db85cbfbed7aba}} +\index{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}!put@{put}} +\index{put@{put}!utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$@{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}} +\subsubsection{\texorpdfstring{put()}{put()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , typename idx\+\_\+t , size\+\_\+t N$>$ \\ +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, idx\+\_\+t, N $>$\+::put (\begin{DoxyParamCaption}\item[{const data\+\_\+t $\ast$}]{data, }\item[{\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}}}]{n, }\item[{idx\+\_\+t}]{cursor }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Put interface. This function should send a stream of data\+\_\+t objects to device. + + +\begin{DoxyParams}{Parameters} +{\em data} & Pointer to buffer indenting write to device. \\ +\hline +{\em n} & The number of data of type data\+\_\+t to send \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +The number of transmitted items. +\end{DoxyReturn} + + +Definition at line 340 of file idx\+\_\+dev.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/dev/\mbox{\hyperlink{idx__dev_8h}{idx\+\_\+dev.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classutl_1_1in__dev.tex b/doc/latex/classutl_1_1in__dev.tex new file mode 100644 index 0000000..31f58fb --- /dev/null +++ b/doc/latex/classutl_1_1in__dev.tex @@ -0,0 +1,407 @@ +\hypertarget{classutl_1_1in__dev}{}\section{utl\+:\+:in\+\_\+dev$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$ Class Template Reference} +\label{classutl_1_1in__dev}\index{utl\+::in\+\_\+dev$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$@{utl\+::in\+\_\+dev$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$}} + + +Abstract base class for input devices. + + + + +{\ttfamily \#include $<$in\+\_\+dev.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{classutl_1_1in__dev_adef54df1c3d4ae20629ecfdb7826384c}{type}} = \mbox{\hyperlink{classutl_1_1in__dev}{in\+\_\+dev\+\_\+t}} +\begin{DoxyCompactList}\small\item\em Export type as identity meta-\/function. \end{DoxyCompactList}\end{DoxyCompactItemize} +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{classutl_1_1in__dev_acb38742b242e8cf90323d46a9907863d}{data\+\_\+type}} = data\+\_\+t +\item +using \mbox{\hyperlink{classutl_1_1in__dev_aef4b5c41ab91ef284cfc0cf6100c0828}{pointer\+\_\+type}} = data\+\_\+t $\ast$ +\end{DoxyCompactItemize} + +\subsection*{Public Member Functions} +\begin{Indent}\textbf{ Public Get interface}\par +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1in__dev_aa13a075d41f3e020f4f67c2a59d580a5}{get}} (data\+\_\+t \&data) +\begin{DoxyCompactList}\small\item\em Get interface. This function should read a single data\+\_\+t object from device in blocking mode. \end{DoxyCompactList}\item +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1in__dev_a5536fdd877bc9f078a9ede43ccc283e7}{get}} (data\+\_\+t $\ast$data, \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} n) +\begin{DoxyCompactList}\small\item\em Old stile get functionality using free standing data\+\_\+t$\ast$. This function should return a stream of data from device. \end{DoxyCompactList}\end{DoxyCompactItemize} +\end{Indent} +\begin{Indent}\textbf{ Stream operator $>$$>$ interface}\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename \+\_\+\+Dst\+\_\+t $>$ }\\\mbox{\hyperlink{classutl_1_1in__dev}{in\+\_\+dev\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1in__dev_abe8aa85c0dbe0ddb3745ded02b4e68fe}{operator$>$$>$}} (\+\_\+\+Dst\+\_\+t \&dst) +\begin{DoxyCompactList}\small\item\em Template operator $>$$>$ implementation for for all by value/ref parameters. \end{DoxyCompactList}\item +{\footnotesize template$<$typename \+\_\+\+Dst\+\_\+t $>$ }\\\mbox{\hyperlink{classutl_1_1in__dev}{in\+\_\+dev\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1in__dev_a60b3bba96e6bfd2091e594fdbc93fd6f}{operator$>$$>$}} (\+\_\+\+Dst\+\_\+t $\ast$dst)=delete +\begin{DoxyCompactList}\small\item\em Specialization to disallow pointer types as destination. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1in__dev}{in\+\_\+dev\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1in__dev_a98774619e8575162a8be271833282690}{operator$>$$>$}} (data\+\_\+t \&dst) +\begin{DoxyCompactList}\small\item\em Overload for single data\+\_\+t object. \end{DoxyCompactList}\end{DoxyCompactItemize} +\end{Indent} +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classutl_1_1in__dev_a629f2364e2ab427cbdc0c7f1cb8e8a66}{iterator}} \mbox{\hyperlink{classutl_1_1in__dev_aae7797f366d25091b63ad87b34ed4b48}{end}} () noexcept +\item +\mbox{\hyperlink{classutl_1_1in__dev_a686e6cda465a7e08b29465a75740e043}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1in__dev_aecb438cbb0e2a6c3a926aad81e8c29c7}{end}} () const noexcept +\item +\mbox{\hyperlink{classutl_1_1in__dev_a686e6cda465a7e08b29465a75740e043}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1in__dev_ac54d9a1fb6241be460ffc792aac18b24}{cend}} () const noexcept +\end{DoxyCompactItemize} + +\subsection*{Protected Member Functions} +\begin{Indent}\textbf{ Constructor / Destructor}\par +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classutl_1_1in__dev_a2caa0f47e6132f051bb54b1acea37fc6}{$\sim$in\+\_\+dev}} ()=default +\begin{DoxyCompactList}\small\item\em Allow destructor from derived only. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1in__dev_a1ca16c382f5e0dd25089a4e06a40f2f2}{in\+\_\+dev}} ()=default +\begin{DoxyCompactList}\small\item\em A default constructor from derived only. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1in__dev_a570c94b183eff6f8ca2d7d9ab5d9a7ea}{in\+\_\+dev}} (const \mbox{\hyperlink{classutl_1_1in__dev}{in\+\_\+dev\+\_\+t}} \&)=delete +\begin{DoxyCompactList}\small\item\em No copies. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1in__dev}{in\+\_\+dev\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1in__dev_a55dc56f1277b2bd04b154fbf19d8853f}{operator=}} (const \mbox{\hyperlink{classutl_1_1in__dev}{in\+\_\+dev\+\_\+t}} \&)=delete +\end{DoxyCompactItemize} +\end{Indent} +\subsection*{S\+T\+L-\/like Input iterator interface} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{classutl_1_1in__dev_a629f2364e2ab427cbdc0c7f1cb8e8a66}{iterator}} = \mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}}$<$ \mbox{\hyperlink{classutl_1_1in__dev}{in\+\_\+dev\+\_\+t}}, data\+\_\+t $\ast$, streamsize $>$ +\begin{DoxyCompactList}\small\item\em Iterator. \end{DoxyCompactList}\item +using \mbox{\hyperlink{classutl_1_1in__dev_a686e6cda465a7e08b29465a75740e043}{const\+\_\+iterator}} = \mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}}$<$ \mbox{\hyperlink{classutl_1_1in__dev}{in\+\_\+dev\+\_\+t}}, const data\+\_\+t $\ast$, streamsize $>$ +\begin{DoxyCompactList}\small\item\em Const iterator. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1in__dev_a629f2364e2ab427cbdc0c7f1cb8e8a66}{iterator}} \mbox{\hyperlink{classutl_1_1in__dev_ab2158d8a134dff882a3eac2960da04c0}{begin}} () noexcept +\begin{DoxyCompactList}\small\item\em .begin implementation \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1in__dev_a686e6cda465a7e08b29465a75740e043}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1in__dev_af81ff90ccb0070ad9388bc032d6d3279}{begin}} () const noexcept +\item +\mbox{\hyperlink{classutl_1_1in__dev_a686e6cda465a7e08b29465a75740e043}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1in__dev_a1120a80c871e1ea8165b4943c767893d}{cbegin}} () const noexcept +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename impl\+\_\+t, typename data\+\_\+t, size\+\_\+t streamsize = 0$>$\newline +class utl\+::in\+\_\+dev$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$} + +Abstract base class for input devices. + +Template base class for un-\/buffered input devices. using C\+R\+TP + +This class force a common interface for input, non-\/buffered devices. By using this common interface the class implements +\begin{DoxyItemize} +\item Stream-\/like extracting operator +\item Input iterator +\item Const input iterator to inherit to implementation. +\end{DoxyItemize} + + +\begin{DoxyParams}{Parameters} +{\em impl\+\_\+t} & The C\+R\+TP type (the derived/implementation class typename). \\ +\hline +{\em data\+\_\+t} & The devices base type of data \\ +\hline +{\em streamsize} & The number of elements to indicate eos. \begin{DoxyItemize} +\item None or 0 Stream only. No iterator as \mbox{\hyperlink{classutl_1_1in__dev_ab2158d8a134dff882a3eac2960da04c0}{begin()}} now equals \mbox{\hyperlink{classutl_1_1in__dev_aae7797f366d25091b63ad87b34ed4b48}{end()}}. \end{DoxyItemize} +\\ +\hline +\end{DoxyParams} + + +Definition at line 54 of file in\+\_\+dev.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{classutl_1_1in__dev_a686e6cda465a7e08b29465a75740e043}\label{classutl_1_1in__dev_a686e6cda465a7e08b29465a75740e043}} +\index{utl\+::in\+\_\+dev@{utl\+::in\+\_\+dev}!const\+\_\+iterator@{const\+\_\+iterator}} +\index{const\+\_\+iterator@{const\+\_\+iterator}!utl\+::in\+\_\+dev@{utl\+::in\+\_\+dev}} +\subsubsection{\texorpdfstring{const\+\_\+iterator}{const\_iterator}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +using \mbox{\hyperlink{classutl_1_1in__dev}{utl\+::in\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::\mbox{\hyperlink{classutl_1_1in__dev_a686e6cda465a7e08b29465a75740e043}{const\+\_\+iterator}} = \mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}} $<$\mbox{\hyperlink{classutl_1_1in__dev}{in\+\_\+dev\+\_\+t}}, const data\+\_\+t$\ast$, streamsize$>$} + + + +Const iterator. + + + +Definition at line 151 of file in\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1in__dev_acb38742b242e8cf90323d46a9907863d}\label{classutl_1_1in__dev_acb38742b242e8cf90323d46a9907863d}} +\index{utl\+::in\+\_\+dev@{utl\+::in\+\_\+dev}!data\+\_\+type@{data\+\_\+type}} +\index{data\+\_\+type@{data\+\_\+type}!utl\+::in\+\_\+dev@{utl\+::in\+\_\+dev}} +\subsubsection{\texorpdfstring{data\+\_\+type}{data\_type}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +using \mbox{\hyperlink{classutl_1_1in__dev}{utl\+::in\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::\mbox{\hyperlink{classutl_1_1in__dev_acb38742b242e8cf90323d46a9907863d}{data\+\_\+type}} = data\+\_\+t} + +Export types as input device concept demands + +Definition at line 61 of file in\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1in__dev_a629f2364e2ab427cbdc0c7f1cb8e8a66}\label{classutl_1_1in__dev_a629f2364e2ab427cbdc0c7f1cb8e8a66}} +\index{utl\+::in\+\_\+dev@{utl\+::in\+\_\+dev}!iterator@{iterator}} +\index{iterator@{iterator}!utl\+::in\+\_\+dev@{utl\+::in\+\_\+dev}} +\subsubsection{\texorpdfstring{iterator}{iterator}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +using \mbox{\hyperlink{classutl_1_1in__dev}{utl\+::in\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::\mbox{\hyperlink{classutl_1_1in__dev_a629f2364e2ab427cbdc0c7f1cb8e8a66}{iterator}} = \mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}} $<$\mbox{\hyperlink{classutl_1_1in__dev}{in\+\_\+dev\+\_\+t}}, data\+\_\+t$\ast$, streamsize$>$} + + + +Iterator. + + + +Definition at line 150 of file in\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1in__dev_aef4b5c41ab91ef284cfc0cf6100c0828}\label{classutl_1_1in__dev_aef4b5c41ab91ef284cfc0cf6100c0828}} +\index{utl\+::in\+\_\+dev@{utl\+::in\+\_\+dev}!pointer\+\_\+type@{pointer\+\_\+type}} +\index{pointer\+\_\+type@{pointer\+\_\+type}!utl\+::in\+\_\+dev@{utl\+::in\+\_\+dev}} +\subsubsection{\texorpdfstring{pointer\+\_\+type}{pointer\_type}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +using \mbox{\hyperlink{classutl_1_1in__dev}{utl\+::in\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::\mbox{\hyperlink{classutl_1_1in__dev_aef4b5c41ab91ef284cfc0cf6100c0828}{pointer\+\_\+type}} = data\+\_\+t$\ast$} + + + +Definition at line 62 of file in\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1in__dev_adef54df1c3d4ae20629ecfdb7826384c}\label{classutl_1_1in__dev_adef54df1c3d4ae20629ecfdb7826384c}} +\index{utl\+::in\+\_\+dev@{utl\+::in\+\_\+dev}!type@{type}} +\index{type@{type}!utl\+::in\+\_\+dev@{utl\+::in\+\_\+dev}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +using \mbox{\hyperlink{classutl_1_1in__dev}{utl\+::in\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::\mbox{\hyperlink{classutl_1_1in__dev_adef54df1c3d4ae20629ecfdb7826384c}{type}} = \mbox{\hyperlink{classutl_1_1in__dev}{in\+\_\+dev\+\_\+t}}} + + + +Export type as identity meta-\/function. + + + +Definition at line 64 of file in\+\_\+dev.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classutl_1_1in__dev_a2caa0f47e6132f051bb54b1acea37fc6}\label{classutl_1_1in__dev_a2caa0f47e6132f051bb54b1acea37fc6}} +\index{utl\+::in\+\_\+dev@{utl\+::in\+\_\+dev}!````~in\+\_\+dev@{$\sim$in\+\_\+dev}} +\index{````~in\+\_\+dev@{$\sim$in\+\_\+dev}!utl\+::in\+\_\+dev@{utl\+::in\+\_\+dev}} +\subsubsection{\texorpdfstring{$\sim$in\+\_\+dev()}{~in\_dev()}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +\mbox{\hyperlink{classutl_1_1in__dev}{utl\+::in\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::$\sim$\mbox{\hyperlink{classutl_1_1in__dev}{in\+\_\+dev}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [default]}} + + + +Allow destructor from derived only. + +\mbox{\Hypertarget{classutl_1_1in__dev_a1ca16c382f5e0dd25089a4e06a40f2f2}\label{classutl_1_1in__dev_a1ca16c382f5e0dd25089a4e06a40f2f2}} +\index{utl\+::in\+\_\+dev@{utl\+::in\+\_\+dev}!in\+\_\+dev@{in\+\_\+dev}} +\index{in\+\_\+dev@{in\+\_\+dev}!utl\+::in\+\_\+dev@{utl\+::in\+\_\+dev}} +\subsubsection{\texorpdfstring{in\+\_\+dev()}{in\_dev()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +\mbox{\hyperlink{classutl_1_1in__dev}{utl\+::in\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::\mbox{\hyperlink{classutl_1_1in__dev}{in\+\_\+dev}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [default]}} + + + +A default constructor from derived only. + +\mbox{\Hypertarget{classutl_1_1in__dev_a570c94b183eff6f8ca2d7d9ab5d9a7ea}\label{classutl_1_1in__dev_a570c94b183eff6f8ca2d7d9ab5d9a7ea}} +\index{utl\+::in\+\_\+dev@{utl\+::in\+\_\+dev}!in\+\_\+dev@{in\+\_\+dev}} +\index{in\+\_\+dev@{in\+\_\+dev}!utl\+::in\+\_\+dev@{utl\+::in\+\_\+dev}} +\subsubsection{\texorpdfstring{in\+\_\+dev()}{in\_dev()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +\mbox{\hyperlink{classutl_1_1in__dev}{utl\+::in\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::\mbox{\hyperlink{classutl_1_1in__dev}{in\+\_\+dev}} (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1in__dev}{in\+\_\+dev\+\_\+t}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [delete]}} + + + +No copies. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classutl_1_1in__dev_ab2158d8a134dff882a3eac2960da04c0}\label{classutl_1_1in__dev_ab2158d8a134dff882a3eac2960da04c0}} +\index{utl\+::in\+\_\+dev@{utl\+::in\+\_\+dev}!begin@{begin}} +\index{begin@{begin}!utl\+::in\+\_\+dev@{utl\+::in\+\_\+dev}} +\subsubsection{\texorpdfstring{begin()}{begin()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +\mbox{\hyperlink{classutl_1_1in__dev_a629f2364e2ab427cbdc0c7f1cb8e8a66}{iterator}} \mbox{\hyperlink{classutl_1_1in__dev}{utl\+::in\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::begin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +.begin implementation + + + +Definition at line 154 of file in\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1in__dev_af81ff90ccb0070ad9388bc032d6d3279}\label{classutl_1_1in__dev_af81ff90ccb0070ad9388bc032d6d3279}} +\index{utl\+::in\+\_\+dev@{utl\+::in\+\_\+dev}!begin@{begin}} +\index{begin@{begin}!utl\+::in\+\_\+dev@{utl\+::in\+\_\+dev}} +\subsubsection{\texorpdfstring{begin()}{begin()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +\mbox{\hyperlink{classutl_1_1in__dev_a686e6cda465a7e08b29465a75740e043}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1in__dev}{utl\+::in\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::begin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 155 of file in\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1in__dev_a1120a80c871e1ea8165b4943c767893d}\label{classutl_1_1in__dev_a1120a80c871e1ea8165b4943c767893d}} +\index{utl\+::in\+\_\+dev@{utl\+::in\+\_\+dev}!cbegin@{cbegin}} +\index{cbegin@{cbegin}!utl\+::in\+\_\+dev@{utl\+::in\+\_\+dev}} +\subsubsection{\texorpdfstring{cbegin()}{cbegin()}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +\mbox{\hyperlink{classutl_1_1in__dev_a686e6cda465a7e08b29465a75740e043}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1in__dev}{utl\+::in\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::cbegin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 156 of file in\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1in__dev_ac54d9a1fb6241be460ffc792aac18b24}\label{classutl_1_1in__dev_ac54d9a1fb6241be460ffc792aac18b24}} +\index{utl\+::in\+\_\+dev@{utl\+::in\+\_\+dev}!cend@{cend}} +\index{cend@{cend}!utl\+::in\+\_\+dev@{utl\+::in\+\_\+dev}} +\subsubsection{\texorpdfstring{cend()}{cend()}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +\mbox{\hyperlink{classutl_1_1in__dev_a686e6cda465a7e08b29465a75740e043}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1in__dev}{utl\+::in\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::cend (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 161 of file in\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1in__dev_aae7797f366d25091b63ad87b34ed4b48}\label{classutl_1_1in__dev_aae7797f366d25091b63ad87b34ed4b48}} +\index{utl\+::in\+\_\+dev@{utl\+::in\+\_\+dev}!end@{end}} +\index{end@{end}!utl\+::in\+\_\+dev@{utl\+::in\+\_\+dev}} +\subsubsection{\texorpdfstring{end()}{end()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +\mbox{\hyperlink{classutl_1_1in__dev_a629f2364e2ab427cbdc0c7f1cb8e8a66}{iterator}} \mbox{\hyperlink{classutl_1_1in__dev}{utl\+::in\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::end (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + +.end implementation + +Definition at line 159 of file in\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1in__dev_aecb438cbb0e2a6c3a926aad81e8c29c7}\label{classutl_1_1in__dev_aecb438cbb0e2a6c3a926aad81e8c29c7}} +\index{utl\+::in\+\_\+dev@{utl\+::in\+\_\+dev}!end@{end}} +\index{end@{end}!utl\+::in\+\_\+dev@{utl\+::in\+\_\+dev}} +\subsubsection{\texorpdfstring{end()}{end()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +\mbox{\hyperlink{classutl_1_1in__dev_a686e6cda465a7e08b29465a75740e043}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1in__dev}{utl\+::in\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::end (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 160 of file in\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1in__dev_aa13a075d41f3e020f4f67c2a59d580a5}\label{classutl_1_1in__dev_aa13a075d41f3e020f4f67c2a59d580a5}} +\index{utl\+::in\+\_\+dev@{utl\+::in\+\_\+dev}!get@{get}} +\index{get@{get}!utl\+::in\+\_\+dev@{utl\+::in\+\_\+dev}} +\subsubsection{\texorpdfstring{get()}{get()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1in__dev}{utl\+::in\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::get (\begin{DoxyParamCaption}\item[{data\+\_\+t \&}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Get interface. This function should read a single data\+\_\+t object from device in blocking mode. + + +\begin{DoxyParams}{Parameters} +{\em data} & Reference to data output from device. \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +Number of data read from device +\end{DoxyReturn} +\begin{DoxyNote}{Note} +A successful call should return 1 +\end{DoxyNote} + + +Definition at line 97 of file in\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1in__dev_a5536fdd877bc9f078a9ede43ccc283e7}\label{classutl_1_1in__dev_a5536fdd877bc9f078a9ede43ccc283e7}} +\index{utl\+::in\+\_\+dev@{utl\+::in\+\_\+dev}!get@{get}} +\index{get@{get}!utl\+::in\+\_\+dev@{utl\+::in\+\_\+dev}} +\subsubsection{\texorpdfstring{get()}{get()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1in__dev}{utl\+::in\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::get (\begin{DoxyParamCaption}\item[{data\+\_\+t $\ast$}]{data, }\item[{\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}}}]{n }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Old stile get functionality using free standing data\+\_\+t$\ast$. This function should return a stream of data from device. + + +\begin{DoxyParams}{Parameters} +{\em data} & Pointer to buffer to write the data from device. \\ +\hline +{\em n} & The number of data of type data\+\_\+t to read \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +The read data items. +\end{DoxyReturn} + + +Definition at line 109 of file in\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1in__dev_a55dc56f1277b2bd04b154fbf19d8853f}\label{classutl_1_1in__dev_a55dc56f1277b2bd04b154fbf19d8853f}} +\index{utl\+::in\+\_\+dev@{utl\+::in\+\_\+dev}!operator=@{operator=}} +\index{operator=@{operator=}!utl\+::in\+\_\+dev@{utl\+::in\+\_\+dev}} +\subsubsection{\texorpdfstring{operator=()}{operator=()}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +\mbox{\hyperlink{classutl_1_1in__dev}{in\+\_\+dev\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1in__dev}{utl\+::in\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::operator= (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1in__dev}{in\+\_\+dev\+\_\+t}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [delete]}} + +No copy assignments \mbox{\Hypertarget{classutl_1_1in__dev_abe8aa85c0dbe0ddb3745ded02b4e68fe}\label{classutl_1_1in__dev_abe8aa85c0dbe0ddb3745ded02b4e68fe}} +\index{utl\+::in\+\_\+dev@{utl\+::in\+\_\+dev}!operator$>$$>$@{operator$>$$>$}} +\index{operator$>$$>$@{operator$>$$>$}!utl\+::in\+\_\+dev@{utl\+::in\+\_\+dev}} +\subsubsection{\texorpdfstring{operator$>$$>$()}{operator>>()}\hspace{0.1cm}{\footnotesize\ttfamily [1/3]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +template$<$typename \+\_\+\+Dst\+\_\+t $>$ \\ +\mbox{\hyperlink{classutl_1_1in__dev}{in\+\_\+dev\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1in__dev}{utl\+::in\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::operator$>$$>$ (\begin{DoxyParamCaption}\item[{\+\_\+\+Dst\+\_\+t \&}]{dst }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Template operator $>$$>$ implementation for for all by value/ref parameters. + +\begin{DoxyNote}{Note} +In the case \+\_\+\+Dst\+\_\+t size is not a integer multiple of device\textquotesingle{}s data size this will fail by static assertion +\end{DoxyNote} + +\begin{DoxyParams}{Parameters} +{\em dst} & Reference to destination \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +Reference to this device for chaining +\end{DoxyReturn} + + +Definition at line 129 of file in\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1in__dev_a60b3bba96e6bfd2091e594fdbc93fd6f}\label{classutl_1_1in__dev_a60b3bba96e6bfd2091e594fdbc93fd6f}} +\index{utl\+::in\+\_\+dev@{utl\+::in\+\_\+dev}!operator$>$$>$@{operator$>$$>$}} +\index{operator$>$$>$@{operator$>$$>$}!utl\+::in\+\_\+dev@{utl\+::in\+\_\+dev}} +\subsubsection{\texorpdfstring{operator$>$$>$()}{operator>>()}\hspace{0.1cm}{\footnotesize\ttfamily [2/3]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +template$<$typename \+\_\+\+Dst\+\_\+t $>$ \\ +\mbox{\hyperlink{classutl_1_1in__dev}{in\+\_\+dev\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1in__dev}{utl\+::in\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::operator$>$$>$ (\begin{DoxyParamCaption}\item[{\+\_\+\+Dst\+\_\+t $\ast$}]{dst }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [delete]}} + + + +Specialization to disallow pointer types as destination. + +\mbox{\Hypertarget{classutl_1_1in__dev_a98774619e8575162a8be271833282690}\label{classutl_1_1in__dev_a98774619e8575162a8be271833282690}} +\index{utl\+::in\+\_\+dev@{utl\+::in\+\_\+dev}!operator$>$$>$@{operator$>$$>$}} +\index{operator$>$$>$@{operator$>$$>$}!utl\+::in\+\_\+dev@{utl\+::in\+\_\+dev}} +\subsubsection{\texorpdfstring{operator$>$$>$()}{operator>>()}\hspace{0.1cm}{\footnotesize\ttfamily [3/3]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +\mbox{\hyperlink{classutl_1_1in__dev}{in\+\_\+dev\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1in__dev}{utl\+::in\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::operator$>$$>$ (\begin{DoxyParamCaption}\item[{data\+\_\+t \&}]{dst }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Overload for single data\+\_\+t object. + + + +Definition at line 140 of file in\+\_\+dev.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/dev/\mbox{\hyperlink{in__dev_8h}{in\+\_\+dev.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.tex b/doc/latex/classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.tex new file mode 100644 index 0000000..0a7182b --- /dev/null +++ b/doc/latex/classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.tex @@ -0,0 +1,365 @@ +\hypertarget{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{}\section{utl\+:\+:in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$ Class Template Reference} +\label{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}\index{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} + + +A virtual base class specialization. + + + + +{\ttfamily \#include $<$in\+\_\+dev.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a0fd855f15733c848a77ce3dfc2f3fab7}{type}} = \mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{in\+\_\+dev\+\_\+t}} +\begin{DoxyCompactList}\small\item\em Export type as identity meta-\/function. \end{DoxyCompactList}\end{DoxyCompactItemize} +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a6d418e7caeb88fa750148f1e8874dd79}{data\+\_\+type}} = data\+\_\+t +\item +using \mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a4deebc522c75a793304a7a7ff09fb3f8}{pointer\+\_\+type}} = data\+\_\+t $\ast$ +\end{DoxyCompactItemize} + +\subsection*{Public Member Functions} +\begin{Indent}\textbf{ Public Get interface}\par +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_aed9cb2dea774c6569b5e63aec8e0b50c}{get}} (data\+\_\+t \&data) +\item +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a12c2da025b94a200fc73133c206c017e}{get}} (data\+\_\+t $\ast$data, \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} n) +\end{DoxyCompactItemize} +\end{Indent} +\begin{Indent}\textbf{ Stream operator $>$$>$ interface}\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename \+\_\+\+Dst\+\_\+t $>$ }\\\mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{in\+\_\+dev\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a762d865283d5d990885a0851fddf24ee}{operator$>$$>$}} (\+\_\+\+Dst\+\_\+t \&dst) +\begin{DoxyCompactList}\small\item\em Template operator $>$$>$ implementation for for all by value/ref parameters. \end{DoxyCompactList}\item +{\footnotesize template$<$typename \+\_\+\+Dst\+\_\+t $>$ }\\\mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{in\+\_\+dev\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a57e046ec714ccd6a0bd2b2878de85f18}{operator$>$$>$}} (\+\_\+\+Dst\+\_\+t $\ast$dst)=delete +\begin{DoxyCompactList}\small\item\em specialization to disallow pointer types as destination \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{in\+\_\+dev\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a645886b95bec35e1d8a9d9247d47527a}{operator$>$$>$}} (data\+\_\+t \&dst) +\begin{DoxyCompactList}\small\item\em Overload for single data\+\_\+t object. \end{DoxyCompactList}\end{DoxyCompactItemize} +\end{Indent} +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a3a73a6ff50e2ab4c7e6cd70f560d7854}{iterator}} \mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a9425910f709853ff9cd70b2331a026cc}{end}} () noexcept +\item +\mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_afbb0032261579546e26972be1ab8f4e9}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a2b723a67fce37e74b594ee9c5dc07030}{end}} () const noexcept +\item +\mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_afbb0032261579546e26972be1ab8f4e9}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a08ffb1ab825979c182f042eeeaea57f3}{cend}} () const noexcept +\end{DoxyCompactItemize} + +\subsection*{Constructor / Destructor} +\begin{DoxyCompactItemize} +\item +virtual \mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a9cd04a9c2656fb2a92e3db35c401b6eb}{$\sim$in\+\_\+dev}} ()=default +\begin{DoxyCompactList}\small\item\em Virtual destructor. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a63a64b133693b7786f500406edc316f6}{in\+\_\+dev}} ()=default +\begin{DoxyCompactList}\small\item\em A default constructor from derived only. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a102939ee79bd9cd937255d342f7150f1}{in\+\_\+dev}} (const \mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{in\+\_\+dev\+\_\+t}} \&)=delete +\begin{DoxyCompactList}\small\item\em No copies. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{in\+\_\+dev\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_ab9b57ad0f6857b657bc6a870986f8648}{operator=}} (const \mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{in\+\_\+dev\+\_\+t}} \&)=delete +\end{DoxyCompactItemize} +\subsection*{S\+T\+L-\/like Input iterator interface} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a3a73a6ff50e2ab4c7e6cd70f560d7854}{iterator}} = \mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}}$<$ \mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{in\+\_\+dev\+\_\+t}}, data\+\_\+t $\ast$, streamsize $>$ +\begin{DoxyCompactList}\small\item\em Iterator. \end{DoxyCompactList}\item +using \mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_afbb0032261579546e26972be1ab8f4e9}{const\+\_\+iterator}} = \mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}}$<$ \mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{in\+\_\+dev\+\_\+t}}, const data\+\_\+t $\ast$, streamsize $>$ +\begin{DoxyCompactList}\small\item\em Const iterator. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a3a73a6ff50e2ab4c7e6cd70f560d7854}{iterator}} \mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_ace7fac9d980407acc9b6484592c74367}{begin}} () noexcept +\begin{DoxyCompactList}\small\item\em .begin implementation \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_afbb0032261579546e26972be1ab8f4e9}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_aa1ce4d2193e476156df1b03f39503f7c}{begin}} () const noexcept +\item +\mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_afbb0032261579546e26972be1ab8f4e9}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_ae1960ea2ffdf369a0c180b57007e0af6}{cbegin}} () const noexcept +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename data\+\_\+t, size\+\_\+t streamsize$>$\newline +class utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$} + +A virtual base class specialization. + + +\begin{DoxyParams}{Parameters} +{\em impl\+\_\+t} & = \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} \\ +\hline +{\em data\+\_\+t} & The devices base type of data \\ +\hline +{\em streamsize\+\_\+t} & Type to hold the number of read bytes \\ +\hline +\end{DoxyParams} + + +Definition at line 174 of file in\+\_\+dev.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_afbb0032261579546e26972be1ab8f4e9}\label{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_afbb0032261579546e26972be1ab8f4e9}} +\index{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!const\+\_\+iterator@{const\+\_\+iterator}} +\index{const\+\_\+iterator@{const\+\_\+iterator}!utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{const\+\_\+iterator}{const\_iterator}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +using \mbox{\hyperlink{classutl_1_1in__dev}{utl\+::in\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::\mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_afbb0032261579546e26972be1ab8f4e9}{const\+\_\+iterator}} = \mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}} $<$\mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{in\+\_\+dev\+\_\+t}}, const data\+\_\+t$\ast$, streamsize$>$} + + + +Const iterator. + + + +Definition at line 271 of file in\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a6d418e7caeb88fa750148f1e8874dd79}\label{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a6d418e7caeb88fa750148f1e8874dd79}} +\index{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!data\+\_\+type@{data\+\_\+type}} +\index{data\+\_\+type@{data\+\_\+type}!utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{data\+\_\+type}{data\_type}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +using \mbox{\hyperlink{classutl_1_1in__dev}{utl\+::in\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::\mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a6d418e7caeb88fa750148f1e8874dd79}{data\+\_\+type}} = data\+\_\+t} + +Export types as input device concept demands + +Definition at line 181 of file in\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a3a73a6ff50e2ab4c7e6cd70f560d7854}\label{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a3a73a6ff50e2ab4c7e6cd70f560d7854}} +\index{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!iterator@{iterator}} +\index{iterator@{iterator}!utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{iterator}{iterator}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +using \mbox{\hyperlink{classutl_1_1in__dev}{utl\+::in\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::\mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a3a73a6ff50e2ab4c7e6cd70f560d7854}{iterator}} = \mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}} $<$\mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{in\+\_\+dev\+\_\+t}}, data\+\_\+t$\ast$, streamsize$>$} + + + +Iterator. + + + +Definition at line 270 of file in\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a4deebc522c75a793304a7a7ff09fb3f8}\label{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a4deebc522c75a793304a7a7ff09fb3f8}} +\index{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!pointer\+\_\+type@{pointer\+\_\+type}} +\index{pointer\+\_\+type@{pointer\+\_\+type}!utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{pointer\+\_\+type}{pointer\_type}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +using \mbox{\hyperlink{classutl_1_1in__dev}{utl\+::in\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::\mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a4deebc522c75a793304a7a7ff09fb3f8}{pointer\+\_\+type}} = data\+\_\+t$\ast$} + + + +Definition at line 182 of file in\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a0fd855f15733c848a77ce3dfc2f3fab7}\label{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a0fd855f15733c848a77ce3dfc2f3fab7}} +\index{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!type@{type}} +\index{type@{type}!utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +using \mbox{\hyperlink{classutl_1_1in__dev}{utl\+::in\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::\mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a0fd855f15733c848a77ce3dfc2f3fab7}{type}} = \mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{in\+\_\+dev\+\_\+t}}} + + + +Export type as identity meta-\/function. + + + +Definition at line 184 of file in\+\_\+dev.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a9cd04a9c2656fb2a92e3db35c401b6eb}\label{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a9cd04a9c2656fb2a92e3db35c401b6eb}} +\index{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!````~in\+\_\+dev@{$\sim$in\+\_\+dev}} +\index{````~in\+\_\+dev@{$\sim$in\+\_\+dev}!utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{$\sim$in\+\_\+dev()}{~in\_dev()}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +virtual \mbox{\hyperlink{classutl_1_1in__dev}{utl\+::in\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::$\sim$\mbox{\hyperlink{classutl_1_1in__dev}{in\+\_\+dev}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}, {\ttfamily [default]}} + + + +Virtual destructor. + +\mbox{\Hypertarget{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a63a64b133693b7786f500406edc316f6}\label{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a63a64b133693b7786f500406edc316f6}} +\index{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!in\+\_\+dev@{in\+\_\+dev}} +\index{in\+\_\+dev@{in\+\_\+dev}!utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{in\+\_\+dev()}{in\_dev()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +\mbox{\hyperlink{classutl_1_1in__dev}{utl\+::in\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::\mbox{\hyperlink{classutl_1_1in__dev}{in\+\_\+dev}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [default]}} + + + +A default constructor from derived only. + +\mbox{\Hypertarget{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a102939ee79bd9cd937255d342f7150f1}\label{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a102939ee79bd9cd937255d342f7150f1}} +\index{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!in\+\_\+dev@{in\+\_\+dev}} +\index{in\+\_\+dev@{in\+\_\+dev}!utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{in\+\_\+dev()}{in\_dev()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +\mbox{\hyperlink{classutl_1_1in__dev}{utl\+::in\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::\mbox{\hyperlink{classutl_1_1in__dev}{in\+\_\+dev}} (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{in\+\_\+dev\+\_\+t}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [delete]}} + + + +No copies. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_ace7fac9d980407acc9b6484592c74367}\label{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_ace7fac9d980407acc9b6484592c74367}} +\index{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!begin@{begin}} +\index{begin@{begin}!utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{begin()}{begin()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +\mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a3a73a6ff50e2ab4c7e6cd70f560d7854}{iterator}} \mbox{\hyperlink{classutl_1_1in__dev}{utl\+::in\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::begin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +.begin implementation + + + +Definition at line 274 of file in\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_aa1ce4d2193e476156df1b03f39503f7c}\label{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_aa1ce4d2193e476156df1b03f39503f7c}} +\index{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!begin@{begin}} +\index{begin@{begin}!utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{begin()}{begin()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +\mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_afbb0032261579546e26972be1ab8f4e9}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1in__dev}{utl\+::in\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::begin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 275 of file in\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_ae1960ea2ffdf369a0c180b57007e0af6}\label{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_ae1960ea2ffdf369a0c180b57007e0af6}} +\index{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!cbegin@{cbegin}} +\index{cbegin@{cbegin}!utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{cbegin()}{cbegin()}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +\mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_afbb0032261579546e26972be1ab8f4e9}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1in__dev}{utl\+::in\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::cbegin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 276 of file in\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a08ffb1ab825979c182f042eeeaea57f3}\label{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a08ffb1ab825979c182f042eeeaea57f3}} +\index{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!cend@{cend}} +\index{cend@{cend}!utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{cend()}{cend()}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +\mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_afbb0032261579546e26972be1ab8f4e9}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1in__dev}{utl\+::in\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::cend (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 281 of file in\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a9425910f709853ff9cd70b2331a026cc}\label{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a9425910f709853ff9cd70b2331a026cc}} +\index{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!end@{end}} +\index{end@{end}!utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{end()}{end()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +\mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a3a73a6ff50e2ab4c7e6cd70f560d7854}{iterator}} \mbox{\hyperlink{classutl_1_1in__dev}{utl\+::in\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::end (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + +.end implementation + +Definition at line 279 of file in\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a2b723a67fce37e74b594ee9c5dc07030}\label{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a2b723a67fce37e74b594ee9c5dc07030}} +\index{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!end@{end}} +\index{end@{end}!utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{end()}{end()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +\mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_afbb0032261579546e26972be1ab8f4e9}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1in__dev}{utl\+::in\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::end (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 280 of file in\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_aed9cb2dea774c6569b5e63aec8e0b50c}\label{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_aed9cb2dea774c6569b5e63aec8e0b50c}} +\index{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!get@{get}} +\index{get@{get}!utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{get()}{get()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1in__dev}{utl\+::in\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::get (\begin{DoxyParamCaption}\item[{data\+\_\+t \&}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 230 of file in\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a12c2da025b94a200fc73133c206c017e}\label{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a12c2da025b94a200fc73133c206c017e}} +\index{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!get@{get}} +\index{get@{get}!utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{get()}{get()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1in__dev}{utl\+::in\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::get (\begin{DoxyParamCaption}\item[{data\+\_\+t $\ast$}]{data, }\item[{\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}}}]{n }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 231 of file in\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_ab9b57ad0f6857b657bc6a870986f8648}\label{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_ab9b57ad0f6857b657bc6a870986f8648}} +\index{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!operator=@{operator=}} +\index{operator=@{operator=}!utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{operator=()}{operator=()}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +\mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{in\+\_\+dev\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1in__dev}{utl\+::in\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::operator= (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{in\+\_\+dev\+\_\+t}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [delete]}} + +No copy assignments \mbox{\Hypertarget{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a762d865283d5d990885a0851fddf24ee}\label{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a762d865283d5d990885a0851fddf24ee}} +\index{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!operator$>$$>$@{operator$>$$>$}} +\index{operator$>$$>$@{operator$>$$>$}!utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{operator$>$$>$()}{operator>>()}\hspace{0.1cm}{\footnotesize\ttfamily [1/3]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +template$<$typename \+\_\+\+Dst\+\_\+t $>$ \\ +\mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{in\+\_\+dev\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1in__dev}{utl\+::in\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::operator$>$$>$ (\begin{DoxyParamCaption}\item[{\+\_\+\+Dst\+\_\+t \&}]{dst }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Template operator $>$$>$ implementation for for all by value/ref parameters. + +\begin{DoxyNote}{Note} +In the case \+\_\+\+Dst\+\_\+t size is not a integer multiple of device\textquotesingle{}s data size this will fail by static assertion +\end{DoxyNote} + +\begin{DoxyParams}{Parameters} +{\em dst} & Reference to destination \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +Reference to this device for chaining +\end{DoxyReturn} + + +Definition at line 249 of file in\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a57e046ec714ccd6a0bd2b2878de85f18}\label{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a57e046ec714ccd6a0bd2b2878de85f18}} +\index{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!operator$>$$>$@{operator$>$$>$}} +\index{operator$>$$>$@{operator$>$$>$}!utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{operator$>$$>$()}{operator>>()}\hspace{0.1cm}{\footnotesize\ttfamily [2/3]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +template$<$typename \+\_\+\+Dst\+\_\+t $>$ \\ +\mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{in\+\_\+dev\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1in__dev}{utl\+::in\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::operator$>$$>$ (\begin{DoxyParamCaption}\item[{\+\_\+\+Dst\+\_\+t $\ast$}]{dst }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [delete]}} + + + +specialization to disallow pointer types as destination + +\mbox{\Hypertarget{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a645886b95bec35e1d8a9d9247d47527a}\label{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a645886b95bec35e1d8a9d9247d47527a}} +\index{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!operator$>$$>$@{operator$>$$>$}} +\index{operator$>$$>$@{operator$>$$>$}!utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{operator$>$$>$()}{operator>>()}\hspace{0.1cm}{\footnotesize\ttfamily [3/3]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +\mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{in\+\_\+dev\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1in__dev}{utl\+::in\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::operator$>$$>$ (\begin{DoxyParamCaption}\item[{data\+\_\+t \&}]{dst }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Overload for single data\+\_\+t object. + + + +Definition at line 260 of file in\+\_\+dev.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/dev/\mbox{\hyperlink{in__dev_8h}{in\+\_\+dev.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classutl_1_1inbuf__dev.tex b/doc/latex/classutl_1_1inbuf__dev.tex new file mode 100644 index 0000000..ade25b1 --- /dev/null +++ b/doc/latex/classutl_1_1inbuf__dev.tex @@ -0,0 +1,423 @@ +\hypertarget{classutl_1_1inbuf__dev}{}\section{utl\+:\+:inbuf\+\_\+dev$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$ Class Template Reference} +\label{classutl_1_1inbuf__dev}\index{utl\+::inbuf\+\_\+dev$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$@{utl\+::inbuf\+\_\+dev$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$}} + + +Abstract base class for input buffered devices. + + + + +{\ttfamily \#include $<$inbuf\+\_\+dev.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{classutl_1_1inbuf__dev_ae429fbf167bbd96b2cc46094f3540b10}{type}} = \mbox{\hyperlink{classutl_1_1inbuf__dev}{inbuf\+\_\+dev\+\_\+t}} +\begin{DoxyCompactList}\small\item\em Export type as identity meta-\/function. \end{DoxyCompactList}\end{DoxyCompactItemize} +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{classutl_1_1inbuf__dev_ae660dce5b5111b0ea4743e32b3d2c3aa}{data\+\_\+type}} = data\+\_\+t +\item +using \mbox{\hyperlink{classutl_1_1inbuf__dev_a345d3b465e9cf57ebe3a8df31b67fec7}{pointer\+\_\+type}} = data\+\_\+t $\ast$ +\end{DoxyCompactItemize} + +\subsection*{Public Member Functions} +\begin{Indent}\textbf{ Public Get interface}\par +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1inbuf__dev_aa5b71a9b0c989c4686a053e9d5df9251}{in\+\_\+avail}} () +\item +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1inbuf__dev_a7856963b0bb0bf294be53ea20f3564d0}{get}} (data\+\_\+t \&data) +\begin{DoxyCompactList}\small\item\em The base get interface. This function should read a single data\+\_\+t object from device usually in non-\/blocking mode. \end{DoxyCompactList}\item +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1inbuf__dev_a9290fbfeebac0d161f800bc1522ea5a6}{get}} (data\+\_\+t $\ast$data, \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} n) +\begin{DoxyCompactList}\small\item\em Old stile get functionality using free standing data\+\_\+t$\ast$. This function should return a stream of data from device. \end{DoxyCompactList}\end{DoxyCompactItemize} +\end{Indent} +\begin{Indent}\textbf{ Stream operator $>$$>$ interface}\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename \+\_\+\+Dst\+\_\+t $>$ }\\\mbox{\hyperlink{classutl_1_1inbuf__dev}{inbuf\+\_\+dev\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1inbuf__dev_aca17fb240dfe221effa5a2092563d185}{operator$>$$>$}} (\+\_\+\+Dst\+\_\+t \&dst) +\begin{DoxyCompactList}\small\item\em Template operator $>$$>$ implementation for for all by value/ref parameters. \end{DoxyCompactList}\item +{\footnotesize template$<$typename \+\_\+\+Dst\+\_\+t $>$ }\\\mbox{\hyperlink{classutl_1_1inbuf__dev}{inbuf\+\_\+dev\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1inbuf__dev_a48a8160d1dce4542b0b09cff3f6a488b}{operator$>$$>$}} (\+\_\+\+Dst\+\_\+t $\ast$dst)=delete +\begin{DoxyCompactList}\small\item\em Specialization to disallow pointer types as destination. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1inbuf__dev}{inbuf\+\_\+dev\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1inbuf__dev_a6b11ed7628520b4dfe0bd438ccc58197}{operator$>$$>$}} (data\+\_\+t \&dst) +\begin{DoxyCompactList}\small\item\em Overload for single data\+\_\+t object. \end{DoxyCompactList}\end{DoxyCompactItemize} +\end{Indent} +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classutl_1_1inbuf__dev_a0c0827ae69fac778cec3abb179bfc0f3}{iterator}} \mbox{\hyperlink{classutl_1_1inbuf__dev_aea05a40b3c8966d1dd3978b40e0c6ac8}{end}} () noexcept +\item +\mbox{\hyperlink{classutl_1_1inbuf__dev_a173c37503cdd40e7ac1be25759553c24}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1inbuf__dev_aa862f748551da0bd92341f8f125b8aa3}{end}} () const noexcept +\item +\mbox{\hyperlink{classutl_1_1inbuf__dev_a173c37503cdd40e7ac1be25759553c24}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1inbuf__dev_a4b51121e0ecc1d43fd3fe7d05bb6fa56}{cend}} () const noexcept +\end{DoxyCompactItemize} + +\subsection*{Protected Member Functions} +\begin{Indent}\textbf{ Constructor / Destructor}\par +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classutl_1_1inbuf__dev_a55763f1c3ba5610404df70bda1abe75b}{$\sim$inbuf\+\_\+dev}} ()=default +\begin{DoxyCompactList}\small\item\em Allow destructor from derived only. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1inbuf__dev_a9bc1f15ed57132539749d390d5bb03b9}{inbuf\+\_\+dev}} ()=default +\begin{DoxyCompactList}\small\item\em A default constructor from derived only. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1inbuf__dev_a0fe7d9f726d8a0f2b23df6d9520b58ed}{inbuf\+\_\+dev}} (const \mbox{\hyperlink{classutl_1_1inbuf__dev}{inbuf\+\_\+dev\+\_\+t}} \&)=delete +\begin{DoxyCompactList}\small\item\em No copies. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1inbuf__dev}{inbuf\+\_\+dev\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1inbuf__dev_a7aaf5bc892d6247cb6bb547cf331704c}{operator=}} (const \mbox{\hyperlink{classutl_1_1inbuf__dev}{inbuf\+\_\+dev\+\_\+t}} \&)=delete +\end{DoxyCompactItemize} +\end{Indent} +\subsection*{S\+T\+L-\/like Input iterator interface} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{classutl_1_1inbuf__dev_a0c0827ae69fac778cec3abb179bfc0f3}{iterator}} = \mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}}$<$ \mbox{\hyperlink{classutl_1_1inbuf__dev}{inbuf\+\_\+dev\+\_\+t}}, data\+\_\+t $\ast$, streamsize $>$ +\begin{DoxyCompactList}\small\item\em Iterator. \end{DoxyCompactList}\item +using \mbox{\hyperlink{classutl_1_1inbuf__dev_a173c37503cdd40e7ac1be25759553c24}{const\+\_\+iterator}} = \mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}}$<$ \mbox{\hyperlink{classutl_1_1inbuf__dev}{inbuf\+\_\+dev\+\_\+t}}, const data\+\_\+t $\ast$, streamsize $>$ +\begin{DoxyCompactList}\small\item\em Const iterator. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1inbuf__dev_a0c0827ae69fac778cec3abb179bfc0f3}{iterator}} \mbox{\hyperlink{classutl_1_1inbuf__dev_a0b7b02345e2306dc9f62a75029de71fb}{begin}} () noexcept +\begin{DoxyCompactList}\small\item\em .begin implementation \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1inbuf__dev_a173c37503cdd40e7ac1be25759553c24}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1inbuf__dev_acf6f21857302843661cdbbbeea61f05b}{begin}} () const noexcept +\item +\mbox{\hyperlink{classutl_1_1inbuf__dev_a173c37503cdd40e7ac1be25759553c24}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1inbuf__dev_a3c24ad3be57e15019e3fbd579e5fccb3}{cbegin}} () const noexcept +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename impl\+\_\+t, typename data\+\_\+t, size\+\_\+t streamsize = 0$>$\newline +class utl\+::inbuf\+\_\+dev$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$} + +Abstract base class for input buffered devices. + +Template base class for buffered input buffered devices. using C\+R\+TP + +This class force a common interface for input, buffered devices. By using this common interface the class implements +\begin{DoxyItemize} +\item Stream-\/like extracting operator +\item Input iterator +\item Const input iterator to inherit to implementation. +\end{DoxyItemize} + + +\begin{DoxyParams}{Parameters} +{\em impl\+\_\+t} & The C\+R\+TP type (the derived/implementation class typename). \\ +\hline +{\em data\+\_\+t} & The devices base type of data \\ +\hline +{\em streamsize} & The number of elements to indicate eos. \begin{DoxyItemize} +\item None or 0 Stream only. No iterator as \mbox{\hyperlink{classutl_1_1inbuf__dev_a0b7b02345e2306dc9f62a75029de71fb}{begin()}} now equals \mbox{\hyperlink{classutl_1_1inbuf__dev_aea05a40b3c8966d1dd3978b40e0c6ac8}{end()}}. \end{DoxyItemize} +\\ +\hline +\end{DoxyParams} + + +Definition at line 55 of file inbuf\+\_\+dev.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{classutl_1_1inbuf__dev_a173c37503cdd40e7ac1be25759553c24}\label{classutl_1_1inbuf__dev_a173c37503cdd40e7ac1be25759553c24}} +\index{utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}!const\+\_\+iterator@{const\+\_\+iterator}} +\index{const\+\_\+iterator@{const\+\_\+iterator}!utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}} +\subsubsection{\texorpdfstring{const\+\_\+iterator}{const\_iterator}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +using \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::\mbox{\hyperlink{classutl_1_1inbuf__dev_a173c37503cdd40e7ac1be25759553c24}{const\+\_\+iterator}} = \mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}} $<$\mbox{\hyperlink{classutl_1_1inbuf__dev}{inbuf\+\_\+dev\+\_\+t}}, const data\+\_\+t$\ast$, streamsize$>$} + + + +Const iterator. + + + +Definition at line 162 of file inbuf\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1inbuf__dev_ae660dce5b5111b0ea4743e32b3d2c3aa}\label{classutl_1_1inbuf__dev_ae660dce5b5111b0ea4743e32b3d2c3aa}} +\index{utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}!data\+\_\+type@{data\+\_\+type}} +\index{data\+\_\+type@{data\+\_\+type}!utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}} +\subsubsection{\texorpdfstring{data\+\_\+type}{data\_type}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +using \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::\mbox{\hyperlink{classutl_1_1inbuf__dev_ae660dce5b5111b0ea4743e32b3d2c3aa}{data\+\_\+type}} = data\+\_\+t} + +Export types as input device concept demands + +Definition at line 62 of file inbuf\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1inbuf__dev_a0c0827ae69fac778cec3abb179bfc0f3}\label{classutl_1_1inbuf__dev_a0c0827ae69fac778cec3abb179bfc0f3}} +\index{utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}!iterator@{iterator}} +\index{iterator@{iterator}!utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}} +\subsubsection{\texorpdfstring{iterator}{iterator}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +using \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::\mbox{\hyperlink{classutl_1_1inbuf__dev_a0c0827ae69fac778cec3abb179bfc0f3}{iterator}} = \mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}} $<$\mbox{\hyperlink{classutl_1_1inbuf__dev}{inbuf\+\_\+dev\+\_\+t}}, data\+\_\+t$\ast$, streamsize$>$} + + + +Iterator. + + + +Definition at line 161 of file inbuf\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1inbuf__dev_a345d3b465e9cf57ebe3a8df31b67fec7}\label{classutl_1_1inbuf__dev_a345d3b465e9cf57ebe3a8df31b67fec7}} +\index{utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}!pointer\+\_\+type@{pointer\+\_\+type}} +\index{pointer\+\_\+type@{pointer\+\_\+type}!utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}} +\subsubsection{\texorpdfstring{pointer\+\_\+type}{pointer\_type}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +using \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::\mbox{\hyperlink{classutl_1_1inbuf__dev_a345d3b465e9cf57ebe3a8df31b67fec7}{pointer\+\_\+type}} = data\+\_\+t$\ast$} + + + +Definition at line 63 of file inbuf\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1inbuf__dev_ae429fbf167bbd96b2cc46094f3540b10}\label{classutl_1_1inbuf__dev_ae429fbf167bbd96b2cc46094f3540b10}} +\index{utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}!type@{type}} +\index{type@{type}!utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +using \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::\mbox{\hyperlink{classutl_1_1inbuf__dev_ae429fbf167bbd96b2cc46094f3540b10}{type}} = \mbox{\hyperlink{classutl_1_1inbuf__dev}{inbuf\+\_\+dev\+\_\+t}}} + + + +Export type as identity meta-\/function. + + + +Definition at line 65 of file inbuf\+\_\+dev.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classutl_1_1inbuf__dev_a55763f1c3ba5610404df70bda1abe75b}\label{classutl_1_1inbuf__dev_a55763f1c3ba5610404df70bda1abe75b}} +\index{utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}!````~inbuf\+\_\+dev@{$\sim$inbuf\+\_\+dev}} +\index{````~inbuf\+\_\+dev@{$\sim$inbuf\+\_\+dev}!utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}} +\subsubsection{\texorpdfstring{$\sim$inbuf\+\_\+dev()}{~inbuf\_dev()}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +\mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::$\sim$\mbox{\hyperlink{classutl_1_1inbuf__dev}{inbuf\+\_\+dev}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [default]}} + + + +Allow destructor from derived only. + +\mbox{\Hypertarget{classutl_1_1inbuf__dev_a9bc1f15ed57132539749d390d5bb03b9}\label{classutl_1_1inbuf__dev_a9bc1f15ed57132539749d390d5bb03b9}} +\index{utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}!inbuf\+\_\+dev@{inbuf\+\_\+dev}} +\index{inbuf\+\_\+dev@{inbuf\+\_\+dev}!utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}} +\subsubsection{\texorpdfstring{inbuf\+\_\+dev()}{inbuf\_dev()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +\mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::\mbox{\hyperlink{classutl_1_1inbuf__dev}{inbuf\+\_\+dev}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [default]}} + + + +A default constructor from derived only. + +\mbox{\Hypertarget{classutl_1_1inbuf__dev_a0fe7d9f726d8a0f2b23df6d9520b58ed}\label{classutl_1_1inbuf__dev_a0fe7d9f726d8a0f2b23df6d9520b58ed}} +\index{utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}!inbuf\+\_\+dev@{inbuf\+\_\+dev}} +\index{inbuf\+\_\+dev@{inbuf\+\_\+dev}!utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}} +\subsubsection{\texorpdfstring{inbuf\+\_\+dev()}{inbuf\_dev()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +\mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::\mbox{\hyperlink{classutl_1_1inbuf__dev}{inbuf\+\_\+dev}} (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1inbuf__dev}{inbuf\+\_\+dev\+\_\+t}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [delete]}} + + + +No copies. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classutl_1_1inbuf__dev_a0b7b02345e2306dc9f62a75029de71fb}\label{classutl_1_1inbuf__dev_a0b7b02345e2306dc9f62a75029de71fb}} +\index{utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}!begin@{begin}} +\index{begin@{begin}!utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}} +\subsubsection{\texorpdfstring{begin()}{begin()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +\mbox{\hyperlink{classutl_1_1inbuf__dev_a0c0827ae69fac778cec3abb179bfc0f3}{iterator}} \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::begin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +.begin implementation + + + +Definition at line 165 of file inbuf\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1inbuf__dev_acf6f21857302843661cdbbbeea61f05b}\label{classutl_1_1inbuf__dev_acf6f21857302843661cdbbbeea61f05b}} +\index{utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}!begin@{begin}} +\index{begin@{begin}!utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}} +\subsubsection{\texorpdfstring{begin()}{begin()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +\mbox{\hyperlink{classutl_1_1inbuf__dev_a173c37503cdd40e7ac1be25759553c24}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::begin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 166 of file inbuf\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1inbuf__dev_a3c24ad3be57e15019e3fbd579e5fccb3}\label{classutl_1_1inbuf__dev_a3c24ad3be57e15019e3fbd579e5fccb3}} +\index{utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}!cbegin@{cbegin}} +\index{cbegin@{cbegin}!utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}} +\subsubsection{\texorpdfstring{cbegin()}{cbegin()}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +\mbox{\hyperlink{classutl_1_1inbuf__dev_a173c37503cdd40e7ac1be25759553c24}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::cbegin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 167 of file inbuf\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1inbuf__dev_a4b51121e0ecc1d43fd3fe7d05bb6fa56}\label{classutl_1_1inbuf__dev_a4b51121e0ecc1d43fd3fe7d05bb6fa56}} +\index{utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}!cend@{cend}} +\index{cend@{cend}!utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}} +\subsubsection{\texorpdfstring{cend()}{cend()}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +\mbox{\hyperlink{classutl_1_1inbuf__dev_a173c37503cdd40e7ac1be25759553c24}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::cend (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 172 of file inbuf\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1inbuf__dev_aea05a40b3c8966d1dd3978b40e0c6ac8}\label{classutl_1_1inbuf__dev_aea05a40b3c8966d1dd3978b40e0c6ac8}} +\index{utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}!end@{end}} +\index{end@{end}!utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}} +\subsubsection{\texorpdfstring{end()}{end()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +\mbox{\hyperlink{classutl_1_1inbuf__dev_a0c0827ae69fac778cec3abb179bfc0f3}{iterator}} \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::end (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + +.end implementation + +Definition at line 170 of file inbuf\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1inbuf__dev_aa862f748551da0bd92341f8f125b8aa3}\label{classutl_1_1inbuf__dev_aa862f748551da0bd92341f8f125b8aa3}} +\index{utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}!end@{end}} +\index{end@{end}!utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}} +\subsubsection{\texorpdfstring{end()}{end()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +\mbox{\hyperlink{classutl_1_1inbuf__dev_a173c37503cdd40e7ac1be25759553c24}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::end (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 171 of file inbuf\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1inbuf__dev_a7856963b0bb0bf294be53ea20f3564d0}\label{classutl_1_1inbuf__dev_a7856963b0bb0bf294be53ea20f3564d0}} +\index{utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}!get@{get}} +\index{get@{get}!utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}} +\subsubsection{\texorpdfstring{get()}{get()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::get (\begin{DoxyParamCaption}\item[{data\+\_\+t \&}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +The base get interface. This function should read a single data\+\_\+t object from device usually in non-\/blocking mode. + + +\begin{DoxyParams}{Parameters} +{\em data} & Reference to data output from device. \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +Number of data read from device +\end{DoxyReturn} +\begin{DoxyNote}{Note} +A successful call should return 1 +\end{DoxyNote} + + +Definition at line 108 of file inbuf\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1inbuf__dev_a9290fbfeebac0d161f800bc1522ea5a6}\label{classutl_1_1inbuf__dev_a9290fbfeebac0d161f800bc1522ea5a6}} +\index{utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}!get@{get}} +\index{get@{get}!utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}} +\subsubsection{\texorpdfstring{get()}{get()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::get (\begin{DoxyParamCaption}\item[{data\+\_\+t $\ast$}]{data, }\item[{\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}}}]{n }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Old stile get functionality using free standing data\+\_\+t$\ast$. This function should return a stream of data from device. + + +\begin{DoxyParams}{Parameters} +{\em data} & Pointer to buffer to write the data from device. \\ +\hline +{\em n} & The number of data of type data\+\_\+t to read \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +The read data items. +\end{DoxyReturn} + + +Definition at line 120 of file inbuf\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1inbuf__dev_aa5b71a9b0c989c4686a053e9d5df9251}\label{classutl_1_1inbuf__dev_aa5b71a9b0c989c4686a053e9d5df9251}} +\index{utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}!in\+\_\+avail@{in\+\_\+avail}} +\index{in\+\_\+avail@{in\+\_\+avail}!utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}} +\subsubsection{\texorpdfstring{in\+\_\+avail()}{in\_avail()}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::in\+\_\+avail (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + +\begin{DoxyReturn}{Returns} +The available {\itshape data\+\_\+t} typed items in input buffer. +\end{DoxyReturn} + + +Definition at line 95 of file inbuf\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1inbuf__dev_a7aaf5bc892d6247cb6bb547cf331704c}\label{classutl_1_1inbuf__dev_a7aaf5bc892d6247cb6bb547cf331704c}} +\index{utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}!operator=@{operator=}} +\index{operator=@{operator=}!utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}} +\subsubsection{\texorpdfstring{operator=()}{operator=()}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +\mbox{\hyperlink{classutl_1_1inbuf__dev}{inbuf\+\_\+dev\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::operator= (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1inbuf__dev}{inbuf\+\_\+dev\+\_\+t}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [delete]}} + +No copy assignments \mbox{\Hypertarget{classutl_1_1inbuf__dev_aca17fb240dfe221effa5a2092563d185}\label{classutl_1_1inbuf__dev_aca17fb240dfe221effa5a2092563d185}} +\index{utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}!operator$>$$>$@{operator$>$$>$}} +\index{operator$>$$>$@{operator$>$$>$}!utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}} +\subsubsection{\texorpdfstring{operator$>$$>$()}{operator>>()}\hspace{0.1cm}{\footnotesize\ttfamily [1/3]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +template$<$typename \+\_\+\+Dst\+\_\+t $>$ \\ +\mbox{\hyperlink{classutl_1_1inbuf__dev}{inbuf\+\_\+dev\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::operator$>$$>$ (\begin{DoxyParamCaption}\item[{\+\_\+\+Dst\+\_\+t \&}]{dst }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Template operator $>$$>$ implementation for for all by value/ref parameters. + +\begin{DoxyNote}{Note} +In the case \+\_\+\+Dst\+\_\+t size is not a integer multiple of device\textquotesingle{}s data size this will fail by static assertion +\end{DoxyNote} + +\begin{DoxyParams}{Parameters} +{\em dst} & Reference to destination \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +Reference to this device for chaining +\end{DoxyReturn} + + +Definition at line 140 of file inbuf\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1inbuf__dev_a48a8160d1dce4542b0b09cff3f6a488b}\label{classutl_1_1inbuf__dev_a48a8160d1dce4542b0b09cff3f6a488b}} +\index{utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}!operator$>$$>$@{operator$>$$>$}} +\index{operator$>$$>$@{operator$>$$>$}!utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}} +\subsubsection{\texorpdfstring{operator$>$$>$()}{operator>>()}\hspace{0.1cm}{\footnotesize\ttfamily [2/3]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +template$<$typename \+\_\+\+Dst\+\_\+t $>$ \\ +\mbox{\hyperlink{classutl_1_1inbuf__dev}{inbuf\+\_\+dev\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::operator$>$$>$ (\begin{DoxyParamCaption}\item[{\+\_\+\+Dst\+\_\+t $\ast$}]{dst }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [delete]}} + + + +Specialization to disallow pointer types as destination. + +\mbox{\Hypertarget{classutl_1_1inbuf__dev_a6b11ed7628520b4dfe0bd438ccc58197}\label{classutl_1_1inbuf__dev_a6b11ed7628520b4dfe0bd438ccc58197}} +\index{utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}!operator$>$$>$@{operator$>$$>$}} +\index{operator$>$$>$@{operator$>$$>$}!utl\+::inbuf\+\_\+dev@{utl\+::inbuf\+\_\+dev}} +\subsubsection{\texorpdfstring{operator$>$$>$()}{operator>>()}\hspace{0.1cm}{\footnotesize\ttfamily [3/3]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +\mbox{\hyperlink{classutl_1_1inbuf__dev}{inbuf\+\_\+dev\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::operator$>$$>$ (\begin{DoxyParamCaption}\item[{data\+\_\+t \&}]{dst }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Overload for single data\+\_\+t object. + + + +Definition at line 151 of file inbuf\+\_\+dev.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/dev/\mbox{\hyperlink{inbuf__dev_8h}{inbuf\+\_\+dev.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.tex b/doc/latex/classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.tex new file mode 100644 index 0000000..c09ef46 --- /dev/null +++ b/doc/latex/classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.tex @@ -0,0 +1,380 @@ +\hypertarget{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{}\section{utl\+:\+:inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$ Class Template Reference} +\label{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}\index{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} + + +A virtual base class specialization. + + + + +{\ttfamily \#include $<$inbuf\+\_\+dev.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_af6c21cf92d9bffdd58fb4aa8f5ddb83f}{type}} = \mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{inbuf\+\_\+dev\+\_\+t}} +\begin{DoxyCompactList}\small\item\em Export type as identity meta-\/function. \end{DoxyCompactList}\end{DoxyCompactItemize} +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a261cc04ccf7edd02e1ab69225322dc4b}{data\+\_\+type}} = data\+\_\+t +\item +using \mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a9d035a944db280e98fd41260ed463000}{pointer\+\_\+type}} = data\+\_\+t $\ast$ +\end{DoxyCompactItemize} + +\subsection*{Public Member Functions} +\begin{Indent}\textbf{ Public Get interface}\par +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_aba2a9c8e96a8a865e1a24b52600a9f13}{in\+\_\+avail}} () +\item +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_aef2177d9f52b58b6b5f5c9115fbc893e}{get}} (data\+\_\+t \&data) +\item +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_ac2028f0e3b8f48e12bbcbf22cecbfe83}{get}} (data\+\_\+t $\ast$data, \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} n) +\end{DoxyCompactItemize} +\end{Indent} +\begin{Indent}\textbf{ Stream operator $>$$>$ interface}\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename \+\_\+\+Dst\+\_\+t $>$ }\\\mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{inbuf\+\_\+dev\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a84a3364ab33a4fa6ac0983da47a9276f}{operator$>$$>$}} (\+\_\+\+Dst\+\_\+t \&dst) +\begin{DoxyCompactList}\small\item\em Template operator $>$$>$ implementation for for all by value/ref parameters. \end{DoxyCompactList}\item +{\footnotesize template$<$typename \+\_\+\+Dst\+\_\+t $>$ }\\\mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{inbuf\+\_\+dev\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a9e6b304cc17303d810bc53e411f39970}{operator$>$$>$}} (\+\_\+\+Dst\+\_\+t $\ast$dst)=delete +\begin{DoxyCompactList}\small\item\em specialization to disallow pointer types as destination \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{inbuf\+\_\+dev\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_aefdbcf1d006494f612d6fcd8795ba472}{operator$>$$>$}} (data\+\_\+t \&dst) +\begin{DoxyCompactList}\small\item\em Overload for single data\+\_\+t object. \end{DoxyCompactList}\end{DoxyCompactItemize} +\end{Indent} +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a48b8449b9f608a5e3b03df97dd94cff7}{iterator}} \mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a0a85ea0b10edeb155b59d1a3dff43382}{end}} () noexcept +\item +\mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_aa27a4fdb726f1b44d965ebcd84457aab}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_aa81447a9ed7f2428f587b42ecf8bc007}{end}} () const noexcept +\item +\mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_aa27a4fdb726f1b44d965ebcd84457aab}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_abe9c16e5322249a05df6eb968a8adb56}{cend}} () const noexcept +\end{DoxyCompactItemize} + +\subsection*{Constructor / Destructor} +\begin{DoxyCompactItemize} +\item +virtual \mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a29b35825f917570edc31c0cd42090c90}{$\sim$inbuf\+\_\+dev}} ()=default +\begin{DoxyCompactList}\small\item\em Virtual destructor. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a52240af74076f562c0f79275e44e3640}{inbuf\+\_\+dev}} ()=default +\begin{DoxyCompactList}\small\item\em A default constructor from derived only. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a54b50015b6fd5f9699d7f0e155f6ef3b}{inbuf\+\_\+dev}} (const \mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{inbuf\+\_\+dev\+\_\+t}} \&)=delete +\begin{DoxyCompactList}\small\item\em No copies. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{inbuf\+\_\+dev\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_aa9f8f3abcc53098ef0c5dc1a8f013957}{operator=}} (const \mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{inbuf\+\_\+dev\+\_\+t}} \&)=delete +\end{DoxyCompactItemize} +\subsection*{S\+T\+L-\/like Input iterator interface} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a48b8449b9f608a5e3b03df97dd94cff7}{iterator}} = \mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}}$<$ \mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{inbuf\+\_\+dev\+\_\+t}}, data\+\_\+t $\ast$, streamsize $>$ +\begin{DoxyCompactList}\small\item\em Iterator. \end{DoxyCompactList}\item +using \mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_aa27a4fdb726f1b44d965ebcd84457aab}{const\+\_\+iterator}} = \mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}}$<$ \mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{inbuf\+\_\+dev\+\_\+t}}, const data\+\_\+t $\ast$, streamsize $>$ +\begin{DoxyCompactList}\small\item\em Const iterator. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a48b8449b9f608a5e3b03df97dd94cff7}{iterator}} \mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a70046c3c1e61b596c7e49f1f45510644}{begin}} () noexcept +\begin{DoxyCompactList}\small\item\em .begin implementation \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_aa27a4fdb726f1b44d965ebcd84457aab}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a5367418a80e15d0f087acc6b977c911c}{begin}} () const noexcept +\item +\mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_aa27a4fdb726f1b44d965ebcd84457aab}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a6c8cceaa03a16daff1db33f45c79082c}{cbegin}} () const noexcept +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename data\+\_\+t, size\+\_\+t streamsize$>$\newline +class utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$} + +A virtual base class specialization. + + +\begin{DoxyParams}{Parameters} +{\em impl\+\_\+t} & = \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} \\ +\hline +{\em data\+\_\+t} & The devices base type of data \\ +\hline +{\em streamsize} & The number of elements to indicate eos. \begin{DoxyItemize} +\item None or 0 Stream only. No iterator as \mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a70046c3c1e61b596c7e49f1f45510644}{begin()}} now equals \mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a0a85ea0b10edeb155b59d1a3dff43382}{end()}}. \end{DoxyItemize} +\\ +\hline +\end{DoxyParams} + + +Definition at line 188 of file inbuf\+\_\+dev.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_aa27a4fdb726f1b44d965ebcd84457aab}\label{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_aa27a4fdb726f1b44d965ebcd84457aab}} +\index{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!const\+\_\+iterator@{const\+\_\+iterator}} +\index{const\+\_\+iterator@{const\+\_\+iterator}!utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{const\+\_\+iterator}{const\_iterator}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +using \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::\mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_aa27a4fdb726f1b44d965ebcd84457aab}{const\+\_\+iterator}} = \mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}} $<$\mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{inbuf\+\_\+dev\+\_\+t}}, const data\+\_\+t$\ast$, streamsize$>$} + + + +Const iterator. + + + +Definition at line 291 of file inbuf\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a261cc04ccf7edd02e1ab69225322dc4b}\label{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a261cc04ccf7edd02e1ab69225322dc4b}} +\index{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!data\+\_\+type@{data\+\_\+type}} +\index{data\+\_\+type@{data\+\_\+type}!utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{data\+\_\+type}{data\_type}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +using \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::\mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a261cc04ccf7edd02e1ab69225322dc4b}{data\+\_\+type}} = data\+\_\+t} + +Export types as input device concept demands + +Definition at line 195 of file inbuf\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a48b8449b9f608a5e3b03df97dd94cff7}\label{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a48b8449b9f608a5e3b03df97dd94cff7}} +\index{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!iterator@{iterator}} +\index{iterator@{iterator}!utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{iterator}{iterator}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +using \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::\mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a48b8449b9f608a5e3b03df97dd94cff7}{iterator}} = \mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}} $<$\mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{inbuf\+\_\+dev\+\_\+t}}, data\+\_\+t$\ast$, streamsize$>$} + + + +Iterator. + + + +Definition at line 290 of file inbuf\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a9d035a944db280e98fd41260ed463000}\label{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a9d035a944db280e98fd41260ed463000}} +\index{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!pointer\+\_\+type@{pointer\+\_\+type}} +\index{pointer\+\_\+type@{pointer\+\_\+type}!utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{pointer\+\_\+type}{pointer\_type}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +using \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::\mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a9d035a944db280e98fd41260ed463000}{pointer\+\_\+type}} = data\+\_\+t$\ast$} + + + +Definition at line 196 of file inbuf\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_af6c21cf92d9bffdd58fb4aa8f5ddb83f}\label{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_af6c21cf92d9bffdd58fb4aa8f5ddb83f}} +\index{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!type@{type}} +\index{type@{type}!utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +using \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::\mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_af6c21cf92d9bffdd58fb4aa8f5ddb83f}{type}} = \mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{inbuf\+\_\+dev\+\_\+t}}} + + + +Export type as identity meta-\/function. + + + +Definition at line 198 of file inbuf\+\_\+dev.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a29b35825f917570edc31c0cd42090c90}\label{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a29b35825f917570edc31c0cd42090c90}} +\index{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!````~inbuf\+\_\+dev@{$\sim$inbuf\+\_\+dev}} +\index{````~inbuf\+\_\+dev@{$\sim$inbuf\+\_\+dev}!utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{$\sim$inbuf\+\_\+dev()}{~inbuf\_dev()}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +virtual \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::$\sim$\mbox{\hyperlink{classutl_1_1inbuf__dev}{inbuf\+\_\+dev}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}, {\ttfamily [default]}} + + + +Virtual destructor. + +\mbox{\Hypertarget{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a52240af74076f562c0f79275e44e3640}\label{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a52240af74076f562c0f79275e44e3640}} +\index{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!inbuf\+\_\+dev@{inbuf\+\_\+dev}} +\index{inbuf\+\_\+dev@{inbuf\+\_\+dev}!utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{inbuf\+\_\+dev()}{inbuf\_dev()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +\mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::\mbox{\hyperlink{classutl_1_1inbuf__dev}{inbuf\+\_\+dev}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [default]}} + + + +A default constructor from derived only. + +\mbox{\Hypertarget{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a54b50015b6fd5f9699d7f0e155f6ef3b}\label{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a54b50015b6fd5f9699d7f0e155f6ef3b}} +\index{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!inbuf\+\_\+dev@{inbuf\+\_\+dev}} +\index{inbuf\+\_\+dev@{inbuf\+\_\+dev}!utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{inbuf\+\_\+dev()}{inbuf\_dev()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +\mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::\mbox{\hyperlink{classutl_1_1inbuf__dev}{inbuf\+\_\+dev}} (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{inbuf\+\_\+dev\+\_\+t}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [delete]}} + + + +No copies. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a70046c3c1e61b596c7e49f1f45510644}\label{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a70046c3c1e61b596c7e49f1f45510644}} +\index{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!begin@{begin}} +\index{begin@{begin}!utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{begin()}{begin()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +\mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a48b8449b9f608a5e3b03df97dd94cff7}{iterator}} \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::begin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +.begin implementation + + + +Definition at line 294 of file inbuf\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a5367418a80e15d0f087acc6b977c911c}\label{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a5367418a80e15d0f087acc6b977c911c}} +\index{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!begin@{begin}} +\index{begin@{begin}!utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{begin()}{begin()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +\mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_aa27a4fdb726f1b44d965ebcd84457aab}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::begin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 295 of file inbuf\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a6c8cceaa03a16daff1db33f45c79082c}\label{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a6c8cceaa03a16daff1db33f45c79082c}} +\index{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!cbegin@{cbegin}} +\index{cbegin@{cbegin}!utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{cbegin()}{cbegin()}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +\mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_aa27a4fdb726f1b44d965ebcd84457aab}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::cbegin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 296 of file inbuf\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_abe9c16e5322249a05df6eb968a8adb56}\label{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_abe9c16e5322249a05df6eb968a8adb56}} +\index{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!cend@{cend}} +\index{cend@{cend}!utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{cend()}{cend()}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +\mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_aa27a4fdb726f1b44d965ebcd84457aab}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::cend (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 301 of file inbuf\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a0a85ea0b10edeb155b59d1a3dff43382}\label{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a0a85ea0b10edeb155b59d1a3dff43382}} +\index{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!end@{end}} +\index{end@{end}!utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{end()}{end()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +\mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a48b8449b9f608a5e3b03df97dd94cff7}{iterator}} \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::end (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + +.end implementation + +Definition at line 299 of file inbuf\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_aa81447a9ed7f2428f587b42ecf8bc007}\label{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_aa81447a9ed7f2428f587b42ecf8bc007}} +\index{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!end@{end}} +\index{end@{end}!utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{end()}{end()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +\mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_aa27a4fdb726f1b44d965ebcd84457aab}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::end (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 300 of file inbuf\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_aef2177d9f52b58b6b5f5c9115fbc893e}\label{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_aef2177d9f52b58b6b5f5c9115fbc893e}} +\index{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!get@{get}} +\index{get@{get}!utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{get()}{get()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::get (\begin{DoxyParamCaption}\item[{data\+\_\+t \&}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 251 of file inbuf\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_ac2028f0e3b8f48e12bbcbf22cecbfe83}\label{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_ac2028f0e3b8f48e12bbcbf22cecbfe83}} +\index{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!get@{get}} +\index{get@{get}!utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{get()}{get()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::get (\begin{DoxyParamCaption}\item[{data\+\_\+t $\ast$}]{data, }\item[{\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}}}]{n }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 252 of file inbuf\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_aba2a9c8e96a8a865e1a24b52600a9f13}\label{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_aba2a9c8e96a8a865e1a24b52600a9f13}} +\index{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!in\+\_\+avail@{in\+\_\+avail}} +\index{in\+\_\+avail@{in\+\_\+avail}!utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{in\+\_\+avail()}{in\_avail()}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::in\+\_\+avail (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 250 of file inbuf\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_aa9f8f3abcc53098ef0c5dc1a8f013957}\label{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_aa9f8f3abcc53098ef0c5dc1a8f013957}} +\index{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!operator=@{operator=}} +\index{operator=@{operator=}!utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{operator=()}{operator=()}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +\mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{inbuf\+\_\+dev\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::operator= (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{inbuf\+\_\+dev\+\_\+t}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [delete]}} + +No copy assignments \mbox{\Hypertarget{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a84a3364ab33a4fa6ac0983da47a9276f}\label{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a84a3364ab33a4fa6ac0983da47a9276f}} +\index{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!operator$>$$>$@{operator$>$$>$}} +\index{operator$>$$>$@{operator$>$$>$}!utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{operator$>$$>$()}{operator>>()}\hspace{0.1cm}{\footnotesize\ttfamily [1/3]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +template$<$typename \+\_\+\+Dst\+\_\+t $>$ \\ +\mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{inbuf\+\_\+dev\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::operator$>$$>$ (\begin{DoxyParamCaption}\item[{\+\_\+\+Dst\+\_\+t \&}]{dst }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Template operator $>$$>$ implementation for for all by value/ref parameters. + +\begin{DoxyNote}{Note} +In the case \+\_\+\+Dst\+\_\+t size is not a integer multiple of device\textquotesingle{}s data size this will fail by static assertion +\end{DoxyNote} + +\begin{DoxyParams}{Parameters} +{\em dst} & Reference to destination \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +Reference to this device for chaining +\end{DoxyReturn} + + +Definition at line 269 of file inbuf\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a9e6b304cc17303d810bc53e411f39970}\label{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a9e6b304cc17303d810bc53e411f39970}} +\index{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!operator$>$$>$@{operator$>$$>$}} +\index{operator$>$$>$@{operator$>$$>$}!utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{operator$>$$>$()}{operator>>()}\hspace{0.1cm}{\footnotesize\ttfamily [2/3]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +template$<$typename \+\_\+\+Dst\+\_\+t $>$ \\ +\mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{inbuf\+\_\+dev\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::operator$>$$>$ (\begin{DoxyParamCaption}\item[{\+\_\+\+Dst\+\_\+t $\ast$}]{dst }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [delete]}} + + + +specialization to disallow pointer types as destination + +\mbox{\Hypertarget{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_aefdbcf1d006494f612d6fcd8795ba472}\label{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_aefdbcf1d006494f612d6fcd8795ba472}} +\index{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!operator$>$$>$@{operator$>$$>$}} +\index{operator$>$$>$@{operator$>$$>$}!utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{operator$>$$>$()}{operator>>()}\hspace{0.1cm}{\footnotesize\ttfamily [3/3]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +\mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{inbuf\+\_\+dev\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::operator$>$$>$ (\begin{DoxyParamCaption}\item[{data\+\_\+t \&}]{dst }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Overload for single data\+\_\+t object. + + + +Definition at line 280 of file inbuf\+\_\+dev.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/dev/\mbox{\hyperlink{inbuf__dev_8h}{inbuf\+\_\+dev.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classutl_1_1indev__it.tex b/doc/latex/classutl_1_1indev__it.tex new file mode 100644 index 0000000..7560e74 --- /dev/null +++ b/doc/latex/classutl_1_1indev__it.tex @@ -0,0 +1,465 @@ +\hypertarget{classutl_1_1indev__it}{}\section{utl\+:\+:indev\+\_\+it$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$ Class Template Reference} +\label{classutl_1_1indev__it}\index{utl\+::indev\+\_\+it$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$@{utl\+::indev\+\_\+it$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$}} + + +Input device iterator type. We \char`\"{}future call\char`\"{} interface methods from owner class to provide iterator functionality. + + + + +{\ttfamily \#include $<$dev\+\_\+iterators.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +enum \mbox{\hyperlink{classutl_1_1indev__it_a2646fbdd38807785263d7d0bbe2b703a}{Cursor}} \{ \mbox{\hyperlink{classutl_1_1indev__it_a2646fbdd38807785263d7d0bbe2b703aa91b4e71d6b69fec0a7d7043ef8902c40}{beg}} = \+\_\+beg, +\mbox{\hyperlink{classutl_1_1indev__it_a2646fbdd38807785263d7d0bbe2b703aaa32e6ce1a7079ee7193a163f085857d5}{eod}} = \+\_\+beg + \+\_\+size + \} +\begin{DoxyCompactList}\small\item\em \#define-\/like enumerator for Cursor \end{DoxyCompactList}\item +using \mbox{\hyperlink{classutl_1_1indev__it_a667aeec9e1dd008dd0bf91057890b633}{type}} = \mbox{\hyperlink{classutl_1_1indev__it}{iterator\+\_\+t}} +\end{DoxyCompactItemize} +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{classutl_1_1indev__it_ac52588b2394480dcf3a73763f76f283a}{iterator\+\_\+category}} = typename \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{dev\+\_\+iterator\+\_\+traits}}$<$ std\+::output\+\_\+iterator\+\_\+tag, iter\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1indev__it_ac52588b2394480dcf3a73763f76f283a}{iterator\+\_\+category}} +\item +using \mbox{\hyperlink{classutl_1_1indev__it_ae7db86c4ea6793a3ae0af0fd877bd751}{value\+\_\+type}} = typename \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{dev\+\_\+iterator\+\_\+traits}}$<$ std\+::output\+\_\+iterator\+\_\+tag, iter\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1indev__it_ae7db86c4ea6793a3ae0af0fd877bd751}{value\+\_\+type}} +\item +using \mbox{\hyperlink{classutl_1_1indev__it_abfeb8765e0e34491594113a8b1261f2a}{difference\+\_\+type}} = typename \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{dev\+\_\+iterator\+\_\+traits}}$<$ std\+::output\+\_\+iterator\+\_\+tag, iter\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1indev__it_abfeb8765e0e34491594113a8b1261f2a}{difference\+\_\+type}} +\item +using \mbox{\hyperlink{classutl_1_1indev__it_aa5b1e7c33987cec0d2bfc6aad07b297f}{pointer}} = typename \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{dev\+\_\+iterator\+\_\+traits}}$<$ std\+::output\+\_\+iterator\+\_\+tag, iter\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1indev__it_aa5b1e7c33987cec0d2bfc6aad07b297f}{pointer}} +\item +using \mbox{\hyperlink{classutl_1_1indev__it_afd50b088dd181c3d74f9e150a5190c3a}{reference}} = typename \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{dev\+\_\+iterator\+\_\+traits}}$<$ std\+::output\+\_\+iterator\+\_\+tag, iter\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1indev__it_afd50b088dd181c3d74f9e150a5190c3a}{reference}} +\end{DoxyCompactItemize} + +\subsection*{Public Member Functions} +\begin{Indent}\textbf{ Constructor / Destructor}\par +{\em \begin{DoxyNote}{Note} +We can not provide a default constructor as long as we depend on container\+\_\+t (the owner type). +\end{DoxyNote} +}\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classutl_1_1indev__it_aef3a45393dd12c64dfc9088c4fa34590}{indev\+\_\+it}} () noexcept +\begin{DoxyCompactList}\small\item\em Default constructor. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1indev__it_ad4e96e6bf81f9470d6017bef03fec570}{indev\+\_\+it}} (cont\+\_\+t $\ast$own, \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} cur=\mbox{\hyperlink{classutl_1_1indev__it_a2646fbdd38807785263d7d0bbe2b703aaa32e6ce1a7079ee7193a163f085857d5}{eod}}) noexcept +\begin{DoxyCompactList}\small\item\em Basic constructor. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1indev__it_a59c73bf03cd0b260fc7ffdd334db414b}{indev\+\_\+it}} (const \mbox{\hyperlink{classutl_1_1indev__it}{iterator\+\_\+t}} \&it) noexcept +\begin{DoxyCompactList}\small\item\em Basic copy constructor. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1indev__it}{iterator\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1indev__it_a6dd617aa9a5c3454ca9f49d1ed6319d8}{operator=}} (const \mbox{\hyperlink{classutl_1_1indev__it}{iterator\+\_\+t}} \&it) noexcept +\begin{DoxyCompactList}\small\item\em Basic copy assignment operator. \end{DoxyCompactList}\end{DoxyCompactItemize} +\end{Indent} +\begin{Indent}\textbf{ Public interface}\par +{\em Iterator to const-\/iterator conversion (as S\+TL requires) + + +\begin{DoxyParams}{Parameters} +{\em it} & Iterator reference \\ +\hline +\end{DoxyParams} +}\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classutl_1_1indev__it_afd50b088dd181c3d74f9e150a5190c3a}{reference}} \mbox{\hyperlink{classutl_1_1indev__it_aab9b502abf96ca3e68ea08f4db133022}{operator$\ast$}} () +\begin{DoxyCompactList}\small\item\em De-\/reference operator. No end() place dereference check is made. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1indev__it_aa5b1e7c33987cec0d2bfc6aad07b297f}{pointer}} \mbox{\hyperlink{classutl_1_1indev__it_aba3b176ec09842e790f1edc808214a89}{operator-\/$>$}} () +\begin{DoxyCompactList}\small\item\em Arrow operator. No end() place dereference check is made. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1indev__it}{iterator\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1indev__it_a9cc635074b47eae7db149c8079327bff}{operator++}} () +\begin{DoxyCompactList}\small\item\em Pre increment. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1indev__it}{iterator\+\_\+t}} \mbox{\hyperlink{classutl_1_1indev__it_a9221ac03f89e592ad3ba1fd0d1aa2793}{operator++}} (int) +\begin{DoxyCompactList}\small\item\em Post increment. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1indev__it}{iterator\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1indev__it_a2980dd80dce60ddf7bfbaf11c5394b4c}{operator-\/-\/}} () +\begin{DoxyCompactList}\small\item\em Pre decrement. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1indev__it}{iterator\+\_\+t}} \mbox{\hyperlink{classutl_1_1indev__it_a67ab2af5e3530d0aa72b9d4e6ce64d48}{operator-\/-\/}} (int) +\begin{DoxyCompactList}\small\item\em Post decrement. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1indev__it_afd50b088dd181c3d74f9e150a5190c3a}{reference}} \mbox{\hyperlink{classutl_1_1indev__it_acc0466f1af48d7080acde0e9c4241585}{operator\mbox{[}$\,$\mbox{]}}} (\mbox{\hyperlink{classutl_1_1indev__it_abfeb8765e0e34491594113a8b1261f2a}{difference\+\_\+type}} n) +\begin{DoxyCompactList}\small\item\em \mbox{[}\mbox{]} operator. Is a combination of input method and dereference \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1indev__it}{iterator\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1indev__it_a2c71facea46d8c1a802d132b28d8024e}{operator+=}} (\mbox{\hyperlink{classutl_1_1indev__it_abfeb8765e0e34491594113a8b1261f2a}{difference\+\_\+type}} n) +\item +\mbox{\hyperlink{classutl_1_1indev__it}{iterator\+\_\+t}} \mbox{\hyperlink{classutl_1_1indev__it_a6f96628003f69ad5bedf4c9ff9c51ede}{operator+}} (\mbox{\hyperlink{classutl_1_1indev__it_abfeb8765e0e34491594113a8b1261f2a}{difference\+\_\+type}} n) +\item +\mbox{\hyperlink{classutl_1_1indev__it}{iterator\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1indev__it_a45fc6f9caefbe9e623e850919ecef085}{operator-\/=}} (\mbox{\hyperlink{classutl_1_1indev__it_abfeb8765e0e34491594113a8b1261f2a}{difference\+\_\+type}} n) +\item +\mbox{\hyperlink{classutl_1_1indev__it}{iterator\+\_\+t}} \mbox{\hyperlink{classutl_1_1indev__it_a3bfc84c569096454701ff191d9e8bf14}{operator-\/}} (\mbox{\hyperlink{classutl_1_1indev__it_abfeb8765e0e34491594113a8b1261f2a}{difference\+\_\+type}} n) +\item +const cont\+\_\+t $\ast$ \mbox{\hyperlink{classutl_1_1indev__it_aaa0295b6a2ed86e5b1018d049b988c8b}{owner}} () const noexcept +\begin{DoxyCompactList}\small\item\em Export container for comparison. \end{DoxyCompactList}\item +const \mbox{\hyperlink{namespaceutl_a676c0acd539dd04048dcc7b4d698577e}{index\+\_\+t}} \mbox{\hyperlink{classutl_1_1indev__it_a38b77b5de7904f6062980fd186585c3f}{cursor}} () const noexcept +\begin{DoxyCompactList}\small\item\em Export cursor for comparison. \end{DoxyCompactList}\end{DoxyCompactItemize} +\end{Indent} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, size\+\_\+t \+\_\+size = static\+\_\+cast$<$size\+\_\+t$>$(-\/1)-\/\+\_\+beg$>$\newline +class utl\+::indev\+\_\+it$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$} + +Input device iterator type. We \char`\"{}future call\char`\"{} interface methods from owner class to provide iterator functionality. + +Value meta-\/programming function for S\+PI interface checking +\begin{DoxyParams}{Parameters} +{\em \+\_\+\+Tp} & Type to check \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +True if \+\_\+\+Tp is a spi interface +\end{DoxyReturn} + +\begin{DoxyParams}{Parameters} +{\em cont\+\_\+t} & Container/parent type \\ +\hline +{\em iter\+\_\+t} & Iterator data type (pointer to container\+\_\+t\+::value\+\_\+type) \\ +\hline +{\em \+\_\+beg} & Device starting address \\ +\hline +{\em \+\_\+size} & Device\textquotesingle{}s address space size \\ +\hline +\end{DoxyParams} + + +Definition at line 461 of file dev\+\_\+iterators.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{classutl_1_1indev__it_abfeb8765e0e34491594113a8b1261f2a}\label{classutl_1_1indev__it_abfeb8765e0e34491594113a8b1261f2a}} +\index{utl\+::indev\+\_\+it@{utl\+::indev\+\_\+it}!difference\+\_\+type@{difference\+\_\+type}} +\index{difference\+\_\+type@{difference\+\_\+type}!utl\+::indev\+\_\+it@{utl\+::indev\+\_\+it}} +\subsubsection{\texorpdfstring{difference\+\_\+type}{difference\_type}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, size\+\_\+t \+\_\+size = static\+\_\+cast$<$size\+\_\+t$>$(-\/1)-\/\+\_\+beg$>$ \\ +using \mbox{\hyperlink{classutl_1_1indev__it}{utl\+::indev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$\+::\mbox{\hyperlink{classutl_1_1indev__it_abfeb8765e0e34491594113a8b1261f2a}{difference\+\_\+type}} = typename \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{dev\+\_\+iterator\+\_\+traits}} $<$std\+::output\+\_\+iterator\+\_\+tag, iter\+\_\+t$>$\+::\mbox{\hyperlink{classutl_1_1indev__it_abfeb8765e0e34491594113a8b1261f2a}{difference\+\_\+type}}} + + + +Definition at line 471 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1indev__it_ac52588b2394480dcf3a73763f76f283a}\label{classutl_1_1indev__it_ac52588b2394480dcf3a73763f76f283a}} +\index{utl\+::indev\+\_\+it@{utl\+::indev\+\_\+it}!iterator\+\_\+category@{iterator\+\_\+category}} +\index{iterator\+\_\+category@{iterator\+\_\+category}!utl\+::indev\+\_\+it@{utl\+::indev\+\_\+it}} +\subsubsection{\texorpdfstring{iterator\+\_\+category}{iterator\_category}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, size\+\_\+t \+\_\+size = static\+\_\+cast$<$size\+\_\+t$>$(-\/1)-\/\+\_\+beg$>$ \\ +using \mbox{\hyperlink{classutl_1_1indev__it}{utl\+::indev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$\+::\mbox{\hyperlink{classutl_1_1indev__it_ac52588b2394480dcf3a73763f76f283a}{iterator\+\_\+category}} = typename \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{dev\+\_\+iterator\+\_\+traits}} $<$std\+::output\+\_\+iterator\+\_\+tag, iter\+\_\+t$>$\+::\mbox{\hyperlink{classutl_1_1indev__it_ac52588b2394480dcf3a73763f76f283a}{iterator\+\_\+category}}} + +S\+TL iterator traits \char`\"{}forwarding\char`\"{} + +Definition at line 469 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1indev__it_aa5b1e7c33987cec0d2bfc6aad07b297f}\label{classutl_1_1indev__it_aa5b1e7c33987cec0d2bfc6aad07b297f}} +\index{utl\+::indev\+\_\+it@{utl\+::indev\+\_\+it}!pointer@{pointer}} +\index{pointer@{pointer}!utl\+::indev\+\_\+it@{utl\+::indev\+\_\+it}} +\subsubsection{\texorpdfstring{pointer}{pointer}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, size\+\_\+t \+\_\+size = static\+\_\+cast$<$size\+\_\+t$>$(-\/1)-\/\+\_\+beg$>$ \\ +using \mbox{\hyperlink{classutl_1_1indev__it}{utl\+::indev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$\+::\mbox{\hyperlink{classutl_1_1indev__it_aa5b1e7c33987cec0d2bfc6aad07b297f}{pointer}} = typename \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{dev\+\_\+iterator\+\_\+traits}} $<$std\+::output\+\_\+iterator\+\_\+tag, iter\+\_\+t$>$\+::\mbox{\hyperlink{classutl_1_1indev__it_aa5b1e7c33987cec0d2bfc6aad07b297f}{pointer}}} + + + +Definition at line 472 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1indev__it_afd50b088dd181c3d74f9e150a5190c3a}\label{classutl_1_1indev__it_afd50b088dd181c3d74f9e150a5190c3a}} +\index{utl\+::indev\+\_\+it@{utl\+::indev\+\_\+it}!reference@{reference}} +\index{reference@{reference}!utl\+::indev\+\_\+it@{utl\+::indev\+\_\+it}} +\subsubsection{\texorpdfstring{reference}{reference}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, size\+\_\+t \+\_\+size = static\+\_\+cast$<$size\+\_\+t$>$(-\/1)-\/\+\_\+beg$>$ \\ +using \mbox{\hyperlink{classutl_1_1indev__it}{utl\+::indev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$\+::\mbox{\hyperlink{classutl_1_1indev__it_afd50b088dd181c3d74f9e150a5190c3a}{reference}} = typename \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{dev\+\_\+iterator\+\_\+traits}} $<$std\+::output\+\_\+iterator\+\_\+tag, iter\+\_\+t$>$\+::\mbox{\hyperlink{classutl_1_1indev__it_afd50b088dd181c3d74f9e150a5190c3a}{reference}}} + + + +Definition at line 473 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1indev__it_a667aeec9e1dd008dd0bf91057890b633}\label{classutl_1_1indev__it_a667aeec9e1dd008dd0bf91057890b633}} +\index{utl\+::indev\+\_\+it@{utl\+::indev\+\_\+it}!type@{type}} +\index{type@{type}!utl\+::indev\+\_\+it@{utl\+::indev\+\_\+it}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, size\+\_\+t \+\_\+size = static\+\_\+cast$<$size\+\_\+t$>$(-\/1)-\/\+\_\+beg$>$ \\ +using \mbox{\hyperlink{classutl_1_1indev__it}{utl\+::indev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$\+::\mbox{\hyperlink{classutl_1_1indev__it_a667aeec9e1dd008dd0bf91057890b633}{type}} = \mbox{\hyperlink{classutl_1_1indev__it}{iterator\+\_\+t}}} + +Export type as identity meta-\/function + +Definition at line 465 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1indev__it_ae7db86c4ea6793a3ae0af0fd877bd751}\label{classutl_1_1indev__it_ae7db86c4ea6793a3ae0af0fd877bd751}} +\index{utl\+::indev\+\_\+it@{utl\+::indev\+\_\+it}!value\+\_\+type@{value\+\_\+type}} +\index{value\+\_\+type@{value\+\_\+type}!utl\+::indev\+\_\+it@{utl\+::indev\+\_\+it}} +\subsubsection{\texorpdfstring{value\+\_\+type}{value\_type}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, size\+\_\+t \+\_\+size = static\+\_\+cast$<$size\+\_\+t$>$(-\/1)-\/\+\_\+beg$>$ \\ +using \mbox{\hyperlink{classutl_1_1indev__it}{utl\+::indev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$\+::\mbox{\hyperlink{classutl_1_1indev__it_ae7db86c4ea6793a3ae0af0fd877bd751}{value\+\_\+type}} = typename \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{dev\+\_\+iterator\+\_\+traits}} $<$std\+::output\+\_\+iterator\+\_\+tag, iter\+\_\+t$>$\+::\mbox{\hyperlink{classutl_1_1indev__it_ae7db86c4ea6793a3ae0af0fd877bd751}{value\+\_\+type}}} + + + +Definition at line 470 of file dev\+\_\+iterators.\+h. + + + +\subsection{Member Enumeration Documentation} +\mbox{\Hypertarget{classutl_1_1indev__it_a2646fbdd38807785263d7d0bbe2b703a}\label{classutl_1_1indev__it_a2646fbdd38807785263d7d0bbe2b703a}} +\index{utl\+::indev\+\_\+it@{utl\+::indev\+\_\+it}!Cursor@{Cursor}} +\index{Cursor@{Cursor}!utl\+::indev\+\_\+it@{utl\+::indev\+\_\+it}} +\subsubsection{\texorpdfstring{Cursor}{Cursor}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, size\+\_\+t \+\_\+size = static\+\_\+cast$<$size\+\_\+t$>$(-\/1)-\/\+\_\+beg$>$ \\ +enum \mbox{\hyperlink{classutl_1_1indev__it_a2646fbdd38807785263d7d0bbe2b703a}{utl\+::indev\+\_\+it\+::\+Cursor}}} + + + +\#define-\/like enumerator for Cursor + +\begin{DoxyEnumFields}{Enumerator} +\raisebox{\heightof{T}}[0pt][0pt]{\index{beg@{beg}!utl\+::indev\+\_\+it@{utl\+::indev\+\_\+it}}\index{utl\+::indev\+\_\+it@{utl\+::indev\+\_\+it}!beg@{beg}}}\mbox{\Hypertarget{classutl_1_1indev__it_a2646fbdd38807785263d7d0bbe2b703aa91b4e71d6b69fec0a7d7043ef8902c40}\label{classutl_1_1indev__it_a2646fbdd38807785263d7d0bbe2b703aa91b4e71d6b69fec0a7d7043ef8902c40}} +beg&Points the first item. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{eod@{eod}!utl\+::indev\+\_\+it@{utl\+::indev\+\_\+it}}\index{utl\+::indev\+\_\+it@{utl\+::indev\+\_\+it}!eod@{eod}}}\mbox{\Hypertarget{classutl_1_1indev__it_a2646fbdd38807785263d7d0bbe2b703aaa32e6ce1a7079ee7193a163f085857d5}\label{classutl_1_1indev__it_a2646fbdd38807785263d7d0bbe2b703aaa32e6ce1a7079ee7193a163f085857d5}} +eod&Points one place after last item. \\ +\hline + +\end{DoxyEnumFields} + + +Definition at line 477 of file dev\+\_\+iterators.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classutl_1_1indev__it_aef3a45393dd12c64dfc9088c4fa34590}\label{classutl_1_1indev__it_aef3a45393dd12c64dfc9088c4fa34590}} +\index{utl\+::indev\+\_\+it@{utl\+::indev\+\_\+it}!indev\+\_\+it@{indev\+\_\+it}} +\index{indev\+\_\+it@{indev\+\_\+it}!utl\+::indev\+\_\+it@{utl\+::indev\+\_\+it}} +\subsubsection{\texorpdfstring{indev\+\_\+it()}{indev\_it()}\hspace{0.1cm}{\footnotesize\ttfamily [1/3]}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, size\+\_\+t \+\_\+size = static\+\_\+cast$<$size\+\_\+t$>$(-\/1)-\/\+\_\+beg$>$ \\ +\mbox{\hyperlink{classutl_1_1indev__it}{utl\+::indev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$\+::\mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Default constructor. + + + +Definition at line 500 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1indev__it_ad4e96e6bf81f9470d6017bef03fec570}\label{classutl_1_1indev__it_ad4e96e6bf81f9470d6017bef03fec570}} +\index{utl\+::indev\+\_\+it@{utl\+::indev\+\_\+it}!indev\+\_\+it@{indev\+\_\+it}} +\index{indev\+\_\+it@{indev\+\_\+it}!utl\+::indev\+\_\+it@{utl\+::indev\+\_\+it}} +\subsubsection{\texorpdfstring{indev\+\_\+it()}{indev\_it()}\hspace{0.1cm}{\footnotesize\ttfamily [2/3]}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, size\+\_\+t \+\_\+size = static\+\_\+cast$<$size\+\_\+t$>$(-\/1)-\/\+\_\+beg$>$ \\ +\mbox{\hyperlink{classutl_1_1indev__it}{utl\+::indev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$\+::\mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}} (\begin{DoxyParamCaption}\item[{cont\+\_\+t $\ast$}]{own, }\item[{\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}}}]{cur = {\ttfamily \mbox{\hyperlink{classutl_1_1indev__it_a2646fbdd38807785263d7d0bbe2b703aaa32e6ce1a7079ee7193a163f085857d5}{eod}}} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [explicit]}, {\ttfamily [noexcept]}} + + + +Basic constructor. + + + +Definition at line 505 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1indev__it_a59c73bf03cd0b260fc7ffdd334db414b}\label{classutl_1_1indev__it_a59c73bf03cd0b260fc7ffdd334db414b}} +\index{utl\+::indev\+\_\+it@{utl\+::indev\+\_\+it}!indev\+\_\+it@{indev\+\_\+it}} +\index{indev\+\_\+it@{indev\+\_\+it}!utl\+::indev\+\_\+it@{utl\+::indev\+\_\+it}} +\subsubsection{\texorpdfstring{indev\+\_\+it()}{indev\_it()}\hspace{0.1cm}{\footnotesize\ttfamily [3/3]}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, size\+\_\+t \+\_\+size = static\+\_\+cast$<$size\+\_\+t$>$(-\/1)-\/\+\_\+beg$>$ \\ +\mbox{\hyperlink{classutl_1_1indev__it}{utl\+::indev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$\+::\mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}} (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1indev__it}{iterator\+\_\+t}} \&}]{it }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [explicit]}, {\ttfamily [noexcept]}} + + + +Basic copy constructor. + + + +Definition at line 510 of file dev\+\_\+iterators.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classutl_1_1indev__it_a38b77b5de7904f6062980fd186585c3f}\label{classutl_1_1indev__it_a38b77b5de7904f6062980fd186585c3f}} +\index{utl\+::indev\+\_\+it@{utl\+::indev\+\_\+it}!cursor@{cursor}} +\index{cursor@{cursor}!utl\+::indev\+\_\+it@{utl\+::indev\+\_\+it}} +\subsubsection{\texorpdfstring{cursor()}{cursor()}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, size\+\_\+t \+\_\+size = static\+\_\+cast$<$size\+\_\+t$>$(-\/1)-\/\+\_\+beg$>$ \\ +const \mbox{\hyperlink{namespaceutl_a676c0acd539dd04048dcc7b4d698577e}{index\+\_\+t}} \mbox{\hyperlink{classutl_1_1indev__it}{utl\+::indev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$\+::cursor (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Export cursor for comparison. + + + +Definition at line 593 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1indev__it_aab9b502abf96ca3e68ea08f4db133022}\label{classutl_1_1indev__it_aab9b502abf96ca3e68ea08f4db133022}} +\index{utl\+::indev\+\_\+it@{utl\+::indev\+\_\+it}!operator$\ast$@{operator$\ast$}} +\index{operator$\ast$@{operator$\ast$}!utl\+::indev\+\_\+it@{utl\+::indev\+\_\+it}} +\subsubsection{\texorpdfstring{operator$\ast$()}{operator*()}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, size\+\_\+t \+\_\+size = static\+\_\+cast$<$size\+\_\+t$>$(-\/1)-\/\+\_\+beg$>$ \\ +\mbox{\hyperlink{classutl_1_1indev__it_afd50b088dd181c3d74f9e150a5190c3a}{reference}} \mbox{\hyperlink{classutl_1_1indev__it}{utl\+::indev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$\+::operator$\ast$ (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +De-\/reference operator. No end() place dereference check is made. + + + +Definition at line 537 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1indev__it_a6f96628003f69ad5bedf4c9ff9c51ede}\label{classutl_1_1indev__it_a6f96628003f69ad5bedf4c9ff9c51ede}} +\index{utl\+::indev\+\_\+it@{utl\+::indev\+\_\+it}!operator+@{operator+}} +\index{operator+@{operator+}!utl\+::indev\+\_\+it@{utl\+::indev\+\_\+it}} +\subsubsection{\texorpdfstring{operator+()}{operator+()}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, size\+\_\+t \+\_\+size = static\+\_\+cast$<$size\+\_\+t$>$(-\/1)-\/\+\_\+beg$>$ \\ +\mbox{\hyperlink{classutl_1_1indev__it}{iterator\+\_\+t}} \mbox{\hyperlink{classutl_1_1indev__it}{utl\+::indev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$\+::operator+ (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classutl_1_1indev__it_abfeb8765e0e34491594113a8b1261f2a}{difference\+\_\+type}}}]{n }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 580 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1indev__it_a9cc635074b47eae7db149c8079327bff}\label{classutl_1_1indev__it_a9cc635074b47eae7db149c8079327bff}} +\index{utl\+::indev\+\_\+it@{utl\+::indev\+\_\+it}!operator++@{operator++}} +\index{operator++@{operator++}!utl\+::indev\+\_\+it@{utl\+::indev\+\_\+it}} +\subsubsection{\texorpdfstring{operator++()}{operator++()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, size\+\_\+t \+\_\+size = static\+\_\+cast$<$size\+\_\+t$>$(-\/1)-\/\+\_\+beg$>$ \\ +\mbox{\hyperlink{classutl_1_1indev__it}{iterator\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1indev__it}{utl\+::indev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$\+::operator++ (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Pre increment. + + + +Definition at line 548 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1indev__it_a9221ac03f89e592ad3ba1fd0d1aa2793}\label{classutl_1_1indev__it_a9221ac03f89e592ad3ba1fd0d1aa2793}} +\index{utl\+::indev\+\_\+it@{utl\+::indev\+\_\+it}!operator++@{operator++}} +\index{operator++@{operator++}!utl\+::indev\+\_\+it@{utl\+::indev\+\_\+it}} +\subsubsection{\texorpdfstring{operator++()}{operator++()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, size\+\_\+t \+\_\+size = static\+\_\+cast$<$size\+\_\+t$>$(-\/1)-\/\+\_\+beg$>$ \\ +\mbox{\hyperlink{classutl_1_1indev__it}{iterator\+\_\+t}} \mbox{\hyperlink{classutl_1_1indev__it}{utl\+::indev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$\+::operator++ (\begin{DoxyParamCaption}\item[{int}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Post increment. + + + +Definition at line 553 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1indev__it_a2c71facea46d8c1a802d132b28d8024e}\label{classutl_1_1indev__it_a2c71facea46d8c1a802d132b28d8024e}} +\index{utl\+::indev\+\_\+it@{utl\+::indev\+\_\+it}!operator+=@{operator+=}} +\index{operator+=@{operator+=}!utl\+::indev\+\_\+it@{utl\+::indev\+\_\+it}} +\subsubsection{\texorpdfstring{operator+=()}{operator+=()}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, size\+\_\+t \+\_\+size = static\+\_\+cast$<$size\+\_\+t$>$(-\/1)-\/\+\_\+beg$>$ \\ +\mbox{\hyperlink{classutl_1_1indev__it}{iterator\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1indev__it}{utl\+::indev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$\+::operator+= (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classutl_1_1indev__it_abfeb8765e0e34491594113a8b1261f2a}{difference\+\_\+type}}}]{n }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 576 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1indev__it_a3bfc84c569096454701ff191d9e8bf14}\label{classutl_1_1indev__it_a3bfc84c569096454701ff191d9e8bf14}} +\index{utl\+::indev\+\_\+it@{utl\+::indev\+\_\+it}!operator-\/@{operator-\/}} +\index{operator-\/@{operator-\/}!utl\+::indev\+\_\+it@{utl\+::indev\+\_\+it}} +\subsubsection{\texorpdfstring{operator-\/()}{operator-()}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, size\+\_\+t \+\_\+size = static\+\_\+cast$<$size\+\_\+t$>$(-\/1)-\/\+\_\+beg$>$ \\ +\mbox{\hyperlink{classutl_1_1indev__it}{iterator\+\_\+t}} \mbox{\hyperlink{classutl_1_1indev__it}{utl\+::indev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$\+::operator-\/ (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classutl_1_1indev__it_abfeb8765e0e34491594113a8b1261f2a}{difference\+\_\+type}}}]{n }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 587 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1indev__it_a2980dd80dce60ddf7bfbaf11c5394b4c}\label{classutl_1_1indev__it_a2980dd80dce60ddf7bfbaf11c5394b4c}} +\index{utl\+::indev\+\_\+it@{utl\+::indev\+\_\+it}!operator-\/-\/@{operator-\/-\/}} +\index{operator-\/-\/@{operator-\/-\/}!utl\+::indev\+\_\+it@{utl\+::indev\+\_\+it}} +\subsubsection{\texorpdfstring{operator-\/-\/()}{operator--()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, size\+\_\+t \+\_\+size = static\+\_\+cast$<$size\+\_\+t$>$(-\/1)-\/\+\_\+beg$>$ \\ +\mbox{\hyperlink{classutl_1_1indev__it}{iterator\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1indev__it}{utl\+::indev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$\+::operator-\/-\/ (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Pre decrement. + + + +Definition at line 560 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1indev__it_a67ab2af5e3530d0aa72b9d4e6ce64d48}\label{classutl_1_1indev__it_a67ab2af5e3530d0aa72b9d4e6ce64d48}} +\index{utl\+::indev\+\_\+it@{utl\+::indev\+\_\+it}!operator-\/-\/@{operator-\/-\/}} +\index{operator-\/-\/@{operator-\/-\/}!utl\+::indev\+\_\+it@{utl\+::indev\+\_\+it}} +\subsubsection{\texorpdfstring{operator-\/-\/()}{operator--()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, size\+\_\+t \+\_\+size = static\+\_\+cast$<$size\+\_\+t$>$(-\/1)-\/\+\_\+beg$>$ \\ +\mbox{\hyperlink{classutl_1_1indev__it}{iterator\+\_\+t}} \mbox{\hyperlink{classutl_1_1indev__it}{utl\+::indev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$\+::operator-\/-\/ (\begin{DoxyParamCaption}\item[{int}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Post decrement. + + + +Definition at line 565 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1indev__it_a45fc6f9caefbe9e623e850919ecef085}\label{classutl_1_1indev__it_a45fc6f9caefbe9e623e850919ecef085}} +\index{utl\+::indev\+\_\+it@{utl\+::indev\+\_\+it}!operator-\/=@{operator-\/=}} +\index{operator-\/=@{operator-\/=}!utl\+::indev\+\_\+it@{utl\+::indev\+\_\+it}} +\subsubsection{\texorpdfstring{operator-\/=()}{operator-=()}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, size\+\_\+t \+\_\+size = static\+\_\+cast$<$size\+\_\+t$>$(-\/1)-\/\+\_\+beg$>$ \\ +\mbox{\hyperlink{classutl_1_1indev__it}{iterator\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1indev__it}{utl\+::indev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$\+::operator-\/= (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classutl_1_1indev__it_abfeb8765e0e34491594113a8b1261f2a}{difference\+\_\+type}}}]{n }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 583 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1indev__it_aba3b176ec09842e790f1edc808214a89}\label{classutl_1_1indev__it_aba3b176ec09842e790f1edc808214a89}} +\index{utl\+::indev\+\_\+it@{utl\+::indev\+\_\+it}!operator-\/$>$@{operator-\/$>$}} +\index{operator-\/$>$@{operator-\/$>$}!utl\+::indev\+\_\+it@{utl\+::indev\+\_\+it}} +\subsubsection{\texorpdfstring{operator-\/$>$()}{operator->()}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, size\+\_\+t \+\_\+size = static\+\_\+cast$<$size\+\_\+t$>$(-\/1)-\/\+\_\+beg$>$ \\ +\mbox{\hyperlink{classutl_1_1indev__it_aa5b1e7c33987cec0d2bfc6aad07b297f}{pointer}} \mbox{\hyperlink{classutl_1_1indev__it}{utl\+::indev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$\+::operator-\/$>$ (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Arrow operator. No end() place dereference check is made. + + + +Definition at line 542 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1indev__it_a6dd617aa9a5c3454ca9f49d1ed6319d8}\label{classutl_1_1indev__it_a6dd617aa9a5c3454ca9f49d1ed6319d8}} +\index{utl\+::indev\+\_\+it@{utl\+::indev\+\_\+it}!operator=@{operator=}} +\index{operator=@{operator=}!utl\+::indev\+\_\+it@{utl\+::indev\+\_\+it}} +\subsubsection{\texorpdfstring{operator=()}{operator=()}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, size\+\_\+t \+\_\+size = static\+\_\+cast$<$size\+\_\+t$>$(-\/1)-\/\+\_\+beg$>$ \\ +\mbox{\hyperlink{classutl_1_1indev__it}{iterator\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1indev__it}{utl\+::indev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$\+::operator= (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1indev__it}{iterator\+\_\+t}} \&}]{it }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Basic copy assignment operator. + + + +Definition at line 515 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1indev__it_acc0466f1af48d7080acde0e9c4241585}\label{classutl_1_1indev__it_acc0466f1af48d7080acde0e9c4241585}} +\index{utl\+::indev\+\_\+it@{utl\+::indev\+\_\+it}!operator\mbox{[}\mbox{]}@{operator[]}} +\index{operator\mbox{[}\mbox{]}@{operator[]}!utl\+::indev\+\_\+it@{utl\+::indev\+\_\+it}} +\subsubsection{\texorpdfstring{operator[]()}{operator[]()}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, size\+\_\+t \+\_\+size = static\+\_\+cast$<$size\+\_\+t$>$(-\/1)-\/\+\_\+beg$>$ \\ +\mbox{\hyperlink{classutl_1_1indev__it_afd50b088dd181c3d74f9e150a5190c3a}{reference}} \mbox{\hyperlink{classutl_1_1indev__it}{utl\+::indev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$\+::operator\mbox{[}$\,$\mbox{]} (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classutl_1_1indev__it_abfeb8765e0e34491594113a8b1261f2a}{difference\+\_\+type}}}]{n }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +\mbox{[}\mbox{]} operator. Is a combination of input method and dereference + + + +Definition at line 571 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1indev__it_aaa0295b6a2ed86e5b1018d049b988c8b}\label{classutl_1_1indev__it_aaa0295b6a2ed86e5b1018d049b988c8b}} +\index{utl\+::indev\+\_\+it@{utl\+::indev\+\_\+it}!owner@{owner}} +\index{owner@{owner}!utl\+::indev\+\_\+it@{utl\+::indev\+\_\+it}} +\subsubsection{\texorpdfstring{owner()}{owner()}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, size\+\_\+t \+\_\+size = static\+\_\+cast$<$size\+\_\+t$>$(-\/1)-\/\+\_\+beg$>$ \\ +const cont\+\_\+t$\ast$ \mbox{\hyperlink{classutl_1_1indev__it}{utl\+::indev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$\+::owner (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Export container for comparison. + + + +Definition at line 591 of file dev\+\_\+iterators.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/dev/\mbox{\hyperlink{dev__iterators_8h}{dev\+\_\+iterators.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classutl_1_1iodev__it.tex b/doc/latex/classutl_1_1iodev__it.tex new file mode 100644 index 0000000..7b84d4d --- /dev/null +++ b/doc/latex/classutl_1_1iodev__it.tex @@ -0,0 +1,473 @@ +\hypertarget{classutl_1_1iodev__it}{}\section{utl\+:\+:iodev\+\_\+it$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$ Class Template Reference} +\label{classutl_1_1iodev__it}\index{utl\+::iodev\+\_\+it$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$@{utl\+::iodev\+\_\+it$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$}} + + +Indexed device iterator type. We \char`\"{}future call\char`\"{} interface methods from owner class to provide iterator functionality. + + + + +{\ttfamily \#include $<$dev\+\_\+iterators.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +enum \mbox{\hyperlink{classutl_1_1iodev__it_a746eded7eb22cbff5441b41ec0aac30f}{Cursor}} \{ \mbox{\hyperlink{classutl_1_1iodev__it_a746eded7eb22cbff5441b41ec0aac30fa7da9a1535ecc02d71b8ea5683b46a42d}{beg}} = \+\_\+beg, +\mbox{\hyperlink{classutl_1_1iodev__it_a746eded7eb22cbff5441b41ec0aac30fa135f130529a4b46b2b2cfd79d681a9c0}{eod}} = \+\_\+beg+\+\_\+size + \} +\begin{DoxyCompactList}\small\item\em \#define-\/like enumerator for Cursor \end{DoxyCompactList}\item +using \mbox{\hyperlink{classutl_1_1iodev__it_a1c81a9a1ba749b44b9721f83bfebae08}{type}} = \mbox{\hyperlink{classutl_1_1iodev__it}{iterator\+\_\+t}} +\end{DoxyCompactItemize} +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{classutl_1_1iodev__it_ad223ec5d1f9187b200bfe0566d6c1e4a}{iterator\+\_\+category}} = typename \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{dev\+\_\+iterator\+\_\+traits}}$<$ std\+::output\+\_\+iterator\+\_\+tag, iter\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1iodev__it_ad223ec5d1f9187b200bfe0566d6c1e4a}{iterator\+\_\+category}} +\item +using \mbox{\hyperlink{classutl_1_1iodev__it_a2e8033eee2ac8e8132b8b833ffa606ab}{value\+\_\+type}} = typename \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{dev\+\_\+iterator\+\_\+traits}}$<$ std\+::output\+\_\+iterator\+\_\+tag, iter\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1iodev__it_a2e8033eee2ac8e8132b8b833ffa606ab}{value\+\_\+type}} +\item +using \mbox{\hyperlink{classutl_1_1iodev__it_a3dd6b7953c425d027df92051b6332286}{difference\+\_\+type}} = typename \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{dev\+\_\+iterator\+\_\+traits}}$<$ std\+::output\+\_\+iterator\+\_\+tag, iter\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1iodev__it_a3dd6b7953c425d027df92051b6332286}{difference\+\_\+type}} +\item +using \mbox{\hyperlink{classutl_1_1iodev__it_a3cc475e736e680ae4d078f241c0572eb}{pointer}} = typename \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{dev\+\_\+iterator\+\_\+traits}}$<$ std\+::output\+\_\+iterator\+\_\+tag, iter\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1iodev__it_a3cc475e736e680ae4d078f241c0572eb}{pointer}} +\item +using \mbox{\hyperlink{classutl_1_1iodev__it_a44916c1157ea2d97aa7fe4ed89af6d19}{reference}} = typename \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{dev\+\_\+iterator\+\_\+traits}}$<$ std\+::output\+\_\+iterator\+\_\+tag, iter\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1iodev__it_a44916c1157ea2d97aa7fe4ed89af6d19}{reference}} +\end{DoxyCompactItemize} + +\subsection*{Public Member Functions} +\begin{Indent}\textbf{ Constructor / Destructor}\par +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classutl_1_1iodev__it_a8f610ac513d5118345f148031c3e6b9c}{iodev\+\_\+it}} () noexcept +\begin{DoxyCompactList}\small\item\em Default constructor. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1iodev__it_ad9ef3fd5595b70fbb94735707df656a3}{iodev\+\_\+it}} (cont\+\_\+t $\ast$\mbox{\hyperlink{classutl_1_1iodev__it_a1e3b3608c6378257c77853cb61820438}{owner}}, \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1iodev__it_a4fa491f13549709b5a6da71281ca8632}{cursor}}=\mbox{\hyperlink{classutl_1_1iodev__it_a746eded7eb22cbff5441b41ec0aac30fa135f130529a4b46b2b2cfd79d681a9c0}{eod}}) noexcept +\begin{DoxyCompactList}\small\item\em Basic constructor. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1iodev__it_a41167751da91f6c99e05d0c164f75f0d}{iodev\+\_\+it}} (const \mbox{\hyperlink{classutl_1_1iodev__it}{iterator\+\_\+t}} \&it) noexcept +\begin{DoxyCompactList}\small\item\em Basic copy constructor. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1iodev__it}{iterator\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1iodev__it_a55d221d75ed1cd82542bacc0d5acb454}{operator=}} (const \mbox{\hyperlink{classutl_1_1iodev__it}{iterator\+\_\+t}} \&it) noexcept +\begin{DoxyCompactList}\small\item\em Basic copy assignment operator. \end{DoxyCompactList}\end{DoxyCompactItemize} +\end{Indent} +\begin{Indent}\textbf{ Public interface}\par +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classutl_1_1iodev__it_a44916c1157ea2d97aa7fe4ed89af6d19}{reference}} \mbox{\hyperlink{classutl_1_1iodev__it_a584de89ae9c5d223f6455680d54d18f3}{operator$\ast$}} () noexcept +\item +\mbox{\hyperlink{classutl_1_1iodev__it_a3cc475e736e680ae4d078f241c0572eb}{pointer}} \mbox{\hyperlink{classutl_1_1iodev__it_a2c031f247a145656129e91905d9dca26}{operator-\/$>$}} () noexcept +\begin{DoxyCompactList}\small\item\em Arrow operator. This is where the input method is invoked. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1iodev__it}{iterator\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1iodev__it_aee5241250c6e402699bd38a13dad6f91}{operator++}} () noexcept +\begin{DoxyCompactList}\small\item\em Pre increment. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1iodev__it}{iterator\+\_\+t}} \mbox{\hyperlink{classutl_1_1iodev__it_ad470a2f302cacaa2effc56072e21eef5}{operator++}} (int) noexcept +\begin{DoxyCompactList}\small\item\em Post increment. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1iodev__it}{iterator\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1iodev__it_a820f0b3899c80743ed0ad1f495c0d3c3}{operator-\/-\/}} () noexcept +\begin{DoxyCompactList}\small\item\em Pre decrement. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1iodev__it}{iterator\+\_\+t}} \mbox{\hyperlink{classutl_1_1iodev__it_a6bde1ae02f162213c637ff25f269d24f}{operator-\/-\/}} (int) noexcept +\begin{DoxyCompactList}\small\item\em Post decrement. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1iodev__it_a44916c1157ea2d97aa7fe4ed89af6d19}{reference}} \mbox{\hyperlink{classutl_1_1iodev__it_a16c35c2eab7f92794764b7b5c48f9e8e}{operator\mbox{[}$\,$\mbox{]}}} (\mbox{\hyperlink{classutl_1_1iodev__it_a3dd6b7953c425d027df92051b6332286}{difference\+\_\+type}} n) noexcept +\begin{DoxyCompactList}\small\item\em Random access through iterator. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1iodev__it}{iterator\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1iodev__it_a6aad753022c84b6961eef38bb53a3bd9}{operator+=}} (\mbox{\hyperlink{classutl_1_1iodev__it_a3dd6b7953c425d027df92051b6332286}{difference\+\_\+type}} n) noexcept +\begin{DoxyCompactList}\small\item\em Random cursor increment. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1iodev__it}{iterator\+\_\+t}} \mbox{\hyperlink{classutl_1_1iodev__it_a6a720ca327e022c72ee11c11305f7f05}{operator+}} (\mbox{\hyperlink{classutl_1_1iodev__it_a3dd6b7953c425d027df92051b6332286}{difference\+\_\+type}} n) const noexcept +\begin{DoxyCompactList}\small\item\em Addition operation. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1iodev__it}{iterator\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1iodev__it_ac4fa70211754ba2f34aaea5290d2492c}{operator-\/=}} (\mbox{\hyperlink{classutl_1_1iodev__it_a3dd6b7953c425d027df92051b6332286}{difference\+\_\+type}} n) noexcept +\begin{DoxyCompactList}\small\item\em Random cursor decrement. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1iodev__it}{iterator\+\_\+t}} \mbox{\hyperlink{classutl_1_1iodev__it_aa437f3e0e237fa511e56646136aabb35}{operator-\/}} (\mbox{\hyperlink{classutl_1_1iodev__it_a3dd6b7953c425d027df92051b6332286}{difference\+\_\+type}} n) const noexcept +\begin{DoxyCompactList}\small\item\em Subtraction operation. \end{DoxyCompactList}\item +const cont\+\_\+t $\ast$ \mbox{\hyperlink{classutl_1_1iodev__it_a1e3b3608c6378257c77853cb61820438}{owner}} () const noexcept +\begin{DoxyCompactList}\small\item\em Export container for comparison. \end{DoxyCompactList}\item +const \mbox{\hyperlink{namespaceutl_a676c0acd539dd04048dcc7b4d698577e}{index\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1iodev__it_a4fa491f13549709b5a6da71281ca8632}{cursor}} () const noexcept +\begin{DoxyCompactList}\small\item\em Export cursor for comparison. \end{DoxyCompactList}\end{DoxyCompactItemize} +\end{Indent} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, size\+\_\+t \+\_\+size = static\+\_\+cast$<$size\+\_\+t$>$(-\/1)-\/\+\_\+beg$>$\newline +class utl\+::iodev\+\_\+it$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$} + +Indexed device iterator type. We \char`\"{}future call\char`\"{} interface methods from owner class to provide iterator functionality. + +Value meta-\/programming function for S\+PI interface checking +\begin{DoxyParams}{Parameters} +{\em \+\_\+\+Tp} & Type to check \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +True if \+\_\+\+Tp is a spi interface +\end{DoxyReturn} +\begin{DoxyNote}{Note} +This is a contiguous iterator +\end{DoxyNote} + +\begin{DoxyParams}{Parameters} +{\em cont\+\_\+t} & Container/parent type \\ +\hline +{\em iter\+\_\+t} & Iterator data type (pointer to container\+\_\+t\+::value\+\_\+type) \\ +\hline +{\em \+\_\+beg} & Starting address of the device \\ +\hline +{\em \+\_\+size} & Device\textquotesingle{}s address space size \\ +\hline +\end{DoxyParams} + + +Definition at line 740 of file dev\+\_\+iterators.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{classutl_1_1iodev__it_a3dd6b7953c425d027df92051b6332286}\label{classutl_1_1iodev__it_a3dd6b7953c425d027df92051b6332286}} +\index{utl\+::iodev\+\_\+it@{utl\+::iodev\+\_\+it}!difference\+\_\+type@{difference\+\_\+type}} +\index{difference\+\_\+type@{difference\+\_\+type}!utl\+::iodev\+\_\+it@{utl\+::iodev\+\_\+it}} +\subsubsection{\texorpdfstring{difference\+\_\+type}{difference\_type}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, size\+\_\+t \+\_\+size = static\+\_\+cast$<$size\+\_\+t$>$(-\/1)-\/\+\_\+beg$>$ \\ +using \mbox{\hyperlink{classutl_1_1iodev__it}{utl\+::iodev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$\+::\mbox{\hyperlink{classutl_1_1iodev__it_a3dd6b7953c425d027df92051b6332286}{difference\+\_\+type}} = typename \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{dev\+\_\+iterator\+\_\+traits}} $<$std\+::output\+\_\+iterator\+\_\+tag, iter\+\_\+t$>$\+::\mbox{\hyperlink{classutl_1_1iodev__it_a3dd6b7953c425d027df92051b6332286}{difference\+\_\+type}}} + + + +Definition at line 750 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1iodev__it_ad223ec5d1f9187b200bfe0566d6c1e4a}\label{classutl_1_1iodev__it_ad223ec5d1f9187b200bfe0566d6c1e4a}} +\index{utl\+::iodev\+\_\+it@{utl\+::iodev\+\_\+it}!iterator\+\_\+category@{iterator\+\_\+category}} +\index{iterator\+\_\+category@{iterator\+\_\+category}!utl\+::iodev\+\_\+it@{utl\+::iodev\+\_\+it}} +\subsubsection{\texorpdfstring{iterator\+\_\+category}{iterator\_category}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, size\+\_\+t \+\_\+size = static\+\_\+cast$<$size\+\_\+t$>$(-\/1)-\/\+\_\+beg$>$ \\ +using \mbox{\hyperlink{classutl_1_1iodev__it}{utl\+::iodev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$\+::\mbox{\hyperlink{classutl_1_1iodev__it_ad223ec5d1f9187b200bfe0566d6c1e4a}{iterator\+\_\+category}} = typename \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{dev\+\_\+iterator\+\_\+traits}} $<$std\+::output\+\_\+iterator\+\_\+tag, iter\+\_\+t$>$\+::\mbox{\hyperlink{classutl_1_1iodev__it_ad223ec5d1f9187b200bfe0566d6c1e4a}{iterator\+\_\+category}}} + +S\+TL iterator traits \char`\"{}forwarding\char`\"{} + +Definition at line 748 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1iodev__it_a3cc475e736e680ae4d078f241c0572eb}\label{classutl_1_1iodev__it_a3cc475e736e680ae4d078f241c0572eb}} +\index{utl\+::iodev\+\_\+it@{utl\+::iodev\+\_\+it}!pointer@{pointer}} +\index{pointer@{pointer}!utl\+::iodev\+\_\+it@{utl\+::iodev\+\_\+it}} +\subsubsection{\texorpdfstring{pointer}{pointer}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, size\+\_\+t \+\_\+size = static\+\_\+cast$<$size\+\_\+t$>$(-\/1)-\/\+\_\+beg$>$ \\ +using \mbox{\hyperlink{classutl_1_1iodev__it}{utl\+::iodev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$\+::\mbox{\hyperlink{classutl_1_1iodev__it_a3cc475e736e680ae4d078f241c0572eb}{pointer}} = typename \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{dev\+\_\+iterator\+\_\+traits}} $<$std\+::output\+\_\+iterator\+\_\+tag, iter\+\_\+t$>$\+::\mbox{\hyperlink{classutl_1_1iodev__it_a3cc475e736e680ae4d078f241c0572eb}{pointer}}} + + + +Definition at line 751 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1iodev__it_a44916c1157ea2d97aa7fe4ed89af6d19}\label{classutl_1_1iodev__it_a44916c1157ea2d97aa7fe4ed89af6d19}} +\index{utl\+::iodev\+\_\+it@{utl\+::iodev\+\_\+it}!reference@{reference}} +\index{reference@{reference}!utl\+::iodev\+\_\+it@{utl\+::iodev\+\_\+it}} +\subsubsection{\texorpdfstring{reference}{reference}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, size\+\_\+t \+\_\+size = static\+\_\+cast$<$size\+\_\+t$>$(-\/1)-\/\+\_\+beg$>$ \\ +using \mbox{\hyperlink{classutl_1_1iodev__it}{utl\+::iodev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$\+::\mbox{\hyperlink{classutl_1_1iodev__it_a44916c1157ea2d97aa7fe4ed89af6d19}{reference}} = typename \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{dev\+\_\+iterator\+\_\+traits}} $<$std\+::output\+\_\+iterator\+\_\+tag, iter\+\_\+t$>$\+::\mbox{\hyperlink{classutl_1_1iodev__it_a44916c1157ea2d97aa7fe4ed89af6d19}{reference}}} + + + +Definition at line 752 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1iodev__it_a1c81a9a1ba749b44b9721f83bfebae08}\label{classutl_1_1iodev__it_a1c81a9a1ba749b44b9721f83bfebae08}} +\index{utl\+::iodev\+\_\+it@{utl\+::iodev\+\_\+it}!type@{type}} +\index{type@{type}!utl\+::iodev\+\_\+it@{utl\+::iodev\+\_\+it}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, size\+\_\+t \+\_\+size = static\+\_\+cast$<$size\+\_\+t$>$(-\/1)-\/\+\_\+beg$>$ \\ +using \mbox{\hyperlink{classutl_1_1iodev__it}{utl\+::iodev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$\+::\mbox{\hyperlink{classutl_1_1iodev__it_a1c81a9a1ba749b44b9721f83bfebae08}{type}} = \mbox{\hyperlink{classutl_1_1iodev__it}{iterator\+\_\+t}}} + +Export type as identity meta-\/function + +Definition at line 744 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1iodev__it_a2e8033eee2ac8e8132b8b833ffa606ab}\label{classutl_1_1iodev__it_a2e8033eee2ac8e8132b8b833ffa606ab}} +\index{utl\+::iodev\+\_\+it@{utl\+::iodev\+\_\+it}!value\+\_\+type@{value\+\_\+type}} +\index{value\+\_\+type@{value\+\_\+type}!utl\+::iodev\+\_\+it@{utl\+::iodev\+\_\+it}} +\subsubsection{\texorpdfstring{value\+\_\+type}{value\_type}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, size\+\_\+t \+\_\+size = static\+\_\+cast$<$size\+\_\+t$>$(-\/1)-\/\+\_\+beg$>$ \\ +using \mbox{\hyperlink{classutl_1_1iodev__it}{utl\+::iodev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$\+::\mbox{\hyperlink{classutl_1_1iodev__it_a2e8033eee2ac8e8132b8b833ffa606ab}{value\+\_\+type}} = typename \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{dev\+\_\+iterator\+\_\+traits}} $<$std\+::output\+\_\+iterator\+\_\+tag, iter\+\_\+t$>$\+::\mbox{\hyperlink{classutl_1_1iodev__it_a2e8033eee2ac8e8132b8b833ffa606ab}{value\+\_\+type}}} + + + +Definition at line 749 of file dev\+\_\+iterators.\+h. + + + +\subsection{Member Enumeration Documentation} +\mbox{\Hypertarget{classutl_1_1iodev__it_a746eded7eb22cbff5441b41ec0aac30f}\label{classutl_1_1iodev__it_a746eded7eb22cbff5441b41ec0aac30f}} +\index{utl\+::iodev\+\_\+it@{utl\+::iodev\+\_\+it}!Cursor@{Cursor}} +\index{Cursor@{Cursor}!utl\+::iodev\+\_\+it@{utl\+::iodev\+\_\+it}} +\subsubsection{\texorpdfstring{Cursor}{Cursor}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, size\+\_\+t \+\_\+size = static\+\_\+cast$<$size\+\_\+t$>$(-\/1)-\/\+\_\+beg$>$ \\ +enum \mbox{\hyperlink{classutl_1_1iodev__it_a746eded7eb22cbff5441b41ec0aac30f}{utl\+::iodev\+\_\+it\+::\+Cursor}}} + + + +\#define-\/like enumerator for Cursor + +\begin{DoxyEnumFields}{Enumerator} +\raisebox{\heightof{T}}[0pt][0pt]{\index{beg@{beg}!utl\+::iodev\+\_\+it@{utl\+::iodev\+\_\+it}}\index{utl\+::iodev\+\_\+it@{utl\+::iodev\+\_\+it}!beg@{beg}}}\mbox{\Hypertarget{classutl_1_1iodev__it_a746eded7eb22cbff5441b41ec0aac30fa7da9a1535ecc02d71b8ea5683b46a42d}\label{classutl_1_1iodev__it_a746eded7eb22cbff5441b41ec0aac30fa7da9a1535ecc02d71b8ea5683b46a42d}} +beg&Points the first item. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{eod@{eod}!utl\+::iodev\+\_\+it@{utl\+::iodev\+\_\+it}}\index{utl\+::iodev\+\_\+it@{utl\+::iodev\+\_\+it}!eod@{eod}}}\mbox{\Hypertarget{classutl_1_1iodev__it_a746eded7eb22cbff5441b41ec0aac30fa135f130529a4b46b2b2cfd79d681a9c0}\label{classutl_1_1iodev__it_a746eded7eb22cbff5441b41ec0aac30fa135f130529a4b46b2b2cfd79d681a9c0}} +eod&Points one place after last item. \\ +\hline + +\end{DoxyEnumFields} + + +Definition at line 756 of file dev\+\_\+iterators.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classutl_1_1iodev__it_a8f610ac513d5118345f148031c3e6b9c}\label{classutl_1_1iodev__it_a8f610ac513d5118345f148031c3e6b9c}} +\index{utl\+::iodev\+\_\+it@{utl\+::iodev\+\_\+it}!iodev\+\_\+it@{iodev\+\_\+it}} +\index{iodev\+\_\+it@{iodev\+\_\+it}!utl\+::iodev\+\_\+it@{utl\+::iodev\+\_\+it}} +\subsubsection{\texorpdfstring{iodev\+\_\+it()}{iodev\_it()}\hspace{0.1cm}{\footnotesize\ttfamily [1/3]}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, size\+\_\+t \+\_\+size = static\+\_\+cast$<$size\+\_\+t$>$(-\/1)-\/\+\_\+beg$>$ \\ +\mbox{\hyperlink{classutl_1_1iodev__it}{utl\+::iodev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$\+::\mbox{\hyperlink{classutl_1_1iodev__it}{iodev\+\_\+it}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Default constructor. + + + +Definition at line 790 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1iodev__it_ad9ef3fd5595b70fbb94735707df656a3}\label{classutl_1_1iodev__it_ad9ef3fd5595b70fbb94735707df656a3}} +\index{utl\+::iodev\+\_\+it@{utl\+::iodev\+\_\+it}!iodev\+\_\+it@{iodev\+\_\+it}} +\index{iodev\+\_\+it@{iodev\+\_\+it}!utl\+::iodev\+\_\+it@{utl\+::iodev\+\_\+it}} +\subsubsection{\texorpdfstring{iodev\+\_\+it()}{iodev\_it()}\hspace{0.1cm}{\footnotesize\ttfamily [2/3]}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, size\+\_\+t \+\_\+size = static\+\_\+cast$<$size\+\_\+t$>$(-\/1)-\/\+\_\+beg$>$ \\ +\mbox{\hyperlink{classutl_1_1iodev__it}{utl\+::iodev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$\+::\mbox{\hyperlink{classutl_1_1iodev__it}{iodev\+\_\+it}} (\begin{DoxyParamCaption}\item[{cont\+\_\+t $\ast$}]{owner, }\item[{\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}}}]{cursor = {\ttfamily \mbox{\hyperlink{classutl_1_1iodev__it_a746eded7eb22cbff5441b41ec0aac30fa135f130529a4b46b2b2cfd79d681a9c0}{eod}}} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [explicit]}, {\ttfamily [noexcept]}} + + + +Basic constructor. + + + +Definition at line 795 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1iodev__it_a41167751da91f6c99e05d0c164f75f0d}\label{classutl_1_1iodev__it_a41167751da91f6c99e05d0c164f75f0d}} +\index{utl\+::iodev\+\_\+it@{utl\+::iodev\+\_\+it}!iodev\+\_\+it@{iodev\+\_\+it}} +\index{iodev\+\_\+it@{iodev\+\_\+it}!utl\+::iodev\+\_\+it@{utl\+::iodev\+\_\+it}} +\subsubsection{\texorpdfstring{iodev\+\_\+it()}{iodev\_it()}\hspace{0.1cm}{\footnotesize\ttfamily [3/3]}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, size\+\_\+t \+\_\+size = static\+\_\+cast$<$size\+\_\+t$>$(-\/1)-\/\+\_\+beg$>$ \\ +\mbox{\hyperlink{classutl_1_1iodev__it}{utl\+::iodev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$\+::\mbox{\hyperlink{classutl_1_1iodev__it}{iodev\+\_\+it}} (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1iodev__it}{iterator\+\_\+t}} \&}]{it }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [explicit]}, {\ttfamily [noexcept]}} + + + +Basic copy constructor. + + + +Definition at line 800 of file dev\+\_\+iterators.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classutl_1_1iodev__it_a4fa491f13549709b5a6da71281ca8632}\label{classutl_1_1iodev__it_a4fa491f13549709b5a6da71281ca8632}} +\index{utl\+::iodev\+\_\+it@{utl\+::iodev\+\_\+it}!cursor@{cursor}} +\index{cursor@{cursor}!utl\+::iodev\+\_\+it@{utl\+::iodev\+\_\+it}} +\subsubsection{\texorpdfstring{cursor()}{cursor()}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, size\+\_\+t \+\_\+size = static\+\_\+cast$<$size\+\_\+t$>$(-\/1)-\/\+\_\+beg$>$ \\ +const \mbox{\hyperlink{namespaceutl_a676c0acd539dd04048dcc7b4d698577e}{index\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1iodev__it}{utl\+::iodev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$\+::cursor (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Export cursor for comparison. + + + +Definition at line 878 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1iodev__it_a584de89ae9c5d223f6455680d54d18f3}\label{classutl_1_1iodev__it_a584de89ae9c5d223f6455680d54d18f3}} +\index{utl\+::iodev\+\_\+it@{utl\+::iodev\+\_\+it}!operator$\ast$@{operator$\ast$}} +\index{operator$\ast$@{operator$\ast$}!utl\+::iodev\+\_\+it@{utl\+::iodev\+\_\+it}} +\subsubsection{\texorpdfstring{operator$\ast$()}{operator*()}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, size\+\_\+t \+\_\+size = static\+\_\+cast$<$size\+\_\+t$>$(-\/1)-\/\+\_\+beg$>$ \\ +\mbox{\hyperlink{classutl_1_1iodev__it_a44916c1157ea2d97aa7fe4ed89af6d19}{reference}} \mbox{\hyperlink{classutl_1_1iodev__it}{utl\+::iodev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$\+::operator$\ast$ (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + +De-\/reference operator. This is where the input method is invoked \begin{DoxyNote}{Note} +No end() place dereference check is made. +\end{DoxyNote} + + +Definition at line 819 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1iodev__it_a6a720ca327e022c72ee11c11305f7f05}\label{classutl_1_1iodev__it_a6a720ca327e022c72ee11c11305f7f05}} +\index{utl\+::iodev\+\_\+it@{utl\+::iodev\+\_\+it}!operator+@{operator+}} +\index{operator+@{operator+}!utl\+::iodev\+\_\+it@{utl\+::iodev\+\_\+it}} +\subsubsection{\texorpdfstring{operator+()}{operator+()}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, size\+\_\+t \+\_\+size = static\+\_\+cast$<$size\+\_\+t$>$(-\/1)-\/\+\_\+beg$>$ \\ +\mbox{\hyperlink{classutl_1_1iodev__it}{iterator\+\_\+t}} \mbox{\hyperlink{classutl_1_1iodev__it}{utl\+::iodev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$\+::operator+ (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classutl_1_1iodev__it_a3dd6b7953c425d027df92051b6332286}{difference\+\_\+type}}}]{n }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Addition operation. + + + +Definition at line 862 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1iodev__it_aee5241250c6e402699bd38a13dad6f91}\label{classutl_1_1iodev__it_aee5241250c6e402699bd38a13dad6f91}} +\index{utl\+::iodev\+\_\+it@{utl\+::iodev\+\_\+it}!operator++@{operator++}} +\index{operator++@{operator++}!utl\+::iodev\+\_\+it@{utl\+::iodev\+\_\+it}} +\subsubsection{\texorpdfstring{operator++()}{operator++()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, size\+\_\+t \+\_\+size = static\+\_\+cast$<$size\+\_\+t$>$(-\/1)-\/\+\_\+beg$>$ \\ +\mbox{\hyperlink{classutl_1_1iodev__it}{iterator\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1iodev__it}{utl\+::iodev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$\+::operator++ (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Pre increment. + + + +Definition at line 830 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1iodev__it_ad470a2f302cacaa2effc56072e21eef5}\label{classutl_1_1iodev__it_ad470a2f302cacaa2effc56072e21eef5}} +\index{utl\+::iodev\+\_\+it@{utl\+::iodev\+\_\+it}!operator++@{operator++}} +\index{operator++@{operator++}!utl\+::iodev\+\_\+it@{utl\+::iodev\+\_\+it}} +\subsubsection{\texorpdfstring{operator++()}{operator++()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, size\+\_\+t \+\_\+size = static\+\_\+cast$<$size\+\_\+t$>$(-\/1)-\/\+\_\+beg$>$ \\ +\mbox{\hyperlink{classutl_1_1iodev__it}{iterator\+\_\+t}} \mbox{\hyperlink{classutl_1_1iodev__it}{utl\+::iodev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$\+::operator++ (\begin{DoxyParamCaption}\item[{int}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Post increment. + + + +Definition at line 835 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1iodev__it_a6aad753022c84b6961eef38bb53a3bd9}\label{classutl_1_1iodev__it_a6aad753022c84b6961eef38bb53a3bd9}} +\index{utl\+::iodev\+\_\+it@{utl\+::iodev\+\_\+it}!operator+=@{operator+=}} +\index{operator+=@{operator+=}!utl\+::iodev\+\_\+it@{utl\+::iodev\+\_\+it}} +\subsubsection{\texorpdfstring{operator+=()}{operator+=()}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, size\+\_\+t \+\_\+size = static\+\_\+cast$<$size\+\_\+t$>$(-\/1)-\/\+\_\+beg$>$ \\ +\mbox{\hyperlink{classutl_1_1iodev__it}{iterator\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1iodev__it}{utl\+::iodev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$\+::operator+= (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classutl_1_1iodev__it_a3dd6b7953c425d027df92051b6332286}{difference\+\_\+type}}}]{n }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Random cursor increment. + + + +Definition at line 857 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1iodev__it_aa437f3e0e237fa511e56646136aabb35}\label{classutl_1_1iodev__it_aa437f3e0e237fa511e56646136aabb35}} +\index{utl\+::iodev\+\_\+it@{utl\+::iodev\+\_\+it}!operator-\/@{operator-\/}} +\index{operator-\/@{operator-\/}!utl\+::iodev\+\_\+it@{utl\+::iodev\+\_\+it}} +\subsubsection{\texorpdfstring{operator-\/()}{operator-()}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, size\+\_\+t \+\_\+size = static\+\_\+cast$<$size\+\_\+t$>$(-\/1)-\/\+\_\+beg$>$ \\ +\mbox{\hyperlink{classutl_1_1iodev__it}{iterator\+\_\+t}} \mbox{\hyperlink{classutl_1_1iodev__it}{utl\+::iodev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$\+::operator-\/ (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classutl_1_1iodev__it_a3dd6b7953c425d027df92051b6332286}{difference\+\_\+type}}}]{n }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Subtraction operation. + + + +Definition at line 871 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1iodev__it_a820f0b3899c80743ed0ad1f495c0d3c3}\label{classutl_1_1iodev__it_a820f0b3899c80743ed0ad1f495c0d3c3}} +\index{utl\+::iodev\+\_\+it@{utl\+::iodev\+\_\+it}!operator-\/-\/@{operator-\/-\/}} +\index{operator-\/-\/@{operator-\/-\/}!utl\+::iodev\+\_\+it@{utl\+::iodev\+\_\+it}} +\subsubsection{\texorpdfstring{operator-\/-\/()}{operator--()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, size\+\_\+t \+\_\+size = static\+\_\+cast$<$size\+\_\+t$>$(-\/1)-\/\+\_\+beg$>$ \\ +\mbox{\hyperlink{classutl_1_1iodev__it}{iterator\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1iodev__it}{utl\+::iodev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$\+::operator-\/-\/ (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Pre decrement. + + + +Definition at line 841 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1iodev__it_a6bde1ae02f162213c637ff25f269d24f}\label{classutl_1_1iodev__it_a6bde1ae02f162213c637ff25f269d24f}} +\index{utl\+::iodev\+\_\+it@{utl\+::iodev\+\_\+it}!operator-\/-\/@{operator-\/-\/}} +\index{operator-\/-\/@{operator-\/-\/}!utl\+::iodev\+\_\+it@{utl\+::iodev\+\_\+it}} +\subsubsection{\texorpdfstring{operator-\/-\/()}{operator--()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, size\+\_\+t \+\_\+size = static\+\_\+cast$<$size\+\_\+t$>$(-\/1)-\/\+\_\+beg$>$ \\ +\mbox{\hyperlink{classutl_1_1iodev__it}{iterator\+\_\+t}} \mbox{\hyperlink{classutl_1_1iodev__it}{utl\+::iodev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$\+::operator-\/-\/ (\begin{DoxyParamCaption}\item[{int}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Post decrement. + + + +Definition at line 846 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1iodev__it_ac4fa70211754ba2f34aaea5290d2492c}\label{classutl_1_1iodev__it_ac4fa70211754ba2f34aaea5290d2492c}} +\index{utl\+::iodev\+\_\+it@{utl\+::iodev\+\_\+it}!operator-\/=@{operator-\/=}} +\index{operator-\/=@{operator-\/=}!utl\+::iodev\+\_\+it@{utl\+::iodev\+\_\+it}} +\subsubsection{\texorpdfstring{operator-\/=()}{operator-=()}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, size\+\_\+t \+\_\+size = static\+\_\+cast$<$size\+\_\+t$>$(-\/1)-\/\+\_\+beg$>$ \\ +\mbox{\hyperlink{classutl_1_1iodev__it}{iterator\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1iodev__it}{utl\+::iodev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$\+::operator-\/= (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classutl_1_1iodev__it_a3dd6b7953c425d027df92051b6332286}{difference\+\_\+type}}}]{n }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Random cursor decrement. + + + +Definition at line 866 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1iodev__it_a2c031f247a145656129e91905d9dca26}\label{classutl_1_1iodev__it_a2c031f247a145656129e91905d9dca26}} +\index{utl\+::iodev\+\_\+it@{utl\+::iodev\+\_\+it}!operator-\/$>$@{operator-\/$>$}} +\index{operator-\/$>$@{operator-\/$>$}!utl\+::iodev\+\_\+it@{utl\+::iodev\+\_\+it}} +\subsubsection{\texorpdfstring{operator-\/$>$()}{operator->()}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, size\+\_\+t \+\_\+size = static\+\_\+cast$<$size\+\_\+t$>$(-\/1)-\/\+\_\+beg$>$ \\ +\mbox{\hyperlink{classutl_1_1iodev__it_a3cc475e736e680ae4d078f241c0572eb}{pointer}} \mbox{\hyperlink{classutl_1_1iodev__it}{utl\+::iodev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$\+::operator-\/$>$ (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Arrow operator. This is where the input method is invoked. + + + +Definition at line 824 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1iodev__it_a55d221d75ed1cd82542bacc0d5acb454}\label{classutl_1_1iodev__it_a55d221d75ed1cd82542bacc0d5acb454}} +\index{utl\+::iodev\+\_\+it@{utl\+::iodev\+\_\+it}!operator=@{operator=}} +\index{operator=@{operator=}!utl\+::iodev\+\_\+it@{utl\+::iodev\+\_\+it}} +\subsubsection{\texorpdfstring{operator=()}{operator=()}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, size\+\_\+t \+\_\+size = static\+\_\+cast$<$size\+\_\+t$>$(-\/1)-\/\+\_\+beg$>$ \\ +\mbox{\hyperlink{classutl_1_1iodev__it}{iterator\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1iodev__it}{utl\+::iodev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$\+::operator= (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1iodev__it}{iterator\+\_\+t}} \&}]{it }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Basic copy assignment operator. + + + +Definition at line 805 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1iodev__it_a16c35c2eab7f92794764b7b5c48f9e8e}\label{classutl_1_1iodev__it_a16c35c2eab7f92794764b7b5c48f9e8e}} +\index{utl\+::iodev\+\_\+it@{utl\+::iodev\+\_\+it}!operator\mbox{[}\mbox{]}@{operator[]}} +\index{operator\mbox{[}\mbox{]}@{operator[]}!utl\+::iodev\+\_\+it@{utl\+::iodev\+\_\+it}} +\subsubsection{\texorpdfstring{operator[]()}{operator[]()}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, size\+\_\+t \+\_\+size = static\+\_\+cast$<$size\+\_\+t$>$(-\/1)-\/\+\_\+beg$>$ \\ +\mbox{\hyperlink{classutl_1_1iodev__it_a44916c1157ea2d97aa7fe4ed89af6d19}{reference}} \mbox{\hyperlink{classutl_1_1iodev__it}{utl\+::iodev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$\+::operator\mbox{[}$\,$\mbox{]} (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classutl_1_1iodev__it_a3dd6b7953c425d027df92051b6332286}{difference\+\_\+type}}}]{n }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Random access through iterator. + + + +Definition at line 852 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1iodev__it_a1e3b3608c6378257c77853cb61820438}\label{classutl_1_1iodev__it_a1e3b3608c6378257c77853cb61820438}} +\index{utl\+::iodev\+\_\+it@{utl\+::iodev\+\_\+it}!owner@{owner}} +\index{owner@{owner}!utl\+::iodev\+\_\+it@{utl\+::iodev\+\_\+it}} +\subsubsection{\texorpdfstring{owner()}{owner()}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, size\+\_\+t \+\_\+size = static\+\_\+cast$<$size\+\_\+t$>$(-\/1)-\/\+\_\+beg$>$ \\ +const cont\+\_\+t$\ast$ \mbox{\hyperlink{classutl_1_1iodev__it}{utl\+::iodev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$\+::owner (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Export container for comparison. + + + +Definition at line 876 of file dev\+\_\+iterators.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/dev/\mbox{\hyperlink{dev__iterators_8h}{dev\+\_\+iterators.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classutl_1_1istreamdev__it.tex b/doc/latex/classutl_1_1istreamdev__it.tex new file mode 100644 index 0000000..3d447ba --- /dev/null +++ b/doc/latex/classutl_1_1istreamdev__it.tex @@ -0,0 +1,315 @@ +\hypertarget{classutl_1_1istreamdev__it}{}\section{utl\+:\+:istreamdev\+\_\+it$<$ cont\+\_\+t, data\+\_\+t $>$ Class Template Reference} +\label{classutl_1_1istreamdev__it}\index{utl\+::istreamdev\+\_\+it$<$ cont\+\_\+t, data\+\_\+t $>$@{utl\+::istreamdev\+\_\+it$<$ cont\+\_\+t, data\+\_\+t $>$}} + + +{\ttfamily \#include $<$dev\+\_\+iterators.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +enum \mbox{\hyperlink{classutl_1_1istreamdev__it_a343602446a76ddc893b8420a0ec73098}{Cursor}} \{ \mbox{\hyperlink{classutl_1_1istreamdev__it_a343602446a76ddc893b8420a0ec73098acf78c8879b68ea36e14323560fb9376f}{init}} = 0, +\mbox{\hyperlink{classutl_1_1istreamdev__it_a343602446a76ddc893b8420a0ec73098a46b4593b1438c429ecf7725dee6deac8}{valid}} = 1, +\mbox{\hyperlink{classutl_1_1istreamdev__it_a343602446a76ddc893b8420a0ec73098a5d43103cca12a6712ebf6d8118f46ec2}{eos}} = 2 + \} +\begin{DoxyCompactList}\small\item\em \#define-\/like enumerator for Cursor-\/like behavior \end{DoxyCompactList}\item +using \mbox{\hyperlink{classutl_1_1istreamdev__it_a1d7d245bb3b6397af354604448550fe3}{type}} = \mbox{\hyperlink{classutl_1_1istreamdev__it}{iterator\+\_\+t}} +\end{DoxyCompactItemize} +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{classutl_1_1istreamdev__it_ab9f273d2adc8c4fbc4d2e0a52346de89}{iterator\+\_\+category}} = typename \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{dev\+\_\+iterator\+\_\+traits}}$<$ std\+::output\+\_\+iterator\+\_\+tag, data\+\_\+t, void $>$\+::\mbox{\hyperlink{classutl_1_1istreamdev__it_ab9f273d2adc8c4fbc4d2e0a52346de89}{iterator\+\_\+category}} +\item +using \mbox{\hyperlink{classutl_1_1istreamdev__it_a2c86d97ea181d403018078c7bcd85a7d}{value\+\_\+type}} = typename \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{dev\+\_\+iterator\+\_\+traits}}$<$ std\+::output\+\_\+iterator\+\_\+tag, data\+\_\+t, void $>$\+::\mbox{\hyperlink{classutl_1_1istreamdev__it_a2c86d97ea181d403018078c7bcd85a7d}{value\+\_\+type}} +\item +using \mbox{\hyperlink{classutl_1_1istreamdev__it_ae74eb71649f6d9d6c758477d5a729464}{difference\+\_\+type}} = typename \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{dev\+\_\+iterator\+\_\+traits}}$<$ std\+::output\+\_\+iterator\+\_\+tag, data\+\_\+t, void $>$\+::\mbox{\hyperlink{classutl_1_1istreamdev__it_ae74eb71649f6d9d6c758477d5a729464}{difference\+\_\+type}} +\item +using \mbox{\hyperlink{classutl_1_1istreamdev__it_abc9731045fe1cf2639a91cfc6040114f}{pointer}} = typename \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{dev\+\_\+iterator\+\_\+traits}}$<$ std\+::output\+\_\+iterator\+\_\+tag, data\+\_\+t, void $>$\+::\mbox{\hyperlink{classutl_1_1istreamdev__it_abc9731045fe1cf2639a91cfc6040114f}{pointer}} +\item +using \mbox{\hyperlink{classutl_1_1istreamdev__it_a824851507bcd0dbaf6e1f7c54dffccae}{reference}} = typename \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{dev\+\_\+iterator\+\_\+traits}}$<$ std\+::output\+\_\+iterator\+\_\+tag, data\+\_\+t, void $>$\+::\mbox{\hyperlink{classutl_1_1istreamdev__it_a824851507bcd0dbaf6e1f7c54dffccae}{reference}} +\end{DoxyCompactItemize} + +\subsection*{Public Member Functions} +\begin{Indent}\textbf{ Constructor / Destructor}\par +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classutl_1_1istreamdev__it_a37d06e1d0e6b2dee118d1f84914f489f}{istreamdev\+\_\+it}} (cont\+\_\+t $\ast$\mbox{\hyperlink{classutl_1_1istreamdev__it_ad5ad8b543316b11bcc551a03a19296a7}{owner}}=nullptr, \mbox{\hyperlink{classutl_1_1istreamdev__it_a343602446a76ddc893b8420a0ec73098}{Cursor}} \mbox{\hyperlink{classutl_1_1istreamdev__it_a01ffeaa95a2b4b90f48505c38f35e024}{cursor}}=\mbox{\hyperlink{classutl_1_1istreamdev__it_a343602446a76ddc893b8420a0ec73098a5d43103cca12a6712ebf6d8118f46ec2}{eos}}) noexcept +\begin{DoxyCompactList}\small\item\em Basic constructor. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1istreamdev__it_af60899a30cdbcbb9c18a13daa3d1bafb}{istreamdev\+\_\+it}} (const \mbox{\hyperlink{classutl_1_1istreamdev__it}{iterator\+\_\+t}} \&it) noexcept +\begin{DoxyCompactList}\small\item\em Basic copy constructor. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1istreamdev__it}{iterator\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1istreamdev__it_a93400479ad3e318df06880c7d116e2fb}{operator=}} (const \mbox{\hyperlink{classutl_1_1istreamdev__it}{iterator\+\_\+t}} \&it) noexcept +\begin{DoxyCompactList}\small\item\em Basic copy assignment operator. \end{DoxyCompactList}\end{DoxyCompactItemize} +\end{Indent} +\begin{Indent}\textbf{ Public interface}\par +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classutl_1_1istreamdev__it_a2c86d97ea181d403018078c7bcd85a7d}{value\+\_\+type}} \& \mbox{\hyperlink{classutl_1_1istreamdev__it_a39299e20b2ec7e21099525e4fa458a08}{operator$\ast$}} () noexcept +\item +\mbox{\hyperlink{classutl_1_1istreamdev__it_a2c86d97ea181d403018078c7bcd85a7d}{value\+\_\+type}} $\ast$ \mbox{\hyperlink{classutl_1_1istreamdev__it_adf6eafdc0973dbc1a71992ae8914c9dd}{operator-\/$>$}} () noexcept +\item +\mbox{\hyperlink{classutl_1_1istreamdev__it}{iterator\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1istreamdev__it_abe06c7d5a4fc488804291bdb29d16816}{operator++}} () noexcept +\item +\mbox{\hyperlink{classutl_1_1istreamdev__it}{iterator\+\_\+t}} \mbox{\hyperlink{classutl_1_1istreamdev__it_a9c04a21ce549fc67f306664c90b1f874}{operator++}} (int) noexcept +\item +const cont\+\_\+t $\ast$ \mbox{\hyperlink{classutl_1_1istreamdev__it_ad5ad8b543316b11bcc551a03a19296a7}{owner}} () const noexcept +\begin{DoxyCompactList}\small\item\em Export container for comparison. \end{DoxyCompactList}\item +const \mbox{\hyperlink{classutl_1_1istreamdev__it_a2c86d97ea181d403018078c7bcd85a7d}{value\+\_\+type}} \& \mbox{\hyperlink{classutl_1_1istreamdev__it_a8e5b98093c55cb57e3179ff9025389fb}{value}} () const noexcept +\begin{DoxyCompactList}\small\item\em Export value for comparison. \end{DoxyCompactList}\item +const \mbox{\hyperlink{classutl_1_1istreamdev__it_a343602446a76ddc893b8420a0ec73098}{Cursor}} \mbox{\hyperlink{classutl_1_1istreamdev__it_a01ffeaa95a2b4b90f48505c38f35e024}{cursor}} () const noexcept +\begin{DoxyCompactList}\small\item\em Export cursor for comparison. \end{DoxyCompactList}\end{DoxyCompactItemize} +\end{Indent} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename cont\+\_\+t, typename data\+\_\+t$>$\newline +class utl\+::istreamdev\+\_\+it$<$ cont\+\_\+t, data\+\_\+t $>$} + + + +Definition at line 128 of file dev\+\_\+iterators.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{classutl_1_1istreamdev__it_ae74eb71649f6d9d6c758477d5a729464}\label{classutl_1_1istreamdev__it_ae74eb71649f6d9d6c758477d5a729464}} +\index{utl\+::istreamdev\+\_\+it@{utl\+::istreamdev\+\_\+it}!difference\+\_\+type@{difference\+\_\+type}} +\index{difference\+\_\+type@{difference\+\_\+type}!utl\+::istreamdev\+\_\+it@{utl\+::istreamdev\+\_\+it}} +\subsubsection{\texorpdfstring{difference\+\_\+type}{difference\_type}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename data\+\_\+t$>$ \\ +using \mbox{\hyperlink{classutl_1_1istreamdev__it}{utl\+::istreamdev\+\_\+it}}$<$ cont\+\_\+t, data\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1istreamdev__it_ae74eb71649f6d9d6c758477d5a729464}{difference\+\_\+type}} = typename \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{dev\+\_\+iterator\+\_\+traits}} $<$std\+::output\+\_\+iterator\+\_\+tag, data\+\_\+t, void$>$\+::\mbox{\hyperlink{classutl_1_1istreamdev__it_ae74eb71649f6d9d6c758477d5a729464}{difference\+\_\+type}}} + + + +Definition at line 137 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1istreamdev__it_ab9f273d2adc8c4fbc4d2e0a52346de89}\label{classutl_1_1istreamdev__it_ab9f273d2adc8c4fbc4d2e0a52346de89}} +\index{utl\+::istreamdev\+\_\+it@{utl\+::istreamdev\+\_\+it}!iterator\+\_\+category@{iterator\+\_\+category}} +\index{iterator\+\_\+category@{iterator\+\_\+category}!utl\+::istreamdev\+\_\+it@{utl\+::istreamdev\+\_\+it}} +\subsubsection{\texorpdfstring{iterator\+\_\+category}{iterator\_category}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename data\+\_\+t$>$ \\ +using \mbox{\hyperlink{classutl_1_1istreamdev__it}{utl\+::istreamdev\+\_\+it}}$<$ cont\+\_\+t, data\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1istreamdev__it_ab9f273d2adc8c4fbc4d2e0a52346de89}{iterator\+\_\+category}} = typename \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{dev\+\_\+iterator\+\_\+traits}} $<$std\+::output\+\_\+iterator\+\_\+tag, data\+\_\+t, void$>$\+::\mbox{\hyperlink{classutl_1_1istreamdev__it_ab9f273d2adc8c4fbc4d2e0a52346de89}{iterator\+\_\+category}}} + +S\+TL iterator traits \char`\"{}forwarding\char`\"{} + +Definition at line 135 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1istreamdev__it_abc9731045fe1cf2639a91cfc6040114f}\label{classutl_1_1istreamdev__it_abc9731045fe1cf2639a91cfc6040114f}} +\index{utl\+::istreamdev\+\_\+it@{utl\+::istreamdev\+\_\+it}!pointer@{pointer}} +\index{pointer@{pointer}!utl\+::istreamdev\+\_\+it@{utl\+::istreamdev\+\_\+it}} +\subsubsection{\texorpdfstring{pointer}{pointer}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename data\+\_\+t$>$ \\ +using \mbox{\hyperlink{classutl_1_1istreamdev__it}{utl\+::istreamdev\+\_\+it}}$<$ cont\+\_\+t, data\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1istreamdev__it_abc9731045fe1cf2639a91cfc6040114f}{pointer}} = typename \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{dev\+\_\+iterator\+\_\+traits}} $<$std\+::output\+\_\+iterator\+\_\+tag, data\+\_\+t, void$>$\+::\mbox{\hyperlink{classutl_1_1istreamdev__it_abc9731045fe1cf2639a91cfc6040114f}{pointer}}} + + + +Definition at line 138 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1istreamdev__it_a824851507bcd0dbaf6e1f7c54dffccae}\label{classutl_1_1istreamdev__it_a824851507bcd0dbaf6e1f7c54dffccae}} +\index{utl\+::istreamdev\+\_\+it@{utl\+::istreamdev\+\_\+it}!reference@{reference}} +\index{reference@{reference}!utl\+::istreamdev\+\_\+it@{utl\+::istreamdev\+\_\+it}} +\subsubsection{\texorpdfstring{reference}{reference}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename data\+\_\+t$>$ \\ +using \mbox{\hyperlink{classutl_1_1istreamdev__it}{utl\+::istreamdev\+\_\+it}}$<$ cont\+\_\+t, data\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1istreamdev__it_a824851507bcd0dbaf6e1f7c54dffccae}{reference}} = typename \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{dev\+\_\+iterator\+\_\+traits}} $<$std\+::output\+\_\+iterator\+\_\+tag, data\+\_\+t, void$>$\+::\mbox{\hyperlink{classutl_1_1istreamdev__it_a824851507bcd0dbaf6e1f7c54dffccae}{reference}}} + + + +Definition at line 139 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1istreamdev__it_a1d7d245bb3b6397af354604448550fe3}\label{classutl_1_1istreamdev__it_a1d7d245bb3b6397af354604448550fe3}} +\index{utl\+::istreamdev\+\_\+it@{utl\+::istreamdev\+\_\+it}!type@{type}} +\index{type@{type}!utl\+::istreamdev\+\_\+it@{utl\+::istreamdev\+\_\+it}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename data\+\_\+t$>$ \\ +using \mbox{\hyperlink{classutl_1_1istreamdev__it}{utl\+::istreamdev\+\_\+it}}$<$ cont\+\_\+t, data\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1istreamdev__it_a1d7d245bb3b6397af354604448550fe3}{type}} = \mbox{\hyperlink{classutl_1_1istreamdev__it}{iterator\+\_\+t}}} + +Export type as identity meta-\/function + +Definition at line 131 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1istreamdev__it_a2c86d97ea181d403018078c7bcd85a7d}\label{classutl_1_1istreamdev__it_a2c86d97ea181d403018078c7bcd85a7d}} +\index{utl\+::istreamdev\+\_\+it@{utl\+::istreamdev\+\_\+it}!value\+\_\+type@{value\+\_\+type}} +\index{value\+\_\+type@{value\+\_\+type}!utl\+::istreamdev\+\_\+it@{utl\+::istreamdev\+\_\+it}} +\subsubsection{\texorpdfstring{value\+\_\+type}{value\_type}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename data\+\_\+t$>$ \\ +using \mbox{\hyperlink{classutl_1_1istreamdev__it}{utl\+::istreamdev\+\_\+it}}$<$ cont\+\_\+t, data\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1istreamdev__it_a2c86d97ea181d403018078c7bcd85a7d}{value\+\_\+type}} = typename \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{dev\+\_\+iterator\+\_\+traits}} $<$std\+::output\+\_\+iterator\+\_\+tag, data\+\_\+t, void$>$\+::\mbox{\hyperlink{classutl_1_1istreamdev__it_a2c86d97ea181d403018078c7bcd85a7d}{value\+\_\+type}}} + + + +Definition at line 136 of file dev\+\_\+iterators.\+h. + + + +\subsection{Member Enumeration Documentation} +\mbox{\Hypertarget{classutl_1_1istreamdev__it_a343602446a76ddc893b8420a0ec73098}\label{classutl_1_1istreamdev__it_a343602446a76ddc893b8420a0ec73098}} +\index{utl\+::istreamdev\+\_\+it@{utl\+::istreamdev\+\_\+it}!Cursor@{Cursor}} +\index{Cursor@{Cursor}!utl\+::istreamdev\+\_\+it@{utl\+::istreamdev\+\_\+it}} +\subsubsection{\texorpdfstring{Cursor}{Cursor}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename data\+\_\+t$>$ \\ +enum \mbox{\hyperlink{classutl_1_1istreamdev__it_a343602446a76ddc893b8420a0ec73098}{utl\+::istreamdev\+\_\+it\+::\+Cursor}}} + + + +\#define-\/like enumerator for Cursor-\/like behavior + +\begin{DoxyEnumFields}{Enumerator} +\raisebox{\heightof{T}}[0pt][0pt]{\index{init@{init}!utl\+::istreamdev\+\_\+it@{utl\+::istreamdev\+\_\+it}}\index{utl\+::istreamdev\+\_\+it@{utl\+::istreamdev\+\_\+it}!init@{init}}}\mbox{\Hypertarget{classutl_1_1istreamdev__it_a343602446a76ddc893b8420a0ec73098acf78c8879b68ea36e14323560fb9376f}\label{classutl_1_1istreamdev__it_a343602446a76ddc893b8420a0ec73098acf78c8879b68ea36e14323560fb9376f}} +init&\\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{valid@{valid}!utl\+::istreamdev\+\_\+it@{utl\+::istreamdev\+\_\+it}}\index{utl\+::istreamdev\+\_\+it@{utl\+::istreamdev\+\_\+it}!valid@{valid}}}\mbox{\Hypertarget{classutl_1_1istreamdev__it_a343602446a76ddc893b8420a0ec73098a46b4593b1438c429ecf7725dee6deac8}\label{classutl_1_1istreamdev__it_a343602446a76ddc893b8420a0ec73098a46b4593b1438c429ecf7725dee6deac8}} +valid&\\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{eos@{eos}!utl\+::istreamdev\+\_\+it@{utl\+::istreamdev\+\_\+it}}\index{utl\+::istreamdev\+\_\+it@{utl\+::istreamdev\+\_\+it}!eos@{eos}}}\mbox{\Hypertarget{classutl_1_1istreamdev__it_a343602446a76ddc893b8420a0ec73098a5d43103cca12a6712ebf6d8118f46ec2}\label{classutl_1_1istreamdev__it_a343602446a76ddc893b8420a0ec73098a5d43103cca12a6712ebf6d8118f46ec2}} +eos&\\ +\hline + +\end{DoxyEnumFields} + + +Definition at line 142 of file dev\+\_\+iterators.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classutl_1_1istreamdev__it_a37d06e1d0e6b2dee118d1f84914f489f}\label{classutl_1_1istreamdev__it_a37d06e1d0e6b2dee118d1f84914f489f}} +\index{utl\+::istreamdev\+\_\+it@{utl\+::istreamdev\+\_\+it}!istreamdev\+\_\+it@{istreamdev\+\_\+it}} +\index{istreamdev\+\_\+it@{istreamdev\+\_\+it}!utl\+::istreamdev\+\_\+it@{utl\+::istreamdev\+\_\+it}} +\subsubsection{\texorpdfstring{istreamdev\+\_\+it()}{istreamdev\_it()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename data\+\_\+t$>$ \\ +\mbox{\hyperlink{classutl_1_1istreamdev__it}{utl\+::istreamdev\+\_\+it}}$<$ cont\+\_\+t, data\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1istreamdev__it}{istreamdev\+\_\+it}} (\begin{DoxyParamCaption}\item[{cont\+\_\+t $\ast$}]{owner = {\ttfamily nullptr}, }\item[{\mbox{\hyperlink{classutl_1_1istreamdev__it_a343602446a76ddc893b8420a0ec73098}{Cursor}}}]{cursor = {\ttfamily \mbox{\hyperlink{classutl_1_1istreamdev__it_a343602446a76ddc893b8420a0ec73098a5d43103cca12a6712ebf6d8118f46ec2}{eos}}} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Basic constructor. + + + +Definition at line 163 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1istreamdev__it_af60899a30cdbcbb9c18a13daa3d1bafb}\label{classutl_1_1istreamdev__it_af60899a30cdbcbb9c18a13daa3d1bafb}} +\index{utl\+::istreamdev\+\_\+it@{utl\+::istreamdev\+\_\+it}!istreamdev\+\_\+it@{istreamdev\+\_\+it}} +\index{istreamdev\+\_\+it@{istreamdev\+\_\+it}!utl\+::istreamdev\+\_\+it@{utl\+::istreamdev\+\_\+it}} +\subsubsection{\texorpdfstring{istreamdev\+\_\+it()}{istreamdev\_it()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename data\+\_\+t$>$ \\ +\mbox{\hyperlink{classutl_1_1istreamdev__it}{utl\+::istreamdev\+\_\+it}}$<$ cont\+\_\+t, data\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1istreamdev__it}{istreamdev\+\_\+it}} (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1istreamdev__it}{iterator\+\_\+t}} \&}]{it }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Basic copy constructor. + + + +Definition at line 168 of file dev\+\_\+iterators.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classutl_1_1istreamdev__it_a01ffeaa95a2b4b90f48505c38f35e024}\label{classutl_1_1istreamdev__it_a01ffeaa95a2b4b90f48505c38f35e024}} +\index{utl\+::istreamdev\+\_\+it@{utl\+::istreamdev\+\_\+it}!cursor@{cursor}} +\index{cursor@{cursor}!utl\+::istreamdev\+\_\+it@{utl\+::istreamdev\+\_\+it}} +\subsubsection{\texorpdfstring{cursor()}{cursor()}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename data\+\_\+t$>$ \\ +const \mbox{\hyperlink{classutl_1_1istreamdev__it_a343602446a76ddc893b8420a0ec73098}{Cursor}} \mbox{\hyperlink{classutl_1_1istreamdev__it}{utl\+::istreamdev\+\_\+it}}$<$ cont\+\_\+t, data\+\_\+t $>$\+::cursor (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Export cursor for comparison. + + + +Definition at line 208 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1istreamdev__it_a39299e20b2ec7e21099525e4fa458a08}\label{classutl_1_1istreamdev__it_a39299e20b2ec7e21099525e4fa458a08}} +\index{utl\+::istreamdev\+\_\+it@{utl\+::istreamdev\+\_\+it}!operator$\ast$@{operator$\ast$}} +\index{operator$\ast$@{operator$\ast$}!utl\+::istreamdev\+\_\+it@{utl\+::istreamdev\+\_\+it}} +\subsubsection{\texorpdfstring{operator$\ast$()}{operator*()}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename data\+\_\+t$>$ \\ +\mbox{\hyperlink{classutl_1_1istreamdev__it_a2c86d97ea181d403018078c7bcd85a7d}{value\+\_\+type}}\& \mbox{\hyperlink{classutl_1_1istreamdev__it}{utl\+::istreamdev\+\_\+it}}$<$ cont\+\_\+t, data\+\_\+t $>$\+::operator$\ast$ (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 183 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1istreamdev__it_abe06c7d5a4fc488804291bdb29d16816}\label{classutl_1_1istreamdev__it_abe06c7d5a4fc488804291bdb29d16816}} +\index{utl\+::istreamdev\+\_\+it@{utl\+::istreamdev\+\_\+it}!operator++@{operator++}} +\index{operator++@{operator++}!utl\+::istreamdev\+\_\+it@{utl\+::istreamdev\+\_\+it}} +\subsubsection{\texorpdfstring{operator++()}{operator++()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename data\+\_\+t$>$ \\ +\mbox{\hyperlink{classutl_1_1istreamdev__it}{iterator\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1istreamdev__it}{utl\+::istreamdev\+\_\+it}}$<$ cont\+\_\+t, data\+\_\+t $>$\+::operator++ (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 193 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1istreamdev__it_a9c04a21ce549fc67f306664c90b1f874}\label{classutl_1_1istreamdev__it_a9c04a21ce549fc67f306664c90b1f874}} +\index{utl\+::istreamdev\+\_\+it@{utl\+::istreamdev\+\_\+it}!operator++@{operator++}} +\index{operator++@{operator++}!utl\+::istreamdev\+\_\+it@{utl\+::istreamdev\+\_\+it}} +\subsubsection{\texorpdfstring{operator++()}{operator++()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename data\+\_\+t$>$ \\ +\mbox{\hyperlink{classutl_1_1istreamdev__it}{iterator\+\_\+t}} \mbox{\hyperlink{classutl_1_1istreamdev__it}{utl\+::istreamdev\+\_\+it}}$<$ cont\+\_\+t, data\+\_\+t $>$\+::operator++ (\begin{DoxyParamCaption}\item[{int}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 197 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1istreamdev__it_adf6eafdc0973dbc1a71992ae8914c9dd}\label{classutl_1_1istreamdev__it_adf6eafdc0973dbc1a71992ae8914c9dd}} +\index{utl\+::istreamdev\+\_\+it@{utl\+::istreamdev\+\_\+it}!operator-\/$>$@{operator-\/$>$}} +\index{operator-\/$>$@{operator-\/$>$}!utl\+::istreamdev\+\_\+it@{utl\+::istreamdev\+\_\+it}} +\subsubsection{\texorpdfstring{operator-\/$>$()}{operator->()}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename data\+\_\+t$>$ \\ +\mbox{\hyperlink{classutl_1_1istreamdev__it_a2c86d97ea181d403018078c7bcd85a7d}{value\+\_\+type}}$\ast$ \mbox{\hyperlink{classutl_1_1istreamdev__it}{utl\+::istreamdev\+\_\+it}}$<$ cont\+\_\+t, data\+\_\+t $>$\+::operator-\/$>$ (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 188 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1istreamdev__it_a93400479ad3e318df06880c7d116e2fb}\label{classutl_1_1istreamdev__it_a93400479ad3e318df06880c7d116e2fb}} +\index{utl\+::istreamdev\+\_\+it@{utl\+::istreamdev\+\_\+it}!operator=@{operator=}} +\index{operator=@{operator=}!utl\+::istreamdev\+\_\+it@{utl\+::istreamdev\+\_\+it}} +\subsubsection{\texorpdfstring{operator=()}{operator=()}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename data\+\_\+t$>$ \\ +\mbox{\hyperlink{classutl_1_1istreamdev__it}{iterator\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1istreamdev__it}{utl\+::istreamdev\+\_\+it}}$<$ cont\+\_\+t, data\+\_\+t $>$\+::operator= (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1istreamdev__it}{iterator\+\_\+t}} \&}]{it }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Basic copy assignment operator. + + + +Definition at line 173 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1istreamdev__it_ad5ad8b543316b11bcc551a03a19296a7}\label{classutl_1_1istreamdev__it_ad5ad8b543316b11bcc551a03a19296a7}} +\index{utl\+::istreamdev\+\_\+it@{utl\+::istreamdev\+\_\+it}!owner@{owner}} +\index{owner@{owner}!utl\+::istreamdev\+\_\+it@{utl\+::istreamdev\+\_\+it}} +\subsubsection{\texorpdfstring{owner()}{owner()}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename data\+\_\+t$>$ \\ +const cont\+\_\+t$\ast$ \mbox{\hyperlink{classutl_1_1istreamdev__it}{utl\+::istreamdev\+\_\+it}}$<$ cont\+\_\+t, data\+\_\+t $>$\+::owner (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Export container for comparison. + + + +Definition at line 204 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1istreamdev__it_a8e5b98093c55cb57e3179ff9025389fb}\label{classutl_1_1istreamdev__it_a8e5b98093c55cb57e3179ff9025389fb}} +\index{utl\+::istreamdev\+\_\+it@{utl\+::istreamdev\+\_\+it}!value@{value}} +\index{value@{value}!utl\+::istreamdev\+\_\+it@{utl\+::istreamdev\+\_\+it}} +\subsubsection{\texorpdfstring{value()}{value()}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename data\+\_\+t$>$ \\ +const \mbox{\hyperlink{classutl_1_1istreamdev__it_a2c86d97ea181d403018078c7bcd85a7d}{value\+\_\+type}}\& \mbox{\hyperlink{classutl_1_1istreamdev__it}{utl\+::istreamdev\+\_\+it}}$<$ cont\+\_\+t, data\+\_\+t $>$\+::value (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Export value for comparison. + + + +Definition at line 206 of file dev\+\_\+iterators.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/dev/\mbox{\hyperlink{dev__iterators_8h}{dev\+\_\+iterators.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classutl_1_1ostream__dev.tex b/doc/latex/classutl_1_1ostream__dev.tex new file mode 100644 index 0000000..362a5f0 --- /dev/null +++ b/doc/latex/classutl_1_1ostream__dev.tex @@ -0,0 +1,403 @@ +\hypertarget{classutl_1_1ostream__dev}{}\section{utl\+:\+:ostream\+\_\+dev$<$ impl\+\_\+t, data\+\_\+t $>$ Class Template Reference} +\label{classutl_1_1ostream__dev}\index{utl\+::ostream\+\_\+dev$<$ impl\+\_\+t, data\+\_\+t $>$@{utl\+::ostream\+\_\+dev$<$ impl\+\_\+t, data\+\_\+t $>$}} + + +Abstract base classes for output stream devices. + + + + +{\ttfamily \#include $<$ostream\+\_\+dev.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{classutl_1_1ostream__dev_ac7169419677c70f4811803828b826351}{type}} = \mbox{\hyperlink{classutl_1_1ostream__dev}{ostream\+\_\+dev\+\_\+t}} +\begin{DoxyCompactList}\small\item\em Export type as identity meta-\/function. \end{DoxyCompactList}\end{DoxyCompactItemize} +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{classutl_1_1ostream__dev_af333211e6a4c20b86c35a1d4fd15b9c5}{data\+\_\+type}} = data\+\_\+t +\item +using \mbox{\hyperlink{classutl_1_1ostream__dev_a4d60fb31555306bf52a88889db1c8739}{pointer\+\_\+type}} = data\+\_\+t $\ast$ +\end{DoxyCompactItemize} + +\subsection*{Public Member Functions} +\begin{Indent}\textbf{ Common output device interface}\par +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1ostream__dev_a70a8d008d93a5a3f50de63dc70b7b4e4}{put}} (const data\+\_\+t \&data) +\begin{DoxyCompactList}\small\item\em Put interface. This function should send a single data\+\_\+t object to device. \end{DoxyCompactList}\item +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1ostream__dev_a29f2cad2b83c801cfdab235c880e528b}{put}} (const data\+\_\+t $\ast$data, \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} n) +\begin{DoxyCompactList}\small\item\em Put interface. This function should send a stream of data\+\_\+t objects to device. \end{DoxyCompactList}\end{DoxyCompactItemize} +\end{Indent} +\begin{Indent}\textbf{ Stream operator $<$$<$ interface}\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename \+\_\+\+Src\+\_\+t $>$ }\\\mbox{\hyperlink{classutl_1_1ostream__dev}{ostream\+\_\+dev\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1ostream__dev_a4ab9729e2a50b797bcd939c840685b48}{operator$<$$<$}} (const \+\_\+\+Src\+\_\+t \&src) +\begin{DoxyCompactList}\small\item\em Template operator$<$$<$ implementation for for all by value/ref parameters. \end{DoxyCompactList}\item +{\footnotesize template$<$typename \+\_\+\+Src\+\_\+t $>$ }\\\mbox{\hyperlink{classutl_1_1ostream__dev}{ostream\+\_\+dev\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1ostream__dev_a17b6362ea015437b1cd3f4b9122c4e35}{operator$<$$<$}} (\+\_\+\+Src\+\_\+t $\ast$src)=delete +\begin{DoxyCompactList}\small\item\em Overload to disallow pointer types as source. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1ostream__dev}{ostream\+\_\+dev\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1ostream__dev_a776a690023246345f1af2991f1b3b206}{operator$<$$<$}} (const data\+\_\+t \&src) +\begin{DoxyCompactList}\small\item\em Overload for single data\+\_\+t object. \end{DoxyCompactList}\end{DoxyCompactItemize} +\end{Indent} +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classutl_1_1ostream__dev_a38ce53a3ec7a902bdcbd9dc04350b903}{iterator}} \mbox{\hyperlink{classutl_1_1ostream__dev_a3d2f837c438b1a97ec14384ba3382090}{end}} () noexcept +\item +\mbox{\hyperlink{classutl_1_1ostream__dev_a04f153a089085daceda6a55854789a95}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1ostream__dev_af836e2bdffe1829593d889f98a35a726}{end}} () const noexcept +\item +\mbox{\hyperlink{classutl_1_1ostream__dev_a04f153a089085daceda6a55854789a95}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1ostream__dev_a90d454a509be230af0595e5a57e91f56}{cend}} () const noexcept +\end{DoxyCompactItemize} + +\subsection*{Protected Member Functions} +\begin{Indent}\textbf{ Constructor / Destructor}\par +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classutl_1_1ostream__dev_ad0358c1b879818118e745da164d99998}{$\sim$ostream\+\_\+dev}} ()=default +\begin{DoxyCompactList}\small\item\em Allow destructor from derived only. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1ostream__dev_a6bb520cb5397ab9f7579c868311017b5}{ostream\+\_\+dev}} ()=default +\begin{DoxyCompactList}\small\item\em A default constructor from derived only. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1ostream__dev_afdb03e10c54fa5d079f59b0bb938c82c}{ostream\+\_\+dev}} (const \mbox{\hyperlink{classutl_1_1ostream__dev}{ostream\+\_\+dev\+\_\+t}} \&)=delete +\begin{DoxyCompactList}\small\item\em No copies. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1ostream__dev}{ostream\+\_\+dev\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1ostream__dev_a385318ff45d575ec92801f7c0e29e9c8}{operator=}} (const \mbox{\hyperlink{classutl_1_1ostream__dev}{ostream\+\_\+dev\+\_\+t}} \&)=delete +\end{DoxyCompactItemize} +\end{Indent} +\subsection*{S\+T\+L-\/like Output iterator interface} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{classutl_1_1ostream__dev_a38ce53a3ec7a902bdcbd9dc04350b903}{iterator}} = \mbox{\hyperlink{classutl_1_1ostreamdev__it}{ostreamdev\+\_\+it}}$<$ \mbox{\hyperlink{classutl_1_1ostream__dev}{ostream\+\_\+dev\+\_\+t}}, data\+\_\+t $>$ +\begin{DoxyCompactList}\small\item\em Iterator. \end{DoxyCompactList}\item +using \mbox{\hyperlink{classutl_1_1ostream__dev_a04f153a089085daceda6a55854789a95}{const\+\_\+iterator}} = \mbox{\hyperlink{classutl_1_1ostreamdev__it}{ostreamdev\+\_\+it}}$<$ const \mbox{\hyperlink{classutl_1_1ostream__dev}{ostream\+\_\+dev\+\_\+t}}, data\+\_\+t $>$ +\begin{DoxyCompactList}\small\item\em Const iterator. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1ostream__dev_a38ce53a3ec7a902bdcbd9dc04350b903}{iterator}} \mbox{\hyperlink{classutl_1_1ostream__dev_a313cc3aada490c2d2641d6bdac559748}{begin}} () noexcept +\begin{DoxyCompactList}\small\item\em .begin implementation \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1ostream__dev_a04f153a089085daceda6a55854789a95}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1ostream__dev_aa541b838442aaf7693d528dabd049790}{begin}} () const noexcept +\item +\mbox{\hyperlink{classutl_1_1ostream__dev_a04f153a089085daceda6a55854789a95}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1ostream__dev_adad6881acafe06f05545364b3bb3941c}{cbegin}} () const noexcept +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename impl\+\_\+t, typename data\+\_\+t$>$\newline +class utl\+::ostream\+\_\+dev$<$ impl\+\_\+t, data\+\_\+t $>$} + +Abstract base classes for output stream devices. + +Template base class for output stream devices using C\+R\+TP + +This class force a common interface for output stream devices. By using this common interface the class implements +\begin{DoxyItemize} +\item Stream-\/like inserting operator +\item Output iterator +\item Const output iterator to inherit to implementation. +\end{DoxyItemize} + + +\begin{DoxyParams}{Parameters} +{\em impl\+\_\+t} & The C\+R\+TP type (the derived/implementation class typename). \\ +\hline +{\em data\+\_\+t} & The devices base type of data \\ +\hline +\end{DoxyParams} + + +Definition at line 52 of file ostream\+\_\+dev.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{classutl_1_1ostream__dev_a04f153a089085daceda6a55854789a95}\label{classutl_1_1ostream__dev_a04f153a089085daceda6a55854789a95}} +\index{utl\+::ostream\+\_\+dev@{utl\+::ostream\+\_\+dev}!const\+\_\+iterator@{const\+\_\+iterator}} +\index{const\+\_\+iterator@{const\+\_\+iterator}!utl\+::ostream\+\_\+dev@{utl\+::ostream\+\_\+dev}} +\subsubsection{\texorpdfstring{const\+\_\+iterator}{const\_iterator}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t, typename data\+\_\+t$>$ \\ +using \mbox{\hyperlink{classutl_1_1ostream__dev}{utl\+::ostream\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1ostream__dev_a04f153a089085daceda6a55854789a95}{const\+\_\+iterator}} = \mbox{\hyperlink{classutl_1_1ostreamdev__it}{ostreamdev\+\_\+it}} $<$const \mbox{\hyperlink{classutl_1_1ostream__dev}{ostream\+\_\+dev\+\_\+t}}, data\+\_\+t$>$} + + + +Const iterator. + + + +Definition at line 151 of file ostream\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1ostream__dev_af333211e6a4c20b86c35a1d4fd15b9c5}\label{classutl_1_1ostream__dev_af333211e6a4c20b86c35a1d4fd15b9c5}} +\index{utl\+::ostream\+\_\+dev@{utl\+::ostream\+\_\+dev}!data\+\_\+type@{data\+\_\+type}} +\index{data\+\_\+type@{data\+\_\+type}!utl\+::ostream\+\_\+dev@{utl\+::ostream\+\_\+dev}} +\subsubsection{\texorpdfstring{data\+\_\+type}{data\_type}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t, typename data\+\_\+t$>$ \\ +using \mbox{\hyperlink{classutl_1_1ostream__dev}{utl\+::ostream\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1ostream__dev_af333211e6a4c20b86c35a1d4fd15b9c5}{data\+\_\+type}} = data\+\_\+t} + +Export types as output device concept demands + +Definition at line 59 of file ostream\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1ostream__dev_a38ce53a3ec7a902bdcbd9dc04350b903}\label{classutl_1_1ostream__dev_a38ce53a3ec7a902bdcbd9dc04350b903}} +\index{utl\+::ostream\+\_\+dev@{utl\+::ostream\+\_\+dev}!iterator@{iterator}} +\index{iterator@{iterator}!utl\+::ostream\+\_\+dev@{utl\+::ostream\+\_\+dev}} +\subsubsection{\texorpdfstring{iterator}{iterator}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t, typename data\+\_\+t$>$ \\ +using \mbox{\hyperlink{classutl_1_1ostream__dev}{utl\+::ostream\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1ostream__dev_a38ce53a3ec7a902bdcbd9dc04350b903}{iterator}} = \mbox{\hyperlink{classutl_1_1ostreamdev__it}{ostreamdev\+\_\+it}} $<$\mbox{\hyperlink{classutl_1_1ostream__dev}{ostream\+\_\+dev\+\_\+t}}, data\+\_\+t$>$} + + + +Iterator. + + + +Definition at line 150 of file ostream\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1ostream__dev_a4d60fb31555306bf52a88889db1c8739}\label{classutl_1_1ostream__dev_a4d60fb31555306bf52a88889db1c8739}} +\index{utl\+::ostream\+\_\+dev@{utl\+::ostream\+\_\+dev}!pointer\+\_\+type@{pointer\+\_\+type}} +\index{pointer\+\_\+type@{pointer\+\_\+type}!utl\+::ostream\+\_\+dev@{utl\+::ostream\+\_\+dev}} +\subsubsection{\texorpdfstring{pointer\+\_\+type}{pointer\_type}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t, typename data\+\_\+t$>$ \\ +using \mbox{\hyperlink{classutl_1_1ostream__dev}{utl\+::ostream\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1ostream__dev_a4d60fb31555306bf52a88889db1c8739}{pointer\+\_\+type}} = data\+\_\+t$\ast$} + + + +Definition at line 60 of file ostream\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1ostream__dev_ac7169419677c70f4811803828b826351}\label{classutl_1_1ostream__dev_ac7169419677c70f4811803828b826351}} +\index{utl\+::ostream\+\_\+dev@{utl\+::ostream\+\_\+dev}!type@{type}} +\index{type@{type}!utl\+::ostream\+\_\+dev@{utl\+::ostream\+\_\+dev}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t, typename data\+\_\+t$>$ \\ +using \mbox{\hyperlink{classutl_1_1ostream__dev}{utl\+::ostream\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1ostream__dev_ac7169419677c70f4811803828b826351}{type}} = \mbox{\hyperlink{classutl_1_1ostream__dev}{ostream\+\_\+dev\+\_\+t}}} + + + +Export type as identity meta-\/function. + + + +Definition at line 62 of file ostream\+\_\+dev.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classutl_1_1ostream__dev_ad0358c1b879818118e745da164d99998}\label{classutl_1_1ostream__dev_ad0358c1b879818118e745da164d99998}} +\index{utl\+::ostream\+\_\+dev@{utl\+::ostream\+\_\+dev}!````~ostream\+\_\+dev@{$\sim$ostream\+\_\+dev}} +\index{````~ostream\+\_\+dev@{$\sim$ostream\+\_\+dev}!utl\+::ostream\+\_\+dev@{utl\+::ostream\+\_\+dev}} +\subsubsection{\texorpdfstring{$\sim$ostream\+\_\+dev()}{~ostream\_dev()}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t, typename data\+\_\+t$>$ \\ +\mbox{\hyperlink{classutl_1_1ostream__dev}{utl\+::ostream\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t $>$\+::$\sim$\mbox{\hyperlink{classutl_1_1ostream__dev}{ostream\+\_\+dev}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [default]}} + + + +Allow destructor from derived only. + +\mbox{\Hypertarget{classutl_1_1ostream__dev_a6bb520cb5397ab9f7579c868311017b5}\label{classutl_1_1ostream__dev_a6bb520cb5397ab9f7579c868311017b5}} +\index{utl\+::ostream\+\_\+dev@{utl\+::ostream\+\_\+dev}!ostream\+\_\+dev@{ostream\+\_\+dev}} +\index{ostream\+\_\+dev@{ostream\+\_\+dev}!utl\+::ostream\+\_\+dev@{utl\+::ostream\+\_\+dev}} +\subsubsection{\texorpdfstring{ostream\+\_\+dev()}{ostream\_dev()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t, typename data\+\_\+t$>$ \\ +\mbox{\hyperlink{classutl_1_1ostream__dev}{utl\+::ostream\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1ostream__dev}{ostream\+\_\+dev}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [default]}} + + + +A default constructor from derived only. + +\mbox{\Hypertarget{classutl_1_1ostream__dev_afdb03e10c54fa5d079f59b0bb938c82c}\label{classutl_1_1ostream__dev_afdb03e10c54fa5d079f59b0bb938c82c}} +\index{utl\+::ostream\+\_\+dev@{utl\+::ostream\+\_\+dev}!ostream\+\_\+dev@{ostream\+\_\+dev}} +\index{ostream\+\_\+dev@{ostream\+\_\+dev}!utl\+::ostream\+\_\+dev@{utl\+::ostream\+\_\+dev}} +\subsubsection{\texorpdfstring{ostream\+\_\+dev()}{ostream\_dev()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t, typename data\+\_\+t$>$ \\ +\mbox{\hyperlink{classutl_1_1ostream__dev}{utl\+::ostream\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1ostream__dev}{ostream\+\_\+dev}} (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1ostream__dev}{ostream\+\_\+dev\+\_\+t}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [delete]}} + + + +No copies. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classutl_1_1ostream__dev_a313cc3aada490c2d2641d6bdac559748}\label{classutl_1_1ostream__dev_a313cc3aada490c2d2641d6bdac559748}} +\index{utl\+::ostream\+\_\+dev@{utl\+::ostream\+\_\+dev}!begin@{begin}} +\index{begin@{begin}!utl\+::ostream\+\_\+dev@{utl\+::ostream\+\_\+dev}} +\subsubsection{\texorpdfstring{begin()}{begin()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t, typename data\+\_\+t$>$ \\ +\mbox{\hyperlink{classutl_1_1ostream__dev_a38ce53a3ec7a902bdcbd9dc04350b903}{iterator}} \mbox{\hyperlink{classutl_1_1ostream__dev}{utl\+::ostream\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t $>$\+::begin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +.begin implementation + + + +Definition at line 154 of file ostream\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1ostream__dev_aa541b838442aaf7693d528dabd049790}\label{classutl_1_1ostream__dev_aa541b838442aaf7693d528dabd049790}} +\index{utl\+::ostream\+\_\+dev@{utl\+::ostream\+\_\+dev}!begin@{begin}} +\index{begin@{begin}!utl\+::ostream\+\_\+dev@{utl\+::ostream\+\_\+dev}} +\subsubsection{\texorpdfstring{begin()}{begin()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t, typename data\+\_\+t$>$ \\ +\mbox{\hyperlink{classutl_1_1ostream__dev_a04f153a089085daceda6a55854789a95}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1ostream__dev}{utl\+::ostream\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t $>$\+::begin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 155 of file ostream\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1ostream__dev_adad6881acafe06f05545364b3bb3941c}\label{classutl_1_1ostream__dev_adad6881acafe06f05545364b3bb3941c}} +\index{utl\+::ostream\+\_\+dev@{utl\+::ostream\+\_\+dev}!cbegin@{cbegin}} +\index{cbegin@{cbegin}!utl\+::ostream\+\_\+dev@{utl\+::ostream\+\_\+dev}} +\subsubsection{\texorpdfstring{cbegin()}{cbegin()}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t, typename data\+\_\+t$>$ \\ +\mbox{\hyperlink{classutl_1_1ostream__dev_a04f153a089085daceda6a55854789a95}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1ostream__dev}{utl\+::ostream\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t $>$\+::cbegin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 156 of file ostream\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1ostream__dev_a90d454a509be230af0595e5a57e91f56}\label{classutl_1_1ostream__dev_a90d454a509be230af0595e5a57e91f56}} +\index{utl\+::ostream\+\_\+dev@{utl\+::ostream\+\_\+dev}!cend@{cend}} +\index{cend@{cend}!utl\+::ostream\+\_\+dev@{utl\+::ostream\+\_\+dev}} +\subsubsection{\texorpdfstring{cend()}{cend()}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t, typename data\+\_\+t$>$ \\ +\mbox{\hyperlink{classutl_1_1ostream__dev_a04f153a089085daceda6a55854789a95}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1ostream__dev}{utl\+::ostream\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t $>$\+::cend (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 161 of file ostream\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1ostream__dev_a3d2f837c438b1a97ec14384ba3382090}\label{classutl_1_1ostream__dev_a3d2f837c438b1a97ec14384ba3382090}} +\index{utl\+::ostream\+\_\+dev@{utl\+::ostream\+\_\+dev}!end@{end}} +\index{end@{end}!utl\+::ostream\+\_\+dev@{utl\+::ostream\+\_\+dev}} +\subsubsection{\texorpdfstring{end()}{end()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t, typename data\+\_\+t$>$ \\ +\mbox{\hyperlink{classutl_1_1ostream__dev_a38ce53a3ec7a902bdcbd9dc04350b903}{iterator}} \mbox{\hyperlink{classutl_1_1ostream__dev}{utl\+::ostream\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t $>$\+::end (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + +.end implementation + +Definition at line 159 of file ostream\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1ostream__dev_af836e2bdffe1829593d889f98a35a726}\label{classutl_1_1ostream__dev_af836e2bdffe1829593d889f98a35a726}} +\index{utl\+::ostream\+\_\+dev@{utl\+::ostream\+\_\+dev}!end@{end}} +\index{end@{end}!utl\+::ostream\+\_\+dev@{utl\+::ostream\+\_\+dev}} +\subsubsection{\texorpdfstring{end()}{end()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t, typename data\+\_\+t$>$ \\ +\mbox{\hyperlink{classutl_1_1ostream__dev_a04f153a089085daceda6a55854789a95}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1ostream__dev}{utl\+::ostream\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t $>$\+::end (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 160 of file ostream\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1ostream__dev_a4ab9729e2a50b797bcd939c840685b48}\label{classutl_1_1ostream__dev_a4ab9729e2a50b797bcd939c840685b48}} +\index{utl\+::ostream\+\_\+dev@{utl\+::ostream\+\_\+dev}!operator$<$$<$@{operator$<$$<$}} +\index{operator$<$$<$@{operator$<$$<$}!utl\+::ostream\+\_\+dev@{utl\+::ostream\+\_\+dev}} +\subsubsection{\texorpdfstring{operator$<$$<$()}{operator<<()}\hspace{0.1cm}{\footnotesize\ttfamily [1/3]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t, typename data\+\_\+t$>$ \\ +template$<$typename \+\_\+\+Src\+\_\+t $>$ \\ +\mbox{\hyperlink{classutl_1_1ostream__dev}{ostream\+\_\+dev\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1ostream__dev}{utl\+::ostream\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t $>$\+::operator$<$$<$ (\begin{DoxyParamCaption}\item[{const \+\_\+\+Src\+\_\+t \&}]{src }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Template operator$<$$<$ implementation for for all by value/ref parameters. + +\begin{DoxyNote}{Note} +In the case \+\_\+\+Src\+\_\+t size is not an exact multiple of data\+\_\+t size the write data will be truncated and there may be data loss. +\end{DoxyNote} + +\begin{DoxyParams}{Parameters} +{\em src} & Reference to source data \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +Reference to this device for chaining +\end{DoxyReturn} + + +Definition at line 128 of file ostream\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1ostream__dev_a17b6362ea015437b1cd3f4b9122c4e35}\label{classutl_1_1ostream__dev_a17b6362ea015437b1cd3f4b9122c4e35}} +\index{utl\+::ostream\+\_\+dev@{utl\+::ostream\+\_\+dev}!operator$<$$<$@{operator$<$$<$}} +\index{operator$<$$<$@{operator$<$$<$}!utl\+::ostream\+\_\+dev@{utl\+::ostream\+\_\+dev}} +\subsubsection{\texorpdfstring{operator$<$$<$()}{operator<<()}\hspace{0.1cm}{\footnotesize\ttfamily [2/3]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t, typename data\+\_\+t$>$ \\ +template$<$typename \+\_\+\+Src\+\_\+t $>$ \\ +\mbox{\hyperlink{classutl_1_1ostream__dev}{ostream\+\_\+dev\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1ostream__dev}{utl\+::ostream\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t $>$\+::operator$<$$<$ (\begin{DoxyParamCaption}\item[{\+\_\+\+Src\+\_\+t $\ast$}]{src }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [delete]}} + + + +Overload to disallow pointer types as source. + +\mbox{\Hypertarget{classutl_1_1ostream__dev_a776a690023246345f1af2991f1b3b206}\label{classutl_1_1ostream__dev_a776a690023246345f1af2991f1b3b206}} +\index{utl\+::ostream\+\_\+dev@{utl\+::ostream\+\_\+dev}!operator$<$$<$@{operator$<$$<$}} +\index{operator$<$$<$@{operator$<$$<$}!utl\+::ostream\+\_\+dev@{utl\+::ostream\+\_\+dev}} +\subsubsection{\texorpdfstring{operator$<$$<$()}{operator<<()}\hspace{0.1cm}{\footnotesize\ttfamily [3/3]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t, typename data\+\_\+t$>$ \\ +\mbox{\hyperlink{classutl_1_1ostream__dev}{ostream\+\_\+dev\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1ostream__dev}{utl\+::ostream\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t $>$\+::operator$<$$<$ (\begin{DoxyParamCaption}\item[{const data\+\_\+t \&}]{src }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Overload for single data\+\_\+t object. + + + +Definition at line 139 of file ostream\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1ostream__dev_a385318ff45d575ec92801f7c0e29e9c8}\label{classutl_1_1ostream__dev_a385318ff45d575ec92801f7c0e29e9c8}} +\index{utl\+::ostream\+\_\+dev@{utl\+::ostream\+\_\+dev}!operator=@{operator=}} +\index{operator=@{operator=}!utl\+::ostream\+\_\+dev@{utl\+::ostream\+\_\+dev}} +\subsubsection{\texorpdfstring{operator=()}{operator=()}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t, typename data\+\_\+t$>$ \\ +\mbox{\hyperlink{classutl_1_1ostream__dev}{ostream\+\_\+dev\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1ostream__dev}{utl\+::ostream\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t $>$\+::operator= (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1ostream__dev}{ostream\+\_\+dev\+\_\+t}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [delete]}} + +No copy assignments \mbox{\Hypertarget{classutl_1_1ostream__dev_a70a8d008d93a5a3f50de63dc70b7b4e4}\label{classutl_1_1ostream__dev_a70a8d008d93a5a3f50de63dc70b7b4e4}} +\index{utl\+::ostream\+\_\+dev@{utl\+::ostream\+\_\+dev}!put@{put}} +\index{put@{put}!utl\+::ostream\+\_\+dev@{utl\+::ostream\+\_\+dev}} +\subsubsection{\texorpdfstring{put()}{put()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t, typename data\+\_\+t$>$ \\ +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1ostream__dev}{utl\+::ostream\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t $>$\+::put (\begin{DoxyParamCaption}\item[{const data\+\_\+t \&}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Put interface. This function should send a single data\+\_\+t object to device. + + +\begin{DoxyParams}{Parameters} +{\em data} & The data to send \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +The number of transmitted data items +\end{DoxyReturn} +\begin{DoxyNote}{Note} +A successful call should return 1 +\end{DoxyNote} + + +Definition at line 96 of file ostream\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1ostream__dev_a29f2cad2b83c801cfdab235c880e528b}\label{classutl_1_1ostream__dev_a29f2cad2b83c801cfdab235c880e528b}} +\index{utl\+::ostream\+\_\+dev@{utl\+::ostream\+\_\+dev}!put@{put}} +\index{put@{put}!utl\+::ostream\+\_\+dev@{utl\+::ostream\+\_\+dev}} +\subsubsection{\texorpdfstring{put()}{put()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t, typename data\+\_\+t$>$ \\ +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1ostream__dev}{utl\+::ostream\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t $>$\+::put (\begin{DoxyParamCaption}\item[{const data\+\_\+t $\ast$}]{data, }\item[{\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}}}]{n }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Put interface. This function should send a stream of data\+\_\+t objects to device. + + +\begin{DoxyParams}{Parameters} +{\em data} & Pointer to buffer indenting write to device. \\ +\hline +{\em n} & The number of data of type data\+\_\+t to send \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +The number of transmitted items. +\end{DoxyReturn} + + +Definition at line 108 of file ostream\+\_\+dev.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/dev/\mbox{\hyperlink{ostream__dev_8h}{ostream\+\_\+dev.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.tex b/doc/latex/classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.tex new file mode 100644 index 0000000..6eec99d --- /dev/null +++ b/doc/latex/classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4.tex @@ -0,0 +1,378 @@ +\hypertarget{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4}{}\section{utl\+:\+:ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$ Class Template Reference} +\label{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4}\index{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$@{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$}} + + +{\ttfamily \#include $<$ostream\+\_\+dev.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_aa3cb961a80a8dee210e9ab9ffd2483ee}{type}} = \mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4}{ostream\+\_\+dev\+\_\+t}} +\begin{DoxyCompactList}\small\item\em Export type as identity meta-\/function. \end{DoxyCompactList}\end{DoxyCompactItemize} +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_a0c182d46215479ac0169c741db773f3b}{data\+\_\+type}} = data\+\_\+t +\item +using \mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_a2186444525589e2e06fdf947b238b785}{pointer\+\_\+type}} = data\+\_\+t $\ast$ +\end{DoxyCompactItemize} + +\subsection*{Public Member Functions} +\begin{Indent}\textbf{ Common output device interface}\par +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_aaee696bf560e084e61b4fb0217569d1a}{put}} (const data\+\_\+t \&data) +\begin{DoxyCompactList}\small\item\em Put interface. This function should send a single data\+\_\+t object to device. \end{DoxyCompactList}\item +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_a8014501f6c22a8dc0a366898e92fa83c}{put}} (const data\+\_\+t $\ast$data, \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} n) +\begin{DoxyCompactList}\small\item\em Put interface. This function should send a stream of data\+\_\+t objects to device. \end{DoxyCompactList}\end{DoxyCompactItemize} +\end{Indent} +\begin{Indent}\textbf{ Stream operator $<$$<$ interface}\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename \+\_\+\+Src\+\_\+t $>$ }\\\mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4}{ostream\+\_\+dev\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_a9761a89cc6f5f57529fd7f686350a221}{operator$<$$<$}} (const \+\_\+\+Src\+\_\+t \&src) +\begin{DoxyCompactList}\small\item\em Template operator$<$$<$ implementation for for all by value/ref parameters. \end{DoxyCompactList}\item +{\footnotesize template$<$typename \+\_\+\+Src\+\_\+t $>$ }\\\mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4}{ostream\+\_\+dev\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_aeedb13f9949b3cc31fede903553c0a05}{operator$<$$<$}} (\+\_\+\+Src\+\_\+t $\ast$src)=delete +\begin{DoxyCompactList}\small\item\em Overload to disallow pointer types as source. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4}{ostream\+\_\+dev\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_a767095b8efcafd7cb50c065b1c781146}{operator$<$$<$}} (const data\+\_\+t \&src) +\begin{DoxyCompactList}\small\item\em Overload for single data\+\_\+t object. \end{DoxyCompactList}\end{DoxyCompactItemize} +\end{Indent} +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_aa440d7490da956cfe91f2835191056a4}{iterator}} \mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_a853552686bba8432a6f53a9c21f83ac2}{end}} () noexcept +\item +\mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_abcb00d6a76ac3baa46283c631c020b9c}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_a8ea06a012f2d55f67421026116000337}{end}} () const noexcept +\item +\mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_abcb00d6a76ac3baa46283c631c020b9c}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_a7a883628b71791d0f26a47f9d801543d}{cend}} () const noexcept +\end{DoxyCompactItemize} + +\subsection*{Constructor / Destructor} +\begin{DoxyCompactItemize} +\item +virtual \mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_ac653594be9325b740b6ded465de6d639}{$\sim$ostream\+\_\+dev}} ()=default +\begin{DoxyCompactList}\small\item\em Virtual destructor. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_a977d2f5eb87ae8b301921542be350a93}{ostream\+\_\+dev}} ()=default +\begin{DoxyCompactList}\small\item\em A default constructor from derived only. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_a0662ca7855b82a14b50d48a710c64709}{ostream\+\_\+dev}} (const \mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4}{ostream\+\_\+dev\+\_\+t}} \&)=delete +\begin{DoxyCompactList}\small\item\em No copies. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4}{ostream\+\_\+dev\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_a013bfe883ab1f72c3d19678227072178}{operator=}} (const \mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4}{ostream\+\_\+dev\+\_\+t}} \&)=delete +\end{DoxyCompactItemize} +\subsection*{S\+T\+L-\/like Output iterator interface} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_aa440d7490da956cfe91f2835191056a4}{iterator}} = \mbox{\hyperlink{classutl_1_1ostreamdev__it}{ostreamdev\+\_\+it}}$<$ \mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4}{ostream\+\_\+dev\+\_\+t}}, data\+\_\+t $>$ +\begin{DoxyCompactList}\small\item\em Iterator. \end{DoxyCompactList}\item +using \mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_abcb00d6a76ac3baa46283c631c020b9c}{const\+\_\+iterator}} = \mbox{\hyperlink{classutl_1_1ostreamdev__it}{ostreamdev\+\_\+it}}$<$ const \mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4}{ostream\+\_\+dev\+\_\+t}}, data\+\_\+t $>$ +\begin{DoxyCompactList}\small\item\em Const iterator. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_aa440d7490da956cfe91f2835191056a4}{iterator}} \mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_ab1319beb5c2d1d84adb54c83d73d34b6}{begin}} () noexcept +\begin{DoxyCompactList}\small\item\em .begin implementation \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_abcb00d6a76ac3baa46283c631c020b9c}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_a43515a84a7f31d33a1bcc5c352ae3809}{begin}} () const noexcept +\item +\mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_abcb00d6a76ac3baa46283c631c020b9c}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_aafdd8c809f8c113ff8749d9d98ad5831}{cbegin}} () const noexcept +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename data\+\_\+t$>$\newline +class utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$} + + + +Definition at line 171 of file ostream\+\_\+dev.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_abcb00d6a76ac3baa46283c631c020b9c}\label{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_abcb00d6a76ac3baa46283c631c020b9c}} +\index{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$@{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$}!const\+\_\+iterator@{const\+\_\+iterator}} +\index{const\+\_\+iterator@{const\+\_\+iterator}!utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$@{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$}} +\subsubsection{\texorpdfstring{const\+\_\+iterator}{const\_iterator}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t $>$ \\ +using \mbox{\hyperlink{classutl_1_1ostream__dev}{utl\+::ostream\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_abcb00d6a76ac3baa46283c631c020b9c}{const\+\_\+iterator}} = \mbox{\hyperlink{classutl_1_1ostreamdev__it}{ostreamdev\+\_\+it}} $<$const \mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4}{ostream\+\_\+dev\+\_\+t}}, data\+\_\+t$>$} + + + +Const iterator. + + + +Definition at line 267 of file ostream\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_a0c182d46215479ac0169c741db773f3b}\label{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_a0c182d46215479ac0169c741db773f3b}} +\index{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$@{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$}!data\+\_\+type@{data\+\_\+type}} +\index{data\+\_\+type@{data\+\_\+type}!utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$@{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$}} +\subsubsection{\texorpdfstring{data\+\_\+type}{data\_type}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t $>$ \\ +using \mbox{\hyperlink{classutl_1_1ostream__dev}{utl\+::ostream\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_a0c182d46215479ac0169c741db773f3b}{data\+\_\+type}} = data\+\_\+t} + +Export types as output device concept demands + +Definition at line 177 of file ostream\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_aa440d7490da956cfe91f2835191056a4}\label{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_aa440d7490da956cfe91f2835191056a4}} +\index{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$@{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$}!iterator@{iterator}} +\index{iterator@{iterator}!utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$@{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$}} +\subsubsection{\texorpdfstring{iterator}{iterator}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t $>$ \\ +using \mbox{\hyperlink{classutl_1_1ostream__dev}{utl\+::ostream\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_aa440d7490da956cfe91f2835191056a4}{iterator}} = \mbox{\hyperlink{classutl_1_1ostreamdev__it}{ostreamdev\+\_\+it}} $<$\mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4}{ostream\+\_\+dev\+\_\+t}}, data\+\_\+t$>$} + + + +Iterator. + + + +Definition at line 266 of file ostream\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_a2186444525589e2e06fdf947b238b785}\label{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_a2186444525589e2e06fdf947b238b785}} +\index{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$@{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$}!pointer\+\_\+type@{pointer\+\_\+type}} +\index{pointer\+\_\+type@{pointer\+\_\+type}!utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$@{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$}} +\subsubsection{\texorpdfstring{pointer\+\_\+type}{pointer\_type}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t $>$ \\ +using \mbox{\hyperlink{classutl_1_1ostream__dev}{utl\+::ostream\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_a2186444525589e2e06fdf947b238b785}{pointer\+\_\+type}} = data\+\_\+t$\ast$} + + + +Definition at line 178 of file ostream\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_aa3cb961a80a8dee210e9ab9ffd2483ee}\label{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_aa3cb961a80a8dee210e9ab9ffd2483ee}} +\index{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$@{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$}!type@{type}} +\index{type@{type}!utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$@{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t $>$ \\ +using \mbox{\hyperlink{classutl_1_1ostream__dev}{utl\+::ostream\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_aa3cb961a80a8dee210e9ab9ffd2483ee}{type}} = \mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4}{ostream\+\_\+dev\+\_\+t}}} + + + +Export type as identity meta-\/function. + + + +Definition at line 180 of file ostream\+\_\+dev.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_ac653594be9325b740b6ded465de6d639}\label{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_ac653594be9325b740b6ded465de6d639}} +\index{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$@{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$}!````~ostream\+\_\+dev@{$\sim$ostream\+\_\+dev}} +\index{````~ostream\+\_\+dev@{$\sim$ostream\+\_\+dev}!utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$@{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$}} +\subsubsection{\texorpdfstring{$\sim$ostream\+\_\+dev()}{~ostream\_dev()}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t $>$ \\ +virtual \mbox{\hyperlink{classutl_1_1ostream__dev}{utl\+::ostream\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t $>$\+::$\sim$\mbox{\hyperlink{classutl_1_1ostream__dev}{ostream\+\_\+dev}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}, {\ttfamily [default]}} + + + +Virtual destructor. + +\mbox{\Hypertarget{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_a977d2f5eb87ae8b301921542be350a93}\label{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_a977d2f5eb87ae8b301921542be350a93}} +\index{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$@{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$}!ostream\+\_\+dev@{ostream\+\_\+dev}} +\index{ostream\+\_\+dev@{ostream\+\_\+dev}!utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$@{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$}} +\subsubsection{\texorpdfstring{ostream\+\_\+dev()}{ostream\_dev()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t $>$ \\ +\mbox{\hyperlink{classutl_1_1ostream__dev}{utl\+::ostream\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1ostream__dev}{ostream\+\_\+dev}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [default]}} + + + +A default constructor from derived only. + +\mbox{\Hypertarget{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_a0662ca7855b82a14b50d48a710c64709}\label{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_a0662ca7855b82a14b50d48a710c64709}} +\index{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$@{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$}!ostream\+\_\+dev@{ostream\+\_\+dev}} +\index{ostream\+\_\+dev@{ostream\+\_\+dev}!utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$@{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$}} +\subsubsection{\texorpdfstring{ostream\+\_\+dev()}{ostream\_dev()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t $>$ \\ +\mbox{\hyperlink{classutl_1_1ostream__dev}{utl\+::ostream\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1ostream__dev}{ostream\+\_\+dev}} (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4}{ostream\+\_\+dev\+\_\+t}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [delete]}} + + + +No copies. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_ab1319beb5c2d1d84adb54c83d73d34b6}\label{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_ab1319beb5c2d1d84adb54c83d73d34b6}} +\index{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$@{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$}!begin@{begin}} +\index{begin@{begin}!utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$@{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$}} +\subsubsection{\texorpdfstring{begin()}{begin()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t $>$ \\ +\mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_aa440d7490da956cfe91f2835191056a4}{iterator}} \mbox{\hyperlink{classutl_1_1ostream__dev}{utl\+::ostream\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t $>$\+::begin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +.begin implementation + + + +Definition at line 270 of file ostream\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_a43515a84a7f31d33a1bcc5c352ae3809}\label{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_a43515a84a7f31d33a1bcc5c352ae3809}} +\index{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$@{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$}!begin@{begin}} +\index{begin@{begin}!utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$@{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$}} +\subsubsection{\texorpdfstring{begin()}{begin()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t $>$ \\ +\mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_abcb00d6a76ac3baa46283c631c020b9c}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1ostream__dev}{utl\+::ostream\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t $>$\+::begin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 271 of file ostream\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_aafdd8c809f8c113ff8749d9d98ad5831}\label{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_aafdd8c809f8c113ff8749d9d98ad5831}} +\index{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$@{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$}!cbegin@{cbegin}} +\index{cbegin@{cbegin}!utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$@{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$}} +\subsubsection{\texorpdfstring{cbegin()}{cbegin()}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t $>$ \\ +\mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_abcb00d6a76ac3baa46283c631c020b9c}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1ostream__dev}{utl\+::ostream\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t $>$\+::cbegin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 272 of file ostream\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_a7a883628b71791d0f26a47f9d801543d}\label{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_a7a883628b71791d0f26a47f9d801543d}} +\index{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$@{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$}!cend@{cend}} +\index{cend@{cend}!utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$@{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$}} +\subsubsection{\texorpdfstring{cend()}{cend()}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t $>$ \\ +\mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_abcb00d6a76ac3baa46283c631c020b9c}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1ostream__dev}{utl\+::ostream\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t $>$\+::cend (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 277 of file ostream\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_a853552686bba8432a6f53a9c21f83ac2}\label{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_a853552686bba8432a6f53a9c21f83ac2}} +\index{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$@{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$}!end@{end}} +\index{end@{end}!utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$@{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$}} +\subsubsection{\texorpdfstring{end()}{end()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t $>$ \\ +\mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_aa440d7490da956cfe91f2835191056a4}{iterator}} \mbox{\hyperlink{classutl_1_1ostream__dev}{utl\+::ostream\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t $>$\+::end (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + +.end implementation + +Definition at line 275 of file ostream\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_a8ea06a012f2d55f67421026116000337}\label{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_a8ea06a012f2d55f67421026116000337}} +\index{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$@{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$}!end@{end}} +\index{end@{end}!utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$@{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$}} +\subsubsection{\texorpdfstring{end()}{end()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t $>$ \\ +\mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_abcb00d6a76ac3baa46283c631c020b9c}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1ostream__dev}{utl\+::ostream\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t $>$\+::end (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 276 of file ostream\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_a9761a89cc6f5f57529fd7f686350a221}\label{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_a9761a89cc6f5f57529fd7f686350a221}} +\index{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$@{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$}!operator$<$$<$@{operator$<$$<$}} +\index{operator$<$$<$@{operator$<$$<$}!utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$@{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$}} +\subsubsection{\texorpdfstring{operator$<$$<$()}{operator<<()}\hspace{0.1cm}{\footnotesize\ttfamily [1/3]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t $>$ \\ +template$<$typename \+\_\+\+Src\+\_\+t $>$ \\ +\mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4}{ostream\+\_\+dev\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1ostream__dev}{utl\+::ostream\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t $>$\+::operator$<$$<$ (\begin{DoxyParamCaption}\item[{const \+\_\+\+Src\+\_\+t \&}]{src }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Template operator$<$$<$ implementation for for all by value/ref parameters. + +\begin{DoxyNote}{Note} +In the case \+\_\+\+Src\+\_\+t size is not an exact multiple of data\+\_\+t size the write data will be truncated and there may be data loss. +\end{DoxyNote} + +\begin{DoxyParams}{Parameters} +{\em src} & Reference to source data \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +Reference to this device for chaining +\end{DoxyReturn} + + +Definition at line 245 of file ostream\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_aeedb13f9949b3cc31fede903553c0a05}\label{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_aeedb13f9949b3cc31fede903553c0a05}} +\index{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$@{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$}!operator$<$$<$@{operator$<$$<$}} +\index{operator$<$$<$@{operator$<$$<$}!utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$@{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$}} +\subsubsection{\texorpdfstring{operator$<$$<$()}{operator<<()}\hspace{0.1cm}{\footnotesize\ttfamily [2/3]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t $>$ \\ +template$<$typename \+\_\+\+Src\+\_\+t $>$ \\ +\mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4}{ostream\+\_\+dev\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1ostream__dev}{utl\+::ostream\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t $>$\+::operator$<$$<$ (\begin{DoxyParamCaption}\item[{\+\_\+\+Src\+\_\+t $\ast$}]{src }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [delete]}} + + + +Overload to disallow pointer types as source. + +\mbox{\Hypertarget{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_a767095b8efcafd7cb50c065b1c781146}\label{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_a767095b8efcafd7cb50c065b1c781146}} +\index{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$@{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$}!operator$<$$<$@{operator$<$$<$}} +\index{operator$<$$<$@{operator$<$$<$}!utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$@{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$}} +\subsubsection{\texorpdfstring{operator$<$$<$()}{operator<<()}\hspace{0.1cm}{\footnotesize\ttfamily [3/3]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t $>$ \\ +\mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4}{ostream\+\_\+dev\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1ostream__dev}{utl\+::ostream\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t $>$\+::operator$<$$<$ (\begin{DoxyParamCaption}\item[{const data\+\_\+t \&}]{src }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Overload for single data\+\_\+t object. + + + +Definition at line 256 of file ostream\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_a013bfe883ab1f72c3d19678227072178}\label{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_a013bfe883ab1f72c3d19678227072178}} +\index{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$@{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$}!operator=@{operator=}} +\index{operator=@{operator=}!utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$@{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$}} +\subsubsection{\texorpdfstring{operator=()}{operator=()}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t $>$ \\ +\mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4}{ostream\+\_\+dev\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1ostream__dev}{utl\+::ostream\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t $>$\+::operator= (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4}{ostream\+\_\+dev\+\_\+t}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [delete]}} + +No copy assignments \mbox{\Hypertarget{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_aaee696bf560e084e61b4fb0217569d1a}\label{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_aaee696bf560e084e61b4fb0217569d1a}} +\index{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$@{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$}!put@{put}} +\index{put@{put}!utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$@{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$}} +\subsubsection{\texorpdfstring{put()}{put()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t $>$ \\ +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1ostream__dev}{utl\+::ostream\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t $>$\+::put (\begin{DoxyParamCaption}\item[{const data\+\_\+t \&}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Put interface. This function should send a single data\+\_\+t object to device. + + +\begin{DoxyParams}{Parameters} +{\em data} & The data to send \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +The number of transmitted data items +\end{DoxyReturn} +\begin{DoxyNote}{Note} +A successful call should return 1 +\end{DoxyNote} + + +Definition at line 213 of file ostream\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_a8014501f6c22a8dc0a366898e92fa83c}\label{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4_a8014501f6c22a8dc0a366898e92fa83c}} +\index{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$@{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$}!put@{put}} +\index{put@{put}!utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$@{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$}} +\subsubsection{\texorpdfstring{put()}{put()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t $>$ \\ +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1ostream__dev}{utl\+::ostream\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t $>$\+::put (\begin{DoxyParamCaption}\item[{const data\+\_\+t $\ast$}]{data, }\item[{\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}}}]{n }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Put interface. This function should send a stream of data\+\_\+t objects to device. + + +\begin{DoxyParams}{Parameters} +{\em data} & Pointer to buffer indenting write to device. \\ +\hline +{\em n} & The number of data of type data\+\_\+t to send \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +The number of transmitted items. +\end{DoxyReturn} + + +Definition at line 225 of file ostream\+\_\+dev.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/dev/\mbox{\hyperlink{ostream__dev_8h}{ostream\+\_\+dev.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classutl_1_1ostreamdev__it.tex b/doc/latex/classutl_1_1ostreamdev__it.tex new file mode 100644 index 0000000..bae535c --- /dev/null +++ b/doc/latex/classutl_1_1ostreamdev__it.tex @@ -0,0 +1,239 @@ +\hypertarget{classutl_1_1ostreamdev__it}{}\section{utl\+:\+:ostreamdev\+\_\+it$<$ cont\+\_\+t, data\+\_\+t $>$ Class Template Reference} +\label{classutl_1_1ostreamdev__it}\index{utl\+::ostreamdev\+\_\+it$<$ cont\+\_\+t, data\+\_\+t $>$@{utl\+::ostreamdev\+\_\+it$<$ cont\+\_\+t, data\+\_\+t $>$}} + + +{\ttfamily \#include $<$dev\+\_\+iterators.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{classutl_1_1ostreamdev__it_ab5f87e036d215580e62f112f9ea1aef3}{type}} = \mbox{\hyperlink{classutl_1_1ostreamdev__it}{iterator\+\_\+t}} +\end{DoxyCompactItemize} +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{classutl_1_1ostreamdev__it_af1487479f0514fa330ef3393821932e8}{iterator\+\_\+category}} = typename \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{dev\+\_\+iterator\+\_\+traits}}$<$ std\+::output\+\_\+iterator\+\_\+tag, data\+\_\+t, void $>$\+::\mbox{\hyperlink{classutl_1_1ostreamdev__it_af1487479f0514fa330ef3393821932e8}{iterator\+\_\+category}} +\item +using \mbox{\hyperlink{classutl_1_1ostreamdev__it_a4c8ef9dc81fd07e719efe6e4f31bccfd}{value\+\_\+type}} = typename \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{dev\+\_\+iterator\+\_\+traits}}$<$ std\+::output\+\_\+iterator\+\_\+tag, data\+\_\+t, void $>$\+::\mbox{\hyperlink{classutl_1_1ostreamdev__it_a4c8ef9dc81fd07e719efe6e4f31bccfd}{value\+\_\+type}} +\item +using \mbox{\hyperlink{classutl_1_1ostreamdev__it_abf3e651511a922a8d8a2f9eb5d23e162}{difference\+\_\+type}} = typename \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{dev\+\_\+iterator\+\_\+traits}}$<$ std\+::output\+\_\+iterator\+\_\+tag, data\+\_\+t, void $>$\+::\mbox{\hyperlink{classutl_1_1ostreamdev__it_abf3e651511a922a8d8a2f9eb5d23e162}{difference\+\_\+type}} +\item +using \mbox{\hyperlink{classutl_1_1ostreamdev__it_a53deacec230a62f20fcb41858aa7cf8b}{pointer}} = typename \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{dev\+\_\+iterator\+\_\+traits}}$<$ std\+::output\+\_\+iterator\+\_\+tag, data\+\_\+t, void $>$\+::\mbox{\hyperlink{classutl_1_1ostreamdev__it_a53deacec230a62f20fcb41858aa7cf8b}{pointer}} +\item +using \mbox{\hyperlink{classutl_1_1ostreamdev__it_abda00e5d526b4f670b4bcae2a0ec65e2}{reference}} = typename \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{dev\+\_\+iterator\+\_\+traits}}$<$ std\+::output\+\_\+iterator\+\_\+tag, data\+\_\+t, void $>$\+::\mbox{\hyperlink{classutl_1_1ostreamdev__it_abda00e5d526b4f670b4bcae2a0ec65e2}{reference}} +\end{DoxyCompactItemize} + +\subsection*{Public Member Functions} +\begin{Indent}\textbf{ Constructor / Destructor}\par +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classutl_1_1ostreamdev__it_a6325c4575c2590a9af15091828f96253}{ostreamdev\+\_\+it}} (cont\+\_\+t $\ast$owner=nullptr) noexcept +\begin{DoxyCompactList}\small\item\em Basic constructor. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1ostreamdev__it_a0743c044728fa9b33e0e0648da91982d}{ostreamdev\+\_\+it}} (const \mbox{\hyperlink{classutl_1_1ostreamdev__it}{iterator\+\_\+t}} \&it) noexcept +\begin{DoxyCompactList}\small\item\em Basic copy constructor. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1ostreamdev__it}{iterator\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1ostreamdev__it_a12bff250b98723f39f8145cd28753c62}{operator=}} (const \mbox{\hyperlink{classutl_1_1ostreamdev__it}{iterator\+\_\+t}} \&it) noexcept +\begin{DoxyCompactList}\small\item\em Basic copy assignment operator. \end{DoxyCompactList}\end{DoxyCompactItemize} +\end{Indent} +\begin{Indent}\textbf{ Public interface}\par +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classutl_1_1ostreamdev__it}{iterator\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1ostreamdev__it_a59b20f351f4453d0439a732020f01a62}{operator$\ast$}} () noexcept +\item +\mbox{\hyperlink{classutl_1_1ostreamdev__it}{iterator\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1ostreamdev__it_a79b92769a48d202c4eb7d98d031eed3d}{operator=}} (const \mbox{\hyperlink{classutl_1_1ostreamdev__it_a4c8ef9dc81fd07e719efe6e4f31bccfd}{value\+\_\+type}} \&value) +\begin{DoxyCompactList}\small\item\em Value-\/assignment operation. Where the output method is invoked. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1ostreamdev__it}{iterator\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1ostreamdev__it_a0b30079065e0a886991eee4d701d99f2}{operator++}} () noexcept +\item +\mbox{\hyperlink{classutl_1_1ostreamdev__it}{iterator\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1ostreamdev__it_a1f14055eccffc96163aad431f2d1e663}{operator++}} (int) noexcept +\end{DoxyCompactItemize} +\end{Indent} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename cont\+\_\+t, typename data\+\_\+t$>$\newline +class utl\+::ostreamdev\+\_\+it$<$ cont\+\_\+t, data\+\_\+t $>$} + + + +Definition at line 69 of file dev\+\_\+iterators.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{classutl_1_1ostreamdev__it_abf3e651511a922a8d8a2f9eb5d23e162}\label{classutl_1_1ostreamdev__it_abf3e651511a922a8d8a2f9eb5d23e162}} +\index{utl\+::ostreamdev\+\_\+it@{utl\+::ostreamdev\+\_\+it}!difference\+\_\+type@{difference\+\_\+type}} +\index{difference\+\_\+type@{difference\+\_\+type}!utl\+::ostreamdev\+\_\+it@{utl\+::ostreamdev\+\_\+it}} +\subsubsection{\texorpdfstring{difference\+\_\+type}{difference\_type}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t , typename data\+\_\+t $>$ \\ +using \mbox{\hyperlink{classutl_1_1ostreamdev__it}{utl\+::ostreamdev\+\_\+it}}$<$ cont\+\_\+t, data\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1ostreamdev__it_abf3e651511a922a8d8a2f9eb5d23e162}{difference\+\_\+type}} = typename \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{dev\+\_\+iterator\+\_\+traits}} $<$std\+::output\+\_\+iterator\+\_\+tag, data\+\_\+t, void$>$\+::\mbox{\hyperlink{classutl_1_1ostreamdev__it_abf3e651511a922a8d8a2f9eb5d23e162}{difference\+\_\+type}}} + + + +Definition at line 78 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1ostreamdev__it_af1487479f0514fa330ef3393821932e8}\label{classutl_1_1ostreamdev__it_af1487479f0514fa330ef3393821932e8}} +\index{utl\+::ostreamdev\+\_\+it@{utl\+::ostreamdev\+\_\+it}!iterator\+\_\+category@{iterator\+\_\+category}} +\index{iterator\+\_\+category@{iterator\+\_\+category}!utl\+::ostreamdev\+\_\+it@{utl\+::ostreamdev\+\_\+it}} +\subsubsection{\texorpdfstring{iterator\+\_\+category}{iterator\_category}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t , typename data\+\_\+t $>$ \\ +using \mbox{\hyperlink{classutl_1_1ostreamdev__it}{utl\+::ostreamdev\+\_\+it}}$<$ cont\+\_\+t, data\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1ostreamdev__it_af1487479f0514fa330ef3393821932e8}{iterator\+\_\+category}} = typename \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{dev\+\_\+iterator\+\_\+traits}} $<$std\+::output\+\_\+iterator\+\_\+tag, data\+\_\+t, void$>$\+::\mbox{\hyperlink{classutl_1_1ostreamdev__it_af1487479f0514fa330ef3393821932e8}{iterator\+\_\+category}}} + +S\+TL iterator traits \char`\"{}forwarding\char`\"{} + +Definition at line 76 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1ostreamdev__it_a53deacec230a62f20fcb41858aa7cf8b}\label{classutl_1_1ostreamdev__it_a53deacec230a62f20fcb41858aa7cf8b}} +\index{utl\+::ostreamdev\+\_\+it@{utl\+::ostreamdev\+\_\+it}!pointer@{pointer}} +\index{pointer@{pointer}!utl\+::ostreamdev\+\_\+it@{utl\+::ostreamdev\+\_\+it}} +\subsubsection{\texorpdfstring{pointer}{pointer}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t , typename data\+\_\+t $>$ \\ +using \mbox{\hyperlink{classutl_1_1ostreamdev__it}{utl\+::ostreamdev\+\_\+it}}$<$ cont\+\_\+t, data\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1ostreamdev__it_a53deacec230a62f20fcb41858aa7cf8b}{pointer}} = typename \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{dev\+\_\+iterator\+\_\+traits}} $<$std\+::output\+\_\+iterator\+\_\+tag, data\+\_\+t, void$>$\+::\mbox{\hyperlink{classutl_1_1ostreamdev__it_a53deacec230a62f20fcb41858aa7cf8b}{pointer}}} + + + +Definition at line 79 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1ostreamdev__it_abda00e5d526b4f670b4bcae2a0ec65e2}\label{classutl_1_1ostreamdev__it_abda00e5d526b4f670b4bcae2a0ec65e2}} +\index{utl\+::ostreamdev\+\_\+it@{utl\+::ostreamdev\+\_\+it}!reference@{reference}} +\index{reference@{reference}!utl\+::ostreamdev\+\_\+it@{utl\+::ostreamdev\+\_\+it}} +\subsubsection{\texorpdfstring{reference}{reference}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t , typename data\+\_\+t $>$ \\ +using \mbox{\hyperlink{classutl_1_1ostreamdev__it}{utl\+::ostreamdev\+\_\+it}}$<$ cont\+\_\+t, data\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1ostreamdev__it_abda00e5d526b4f670b4bcae2a0ec65e2}{reference}} = typename \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{dev\+\_\+iterator\+\_\+traits}} $<$std\+::output\+\_\+iterator\+\_\+tag, data\+\_\+t, void$>$\+::\mbox{\hyperlink{classutl_1_1ostreamdev__it_abda00e5d526b4f670b4bcae2a0ec65e2}{reference}}} + + + +Definition at line 80 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1ostreamdev__it_ab5f87e036d215580e62f112f9ea1aef3}\label{classutl_1_1ostreamdev__it_ab5f87e036d215580e62f112f9ea1aef3}} +\index{utl\+::ostreamdev\+\_\+it@{utl\+::ostreamdev\+\_\+it}!type@{type}} +\index{type@{type}!utl\+::ostreamdev\+\_\+it@{utl\+::ostreamdev\+\_\+it}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t , typename data\+\_\+t $>$ \\ +using \mbox{\hyperlink{classutl_1_1ostreamdev__it}{utl\+::ostreamdev\+\_\+it}}$<$ cont\+\_\+t, data\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1ostreamdev__it_ab5f87e036d215580e62f112f9ea1aef3}{type}} = \mbox{\hyperlink{classutl_1_1ostreamdev__it}{iterator\+\_\+t}}} + +Export type as identity meta-\/function + +Definition at line 72 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1ostreamdev__it_a4c8ef9dc81fd07e719efe6e4f31bccfd}\label{classutl_1_1ostreamdev__it_a4c8ef9dc81fd07e719efe6e4f31bccfd}} +\index{utl\+::ostreamdev\+\_\+it@{utl\+::ostreamdev\+\_\+it}!value\+\_\+type@{value\+\_\+type}} +\index{value\+\_\+type@{value\+\_\+type}!utl\+::ostreamdev\+\_\+it@{utl\+::ostreamdev\+\_\+it}} +\subsubsection{\texorpdfstring{value\+\_\+type}{value\_type}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t , typename data\+\_\+t $>$ \\ +using \mbox{\hyperlink{classutl_1_1ostreamdev__it}{utl\+::ostreamdev\+\_\+it}}$<$ cont\+\_\+t, data\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1ostreamdev__it_a4c8ef9dc81fd07e719efe6e4f31bccfd}{value\+\_\+type}} = typename \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{dev\+\_\+iterator\+\_\+traits}} $<$std\+::output\+\_\+iterator\+\_\+tag, data\+\_\+t, void$>$\+::\mbox{\hyperlink{classutl_1_1ostreamdev__it_a4c8ef9dc81fd07e719efe6e4f31bccfd}{value\+\_\+type}}} + + + +Definition at line 77 of file dev\+\_\+iterators.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classutl_1_1ostreamdev__it_a6325c4575c2590a9af15091828f96253}\label{classutl_1_1ostreamdev__it_a6325c4575c2590a9af15091828f96253}} +\index{utl\+::ostreamdev\+\_\+it@{utl\+::ostreamdev\+\_\+it}!ostreamdev\+\_\+it@{ostreamdev\+\_\+it}} +\index{ostreamdev\+\_\+it@{ostreamdev\+\_\+it}!utl\+::ostreamdev\+\_\+it@{utl\+::ostreamdev\+\_\+it}} +\subsubsection{\texorpdfstring{ostreamdev\+\_\+it()}{ostreamdev\_it()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t , typename data\+\_\+t $>$ \\ +\mbox{\hyperlink{classutl_1_1ostreamdev__it}{utl\+::ostreamdev\+\_\+it}}$<$ cont\+\_\+t, data\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1ostreamdev__it}{ostreamdev\+\_\+it}} (\begin{DoxyParamCaption}\item[{cont\+\_\+t $\ast$}]{owner = {\ttfamily nullptr} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Basic constructor. + + + +Definition at line 96 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1ostreamdev__it_a0743c044728fa9b33e0e0648da91982d}\label{classutl_1_1ostreamdev__it_a0743c044728fa9b33e0e0648da91982d}} +\index{utl\+::ostreamdev\+\_\+it@{utl\+::ostreamdev\+\_\+it}!ostreamdev\+\_\+it@{ostreamdev\+\_\+it}} +\index{ostreamdev\+\_\+it@{ostreamdev\+\_\+it}!utl\+::ostreamdev\+\_\+it@{utl\+::ostreamdev\+\_\+it}} +\subsubsection{\texorpdfstring{ostreamdev\+\_\+it()}{ostreamdev\_it()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t , typename data\+\_\+t $>$ \\ +\mbox{\hyperlink{classutl_1_1ostreamdev__it}{utl\+::ostreamdev\+\_\+it}}$<$ cont\+\_\+t, data\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1ostreamdev__it}{ostreamdev\+\_\+it}} (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1ostreamdev__it}{iterator\+\_\+t}} \&}]{it }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Basic copy constructor. + + + +Definition at line 99 of file dev\+\_\+iterators.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classutl_1_1ostreamdev__it_a59b20f351f4453d0439a732020f01a62}\label{classutl_1_1ostreamdev__it_a59b20f351f4453d0439a732020f01a62}} +\index{utl\+::ostreamdev\+\_\+it@{utl\+::ostreamdev\+\_\+it}!operator$\ast$@{operator$\ast$}} +\index{operator$\ast$@{operator$\ast$}!utl\+::ostreamdev\+\_\+it@{utl\+::ostreamdev\+\_\+it}} +\subsubsection{\texorpdfstring{operator$\ast$()}{operator*()}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t , typename data\+\_\+t $>$ \\ +\mbox{\hyperlink{classutl_1_1ostreamdev__it}{iterator\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1ostreamdev__it}{utl\+::ostreamdev\+\_\+it}}$<$ cont\+\_\+t, data\+\_\+t $>$\+::operator$\ast$ (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 110 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1ostreamdev__it_a0b30079065e0a886991eee4d701d99f2}\label{classutl_1_1ostreamdev__it_a0b30079065e0a886991eee4d701d99f2}} +\index{utl\+::ostreamdev\+\_\+it@{utl\+::ostreamdev\+\_\+it}!operator++@{operator++}} +\index{operator++@{operator++}!utl\+::ostreamdev\+\_\+it@{utl\+::ostreamdev\+\_\+it}} +\subsubsection{\texorpdfstring{operator++()}{operator++()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t , typename data\+\_\+t $>$ \\ +\mbox{\hyperlink{classutl_1_1ostreamdev__it}{iterator\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1ostreamdev__it}{utl\+::ostreamdev\+\_\+it}}$<$ cont\+\_\+t, data\+\_\+t $>$\+::operator++ (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 122 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1ostreamdev__it_a1f14055eccffc96163aad431f2d1e663}\label{classutl_1_1ostreamdev__it_a1f14055eccffc96163aad431f2d1e663}} +\index{utl\+::ostreamdev\+\_\+it@{utl\+::ostreamdev\+\_\+it}!operator++@{operator++}} +\index{operator++@{operator++}!utl\+::ostreamdev\+\_\+it@{utl\+::ostreamdev\+\_\+it}} +\subsubsection{\texorpdfstring{operator++()}{operator++()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t , typename data\+\_\+t $>$ \\ +\mbox{\hyperlink{classutl_1_1ostreamdev__it}{iterator\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1ostreamdev__it}{utl\+::ostreamdev\+\_\+it}}$<$ cont\+\_\+t, data\+\_\+t $>$\+::operator++ (\begin{DoxyParamCaption}\item[{int}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 123 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1ostreamdev__it_a12bff250b98723f39f8145cd28753c62}\label{classutl_1_1ostreamdev__it_a12bff250b98723f39f8145cd28753c62}} +\index{utl\+::ostreamdev\+\_\+it@{utl\+::ostreamdev\+\_\+it}!operator=@{operator=}} +\index{operator=@{operator=}!utl\+::ostreamdev\+\_\+it@{utl\+::ostreamdev\+\_\+it}} +\subsubsection{\texorpdfstring{operator=()}{operator=()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t , typename data\+\_\+t $>$ \\ +\mbox{\hyperlink{classutl_1_1ostreamdev__it}{iterator\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1ostreamdev__it}{utl\+::ostreamdev\+\_\+it}}$<$ cont\+\_\+t, data\+\_\+t $>$\+::operator= (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1ostreamdev__it}{iterator\+\_\+t}} \&}]{it }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Basic copy assignment operator. + + + +Definition at line 102 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1ostreamdev__it_a79b92769a48d202c4eb7d98d031eed3d}\label{classutl_1_1ostreamdev__it_a79b92769a48d202c4eb7d98d031eed3d}} +\index{utl\+::ostreamdev\+\_\+it@{utl\+::ostreamdev\+\_\+it}!operator=@{operator=}} +\index{operator=@{operator=}!utl\+::ostreamdev\+\_\+it@{utl\+::ostreamdev\+\_\+it}} +\subsubsection{\texorpdfstring{operator=()}{operator=()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t , typename data\+\_\+t $>$ \\ +\mbox{\hyperlink{classutl_1_1ostreamdev__it}{iterator\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1ostreamdev__it}{utl\+::ostreamdev\+\_\+it}}$<$ cont\+\_\+t, data\+\_\+t $>$\+::operator= (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1ostreamdev__it_a4c8ef9dc81fd07e719efe6e4f31bccfd}{value\+\_\+type}} \&}]{value }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Value-\/assignment operation. Where the output method is invoked. + + +\begin{DoxyParams}{Parameters} +{\em value} & An instance of Cont\+\_\+t\+::data\+\_\+type \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +This iterator, for chained operations. +\end{DoxyReturn} + + +Definition at line 117 of file dev\+\_\+iterators.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/dev/\mbox{\hyperlink{dev__iterators_8h}{dev\+\_\+iterators.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classutl_1_1out__dev.tex b/doc/latex/classutl_1_1out__dev.tex new file mode 100644 index 0000000..b400a2d --- /dev/null +++ b/doc/latex/classutl_1_1out__dev.tex @@ -0,0 +1,407 @@ +\hypertarget{classutl_1_1out__dev}{}\section{utl\+:\+:out\+\_\+dev$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$ Class Template Reference} +\label{classutl_1_1out__dev}\index{utl\+::out\+\_\+dev$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$@{utl\+::out\+\_\+dev$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$}} + + +Abstract base classes for output devices. + + + + +{\ttfamily \#include $<$out\+\_\+dev.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{classutl_1_1out__dev_aebda5d42d26027e9266bfe74bf71a960}{type}} = \mbox{\hyperlink{classutl_1_1out__dev}{out\+\_\+dev\+\_\+t}} +\begin{DoxyCompactList}\small\item\em Export type as identity meta-\/function. \end{DoxyCompactList}\end{DoxyCompactItemize} +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{classutl_1_1out__dev_ac6b32afc51452a7dd2297a41f74e63e4}{data\+\_\+type}} = data\+\_\+t +\item +using \mbox{\hyperlink{classutl_1_1out__dev_abfb6a95c13fc63c09776141ad16e98e3}{pointer\+\_\+type}} = data\+\_\+t $\ast$ +\end{DoxyCompactItemize} + +\subsection*{Public Member Functions} +\begin{Indent}\textbf{ Common output device interface}\par +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1out__dev_a640214f205468c235dec25bab8fb6c08}{put}} (const data\+\_\+t \&data) +\begin{DoxyCompactList}\small\item\em Put interface. This function should send a single data\+\_\+t object to device. \end{DoxyCompactList}\item +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1out__dev_a0cfe5f4d3c3e4fb21abe9e88101e0bb8}{put}} (const data\+\_\+t $\ast$data, \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} n) +\begin{DoxyCompactList}\small\item\em Put interface. This function should send a stream of data\+\_\+t objects to device. \end{DoxyCompactList}\end{DoxyCompactItemize} +\end{Indent} +\begin{Indent}\textbf{ Stream operator $<$$<$ interface}\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename \+\_\+\+Src\+\_\+t $>$ }\\\mbox{\hyperlink{classutl_1_1out__dev}{out\+\_\+dev\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1out__dev_a73612dfcce721cbc386bad3e7d6864b4}{operator$<$$<$}} (\+\_\+\+Src\+\_\+t \&src) +\begin{DoxyCompactList}\small\item\em Template operator$<$$<$ implementation for for all by value/ref parameters. \end{DoxyCompactList}\item +{\footnotesize template$<$typename \+\_\+\+Src\+\_\+t $>$ }\\\mbox{\hyperlink{classutl_1_1out__dev}{out\+\_\+dev\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1out__dev_a934913c0d594e8fd366b248bc01116aa}{operator$<$$<$}} (\+\_\+\+Src\+\_\+t $\ast$src)=delete +\begin{DoxyCompactList}\small\item\em Overload to disallow pointer types as source. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1out__dev}{out\+\_\+dev\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1out__dev_a22dce1d313a4f6b4686d4253cbd7f485}{operator$<$$<$}} (const data\+\_\+t \&src) +\begin{DoxyCompactList}\small\item\em Overload for single data\+\_\+t object. \end{DoxyCompactList}\end{DoxyCompactItemize} +\end{Indent} +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classutl_1_1out__dev_ad7f16990cdb6d54a54c774224f758f13}{iterator}} \mbox{\hyperlink{classutl_1_1out__dev_a34aeac23c0184d243c6631e713208e27}{end}} () noexcept +\item +\mbox{\hyperlink{classutl_1_1out__dev_acaf94b09de592226f78d4d2d43f348ed}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1out__dev_a0e89b3e0a5bddc3031b543ef32eb401e}{end}} () const noexcept +\item +\mbox{\hyperlink{classutl_1_1out__dev_acaf94b09de592226f78d4d2d43f348ed}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1out__dev_a71487ce8df820dd688d1698b035fe4fe}{cend}} () const noexcept +\end{DoxyCompactItemize} + +\subsection*{Protected Member Functions} +\begin{Indent}\textbf{ Constructor / Destructor}\par +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classutl_1_1out__dev_a0c04af11ec0f3f9954399d22069e314d}{$\sim$out\+\_\+dev}} ()=default +\begin{DoxyCompactList}\small\item\em Allow destructor from derived only. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1out__dev_a0ceaf76475484f35174d96561dea73bf}{out\+\_\+dev}} ()=default +\begin{DoxyCompactList}\small\item\em A default constructor from derived only. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1out__dev_a36aed8619cf12b4f04334c7e0b219fb6}{out\+\_\+dev}} (const \mbox{\hyperlink{classutl_1_1out__dev}{out\+\_\+dev\+\_\+t}} \&)=delete +\begin{DoxyCompactList}\small\item\em No copies. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1out__dev}{out\+\_\+dev\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1out__dev_aba2f65a858ae47167f46979337299f44}{operator=}} (const \mbox{\hyperlink{classutl_1_1out__dev}{out\+\_\+dev\+\_\+t}} \&)=delete +\end{DoxyCompactItemize} +\end{Indent} +\subsection*{S\+T\+L-\/like Output iterator interface} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{classutl_1_1out__dev_ad7f16990cdb6d54a54c774224f758f13}{iterator}} = \mbox{\hyperlink{classutl_1_1outdev__it}{outdev\+\_\+it}}$<$ \mbox{\hyperlink{classutl_1_1out__dev}{out\+\_\+dev\+\_\+t}}, data\+\_\+t $\ast$, streamsize $>$ +\begin{DoxyCompactList}\small\item\em Iterator. \end{DoxyCompactList}\item +using \mbox{\hyperlink{classutl_1_1out__dev_acaf94b09de592226f78d4d2d43f348ed}{const\+\_\+iterator}} = \mbox{\hyperlink{classutl_1_1outdev__it}{outdev\+\_\+it}}$<$ const \mbox{\hyperlink{classutl_1_1out__dev}{out\+\_\+dev\+\_\+t}}, data\+\_\+t $\ast$, streamsize $>$ +\begin{DoxyCompactList}\small\item\em Const iterator. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1out__dev_ad7f16990cdb6d54a54c774224f758f13}{iterator}} \mbox{\hyperlink{classutl_1_1out__dev_a6396fb83348828e37d853d1566b0d742}{begin}} () noexcept +\begin{DoxyCompactList}\small\item\em .begin implementation \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1out__dev_acaf94b09de592226f78d4d2d43f348ed}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1out__dev_ab08cdc4935ec15a388e34610e905d375}{begin}} () const noexcept +\item +\mbox{\hyperlink{classutl_1_1out__dev_acaf94b09de592226f78d4d2d43f348ed}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1out__dev_ace309e9fd1a113691c5a84fde268c676}{cbegin}} () const noexcept +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename impl\+\_\+t, typename data\+\_\+t, size\+\_\+t streamsize = 0$>$\newline +class utl\+::out\+\_\+dev$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$} + +Abstract base classes for output devices. + +Template base class for output devices. using C\+R\+TP + +This class force a common interface for output devices. By using this common interface the class implements +\begin{DoxyItemize} +\item Stream-\/like inserting operator +\item Output iterator +\item Const output iterator to inherit to implementation. +\end{DoxyItemize} + + +\begin{DoxyParams}{Parameters} +{\em impl\+\_\+t} & The C\+R\+TP type (the derived/implementation class typename). \\ +\hline +{\em data\+\_\+t} & The devices base type of data \\ +\hline +{\em streamsize} & The number of elements to indicate eos. \begin{DoxyItemize} +\item None or 0 Stream only. No iterator as \mbox{\hyperlink{classutl_1_1out__dev_a6396fb83348828e37d853d1566b0d742}{begin()}} now equals \mbox{\hyperlink{classutl_1_1out__dev_a34aeac23c0184d243c6631e713208e27}{end()}}. \end{DoxyItemize} +\\ +\hline +\end{DoxyParams} + + +Definition at line 54 of file out\+\_\+dev.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{classutl_1_1out__dev_acaf94b09de592226f78d4d2d43f348ed}\label{classutl_1_1out__dev_acaf94b09de592226f78d4d2d43f348ed}} +\index{utl\+::out\+\_\+dev@{utl\+::out\+\_\+dev}!const\+\_\+iterator@{const\+\_\+iterator}} +\index{const\+\_\+iterator@{const\+\_\+iterator}!utl\+::out\+\_\+dev@{utl\+::out\+\_\+dev}} +\subsubsection{\texorpdfstring{const\+\_\+iterator}{const\_iterator}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +using \mbox{\hyperlink{classutl_1_1out__dev}{utl\+::out\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::\mbox{\hyperlink{classutl_1_1out__dev_acaf94b09de592226f78d4d2d43f348ed}{const\+\_\+iterator}} = \mbox{\hyperlink{classutl_1_1outdev__it}{outdev\+\_\+it}} $<$const \mbox{\hyperlink{classutl_1_1out__dev}{out\+\_\+dev\+\_\+t}}, data\+\_\+t$\ast$, streamsize$>$} + + + +Const iterator. + + + +Definition at line 153 of file out\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1out__dev_ac6b32afc51452a7dd2297a41f74e63e4}\label{classutl_1_1out__dev_ac6b32afc51452a7dd2297a41f74e63e4}} +\index{utl\+::out\+\_\+dev@{utl\+::out\+\_\+dev}!data\+\_\+type@{data\+\_\+type}} +\index{data\+\_\+type@{data\+\_\+type}!utl\+::out\+\_\+dev@{utl\+::out\+\_\+dev}} +\subsubsection{\texorpdfstring{data\+\_\+type}{data\_type}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +using \mbox{\hyperlink{classutl_1_1out__dev}{utl\+::out\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::\mbox{\hyperlink{classutl_1_1out__dev_ac6b32afc51452a7dd2297a41f74e63e4}{data\+\_\+type}} = data\+\_\+t} + +Export types as input device concept demands + +Definition at line 61 of file out\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1out__dev_ad7f16990cdb6d54a54c774224f758f13}\label{classutl_1_1out__dev_ad7f16990cdb6d54a54c774224f758f13}} +\index{utl\+::out\+\_\+dev@{utl\+::out\+\_\+dev}!iterator@{iterator}} +\index{iterator@{iterator}!utl\+::out\+\_\+dev@{utl\+::out\+\_\+dev}} +\subsubsection{\texorpdfstring{iterator}{iterator}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +using \mbox{\hyperlink{classutl_1_1out__dev}{utl\+::out\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::\mbox{\hyperlink{classutl_1_1out__dev_ad7f16990cdb6d54a54c774224f758f13}{iterator}} = \mbox{\hyperlink{classutl_1_1outdev__it}{outdev\+\_\+it}} $<$\mbox{\hyperlink{classutl_1_1out__dev}{out\+\_\+dev\+\_\+t}}, data\+\_\+t$\ast$, streamsize$>$} + + + +Iterator. + + + +Definition at line 152 of file out\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1out__dev_abfb6a95c13fc63c09776141ad16e98e3}\label{classutl_1_1out__dev_abfb6a95c13fc63c09776141ad16e98e3}} +\index{utl\+::out\+\_\+dev@{utl\+::out\+\_\+dev}!pointer\+\_\+type@{pointer\+\_\+type}} +\index{pointer\+\_\+type@{pointer\+\_\+type}!utl\+::out\+\_\+dev@{utl\+::out\+\_\+dev}} +\subsubsection{\texorpdfstring{pointer\+\_\+type}{pointer\_type}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +using \mbox{\hyperlink{classutl_1_1out__dev}{utl\+::out\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::\mbox{\hyperlink{classutl_1_1out__dev_abfb6a95c13fc63c09776141ad16e98e3}{pointer\+\_\+type}} = data\+\_\+t$\ast$} + + + +Definition at line 62 of file out\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1out__dev_aebda5d42d26027e9266bfe74bf71a960}\label{classutl_1_1out__dev_aebda5d42d26027e9266bfe74bf71a960}} +\index{utl\+::out\+\_\+dev@{utl\+::out\+\_\+dev}!type@{type}} +\index{type@{type}!utl\+::out\+\_\+dev@{utl\+::out\+\_\+dev}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +using \mbox{\hyperlink{classutl_1_1out__dev}{utl\+::out\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::\mbox{\hyperlink{classutl_1_1out__dev_aebda5d42d26027e9266bfe74bf71a960}{type}} = \mbox{\hyperlink{classutl_1_1out__dev}{out\+\_\+dev\+\_\+t}}} + + + +Export type as identity meta-\/function. + + + +Definition at line 64 of file out\+\_\+dev.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classutl_1_1out__dev_a0c04af11ec0f3f9954399d22069e314d}\label{classutl_1_1out__dev_a0c04af11ec0f3f9954399d22069e314d}} +\index{utl\+::out\+\_\+dev@{utl\+::out\+\_\+dev}!````~out\+\_\+dev@{$\sim$out\+\_\+dev}} +\index{````~out\+\_\+dev@{$\sim$out\+\_\+dev}!utl\+::out\+\_\+dev@{utl\+::out\+\_\+dev}} +\subsubsection{\texorpdfstring{$\sim$out\+\_\+dev()}{~out\_dev()}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +\mbox{\hyperlink{classutl_1_1out__dev}{utl\+::out\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::$\sim$\mbox{\hyperlink{classutl_1_1out__dev}{out\+\_\+dev}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [default]}} + + + +Allow destructor from derived only. + +\mbox{\Hypertarget{classutl_1_1out__dev_a0ceaf76475484f35174d96561dea73bf}\label{classutl_1_1out__dev_a0ceaf76475484f35174d96561dea73bf}} +\index{utl\+::out\+\_\+dev@{utl\+::out\+\_\+dev}!out\+\_\+dev@{out\+\_\+dev}} +\index{out\+\_\+dev@{out\+\_\+dev}!utl\+::out\+\_\+dev@{utl\+::out\+\_\+dev}} +\subsubsection{\texorpdfstring{out\+\_\+dev()}{out\_dev()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +\mbox{\hyperlink{classutl_1_1out__dev}{utl\+::out\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::\mbox{\hyperlink{classutl_1_1out__dev}{out\+\_\+dev}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [default]}} + + + +A default constructor from derived only. + +\mbox{\Hypertarget{classutl_1_1out__dev_a36aed8619cf12b4f04334c7e0b219fb6}\label{classutl_1_1out__dev_a36aed8619cf12b4f04334c7e0b219fb6}} +\index{utl\+::out\+\_\+dev@{utl\+::out\+\_\+dev}!out\+\_\+dev@{out\+\_\+dev}} +\index{out\+\_\+dev@{out\+\_\+dev}!utl\+::out\+\_\+dev@{utl\+::out\+\_\+dev}} +\subsubsection{\texorpdfstring{out\+\_\+dev()}{out\_dev()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +\mbox{\hyperlink{classutl_1_1out__dev}{utl\+::out\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::\mbox{\hyperlink{classutl_1_1out__dev}{out\+\_\+dev}} (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1out__dev}{out\+\_\+dev\+\_\+t}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [delete]}} + + + +No copies. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classutl_1_1out__dev_a6396fb83348828e37d853d1566b0d742}\label{classutl_1_1out__dev_a6396fb83348828e37d853d1566b0d742}} +\index{utl\+::out\+\_\+dev@{utl\+::out\+\_\+dev}!begin@{begin}} +\index{begin@{begin}!utl\+::out\+\_\+dev@{utl\+::out\+\_\+dev}} +\subsubsection{\texorpdfstring{begin()}{begin()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +\mbox{\hyperlink{classutl_1_1out__dev_ad7f16990cdb6d54a54c774224f758f13}{iterator}} \mbox{\hyperlink{classutl_1_1out__dev}{utl\+::out\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::begin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +.begin implementation + + + +Definition at line 156 of file out\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1out__dev_ab08cdc4935ec15a388e34610e905d375}\label{classutl_1_1out__dev_ab08cdc4935ec15a388e34610e905d375}} +\index{utl\+::out\+\_\+dev@{utl\+::out\+\_\+dev}!begin@{begin}} +\index{begin@{begin}!utl\+::out\+\_\+dev@{utl\+::out\+\_\+dev}} +\subsubsection{\texorpdfstring{begin()}{begin()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +\mbox{\hyperlink{classutl_1_1out__dev_acaf94b09de592226f78d4d2d43f348ed}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1out__dev}{utl\+::out\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::begin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 157 of file out\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1out__dev_ace309e9fd1a113691c5a84fde268c676}\label{classutl_1_1out__dev_ace309e9fd1a113691c5a84fde268c676}} +\index{utl\+::out\+\_\+dev@{utl\+::out\+\_\+dev}!cbegin@{cbegin}} +\index{cbegin@{cbegin}!utl\+::out\+\_\+dev@{utl\+::out\+\_\+dev}} +\subsubsection{\texorpdfstring{cbegin()}{cbegin()}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +\mbox{\hyperlink{classutl_1_1out__dev_acaf94b09de592226f78d4d2d43f348ed}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1out__dev}{utl\+::out\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::cbegin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 158 of file out\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1out__dev_a71487ce8df820dd688d1698b035fe4fe}\label{classutl_1_1out__dev_a71487ce8df820dd688d1698b035fe4fe}} +\index{utl\+::out\+\_\+dev@{utl\+::out\+\_\+dev}!cend@{cend}} +\index{cend@{cend}!utl\+::out\+\_\+dev@{utl\+::out\+\_\+dev}} +\subsubsection{\texorpdfstring{cend()}{cend()}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +\mbox{\hyperlink{classutl_1_1out__dev_acaf94b09de592226f78d4d2d43f348ed}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1out__dev}{utl\+::out\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::cend (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 163 of file out\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1out__dev_a34aeac23c0184d243c6631e713208e27}\label{classutl_1_1out__dev_a34aeac23c0184d243c6631e713208e27}} +\index{utl\+::out\+\_\+dev@{utl\+::out\+\_\+dev}!end@{end}} +\index{end@{end}!utl\+::out\+\_\+dev@{utl\+::out\+\_\+dev}} +\subsubsection{\texorpdfstring{end()}{end()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +\mbox{\hyperlink{classutl_1_1out__dev_ad7f16990cdb6d54a54c774224f758f13}{iterator}} \mbox{\hyperlink{classutl_1_1out__dev}{utl\+::out\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::end (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + +.end implementation + +Definition at line 161 of file out\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1out__dev_a0e89b3e0a5bddc3031b543ef32eb401e}\label{classutl_1_1out__dev_a0e89b3e0a5bddc3031b543ef32eb401e}} +\index{utl\+::out\+\_\+dev@{utl\+::out\+\_\+dev}!end@{end}} +\index{end@{end}!utl\+::out\+\_\+dev@{utl\+::out\+\_\+dev}} +\subsubsection{\texorpdfstring{end()}{end()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +\mbox{\hyperlink{classutl_1_1out__dev_acaf94b09de592226f78d4d2d43f348ed}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1out__dev}{utl\+::out\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::end (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 162 of file out\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1out__dev_a73612dfcce721cbc386bad3e7d6864b4}\label{classutl_1_1out__dev_a73612dfcce721cbc386bad3e7d6864b4}} +\index{utl\+::out\+\_\+dev@{utl\+::out\+\_\+dev}!operator$<$$<$@{operator$<$$<$}} +\index{operator$<$$<$@{operator$<$$<$}!utl\+::out\+\_\+dev@{utl\+::out\+\_\+dev}} +\subsubsection{\texorpdfstring{operator$<$$<$()}{operator<<()}\hspace{0.1cm}{\footnotesize\ttfamily [1/3]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +template$<$typename \+\_\+\+Src\+\_\+t $>$ \\ +\mbox{\hyperlink{classutl_1_1out__dev}{out\+\_\+dev\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1out__dev}{utl\+::out\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::operator$<$$<$ (\begin{DoxyParamCaption}\item[{\+\_\+\+Src\+\_\+t \&}]{src }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Template operator$<$$<$ implementation for for all by value/ref parameters. + +\begin{DoxyNote}{Note} +In the case \+\_\+\+Src\+\_\+t size is not an exact multiple of data\+\_\+t size the write data will be truncated and there may be data loss. +\end{DoxyNote} + +\begin{DoxyParams}{Parameters} +{\em src} & Reference to source data \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +Reference to this device for chaining +\end{DoxyReturn} + + +Definition at line 131 of file out\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1out__dev_a934913c0d594e8fd366b248bc01116aa}\label{classutl_1_1out__dev_a934913c0d594e8fd366b248bc01116aa}} +\index{utl\+::out\+\_\+dev@{utl\+::out\+\_\+dev}!operator$<$$<$@{operator$<$$<$}} +\index{operator$<$$<$@{operator$<$$<$}!utl\+::out\+\_\+dev@{utl\+::out\+\_\+dev}} +\subsubsection{\texorpdfstring{operator$<$$<$()}{operator<<()}\hspace{0.1cm}{\footnotesize\ttfamily [2/3]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +template$<$typename \+\_\+\+Src\+\_\+t $>$ \\ +\mbox{\hyperlink{classutl_1_1out__dev}{out\+\_\+dev\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1out__dev}{utl\+::out\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::operator$<$$<$ (\begin{DoxyParamCaption}\item[{\+\_\+\+Src\+\_\+t $\ast$}]{src }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [delete]}} + + + +Overload to disallow pointer types as source. + +\mbox{\Hypertarget{classutl_1_1out__dev_a22dce1d313a4f6b4686d4253cbd7f485}\label{classutl_1_1out__dev_a22dce1d313a4f6b4686d4253cbd7f485}} +\index{utl\+::out\+\_\+dev@{utl\+::out\+\_\+dev}!operator$<$$<$@{operator$<$$<$}} +\index{operator$<$$<$@{operator$<$$<$}!utl\+::out\+\_\+dev@{utl\+::out\+\_\+dev}} +\subsubsection{\texorpdfstring{operator$<$$<$()}{operator<<()}\hspace{0.1cm}{\footnotesize\ttfamily [3/3]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +\mbox{\hyperlink{classutl_1_1out__dev}{out\+\_\+dev\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1out__dev}{utl\+::out\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::operator$<$$<$ (\begin{DoxyParamCaption}\item[{const data\+\_\+t \&}]{src }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Overload for single data\+\_\+t object. + + + +Definition at line 142 of file out\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1out__dev_aba2f65a858ae47167f46979337299f44}\label{classutl_1_1out__dev_aba2f65a858ae47167f46979337299f44}} +\index{utl\+::out\+\_\+dev@{utl\+::out\+\_\+dev}!operator=@{operator=}} +\index{operator=@{operator=}!utl\+::out\+\_\+dev@{utl\+::out\+\_\+dev}} +\subsubsection{\texorpdfstring{operator=()}{operator=()}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +\mbox{\hyperlink{classutl_1_1out__dev}{out\+\_\+dev\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1out__dev}{utl\+::out\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::operator= (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1out__dev}{out\+\_\+dev\+\_\+t}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [delete]}} + +No copy assignments \mbox{\Hypertarget{classutl_1_1out__dev_a640214f205468c235dec25bab8fb6c08}\label{classutl_1_1out__dev_a640214f205468c235dec25bab8fb6c08}} +\index{utl\+::out\+\_\+dev@{utl\+::out\+\_\+dev}!put@{put}} +\index{put@{put}!utl\+::out\+\_\+dev@{utl\+::out\+\_\+dev}} +\subsubsection{\texorpdfstring{put()}{put()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1out__dev}{utl\+::out\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::put (\begin{DoxyParamCaption}\item[{const data\+\_\+t \&}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Put interface. This function should send a single data\+\_\+t object to device. + + +\begin{DoxyParams}{Parameters} +{\em data} & The data to send \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +The number of transmitted data items +\end{DoxyReturn} +\begin{DoxyNote}{Note} +A successful call should return 1 +\end{DoxyNote} + + +Definition at line 99 of file out\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1out__dev_a0cfe5f4d3c3e4fb21abe9e88101e0bb8}\label{classutl_1_1out__dev_a0cfe5f4d3c3e4fb21abe9e88101e0bb8}} +\index{utl\+::out\+\_\+dev@{utl\+::out\+\_\+dev}!put@{put}} +\index{put@{put}!utl\+::out\+\_\+dev@{utl\+::out\+\_\+dev}} +\subsubsection{\texorpdfstring{put()}{put()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t , typename data\+\_\+t , size\+\_\+t streamsize = 0$>$ \\ +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1out__dev}{utl\+::out\+\_\+dev}}$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$\+::put (\begin{DoxyParamCaption}\item[{const data\+\_\+t $\ast$}]{data, }\item[{\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}}}]{n }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Put interface. This function should send a stream of data\+\_\+t objects to device. + + +\begin{DoxyParams}{Parameters} +{\em data} & Pointer to buffer indenting write to device. \\ +\hline +{\em n} & The number of data of type data\+\_\+t to send \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +The number of transmitted items. +\end{DoxyReturn} + + +Definition at line 111 of file out\+\_\+dev.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/dev/\mbox{\hyperlink{out__dev_8h}{out\+\_\+dev.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.tex b/doc/latex/classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.tex new file mode 100644 index 0000000..4c4665d --- /dev/null +++ b/doc/latex/classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4.tex @@ -0,0 +1,364 @@ +\hypertarget{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{}\section{utl\+:\+:out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$ Class Template Reference} +\label{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}\index{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} + + +A virtual base class specialization. + + + + +{\ttfamily \#include $<$out\+\_\+dev.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_ac6d606494a0b663bf20bf180e33190e2}{type}} = \mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{out\+\_\+dev\+\_\+t}} +\begin{DoxyCompactList}\small\item\em Export type as identity meta-\/function. \end{DoxyCompactList}\end{DoxyCompactItemize} +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a6ebf2bb2132e972cd9f2daffa67d981b}{data\+\_\+type}} = data\+\_\+t +\item +using \mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a83ce1ff81d538c68649fe339241d6cff}{pointer\+\_\+type}} = data\+\_\+t $\ast$ +\end{DoxyCompactItemize} + +\subsection*{Public Member Functions} +\begin{Indent}\textbf{ Public Put interface}\par +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a7311e58e96e924cdd7f06ff4713f3317}{put}} (const data\+\_\+t \&data) +\item +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_aa781ec6a6e500451a357f04b1436d8e0}{put}} (const data\+\_\+t $\ast$data, \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} n) +\end{DoxyCompactItemize} +\end{Indent} +\begin{Indent}\textbf{ Stream operator$<$$<$ interface}\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename \+\_\+\+Src\+\_\+t $>$ }\\\mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{out\+\_\+dev\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a88944f88c0dfa832f42b49193bffcea9}{operator$<$$<$}} (\+\_\+\+Src\+\_\+t \&src) +\begin{DoxyCompactList}\small\item\em Template operator$<$$<$ implementation for for all by value/ref parameters. \end{DoxyCompactList}\item +{\footnotesize template$<$typename \+\_\+\+Src\+\_\+t $>$ }\\\mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{out\+\_\+dev\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a8ea40dd005963b6e2f41c1a5f8c5c6b1}{operator$<$$<$}} (\+\_\+\+Src\+\_\+t $\ast$src)=delete +\begin{DoxyCompactList}\small\item\em Overload to disallow pointer types as source. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{out\+\_\+dev\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a6b8b80722252f898b1acfce6083b4cf7}{operator$<$$<$}} (const data\+\_\+t \&src) +\begin{DoxyCompactList}\small\item\em Overload for single data\+\_\+t object. \end{DoxyCompactList}\end{DoxyCompactItemize} +\end{Indent} +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a3da010b49d2e6b87eaddc22ef636acc9}{iterator}} \mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_acabafe9e76d94c8044feb85996ebba5f}{end}} () noexcept +\item +\mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a690f4d4b54e352b64bd484a15138df64}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a3992eda54afec8aaa1cb8f040563add6}{end}} () const noexcept +\item +\mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a690f4d4b54e352b64bd484a15138df64}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a6d316ddd0f1797724f976254297c28fc}{cend}} () const noexcept +\end{DoxyCompactItemize} + +\subsection*{Constructor / Destructor} +\begin{DoxyCompactItemize} +\item +virtual \mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a5dce94d088c9f6cec3c318e0a0d1ee56}{$\sim$out\+\_\+dev}} ()=default +\begin{DoxyCompactList}\small\item\em Virtual destructor. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a470befe8e2518939190977d76bea06ca}{out\+\_\+dev}} ()=default +\begin{DoxyCompactList}\small\item\em A default constructor from derived only. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_ad4b62c477f8e553d78a1ab051ad81a7c}{out\+\_\+dev}} (const \mbox{\hyperlink{classutl_1_1out__dev}{out\+\_\+dev}} \&)=delete +\begin{DoxyCompactList}\small\item\em No copies. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{out\+\_\+dev\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a6093ba41c3bddd450fbad0fd0bf3ba65}{operator=}} (const \mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{out\+\_\+dev\+\_\+t}} \&)=delete +\end{DoxyCompactItemize} +\subsection*{S\+T\+L-\/like Output iterator interface} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a3da010b49d2e6b87eaddc22ef636acc9}{iterator}} = \mbox{\hyperlink{classutl_1_1outdev__it}{outdev\+\_\+it}}$<$ \mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{out\+\_\+dev\+\_\+t}}, data\+\_\+t $\ast$, streamsize $>$ +\begin{DoxyCompactList}\small\item\em Iterator. \end{DoxyCompactList}\item +using \mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a690f4d4b54e352b64bd484a15138df64}{const\+\_\+iterator}} = \mbox{\hyperlink{classutl_1_1outdev__it}{outdev\+\_\+it}}$<$ const \mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{out\+\_\+dev\+\_\+t}}, data\+\_\+t $\ast$, streamsize $>$ +\begin{DoxyCompactList}\small\item\em Const iterator. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a3da010b49d2e6b87eaddc22ef636acc9}{iterator}} \mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_ac3df041ff2e72454035cd879ddf1332d}{begin}} () noexcept +\begin{DoxyCompactList}\small\item\em .begin implementation \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a690f4d4b54e352b64bd484a15138df64}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a35edcf840e3ba2b53734a128181da6e8}{begin}} () const noexcept +\item +\mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a690f4d4b54e352b64bd484a15138df64}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a41a29c14ad5206a122e6bec5e3314dc4}{cbegin}} () const noexcept +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename data\+\_\+t, size\+\_\+t streamsize$>$\newline +class utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$} + +A virtual base class specialization. + + +\begin{DoxyParams}{Parameters} +{\em impl\+\_\+t} & = \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} \\ +\hline +{\em data\+\_\+t} & The devices base type of data \\ +\hline +{\em streamsize} & The number of elements to indicate eos. \begin{DoxyItemize} +\item None or 0 Stream only. No iterator as \mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_ac3df041ff2e72454035cd879ddf1332d}{begin()}} now equals \mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_acabafe9e76d94c8044feb85996ebba5f}{end()}}. \end{DoxyItemize} +\\ +\hline +\end{DoxyParams} + + +Definition at line 177 of file out\+\_\+dev.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a690f4d4b54e352b64bd484a15138df64}\label{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a690f4d4b54e352b64bd484a15138df64}} +\index{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!const\+\_\+iterator@{const\+\_\+iterator}} +\index{const\+\_\+iterator@{const\+\_\+iterator}!utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{const\+\_\+iterator}{const\_iterator}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +using \mbox{\hyperlink{classutl_1_1out__dev}{utl\+::out\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::\mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a690f4d4b54e352b64bd484a15138df64}{const\+\_\+iterator}} = \mbox{\hyperlink{classutl_1_1outdev__it}{outdev\+\_\+it}} $<$const \mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{out\+\_\+dev\+\_\+t}}, data\+\_\+t$\ast$, streamsize$>$} + + + +Const iterator. + + + +Definition at line 268 of file out\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a6ebf2bb2132e972cd9f2daffa67d981b}\label{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a6ebf2bb2132e972cd9f2daffa67d981b}} +\index{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!data\+\_\+type@{data\+\_\+type}} +\index{data\+\_\+type@{data\+\_\+type}!utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{data\+\_\+type}{data\_type}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +using \mbox{\hyperlink{classutl_1_1out__dev}{utl\+::out\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::\mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a6ebf2bb2132e972cd9f2daffa67d981b}{data\+\_\+type}} = data\+\_\+t} + +Export types as input device concept demands + +Definition at line 183 of file out\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a3da010b49d2e6b87eaddc22ef636acc9}\label{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a3da010b49d2e6b87eaddc22ef636acc9}} +\index{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!iterator@{iterator}} +\index{iterator@{iterator}!utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{iterator}{iterator}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +using \mbox{\hyperlink{classutl_1_1out__dev}{utl\+::out\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::\mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a3da010b49d2e6b87eaddc22ef636acc9}{iterator}} = \mbox{\hyperlink{classutl_1_1outdev__it}{outdev\+\_\+it}} $<$\mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{out\+\_\+dev\+\_\+t}}, data\+\_\+t$\ast$, streamsize$>$} + + + +Iterator. + + + +Definition at line 267 of file out\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a83ce1ff81d538c68649fe339241d6cff}\label{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a83ce1ff81d538c68649fe339241d6cff}} +\index{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!pointer\+\_\+type@{pointer\+\_\+type}} +\index{pointer\+\_\+type@{pointer\+\_\+type}!utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{pointer\+\_\+type}{pointer\_type}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +using \mbox{\hyperlink{classutl_1_1out__dev}{utl\+::out\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::\mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a83ce1ff81d538c68649fe339241d6cff}{pointer\+\_\+type}} = data\+\_\+t$\ast$} + + + +Definition at line 184 of file out\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_ac6d606494a0b663bf20bf180e33190e2}\label{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_ac6d606494a0b663bf20bf180e33190e2}} +\index{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!type@{type}} +\index{type@{type}!utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +using \mbox{\hyperlink{classutl_1_1out__dev}{utl\+::out\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::\mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_ac6d606494a0b663bf20bf180e33190e2}{type}} = \mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{out\+\_\+dev\+\_\+t}}} + + + +Export type as identity meta-\/function. + + + +Definition at line 186 of file out\+\_\+dev.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a5dce94d088c9f6cec3c318e0a0d1ee56}\label{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a5dce94d088c9f6cec3c318e0a0d1ee56}} +\index{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!````~out\+\_\+dev@{$\sim$out\+\_\+dev}} +\index{````~out\+\_\+dev@{$\sim$out\+\_\+dev}!utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{$\sim$out\+\_\+dev()}{~out\_dev()}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +virtual \mbox{\hyperlink{classutl_1_1out__dev}{utl\+::out\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::$\sim$\mbox{\hyperlink{classutl_1_1out__dev}{out\+\_\+dev}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}, {\ttfamily [default]}} + + + +Virtual destructor. + +\mbox{\Hypertarget{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a470befe8e2518939190977d76bea06ca}\label{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a470befe8e2518939190977d76bea06ca}} +\index{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!out\+\_\+dev@{out\+\_\+dev}} +\index{out\+\_\+dev@{out\+\_\+dev}!utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{out\+\_\+dev()}{out\_dev()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +\mbox{\hyperlink{classutl_1_1out__dev}{utl\+::out\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::\mbox{\hyperlink{classutl_1_1out__dev}{out\+\_\+dev}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [default]}} + + + +A default constructor from derived only. + +\mbox{\Hypertarget{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_ad4b62c477f8e553d78a1ab051ad81a7c}\label{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_ad4b62c477f8e553d78a1ab051ad81a7c}} +\index{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!out\+\_\+dev@{out\+\_\+dev}} +\index{out\+\_\+dev@{out\+\_\+dev}!utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{out\+\_\+dev()}{out\_dev()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +\mbox{\hyperlink{classutl_1_1out__dev}{utl\+::out\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::\mbox{\hyperlink{classutl_1_1out__dev}{out\+\_\+dev}} (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1out__dev}{out\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$ \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [delete]}} + + + +No copies. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_ac3df041ff2e72454035cd879ddf1332d}\label{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_ac3df041ff2e72454035cd879ddf1332d}} +\index{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!begin@{begin}} +\index{begin@{begin}!utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{begin()}{begin()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +\mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a3da010b49d2e6b87eaddc22ef636acc9}{iterator}} \mbox{\hyperlink{classutl_1_1out__dev}{utl\+::out\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::begin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +.begin implementation + + + +Definition at line 271 of file out\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a35edcf840e3ba2b53734a128181da6e8}\label{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a35edcf840e3ba2b53734a128181da6e8}} +\index{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!begin@{begin}} +\index{begin@{begin}!utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{begin()}{begin()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +\mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a690f4d4b54e352b64bd484a15138df64}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1out__dev}{utl\+::out\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::begin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 272 of file out\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a41a29c14ad5206a122e6bec5e3314dc4}\label{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a41a29c14ad5206a122e6bec5e3314dc4}} +\index{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!cbegin@{cbegin}} +\index{cbegin@{cbegin}!utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{cbegin()}{cbegin()}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +\mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a690f4d4b54e352b64bd484a15138df64}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1out__dev}{utl\+::out\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::cbegin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 273 of file out\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a6d316ddd0f1797724f976254297c28fc}\label{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a6d316ddd0f1797724f976254297c28fc}} +\index{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!cend@{cend}} +\index{cend@{cend}!utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{cend()}{cend()}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +\mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a690f4d4b54e352b64bd484a15138df64}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1out__dev}{utl\+::out\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::cend (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 278 of file out\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_acabafe9e76d94c8044feb85996ebba5f}\label{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_acabafe9e76d94c8044feb85996ebba5f}} +\index{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!end@{end}} +\index{end@{end}!utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{end()}{end()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +\mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a3da010b49d2e6b87eaddc22ef636acc9}{iterator}} \mbox{\hyperlink{classutl_1_1out__dev}{utl\+::out\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::end (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + +.end implementation + +Definition at line 276 of file out\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a3992eda54afec8aaa1cb8f040563add6}\label{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a3992eda54afec8aaa1cb8f040563add6}} +\index{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!end@{end}} +\index{end@{end}!utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{end()}{end()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +\mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a690f4d4b54e352b64bd484a15138df64}{const\+\_\+iterator}} \mbox{\hyperlink{classutl_1_1out__dev}{utl\+::out\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::end (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 277 of file out\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a88944f88c0dfa832f42b49193bffcea9}\label{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a88944f88c0dfa832f42b49193bffcea9}} +\index{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!operator$<$$<$@{operator$<$$<$}} +\index{operator$<$$<$@{operator$<$$<$}!utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{operator$<$$<$()}{operator<<()}\hspace{0.1cm}{\footnotesize\ttfamily [1/3]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +template$<$typename \+\_\+\+Src\+\_\+t $>$ \\ +\mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{out\+\_\+dev\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1out__dev}{utl\+::out\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::operator$<$$<$ (\begin{DoxyParamCaption}\item[{\+\_\+\+Src\+\_\+t \&}]{src }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Template operator$<$$<$ implementation for for all by value/ref parameters. + + +\begin{DoxyParams}{Parameters} +{\em src} & Reference to source data \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +Reference to this device for chaining +\end{DoxyReturn} + + +Definition at line 246 of file out\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a8ea40dd005963b6e2f41c1a5f8c5c6b1}\label{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a8ea40dd005963b6e2f41c1a5f8c5c6b1}} +\index{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!operator$<$$<$@{operator$<$$<$}} +\index{operator$<$$<$@{operator$<$$<$}!utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{operator$<$$<$()}{operator<<()}\hspace{0.1cm}{\footnotesize\ttfamily [2/3]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +template$<$typename \+\_\+\+Src\+\_\+t $>$ \\ +\mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{out\+\_\+dev\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1out__dev}{utl\+::out\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::operator$<$$<$ (\begin{DoxyParamCaption}\item[{\+\_\+\+Src\+\_\+t $\ast$}]{src }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [delete]}} + + + +Overload to disallow pointer types as source. + +\mbox{\Hypertarget{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a6b8b80722252f898b1acfce6083b4cf7}\label{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a6b8b80722252f898b1acfce6083b4cf7}} +\index{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!operator$<$$<$@{operator$<$$<$}} +\index{operator$<$$<$@{operator$<$$<$}!utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{operator$<$$<$()}{operator<<()}\hspace{0.1cm}{\footnotesize\ttfamily [3/3]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +\mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{out\+\_\+dev\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1out__dev}{utl\+::out\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::operator$<$$<$ (\begin{DoxyParamCaption}\item[{const data\+\_\+t \&}]{src }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Overload for single data\+\_\+t object. + + + +Definition at line 257 of file out\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a6093ba41c3bddd450fbad0fd0bf3ba65}\label{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a6093ba41c3bddd450fbad0fd0bf3ba65}} +\index{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!operator=@{operator=}} +\index{operator=@{operator=}!utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{operator=()}{operator=()}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +\mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{out\+\_\+dev\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1out__dev}{utl\+::out\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::operator= (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{out\+\_\+dev\+\_\+t}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [delete]}} + +No copy assignments \mbox{\Hypertarget{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a7311e58e96e924cdd7f06ff4713f3317}\label{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_a7311e58e96e924cdd7f06ff4713f3317}} +\index{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!put@{put}} +\index{put@{put}!utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{put()}{put()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1out__dev}{utl\+::out\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::put (\begin{DoxyParamCaption}\item[{const data\+\_\+t \&}]{data }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 231 of file out\+\_\+dev.\+h. + +\mbox{\Hypertarget{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_aa781ec6a6e500451a357f04b1436d8e0}\label{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4_aa781ec6a6e500451a357f04b1436d8e0}} +\index{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}!put@{put}} +\index{put@{put}!utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$@{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\subsubsection{\texorpdfstring{put()}{put()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename data\+\_\+t , size\+\_\+t streamsize$>$ \\ +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1out__dev}{utl\+::out\+\_\+dev}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, data\+\_\+t, streamsize $>$\+::put (\begin{DoxyParamCaption}\item[{const data\+\_\+t $\ast$}]{data, }\item[{\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}}}]{n }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 232 of file out\+\_\+dev.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/dev/\mbox{\hyperlink{out__dev_8h}{out\+\_\+dev.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classutl_1_1outdev__it.tex b/doc/latex/classutl_1_1outdev__it.tex new file mode 100644 index 0000000..843bbe9 --- /dev/null +++ b/doc/latex/classutl_1_1outdev__it.tex @@ -0,0 +1,351 @@ +\hypertarget{classutl_1_1outdev__it}{}\section{utl\+:\+:outdev\+\_\+it$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+end $>$ Class Template Reference} +\label{classutl_1_1outdev__it}\index{utl\+::outdev\+\_\+it$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+end $>$@{utl\+::outdev\+\_\+it$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+end $>$}} + + +Output device iterator type. We \char`\"{}future call\char`\"{} interface methods from owner class to provide iterator functionality. + + + + +{\ttfamily \#include $<$dev\+\_\+iterators.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +enum \mbox{\hyperlink{classutl_1_1outdev__it_ab5cbe3695bf05af30b14b89f8a16594b}{Cursor}} \{ \mbox{\hyperlink{classutl_1_1outdev__it_ab5cbe3695bf05af30b14b89f8a16594ba8a7a14e955d212cd582610961e7e2769}{beg}} = \+\_\+beg, +\mbox{\hyperlink{classutl_1_1outdev__it_ab5cbe3695bf05af30b14b89f8a16594ba23a4928e4a78f96314ad442f7bb72e18}{eod}} = \+\_\+end + \} +\begin{DoxyCompactList}\small\item\em \#define-\/like enumerator for Cursor \end{DoxyCompactList}\item +using \mbox{\hyperlink{classutl_1_1outdev__it_ac9f9b83fbb0b48a8c002638febbca186}{type}} = \mbox{\hyperlink{classutl_1_1outdev__it}{iterator\+\_\+t}} +\end{DoxyCompactItemize} +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{classutl_1_1outdev__it_aeed1fef454099c402e4d3bb496ed0061}{iterator\+\_\+category}} = typename \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{dev\+\_\+iterator\+\_\+traits}}$<$ std\+::output\+\_\+iterator\+\_\+tag, iter\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1outdev__it_aeed1fef454099c402e4d3bb496ed0061}{iterator\+\_\+category}} +\item +using \mbox{\hyperlink{classutl_1_1outdev__it_aa973216f7bc8930b3125e94a0bb664d3}{value\+\_\+type}} = typename \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{dev\+\_\+iterator\+\_\+traits}}$<$ std\+::output\+\_\+iterator\+\_\+tag, iter\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1outdev__it_aa973216f7bc8930b3125e94a0bb664d3}{value\+\_\+type}} +\item +using \mbox{\hyperlink{classutl_1_1outdev__it_a08921b19038ae0fd919d507abb036b16}{difference\+\_\+type}} = typename \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{dev\+\_\+iterator\+\_\+traits}}$<$ std\+::output\+\_\+iterator\+\_\+tag, iter\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1outdev__it_a08921b19038ae0fd919d507abb036b16}{difference\+\_\+type}} +\item +using \mbox{\hyperlink{classutl_1_1outdev__it_a92f06ead0276169036aee90dbee2ca8e}{pointer}} = typename \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{dev\+\_\+iterator\+\_\+traits}}$<$ std\+::output\+\_\+iterator\+\_\+tag, iter\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1outdev__it_a92f06ead0276169036aee90dbee2ca8e}{pointer}} +\item +using \mbox{\hyperlink{classutl_1_1outdev__it_ac4fdabc0a410f1cd90e116f3df6806c6}{reference}} = typename \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{dev\+\_\+iterator\+\_\+traits}}$<$ std\+::output\+\_\+iterator\+\_\+tag, iter\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1outdev__it_ac4fdabc0a410f1cd90e116f3df6806c6}{reference}} +\end{DoxyCompactItemize} + +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +const cont\+\_\+t $\ast$ \mbox{\hyperlink{classutl_1_1outdev__it_a05b35f89ff6e1682b2dbc36198b8e813}{owner}} () const noexcept +\begin{DoxyCompactList}\small\item\em Export container for comparison. \end{DoxyCompactList}\item +const \mbox{\hyperlink{namespaceutl_a676c0acd539dd04048dcc7b4d698577e}{index\+\_\+t}} \mbox{\hyperlink{classutl_1_1outdev__it_a6d8b5c831aecbc26af139cf849198635}{cursor}} () const noexcept +\begin{DoxyCompactList}\small\item\em Export cursor for comparison. \end{DoxyCompactList}\end{DoxyCompactItemize} +\begin{Indent}\textbf{ Constructor / Destructor}\par +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classutl_1_1outdev__it_a691c350e365d9ba037fe5f7541425a50}{outdev\+\_\+it}} () noexcept +\begin{DoxyCompactList}\small\item\em Default constructor results to end() \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1outdev__it_ac65bea2b8547649771c73d8110ba1115}{outdev\+\_\+it}} (cont\+\_\+t $\ast$\mbox{\hyperlink{classutl_1_1outdev__it_a05b35f89ff6e1682b2dbc36198b8e813}{owner}}, \mbox{\hyperlink{namespaceutl_a676c0acd539dd04048dcc7b4d698577e}{index\+\_\+t}} \mbox{\hyperlink{classutl_1_1outdev__it_a6d8b5c831aecbc26af139cf849198635}{cursor}}=\mbox{\hyperlink{classutl_1_1outdev__it_ab5cbe3695bf05af30b14b89f8a16594ba23a4928e4a78f96314ad442f7bb72e18}{eod}}) noexcept +\begin{DoxyCompactList}\small\item\em Basic constructor. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1outdev__it_ad7226a24b2576fbc57ad740f04bdde6b}{outdev\+\_\+it}} (const \mbox{\hyperlink{classutl_1_1outdev__it}{iterator\+\_\+t}} \&it) noexcept +\begin{DoxyCompactList}\small\item\em Basic copy constructor. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1outdev__it}{iterator\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1outdev__it_a96773cf7677881fde81b57db9f8ffaff}{operator=}} (const \mbox{\hyperlink{classutl_1_1outdev__it}{iterator\+\_\+t}} \&it) noexcept +\begin{DoxyCompactList}\small\item\em Basic copy assignment operator. \end{DoxyCompactList}\end{DoxyCompactItemize} +\end{Indent} +\begin{Indent}\textbf{ Public interface}\par +{\em Iterator to const-\/iterator conversion (as S\+TL requires) + + +\begin{DoxyParams}{Parameters} +{\em it} & Iterator reference \\ +\hline +\end{DoxyParams} +}\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classutl_1_1outdev__it}{iterator\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1outdev__it_a48013f8a6db805b7233a61fc43891f88}{operator$\ast$}} () noexcept +\item +\mbox{\hyperlink{classutl_1_1outdev__it}{iterator\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1outdev__it_aeb3737becdbcab0e42094bc87d09d79a}{operator=}} (const \mbox{\hyperlink{classutl_1_1outdev__it_aa973216f7bc8930b3125e94a0bb664d3}{value\+\_\+type}} \&value) +\begin{DoxyCompactList}\small\item\em Value-\/assignment operation. Where the output method is invoked. \end{DoxyCompactList}\end{DoxyCompactItemize} +\end{Indent} +\begin{Indent}\textbf{ ++ operators}\par +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classutl_1_1outdev__it}{iterator\+\_\+t}} \& \mbox{\hyperlink{classutl_1_1outdev__it_a3f8d013e5ea008abfa060028d78f2871}{operator++}} () noexcept +\item +\mbox{\hyperlink{classutl_1_1outdev__it}{iterator\+\_\+t}} \mbox{\hyperlink{classutl_1_1outdev__it_a8080fda743df21eb28b20771ba7df912}{operator++}} (int) noexcept +\end{DoxyCompactItemize} +\end{Indent} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, index\+\_\+t \+\_\+end = static\+\_\+cast$<$index\+\_\+t$>$(-\/1)$>$\newline +class utl\+::outdev\+\_\+it$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+end $>$} + +Output device iterator type. We \char`\"{}future call\char`\"{} interface methods from owner class to provide iterator functionality. + + +\begin{DoxyParams}{Parameters} +{\em cont\+\_\+t} & Container/parent type \\ +\hline +{\em iter\+\_\+t} & Iterator data type (pointer to container\+\_\+t\+::value\+\_\+type) \\ +\hline +{\em devsize} & Device\textquotesingle{}s address space size \\ +\hline +\end{DoxyParams} + + +Definition at line 250 of file dev\+\_\+iterators.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{classutl_1_1outdev__it_a08921b19038ae0fd919d507abb036b16}\label{classutl_1_1outdev__it_a08921b19038ae0fd919d507abb036b16}} +\index{utl\+::outdev\+\_\+it@{utl\+::outdev\+\_\+it}!difference\+\_\+type@{difference\+\_\+type}} +\index{difference\+\_\+type@{difference\+\_\+type}!utl\+::outdev\+\_\+it@{utl\+::outdev\+\_\+it}} +\subsubsection{\texorpdfstring{difference\+\_\+type}{difference\_type}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, index\+\_\+t \+\_\+end = static\+\_\+cast$<$index\+\_\+t$>$(-\/1)$>$ \\ +using \mbox{\hyperlink{classutl_1_1outdev__it}{utl\+::outdev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+end $>$\+::\mbox{\hyperlink{classutl_1_1outdev__it_a08921b19038ae0fd919d507abb036b16}{difference\+\_\+type}} = typename \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{dev\+\_\+iterator\+\_\+traits}} $<$std\+::output\+\_\+iterator\+\_\+tag, iter\+\_\+t$>$\+::\mbox{\hyperlink{classutl_1_1outdev__it_a08921b19038ae0fd919d507abb036b16}{difference\+\_\+type}}} + + + +Definition at line 260 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1outdev__it_aeed1fef454099c402e4d3bb496ed0061}\label{classutl_1_1outdev__it_aeed1fef454099c402e4d3bb496ed0061}} +\index{utl\+::outdev\+\_\+it@{utl\+::outdev\+\_\+it}!iterator\+\_\+category@{iterator\+\_\+category}} +\index{iterator\+\_\+category@{iterator\+\_\+category}!utl\+::outdev\+\_\+it@{utl\+::outdev\+\_\+it}} +\subsubsection{\texorpdfstring{iterator\+\_\+category}{iterator\_category}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, index\+\_\+t \+\_\+end = static\+\_\+cast$<$index\+\_\+t$>$(-\/1)$>$ \\ +using \mbox{\hyperlink{classutl_1_1outdev__it}{utl\+::outdev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+end $>$\+::\mbox{\hyperlink{classutl_1_1outdev__it_aeed1fef454099c402e4d3bb496ed0061}{iterator\+\_\+category}} = typename \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{dev\+\_\+iterator\+\_\+traits}} $<$std\+::output\+\_\+iterator\+\_\+tag, iter\+\_\+t$>$\+::\mbox{\hyperlink{classutl_1_1outdev__it_aeed1fef454099c402e4d3bb496ed0061}{iterator\+\_\+category}}} + +S\+TL iterator traits \char`\"{}forwarding\char`\"{} + +Definition at line 258 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1outdev__it_a92f06ead0276169036aee90dbee2ca8e}\label{classutl_1_1outdev__it_a92f06ead0276169036aee90dbee2ca8e}} +\index{utl\+::outdev\+\_\+it@{utl\+::outdev\+\_\+it}!pointer@{pointer}} +\index{pointer@{pointer}!utl\+::outdev\+\_\+it@{utl\+::outdev\+\_\+it}} +\subsubsection{\texorpdfstring{pointer}{pointer}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, index\+\_\+t \+\_\+end = static\+\_\+cast$<$index\+\_\+t$>$(-\/1)$>$ \\ +using \mbox{\hyperlink{classutl_1_1outdev__it}{utl\+::outdev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+end $>$\+::\mbox{\hyperlink{classutl_1_1outdev__it_a92f06ead0276169036aee90dbee2ca8e}{pointer}} = typename \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{dev\+\_\+iterator\+\_\+traits}} $<$std\+::output\+\_\+iterator\+\_\+tag, iter\+\_\+t$>$\+::\mbox{\hyperlink{classutl_1_1outdev__it_a92f06ead0276169036aee90dbee2ca8e}{pointer}}} + + + +Definition at line 261 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1outdev__it_ac4fdabc0a410f1cd90e116f3df6806c6}\label{classutl_1_1outdev__it_ac4fdabc0a410f1cd90e116f3df6806c6}} +\index{utl\+::outdev\+\_\+it@{utl\+::outdev\+\_\+it}!reference@{reference}} +\index{reference@{reference}!utl\+::outdev\+\_\+it@{utl\+::outdev\+\_\+it}} +\subsubsection{\texorpdfstring{reference}{reference}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, index\+\_\+t \+\_\+end = static\+\_\+cast$<$index\+\_\+t$>$(-\/1)$>$ \\ +using \mbox{\hyperlink{classutl_1_1outdev__it}{utl\+::outdev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+end $>$\+::\mbox{\hyperlink{classutl_1_1outdev__it_ac4fdabc0a410f1cd90e116f3df6806c6}{reference}} = typename \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{dev\+\_\+iterator\+\_\+traits}} $<$std\+::output\+\_\+iterator\+\_\+tag, iter\+\_\+t$>$\+::\mbox{\hyperlink{classutl_1_1outdev__it_ac4fdabc0a410f1cd90e116f3df6806c6}{reference}}} + + + +Definition at line 262 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1outdev__it_ac9f9b83fbb0b48a8c002638febbca186}\label{classutl_1_1outdev__it_ac9f9b83fbb0b48a8c002638febbca186}} +\index{utl\+::outdev\+\_\+it@{utl\+::outdev\+\_\+it}!type@{type}} +\index{type@{type}!utl\+::outdev\+\_\+it@{utl\+::outdev\+\_\+it}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, index\+\_\+t \+\_\+end = static\+\_\+cast$<$index\+\_\+t$>$(-\/1)$>$ \\ +using \mbox{\hyperlink{classutl_1_1outdev__it}{utl\+::outdev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+end $>$\+::\mbox{\hyperlink{classutl_1_1outdev__it_ac9f9b83fbb0b48a8c002638febbca186}{type}} = \mbox{\hyperlink{classutl_1_1outdev__it}{iterator\+\_\+t}}} + +Export type as identity meta-\/function + +Definition at line 254 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1outdev__it_aa973216f7bc8930b3125e94a0bb664d3}\label{classutl_1_1outdev__it_aa973216f7bc8930b3125e94a0bb664d3}} +\index{utl\+::outdev\+\_\+it@{utl\+::outdev\+\_\+it}!value\+\_\+type@{value\+\_\+type}} +\index{value\+\_\+type@{value\+\_\+type}!utl\+::outdev\+\_\+it@{utl\+::outdev\+\_\+it}} +\subsubsection{\texorpdfstring{value\+\_\+type}{value\_type}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, index\+\_\+t \+\_\+end = static\+\_\+cast$<$index\+\_\+t$>$(-\/1)$>$ \\ +using \mbox{\hyperlink{classutl_1_1outdev__it}{utl\+::outdev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+end $>$\+::\mbox{\hyperlink{classutl_1_1outdev__it_aa973216f7bc8930b3125e94a0bb664d3}{value\+\_\+type}} = typename \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{dev\+\_\+iterator\+\_\+traits}} $<$std\+::output\+\_\+iterator\+\_\+tag, iter\+\_\+t$>$\+::\mbox{\hyperlink{classutl_1_1outdev__it_aa973216f7bc8930b3125e94a0bb664d3}{value\+\_\+type}}} + + + +Definition at line 259 of file dev\+\_\+iterators.\+h. + + + +\subsection{Member Enumeration Documentation} +\mbox{\Hypertarget{classutl_1_1outdev__it_ab5cbe3695bf05af30b14b89f8a16594b}\label{classutl_1_1outdev__it_ab5cbe3695bf05af30b14b89f8a16594b}} +\index{utl\+::outdev\+\_\+it@{utl\+::outdev\+\_\+it}!Cursor@{Cursor}} +\index{Cursor@{Cursor}!utl\+::outdev\+\_\+it@{utl\+::outdev\+\_\+it}} +\subsubsection{\texorpdfstring{Cursor}{Cursor}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, index\+\_\+t \+\_\+end = static\+\_\+cast$<$index\+\_\+t$>$(-\/1)$>$ \\ +enum \mbox{\hyperlink{classutl_1_1outdev__it_ab5cbe3695bf05af30b14b89f8a16594b}{utl\+::outdev\+\_\+it\+::\+Cursor}}} + + + +\#define-\/like enumerator for Cursor + +\begin{DoxyEnumFields}{Enumerator} +\raisebox{\heightof{T}}[0pt][0pt]{\index{beg@{beg}!utl\+::outdev\+\_\+it@{utl\+::outdev\+\_\+it}}\index{utl\+::outdev\+\_\+it@{utl\+::outdev\+\_\+it}!beg@{beg}}}\mbox{\Hypertarget{classutl_1_1outdev__it_ab5cbe3695bf05af30b14b89f8a16594ba8a7a14e955d212cd582610961e7e2769}\label{classutl_1_1outdev__it_ab5cbe3695bf05af30b14b89f8a16594ba8a7a14e955d212cd582610961e7e2769}} +beg&Points the first item (relative address) \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{eod@{eod}!utl\+::outdev\+\_\+it@{utl\+::outdev\+\_\+it}}\index{utl\+::outdev\+\_\+it@{utl\+::outdev\+\_\+it}!eod@{eod}}}\mbox{\Hypertarget{classutl_1_1outdev__it_ab5cbe3695bf05af30b14b89f8a16594ba23a4928e4a78f96314ad442f7bb72e18}\label{classutl_1_1outdev__it_ab5cbe3695bf05af30b14b89f8a16594ba23a4928e4a78f96314ad442f7bb72e18}} +eod&Points one place after last item (relative address) \\ +\hline + +\end{DoxyEnumFields} + + +Definition at line 265 of file dev\+\_\+iterators.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classutl_1_1outdev__it_a691c350e365d9ba037fe5f7541425a50}\label{classutl_1_1outdev__it_a691c350e365d9ba037fe5f7541425a50}} +\index{utl\+::outdev\+\_\+it@{utl\+::outdev\+\_\+it}!outdev\+\_\+it@{outdev\+\_\+it}} +\index{outdev\+\_\+it@{outdev\+\_\+it}!utl\+::outdev\+\_\+it@{utl\+::outdev\+\_\+it}} +\subsubsection{\texorpdfstring{outdev\+\_\+it()}{outdev\_it()}\hspace{0.1cm}{\footnotesize\ttfamily [1/3]}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, index\+\_\+t \+\_\+end = static\+\_\+cast$<$index\+\_\+t$>$(-\/1)$>$ \\ +\mbox{\hyperlink{classutl_1_1outdev__it}{utl\+::outdev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+end $>$\+::\mbox{\hyperlink{classutl_1_1outdev__it}{outdev\+\_\+it}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [explicit]}, {\ttfamily [noexcept]}} + + + +Default constructor results to end() + + + +Definition at line 283 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1outdev__it_ac65bea2b8547649771c73d8110ba1115}\label{classutl_1_1outdev__it_ac65bea2b8547649771c73d8110ba1115}} +\index{utl\+::outdev\+\_\+it@{utl\+::outdev\+\_\+it}!outdev\+\_\+it@{outdev\+\_\+it}} +\index{outdev\+\_\+it@{outdev\+\_\+it}!utl\+::outdev\+\_\+it@{utl\+::outdev\+\_\+it}} +\subsubsection{\texorpdfstring{outdev\+\_\+it()}{outdev\_it()}\hspace{0.1cm}{\footnotesize\ttfamily [2/3]}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, index\+\_\+t \+\_\+end = static\+\_\+cast$<$index\+\_\+t$>$(-\/1)$>$ \\ +\mbox{\hyperlink{classutl_1_1outdev__it}{utl\+::outdev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+end $>$\+::\mbox{\hyperlink{classutl_1_1outdev__it}{outdev\+\_\+it}} (\begin{DoxyParamCaption}\item[{cont\+\_\+t $\ast$}]{owner, }\item[{\mbox{\hyperlink{namespaceutl_a676c0acd539dd04048dcc7b4d698577e}{index\+\_\+t}}}]{cursor = {\ttfamily \mbox{\hyperlink{classutl_1_1outdev__it_ab5cbe3695bf05af30b14b89f8a16594ba23a4928e4a78f96314ad442f7bb72e18}{eod}}} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [explicit]}, {\ttfamily [noexcept]}} + + + +Basic constructor. + + + +Definition at line 287 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1outdev__it_ad7226a24b2576fbc57ad740f04bdde6b}\label{classutl_1_1outdev__it_ad7226a24b2576fbc57ad740f04bdde6b}} +\index{utl\+::outdev\+\_\+it@{utl\+::outdev\+\_\+it}!outdev\+\_\+it@{outdev\+\_\+it}} +\index{outdev\+\_\+it@{outdev\+\_\+it}!utl\+::outdev\+\_\+it@{utl\+::outdev\+\_\+it}} +\subsubsection{\texorpdfstring{outdev\+\_\+it()}{outdev\_it()}\hspace{0.1cm}{\footnotesize\ttfamily [3/3]}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, index\+\_\+t \+\_\+end = static\+\_\+cast$<$index\+\_\+t$>$(-\/1)$>$ \\ +\mbox{\hyperlink{classutl_1_1outdev__it}{utl\+::outdev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+end $>$\+::\mbox{\hyperlink{classutl_1_1outdev__it}{outdev\+\_\+it}} (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1outdev__it}{iterator\+\_\+t}} \&}]{it }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [explicit]}, {\ttfamily [noexcept]}} + + + +Basic copy constructor. + + + +Definition at line 291 of file dev\+\_\+iterators.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classutl_1_1outdev__it_a6d8b5c831aecbc26af139cf849198635}\label{classutl_1_1outdev__it_a6d8b5c831aecbc26af139cf849198635}} +\index{utl\+::outdev\+\_\+it@{utl\+::outdev\+\_\+it}!cursor@{cursor}} +\index{cursor@{cursor}!utl\+::outdev\+\_\+it@{utl\+::outdev\+\_\+it}} +\subsubsection{\texorpdfstring{cursor()}{cursor()}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, index\+\_\+t \+\_\+end = static\+\_\+cast$<$index\+\_\+t$>$(-\/1)$>$ \\ +const \mbox{\hyperlink{namespaceutl_a676c0acd539dd04048dcc7b4d698577e}{index\+\_\+t}} \mbox{\hyperlink{classutl_1_1outdev__it}{utl\+::outdev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+end $>$\+::cursor (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Export cursor for comparison. + + + +Definition at line 343 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1outdev__it_a48013f8a6db805b7233a61fc43891f88}\label{classutl_1_1outdev__it_a48013f8a6db805b7233a61fc43891f88}} +\index{utl\+::outdev\+\_\+it@{utl\+::outdev\+\_\+it}!operator$\ast$@{operator$\ast$}} +\index{operator$\ast$@{operator$\ast$}!utl\+::outdev\+\_\+it@{utl\+::outdev\+\_\+it}} +\subsubsection{\texorpdfstring{operator$\ast$()}{operator*()}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, index\+\_\+t \+\_\+end = static\+\_\+cast$<$index\+\_\+t$>$(-\/1)$>$ \\ +\mbox{\hyperlink{classutl_1_1outdev__it}{iterator\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1outdev__it}{utl\+::outdev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+end $>$\+::operator$\ast$ (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 314 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1outdev__it_a3f8d013e5ea008abfa060028d78f2871}\label{classutl_1_1outdev__it_a3f8d013e5ea008abfa060028d78f2871}} +\index{utl\+::outdev\+\_\+it@{utl\+::outdev\+\_\+it}!operator++@{operator++}} +\index{operator++@{operator++}!utl\+::outdev\+\_\+it@{utl\+::outdev\+\_\+it}} +\subsubsection{\texorpdfstring{operator++()}{operator++()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, index\+\_\+t \+\_\+end = static\+\_\+cast$<$index\+\_\+t$>$(-\/1)$>$ \\ +\mbox{\hyperlink{classutl_1_1outdev__it}{iterator\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1outdev__it}{utl\+::outdev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+end $>$\+::operator++ (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 329 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1outdev__it_a8080fda743df21eb28b20771ba7df912}\label{classutl_1_1outdev__it_a8080fda743df21eb28b20771ba7df912}} +\index{utl\+::outdev\+\_\+it@{utl\+::outdev\+\_\+it}!operator++@{operator++}} +\index{operator++@{operator++}!utl\+::outdev\+\_\+it@{utl\+::outdev\+\_\+it}} +\subsubsection{\texorpdfstring{operator++()}{operator++()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, index\+\_\+t \+\_\+end = static\+\_\+cast$<$index\+\_\+t$>$(-\/1)$>$ \\ +\mbox{\hyperlink{classutl_1_1outdev__it}{iterator\+\_\+t}} \mbox{\hyperlink{classutl_1_1outdev__it}{utl\+::outdev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+end $>$\+::operator++ (\begin{DoxyParamCaption}\item[{int}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 333 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1outdev__it_a96773cf7677881fde81b57db9f8ffaff}\label{classutl_1_1outdev__it_a96773cf7677881fde81b57db9f8ffaff}} +\index{utl\+::outdev\+\_\+it@{utl\+::outdev\+\_\+it}!operator=@{operator=}} +\index{operator=@{operator=}!utl\+::outdev\+\_\+it@{utl\+::outdev\+\_\+it}} +\subsubsection{\texorpdfstring{operator=()}{operator=()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, index\+\_\+t \+\_\+end = static\+\_\+cast$<$index\+\_\+t$>$(-\/1)$>$ \\ +\mbox{\hyperlink{classutl_1_1outdev__it}{iterator\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1outdev__it}{utl\+::outdev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+end $>$\+::operator= (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1outdev__it}{iterator\+\_\+t}} \&}]{it }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Basic copy assignment operator. + + + +Definition at line 295 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1outdev__it_aeb3737becdbcab0e42094bc87d09d79a}\label{classutl_1_1outdev__it_aeb3737becdbcab0e42094bc87d09d79a}} +\index{utl\+::outdev\+\_\+it@{utl\+::outdev\+\_\+it}!operator=@{operator=}} +\index{operator=@{operator=}!utl\+::outdev\+\_\+it@{utl\+::outdev\+\_\+it}} +\subsubsection{\texorpdfstring{operator=()}{operator=()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, index\+\_\+t \+\_\+end = static\+\_\+cast$<$index\+\_\+t$>$(-\/1)$>$ \\ +\mbox{\hyperlink{classutl_1_1outdev__it}{iterator\+\_\+t}}\& \mbox{\hyperlink{classutl_1_1outdev__it}{utl\+::outdev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+end $>$\+::operator= (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1outdev__it_aa973216f7bc8930b3125e94a0bb664d3}{value\+\_\+type}} \&}]{value }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Value-\/assignment operation. Where the output method is invoked. + + +\begin{DoxyParams}{Parameters} +{\em value} & An instance of Cont\+\_\+t\+::data\+\_\+type \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +This iterator, for chained operations. +\end{DoxyReturn} + + +Definition at line 321 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{classutl_1_1outdev__it_a05b35f89ff6e1682b2dbc36198b8e813}\label{classutl_1_1outdev__it_a05b35f89ff6e1682b2dbc36198b8e813}} +\index{utl\+::outdev\+\_\+it@{utl\+::outdev\+\_\+it}!owner@{owner}} +\index{owner@{owner}!utl\+::outdev\+\_\+it@{utl\+::outdev\+\_\+it}} +\subsubsection{\texorpdfstring{owner()}{owner()}} +{\footnotesize\ttfamily template$<$typename cont\+\_\+t, typename iter\+\_\+t, index\+\_\+t \+\_\+beg = 0, index\+\_\+t \+\_\+end = static\+\_\+cast$<$index\+\_\+t$>$(-\/1)$>$ \\ +const cont\+\_\+t$\ast$ \mbox{\hyperlink{classutl_1_1outdev__it}{utl\+::outdev\+\_\+it}}$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+end $>$\+::owner (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Export container for comparison. + + + +Definition at line 341 of file dev\+\_\+iterators.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/dev/\mbox{\hyperlink{dev__iterators_8h}{dev\+\_\+iterators.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classutl_1_1spi__bb__i.eps b/doc/latex/classutl_1_1spi__bb__i.eps new file mode 100644 index 0000000..7344fd8 --- /dev/null +++ b/doc/latex/classutl_1_1spi__bb__i.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 119.047619 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 4.200000 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::spi_bb_i< impl_t, CPOL, CPHA, BitOrder >) cw +(utl::spi_i< spi_bb_i< impl_t, CPOL, CPHA, BitOrder > >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::spi_bb_i< impl_t, CPOL, CPHA, BitOrder >) 0.000000 0.000000 box + (utl::spi_i< spi_bb_i< impl_t, CPOL, CPHA, BitOrder > >) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/classutl_1_1spi__bb__i.tex b/doc/latex/classutl_1_1spi__bb__i.tex new file mode 100644 index 0000000..8233111 --- /dev/null +++ b/doc/latex/classutl_1_1spi__bb__i.tex @@ -0,0 +1,108 @@ +\hypertarget{classutl_1_1spi__bb__i}{}\section{utl\+:\+:spi\+\_\+bb\+\_\+i$<$ impl\+\_\+t, C\+P\+OL, C\+P\+HA, Bit\+Order $>$ Class Template Reference} +\label{classutl_1_1spi__bb__i}\index{utl\+::spi\+\_\+bb\+\_\+i$<$ impl\+\_\+t, C\+P\+O\+L, C\+P\+H\+A, Bit\+Order $>$@{utl\+::spi\+\_\+bb\+\_\+i$<$ impl\+\_\+t, C\+P\+O\+L, C\+P\+H\+A, Bit\+Order $>$}} + + +A bit banking implementation of spi bus inherited from \mbox{\hyperlink{classutl_1_1spi__i}{spi\+\_\+i}} base class. + + + + +{\ttfamily \#include $<$spi\+\_\+bb.\+h$>$} + +Inheritance diagram for utl\+:\+:spi\+\_\+bb\+\_\+i$<$ impl\+\_\+t, C\+P\+OL, C\+P\+HA, Bit\+Order $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{classutl_1_1spi__bb__i} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{classutl_1_1spi__bb__i_a86ccf004bf5ccc8b7c73bd0f9e8dbaa7}{type}} = \mbox{\hyperlink{classutl_1_1spi__bb__i}{spi\+\_\+bb\+\_\+i}}$<$ impl\+\_\+t, C\+P\+OL, C\+P\+HA, Bit\+Order $>$ +\begin{DoxyCompactList}\small\item\em Export type as identity meta-\/function. \end{DoxyCompactList}\end{DoxyCompactItemize} +\subsection*{Protected Member Functions} +\begin{Indent}\textbf{ Object lifetime}\par +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classutl_1_1spi__bb__i_aeac57567cb7db5ebb73bdd8e1f00cb82}{$\sim$spi\+\_\+bb\+\_\+i}} ()=default +\item +\mbox{\hyperlink{classutl_1_1spi__bb__i_a49a61ba9a8e140e45d73e1f634061c6a}{spi\+\_\+bb\+\_\+i}} (uint32\+\_\+t clk) noexcept +\begin{DoxyCompactList}\small\item\em A default constructor. \end{DoxyCompactList}\end{DoxyCompactItemize} +\end{Indent} +\subsection*{Additional Inherited Members} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename impl\+\_\+t, spi\+::cpol C\+P\+OL, spi\+::cpha C\+P\+HA, spi\+::bit\+Order Bit\+Order = spi\+::bit\+Order\+::\+M\+S\+B\+\_\+\+First$>$\newline +class utl\+::spi\+\_\+bb\+\_\+i$<$ impl\+\_\+t, C\+P\+O\+L, C\+P\+H\+A, Bit\+Order $>$} + +A bit banking implementation of spi bus inherited from \mbox{\hyperlink{classutl_1_1spi__i}{spi\+\_\+i}} base class. + +\begin{DoxySeeAlso}{See also} +\mbox{\hyperlink{classutl_1_1spi__i}{spi\+\_\+i}} +\end{DoxySeeAlso} +S\+PI bit banking interface template class using C\+R\+TP. Using the private interface we provide the interface from spi\+\_\+i$<$impl\+\_\+t$>$ + + +\begin{DoxyParams}{Parameters} +{\em impl\+\_\+t} & The C\+R\+TP type (the derived/implementation class typename). \\ +\hline +{\em C\+P\+OL} & Clock polarity \\ +\hline +{\em C\+P\+HA} & Clock phase \\ +\hline +{\em Bit\+Order} & Data transfer bit order \\ +\hline +\end{DoxyParams} + + +Definition at line 56 of file spi\+\_\+bb.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{classutl_1_1spi__bb__i_a86ccf004bf5ccc8b7c73bd0f9e8dbaa7}\label{classutl_1_1spi__bb__i_a86ccf004bf5ccc8b7c73bd0f9e8dbaa7}} +\index{utl\+::spi\+\_\+bb\+\_\+i@{utl\+::spi\+\_\+bb\+\_\+i}!type@{type}} +\index{type@{type}!utl\+::spi\+\_\+bb\+\_\+i@{utl\+::spi\+\_\+bb\+\_\+i}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t, spi\+::cpol C\+P\+OL, spi\+::cpha C\+P\+HA, spi\+::bit\+Order Bit\+Order = spi\+::bit\+Order\+::\+M\+S\+B\+\_\+\+First$>$ \\ +using \mbox{\hyperlink{classutl_1_1spi__bb__i}{utl\+::spi\+\_\+bb\+\_\+i}}$<$ impl\+\_\+t, C\+P\+OL, C\+P\+HA, Bit\+Order $>$\+::\mbox{\hyperlink{classutl_1_1spi__i_aff8ee0a2160cddbb52fce46611a6108f}{type}} = \mbox{\hyperlink{classutl_1_1spi__bb__i}{spi\+\_\+bb\+\_\+i}}$<$impl\+\_\+t, C\+P\+OL, C\+P\+HA, Bit\+Order$>$} + + + +Export type as identity meta-\/function. + + + +Definition at line 60 of file spi\+\_\+bb.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classutl_1_1spi__bb__i_aeac57567cb7db5ebb73bdd8e1f00cb82}\label{classutl_1_1spi__bb__i_aeac57567cb7db5ebb73bdd8e1f00cb82}} +\index{utl\+::spi\+\_\+bb\+\_\+i@{utl\+::spi\+\_\+bb\+\_\+i}!````~spi\+\_\+bb\+\_\+i@{$\sim$spi\+\_\+bb\+\_\+i}} +\index{````~spi\+\_\+bb\+\_\+i@{$\sim$spi\+\_\+bb\+\_\+i}!utl\+::spi\+\_\+bb\+\_\+i@{utl\+::spi\+\_\+bb\+\_\+i}} +\subsubsection{\texorpdfstring{$\sim$spi\+\_\+bb\+\_\+i()}{~spi\_bb\_i()}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t, spi\+::cpol C\+P\+OL, spi\+::cpha C\+P\+HA, spi\+::bit\+Order Bit\+Order = spi\+::bit\+Order\+::\+M\+S\+B\+\_\+\+First$>$ \\ +\mbox{\hyperlink{classutl_1_1spi__bb__i}{utl\+::spi\+\_\+bb\+\_\+i}}$<$ impl\+\_\+t, C\+P\+OL, C\+P\+HA, Bit\+Order $>$\+::$\sim$\mbox{\hyperlink{classutl_1_1spi__bb__i}{spi\+\_\+bb\+\_\+i}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [default]}} + +A default destructor, allow destructor from derived only \mbox{\Hypertarget{classutl_1_1spi__bb__i_a49a61ba9a8e140e45d73e1f634061c6a}\label{classutl_1_1spi__bb__i_a49a61ba9a8e140e45d73e1f634061c6a}} +\index{utl\+::spi\+\_\+bb\+\_\+i@{utl\+::spi\+\_\+bb\+\_\+i}!spi\+\_\+bb\+\_\+i@{spi\+\_\+bb\+\_\+i}} +\index{spi\+\_\+bb\+\_\+i@{spi\+\_\+bb\+\_\+i}!utl\+::spi\+\_\+bb\+\_\+i@{utl\+::spi\+\_\+bb\+\_\+i}} +\subsubsection{\texorpdfstring{spi\+\_\+bb\+\_\+i()}{spi\_bb\_i()}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t, spi\+::cpol C\+P\+OL, spi\+::cpha C\+P\+HA, spi\+::bit\+Order Bit\+Order = spi\+::bit\+Order\+::\+M\+S\+B\+\_\+\+First$>$ \\ +\mbox{\hyperlink{classutl_1_1spi__bb__i}{utl\+::spi\+\_\+bb\+\_\+i}}$<$ impl\+\_\+t, C\+P\+OL, C\+P\+HA, Bit\+Order $>$\+::\mbox{\hyperlink{classutl_1_1spi__bb__i}{spi\+\_\+bb\+\_\+i}} (\begin{DoxyParamCaption}\item[{uint32\+\_\+t}]{clk }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [protected]}, {\ttfamily [noexcept]}} + + + +A default constructor. + + + +Definition at line 69 of file spi\+\_\+bb.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/com/\mbox{\hyperlink{spi__bb_8h}{spi\+\_\+bb.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.eps b/doc/latex/classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.eps new file mode 100644 index 0000000..ae8efbc --- /dev/null +++ b/doc/latex/classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 127.795527 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 3.912500 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >) cw +(utl::spi_i< virtual_tag >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >) 0.000000 0.000000 box + (utl::spi_i< virtual_tag >) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.tex b/doc/latex/classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.tex new file mode 100644 index 0000000..080fd05 --- /dev/null +++ b/doc/latex/classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4.tex @@ -0,0 +1,103 @@ +\hypertarget{classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4}{}\section{utl\+:\+:spi\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag, C\+P\+OL, C\+P\+HA, Bit\+Order $>$ Class Template Reference} +\label{classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4}\index{utl\+::spi\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag, C\+P\+O\+L, C\+P\+H\+A, Bit\+Order $>$@{utl\+::spi\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag, C\+P\+O\+L, C\+P\+H\+A, Bit\+Order $>$}} + + +A virtual base class interface specialization. Using the private virtual interface we provide the interface from \mbox{\hyperlink{classutl_1_1spi__i_3_01virtual__tag_01_4}{spi\+\_\+i$<$virtual\+\_\+tag$>$}} + + + + +{\ttfamily \#include $<$spi\+\_\+bb.\+h$>$} + +Inheritance diagram for utl\+:\+:spi\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag, C\+P\+OL, C\+P\+HA, Bit\+Order $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4_a8318081f8e7803101bddb893afe8fc6a}{type}} = \mbox{\hyperlink{classutl_1_1spi__bb__i}{spi\+\_\+bb\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, C\+P\+OL, C\+P\+HA, Bit\+Order $>$ +\begin{DoxyCompactList}\small\item\em Export type as identity meta-\/function. \end{DoxyCompactList}\end{DoxyCompactItemize} +\subsection*{Protected Member Functions} +\begin{Indent}\textbf{ Object lifetime}\par +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4_a0ee4c601e63ec7097df95347f631c1fb}{$\sim$spi\+\_\+bb\+\_\+i}} ()=default +\item +\mbox{\hyperlink{classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4_a85643f4a35c3fbc6e6d1047a42e8c832}{spi\+\_\+bb\+\_\+i}} (uint32\+\_\+t clk) noexcept +\begin{DoxyCompactList}\small\item\em A default constructor. \end{DoxyCompactList}\end{DoxyCompactItemize} +\end{Indent} +\subsection*{Additional Inherited Members} + + +\subsection{Detailed Description} +\subsubsection*{template$<$spi\+::cpol C\+P\+OL, spi\+::cpha C\+P\+HA, spi\+::bit\+Order Bit\+Order$>$\newline +class utl\+::spi\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag, C\+P\+O\+L, C\+P\+H\+A, Bit\+Order $>$} + +A virtual base class interface specialization. Using the private virtual interface we provide the interface from \mbox{\hyperlink{classutl_1_1spi__i_3_01virtual__tag_01_4}{spi\+\_\+i$<$virtual\+\_\+tag$>$}} + + +\begin{DoxyParams}{Parameters} +{\em impl\+\_\+t} & = \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} \\ +\hline +{\em C\+P\+OL} & Clock polarity \\ +\hline +{\em C\+P\+HA} & Clock phase \\ +\hline +{\em Bit\+Order} & Data transfer bit order \\ +\hline +\end{DoxyParams} + + +Definition at line 190 of file spi\+\_\+bb.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4_a8318081f8e7803101bddb893afe8fc6a}\label{classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4_a8318081f8e7803101bddb893afe8fc6a}} +\index{utl\+::spi\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag, C\+P\+O\+L, C\+P\+H\+A, Bit\+Order $>$@{utl\+::spi\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag, C\+P\+O\+L, C\+P\+H\+A, Bit\+Order $>$}!type@{type}} +\index{type@{type}!utl\+::spi\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag, C\+P\+O\+L, C\+P\+H\+A, Bit\+Order $>$@{utl\+::spi\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag, C\+P\+O\+L, C\+P\+H\+A, Bit\+Order $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$spi\+::cpol C\+P\+OL, spi\+::cpha C\+P\+HA, spi\+::bit\+Order Bit\+Order$>$ \\ +using \mbox{\hyperlink{classutl_1_1spi__bb__i}{utl\+::spi\+\_\+bb\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, C\+P\+OL, C\+P\+HA, Bit\+Order $>$\+::\mbox{\hyperlink{classutl_1_1spi__i_3_01virtual__tag_01_4_ab539774624977f1f86b98269d01d56ba}{type}} = \mbox{\hyperlink{classutl_1_1spi__bb__i}{spi\+\_\+bb\+\_\+i}}$<$\mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, C\+P\+OL, C\+P\+HA, Bit\+Order$>$} + + + +Export type as identity meta-\/function. + + + +Definition at line 192 of file spi\+\_\+bb.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4_a0ee4c601e63ec7097df95347f631c1fb}\label{classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4_a0ee4c601e63ec7097df95347f631c1fb}} +\index{utl\+::spi\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag, C\+P\+O\+L, C\+P\+H\+A, Bit\+Order $>$@{utl\+::spi\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag, C\+P\+O\+L, C\+P\+H\+A, Bit\+Order $>$}!````~spi\+\_\+bb\+\_\+i@{$\sim$spi\+\_\+bb\+\_\+i}} +\index{````~spi\+\_\+bb\+\_\+i@{$\sim$spi\+\_\+bb\+\_\+i}!utl\+::spi\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag, C\+P\+O\+L, C\+P\+H\+A, Bit\+Order $>$@{utl\+::spi\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag, C\+P\+O\+L, C\+P\+H\+A, Bit\+Order $>$}} +\subsubsection{\texorpdfstring{$\sim$spi\+\_\+bb\+\_\+i()}{~spi\_bb\_i()}} +{\footnotesize\ttfamily template$<$spi\+::cpol C\+P\+OL, spi\+::cpha C\+P\+HA, spi\+::bit\+Order Bit\+Order$>$ \\ +\mbox{\hyperlink{classutl_1_1spi__bb__i}{utl\+::spi\+\_\+bb\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, C\+P\+OL, C\+P\+HA, Bit\+Order $>$\+::$\sim$\mbox{\hyperlink{classutl_1_1spi__bb__i}{spi\+\_\+bb\+\_\+i}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [default]}} + +A default destructor, allow destructor from derived only \mbox{\Hypertarget{classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4_a85643f4a35c3fbc6e6d1047a42e8c832}\label{classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4_a85643f4a35c3fbc6e6d1047a42e8c832}} +\index{utl\+::spi\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag, C\+P\+O\+L, C\+P\+H\+A, Bit\+Order $>$@{utl\+::spi\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag, C\+P\+O\+L, C\+P\+H\+A, Bit\+Order $>$}!spi\+\_\+bb\+\_\+i@{spi\+\_\+bb\+\_\+i}} +\index{spi\+\_\+bb\+\_\+i@{spi\+\_\+bb\+\_\+i}!utl\+::spi\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag, C\+P\+O\+L, C\+P\+H\+A, Bit\+Order $>$@{utl\+::spi\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag, C\+P\+O\+L, C\+P\+H\+A, Bit\+Order $>$}} +\subsubsection{\texorpdfstring{spi\+\_\+bb\+\_\+i()}{spi\_bb\_i()}} +{\footnotesize\ttfamily template$<$spi\+::cpol C\+P\+OL, spi\+::cpha C\+P\+HA, spi\+::bit\+Order Bit\+Order$>$ \\ +\mbox{\hyperlink{classutl_1_1spi__bb__i}{utl\+::spi\+\_\+bb\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}, C\+P\+OL, C\+P\+HA, Bit\+Order $>$\+::\mbox{\hyperlink{classutl_1_1spi__bb__i}{spi\+\_\+bb\+\_\+i}} (\begin{DoxyParamCaption}\item[{uint32\+\_\+t}]{clk }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [protected]}, {\ttfamily [noexcept]}} + + + +A default constructor. + + + +Definition at line 201 of file spi\+\_\+bb.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/com/\mbox{\hyperlink{spi__bb_8h}{spi\+\_\+bb.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classutl_1_1spi__i.eps b/doc/latex/classutl_1_1spi__i.eps new file mode 100644 index 0000000..ce250db --- /dev/null +++ b/doc/latex/classutl_1_1spi__i.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 139.860140 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 3.575000 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::spi_i< impl_t >) cw +(utl::spi_bb_i< impl_t, CPOL, CPHA, BitOrder >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::spi_i< impl_t >) 0.000000 1.000000 box + (utl::spi_bb_i< impl_t, CPOL, CPHA, BitOrder >) 0.000000 0.000000 box + +% ----- relations ----- + +solid +1 0.000000 0.250000 out +solid +0 0.000000 0.750000 in diff --git a/doc/latex/classutl_1_1spi__i.tex b/doc/latex/classutl_1_1spi__i.tex new file mode 100644 index 0000000..27ba7bd --- /dev/null +++ b/doc/latex/classutl_1_1spi__i.tex @@ -0,0 +1,238 @@ +\hypertarget{classutl_1_1spi__i}{}\section{utl\+:\+:spi\+\_\+i$<$ impl\+\_\+t $>$ Class Template Reference} +\label{classutl_1_1spi__i}\index{utl\+::spi\+\_\+i$<$ impl\+\_\+t $>$@{utl\+::spi\+\_\+i$<$ impl\+\_\+t $>$}} + + +{\ttfamily \#include $<$spi.\+h$>$} + +Inheritance diagram for utl\+:\+:spi\+\_\+i$<$ impl\+\_\+t $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{classutl_1_1spi__i} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{classutl_1_1spi__i_aff8ee0a2160cddbb52fce46611a6108f}{type}} = \mbox{\hyperlink{classutl_1_1spi__i}{spi\+\_\+i}}$<$ impl\+\_\+t $>$ +\begin{DoxyCompactList}\small\item\em Export type as identity meta-\/function. \end{DoxyCompactList}\end{DoxyCompactItemize} +\subsection*{Public Member Functions} +\begin{Indent}\textbf{ Get/\+Set functions provided by the interface}\par +\begin{DoxyCompactItemize} +\item +uint32\+\_\+t \mbox{\hyperlink{classutl_1_1spi__i_a24cdd0c5ce4ed45a6c1b88ea43328634}{clock}} () const +\item +void \mbox{\hyperlink{classutl_1_1spi__i_a0ebb46a523ace45fd69950f90f9b3af4}{clock}} (uint32\+\_\+t c) +\begin{DoxyCompactList}\small\item\em set clock frequency of the bus \end{DoxyCompactList}\end{DoxyCompactItemize} +\end{Indent} +\begin{Indent}\textbf{ I/O functions provided by the interface}\par +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} \mbox{\hyperlink{classutl_1_1spi__i_ac8376d88480a992ac47699637e1a29a5}{tx\+\_\+data}} (\mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} out) +\item +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1spi__i_af3e303c2982202261700044d31596248}{tx\+\_\+data}} (const \mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} $\ast$out, \mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} $\ast$in, \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} n) +\begin{DoxyCompactList}\small\item\em Transmit a number of bytes to the spi bus and read the response. \end{DoxyCompactList}\item +\mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} \mbox{\hyperlink{classutl_1_1spi__i_a846dead32b91efcb48eed614daf68e8f}{rx\+\_\+data}} () +\item +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1spi__i_a2053009da5364ead720aebd7cc537c21}{rx\+\_\+data}} (\mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} $\ast$in, \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} n) +\begin{DoxyCompactList}\small\item\em Receive a number of bytes from the spi bus while transmitting 0x\+F\+Fs. \end{DoxyCompactList}\end{DoxyCompactItemize} +\end{Indent} +\subsection*{Protected Member Functions} +\begin{Indent}\textbf{ Object lifetime}\par +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classutl_1_1spi__i_ad66605cdf90f6d24cad3dc5ecda94b77}{spi\+\_\+i}} ()=default +\begin{DoxyCompactList}\small\item\em Allow constructor from derived only. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1spi__i_ae77cb8be7d648a62a1ad252d829eccfb}{$\sim$spi\+\_\+i}} ()=default +\begin{DoxyCompactList}\small\item\em Allow destructor from derived only. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1spi__i_a1d6facb9b9adf91a6589fe029325bd55}{spi\+\_\+i}} (const \mbox{\hyperlink{classutl_1_1spi__i_aff8ee0a2160cddbb52fce46611a6108f}{type}} \&)=delete +\begin{DoxyCompactList}\small\item\em No copies. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1spi__i_aff8ee0a2160cddbb52fce46611a6108f}{type}} \& \mbox{\hyperlink{classutl_1_1spi__i_aa5cf05ce005cb23e6317b3eef70bf4b0}{operator=}} (const \mbox{\hyperlink{classutl_1_1spi__i_aff8ee0a2160cddbb52fce46611a6108f}{type}} \&)=delete +\end{DoxyCompactItemize} +\end{Indent} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename impl\+\_\+t$>$\newline +class utl\+::spi\+\_\+i$<$ impl\+\_\+t $>$} + +Template base class for S\+PI communication interface using C\+R\+TP This class force a common interface for S\+PI communication protocol implementations. +\begin{DoxyParams}{Parameters} +{\em impl\+\_\+t} & The C\+R\+TP type (the derived/implementation class typename). \\ +\hline +\end{DoxyParams} + + +Definition at line 67 of file spi.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{classutl_1_1spi__i_aff8ee0a2160cddbb52fce46611a6108f}\label{classutl_1_1spi__i_aff8ee0a2160cddbb52fce46611a6108f}} +\index{utl\+::spi\+\_\+i@{utl\+::spi\+\_\+i}!type@{type}} +\index{type@{type}!utl\+::spi\+\_\+i@{utl\+::spi\+\_\+i}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t$>$ \\ +using \mbox{\hyperlink{classutl_1_1spi__i}{utl\+::spi\+\_\+i}}$<$ impl\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1spi__i_aff8ee0a2160cddbb52fce46611a6108f}{type}} = \mbox{\hyperlink{classutl_1_1spi__i}{spi\+\_\+i}}$<$impl\+\_\+t$>$} + + + +Export type as identity meta-\/function. + + + +Definition at line 71 of file spi.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classutl_1_1spi__i_ad66605cdf90f6d24cad3dc5ecda94b77}\label{classutl_1_1spi__i_ad66605cdf90f6d24cad3dc5ecda94b77}} +\index{utl\+::spi\+\_\+i@{utl\+::spi\+\_\+i}!spi\+\_\+i@{spi\+\_\+i}} +\index{spi\+\_\+i@{spi\+\_\+i}!utl\+::spi\+\_\+i@{utl\+::spi\+\_\+i}} +\subsubsection{\texorpdfstring{spi\+\_\+i()}{spi\_i()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t$>$ \\ +\mbox{\hyperlink{classutl_1_1spi__i}{utl\+::spi\+\_\+i}}$<$ impl\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1spi__i}{spi\+\_\+i}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [default]}} + + + +Allow constructor from derived only. + +\mbox{\Hypertarget{classutl_1_1spi__i_ae77cb8be7d648a62a1ad252d829eccfb}\label{classutl_1_1spi__i_ae77cb8be7d648a62a1ad252d829eccfb}} +\index{utl\+::spi\+\_\+i@{utl\+::spi\+\_\+i}!````~spi\+\_\+i@{$\sim$spi\+\_\+i}} +\index{````~spi\+\_\+i@{$\sim$spi\+\_\+i}!utl\+::spi\+\_\+i@{utl\+::spi\+\_\+i}} +\subsubsection{\texorpdfstring{$\sim$spi\+\_\+i()}{~spi\_i()}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t$>$ \\ +\mbox{\hyperlink{classutl_1_1spi__i}{utl\+::spi\+\_\+i}}$<$ impl\+\_\+t $>$\+::$\sim$\mbox{\hyperlink{classutl_1_1spi__i}{spi\+\_\+i}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [default]}} + + + +Allow destructor from derived only. + +\mbox{\Hypertarget{classutl_1_1spi__i_a1d6facb9b9adf91a6589fe029325bd55}\label{classutl_1_1spi__i_a1d6facb9b9adf91a6589fe029325bd55}} +\index{utl\+::spi\+\_\+i@{utl\+::spi\+\_\+i}!spi\+\_\+i@{spi\+\_\+i}} +\index{spi\+\_\+i@{spi\+\_\+i}!utl\+::spi\+\_\+i@{utl\+::spi\+\_\+i}} +\subsubsection{\texorpdfstring{spi\+\_\+i()}{spi\_i()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t$>$ \\ +\mbox{\hyperlink{classutl_1_1spi__i}{utl\+::spi\+\_\+i}}$<$ impl\+\_\+t $>$\+::\mbox{\hyperlink{classutl_1_1spi__i}{spi\+\_\+i}} (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1spi__i_aff8ee0a2160cddbb52fce46611a6108f}{type}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [delete]}} + + + +No copies. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classutl_1_1spi__i_a24cdd0c5ce4ed45a6c1b88ea43328634}\label{classutl_1_1spi__i_a24cdd0c5ce4ed45a6c1b88ea43328634}} +\index{utl\+::spi\+\_\+i@{utl\+::spi\+\_\+i}!clock@{clock}} +\index{clock@{clock}!utl\+::spi\+\_\+i@{utl\+::spi\+\_\+i}} +\subsubsection{\texorpdfstring{clock()}{clock()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t$>$ \\ +uint32\+\_\+t \mbox{\hyperlink{classutl_1_1spi__i}{utl\+::spi\+\_\+i}}$<$ impl\+\_\+t $>$\+::clock (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + +\begin{DoxyReturn}{Returns} +clock frequency of the bus +\end{DoxyReturn} + + +Definition at line 102 of file spi.\+h. + +\mbox{\Hypertarget{classutl_1_1spi__i_a0ebb46a523ace45fd69950f90f9b3af4}\label{classutl_1_1spi__i_a0ebb46a523ace45fd69950f90f9b3af4}} +\index{utl\+::spi\+\_\+i@{utl\+::spi\+\_\+i}!clock@{clock}} +\index{clock@{clock}!utl\+::spi\+\_\+i@{utl\+::spi\+\_\+i}} +\subsubsection{\texorpdfstring{clock()}{clock()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t$>$ \\ +void \mbox{\hyperlink{classutl_1_1spi__i}{utl\+::spi\+\_\+i}}$<$ impl\+\_\+t $>$\+::clock (\begin{DoxyParamCaption}\item[{uint32\+\_\+t}]{c }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +set clock frequency of the bus + + + +Definition at line 103 of file spi.\+h. + +\mbox{\Hypertarget{classutl_1_1spi__i_aa5cf05ce005cb23e6317b3eef70bf4b0}\label{classutl_1_1spi__i_aa5cf05ce005cb23e6317b3eef70bf4b0}} +\index{utl\+::spi\+\_\+i@{utl\+::spi\+\_\+i}!operator=@{operator=}} +\index{operator=@{operator=}!utl\+::spi\+\_\+i@{utl\+::spi\+\_\+i}} +\subsubsection{\texorpdfstring{operator=()}{operator=()}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t$>$ \\ +\mbox{\hyperlink{classutl_1_1spi__i_aff8ee0a2160cddbb52fce46611a6108f}{type}}\& \mbox{\hyperlink{classutl_1_1spi__i}{utl\+::spi\+\_\+i}}$<$ impl\+\_\+t $>$\+::operator= (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1spi__i_aff8ee0a2160cddbb52fce46611a6108f}{type}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [delete]}} + +\mbox{\Hypertarget{classutl_1_1spi__i_a846dead32b91efcb48eed614daf68e8f}\label{classutl_1_1spi__i_a846dead32b91efcb48eed614daf68e8f}} +\index{utl\+::spi\+\_\+i@{utl\+::spi\+\_\+i}!rx\+\_\+data@{rx\+\_\+data}} +\index{rx\+\_\+data@{rx\+\_\+data}!utl\+::spi\+\_\+i@{utl\+::spi\+\_\+i}} +\subsubsection{\texorpdfstring{rx\+\_\+data()}{rx\_data()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t$>$ \\ +\mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} \mbox{\hyperlink{classutl_1_1spi__i}{utl\+::spi\+\_\+i}}$<$ impl\+\_\+t $>$\+::rx\+\_\+data (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + +Receive a byte from spi bus while transmitting 0x\+FF + +Definition at line 129 of file spi.\+h. + +\mbox{\Hypertarget{classutl_1_1spi__i_a2053009da5364ead720aebd7cc537c21}\label{classutl_1_1spi__i_a2053009da5364ead720aebd7cc537c21}} +\index{utl\+::spi\+\_\+i@{utl\+::spi\+\_\+i}!rx\+\_\+data@{rx\+\_\+data}} +\index{rx\+\_\+data@{rx\+\_\+data}!utl\+::spi\+\_\+i@{utl\+::spi\+\_\+i}} +\subsubsection{\texorpdfstring{rx\+\_\+data()}{rx\_data()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename \+\_\+I $>$ \\ +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1spi__i}{utl\+::spi\+\_\+i}}$<$ \+\_\+I $>$\+::rx\+\_\+data (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} $\ast$}]{in, }\item[{\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}}}]{n }\end{DoxyParamCaption})} + + + +Receive a number of bytes from the spi bus while transmitting 0x\+F\+Fs. + + +\begin{DoxyParams}{Parameters} +{\em in} & Pointer to buffer to store the data \\ +\hline +{\em n} & The number of bytes to read \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +The number of received bytes. +\end{DoxyReturn} + + +Definition at line 165 of file spi.\+h. + +\mbox{\Hypertarget{classutl_1_1spi__i_ac8376d88480a992ac47699637e1a29a5}\label{classutl_1_1spi__i_ac8376d88480a992ac47699637e1a29a5}} +\index{utl\+::spi\+\_\+i@{utl\+::spi\+\_\+i}!tx\+\_\+data@{tx\+\_\+data}} +\index{tx\+\_\+data@{tx\+\_\+data}!utl\+::spi\+\_\+i@{utl\+::spi\+\_\+i}} +\subsubsection{\texorpdfstring{tx\+\_\+data()}{tx\_data()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename impl\+\_\+t$>$ \\ +\mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} \mbox{\hyperlink{classutl_1_1spi__i}{utl\+::spi\+\_\+i}}$<$ impl\+\_\+t $>$\+::tx\+\_\+data (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}}}]{out }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + +Transmit a byte to spi bus and return the response + +Definition at line 114 of file spi.\+h. + +\mbox{\Hypertarget{classutl_1_1spi__i_af3e303c2982202261700044d31596248}\label{classutl_1_1spi__i_af3e303c2982202261700044d31596248}} +\index{utl\+::spi\+\_\+i@{utl\+::spi\+\_\+i}!tx\+\_\+data@{tx\+\_\+data}} +\index{tx\+\_\+data@{tx\+\_\+data}!utl\+::spi\+\_\+i@{utl\+::spi\+\_\+i}} +\subsubsection{\texorpdfstring{tx\+\_\+data()}{tx\_data()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename \+\_\+I $>$ \\ +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1spi__i}{utl\+::spi\+\_\+i}}$<$ \+\_\+I $>$\+::tx\+\_\+data (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} $\ast$}]{out, }\item[{\mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} $\ast$}]{in, }\item[{\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}}}]{n }\end{DoxyParamCaption})} + + + +Transmit a number of bytes to the spi bus and read the response. + + +\begin{DoxyParams}{Parameters} +{\em out} & Pointer to data to send to the bus \\ +\hline +{\em in} & Pointer to buffer to store the data from the bus \\ +\hline +{\em n} & The number of bytes to transmit/receive \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +The number of bytes. +\end{DoxyReturn} + + +Definition at line 152 of file spi.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/com/\mbox{\hyperlink{spi_8h}{spi.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/classutl_1_1spi__i_3_01virtual__tag_01_4.eps b/doc/latex/classutl_1_1spi__i_3_01virtual__tag_01_4.eps new file mode 100644 index 0000000..80b501a --- /dev/null +++ b/doc/latex/classutl_1_1spi__i_3_01virtual__tag_01_4.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 127.795527 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 3.912500 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::spi_i< virtual_tag >) cw +(utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::spi_i< virtual_tag >) 0.000000 1.000000 box + (utl::spi_bb_i< virtual_tag, CPOL, CPHA, BitOrder >) 0.000000 0.000000 box + +% ----- relations ----- + +solid +1 0.000000 0.250000 out +solid +0 0.000000 0.750000 in diff --git a/doc/latex/classutl_1_1spi__i_3_01virtual__tag_01_4.tex b/doc/latex/classutl_1_1spi__i_3_01virtual__tag_01_4.tex new file mode 100644 index 0000000..642b167 --- /dev/null +++ b/doc/latex/classutl_1_1spi__i_3_01virtual__tag_01_4.tex @@ -0,0 +1,228 @@ +\hypertarget{classutl_1_1spi__i_3_01virtual__tag_01_4}{}\section{utl\+:\+:spi\+\_\+i$<$ virtual\+\_\+tag $>$ Class Template Reference} +\label{classutl_1_1spi__i_3_01virtual__tag_01_4}\index{utl\+::spi\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::spi\+\_\+i$<$ virtual\+\_\+tag $>$}} + + +A virtual base class implementation. + + + + +{\ttfamily \#include $<$spi.\+h$>$} + +Inheritance diagram for utl\+:\+:spi\+\_\+i$<$ virtual\+\_\+tag $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{classutl_1_1spi__i_3_01virtual__tag_01_4} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{classutl_1_1spi__i_3_01virtual__tag_01_4_ab539774624977f1f86b98269d01d56ba}{type}} = \mbox{\hyperlink{classutl_1_1spi__i}{spi\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$ +\begin{DoxyCompactList}\small\item\em Export type as identity meta-\/function. \end{DoxyCompactList}\end{DoxyCompactItemize} +\subsection*{Public Member Functions} +\begin{Indent}\textbf{ Get/\+Set functions provided by the interface}\par +\begin{DoxyCompactItemize} +\item +uint32\+\_\+t \mbox{\hyperlink{classutl_1_1spi__i_3_01virtual__tag_01_4_a92a9350f72d3fca45b0900bf2bf5e8d9}{clock}} () const +\item +void \mbox{\hyperlink{classutl_1_1spi__i_3_01virtual__tag_01_4_af168fba0d949aade779a63abf9f4bad2}{clock}} (uint32\+\_\+t c) +\begin{DoxyCompactList}\small\item\em set clock frequency of the bus \end{DoxyCompactList}\end{DoxyCompactItemize} +\end{Indent} +\begin{Indent}\textbf{ I/O functions provided by the interface}\par +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} \mbox{\hyperlink{classutl_1_1spi__i_3_01virtual__tag_01_4_ac7b587521c1fdc83d32164dcee3c7b40}{tx\+\_\+data}} (\mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} out) +\item +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1spi__i_3_01virtual__tag_01_4_a2777c812eb27d7b3d106c55b31819d10}{tx\+\_\+data}} (const \mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} $\ast$out, \mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} $\ast$in, \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} n) +\begin{DoxyCompactList}\small\item\em Transmit a number of bytes to the spi bus and read the response. \end{DoxyCompactList}\item +\mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} \mbox{\hyperlink{classutl_1_1spi__i_3_01virtual__tag_01_4_a8ccd44f6fa97bbfe8cda5595436eb3a7}{rx\+\_\+data}} () +\item +\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1spi__i_3_01virtual__tag_01_4_a59245cc0d924d160268b6813975a7c5f}{rx\+\_\+data}} (\mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} $\ast$in, \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} n) +\begin{DoxyCompactList}\small\item\em Receive a number of bytes from the spi bus while transmitting 0x\+F\+Fs. \end{DoxyCompactList}\end{DoxyCompactItemize} +\end{Indent} +\subsection*{Object lifetime} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{classutl_1_1spi__i_3_01virtual__tag_01_4_a954d8294026bf4628771e588e8a0eb5e}{spi\+\_\+i}} ()=default +\begin{DoxyCompactList}\small\item\em Allow constructor from derived only. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1spi__i_3_01virtual__tag_01_4_a142e481dff89219cab72ec444fc069db}{spi\+\_\+i}} (const \mbox{\hyperlink{classutl_1_1spi__i_3_01virtual__tag_01_4_ab539774624977f1f86b98269d01d56ba}{type}} \&)=delete +\begin{DoxyCompactList}\small\item\em No copies. \end{DoxyCompactList}\item +\mbox{\hyperlink{classutl_1_1spi__i_3_01virtual__tag_01_4_ab539774624977f1f86b98269d01d56ba}{type}} \& \mbox{\hyperlink{classutl_1_1spi__i_3_01virtual__tag_01_4_aa24dd9ed5e342ab0f27b4ef296516e5b}{operator=}} (const \mbox{\hyperlink{classutl_1_1spi__i_3_01virtual__tag_01_4_ab539774624977f1f86b98269d01d56ba}{type}} \&)=delete +\item +virtual \mbox{\hyperlink{classutl_1_1spi__i_3_01virtual__tag_01_4_a7149ebd15799723fe3d2a97566608a19}{$\sim$spi\+\_\+i}} ()=default +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$$>$\newline +class utl\+::spi\+\_\+i$<$ virtual\+\_\+tag $>$} + +A virtual base class implementation. + + +\begin{DoxyParams}{Parameters} +{\em none} & \\ +\hline +\end{DoxyParams} + + +Definition at line 177 of file spi.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{classutl_1_1spi__i_3_01virtual__tag_01_4_ab539774624977f1f86b98269d01d56ba}\label{classutl_1_1spi__i_3_01virtual__tag_01_4_ab539774624977f1f86b98269d01d56ba}} +\index{utl\+::spi\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::spi\+\_\+i$<$ virtual\+\_\+tag $>$}!type@{type}} +\index{type@{type}!utl\+::spi\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::spi\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily using \mbox{\hyperlink{classutl_1_1spi__i}{utl\+::spi\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$\+::\mbox{\hyperlink{classutl_1_1spi__i_3_01virtual__tag_01_4_ab539774624977f1f86b98269d01d56ba}{type}} = \mbox{\hyperlink{classutl_1_1spi__i}{spi\+\_\+i}}$<$\mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}}$>$} + + + +Export type as identity meta-\/function. + + + +Definition at line 179 of file spi.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{classutl_1_1spi__i_3_01virtual__tag_01_4_a954d8294026bf4628771e588e8a0eb5e}\label{classutl_1_1spi__i_3_01virtual__tag_01_4_a954d8294026bf4628771e588e8a0eb5e}} +\index{utl\+::spi\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::spi\+\_\+i$<$ virtual\+\_\+tag $>$}!spi\+\_\+i@{spi\+\_\+i}} +\index{spi\+\_\+i@{spi\+\_\+i}!utl\+::spi\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::spi\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{spi\+\_\+i()}{spi\_i()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily \mbox{\hyperlink{classutl_1_1spi__i}{utl\+::spi\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$\+::\mbox{\hyperlink{classutl_1_1spi__i}{spi\+\_\+i}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [default]}} + + + +Allow constructor from derived only. + +\mbox{\Hypertarget{classutl_1_1spi__i_3_01virtual__tag_01_4_a142e481dff89219cab72ec444fc069db}\label{classutl_1_1spi__i_3_01virtual__tag_01_4_a142e481dff89219cab72ec444fc069db}} +\index{utl\+::spi\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::spi\+\_\+i$<$ virtual\+\_\+tag $>$}!spi\+\_\+i@{spi\+\_\+i}} +\index{spi\+\_\+i@{spi\+\_\+i}!utl\+::spi\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::spi\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{spi\+\_\+i()}{spi\_i()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily \mbox{\hyperlink{classutl_1_1spi__i}{utl\+::spi\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$\+::\mbox{\hyperlink{classutl_1_1spi__i}{spi\+\_\+i}} (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1spi__i_3_01virtual__tag_01_4_ab539774624977f1f86b98269d01d56ba}{type}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [delete]}} + + + +No copies. + +\mbox{\Hypertarget{classutl_1_1spi__i_3_01virtual__tag_01_4_a7149ebd15799723fe3d2a97566608a19}\label{classutl_1_1spi__i_3_01virtual__tag_01_4_a7149ebd15799723fe3d2a97566608a19}} +\index{utl\+::spi\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::spi\+\_\+i$<$ virtual\+\_\+tag $>$}!````~spi\+\_\+i@{$\sim$spi\+\_\+i}} +\index{````~spi\+\_\+i@{$\sim$spi\+\_\+i}!utl\+::spi\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::spi\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{$\sim$spi\+\_\+i()}{~spi\_i()}} +{\footnotesize\ttfamily virtual \mbox{\hyperlink{classutl_1_1spi__i}{utl\+::spi\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$\+::$\sim$\mbox{\hyperlink{classutl_1_1spi__i}{spi\+\_\+i}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}, {\ttfamily [default]}} + +Virtual default destructor + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{classutl_1_1spi__i_3_01virtual__tag_01_4_a92a9350f72d3fca45b0900bf2bf5e8d9}\label{classutl_1_1spi__i_3_01virtual__tag_01_4_a92a9350f72d3fca45b0900bf2bf5e8d9}} +\index{utl\+::spi\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::spi\+\_\+i$<$ virtual\+\_\+tag $>$}!clock@{clock}} +\index{clock@{clock}!utl\+::spi\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::spi\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{clock()}{clock()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily uint32\+\_\+t \mbox{\hyperlink{classutl_1_1spi__i}{utl\+::spi\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$\+::clock (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + +\begin{DoxyReturn}{Returns} +clock frequency of the bus +\end{DoxyReturn} + + +Definition at line 208 of file spi.\+h. + +\mbox{\Hypertarget{classutl_1_1spi__i_3_01virtual__tag_01_4_af168fba0d949aade779a63abf9f4bad2}\label{classutl_1_1spi__i_3_01virtual__tag_01_4_af168fba0d949aade779a63abf9f4bad2}} +\index{utl\+::spi\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::spi\+\_\+i$<$ virtual\+\_\+tag $>$}!clock@{clock}} +\index{clock@{clock}!utl\+::spi\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::spi\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{clock()}{clock()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily void \mbox{\hyperlink{classutl_1_1spi__i}{utl\+::spi\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$\+::clock (\begin{DoxyParamCaption}\item[{uint32\+\_\+t}]{c }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +set clock frequency of the bus + + + +Definition at line 209 of file spi.\+h. + +\mbox{\Hypertarget{classutl_1_1spi__i_3_01virtual__tag_01_4_aa24dd9ed5e342ab0f27b4ef296516e5b}\label{classutl_1_1spi__i_3_01virtual__tag_01_4_aa24dd9ed5e342ab0f27b4ef296516e5b}} +\index{utl\+::spi\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::spi\+\_\+i$<$ virtual\+\_\+tag $>$}!operator=@{operator=}} +\index{operator=@{operator=}!utl\+::spi\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::spi\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{operator=()}{operator=()}} +{\footnotesize\ttfamily \mbox{\hyperlink{classutl_1_1spi__i_3_01virtual__tag_01_4_ab539774624977f1f86b98269d01d56ba}{type}}\& \mbox{\hyperlink{classutl_1_1spi__i}{utl\+::spi\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$\+::operator= (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1spi__i_3_01virtual__tag_01_4_ab539774624977f1f86b98269d01d56ba}{type}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [protected]}, {\ttfamily [delete]}} + +\mbox{\Hypertarget{classutl_1_1spi__i_3_01virtual__tag_01_4_a8ccd44f6fa97bbfe8cda5595436eb3a7}\label{classutl_1_1spi__i_3_01virtual__tag_01_4_a8ccd44f6fa97bbfe8cda5595436eb3a7}} +\index{utl\+::spi\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::spi\+\_\+i$<$ virtual\+\_\+tag $>$}!rx\+\_\+data@{rx\+\_\+data}} +\index{rx\+\_\+data@{rx\+\_\+data}!utl\+::spi\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::spi\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{rx\+\_\+data()}{rx\_data()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily \mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} \mbox{\hyperlink{classutl_1_1spi__i}{utl\+::spi\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$\+::rx\+\_\+data (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + +Receive a byte from spi bus while transmitting 0x\+FF + +Definition at line 235 of file spi.\+h. + +\mbox{\Hypertarget{classutl_1_1spi__i_3_01virtual__tag_01_4_a59245cc0d924d160268b6813975a7c5f}\label{classutl_1_1spi__i_3_01virtual__tag_01_4_a59245cc0d924d160268b6813975a7c5f}} +\index{utl\+::spi\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::spi\+\_\+i$<$ virtual\+\_\+tag $>$}!rx\+\_\+data@{rx\+\_\+data}} +\index{rx\+\_\+data@{rx\+\_\+data}!utl\+::spi\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::spi\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{rx\+\_\+data()}{rx\_data()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1spi__i}{utl\+::spi\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$\+::rx\+\_\+data (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} $\ast$}]{in, }\item[{\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}}}]{n }\end{DoxyParamCaption})} + + + +Receive a number of bytes from the spi bus while transmitting 0x\+F\+Fs. + + +\begin{DoxyParams}{Parameters} +{\em in} & Pointer to buffer to store the data \\ +\hline +{\em n} & The number of bytes to read \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +The number of received bytes. +\end{DoxyReturn} + + +Definition at line 270 of file spi.\+h. + +\mbox{\Hypertarget{classutl_1_1spi__i_3_01virtual__tag_01_4_ac7b587521c1fdc83d32164dcee3c7b40}\label{classutl_1_1spi__i_3_01virtual__tag_01_4_ac7b587521c1fdc83d32164dcee3c7b40}} +\index{utl\+::spi\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::spi\+\_\+i$<$ virtual\+\_\+tag $>$}!tx\+\_\+data@{tx\+\_\+data}} +\index{tx\+\_\+data@{tx\+\_\+data}!utl\+::spi\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::spi\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{tx\+\_\+data()}{tx\_data()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily \mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} \mbox{\hyperlink{classutl_1_1spi__i}{utl\+::spi\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$\+::tx\+\_\+data (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}}}]{out }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + +Transmit a byte to spi bus and return the response + +Definition at line 220 of file spi.\+h. + +\mbox{\Hypertarget{classutl_1_1spi__i_3_01virtual__tag_01_4_a2777c812eb27d7b3d106c55b31819d10}\label{classutl_1_1spi__i_3_01virtual__tag_01_4_a2777c812eb27d7b3d106c55b31819d10}} +\index{utl\+::spi\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::spi\+\_\+i$<$ virtual\+\_\+tag $>$}!tx\+\_\+data@{tx\+\_\+data}} +\index{tx\+\_\+data@{tx\+\_\+data}!utl\+::spi\+\_\+i$<$ virtual\+\_\+tag $>$@{utl\+::spi\+\_\+i$<$ virtual\+\_\+tag $>$}} +\subsubsection{\texorpdfstring{tx\+\_\+data()}{tx\_data()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{classutl_1_1spi__i}{utl\+::spi\+\_\+i}}$<$ \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} $>$\+::tx\+\_\+data (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} $\ast$}]{out, }\item[{\mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} $\ast$}]{in, }\item[{\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}}}]{n }\end{DoxyParamCaption})} + + + +Transmit a number of bytes to the spi bus and read the response. + + +\begin{DoxyParams}{Parameters} +{\em out} & Pointer to data to send to the bus \\ +\hline +{\em in} & Pointer to buffer to store the data from the bus \\ +\hline +{\em n} & The number of bytes to transmit/receive \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +The number of bytes. +\end{DoxyReturn} + + +Definition at line 258 of file spi.\+h. + + + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/com/\mbox{\hyperlink{spi_8h}{spi.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/concepts_8h.tex b/doc/latex/concepts_8h.tex new file mode 100644 index 0000000..450e57e --- /dev/null +++ b/doc/latex/concepts_8h.tex @@ -0,0 +1,40 @@ +\hypertarget{concepts_8h}{}\section{include/utl/concepts/concepts.h File Reference} +\label{concepts_8h}\index{include/utl/concepts/concepts.\+h@{include/utl/concepts/concepts.\+h}} + + +Concepts main include header. + + +{\ttfamily \#include $<$utl/core/impl.\+h$>$}\newline +{\ttfamily \#include $<$utl/concepts/defines.\+h$>$}\newline +{\ttfamily \#include $<$utl/concepts/stl.\+h$>$}\newline +{\ttfamily \#include $<$utl/concepts/iterators.\+h$>$}\newline +\subsection*{Macros} +\begin{DoxyCompactItemize} +\item +\#define \mbox{\hyperlink{concepts_8h_a3488adf4d9de8aadb0085e63c5bcc471}{\+\_\+\+\_\+utl\+\_\+consepts\+\_\+concepts\+\_\+h\+\_\+\+\_\+}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Concepts main include header. + +Copyright (C) 2018-\/2019 Christos Choutouridis + +This program is free software\+: you can redistribute it and/or modify it under the terms of the G\+NU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but W\+I\+T\+H\+O\+UT A\+NY W\+A\+R\+R\+A\+N\+TY; without even the implied warranty of M\+E\+R\+C\+H\+A\+N\+T\+A\+B\+I\+L\+I\+TY or F\+I\+T\+N\+E\+SS F\+OR A P\+A\+R\+T\+I\+C\+U\+L\+AR P\+U\+R\+P\+O\+SE. See the G\+NU Lesser General Public License for more details. + +You should have received a copy of the G\+NU Lesser General Public License along with this program. If not, see \href{http://www.gnu.org/licenses/}{\tt http\+://www.\+gnu.\+org/licenses/}. + +\subsection{Macro Definition Documentation} +\mbox{\Hypertarget{concepts_8h_a3488adf4d9de8aadb0085e63c5bcc471}\label{concepts_8h_a3488adf4d9de8aadb0085e63c5bcc471}} +\index{concepts.\+h@{concepts.\+h}!\+\_\+\+\_\+utl\+\_\+consepts\+\_\+concepts\+\_\+h\+\_\+\+\_\+@{\+\_\+\+\_\+utl\+\_\+consepts\+\_\+concepts\+\_\+h\+\_\+\+\_\+}} +\index{\+\_\+\+\_\+utl\+\_\+consepts\+\_\+concepts\+\_\+h\+\_\+\+\_\+@{\+\_\+\+\_\+utl\+\_\+consepts\+\_\+concepts\+\_\+h\+\_\+\+\_\+}!concepts.\+h@{concepts.\+h}} +\subsubsection{\texorpdfstring{\+\_\+\+\_\+utl\+\_\+consepts\+\_\+concepts\+\_\+h\+\_\+\+\_\+}{\_\_utl\_consepts\_concepts\_h\_\_}} +{\footnotesize\ttfamily \#define \+\_\+\+\_\+utl\+\_\+consepts\+\_\+concepts\+\_\+h\+\_\+\+\_\+} + + + +Definition at line 22 of file concepts.\+h. + diff --git a/doc/latex/crtp_8h.tex b/doc/latex/crtp_8h.tex new file mode 100644 index 0000000..78f3ce8 --- /dev/null +++ b/doc/latex/crtp_8h.tex @@ -0,0 +1,38 @@ +\hypertarget{crtp_8h}{}\section{include/utl/core/crtp.h File Reference} +\label{crtp_8h}\index{include/utl/core/crtp.\+h@{include/utl/core/crtp.\+h}} +{\ttfamily \#include $<$utl/core/impl.\+h$>$}\newline +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structutl_1_1crtp__tag}{utl\+::crtp\+\_\+tag}} +\begin{DoxyCompactList}\small\item\em C\+R\+TP support tag type. \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1virtual__tag}{utl\+::virtual\+\_\+tag}} +\begin{DoxyCompactList}\small\item\em virtual support tag type \end{DoxyCompactList}\end{DoxyCompactItemize} +\subsection*{Namespaces} +\begin{DoxyCompactItemize} +\item + \mbox{\hyperlink{namespaceutl}{utl}} +\begin{DoxyCompactList}\small\item\em S\+TL\textquotesingle{}s core language concepts. \end{DoxyCompactList}\end{DoxyCompactItemize} +\subsection*{Macros} +\begin{DoxyCompactItemize} +\item +\#define \mbox{\hyperlink{crtp_8h_a716d91dbf95e7d113f133e1f3e6da852}{\+\_\+\+C\+R\+T\+P\+\_\+\+I\+M\+PL}}(T) +\end{DoxyCompactItemize} + + +\subsection{Macro Definition Documentation} +\mbox{\Hypertarget{crtp_8h_a716d91dbf95e7d113f133e1f3e6da852}\label{crtp_8h_a716d91dbf95e7d113f133e1f3e6da852}} +\index{crtp.\+h@{crtp.\+h}!\+\_\+\+C\+R\+T\+P\+\_\+\+I\+M\+PL@{\+\_\+\+C\+R\+T\+P\+\_\+\+I\+M\+PL}} +\index{\+\_\+\+C\+R\+T\+P\+\_\+\+I\+M\+PL@{\+\_\+\+C\+R\+T\+P\+\_\+\+I\+M\+PL}!crtp.\+h@{crtp.\+h}} +\subsubsection{\texorpdfstring{\+\_\+\+C\+R\+T\+P\+\_\+\+I\+M\+PL}{\_CRTP\_IMPL}} +{\footnotesize\ttfamily \#define \+\_\+\+C\+R\+T\+P\+\_\+\+I\+M\+PL(\begin{DoxyParamCaption}\item[{}]{T }\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode} +constexpr T& impl() \{ \textcolor{keywordflow}{return} *\textcolor{keyword}{static\_cast<}T*\textcolor{keyword}{>}(\textcolor{keyword}{this}); \} \(\backslash\) + constexpr \textcolor{keyword}{const} T& impl()\textcolor{keyword}{ const }\{ \textcolor{keywordflow}{return} *\textcolor{keyword}{static\_cast<}\textcolor{keyword}{const }T*\textcolor{keyword}{>}(\textcolor{keyword}{this}); \} +\end{DoxyCode} + + +Definition at line 43 of file crtp.\+h. + diff --git a/doc/latex/defines_8h.tex b/doc/latex/defines_8h.tex new file mode 100644 index 0000000..67ae8d0 --- /dev/null +++ b/doc/latex/defines_8h.tex @@ -0,0 +1,28 @@ +\hypertarget{defines_8h}{}\section{include/utl/concepts/defines.h File Reference} +\label{defines_8h}\index{include/utl/concepts/defines.\+h@{include/utl/concepts/defines.\+h}} + + +Concepts defines. + + +\subsection*{Macros} +\begin{DoxyCompactItemize} +\item +\#define \mbox{\hyperlink{group__concepts_ga5d7d78bf161dcc8fb920fb522dc6f216}{utl\+Constrain\+Type}}(\+\_\+\+Concept\+\_\+)~typename +\item +\#define \mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}}~constexpr bool +\begin{DoxyCompactList}\small\item\em utl concept keyword syntax wrapper \end{DoxyCompactList}\item +\#define \mbox{\hyperlink{group__concepts_gae575ec6bb237dd55f86ef2827c63d784}{C\+X\+X\+\_\+\+L\+I\+B\+\_\+\+I\+N\+V\+O\+KE}}~0 +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Concepts defines. + +Copyright (C) 2018-\/2019 Christos Choutouridis + +This program is free software\+: you can redistribute it and/or modify it under the terms of the G\+NU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but W\+I\+T\+H\+O\+UT A\+NY W\+A\+R\+R\+A\+N\+TY; without even the implied warranty of M\+E\+R\+C\+H\+A\+N\+T\+A\+B\+I\+L\+I\+TY or F\+I\+T\+N\+E\+SS F\+OR A P\+A\+R\+T\+I\+C\+U\+L\+AR P\+U\+R\+P\+O\+SE. See the G\+NU Lesser General Public License for more details. + +You should have received a copy of the G\+NU Lesser General Public License along with this program. If not, see \href{http://www.gnu.org/licenses/}{\tt http\+://www.\+gnu.\+org/licenses/}. \ No newline at end of file diff --git a/doc/latex/detection_8h.tex b/doc/latex/detection_8h.tex new file mode 100644 index 0000000..4040469 --- /dev/null +++ b/doc/latex/detection_8h.tex @@ -0,0 +1,71 @@ +\hypertarget{detection_8h}{}\section{include/utl/meta/detection.h File Reference} +\label{detection_8h}\index{include/utl/meta/detection.\+h@{include/utl/meta/detection.\+h}} + + +Detection idiom based on W\+G21\textquotesingle{}s N4502 \mbox{[}\mbox{\hyperlink{detection_8h_n4502}{n4502}} 1\mbox{]} from Walter E. Brown. + + +{\ttfamily \#include $<$utl/core/impl.\+h$>$}\newline +{\ttfamily \#include $<$utl/meta/operations.\+h$>$}\newline +{\ttfamily \#include $<$type\+\_\+traits$>$}\newline +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1nat__}{utl\+::meta\+::nat\+\_\+}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1detector}{utl\+::meta\+::detail\+::detector$<$ Default, Always\+Void, Op, Args $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1detector_3_01_default_00_01void__t_3_01_op_3_01_args_8_8_8_01_4_0c35bdbd19f56980c0b5ee6d490bfb634}{utl\+::meta\+::detail\+::detector$<$ Default, void\+\_\+t$<$ Op$<$ Args... $>$ $>$, Op, Args... $>$}} +\end{DoxyCompactItemize} +\subsection*{Namespaces} +\begin{DoxyCompactItemize} +\item + \mbox{\hyperlink{namespaceutl}{utl}} +\begin{DoxyCompactList}\small\item\em S\+TL\textquotesingle{}s core language concepts. \end{DoxyCompactList}\item + \mbox{\hyperlink{namespaceutl_1_1meta}{utl\+::meta}} +\item + \mbox{\hyperlink{namespaceutl_1_1meta_1_1detail}{utl\+::meta\+::detail}} +\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename... $>$ }\\using \mbox{\hyperlink{group__detection_gac16d50de47cf57734433e9ea636522c5}{utl\+::meta\+::void\+\_\+}} = void +\begin{DoxyCompactList}\small\item\em void\+\_\+ type alias \end{DoxyCompactList}\item +{\footnotesize template$<$typename... $>$ }\\using \mbox{\hyperlink{group__detection_gae7373c997420d16cf37e542eb3cfa3ad}{utl\+::meta\+::void\+\_\+t}} = void +\begin{DoxyCompactList}\small\item\em void\+\_\+t type alias \end{DoxyCompactList}\item +{\footnotesize template$<$typename Default , template$<$ typename... $>$ class Op, typename... Args$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_1_1detail_a835827cb3116483228d6f7f774b68970}{utl\+::meta\+::detail\+::detected\+\_\+or}} = detector$<$ Default, void, Op, Args... $>$ +\begin{DoxyCompactList}\small\item\em helper for detected\+\_\+or\+\_\+t \end{DoxyCompactList}\end{DoxyCompactItemize} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$template$<$ typename... $>$ class Op, typename... Args$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a5329219a9d2f195421a78d8e07873507}{utl\+::meta\+::is\+\_\+detected}} = typename detail\+::detector$<$ nat\+\_\+, void, Op, Args... $>$\+::detected +\item +{\footnotesize template$<$template$<$ typename... $>$ class Op, typename... Args$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_aa654a286b3bc8e6d8116ee1f57087110}{utl\+::meta\+::detected\+\_\+t}} = eval$<$ detail\+::detector$<$ nat\+\_\+, void, Op, Args... $>$ $>$ +\item +{\footnotesize template$<$typename Default , template$<$ typename... $>$ class Op, typename... Args$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a8fd055bc6c6c3b1d551e9605aa35644c}{utl\+::meta\+::detected\+\_\+or\+\_\+t}} = eval$<$ detail\+::detected\+\_\+or$<$ Default, Op, Args... $>$ $>$ +\item +{\footnotesize template$<$typename Expected , template$<$ typename... $>$ class Op, typename... Args$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ad5224ef66e8f40efaaf3ad3d605dd629}{utl\+::meta\+::is\+\_\+detected\+\_\+exact}} = eval$<$ same\+\_\+$<$ Expected, detected\+\_\+t$<$ Op, Args... $>$ $>$ $>$ +\item +{\footnotesize template$<$typename To , template$<$ typename... $>$ class Op, typename... Args$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_afa24702fa15a1d0a8a05761c54b79def}{utl\+::meta\+::is\+\_\+detected\+\_\+convertible}} = eval$<$ std\+::is\+\_\+convertible$<$ detected\+\_\+t$<$ Op, Args... $>$, To $>$ $>$ +\item +{\footnotesize template$<$template$<$ typename... $>$ class Op, typename... Args$>$ }\\constexpr bool \mbox{\hyperlink{namespaceutl_1_1meta_a4f3184ccb8e8ba2a78e2d2e83a0b9885}{utl\+::meta\+::is\+\_\+detected\+\_\+v}} = is\+\_\+detected$<$Op, Args...$>$\+::value +\begin{DoxyCompactList}\small\item\em Detection predicate. \end{DoxyCompactList}\item +{\footnotesize template$<$typename Expected , template$<$ typename... $>$ class Op, typename... Args$>$ }\\constexpr bool \mbox{\hyperlink{namespaceutl_1_1meta_a960827a1d72083a511f8ea4ccc8beceb}{utl\+::meta\+::is\+\_\+detected\+\_\+exact\+\_\+v}} = is\+\_\+detected\+\_\+exact$<$ Expected, Op, Args...$>$\+::value +\begin{DoxyCompactList}\small\item\em evaluates to true if evaluation of Op$<$\+Args...$>$ is {\ttfamily Expected} and to false if not \end{DoxyCompactList}\item +{\footnotesize template$<$typename To , template$<$ typename... $>$ class Op, typename... Args$>$ }\\constexpr bool \mbox{\hyperlink{namespaceutl_1_1meta_acba521b528e775be4b37d2e481e0f138}{utl\+::meta\+::is\+\_\+detected\+\_\+convertible\+\_\+v}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Detection idiom based on W\+G21\textquotesingle{}s N4502 \mbox{[}\mbox{\hyperlink{detection_8h_n4502}{n4502}} 1\mbox{]} from Walter E. Brown. + +\label{detection_8h_n4502}% +\Hypertarget{detection_8h_n4502}% +\mbox{[}1\mbox{]}\+: www.\+open-\/std.\+org/jtc1/sc22/wg21/docs/papers/2015/n4502.pdf + +Copyright (C) 2018-\/2019 Christos Choutouridis + +This program is free software\+: you can redistribute it and/or modify it under the terms of the G\+NU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but W\+I\+T\+H\+O\+UT A\+NY W\+A\+R\+R\+A\+N\+TY; without even the implied warranty of M\+E\+R\+C\+H\+A\+N\+T\+A\+B\+I\+L\+I\+TY or F\+I\+T\+N\+E\+SS F\+OR A P\+A\+R\+T\+I\+C\+U\+L\+AR P\+U\+R\+P\+O\+SE. See the G\+NU Lesser General Public License for more details. + +You should have received a copy of the G\+NU Lesser General Public License along with this program. If not, see \href{http://www.gnu.org/licenses/}{\tt http\+://www.\+gnu.\+org/licenses/}. \ No newline at end of file diff --git a/doc/latex/dev__iterators_8h.tex b/doc/latex/dev__iterators_8h.tex new file mode 100644 index 0000000..6a90795 --- /dev/null +++ b/doc/latex/dev__iterators_8h.tex @@ -0,0 +1,124 @@ +\hypertarget{dev__iterators_8h}{}\section{include/utl/dev/dev\+\_\+iterators.h File Reference} +\label{dev__iterators_8h}\index{include/utl/dev/dev\+\_\+iterators.\+h@{include/utl/dev/dev\+\_\+iterators.\+h}} + + +Iterator collection for devices. + + +{\ttfamily \#include $<$utl/core/impl.\+h$>$}\newline +{\ttfamily \#include $<$utl/meta/meta.\+h$>$}\newline +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{utl\+::dev\+\_\+iterator\+\_\+traits$<$ \+\_\+\+Cat, \+\_\+\+Tp, \+\_\+\+Diff $>$}} +\begin{DoxyCompactList}\small\item\em Device iterator collection. \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1output__iterator__tag}{utl\+::output\+\_\+iterator\+\_\+tag}} +\begin{DoxyCompactList}\small\item\em Iterator tags \mbox{[}std.\+iterator.\+tags\mbox{]} Extension\+: \mbox{\hyperlink{structutl_1_1contiguous__iterator__tag}{contiguous\+\_\+iterator\+\_\+tag}} for denoting contiguous iterators. \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1input__iterator__tag}{utl\+::input\+\_\+iterator\+\_\+tag}} +\item +struct \mbox{\hyperlink{structutl_1_1forward__iterator__tag}{utl\+::forward\+\_\+iterator\+\_\+tag}} +\item +struct \mbox{\hyperlink{structutl_1_1bidirectional__iterator__tag}{utl\+::bidirectional\+\_\+iterator\+\_\+tag}} +\item +struct \mbox{\hyperlink{structutl_1_1random__access__iterator__tag}{utl\+::random\+\_\+access\+\_\+iterator\+\_\+tag}} +\item +struct \mbox{\hyperlink{structutl_1_1contiguous__iterator__tag}{utl\+::contiguous\+\_\+iterator\+\_\+tag}} +\item +class \mbox{\hyperlink{classutl_1_1ostreamdev__it}{utl\+::ostreamdev\+\_\+it$<$ cont\+\_\+t, data\+\_\+t $>$}} +\item +class \mbox{\hyperlink{classutl_1_1istreamdev__it}{utl\+::istreamdev\+\_\+it$<$ cont\+\_\+t, data\+\_\+t $>$}} +\item +class \mbox{\hyperlink{classutl_1_1outdev__it}{utl\+::outdev\+\_\+it$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+end $>$}} +\begin{DoxyCompactList}\small\item\em Output device iterator type. We \char`\"{}future call\char`\"{} interface methods from owner class to provide iterator functionality. \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1outdev__it__details_1_1is__outdev__it__}{utl\+::outdev\+\_\+it\+\_\+details\+::is\+\_\+outdev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, typename $>$}} +\begin{DoxyCompactList}\small\item\em Primary template to catch any non S\+PI interface types. \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1outdev__it__details_1_1is__outdev__it___3_01___tp_00_01meta_1_1void__t_3_01typename8786ebbbd0dc9ca1b14571e779d99d60}{utl\+::outdev\+\_\+it\+\_\+details\+::is\+\_\+outdev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, meta\+::void\+\_\+t$<$ typename \+\_\+\+Tp\+::value\+\_\+type, typename \+\_\+\+Tp\+::difference\+\_\+type, typename \+\_\+\+Tp\+::pointer, typename \+\_\+\+Tp\+::reference, void $>$ $>$}} +\begin{DoxyCompactList}\small\item\em template to catch a proper S\+PI interface type \end{DoxyCompactList}\item +class \mbox{\hyperlink{classutl_1_1indev__it}{utl\+::indev\+\_\+it$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$}} +\begin{DoxyCompactList}\small\item\em Input device iterator type. We \char`\"{}future call\char`\"{} interface methods from owner class to provide iterator functionality. \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1indev__it__details_1_1is__indev__it__}{utl\+::indev\+\_\+it\+\_\+details\+::is\+\_\+indev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, typename $>$}} +\begin{DoxyCompactList}\small\item\em Primary template to catch any non S\+PI interface types. \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1indev__it__details_1_1is__indev__it___3_01___tp_00_01meta_1_1void__t_3_01typename_06508604dcee4010234c84cc332fa196b}{utl\+::indev\+\_\+it\+\_\+details\+::is\+\_\+indev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, meta\+::void\+\_\+t$<$ typename \+\_\+\+Tp\+::value\+\_\+type, typename \+\_\+\+Tp\+::difference\+\_\+type, typename \+\_\+\+Tp\+::pointer, typename \+\_\+\+Tp\+::reference, void $>$ $>$}} +\begin{DoxyCompactList}\small\item\em template to catch a proper S\+PI interface type \end{DoxyCompactList}\item +class \mbox{\hyperlink{classutl_1_1iodev__it}{utl\+::iodev\+\_\+it$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$}} +\begin{DoxyCompactList}\small\item\em Indexed device iterator type. We \char`\"{}future call\char`\"{} interface methods from owner class to provide iterator functionality. \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1idxdev__it__details_1_1is__idxdev__it__}{utl\+::idxdev\+\_\+it\+\_\+details\+::is\+\_\+idxdev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, typename $>$}} +\begin{DoxyCompactList}\small\item\em Primary template to catch any non S\+PI interface types. \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1idxdev__it__details_1_1is__idxdev__it___3_01___tp_00_01meta_1_1void__t_3_01typenamebd9ada52ca7b7570c26d0c280af5e635}{utl\+::idxdev\+\_\+it\+\_\+details\+::is\+\_\+idxdev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, meta\+::void\+\_\+t$<$ typename \+\_\+\+Tp\+::value\+\_\+type, typename \+\_\+\+Tp\+::difference\+\_\+type, typename \+\_\+\+Tp\+::pointer, typename \+\_\+\+Tp\+::reference, void $>$ $>$}} +\begin{DoxyCompactList}\small\item\em template to catch a proper S\+PI interface type \end{DoxyCompactList}\end{DoxyCompactItemize} +\subsection*{Namespaces} +\begin{DoxyCompactItemize} +\item + \mbox{\hyperlink{namespaceutl}{utl}} +\begin{DoxyCompactList}\small\item\em S\+TL\textquotesingle{}s core language concepts. \end{DoxyCompactList}\item + \mbox{\hyperlink{namespaceutl_1_1outdev__it__details}{utl\+::outdev\+\_\+it\+\_\+details}} +\item + \mbox{\hyperlink{namespaceutl_1_1indev__it__details}{utl\+::indev\+\_\+it\+\_\+details}} +\item + \mbox{\hyperlink{namespaceutl_1_1idxdev__it__details}{utl\+::idxdev\+\_\+it\+\_\+details}} +\end{DoxyCompactItemize} +\subsection*{Functions} +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename \+\_\+\+C1 , typename \+\_\+\+D1 , typename \+\_\+\+C2 , typename \+\_\+\+D2 $>$ }\\bool \mbox{\hyperlink{namespaceutl_a5ba78d196f9abb63a1d2fff13cabe636}{utl\+::operator==}} (const istreamdev\+\_\+it$<$ \+\_\+\+C1, \+\_\+\+D1 $>$ \&lhs, const istreamdev\+\_\+it$<$ \+\_\+\+C2, \+\_\+\+D2 $>$ \&rhs) noexcept +\begin{DoxyCompactList}\small\item\em Equality comparison template so that comparison between cv-\/qualified and non-\/cv-\/qualified iterators be valid. \end{DoxyCompactList}\item +{\footnotesize template$<$typename \+\_\+\+C1 , typename \+\_\+\+D1 , typename \+\_\+\+C2 , typename \+\_\+\+D2 $>$ }\\bool \mbox{\hyperlink{namespaceutl_aa7a25ea4d2598ec5db5b37bfaaf55ec3}{utl\+::operator!=}} (const istreamdev\+\_\+it$<$ \+\_\+\+C1, \+\_\+\+D1 $>$ \&lhs, const istreamdev\+\_\+it$<$ \+\_\+\+C2, \+\_\+\+D2 $>$ \&rhs) noexcept +\item +{\footnotesize template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, index\+\_\+t \+\_\+end1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, index\+\_\+t \+\_\+end2$>$ }\\bool \mbox{\hyperlink{namespaceutl_a6726b451c897c4581e8781a819c025ba}{utl\+::operator==}} (const outdev\+\_\+it$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+end1 $>$ \&lhs, const outdev\+\_\+it$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+end2 $>$ \&rhs) noexcept +\begin{DoxyCompactList}\small\item\em Equality comparison template so that comparison between cv-\/qualified and non-\/cv-\/qualified iterators be valid. \end{DoxyCompactList}\item +{\footnotesize template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, index\+\_\+t \+\_\+end1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, index\+\_\+t \+\_\+end2$>$ }\\bool \mbox{\hyperlink{namespaceutl_ada8975062732a20074909f8a3f609538}{utl\+::operator!=}} (const outdev\+\_\+it$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+end1 $>$ \&lhs, const outdev\+\_\+it$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+end2 $>$ \&rhs) noexcept +\begin{DoxyCompactList}\small\item\em Inequality comparison template so that comparison between cv-\/qualified and non-\/cv-\/qualified iterators be valid. \end{DoxyCompactList}\end{DoxyCompactItemize} + +\begin{Indent}\textbf{ indev\+\_\+it Equality\+Comparable \&\& Less\+Than\+Comparable requirements}\par +{\em comparison template so that comparison between cv-\/qualified and non-\/cv-\/qualified iterators be valid }\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ }\\bool \mbox{\hyperlink{namespaceutl_aa30fa8ed97138ea75003069144f78e97}{utl\+::operator==}} (const indev\+\_\+it$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&x, const indev\+\_\+it$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+size2 $>$ \&y) noexcept +\item +{\footnotesize template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ }\\bool \mbox{\hyperlink{namespaceutl_aac9f2116bf5b1463391b2a5ec437ef1d}{utl\+::operator$<$}} (const indev\+\_\+it$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&x, const indev\+\_\+it$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+size2 $>$ \&y) noexcept +\begin{DoxyCompactList}\small\item\em Less than. \end{DoxyCompactList}\item +{\footnotesize template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ }\\bool \mbox{\hyperlink{namespaceutl_a15d049c37bf09ffb29f2a0c0070bf89c}{utl\+::operator!=}} (const indev\+\_\+it$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&x, const indev\+\_\+it$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+size2 $>$ \&y) noexcept +\item +{\footnotesize template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ }\\bool \mbox{\hyperlink{namespaceutl_a93043b2e245bb724c9c2e89577222532}{utl\+::operator$<$=}} (const indev\+\_\+it$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&x, const indev\+\_\+it$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+size2 $>$ \&y) noexcept +\item +{\footnotesize template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ }\\bool \mbox{\hyperlink{namespaceutl_a254af18987f59f185ceeaac1aaf3c1e1}{utl\+::operator$>$}} (const indev\+\_\+it$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&x, const indev\+\_\+it$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+size2 $>$ \&y) noexcept +\item +{\footnotesize template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ }\\bool \mbox{\hyperlink{namespaceutl_abdada8bc0cbd311c4dea3dde078f5483}{utl\+::operator$>$=}} (const indev\+\_\+it$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&x, const indev\+\_\+it$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+size2 $>$ \&y) noexcept +\item +{\footnotesize template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ }\\bool \mbox{\hyperlink{namespaceutl_a7ad3384389159ce575279712fb92e3c6}{utl\+::operator==}} (const iodev\+\_\+it$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&x, const iodev\+\_\+it$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+size2 $>$ \&y) noexcept +\item +{\footnotesize template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ }\\bool \mbox{\hyperlink{namespaceutl_aacd0760a2943441abcc86ef9d825c8b0}{utl\+::operator$<$}} (const iodev\+\_\+it$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&x, const iodev\+\_\+it$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+size2 $>$ \&y) noexcept +\begin{DoxyCompactList}\small\item\em Less than. \end{DoxyCompactList}\item +{\footnotesize template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ }\\bool \mbox{\hyperlink{namespaceutl_a388830b63c30f5ee32a3e2a761c703c8}{utl\+::operator!=}} (const iodev\+\_\+it$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&x, const iodev\+\_\+it$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+size2 $>$ \&y) noexcept +\item +{\footnotesize template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ }\\bool \mbox{\hyperlink{namespaceutl_aa369d59a59c21d50b371b5db6195b043}{utl\+::operator$<$=}} (const iodev\+\_\+it$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&x, const iodev\+\_\+it$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+size2 $>$ \&y) noexcept +\item +{\footnotesize template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ }\\bool \mbox{\hyperlink{namespaceutl_a623dee5dafd7fe274dc205c3e20c96af}{utl\+::operator$>$}} (const iodev\+\_\+it$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&x, const iodev\+\_\+it$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+size2 $>$ \&y) noexcept +\item +{\footnotesize template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ }\\bool \mbox{\hyperlink{namespaceutl_a1988125a6394416aaf6ae85eaafa3ec4}{utl\+::operator$>$=}} (const iodev\+\_\+it$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&x, const iodev\+\_\+it$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+size2 $>$ \&y) noexcept +\end{DoxyCompactItemize} +\end{Indent} +\begin{Indent}\textbf{ iterator arithmetic}\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ }\\auto \mbox{\hyperlink{namespaceutl_aae4b45dc79b7d9b85e0bf83278f88508}{utl\+::operator-\/}} (indev\+\_\+it$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&x, indev\+\_\+it$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&y) noexcept -\/$>$ decltype(x.\+cursor() -\/ y.\+cursor()) +\item +{\footnotesize template$<$typename \+\_\+\+Cont , typename \+\_\+\+It , index\+\_\+t \+\_\+beg, size\+\_\+t \+\_\+size$>$ }\\indev\+\_\+it$<$ \+\_\+\+Cont, \+\_\+\+It, \+\_\+beg, \+\_\+size $>$ \mbox{\hyperlink{namespaceutl_a69289a7a150563ce48244d7f39b33dbb}{utl\+::operator+}} (typename \+\_\+\+Cont\+::difference\+\_\+type n, indev\+\_\+it$<$ \+\_\+\+Cont, \+\_\+\+It, \+\_\+beg, \+\_\+size $>$ \&it) noexcept +\item +{\footnotesize template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ }\\auto \mbox{\hyperlink{namespaceutl_a191590b661dc64e2fd487adb6b5e8889}{utl\+::operator-\/}} (iodev\+\_\+it$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&x, iodev\+\_\+it$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&y) noexcept -\/$>$ decltype(x.\+cursor() -\/ y.\+cursor()) +\item +{\footnotesize template$<$typename \+\_\+\+Cont , typename \+\_\+\+It , index\+\_\+t \+\_\+beg, size\+\_\+t \+\_\+size$>$ }\\iodev\+\_\+it$<$ \+\_\+\+Cont, \+\_\+\+It, \+\_\+beg, \+\_\+size $>$ \mbox{\hyperlink{namespaceutl_a829bc4894560bf7e0a6fd829ac9d3c10}{utl\+::operator+}} (typename \+\_\+\+Cont\+::difference\+\_\+type n, iodev\+\_\+it$<$ \+\_\+\+Cont, \+\_\+\+It, \+\_\+beg, \+\_\+size $>$ \&it) noexcept +\end{DoxyCompactItemize} +\end{Indent} + + +\subsection{Detailed Description} +Iterator collection for devices. + +Copyright (C) 2018 Christos Choutouridis + +This program is free software\+: you can redistribute it and/or modify it under the terms of the G\+NU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but W\+I\+T\+H\+O\+UT A\+NY W\+A\+R\+R\+A\+N\+TY; without even the implied warranty of M\+E\+R\+C\+H\+A\+N\+T\+A\+B\+I\+L\+I\+TY or F\+I\+T\+N\+E\+SS F\+OR A P\+A\+R\+T\+I\+C\+U\+L\+AR P\+U\+R\+P\+O\+SE. See the G\+NU Lesser General Public License for more details. + +You should have received a copy of the G\+NU Lesser General Public License along with this program. If not, see \href{http://www.gnu.org/licenses/}{\tt http\+://www.\+gnu.\+org/licenses/}. \ No newline at end of file diff --git a/doc/latex/dir_13e138d54eb8818da29c3992edef070a.tex b/doc/latex/dir_13e138d54eb8818da29c3992edef070a.tex new file mode 100644 index 0000000..ea9cca6 --- /dev/null +++ b/doc/latex/dir_13e138d54eb8818da29c3992edef070a.tex @@ -0,0 +1,14 @@ +\hypertarget{dir_13e138d54eb8818da29c3992edef070a}{}\section{test Directory Reference} +\label{dir_13e138d54eb8818da29c3992edef070a}\index{test Directory Reference@{test Directory Reference}} +\subsection*{Directories} +\begin{DoxyCompactItemize} +\item +directory \mbox{\hyperlink{dir_aaec33bad2bb7a5d6c86281ead709be5}{eclipse-\/cygwin}} +\item +directory \mbox{\hyperlink{dir_d84abbe486a7f5f39e3c9088ffc1760a}{tests}} +\end{DoxyCompactItemize} +\subsection*{Files} +\begin{DoxyCompactItemize} +\item +file \mbox{\hyperlink{main_8cpp}{main.\+cpp}} +\begin{DoxyCompactList}\small\item\em Test project main file. \end{DoxyCompactList}\end{DoxyCompactItemize} diff --git a/doc/latex/dir_1de759a74730efb26e16b92a33818a86.tex b/doc/latex/dir_1de759a74730efb26e16b92a33818a86.tex new file mode 100644 index 0000000..dff291e --- /dev/null +++ b/doc/latex/dir_1de759a74730efb26e16b92a33818a86.tex @@ -0,0 +1,13 @@ +\hypertarget{dir_1de759a74730efb26e16b92a33818a86}{}\section{include/utl/concepts Directory Reference} +\label{dir_1de759a74730efb26e16b92a33818a86}\index{include/utl/concepts Directory Reference@{include/utl/concepts Directory Reference}} +\subsection*{Files} +\begin{DoxyCompactItemize} +\item +file \mbox{\hyperlink{concepts_8h}{concepts.\+h}} +\begin{DoxyCompactList}\small\item\em Concepts main include header. \end{DoxyCompactList}\item +file \mbox{\hyperlink{defines_8h}{defines.\+h}} +\begin{DoxyCompactList}\small\item\em Concepts defines. \end{DoxyCompactList}\item +file \mbox{\hyperlink{iterators_8h}{iterators.\+h}} +\item +file \mbox{\hyperlink{stl_8h}{stl.\+h}} +\begin{DoxyCompactList}\small\item\em S\+TL\textquotesingle{}s Concepts. \end{DoxyCompactList}\end{DoxyCompactItemize} diff --git a/doc/latex/dir_24134ffae0315e39a5b4fb4f5ac472ee.tex b/doc/latex/dir_24134ffae0315e39a5b4fb4f5ac472ee.tex new file mode 100644 index 0000000..33dc2fe --- /dev/null +++ b/doc/latex/dir_24134ffae0315e39a5b4fb4f5ac472ee.tex @@ -0,0 +1,19 @@ +\hypertarget{dir_24134ffae0315e39a5b4fb4f5ac472ee}{}\section{test/eclipse-\/cygwin/\+C++14-\/\+Concepts/source/tests Directory Reference} +\label{dir_24134ffae0315e39a5b4fb4f5ac472ee}\index{test/eclipse-\/cygwin/\+C++14-\/\+Concepts/source/tests Directory Reference@{test/eclipse-\/cygwin/\+C++14-\/\+Concepts/source/tests Directory Reference}} +\subsection*{Files} +\begin{DoxyCompactItemize} +\item +file \mbox{\hyperlink{_concepts_2source_2tests_2_t_concepts_8d}{T\+Concepts.\+d}} +\item +file \mbox{\hyperlink{_concepts_2source_2tests_2test__1w__impl_8d}{test\+\_\+1w\+\_\+impl.\+d}} +\item +file \mbox{\hyperlink{_concepts_2source_2tests_2test__i2c__impl_8d}{test\+\_\+i2c\+\_\+impl.\+d}} +\item +file \mbox{\hyperlink{_concepts_2source_2tests_2test__ostream__dev_8d}{test\+\_\+ostream\+\_\+dev.\+d}} +\item +file \mbox{\hyperlink{_concepts_2source_2tests_2test__spi__impl_8d}{test\+\_\+spi\+\_\+impl.\+d}} +\item +file \mbox{\hyperlink{_concepts_2source_2tests_2_tinvoke_8d}{Tinvoke.\+d}} +\item +file \mbox{\hyperlink{_tmeta_8d}{Tmeta.\+d}} +\end{DoxyCompactItemize} diff --git a/doc/latex/dir_2b272fa693f0990de7cf333b4d9023f8.tex b/doc/latex/dir_2b272fa693f0990de7cf333b4d9023f8.tex new file mode 100644 index 0000000..51fbd4c --- /dev/null +++ b/doc/latex/dir_2b272fa693f0990de7cf333b4d9023f8.tex @@ -0,0 +1,9 @@ +\hypertarget{dir_2b272fa693f0990de7cf333b4d9023f8}{}\section{include/utl/container Directory Reference} +\label{dir_2b272fa693f0990de7cf333b4d9023f8}\index{include/utl/container Directory Reference@{include/utl/container Directory Reference}} +\subsection*{Files} +\begin{DoxyCompactItemize} +\item +file \mbox{\hyperlink{array_8h}{array.\+h}} +\item +file \mbox{\hyperlink{id_8h}{id.\+h}} +\begin{DoxyCompactList}\small\item\em A container for device I\+Ds. \end{DoxyCompactList}\end{DoxyCompactItemize} diff --git a/doc/latex/dir_4b85ac8f363cc57fa06fe00d732b3ef4.tex b/doc/latex/dir_4b85ac8f363cc57fa06fe00d732b3ef4.tex new file mode 100644 index 0000000..99a92ca --- /dev/null +++ b/doc/latex/dir_4b85ac8f363cc57fa06fe00d732b3ef4.tex @@ -0,0 +1,7 @@ +\hypertarget{dir_4b85ac8f363cc57fa06fe00d732b3ef4}{}\section{test/eclipse-\/cygwin/\+C++14-\/\+Concepts/lib/gtest Directory Reference} +\label{dir_4b85ac8f363cc57fa06fe00d732b3ef4}\index{test/eclipse-\/cygwin/\+C++14-\/\+Concepts/lib/gtest Directory Reference@{test/eclipse-\/cygwin/\+C++14-\/\+Concepts/lib/gtest Directory Reference}} +\subsection*{Files} +\begin{DoxyCompactItemize} +\item +file \mbox{\hyperlink{_concepts_2lib_2gtest_2gtest-all_8d}{gtest-\/all.\+d}} +\end{DoxyCompactItemize} diff --git a/doc/latex/dir_5aedf2f82d2f4f13addc24fda7ca3c64.tex b/doc/latex/dir_5aedf2f82d2f4f13addc24fda7ca3c64.tex new file mode 100644 index 0000000..3be6c02 --- /dev/null +++ b/doc/latex/dir_5aedf2f82d2f4f13addc24fda7ca3c64.tex @@ -0,0 +1,7 @@ +\hypertarget{dir_5aedf2f82d2f4f13addc24fda7ca3c64}{}\section{test/eclipse-\/cygwin/\+C++14-\/\+Concepts/lib Directory Reference} +\label{dir_5aedf2f82d2f4f13addc24fda7ca3c64}\index{test/eclipse-\/cygwin/\+C++14-\/\+Concepts/lib Directory Reference@{test/eclipse-\/cygwin/\+C++14-\/\+Concepts/lib Directory Reference}} +\subsection*{Directories} +\begin{DoxyCompactItemize} +\item +directory \mbox{\hyperlink{dir_4b85ac8f363cc57fa06fe00d732b3ef4}{gtest}} +\end{DoxyCompactItemize} diff --git a/doc/latex/dir_5f9a51ed898ae26d530fbf5192dc35b6.tex b/doc/latex/dir_5f9a51ed898ae26d530fbf5192dc35b6.tex new file mode 100644 index 0000000..81819fc --- /dev/null +++ b/doc/latex/dir_5f9a51ed898ae26d530fbf5192dc35b6.tex @@ -0,0 +1,13 @@ +\hypertarget{dir_5f9a51ed898ae26d530fbf5192dc35b6}{}\section{include/utl/core Directory Reference} +\label{dir_5f9a51ed898ae26d530fbf5192dc35b6}\index{include/utl/core Directory Reference@{include/utl/core Directory Reference}} +\subsection*{Files} +\begin{DoxyCompactItemize} +\item +file \mbox{\hyperlink{crtp_8h}{crtp.\+h}} +\item +file \mbox{\hyperlink{impl_8h}{impl.\+h}} +\begin{DoxyCompactList}\small\item\em Implementation detail main forward header. \end{DoxyCompactList}\item +file \mbox{\hyperlink{types_8h}{types.\+h}} +\begin{DoxyCompactList}\small\item\em Basic type alias support. \end{DoxyCompactList}\item +file \mbox{\hyperlink{version_8h}{version.\+h}} +\begin{DoxyCompactList}\small\item\em version and cpp version checks \end{DoxyCompactList}\end{DoxyCompactItemize} diff --git a/doc/latex/dir_82754f54d9380477ef02477185c1f103.tex b/doc/latex/dir_82754f54d9380477ef02477185c1f103.tex new file mode 100644 index 0000000..4a75e48 --- /dev/null +++ b/doc/latex/dir_82754f54d9380477ef02477185c1f103.tex @@ -0,0 +1,19 @@ +\hypertarget{dir_82754f54d9380477ef02477185c1f103}{}\section{include/utl Directory Reference} +\label{dir_82754f54d9380477ef02477185c1f103}\index{include/utl Directory Reference@{include/utl Directory Reference}} +\subsection*{Directories} +\begin{DoxyCompactItemize} +\item +directory \mbox{\hyperlink{dir_b2ad3c1a6521a4924fa9194d98c323e2}{com}} +\item +directory \mbox{\hyperlink{dir_1de759a74730efb26e16b92a33818a86}{concepts}} +\item +directory \mbox{\hyperlink{dir_2b272fa693f0990de7cf333b4d9023f8}{container}} +\item +directory \mbox{\hyperlink{dir_5f9a51ed898ae26d530fbf5192dc35b6}{core}} +\item +directory \mbox{\hyperlink{dir_e9da18de27e34a68f4aee9f9a960d991}{dev}} +\item +directory \mbox{\hyperlink{dir_c6a55aeb35dd92d90cdd3b5869981960}{meta}} +\item +directory \mbox{\hyperlink{dir_cd2b5ca7f5fdf6a80655358f064ed410}{utility}} +\end{DoxyCompactItemize} diff --git a/doc/latex/dir_8411d781812971a63652b25f8ca24477.tex b/doc/latex/dir_8411d781812971a63652b25f8ca24477.tex new file mode 100644 index 0000000..dee95f9 --- /dev/null +++ b/doc/latex/dir_8411d781812971a63652b25f8ca24477.tex @@ -0,0 +1,23 @@ +\hypertarget{dir_8411d781812971a63652b25f8ca24477}{}\section{test/eclipse-\/cygwin/\+C++14/source/tests Directory Reference} +\label{dir_8411d781812971a63652b25f8ca24477}\index{test/eclipse-\/cygwin/\+C++14/source/tests Directory Reference@{test/eclipse-\/cygwin/\+C++14/source/tests Directory Reference}} +\subsection*{Files} +\begin{DoxyCompactItemize} +\item +file \mbox{\hyperlink{source_2tests_2_t_concepts_8d}{T\+Concepts.\+d}} +\item +file \mbox{\hyperlink{source_2tests_2test__1w__impl_8d}{test\+\_\+1w\+\_\+impl.\+d}} +\item +file \mbox{\hyperlink{source_2tests_2test__i2c__impl_8d}{test\+\_\+i2c\+\_\+impl.\+d}} +\item +file \mbox{\hyperlink{source_2tests_2test__ostream__dev_8d}{test\+\_\+ostream\+\_\+dev.\+d}} +\item +file \mbox{\hyperlink{source_2tests_2test__spi__impl_8d}{test\+\_\+spi\+\_\+impl.\+d}} +\item +file \mbox{\hyperlink{source_2tests_2_tinvoke_8d}{Tinvoke.\+d}} +\item +file \mbox{\hyperlink{_tmeta_basic_8d}{Tmeta\+Basic.\+d}} +\item +file \mbox{\hyperlink{_tmeta_detection_8d}{Tmeta\+Detection.\+d}} +\item +file \mbox{\hyperlink{_tmeta_typelist_8d}{Tmeta\+Typelist.\+d}} +\end{DoxyCompactItemize} diff --git a/doc/latex/dir_8e256609955cbc0738929bb20e4749b4.tex b/doc/latex/dir_8e256609955cbc0738929bb20e4749b4.tex new file mode 100644 index 0000000..fb883c3 --- /dev/null +++ b/doc/latex/dir_8e256609955cbc0738929bb20e4749b4.tex @@ -0,0 +1,7 @@ +\hypertarget{dir_8e256609955cbc0738929bb20e4749b4}{}\section{test/eclipse-\/cygwin/\+C++14/lib Directory Reference} +\label{dir_8e256609955cbc0738929bb20e4749b4}\index{test/eclipse-\/cygwin/\+C++14/lib Directory Reference@{test/eclipse-\/cygwin/\+C++14/lib Directory Reference}} +\subsection*{Directories} +\begin{DoxyCompactItemize} +\item +directory \mbox{\hyperlink{dir_9613c8d8aa19c2ea309ba544861172c5}{gtest}} +\end{DoxyCompactItemize} diff --git a/doc/latex/dir_9613c8d8aa19c2ea309ba544861172c5.tex b/doc/latex/dir_9613c8d8aa19c2ea309ba544861172c5.tex new file mode 100644 index 0000000..ed92638 --- /dev/null +++ b/doc/latex/dir_9613c8d8aa19c2ea309ba544861172c5.tex @@ -0,0 +1,7 @@ +\hypertarget{dir_9613c8d8aa19c2ea309ba544861172c5}{}\section{test/eclipse-\/cygwin/\+C++14/lib/gtest Directory Reference} +\label{dir_9613c8d8aa19c2ea309ba544861172c5}\index{test/eclipse-\/cygwin/\+C++14/lib/gtest Directory Reference@{test/eclipse-\/cygwin/\+C++14/lib/gtest Directory Reference}} +\subsection*{Files} +\begin{DoxyCompactItemize} +\item +file \mbox{\hyperlink{lib_2gtest_2gtest-all_8d}{gtest-\/all.\+d}} +\end{DoxyCompactItemize} diff --git a/doc/latex/dir_a96de09a69cea6234edc1a1514d133f0.tex b/doc/latex/dir_a96de09a69cea6234edc1a1514d133f0.tex new file mode 100644 index 0000000..4875a2c --- /dev/null +++ b/doc/latex/dir_a96de09a69cea6234edc1a1514d133f0.tex @@ -0,0 +1,9 @@ +\hypertarget{dir_a96de09a69cea6234edc1a1514d133f0}{}\section{test/eclipse-\/cygwin/lib/gtest Directory Reference} +\label{dir_a96de09a69cea6234edc1a1514d133f0}\index{test/eclipse-\/cygwin/lib/gtest Directory Reference@{test/eclipse-\/cygwin/lib/gtest Directory Reference}} +\subsection*{Files} +\begin{DoxyCompactItemize} +\item +file \mbox{\hyperlink{gtest-all_8cc}{gtest-\/all.\+cc}} +\item +file \mbox{\hyperlink{gtest_8h}{gtest.\+h}} +\end{DoxyCompactItemize} diff --git a/doc/latex/dir_aaec33bad2bb7a5d6c86281ead709be5.tex b/doc/latex/dir_aaec33bad2bb7a5d6c86281ead709be5.tex new file mode 100644 index 0000000..b315248 --- /dev/null +++ b/doc/latex/dir_aaec33bad2bb7a5d6c86281ead709be5.tex @@ -0,0 +1,11 @@ +\hypertarget{dir_aaec33bad2bb7a5d6c86281ead709be5}{}\section{test/eclipse-\/cygwin Directory Reference} +\label{dir_aaec33bad2bb7a5d6c86281ead709be5}\index{test/eclipse-\/cygwin Directory Reference@{test/eclipse-\/cygwin Directory Reference}} +\subsection*{Directories} +\begin{DoxyCompactItemize} +\item +directory \mbox{\hyperlink{dir_b27f91983daa7c88d19acbf32a947465}{C++14}} +\item +directory \mbox{\hyperlink{dir_ec678fe2ad4670066af397af03cd2f43}{C++14-\/\+Concepts}} +\item +directory \mbox{\hyperlink{dir_c2811dd2f770757e67563302be4130d6}{lib}} +\end{DoxyCompactItemize} diff --git a/doc/latex/dir_ab041ef57e3839706d1cbf08a477bd80.tex b/doc/latex/dir_ab041ef57e3839706d1cbf08a477bd80.tex new file mode 100644 index 0000000..48022ba --- /dev/null +++ b/doc/latex/dir_ab041ef57e3839706d1cbf08a477bd80.tex @@ -0,0 +1,12 @@ +\hypertarget{dir_ab041ef57e3839706d1cbf08a477bd80}{}\section{test/eclipse-\/cygwin/\+C++14-\/\+Concepts/source Directory Reference} +\label{dir_ab041ef57e3839706d1cbf08a477bd80}\index{test/eclipse-\/cygwin/\+C++14-\/\+Concepts/source Directory Reference@{test/eclipse-\/cygwin/\+C++14-\/\+Concepts/source Directory Reference}} +\subsection*{Directories} +\begin{DoxyCompactItemize} +\item +directory \mbox{\hyperlink{dir_24134ffae0315e39a5b4fb4f5ac472ee}{tests}} +\end{DoxyCompactItemize} +\subsection*{Files} +\begin{DoxyCompactItemize} +\item +file \mbox{\hyperlink{_concepts_2source_2main_8d}{main.\+d}} +\end{DoxyCompactItemize} diff --git a/doc/latex/dir_b27f91983daa7c88d19acbf32a947465.tex b/doc/latex/dir_b27f91983daa7c88d19acbf32a947465.tex new file mode 100644 index 0000000..22f43d0 --- /dev/null +++ b/doc/latex/dir_b27f91983daa7c88d19acbf32a947465.tex @@ -0,0 +1,9 @@ +\hypertarget{dir_b27f91983daa7c88d19acbf32a947465}{}\section{test/eclipse-\/cygwin/\+C++14 Directory Reference} +\label{dir_b27f91983daa7c88d19acbf32a947465}\index{test/eclipse-\/cygwin/\+C++14 Directory Reference@{test/eclipse-\/cygwin/\+C++14 Directory Reference}} +\subsection*{Directories} +\begin{DoxyCompactItemize} +\item +directory \mbox{\hyperlink{dir_8e256609955cbc0738929bb20e4749b4}{lib}} +\item +directory \mbox{\hyperlink{dir_ffc5af52851d01e73a12da661e220384}{source}} +\end{DoxyCompactItemize} diff --git a/doc/latex/dir_b2ad3c1a6521a4924fa9194d98c323e2.tex b/doc/latex/dir_b2ad3c1a6521a4924fa9194d98c323e2.tex new file mode 100644 index 0000000..a3ef75d --- /dev/null +++ b/doc/latex/dir_b2ad3c1a6521a4924fa9194d98c323e2.tex @@ -0,0 +1,19 @@ +\hypertarget{dir_b2ad3c1a6521a4924fa9194d98c323e2}{}\section{include/utl/com Directory Reference} +\label{dir_b2ad3c1a6521a4924fa9194d98c323e2}\index{include/utl/com Directory Reference@{include/utl/com Directory Reference}} +\subsection*{Files} +\begin{DoxyCompactItemize} +\item +file \mbox{\hyperlink{__1wire_8h}{\+\_\+1wire.\+h}} +\begin{DoxyCompactList}\small\item\em An 1-\/wire interface implementation. \end{DoxyCompactList}\item +file \mbox{\hyperlink{__1wire__id_8h}{\+\_\+1wire\+\_\+id.\+h}} +\begin{DoxyCompactList}\small\item\em An 1-\/wire Rom ID type. \end{DoxyCompactList}\item +file \mbox{\hyperlink{__1wire__uart_8h}{\+\_\+1wire\+\_\+uart.\+h}} +\begin{DoxyCompactList}\small\item\em A 1-\/wire implementation using a microprocessor\textquotesingle{}s uart for bit timing. \end{DoxyCompactList}\item +file \mbox{\hyperlink{i2c_8h}{i2c.\+h}} +\begin{DoxyCompactList}\small\item\em An Abstract base class interface for the i2c bus. \end{DoxyCompactList}\item +file \mbox{\hyperlink{i2c__bb_8h}{i2c\+\_\+bb.\+h}} +\begin{DoxyCompactList}\small\item\em A bit banking implementation of i2c bus inherited from i2c\+\_\+i base class. \end{DoxyCompactList}\item +file \mbox{\hyperlink{spi_8h}{spi.\+h}} +\begin{DoxyCompactList}\small\item\em An Abstract base class interface for the spi bus. \end{DoxyCompactList}\item +file \mbox{\hyperlink{spi__bb_8h}{spi\+\_\+bb.\+h}} +\begin{DoxyCompactList}\small\item\em A bit banking implementation of spi bus inherited from spi\+\_\+i base class. \end{DoxyCompactList}\end{DoxyCompactItemize} diff --git a/doc/latex/dir_c2811dd2f770757e67563302be4130d6.tex b/doc/latex/dir_c2811dd2f770757e67563302be4130d6.tex new file mode 100644 index 0000000..85efa88 --- /dev/null +++ b/doc/latex/dir_c2811dd2f770757e67563302be4130d6.tex @@ -0,0 +1,7 @@ +\hypertarget{dir_c2811dd2f770757e67563302be4130d6}{}\section{test/eclipse-\/cygwin/lib Directory Reference} +\label{dir_c2811dd2f770757e67563302be4130d6}\index{test/eclipse-\/cygwin/lib Directory Reference@{test/eclipse-\/cygwin/lib Directory Reference}} +\subsection*{Directories} +\begin{DoxyCompactItemize} +\item +directory \mbox{\hyperlink{dir_a96de09a69cea6234edc1a1514d133f0}{gtest}} +\end{DoxyCompactItemize} diff --git a/doc/latex/dir_c6a55aeb35dd92d90cdd3b5869981960.tex b/doc/latex/dir_c6a55aeb35dd92d90cdd3b5869981960.tex new file mode 100644 index 0000000..3960a0f --- /dev/null +++ b/doc/latex/dir_c6a55aeb35dd92d90cdd3b5869981960.tex @@ -0,0 +1,23 @@ +\hypertarget{dir_c6a55aeb35dd92d90cdd3b5869981960}{}\section{include/utl/meta Directory Reference} +\label{dir_c6a55aeb35dd92d90cdd3b5869981960}\index{include/utl/meta Directory Reference@{include/utl/meta Directory Reference}} +\subsection*{Files} +\begin{DoxyCompactItemize} +\item +file \mbox{\hyperlink{detection_8h}{detection.\+h}} +\begin{DoxyCompactList}\small\item\em Detection idiom based on W\+G21\textquotesingle{}s N4502 \mbox{[}\mbox{\hyperlink{detection_8h_n4502}{n4502}} 1\mbox{]} from Walter E. Brown. \end{DoxyCompactList}\item +file \mbox{\hyperlink{integral_8h}{integral.\+h}} +\item +file \mbox{\hyperlink{meta_2invoke_8h}{invoke.\+h}} +\item +file \mbox{\hyperlink{meta_8h}{meta.\+h}} +\begin{DoxyCompactList}\small\item\em Include all meta library. \end{DoxyCompactList}\item +file \mbox{\hyperlink{operations_8h}{operations.\+h}} +\begin{DoxyCompactList}\small\item\em Integral constant operations and logical operations. \end{DoxyCompactList}\item +file \mbox{\hyperlink{selection_8h}{selection.\+h}} +\begin{DoxyCompactList}\small\item\em Template meta-\/programming type selections. \end{DoxyCompactList}\item +file \mbox{\hyperlink{sfinae_8h}{sfinae.\+h}} +\begin{DoxyCompactList}\small\item\em Template meta-\/programming S\+F\+I\+N\+AE helpers. \end{DoxyCompactList}\item +file \mbox{\hyperlink{typelist_8h}{typelist.\+h}} +\begin{DoxyCompactList}\small\item\em A template parameter \char`\"{}container\char`\"{}. \end{DoxyCompactList}\item +file \mbox{\hyperlink{useif_8h}{useif.\+h}} +\begin{DoxyCompactList}\small\item\em Template meta-\/programming S\+F\+I\+N\+AE helpers. \end{DoxyCompactList}\end{DoxyCompactItemize} diff --git a/doc/latex/dir_cd2b5ca7f5fdf6a80655358f064ed410.tex b/doc/latex/dir_cd2b5ca7f5fdf6a80655358f064ed410.tex new file mode 100644 index 0000000..de03ccb --- /dev/null +++ b/doc/latex/dir_cd2b5ca7f5fdf6a80655358f064ed410.tex @@ -0,0 +1,7 @@ +\hypertarget{dir_cd2b5ca7f5fdf6a80655358f064ed410}{}\section{include/utl/utility Directory Reference} +\label{dir_cd2b5ca7f5fdf6a80655358f064ed410}\index{include/utl/utility Directory Reference@{include/utl/utility Directory Reference}} +\subsection*{Files} +\begin{DoxyCompactItemize} +\item +file \mbox{\hyperlink{utility_2invoke_8h}{invoke.\+h}} +\begin{DoxyCompactList}\small\item\em \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke()}} and invoke traits implementation \end{DoxyCompactList}\end{DoxyCompactItemize} diff --git a/doc/latex/dir_d44c64559bbebec7f509842c48db8b23.tex b/doc/latex/dir_d44c64559bbebec7f509842c48db8b23.tex new file mode 100644 index 0000000..59eb353 --- /dev/null +++ b/doc/latex/dir_d44c64559bbebec7f509842c48db8b23.tex @@ -0,0 +1,7 @@ +\hypertarget{dir_d44c64559bbebec7f509842c48db8b23}{}\section{include Directory Reference} +\label{dir_d44c64559bbebec7f509842c48db8b23}\index{include Directory Reference@{include Directory Reference}} +\subsection*{Directories} +\begin{DoxyCompactItemize} +\item +directory \mbox{\hyperlink{dir_82754f54d9380477ef02477185c1f103}{utl}} +\end{DoxyCompactItemize} diff --git a/doc/latex/dir_d84abbe486a7f5f39e3c9088ffc1760a.tex b/doc/latex/dir_d84abbe486a7f5f39e3c9088ffc1760a.tex new file mode 100644 index 0000000..deb6664 --- /dev/null +++ b/doc/latex/dir_d84abbe486a7f5f39e3c9088ffc1760a.tex @@ -0,0 +1,23 @@ +\hypertarget{dir_d84abbe486a7f5f39e3c9088ffc1760a}{}\section{test/tests Directory Reference} +\label{dir_d84abbe486a7f5f39e3c9088ffc1760a}\index{test/tests Directory Reference@{test/tests Directory Reference}} +\subsection*{Files} +\begin{DoxyCompactItemize} +\item +file \mbox{\hyperlink{_t_concepts_8cpp}{T\+Concepts.\+cpp}} +\item +file \mbox{\hyperlink{test__1w__impl_8cpp}{test\+\_\+1w\+\_\+impl.\+cpp}} +\item +file \mbox{\hyperlink{test__i2c__impl_8cpp}{test\+\_\+i2c\+\_\+impl.\+cpp}} +\item +file \mbox{\hyperlink{test__ostream__dev_8cpp}{test\+\_\+ostream\+\_\+dev.\+cpp}} +\item +file \mbox{\hyperlink{test__spi__impl_8cpp}{test\+\_\+spi\+\_\+impl.\+cpp}} +\item +file \mbox{\hyperlink{_tinvoke_8cpp}{Tinvoke.\+cpp}} +\item +file \mbox{\hyperlink{_tmeta_basic_8cpp}{Tmeta\+Basic.\+cpp}} +\item +file \mbox{\hyperlink{_tmeta_detection_8cpp}{Tmeta\+Detection.\+cpp}} +\item +file \mbox{\hyperlink{_tmeta_typelist_8cpp}{Tmeta\+Typelist.\+cpp}} +\end{DoxyCompactItemize} diff --git a/doc/latex/dir_e9da18de27e34a68f4aee9f9a960d991.tex b/doc/latex/dir_e9da18de27e34a68f4aee9f9a960d991.tex new file mode 100644 index 0000000..4d50116 --- /dev/null +++ b/doc/latex/dir_e9da18de27e34a68f4aee9f9a960d991.tex @@ -0,0 +1,17 @@ +\hypertarget{dir_e9da18de27e34a68f4aee9f9a960d991}{}\section{include/utl/dev Directory Reference} +\label{dir_e9da18de27e34a68f4aee9f9a960d991}\index{include/utl/dev Directory Reference@{include/utl/dev Directory Reference}} +\subsection*{Files} +\begin{DoxyCompactItemize} +\item +file \mbox{\hyperlink{dev__iterators_8h}{dev\+\_\+iterators.\+h}} +\begin{DoxyCompactList}\small\item\em Iterator collection for devices. \end{DoxyCompactList}\item +file \mbox{\hyperlink{idx__dev_8h}{idx\+\_\+dev.\+h}} +\begin{DoxyCompactList}\small\item\em Abstract base class implementations for indexed devices interface of utl. \end{DoxyCompactList}\item +file \mbox{\hyperlink{in__dev_8h}{in\+\_\+dev.\+h}} +\begin{DoxyCompactList}\small\item\em Abstract base class interface for input devices of utl. \end{DoxyCompactList}\item +file \mbox{\hyperlink{inbuf__dev_8h}{inbuf\+\_\+dev.\+h}} +\begin{DoxyCompactList}\small\item\em Abstract base class interface for input buffered devices of utl. \end{DoxyCompactList}\item +file \mbox{\hyperlink{ostream__dev_8h}{ostream\+\_\+dev.\+h}} +\begin{DoxyCompactList}\small\item\em Abstract base class interface for output devices of utl. \end{DoxyCompactList}\item +file \mbox{\hyperlink{out__dev_8h}{out\+\_\+dev.\+h}} +\begin{DoxyCompactList}\small\item\em Abstract base class interface for output devices of utl. \end{DoxyCompactList}\end{DoxyCompactItemize} diff --git a/doc/latex/dir_ec678fe2ad4670066af397af03cd2f43.tex b/doc/latex/dir_ec678fe2ad4670066af397af03cd2f43.tex new file mode 100644 index 0000000..6efa658 --- /dev/null +++ b/doc/latex/dir_ec678fe2ad4670066af397af03cd2f43.tex @@ -0,0 +1,9 @@ +\hypertarget{dir_ec678fe2ad4670066af397af03cd2f43}{}\section{test/eclipse-\/cygwin/\+C++14-\/\+Concepts Directory Reference} +\label{dir_ec678fe2ad4670066af397af03cd2f43}\index{test/eclipse-\/cygwin/\+C++14-\/\+Concepts Directory Reference@{test/eclipse-\/cygwin/\+C++14-\/\+Concepts Directory Reference}} +\subsection*{Directories} +\begin{DoxyCompactItemize} +\item +directory \mbox{\hyperlink{dir_5aedf2f82d2f4f13addc24fda7ca3c64}{lib}} +\item +directory \mbox{\hyperlink{dir_ab041ef57e3839706d1cbf08a477bd80}{source}} +\end{DoxyCompactItemize} diff --git a/doc/latex/dir_ffc5af52851d01e73a12da661e220384.tex b/doc/latex/dir_ffc5af52851d01e73a12da661e220384.tex new file mode 100644 index 0000000..f95fd18 --- /dev/null +++ b/doc/latex/dir_ffc5af52851d01e73a12da661e220384.tex @@ -0,0 +1,12 @@ +\hypertarget{dir_ffc5af52851d01e73a12da661e220384}{}\section{test/eclipse-\/cygwin/\+C++14/source Directory Reference} +\label{dir_ffc5af52851d01e73a12da661e220384}\index{test/eclipse-\/cygwin/\+C++14/source Directory Reference@{test/eclipse-\/cygwin/\+C++14/source Directory Reference}} +\subsection*{Directories} +\begin{DoxyCompactItemize} +\item +directory \mbox{\hyperlink{dir_8411d781812971a63652b25f8ca24477}{tests}} +\end{DoxyCompactItemize} +\subsection*{Files} +\begin{DoxyCompactItemize} +\item +file \mbox{\hyperlink{source_2main_8d}{main.\+d}} +\end{DoxyCompactItemize} diff --git a/doc/latex/doxygen.sty b/doc/latex/doxygen.sty new file mode 100644 index 0000000..e457acc --- /dev/null +++ b/doc/latex/doxygen.sty @@ -0,0 +1,503 @@ +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{doxygen} + +% Packages used by this style file +\RequirePackage{alltt} +\RequirePackage{array} +\RequirePackage{calc} +\RequirePackage{float} +\RequirePackage{ifthen} +\RequirePackage{verbatim} +\RequirePackage[table]{xcolor} +\RequirePackage{longtable} +\RequirePackage{tabu} +\RequirePackage{tabularx} +\RequirePackage{multirow} + +%---------- Internal commands used in this style file ---------------- + +\newcommand{\ensurespace}[1]{% + \begingroup% + \setlength{\dimen@}{#1}% + \vskip\z@\@plus\dimen@% + \penalty -100\vskip\z@\@plus -\dimen@% + \vskip\dimen@% + \penalty 9999% + \vskip -\dimen@% + \vskip\z@skip% hide the previous |\vskip| from |\addvspace| + \endgroup% +} + +\newcommand{\DoxyLabelFont}{} +\newcommand{\entrylabel}[1]{% + {% + \parbox[b]{\labelwidth-4pt}{% + \makebox[0pt][l]{\DoxyLabelFont#1}% + \vspace{1.5\baselineskip}% + }% + }% +} + +\newenvironment{DoxyDesc}[1]{% + \ensurespace{4\baselineskip}% + \begin{list}{}{% + \settowidth{\labelwidth}{20pt}% + \setlength{\parsep}{0pt}% + \setlength{\itemsep}{0pt}% + \setlength{\leftmargin}{\labelwidth+\labelsep}% + \renewcommand{\makelabel}{\entrylabel}% + }% + \item[#1]% +}{% + \end{list}% +} + +\newsavebox{\xrefbox} +\newlength{\xreflength} +\newcommand{\xreflabel}[1]{% + \sbox{\xrefbox}{#1}% + \setlength{\xreflength}{\wd\xrefbox}% + \ifthenelse{\xreflength>\labelwidth}{% + \begin{minipage}{\textwidth}% + \setlength{\parindent}{0pt}% + \hangindent=15pt\bfseries #1\vspace{1.2\itemsep}% + \end{minipage}% + }{% + \parbox[b]{\labelwidth}{\makebox[0pt][l]{\textbf{#1}}}% + }% +} + +%---------- Commands used by doxygen LaTeX output generator ---------- + +% Used by
     ... 
    +\newenvironment{DoxyPre}{% + \small% + \begin{alltt}% +}{% + \end{alltt}% + \normalsize% +} + +% Used by @code ... @endcode +\newenvironment{DoxyCode}{% + \par% + \scriptsize% + \begin{alltt}% +}{% + \end{alltt}% + \normalsize% +} + +% Used by @example, @include, @includelineno and @dontinclude +\newenvironment{DoxyCodeInclude}{% + \DoxyCode% +}{% + \endDoxyCode% +} + +% Used by @verbatim ... @endverbatim +\newenvironment{DoxyVerb}{% + \footnotesize% + \verbatim% +}{% + \endverbatim% + \normalsize% +} + +% Used by @verbinclude +\newenvironment{DoxyVerbInclude}{% + \DoxyVerb% +}{% + \endDoxyVerb% +} + +% Used by numbered lists (using '-#' or
      ...
    ) +\newenvironment{DoxyEnumerate}{% + \enumerate% +}{% + \endenumerate% +} + +% Used by bullet lists (using '-', @li, @arg, or
      ...
    ) +\newenvironment{DoxyItemize}{% + \itemize% +}{% + \enditemize% +} + +% Used by description lists (using
    ...
    ) +\newenvironment{DoxyDescription}{% + \description% +}{% + \enddescription% +} + +% Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc +% (only if caption is specified) +\newenvironment{DoxyImage}{% + \begin{figure}[H]% + \begin{center}% +}{% + \end{center}% + \end{figure}% +} + +% Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc +% (only if no caption is specified) +\newenvironment{DoxyImageNoCaption}{% + \begin{center}% +}{% + \end{center}% +} + +% Used by @attention +\newenvironment{DoxyAttention}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @author and @authors +\newenvironment{DoxyAuthor}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @date +\newenvironment{DoxyDate}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @invariant +\newenvironment{DoxyInvariant}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @note +\newenvironment{DoxyNote}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @post +\newenvironment{DoxyPostcond}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @pre +\newenvironment{DoxyPrecond}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @copyright +\newenvironment{DoxyCopyright}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @remark +\newenvironment{DoxyRemark}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @return and @returns +\newenvironment{DoxyReturn}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @since +\newenvironment{DoxySince}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @see +\newenvironment{DoxySeeAlso}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @version +\newenvironment{DoxyVersion}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @warning +\newenvironment{DoxyWarning}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @internal +\newenvironment{DoxyInternal}[1]{% + \paragraph*{#1}% +}{% +} + +% Used by @par and @paragraph +\newenvironment{DoxyParagraph}[1]{% + \begin{list}{}{% + \settowidth{\labelwidth}{40pt}% + \setlength{\leftmargin}{\labelwidth}% + \setlength{\parsep}{0pt}% + \setlength{\itemsep}{-4pt}% + \renewcommand{\makelabel}{\entrylabel}% + }% + \item[#1]% +}{% + \end{list}% +} + +% Used by parameter lists +\newenvironment{DoxyParams}[2][]{% + \tabulinesep=1mm% + \par% + \ifthenelse{\equal{#1}{}}% + {\begin{longtabu} spread 0pt [l]{|X[-1,l]|X[-1,l]|}}% name + description + {\ifthenelse{\equal{#1}{1}}% + {\begin{longtabu} spread 0pt [l]{|X[-1,l]|X[-1,l]|X[-1,l]|}}% in/out + name + desc + {\begin{longtabu} spread 0pt [l]{|X[-1,l]|X[-1,l]|X[-1,l]|X[-1,l]|}}% in/out + type + name + desc + } + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]% + \hline% + \endfirsthead% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]% + \hline% + \endhead% +}{% + \end{longtabu}% + \vspace{6pt}% +} + +% Used for fields of simple structs +\newenvironment{DoxyFields}[1]{% + \tabulinesep=1mm% + \par% + \begin{longtabu} spread 0pt [l]{|X[-1,r]|X[-1,l]|X[-1,l]|}% + \multicolumn{3}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endfirsthead% + \multicolumn{3}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endhead% +}{% + \end{longtabu}% + \vspace{6pt}% +} + +% Used for fields simple class style enums +\newenvironment{DoxyEnumFields}[1]{% + \tabulinesep=1mm% + \par% + \begin{longtabu} spread 0pt [l]{|X[-1,r]|X[-1,l]|}% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endfirsthead% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endhead% +}{% + \end{longtabu}% + \vspace{6pt}% +} + +% Used for parameters within a detailed function description +\newenvironment{DoxyParamCaption}{% + \renewcommand{\item}[2][]{\\ \hspace*{2.0cm} ##1 {\em ##2}}% +}{% +} + +% Used by return value lists +\newenvironment{DoxyRetVals}[1]{% + \tabulinesep=1mm% + \par% + \begin{longtabu} spread 0pt [l]{|X[-1,r]|X[-1,l]|}% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endfirsthead% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endhead% +}{% + \end{longtabu}% + \vspace{6pt}% +} + +% Used by exception lists +\newenvironment{DoxyExceptions}[1]{% + \tabulinesep=1mm% + \par% + \begin{longtabu} spread 0pt [l]{|X[-1,r]|X[-1,l]|}% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endfirsthead% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endhead% +}{% + \end{longtabu}% + \vspace{6pt}% +} + +% Used by template parameter lists +\newenvironment{DoxyTemplParams}[1]{% + \tabulinesep=1mm% + \par% + \begin{longtabu} spread 0pt [l]{|X[-1,r]|X[-1,l]|}% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endfirsthead% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endhead% +}{% + \end{longtabu}% + \vspace{6pt}% +} + +% Used for member lists +\newenvironment{DoxyCompactItemize}{% + \begin{itemize}% + \setlength{\itemsep}{-3pt}% + \setlength{\parsep}{0pt}% + \setlength{\topsep}{0pt}% + \setlength{\partopsep}{0pt}% +}{% + \end{itemize}% +} + +% Used for member descriptions +\newenvironment{DoxyCompactList}{% + \begin{list}{}{% + \setlength{\leftmargin}{0.5cm}% + \setlength{\itemsep}{0pt}% + \setlength{\parsep}{0pt}% + \setlength{\topsep}{0pt}% + \renewcommand{\makelabel}{\hfill}% + }% +}{% + \end{list}% +} + +% Used for reference lists (@bug, @deprecated, @todo, etc.) +\newenvironment{DoxyRefList}{% + \begin{list}{}{% + \setlength{\labelwidth}{10pt}% + \setlength{\leftmargin}{\labelwidth}% + \addtolength{\leftmargin}{\labelsep}% + \renewcommand{\makelabel}{\xreflabel}% + }% +}{% + \end{list}% +} + +% Used by @bug, @deprecated, @todo, etc. +\newenvironment{DoxyRefDesc}[1]{% + \begin{list}{}{% + \renewcommand\makelabel[1]{\textbf{##1}}% + \settowidth\labelwidth{\makelabel{#1}}% + \setlength\leftmargin{\labelwidth+\labelsep}% + }% +}{% + \end{list}% +} + +% Used by parameter lists and simple sections +\newenvironment{Desc} +{\begin{list}{}{% + \settowidth{\labelwidth}{20pt}% + \setlength{\parsep}{0pt}% + \setlength{\itemsep}{0pt}% + \setlength{\leftmargin}{\labelwidth+\labelsep}% + \renewcommand{\makelabel}{\entrylabel}% + } +}{% + \end{list}% +} + +% Used by tables +\newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp}% +\newenvironment{TabularC}[1]% +{\tabulinesep=1mm +\begin{longtabu} spread 0pt [c]{*#1{|X[-1]}|}}% +{\end{longtabu}\par}% + +\newenvironment{TabularNC}[1]% +{\begin{tabu} spread 0pt [l]{*#1{|X[-1]}|}}% +{\end{tabu}\par}% + +% Used for member group headers +\newenvironment{Indent}{% + \begin{list}{}{% + \setlength{\leftmargin}{0.5cm}% + }% + \item[]\ignorespaces% +}{% + \unskip% + \end{list}% +} + +% Used when hyperlinks are turned off +\newcommand{\doxyref}[3]{% + \textbf{#1} (\textnormal{#2}\,\pageref{#3})% +} + +% Used to link to a table when hyperlinks are turned on +\newcommand{\doxytablelink}[2]{% + \ref{#1}% +} + +% Used to link to a table when hyperlinks are turned off +\newcommand{\doxytableref}[3]{% + \ref{#3}% +} + +% Used by @addindex +\newcommand{\lcurly}{\{} +\newcommand{\rcurly}{\}} + +% Colors used for syntax highlighting +\definecolor{comment}{rgb}{0.5,0.0,0.0} +\definecolor{keyword}{rgb}{0.0,0.5,0.0} +\definecolor{keywordtype}{rgb}{0.38,0.25,0.125} +\definecolor{keywordflow}{rgb}{0.88,0.5,0.0} +\definecolor{preprocessor}{rgb}{0.5,0.38,0.125} +\definecolor{stringliteral}{rgb}{0.0,0.125,0.25} +\definecolor{charliteral}{rgb}{0.0,0.5,0.5} +\definecolor{vhdldigit}{rgb}{1.0,0.0,1.0} +\definecolor{vhdlkeyword}{rgb}{0.43,0.0,0.43} +\definecolor{vhdllogic}{rgb}{1.0,0.0,0.0} +\definecolor{vhdlchar}{rgb}{0.0,0.0,0.0} + +% Color used for table heading +\newcommand{\tableheadbgcolor}{lightgray}% + +% Version of hypertarget with correct landing location +\newcommand{\Hypertarget}[1]{\Hy@raisedlink{\hypertarget{#1}{}}} + +% Define caption that is also suitable in a table +\makeatletter +\def\doxyfigcaption{% +\refstepcounter{figure}% +\@dblarg{\@caption{figure}}} +\makeatother diff --git a/doc/latex/examples.tex b/doc/latex/examples.tex new file mode 100644 index 0000000..917e583 --- /dev/null +++ b/doc/latex/examples.tex @@ -0,0 +1,11 @@ +\section{Examples} +Here is a list of all examples\+:\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2concepts_2defines_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/concepts/defines.\+h}} +\item +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2detection_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/detection.\+h}} +\item +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/invoke.\+h}} +\item +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}} +\end{DoxyCompactItemize} diff --git a/doc/latex/files.tex b/doc/latex/files.tex new file mode 100644 index 0000000..7ee0d9e --- /dev/null +++ b/doc/latex/files.tex @@ -0,0 +1,68 @@ +\section{File List} +Here is a list of all files with brief descriptions\+:\begin{DoxyCompactList} +\item\contentsline{section}{include/utl/com/\mbox{\hyperlink{__1wire_8h}{\+\_\+1wire.\+h}} \\*An 1-\/wire interface implementation }{\pageref{__1wire_8h}}{} +\item\contentsline{section}{include/utl/com/\mbox{\hyperlink{__1wire__id_8h}{\+\_\+1wire\+\_\+id.\+h}} \\*An 1-\/wire Rom ID type }{\pageref{__1wire__id_8h}}{} +\item\contentsline{section}{include/utl/com/\mbox{\hyperlink{__1wire__uart_8h}{\+\_\+1wire\+\_\+uart.\+h}} \\*A 1-\/wire implementation using a microprocessor\textquotesingle{}s uart for bit timing }{\pageref{__1wire__uart_8h}}{} +\item\contentsline{section}{include/utl/com/\mbox{\hyperlink{i2c_8h}{i2c.\+h}} \\*An Abstract base class interface for the i2c bus }{\pageref{i2c_8h}}{} +\item\contentsline{section}{include/utl/com/\mbox{\hyperlink{i2c__bb_8h}{i2c\+\_\+bb.\+h}} \\*A bit banking implementation of i2c bus inherited from i2c\+\_\+i base class }{\pageref{i2c__bb_8h}}{} +\item\contentsline{section}{include/utl/com/\mbox{\hyperlink{spi_8h}{spi.\+h}} \\*An Abstract base class interface for the spi bus }{\pageref{spi_8h}}{} +\item\contentsline{section}{include/utl/com/\mbox{\hyperlink{spi__bb_8h}{spi\+\_\+bb.\+h}} \\*A bit banking implementation of spi bus inherited from spi\+\_\+i base class }{\pageref{spi__bb_8h}}{} +\item\contentsline{section}{include/utl/concepts/\mbox{\hyperlink{concepts_8h}{concepts.\+h}} \\*Concepts main include header }{\pageref{concepts_8h}}{} +\item\contentsline{section}{include/utl/concepts/\mbox{\hyperlink{defines_8h}{defines.\+h}} \\*Concepts defines }{\pageref{defines_8h}}{} +\item\contentsline{section}{include/utl/concepts/\mbox{\hyperlink{iterators_8h}{iterators.\+h}} }{\pageref{iterators_8h}}{} +\item\contentsline{section}{include/utl/concepts/\mbox{\hyperlink{stl_8h}{stl.\+h}} \\*S\+TL\textquotesingle{}s Concepts }{\pageref{stl_8h}}{} +\item\contentsline{section}{include/utl/container/\mbox{\hyperlink{array_8h}{array.\+h}} }{\pageref{array_8h}}{} +\item\contentsline{section}{include/utl/container/\mbox{\hyperlink{id_8h}{id.\+h}} \\*A container for device I\+Ds }{\pageref{id_8h}}{} +\item\contentsline{section}{include/utl/core/\mbox{\hyperlink{crtp_8h}{crtp.\+h}} }{\pageref{crtp_8h}}{} +\item\contentsline{section}{include/utl/core/\mbox{\hyperlink{impl_8h}{impl.\+h}} \\*Implementation detail main forward header }{\pageref{impl_8h}}{} +\item\contentsline{section}{include/utl/core/\mbox{\hyperlink{types_8h}{types.\+h}} \\*Basic type alias support }{\pageref{types_8h}}{} +\item\contentsline{section}{include/utl/core/\mbox{\hyperlink{version_8h}{version.\+h}} \\*Version and cpp version checks }{\pageref{version_8h}}{} +\item\contentsline{section}{include/utl/dev/\mbox{\hyperlink{dev__iterators_8h}{dev\+\_\+iterators.\+h}} \\*Iterator collection for devices }{\pageref{dev__iterators_8h}}{} +\item\contentsline{section}{include/utl/dev/\mbox{\hyperlink{idx__dev_8h}{idx\+\_\+dev.\+h}} \\*Abstract base class implementations for indexed devices interface of utl }{\pageref{idx__dev_8h}}{} +\item\contentsline{section}{include/utl/dev/\mbox{\hyperlink{in__dev_8h}{in\+\_\+dev.\+h}} \\*Abstract base class interface for input devices of utl }{\pageref{in__dev_8h}}{} +\item\contentsline{section}{include/utl/dev/\mbox{\hyperlink{inbuf__dev_8h}{inbuf\+\_\+dev.\+h}} \\*Abstract base class interface for input buffered devices of utl }{\pageref{inbuf__dev_8h}}{} +\item\contentsline{section}{include/utl/dev/\mbox{\hyperlink{ostream__dev_8h}{ostream\+\_\+dev.\+h}} \\*Abstract base class interface for output devices of utl }{\pageref{ostream__dev_8h}}{} +\item\contentsline{section}{include/utl/dev/\mbox{\hyperlink{out__dev_8h}{out\+\_\+dev.\+h}} \\*Abstract base class interface for output devices of utl }{\pageref{out__dev_8h}}{} +\item\contentsline{section}{include/utl/meta/\mbox{\hyperlink{detection_8h}{detection.\+h}} \\*Detection idiom based on W\+G21\textquotesingle{}s N4502 \mbox{[}\mbox{\hyperlink{detection_8h_n4502}{n4502}} 1\mbox{]} from Walter E. Brown }{\pageref{detection_8h}}{} +\item\contentsline{section}{include/utl/meta/\mbox{\hyperlink{integral_8h}{integral.\+h}} }{\pageref{integral_8h}}{} +\item\contentsline{section}{include/utl/meta/\mbox{\hyperlink{meta_2invoke_8h}{invoke.\+h}} }{\pageref{meta_2invoke_8h}}{} +\item\contentsline{section}{include/utl/meta/\mbox{\hyperlink{meta_8h}{meta.\+h}} \\*Include all meta library }{\pageref{meta_8h}}{} +\item\contentsline{section}{include/utl/meta/\mbox{\hyperlink{operations_8h}{operations.\+h}} \\*Integral constant operations and logical operations }{\pageref{operations_8h}}{} +\item\contentsline{section}{include/utl/meta/\mbox{\hyperlink{selection_8h}{selection.\+h}} \\*Template meta-\/programming type selections }{\pageref{selection_8h}}{} +\item\contentsline{section}{include/utl/meta/\mbox{\hyperlink{sfinae_8h}{sfinae.\+h}} \\*Template meta-\/programming S\+F\+I\+N\+AE helpers }{\pageref{sfinae_8h}}{} +\item\contentsline{section}{include/utl/meta/\mbox{\hyperlink{typelist_8h}{typelist.\+h}} \\*A template parameter \char`\"{}container\char`\"{} }{\pageref{typelist_8h}}{} +\item\contentsline{section}{include/utl/meta/\mbox{\hyperlink{useif_8h}{useif.\+h}} \\*Template meta-\/programming S\+F\+I\+N\+AE helpers }{\pageref{useif_8h}}{} +\item\contentsline{section}{include/utl/utility/\mbox{\hyperlink{utility_2invoke_8h}{invoke.\+h}} \\*Invoke() and invoke traits implementation }{\pageref{utility_2invoke_8h}}{} +\item\contentsline{section}{test/\mbox{\hyperlink{main_8cpp}{main.\+cpp}} \\*Test project main file }{\pageref{main_8cpp}}{} +\item\contentsline{section}{test/eclipse-\/cygwin/\+C++14-\/\+Concepts/lib/gtest/\mbox{\hyperlink{_concepts_2lib_2gtest_2gtest-all_8d}{gtest-\/all.\+d}} }{\pageref{_concepts_2lib_2gtest_2gtest-all_8d}}{} +\item\contentsline{section}{test/eclipse-\/cygwin/\+C++14-\/\+Concepts/source/\mbox{\hyperlink{_concepts_2source_2main_8d}{main.\+d}} }{\pageref{_concepts_2source_2main_8d}}{} +\item\contentsline{section}{test/eclipse-\/cygwin/\+C++14-\/\+Concepts/source/tests/\mbox{\hyperlink{_concepts_2source_2tests_2_t_concepts_8d}{T\+Concepts.\+d}} }{\pageref{_concepts_2source_2tests_2_t_concepts_8d}}{} +\item\contentsline{section}{test/eclipse-\/cygwin/\+C++14-\/\+Concepts/source/tests/\mbox{\hyperlink{_concepts_2source_2tests_2test__1w__impl_8d}{test\+\_\+1w\+\_\+impl.\+d}} }{\pageref{_concepts_2source_2tests_2test__1w__impl_8d}}{} +\item\contentsline{section}{test/eclipse-\/cygwin/\+C++14-\/\+Concepts/source/tests/\mbox{\hyperlink{_concepts_2source_2tests_2test__i2c__impl_8d}{test\+\_\+i2c\+\_\+impl.\+d}} }{\pageref{_concepts_2source_2tests_2test__i2c__impl_8d}}{} +\item\contentsline{section}{test/eclipse-\/cygwin/\+C++14-\/\+Concepts/source/tests/\mbox{\hyperlink{_concepts_2source_2tests_2test__ostream__dev_8d}{test\+\_\+ostream\+\_\+dev.\+d}} }{\pageref{_concepts_2source_2tests_2test__ostream__dev_8d}}{} +\item\contentsline{section}{test/eclipse-\/cygwin/\+C++14-\/\+Concepts/source/tests/\mbox{\hyperlink{_concepts_2source_2tests_2test__spi__impl_8d}{test\+\_\+spi\+\_\+impl.\+d}} }{\pageref{_concepts_2source_2tests_2test__spi__impl_8d}}{} +\item\contentsline{section}{test/eclipse-\/cygwin/\+C++14-\/\+Concepts/source/tests/\mbox{\hyperlink{_concepts_2source_2tests_2_tinvoke_8d}{Tinvoke.\+d}} }{\pageref{_concepts_2source_2tests_2_tinvoke_8d}}{} +\item\contentsline{section}{test/eclipse-\/cygwin/\+C++14-\/\+Concepts/source/tests/\mbox{\hyperlink{_tmeta_8d}{Tmeta.\+d}} }{\pageref{_tmeta_8d}}{} +\item\contentsline{section}{test/eclipse-\/cygwin/\+C++14/lib/gtest/\mbox{\hyperlink{lib_2gtest_2gtest-all_8d}{gtest-\/all.\+d}} }{\pageref{lib_2gtest_2gtest-all_8d}}{} +\item\contentsline{section}{test/eclipse-\/cygwin/\+C++14/source/\mbox{\hyperlink{source_2main_8d}{main.\+d}} }{\pageref{source_2main_8d}}{} +\item\contentsline{section}{test/eclipse-\/cygwin/\+C++14/source/tests/\mbox{\hyperlink{source_2tests_2_t_concepts_8d}{T\+Concepts.\+d}} }{\pageref{source_2tests_2_t_concepts_8d}}{} +\item\contentsline{section}{test/eclipse-\/cygwin/\+C++14/source/tests/\mbox{\hyperlink{source_2tests_2test__1w__impl_8d}{test\+\_\+1w\+\_\+impl.\+d}} }{\pageref{source_2tests_2test__1w__impl_8d}}{} +\item\contentsline{section}{test/eclipse-\/cygwin/\+C++14/source/tests/\mbox{\hyperlink{source_2tests_2test__i2c__impl_8d}{test\+\_\+i2c\+\_\+impl.\+d}} }{\pageref{source_2tests_2test__i2c__impl_8d}}{} +\item\contentsline{section}{test/eclipse-\/cygwin/\+C++14/source/tests/\mbox{\hyperlink{source_2tests_2test__ostream__dev_8d}{test\+\_\+ostream\+\_\+dev.\+d}} }{\pageref{source_2tests_2test__ostream__dev_8d}}{} +\item\contentsline{section}{test/eclipse-\/cygwin/\+C++14/source/tests/\mbox{\hyperlink{source_2tests_2test__spi__impl_8d}{test\+\_\+spi\+\_\+impl.\+d}} }{\pageref{source_2tests_2test__spi__impl_8d}}{} +\item\contentsline{section}{test/eclipse-\/cygwin/\+C++14/source/tests/\mbox{\hyperlink{source_2tests_2_tinvoke_8d}{Tinvoke.\+d}} }{\pageref{source_2tests_2_tinvoke_8d}}{} +\item\contentsline{section}{test/eclipse-\/cygwin/\+C++14/source/tests/\mbox{\hyperlink{_tmeta_basic_8d}{Tmeta\+Basic.\+d}} }{\pageref{_tmeta_basic_8d}}{} +\item\contentsline{section}{test/eclipse-\/cygwin/\+C++14/source/tests/\mbox{\hyperlink{_tmeta_detection_8d}{Tmeta\+Detection.\+d}} }{\pageref{_tmeta_detection_8d}}{} +\item\contentsline{section}{test/eclipse-\/cygwin/\+C++14/source/tests/\mbox{\hyperlink{_tmeta_typelist_8d}{Tmeta\+Typelist.\+d}} }{\pageref{_tmeta_typelist_8d}}{} +\item\contentsline{section}{test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest-all_8cc}{gtest-\/all.\+cc}} }{\pageref{gtest-all_8cc}}{} +\item\contentsline{section}{test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}} }{\pageref{gtest_8h}}{} +\item\contentsline{section}{test/tests/\mbox{\hyperlink{_t_concepts_8cpp}{T\+Concepts.\+cpp}} }{\pageref{_t_concepts_8cpp}}{} +\item\contentsline{section}{test/tests/\mbox{\hyperlink{test__1w__impl_8cpp}{test\+\_\+1w\+\_\+impl.\+cpp}} }{\pageref{test__1w__impl_8cpp}}{} +\item\contentsline{section}{test/tests/\mbox{\hyperlink{test__i2c__impl_8cpp}{test\+\_\+i2c\+\_\+impl.\+cpp}} }{\pageref{test__i2c__impl_8cpp}}{} +\item\contentsline{section}{test/tests/\mbox{\hyperlink{test__ostream__dev_8cpp}{test\+\_\+ostream\+\_\+dev.\+cpp}} }{\pageref{test__ostream__dev_8cpp}}{} +\item\contentsline{section}{test/tests/\mbox{\hyperlink{test__spi__impl_8cpp}{test\+\_\+spi\+\_\+impl.\+cpp}} }{\pageref{test__spi__impl_8cpp}}{} +\item\contentsline{section}{test/tests/\mbox{\hyperlink{_tinvoke_8cpp}{Tinvoke.\+cpp}} }{\pageref{_tinvoke_8cpp}}{} +\item\contentsline{section}{test/tests/\mbox{\hyperlink{_tmeta_basic_8cpp}{Tmeta\+Basic.\+cpp}} }{\pageref{_tmeta_basic_8cpp}}{} +\item\contentsline{section}{test/tests/\mbox{\hyperlink{_tmeta_detection_8cpp}{Tmeta\+Detection.\+cpp}} }{\pageref{_tmeta_detection_8cpp}}{} +\item\contentsline{section}{test/tests/\mbox{\hyperlink{_tmeta_typelist_8cpp}{Tmeta\+Typelist.\+cpp}} }{\pageref{_tmeta_typelist_8cpp}}{} +\end{DoxyCompactList} diff --git a/doc/latex/group__concepts.tex b/doc/latex/group__concepts.tex new file mode 100644 index 0000000..c3ec0e8 --- /dev/null +++ b/doc/latex/group__concepts.tex @@ -0,0 +1,56 @@ +\hypertarget{group__concepts}{}\section{Concepts} +\label{group__concepts}\index{Concepts@{Concepts}} +\subsection*{Modules} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{group__iterators}{Iterators}} +\end{DoxyCompactItemize} +\subsection*{Macros} +\begin{DoxyCompactItemize} +\item +\#define \mbox{\hyperlink{group__concepts_ga5d7d78bf161dcc8fb920fb522dc6f216}{utl\+Constrain\+Type}}(\+\_\+\+Concept\+\_\+)~typename +\item +\#define \mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}}~constexpr bool +\begin{DoxyCompactList}\small\item\em utl concept keyword syntax wrapper \end{DoxyCompactList}\item +\#define \mbox{\hyperlink{group__concepts_gae575ec6bb237dd55f86ef2827c63d784}{C\+X\+X\+\_\+\+L\+I\+B\+\_\+\+I\+N\+V\+O\+KE}}~0 +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} + + +\subsection{Macro Definition Documentation} +\mbox{\Hypertarget{group__concepts_gaf81026787698cd63592563ab8223062b}\label{group__concepts_gaf81026787698cd63592563ab8223062b}} +\index{Concepts@{Concepts}!\+\_\+utl\+Concept@{\+\_\+utl\+Concept}} +\index{\+\_\+utl\+Concept@{\+\_\+utl\+Concept}!Concepts@{Concepts}} +\subsubsection{\texorpdfstring{\+\_\+utl\+Concept}{\_utlConcept}} +{\footnotesize\ttfamily \#define \+\_\+utl\+Concept~constexpr bool} + + + +utl concept keyword syntax wrapper + + + +Definition at line 56 of file defines.\+h. + +\mbox{\Hypertarget{group__concepts_gae575ec6bb237dd55f86ef2827c63d784}\label{group__concepts_gae575ec6bb237dd55f86ef2827c63d784}} +\index{Concepts@{Concepts}!C\+X\+X\+\_\+\+L\+I\+B\+\_\+\+I\+N\+V\+O\+KE@{C\+X\+X\+\_\+\+L\+I\+B\+\_\+\+I\+N\+V\+O\+KE}} +\index{C\+X\+X\+\_\+\+L\+I\+B\+\_\+\+I\+N\+V\+O\+KE@{C\+X\+X\+\_\+\+L\+I\+B\+\_\+\+I\+N\+V\+O\+KE}!Concepts@{Concepts}} +\subsubsection{\texorpdfstring{C\+X\+X\+\_\+\+L\+I\+B\+\_\+\+I\+N\+V\+O\+KE}{CXX\_LIB\_INVOKE}} +{\footnotesize\ttfamily \#define C\+X\+X\+\_\+\+L\+I\+B\+\_\+\+I\+N\+V\+O\+KE~0} + + + +Definition at line 63 of file defines.\+h. + +\mbox{\Hypertarget{group__concepts_ga5d7d78bf161dcc8fb920fb522dc6f216}\label{group__concepts_ga5d7d78bf161dcc8fb920fb522dc6f216}} +\index{Concepts@{Concepts}!utl\+Constrain\+Type@{utl\+Constrain\+Type}} +\index{utl\+Constrain\+Type@{utl\+Constrain\+Type}!Concepts@{Concepts}} +\subsubsection{\texorpdfstring{utl\+Constrain\+Type}{utlConstrainType}} +{\footnotesize\ttfamily \#define utl\+Constrain\+Type(\begin{DoxyParamCaption}\item[{}]{\+\_\+\+Concept\+\_\+ }\end{DoxyParamCaption})~typename} + + + +Definition at line 43 of file defines.\+h. + diff --git a/doc/latex/group__crtp.tex b/doc/latex/group__crtp.tex new file mode 100644 index 0000000..0e929c7 --- /dev/null +++ b/doc/latex/group__crtp.tex @@ -0,0 +1,11 @@ +\hypertarget{group__crtp}{}\section{C\+R\+TP idiom support header} +\label{group__crtp}\index{C\+R\+T\+P idiom support header@{C\+R\+T\+P idiom support header}} +\subsection*{Namespaces} +\begin{DoxyCompactItemize} +\item + \mbox{\hyperlink{namespaceutl}{utl}} +\begin{DoxyCompactList}\small\item\em S\+TL\textquotesingle{}s core language concepts. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +utl supports both C\+R\+TP idiom and dynamic polymorphism. By default C\+R\+TP is the preferred way. If the user need virtuals then instead of C\+R\+TP type, the virtual\+\_\+tag can passed to base class. The rest will handled by utl automatically. \ No newline at end of file diff --git a/doc/latex/group__detection.tex b/doc/latex/group__detection.tex new file mode 100644 index 0000000..7fa3493 --- /dev/null +++ b/doc/latex/group__detection.tex @@ -0,0 +1,56 @@ +\hypertarget{group__detection}{}\section{Detection} +\label{group__detection}\index{Detection@{Detection}} +\subsection*{Namespaces} +\begin{DoxyCompactItemize} +\item + \mbox{\hyperlink{namespaceutl}{utl}} +\begin{DoxyCompactList}\small\item\em S\+TL\textquotesingle{}s core language concepts. \end{DoxyCompactList}\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename... $>$ }\\using \mbox{\hyperlink{group__detection_gac16d50de47cf57734433e9ea636522c5}{utl\+::meta\+::void\+\_\+}} = void +\begin{DoxyCompactList}\small\item\em void\+\_\+ type alias \end{DoxyCompactList}\item +{\footnotesize template$<$typename... $>$ }\\using \mbox{\hyperlink{group__detection_gae7373c997420d16cf37e542eb3cfa3ad}{utl\+::meta\+::void\+\_\+t}} = void +\begin{DoxyCompactList}\small\item\em void\+\_\+t type alias \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Detection idiom support header. + +\subsection{Typedef Documentation} +\mbox{\Hypertarget{group__detection_gac16d50de47cf57734433e9ea636522c5}\label{group__detection_gac16d50de47cf57734433e9ea636522c5}} +\index{Detection@{Detection}!void\+\_\+@{void\+\_\+}} +\index{void\+\_\+@{void\+\_\+}!Detection@{Detection}} +\subsubsection{\texorpdfstring{void\+\_\+}{void\_}} +{\footnotesize\ttfamily template$<$typename... $>$ \\ +using \mbox{\hyperlink{group__detection_gac16d50de47cf57734433e9ea636522c5}{utl\+::meta\+::void\+\_\+}} = typedef void} + + + +void\+\_\+ type alias + +void\+\_\+t meta-\/function that maps a sequence of any types to the type void \begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2detection_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/detection.\+h}}.\end{Desc} + + +Definition at line 53 of file detection.\+h. + +\mbox{\Hypertarget{group__detection_gae7373c997420d16cf37e542eb3cfa3ad}\label{group__detection_gae7373c997420d16cf37e542eb3cfa3ad}} +\index{Detection@{Detection}!void\+\_\+t@{void\+\_\+t}} +\index{void\+\_\+t@{void\+\_\+t}!Detection@{Detection}} +\subsubsection{\texorpdfstring{void\+\_\+t}{void\_t}} +{\footnotesize\ttfamily template$<$typename... $>$ \\ +using \mbox{\hyperlink{group__detection_gae7373c997420d16cf37e542eb3cfa3ad}{utl\+::meta\+::void\+\_\+t}} = typedef void} + + + +void\+\_\+t type alias + +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2detection_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/detection.\+h}}, \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/invoke.\+h}}, and \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} + + +Definition at line 55 of file detection.\+h. + diff --git a/doc/latex/group__integral.tex b/doc/latex/group__integral.tex new file mode 100644 index 0000000..def6930 --- /dev/null +++ b/doc/latex/group__integral.tex @@ -0,0 +1,112 @@ +\hypertarget{group__integral}{}\section{operators} +\label{group__integral}\index{operators@{operators}} +\subsection*{Namespaces} +\begin{DoxyCompactItemize} +\item + \mbox{\hyperlink{namespaceutl}{utl}} +\begin{DoxyCompactList}\small\item\em S\+TL\textquotesingle{}s core language concepts. \end{DoxyCompactList}\item + \mbox{\hyperlink{namespaceutl_1_1meta_1_1detail}{utl\+::meta\+::detail}} +\end{DoxyCompactItemize} +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1same__}{utl\+::meta\+::same\+\_\+$<$ \+\_\+\+T1, \+\_\+\+T2 $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1same___3_01___tp_00_01___tp_01_4}{utl\+::meta\+::same\+\_\+$<$ \+\_\+\+Tp, \+\_\+\+Tp $>$}} +\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$bool B$>$ }\\using \mbox{\hyperlink{group__integral_ga7de987520bd0973f03ff8bab3152361a}{utl\+::meta\+::not\+\_\+c}} = \mbox{\hyperlink{namespaceutl_1_1meta_a0bec5828d2df0edfb4bc084773a438f6}{bool\+\_\+}}$<$!B $>$ +\begin{DoxyCompactList}\small\item\em Negate the {\itshape bool} constant parameter. \end{DoxyCompactList}\item +{\footnotesize template$<$typename \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{group__integral_ga16df145331d3c62e624385c5949d90c4}{utl\+::meta\+::not\+\_\+}} = \mbox{\hyperlink{group__integral_ga7de987520bd0973f03ff8bab3152361a}{not\+\_\+c}}$<$ \+\_\+\+Tp\+::type\+::value $>$ +\begin{DoxyCompactList}\small\item\em not \end{DoxyCompactList}\end{DoxyCompactItemize} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename... \+\_\+\+Ts$>$ }\\using \mbox{\hyperlink{group__integral_gac43f400cc93d54f5f79892e618069d9b}{utl\+::meta\+::or\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1__or__}{detail\+::\+\_\+or\+\_\+}}$<$ \+\_\+\+Ts... $>$ $>$ +\end{DoxyCompactItemize} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename... \+\_\+\+Ts$>$ }\\using \mbox{\hyperlink{group__integral_ga8e82f4758321e0e0b3705607f7d8e068}{utl\+::meta\+::and\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1__and__}{detail\+::\+\_\+and\+\_\+}}$<$ \+\_\+\+Ts... $>$ $>$ +\end{DoxyCompactItemize} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename \+\_\+\+T1 , typename \+\_\+\+T2 $>$ }\\using \mbox{\hyperlink{group__integral_ga4dfaf054d891eb35d741662b077bbbd2}{utl\+::meta\+::not\+\_\+same\+\_\+}} = \mbox{\hyperlink{group__integral_ga16df145331d3c62e624385c5949d90c4}{not\+\_\+}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1same__}{same\+\_\+}}$<$ \+\_\+\+T1, \+\_\+\+T2 $>$ $>$$>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +integral constant support header + +Type arithmetic and operators + +\subsection{Typedef Documentation} +\mbox{\Hypertarget{group__integral_ga8e82f4758321e0e0b3705607f7d8e068}\label{group__integral_ga8e82f4758321e0e0b3705607f7d8e068}} +\index{operators@{operators}!and\+\_\+@{and\+\_\+}} +\index{and\+\_\+@{and\+\_\+}!operators@{operators}} +\subsubsection{\texorpdfstring{and\+\_\+}{and\_}} +{\footnotesize\ttfamily template$<$typename... \+\_\+\+Ts$>$ \\ +using \mbox{\hyperlink{group__integral_ga8e82f4758321e0e0b3705607f7d8e068}{utl\+::meta\+::and\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$\mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1__and__}{detail\+::\+\_\+and\+\_\+}}$<$\+\_\+\+Ts...$>$ $>$} + + + +Definition at line 96 of file operations.\+h. + +\mbox{\Hypertarget{group__integral_ga16df145331d3c62e624385c5949d90c4}\label{group__integral_ga16df145331d3c62e624385c5949d90c4}} +\index{operators@{operators}!not\+\_\+@{not\+\_\+}} +\index{not\+\_\+@{not\+\_\+}!operators@{operators}} +\subsubsection{\texorpdfstring{not\+\_\+}{not\_}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{group__integral_ga16df145331d3c62e624385c5949d90c4}{utl\+::meta\+::not\+\_\+}} = typedef \mbox{\hyperlink{group__integral_ga7de987520bd0973f03ff8bab3152361a}{not\+\_\+c}}$<$\+\_\+\+Tp\+::type\+::value$>$} + + + +not + +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} + + +Definition at line 47 of file operations.\+h. + +\mbox{\Hypertarget{group__integral_ga7de987520bd0973f03ff8bab3152361a}\label{group__integral_ga7de987520bd0973f03ff8bab3152361a}} +\index{operators@{operators}!not\+\_\+c@{not\+\_\+c}} +\index{not\+\_\+c@{not\+\_\+c}!operators@{operators}} +\subsubsection{\texorpdfstring{not\+\_\+c}{not\_c}} +{\footnotesize\ttfamily template$<$bool B$>$ \\ +using \mbox{\hyperlink{group__integral_ga7de987520bd0973f03ff8bab3152361a}{utl\+::meta\+::not\+\_\+c}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a0bec5828d2df0edfb4bc084773a438f6}{bool\+\_\+}}$<$!B$>$} + + + +Negate the {\itshape bool} constant parameter. + +Logical relation for types + +Definition at line 43 of file operations.\+h. + +\mbox{\Hypertarget{group__integral_ga4dfaf054d891eb35d741662b077bbbd2}\label{group__integral_ga4dfaf054d891eb35d741662b077bbbd2}} +\index{operators@{operators}!not\+\_\+same\+\_\+@{not\+\_\+same\+\_\+}} +\index{not\+\_\+same\+\_\+@{not\+\_\+same\+\_\+}!operators@{operators}} +\subsubsection{\texorpdfstring{not\+\_\+same\+\_\+}{not\_same\_}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+T1 , typename \+\_\+\+T2 $>$ \\ +using \mbox{\hyperlink{group__integral_ga4dfaf054d891eb35d741662b077bbbd2}{utl\+::meta\+::not\+\_\+same\+\_\+}} = typedef \mbox{\hyperlink{group__integral_ga16df145331d3c62e624385c5949d90c4}{not\+\_\+}}$<$\mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$\mbox{\hyperlink{structutl_1_1meta_1_1same__}{same\+\_\+}}$<$\+\_\+\+T1, \+\_\+\+T2$>$ $>$$>$} + +not same \begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/invoke.\+h}}.\end{Desc} + + +Definition at line 111 of file operations.\+h. + +\mbox{\Hypertarget{group__integral_gac43f400cc93d54f5f79892e618069d9b}\label{group__integral_gac43f400cc93d54f5f79892e618069d9b}} +\index{operators@{operators}!or\+\_\+@{or\+\_\+}} +\index{or\+\_\+@{or\+\_\+}!operators@{operators}} +\subsubsection{\texorpdfstring{or\+\_\+}{or\_}} +{\footnotesize\ttfamily template$<$typename... \+\_\+\+Ts$>$ \\ +using \mbox{\hyperlink{group__integral_gac43f400cc93d54f5f79892e618069d9b}{utl\+::meta\+::or\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$\mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1__or__}{detail\+::\+\_\+or\+\_\+}}$<$\+\_\+\+Ts...$>$ $>$} + + + +Definition at line 70 of file operations.\+h. + diff --git a/doc/latex/group__invoke.tex b/doc/latex/group__invoke.tex new file mode 100644 index 0000000..35e34d3 --- /dev/null +++ b/doc/latex/group__invoke.tex @@ -0,0 +1,10 @@ +\hypertarget{group__invoke}{}\section{Invoke} +\label{group__invoke}\index{Invoke@{Invoke}} +\subsection*{Namespaces} +\begin{DoxyCompactItemize} +\item + \mbox{\hyperlink{namespaceutl}{utl}} +\begin{DoxyCompactList}\small\item\em S\+TL\textquotesingle{}s core language concepts. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\subsection{Detailed Description} diff --git a/doc/latex/group__iterators.tex b/doc/latex/group__iterators.tex new file mode 100644 index 0000000..3aad598 --- /dev/null +++ b/doc/latex/group__iterators.tex @@ -0,0 +1,10 @@ +\hypertarget{group__iterators}{}\section{Iterators} +\label{group__iterators}\index{Iterators@{Iterators}} +\subsection*{Namespaces} +\begin{DoxyCompactItemize} +\item + \mbox{\hyperlink{namespaceutl}{utl}} +\begin{DoxyCompactList}\small\item\em S\+TL\textquotesingle{}s core language concepts. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\subsection{Detailed Description} diff --git a/doc/latex/group__logic.tex b/doc/latex/group__logic.tex new file mode 100644 index 0000000..4134a0d --- /dev/null +++ b/doc/latex/group__logic.tex @@ -0,0 +1,11 @@ +\hypertarget{group__logic}{}\section{Logic} +\label{group__logic}\index{Logic@{Logic}} +\subsection*{Namespaces} +\begin{DoxyCompactItemize} +\item + \mbox{\hyperlink{namespaceutl}{utl}} +\begin{DoxyCompactList}\small\item\em S\+TL\textquotesingle{}s core language concepts. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +logic operators and type relations support \ No newline at end of file diff --git a/doc/latex/group__sfinae.tex b/doc/latex/group__sfinae.tex new file mode 100644 index 0000000..174575b --- /dev/null +++ b/doc/latex/group__sfinae.tex @@ -0,0 +1,13 @@ +\hypertarget{group__sfinae}{}\section{Sfinae} +\label{group__sfinae}\index{Sfinae@{Sfinae}} +\subsection*{Namespaces} +\begin{DoxyCompactItemize} +\item + \mbox{\hyperlink{namespaceutl}{utl}} +\begin{DoxyCompactList}\small\item\em S\+TL\textquotesingle{}s core language concepts. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +conditional use support header. + +conditional use support header. This is a S\+F\+I\+N\+AE wrapper \ No newline at end of file diff --git a/doc/latex/group__type.tex b/doc/latex/group__type.tex new file mode 100644 index 0000000..16770f2 --- /dev/null +++ b/doc/latex/group__type.tex @@ -0,0 +1,163 @@ +\hypertarget{group__type}{}\section{selection} +\label{group__type}\index{selection@{selection}} +\subsection*{Namespaces} +\begin{DoxyCompactItemize} +\item + \mbox{\hyperlink{namespaceutl}{utl}} +\begin{DoxyCompactList}\small\item\em S\+TL\textquotesingle{}s core language concepts. \end{DoxyCompactList}\item + \mbox{\hyperlink{namespaceutl_1_1meta_1_1detail}{utl\+::meta\+::detail}} +\end{DoxyCompactItemize} +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1if__c__}{utl\+::meta\+::detail\+::if\+\_\+c\+\_\+$<$ If,... $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_01_4}{utl\+::meta\+::detail\+::if\+\_\+c\+\_\+$<$ true, Then $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_00_01_else_01_4}{utl\+::meta\+::detail\+::if\+\_\+c\+\_\+$<$ true, Then, Else $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1if__c___3_01false_00_01_then_00_01_else_01_4}{utl\+::meta\+::detail\+::if\+\_\+c\+\_\+$<$ false, Then, Else $>$}} +\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{group__type_gaefeff9de7bff8811e49692343ce6187e}{utl\+::meta\+::detail\+::if\+\_\+c\+\_\+$<$ If,... $>$\+::type}} = \mbox{\hyperlink{structutl_1_1meta_1_1nil__}{nil\+\_\+}} +\begin{DoxyCompactList}\small\item\em avoid ill formed result \end{DoxyCompactList}\item +using \mbox{\hyperlink{group__type_gaa7f24607990e92d8263246fc5f7003b7}{utl\+::meta\+::detail\+::if\+\_\+c\+\_\+$<$ true, Then $>$\+::type}} = Then +\item +using \mbox{\hyperlink{group__type_ga15100ac40785819517c5defacb19915c}{utl\+::meta\+::detail\+::if\+\_\+c\+\_\+$<$ true, Then, Else $>$\+::type}} = Then +\item +using \mbox{\hyperlink{group__type_ga2fbed149992c081ac85eefaf63a388ca}{utl\+::meta\+::detail\+::if\+\_\+c\+\_\+$<$ false, Then, Else $>$\+::type}} = Else +\end{DoxyCompactItemize} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$bool B, typename... Args$>$ }\\using \mbox{\hyperlink{group__type_gaa3812817ce749832da73fdf5d2a85380}{utl\+::meta\+::if\+\_\+c}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1if__c__}{detail\+::if\+\_\+c\+\_\+}}$<$ B, Args... $>$ $>$ +\begin{DoxyCompactList}\small\item\em Select one type or another depending on a compile-\/time Boolean. \end{DoxyCompactList}\item +{\footnotesize template$<$typename If , typename... Args$>$ }\\using \mbox{\hyperlink{group__type_ga39cc4e727a8faa5ea176f543e62c05c0}{utl\+::meta\+::if\+\_\+}} = \mbox{\hyperlink{group__type_gaa3812817ce749832da73fdf5d2a85380}{if\+\_\+c}}$<$ If\+::type\+::value, Args... $>$ +\begin{DoxyCompactList}\small\item\em Select one type or another depending on a compile-\/time Boolean type. \end{DoxyCompactList}\end{DoxyCompactItemize} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename T1 , typename ... $>$ }\\using \mbox{\hyperlink{group__type_gaf7089523d21cd405c76985643f31092a}{utl\+::meta\+::first\+\_\+of}} = T1 +\begin{DoxyCompactList}\small\item\em Select the first type of a type sequence. \end{DoxyCompactList}\item +{\footnotesize template$<$typename T1 , typename T2 , typename ... $>$ }\\using \mbox{\hyperlink{group__type_ga422dd1b0895f0074ad9932d68d9edbc5}{utl\+::meta\+::second\+\_\+of}} = T2 +\begin{DoxyCompactList}\small\item\em Select the second type of a type sequence. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Type selection support header + +\subsection{Typedef Documentation} +\mbox{\Hypertarget{group__type_gaf7089523d21cd405c76985643f31092a}\label{group__type_gaf7089523d21cd405c76985643f31092a}} +\index{selection@{selection}!first\+\_\+of@{first\+\_\+of}} +\index{first\+\_\+of@{first\+\_\+of}!selection@{selection}} +\subsubsection{\texorpdfstring{first\+\_\+of}{first\_of}} +{\footnotesize\ttfamily template$<$typename T1 , typename ... $>$ \\ +using \mbox{\hyperlink{group__type_gaf7089523d21cd405c76985643f31092a}{utl\+::meta\+::first\+\_\+of}} = typedef T1} + + + +Select the first type of a type sequence. + +Named type selectors \begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/invoke.\+h}}.\end{Desc} + + +Definition at line 76 of file selection.\+h. + +\mbox{\Hypertarget{group__type_ga39cc4e727a8faa5ea176f543e62c05c0}\label{group__type_ga39cc4e727a8faa5ea176f543e62c05c0}} +\index{selection@{selection}!if\+\_\+@{if\+\_\+}} +\index{if\+\_\+@{if\+\_\+}!selection@{selection}} +\subsubsection{\texorpdfstring{if\+\_\+}{if\_}} +{\footnotesize\ttfamily template$<$typename If , typename... Args$>$ \\ +using \mbox{\hyperlink{group__type_ga39cc4e727a8faa5ea176f543e62c05c0}{utl\+::meta\+::if\+\_\+}} = typedef \mbox{\hyperlink{group__type_gaa3812817ce749832da73fdf5d2a85380}{if\+\_\+c}}$<$If\+::type\+::value, Args...$>$} + + + +Select one type or another depending on a compile-\/time Boolean type. + +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/invoke.\+h}}, and \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} + + +Definition at line 66 of file selection.\+h. + +\mbox{\Hypertarget{group__type_gaa3812817ce749832da73fdf5d2a85380}\label{group__type_gaa3812817ce749832da73fdf5d2a85380}} +\index{selection@{selection}!if\+\_\+c@{if\+\_\+c}} +\index{if\+\_\+c@{if\+\_\+c}!selection@{selection}} +\subsubsection{\texorpdfstring{if\+\_\+c}{if\_c}} +{\footnotesize\ttfamily template$<$bool B, typename... Args$>$ \\ +using \mbox{\hyperlink{group__type_gaa3812817ce749832da73fdf5d2a85380}{utl\+::meta\+::if\+\_\+c}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$\mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1if__c__}{detail\+::if\+\_\+c\+\_\+}}$<$B, Args...$>$ $>$} + + + +Select one type or another depending on a compile-\/time Boolean. + + + +Definition at line 62 of file selection.\+h. + +\mbox{\Hypertarget{group__type_ga422dd1b0895f0074ad9932d68d9edbc5}\label{group__type_ga422dd1b0895f0074ad9932d68d9edbc5}} +\index{selection@{selection}!second\+\_\+of@{second\+\_\+of}} +\index{second\+\_\+of@{second\+\_\+of}!selection@{selection}} +\subsubsection{\texorpdfstring{second\+\_\+of}{second\_of}} +{\footnotesize\ttfamily template$<$typename T1 , typename T2 , typename ... $>$ \\ +using \mbox{\hyperlink{group__type_ga422dd1b0895f0074ad9932d68d9edbc5}{utl\+::meta\+::second\+\_\+of}} = typedef T2} + + + +Select the second type of a type sequence. + + + +Definition at line 79 of file selection.\+h. + +\mbox{\Hypertarget{group__type_gaefeff9de7bff8811e49692343ce6187e}\label{group__type_gaefeff9de7bff8811e49692343ce6187e}} +\index{selection@{selection}!type@{type}} +\index{type@{type}!selection@{selection}} +\subsubsection{\texorpdfstring{type}{type}\hspace{0.1cm}{\footnotesize\ttfamily [1/4]}} +{\footnotesize\ttfamily template$<$bool If, typename... $>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1if__c__}{utl\+::meta\+::detail\+::if\+\_\+c\+\_\+}}$<$ If,... $>$\+::\mbox{\hyperlink{group__type_gaefeff9de7bff8811e49692343ce6187e}{type}} = \mbox{\hyperlink{structutl_1_1meta_1_1nil__}{nil\+\_\+}}} + + + +avoid ill formed result + + + +Definition at line 45 of file selection.\+h. + +\mbox{\Hypertarget{group__type_gaa7f24607990e92d8263246fc5f7003b7}\label{group__type_gaa7f24607990e92d8263246fc5f7003b7}} +\index{selection@{selection}!type@{type}} +\index{type@{type}!selection@{selection}} +\subsubsection{\texorpdfstring{type}{type}\hspace{0.1cm}{\footnotesize\ttfamily [2/4]}} +{\footnotesize\ttfamily template$<$typename Then $>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1if__c__}{utl\+::meta\+::detail\+::if\+\_\+c\+\_\+}}$<$ true, Then $>$\+::\mbox{\hyperlink{group__type_gaa7f24607990e92d8263246fc5f7003b7}{type}} = Then} + + + +Definition at line 49 of file selection.\+h. + +\mbox{\Hypertarget{group__type_ga15100ac40785819517c5defacb19915c}\label{group__type_ga15100ac40785819517c5defacb19915c}} +\index{selection@{selection}!type@{type}} +\index{type@{type}!selection@{selection}} +\subsubsection{\texorpdfstring{type}{type}\hspace{0.1cm}{\footnotesize\ttfamily [3/4]}} +{\footnotesize\ttfamily template$<$typename Then , typename Else $>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1if__c__}{utl\+::meta\+::detail\+::if\+\_\+c\+\_\+}}$<$ true, Then, Else $>$\+::\mbox{\hyperlink{group__type_ga15100ac40785819517c5defacb19915c}{type}} = Then} + + + +Definition at line 53 of file selection.\+h. + +\mbox{\Hypertarget{group__type_ga2fbed149992c081ac85eefaf63a388ca}\label{group__type_ga2fbed149992c081ac85eefaf63a388ca}} +\index{selection@{selection}!type@{type}} +\index{type@{type}!selection@{selection}} +\subsubsection{\texorpdfstring{type}{type}\hspace{0.1cm}{\footnotesize\ttfamily [4/4]}} +{\footnotesize\ttfamily template$<$typename Then , typename Else $>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1if__c__}{utl\+::meta\+::detail\+::if\+\_\+c\+\_\+}}$<$ false, Then, Else $>$\+::\mbox{\hyperlink{group__type_ga2fbed149992c081ac85eefaf63a388ca}{type}} = Else} + + + +Definition at line 57 of file selection.\+h. + diff --git a/doc/latex/group__typelist.tex b/doc/latex/group__typelist.tex new file mode 100644 index 0000000..726702f --- /dev/null +++ b/doc/latex/group__typelist.tex @@ -0,0 +1,10 @@ +\hypertarget{group__typelist}{}\section{Typelist} +\label{group__typelist}\index{Typelist@{Typelist}} +\subsection*{Namespaces} +\begin{DoxyCompactItemize} +\item + \mbox{\hyperlink{namespaceutl}{utl}} +\begin{DoxyCompactList}\small\item\em S\+TL\textquotesingle{}s core language concepts. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\subsection{Detailed Description} diff --git a/doc/latex/group__version.tex b/doc/latex/group__version.tex new file mode 100644 index 0000000..5f37bb5 --- /dev/null +++ b/doc/latex/group__version.tex @@ -0,0 +1,193 @@ +\hypertarget{group__version}{}\section{version} +\label{group__version}\index{version@{version}} +\subsection*{Macros} +\begin{DoxyCompactItemize} +\item +\#define \mbox{\hyperlink{group__version_ga7665eee3bbd12a8d910e6237e59d3aee}{U\+T\+L\+\_\+\+V\+E\+R\+S\+I\+ON}}~\char`\"{}0.\+1.\+0\char`\"{} +\begin{DoxyCompactList}\small\item\em utl version \end{DoxyCompactList}\item +\#define \mbox{\hyperlink{group__version_ga127ec85c06925fbd866584721188df32}{U\+T\+L\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+\+M\+A\+J\+OR}}~0 +\item +\#define \mbox{\hyperlink{group__version_ga9bc1d657cd305d09ffe825ab50672c2e}{U\+T\+L\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+\+M\+I\+N\+OR}}~1 +\item +\#define \mbox{\hyperlink{group__version_ga0ccbcd211a838107438ae0e194f871a9}{U\+T\+L\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+\+P\+A\+T\+CH}}~0 +\item +\#define \mbox{\hyperlink{group__version_ga7af1c603dc248e854fc773c26761ed83}{U\+T\+L\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+\+V\+A\+L\+UE}} +\item +\#define \mbox{\hyperlink{group__version_ga01247740b4b51ce21e9bb3c3c602996d}{C\+X\+X\+\_\+\+V\+ER}}~\+\_\+\+\_\+cplusplus +\begin{DoxyCompactList}\small\item\em C++ versions. \end{DoxyCompactList}\item +\#define \mbox{\hyperlink{group__version_gabef125dbb6ab064efeef0491a2a43da6}{C\+X\+X\+\_\+\+V\+E\+R\+\_\+\+S\+T\+D\+\_\+11}}~201103L +\item +\#define \mbox{\hyperlink{group__version_gaaa8cecbe78cff8d75dba25e39d5205f9}{C\+X\+X\+\_\+\+V\+E\+R\+\_\+\+S\+T\+D\+\_\+14}}~201402L +\item +\#define \mbox{\hyperlink{group__version_ga20a6261e3bdd7cad0eb7850e29ddfbe0}{C\+X\+X\+\_\+\+V\+E\+R\+\_\+\+S\+T\+D\+\_\+17}}~201703L +\item +\#define \mbox{\hyperlink{group__version_gaa3f471a65b0eb6118e8a2cb547a46d7a}{C\+X\+X\+\_\+\+V\+A\+R\+I\+A\+B\+L\+E\+\_\+\+T\+E\+M\+P\+L\+A\+T\+ES}}~(\mbox{\hyperlink{group__version_ga01247740b4b51ce21e9bb3c3c602996d}{C\+X\+X\+\_\+\+V\+ER}} $>$= \mbox{\hyperlink{group__version_gaaa8cecbe78cff8d75dba25e39d5205f9}{C\+X\+X\+\_\+\+V\+E\+R\+\_\+\+S\+T\+D\+\_\+14}}) +\begin{DoxyCompactList}\small\item\em Check for variable templates. \end{DoxyCompactList}\item +\#define \mbox{\hyperlink{group__version_ga80d0fb430c83076ebe61d619a7e606a9}{C\+X\+X\+\_\+\+C\+O\+N\+C\+E\+P\+TS}}~0 +\begin{DoxyCompactList}\small\item\em Check concepts. \end{DoxyCompactList}\item +\#define \mbox{\hyperlink{group__version_gad7f44253df62ec7f9455af26507a289b}{C\+X\+X\+\_\+\+I\+N\+L\+I\+N\+E\+\_\+\+V\+A\+R\+I\+A\+B\+L\+ES}}~(\mbox{\hyperlink{group__version_ga01247740b4b51ce21e9bb3c3c602996d}{C\+X\+X\+\_\+\+V\+ER}} $>$= \mbox{\hyperlink{group__version_ga20a6261e3bdd7cad0eb7850e29ddfbe0}{C\+X\+X\+\_\+\+V\+E\+R\+\_\+\+S\+T\+D\+\_\+17}}) +\begin{DoxyCompactList}\small\item\em Check for inline variables. \end{DoxyCompactList}\item +\#define \mbox{\hyperlink{group__version_gad8bb48d6d660495b6eb3d4bbecd7ec26}{C\+X\+X\+\_\+\+F\+O\+L\+D\+\_\+\+E\+X\+P\+R\+E\+S\+S\+I\+O\+NS}}~(\mbox{\hyperlink{group__version_ga01247740b4b51ce21e9bb3c3c602996d}{C\+X\+X\+\_\+\+V\+ER}} $>$= \mbox{\hyperlink{group__version_ga20a6261e3bdd7cad0eb7850e29ddfbe0}{C\+X\+X\+\_\+\+V\+E\+R\+\_\+\+S\+T\+D\+\_\+17}}) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Definitions of the utl version + +\subsection{Macro Definition Documentation} +\mbox{\Hypertarget{group__version_ga80d0fb430c83076ebe61d619a7e606a9}\label{group__version_ga80d0fb430c83076ebe61d619a7e606a9}} +\index{version@{version}!C\+X\+X\+\_\+\+C\+O\+N\+C\+E\+P\+TS@{C\+X\+X\+\_\+\+C\+O\+N\+C\+E\+P\+TS}} +\index{C\+X\+X\+\_\+\+C\+O\+N\+C\+E\+P\+TS@{C\+X\+X\+\_\+\+C\+O\+N\+C\+E\+P\+TS}!version@{version}} +\subsubsection{\texorpdfstring{C\+X\+X\+\_\+\+C\+O\+N\+C\+E\+P\+TS}{CXX\_CONCEPTS}} +{\footnotesize\ttfamily \#define C\+X\+X\+\_\+\+C\+O\+N\+C\+E\+P\+TS~0} + + + +Check concepts. + + + +Definition at line 57 of file version.\+h. + +\mbox{\Hypertarget{group__version_gad8bb48d6d660495b6eb3d4bbecd7ec26}\label{group__version_gad8bb48d6d660495b6eb3d4bbecd7ec26}} +\index{version@{version}!C\+X\+X\+\_\+\+F\+O\+L\+D\+\_\+\+E\+X\+P\+R\+E\+S\+S\+I\+O\+NS@{C\+X\+X\+\_\+\+F\+O\+L\+D\+\_\+\+E\+X\+P\+R\+E\+S\+S\+I\+O\+NS}} +\index{C\+X\+X\+\_\+\+F\+O\+L\+D\+\_\+\+E\+X\+P\+R\+E\+S\+S\+I\+O\+NS@{C\+X\+X\+\_\+\+F\+O\+L\+D\+\_\+\+E\+X\+P\+R\+E\+S\+S\+I\+O\+NS}!version@{version}} +\subsubsection{\texorpdfstring{C\+X\+X\+\_\+\+F\+O\+L\+D\+\_\+\+E\+X\+P\+R\+E\+S\+S\+I\+O\+NS}{CXX\_FOLD\_EXPRESSIONS}} +{\footnotesize\ttfamily \#define C\+X\+X\+\_\+\+F\+O\+L\+D\+\_\+\+E\+X\+P\+R\+E\+S\+S\+I\+O\+NS~(\mbox{\hyperlink{group__version_ga01247740b4b51ce21e9bb3c3c602996d}{C\+X\+X\+\_\+\+V\+ER}} $>$= \mbox{\hyperlink{group__version_ga20a6261e3bdd7cad0eb7850e29ddfbe0}{C\+X\+X\+\_\+\+V\+E\+R\+\_\+\+S\+T\+D\+\_\+17}})} + + + +Definition at line 74 of file version.\+h. + +\mbox{\Hypertarget{group__version_gad7f44253df62ec7f9455af26507a289b}\label{group__version_gad7f44253df62ec7f9455af26507a289b}} +\index{version@{version}!C\+X\+X\+\_\+\+I\+N\+L\+I\+N\+E\+\_\+\+V\+A\+R\+I\+A\+B\+L\+ES@{C\+X\+X\+\_\+\+I\+N\+L\+I\+N\+E\+\_\+\+V\+A\+R\+I\+A\+B\+L\+ES}} +\index{C\+X\+X\+\_\+\+I\+N\+L\+I\+N\+E\+\_\+\+V\+A\+R\+I\+A\+B\+L\+ES@{C\+X\+X\+\_\+\+I\+N\+L\+I\+N\+E\+\_\+\+V\+A\+R\+I\+A\+B\+L\+ES}!version@{version}} +\subsubsection{\texorpdfstring{C\+X\+X\+\_\+\+I\+N\+L\+I\+N\+E\+\_\+\+V\+A\+R\+I\+A\+B\+L\+ES}{CXX\_INLINE\_VARIABLES}} +{\footnotesize\ttfamily \#define C\+X\+X\+\_\+\+I\+N\+L\+I\+N\+E\+\_\+\+V\+A\+R\+I\+A\+B\+L\+ES~(\mbox{\hyperlink{group__version_ga01247740b4b51ce21e9bb3c3c602996d}{C\+X\+X\+\_\+\+V\+ER}} $>$= \mbox{\hyperlink{group__version_ga20a6261e3bdd7cad0eb7850e29ddfbe0}{C\+X\+X\+\_\+\+V\+E\+R\+\_\+\+S\+T\+D\+\_\+17}})} + + + +Check for inline variables. + + + +Definition at line 66 of file version.\+h. + +\mbox{\Hypertarget{group__version_gaa3f471a65b0eb6118e8a2cb547a46d7a}\label{group__version_gaa3f471a65b0eb6118e8a2cb547a46d7a}} +\index{version@{version}!C\+X\+X\+\_\+\+V\+A\+R\+I\+A\+B\+L\+E\+\_\+\+T\+E\+M\+P\+L\+A\+T\+ES@{C\+X\+X\+\_\+\+V\+A\+R\+I\+A\+B\+L\+E\+\_\+\+T\+E\+M\+P\+L\+A\+T\+ES}} +\index{C\+X\+X\+\_\+\+V\+A\+R\+I\+A\+B\+L\+E\+\_\+\+T\+E\+M\+P\+L\+A\+T\+ES@{C\+X\+X\+\_\+\+V\+A\+R\+I\+A\+B\+L\+E\+\_\+\+T\+E\+M\+P\+L\+A\+T\+ES}!version@{version}} +\subsubsection{\texorpdfstring{C\+X\+X\+\_\+\+V\+A\+R\+I\+A\+B\+L\+E\+\_\+\+T\+E\+M\+P\+L\+A\+T\+ES}{CXX\_VARIABLE\_TEMPLATES}} +{\footnotesize\ttfamily \#define C\+X\+X\+\_\+\+V\+A\+R\+I\+A\+B\+L\+E\+\_\+\+T\+E\+M\+P\+L\+A\+T\+ES~(\mbox{\hyperlink{group__version_ga01247740b4b51ce21e9bb3c3c602996d}{C\+X\+X\+\_\+\+V\+ER}} $>$= \mbox{\hyperlink{group__version_gaaa8cecbe78cff8d75dba25e39d5205f9}{C\+X\+X\+\_\+\+V\+E\+R\+\_\+\+S\+T\+D\+\_\+14}})} + + + +Check for variable templates. + + + +Definition at line 48 of file version.\+h. + +\mbox{\Hypertarget{group__version_ga01247740b4b51ce21e9bb3c3c602996d}\label{group__version_ga01247740b4b51ce21e9bb3c3c602996d}} +\index{version@{version}!C\+X\+X\+\_\+\+V\+ER@{C\+X\+X\+\_\+\+V\+ER}} +\index{C\+X\+X\+\_\+\+V\+ER@{C\+X\+X\+\_\+\+V\+ER}!version@{version}} +\subsubsection{\texorpdfstring{C\+X\+X\+\_\+\+V\+ER}{CXX\_VER}} +{\footnotesize\ttfamily \#define C\+X\+X\+\_\+\+V\+ER~\+\_\+\+\_\+cplusplus} + + + +C++ versions. + + + +Definition at line 38 of file version.\+h. + +\mbox{\Hypertarget{group__version_gabef125dbb6ab064efeef0491a2a43da6}\label{group__version_gabef125dbb6ab064efeef0491a2a43da6}} +\index{version@{version}!C\+X\+X\+\_\+\+V\+E\+R\+\_\+\+S\+T\+D\+\_\+11@{C\+X\+X\+\_\+\+V\+E\+R\+\_\+\+S\+T\+D\+\_\+11}} +\index{C\+X\+X\+\_\+\+V\+E\+R\+\_\+\+S\+T\+D\+\_\+11@{C\+X\+X\+\_\+\+V\+E\+R\+\_\+\+S\+T\+D\+\_\+11}!version@{version}} +\subsubsection{\texorpdfstring{C\+X\+X\+\_\+\+V\+E\+R\+\_\+\+S\+T\+D\+\_\+11}{CXX\_VER\_STD\_11}} +{\footnotesize\ttfamily \#define C\+X\+X\+\_\+\+V\+E\+R\+\_\+\+S\+T\+D\+\_\+11~201103L} + + + +Definition at line 39 of file version.\+h. + +\mbox{\Hypertarget{group__version_gaaa8cecbe78cff8d75dba25e39d5205f9}\label{group__version_gaaa8cecbe78cff8d75dba25e39d5205f9}} +\index{version@{version}!C\+X\+X\+\_\+\+V\+E\+R\+\_\+\+S\+T\+D\+\_\+14@{C\+X\+X\+\_\+\+V\+E\+R\+\_\+\+S\+T\+D\+\_\+14}} +\index{C\+X\+X\+\_\+\+V\+E\+R\+\_\+\+S\+T\+D\+\_\+14@{C\+X\+X\+\_\+\+V\+E\+R\+\_\+\+S\+T\+D\+\_\+14}!version@{version}} +\subsubsection{\texorpdfstring{C\+X\+X\+\_\+\+V\+E\+R\+\_\+\+S\+T\+D\+\_\+14}{CXX\_VER\_STD\_14}} +{\footnotesize\ttfamily \#define C\+X\+X\+\_\+\+V\+E\+R\+\_\+\+S\+T\+D\+\_\+14~201402L} + + + +Definition at line 40 of file version.\+h. + +\mbox{\Hypertarget{group__version_ga20a6261e3bdd7cad0eb7850e29ddfbe0}\label{group__version_ga20a6261e3bdd7cad0eb7850e29ddfbe0}} +\index{version@{version}!C\+X\+X\+\_\+\+V\+E\+R\+\_\+\+S\+T\+D\+\_\+17@{C\+X\+X\+\_\+\+V\+E\+R\+\_\+\+S\+T\+D\+\_\+17}} +\index{C\+X\+X\+\_\+\+V\+E\+R\+\_\+\+S\+T\+D\+\_\+17@{C\+X\+X\+\_\+\+V\+E\+R\+\_\+\+S\+T\+D\+\_\+17}!version@{version}} +\subsubsection{\texorpdfstring{C\+X\+X\+\_\+\+V\+E\+R\+\_\+\+S\+T\+D\+\_\+17}{CXX\_VER\_STD\_17}} +{\footnotesize\ttfamily \#define C\+X\+X\+\_\+\+V\+E\+R\+\_\+\+S\+T\+D\+\_\+17~201703L} + + + +Definition at line 41 of file version.\+h. + +\mbox{\Hypertarget{group__version_ga7665eee3bbd12a8d910e6237e59d3aee}\label{group__version_ga7665eee3bbd12a8d910e6237e59d3aee}} +\index{version@{version}!U\+T\+L\+\_\+\+V\+E\+R\+S\+I\+ON@{U\+T\+L\+\_\+\+V\+E\+R\+S\+I\+ON}} +\index{U\+T\+L\+\_\+\+V\+E\+R\+S\+I\+ON@{U\+T\+L\+\_\+\+V\+E\+R\+S\+I\+ON}!version@{version}} +\subsubsection{\texorpdfstring{U\+T\+L\+\_\+\+V\+E\+R\+S\+I\+ON}{UTL\_VERSION}} +{\footnotesize\ttfamily \#define U\+T\+L\+\_\+\+V\+E\+R\+S\+I\+ON~\char`\"{}0.\+1.\+0\char`\"{}} + + + +utl version + + + +Definition at line 29 of file version.\+h. + +\mbox{\Hypertarget{group__version_ga127ec85c06925fbd866584721188df32}\label{group__version_ga127ec85c06925fbd866584721188df32}} +\index{version@{version}!U\+T\+L\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+\+M\+A\+J\+OR@{U\+T\+L\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+\+M\+A\+J\+OR}} +\index{U\+T\+L\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+\+M\+A\+J\+OR@{U\+T\+L\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+\+M\+A\+J\+OR}!version@{version}} +\subsubsection{\texorpdfstring{U\+T\+L\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+\+M\+A\+J\+OR}{UTL\_VERSION\_MAJOR}} +{\footnotesize\ttfamily \#define U\+T\+L\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+\+M\+A\+J\+OR~0} + + + +Definition at line 30 of file version.\+h. + +\mbox{\Hypertarget{group__version_ga9bc1d657cd305d09ffe825ab50672c2e}\label{group__version_ga9bc1d657cd305d09ffe825ab50672c2e}} +\index{version@{version}!U\+T\+L\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+\+M\+I\+N\+OR@{U\+T\+L\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+\+M\+I\+N\+OR}} +\index{U\+T\+L\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+\+M\+I\+N\+OR@{U\+T\+L\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+\+M\+I\+N\+OR}!version@{version}} +\subsubsection{\texorpdfstring{U\+T\+L\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+\+M\+I\+N\+OR}{UTL\_VERSION\_MINOR}} +{\footnotesize\ttfamily \#define U\+T\+L\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+\+M\+I\+N\+OR~1} + + + +Definition at line 31 of file version.\+h. + +\mbox{\Hypertarget{group__version_ga0ccbcd211a838107438ae0e194f871a9}\label{group__version_ga0ccbcd211a838107438ae0e194f871a9}} +\index{version@{version}!U\+T\+L\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+\+P\+A\+T\+CH@{U\+T\+L\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+\+P\+A\+T\+CH}} +\index{U\+T\+L\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+\+P\+A\+T\+CH@{U\+T\+L\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+\+P\+A\+T\+CH}!version@{version}} +\subsubsection{\texorpdfstring{U\+T\+L\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+\+P\+A\+T\+CH}{UTL\_VERSION\_PATCH}} +{\footnotesize\ttfamily \#define U\+T\+L\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+\+P\+A\+T\+CH~0} + + + +Definition at line 32 of file version.\+h. + +\mbox{\Hypertarget{group__version_ga7af1c603dc248e854fc773c26761ed83}\label{group__version_ga7af1c603dc248e854fc773c26761ed83}} +\index{version@{version}!U\+T\+L\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+\+V\+A\+L\+UE@{U\+T\+L\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+\+V\+A\+L\+UE}} +\index{U\+T\+L\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+\+V\+A\+L\+UE@{U\+T\+L\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+\+V\+A\+L\+UE}!version@{version}} +\subsubsection{\texorpdfstring{U\+T\+L\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+\+V\+A\+L\+UE}{UTL\_VERSION\_VALUE}} +{\footnotesize\ttfamily \#define U\+T\+L\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+\+V\+A\+L\+UE} + +{\bfseries Value\+:} +\begin{DoxyCode} +( (\mbox{\hyperlink{group__version_ga127ec85c06925fbd866584721188df32}{UTL\_VERSION\_MAJOR}} * 10000) \(\backslash\) + + (\mbox{\hyperlink{group__version_ga9bc1d657cd305d09ffe825ab50672c2e}{UTL\_VERSION\_MINOR}} * 100) \(\backslash\) + + \mbox{\hyperlink{group__version_ga0ccbcd211a838107438ae0e194f871a9}{UTL\_VERSION\_PATCH}}) +\end{DoxyCode} + + +Definition at line 33 of file version.\+h. + diff --git a/doc/latex/gtest-all_8cc.tex b/doc/latex/gtest-all_8cc.tex new file mode 100644 index 0000000..55e6d4b --- /dev/null +++ b/doc/latex/gtest-all_8cc.tex @@ -0,0 +1,359 @@ +\hypertarget{gtest-all_8cc}{}\section{test/eclipse-\/cygwin/lib/gtest/gtest-\/all.cc File Reference} +\label{gtest-all_8cc}\index{test/eclipse-\/cygwin/lib/gtest/gtest-\/all.\+cc@{test/eclipse-\/cygwin/lib/gtest/gtest-\/all.\+cc}} +{\ttfamily \#include \char`\"{}gtest.\+h\char`\"{}}\newline +{\ttfamily \#include $<$ctype.\+h$>$}\newline +{\ttfamily \#include $<$math.\+h$>$}\newline +{\ttfamily \#include $<$stdarg.\+h$>$}\newline +{\ttfamily \#include $<$stdio.\+h$>$}\newline +{\ttfamily \#include $<$stdlib.\+h$>$}\newline +{\ttfamily \#include $<$time.\+h$>$}\newline +{\ttfamily \#include $<$wchar.\+h$>$}\newline +{\ttfamily \#include $<$wctype.\+h$>$}\newline +{\ttfamily \#include $<$algorithm$>$}\newline +{\ttfamily \#include $<$iomanip$>$}\newline +{\ttfamily \#include $<$limits$>$}\newline +{\ttfamily \#include $<$list$>$}\newline +{\ttfamily \#include $<$map$>$}\newline +{\ttfamily \#include $<$ostream$>$}\newline +{\ttfamily \#include $<$sstream$>$}\newline +{\ttfamily \#include $<$vector$>$}\newline +{\ttfamily \#include $<$sys/time.\+h$>$}\newline +{\ttfamily \#include $<$unistd.\+h$>$}\newline +{\ttfamily \#include $<$errno.\+h$>$}\newline +{\ttfamily \#include $<$stddef.\+h$>$}\newline +{\ttfamily \#include $<$string.\+h$>$}\newline +{\ttfamily \#include $<$memory$>$}\newline +{\ttfamily \#include $<$string$>$}\newline +{\ttfamily \#include $<$utility$>$}\newline +{\ttfamily \#include $<$limits.\+h$>$}\newline +{\ttfamily \#include $<$climits$>$}\newline +{\ttfamily \#include $<$fstream$>$}\newline +{\ttfamily \#include $<$cctype$>$}\newline +{\ttfamily \#include $<$cwchar$>$}\newline +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_captured_stream}{testing\+::internal\+::\+Captured\+Stream}} +\end{DoxyCompactItemize} +\subsection*{Namespaces} +\begin{DoxyCompactItemize} +\item + \mbox{\hyperlink{namespacetesting}{testing}} +\item + \mbox{\hyperlink{namespacetesting_1_1internal}{testing\+::internal}} +\item + \mbox{\hyperlink{namespacetesting_1_1internal2}{testing\+::internal2}} +\end{DoxyCompactItemize} +\subsection*{Macros} +\begin{DoxyCompactItemize} +\item +\#define \mbox{\hyperlink{gtest-all_8cc_a2f159eaa9c00e7aa9fd6b296e520e35c}{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+S\+P\+I\+\_\+\+H\+\_\+}} +\item +\#define \mbox{\hyperlink{gtest-all_8cc_a819a3fd7f8b8cf24b6f1b3a26708973d}{E\+X\+P\+E\+C\+T\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+RE}}(statement, substr) +\item +\#define \mbox{\hyperlink{gtest-all_8cc_ad8aac5bc859b2ddc07583636ae4f45cf}{E\+X\+P\+E\+C\+T\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+\+O\+N\+\_\+\+A\+L\+L\+\_\+\+T\+H\+R\+E\+A\+DS}}(statement, substr) +\item +\#define \mbox{\hyperlink{gtest-all_8cc_a8376fd6821bd88fd806697355e79e138}{E\+X\+P\+E\+C\+T\+\_\+\+N\+O\+N\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+RE}}(statement, substr) +\item +\#define \mbox{\hyperlink{gtest-all_8cc_a9f4cf1f150fe9facfc4cbf0bae646ee9}{E\+X\+P\+E\+C\+T\+\_\+\+N\+O\+N\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+\+O\+N\+\_\+\+A\+L\+L\+\_\+\+T\+H\+R\+E\+A\+DS}}(statement, substr) +\item +\#define \mbox{\hyperlink{gtest-all_8cc_a7c139c1711de5a69cbc934e8a082e4f9}{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+G\+E\+T\+T\+I\+M\+E\+O\+F\+D\+A\+Y\+\_\+}}~1 +\item +\#define \mbox{\hyperlink{gtest-all_8cc_ab740e029f81d48cfba1b34cecce63fef}{G\+T\+E\+S\+T\+\_\+\+S\+R\+C\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+I\+N\+L\+\_\+\+H\+\_\+}} +\item +\#define \mbox{\hyperlink{gtest-all_8cc_a4a5b6fbde5dd05e05dd6846ac5e5c18e}{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+C\+M\+P\+\_\+\+H\+E\+L\+P\+E\+R\+\_\+}}(op\+\_\+name, op) +\item +\#define \mbox{\hyperlink{gtest-all_8cc_a87a475ab9e81de8b49525787665b9229}{G\+T\+E\+S\+T\+\_\+\+R\+E\+P\+E\+A\+T\+E\+R\+\_\+\+M\+E\+T\+H\+O\+D\+\_\+}}(Name, Type) +\item +\#define \mbox{\hyperlink{gtest-all_8cc_aa7da32fd7da6a8cceeed6b448cb7b5f2}{G\+T\+E\+S\+T\+\_\+\+R\+E\+V\+E\+R\+S\+E\+\_\+\+R\+E\+P\+E\+A\+T\+E\+R\+\_\+\+M\+E\+T\+H\+O\+D\+\_\+}}(Name, Type) +\item +\#define \mbox{\hyperlink{gtest-all_8cc_ad9d445747785a9271a57cf1d392b89ad}{G\+T\+E\+S\+T\+\_\+\+P\+A\+T\+H\+\_\+\+M\+A\+X\+\_\+}}~\+\_\+\+P\+O\+S\+I\+X\+\_\+\+P\+A\+T\+H\+\_\+\+M\+AX +\end{DoxyCompactItemize} +\subsection*{Enumerations} +\begin{DoxyCompactItemize} +\item +enum \mbox{\hyperlink{namespacetesting_1_1internal_ae2ef98247c76a50cdc80ceb4a6c81793}{testing\+::internal\+::\+Char\+Format}} \{ \mbox{\hyperlink{namespacetesting_1_1internal_ae2ef98247c76a50cdc80ceb4a6c81793af7038866be92e9978360b831e376ffaa}{testing\+::internal\+::k\+As\+Is}}, +\mbox{\hyperlink{namespacetesting_1_1internal_ae2ef98247c76a50cdc80ceb4a6c81793aebfa5293302338a8e8678744c103f113}{testing\+::internal\+::k\+Hex\+Escape}}, +\mbox{\hyperlink{namespacetesting_1_1internal_ae2ef98247c76a50cdc80ceb4a6c81793ae1211108e9f35f891d9951da64794d03}{testing\+::internal\+::k\+Special\+Escape}} + \} +\end{DoxyCompactItemize} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{gtest-all_8cc_a88f79832f9d045112a76e9da8611cc13}{G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+W\+A\+R\+N\+I\+N\+G\+S\+\_\+\+P\+U\+S\+H\+\_\+}} (4251) namespace testing +\item +\mbox{\hyperlink{gtest-all_8cc_a789f37f9c345c2032699c194a58623d9}{G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+W\+A\+R\+N\+I\+N\+G\+S\+\_\+\+P\+O\+P\+\_\+}} () \mbox{\hyperlink{gtest_8h_a88f79832f9d045112a76e9da8611cc13}{G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+W\+A\+R\+N\+I\+N\+G\+S\+\_\+\+P\+U\+S\+H\+\_\+}}(4251) namespace testing +\item +\mbox{\hyperlink{namespacetesting_a8e954ed3f0f6ca2e90b043e419c74123}{testing\+::\+G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+string\+\_\+}} (death\+\_\+test\+\_\+style, internal\+::\+String\+From\+G\+Test\+Env(\char`\"{}death\+\_\+test\+\_\+style\char`\"{}, k\+Default\+Death\+Test\+Style), \char`\"{}Indicates how to run a death test in a forked child process\+: \char`\"{} \char`\"{}\textbackslash{}hreadsafe\textbackslash{}(child process re-\/executes the test binary \char`\"{} \char`\"{}from the beginning, running only the specific death test) or \char`\"{} \char`\"{}\textbackslash{}ast\textbackslash{}(child process runs the death test immediately \char`\"{} \char`\"{}after forking).\char`\"{}) +\item +\mbox{\hyperlink{namespacetesting_a428e5944490e497df683cb8324ce4489}{testing\+::\+G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+bool\+\_\+}} (death\+\_\+test\+\_\+use\+\_\+fork, internal\+::\+Bool\+From\+G\+Test\+Env(\char`\"{}death\+\_\+test\+\_\+use\+\_\+fork\char`\"{}, false), \char`\"{}Instructs to use fork()/\+\_\+exit() instead of clone() in death tests. \char`\"{} \char`\"{}Ignored and always uses fork() on P\+O\+S\+IX systems where clone() is not \char`\"{} \char`\"{}implemented. Useful when running under valgrind or similar tools if \char`\"{} \char`\"{}those do not support clone(). Valgrind 3.\+3.\+1 will just fail if \char`\"{} \char`\"{}it sees an unsupported combination of clone() flags. \char`\"{} \char`\"{}It is not recommended to use this flag w/o valgrind though it will \char`\"{} \char`\"{}work in 99\% of the cases. Once valgrind is fixed, this flag will \char`\"{} \char`\"{}most likely be removed.\char`\"{}) +\item +\mbox{\hyperlink{namespacetesting_1_1internal_a20bfd9d47d8dd167ffc1c37a4c9ff73e}{testing\+::internal\+::\+G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+string\+\_\+}} (internal\+\_\+run\+\_\+death\+\_\+test, \char`\"{}\char`\"{}, \char`\"{}Indicates the file, line number, temporal index of \char`\"{} \char`\"{}the single death test to run, and a file descriptor to \char`\"{} \char`\"{}which a success code may be sent, all separated by \char`\"{} \char`\"{}the \textquotesingle{}$\vert$\textquotesingle{} characters. This flag is specified if and only if the current \char`\"{} \char`\"{}process is a sub-\/process launched for running a thread-\/safe \char`\"{} \char`\"{}death test. F\+OR I\+N\+T\+E\+R\+N\+AL U\+SE O\+N\+L\+Y.\char`\"{}) +\item +size\+\_\+t \mbox{\hyperlink{namespacetesting_1_1internal_a8cbd8bf820517923d7f3c4477b3af5fa}{testing\+::internal\+::\+Get\+Thread\+Count}} () +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} \+::std\+::string \mbox{\hyperlink{namespacetesting_1_1internal_a31b7c3abed4a7c395f42c61e993989f4}{testing\+::internal\+::\+Format\+File\+Location}} (const char $\ast$file, int line) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} \+::std\+::string \mbox{\hyperlink{namespacetesting_1_1internal_a1ee4cde97868c53e442d3182496a9f3c}{testing\+::internal\+::\+Format\+Compiler\+Independent\+File\+Location}} (const char $\ast$file, int line) +\item +void \mbox{\hyperlink{namespacetesting_1_1internal_acba06d4f0343dec407738ba5544af990}{testing\+::internal\+::\+Capture\+Stdout}} () +\item +void \mbox{\hyperlink{namespacetesting_1_1internal_a8ec00d458d0d442bd64af7b5f9c22dda}{testing\+::internal\+::\+Capture\+Stderr}} () +\item +std\+::string \mbox{\hyperlink{namespacetesting_1_1internal_aed657219a9856a8d249a3230de0c54ce}{testing\+::internal\+::\+Get\+Captured\+Stdout}} () +\item +std\+::string \mbox{\hyperlink{namespacetesting_1_1internal_a374156401da17704099d0c33fa53adfb}{testing\+::internal\+::\+Get\+Captured\+Stderr}} () +\item +size\+\_\+t \mbox{\hyperlink{namespacetesting_1_1internal_a40bcfd87e26aae36e0cc51e5db64fd89}{testing\+::internal\+::\+Get\+File\+Size}} (F\+I\+LE $\ast$file) +\item +std\+::string \mbox{\hyperlink{namespacetesting_1_1internal_ab81b0af2a0131ea54dc11de00d5e6e51}{testing\+::internal\+::\+Read\+Entire\+File}} (F\+I\+LE $\ast$file) +\item +bool \mbox{\hyperlink{namespacetesting_1_1internal_ac06fc81336a3d80755f4020d34321766}{testing\+::internal\+::\+Parse\+Int32}} (const Message \&src\+\_\+text, const char $\ast$str, Int32 $\ast$value) +\item +bool \mbox{\hyperlink{namespacetesting_1_1internal_a1055088bb9b867e1b7b8f096f519d7c5}{testing\+::internal\+::\+Bool\+From\+G\+Test\+Env}} (const char $\ast$flag, bool default\+\_\+value) +\item +Int32 \mbox{\hyperlink{namespacetesting_1_1internal_a2196f070b2d28bceb45c7ad3b565b9ba}{testing\+::internal\+::\+Int32\+From\+G\+Test\+Env}} (const char $\ast$flag, Int32 default\+\_\+value) +\item +std\+::string \mbox{\hyperlink{namespacetesting_1_1internal_a0c793c6d84760d900299916c077a1af4}{testing\+::internal\+::\+Output\+Flag\+Also\+Check\+Env\+Var}} () +\item +const char $\ast$ \mbox{\hyperlink{namespacetesting_1_1internal_a0967cbf18fb1594f82512d8d822aba21}{testing\+::internal\+::\+String\+From\+G\+Test\+Env}} (const char $\ast$flag, const char $\ast$default\+\_\+value) +\item +void \mbox{\hyperlink{namespacetesting_1_1internal2_abfb9aa80365f93b952e9a4bea09947a8}{testing\+::internal2\+::\+Print\+Bytes\+In\+Object\+To}} (const unsigned char $\ast$obj\+\_\+bytes, size\+\_\+t count, ostream $\ast$os) +\item +bool \mbox{\hyperlink{namespacetesting_1_1internal_a744a6dd74c12d1e2c16b3c03e14ed4d4}{testing\+::internal\+::\+Is\+Printable\+Ascii}} (wchar\+\_\+t c) +\item +{\footnotesize template$<$typename Unsigned\+Char , typename Char $>$ }\\void \mbox{\hyperlink{namespacetesting_1_1internal_a0c577e598e61d339ba45dd6643fb1969}{testing\+::internal\+::\+Print\+Char\+And\+Code\+To}} (Char c, ostream $\ast$os) +\item +void \mbox{\hyperlink{namespacetesting_1_1internal_aa7e70a85d66f0c109e3e69629ef577f2}{testing\+::internal\+::\+Print\+To}} (unsigned char c, \+::std\+::ostream $\ast$os) +\item +void \mbox{\hyperlink{namespacetesting_1_1internal_abf6c518b437569187c1218166c702807}{testing\+::internal\+::\+Print\+To}} (signed char c, \+::std\+::ostream $\ast$os) +\item +void \mbox{\hyperlink{namespacetesting_1_1internal_aa74ea9d64f76ce69eceb225ca5ebef58}{testing\+::internal\+::\+Print\+To}} (wchar\+\_\+t wc, ostream $\ast$os) +\item +void \mbox{\hyperlink{namespacetesting_1_1internal_a070107e7a8205ad6ec4d538d52b15b38}{testing\+::internal\+::\+Universal\+Print\+Array}} (const char $\ast$begin, size\+\_\+t len, ostream $\ast$os) +\item +void \mbox{\hyperlink{namespacetesting_1_1internal_a52394019018eb5079f9f1bcca23dcd60}{testing\+::internal\+::\+Universal\+Print\+Array}} (const wchar\+\_\+t $\ast$begin, size\+\_\+t len, ostream $\ast$os) +\item +void \mbox{\hyperlink{namespacetesting_1_1internal_adc6c98306d40b53fd07be4e295102a0a}{testing\+::internal\+::\+Print\+To}} (const char $\ast$s, ostream $\ast$os) +\item +void \mbox{\hyperlink{namespacetesting_1_1internal_afc20fb56b2547a8f91f9ff99650f2024}{testing\+::internal\+::\+Print\+To}} (const wchar\+\_\+t $\ast$s, ostream $\ast$os) +\item +void \mbox{\hyperlink{namespacetesting_1_1internal_ad609167d8d6792b0fb186539e0e159bd}{testing\+::internal\+::\+Print\+String\+To}} (const \+::std\+::string \&s, ostream $\ast$os) +\item +void \mbox{\hyperlink{namespacetesting_1_1internal_ac46308aa3c0294ae446a40115aeb32c6}{testing\+::internal\+::\+Print\+Wide\+String\+To}} (const \+::std\+::wstring \&s, ostream $\ast$os) +\item +std\+::ostream \& \mbox{\hyperlink{namespacetesting_a266e39b7c4691fedb856047673a412d8}{testing\+::operator$<$$<$}} (std\+::ostream \&os, const Test\+Part\+Result \&result) +\end{DoxyCompactItemize} +\subsection*{Variables} +\begin{DoxyCompactItemize} +\item +const char \mbox{\hyperlink{namespacetesting_1_1internal_afcd71adaa9d1e6df7b282a17fc48125c}{testing\+::internal\+::k\+Path\+Separator}} = \textquotesingle{}/\textquotesingle{} +\item +const char \mbox{\hyperlink{namespacetesting_1_1internal_a23a8e9527d0e544e7df2d64ad549ce3e}{testing\+::internal\+::k\+Current\+Directory\+String}} \mbox{[}$\,$\mbox{]} = \char`\"{}./\char`\"{} +\item +const int \mbox{\hyperlink{namespacetesting_1_1internal_a24f0a3d50cac54a9132f4828ec9b96d9}{testing\+::internal\+::k\+Std\+Out\+Fileno}} = S\+T\+D\+O\+U\+T\+\_\+\+F\+I\+L\+E\+NO +\item +const int \mbox{\hyperlink{namespacetesting_1_1internal_a747eccfdbdee3ff8af3bedc476a57c85}{testing\+::internal\+::k\+Std\+Err\+Fileno}} = S\+T\+D\+E\+R\+R\+\_\+\+F\+I\+L\+E\+NO +\item +const char \mbox{\hyperlink{namespacetesting_1_1internal_abae7a5775c901f2fd12b058b00d09840}{testing\+::internal\+::k\+Unknown\+File}} \mbox{[}$\,$\mbox{]} = \char`\"{}unknown file\char`\"{} +\end{DoxyCompactItemize} + + +\subsection{Macro Definition Documentation} +\mbox{\Hypertarget{gtest-all_8cc_a819a3fd7f8b8cf24b6f1b3a26708973d}\label{gtest-all_8cc_a819a3fd7f8b8cf24b6f1b3a26708973d}} +\index{gtest-\/all.\+cc@{gtest-\/all.\+cc}!E\+X\+P\+E\+C\+T\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+RE@{E\+X\+P\+E\+C\+T\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+RE}} +\index{E\+X\+P\+E\+C\+T\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+RE@{E\+X\+P\+E\+C\+T\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+RE}!gtest-\/all.\+cc@{gtest-\/all.\+cc}} +\subsubsection{\texorpdfstring{E\+X\+P\+E\+C\+T\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+RE}{EXPECT\_FATAL\_FAILURE}} +{\footnotesize\ttfamily \#define E\+X\+P\+E\+C\+T\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+RE(\begin{DoxyParamCaption}\item[{}]{statement, }\item[{}]{substr }\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode} +\textcolor{keywordflow}{do} \{ \(\backslash\) + class GTestExpectFatalFailureHelper \{\(\backslash\) + public:\(\backslash\) + static \textcolor{keywordtype}{void} Execute() \{ statement; \}\(\backslash\) + \};\(\backslash\) + ::testing::TestPartResultArray gtest\_failures;\(\backslash\) + ::testing::internal::SingleFailureChecker gtest\_checker(\(\backslash\) + >est\_failures, ::testing::TestPartResult::kFatalFailure, (substr));\(\backslash\) + \{\(\backslash\) + ::testing::ScopedFakeTestPartResultReporter gtest\_reporter(\(\backslash\) + ::testing::ScopedFakeTestPartResultReporter:: \(\backslash\) + INTERCEPT\_ONLY\_CURRENT\_THREAD, >est\_failures);\(\backslash\) + GTestExpectFatalFailureHelper::Execute();\(\backslash\) + \}\(\backslash\) + \} \textcolor{keywordflow}{while} (::\mbox{\hyperlink{namespacetesting_1_1internal_a4b24c851ab13569b1b15b3d259b60d2e}{testing::internal::AlwaysFalse}}()) +\end{DoxyCode} +\mbox{\Hypertarget{gtest-all_8cc_ad8aac5bc859b2ddc07583636ae4f45cf}\label{gtest-all_8cc_ad8aac5bc859b2ddc07583636ae4f45cf}} +\index{gtest-\/all.\+cc@{gtest-\/all.\+cc}!E\+X\+P\+E\+C\+T\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+\+O\+N\+\_\+\+A\+L\+L\+\_\+\+T\+H\+R\+E\+A\+DS@{E\+X\+P\+E\+C\+T\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+\+O\+N\+\_\+\+A\+L\+L\+\_\+\+T\+H\+R\+E\+A\+DS}} +\index{E\+X\+P\+E\+C\+T\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+\+O\+N\+\_\+\+A\+L\+L\+\_\+\+T\+H\+R\+E\+A\+DS@{E\+X\+P\+E\+C\+T\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+\+O\+N\+\_\+\+A\+L\+L\+\_\+\+T\+H\+R\+E\+A\+DS}!gtest-\/all.\+cc@{gtest-\/all.\+cc}} +\subsubsection{\texorpdfstring{E\+X\+P\+E\+C\+T\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+\+O\+N\+\_\+\+A\+L\+L\+\_\+\+T\+H\+R\+E\+A\+DS}{EXPECT\_FATAL\_FAILURE\_ON\_ALL\_THREADS}} +{\footnotesize\ttfamily \#define E\+X\+P\+E\+C\+T\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+\+O\+N\+\_\+\+A\+L\+L\+\_\+\+T\+H\+R\+E\+A\+DS(\begin{DoxyParamCaption}\item[{}]{statement, }\item[{}]{substr }\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode} +\textcolor{keywordflow}{do} \{ \(\backslash\) + class GTestExpectFatalFailureHelper \{\(\backslash\) + public:\(\backslash\) + static \textcolor{keywordtype}{void} Execute() \{ statement; \}\(\backslash\) + \};\(\backslash\) + ::testing::TestPartResultArray gtest\_failures;\(\backslash\) + ::testing::internal::SingleFailureChecker gtest\_checker(\(\backslash\) + >est\_failures, ::testing::TestPartResult::kFatalFailure, (substr));\(\backslash\) + \{\(\backslash\) + ::testing::ScopedFakeTestPartResultReporter gtest\_reporter(\(\backslash\) + ::testing::ScopedFakeTestPartResultReporter:: \(\backslash\) + INTERCEPT\_ALL\_THREADS, >est\_failures);\(\backslash\) + GTestExpectFatalFailureHelper::Execute();\(\backslash\) + \}\(\backslash\) + \} \textcolor{keywordflow}{while} (::\mbox{\hyperlink{namespacetesting_1_1internal_a4b24c851ab13569b1b15b3d259b60d2e}{testing::internal::AlwaysFalse}}()) +\end{DoxyCode} +\mbox{\Hypertarget{gtest-all_8cc_a8376fd6821bd88fd806697355e79e138}\label{gtest-all_8cc_a8376fd6821bd88fd806697355e79e138}} +\index{gtest-\/all.\+cc@{gtest-\/all.\+cc}!E\+X\+P\+E\+C\+T\+\_\+\+N\+O\+N\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+RE@{E\+X\+P\+E\+C\+T\+\_\+\+N\+O\+N\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+RE}} +\index{E\+X\+P\+E\+C\+T\+\_\+\+N\+O\+N\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+RE@{E\+X\+P\+E\+C\+T\+\_\+\+N\+O\+N\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+RE}!gtest-\/all.\+cc@{gtest-\/all.\+cc}} +\subsubsection{\texorpdfstring{E\+X\+P\+E\+C\+T\+\_\+\+N\+O\+N\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+RE}{EXPECT\_NONFATAL\_FAILURE}} +{\footnotesize\ttfamily \#define E\+X\+P\+E\+C\+T\+\_\+\+N\+O\+N\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+RE(\begin{DoxyParamCaption}\item[{}]{statement, }\item[{}]{substr }\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode} +\textcolor{keywordflow}{do} \{\(\backslash\) + ::testing::TestPartResultArray gtest\_failures;\(\backslash\) + ::testing::internal::SingleFailureChecker gtest\_checker(\(\backslash\) + >est\_failures, ::testing::TestPartResult::kNonFatalFailure, \(\backslash\) + (substr));\(\backslash\) + \{\(\backslash\) + ::testing::ScopedFakeTestPartResultReporter gtest\_reporter(\(\backslash\) + ::testing::ScopedFakeTestPartResultReporter:: \(\backslash\) + INTERCEPT\_ONLY\_CURRENT\_THREAD, >est\_failures);\(\backslash\) + if (::\mbox{\hyperlink{namespacetesting_1_1internal_a4d46f09c3bfe68700b7f728d2cc3782f}{testing::internal::AlwaysTrue}}()) \{ statement; \}\(\backslash\) + \}\(\backslash\) + \} \textcolor{keywordflow}{while} (::\mbox{\hyperlink{namespacetesting_1_1internal_a4b24c851ab13569b1b15b3d259b60d2e}{testing::internal::AlwaysFalse}}()) +\end{DoxyCode} +\mbox{\Hypertarget{gtest-all_8cc_a9f4cf1f150fe9facfc4cbf0bae646ee9}\label{gtest-all_8cc_a9f4cf1f150fe9facfc4cbf0bae646ee9}} +\index{gtest-\/all.\+cc@{gtest-\/all.\+cc}!E\+X\+P\+E\+C\+T\+\_\+\+N\+O\+N\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+\+O\+N\+\_\+\+A\+L\+L\+\_\+\+T\+H\+R\+E\+A\+DS@{E\+X\+P\+E\+C\+T\+\_\+\+N\+O\+N\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+\+O\+N\+\_\+\+A\+L\+L\+\_\+\+T\+H\+R\+E\+A\+DS}} +\index{E\+X\+P\+E\+C\+T\+\_\+\+N\+O\+N\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+\+O\+N\+\_\+\+A\+L\+L\+\_\+\+T\+H\+R\+E\+A\+DS@{E\+X\+P\+E\+C\+T\+\_\+\+N\+O\+N\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+\+O\+N\+\_\+\+A\+L\+L\+\_\+\+T\+H\+R\+E\+A\+DS}!gtest-\/all.\+cc@{gtest-\/all.\+cc}} +\subsubsection{\texorpdfstring{E\+X\+P\+E\+C\+T\+\_\+\+N\+O\+N\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+\+O\+N\+\_\+\+A\+L\+L\+\_\+\+T\+H\+R\+E\+A\+DS}{EXPECT\_NONFATAL\_FAILURE\_ON\_ALL\_THREADS}} +{\footnotesize\ttfamily \#define E\+X\+P\+E\+C\+T\+\_\+\+N\+O\+N\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+\+O\+N\+\_\+\+A\+L\+L\+\_\+\+T\+H\+R\+E\+A\+DS(\begin{DoxyParamCaption}\item[{}]{statement, }\item[{}]{substr }\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode} +\textcolor{keywordflow}{do} \{\(\backslash\) + ::testing::TestPartResultArray gtest\_failures;\(\backslash\) + ::testing::internal::SingleFailureChecker gtest\_checker(\(\backslash\) + >est\_failures, ::testing::TestPartResult::kNonFatalFailure, \(\backslash\) + (substr));\(\backslash\) + \{\(\backslash\) + ::testing::ScopedFakeTestPartResultReporter gtest\_reporter(\(\backslash\) + ::testing::ScopedFakeTestPartResultReporter::INTERCEPT\_ALL\_THREADS, \(\backslash\) + >est\_failures);\(\backslash\) + if (::\mbox{\hyperlink{namespacetesting_1_1internal_a4d46f09c3bfe68700b7f728d2cc3782f}{testing::internal::AlwaysTrue}}()) \{ statement; \}\(\backslash\) + \}\(\backslash\) + \} \textcolor{keywordflow}{while} (::\mbox{\hyperlink{namespacetesting_1_1internal_a4b24c851ab13569b1b15b3d259b60d2e}{testing::internal::AlwaysFalse}}()) +\end{DoxyCode} +\mbox{\Hypertarget{gtest-all_8cc_a7c139c1711de5a69cbc934e8a082e4f9}\label{gtest-all_8cc_a7c139c1711de5a69cbc934e8a082e4f9}} +\index{gtest-\/all.\+cc@{gtest-\/all.\+cc}!G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+G\+E\+T\+T\+I\+M\+E\+O\+F\+D\+A\+Y\+\_\+@{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+G\+E\+T\+T\+I\+M\+E\+O\+F\+D\+A\+Y\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+G\+E\+T\+T\+I\+M\+E\+O\+F\+D\+A\+Y\+\_\+@{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+G\+E\+T\+T\+I\+M\+E\+O\+F\+D\+A\+Y\+\_\+}!gtest-\/all.\+cc@{gtest-\/all.\+cc}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+G\+E\+T\+T\+I\+M\+E\+O\+F\+D\+A\+Y\+\_\+}{GTEST\_HAS\_GETTIMEOFDAY\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+G\+E\+T\+T\+I\+M\+E\+O\+F\+D\+A\+Y\+\_\+~1} + +\mbox{\Hypertarget{gtest-all_8cc_a4a5b6fbde5dd05e05dd6846ac5e5c18e}\label{gtest-all_8cc_a4a5b6fbde5dd05e05dd6846ac5e5c18e}} +\index{gtest-\/all.\+cc@{gtest-\/all.\+cc}!G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+C\+M\+P\+\_\+\+H\+E\+L\+P\+E\+R\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+C\+M\+P\+\_\+\+H\+E\+L\+P\+E\+R\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+C\+M\+P\+\_\+\+H\+E\+L\+P\+E\+R\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+C\+M\+P\+\_\+\+H\+E\+L\+P\+E\+R\+\_\+}!gtest-\/all.\+cc@{gtest-\/all.\+cc}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+C\+M\+P\+\_\+\+H\+E\+L\+P\+E\+R\+\_\+}{GTEST\_IMPL\_CMP\_HELPER\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+C\+M\+P\+\_\+\+H\+E\+L\+P\+E\+R\+\_\+(\begin{DoxyParamCaption}\item[{}]{op\+\_\+name, }\item[{}]{op }\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode} +AssertionResult CmpHelper##op\_name(\textcolor{keyword}{const} \textcolor{keywordtype}{char}* expr1, \textcolor{keyword}{const} \textcolor{keywordtype}{char}* expr2, \(\backslash\) + \mbox{\hyperlink{namespacetesting_1_1internal_a05c6bd9ede5ccdf25191a590d610dcc6}{BiggestInt}} val1, \mbox{\hyperlink{namespacetesting_1_1internal_a05c6bd9ede5ccdf25191a590d610dcc6}{BiggestInt}} val2) \{\(\backslash\) + if (val1 op val2) \{\(\backslash\) + return AssertionSuccess();\(\backslash\) + \} \textcolor{keywordflow}{else} \{\(\backslash\) + return AssertionFailure() \(\backslash\) + << \textcolor{stringliteral}{"Expected: ("} << expr1 << \textcolor{stringliteral}{") "} #op \textcolor{stringliteral}{" ("} << expr2\(\backslash\) + << \textcolor{stringliteral}{"), actual: "} << \mbox{\hyperlink{namespacetesting_1_1internal_a91ab078f10adc669f09b7f604975c518}{FormatForComparisonFailureMessage}}(val1, val2)\(\backslash\) + << \textcolor{stringliteral}{" vs "} << \mbox{\hyperlink{namespacetesting_1_1internal_a91ab078f10adc669f09b7f604975c518}{FormatForComparisonFailureMessage}}(val2, val1);\(\backslash\) + \}\(\backslash\) +\} +\end{DoxyCode} +\mbox{\Hypertarget{gtest-all_8cc_a2f159eaa9c00e7aa9fd6b296e520e35c}\label{gtest-all_8cc_a2f159eaa9c00e7aa9fd6b296e520e35c}} +\index{gtest-\/all.\+cc@{gtest-\/all.\+cc}!G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+S\+P\+I\+\_\+\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+S\+P\+I\+\_\+\+H\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+S\+P\+I\+\_\+\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+S\+P\+I\+\_\+\+H\+\_\+}!gtest-\/all.\+cc@{gtest-\/all.\+cc}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+S\+P\+I\+\_\+\+H\+\_\+}{GTEST\_INCLUDE\_GTEST\_GTEST\_SPI\_H\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+S\+P\+I\+\_\+\+H\+\_\+} + + + +Definition at line 109 of file gtest-\/all.\+cc. + +\mbox{\Hypertarget{gtest-all_8cc_ad9d445747785a9271a57cf1d392b89ad}\label{gtest-all_8cc_ad9d445747785a9271a57cf1d392b89ad}} +\index{gtest-\/all.\+cc@{gtest-\/all.\+cc}!G\+T\+E\+S\+T\+\_\+\+P\+A\+T\+H\+\_\+\+M\+A\+X\+\_\+@{G\+T\+E\+S\+T\+\_\+\+P\+A\+T\+H\+\_\+\+M\+A\+X\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+P\+A\+T\+H\+\_\+\+M\+A\+X\+\_\+@{G\+T\+E\+S\+T\+\_\+\+P\+A\+T\+H\+\_\+\+M\+A\+X\+\_\+}!gtest-\/all.\+cc@{gtest-\/all.\+cc}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+P\+A\+T\+H\+\_\+\+M\+A\+X\+\_\+}{GTEST\_PATH\_MAX\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+P\+A\+T\+H\+\_\+\+M\+A\+X\+\_\+~\+\_\+\+P\+O\+S\+I\+X\+\_\+\+P\+A\+T\+H\+\_\+\+M\+AX} + + + +Definition at line 9221 of file gtest-\/all.\+cc. + +\mbox{\Hypertarget{gtest-all_8cc_a87a475ab9e81de8b49525787665b9229}\label{gtest-all_8cc_a87a475ab9e81de8b49525787665b9229}} +\index{gtest-\/all.\+cc@{gtest-\/all.\+cc}!G\+T\+E\+S\+T\+\_\+\+R\+E\+P\+E\+A\+T\+E\+R\+\_\+\+M\+E\+T\+H\+O\+D\+\_\+@{G\+T\+E\+S\+T\+\_\+\+R\+E\+P\+E\+A\+T\+E\+R\+\_\+\+M\+E\+T\+H\+O\+D\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+R\+E\+P\+E\+A\+T\+E\+R\+\_\+\+M\+E\+T\+H\+O\+D\+\_\+@{G\+T\+E\+S\+T\+\_\+\+R\+E\+P\+E\+A\+T\+E\+R\+\_\+\+M\+E\+T\+H\+O\+D\+\_\+}!gtest-\/all.\+cc@{gtest-\/all.\+cc}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+R\+E\+P\+E\+A\+T\+E\+R\+\_\+\+M\+E\+T\+H\+O\+D\+\_\+}{GTEST\_REPEATER\_METHOD\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+R\+E\+P\+E\+A\+T\+E\+R\+\_\+\+M\+E\+T\+H\+O\+D\+\_\+(\begin{DoxyParamCaption}\item[{}]{Name, }\item[{}]{Type }\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode} +\textcolor{keywordtype}{void} TestEventRepeater::Name(\textcolor{keyword}{const} Type& parameter) \{ \(\backslash\) + if (forwarding\_enabled\_) \{ \(\backslash\) + for (\textcolor{keywordtype}{size\_t} i = 0; i < listeners\_.size(); i++) \{ \(\backslash\) + listeners\_[i]->Name(parameter); \(\backslash\) + \} \(\backslash\) + \} \(\backslash\) +\} +\end{DoxyCode} +\mbox{\Hypertarget{gtest-all_8cc_aa7da32fd7da6a8cceeed6b448cb7b5f2}\label{gtest-all_8cc_aa7da32fd7da6a8cceeed6b448cb7b5f2}} +\index{gtest-\/all.\+cc@{gtest-\/all.\+cc}!G\+T\+E\+S\+T\+\_\+\+R\+E\+V\+E\+R\+S\+E\+\_\+\+R\+E\+P\+E\+A\+T\+E\+R\+\_\+\+M\+E\+T\+H\+O\+D\+\_\+@{G\+T\+E\+S\+T\+\_\+\+R\+E\+V\+E\+R\+S\+E\+\_\+\+R\+E\+P\+E\+A\+T\+E\+R\+\_\+\+M\+E\+T\+H\+O\+D\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+R\+E\+V\+E\+R\+S\+E\+\_\+\+R\+E\+P\+E\+A\+T\+E\+R\+\_\+\+M\+E\+T\+H\+O\+D\+\_\+@{G\+T\+E\+S\+T\+\_\+\+R\+E\+V\+E\+R\+S\+E\+\_\+\+R\+E\+P\+E\+A\+T\+E\+R\+\_\+\+M\+E\+T\+H\+O\+D\+\_\+}!gtest-\/all.\+cc@{gtest-\/all.\+cc}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+R\+E\+V\+E\+R\+S\+E\+\_\+\+R\+E\+P\+E\+A\+T\+E\+R\+\_\+\+M\+E\+T\+H\+O\+D\+\_\+}{GTEST\_REVERSE\_REPEATER\_METHOD\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+R\+E\+V\+E\+R\+S\+E\+\_\+\+R\+E\+P\+E\+A\+T\+E\+R\+\_\+\+M\+E\+T\+H\+O\+D\+\_\+(\begin{DoxyParamCaption}\item[{}]{Name, }\item[{}]{Type }\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode} +\textcolor{keywordtype}{void} TestEventRepeater::Name(\textcolor{keyword}{const} Type& parameter) \{ \(\backslash\) + if (forwarding\_enabled\_) \{ \(\backslash\) + for (\textcolor{keywordtype}{int} i = static\_cast(listeners\_.size()) - 1; i >= 0; i--) \{ \(\backslash\) + listeners\_[i]->Name(parameter); \(\backslash\) + \} \(\backslash\) + \} \(\backslash\) +\} +\end{DoxyCode} +\mbox{\Hypertarget{gtest-all_8cc_ab740e029f81d48cfba1b34cecce63fef}\label{gtest-all_8cc_ab740e029f81d48cfba1b34cecce63fef}} +\index{gtest-\/all.\+cc@{gtest-\/all.\+cc}!G\+T\+E\+S\+T\+\_\+\+S\+R\+C\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+I\+N\+L\+\_\+\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+S\+R\+C\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+I\+N\+L\+\_\+\+H\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+S\+R\+C\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+I\+N\+L\+\_\+\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+S\+R\+C\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+I\+N\+L\+\_\+\+H\+\_\+}!gtest-\/all.\+cc@{gtest-\/all.\+cc}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+S\+R\+C\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+I\+N\+L\+\_\+\+H\+\_\+}{GTEST\_SRC\_GTEST\_INTERNAL\_INL\_H\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+S\+R\+C\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+I\+N\+L\+\_\+\+H\+\_\+} + + + +\subsection{Function Documentation} +\mbox{\Hypertarget{gtest-all_8cc_a789f37f9c345c2032699c194a58623d9}\label{gtest-all_8cc_a789f37f9c345c2032699c194a58623d9}} +\index{gtest-\/all.\+cc@{gtest-\/all.\+cc}!G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+W\+A\+R\+N\+I\+N\+G\+S\+\_\+\+P\+O\+P\+\_\+@{G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+W\+A\+R\+N\+I\+N\+G\+S\+\_\+\+P\+O\+P\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+W\+A\+R\+N\+I\+N\+G\+S\+\_\+\+P\+O\+P\+\_\+@{G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+W\+A\+R\+N\+I\+N\+G\+S\+\_\+\+P\+O\+P\+\_\+}!gtest-\/all.\+cc@{gtest-\/all.\+cc}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+W\+A\+R\+N\+I\+N\+G\+S\+\_\+\+P\+O\+P\+\_\+()}{GTEST\_DISABLE\_MSC\_WARNINGS\_POP\_()}} +{\footnotesize\ttfamily G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+W\+A\+R\+N\+I\+N\+G\+S\+\_\+\+P\+O\+P\+\_\+ (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + + + +Definition at line 190 of file gtest-\/all.\+cc. + +\mbox{\Hypertarget{gtest-all_8cc_a88f79832f9d045112a76e9da8611cc13}\label{gtest-all_8cc_a88f79832f9d045112a76e9da8611cc13}} +\index{gtest-\/all.\+cc@{gtest-\/all.\+cc}!G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+W\+A\+R\+N\+I\+N\+G\+S\+\_\+\+P\+U\+S\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+W\+A\+R\+N\+I\+N\+G\+S\+\_\+\+P\+U\+S\+H\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+W\+A\+R\+N\+I\+N\+G\+S\+\_\+\+P\+U\+S\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+W\+A\+R\+N\+I\+N\+G\+S\+\_\+\+P\+U\+S\+H\+\_\+}!gtest-\/all.\+cc@{gtest-\/all.\+cc}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+W\+A\+R\+N\+I\+N\+G\+S\+\_\+\+P\+U\+S\+H\+\_\+()}{GTEST\_DISABLE\_MSC\_WARNINGS\_PUSH\_()}} +{\footnotesize\ttfamily G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+W\+A\+R\+N\+I\+N\+G\+S\+\_\+\+P\+U\+S\+H\+\_\+ (\begin{DoxyParamCaption}\item[{4251}]{5046 }\end{DoxyParamCaption})} + + + +Definition at line 112 of file gtest-\/all.\+cc. + diff --git a/doc/latex/gtest_8h.tex b/doc/latex/gtest_8h.tex new file mode 100644 index 0000000..d8bc17d --- /dev/null +++ b/doc/latex/gtest_8h.tex @@ -0,0 +1,3664 @@ +\hypertarget{gtest_8h}{}\section{test/eclipse-\/cygwin/lib/gtest/gtest.h File Reference} +\label{gtest_8h}\index{test/eclipse-\/cygwin/lib/gtest/gtest.\+h@{test/eclipse-\/cygwin/lib/gtest/gtest.\+h}} +{\ttfamily \#include $<$limits$>$}\newline +{\ttfamily \#include $<$memory$>$}\newline +{\ttfamily \#include $<$ostream$>$}\newline +{\ttfamily \#include $<$vector$>$}\newline +{\ttfamily \#include $<$ctype.\+h$>$}\newline +{\ttfamily \#include $<$stddef.\+h$>$}\newline +{\ttfamily \#include $<$stdio.\+h$>$}\newline +{\ttfamily \#include $<$stdlib.\+h$>$}\newline +{\ttfamily \#include $<$string.\+h$>$}\newline +{\ttfamily \#include $<$type\+\_\+traits$>$}\newline +{\ttfamily \#include $<$sys/types.\+h$>$}\newline +{\ttfamily \#include $<$sys/stat.\+h$>$}\newline +{\ttfamily \#include $<$string$>$}\newline +{\ttfamily \#include $<$algorithm$>$}\newline +{\ttfamily \#include $<$iostream$>$}\newline +{\ttfamily \#include $<$sstream$>$}\newline +{\ttfamily \#include $<$tuple$>$}\newline +{\ttfamily \#include $<$utility$>$}\newline +{\ttfamily \#include $<$unistd.\+h$>$}\newline +{\ttfamily \#include $<$strings.\+h$>$}\newline +{\ttfamily \#include $<$regex.\+h$>$}\newline +{\ttfamily \#include $<$typeinfo$>$}\newline +{\ttfamily \#include $<$float.\+h$>$}\newline +{\ttfamily \#include $<$iomanip$>$}\newline +{\ttfamily \#include $<$map$>$}\newline +{\ttfamily \#include $<$set$>$}\newline +{\ttfamily \#include $<$functional$>$}\newline +{\ttfamily \#include $<$iterator$>$}\newline +{\ttfamily \#include $<$assert.\+h$>$}\newline +{\ttfamily \#include $<$iosfwd$>$}\newline +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_static_assert_type_eq_helper}{testing\+::internal\+::\+Static\+Assert\+Type\+Eq\+Helper$<$ T1, T2 $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_static_assert_type_eq_helper_3_01_t_00_01_t_01_4}{testing\+::internal\+::\+Static\+Assert\+Type\+Eq\+Helper$<$ T, T $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_is_same}{testing\+::internal\+::\+Is\+Same$<$ T, U $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_is_same_3_01_t_00_01_t_01_4}{testing\+::internal\+::\+Is\+Same$<$ T, T $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_r_e}{testing\+::internal\+::\+RE}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_g_test_log}{testing\+::internal\+::\+G\+Test\+Log}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_add_reference}{testing\+::internal\+::\+Add\+Reference$<$ T $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_add_reference_3_01_t_01_6_01_4}{testing\+::internal\+::\+Add\+Reference$<$ T \& $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_const_ref}{testing\+::internal\+::\+Const\+Ref$<$ T $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_const_ref_3_01_t_01_6_01_4}{testing\+::internal\+::\+Const\+Ref$<$ T \& $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_mutex}{testing\+::internal\+::\+Mutex}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_g_test_mutex_lock}{testing\+::internal\+::\+G\+Test\+Mutex\+Lock}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_thread_local}{testing\+::internal\+::\+Thread\+Local$<$ T $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1bool__constant}{testing\+::internal\+::bool\+\_\+constant$<$ bool\+\_\+value $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1is__same}{testing\+::internal\+::is\+\_\+same$<$ T, U $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1is__same_3_01_t_00_01_t_01_4}{testing\+::internal\+::is\+\_\+same$<$ T, T $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_iterator_traits}{testing\+::internal\+::\+Iterator\+Traits$<$ Iterator $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_iterator_traits_3_01_t_01_5_01_4}{testing\+::internal\+::\+Iterator\+Traits$<$ T $\ast$ $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_iterator_traits_3_01const_01_t_01_5_01_4}{testing\+::internal\+::\+Iterator\+Traits$<$ const T $\ast$ $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_type_with_size}{testing\+::internal\+::\+Type\+With\+Size$<$ size $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_type_with_size_3_014_01_4}{testing\+::internal\+::\+Type\+With\+Size$<$ 4 $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_type_with_size_3_018_01_4}{testing\+::internal\+::\+Type\+With\+Size$<$ 8 $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1_message}{testing\+::\+Message}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_ignored_value}{testing\+::internal\+::\+Ignored\+Value}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point}{testing\+::internal\+::\+Floating\+Point$<$ Raw\+Type $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_type_id_helper}{testing\+::internal\+::\+Type\+Id\+Helper$<$ T $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_test_factory_base}{testing\+::internal\+::\+Test\+Factory\+Base}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_test_factory_impl}{testing\+::internal\+::\+Test\+Factory\+Impl$<$ Test\+Class $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_code_location}{testing\+::internal\+::\+Code\+Location}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_suite_api_resolver}{testing\+::internal\+::\+Suite\+Api\+Resolver$<$ T $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_const_char_ptr}{testing\+::internal\+::\+Const\+Char\+Ptr}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_random}{testing\+::internal\+::\+Random}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_compile_assert_types_equal}{testing\+::internal\+::\+Compile\+Assert\+Types\+Equal$<$ T1, T2 $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_compile_assert_types_equal_3_01_t_00_01_t_01_4}{testing\+::internal\+::\+Compile\+Assert\+Types\+Equal$<$ T, T $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_remove_reference}{testing\+::internal\+::\+Remove\+Reference$<$ T $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_remove_reference_3_01_t_01_6_01_4}{testing\+::internal\+::\+Remove\+Reference$<$ T \& $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_remove_const}{testing\+::internal\+::\+Remove\+Const$<$ T $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_remove_const_3_01const_01_t_01_4}{testing\+::internal\+::\+Remove\+Const$<$ const T $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_remove_const_3_01const_01_t[_n]_4}{testing\+::internal\+::\+Remove\+Const$<$ const T\mbox{[}\+N\mbox{]}$>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_implicitly_convertible}{testing\+::internal\+::\+Implicitly\+Convertible$<$ From, To $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_is_a_protocol_message}{testing\+::internal\+::\+Is\+A\+Protocol\+Message$<$ T $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_is_hash_table}{testing\+::internal\+::\+Is\+Hash\+Table$<$ T $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_is_recursive_container_impl}{testing\+::internal\+::\+Is\+Recursive\+Container\+Impl$<$ C, bool $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01false_01_4}{testing\+::internal\+::\+Is\+Recursive\+Container\+Impl$<$ C, false $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01true_01_4}{testing\+::internal\+::\+Is\+Recursive\+Container\+Impl$<$ C, true $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_is_recursive_container}{testing\+::internal\+::\+Is\+Recursive\+Container$<$ C $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_enable_if}{testing\+::internal\+::\+Enable\+If$<$ bool $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_enable_if_3_01true_01_4}{testing\+::internal\+::\+Enable\+If$<$ true $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_relation_to_source_reference}{testing\+::internal\+::\+Relation\+To\+Source\+Reference}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_relation_to_source_copy}{testing\+::internal\+::\+Relation\+To\+Source\+Copy}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_native_array}{testing\+::internal\+::\+Native\+Array$<$ Element $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_index_sequence}{testing\+::internal\+::\+Index\+Sequence$<$ Is $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_double_sequence}{testing\+::internal\+::\+Double\+Sequence$<$ plus\+\_\+one, T, sizeof\+T $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_double_sequence_3_01true_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4}{testing\+::internal\+::\+Double\+Sequence$<$ true, Index\+Sequence$<$ I... $>$, sizeof\+T $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_double_sequence_3_01false_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4}{testing\+::internal\+::\+Double\+Sequence$<$ false, Index\+Sequence$<$ I... $>$, sizeof\+T $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_make_index_sequence}{testing\+::internal\+::\+Make\+Index\+Sequence$<$ N $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_make_index_sequence_3_010_01_4}{testing\+::internal\+::\+Make\+Index\+Sequence$<$ 0 $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_elem_from_list_impl}{testing\+::internal\+::\+Elem\+From\+List\+Impl$<$ T, size\+\_\+t, size\+\_\+t $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_elem_from_list_impl_3_01_t_00_01_i_00_01_i_01_4}{testing\+::internal\+::\+Elem\+From\+List\+Impl$<$ T, I, I $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_elem_from_list}{testing\+::internal\+::\+Elem\+From\+List$<$ N, I, T $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_elem_from_list_3_01_n_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01_t_8_8_8_01_4}{testing\+::internal\+::\+Elem\+From\+List$<$ N, Index\+Sequence$<$ I... $>$, T... $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_flat_tuple}{testing\+::internal\+::\+Flat\+Tuple$<$ T $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_flat_tuple_elem_base}{testing\+::internal\+::\+Flat\+Tuple\+Elem\+Base$<$ Derived, I $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_flat_tuple_elem_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_i_01_4}{testing\+::internal\+::\+Flat\+Tuple\+Elem\+Base$<$ Flat\+Tuple$<$ T... $>$, I $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_flat_tuple_base}{testing\+::internal\+::\+Flat\+Tuple\+Base$<$ Derived, Idx $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_flat_tuple_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_index_sequence_3_01_idx_8_8_8_01_4_01_4}{testing\+::internal\+::\+Flat\+Tuple\+Base$<$ Flat\+Tuple$<$ T... $>$, Index\+Sequence$<$ Idx... $>$ $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_flat_tuple}{testing\+::internal\+::\+Flat\+Tuple$<$ T $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal2_1_1_type_without_formatter}{testing\+::internal2\+::\+Type\+Without\+Formatter$<$ T, k\+Type\+Kind $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal2_1_1_type_without_formatter_3_01_t_00_01k_protobuf_01_4}{testing\+::internal2\+::\+Type\+Without\+Formatter$<$ T, k\+Protobuf $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal2_1_1_type_without_formatter_3_01_t_00_01k_convertible_to_integer_01_4}{testing\+::internal2\+::\+Type\+Without\+Formatter$<$ T, k\+Convertible\+To\+Integer $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_format_for_comparison}{testing\+::internal\+::\+Format\+For\+Comparison$<$ To\+Print, Other\+Operand $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_format_for_comparison_3_01_to_print[_n]_00_01_other_operand_01_4}{testing\+::internal\+::\+Format\+For\+Comparison$<$ To\+Print\mbox{[}\+N\mbox{]}, Other\+Operand $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_universal_printer}{testing\+::internal\+::\+Universal\+Printer$<$ T $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_wrap_printer_type}{testing\+::internal\+::\+Wrap\+Printer\+Type$<$ type $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_universal_printer}{testing\+::internal\+::\+Universal\+Printer$<$ T $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_universal_printer_3_01_t[_n]_4}{testing\+::internal\+::\+Universal\+Printer$<$ T\mbox{[}\+N\mbox{]}$>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_universal_printer_3_01_t_01_6_01_4}{testing\+::internal\+::\+Universal\+Printer$<$ T \& $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_universal_terse_printer}{testing\+::internal\+::\+Universal\+Terse\+Printer$<$ T $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_universal_terse_printer_3_01_t_01_6_01_4}{testing\+::internal\+::\+Universal\+Terse\+Printer$<$ T \& $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_universal_terse_printer_3_01_t[_n]_4}{testing\+::internal\+::\+Universal\+Terse\+Printer$<$ T\mbox{[}\+N\mbox{]}$>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_universal_terse_printer_3_01const_01char_01_5_01_4}{testing\+::internal\+::\+Universal\+Terse\+Printer$<$ const char $\ast$ $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_universal_terse_printer_3_01char_01_5_01_4}{testing\+::internal\+::\+Universal\+Terse\+Printer$<$ char $\ast$ $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_universal_terse_printer_3_01const_01wchar__t_01_5_01_4}{testing\+::internal\+::\+Universal\+Terse\+Printer$<$ const wchar\+\_\+t $\ast$ $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_universal_terse_printer_3_01wchar__t_01_5_01_4}{testing\+::internal\+::\+Universal\+Terse\+Printer$<$ wchar\+\_\+t $\ast$ $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1_test_param_info}{testing\+::\+Test\+Param\+Info$<$ Param\+Type $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1_print_to_string_param_name}{testing\+::\+Print\+To\+String\+Param\+Name}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator_interface}{testing\+::internal\+::\+Param\+Generator\+Interface$<$ T $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{testing\+::internal\+::\+Param\+Generator$<$ T $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{testing\+::internal\+::\+Param\+Iterator\+Interface$<$ T $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator}{testing\+::internal\+::\+Param\+Iterator$<$ T $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator_interface}{testing\+::internal\+::\+Param\+Generator\+Interface$<$ T $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{testing\+::internal\+::\+Param\+Generator$<$ T $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_range_generator}{testing\+::internal\+::\+Range\+Generator$<$ T, Increment\+T $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_values_in_iterator_range_generator}{testing\+::internal\+::\+Values\+In\+Iterator\+Range\+Generator$<$ T $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_param_name_gen_func}{testing\+::internal\+::\+Param\+Name\+Gen\+Func$<$ Param\+Type $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_factory}{testing\+::internal\+::\+Parameterized\+Test\+Factory$<$ Test\+Class $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_test_meta_factory_base}{testing\+::internal\+::\+Test\+Meta\+Factory\+Base$<$ Param\+Type $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_test_meta_factory}{testing\+::internal\+::\+Test\+Meta\+Factory$<$ Test\+Suite $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_info_base}{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info\+Base}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_info}{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Info$<$ Test\+Suite $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_registry}{testing\+::internal\+::\+Parameterized\+Test\+Suite\+Registry}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_value_array}{testing\+::internal\+::\+Value\+Array$<$ Ts $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator2}{testing\+::internal\+::\+Cartesian\+Product\+Generator2$<$ T1, T2 $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator3}{testing\+::internal\+::\+Cartesian\+Product\+Generator3$<$ T1, T2, T3 $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator4}{testing\+::internal\+::\+Cartesian\+Product\+Generator4$<$ T1, T2, T3, T4 $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator5}{testing\+::internal\+::\+Cartesian\+Product\+Generator5$<$ T1, T2, T3, T4, T5 $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator6}{testing\+::internal\+::\+Cartesian\+Product\+Generator6$<$ T1, T2, T3, T4, T5, T6 $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator7}{testing\+::internal\+::\+Cartesian\+Product\+Generator7$<$ T1, T2, T3, T4, T5, T6, T7 $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator8}{testing\+::internal\+::\+Cartesian\+Product\+Generator8$<$ T1, T2, T3, T4, T5, T6, T7, T8 $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator9}{testing\+::internal\+::\+Cartesian\+Product\+Generator9$<$ T1, T2, T3, T4, T5, T6, T7, T8, T9 $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator10}{testing\+::internal\+::\+Cartesian\+Product\+Generator10$<$ T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder2}{testing\+::internal\+::\+Cartesian\+Product\+Holder2$<$ Generator1, Generator2 $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder3}{testing\+::internal\+::\+Cartesian\+Product\+Holder3$<$ Generator1, Generator2, Generator3 $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder4}{testing\+::internal\+::\+Cartesian\+Product\+Holder4$<$ Generator1, Generator2, Generator3, Generator4 $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder5}{testing\+::internal\+::\+Cartesian\+Product\+Holder5$<$ Generator1, Generator2, Generator3, Generator4, Generator5 $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder6}{testing\+::internal\+::\+Cartesian\+Product\+Holder6$<$ Generator1, Generator2, Generator3, Generator4, Generator5, Generator6 $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder7}{testing\+::internal\+::\+Cartesian\+Product\+Holder7$<$ Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7 $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder8}{testing\+::internal\+::\+Cartesian\+Product\+Holder8$<$ Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8 $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder9}{testing\+::internal\+::\+Cartesian\+Product\+Holder9$<$ Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8, Generator9 $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder10}{testing\+::internal\+::\+Cartesian\+Product\+Holder10$<$ Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8, Generator9, Generator10 $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1_test}{testing\+::\+Test}} +\item +class \mbox{\hyperlink{classtesting_1_1_test_property}{testing\+::\+Test\+Property}} +\item +class \mbox{\hyperlink{classtesting_1_1_test_result}{testing\+::\+Test\+Result}} +\item +class \mbox{\hyperlink{classtesting_1_1_test_info}{testing\+::\+Test\+Info}} +\item +class \mbox{\hyperlink{classtesting_1_1_test_suite}{testing\+::\+Test\+Suite}} +\item +class \mbox{\hyperlink{classtesting_1_1_environment}{testing\+::\+Environment}} +\item +class \mbox{\hyperlink{classtesting_1_1_test_event_listener}{testing\+::\+Test\+Event\+Listener}} +\item +class \mbox{\hyperlink{classtesting_1_1_empty_test_event_listener}{testing\+::\+Empty\+Test\+Event\+Listener}} +\item +class \mbox{\hyperlink{classtesting_1_1_test_event_listeners}{testing\+::\+Test\+Event\+Listeners}} +\item +class \mbox{\hyperlink{classtesting_1_1_unit_test}{testing\+::\+Unit\+Test}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1faketype}{testing\+::internal\+::faketype}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_eq_helper}{testing\+::internal\+::\+Eq\+Helper$<$ lhs\+\_\+is\+\_\+null\+\_\+literal $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_eq_helper_3_01true_01_4}{testing\+::internal\+::\+Eq\+Helper$<$ true $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_assert_helper}{testing\+::internal\+::\+Assert\+Helper}} +\item +class \mbox{\hyperlink{classtesting_1_1_with_param_interface}{testing\+::\+With\+Param\+Interface$<$ T $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1_test_with_param}{testing\+::\+Test\+With\+Param$<$ T $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1_scoped_trace}{testing\+::\+Scoped\+Trace}} +\end{DoxyCompactItemize} +\subsection*{Namespaces} +\begin{DoxyCompactItemize} +\item + \mbox{\hyperlink{namespacetesting}{testing}} +\item + \mbox{\hyperlink{namespacetesting_1_1internal}{testing\+::internal}} +\item + \mbox{\hyperlink{namespacetesting_1_1internal_1_1posix}{testing\+::internal\+::posix}} +\item + \mbox{\hyperlink{namespaceproto2}{proto2}} +\item + \mbox{\hyperlink{namespacetesting_1_1internal_1_1edit__distance}{testing\+::internal\+::edit\+\_\+distance}} +\item + \mbox{\hyperlink{namespacetesting_1_1internal2}{testing\+::internal2}} +\item + \mbox{\hyperlink{namespacetesting__internal}{testing\+\_\+internal}} +\end{DoxyCompactItemize} +\subsection*{Macros} +\begin{DoxyCompactItemize} +\item +\#define \mbox{\hyperlink{gtest_8h_a508d33581439542ea940eacbf306ad2a}{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+H\+\_\+}} +\item +\#define \mbox{\hyperlink{gtest_8h_a6d13def13619ff1647c90e3354a65732}{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+O\+R\+T\+\_\+\+H\+\_\+}} +\item +\#define \mbox{\hyperlink{gtest_8h_a0392ac662f9547fb26a0d23c26d09fa6}{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+O\+R\+T\+\_\+\+A\+R\+C\+H\+\_\+\+H\+\_\+}} +\item +\#define \mbox{\hyperlink{gtest_8h_aae632b050088c635963f553c4a5157b0}{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+C\+U\+S\+T\+O\+M\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+O\+R\+T\+\_\+\+H\+\_\+}} +\item +\#define \mbox{\hyperlink{gtest_8h_a21086d276b1a64d6763ee8a94b12c1b8}{G\+T\+E\+S\+T\+\_\+\+D\+E\+V\+\_\+\+E\+M\+A\+I\+L\+\_\+}}~\char`\"{}googletestframework@@googlegroups.\+com\char`\"{} +\item +\#define \mbox{\hyperlink{gtest_8h_a088e84784c589ba9b1fc48602ad8eabf}{G\+T\+E\+S\+T\+\_\+\+F\+L\+A\+G\+\_\+\+P\+R\+E\+F\+I\+X\+\_\+}}~\char`\"{}gtest\+\_\+\char`\"{} +\item +\#define \mbox{\hyperlink{gtest_8h_a4251ff898f9f94ec6b8b9402c3436759}{G\+T\+E\+S\+T\+\_\+\+F\+L\+A\+G\+\_\+\+P\+R\+E\+F\+I\+X\+\_\+\+D\+A\+S\+H\+\_\+}}~\char`\"{}gtest-\/\char`\"{} +\item +\#define \mbox{\hyperlink{gtest_8h_a4018b7f288f974d022df397e2730633a}{G\+T\+E\+S\+T\+\_\+\+F\+L\+A\+G\+\_\+\+P\+R\+E\+F\+I\+X\+\_\+\+U\+P\+P\+E\+R\+\_\+}}~\char`\"{}G\+T\+E\+S\+T\+\_\+\char`\"{} +\item +\#define \mbox{\hyperlink{gtest_8h_a13d98c217176bd8722c395b9225fc19d}{G\+T\+E\+S\+T\+\_\+\+N\+A\+M\+E\+\_\+}}~\char`\"{}Google Test\char`\"{} +\item +\#define \mbox{\hyperlink{gtest_8h_a5aa3c938fc1d049f1d9c5332f6a0b1d4}{G\+T\+E\+S\+T\+\_\+\+P\+R\+O\+J\+E\+C\+T\+\_\+\+U\+R\+L\+\_\+}}~\char`\"{}https\+://github.\+com/google/googletest/\char`\"{} +\item +\#define \mbox{\hyperlink{gtest_8h_aa5e27ad4f88278501ef71bd9ddbb44c6}{G\+T\+E\+S\+T\+\_\+\+I\+N\+I\+T\+\_\+\+G\+O\+O\+G\+L\+E\+\_\+\+T\+E\+S\+T\+\_\+\+N\+A\+M\+E\+\_\+}}~\char`\"{}testing\+::\+Init\+Google\+Test\char`\"{} +\item +\#define \mbox{\hyperlink{gtest_8h_a86994cc68e844d8b82089c70408dfc61}{G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+W\+A\+R\+N\+I\+N\+G\+S\+\_\+\+P\+U\+S\+H\+\_\+}}(warnings) +\item +\#define \mbox{\hyperlink{gtest_8h_aebf8277c9069c1e124f9a5bbe2948061}{G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+W\+A\+R\+N\+I\+N\+G\+S\+\_\+\+P\+O\+P\+\_\+}}() +\item +\#define \mbox{\hyperlink{gtest_8h_a5b130138db254deaf29dbe3dffa1a2a8}{G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+D\+E\+P\+R\+E\+C\+A\+T\+E\+D\+\_\+\+P\+U\+S\+H\+\_\+}}()~\mbox{\hyperlink{gtest_8h_a88f79832f9d045112a76e9da8611cc13}{G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+W\+A\+R\+N\+I\+N\+G\+S\+\_\+\+P\+U\+S\+H\+\_\+}}(4996) +\item +\#define \mbox{\hyperlink{gtest_8h_aa0dc86dc9837f1610e91da65458f53b3}{G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+D\+E\+P\+R\+E\+C\+A\+T\+E\+D\+\_\+\+P\+O\+P\+\_\+}}()~\mbox{\hyperlink{gtest-all_8cc_a789f37f9c345c2032699c194a58623d9}{G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+W\+A\+R\+N\+I\+N\+G\+S\+\_\+\+P\+O\+P\+\_\+}}() +\item +\#define \mbox{\hyperlink{gtest_8h_af5c4295ea1d76f07f65934f659792431}{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+P\+O\+S\+I\+X\+\_\+\+RE}}~(!G\+T\+E\+S\+T\+\_\+\+O\+S\+\_\+\+W\+I\+N\+D\+O\+WS) +\item +\#define \mbox{\hyperlink{gtest_8h_acecef794eeb09598cd47da764271cb18}{G\+T\+E\+S\+T\+\_\+\+U\+S\+E\+S\+\_\+\+P\+O\+S\+I\+X\+\_\+\+RE}}~1 +\item +\#define \mbox{\hyperlink{gtest_8h_aedcf220690e6589d0fc2bd3db768ea66}{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+E\+X\+C\+E\+P\+T\+I\+O\+NS}}~0 +\item +\#define \mbox{\hyperlink{gtest_8h_adba1121430c11cee8ba0c74e8cf6aa40}{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+S\+T\+D\+\_\+\+S\+T\+R\+I\+NG}}~1 +\item +\#define \mbox{\hyperlink{gtest_8h_a6ab57c4a17233dd4ed30c2926bb99cc5}{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+G\+L\+O\+B\+A\+L\+\_\+\+S\+T\+R\+I\+NG}}~0 +\item +\#define \mbox{\hyperlink{gtest_8h_a6e087748d8bbd2ca57c487b6ad268670}{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+S\+T\+D\+\_\+\+W\+S\+T\+R\+I\+NG}}~(!(G\+T\+E\+S\+T\+\_\+\+O\+S\+\_\+\+L\+I\+N\+U\+X\+\_\+\+A\+N\+D\+R\+O\+ID $\vert$$\vert$ G\+T\+E\+S\+T\+\_\+\+O\+S\+\_\+\+C\+Y\+G\+W\+IN $\vert$$\vert$ G\+T\+E\+S\+T\+\_\+\+O\+S\+\_\+\+S\+O\+L\+A\+R\+IS)) +\item +\#define \mbox{\hyperlink{gtest_8h_afca9ecaf5846561187a15b75013aa85b}{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+G\+L\+O\+B\+A\+L\+\_\+\+W\+S\+T\+R\+I\+NG}}~(\mbox{\hyperlink{gtest_8h_a6e087748d8bbd2ca57c487b6ad268670}{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+S\+T\+D\+\_\+\+W\+S\+T\+R\+I\+NG}} \&\& \mbox{\hyperlink{gtest_8h_a6ab57c4a17233dd4ed30c2926bb99cc5}{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+G\+L\+O\+B\+A\+L\+\_\+\+S\+T\+R\+I\+NG}}) +\item +\#define \mbox{\hyperlink{gtest_8h_a9ba781217167f905bff2f1c410a97930}{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+R\+T\+TI}}~1 +\item +\#define \mbox{\hyperlink{gtest_8h_a3341397e1952de0b9cd88762d4d3ae4b}{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+P\+T\+H\+R\+E\+AD}} +\item +\#define \mbox{\hyperlink{gtest_8h_a40c075a7f969a694e59532356be59fd5}{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+C\+L\+O\+NE}}~0 +\item +\#define \mbox{\hyperlink{gtest_8h_add695166eb7b691f93777525d5881062}{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+S\+T\+R\+E\+A\+M\+\_\+\+R\+E\+D\+I\+R\+E\+C\+T\+I\+ON}}~1 +\item +\#define \mbox{\hyperlink{gtest_8h_a0e3904ca8d62334ab5f29c057dceb6a1}{G\+T\+E\+S\+T\+\_\+\+W\+I\+D\+E\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+U\+S\+E\+S\+\_\+\+U\+T\+F16\+\_\+}}~(G\+T\+E\+S\+T\+\_\+\+O\+S\+\_\+\+W\+I\+N\+D\+O\+WS $\vert$$\vert$ G\+T\+E\+S\+T\+\_\+\+O\+S\+\_\+\+C\+Y\+G\+W\+IN $\vert$$\vert$ G\+T\+E\+S\+T\+\_\+\+O\+S\+\_\+\+A\+IX $\vert$$\vert$ G\+T\+E\+S\+T\+\_\+\+O\+S\+\_\+\+O\+S2) +\item +\#define \mbox{\hyperlink{gtest_8h_a00b3684a621ce1422b55a0e7e8a6aecb}{G\+T\+E\+S\+T\+\_\+\+A\+M\+B\+I\+G\+U\+O\+U\+S\+\_\+\+E\+L\+S\+E\+\_\+\+B\+L\+O\+C\+K\+E\+R\+\_\+}}~switch (0) case 0\+: default\+: +\item +\#define \mbox{\hyperlink{gtest_8h_acdd47601a9376161c349a5881ccc6918}{G\+T\+E\+S\+T\+\_\+\+A\+T\+T\+R\+I\+B\+U\+T\+E\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+}} +\item +\#define \mbox{\hyperlink{gtest_8h_ae29b00ca46783509cc900cd03d61ef37}{G\+T\+E\+S\+T\+\_\+\+A\+T\+T\+R\+I\+B\+U\+T\+E\+\_\+\+P\+R\+I\+N\+T\+F\+\_\+}}(string\+\_\+index, first\+\_\+to\+\_\+check) +\item +\#define \mbox{\hyperlink{gtest_8h_ac593b50ce24257d5b6aa84845c344c9e}{G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+L\+L\+O\+W\+\_\+\+A\+S\+S\+I\+G\+N\+\_\+}}(type)~void operator=(type const \&) = delete +\item +\#define \mbox{\hyperlink{gtest_8h_aed8c1888c32b588b0681e88b95031e29}{G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+L\+L\+O\+W\+\_\+\+C\+O\+P\+Y\+\_\+\+A\+N\+D\+\_\+\+A\+S\+S\+I\+G\+N\+\_\+}}(type) +\item +\#define \mbox{\hyperlink{gtest_8h_a8e5aab8276b2645f64f41c9e3021b935}{G\+T\+E\+S\+T\+\_\+\+M\+U\+S\+T\+\_\+\+U\+S\+E\+\_\+\+R\+E\+S\+U\+L\+T\+\_\+}} +\item +\#define \mbox{\hyperlink{gtest_8h_a69b0cadb05bf2a1ef96151243c6b6241}{G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+N\+T\+I\+O\+N\+A\+L\+\_\+\+C\+O\+N\+S\+T\+\_\+\+C\+O\+N\+D\+\_\+\+P\+U\+S\+H\+\_\+}}()~\mbox{\hyperlink{gtest_8h_a88f79832f9d045112a76e9da8611cc13}{G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+W\+A\+R\+N\+I\+N\+G\+S\+\_\+\+P\+U\+S\+H\+\_\+}}(4127) +\item +\#define \mbox{\hyperlink{gtest_8h_ad115e2c466f7e8a32f1cf23ef2e5f220}{G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+N\+T\+I\+O\+N\+A\+L\+\_\+\+C\+O\+N\+S\+T\+\_\+\+C\+O\+N\+D\+\_\+\+P\+O\+P\+\_\+}}()~\mbox{\hyperlink{gtest-all_8cc_a789f37f9c345c2032699c194a58623d9}{G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+W\+A\+R\+N\+I\+N\+G\+S\+\_\+\+P\+O\+P\+\_\+}}() +\item +\#define \mbox{\hyperlink{gtest_8h_a8f6a84e8be3c94cd1f6f46a136df2c62}{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+S\+EH}}~0 +\item +\#define \mbox{\hyperlink{gtest_8h_a727149862f53b2fb21f6d33cd9323886}{G\+T\+E\+S\+T\+\_\+\+I\+S\+\_\+\+T\+H\+R\+E\+A\+D\+S\+A\+FE}} +\item +\#define \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} +\item +\#define \mbox{\hyperlink{gtest_8h_a491d09ee62f1c9cfeafa3dbf75aaa9e2}{G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+A\+U\+L\+T\+\_\+\+D\+E\+A\+T\+H\+\_\+\+T\+E\+S\+T\+\_\+\+S\+T\+Y\+LE}}~\char`\"{}fast\char`\"{} +\item +\#define \mbox{\hyperlink{gtest_8h_a9945cbd967fbccb15f8de711f58955c7}{G\+T\+E\+S\+T\+\_\+\+N\+O\+\_\+\+I\+N\+L\+I\+N\+E\+\_\+}} +\item +\#define \mbox{\hyperlink{gtest_8h_ae6239a8ccf4c230008d1db1ea8bd738e}{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+C\+X\+X\+A\+B\+I\+\_\+\+H\+\_\+}}~0 +\item +\#define \mbox{\hyperlink{gtest_8h_a2a83dd79037e53814a509cc3f5702650}{G\+T\+E\+S\+T\+\_\+\+A\+T\+T\+R\+I\+B\+U\+T\+E\+\_\+\+N\+O\+\_\+\+S\+A\+N\+I\+T\+I\+Z\+E\+\_\+\+M\+E\+M\+O\+R\+Y\+\_\+}} +\item +\#define \mbox{\hyperlink{gtest_8h_af18b465f4ba6e36eea7a8d2d79521873}{G\+T\+E\+S\+T\+\_\+\+A\+T\+T\+R\+I\+B\+U\+T\+E\+\_\+\+N\+O\+\_\+\+S\+A\+N\+I\+T\+I\+Z\+E\+\_\+\+A\+D\+D\+R\+E\+S\+S\+\_\+}} +\item +\#define \mbox{\hyperlink{gtest_8h_abf30a6b1b3a12ecb2cc1bc1a6f5f9646}{G\+T\+E\+S\+T\+\_\+\+A\+T\+T\+R\+I\+B\+U\+T\+E\+\_\+\+N\+O\+\_\+\+S\+A\+N\+I\+T\+I\+Z\+E\+\_\+\+T\+H\+R\+E\+A\+D\+\_\+}} +\item +\#define \mbox{\hyperlink{gtest_8h_ae1f37dc71d5daa6fb49ca1b6047d4a8c}{G\+T\+E\+S\+T\+\_\+\+C\+O\+M\+P\+I\+L\+E\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+}}(expr, msg)~static\+\_\+assert(expr, \#msg) +\item +\#define \mbox{\hyperlink{gtest_8h_ab71a3e9a908b7b6acc0e8bddc0ecb3fe}{G\+T\+E\+S\+T\+\_\+\+A\+R\+R\+A\+Y\+\_\+\+S\+I\+Z\+E\+\_\+}}(array)~(sizeof(array) / sizeof(array\mbox{[}0\mbox{]})) +\item +\#define \mbox{\hyperlink{gtest_8h_a8ef4cb4c465db8c15464aecc6d9510ef}{G\+T\+E\+S\+T\+\_\+\+L\+O\+G\+\_\+}}(severity) +\item +\#define \mbox{\hyperlink{gtest_8h_ab54343f0a36dc4cb0ce8a478dd7847b8}{G\+T\+E\+S\+T\+\_\+\+C\+H\+E\+C\+K\+\_\+}}(condition) +\item +\#define \mbox{\hyperlink{gtest_8h_a38f6151210e363ad7c69a836b13cf0af}{G\+T\+E\+S\+T\+\_\+\+C\+H\+E\+C\+K\+\_\+\+P\+O\+S\+I\+X\+\_\+\+S\+U\+C\+C\+E\+S\+S\+\_\+}}(posix\+\_\+call) +\item +\#define \mbox{\hyperlink{gtest_8h_ab389953fc1f7e4efae30d182a0e0a13b}{G\+T\+E\+S\+T\+\_\+\+A\+D\+D\+\_\+\+R\+E\+F\+E\+R\+E\+N\+C\+E\+\_\+}}(T)~typename \+::\mbox{\hyperlink{structtesting_1_1internal_1_1_add_reference}{testing\+::internal\+::\+Add\+Reference}}$<$T$>$\+::type +\item +\#define \mbox{\hyperlink{gtest_8h_a9f91fcd24cae0b48fdaeb19102dac525}{G\+T\+E\+S\+T\+\_\+\+R\+E\+F\+E\+R\+E\+N\+C\+E\+\_\+\+T\+O\+\_\+\+C\+O\+N\+S\+T\+\_\+}}(T)~typename \+::\mbox{\hyperlink{structtesting_1_1internal_1_1_const_ref}{testing\+::internal\+::\+Const\+Ref}}$<$T$>$\+::type +\item +\#define \mbox{\hyperlink{gtest_8h_af0970cdea09f16dbb1dbfccdaa693eeb}{G\+T\+E\+S\+T\+\_\+\+D\+E\+C\+L\+A\+R\+E\+\_\+\+S\+T\+A\+T\+I\+C\+\_\+\+M\+U\+T\+E\+X\+\_\+}}(mutex)~extern \+::\mbox{\hyperlink{classtesting_1_1internal_1_1_mutex}{testing\+::internal\+::\+Mutex}} mutex +\item +\#define \mbox{\hyperlink{gtest_8h_a85d5cd679fdbe87383e7dfd1c6651eaa}{G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+\+S\+T\+A\+T\+I\+C\+\_\+\+M\+U\+T\+E\+X\+\_\+}}(mutex)~\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_mutex}{testing\+::internal\+::\+Mutex}} mutex +\item +\#define \mbox{\hyperlink{gtest_8h_afbb636e91bdd50267dbef11a50490b29}{G\+T\+E\+S\+T\+\_\+\+P\+A\+T\+H\+\_\+\+S\+E\+P\+\_\+}}~\char`\"{}/\char`\"{} +\item +\#define \mbox{\hyperlink{gtest_8h_acf0ee1851e6d342237bb64806ee1fd27}{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+A\+L\+T\+\_\+\+P\+A\+T\+H\+\_\+\+S\+E\+P\+\_\+}}~0 +\item +\#define \mbox{\hyperlink{gtest_8h_aed1cc8143222d7a845a1269448ec203e}{G\+T\+E\+S\+T\+\_\+\+S\+N\+P\+R\+I\+N\+T\+F\+\_\+}}~snprintf +\item +\#define \mbox{\hyperlink{gtest_8h_a828f4e34a1c4b510da50ec1563e3562a}{G\+T\+E\+S\+T\+\_\+\+F\+L\+AG}}(name)~F\+L\+A\+G\+S\+\_\+gtest\+\_\+\#\#name +\item +\#define \mbox{\hyperlink{gtest_8h_aa2315948dda8dba4fc516575657f193c}{G\+T\+E\+S\+T\+\_\+\+U\+S\+E\+\_\+\+O\+W\+N\+\_\+\+F\+L\+A\+G\+F\+I\+L\+E\+\_\+\+F\+L\+A\+G\+\_\+}}~1 +\item +\#define \mbox{\hyperlink{gtest_8h_a3749ef4fba6b3c3993609b336031644d}{G\+T\+E\+S\+T\+\_\+\+F\+L\+A\+G\+\_\+\+S\+A\+V\+E\+R\+\_\+}}~\+::testing\+::internal\+::\+G\+Test\+Flag\+Saver +\item +\#define \mbox{\hyperlink{gtest_8h_a14eb0e9c6e0df765d1fbfd2db6966d14}{G\+T\+E\+S\+T\+\_\+\+D\+E\+C\+L\+A\+R\+E\+\_\+bool\+\_\+}}(name)~\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} extern bool \mbox{\hyperlink{gtest_8h_a828f4e34a1c4b510da50ec1563e3562a}{G\+T\+E\+S\+T\+\_\+\+F\+L\+AG}}(name) +\item +\#define \mbox{\hyperlink{gtest_8h_aab2ee98cb616054b1d3a7dc71efe81fc}{G\+T\+E\+S\+T\+\_\+\+D\+E\+C\+L\+A\+R\+E\+\_\+int32\+\_\+}}(name)~\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} extern \+::\mbox{\hyperlink{namespacetesting_1_1internal_a8ee38faaf875f133358abaf9bc056cec}{testing\+::internal\+::\+Int32}} \mbox{\hyperlink{gtest_8h_a828f4e34a1c4b510da50ec1563e3562a}{G\+T\+E\+S\+T\+\_\+\+F\+L\+AG}}(name) +\item +\#define \mbox{\hyperlink{gtest_8h_a9f74eee05f7ee5534139a622fe7da7dd}{G\+T\+E\+S\+T\+\_\+\+D\+E\+C\+L\+A\+R\+E\+\_\+string\+\_\+}}(name)~\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} extern \+::std\+::string \mbox{\hyperlink{gtest_8h_a828f4e34a1c4b510da50ec1563e3562a}{G\+T\+E\+S\+T\+\_\+\+F\+L\+AG}}(name) +\item +\#define \mbox{\hyperlink{gtest_8h_a48e05814779e5a2f432b06a12618a760}{G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+bool\+\_\+}}(name, default\+\_\+val, doc)~\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} bool \mbox{\hyperlink{gtest_8h_a828f4e34a1c4b510da50ec1563e3562a}{G\+T\+E\+S\+T\+\_\+\+F\+L\+AG}}(name) = (default\+\_\+val) +\item +\#define \mbox{\hyperlink{gtest_8h_a88ee2f19589ffff86ca742fd33611358}{G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+int32\+\_\+}}(name, default\+\_\+val, doc)~\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} \+::\mbox{\hyperlink{namespacetesting_1_1internal_a8ee38faaf875f133358abaf9bc056cec}{testing\+::internal\+::\+Int32}} \mbox{\hyperlink{gtest_8h_a828f4e34a1c4b510da50ec1563e3562a}{G\+T\+E\+S\+T\+\_\+\+F\+L\+AG}}(name) = (default\+\_\+val) +\item +\#define \mbox{\hyperlink{gtest_8h_a885e18fe217a6e85553d408b99252c12}{G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+string\+\_\+}}(name, default\+\_\+val, doc)~\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} \+::std\+::string \mbox{\hyperlink{gtest_8h_a828f4e34a1c4b510da50ec1563e3562a}{G\+T\+E\+S\+T\+\_\+\+F\+L\+AG}}(name) = (default\+\_\+val) +\item +\#define \mbox{\hyperlink{gtest_8h_a149f693bd59fa1bc937af54c0cdcb32f}{G\+T\+E\+S\+T\+\_\+\+E\+X\+C\+L\+U\+S\+I\+V\+E\+\_\+\+L\+O\+C\+K\+\_\+\+R\+E\+Q\+U\+I\+R\+E\+D\+\_\+}}(locks) +\item +\#define \mbox{\hyperlink{gtest_8h_a69abff5a4efdd07bd5faebe3dd318d06}{G\+T\+E\+S\+T\+\_\+\+L\+O\+C\+K\+\_\+\+E\+X\+C\+L\+U\+D\+E\+D\+\_\+}}(locks) +\item +\#define \mbox{\hyperlink{gtest_8h_a5c2d86823d7f9ffac3e3766da17091dd}{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+M\+E\+S\+S\+A\+G\+E\+\_\+\+H\+\_\+}} +\item +\#define \mbox{\hyperlink{gtest_8h_aa6f5334cb6792f48ac5621193b41bb61}{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+F\+I\+L\+E\+P\+A\+T\+H\+\_\+\+H\+\_\+}} +\item +\#define \mbox{\hyperlink{gtest_8h_af7adda0fee2a48fec4d8628cbaedec76}{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+H\+\_\+}} +\item +\#define \mbox{\hyperlink{gtest_8h_aff22afce4bffd0181c178e2e4d848c97}{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+T\+Y\+P\+E\+\_\+\+U\+T\+I\+L\+\_\+\+H\+\_\+}} +\item +\#define \mbox{\hyperlink{gtest_8h_ae3c336cbe1ae2bd1b1d019333e4428a0}{G\+T\+E\+S\+T\+\_\+\+C\+O\+N\+C\+A\+T\+\_\+\+T\+O\+K\+E\+N\+\_\+}}(foo, bar)~\mbox{\hyperlink{gtest_8h_aa39fb5346d3573feebe4257cb3a01fde}{G\+T\+E\+S\+T\+\_\+\+C\+O\+N\+C\+A\+T\+\_\+\+T\+O\+K\+E\+N\+\_\+\+I\+M\+P\+L\+\_\+}}(foo, bar) +\item +\#define \mbox{\hyperlink{gtest_8h_aa39fb5346d3573feebe4257cb3a01fde}{G\+T\+E\+S\+T\+\_\+\+C\+O\+N\+C\+A\+T\+\_\+\+T\+O\+K\+E\+N\+\_\+\+I\+M\+P\+L\+\_\+}}(foo, bar)~foo \#\# bar +\item +\#define \mbox{\hyperlink{gtest_8h_affa935d4361fa573644e9c739dde2b14}{G\+T\+E\+S\+T\+\_\+\+S\+T\+R\+I\+N\+G\+I\+F\+Y\+\_\+}}(name)~\#name +\item +\#define \mbox{\hyperlink{gtest_8h_ae5dd8e23090e08856613878fa1ff6fca}{G\+T\+E\+S\+T\+\_\+\+I\+S\+\_\+\+N\+U\+L\+L\+\_\+\+L\+I\+T\+E\+R\+A\+L\+\_\+}}(x)~decltype(\+::\mbox{\hyperlink{namespacetesting_1_1internal_a3db36c62f31a9439117c41c2b13f4941}{testing\+::internal\+::\+Is\+Null\+Literal\+Helper}}(x))\+::value +\item +\#define \mbox{\hyperlink{gtest_8h_a84c72f25a6a6600e3ff8381ca6982ae9}{G\+T\+E\+S\+T\+\_\+\+R\+E\+M\+O\+V\+E\+\_\+\+R\+E\+F\+E\+R\+E\+N\+C\+E\+\_\+}}(T)~typename \+::\mbox{\hyperlink{structtesting_1_1internal_1_1_remove_reference}{testing\+::internal\+::\+Remove\+Reference}}$<$T$>$\+::type +\item +\#define \mbox{\hyperlink{gtest_8h_a2ffec8c60510eb130af387f5ce9a756a}{G\+T\+E\+S\+T\+\_\+\+R\+E\+M\+O\+V\+E\+\_\+\+C\+O\+N\+S\+T\+\_\+}}(T)~typename \+::\mbox{\hyperlink{structtesting_1_1internal_1_1_remove_const}{testing\+::internal\+::\+Remove\+Const}}$<$T$>$\+::type +\item +\#define \mbox{\hyperlink{gtest_8h_a874567b176266188fabfffb8393267ce}{G\+T\+E\+S\+T\+\_\+\+R\+E\+M\+O\+V\+E\+\_\+\+R\+E\+F\+E\+R\+E\+N\+C\+E\+\_\+\+A\+N\+D\+\_\+\+C\+O\+N\+S\+T\+\_\+}}(T)~\mbox{\hyperlink{gtest_8h_a2ffec8c60510eb130af387f5ce9a756a}{G\+T\+E\+S\+T\+\_\+\+R\+E\+M\+O\+V\+E\+\_\+\+C\+O\+N\+S\+T\+\_\+}}(\mbox{\hyperlink{gtest_8h_a84c72f25a6a6600e3ff8381ca6982ae9}{G\+T\+E\+S\+T\+\_\+\+R\+E\+M\+O\+V\+E\+\_\+\+R\+E\+F\+E\+R\+E\+N\+C\+E\+\_\+}}(T)) +\item +\#define \mbox{\hyperlink{gtest_8h_a8d70025c45a47a493780746dfd66d565}{G\+T\+E\+S\+T\+\_\+\+M\+E\+S\+S\+A\+G\+E\+\_\+\+A\+T\+\_\+}}(file, line, message, result\+\_\+type) +\item +\#define \mbox{\hyperlink{gtest_8h_a94c73d5368ec946bc354d0992ad00810}{G\+T\+E\+S\+T\+\_\+\+M\+E\+S\+S\+A\+G\+E\+\_\+}}(message, result\+\_\+type)~\mbox{\hyperlink{gtest_8h_a8d70025c45a47a493780746dfd66d565}{G\+T\+E\+S\+T\+\_\+\+M\+E\+S\+S\+A\+G\+E\+\_\+\+A\+T\+\_\+}}(\+\_\+\+\_\+\+F\+I\+L\+E\+\_\+\+\_\+, \+\_\+\+\_\+\+L\+I\+N\+E\+\_\+\+\_\+, message, result\+\_\+type) +\item +\#define \mbox{\hyperlink{gtest_8h_a0f9a4c3ea82cc7bf4478eaffdc168358}{G\+T\+E\+S\+T\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}}(message)~return \mbox{\hyperlink{gtest_8h_a94c73d5368ec946bc354d0992ad00810}{G\+T\+E\+S\+T\+\_\+\+M\+E\+S\+S\+A\+G\+E\+\_\+}}(message, \+::testing\+::\+Test\+Part\+Result\+::k\+Fatal\+Failure) +\item +\#define \mbox{\hyperlink{gtest_8h_a6cb7482cfa03661a91c698eb5895f642}{G\+T\+E\+S\+T\+\_\+\+N\+O\+N\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}}(message)~\mbox{\hyperlink{gtest_8h_a94c73d5368ec946bc354d0992ad00810}{G\+T\+E\+S\+T\+\_\+\+M\+E\+S\+S\+A\+G\+E\+\_\+}}(message, \+::testing\+::\+Test\+Part\+Result\+::k\+Non\+Fatal\+Failure) +\item +\#define \mbox{\hyperlink{gtest_8h_abe012b550eb3807e8c49f7e161bd1567}{G\+T\+E\+S\+T\+\_\+\+S\+U\+C\+C\+E\+S\+S\+\_\+}}(message)~\mbox{\hyperlink{gtest_8h_a94c73d5368ec946bc354d0992ad00810}{G\+T\+E\+S\+T\+\_\+\+M\+E\+S\+S\+A\+G\+E\+\_\+}}(message, \+::testing\+::\+Test\+Part\+Result\+::k\+Success) +\item +\#define \mbox{\hyperlink{gtest_8h_ab75ed7a6cd9e466944ce680c1c07ab47}{G\+T\+E\+S\+T\+\_\+\+S\+K\+I\+P\+\_\+}}(message)~return \mbox{\hyperlink{gtest_8h_a94c73d5368ec946bc354d0992ad00810}{G\+T\+E\+S\+T\+\_\+\+M\+E\+S\+S\+A\+G\+E\+\_\+}}(message, \+::testing\+::\+Test\+Part\+Result\+::k\+Skip) +\item +\#define \mbox{\hyperlink{gtest_8h_a2e66f7dfc5cb87e0fa0289f653173c69}{G\+T\+E\+S\+T\+\_\+\+S\+U\+P\+P\+R\+E\+S\+S\+\_\+\+U\+N\+R\+E\+A\+C\+H\+A\+B\+L\+E\+\_\+\+C\+O\+D\+E\+\_\+\+W\+A\+R\+N\+I\+N\+G\+\_\+\+B\+E\+L\+O\+W\+\_\+}}(statement)~if (\+::\mbox{\hyperlink{namespacetesting_1_1internal_a4d46f09c3bfe68700b7f728d2cc3782f}{testing\+::internal\+::\+Always\+True}}()) \{ statement; \} +\item +\#define \mbox{\hyperlink{gtest_8h_a3f71db93eaf30b0cfca9612b9ac32106}{G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+T\+H\+R\+O\+W\+\_\+}}(statement, expected\+\_\+exception, fail) +\item +\#define \mbox{\hyperlink{gtest_8h_a9a109d026b5a904646437d7570e13581}{G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+N\+O\+\_\+\+T\+H\+R\+O\+W\+\_\+}}(statement, fail) +\item +\#define \mbox{\hyperlink{gtest_8h_af48bbd26d54d4afc5e4cef39b1c76ba3}{G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+A\+N\+Y\+\_\+\+T\+H\+R\+O\+W\+\_\+}}(statement, fail) +\item +\#define \mbox{\hyperlink{gtest_8h_ae8912365e1d00a7a2bd248268c64aa1a}{G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+B\+O\+O\+L\+E\+A\+N\+\_\+}}(expression, text, actual, expected, fail) +\item +\#define \mbox{\hyperlink{gtest_8h_a1b37a3c446836d33040f3266a6236081}{G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+N\+O\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}}(statement, fail) +\item +\#define \mbox{\hyperlink{gtest_8h_ad4bc4ec847a06e7de981e81c9bb116cf}{G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+C\+L\+A\+S\+S\+\_\+\+N\+A\+M\+E\+\_\+}}(test\+\_\+suite\+\_\+name, test\+\_\+name)~test\+\_\+suite\+\_\+name\#\#\+\_\+\#\#test\+\_\+name\#\#\+\_\+\+Test +\item +\#define \mbox{\hyperlink{gtest_8h_ab43103f7842de04474e362689f782a46}{G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+}}(test\+\_\+suite\+\_\+name, test\+\_\+name, parent\+\_\+class, parent\+\_\+id) +\item +\#define \mbox{\hyperlink{gtest_8h_a6aa594029905b65753d0e85f2db521ab}{G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+D\+E\+P\+R\+E\+C\+A\+T\+ED}}(message) +\item +\#define \mbox{\hyperlink{gtest_8h_a9be22723f67d5ad4d6d26214a84a19f9}{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+D\+E\+A\+T\+H\+\_\+\+T\+E\+S\+T\+\_\+\+H\+\_\+}} +\item +\#define \mbox{\hyperlink{gtest_8h_a83e03f206a1c53a656f7eac87c122d16}{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+D\+E\+A\+T\+H\+\_\+\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+H\+\_\+}} +\item +\#define \mbox{\hyperlink{gtest_8h_ac5d82b7725576c4a54ae99ce1cc861e0}{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+M\+A\+T\+C\+H\+E\+R\+S\+\_\+\+H\+\_\+}} +\item +\#define \mbox{\hyperlink{gtest_8h_a146e4a81159ecfdc33030e147a024346}{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+R\+I\+N\+T\+E\+R\+S\+\_\+\+H\+\_\+}} +\item +\#define \mbox{\hyperlink{gtest_8h_a79d4724b4bc2a1dd8493c366b5ca626a}{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+C\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+A\+S\+\_\+\+P\+O\+I\+N\+T\+E\+R\+\_\+}}(Char\+Type) +\item +\#define \mbox{\hyperlink{gtest_8h_ad6102ed2a0571d5196e606a061c16a10}{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+C\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+A\+S\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+}}(Char\+Type, Other\+String\+Type) +\item +\#define \mbox{\hyperlink{gtest_8h_a790dd922b87864bf5b8d93a22853933c}{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+C\+U\+S\+T\+O\+M\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+R\+I\+N\+T\+E\+R\+S\+\_\+\+H\+\_\+}} +\item +\#define \mbox{\hyperlink{gtest_8h_aa5f42ab29859b7f49a901770d2e66855}{G\+T\+E\+S\+T\+\_\+\+U\+N\+S\+U\+P\+P\+O\+R\+T\+E\+D\+\_\+\+D\+E\+A\+T\+H\+\_\+\+T\+E\+ST}}(statement, regex, terminator) +\item +\#define \mbox{\hyperlink{gtest_8h_a8564de0e012dd0898949c513d1571f8b}{E\+X\+P\+E\+C\+T\+\_\+\+D\+E\+A\+T\+H\+\_\+\+I\+F\+\_\+\+S\+U\+P\+P\+O\+R\+T\+ED}}(statement, regex)~\mbox{\hyperlink{gtest_8h_aa5f42ab29859b7f49a901770d2e66855}{G\+T\+E\+S\+T\+\_\+\+U\+N\+S\+U\+P\+P\+O\+R\+T\+E\+D\+\_\+\+D\+E\+A\+T\+H\+\_\+\+T\+E\+ST}}(statement, regex, ) +\item +\#define \mbox{\hyperlink{gtest_8h_ab2f0f25b46353767179a49ebd15b7345}{A\+S\+S\+E\+R\+T\+\_\+\+D\+E\+A\+T\+H\+\_\+\+I\+F\+\_\+\+S\+U\+P\+P\+O\+R\+T\+ED}}(statement, regex)~\mbox{\hyperlink{gtest_8h_aa5f42ab29859b7f49a901770d2e66855}{G\+T\+E\+S\+T\+\_\+\+U\+N\+S\+U\+P\+P\+O\+R\+T\+E\+D\+\_\+\+D\+E\+A\+T\+H\+\_\+\+T\+E\+ST}}(statement, regex, return) +\item +\#define \mbox{\hyperlink{gtest_8h_a15b9e83e56cafef0ddd12e2444772908}{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+A\+R\+A\+M\+\_\+\+T\+E\+S\+T\+\_\+\+H\+\_\+}} +\item +\#define \mbox{\hyperlink{gtest_8h_a83cf5c299fc04d9f8e555cb42a97aa47}{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+A\+R\+A\+M\+\_\+\+U\+T\+I\+L\+\_\+\+H\+\_\+}} +\item +\#define \mbox{\hyperlink{gtest_8h_a34b82ce6255f2f5666647d35498f4c65}{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+A\+R\+A\+M\+\_\+\+U\+T\+I\+L\+\_\+\+G\+E\+N\+E\+R\+A\+T\+E\+D\+\_\+\+H\+\_\+}} +\item +\#define \mbox{\hyperlink{gtest_8h_a1adc861b311e3fbd97bcc72e0b0f5962}{T\+E\+S\+T\+\_\+P}}(test\+\_\+suite\+\_\+name, test\+\_\+name) +\item +\#define \mbox{\hyperlink{gtest_8h_a016124361c862c0db315e4c9dc4d911a}{I\+N\+S\+T\+A\+N\+T\+I\+A\+T\+E\+\_\+\+T\+E\+S\+T\+\_\+\+S\+U\+I\+T\+E\+\_\+P}}(prefix, test\+\_\+suite\+\_\+name, generator, ...) +\item +\#define \mbox{\hyperlink{gtest_8h_acc356fe00725fe8bf8b95791c0ffacbd}{I\+N\+S\+T\+A\+N\+T\+I\+A\+T\+E\+\_\+\+T\+E\+S\+T\+\_\+\+C\+A\+S\+E\+\_\+P}}~\mbox{\hyperlink{gtest_8h_a016124361c862c0db315e4c9dc4d911a}{I\+N\+S\+T\+A\+N\+T\+I\+A\+T\+E\+\_\+\+T\+E\+S\+T\+\_\+\+S\+U\+I\+T\+E\+\_\+P}} +\item +\#define \mbox{\hyperlink{gtest_8h_a61e419ca2f3cc78bbae47d074c5d4400}{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+R\+O\+D\+\_\+\+H\+\_\+}} +\item +\#define \mbox{\hyperlink{gtest_8h_a8d443b4cc1d87a7a17943b8fbdbf3910}{F\+R\+I\+E\+N\+D\+\_\+\+T\+E\+ST}}(test\+\_\+case\+\_\+name, test\+\_\+name)~friend class test\+\_\+case\+\_\+name\#\#\+\_\+\#\#test\+\_\+name\#\#\+\_\+\+Test +\item +\#define \mbox{\hyperlink{gtest_8h_a6454a5e01489b59f55be53c206ca929b}{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+P\+A\+R\+T\+\_\+\+H\+\_\+}} +\item +\#define \mbox{\hyperlink{gtest_8h_adddef1e04ac44c9721ce3716c1b8a09e}{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+T\+Y\+P\+E\+D\+\_\+\+T\+E\+S\+T\+\_\+\+H\+\_\+}} +\item +\#define \mbox{\hyperlink{gtest_8h_a36afb7e44e600d2da0e6d8f4f739ea3b}{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+I\+M\+P\+L\+\_\+\+H\+\_\+}} +\item +\#define \mbox{\hyperlink{gtest_8h_a8c09939dd67f1bb5b68c9f6a44ea75db}{G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+}}(expression, on\+\_\+failure) +\item +\#define \mbox{\hyperlink{gtest_8h_aa3e3bfe04bb0e54d7f0e57e2f991d1eb}{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T1\+\_\+}}(pred\+\_\+format, v1, on\+\_\+failure) +\item +\#define \mbox{\hyperlink{gtest_8h_ad44cf322952076d85305bbdf39769ac1}{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D1\+\_\+}}(pred, v1, on\+\_\+failure) +\item +\#define \mbox{\hyperlink{gtest_8h_a07132aa62cf4902e50e68d0265f573b6}{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T1}}(pred\+\_\+format, v1)~\mbox{\hyperlink{gtest_8h_aa3e3bfe04bb0e54d7f0e57e2f991d1eb}{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T1\+\_\+}}(pred\+\_\+format, v1, \mbox{\hyperlink{gtest_8h_a6cb7482cfa03661a91c698eb5895f642}{G\+T\+E\+S\+T\+\_\+\+N\+O\+N\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}}) +\item +\#define \mbox{\hyperlink{gtest_8h_a6d09aa83f8d297481380c7c073c9f070}{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D1}}(pred, v1)~\mbox{\hyperlink{gtest_8h_ad44cf322952076d85305bbdf39769ac1}{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D1\+\_\+}}(pred, v1, \mbox{\hyperlink{gtest_8h_a6cb7482cfa03661a91c698eb5895f642}{G\+T\+E\+S\+T\+\_\+\+N\+O\+N\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}}) +\item +\#define \mbox{\hyperlink{gtest_8h_a3771ca0d1a72013aebc3d66e046491ed}{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T1}}(pred\+\_\+format, v1)~\mbox{\hyperlink{gtest_8h_aa3e3bfe04bb0e54d7f0e57e2f991d1eb}{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T1\+\_\+}}(pred\+\_\+format, v1, \mbox{\hyperlink{gtest_8h_a0f9a4c3ea82cc7bf4478eaffdc168358}{G\+T\+E\+S\+T\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}}) +\item +\#define \mbox{\hyperlink{gtest_8h_a7d72f779b7d39b8f73a563ebc6d0604b}{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D1}}(pred, v1)~\mbox{\hyperlink{gtest_8h_ad44cf322952076d85305bbdf39769ac1}{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D1\+\_\+}}(pred, v1, \mbox{\hyperlink{gtest_8h_a0f9a4c3ea82cc7bf4478eaffdc168358}{G\+T\+E\+S\+T\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}}) +\item +\#define \mbox{\hyperlink{gtest_8h_a115c18d1f752b7f091d577fb69cac372}{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2\+\_\+}}(pred\+\_\+format, v1, v2, on\+\_\+failure) +\item +\#define \mbox{\hyperlink{gtest_8h_ac560264104bd030b64034505d294a7b6}{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D2\+\_\+}}(pred, v1, v2, on\+\_\+failure) +\item +\#define \mbox{\hyperlink{gtest_8h_af0141918615a5e2d5247e9cda8324dae}{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2}}(pred\+\_\+format, v1, v2)~\mbox{\hyperlink{gtest_8h_a115c18d1f752b7f091d577fb69cac372}{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2\+\_\+}}(pred\+\_\+format, v1, v2, \mbox{\hyperlink{gtest_8h_a6cb7482cfa03661a91c698eb5895f642}{G\+T\+E\+S\+T\+\_\+\+N\+O\+N\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}}) +\item +\#define \mbox{\hyperlink{gtest_8h_a14e74e655e502914d3d07e083145ac91}{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D2}}(pred, v1, v2)~\mbox{\hyperlink{gtest_8h_ac560264104bd030b64034505d294a7b6}{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D2\+\_\+}}(pred, v1, v2, \mbox{\hyperlink{gtest_8h_a6cb7482cfa03661a91c698eb5895f642}{G\+T\+E\+S\+T\+\_\+\+N\+O\+N\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}}) +\item +\#define \mbox{\hyperlink{gtest_8h_ac452685a1a98ea3d96eb956a062ee210}{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2}}(pred\+\_\+format, v1, v2)~\mbox{\hyperlink{gtest_8h_a115c18d1f752b7f091d577fb69cac372}{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2\+\_\+}}(pred\+\_\+format, v1, v2, \mbox{\hyperlink{gtest_8h_a0f9a4c3ea82cc7bf4478eaffdc168358}{G\+T\+E\+S\+T\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}}) +\item +\#define \mbox{\hyperlink{gtest_8h_a4e9b777cce4e5423f4c2e491be7aa818}{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D2}}(pred, v1, v2)~\mbox{\hyperlink{gtest_8h_ac560264104bd030b64034505d294a7b6}{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D2\+\_\+}}(pred, v1, v2, \mbox{\hyperlink{gtest_8h_a0f9a4c3ea82cc7bf4478eaffdc168358}{G\+T\+E\+S\+T\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}}) +\item +\#define \mbox{\hyperlink{gtest_8h_a49cdf8707268ee932bb772d879a226cc}{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T3\+\_\+}}(pred\+\_\+format, v1, v2, v3, on\+\_\+failure) +\item +\#define \mbox{\hyperlink{gtest_8h_af30518f03233bc4486b55284b0827eb8}{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D3\+\_\+}}(pred, v1, v2, v3, on\+\_\+failure) +\item +\#define \mbox{\hyperlink{gtest_8h_a7285708fa5d37d6d8ed5b5e59da08bae}{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T3}}(pred\+\_\+format, v1, v2, v3)~\mbox{\hyperlink{gtest_8h_a49cdf8707268ee932bb772d879a226cc}{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T3\+\_\+}}(pred\+\_\+format, v1, v2, v3, \mbox{\hyperlink{gtest_8h_a6cb7482cfa03661a91c698eb5895f642}{G\+T\+E\+S\+T\+\_\+\+N\+O\+N\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}}) +\item +\#define \mbox{\hyperlink{gtest_8h_a0a0aff2564ea84c7eb3517ac8eda04da}{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D3}}(pred, v1, v2, v3)~\mbox{\hyperlink{gtest_8h_af30518f03233bc4486b55284b0827eb8}{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D3\+\_\+}}(pred, v1, v2, v3, \mbox{\hyperlink{gtest_8h_a6cb7482cfa03661a91c698eb5895f642}{G\+T\+E\+S\+T\+\_\+\+N\+O\+N\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}}) +\item +\#define \mbox{\hyperlink{gtest_8h_a494e3b8dc22f4765f7e041f16c930e3d}{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T3}}(pred\+\_\+format, v1, v2, v3)~\mbox{\hyperlink{gtest_8h_a49cdf8707268ee932bb772d879a226cc}{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T3\+\_\+}}(pred\+\_\+format, v1, v2, v3, \mbox{\hyperlink{gtest_8h_a0f9a4c3ea82cc7bf4478eaffdc168358}{G\+T\+E\+S\+T\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}}) +\item +\#define \mbox{\hyperlink{gtest_8h_aa7688f3ab9f09a2c1dbf13bd1f29d8fd}{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D3}}(pred, v1, v2, v3)~\mbox{\hyperlink{gtest_8h_af30518f03233bc4486b55284b0827eb8}{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D3\+\_\+}}(pred, v1, v2, v3, \mbox{\hyperlink{gtest_8h_a0f9a4c3ea82cc7bf4478eaffdc168358}{G\+T\+E\+S\+T\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}}) +\item +\#define \mbox{\hyperlink{gtest_8h_abd207ed869491ba4bba29f8df37b7355}{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T4\+\_\+}}(pred\+\_\+format, v1, v2, v3, v4, on\+\_\+failure) +\item +\#define \mbox{\hyperlink{gtest_8h_a14e8c70455104fac032efec097ef668b}{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D4\+\_\+}}(pred, v1, v2, v3, v4, on\+\_\+failure) +\item +\#define \mbox{\hyperlink{gtest_8h_a3354347de0f2445400b509cf39dce1dc}{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T4}}(pred\+\_\+format, v1, v2, v3, v4)~\mbox{\hyperlink{gtest_8h_abd207ed869491ba4bba29f8df37b7355}{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T4\+\_\+}}(pred\+\_\+format, v1, v2, v3, v4, \mbox{\hyperlink{gtest_8h_a6cb7482cfa03661a91c698eb5895f642}{G\+T\+E\+S\+T\+\_\+\+N\+O\+N\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}}) +\item +\#define \mbox{\hyperlink{gtest_8h_a4fd2b1bad63eb752bc2ff2b6bb3f4569}{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D4}}(pred, v1, v2, v3, v4)~\mbox{\hyperlink{gtest_8h_a14e8c70455104fac032efec097ef668b}{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D4\+\_\+}}(pred, v1, v2, v3, v4, \mbox{\hyperlink{gtest_8h_a6cb7482cfa03661a91c698eb5895f642}{G\+T\+E\+S\+T\+\_\+\+N\+O\+N\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}}) +\item +\#define \mbox{\hyperlink{gtest_8h_a1842593c1dfb13c9a4b33b01540a8b40}{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T4}}(pred\+\_\+format, v1, v2, v3, v4)~\mbox{\hyperlink{gtest_8h_abd207ed869491ba4bba29f8df37b7355}{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T4\+\_\+}}(pred\+\_\+format, v1, v2, v3, v4, \mbox{\hyperlink{gtest_8h_a0f9a4c3ea82cc7bf4478eaffdc168358}{G\+T\+E\+S\+T\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}}) +\item +\#define \mbox{\hyperlink{gtest_8h_addc030c521775610e4619a01541a2167}{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D4}}(pred, v1, v2, v3, v4)~\mbox{\hyperlink{gtest_8h_a14e8c70455104fac032efec097ef668b}{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D4\+\_\+}}(pred, v1, v2, v3, v4, \mbox{\hyperlink{gtest_8h_a0f9a4c3ea82cc7bf4478eaffdc168358}{G\+T\+E\+S\+T\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}}) +\item +\#define \mbox{\hyperlink{gtest_8h_a107623ee191560f703a3fdc983803c8e}{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T5\+\_\+}}(pred\+\_\+format, v1, v2, v3, v4, v5, on\+\_\+failure) +\item +\#define \mbox{\hyperlink{gtest_8h_a2c42692f7d910dc2fe57869883190e6c}{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D5\+\_\+}}(pred, v1, v2, v3, v4, v5, on\+\_\+failure) +\item +\#define \mbox{\hyperlink{gtest_8h_a74beddf9661e4460f9969fe211b9e80e}{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T5}}(pred\+\_\+format, v1, v2, v3, v4, v5)~\mbox{\hyperlink{gtest_8h_a107623ee191560f703a3fdc983803c8e}{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T5\+\_\+}}(pred\+\_\+format, v1, v2, v3, v4, v5, \mbox{\hyperlink{gtest_8h_a6cb7482cfa03661a91c698eb5895f642}{G\+T\+E\+S\+T\+\_\+\+N\+O\+N\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}}) +\item +\#define \mbox{\hyperlink{gtest_8h_adbfcc13f3b3d14c42a7fbd41573932bf}{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D5}}(pred, v1, v2, v3, v4, v5)~\mbox{\hyperlink{gtest_8h_a2c42692f7d910dc2fe57869883190e6c}{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D5\+\_\+}}(pred, v1, v2, v3, v4, v5, \mbox{\hyperlink{gtest_8h_a6cb7482cfa03661a91c698eb5895f642}{G\+T\+E\+S\+T\+\_\+\+N\+O\+N\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}}) +\item +\#define \mbox{\hyperlink{gtest_8h_abd7cb4f36d6aa2cb346ab3ac812568f3}{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T5}}(pred\+\_\+format, v1, v2, v3, v4, v5)~\mbox{\hyperlink{gtest_8h_a107623ee191560f703a3fdc983803c8e}{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T5\+\_\+}}(pred\+\_\+format, v1, v2, v3, v4, v5, \mbox{\hyperlink{gtest_8h_a0f9a4c3ea82cc7bf4478eaffdc168358}{G\+T\+E\+S\+T\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}}) +\item +\#define \mbox{\hyperlink{gtest_8h_af8e510af2b4a14d90eef66ace17d1c30}{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D5}}(pred, v1, v2, v3, v4, v5)~\mbox{\hyperlink{gtest_8h_a2c42692f7d910dc2fe57869883190e6c}{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D5\+\_\+}}(pred, v1, v2, v3, v4, v5, \mbox{\hyperlink{gtest_8h_a0f9a4c3ea82cc7bf4478eaffdc168358}{G\+T\+E\+S\+T\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}}) +\item +\#define \mbox{\hyperlink{gtest_8h_a4a5b6fbde5dd05e05dd6846ac5e5c18e}{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+C\+M\+P\+\_\+\+H\+E\+L\+P\+E\+R\+\_\+}}(op\+\_\+name, op) +\item +\#define \mbox{\hyperlink{gtest_8h_a3c0bbb980d533108ecc23c3534527d3c}{G\+T\+E\+S\+T\+\_\+\+S\+K\+IP}}()~\mbox{\hyperlink{gtest_8h_ab75ed7a6cd9e466944ce680c1c07ab47}{G\+T\+E\+S\+T\+\_\+\+S\+K\+I\+P\+\_\+}}(\char`\"{}Skipped\char`\"{}) +\item +\#define \mbox{\hyperlink{gtest_8h_adc16b5b0a740c39084ea5c9e960e3063}{A\+D\+D\+\_\+\+F\+A\+I\+L\+U\+RE}}()~\mbox{\hyperlink{gtest_8h_a6cb7482cfa03661a91c698eb5895f642}{G\+T\+E\+S\+T\+\_\+\+N\+O\+N\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}}(\char`\"{}Failed\char`\"{}) +\item +\#define \mbox{\hyperlink{gtest_8h_a448d7e5105b640e892fd8153fbee0b7f}{A\+D\+D\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+\+AT}}(file, line) +\item +\#define \mbox{\hyperlink{gtest_8h_a636231436707c30d6778f79ae96f5dc6}{G\+T\+E\+S\+T\+\_\+\+F\+A\+IL}}()~\mbox{\hyperlink{gtest_8h_a0f9a4c3ea82cc7bf4478eaffdc168358}{G\+T\+E\+S\+T\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}}(\char`\"{}Failed\char`\"{}) +\item +\#define \mbox{\hyperlink{gtest_8h_a3e26a8d27caa386ed0ea7ce9d5b7c4ed}{F\+A\+IL}}()~\mbox{\hyperlink{gtest_8h_a636231436707c30d6778f79ae96f5dc6}{G\+T\+E\+S\+T\+\_\+\+F\+A\+IL}}() +\item +\#define \mbox{\hyperlink{gtest_8h_a2690441c38202728f4159ac2462d9720}{G\+T\+E\+S\+T\+\_\+\+S\+U\+C\+C\+E\+ED}}()~\mbox{\hyperlink{gtest_8h_abe012b550eb3807e8c49f7e161bd1567}{G\+T\+E\+S\+T\+\_\+\+S\+U\+C\+C\+E\+S\+S\+\_\+}}(\char`\"{}Succeeded\char`\"{}) +\item +\#define \mbox{\hyperlink{gtest_8h_a75adcdf89f69b0b615e395daafc315af}{S\+U\+C\+C\+E\+ED}}()~\mbox{\hyperlink{gtest_8h_a2690441c38202728f4159ac2462d9720}{G\+T\+E\+S\+T\+\_\+\+S\+U\+C\+C\+E\+ED}}() +\item +\#define \mbox{\hyperlink{gtest_8h_a789842b4475eed948e6fd18390d5a859}{E\+X\+P\+E\+C\+T\+\_\+\+T\+H\+R\+OW}}(statement, expected\+\_\+exception)~\mbox{\hyperlink{gtest_8h_a3f71db93eaf30b0cfca9612b9ac32106}{G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+T\+H\+R\+O\+W\+\_\+}}(statement, expected\+\_\+exception, \mbox{\hyperlink{gtest_8h_a6cb7482cfa03661a91c698eb5895f642}{G\+T\+E\+S\+T\+\_\+\+N\+O\+N\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}}) +\item +\#define \mbox{\hyperlink{gtest_8h_a2743a1438137ad857aa3f9fec3ff67ec}{E\+X\+P\+E\+C\+T\+\_\+\+N\+O\+\_\+\+T\+H\+R\+OW}}(statement)~\mbox{\hyperlink{gtest_8h_a9a109d026b5a904646437d7570e13581}{G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+N\+O\+\_\+\+T\+H\+R\+O\+W\+\_\+}}(statement, \mbox{\hyperlink{gtest_8h_a6cb7482cfa03661a91c698eb5895f642}{G\+T\+E\+S\+T\+\_\+\+N\+O\+N\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}}) +\item +\#define \mbox{\hyperlink{gtest_8h_a9be43f44d148e8a8d6a89c864bf4e461}{E\+X\+P\+E\+C\+T\+\_\+\+A\+N\+Y\+\_\+\+T\+H\+R\+OW}}(statement)~\mbox{\hyperlink{gtest_8h_af48bbd26d54d4afc5e4cef39b1c76ba3}{G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+A\+N\+Y\+\_\+\+T\+H\+R\+O\+W\+\_\+}}(statement, \mbox{\hyperlink{gtest_8h_a6cb7482cfa03661a91c698eb5895f642}{G\+T\+E\+S\+T\+\_\+\+N\+O\+N\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}}) +\item +\#define \mbox{\hyperlink{gtest_8h_aedb1eddae6c2a2430b0e7b7e03b4f052}{A\+S\+S\+E\+R\+T\+\_\+\+T\+H\+R\+OW}}(statement, expected\+\_\+exception)~\mbox{\hyperlink{gtest_8h_a3f71db93eaf30b0cfca9612b9ac32106}{G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+T\+H\+R\+O\+W\+\_\+}}(statement, expected\+\_\+exception, \mbox{\hyperlink{gtest_8h_a0f9a4c3ea82cc7bf4478eaffdc168358}{G\+T\+E\+S\+T\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}}) +\item +\#define \mbox{\hyperlink{gtest_8h_a895c34d9b192cdc2ba46d2680623485d}{A\+S\+S\+E\+R\+T\+\_\+\+N\+O\+\_\+\+T\+H\+R\+OW}}(statement)~\mbox{\hyperlink{gtest_8h_a9a109d026b5a904646437d7570e13581}{G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+N\+O\+\_\+\+T\+H\+R\+O\+W\+\_\+}}(statement, \mbox{\hyperlink{gtest_8h_a0f9a4c3ea82cc7bf4478eaffdc168358}{G\+T\+E\+S\+T\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}}) +\item +\#define \mbox{\hyperlink{gtest_8h_affadeef9379fe5aabf6f28d9eab9d3c0}{A\+S\+S\+E\+R\+T\+\_\+\+A\+N\+Y\+\_\+\+T\+H\+R\+OW}}(statement)~\mbox{\hyperlink{gtest_8h_af48bbd26d54d4afc5e4cef39b1c76ba3}{G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+A\+N\+Y\+\_\+\+T\+H\+R\+O\+W\+\_\+}}(statement, \mbox{\hyperlink{gtest_8h_a0f9a4c3ea82cc7bf4478eaffdc168358}{G\+T\+E\+S\+T\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}}) +\item +\#define \mbox{\hyperlink{gtest_8h_ac33e7cdfb5d44a7a0f0ab552eb5c3c6a}{E\+X\+P\+E\+C\+T\+\_\+\+T\+R\+UE}}(condition) +\item +\#define \mbox{\hyperlink{gtest_8h_aeb6c7ae89f440c90c1a1815951c836da}{E\+X\+P\+E\+C\+T\+\_\+\+F\+A\+L\+SE}}(condition) +\item +\#define \mbox{\hyperlink{gtest_8h_ae9244bfbda562e8b798789b001993fa5}{A\+S\+S\+E\+R\+T\+\_\+\+T\+R\+UE}}(condition) +\item +\#define \mbox{\hyperlink{gtest_8h_a8197fa52f3538588d20d8af4834c9003}{A\+S\+S\+E\+R\+T\+\_\+\+F\+A\+L\+SE}}(condition) +\item +\#define \mbox{\hyperlink{gtest_8h_a4159019abda84f5366acdb7604ff220a}{E\+X\+P\+E\+C\+T\+\_\+\+EQ}}(val1, val2) +\item +\#define \mbox{\hyperlink{gtest_8h_a6ae7443947f25abc58bfcfcfc56b0d75}{E\+X\+P\+E\+C\+T\+\_\+\+NE}}(val1, val2)~\mbox{\hyperlink{gtest_8h_af0141918615a5e2d5247e9cda8324dae}{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2}}(\+::testing\+::internal\+::\+Cmp\+Helper\+NE, val1, val2) +\item +\#define \mbox{\hyperlink{gtest_8h_ae0f265632323b4a07b585dcfde10f60a}{E\+X\+P\+E\+C\+T\+\_\+\+LE}}(val1, val2)~\mbox{\hyperlink{gtest_8h_af0141918615a5e2d5247e9cda8324dae}{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2}}(\+::testing\+::internal\+::\+Cmp\+Helper\+LE, val1, val2) +\item +\#define \mbox{\hyperlink{gtest_8h_af28c06b2b5e8dee151896f299f6610cf}{E\+X\+P\+E\+C\+T\+\_\+\+LT}}(val1, val2)~\mbox{\hyperlink{gtest_8h_af0141918615a5e2d5247e9cda8324dae}{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2}}(\+::testing\+::internal\+::\+Cmp\+Helper\+LT, val1, val2) +\item +\#define \mbox{\hyperlink{gtest_8h_ab7a0ff4bfa4d9b27baa118d8b0756ca0}{E\+X\+P\+E\+C\+T\+\_\+\+GE}}(val1, val2)~\mbox{\hyperlink{gtest_8h_af0141918615a5e2d5247e9cda8324dae}{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2}}(\+::testing\+::internal\+::\+Cmp\+Helper\+GE, val1, val2) +\item +\#define \mbox{\hyperlink{gtest_8h_aa8bc8320813e1abb0016129b636e3b27}{E\+X\+P\+E\+C\+T\+\_\+\+GT}}(val1, val2)~\mbox{\hyperlink{gtest_8h_af0141918615a5e2d5247e9cda8324dae}{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2}}(\+::testing\+::internal\+::\+Cmp\+Helper\+GT, val1, val2) +\item +\#define \mbox{\hyperlink{gtest_8h_a8a7a47387090810cdfe78933d348182d}{G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+\+EQ}}(val1, val2) +\item +\#define \mbox{\hyperlink{gtest_8h_a6fa9bb2b6731eba8f481e40e9e4931b3}{G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+\+NE}}(val1, val2)~\mbox{\hyperlink{gtest_8h_ac452685a1a98ea3d96eb956a062ee210}{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2}}(\+::testing\+::internal\+::\+Cmp\+Helper\+NE, val1, val2) +\item +\#define \mbox{\hyperlink{gtest_8h_abef04dcd4a0259d378de7b3b3ffb6730}{G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+\+LE}}(val1, val2)~\mbox{\hyperlink{gtest_8h_ac452685a1a98ea3d96eb956a062ee210}{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2}}(\+::testing\+::internal\+::\+Cmp\+Helper\+LE, val1, val2) +\item +\#define \mbox{\hyperlink{gtest_8h_a5a75667e637febd18e5f7d4f3abf55e8}{G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+\+LT}}(val1, val2)~\mbox{\hyperlink{gtest_8h_ac452685a1a98ea3d96eb956a062ee210}{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2}}(\+::testing\+::internal\+::\+Cmp\+Helper\+LT, val1, val2) +\item +\#define \mbox{\hyperlink{gtest_8h_a55373d99c079ff1b894e2eb5bcd15c5a}{G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+\+GE}}(val1, val2)~\mbox{\hyperlink{gtest_8h_ac452685a1a98ea3d96eb956a062ee210}{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2}}(\+::testing\+::internal\+::\+Cmp\+Helper\+GE, val1, val2) +\item +\#define \mbox{\hyperlink{gtest_8h_a088b9056fd1c1f316b41c22f64deb33a}{G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+\+GT}}(val1, val2)~\mbox{\hyperlink{gtest_8h_ac452685a1a98ea3d96eb956a062ee210}{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2}}(\+::testing\+::internal\+::\+Cmp\+Helper\+GT, val1, val2) +\item +\#define \mbox{\hyperlink{gtest_8h_a1a6db8b1338ee7040329322b77779086}{A\+S\+S\+E\+R\+T\+\_\+\+EQ}}(val1, val2)~\mbox{\hyperlink{gtest_8h_a8a7a47387090810cdfe78933d348182d}{G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+\+EQ}}(val1, val2) +\item +\#define \mbox{\hyperlink{gtest_8h_aa866c8dece57912e6f51495ed3e8d8d5}{A\+S\+S\+E\+R\+T\+\_\+\+NE}}(val1, val2)~\mbox{\hyperlink{gtest_8h_a6fa9bb2b6731eba8f481e40e9e4931b3}{G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+\+NE}}(val1, val2) +\item +\#define \mbox{\hyperlink{gtest_8h_a775643748feff0b490aae651d041e971}{A\+S\+S\+E\+R\+T\+\_\+\+LE}}(val1, val2)~\mbox{\hyperlink{gtest_8h_abef04dcd4a0259d378de7b3b3ffb6730}{G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+\+LE}}(val1, val2) +\item +\#define \mbox{\hyperlink{gtest_8h_affc4f9cae4c3aabfe60fced83737b42c}{A\+S\+S\+E\+R\+T\+\_\+\+LT}}(val1, val2)~\mbox{\hyperlink{gtest_8h_a5a75667e637febd18e5f7d4f3abf55e8}{G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+\+LT}}(val1, val2) +\item +\#define \mbox{\hyperlink{gtest_8h_af4ff5dc71479fcb374b6bc2ed195bcc4}{A\+S\+S\+E\+R\+T\+\_\+\+GE}}(val1, val2)~\mbox{\hyperlink{gtest_8h_a55373d99c079ff1b894e2eb5bcd15c5a}{G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+\+GE}}(val1, val2) +\item +\#define \mbox{\hyperlink{gtest_8h_a16a882d4eafc9f8643867aea40879140}{A\+S\+S\+E\+R\+T\+\_\+\+GT}}(val1, val2)~\mbox{\hyperlink{gtest_8h_a088b9056fd1c1f316b41c22f64deb33a}{G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+\+GT}}(val1, val2) +\item +\#define \mbox{\hyperlink{gtest_8h_ad20f7b94ac5081e16f0005b94e95f0c6}{E\+X\+P\+E\+C\+T\+\_\+\+S\+T\+R\+EQ}}(s1, s2)~\mbox{\hyperlink{gtest_8h_af0141918615a5e2d5247e9cda8324dae}{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2}}(\+::\mbox{\hyperlink{namespacetesting_1_1internal_a93eb9d61cac7faf1faff6301ae5f4a46}{testing\+::internal\+::\+Cmp\+Helper\+S\+T\+R\+EQ}}, s1, s2) +\item +\#define \mbox{\hyperlink{gtest_8h_aee7e9c42f55549dbc0dfc42391eb9775}{E\+X\+P\+E\+C\+T\+\_\+\+S\+T\+R\+NE}}(s1, s2)~\mbox{\hyperlink{gtest_8h_af0141918615a5e2d5247e9cda8324dae}{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2}}(\+::\mbox{\hyperlink{namespacetesting_1_1internal_a6b485231a046ff760844a0321c04870b}{testing\+::internal\+::\+Cmp\+Helper\+S\+T\+R\+NE}}, s1, s2) +\item +\#define \mbox{\hyperlink{gtest_8h_a740cab7e3eec5c178a64b4f558bde66e}{E\+X\+P\+E\+C\+T\+\_\+\+S\+T\+R\+C\+A\+S\+E\+EQ}}(s1, s2)~\mbox{\hyperlink{gtest_8h_af0141918615a5e2d5247e9cda8324dae}{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2}}(\+::\mbox{\hyperlink{namespacetesting_1_1internal_a00c3d012df6173622ef558a131bfb95d}{testing\+::internal\+::\+Cmp\+Helper\+S\+T\+R\+C\+A\+S\+E\+EQ}}, s1, s2) +\item +\#define \mbox{\hyperlink{gtest_8h_a07d0b5cbd3b5f7c8b6f44c609046ff07}{E\+X\+P\+E\+C\+T\+\_\+\+S\+T\+R\+C\+A\+S\+E\+NE}}(s1, s2)~\mbox{\hyperlink{gtest_8h_af0141918615a5e2d5247e9cda8324dae}{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2}}(\+::\mbox{\hyperlink{namespacetesting_1_1internal_a5f74b933606b0a742cd5a8ad2d7087e0}{testing\+::internal\+::\+Cmp\+Helper\+S\+T\+R\+C\+A\+S\+E\+NE}}, s1, s2) +\item +\#define \mbox{\hyperlink{gtest_8h_a74f4189ea570bab9a65d47104659ef9c}{A\+S\+S\+E\+R\+T\+\_\+\+S\+T\+R\+EQ}}(s1, s2)~\mbox{\hyperlink{gtest_8h_ac452685a1a98ea3d96eb956a062ee210}{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2}}(\+::\mbox{\hyperlink{namespacetesting_1_1internal_a93eb9d61cac7faf1faff6301ae5f4a46}{testing\+::internal\+::\+Cmp\+Helper\+S\+T\+R\+EQ}}, s1, s2) +\item +\#define \mbox{\hyperlink{gtest_8h_a3d679660ac1b2f9f6e6c7608452af923}{A\+S\+S\+E\+R\+T\+\_\+\+S\+T\+R\+NE}}(s1, s2)~\mbox{\hyperlink{gtest_8h_ac452685a1a98ea3d96eb956a062ee210}{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2}}(\+::\mbox{\hyperlink{namespacetesting_1_1internal_a6b485231a046ff760844a0321c04870b}{testing\+::internal\+::\+Cmp\+Helper\+S\+T\+R\+NE}}, s1, s2) +\item +\#define \mbox{\hyperlink{gtest_8h_a58847dd696200a3268361401dfcd0fa0}{A\+S\+S\+E\+R\+T\+\_\+\+S\+T\+R\+C\+A\+S\+E\+EQ}}(s1, s2)~\mbox{\hyperlink{gtest_8h_ac452685a1a98ea3d96eb956a062ee210}{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2}}(\+::\mbox{\hyperlink{namespacetesting_1_1internal_a00c3d012df6173622ef558a131bfb95d}{testing\+::internal\+::\+Cmp\+Helper\+S\+T\+R\+C\+A\+S\+E\+EQ}}, s1, s2) +\item +\#define \mbox{\hyperlink{gtest_8h_ac3d2c3836b103068a050f32585b2aaad}{A\+S\+S\+E\+R\+T\+\_\+\+S\+T\+R\+C\+A\+S\+E\+NE}}(s1, s2)~\mbox{\hyperlink{gtest_8h_ac452685a1a98ea3d96eb956a062ee210}{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2}}(\+::\mbox{\hyperlink{namespacetesting_1_1internal_a5f74b933606b0a742cd5a8ad2d7087e0}{testing\+::internal\+::\+Cmp\+Helper\+S\+T\+R\+C\+A\+S\+E\+NE}}, s1, s2) +\item +\#define \mbox{\hyperlink{gtest_8h_a981e552322fb084042d02d6dfa9860ca}{E\+X\+P\+E\+C\+T\+\_\+\+F\+L\+O\+A\+T\+\_\+\+EQ}}(val1, val2) +\item +\#define \mbox{\hyperlink{gtest_8h_ab4852f9430cf656690256ea7fe6323b8}{E\+X\+P\+E\+C\+T\+\_\+\+D\+O\+U\+B\+L\+E\+\_\+\+EQ}}(val1, val2) +\item +\#define \mbox{\hyperlink{gtest_8h_a4663ffbf844baa54bdb29f9148fd0f96}{A\+S\+S\+E\+R\+T\+\_\+\+F\+L\+O\+A\+T\+\_\+\+EQ}}(val1, val2) +\item +\#define \mbox{\hyperlink{gtest_8h_a6617da62e5ae5490995a3bfca1f331a9}{A\+S\+S\+E\+R\+T\+\_\+\+D\+O\+U\+B\+L\+E\+\_\+\+EQ}}(val1, val2) +\item +\#define \mbox{\hyperlink{gtest_8h_a88cd7978af0e7dbd42cd606dfabdcc6f}{E\+X\+P\+E\+C\+T\+\_\+\+N\+E\+AR}}(val1, val2, abs\+\_\+error) +\item +\#define \mbox{\hyperlink{gtest_8h_a73cce6b752d204f91a36bef2f8e663b3}{A\+S\+S\+E\+R\+T\+\_\+\+N\+E\+AR}}(val1, val2, abs\+\_\+error) +\item +\#define \mbox{\hyperlink{gtest_8h_a5034fda3490aad5a93942ac83f4cea49}{A\+S\+S\+E\+R\+T\+\_\+\+N\+O\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+RE}}(statement)~\mbox{\hyperlink{gtest_8h_a1b37a3c446836d33040f3266a6236081}{G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+N\+O\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}}(statement, \mbox{\hyperlink{gtest_8h_a0f9a4c3ea82cc7bf4478eaffdc168358}{G\+T\+E\+S\+T\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}}) +\item +\#define \mbox{\hyperlink{gtest_8h_a067c02ccaf3171d6e1781cd0f8cdcf74}{E\+X\+P\+E\+C\+T\+\_\+\+N\+O\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+RE}}(statement)~\mbox{\hyperlink{gtest_8h_a1b37a3c446836d33040f3266a6236081}{G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+N\+O\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}}(statement, \mbox{\hyperlink{gtest_8h_a6cb7482cfa03661a91c698eb5895f642}{G\+T\+E\+S\+T\+\_\+\+N\+O\+N\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}}) +\item +\#define \mbox{\hyperlink{gtest_8h_a4dac08f15adc8cb1ee0e5c1bfb0f440d}{S\+C\+O\+P\+E\+D\+\_\+\+T\+R\+A\+CE}}(message) +\item +\#define \mbox{\hyperlink{gtest_8h_a216a746d9241b1f42fdd4449698a4d8d}{G\+T\+E\+S\+T\+\_\+\+T\+E\+ST}}(test\+\_\+suite\+\_\+name, test\+\_\+name) +\item +\#define \mbox{\hyperlink{gtest_8h_ab5540a6d621853916be8240ff51819cf}{T\+E\+ST}}(test\+\_\+suite\+\_\+name, test\+\_\+name)~\mbox{\hyperlink{gtest_8h_a216a746d9241b1f42fdd4449698a4d8d}{G\+T\+E\+S\+T\+\_\+\+T\+E\+ST}}(test\+\_\+suite\+\_\+name, test\+\_\+name) +\item +\#define \mbox{\hyperlink{gtest_8h_a0ee66d464d1a06c20c1929cae09d8758}{T\+E\+S\+T\+\_\+F}}(test\+\_\+fixture, test\+\_\+name) +\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +typedef \+::std\+::string \mbox{\hyperlink{namespacetesting_1_1internal_a8e8ff5b11e64078831112677156cb111}{testing\+::internal\+::string}} +\item +typedef \+::std\+::wstring \mbox{\hyperlink{namespacetesting_1_1internal_a3f543179329c353aee1d7b54a9a8e335}{testing\+::internal\+::wstring}} +\item +typedef G\+Test\+Mutex\+Lock \mbox{\hyperlink{namespacetesting_1_1internal_a08b187c6cc4e28400aadf9a32fccc8de}{testing\+::internal\+::\+Mutex\+Lock}} +\item +typedef bool\+\_\+constant$<$ false $>$ \mbox{\hyperlink{namespacetesting_1_1internal_abb1d0789f19bdde21affccbd1078b525}{testing\+::internal\+::false\+\_\+type}} +\item +typedef bool\+\_\+constant$<$ true $>$ \mbox{\hyperlink{namespacetesting_1_1internal_a62f917c3424d8841de9b49b5ec28edb4}{testing\+::internal\+::true\+\_\+type}} +\item +typedef long long \mbox{\hyperlink{namespacetesting_1_1internal_a05c6bd9ede5ccdf25191a590d610dcc6}{testing\+::internal\+::\+Biggest\+Int}} +\item +typedef struct stat \mbox{\hyperlink{namespacetesting_1_1internal_1_1posix_a8eb9f08d3af29941c2d2a964cfff3ecb}{testing\+::internal\+::posix\+::\+Stat\+Struct}} +\item +typedef Type\+With\+Size$<$ 4 $>$\+::Int \mbox{\hyperlink{namespacetesting_1_1internal_a8ee38faaf875f133358abaf9bc056cec}{testing\+::internal\+::\+Int32}} +\item +typedef Type\+With\+Size$<$ 4 $>$\+::U\+Int \mbox{\hyperlink{namespacetesting_1_1internal_a40d4fffcd2bf56f18b1c380615aa85e3}{testing\+::internal\+::\+U\+Int32}} +\item +typedef Type\+With\+Size$<$ 8 $>$\+::Int \mbox{\hyperlink{namespacetesting_1_1internal_a271c563fec38b804ddab0677f51f70a8}{testing\+::internal\+::\+Int64}} +\item +typedef Type\+With\+Size$<$ 8 $>$\+::U\+Int \mbox{\hyperlink{namespacetesting_1_1internal_aa6a1ac454e6d7e550fa4925c62c35caa}{testing\+::internal\+::\+U\+Int64}} +\item +typedef Type\+With\+Size$<$ 8 $>$\+::Int \mbox{\hyperlink{namespacetesting_1_1internal_a66a845df404b38fe85c5e14a069f255a}{testing\+::internal\+::\+Time\+In\+Millis}} +\item +typedef Floating\+Point$<$ float $>$ \mbox{\hyperlink{namespacetesting_1_1internal_a02e1981f5ff70609e6ac06e006ff519a}{testing\+::internal\+::\+Float}} +\item +typedef Floating\+Point$<$ double $>$ \mbox{\hyperlink{namespacetesting_1_1internal_a66a7579b1893b260c31dad577f7a5c48}{testing\+::internal\+::\+Double}} +\item +typedef const void $\ast$ \mbox{\hyperlink{namespacetesting_1_1internal_ab1114197d3c657d8b7f8e0c5caa12d00}{testing\+::internal\+::\+Type\+Id}} +\item +using \mbox{\hyperlink{namespacetesting_1_1internal_a83e4e0732ac6a9dcfe6ee299dc1b9fa2}{testing\+::internal\+::\+Set\+Up\+Test\+Suite\+Func}} = void($\ast$)() +\item +using \mbox{\hyperlink{namespacetesting_1_1internal_a8257a87aa42cebaa54b0c48a6ae657a5}{testing\+::internal\+::\+Tear\+Down\+Test\+Suite\+Func}} = void($\ast$)() +\item +using \mbox{\hyperlink{namespacetesting_1_1internal_a04786aa10f8b0bf38a5ead94d00475f4}{testing\+::internal\+::\+Set\+Up\+Tear\+Down\+Suite\+Func\+Type}} = void($\ast$)() +\item +typedef int \mbox{\hyperlink{namespacetesting_1_1internal_ad8f0c2883245f1df2a53618a49f0deb3}{testing\+::internal\+::\+Is\+Container}} +\item +typedef char \mbox{\hyperlink{namespacetesting_1_1internal_abf080521ce135deb510e0a7830fd3d33}{testing\+::internal\+::\+Is\+Not\+Container}} +\item +typedef \+::std\+::vector$<$ \+::std\+::string $>$ \mbox{\hyperlink{namespacetesting_1_1internal_a50003bb76ec2934be1062be11efba8bf}{testing\+::internal\+::\+Strings}} +\item +{\footnotesize template$<$class Test\+Case $>$ }\\using \mbox{\hyperlink{namespacetesting_1_1internal_aac31682b6b41997d6cc610a5787dc8bc}{testing\+::internal\+::\+Parameterized\+Test\+Case\+Info}} = Parameterized\+Test\+Suite\+Info$<$ Test\+Case $>$ +\item +typedef internal\+::\+Time\+In\+Millis \mbox{\hyperlink{namespacetesting_a992de1d091ce660f451d1e8b3ce30fd6}{testing\+::\+Time\+In\+Millis}} +\end{DoxyCompactItemize} +\subsection*{Enumerations} +\begin{DoxyCompactItemize} +\item +enum \mbox{\hyperlink{namespacetesting_1_1internal_aa6255ef3b023c5b4e1a2198d887fb977}{testing\+::internal\+::\+G\+Test\+Log\+Severity}} \{ \mbox{\hyperlink{namespacetesting_1_1internal_aa6255ef3b023c5b4e1a2198d887fb977aff315e0913fcda86fe4de882bf5e33e9}{testing\+::internal\+::\+G\+T\+E\+S\+T\+\_\+\+I\+N\+FO}}, +\mbox{\hyperlink{namespacetesting_1_1internal_aa6255ef3b023c5b4e1a2198d887fb977a7a051bc2794f15a4bf0eab40562a304c}{testing\+::internal\+::\+G\+T\+E\+S\+T\+\_\+\+W\+A\+R\+N\+I\+NG}}, +\mbox{\hyperlink{namespacetesting_1_1internal_aa6255ef3b023c5b4e1a2198d887fb977a651e9cd2a904e0c8210536271b875f75}{testing\+::internal\+::\+G\+T\+E\+S\+T\+\_\+\+E\+R\+R\+OR}}, +\mbox{\hyperlink{namespacetesting_1_1internal_aa6255ef3b023c5b4e1a2198d887fb977a75063567740f6bf7da419b1b9197b12e}{testing\+::internal\+::\+G\+T\+E\+S\+T\+\_\+\+F\+A\+T\+AL}} + \} +\item +enum \mbox{\hyperlink{namespacetesting_1_1internal_1_1edit__distance_ad46aa6da12aec1a3f166310478b53a08}{testing\+::internal\+::edit\+\_\+distance\+::\+Edit\+Type}} \{ \mbox{\hyperlink{namespacetesting_1_1internal_1_1edit__distance_ad46aa6da12aec1a3f166310478b53a08a7bdb9c74613a94f21b7489e0b5640a63}{testing\+::internal\+::edit\+\_\+distance\+::k\+Match}}, +\mbox{\hyperlink{namespacetesting_1_1internal_1_1edit__distance_ad46aa6da12aec1a3f166310478b53a08a63400b073f5b311a87d568b5ae27ffe8}{testing\+::internal\+::edit\+\_\+distance\+::k\+Add}}, +\mbox{\hyperlink{namespacetesting_1_1internal_1_1edit__distance_ad46aa6da12aec1a3f166310478b53a08a814768ef6cd0264a0a10b1e701a63e78}{testing\+::internal\+::edit\+\_\+distance\+::k\+Remove}}, +\mbox{\hyperlink{namespacetesting_1_1internal_1_1edit__distance_ad46aa6da12aec1a3f166310478b53a08afdbf30ecf9f32f60c646a34a358615f2}{testing\+::internal\+::edit\+\_\+distance\+::k\+Replace}} + \} +\item +enum \mbox{\hyperlink{namespacetesting_1_1internal2_aeb8161b0b3ee503347b0662d7028fd57}{testing\+::internal2\+::\+Type\+Kind}} \{ \mbox{\hyperlink{namespacetesting_1_1internal2_aeb8161b0b3ee503347b0662d7028fd57a14aaf98a2547ecf43eef0868d54b1383}{testing\+::internal2\+::k\+Protobuf}}, +\mbox{\hyperlink{namespacetesting_1_1internal2_aeb8161b0b3ee503347b0662d7028fd57a9bdcf3f1548f498b2b7f097306ea0224}{testing\+::internal2\+::k\+Convertible\+To\+Integer}}, +\mbox{\hyperlink{namespacetesting_1_1internal2_aeb8161b0b3ee503347b0662d7028fd57abe8aaea44751d6ebd0cdf5bd94451db1}{testing\+::internal2\+::k\+Other\+Type}} + \} +\item +enum \mbox{\hyperlink{namespacetesting_1_1internal_a17fb8f0125fa92404a249ed38a43faa4}{testing\+::internal\+::\+Default\+Printer\+Type}} \{ \mbox{\hyperlink{namespacetesting_1_1internal_a17fb8f0125fa92404a249ed38a43faa4a945a19e59155ce1d335e8c3bcbdf61db}{testing\+::internal\+::k\+Print\+Container}}, +\mbox{\hyperlink{namespacetesting_1_1internal_a17fb8f0125fa92404a249ed38a43faa4a8eaa6fff4a58832b30027df49f73dcbf}{testing\+::internal\+::k\+Print\+Pointer}}, +\mbox{\hyperlink{namespacetesting_1_1internal_a17fb8f0125fa92404a249ed38a43faa4a5a066cde30e276c6460ba10d123d0c2c}{testing\+::internal\+::k\+Print\+Function\+Pointer}}, +\mbox{\hyperlink{namespacetesting_1_1internal_a17fb8f0125fa92404a249ed38a43faa4a6f88d77d9d763d8a009caf950cfbab28}{testing\+::internal\+::k\+Print\+Other}} + \} +\item +enum \mbox{\hyperlink{namespacetesting_1_1internal_a648c1bc94c2ef9e868ff3f9dff0f9c4e}{testing\+::internal\+::\+G\+Test\+Color}} \{ \mbox{\hyperlink{namespacetesting_1_1internal_a648c1bc94c2ef9e868ff3f9dff0f9c4eafcd8803dc9e37e374d5a4486afc230b7}{testing\+::internal\+::\+C\+O\+L\+O\+R\+\_\+\+D\+E\+F\+A\+U\+LT}}, +\mbox{\hyperlink{namespacetesting_1_1internal_a648c1bc94c2ef9e868ff3f9dff0f9c4ea9ebb3ddab9391781f6ee5021e1e443c3}{testing\+::internal\+::\+C\+O\+L\+O\+R\+\_\+\+R\+ED}}, +\mbox{\hyperlink{namespacetesting_1_1internal_a648c1bc94c2ef9e868ff3f9dff0f9c4ea3b1e81f5b14a17b35a8672d57d166507}{testing\+::internal\+::\+C\+O\+L\+O\+R\+\_\+\+G\+R\+E\+EN}}, +\mbox{\hyperlink{namespacetesting_1_1internal_a648c1bc94c2ef9e868ff3f9dff0f9c4ea2cca441161aca75a208ff08d07f5b1a5}{testing\+::internal\+::\+C\+O\+L\+O\+R\+\_\+\+Y\+E\+L\+L\+OW}} + \} +\end{DoxyCompactItemize} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} bool \mbox{\hyperlink{namespacetesting_1_1internal_ab2709373c78eb8b1c22a6ba30cceba52}{testing\+::internal\+::\+Is\+True}} (bool condition) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} \+::std\+::string \mbox{\hyperlink{namespacetesting_1_1internal_a31b7c3abed4a7c395f42c61e993989f4}{testing\+::internal\+::\+Format\+File\+Location}} (const char $\ast$file, int line) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} \+::std\+::string \mbox{\hyperlink{namespacetesting_1_1internal_a1ee4cde97868c53e442d3182496a9f3c}{testing\+::internal\+::\+Format\+Compiler\+Independent\+File\+Location}} (const char $\ast$file, int line) +\item +void \mbox{\hyperlink{namespacetesting_1_1internal_a06b1b20029fbd1dbeb59752f914fab84}{testing\+::internal\+::\+Log\+To\+Stderr}} () +\item +void \mbox{\hyperlink{namespacetesting_1_1internal_a2135f223bf6b527729aeaa651115183b}{testing\+::internal\+::\+Flush\+Info\+Log}} () +\item +{\footnotesize template$<$typename To $>$ }\\To \mbox{\hyperlink{namespacetesting_1_1internal_a982df3f369643b175f79cda4048bc3b9}{testing\+::internal\+::\+Implicit\+Cast\+\_\+}} (To x) +\item +{\footnotesize template$<$typename To , typename From $>$ }\\To \mbox{\hyperlink{namespacetesting_1_1internal_a1a1a1aed3fe00908b8a45d5ab4a33665}{testing\+::internal\+::\+Down\+Cast\+\_\+}} (From $\ast$f) +\item +{\footnotesize template$<$class Derived , class Base $>$ }\\Derived $\ast$ \mbox{\hyperlink{namespacetesting_1_1internal_abfe9bfb020d38aa4e0e12c001911b22b}{testing\+::internal\+::\+Checked\+Downcast\+To\+Actual\+Type}} (Base $\ast$base) +\item +void \mbox{\hyperlink{namespacetesting_1_1internal_acba06d4f0343dec407738ba5544af990}{testing\+::internal\+::\+Capture\+Stdout}} () +\item +std\+::string \mbox{\hyperlink{namespacetesting_1_1internal_aed657219a9856a8d249a3230de0c54ce}{testing\+::internal\+::\+Get\+Captured\+Stdout}} () +\item +void \mbox{\hyperlink{namespacetesting_1_1internal_a8ec00d458d0d442bd64af7b5f9c22dda}{testing\+::internal\+::\+Capture\+Stderr}} () +\item +std\+::string \mbox{\hyperlink{namespacetesting_1_1internal_a374156401da17704099d0c33fa53adfb}{testing\+::internal\+::\+Get\+Captured\+Stderr}} () +\item +size\+\_\+t \mbox{\hyperlink{namespacetesting_1_1internal_a40bcfd87e26aae36e0cc51e5db64fd89}{testing\+::internal\+::\+Get\+File\+Size}} (F\+I\+LE $\ast$file) +\item +std\+::string \mbox{\hyperlink{namespacetesting_1_1internal_ab81b0af2a0131ea54dc11de00d5e6e51}{testing\+::internal\+::\+Read\+Entire\+File}} (F\+I\+LE $\ast$file) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} std\+::vector$<$ std\+::string $>$ \mbox{\hyperlink{namespacetesting_1_1internal_a8d8ed3acadedd9c0db28d35a188973ea}{testing\+::internal\+::\+Get\+Argvs}} () +\item +size\+\_\+t \mbox{\hyperlink{namespacetesting_1_1internal_a8cbd8bf820517923d7f3c4477b3af5fa}{testing\+::internal\+::\+Get\+Thread\+Count}} () +\item +bool \mbox{\hyperlink{namespacetesting_1_1internal_aeb957087fd6bbf9db98ab7cd41b0c129}{testing\+::internal\+::\+Is\+Alpha}} (char ch) +\item +bool \mbox{\hyperlink{namespacetesting_1_1internal_a83802e7f23324cd512232203662e1a98}{testing\+::internal\+::\+Is\+Al\+Num}} (char ch) +\item +bool \mbox{\hyperlink{namespacetesting_1_1internal_a4bd96b7fa6486802d33ddc217af55a39}{testing\+::internal\+::\+Is\+Digit}} (char ch) +\item +bool \mbox{\hyperlink{namespacetesting_1_1internal_ac26ce3883bc8919c27074975e958f3b7}{testing\+::internal\+::\+Is\+Lower}} (char ch) +\item +bool \mbox{\hyperlink{namespacetesting_1_1internal_af429e04f70f9c10f6aa76a5d1ccd389f}{testing\+::internal\+::\+Is\+Space}} (char ch) +\item +bool \mbox{\hyperlink{namespacetesting_1_1internal_a84f3baa379fec6bf5947cb5165aa8cc9}{testing\+::internal\+::\+Is\+Upper}} (char ch) +\item +bool \mbox{\hyperlink{namespacetesting_1_1internal_aa234ef141278263fb143b616c74c86e7}{testing\+::internal\+::\+Is\+X\+Digit}} (char ch) +\item +bool \mbox{\hyperlink{namespacetesting_1_1internal_a6ab68a30f8291c09b2289c132bbe3b16}{testing\+::internal\+::\+Is\+X\+Digit}} (wchar\+\_\+t ch) +\item +char \mbox{\hyperlink{namespacetesting_1_1internal_ad9c627ef2a94245e3fd69e7ab3d49b42}{testing\+::internal\+::\+To\+Lower}} (char ch) +\item +char \mbox{\hyperlink{namespacetesting_1_1internal_ac1b876a8133895bd553d4780ecaa1e3a}{testing\+::internal\+::\+To\+Upper}} (char ch) +\item +std\+::string \mbox{\hyperlink{namespacetesting_1_1internal_aa6afda12e567c353e2e9b9c2e8cae14f}{testing\+::internal\+::\+Strip\+Trailing\+Spaces}} (std\+::string str) +\item +int \mbox{\hyperlink{namespacetesting_1_1internal_1_1posix_a3117b067e1f942a2031e666953120ccc}{testing\+::internal\+::posix\+::\+File\+No}} (F\+I\+LE $\ast$file) +\item +int \mbox{\hyperlink{namespacetesting_1_1internal_1_1posix_a16ebe936b3a8ea462a94191635aedc27}{testing\+::internal\+::posix\+::\+Is\+A\+T\+TY}} (int fd) +\item +int \mbox{\hyperlink{namespacetesting_1_1internal_1_1posix_a2b87b7ff647a128614daf50667eb9304}{testing\+::internal\+::posix\+::\+Stat}} (const char $\ast$path, Stat\+Struct $\ast$buf) +\item +int \mbox{\hyperlink{namespacetesting_1_1internal_1_1posix_a1ef2385a7f8e4c706054da35967e76bd}{testing\+::internal\+::posix\+::\+Str\+Case\+Cmp}} (const char $\ast$s1, const char $\ast$s2) +\item +char $\ast$ \mbox{\hyperlink{namespacetesting_1_1internal_1_1posix_a8e352884793a65ae8be144676f1a9136}{testing\+::internal\+::posix\+::\+Str\+Dup}} (const char $\ast$src) +\item +int \mbox{\hyperlink{namespacetesting_1_1internal_1_1posix_acbad5d4ea5b73fd1765f5f760642932a}{testing\+::internal\+::posix\+::\+Rm\+Dir}} (const char $\ast$dir) +\item +bool \mbox{\hyperlink{namespacetesting_1_1internal_1_1posix_af0d04ed5baeed28353fa38742748a421}{testing\+::internal\+::posix\+::\+Is\+Dir}} (const Stat\+Struct \&st) +\item +const char $\ast$ \mbox{\hyperlink{namespacetesting_1_1internal_1_1posix_a36fca815713332e5c6dc92c98b6b2574}{testing\+::internal\+::posix\+::\+Str\+N\+Cpy}} (char $\ast$dest, const char $\ast$src, size\+\_\+t n) +\item +int \mbox{\hyperlink{namespacetesting_1_1internal_1_1posix_a1ddc8a4fc6bb21da372307485591a212}{testing\+::internal\+::posix\+::\+Ch\+Dir}} (const char $\ast$dir) +\item +F\+I\+LE $\ast$ \mbox{\hyperlink{namespacetesting_1_1internal_1_1posix_a4042201dcc4932641d484e7ddf94de7d}{testing\+::internal\+::posix\+::\+F\+Open}} (const char $\ast$path, const char $\ast$mode) +\item +F\+I\+LE $\ast$ \mbox{\hyperlink{namespacetesting_1_1internal_1_1posix_a9ef6d089cdae03f9d9e0e6d379c40703}{testing\+::internal\+::posix\+::\+F\+Reopen}} (const char $\ast$path, const char $\ast$mode, F\+I\+LE $\ast$stream) +\item +F\+I\+LE $\ast$ \mbox{\hyperlink{namespacetesting_1_1internal_1_1posix_af7c268eba32d5a718b36b6b3801302e0}{testing\+::internal\+::posix\+::\+F\+D\+Open}} (int fd, const char $\ast$mode) +\item +int \mbox{\hyperlink{namespacetesting_1_1internal_1_1posix_af4beeaaa8d62916d5e3b644a1ddfbd6b}{testing\+::internal\+::posix\+::\+F\+Close}} (F\+I\+LE $\ast$fp) +\item +int \mbox{\hyperlink{namespacetesting_1_1internal_1_1posix_a3c6ab13e581a56f1b02f3eb7536c97fd}{testing\+::internal\+::posix\+::\+Read}} (int fd, void $\ast$buf, unsigned int count) +\item +int \mbox{\hyperlink{namespacetesting_1_1internal_1_1posix_af4acf9f78d55f815a18b43786511abef}{testing\+::internal\+::posix\+::\+Write}} (int fd, const void $\ast$buf, unsigned int count) +\item +int \mbox{\hyperlink{namespacetesting_1_1internal_1_1posix_a15e5b8f2a535ef1b2529b85b861e4846}{testing\+::internal\+::posix\+::\+Close}} (int fd) +\item +const char $\ast$ \mbox{\hyperlink{namespacetesting_1_1internal_1_1posix_a4b77b14af6f4d18f83d303b98e9349c4}{testing\+::internal\+::posix\+::\+Str\+Error}} (int errnum) +\item +const char $\ast$ \mbox{\hyperlink{namespacetesting_1_1internal_1_1posix_a1d5e3da5a27eed25986859fa83cafe95}{testing\+::internal\+::posix\+::\+Get\+Env}} (const char $\ast$name) +\item +void \mbox{\hyperlink{namespacetesting_1_1internal_1_1posix_a69b8278c59359dd6a6f941b4643db9fb}{testing\+::internal\+::posix\+::\+Abort}} () +\item +bool \mbox{\hyperlink{namespacetesting_1_1internal_ac06fc81336a3d80755f4020d34321766}{testing\+::internal\+::\+Parse\+Int32}} (const Message \&src\+\_\+text, const char $\ast$str, Int32 $\ast$value) +\item +bool \mbox{\hyperlink{namespacetesting_1_1internal_a1055088bb9b867e1b7b8f096f519d7c5}{testing\+::internal\+::\+Bool\+From\+G\+Test\+Env}} (const char $\ast$flag, bool default\+\_\+value) +\item +Int32 \mbox{\hyperlink{namespacetesting_1_1internal_a2196f070b2d28bceb45c7ad3b565b9ba}{testing\+::internal\+::\+Int32\+From\+G\+Test\+Env}} (const char $\ast$flag, Int32 default\+\_\+value) +\item +std\+::string \mbox{\hyperlink{namespacetesting_1_1internal_a0c793c6d84760d900299916c077a1af4}{testing\+::internal\+::\+Output\+Flag\+Also\+Check\+Env\+Var}} () +\item +const char $\ast$ \mbox{\hyperlink{namespacetesting_1_1internal_a0967cbf18fb1594f82512d8d822aba21}{testing\+::internal\+::\+String\+From\+G\+Test\+Env}} (const char $\ast$flag, const char $\ast$default\+\_\+value) +\item +std\+::ostream \& \mbox{\hyperlink{namespacetesting_a7b802e532fd68749765cb7dc156130db}{testing\+::operator$<$$<$}} (std\+::ostream \&os, const Message \&sb) +\item +{\footnotesize template$<$typename T $>$ }\\std\+::string \mbox{\hyperlink{namespacetesting_1_1internal_aad4beed95d0846e6ffc5da0978ef3bb9}{testing\+::internal\+::\+Streamable\+To\+String}} (const T \&streamable) +\item +\mbox{\hyperlink{gtest_8h_a88f79832f9d045112a76e9da8611cc13}{G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+W\+A\+R\+N\+I\+N\+G\+S\+\_\+\+P\+U\+S\+H\+\_\+}} (4251) namespace testing +\item +{\footnotesize template$<$typename T $>$ }\\\+::std\+::string \mbox{\hyperlink{namespacetesting_aa5717bb1144edd1d262d310ba70c82ed}{testing\+::\+Print\+To\+String}} (const T \&value) +\item +std\+::true\+\_\+type \mbox{\hyperlink{namespacetesting_1_1internal_a3db36c62f31a9439117c41c2b13f4941}{testing\+::internal\+::\+Is\+Null\+Literal\+Helper}} (Secret $\ast$) +\item +std\+::false\+\_\+type \mbox{\hyperlink{namespacetesting_1_1internal_a1404fbe8d1164f614f6358b314ec3cf4}{testing\+::internal\+::\+Is\+Null\+Literal\+Helper}} (Ignored\+Value) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} std\+::string \mbox{\hyperlink{namespacetesting_1_1internal_af69e146a989e8d48def39a0cc59461c9}{testing\+::internal\+::\+Append\+User\+Message}} (const std\+::string \>est\+\_\+msg, const Message \&user\+\_\+msg) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} std\+::vector$<$ Edit\+Type $>$ \mbox{\hyperlink{namespacetesting_1_1internal_1_1edit__distance_ad28f23b77f716200bc6644bfc7413a63}{testing\+::internal\+::edit\+\_\+distance\+::\+Calculate\+Optimal\+Edits}} (const std\+::vector$<$ size\+\_\+t $>$ \&left, const std\+::vector$<$ size\+\_\+t $>$ \&right) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} std\+::vector$<$ Edit\+Type $>$ \mbox{\hyperlink{namespacetesting_1_1internal_1_1edit__distance_ad2258c5c811f8f262335f58641b33544}{testing\+::internal\+::edit\+\_\+distance\+::\+Calculate\+Optimal\+Edits}} (const std\+::vector$<$ std\+::string $>$ \&left, const std\+::vector$<$ std\+::string $>$ \&right) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} std\+::string \mbox{\hyperlink{namespacetesting_1_1internal_1_1edit__distance_a48cffebc6d3169ad1df7849b5f7fb5ff}{testing\+::internal\+::edit\+\_\+distance\+::\+Create\+Unified\+Diff}} (const std\+::vector$<$ std\+::string $>$ \&left, const std\+::vector$<$ std\+::string $>$ \&right, size\+\_\+t context=2) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} std\+::string \mbox{\hyperlink{namespacetesting_1_1internal_a513107ff8defa97d949937fc1350a56c}{testing\+::internal\+::\+Diff\+Strings}} (const std\+::string \&left, const std\+::string \&right, size\+\_\+t $\ast$total\+\_\+line\+\_\+count) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result \mbox{\hyperlink{namespacetesting_1_1internal_ac61e2ba2cbf259fd6ee5ffd4e49c9445}{testing\+::internal\+::\+Eq\+Failure}} (const char $\ast$expected\+\_\+expression, const char $\ast$actual\+\_\+expression, const std\+::string \&expected\+\_\+value, const std\+::string \&actual\+\_\+value, bool ignoring\+\_\+case) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} std\+::string \mbox{\hyperlink{namespacetesting_1_1internal_aed8d3ad4341f8f2de53440e39c995632}{testing\+::internal\+::\+Get\+Bool\+Assertion\+Failure\+Message}} (const Assertion\+Result \&assertion\+\_\+result, const char $\ast$expression\+\_\+text, const char $\ast$actual\+\_\+predicate\+\_\+value, const char $\ast$expected\+\_\+predicate\+\_\+value) +\item +{\footnotesize template$<$typename T $>$ }\\Type\+Id \mbox{\hyperlink{namespacetesting_1_1internal_a6b108e56fdc68ea937ffb3759fb55ab0}{testing\+::internal\+::\+Get\+Type\+Id}} () +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Type\+Id \mbox{\hyperlink{namespacetesting_1_1internal_a1e85cf16bb95b60f879d48ba1fbfc1c9}{testing\+::internal\+::\+Get\+Test\+Type\+Id}} () +\item +Set\+Up\+Tear\+Down\+Suite\+Func\+Type \mbox{\hyperlink{namespacetesting_1_1internal_a9579a78c229ea302caded45d65f77336}{testing\+::internal\+::\+Get\+Not\+Default\+Or\+Null}} (Set\+Up\+Tear\+Down\+Suite\+Func\+Type a, Set\+Up\+Tear\+Down\+Suite\+Func\+Type def) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Test\+Info $\ast$ \mbox{\hyperlink{namespacetesting_1_1internal_a7ab4072540184e26119ad853f45059f7}{testing\+::internal\+::\+Make\+And\+Register\+Test\+Info}} (const char $\ast$test\+\_\+suite\+\_\+name, const char $\ast$name, const char $\ast$type\+\_\+param, const char $\ast$value\+\_\+param, Code\+Location code\+\_\+location, Type\+Id fixture\+\_\+class\+\_\+id, Set\+Up\+Test\+Suite\+Func set\+\_\+up\+\_\+tc, Tear\+Down\+Test\+Suite\+Func tear\+\_\+down\+\_\+tc, Test\+Factory\+Base $\ast$factory) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} bool \mbox{\hyperlink{namespacetesting_1_1internal_aac72b20299ad4a99554ce161e1769560}{testing\+::internal\+::\+Skip\+Prefix}} (const char $\ast$prefix, const char $\ast$$\ast$pstr) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} std\+::string \mbox{\hyperlink{namespacetesting_1_1internal_ae7ae495d3207e26968dfbd537c5e6dee}{testing\+::internal\+::\+Get\+Current\+Os\+Stack\+Trace\+Except\+Top}} (Unit\+Test $\ast$unit\+\_\+test, int skip\+\_\+count) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} bool \mbox{\hyperlink{namespacetesting_1_1internal_a4d46f09c3bfe68700b7f728d2cc3782f}{testing\+::internal\+::\+Always\+True}} () +\item +bool \mbox{\hyperlink{namespacetesting_1_1internal_a4b24c851ab13569b1b15b3d259b60d2e}{testing\+::internal\+::\+Always\+False}} () +\item +{\footnotesize template$<$class C , class Iterator = decltype(\+::std\+::declval$<$const C\&$>$().\+begin()), class = decltype(\+::std\+::declval$<$const C\&$>$().\+end()), class = decltype(++\+::std\+::declval$<$\+Iterator\&$>$()), class = decltype($\ast$\+::std\+::declval$<$\+Iterator$>$()), class = typename C\+::const\+\_\+iterator$>$ }\\Is\+Container \mbox{\hyperlink{namespacetesting_1_1internal_a764748b94f628bdd1dcd39dc81e8b71f}{testing\+::internal\+::\+Is\+Container\+Test}} (int) +\item +{\footnotesize template$<$class C $>$ }\\Is\+Not\+Container \mbox{\hyperlink{namespacetesting_1_1internal_af545a2ae928b8a9e7581978234464275}{testing\+::internal\+::\+Is\+Container\+Test}} (long) +\item +{\footnotesize template$<$typename T , typename U $>$ }\\bool \mbox{\hyperlink{namespacetesting_1_1internal_af4bebf36baf0b0a5b26d051dde55fa47}{testing\+::internal\+::\+Array\+Eq}} (const T $\ast$lhs, size\+\_\+t size, const U $\ast$rhs) +\item +{\footnotesize template$<$typename T , typename U $>$ }\\bool \mbox{\hyperlink{namespacetesting_1_1internal_a49b4d0ee49c0f8c93bab29ebd20630cc}{testing\+::internal\+::\+Array\+Eq}} (const T \&lhs, const U \&rhs) +\item +{\footnotesize template$<$typename T , typename U , size\+\_\+t N$>$ }\\bool \mbox{\hyperlink{namespacetesting_1_1internal_a5cb6f81ee827130024261121c742b26c}{testing\+::internal\+::\+Array\+Eq}} (const T(\&lhs)\mbox{[}N\mbox{]}, const U(\&rhs)\mbox{[}N\mbox{]}) +\item +{\footnotesize template$<$typename Iter , typename Element $>$ }\\Iter \mbox{\hyperlink{namespacetesting_1_1internal_a94a857fe6ff32cf4fdc4769a4071f239}{testing\+::internal\+::\+Array\+Aware\+Find}} (Iter begin, Iter end, const Element \&elem) +\item +{\footnotesize template$<$typename T , typename U $>$ }\\void \mbox{\hyperlink{namespacetesting_1_1internal_afb1b9728aaaf6d9fe6246a19cfe3f7f5}{testing\+::internal\+::\+Copy\+Array}} (const T $\ast$from, size\+\_\+t size, U $\ast$to) +\item +{\footnotesize template$<$typename T , typename U $>$ }\\void \mbox{\hyperlink{namespacetesting_1_1internal_a84d0e746ba0827cc52b53d22000de0e8}{testing\+::internal\+::\+Copy\+Array}} (const T \&from, U $\ast$to) +\item +{\footnotesize template$<$typename T , typename U , size\+\_\+t N$>$ }\\void \mbox{\hyperlink{namespacetesting_1_1internal_a1e7ae855686720615dcd5754c8181c62}{testing\+::internal\+::\+Copy\+Array}} (const T(\&from)\mbox{[}N\mbox{]}, U($\ast$to)\mbox{[}N\mbox{]}) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} void \mbox{\hyperlink{namespacetesting_1_1internal2_a9fbf8e07c0f94dc74d6ef5e56cd3c553}{testing\+::internal2\+::\+Print\+Bytes\+In\+Object\+To}} (const unsigned char $\ast$obj\+\_\+bytes, size\+\_\+t count, \+::std\+::ostream $\ast$os) +\item +{\footnotesize template$<$typename Char , typename Char\+Traits , typename T $>$ }\\\+::std\+::basic\+\_\+ostream$<$ Char, Char\+Traits $>$ \& \mbox{\hyperlink{namespacetesting_1_1internal2_a07dbe129beb8952074f04b599dfce39b}{testing\+::internal2\+::operator$<$$<$}} (\+::std\+::basic\+\_\+ostream$<$ Char, Char\+Traits $>$ \&os, const T \&x) +\item +{\footnotesize template$<$typename T $>$ }\\void \mbox{\hyperlink{namespacetesting__internal_a3f49d3d0c996242f9d383c850097a656}{testing\+\_\+internal\+::\+Default\+Print\+Non\+Container\+To}} (const T \&value, \+::std\+::ostream $\ast$os) +\item +\mbox{\hyperlink{namespacetesting_1_1internal_a3682f962ae0ec1c0eca6444ca0a09e91}{testing\+::internal\+::\+G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+C\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+A\+S\+\_\+\+P\+O\+I\+N\+T\+E\+R\+\_\+}} (char) +\item +\mbox{\hyperlink{namespacetesting_1_1internal_a85e08f00d443221e529a0a85a90fbaeb}{testing\+::internal\+::\+G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+C\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+A\+S\+\_\+\+P\+O\+I\+N\+T\+E\+R\+\_\+}} (wchar\+\_\+t) +\item +\mbox{\hyperlink{namespacetesting_1_1internal_aeac30230dcc362221bdd07d61eaa4ec1}{testing\+::internal\+::\+G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+C\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+A\+S\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+}} (char, \+::std\+::string) +\item +\mbox{\hyperlink{namespacetesting_1_1internal_a12070f3d771e37e1c3f2539692af0ce0}{testing\+::internal\+::\+G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+C\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+A\+S\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+}} (wchar\+\_\+t, \+::std\+::wstring) +\item +{\footnotesize template$<$typename T1 , typename T2 $>$ }\\std\+::string \mbox{\hyperlink{namespacetesting_1_1internal_a91ab078f10adc669f09b7f604975c518}{testing\+::internal\+::\+Format\+For\+Comparison\+Failure\+Message}} (const T1 \&value, const T2 \&) +\item +{\footnotesize template$<$typename T $>$ }\\void \mbox{\hyperlink{namespacetesting_1_1internal_a30708fa2bacf11895b03bdb21eb72309}{testing\+::internal\+::\+Universal\+Print}} (const T \&value, \+::std\+::ostream $\ast$os) +\item +{\footnotesize template$<$typename C $>$ }\\void \mbox{\hyperlink{namespacetesting_1_1internal_a2e96c98d5bd8ee4a1b92f8e3cde7dd40}{testing\+::internal\+::\+Default\+Print\+To}} (Wrap\+Printer\+Type$<$ k\+Print\+Container $>$, const C \&container, \+::std\+::ostream $\ast$os) +\item +{\footnotesize template$<$typename T $>$ }\\void \mbox{\hyperlink{namespacetesting_1_1internal_a074522dd8d77d61878a042b8d05cc64a}{testing\+::internal\+::\+Default\+Print\+To}} (Wrap\+Printer\+Type$<$ k\+Print\+Pointer $>$, T $\ast$p, \+::std\+::ostream $\ast$os) +\item +{\footnotesize template$<$typename T $>$ }\\void \mbox{\hyperlink{namespacetesting_1_1internal_a7729c07abcae6c69b9b370c39db61409}{testing\+::internal\+::\+Default\+Print\+To}} (Wrap\+Printer\+Type$<$ k\+Print\+Function\+Pointer $>$, T $\ast$p, \+::std\+::ostream $\ast$os) +\item +{\footnotesize template$<$typename T $>$ }\\void \mbox{\hyperlink{namespacetesting_1_1internal_a72b1a69d96be8ea6382539f5c4fcac6d}{testing\+::internal\+::\+Default\+Print\+To}} (Wrap\+Printer\+Type$<$ k\+Print\+Other $>$, const T \&value, \+::std\+::ostream $\ast$os) +\item +{\footnotesize template$<$typename T $>$ }\\void \mbox{\hyperlink{namespacetesting_1_1internal_adb3c27150dbe661db0e0c4be27533460}{testing\+::internal\+::\+Print\+To}} (const T \&value, \+::std\+::ostream $\ast$os) +\item +void \mbox{\hyperlink{namespacetesting_1_1internal_aa7e70a85d66f0c109e3e69629ef577f2}{testing\+::internal\+::\+Print\+To}} (unsigned char c, \+::std\+::ostream $\ast$os) +\item +void \mbox{\hyperlink{namespacetesting_1_1internal_abf6c518b437569187c1218166c702807}{testing\+::internal\+::\+Print\+To}} (signed char c, \+::std\+::ostream $\ast$os) +\item +void \mbox{\hyperlink{namespacetesting_1_1internal_a476bd3d411d4f129620aaf8999c257c0}{testing\+::internal\+::\+Print\+To}} (char c, \+::std\+::ostream $\ast$os) +\item +void \mbox{\hyperlink{namespacetesting_1_1internal_a2979ac1ad3e05c51dcd7dca2eb34e6ce}{testing\+::internal\+::\+Print\+To}} (bool x, \+::std\+::ostream $\ast$os) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} void \mbox{\hyperlink{namespacetesting_1_1internal_a6c50fd437a2ae2ff6f182ccd6c2744dd}{testing\+::internal\+::\+Print\+To}} (wchar\+\_\+t wc, \+::std\+::ostream $\ast$os) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} void \mbox{\hyperlink{namespacetesting_1_1internal_ac226053b96d7d61f9407e3b75bab07d9}{testing\+::internal\+::\+Print\+To}} (const char $\ast$s, \+::std\+::ostream $\ast$os) +\item +void \mbox{\hyperlink{namespacetesting_1_1internal_a553eec7bb50de01c9e91cac4accc606f}{testing\+::internal\+::\+Print\+To}} (char $\ast$s, \+::std\+::ostream $\ast$os) +\item +void \mbox{\hyperlink{namespacetesting_1_1internal_a792cc5665a34619ed7a6d54711433456}{testing\+::internal\+::\+Print\+To}} (const signed char $\ast$s, \+::std\+::ostream $\ast$os) +\item +void \mbox{\hyperlink{namespacetesting_1_1internal_a1320096b116f8cc4b688acbd5b783051}{testing\+::internal\+::\+Print\+To}} (signed char $\ast$s, \+::std\+::ostream $\ast$os) +\item +void \mbox{\hyperlink{namespacetesting_1_1internal_a42c591f2164ad105b502a9262333aed2}{testing\+::internal\+::\+Print\+To}} (const unsigned char $\ast$s, \+::std\+::ostream $\ast$os) +\item +void \mbox{\hyperlink{namespacetesting_1_1internal_a7fae797c500d66d0f5a9db4f205e3416}{testing\+::internal\+::\+Print\+To}} (unsigned char $\ast$s, \+::std\+::ostream $\ast$os) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} void \mbox{\hyperlink{namespacetesting_1_1internal_afb038075e9e2166d1d9158a19e0eed23}{testing\+::internal\+::\+Print\+To}} (const wchar\+\_\+t $\ast$s, \+::std\+::ostream $\ast$os) +\item +void \mbox{\hyperlink{namespacetesting_1_1internal_a8d41baa371fad3eb5a3dbe1bbc02c290}{testing\+::internal\+::\+Print\+To}} (wchar\+\_\+t $\ast$s, \+::std\+::ostream $\ast$os) +\item +{\footnotesize template$<$typename T $>$ }\\void \mbox{\hyperlink{namespacetesting_1_1internal_ad3013b6b4c825edee9fe18ff1d982faa}{testing\+::internal\+::\+Print\+Raw\+Array\+To}} (const T a\mbox{[}$\,$\mbox{]}, size\+\_\+t count, \+::std\+::ostream $\ast$os) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} void \mbox{\hyperlink{namespacetesting_1_1internal_a8b53e46cea3f8bdfc9342057c4f6ba62}{testing\+::internal\+::\+Print\+String\+To}} (const \+::std\+::string \&s, \+::std\+::ostream $\ast$os) +\item +void \mbox{\hyperlink{namespacetesting_1_1internal_af59b4f5d83276cd807c45063b14bad44}{testing\+::internal\+::\+Print\+To}} (const \+::std\+::string \&s, \+::std\+::ostream $\ast$os) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} void \mbox{\hyperlink{namespacetesting_1_1internal_ae38089f9d4093cb7cf93396251fd2d66}{testing\+::internal\+::\+Print\+Wide\+String\+To}} (const \+::std\+::wstring \&s, \+::std\+::ostream $\ast$os) +\item +void \mbox{\hyperlink{namespacetesting_1_1internal_a8d5be499966aeff68d4690db7d57f38a}{testing\+::internal\+::\+Print\+To}} (const \+::std\+::wstring \&s, \+::std\+::ostream $\ast$os) +\item +void \mbox{\hyperlink{namespacetesting_1_1internal_a76f564cf23190dbd5c9e088defdd092b}{testing\+::internal\+::\+Print\+To}} (std\+::nullptr\+\_\+t, \+::std\+::ostream $\ast$os) +\item +{\footnotesize template$<$typename T $>$ }\\void \mbox{\hyperlink{namespacetesting_1_1internal_a5587d09db034bc597870ae86bd8c01f8}{testing\+::internal\+::\+Print\+To}} (std\+::reference\+\_\+wrapper$<$ T $>$ ref, \+::std\+::ostream $\ast$os) +\item +{\footnotesize template$<$typename T $>$ }\\void \mbox{\hyperlink{namespacetesting_1_1internal_a7174fbf5d6ba458afae675022c9aae1e}{testing\+::internal\+::\+Print\+Tuple\+To}} (const T \&, std\+::integral\+\_\+constant$<$ size\+\_\+t, 0 $>$, \+::std\+::ostream $\ast$) +\item +{\footnotesize template$<$typename T , size\+\_\+t I$>$ }\\void \mbox{\hyperlink{namespacetesting_1_1internal_a3580971ab4571dc9a00f4ed0e17fd777}{testing\+::internal\+::\+Print\+Tuple\+To}} (const T \&t, std\+::integral\+\_\+constant$<$ size\+\_\+t, I $>$, \+::std\+::ostream $\ast$os) +\item +{\footnotesize template$<$typename... Types$>$ }\\void \mbox{\hyperlink{namespacetesting_1_1internal_a5628347cba9a345f56087fdb70930fc8}{testing\+::internal\+::\+Print\+To}} (const \+::std\+::tuple$<$ Types... $>$ \&t, \+::std\+::ostream $\ast$os) +\item +{\footnotesize template$<$typename T1 , typename T2 $>$ }\\void \mbox{\hyperlink{namespacetesting_1_1internal_af2c33928facbf2edf7af564278724d98}{testing\+::internal\+::\+Print\+To}} (const \+::std\+::pair$<$ T1, T2 $>$ \&value, \+::std\+::ostream $\ast$os) +\item +{\footnotesize template$<$typename T $>$ }\\void \mbox{\hyperlink{namespacetesting_1_1internal_ad79d71c3110f8eb24ab352d68f29436a}{testing\+::internal\+::\+Universal\+Print\+Array}} (const T $\ast$begin, size\+\_\+t len, \+::std\+::ostream $\ast$os) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} void \mbox{\hyperlink{namespacetesting_1_1internal_a72c997dbd2c562110b2cb56c359decfa}{testing\+::internal\+::\+Universal\+Print\+Array}} (const char $\ast$begin, size\+\_\+t len, \+::std\+::ostream $\ast$os) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} void \mbox{\hyperlink{namespacetesting_1_1internal_ae31e146c35fd75afc6a9cc73ae2692d1}{testing\+::internal\+::\+Universal\+Print\+Array}} (const wchar\+\_\+t $\ast$begin, size\+\_\+t len, \+::std\+::ostream $\ast$os) +\item +{\footnotesize template$<$typename T $>$ }\\void \mbox{\hyperlink{namespacetesting_1_1internal_afa92f5a284929dc3723e654a25feb7b9}{testing\+::internal\+::\+Universal\+Terse\+Print}} (const T \&value, \+::std\+::ostream $\ast$os) +\item +{\footnotesize template$<$typename Tuple $>$ }\\void \mbox{\hyperlink{namespacetesting_1_1internal_a6300aa1440d0019cf08d9a1f6efd4382}{testing\+::internal\+::\+Terse\+Print\+Prefix\+To\+Strings}} (const Tuple \&, std\+::integral\+\_\+constant$<$ size\+\_\+t, 0 $>$, Strings $\ast$) +\item +{\footnotesize template$<$typename Tuple , size\+\_\+t I$>$ }\\void \mbox{\hyperlink{namespacetesting_1_1internal_ab244273c02742a3fac45cc241befc536}{testing\+::internal\+::\+Terse\+Print\+Prefix\+To\+Strings}} (const Tuple \&t, std\+::integral\+\_\+constant$<$ size\+\_\+t, I $>$, Strings $\ast$strings) +\item +{\footnotesize template$<$typename Tuple $>$ }\\Strings \mbox{\hyperlink{namespacetesting_1_1internal_a7e60d1478b074801c766eeee9be6c772}{testing\+::internal\+::\+Universal\+Terse\+Print\+Tuple\+Fields\+To\+Strings}} (const Tuple \&value) +\item +\mbox{\hyperlink{namespacetesting_a37b7e87f0a5f502c6918f37d1768c1f3}{testing\+::\+G\+T\+E\+S\+T\+\_\+\+D\+E\+C\+L\+A\+R\+E\+\_\+string\+\_\+}} (death\+\_\+test\+\_\+style) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} void \mbox{\hyperlink{namespacetesting_1_1internal_a5d3e97443d23bf1824f87feb172efd39}{testing\+::internal\+::\+Report\+Invalid\+Test\+Suite\+Type}} (const char $\ast$test\+\_\+suite\+\_\+name, Code\+Location code\+\_\+location) +\item +{\footnotesize template$<$class Param\+Type $>$ }\\std\+::string \mbox{\hyperlink{namespacetesting_1_1internal_a954ec4a8a932dac7743e77e459ffefdc}{testing\+::internal\+::\+Default\+Param\+Name}} (const Test\+Param\+Info$<$ Param\+Type $>$ \&info) +\item +{\footnotesize template$<$class Param\+Type , class Param\+Name\+Gen\+Functor $>$ }\\Param\+Name\+Gen\+Functor \mbox{\hyperlink{namespacetesting_1_1internal_abc0f0626877188afba6ad122d502f088}{testing\+::internal\+::\+Get\+Param\+Name\+Gen}} (Param\+Name\+Gen\+Functor func) +\item +{\footnotesize template$<$class Param\+Type $>$ }\\Param\+Name\+Gen\+Func$<$ Param\+Type $>$\+::Type $\ast$ \mbox{\hyperlink{namespacetesting_1_1internal_a27d6ea7d401e877cb0fbddf4206ebbe4}{testing\+::internal\+::\+Get\+Param\+Name\+Gen}} () +\item +{\footnotesize template$<$class Container $>$ }\\internal\+::\+Param\+Generator$<$ typename Container\+::value\+\_\+type $>$ \mbox{\hyperlink{namespacetesting_aa67d0c8470c5f69fcfcacc9e775fa982}{testing\+::\+Values\+In}} (const Container \&container) +\item +{\footnotesize template$<$typename T , typename IncrementT $>$ }\\internal\+::\+Param\+Generator$<$ T $>$ \mbox{\hyperlink{namespacetesting_a265ed70a86cf2d6641582c45ad9529e2}{testing\+::\+Range}} (T start, T end, IncrementT step) +\item +{\footnotesize template$<$typename T $>$ }\\internal\+::\+Param\+Generator$<$ T $>$ \mbox{\hyperlink{namespacetesting_a56a45f85a1238dfc92e6fca03eb3a2e4}{testing\+::\+Range}} (T start, T end) +\item +{\footnotesize template$<$typename Forward\+Iterator $>$ }\\internal\+::\+Param\+Generator$<$ typename \+::\mbox{\hyperlink{structtesting_1_1internal_1_1_iterator_traits}{testing\+::internal\+::\+Iterator\+Traits}}$<$ Forward\+Iterator $>$\+::value\+\_\+type $>$ \mbox{\hyperlink{namespacetesting_a96240380ae4d3b4855d07de3b84fb336}{testing\+::\+Values\+In}} (Forward\+Iterator begin, Forward\+Iterator end) +\item +{\footnotesize template$<$typename T , size\+\_\+t N$>$ }\\internal\+::\+Param\+Generator$<$ T $>$ \mbox{\hyperlink{namespacetesting_a0b9ea6594ac06ad5d9eba2511ffa0fb7}{testing\+::\+Values\+In}} (const T(\&array)\mbox{[}N\mbox{]}) +\item +{\footnotesize template$<$typename... T$>$ }\\internal\+::\+Value\+Array$<$ T... $>$ \mbox{\hyperlink{namespacetesting_a374d4e5fbb4c938058fbe81d4c7ff6a6}{testing\+::\+Values}} (T... v) +\item +internal\+::\+Param\+Generator$<$ bool $>$ \mbox{\hyperlink{namespacetesting_aa9f9150ed43f949c8a6bacf3f04c03ce}{testing\+::\+Bool}} () +\item +{\footnotesize template$<$typename Generator1 , typename Generator2 $>$ }\\internal\+::\+Cartesian\+Product\+Holder2$<$ Generator1, Generator2 $>$ \mbox{\hyperlink{namespacetesting_a4917922963bacef3e301e67366c41df3}{testing\+::\+Combine}} (const Generator1 \&g1, const Generator2 \&g2) +\item +{\footnotesize template$<$typename Generator1 , typename Generator2 , typename Generator3 $>$ }\\internal\+::\+Cartesian\+Product\+Holder3$<$ Generator1, Generator2, Generator3 $>$ \mbox{\hyperlink{namespacetesting_a77b89180fd846e275236409d9704eda2}{testing\+::\+Combine}} (const Generator1 \&g1, const Generator2 \&g2, const Generator3 \&g3) +\item +{\footnotesize template$<$typename Generator1 , typename Generator2 , typename Generator3 , typename Generator4 $>$ }\\internal\+::\+Cartesian\+Product\+Holder4$<$ Generator1, Generator2, Generator3, Generator4 $>$ \mbox{\hyperlink{namespacetesting_abf420810fcd8190a98c2927862805a3f}{testing\+::\+Combine}} (const Generator1 \&g1, const Generator2 \&g2, const Generator3 \&g3, const Generator4 \&g4) +\item +{\footnotesize template$<$typename Generator1 , typename Generator2 , typename Generator3 , typename Generator4 , typename Generator5 $>$ }\\internal\+::\+Cartesian\+Product\+Holder5$<$ Generator1, Generator2, Generator3, Generator4, Generator5 $>$ \mbox{\hyperlink{namespacetesting_a81505186d64f5b5763a0e268bc2e5650}{testing\+::\+Combine}} (const Generator1 \&g1, const Generator2 \&g2, const Generator3 \&g3, const Generator4 \&g4, const Generator5 \&g5) +\item +{\footnotesize template$<$typename Generator1 , typename Generator2 , typename Generator3 , typename Generator4 , typename Generator5 , typename Generator6 $>$ }\\internal\+::\+Cartesian\+Product\+Holder6$<$ Generator1, Generator2, Generator3, Generator4, Generator5, Generator6 $>$ \mbox{\hyperlink{namespacetesting_adccda33f9b3ad18896cb341979fe12b4}{testing\+::\+Combine}} (const Generator1 \&g1, const Generator2 \&g2, const Generator3 \&g3, const Generator4 \&g4, const Generator5 \&g5, const Generator6 \&g6) +\item +{\footnotesize template$<$typename Generator1 , typename Generator2 , typename Generator3 , typename Generator4 , typename Generator5 , typename Generator6 , typename Generator7 $>$ }\\internal\+::\+Cartesian\+Product\+Holder7$<$ Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7 $>$ \mbox{\hyperlink{namespacetesting_a314759a93c251ca78b75c7f3ae8eda80}{testing\+::\+Combine}} (const Generator1 \&g1, const Generator2 \&g2, const Generator3 \&g3, const Generator4 \&g4, const Generator5 \&g5, const Generator6 \&g6, const Generator7 \&g7) +\item +{\footnotesize template$<$typename Generator1 , typename Generator2 , typename Generator3 , typename Generator4 , typename Generator5 , typename Generator6 , typename Generator7 , typename Generator8 $>$ }\\internal\+::\+Cartesian\+Product\+Holder8$<$ Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8 $>$ \mbox{\hyperlink{namespacetesting_ac5508abb9d05e22332c792d101c13b2b}{testing\+::\+Combine}} (const Generator1 \&g1, const Generator2 \&g2, const Generator3 \&g3, const Generator4 \&g4, const Generator5 \&g5, const Generator6 \&g6, const Generator7 \&g7, const Generator8 \&g8) +\item +{\footnotesize template$<$typename Generator1 , typename Generator2 , typename Generator3 , typename Generator4 , typename Generator5 , typename Generator6 , typename Generator7 , typename Generator8 , typename Generator9 $>$ }\\internal\+::\+Cartesian\+Product\+Holder9$<$ Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8, Generator9 $>$ \mbox{\hyperlink{namespacetesting_a928ed7d1e8dd1dde0da5d7d3838384d2}{testing\+::\+Combine}} (const Generator1 \&g1, const Generator2 \&g2, const Generator3 \&g3, const Generator4 \&g4, const Generator5 \&g5, const Generator6 \&g6, const Generator7 \&g7, const Generator8 \&g8, const Generator9 \&g9) +\item +{\footnotesize template$<$typename Generator1 , typename Generator2 , typename Generator3 , typename Generator4 , typename Generator5 , typename Generator6 , typename Generator7 , typename Generator8 , typename Generator9 , typename Generator10 $>$ }\\internal\+::\+Cartesian\+Product\+Holder10$<$ Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8, Generator9, Generator10 $>$ \mbox{\hyperlink{namespacetesting_a0590cd15c5bafaea9f5d2b1061e0a28b}{testing\+::\+Combine}} (const Generator1 \&g1, const Generator2 \&g2, const Generator3 \&g3, const Generator4 \&g4, const Generator5 \&g5, const Generator6 \&g6, const Generator7 \&g7, const Generator8 \&g8, const Generator9 \&g9, const Generator10 \&g10) +\item +{\footnotesize template$<$typename Pred , typename T1 $>$ }\\Assertion\+Result \mbox{\hyperlink{namespacetesting_a7f73180474723be6e92185d6fa9e7c9f}{testing\+::\+Assert\+Pred1\+Helper}} (const char $\ast$pred\+\_\+text, const char $\ast$e1, Pred pred, const T1 \&v1) +\item +{\footnotesize template$<$typename Pred , typename T1 , typename T2 $>$ }\\Assertion\+Result \mbox{\hyperlink{namespacetesting_aa6587938029dd8733ecb885068f08247}{testing\+::\+Assert\+Pred2\+Helper}} (const char $\ast$pred\+\_\+text, const char $\ast$e1, const char $\ast$e2, Pred pred, const T1 \&v1, const T2 \&v2) +\item +{\footnotesize template$<$typename Pred , typename T1 , typename T2 , typename T3 $>$ }\\Assertion\+Result \mbox{\hyperlink{namespacetesting_ac92dcbd00a0ffb2913e65d286e321a22}{testing\+::\+Assert\+Pred3\+Helper}} (const char $\ast$pred\+\_\+text, const char $\ast$e1, const char $\ast$e2, const char $\ast$e3, Pred pred, const T1 \&v1, const T2 \&v2, const T3 \&v3) +\item +{\footnotesize template$<$typename Pred , typename T1 , typename T2 , typename T3 , typename T4 $>$ }\\Assertion\+Result \mbox{\hyperlink{namespacetesting_ae90c778d69db4682e8fd8baaa0a9f9cd}{testing\+::\+Assert\+Pred4\+Helper}} (const char $\ast$pred\+\_\+text, const char $\ast$e1, const char $\ast$e2, const char $\ast$e3, const char $\ast$e4, Pred pred, const T1 \&v1, const T2 \&v2, const T3 \&v3, const T4 \&v4) +\item +{\footnotesize template$<$typename Pred , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 $>$ }\\Assertion\+Result \mbox{\hyperlink{namespacetesting_addcf52b273ce17269cbf4956cfe600a6}{testing\+::\+Assert\+Pred5\+Helper}} (const char $\ast$pred\+\_\+text, const char $\ast$e1, const char $\ast$e2, const char $\ast$e3, const char $\ast$e4, const char $\ast$e5, Pred pred, const T1 \&v1, const T2 \&v2, const T3 \&v3, const T4 \&v4, const T5 \&v5) +\item +Environment $\ast$ \mbox{\hyperlink{namespacetesting_a460d7b998622e332392c1e00be3a60d5}{testing\+::\+Add\+Global\+Test\+Environment}} (Environment $\ast$env) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} void \mbox{\hyperlink{namespacetesting_aee3f6f99df893f576f705f66c0559482}{testing\+::\+Init\+Google\+Test}} (int $\ast$argc, char $\ast$$\ast$argv) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} void \mbox{\hyperlink{namespacetesting_a6e9d83553f1d10818d698d45689d8adb}{testing\+::\+Init\+Google\+Test}} (int $\ast$argc, wchar\+\_\+t $\ast$$\ast$argv) +\item +{\footnotesize template$<$typename T1 , typename T2 $>$ }\\Assertion\+Result \mbox{\hyperlink{namespacetesting_1_1internal_a1def8ec9393360a1b34a20528703e7f7}{testing\+::internal\+::\+Cmp\+Helper\+E\+Q\+Failure}} (const char $\ast$lhs\+\_\+expression, const char $\ast$rhs\+\_\+expression, const T1 \&lhs, const T2 \&rhs) +\item +bool \mbox{\hyperlink{namespacetesting_1_1internal_a5e3e473798de3189e9343132bcfd4fea}{testing\+::internal\+::operator==}} (faketype, faketype) +\item +bool \mbox{\hyperlink{namespacetesting_1_1internal_afa44fdec84edfc155ef63e4f0d4287cc}{testing\+::internal\+::operator!=}} (faketype, faketype) +\item +{\footnotesize template$<$typename T1 , typename T2 $>$ }\\Assertion\+Result \mbox{\hyperlink{namespacetesting_1_1internal_a4638c74d9b32e971f9b321af6fafc2f1}{testing\+::internal\+::\+Cmp\+Helper\+EQ}} (const char $\ast$lhs\+\_\+expression, const char $\ast$rhs\+\_\+expression, const T1 \&lhs, const T2 \&rhs) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result \mbox{\hyperlink{namespacetesting_1_1internal_a1edf90480571c0659a39d13e3777d9ce}{testing\+::internal\+::\+Cmp\+Helper\+EQ}} (const char $\ast$lhs\+\_\+expression, const char $\ast$rhs\+\_\+expression, Biggest\+Int lhs, Biggest\+Int rhs) +\item +{\footnotesize template$<$typename T1 , typename T2 $>$ }\\Assertion\+Result \mbox{\hyperlink{namespacetesting_1_1internal_a894ffccd936d78fd555f490020c27f0a}{testing\+::internal\+::\+Cmp\+Helper\+Op\+Failure}} (const char $\ast$expr1, const char $\ast$expr2, const T1 \&val1, const T2 \&val2, const char $\ast$op) +\item +\mbox{\hyperlink{namespacetesting_1_1internal_aa14e3caa94126d7fb8e06bfb3d24ae4a}{testing\+::internal\+::\+G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+C\+M\+P\+\_\+\+H\+E\+L\+P\+E\+R\+\_\+}} (NE, !=) +\item +\mbox{\hyperlink{namespacetesting_1_1internal_ade60646b18728043fff84d7b4125de2c}{testing\+::internal\+::\+G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+C\+M\+P\+\_\+\+H\+E\+L\+P\+E\+R\+\_\+}} (LE,$<$=) +\item +\mbox{\hyperlink{namespacetesting_1_1internal_aabcbff15eac496f8487699d19f42c274}{testing\+::internal\+::\+G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+C\+M\+P\+\_\+\+H\+E\+L\+P\+E\+R\+\_\+}} (LT,$<$) +\item +\mbox{\hyperlink{namespacetesting_1_1internal_af969886067930ce70f6405cd5aa8b06b}{testing\+::internal\+::\+G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+C\+M\+P\+\_\+\+H\+E\+L\+P\+E\+R\+\_\+}} (GE, $>$=) +\item +\mbox{\hyperlink{namespacetesting_1_1internal_a7fdb4fc164db83c51dfad17640bfeae9}{testing\+::internal\+::\+G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+C\+M\+P\+\_\+\+H\+E\+L\+P\+E\+R\+\_\+}} (GT, $>$) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result \mbox{\hyperlink{namespacetesting_1_1internal_a93eb9d61cac7faf1faff6301ae5f4a46}{testing\+::internal\+::\+Cmp\+Helper\+S\+T\+R\+EQ}} (const char $\ast$s1\+\_\+expression, const char $\ast$s2\+\_\+expression, const char $\ast$s1, const char $\ast$s2) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result \mbox{\hyperlink{namespacetesting_1_1internal_a00c3d012df6173622ef558a131bfb95d}{testing\+::internal\+::\+Cmp\+Helper\+S\+T\+R\+C\+A\+S\+E\+EQ}} (const char $\ast$s1\+\_\+expression, const char $\ast$s2\+\_\+expression, const char $\ast$s1, const char $\ast$s2) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result \mbox{\hyperlink{namespacetesting_1_1internal_a6b485231a046ff760844a0321c04870b}{testing\+::internal\+::\+Cmp\+Helper\+S\+T\+R\+NE}} (const char $\ast$s1\+\_\+expression, const char $\ast$s2\+\_\+expression, const char $\ast$s1, const char $\ast$s2) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result \mbox{\hyperlink{namespacetesting_1_1internal_a5f74b933606b0a742cd5a8ad2d7087e0}{testing\+::internal\+::\+Cmp\+Helper\+S\+T\+R\+C\+A\+S\+E\+NE}} (const char $\ast$s1\+\_\+expression, const char $\ast$s2\+\_\+expression, const char $\ast$s1, const char $\ast$s2) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result \mbox{\hyperlink{namespacetesting_1_1internal_ad40d557f9c157790160d6e4f2b0d9bab}{testing\+::internal\+::\+Cmp\+Helper\+S\+T\+R\+EQ}} (const char $\ast$s1\+\_\+expression, const char $\ast$s2\+\_\+expression, const wchar\+\_\+t $\ast$s1, const wchar\+\_\+t $\ast$s2) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result \mbox{\hyperlink{namespacetesting_1_1internal_a6e700804399b6694d8d6157e3a141b17}{testing\+::internal\+::\+Cmp\+Helper\+S\+T\+R\+NE}} (const char $\ast$s1\+\_\+expression, const char $\ast$s2\+\_\+expression, const wchar\+\_\+t $\ast$s1, const wchar\+\_\+t $\ast$s2) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result \mbox{\hyperlink{namespacetesting_a5c90a86562b2470213c07742e0eeb0fe}{testing\+::\+Is\+Substring}} (const char $\ast$needle\+\_\+expr, const char $\ast$haystack\+\_\+expr, const char $\ast$needle, const char $\ast$haystack) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result \mbox{\hyperlink{namespacetesting_a08ce65847491b27a38cbac3ac15e3035}{testing\+::\+Is\+Substring}} (const char $\ast$needle\+\_\+expr, const char $\ast$haystack\+\_\+expr, const wchar\+\_\+t $\ast$needle, const wchar\+\_\+t $\ast$haystack) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result \mbox{\hyperlink{namespacetesting_ab553b649b06ef2339cbd90f8dfa119f0}{testing\+::\+Is\+Not\+Substring}} (const char $\ast$needle\+\_\+expr, const char $\ast$haystack\+\_\+expr, const char $\ast$needle, const char $\ast$haystack) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result \mbox{\hyperlink{namespacetesting_a28868925c50d541c8568a540b6457e54}{testing\+::\+Is\+Not\+Substring}} (const char $\ast$needle\+\_\+expr, const char $\ast$haystack\+\_\+expr, const wchar\+\_\+t $\ast$needle, const wchar\+\_\+t $\ast$haystack) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result \mbox{\hyperlink{namespacetesting_a32718fab95b2833ab5ffc9cfc9f5c8b0}{testing\+::\+Is\+Substring}} (const char $\ast$needle\+\_\+expr, const char $\ast$haystack\+\_\+expr, const \+::std\+::string \&needle, const \+::std\+::string \&haystack) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result \mbox{\hyperlink{namespacetesting_a645d822e47dc64b9923e78c880807f12}{testing\+::\+Is\+Not\+Substring}} (const char $\ast$needle\+\_\+expr, const char $\ast$haystack\+\_\+expr, const \+::std\+::string \&needle, const \+::std\+::string \&haystack) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result \mbox{\hyperlink{namespacetesting_a2ff5c4d0c112d92b20232bd0cf173904}{testing\+::\+Is\+Substring}} (const char $\ast$needle\+\_\+expr, const char $\ast$haystack\+\_\+expr, const \+::std\+::wstring \&needle, const \+::std\+::wstring \&haystack) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result \mbox{\hyperlink{namespacetesting_a2205435db77abd191fb8209bba41862a}{testing\+::\+Is\+Not\+Substring}} (const char $\ast$needle\+\_\+expr, const char $\ast$haystack\+\_\+expr, const \+::std\+::wstring \&needle, const \+::std\+::wstring \&haystack) +\item +{\footnotesize template$<$typename Raw\+Type $>$ }\\Assertion\+Result \mbox{\hyperlink{namespacetesting_1_1internal_a98ce463e5dbe0c6120fa817e1f8f2944}{testing\+::internal\+::\+Cmp\+Helper\+Floating\+Point\+EQ}} (const char $\ast$lhs\+\_\+expression, const char $\ast$rhs\+\_\+expression, Raw\+Type lhs\+\_\+value, Raw\+Type rhs\+\_\+value) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result \mbox{\hyperlink{namespacetesting_1_1internal_aea60207c4cedc8946a70ada62e38da8f}{testing\+::internal\+::\+Double\+Near\+Pred\+Format}} (const char $\ast$expr1, const char $\ast$expr2, const char $\ast$abs\+\_\+error\+\_\+expr, double val1, double val2, double abs\+\_\+error) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} \mbox{\hyperlink{namespacetesting_1_1internal_a5fd9f88035bd7f38979a2b15aead2bab}{testing\+::internal\+::\+G\+T\+E\+S\+T\+\_\+\+A\+T\+T\+R\+I\+B\+U\+T\+E\+\_\+\+P\+R\+I\+N\+T\+F\+\_\+}} (2, 3) void Colored\+Printf(G\+Test\+Color color +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result \mbox{\hyperlink{namespacetesting_a69106491c2e7f50e50da0ce5e8ae4374}{testing\+::\+Float\+LE}} (const char $\ast$expr1, const char $\ast$expr2, float val1, float val2) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result \mbox{\hyperlink{namespacetesting_a84c020b981d0eb4eabfb0feda155aaaf}{testing\+::\+Double\+LE}} (const char $\ast$expr1, const char $\ast$expr2, double val1, double val2) +\item +{\footnotesize template$<$typename T1 , typename T2 $>$ }\\bool \mbox{\hyperlink{namespacetesting_a661e70fc6afeb5c085eed3716aa45059}{testing\+::\+Static\+Assert\+Type\+Eq}} () +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} std\+::string \mbox{\hyperlink{namespacetesting_abcf5181cecc3c07915dceb3de46ab07f}{testing\+::\+Temp\+Dir}} () +\item +{\footnotesize template$<$int \&... Explicit\+Parameter\+Barrier, typename Factory $>$ }\\Test\+Info $\ast$ \mbox{\hyperlink{namespacetesting_a302c84bdc88f2138696da2a4756b6466}{testing\+::\+Register\+Test}} (const char $\ast$test\+\_\+suite\+\_\+name, const char $\ast$test\+\_\+name, const char $\ast$type\+\_\+param, const char $\ast$value\+\_\+param, const char $\ast$file, int line, Factory factory) +\item +int \mbox{\hyperlink{gtest_8h_a853a3792807489591d3d4a2f2ff9359f}{R\+U\+N\+\_\+\+A\+L\+L\+\_\+\+T\+E\+S\+TS}} () \mbox{\hyperlink{gtest_8h_a8e5aab8276b2645f64f41c9e3021b935}{G\+T\+E\+S\+T\+\_\+\+M\+U\+S\+T\+\_\+\+U\+S\+E\+\_\+\+R\+E\+S\+U\+L\+T\+\_\+}} +\end{DoxyCompactItemize} +\subsection*{Variables} +\begin{DoxyCompactItemize} +\item +const Biggest\+Int \mbox{\hyperlink{namespacetesting_1_1internal_ad901880198832bc166d2493096b451f7}{testing\+::internal\+::k\+Max\+Biggest\+Int}} +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} const char \mbox{\hyperlink{namespacetesting_1_1internal_a999c7ef9ff01b6d2d76669372c444aa3}{testing\+::internal\+::k\+Stack\+Trace\+Marker}} \mbox{[}$\,$\mbox{]} +\item +const size\+\_\+t \mbox{\hyperlink{namespacetesting_1_1internal2_a140c8efd51e63a3def98445bff107518}{testing\+::internal2\+::k\+Protobuf\+One\+Liner\+Max\+Length}} = 50 +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} const char $\ast$ \mbox{\hyperlink{namespacetesting_1_1internal_a40b2a93ff318f5975eb8246b01221ce8}{testing\+::internal\+::fmt}} +\item +class \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} \mbox{\hyperlink{classtesting_1_1_scoped_trace}{testing\+::\+Scoped\+Trace}} \mbox{\hyperlink{namespacetesting_aa09221196f0a830d5bf1c63ffce69dc3}{testing\+::\+G\+T\+E\+S\+T\+\_\+\+A\+T\+T\+R\+I\+B\+U\+T\+E\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+}} +\end{DoxyCompactItemize} + + +\subsection{Macro Definition Documentation} +\mbox{\Hypertarget{gtest_8h_adc16b5b0a740c39084ea5c9e960e3063}\label{gtest_8h_adc16b5b0a740c39084ea5c9e960e3063}} +\index{gtest.\+h@{gtest.\+h}!A\+D\+D\+\_\+\+F\+A\+I\+L\+U\+RE@{A\+D\+D\+\_\+\+F\+A\+I\+L\+U\+RE}} +\index{A\+D\+D\+\_\+\+F\+A\+I\+L\+U\+RE@{A\+D\+D\+\_\+\+F\+A\+I\+L\+U\+RE}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{A\+D\+D\+\_\+\+F\+A\+I\+L\+U\+RE}{ADD\_FAILURE}} +{\footnotesize\ttfamily \#define A\+D\+D\+\_\+\+F\+A\+I\+L\+U\+RE(\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_a6cb7482cfa03661a91c698eb5895f642}{G\+T\+E\+S\+T\+\_\+\+N\+O\+N\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}}(\char`\"{}Failed\char`\"{})} + + + +Definition at line 16533 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a448d7e5105b640e892fd8153fbee0b7f}\label{gtest_8h_a448d7e5105b640e892fd8153fbee0b7f}} +\index{gtest.\+h@{gtest.\+h}!A\+D\+D\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+\+AT@{A\+D\+D\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+\+AT}} +\index{A\+D\+D\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+\+AT@{A\+D\+D\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+\+AT}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{A\+D\+D\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+\+AT}{ADD\_FAILURE\_AT}} +{\footnotesize\ttfamily \#define A\+D\+D\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+\+AT(\begin{DoxyParamCaption}\item[{}]{file, }\item[{}]{line }\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode} +\mbox{\hyperlink{gtest_8h_a8d70025c45a47a493780746dfd66d565}{GTEST\_MESSAGE\_AT\_}}(file, line, \textcolor{stringliteral}{"Failed"}, \(\backslash\) + ::testing::TestPartResult::kNonFatalFailure) +\end{DoxyCode} + + +Definition at line 16537 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_affadeef9379fe5aabf6f28d9eab9d3c0}\label{gtest_8h_affadeef9379fe5aabf6f28d9eab9d3c0}} +\index{gtest.\+h@{gtest.\+h}!A\+S\+S\+E\+R\+T\+\_\+\+A\+N\+Y\+\_\+\+T\+H\+R\+OW@{A\+S\+S\+E\+R\+T\+\_\+\+A\+N\+Y\+\_\+\+T\+H\+R\+OW}} +\index{A\+S\+S\+E\+R\+T\+\_\+\+A\+N\+Y\+\_\+\+T\+H\+R\+OW@{A\+S\+S\+E\+R\+T\+\_\+\+A\+N\+Y\+\_\+\+T\+H\+R\+OW}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{A\+S\+S\+E\+R\+T\+\_\+\+A\+N\+Y\+\_\+\+T\+H\+R\+OW}{ASSERT\_ANY\_THROW}} +{\footnotesize\ttfamily \#define A\+S\+S\+E\+R\+T\+\_\+\+A\+N\+Y\+\_\+\+T\+H\+R\+OW(\begin{DoxyParamCaption}\item[{}]{statement }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_af48bbd26d54d4afc5e4cef39b1c76ba3}{G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+A\+N\+Y\+\_\+\+T\+H\+R\+O\+W\+\_\+}}(statement, \mbox{\hyperlink{gtest_8h_a0f9a4c3ea82cc7bf4478eaffdc168358}{G\+T\+E\+S\+T\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}})} + + + +Definition at line 16578 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_ab2f0f25b46353767179a49ebd15b7345}\label{gtest_8h_ab2f0f25b46353767179a49ebd15b7345}} +\index{gtest.\+h@{gtest.\+h}!A\+S\+S\+E\+R\+T\+\_\+\+D\+E\+A\+T\+H\+\_\+\+I\+F\+\_\+\+S\+U\+P\+P\+O\+R\+T\+ED@{A\+S\+S\+E\+R\+T\+\_\+\+D\+E\+A\+T\+H\+\_\+\+I\+F\+\_\+\+S\+U\+P\+P\+O\+R\+T\+ED}} +\index{A\+S\+S\+E\+R\+T\+\_\+\+D\+E\+A\+T\+H\+\_\+\+I\+F\+\_\+\+S\+U\+P\+P\+O\+R\+T\+ED@{A\+S\+S\+E\+R\+T\+\_\+\+D\+E\+A\+T\+H\+\_\+\+I\+F\+\_\+\+S\+U\+P\+P\+O\+R\+T\+ED}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{A\+S\+S\+E\+R\+T\+\_\+\+D\+E\+A\+T\+H\+\_\+\+I\+F\+\_\+\+S\+U\+P\+P\+O\+R\+T\+ED}{ASSERT\_DEATH\_IF\_SUPPORTED}} +{\footnotesize\ttfamily \#define A\+S\+S\+E\+R\+T\+\_\+\+D\+E\+A\+T\+H\+\_\+\+I\+F\+\_\+\+S\+U\+P\+P\+O\+R\+T\+ED(\begin{DoxyParamCaption}\item[{}]{statement, }\item[{}]{regex }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_aa5f42ab29859b7f49a901770d2e66855}{G\+T\+E\+S\+T\+\_\+\+U\+N\+S\+U\+P\+P\+O\+R\+T\+E\+D\+\_\+\+D\+E\+A\+T\+H\+\_\+\+T\+E\+ST}}(statement, regex, return)} + + + +Definition at line 10354 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a6617da62e5ae5490995a3bfca1f331a9}\label{gtest_8h_a6617da62e5ae5490995a3bfca1f331a9}} +\index{gtest.\+h@{gtest.\+h}!A\+S\+S\+E\+R\+T\+\_\+\+D\+O\+U\+B\+L\+E\+\_\+\+EQ@{A\+S\+S\+E\+R\+T\+\_\+\+D\+O\+U\+B\+L\+E\+\_\+\+EQ}} +\index{A\+S\+S\+E\+R\+T\+\_\+\+D\+O\+U\+B\+L\+E\+\_\+\+EQ@{A\+S\+S\+E\+R\+T\+\_\+\+D\+O\+U\+B\+L\+E\+\_\+\+EQ}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{A\+S\+S\+E\+R\+T\+\_\+\+D\+O\+U\+B\+L\+E\+\_\+\+EQ}{ASSERT\_DOUBLE\_EQ}} +{\footnotesize\ttfamily \#define A\+S\+S\+E\+R\+T\+\_\+\+D\+O\+U\+B\+L\+E\+\_\+\+EQ(\begin{DoxyParamCaption}\item[{}]{val1, }\item[{}]{val2 }\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode} +\mbox{\hyperlink{gtest_8h_ac452685a1a98ea3d96eb956a062ee210}{ASSERT\_PRED\_FORMAT2}}(::testing::internal::CmpHelperFloatingPointEQ, \(\backslash\) + val1, val2) +\end{DoxyCode} + + +Definition at line 16760 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a1a6db8b1338ee7040329322b77779086}\label{gtest_8h_a1a6db8b1338ee7040329322b77779086}} +\index{gtest.\+h@{gtest.\+h}!A\+S\+S\+E\+R\+T\+\_\+\+EQ@{A\+S\+S\+E\+R\+T\+\_\+\+EQ}} +\index{A\+S\+S\+E\+R\+T\+\_\+\+EQ@{A\+S\+S\+E\+R\+T\+\_\+\+EQ}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{A\+S\+S\+E\+R\+T\+\_\+\+EQ}{ASSERT\_EQ}} +{\footnotesize\ttfamily \#define A\+S\+S\+E\+R\+T\+\_\+\+EQ(\begin{DoxyParamCaption}\item[{}]{val1, }\item[{}]{val2 }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_a8a7a47387090810cdfe78933d348182d}{G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+\+EQ}}(val1, val2)} + + + +Definition at line 16677 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a8197fa52f3538588d20d8af4834c9003}\label{gtest_8h_a8197fa52f3538588d20d8af4834c9003}} +\index{gtest.\+h@{gtest.\+h}!A\+S\+S\+E\+R\+T\+\_\+\+F\+A\+L\+SE@{A\+S\+S\+E\+R\+T\+\_\+\+F\+A\+L\+SE}} +\index{A\+S\+S\+E\+R\+T\+\_\+\+F\+A\+L\+SE@{A\+S\+S\+E\+R\+T\+\_\+\+F\+A\+L\+SE}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{A\+S\+S\+E\+R\+T\+\_\+\+F\+A\+L\+SE}{ASSERT\_FALSE}} +{\footnotesize\ttfamily \#define A\+S\+S\+E\+R\+T\+\_\+\+F\+A\+L\+SE(\begin{DoxyParamCaption}\item[{}]{condition }\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode} +\mbox{\hyperlink{gtest_8h_ae8912365e1d00a7a2bd248268c64aa1a}{GTEST\_TEST\_BOOLEAN\_}}(!(condition), #condition, \textcolor{keyword}{true}, \textcolor{keyword}{false}, \(\backslash\) + \mbox{\hyperlink{gtest_8h_a0f9a4c3ea82cc7bf4478eaffdc168358}{GTEST\_FATAL\_FAILURE\_}}) +\end{DoxyCode} + + +Definition at line 16593 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a4663ffbf844baa54bdb29f9148fd0f96}\label{gtest_8h_a4663ffbf844baa54bdb29f9148fd0f96}} +\index{gtest.\+h@{gtest.\+h}!A\+S\+S\+E\+R\+T\+\_\+\+F\+L\+O\+A\+T\+\_\+\+EQ@{A\+S\+S\+E\+R\+T\+\_\+\+F\+L\+O\+A\+T\+\_\+\+EQ}} +\index{A\+S\+S\+E\+R\+T\+\_\+\+F\+L\+O\+A\+T\+\_\+\+EQ@{A\+S\+S\+E\+R\+T\+\_\+\+F\+L\+O\+A\+T\+\_\+\+EQ}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{A\+S\+S\+E\+R\+T\+\_\+\+F\+L\+O\+A\+T\+\_\+\+EQ}{ASSERT\_FLOAT\_EQ}} +{\footnotesize\ttfamily \#define A\+S\+S\+E\+R\+T\+\_\+\+F\+L\+O\+A\+T\+\_\+\+EQ(\begin{DoxyParamCaption}\item[{}]{val1, }\item[{}]{val2 }\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode} +\mbox{\hyperlink{gtest_8h_ac452685a1a98ea3d96eb956a062ee210}{ASSERT\_PRED\_FORMAT2}}(::testing::internal::CmpHelperFloatingPointEQ, \(\backslash\) + val1, val2) +\end{DoxyCode} + + +Definition at line 16756 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_af4ff5dc71479fcb374b6bc2ed195bcc4}\label{gtest_8h_af4ff5dc71479fcb374b6bc2ed195bcc4}} +\index{gtest.\+h@{gtest.\+h}!A\+S\+S\+E\+R\+T\+\_\+\+GE@{A\+S\+S\+E\+R\+T\+\_\+\+GE}} +\index{A\+S\+S\+E\+R\+T\+\_\+\+GE@{A\+S\+S\+E\+R\+T\+\_\+\+GE}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{A\+S\+S\+E\+R\+T\+\_\+\+GE}{ASSERT\_GE}} +{\footnotesize\ttfamily \#define A\+S\+S\+E\+R\+T\+\_\+\+GE(\begin{DoxyParamCaption}\item[{}]{val1, }\item[{}]{val2 }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_a55373d99c079ff1b894e2eb5bcd15c5a}{G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+\+GE}}(val1, val2)} + + + +Definition at line 16693 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a16a882d4eafc9f8643867aea40879140}\label{gtest_8h_a16a882d4eafc9f8643867aea40879140}} +\index{gtest.\+h@{gtest.\+h}!A\+S\+S\+E\+R\+T\+\_\+\+GT@{A\+S\+S\+E\+R\+T\+\_\+\+GT}} +\index{A\+S\+S\+E\+R\+T\+\_\+\+GT@{A\+S\+S\+E\+R\+T\+\_\+\+GT}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{A\+S\+S\+E\+R\+T\+\_\+\+GT}{ASSERT\_GT}} +{\footnotesize\ttfamily \#define A\+S\+S\+E\+R\+T\+\_\+\+GT(\begin{DoxyParamCaption}\item[{}]{val1, }\item[{}]{val2 }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_a088b9056fd1c1f316b41c22f64deb33a}{G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+\+GT}}(val1, val2)} + + + +Definition at line 16697 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a775643748feff0b490aae651d041e971}\label{gtest_8h_a775643748feff0b490aae651d041e971}} +\index{gtest.\+h@{gtest.\+h}!A\+S\+S\+E\+R\+T\+\_\+\+LE@{A\+S\+S\+E\+R\+T\+\_\+\+LE}} +\index{A\+S\+S\+E\+R\+T\+\_\+\+LE@{A\+S\+S\+E\+R\+T\+\_\+\+LE}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{A\+S\+S\+E\+R\+T\+\_\+\+LE}{ASSERT\_LE}} +{\footnotesize\ttfamily \#define A\+S\+S\+E\+R\+T\+\_\+\+LE(\begin{DoxyParamCaption}\item[{}]{val1, }\item[{}]{val2 }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_abef04dcd4a0259d378de7b3b3ffb6730}{G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+\+LE}}(val1, val2)} + + + +Definition at line 16685 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_affc4f9cae4c3aabfe60fced83737b42c}\label{gtest_8h_affc4f9cae4c3aabfe60fced83737b42c}} +\index{gtest.\+h@{gtest.\+h}!A\+S\+S\+E\+R\+T\+\_\+\+LT@{A\+S\+S\+E\+R\+T\+\_\+\+LT}} +\index{A\+S\+S\+E\+R\+T\+\_\+\+LT@{A\+S\+S\+E\+R\+T\+\_\+\+LT}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{A\+S\+S\+E\+R\+T\+\_\+\+LT}{ASSERT\_LT}} +{\footnotesize\ttfamily \#define A\+S\+S\+E\+R\+T\+\_\+\+LT(\begin{DoxyParamCaption}\item[{}]{val1, }\item[{}]{val2 }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_a5a75667e637febd18e5f7d4f3abf55e8}{G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+\+LT}}(val1, val2)} + + + +Definition at line 16689 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_aa866c8dece57912e6f51495ed3e8d8d5}\label{gtest_8h_aa866c8dece57912e6f51495ed3e8d8d5}} +\index{gtest.\+h@{gtest.\+h}!A\+S\+S\+E\+R\+T\+\_\+\+NE@{A\+S\+S\+E\+R\+T\+\_\+\+NE}} +\index{A\+S\+S\+E\+R\+T\+\_\+\+NE@{A\+S\+S\+E\+R\+T\+\_\+\+NE}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{A\+S\+S\+E\+R\+T\+\_\+\+NE}{ASSERT\_NE}} +{\footnotesize\ttfamily \#define A\+S\+S\+E\+R\+T\+\_\+\+NE(\begin{DoxyParamCaption}\item[{}]{val1, }\item[{}]{val2 }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_a6fa9bb2b6731eba8f481e40e9e4931b3}{G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+\+NE}}(val1, val2)} + + + +Definition at line 16681 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a73cce6b752d204f91a36bef2f8e663b3}\label{gtest_8h_a73cce6b752d204f91a36bef2f8e663b3}} +\index{gtest.\+h@{gtest.\+h}!A\+S\+S\+E\+R\+T\+\_\+\+N\+E\+AR@{A\+S\+S\+E\+R\+T\+\_\+\+N\+E\+AR}} +\index{A\+S\+S\+E\+R\+T\+\_\+\+N\+E\+AR@{A\+S\+S\+E\+R\+T\+\_\+\+N\+E\+AR}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{A\+S\+S\+E\+R\+T\+\_\+\+N\+E\+AR}{ASSERT\_NEAR}} +{\footnotesize\ttfamily \#define A\+S\+S\+E\+R\+T\+\_\+\+N\+E\+AR(\begin{DoxyParamCaption}\item[{}]{val1, }\item[{}]{val2, }\item[{}]{abs\+\_\+error }\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode} +\mbox{\hyperlink{gtest_8h_a494e3b8dc22f4765f7e041f16c930e3d}{ASSERT\_PRED\_FORMAT3}}(::\mbox{\hyperlink{namespacetesting_1_1internal_aea60207c4cedc8946a70ada62e38da8f}{testing::internal::DoubleNearPredFormat}} + , \(\backslash\) + val1, val2, abs\_error) +\end{DoxyCode} + + +Definition at line 16768 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a5034fda3490aad5a93942ac83f4cea49}\label{gtest_8h_a5034fda3490aad5a93942ac83f4cea49}} +\index{gtest.\+h@{gtest.\+h}!A\+S\+S\+E\+R\+T\+\_\+\+N\+O\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+RE@{A\+S\+S\+E\+R\+T\+\_\+\+N\+O\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+RE}} +\index{A\+S\+S\+E\+R\+T\+\_\+\+N\+O\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+RE@{A\+S\+S\+E\+R\+T\+\_\+\+N\+O\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+RE}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{A\+S\+S\+E\+R\+T\+\_\+\+N\+O\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+RE}{ASSERT\_NO\_FATAL\_FAILURE}} +{\footnotesize\ttfamily \#define A\+S\+S\+E\+R\+T\+\_\+\+N\+O\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+RE(\begin{DoxyParamCaption}\item[{}]{statement }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_a1b37a3c446836d33040f3266a6236081}{G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+N\+O\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}}(statement, \mbox{\hyperlink{gtest_8h_a0f9a4c3ea82cc7bf4478eaffdc168358}{G\+T\+E\+S\+T\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}})} + + + +Definition at line 16820 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a895c34d9b192cdc2ba46d2680623485d}\label{gtest_8h_a895c34d9b192cdc2ba46d2680623485d}} +\index{gtest.\+h@{gtest.\+h}!A\+S\+S\+E\+R\+T\+\_\+\+N\+O\+\_\+\+T\+H\+R\+OW@{A\+S\+S\+E\+R\+T\+\_\+\+N\+O\+\_\+\+T\+H\+R\+OW}} +\index{A\+S\+S\+E\+R\+T\+\_\+\+N\+O\+\_\+\+T\+H\+R\+OW@{A\+S\+S\+E\+R\+T\+\_\+\+N\+O\+\_\+\+T\+H\+R\+OW}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{A\+S\+S\+E\+R\+T\+\_\+\+N\+O\+\_\+\+T\+H\+R\+OW}{ASSERT\_NO\_THROW}} +{\footnotesize\ttfamily \#define A\+S\+S\+E\+R\+T\+\_\+\+N\+O\+\_\+\+T\+H\+R\+OW(\begin{DoxyParamCaption}\item[{}]{statement }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_a9a109d026b5a904646437d7570e13581}{G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+N\+O\+\_\+\+T\+H\+R\+O\+W\+\_\+}}(statement, \mbox{\hyperlink{gtest_8h_a0f9a4c3ea82cc7bf4478eaffdc168358}{G\+T\+E\+S\+T\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}})} + + + +Definition at line 16576 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a7d72f779b7d39b8f73a563ebc6d0604b}\label{gtest_8h_a7d72f779b7d39b8f73a563ebc6d0604b}} +\index{gtest.\+h@{gtest.\+h}!A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D1@{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D1}} +\index{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D1@{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D1}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D1}{ASSERT\_PRED1}} +{\footnotesize\ttfamily \#define A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D1(\begin{DoxyParamCaption}\item[{}]{pred, }\item[{}]{v1 }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_ad44cf322952076d85305bbdf39769ac1}{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D1\+\_\+}}(pred, v1, \mbox{\hyperlink{gtest_8h_a0f9a4c3ea82cc7bf4478eaffdc168358}{G\+T\+E\+S\+T\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}})} + + + +Definition at line 14748 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a4e9b777cce4e5423f4c2e491be7aa818}\label{gtest_8h_a4e9b777cce4e5423f4c2e491be7aa818}} +\index{gtest.\+h@{gtest.\+h}!A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D2@{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D2}} +\index{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D2@{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D2}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D2}{ASSERT\_PRED2}} +{\footnotesize\ttfamily \#define A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D2(\begin{DoxyParamCaption}\item[{}]{pred, }\item[{}]{v1, }\item[{}]{v2 }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_ac560264104bd030b64034505d294a7b6}{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D2\+\_\+}}(pred, v1, v2, \mbox{\hyperlink{gtest_8h_a0f9a4c3ea82cc7bf4478eaffdc168358}{G\+T\+E\+S\+T\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}})} + + + +Definition at line 14797 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_aa7688f3ab9f09a2c1dbf13bd1f29d8fd}\label{gtest_8h_aa7688f3ab9f09a2c1dbf13bd1f29d8fd}} +\index{gtest.\+h@{gtest.\+h}!A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D3@{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D3}} +\index{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D3@{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D3}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D3}{ASSERT\_PRED3}} +{\footnotesize\ttfamily \#define A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D3(\begin{DoxyParamCaption}\item[{}]{pred, }\item[{}]{v1, }\item[{}]{v2, }\item[{}]{v3 }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_af30518f03233bc4486b55284b0827eb8}{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D3\+\_\+}}(pred, v1, v2, v3, \mbox{\hyperlink{gtest_8h_a0f9a4c3ea82cc7bf4478eaffdc168358}{G\+T\+E\+S\+T\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}})} + + + +Definition at line 14852 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_addc030c521775610e4619a01541a2167}\label{gtest_8h_addc030c521775610e4619a01541a2167}} +\index{gtest.\+h@{gtest.\+h}!A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D4@{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D4}} +\index{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D4@{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D4}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D4}{ASSERT\_PRED4}} +{\footnotesize\ttfamily \#define A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D4(\begin{DoxyParamCaption}\item[{}]{pred, }\item[{}]{v1, }\item[{}]{v2, }\item[{}]{v3, }\item[{}]{v4 }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_a14e8c70455104fac032efec097ef668b}{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D4\+\_\+}}(pred, v1, v2, v3, v4, \mbox{\hyperlink{gtest_8h_a0f9a4c3ea82cc7bf4478eaffdc168358}{G\+T\+E\+S\+T\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}})} + + + +Definition at line 14913 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_af8e510af2b4a14d90eef66ace17d1c30}\label{gtest_8h_af8e510af2b4a14d90eef66ace17d1c30}} +\index{gtest.\+h@{gtest.\+h}!A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D5@{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D5}} +\index{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D5@{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D5}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D5}{ASSERT\_PRED5}} +{\footnotesize\ttfamily \#define A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D5(\begin{DoxyParamCaption}\item[{}]{pred, }\item[{}]{v1, }\item[{}]{v2, }\item[{}]{v3, }\item[{}]{v4, }\item[{}]{v5 }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_a2c42692f7d910dc2fe57869883190e6c}{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D5\+\_\+}}(pred, v1, v2, v3, v4, v5, \mbox{\hyperlink{gtest_8h_a0f9a4c3ea82cc7bf4478eaffdc168358}{G\+T\+E\+S\+T\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}})} + + + +Definition at line 14980 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a3771ca0d1a72013aebc3d66e046491ed}\label{gtest_8h_a3771ca0d1a72013aebc3d66e046491ed}} +\index{gtest.\+h@{gtest.\+h}!A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T1@{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T1}} +\index{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T1@{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T1}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T1}{ASSERT\_PRED\_FORMAT1}} +{\footnotesize\ttfamily \#define A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T1(\begin{DoxyParamCaption}\item[{}]{pred\+\_\+format, }\item[{}]{v1 }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_aa3e3bfe04bb0e54d7f0e57e2f991d1eb}{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T1\+\_\+}}(pred\+\_\+format, v1, \mbox{\hyperlink{gtest_8h_a0f9a4c3ea82cc7bf4478eaffdc168358}{G\+T\+E\+S\+T\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}})} + + + +Definition at line 14746 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_ac452685a1a98ea3d96eb956a062ee210}\label{gtest_8h_ac452685a1a98ea3d96eb956a062ee210}} +\index{gtest.\+h@{gtest.\+h}!A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2@{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2}} +\index{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2@{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2}{ASSERT\_PRED\_FORMAT2}} +{\footnotesize\ttfamily \#define A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2(\begin{DoxyParamCaption}\item[{}]{pred\+\_\+format, }\item[{}]{v1, }\item[{}]{v2 }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_a115c18d1f752b7f091d577fb69cac372}{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2\+\_\+}}(pred\+\_\+format, v1, v2, \mbox{\hyperlink{gtest_8h_a0f9a4c3ea82cc7bf4478eaffdc168358}{G\+T\+E\+S\+T\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}})} + + + +Definition at line 14795 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a494e3b8dc22f4765f7e041f16c930e3d}\label{gtest_8h_a494e3b8dc22f4765f7e041f16c930e3d}} +\index{gtest.\+h@{gtest.\+h}!A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T3@{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T3}} +\index{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T3@{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T3}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T3}{ASSERT\_PRED\_FORMAT3}} +{\footnotesize\ttfamily \#define A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T3(\begin{DoxyParamCaption}\item[{}]{pred\+\_\+format, }\item[{}]{v1, }\item[{}]{v2, }\item[{}]{v3 }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_a49cdf8707268ee932bb772d879a226cc}{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T3\+\_\+}}(pred\+\_\+format, v1, v2, v3, \mbox{\hyperlink{gtest_8h_a0f9a4c3ea82cc7bf4478eaffdc168358}{G\+T\+E\+S\+T\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}})} + + + +Definition at line 14850 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a1842593c1dfb13c9a4b33b01540a8b40}\label{gtest_8h_a1842593c1dfb13c9a4b33b01540a8b40}} +\index{gtest.\+h@{gtest.\+h}!A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T4@{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T4}} +\index{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T4@{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T4}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T4}{ASSERT\_PRED\_FORMAT4}} +{\footnotesize\ttfamily \#define A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T4(\begin{DoxyParamCaption}\item[{}]{pred\+\_\+format, }\item[{}]{v1, }\item[{}]{v2, }\item[{}]{v3, }\item[{}]{v4 }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_abd207ed869491ba4bba29f8df37b7355}{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T4\+\_\+}}(pred\+\_\+format, v1, v2, v3, v4, \mbox{\hyperlink{gtest_8h_a0f9a4c3ea82cc7bf4478eaffdc168358}{G\+T\+E\+S\+T\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}})} + + + +Definition at line 14911 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_abd7cb4f36d6aa2cb346ab3ac812568f3}\label{gtest_8h_abd7cb4f36d6aa2cb346ab3ac812568f3}} +\index{gtest.\+h@{gtest.\+h}!A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T5@{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T5}} +\index{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T5@{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T5}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T5}{ASSERT\_PRED\_FORMAT5}} +{\footnotesize\ttfamily \#define A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T5(\begin{DoxyParamCaption}\item[{}]{pred\+\_\+format, }\item[{}]{v1, }\item[{}]{v2, }\item[{}]{v3, }\item[{}]{v4, }\item[{}]{v5 }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_a107623ee191560f703a3fdc983803c8e}{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T5\+\_\+}}(pred\+\_\+format, v1, v2, v3, v4, v5, \mbox{\hyperlink{gtest_8h_a0f9a4c3ea82cc7bf4478eaffdc168358}{G\+T\+E\+S\+T\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}})} + + + +Definition at line 14978 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a58847dd696200a3268361401dfcd0fa0}\label{gtest_8h_a58847dd696200a3268361401dfcd0fa0}} +\index{gtest.\+h@{gtest.\+h}!A\+S\+S\+E\+R\+T\+\_\+\+S\+T\+R\+C\+A\+S\+E\+EQ@{A\+S\+S\+E\+R\+T\+\_\+\+S\+T\+R\+C\+A\+S\+E\+EQ}} +\index{A\+S\+S\+E\+R\+T\+\_\+\+S\+T\+R\+C\+A\+S\+E\+EQ@{A\+S\+S\+E\+R\+T\+\_\+\+S\+T\+R\+C\+A\+S\+E\+EQ}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{A\+S\+S\+E\+R\+T\+\_\+\+S\+T\+R\+C\+A\+S\+E\+EQ}{ASSERT\_STRCASEEQ}} +{\footnotesize\ttfamily \#define A\+S\+S\+E\+R\+T\+\_\+\+S\+T\+R\+C\+A\+S\+E\+EQ(\begin{DoxyParamCaption}\item[{}]{s1, }\item[{}]{s2 }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_ac452685a1a98ea3d96eb956a062ee210}{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2}}(\+::\mbox{\hyperlink{namespacetesting_1_1internal_a00c3d012df6173622ef558a131bfb95d}{testing\+::internal\+::\+Cmp\+Helper\+S\+T\+R\+C\+A\+S\+E\+EQ}}, s1, s2)} + + + +Definition at line 16729 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_ac3d2c3836b103068a050f32585b2aaad}\label{gtest_8h_ac3d2c3836b103068a050f32585b2aaad}} +\index{gtest.\+h@{gtest.\+h}!A\+S\+S\+E\+R\+T\+\_\+\+S\+T\+R\+C\+A\+S\+E\+NE@{A\+S\+S\+E\+R\+T\+\_\+\+S\+T\+R\+C\+A\+S\+E\+NE}} +\index{A\+S\+S\+E\+R\+T\+\_\+\+S\+T\+R\+C\+A\+S\+E\+NE@{A\+S\+S\+E\+R\+T\+\_\+\+S\+T\+R\+C\+A\+S\+E\+NE}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{A\+S\+S\+E\+R\+T\+\_\+\+S\+T\+R\+C\+A\+S\+E\+NE}{ASSERT\_STRCASENE}} +{\footnotesize\ttfamily \#define A\+S\+S\+E\+R\+T\+\_\+\+S\+T\+R\+C\+A\+S\+E\+NE(\begin{DoxyParamCaption}\item[{}]{s1, }\item[{}]{s2 }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_ac452685a1a98ea3d96eb956a062ee210}{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2}}(\+::\mbox{\hyperlink{namespacetesting_1_1internal_a5f74b933606b0a742cd5a8ad2d7087e0}{testing\+::internal\+::\+Cmp\+Helper\+S\+T\+R\+C\+A\+S\+E\+NE}}, s1, s2)} + + + +Definition at line 16731 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a74f4189ea570bab9a65d47104659ef9c}\label{gtest_8h_a74f4189ea570bab9a65d47104659ef9c}} +\index{gtest.\+h@{gtest.\+h}!A\+S\+S\+E\+R\+T\+\_\+\+S\+T\+R\+EQ@{A\+S\+S\+E\+R\+T\+\_\+\+S\+T\+R\+EQ}} +\index{A\+S\+S\+E\+R\+T\+\_\+\+S\+T\+R\+EQ@{A\+S\+S\+E\+R\+T\+\_\+\+S\+T\+R\+EQ}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{A\+S\+S\+E\+R\+T\+\_\+\+S\+T\+R\+EQ}{ASSERT\_STREQ}} +{\footnotesize\ttfamily \#define A\+S\+S\+E\+R\+T\+\_\+\+S\+T\+R\+EQ(\begin{DoxyParamCaption}\item[{}]{s1, }\item[{}]{s2 }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_ac452685a1a98ea3d96eb956a062ee210}{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2}}(\+::\mbox{\hyperlink{namespacetesting_1_1internal_a93eb9d61cac7faf1faff6301ae5f4a46}{testing\+::internal\+::\+Cmp\+Helper\+S\+T\+R\+EQ}}, s1, s2)} + + + +Definition at line 16725 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a3d679660ac1b2f9f6e6c7608452af923}\label{gtest_8h_a3d679660ac1b2f9f6e6c7608452af923}} +\index{gtest.\+h@{gtest.\+h}!A\+S\+S\+E\+R\+T\+\_\+\+S\+T\+R\+NE@{A\+S\+S\+E\+R\+T\+\_\+\+S\+T\+R\+NE}} +\index{A\+S\+S\+E\+R\+T\+\_\+\+S\+T\+R\+NE@{A\+S\+S\+E\+R\+T\+\_\+\+S\+T\+R\+NE}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{A\+S\+S\+E\+R\+T\+\_\+\+S\+T\+R\+NE}{ASSERT\_STRNE}} +{\footnotesize\ttfamily \#define A\+S\+S\+E\+R\+T\+\_\+\+S\+T\+R\+NE(\begin{DoxyParamCaption}\item[{}]{s1, }\item[{}]{s2 }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_ac452685a1a98ea3d96eb956a062ee210}{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2}}(\+::\mbox{\hyperlink{namespacetesting_1_1internal_a6b485231a046ff760844a0321c04870b}{testing\+::internal\+::\+Cmp\+Helper\+S\+T\+R\+NE}}, s1, s2)} + + + +Definition at line 16727 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_aedb1eddae6c2a2430b0e7b7e03b4f052}\label{gtest_8h_aedb1eddae6c2a2430b0e7b7e03b4f052}} +\index{gtest.\+h@{gtest.\+h}!A\+S\+S\+E\+R\+T\+\_\+\+T\+H\+R\+OW@{A\+S\+S\+E\+R\+T\+\_\+\+T\+H\+R\+OW}} +\index{A\+S\+S\+E\+R\+T\+\_\+\+T\+H\+R\+OW@{A\+S\+S\+E\+R\+T\+\_\+\+T\+H\+R\+OW}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{A\+S\+S\+E\+R\+T\+\_\+\+T\+H\+R\+OW}{ASSERT\_THROW}} +{\footnotesize\ttfamily \#define A\+S\+S\+E\+R\+T\+\_\+\+T\+H\+R\+OW(\begin{DoxyParamCaption}\item[{}]{statement, }\item[{}]{expected\+\_\+exception }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_a3f71db93eaf30b0cfca9612b9ac32106}{G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+T\+H\+R\+O\+W\+\_\+}}(statement, expected\+\_\+exception, \mbox{\hyperlink{gtest_8h_a0f9a4c3ea82cc7bf4478eaffdc168358}{G\+T\+E\+S\+T\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}})} + + + +Definition at line 16574 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_ae9244bfbda562e8b798789b001993fa5}\label{gtest_8h_ae9244bfbda562e8b798789b001993fa5}} +\index{gtest.\+h@{gtest.\+h}!A\+S\+S\+E\+R\+T\+\_\+\+T\+R\+UE@{A\+S\+S\+E\+R\+T\+\_\+\+T\+R\+UE}} +\index{A\+S\+S\+E\+R\+T\+\_\+\+T\+R\+UE@{A\+S\+S\+E\+R\+T\+\_\+\+T\+R\+UE}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{A\+S\+S\+E\+R\+T\+\_\+\+T\+R\+UE}{ASSERT\_TRUE}} +{\footnotesize\ttfamily \#define A\+S\+S\+E\+R\+T\+\_\+\+T\+R\+UE(\begin{DoxyParamCaption}\item[{}]{condition }\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode} +\mbox{\hyperlink{gtest_8h_ae8912365e1d00a7a2bd248268c64aa1a}{GTEST\_TEST\_BOOLEAN\_}}(condition, #condition, \textcolor{keyword}{false}, \textcolor{keyword}{true}, \(\backslash\) + \mbox{\hyperlink{gtest_8h_a0f9a4c3ea82cc7bf4478eaffdc168358}{GTEST\_FATAL\_FAILURE\_}}) +\end{DoxyCode} + + +Definition at line 16590 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a9be43f44d148e8a8d6a89c864bf4e461}\label{gtest_8h_a9be43f44d148e8a8d6a89c864bf4e461}} +\index{gtest.\+h@{gtest.\+h}!E\+X\+P\+E\+C\+T\+\_\+\+A\+N\+Y\+\_\+\+T\+H\+R\+OW@{E\+X\+P\+E\+C\+T\+\_\+\+A\+N\+Y\+\_\+\+T\+H\+R\+OW}} +\index{E\+X\+P\+E\+C\+T\+\_\+\+A\+N\+Y\+\_\+\+T\+H\+R\+OW@{E\+X\+P\+E\+C\+T\+\_\+\+A\+N\+Y\+\_\+\+T\+H\+R\+OW}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{E\+X\+P\+E\+C\+T\+\_\+\+A\+N\+Y\+\_\+\+T\+H\+R\+OW}{EXPECT\_ANY\_THROW}} +{\footnotesize\ttfamily \#define E\+X\+P\+E\+C\+T\+\_\+\+A\+N\+Y\+\_\+\+T\+H\+R\+OW(\begin{DoxyParamCaption}\item[{}]{statement }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_af48bbd26d54d4afc5e4cef39b1c76ba3}{G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+A\+N\+Y\+\_\+\+T\+H\+R\+O\+W\+\_\+}}(statement, \mbox{\hyperlink{gtest_8h_a6cb7482cfa03661a91c698eb5895f642}{G\+T\+E\+S\+T\+\_\+\+N\+O\+N\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}})} + + + +Definition at line 16572 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a8564de0e012dd0898949c513d1571f8b}\label{gtest_8h_a8564de0e012dd0898949c513d1571f8b}} +\index{gtest.\+h@{gtest.\+h}!E\+X\+P\+E\+C\+T\+\_\+\+D\+E\+A\+T\+H\+\_\+\+I\+F\+\_\+\+S\+U\+P\+P\+O\+R\+T\+ED@{E\+X\+P\+E\+C\+T\+\_\+\+D\+E\+A\+T\+H\+\_\+\+I\+F\+\_\+\+S\+U\+P\+P\+O\+R\+T\+ED}} +\index{E\+X\+P\+E\+C\+T\+\_\+\+D\+E\+A\+T\+H\+\_\+\+I\+F\+\_\+\+S\+U\+P\+P\+O\+R\+T\+ED@{E\+X\+P\+E\+C\+T\+\_\+\+D\+E\+A\+T\+H\+\_\+\+I\+F\+\_\+\+S\+U\+P\+P\+O\+R\+T\+ED}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{E\+X\+P\+E\+C\+T\+\_\+\+D\+E\+A\+T\+H\+\_\+\+I\+F\+\_\+\+S\+U\+P\+P\+O\+R\+T\+ED}{EXPECT\_DEATH\_IF\_SUPPORTED}} +{\footnotesize\ttfamily \#define E\+X\+P\+E\+C\+T\+\_\+\+D\+E\+A\+T\+H\+\_\+\+I\+F\+\_\+\+S\+U\+P\+P\+O\+R\+T\+ED(\begin{DoxyParamCaption}\item[{}]{statement, }\item[{}]{regex }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_aa5f42ab29859b7f49a901770d2e66855}{G\+T\+E\+S\+T\+\_\+\+U\+N\+S\+U\+P\+P\+O\+R\+T\+E\+D\+\_\+\+D\+E\+A\+T\+H\+\_\+\+T\+E\+ST}}(statement, regex, )} + + + +Definition at line 10352 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_ab4852f9430cf656690256ea7fe6323b8}\label{gtest_8h_ab4852f9430cf656690256ea7fe6323b8}} +\index{gtest.\+h@{gtest.\+h}!E\+X\+P\+E\+C\+T\+\_\+\+D\+O\+U\+B\+L\+E\+\_\+\+EQ@{E\+X\+P\+E\+C\+T\+\_\+\+D\+O\+U\+B\+L\+E\+\_\+\+EQ}} +\index{E\+X\+P\+E\+C\+T\+\_\+\+D\+O\+U\+B\+L\+E\+\_\+\+EQ@{E\+X\+P\+E\+C\+T\+\_\+\+D\+O\+U\+B\+L\+E\+\_\+\+EQ}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{E\+X\+P\+E\+C\+T\+\_\+\+D\+O\+U\+B\+L\+E\+\_\+\+EQ}{EXPECT\_DOUBLE\_EQ}} +{\footnotesize\ttfamily \#define E\+X\+P\+E\+C\+T\+\_\+\+D\+O\+U\+B\+L\+E\+\_\+\+EQ(\begin{DoxyParamCaption}\item[{}]{val1, }\item[{}]{val2 }\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode} +\mbox{\hyperlink{gtest_8h_af0141918615a5e2d5247e9cda8324dae}{EXPECT\_PRED\_FORMAT2}}(::testing::internal::CmpHelperFloatingPointEQ, \(\backslash\) + val1, val2) +\end{DoxyCode} + + +Definition at line 16752 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a4159019abda84f5366acdb7604ff220a}\label{gtest_8h_a4159019abda84f5366acdb7604ff220a}} +\index{gtest.\+h@{gtest.\+h}!E\+X\+P\+E\+C\+T\+\_\+\+EQ@{E\+X\+P\+E\+C\+T\+\_\+\+EQ}} +\index{E\+X\+P\+E\+C\+T\+\_\+\+EQ@{E\+X\+P\+E\+C\+T\+\_\+\+EQ}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{E\+X\+P\+E\+C\+T\+\_\+\+EQ}{EXPECT\_EQ}} +{\footnotesize\ttfamily \#define E\+X\+P\+E\+C\+T\+\_\+\+EQ(\begin{DoxyParamCaption}\item[{}]{val1, }\item[{}]{val2 }\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode} +\mbox{\hyperlink{gtest_8h_af0141918615a5e2d5247e9cda8324dae}{EXPECT\_PRED\_FORMAT2}}(::\mbox{\hyperlink{namespacetesting_1_1internal}{testing::internal}}:: \(\backslash\) + EqHelper<\mbox{\hyperlink{gtest_8h_ae5dd8e23090e08856613878fa1ff6fca}{GTEST\_IS\_NULL\_LITERAL\_}}(val1)>::Compare, \(\backslash\) + val1, val2) +\end{DoxyCode} + + +Definition at line 16643 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_aeb6c7ae89f440c90c1a1815951c836da}\label{gtest_8h_aeb6c7ae89f440c90c1a1815951c836da}} +\index{gtest.\+h@{gtest.\+h}!E\+X\+P\+E\+C\+T\+\_\+\+F\+A\+L\+SE@{E\+X\+P\+E\+C\+T\+\_\+\+F\+A\+L\+SE}} +\index{E\+X\+P\+E\+C\+T\+\_\+\+F\+A\+L\+SE@{E\+X\+P\+E\+C\+T\+\_\+\+F\+A\+L\+SE}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{E\+X\+P\+E\+C\+T\+\_\+\+F\+A\+L\+SE}{EXPECT\_FALSE}} +{\footnotesize\ttfamily \#define E\+X\+P\+E\+C\+T\+\_\+\+F\+A\+L\+SE(\begin{DoxyParamCaption}\item[{}]{condition }\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode} +\mbox{\hyperlink{gtest_8h_ae8912365e1d00a7a2bd248268c64aa1a}{GTEST\_TEST\_BOOLEAN\_}}(!(condition), #condition, \textcolor{keyword}{true}, \textcolor{keyword}{false}, \(\backslash\) + \mbox{\hyperlink{gtest_8h_a6cb7482cfa03661a91c698eb5895f642}{GTEST\_NONFATAL\_FAILURE\_}}) +\end{DoxyCode} + + +Definition at line 16587 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a981e552322fb084042d02d6dfa9860ca}\label{gtest_8h_a981e552322fb084042d02d6dfa9860ca}} +\index{gtest.\+h@{gtest.\+h}!E\+X\+P\+E\+C\+T\+\_\+\+F\+L\+O\+A\+T\+\_\+\+EQ@{E\+X\+P\+E\+C\+T\+\_\+\+F\+L\+O\+A\+T\+\_\+\+EQ}} +\index{E\+X\+P\+E\+C\+T\+\_\+\+F\+L\+O\+A\+T\+\_\+\+EQ@{E\+X\+P\+E\+C\+T\+\_\+\+F\+L\+O\+A\+T\+\_\+\+EQ}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{E\+X\+P\+E\+C\+T\+\_\+\+F\+L\+O\+A\+T\+\_\+\+EQ}{EXPECT\_FLOAT\_EQ}} +{\footnotesize\ttfamily \#define E\+X\+P\+E\+C\+T\+\_\+\+F\+L\+O\+A\+T\+\_\+\+EQ(\begin{DoxyParamCaption}\item[{}]{val1, }\item[{}]{val2 }\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode} +\mbox{\hyperlink{gtest_8h_af0141918615a5e2d5247e9cda8324dae}{EXPECT\_PRED\_FORMAT2}}(::testing::internal::CmpHelperFloatingPointEQ, \(\backslash\) + val1, val2) +\end{DoxyCode} + + +Definition at line 16748 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_ab7a0ff4bfa4d9b27baa118d8b0756ca0}\label{gtest_8h_ab7a0ff4bfa4d9b27baa118d8b0756ca0}} +\index{gtest.\+h@{gtest.\+h}!E\+X\+P\+E\+C\+T\+\_\+\+GE@{E\+X\+P\+E\+C\+T\+\_\+\+GE}} +\index{E\+X\+P\+E\+C\+T\+\_\+\+GE@{E\+X\+P\+E\+C\+T\+\_\+\+GE}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{E\+X\+P\+E\+C\+T\+\_\+\+GE}{EXPECT\_GE}} +{\footnotesize\ttfamily \#define E\+X\+P\+E\+C\+T\+\_\+\+GE(\begin{DoxyParamCaption}\item[{}]{val1, }\item[{}]{val2 }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_af0141918615a5e2d5247e9cda8324dae}{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2}}(\+::testing\+::internal\+::\+Cmp\+Helper\+GE, val1, val2)} + + + +Definition at line 16653 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_aa8bc8320813e1abb0016129b636e3b27}\label{gtest_8h_aa8bc8320813e1abb0016129b636e3b27}} +\index{gtest.\+h@{gtest.\+h}!E\+X\+P\+E\+C\+T\+\_\+\+GT@{E\+X\+P\+E\+C\+T\+\_\+\+GT}} +\index{E\+X\+P\+E\+C\+T\+\_\+\+GT@{E\+X\+P\+E\+C\+T\+\_\+\+GT}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{E\+X\+P\+E\+C\+T\+\_\+\+GT}{EXPECT\_GT}} +{\footnotesize\ttfamily \#define E\+X\+P\+E\+C\+T\+\_\+\+GT(\begin{DoxyParamCaption}\item[{}]{val1, }\item[{}]{val2 }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_af0141918615a5e2d5247e9cda8324dae}{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2}}(\+::testing\+::internal\+::\+Cmp\+Helper\+GT, val1, val2)} + + + +Definition at line 16655 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_ae0f265632323b4a07b585dcfde10f60a}\label{gtest_8h_ae0f265632323b4a07b585dcfde10f60a}} +\index{gtest.\+h@{gtest.\+h}!E\+X\+P\+E\+C\+T\+\_\+\+LE@{E\+X\+P\+E\+C\+T\+\_\+\+LE}} +\index{E\+X\+P\+E\+C\+T\+\_\+\+LE@{E\+X\+P\+E\+C\+T\+\_\+\+LE}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{E\+X\+P\+E\+C\+T\+\_\+\+LE}{EXPECT\_LE}} +{\footnotesize\ttfamily \#define E\+X\+P\+E\+C\+T\+\_\+\+LE(\begin{DoxyParamCaption}\item[{}]{val1, }\item[{}]{val2 }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_af0141918615a5e2d5247e9cda8324dae}{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2}}(\+::testing\+::internal\+::\+Cmp\+Helper\+LE, val1, val2)} + + + +Definition at line 16649 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_af28c06b2b5e8dee151896f299f6610cf}\label{gtest_8h_af28c06b2b5e8dee151896f299f6610cf}} +\index{gtest.\+h@{gtest.\+h}!E\+X\+P\+E\+C\+T\+\_\+\+LT@{E\+X\+P\+E\+C\+T\+\_\+\+LT}} +\index{E\+X\+P\+E\+C\+T\+\_\+\+LT@{E\+X\+P\+E\+C\+T\+\_\+\+LT}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{E\+X\+P\+E\+C\+T\+\_\+\+LT}{EXPECT\_LT}} +{\footnotesize\ttfamily \#define E\+X\+P\+E\+C\+T\+\_\+\+LT(\begin{DoxyParamCaption}\item[{}]{val1, }\item[{}]{val2 }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_af0141918615a5e2d5247e9cda8324dae}{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2}}(\+::testing\+::internal\+::\+Cmp\+Helper\+LT, val1, val2)} + + + +Definition at line 16651 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a6ae7443947f25abc58bfcfcfc56b0d75}\label{gtest_8h_a6ae7443947f25abc58bfcfcfc56b0d75}} +\index{gtest.\+h@{gtest.\+h}!E\+X\+P\+E\+C\+T\+\_\+\+NE@{E\+X\+P\+E\+C\+T\+\_\+\+NE}} +\index{E\+X\+P\+E\+C\+T\+\_\+\+NE@{E\+X\+P\+E\+C\+T\+\_\+\+NE}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{E\+X\+P\+E\+C\+T\+\_\+\+NE}{EXPECT\_NE}} +{\footnotesize\ttfamily \#define E\+X\+P\+E\+C\+T\+\_\+\+NE(\begin{DoxyParamCaption}\item[{}]{val1, }\item[{}]{val2 }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_af0141918615a5e2d5247e9cda8324dae}{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2}}(\+::testing\+::internal\+::\+Cmp\+Helper\+NE, val1, val2)} + + + +Definition at line 16647 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a88cd7978af0e7dbd42cd606dfabdcc6f}\label{gtest_8h_a88cd7978af0e7dbd42cd606dfabdcc6f}} +\index{gtest.\+h@{gtest.\+h}!E\+X\+P\+E\+C\+T\+\_\+\+N\+E\+AR@{E\+X\+P\+E\+C\+T\+\_\+\+N\+E\+AR}} +\index{E\+X\+P\+E\+C\+T\+\_\+\+N\+E\+AR@{E\+X\+P\+E\+C\+T\+\_\+\+N\+E\+AR}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{E\+X\+P\+E\+C\+T\+\_\+\+N\+E\+AR}{EXPECT\_NEAR}} +{\footnotesize\ttfamily \#define E\+X\+P\+E\+C\+T\+\_\+\+N\+E\+AR(\begin{DoxyParamCaption}\item[{}]{val1, }\item[{}]{val2, }\item[{}]{abs\+\_\+error }\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode} +\mbox{\hyperlink{gtest_8h_a7285708fa5d37d6d8ed5b5e59da08bae}{EXPECT\_PRED\_FORMAT3}}(::\mbox{\hyperlink{namespacetesting_1_1internal_aea60207c4cedc8946a70ada62e38da8f}{testing::internal::DoubleNearPredFormat}} + , \(\backslash\) + val1, val2, abs\_error) +\end{DoxyCode} + + +Definition at line 16764 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a067c02ccaf3171d6e1781cd0f8cdcf74}\label{gtest_8h_a067c02ccaf3171d6e1781cd0f8cdcf74}} +\index{gtest.\+h@{gtest.\+h}!E\+X\+P\+E\+C\+T\+\_\+\+N\+O\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+RE@{E\+X\+P\+E\+C\+T\+\_\+\+N\+O\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+RE}} +\index{E\+X\+P\+E\+C\+T\+\_\+\+N\+O\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+RE@{E\+X\+P\+E\+C\+T\+\_\+\+N\+O\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+RE}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{E\+X\+P\+E\+C\+T\+\_\+\+N\+O\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+RE}{EXPECT\_NO\_FATAL\_FAILURE}} +{\footnotesize\ttfamily \#define E\+X\+P\+E\+C\+T\+\_\+\+N\+O\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+RE(\begin{DoxyParamCaption}\item[{}]{statement }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_a1b37a3c446836d33040f3266a6236081}{G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+N\+O\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}}(statement, \mbox{\hyperlink{gtest_8h_a6cb7482cfa03661a91c698eb5895f642}{G\+T\+E\+S\+T\+\_\+\+N\+O\+N\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}})} + + + +Definition at line 16822 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a2743a1438137ad857aa3f9fec3ff67ec}\label{gtest_8h_a2743a1438137ad857aa3f9fec3ff67ec}} +\index{gtest.\+h@{gtest.\+h}!E\+X\+P\+E\+C\+T\+\_\+\+N\+O\+\_\+\+T\+H\+R\+OW@{E\+X\+P\+E\+C\+T\+\_\+\+N\+O\+\_\+\+T\+H\+R\+OW}} +\index{E\+X\+P\+E\+C\+T\+\_\+\+N\+O\+\_\+\+T\+H\+R\+OW@{E\+X\+P\+E\+C\+T\+\_\+\+N\+O\+\_\+\+T\+H\+R\+OW}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{E\+X\+P\+E\+C\+T\+\_\+\+N\+O\+\_\+\+T\+H\+R\+OW}{EXPECT\_NO\_THROW}} +{\footnotesize\ttfamily \#define E\+X\+P\+E\+C\+T\+\_\+\+N\+O\+\_\+\+T\+H\+R\+OW(\begin{DoxyParamCaption}\item[{}]{statement }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_a9a109d026b5a904646437d7570e13581}{G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+N\+O\+\_\+\+T\+H\+R\+O\+W\+\_\+}}(statement, \mbox{\hyperlink{gtest_8h_a6cb7482cfa03661a91c698eb5895f642}{G\+T\+E\+S\+T\+\_\+\+N\+O\+N\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}})} + + + +Definition at line 16570 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a6d09aa83f8d297481380c7c073c9f070}\label{gtest_8h_a6d09aa83f8d297481380c7c073c9f070}} +\index{gtest.\+h@{gtest.\+h}!E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D1@{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D1}} +\index{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D1@{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D1}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D1}{EXPECT\_PRED1}} +{\footnotesize\ttfamily \#define E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D1(\begin{DoxyParamCaption}\item[{}]{pred, }\item[{}]{v1 }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_ad44cf322952076d85305bbdf39769ac1}{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D1\+\_\+}}(pred, v1, \mbox{\hyperlink{gtest_8h_a6cb7482cfa03661a91c698eb5895f642}{G\+T\+E\+S\+T\+\_\+\+N\+O\+N\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}})} + + + +Definition at line 14744 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a14e74e655e502914d3d07e083145ac91}\label{gtest_8h_a14e74e655e502914d3d07e083145ac91}} +\index{gtest.\+h@{gtest.\+h}!E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D2@{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D2}} +\index{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D2@{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D2}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D2}{EXPECT\_PRED2}} +{\footnotesize\ttfamily \#define E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D2(\begin{DoxyParamCaption}\item[{}]{pred, }\item[{}]{v1, }\item[{}]{v2 }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_ac560264104bd030b64034505d294a7b6}{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D2\+\_\+}}(pred, v1, v2, \mbox{\hyperlink{gtest_8h_a6cb7482cfa03661a91c698eb5895f642}{G\+T\+E\+S\+T\+\_\+\+N\+O\+N\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}})} + + + +Definition at line 14793 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a0a0aff2564ea84c7eb3517ac8eda04da}\label{gtest_8h_a0a0aff2564ea84c7eb3517ac8eda04da}} +\index{gtest.\+h@{gtest.\+h}!E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D3@{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D3}} +\index{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D3@{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D3}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D3}{EXPECT\_PRED3}} +{\footnotesize\ttfamily \#define E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D3(\begin{DoxyParamCaption}\item[{}]{pred, }\item[{}]{v1, }\item[{}]{v2, }\item[{}]{v3 }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_af30518f03233bc4486b55284b0827eb8}{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D3\+\_\+}}(pred, v1, v2, v3, \mbox{\hyperlink{gtest_8h_a6cb7482cfa03661a91c698eb5895f642}{G\+T\+E\+S\+T\+\_\+\+N\+O\+N\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}})} + + + +Definition at line 14848 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a4fd2b1bad63eb752bc2ff2b6bb3f4569}\label{gtest_8h_a4fd2b1bad63eb752bc2ff2b6bb3f4569}} +\index{gtest.\+h@{gtest.\+h}!E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D4@{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D4}} +\index{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D4@{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D4}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D4}{EXPECT\_PRED4}} +{\footnotesize\ttfamily \#define E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D4(\begin{DoxyParamCaption}\item[{}]{pred, }\item[{}]{v1, }\item[{}]{v2, }\item[{}]{v3, }\item[{}]{v4 }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_a14e8c70455104fac032efec097ef668b}{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D4\+\_\+}}(pred, v1, v2, v3, v4, \mbox{\hyperlink{gtest_8h_a6cb7482cfa03661a91c698eb5895f642}{G\+T\+E\+S\+T\+\_\+\+N\+O\+N\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}})} + + + +Definition at line 14909 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_adbfcc13f3b3d14c42a7fbd41573932bf}\label{gtest_8h_adbfcc13f3b3d14c42a7fbd41573932bf}} +\index{gtest.\+h@{gtest.\+h}!E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D5@{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D5}} +\index{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D5@{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D5}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D5}{EXPECT\_PRED5}} +{\footnotesize\ttfamily \#define E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D5(\begin{DoxyParamCaption}\item[{}]{pred, }\item[{}]{v1, }\item[{}]{v2, }\item[{}]{v3, }\item[{}]{v4, }\item[{}]{v5 }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_a2c42692f7d910dc2fe57869883190e6c}{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D5\+\_\+}}(pred, v1, v2, v3, v4, v5, \mbox{\hyperlink{gtest_8h_a6cb7482cfa03661a91c698eb5895f642}{G\+T\+E\+S\+T\+\_\+\+N\+O\+N\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}})} + + + +Definition at line 14976 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a07132aa62cf4902e50e68d0265f573b6}\label{gtest_8h_a07132aa62cf4902e50e68d0265f573b6}} +\index{gtest.\+h@{gtest.\+h}!E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T1@{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T1}} +\index{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T1@{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T1}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T1}{EXPECT\_PRED\_FORMAT1}} +{\footnotesize\ttfamily \#define E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T1(\begin{DoxyParamCaption}\item[{}]{pred\+\_\+format, }\item[{}]{v1 }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_aa3e3bfe04bb0e54d7f0e57e2f991d1eb}{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T1\+\_\+}}(pred\+\_\+format, v1, \mbox{\hyperlink{gtest_8h_a6cb7482cfa03661a91c698eb5895f642}{G\+T\+E\+S\+T\+\_\+\+N\+O\+N\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}})} + + + +Definition at line 14742 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_af0141918615a5e2d5247e9cda8324dae}\label{gtest_8h_af0141918615a5e2d5247e9cda8324dae}} +\index{gtest.\+h@{gtest.\+h}!E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2@{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2}} +\index{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2@{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2}{EXPECT\_PRED\_FORMAT2}} +{\footnotesize\ttfamily \#define E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2(\begin{DoxyParamCaption}\item[{}]{pred\+\_\+format, }\item[{}]{v1, }\item[{}]{v2 }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_a115c18d1f752b7f091d577fb69cac372}{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2\+\_\+}}(pred\+\_\+format, v1, v2, \mbox{\hyperlink{gtest_8h_a6cb7482cfa03661a91c698eb5895f642}{G\+T\+E\+S\+T\+\_\+\+N\+O\+N\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}})} + + + +Definition at line 14791 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a7285708fa5d37d6d8ed5b5e59da08bae}\label{gtest_8h_a7285708fa5d37d6d8ed5b5e59da08bae}} +\index{gtest.\+h@{gtest.\+h}!E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T3@{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T3}} +\index{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T3@{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T3}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T3}{EXPECT\_PRED\_FORMAT3}} +{\footnotesize\ttfamily \#define E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T3(\begin{DoxyParamCaption}\item[{}]{pred\+\_\+format, }\item[{}]{v1, }\item[{}]{v2, }\item[{}]{v3 }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_a49cdf8707268ee932bb772d879a226cc}{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T3\+\_\+}}(pred\+\_\+format, v1, v2, v3, \mbox{\hyperlink{gtest_8h_a6cb7482cfa03661a91c698eb5895f642}{G\+T\+E\+S\+T\+\_\+\+N\+O\+N\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}})} + + + +Definition at line 14846 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a3354347de0f2445400b509cf39dce1dc}\label{gtest_8h_a3354347de0f2445400b509cf39dce1dc}} +\index{gtest.\+h@{gtest.\+h}!E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T4@{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T4}} +\index{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T4@{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T4}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T4}{EXPECT\_PRED\_FORMAT4}} +{\footnotesize\ttfamily \#define E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T4(\begin{DoxyParamCaption}\item[{}]{pred\+\_\+format, }\item[{}]{v1, }\item[{}]{v2, }\item[{}]{v3, }\item[{}]{v4 }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_abd207ed869491ba4bba29f8df37b7355}{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T4\+\_\+}}(pred\+\_\+format, v1, v2, v3, v4, \mbox{\hyperlink{gtest_8h_a6cb7482cfa03661a91c698eb5895f642}{G\+T\+E\+S\+T\+\_\+\+N\+O\+N\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}})} + + + +Definition at line 14907 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a74beddf9661e4460f9969fe211b9e80e}\label{gtest_8h_a74beddf9661e4460f9969fe211b9e80e}} +\index{gtest.\+h@{gtest.\+h}!E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T5@{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T5}} +\index{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T5@{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T5}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T5}{EXPECT\_PRED\_FORMAT5}} +{\footnotesize\ttfamily \#define E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T5(\begin{DoxyParamCaption}\item[{}]{pred\+\_\+format, }\item[{}]{v1, }\item[{}]{v2, }\item[{}]{v3, }\item[{}]{v4, }\item[{}]{v5 }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_a107623ee191560f703a3fdc983803c8e}{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T5\+\_\+}}(pred\+\_\+format, v1, v2, v3, v4, v5, \mbox{\hyperlink{gtest_8h_a6cb7482cfa03661a91c698eb5895f642}{G\+T\+E\+S\+T\+\_\+\+N\+O\+N\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}})} + + + +Definition at line 14974 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a740cab7e3eec5c178a64b4f558bde66e}\label{gtest_8h_a740cab7e3eec5c178a64b4f558bde66e}} +\index{gtest.\+h@{gtest.\+h}!E\+X\+P\+E\+C\+T\+\_\+\+S\+T\+R\+C\+A\+S\+E\+EQ@{E\+X\+P\+E\+C\+T\+\_\+\+S\+T\+R\+C\+A\+S\+E\+EQ}} +\index{E\+X\+P\+E\+C\+T\+\_\+\+S\+T\+R\+C\+A\+S\+E\+EQ@{E\+X\+P\+E\+C\+T\+\_\+\+S\+T\+R\+C\+A\+S\+E\+EQ}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{E\+X\+P\+E\+C\+T\+\_\+\+S\+T\+R\+C\+A\+S\+E\+EQ}{EXPECT\_STRCASEEQ}} +{\footnotesize\ttfamily \#define E\+X\+P\+E\+C\+T\+\_\+\+S\+T\+R\+C\+A\+S\+E\+EQ(\begin{DoxyParamCaption}\item[{}]{s1, }\item[{}]{s2 }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_af0141918615a5e2d5247e9cda8324dae}{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2}}(\+::\mbox{\hyperlink{namespacetesting_1_1internal_a00c3d012df6173622ef558a131bfb95d}{testing\+::internal\+::\+Cmp\+Helper\+S\+T\+R\+C\+A\+S\+E\+EQ}}, s1, s2)} + + + +Definition at line 16720 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a07d0b5cbd3b5f7c8b6f44c609046ff07}\label{gtest_8h_a07d0b5cbd3b5f7c8b6f44c609046ff07}} +\index{gtest.\+h@{gtest.\+h}!E\+X\+P\+E\+C\+T\+\_\+\+S\+T\+R\+C\+A\+S\+E\+NE@{E\+X\+P\+E\+C\+T\+\_\+\+S\+T\+R\+C\+A\+S\+E\+NE}} +\index{E\+X\+P\+E\+C\+T\+\_\+\+S\+T\+R\+C\+A\+S\+E\+NE@{E\+X\+P\+E\+C\+T\+\_\+\+S\+T\+R\+C\+A\+S\+E\+NE}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{E\+X\+P\+E\+C\+T\+\_\+\+S\+T\+R\+C\+A\+S\+E\+NE}{EXPECT\_STRCASENE}} +{\footnotesize\ttfamily \#define E\+X\+P\+E\+C\+T\+\_\+\+S\+T\+R\+C\+A\+S\+E\+NE(\begin{DoxyParamCaption}\item[{}]{s1, }\item[{}]{s2 }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_af0141918615a5e2d5247e9cda8324dae}{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2}}(\+::\mbox{\hyperlink{namespacetesting_1_1internal_a5f74b933606b0a742cd5a8ad2d7087e0}{testing\+::internal\+::\+Cmp\+Helper\+S\+T\+R\+C\+A\+S\+E\+NE}}, s1, s2)} + + + +Definition at line 16722 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_ad20f7b94ac5081e16f0005b94e95f0c6}\label{gtest_8h_ad20f7b94ac5081e16f0005b94e95f0c6}} +\index{gtest.\+h@{gtest.\+h}!E\+X\+P\+E\+C\+T\+\_\+\+S\+T\+R\+EQ@{E\+X\+P\+E\+C\+T\+\_\+\+S\+T\+R\+EQ}} +\index{E\+X\+P\+E\+C\+T\+\_\+\+S\+T\+R\+EQ@{E\+X\+P\+E\+C\+T\+\_\+\+S\+T\+R\+EQ}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{E\+X\+P\+E\+C\+T\+\_\+\+S\+T\+R\+EQ}{EXPECT\_STREQ}} +{\footnotesize\ttfamily \#define E\+X\+P\+E\+C\+T\+\_\+\+S\+T\+R\+EQ(\begin{DoxyParamCaption}\item[{}]{s1, }\item[{}]{s2 }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_af0141918615a5e2d5247e9cda8324dae}{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2}}(\+::\mbox{\hyperlink{namespacetesting_1_1internal_a93eb9d61cac7faf1faff6301ae5f4a46}{testing\+::internal\+::\+Cmp\+Helper\+S\+T\+R\+EQ}}, s1, s2)} + + + +Definition at line 16716 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_aee7e9c42f55549dbc0dfc42391eb9775}\label{gtest_8h_aee7e9c42f55549dbc0dfc42391eb9775}} +\index{gtest.\+h@{gtest.\+h}!E\+X\+P\+E\+C\+T\+\_\+\+S\+T\+R\+NE@{E\+X\+P\+E\+C\+T\+\_\+\+S\+T\+R\+NE}} +\index{E\+X\+P\+E\+C\+T\+\_\+\+S\+T\+R\+NE@{E\+X\+P\+E\+C\+T\+\_\+\+S\+T\+R\+NE}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{E\+X\+P\+E\+C\+T\+\_\+\+S\+T\+R\+NE}{EXPECT\_STRNE}} +{\footnotesize\ttfamily \#define E\+X\+P\+E\+C\+T\+\_\+\+S\+T\+R\+NE(\begin{DoxyParamCaption}\item[{}]{s1, }\item[{}]{s2 }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_af0141918615a5e2d5247e9cda8324dae}{E\+X\+P\+E\+C\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2}}(\+::\mbox{\hyperlink{namespacetesting_1_1internal_a6b485231a046ff760844a0321c04870b}{testing\+::internal\+::\+Cmp\+Helper\+S\+T\+R\+NE}}, s1, s2)} + + + +Definition at line 16718 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a789842b4475eed948e6fd18390d5a859}\label{gtest_8h_a789842b4475eed948e6fd18390d5a859}} +\index{gtest.\+h@{gtest.\+h}!E\+X\+P\+E\+C\+T\+\_\+\+T\+H\+R\+OW@{E\+X\+P\+E\+C\+T\+\_\+\+T\+H\+R\+OW}} +\index{E\+X\+P\+E\+C\+T\+\_\+\+T\+H\+R\+OW@{E\+X\+P\+E\+C\+T\+\_\+\+T\+H\+R\+OW}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{E\+X\+P\+E\+C\+T\+\_\+\+T\+H\+R\+OW}{EXPECT\_THROW}} +{\footnotesize\ttfamily \#define E\+X\+P\+E\+C\+T\+\_\+\+T\+H\+R\+OW(\begin{DoxyParamCaption}\item[{}]{statement, }\item[{}]{expected\+\_\+exception }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_a3f71db93eaf30b0cfca9612b9ac32106}{G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+T\+H\+R\+O\+W\+\_\+}}(statement, expected\+\_\+exception, \mbox{\hyperlink{gtest_8h_a6cb7482cfa03661a91c698eb5895f642}{G\+T\+E\+S\+T\+\_\+\+N\+O\+N\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}})} + + + +Definition at line 16568 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_ac33e7cdfb5d44a7a0f0ab552eb5c3c6a}\label{gtest_8h_ac33e7cdfb5d44a7a0f0ab552eb5c3c6a}} +\index{gtest.\+h@{gtest.\+h}!E\+X\+P\+E\+C\+T\+\_\+\+T\+R\+UE@{E\+X\+P\+E\+C\+T\+\_\+\+T\+R\+UE}} +\index{E\+X\+P\+E\+C\+T\+\_\+\+T\+R\+UE@{E\+X\+P\+E\+C\+T\+\_\+\+T\+R\+UE}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{E\+X\+P\+E\+C\+T\+\_\+\+T\+R\+UE}{EXPECT\_TRUE}} +{\footnotesize\ttfamily \#define E\+X\+P\+E\+C\+T\+\_\+\+T\+R\+UE(\begin{DoxyParamCaption}\item[{}]{condition }\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode} +\mbox{\hyperlink{gtest_8h_ae8912365e1d00a7a2bd248268c64aa1a}{GTEST\_TEST\_BOOLEAN\_}}(condition, #condition, \textcolor{keyword}{false}, \textcolor{keyword}{true}, \(\backslash\) + \mbox{\hyperlink{gtest_8h_a6cb7482cfa03661a91c698eb5895f642}{GTEST\_NONFATAL\_FAILURE\_}}) +\end{DoxyCode} + + +Definition at line 16584 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a3e26a8d27caa386ed0ea7ce9d5b7c4ed}\label{gtest_8h_a3e26a8d27caa386ed0ea7ce9d5b7c4ed}} +\index{gtest.\+h@{gtest.\+h}!F\+A\+IL@{F\+A\+IL}} +\index{F\+A\+IL@{F\+A\+IL}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{F\+A\+IL}{FAIL}} +{\footnotesize\ttfamily \#define F\+A\+IL(\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_a636231436707c30d6778f79ae96f5dc6}{G\+T\+E\+S\+T\+\_\+\+F\+A\+IL}}()} + + + +Definition at line 16547 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a8d443b4cc1d87a7a17943b8fbdbf3910}\label{gtest_8h_a8d443b4cc1d87a7a17943b8fbdbf3910}} +\index{gtest.\+h@{gtest.\+h}!F\+R\+I\+E\+N\+D\+\_\+\+T\+E\+ST@{F\+R\+I\+E\+N\+D\+\_\+\+T\+E\+ST}} +\index{F\+R\+I\+E\+N\+D\+\_\+\+T\+E\+ST@{F\+R\+I\+E\+N\+D\+\_\+\+T\+E\+ST}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{F\+R\+I\+E\+N\+D\+\_\+\+T\+E\+ST}{FRIEND\_TEST}} +{\footnotesize\ttfamily \#define F\+R\+I\+E\+N\+D\+\_\+\+T\+E\+ST(\begin{DoxyParamCaption}\item[{}]{test\+\_\+case\+\_\+name, }\item[{}]{test\+\_\+name }\end{DoxyParamCaption})~friend class test\+\_\+case\+\_\+name\#\#\+\_\+\#\#test\+\_\+name\#\#\+\_\+\+Test} + + + +Definition at line 13802 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_ab389953fc1f7e4efae30d182a0e0a13b}\label{gtest_8h_ab389953fc1f7e4efae30d182a0e0a13b}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+A\+D\+D\+\_\+\+R\+E\+F\+E\+R\+E\+N\+C\+E\+\_\+@{G\+T\+E\+S\+T\+\_\+\+A\+D\+D\+\_\+\+R\+E\+F\+E\+R\+E\+N\+C\+E\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+A\+D\+D\+\_\+\+R\+E\+F\+E\+R\+E\+N\+C\+E\+\_\+@{G\+T\+E\+S\+T\+\_\+\+A\+D\+D\+\_\+\+R\+E\+F\+E\+R\+E\+N\+C\+E\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+A\+D\+D\+\_\+\+R\+E\+F\+E\+R\+E\+N\+C\+E\+\_\+}{GTEST\_ADD\_REFERENCE\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+A\+D\+D\+\_\+\+R\+E\+F\+E\+R\+E\+N\+C\+E\+\_\+(\begin{DoxyParamCaption}\item[{}]{T }\end{DoxyParamCaption})~typename \+::\mbox{\hyperlink{structtesting_1_1internal_1_1_add_reference}{testing\+::internal\+::\+Add\+Reference}}$<$T$>$\+::type} + + + +Definition at line 1298 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a00b3684a621ce1422b55a0e7e8a6aecb}\label{gtest_8h_a00b3684a621ce1422b55a0e7e8a6aecb}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+A\+M\+B\+I\+G\+U\+O\+U\+S\+\_\+\+E\+L\+S\+E\+\_\+\+B\+L\+O\+C\+K\+E\+R\+\_\+@{G\+T\+E\+S\+T\+\_\+\+A\+M\+B\+I\+G\+U\+O\+U\+S\+\_\+\+E\+L\+S\+E\+\_\+\+B\+L\+O\+C\+K\+E\+R\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+A\+M\+B\+I\+G\+U\+O\+U\+S\+\_\+\+E\+L\+S\+E\+\_\+\+B\+L\+O\+C\+K\+E\+R\+\_\+@{G\+T\+E\+S\+T\+\_\+\+A\+M\+B\+I\+G\+U\+O\+U\+S\+\_\+\+E\+L\+S\+E\+\_\+\+B\+L\+O\+C\+K\+E\+R\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+A\+M\+B\+I\+G\+U\+O\+U\+S\+\_\+\+E\+L\+S\+E\+\_\+\+B\+L\+O\+C\+K\+E\+R\+\_\+}{GTEST\_AMBIGUOUS\_ELSE\_BLOCKER\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+A\+M\+B\+I\+G\+U\+O\+U\+S\+\_\+\+E\+L\+S\+E\+\_\+\+B\+L\+O\+C\+K\+E\+R\+\_\+~switch (0) case 0\+: default\+:} + + + +Definition at line 877 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}\label{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+@{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+@{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}{GTEST\_API\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+} + + + +Definition at line 998 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_ab71a3e9a908b7b6acc0e8bddc0ecb3fe}\label{gtest_8h_ab71a3e9a908b7b6acc0e8bddc0ecb3fe}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+A\+R\+R\+A\+Y\+\_\+\+S\+I\+Z\+E\+\_\+@{G\+T\+E\+S\+T\+\_\+\+A\+R\+R\+A\+Y\+\_\+\+S\+I\+Z\+E\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+A\+R\+R\+A\+Y\+\_\+\+S\+I\+Z\+E\+\_\+@{G\+T\+E\+S\+T\+\_\+\+A\+R\+R\+A\+Y\+\_\+\+S\+I\+Z\+E\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+A\+R\+R\+A\+Y\+\_\+\+S\+I\+Z\+E\+\_\+}{GTEST\_ARRAY\_SIZE\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+A\+R\+R\+A\+Y\+\_\+\+S\+I\+Z\+E\+\_\+(\begin{DoxyParamCaption}\item[{}]{array }\end{DoxyParamCaption})~(sizeof(array) / sizeof(array\mbox{[}0\mbox{]}))} + + + +Definition at line 1110 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a8c09939dd67f1bb5b68c9f6a44ea75db}\label{gtest_8h_a8c09939dd67f1bb5b68c9f6a44ea75db}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+@{G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+@{G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+}{GTEST\_ASSERT\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+(\begin{DoxyParamCaption}\item[{}]{expression, }\item[{}]{on\+\_\+failure }\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode} +GTEST\_AMBIGUOUS\_ELSE\_BLOCKER\_ \(\backslash\) + if (const ::testing::AssertionResult gtest\_ar = (expression)) \(\backslash\) + ; \(\backslash\) + else \(\backslash\) + on\_failure(gtest\_ar.failure\_message()) +\end{DoxyCode} + + +Definition at line 14703 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a8a7a47387090810cdfe78933d348182d}\label{gtest_8h_a8a7a47387090810cdfe78933d348182d}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+\+EQ@{G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+\+EQ}} +\index{G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+\+EQ@{G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+\+EQ}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+\+EQ}{GTEST\_ASSERT\_EQ}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+\+EQ(\begin{DoxyParamCaption}\item[{}]{val1, }\item[{}]{val2 }\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode} +\mbox{\hyperlink{gtest_8h_ac452685a1a98ea3d96eb956a062ee210}{ASSERT\_PRED\_FORMAT2}}(::\mbox{\hyperlink{namespacetesting_1_1internal}{testing::internal}}:: \(\backslash\) + EqHelper<\mbox{\hyperlink{gtest_8h_ae5dd8e23090e08856613878fa1ff6fca}{GTEST\_IS\_NULL\_LITERAL\_}}(val1)>::Compare, \(\backslash\) + val1, val2) +\end{DoxyCode} + + +Definition at line 16658 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a55373d99c079ff1b894e2eb5bcd15c5a}\label{gtest_8h_a55373d99c079ff1b894e2eb5bcd15c5a}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+\+GE@{G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+\+GE}} +\index{G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+\+GE@{G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+\+GE}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+\+GE}{GTEST\_ASSERT\_GE}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+\+GE(\begin{DoxyParamCaption}\item[{}]{val1, }\item[{}]{val2 }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_ac452685a1a98ea3d96eb956a062ee210}{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2}}(\+::testing\+::internal\+::\+Cmp\+Helper\+GE, val1, val2)} + + + +Definition at line 16668 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a088b9056fd1c1f316b41c22f64deb33a}\label{gtest_8h_a088b9056fd1c1f316b41c22f64deb33a}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+\+GT@{G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+\+GT}} +\index{G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+\+GT@{G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+\+GT}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+\+GT}{GTEST\_ASSERT\_GT}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+\+GT(\begin{DoxyParamCaption}\item[{}]{val1, }\item[{}]{val2 }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_ac452685a1a98ea3d96eb956a062ee210}{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2}}(\+::testing\+::internal\+::\+Cmp\+Helper\+GT, val1, val2)} + + + +Definition at line 16670 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_abef04dcd4a0259d378de7b3b3ffb6730}\label{gtest_8h_abef04dcd4a0259d378de7b3b3ffb6730}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+\+LE@{G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+\+LE}} +\index{G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+\+LE@{G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+\+LE}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+\+LE}{GTEST\_ASSERT\_LE}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+\+LE(\begin{DoxyParamCaption}\item[{}]{val1, }\item[{}]{val2 }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_ac452685a1a98ea3d96eb956a062ee210}{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2}}(\+::testing\+::internal\+::\+Cmp\+Helper\+LE, val1, val2)} + + + +Definition at line 16664 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a5a75667e637febd18e5f7d4f3abf55e8}\label{gtest_8h_a5a75667e637febd18e5f7d4f3abf55e8}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+\+LT@{G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+\+LT}} +\index{G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+\+LT@{G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+\+LT}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+\+LT}{GTEST\_ASSERT\_LT}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+\+LT(\begin{DoxyParamCaption}\item[{}]{val1, }\item[{}]{val2 }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_ac452685a1a98ea3d96eb956a062ee210}{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2}}(\+::testing\+::internal\+::\+Cmp\+Helper\+LT, val1, val2)} + + + +Definition at line 16666 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a6fa9bb2b6731eba8f481e40e9e4931b3}\label{gtest_8h_a6fa9bb2b6731eba8f481e40e9e4931b3}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+\+NE@{G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+\+NE}} +\index{G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+\+NE@{G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+\+NE}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+\+NE}{GTEST\_ASSERT\_NE}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+\+NE(\begin{DoxyParamCaption}\item[{}]{val1, }\item[{}]{val2 }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_ac452685a1a98ea3d96eb956a062ee210}{A\+S\+S\+E\+R\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2}}(\+::testing\+::internal\+::\+Cmp\+Helper\+NE, val1, val2)} + + + +Definition at line 16662 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_af18b465f4ba6e36eea7a8d2d79521873}\label{gtest_8h_af18b465f4ba6e36eea7a8d2d79521873}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+A\+T\+T\+R\+I\+B\+U\+T\+E\+\_\+\+N\+O\+\_\+\+S\+A\+N\+I\+T\+I\+Z\+E\+\_\+\+A\+D\+D\+R\+E\+S\+S\+\_\+@{G\+T\+E\+S\+T\+\_\+\+A\+T\+T\+R\+I\+B\+U\+T\+E\+\_\+\+N\+O\+\_\+\+S\+A\+N\+I\+T\+I\+Z\+E\+\_\+\+A\+D\+D\+R\+E\+S\+S\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+A\+T\+T\+R\+I\+B\+U\+T\+E\+\_\+\+N\+O\+\_\+\+S\+A\+N\+I\+T\+I\+Z\+E\+\_\+\+A\+D\+D\+R\+E\+S\+S\+\_\+@{G\+T\+E\+S\+T\+\_\+\+A\+T\+T\+R\+I\+B\+U\+T\+E\+\_\+\+N\+O\+\_\+\+S\+A\+N\+I\+T\+I\+Z\+E\+\_\+\+A\+D\+D\+R\+E\+S\+S\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+A\+T\+T\+R\+I\+B\+U\+T\+E\+\_\+\+N\+O\+\_\+\+S\+A\+N\+I\+T\+I\+Z\+E\+\_\+\+A\+D\+D\+R\+E\+S\+S\+\_\+}{GTEST\_ATTRIBUTE\_NO\_SANITIZE\_ADDRESS\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+A\+T\+T\+R\+I\+B\+U\+T\+E\+\_\+\+N\+O\+\_\+\+S\+A\+N\+I\+T\+I\+Z\+E\+\_\+\+A\+D\+D\+R\+E\+S\+S\+\_\+} + + + +Definition at line 1043 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a2a83dd79037e53814a509cc3f5702650}\label{gtest_8h_a2a83dd79037e53814a509cc3f5702650}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+A\+T\+T\+R\+I\+B\+U\+T\+E\+\_\+\+N\+O\+\_\+\+S\+A\+N\+I\+T\+I\+Z\+E\+\_\+\+M\+E\+M\+O\+R\+Y\+\_\+@{G\+T\+E\+S\+T\+\_\+\+A\+T\+T\+R\+I\+B\+U\+T\+E\+\_\+\+N\+O\+\_\+\+S\+A\+N\+I\+T\+I\+Z\+E\+\_\+\+M\+E\+M\+O\+R\+Y\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+A\+T\+T\+R\+I\+B\+U\+T\+E\+\_\+\+N\+O\+\_\+\+S\+A\+N\+I\+T\+I\+Z\+E\+\_\+\+M\+E\+M\+O\+R\+Y\+\_\+@{G\+T\+E\+S\+T\+\_\+\+A\+T\+T\+R\+I\+B\+U\+T\+E\+\_\+\+N\+O\+\_\+\+S\+A\+N\+I\+T\+I\+Z\+E\+\_\+\+M\+E\+M\+O\+R\+Y\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+A\+T\+T\+R\+I\+B\+U\+T\+E\+\_\+\+N\+O\+\_\+\+S\+A\+N\+I\+T\+I\+Z\+E\+\_\+\+M\+E\+M\+O\+R\+Y\+\_\+}{GTEST\_ATTRIBUTE\_NO\_SANITIZE\_MEMORY\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+A\+T\+T\+R\+I\+B\+U\+T\+E\+\_\+\+N\+O\+\_\+\+S\+A\+N\+I\+T\+I\+Z\+E\+\_\+\+M\+E\+M\+O\+R\+Y\+\_\+} + + + +Definition at line 1031 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_abf30a6b1b3a12ecb2cc1bc1a6f5f9646}\label{gtest_8h_abf30a6b1b3a12ecb2cc1bc1a6f5f9646}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+A\+T\+T\+R\+I\+B\+U\+T\+E\+\_\+\+N\+O\+\_\+\+S\+A\+N\+I\+T\+I\+Z\+E\+\_\+\+T\+H\+R\+E\+A\+D\+\_\+@{G\+T\+E\+S\+T\+\_\+\+A\+T\+T\+R\+I\+B\+U\+T\+E\+\_\+\+N\+O\+\_\+\+S\+A\+N\+I\+T\+I\+Z\+E\+\_\+\+T\+H\+R\+E\+A\+D\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+A\+T\+T\+R\+I\+B\+U\+T\+E\+\_\+\+N\+O\+\_\+\+S\+A\+N\+I\+T\+I\+Z\+E\+\_\+\+T\+H\+R\+E\+A\+D\+\_\+@{G\+T\+E\+S\+T\+\_\+\+A\+T\+T\+R\+I\+B\+U\+T\+E\+\_\+\+N\+O\+\_\+\+S\+A\+N\+I\+T\+I\+Z\+E\+\_\+\+T\+H\+R\+E\+A\+D\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+A\+T\+T\+R\+I\+B\+U\+T\+E\+\_\+\+N\+O\+\_\+\+S\+A\+N\+I\+T\+I\+Z\+E\+\_\+\+T\+H\+R\+E\+A\+D\+\_\+}{GTEST\_ATTRIBUTE\_NO\_SANITIZE\_THREAD\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+A\+T\+T\+R\+I\+B\+U\+T\+E\+\_\+\+N\+O\+\_\+\+S\+A\+N\+I\+T\+I\+Z\+E\+\_\+\+T\+H\+R\+E\+A\+D\+\_\+} + + + +Definition at line 1055 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_ae29b00ca46783509cc900cd03d61ef37}\label{gtest_8h_ae29b00ca46783509cc900cd03d61ef37}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+A\+T\+T\+R\+I\+B\+U\+T\+E\+\_\+\+P\+R\+I\+N\+T\+F\+\_\+@{G\+T\+E\+S\+T\+\_\+\+A\+T\+T\+R\+I\+B\+U\+T\+E\+\_\+\+P\+R\+I\+N\+T\+F\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+A\+T\+T\+R\+I\+B\+U\+T\+E\+\_\+\+P\+R\+I\+N\+T\+F\+\_\+@{G\+T\+E\+S\+T\+\_\+\+A\+T\+T\+R\+I\+B\+U\+T\+E\+\_\+\+P\+R\+I\+N\+T\+F\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+A\+T\+T\+R\+I\+B\+U\+T\+E\+\_\+\+P\+R\+I\+N\+T\+F\+\_\+}{GTEST\_ATTRIBUTE\_PRINTF\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+A\+T\+T\+R\+I\+B\+U\+T\+E\+\_\+\+P\+R\+I\+N\+T\+F\+\_\+(\begin{DoxyParamCaption}\item[{}]{string\+\_\+index, }\item[{}]{first\+\_\+to\+\_\+check }\end{DoxyParamCaption})} + + + +Definition at line 916 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_acdd47601a9376161c349a5881ccc6918}\label{gtest_8h_acdd47601a9376161c349a5881ccc6918}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+A\+T\+T\+R\+I\+B\+U\+T\+E\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+@{G\+T\+E\+S\+T\+\_\+\+A\+T\+T\+R\+I\+B\+U\+T\+E\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+A\+T\+T\+R\+I\+B\+U\+T\+E\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+@{G\+T\+E\+S\+T\+\_\+\+A\+T\+T\+R\+I\+B\+U\+T\+E\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+A\+T\+T\+R\+I\+B\+U\+T\+E\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+}{GTEST\_ATTRIBUTE\_UNUSED\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+A\+T\+T\+R\+I\+B\+U\+T\+E\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+} + + + +Definition at line 899 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_ab54343f0a36dc4cb0ce8a478dd7847b8}\label{gtest_8h_ab54343f0a36dc4cb0ce8a478dd7847b8}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+C\+H\+E\+C\+K\+\_\+@{G\+T\+E\+S\+T\+\_\+\+C\+H\+E\+C\+K\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+C\+H\+E\+C\+K\+\_\+@{G\+T\+E\+S\+T\+\_\+\+C\+H\+E\+C\+K\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+C\+H\+E\+C\+K\+\_\+}{GTEST\_CHECK\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+C\+H\+E\+C\+K\+\_\+(\begin{DoxyParamCaption}\item[{}]{condition }\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode} +GTEST\_AMBIGUOUS\_ELSE\_BLOCKER\_ \(\backslash\) + if (::\mbox{\hyperlink{namespacetesting_1_1internal_ab2709373c78eb8b1c22a6ba30cceba52}{testing::internal::IsTrue}}(condition)) \(\backslash\) + ; \mbox{\hyperlink{gtest_8h_a8ef4cb4c465db8c15464aecc6d9510ef}{\(\backslash\)}} +\mbox{\hyperlink{gtest_8h_a8ef4cb4c465db8c15464aecc6d9510ef}{ else \(\backslash\)}} +\mbox{\hyperlink{gtest_8h_a8ef4cb4c465db8c15464aecc6d9510ef}{ GTEST\_LOG\_}}(FATAL) << \textcolor{stringliteral}{"Condition "} #condition \textcolor{stringliteral}{" failed. "} +\end{DoxyCode} + + +Definition at line 1270 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a38f6151210e363ad7c69a836b13cf0af}\label{gtest_8h_a38f6151210e363ad7c69a836b13cf0af}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+C\+H\+E\+C\+K\+\_\+\+P\+O\+S\+I\+X\+\_\+\+S\+U\+C\+C\+E\+S\+S\+\_\+@{G\+T\+E\+S\+T\+\_\+\+C\+H\+E\+C\+K\+\_\+\+P\+O\+S\+I\+X\+\_\+\+S\+U\+C\+C\+E\+S\+S\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+C\+H\+E\+C\+K\+\_\+\+P\+O\+S\+I\+X\+\_\+\+S\+U\+C\+C\+E\+S\+S\+\_\+@{G\+T\+E\+S\+T\+\_\+\+C\+H\+E\+C\+K\+\_\+\+P\+O\+S\+I\+X\+\_\+\+S\+U\+C\+C\+E\+S\+S\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+C\+H\+E\+C\+K\+\_\+\+P\+O\+S\+I\+X\+\_\+\+S\+U\+C\+C\+E\+S\+S\+\_\+}{GTEST\_CHECK\_POSIX\_SUCCESS\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+C\+H\+E\+C\+K\+\_\+\+P\+O\+S\+I\+X\+\_\+\+S\+U\+C\+C\+E\+S\+S\+\_\+(\begin{DoxyParamCaption}\item[{}]{posix\+\_\+call }\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode} +\textcolor{keywordflow}{if} (\textcolor{keyword}{const} \textcolor{keywordtype}{int} gtest\_error = (posix\_call)) \(\backslash\) + GTEST\_LOG\_(FATAL) << #posix\_call << \textcolor{stringliteral}{"failed with error "} \(\backslash\) + << gtest\_error +\end{DoxyCode} + + +Definition at line 1283 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_ae1f37dc71d5daa6fb49ca1b6047d4a8c}\label{gtest_8h_ae1f37dc71d5daa6fb49ca1b6047d4a8c}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+C\+O\+M\+P\+I\+L\+E\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+@{G\+T\+E\+S\+T\+\_\+\+C\+O\+M\+P\+I\+L\+E\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+C\+O\+M\+P\+I\+L\+E\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+@{G\+T\+E\+S\+T\+\_\+\+C\+O\+M\+P\+I\+L\+E\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+C\+O\+M\+P\+I\+L\+E\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+}{GTEST\_COMPILE\_ASSERT\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+C\+O\+M\+P\+I\+L\+E\+\_\+\+A\+S\+S\+E\+R\+T\+\_\+(\begin{DoxyParamCaption}\item[{}]{expr, }\item[{}]{msg }\end{DoxyParamCaption})~static\+\_\+assert(expr, \#msg)} + + + +Definition at line 1086 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_ae3c336cbe1ae2bd1b1d019333e4428a0}\label{gtest_8h_ae3c336cbe1ae2bd1b1d019333e4428a0}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+C\+O\+N\+C\+A\+T\+\_\+\+T\+O\+K\+E\+N\+\_\+@{G\+T\+E\+S\+T\+\_\+\+C\+O\+N\+C\+A\+T\+\_\+\+T\+O\+K\+E\+N\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+C\+O\+N\+C\+A\+T\+\_\+\+T\+O\+K\+E\+N\+\_\+@{G\+T\+E\+S\+T\+\_\+\+C\+O\+N\+C\+A\+T\+\_\+\+T\+O\+K\+E\+N\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+C\+O\+N\+C\+A\+T\+\_\+\+T\+O\+K\+E\+N\+\_\+}{GTEST\_CONCAT\_TOKEN\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+C\+O\+N\+C\+A\+T\+\_\+\+T\+O\+K\+E\+N\+\_\+(\begin{DoxyParamCaption}\item[{}]{foo, }\item[{}]{bar }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_aa39fb5346d3573feebe4257cb3a01fde}{G\+T\+E\+S\+T\+\_\+\+C\+O\+N\+C\+A\+T\+\_\+\+T\+O\+K\+E\+N\+\_\+\+I\+M\+P\+L\+\_\+}}(foo, bar)} + + + +Definition at line 6510 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_aa39fb5346d3573feebe4257cb3a01fde}\label{gtest_8h_aa39fb5346d3573feebe4257cb3a01fde}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+C\+O\+N\+C\+A\+T\+\_\+\+T\+O\+K\+E\+N\+\_\+\+I\+M\+P\+L\+\_\+@{G\+T\+E\+S\+T\+\_\+\+C\+O\+N\+C\+A\+T\+\_\+\+T\+O\+K\+E\+N\+\_\+\+I\+M\+P\+L\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+C\+O\+N\+C\+A\+T\+\_\+\+T\+O\+K\+E\+N\+\_\+\+I\+M\+P\+L\+\_\+@{G\+T\+E\+S\+T\+\_\+\+C\+O\+N\+C\+A\+T\+\_\+\+T\+O\+K\+E\+N\+\_\+\+I\+M\+P\+L\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+C\+O\+N\+C\+A\+T\+\_\+\+T\+O\+K\+E\+N\+\_\+\+I\+M\+P\+L\+\_\+}{GTEST\_CONCAT\_TOKEN\_IMPL\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+C\+O\+N\+C\+A\+T\+\_\+\+T\+O\+K\+E\+N\+\_\+\+I\+M\+P\+L\+\_\+(\begin{DoxyParamCaption}\item[{}]{foo, }\item[{}]{bar }\end{DoxyParamCaption})~foo \#\# bar} + + + +Definition at line 6511 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a14eb0e9c6e0df765d1fbfd2db6966d14}\label{gtest_8h_a14eb0e9c6e0df765d1fbfd2db6966d14}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+D\+E\+C\+L\+A\+R\+E\+\_\+bool\+\_\+@{G\+T\+E\+S\+T\+\_\+\+D\+E\+C\+L\+A\+R\+E\+\_\+bool\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+D\+E\+C\+L\+A\+R\+E\+\_\+bool\+\_\+@{G\+T\+E\+S\+T\+\_\+\+D\+E\+C\+L\+A\+R\+E\+\_\+bool\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+D\+E\+C\+L\+A\+R\+E\+\_\+bool\+\_\+}{GTEST\_DECLARE\_bool\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+D\+E\+C\+L\+A\+R\+E\+\_\+bool\+\_\+(\begin{DoxyParamCaption}\item[{}]{name }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} extern bool \mbox{\hyperlink{gtest_8h_a828f4e34a1c4b510da50ec1563e3562a}{G\+T\+E\+S\+T\+\_\+\+F\+L\+AG}}(name)} + + + +Definition at line 2496 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_aab2ee98cb616054b1d3a7dc71efe81fc}\label{gtest_8h_aab2ee98cb616054b1d3a7dc71efe81fc}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+D\+E\+C\+L\+A\+R\+E\+\_\+int32\+\_\+@{G\+T\+E\+S\+T\+\_\+\+D\+E\+C\+L\+A\+R\+E\+\_\+int32\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+D\+E\+C\+L\+A\+R\+E\+\_\+int32\+\_\+@{G\+T\+E\+S\+T\+\_\+\+D\+E\+C\+L\+A\+R\+E\+\_\+int32\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+D\+E\+C\+L\+A\+R\+E\+\_\+int32\+\_\+}{GTEST\_DECLARE\_int32\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+D\+E\+C\+L\+A\+R\+E\+\_\+int32\+\_\+(\begin{DoxyParamCaption}\item[{}]{name }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} extern \+::\mbox{\hyperlink{namespacetesting_1_1internal_a8ee38faaf875f133358abaf9bc056cec}{testing\+::internal\+::\+Int32}} \mbox{\hyperlink{gtest_8h_a828f4e34a1c4b510da50ec1563e3562a}{G\+T\+E\+S\+T\+\_\+\+F\+L\+AG}}(name)} + + + +Definition at line 2497 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_af0970cdea09f16dbb1dbfccdaa693eeb}\label{gtest_8h_af0970cdea09f16dbb1dbfccdaa693eeb}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+D\+E\+C\+L\+A\+R\+E\+\_\+\+S\+T\+A\+T\+I\+C\+\_\+\+M\+U\+T\+E\+X\+\_\+@{G\+T\+E\+S\+T\+\_\+\+D\+E\+C\+L\+A\+R\+E\+\_\+\+S\+T\+A\+T\+I\+C\+\_\+\+M\+U\+T\+E\+X\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+D\+E\+C\+L\+A\+R\+E\+\_\+\+S\+T\+A\+T\+I\+C\+\_\+\+M\+U\+T\+E\+X\+\_\+@{G\+T\+E\+S\+T\+\_\+\+D\+E\+C\+L\+A\+R\+E\+\_\+\+S\+T\+A\+T\+I\+C\+\_\+\+M\+U\+T\+E\+X\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+D\+E\+C\+L\+A\+R\+E\+\_\+\+S\+T\+A\+T\+I\+C\+\_\+\+M\+U\+T\+E\+X\+\_\+}{GTEST\_DECLARE\_STATIC\_MUTEX\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+D\+E\+C\+L\+A\+R\+E\+\_\+\+S\+T\+A\+T\+I\+C\+\_\+\+M\+U\+T\+E\+X\+\_\+(\begin{DoxyParamCaption}\item[{}]{mutex }\end{DoxyParamCaption})~extern \+::\mbox{\hyperlink{classtesting_1_1internal_1_1_mutex}{testing\+::internal\+::\+Mutex}} mutex} + + + +Definition at line 2147 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a9f74eee05f7ee5534139a622fe7da7dd}\label{gtest_8h_a9f74eee05f7ee5534139a622fe7da7dd}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+D\+E\+C\+L\+A\+R\+E\+\_\+string\+\_\+@{G\+T\+E\+S\+T\+\_\+\+D\+E\+C\+L\+A\+R\+E\+\_\+string\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+D\+E\+C\+L\+A\+R\+E\+\_\+string\+\_\+@{G\+T\+E\+S\+T\+\_\+\+D\+E\+C\+L\+A\+R\+E\+\_\+string\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+D\+E\+C\+L\+A\+R\+E\+\_\+string\+\_\+}{GTEST\_DECLARE\_string\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+D\+E\+C\+L\+A\+R\+E\+\_\+string\+\_\+(\begin{DoxyParamCaption}\item[{}]{name }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} extern \+::std\+::string \mbox{\hyperlink{gtest_8h_a828f4e34a1c4b510da50ec1563e3562a}{G\+T\+E\+S\+T\+\_\+\+F\+L\+AG}}(name)} + + + +Definition at line 2499 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a491d09ee62f1c9cfeafa3dbf75aaa9e2}\label{gtest_8h_a491d09ee62f1c9cfeafa3dbf75aaa9e2}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+A\+U\+L\+T\+\_\+\+D\+E\+A\+T\+H\+\_\+\+T\+E\+S\+T\+\_\+\+S\+T\+Y\+LE@{G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+A\+U\+L\+T\+\_\+\+D\+E\+A\+T\+H\+\_\+\+T\+E\+S\+T\+\_\+\+S\+T\+Y\+LE}} +\index{G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+A\+U\+L\+T\+\_\+\+D\+E\+A\+T\+H\+\_\+\+T\+E\+S\+T\+\_\+\+S\+T\+Y\+LE@{G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+A\+U\+L\+T\+\_\+\+D\+E\+A\+T\+H\+\_\+\+T\+E\+S\+T\+\_\+\+S\+T\+Y\+LE}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+A\+U\+L\+T\+\_\+\+D\+E\+A\+T\+H\+\_\+\+T\+E\+S\+T\+\_\+\+S\+T\+Y\+LE}{GTEST\_DEFAULT\_DEATH\_TEST\_STYLE}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+A\+U\+L\+T\+\_\+\+D\+E\+A\+T\+H\+\_\+\+T\+E\+S\+T\+\_\+\+S\+T\+Y\+LE~\char`\"{}fast\char`\"{}} + + + +Definition at line 1002 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a48e05814779e5a2f432b06a12618a760}\label{gtest_8h_a48e05814779e5a2f432b06a12618a760}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+bool\+\_\+@{G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+bool\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+bool\+\_\+@{G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+bool\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+bool\+\_\+}{GTEST\_DEFINE\_bool\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+bool\+\_\+(\begin{DoxyParamCaption}\item[{}]{name, }\item[{}]{default\+\_\+val, }\item[{}]{doc }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} bool \mbox{\hyperlink{gtest_8h_a828f4e34a1c4b510da50ec1563e3562a}{G\+T\+E\+S\+T\+\_\+\+F\+L\+AG}}(name) = (default\+\_\+val)} + + + +Definition at line 2503 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a88ee2f19589ffff86ca742fd33611358}\label{gtest_8h_a88ee2f19589ffff86ca742fd33611358}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+int32\+\_\+@{G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+int32\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+int32\+\_\+@{G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+int32\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+int32\+\_\+}{GTEST\_DEFINE\_int32\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+int32\+\_\+(\begin{DoxyParamCaption}\item[{}]{name, }\item[{}]{default\+\_\+val, }\item[{}]{doc }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} \+::\mbox{\hyperlink{namespacetesting_1_1internal_a8ee38faaf875f133358abaf9bc056cec}{testing\+::internal\+::\+Int32}} \mbox{\hyperlink{gtest_8h_a828f4e34a1c4b510da50ec1563e3562a}{G\+T\+E\+S\+T\+\_\+\+F\+L\+AG}}(name) = (default\+\_\+val)} + + + +Definition at line 2505 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a85d5cd679fdbe87383e7dfd1c6651eaa}\label{gtest_8h_a85d5cd679fdbe87383e7dfd1c6651eaa}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+\+S\+T\+A\+T\+I\+C\+\_\+\+M\+U\+T\+E\+X\+\_\+@{G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+\+S\+T\+A\+T\+I\+C\+\_\+\+M\+U\+T\+E\+X\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+\+S\+T\+A\+T\+I\+C\+\_\+\+M\+U\+T\+E\+X\+\_\+@{G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+\+S\+T\+A\+T\+I\+C\+\_\+\+M\+U\+T\+E\+X\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+\+S\+T\+A\+T\+I\+C\+\_\+\+M\+U\+T\+E\+X\+\_\+}{GTEST\_DEFINE\_STATIC\_MUTEX\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+\+S\+T\+A\+T\+I\+C\+\_\+\+M\+U\+T\+E\+X\+\_\+(\begin{DoxyParamCaption}\item[{}]{mutex }\end{DoxyParamCaption})~\+::\mbox{\hyperlink{classtesting_1_1internal_1_1_mutex}{testing\+::internal\+::\+Mutex}} mutex} + + + +Definition at line 2150 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a885e18fe217a6e85553d408b99252c12}\label{gtest_8h_a885e18fe217a6e85553d408b99252c12}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+string\+\_\+@{G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+string\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+string\+\_\+@{G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+string\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+string\+\_\+}{GTEST\_DEFINE\_string\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+string\+\_\+(\begin{DoxyParamCaption}\item[{}]{name, }\item[{}]{default\+\_\+val, }\item[{}]{doc }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} \+::std\+::string \mbox{\hyperlink{gtest_8h_a828f4e34a1c4b510da50ec1563e3562a}{G\+T\+E\+S\+T\+\_\+\+F\+L\+AG}}(name) = (default\+\_\+val)} + + + +Definition at line 2507 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a21086d276b1a64d6763ee8a94b12c1b8}\label{gtest_8h_a21086d276b1a64d6763ee8a94b12c1b8}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+D\+E\+V\+\_\+\+E\+M\+A\+I\+L\+\_\+@{G\+T\+E\+S\+T\+\_\+\+D\+E\+V\+\_\+\+E\+M\+A\+I\+L\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+D\+E\+V\+\_\+\+E\+M\+A\+I\+L\+\_\+@{G\+T\+E\+S\+T\+\_\+\+D\+E\+V\+\_\+\+E\+M\+A\+I\+L\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+D\+E\+V\+\_\+\+E\+M\+A\+I\+L\+\_\+}{GTEST\_DEV\_EMAIL\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+D\+E\+V\+\_\+\+E\+M\+A\+I\+L\+\_\+~\char`\"{}googletestframework@@googlegroups.\+com\char`\"{}} + + + +Definition at line 513 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_aa0dc86dc9837f1610e91da65458f53b3}\label{gtest_8h_aa0dc86dc9837f1610e91da65458f53b3}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+D\+E\+P\+R\+E\+C\+A\+T\+E\+D\+\_\+\+P\+O\+P\+\_\+@{G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+D\+E\+P\+R\+E\+C\+A\+T\+E\+D\+\_\+\+P\+O\+P\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+D\+E\+P\+R\+E\+C\+A\+T\+E\+D\+\_\+\+P\+O\+P\+\_\+@{G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+D\+E\+P\+R\+E\+C\+A\+T\+E\+D\+\_\+\+P\+O\+P\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+D\+E\+P\+R\+E\+C\+A\+T\+E\+D\+\_\+\+P\+O\+P\+\_\+}{GTEST\_DISABLE\_MSC\_DEPRECATED\_POP\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+D\+E\+P\+R\+E\+C\+A\+T\+E\+D\+\_\+\+P\+O\+P\+\_\+(\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest-all_8cc_a789f37f9c345c2032699c194a58623d9}{G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+W\+A\+R\+N\+I\+N\+G\+S\+\_\+\+P\+O\+P\+\_\+}}()} + + + +Definition at line 561 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a5b130138db254deaf29dbe3dffa1a2a8}\label{gtest_8h_a5b130138db254deaf29dbe3dffa1a2a8}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+D\+E\+P\+R\+E\+C\+A\+T\+E\+D\+\_\+\+P\+U\+S\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+D\+E\+P\+R\+E\+C\+A\+T\+E\+D\+\_\+\+P\+U\+S\+H\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+D\+E\+P\+R\+E\+C\+A\+T\+E\+D\+\_\+\+P\+U\+S\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+D\+E\+P\+R\+E\+C\+A\+T\+E\+D\+\_\+\+P\+U\+S\+H\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+D\+E\+P\+R\+E\+C\+A\+T\+E\+D\+\_\+\+P\+U\+S\+H\+\_\+}{GTEST\_DISABLE\_MSC\_DEPRECATED\_PUSH\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+D\+E\+P\+R\+E\+C\+A\+T\+E\+D\+\_\+\+P\+U\+S\+H\+\_\+(\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_a88f79832f9d045112a76e9da8611cc13}{G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+W\+A\+R\+N\+I\+N\+G\+S\+\_\+\+P\+U\+S\+H\+\_\+}}(4996)} + + + +Definition at line 559 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_aebf8277c9069c1e124f9a5bbe2948061}\label{gtest_8h_aebf8277c9069c1e124f9a5bbe2948061}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+W\+A\+R\+N\+I\+N\+G\+S\+\_\+\+P\+O\+P\+\_\+@{G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+W\+A\+R\+N\+I\+N\+G\+S\+\_\+\+P\+O\+P\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+W\+A\+R\+N\+I\+N\+G\+S\+\_\+\+P\+O\+P\+\_\+@{G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+W\+A\+R\+N\+I\+N\+G\+S\+\_\+\+P\+O\+P\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+W\+A\+R\+N\+I\+N\+G\+S\+\_\+\+P\+O\+P\+\_\+}{GTEST\_DISABLE\_MSC\_WARNINGS\_POP\_}} +{\footnotesize\ttfamily G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+W\+A\+R\+N\+I\+N\+G\+S\+\_\+\+P\+O\+P\+\_\+(\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + + + +Definition at line 546 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a86994cc68e844d8b82089c70408dfc61}\label{gtest_8h_a86994cc68e844d8b82089c70408dfc61}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+W\+A\+R\+N\+I\+N\+G\+S\+\_\+\+P\+U\+S\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+W\+A\+R\+N\+I\+N\+G\+S\+\_\+\+P\+U\+S\+H\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+W\+A\+R\+N\+I\+N\+G\+S\+\_\+\+P\+U\+S\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+W\+A\+R\+N\+I\+N\+G\+S\+\_\+\+P\+U\+S\+H\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+W\+A\+R\+N\+I\+N\+G\+S\+\_\+\+P\+U\+S\+H\+\_\+}{GTEST\_DISABLE\_MSC\_WARNINGS\_PUSH\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+W\+A\+R\+N\+I\+N\+G\+S\+\_\+\+P\+U\+S\+H\+\_\+(\begin{DoxyParamCaption}\item[{}]{warnings }\end{DoxyParamCaption})} + + + +Definition at line 545 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_ac593b50ce24257d5b6aa84845c344c9e}\label{gtest_8h_ac593b50ce24257d5b6aa84845c344c9e}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+L\+L\+O\+W\+\_\+\+A\+S\+S\+I\+G\+N\+\_\+@{G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+L\+L\+O\+W\+\_\+\+A\+S\+S\+I\+G\+N\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+L\+L\+O\+W\+\_\+\+A\+S\+S\+I\+G\+N\+\_\+@{G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+L\+L\+O\+W\+\_\+\+A\+S\+S\+I\+G\+N\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+L\+L\+O\+W\+\_\+\+A\+S\+S\+I\+G\+N\+\_\+}{GTEST\_DISALLOW\_ASSIGN\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+L\+L\+O\+W\+\_\+\+A\+S\+S\+I\+G\+N\+\_\+(\begin{DoxyParamCaption}\item[{}]{type }\end{DoxyParamCaption})~void operator=(type const \&) = delete} + + + +Definition at line 922 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_aed8c1888c32b588b0681e88b95031e29}\label{gtest_8h_aed8c1888c32b588b0681e88b95031e29}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+L\+L\+O\+W\+\_\+\+C\+O\+P\+Y\+\_\+\+A\+N\+D\+\_\+\+A\+S\+S\+I\+G\+N\+\_\+@{G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+L\+L\+O\+W\+\_\+\+C\+O\+P\+Y\+\_\+\+A\+N\+D\+\_\+\+A\+S\+S\+I\+G\+N\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+L\+L\+O\+W\+\_\+\+C\+O\+P\+Y\+\_\+\+A\+N\+D\+\_\+\+A\+S\+S\+I\+G\+N\+\_\+@{G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+L\+L\+O\+W\+\_\+\+C\+O\+P\+Y\+\_\+\+A\+N\+D\+\_\+\+A\+S\+S\+I\+G\+N\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+L\+L\+O\+W\+\_\+\+C\+O\+P\+Y\+\_\+\+A\+N\+D\+\_\+\+A\+S\+S\+I\+G\+N\+\_\+}{GTEST\_DISALLOW\_COPY\_AND\_ASSIGN\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+L\+L\+O\+W\+\_\+\+C\+O\+P\+Y\+\_\+\+A\+N\+D\+\_\+\+A\+S\+S\+I\+G\+N\+\_\+(\begin{DoxyParamCaption}\item[{}]{type }\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode} +type(type \textcolor{keyword}{const} &) = \textcolor{keyword}{delete}; \(\backslash\) + GTEST\_DISALLOW\_ASSIGN\_(type) +\end{DoxyCode} + + +Definition at line 927 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a149f693bd59fa1bc937af54c0cdcb32f}\label{gtest_8h_a149f693bd59fa1bc937af54c0cdcb32f}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+E\+X\+C\+L\+U\+S\+I\+V\+E\+\_\+\+L\+O\+C\+K\+\_\+\+R\+E\+Q\+U\+I\+R\+E\+D\+\_\+@{G\+T\+E\+S\+T\+\_\+\+E\+X\+C\+L\+U\+S\+I\+V\+E\+\_\+\+L\+O\+C\+K\+\_\+\+R\+E\+Q\+U\+I\+R\+E\+D\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+E\+X\+C\+L\+U\+S\+I\+V\+E\+\_\+\+L\+O\+C\+K\+\_\+\+R\+E\+Q\+U\+I\+R\+E\+D\+\_\+@{G\+T\+E\+S\+T\+\_\+\+E\+X\+C\+L\+U\+S\+I\+V\+E\+\_\+\+L\+O\+C\+K\+\_\+\+R\+E\+Q\+U\+I\+R\+E\+D\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+E\+X\+C\+L\+U\+S\+I\+V\+E\+\_\+\+L\+O\+C\+K\+\_\+\+R\+E\+Q\+U\+I\+R\+E\+D\+\_\+}{GTEST\_EXCLUSIVE\_LOCK\_REQUIRED\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+E\+X\+C\+L\+U\+S\+I\+V\+E\+\_\+\+L\+O\+C\+K\+\_\+\+R\+E\+Q\+U\+I\+R\+E\+D\+\_\+(\begin{DoxyParamCaption}\item[{}]{locks }\end{DoxyParamCaption})} + + + +Definition at line 2514 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a636231436707c30d6778f79ae96f5dc6}\label{gtest_8h_a636231436707c30d6778f79ae96f5dc6}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+F\+A\+IL@{G\+T\+E\+S\+T\+\_\+\+F\+A\+IL}} +\index{G\+T\+E\+S\+T\+\_\+\+F\+A\+IL@{G\+T\+E\+S\+T\+\_\+\+F\+A\+IL}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+F\+A\+IL}{GTEST\_FAIL}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+F\+A\+IL(\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_a0f9a4c3ea82cc7bf4478eaffdc168358}{G\+T\+E\+S\+T\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}}(\char`\"{}Failed\char`\"{})} + + + +Definition at line 16542 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a0f9a4c3ea82cc7bf4478eaffdc168358}\label{gtest_8h_a0f9a4c3ea82cc7bf4478eaffdc168358}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+@{G\+T\+E\+S\+T\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+@{G\+T\+E\+S\+T\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}{GTEST\_FATAL\_FAILURE\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+(\begin{DoxyParamCaption}\item[{}]{message }\end{DoxyParamCaption})~return \mbox{\hyperlink{gtest_8h_a94c73d5368ec946bc354d0992ad00810}{G\+T\+E\+S\+T\+\_\+\+M\+E\+S\+S\+A\+G\+E\+\_\+}}(message, \+::testing\+::\+Test\+Part\+Result\+::k\+Fatal\+Failure)} + + + +Definition at line 7760 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a828f4e34a1c4b510da50ec1563e3562a}\label{gtest_8h_a828f4e34a1c4b510da50ec1563e3562a}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+F\+L\+AG@{G\+T\+E\+S\+T\+\_\+\+F\+L\+AG}} +\index{G\+T\+E\+S\+T\+\_\+\+F\+L\+AG@{G\+T\+E\+S\+T\+\_\+\+F\+L\+AG}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+F\+L\+AG}{GTEST\_FLAG}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+F\+L\+AG(\begin{DoxyParamCaption}\item[{}]{name }\end{DoxyParamCaption})~F\+L\+A\+G\+S\+\_\+gtest\+\_\+\#\#name} + + + +Definition at line 2485 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a088e84784c589ba9b1fc48602ad8eabf}\label{gtest_8h_a088e84784c589ba9b1fc48602ad8eabf}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+F\+L\+A\+G\+\_\+\+P\+R\+E\+F\+I\+X\+\_\+@{G\+T\+E\+S\+T\+\_\+\+F\+L\+A\+G\+\_\+\+P\+R\+E\+F\+I\+X\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+F\+L\+A\+G\+\_\+\+P\+R\+E\+F\+I\+X\+\_\+@{G\+T\+E\+S\+T\+\_\+\+F\+L\+A\+G\+\_\+\+P\+R\+E\+F\+I\+X\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+F\+L\+A\+G\+\_\+\+P\+R\+E\+F\+I\+X\+\_\+}{GTEST\_FLAG\_PREFIX\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+F\+L\+A\+G\+\_\+\+P\+R\+E\+F\+I\+X\+\_\+~\char`\"{}gtest\+\_\+\char`\"{}} + + + +Definition at line 514 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a4251ff898f9f94ec6b8b9402c3436759}\label{gtest_8h_a4251ff898f9f94ec6b8b9402c3436759}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+F\+L\+A\+G\+\_\+\+P\+R\+E\+F\+I\+X\+\_\+\+D\+A\+S\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+F\+L\+A\+G\+\_\+\+P\+R\+E\+F\+I\+X\+\_\+\+D\+A\+S\+H\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+F\+L\+A\+G\+\_\+\+P\+R\+E\+F\+I\+X\+\_\+\+D\+A\+S\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+F\+L\+A\+G\+\_\+\+P\+R\+E\+F\+I\+X\+\_\+\+D\+A\+S\+H\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+F\+L\+A\+G\+\_\+\+P\+R\+E\+F\+I\+X\+\_\+\+D\+A\+S\+H\+\_\+}{GTEST\_FLAG\_PREFIX\_DASH\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+F\+L\+A\+G\+\_\+\+P\+R\+E\+F\+I\+X\+\_\+\+D\+A\+S\+H\+\_\+~\char`\"{}gtest-\/\char`\"{}} + + + +Definition at line 515 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a4018b7f288f974d022df397e2730633a}\label{gtest_8h_a4018b7f288f974d022df397e2730633a}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+F\+L\+A\+G\+\_\+\+P\+R\+E\+F\+I\+X\+\_\+\+U\+P\+P\+E\+R\+\_\+@{G\+T\+E\+S\+T\+\_\+\+F\+L\+A\+G\+\_\+\+P\+R\+E\+F\+I\+X\+\_\+\+U\+P\+P\+E\+R\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+F\+L\+A\+G\+\_\+\+P\+R\+E\+F\+I\+X\+\_\+\+U\+P\+P\+E\+R\+\_\+@{G\+T\+E\+S\+T\+\_\+\+F\+L\+A\+G\+\_\+\+P\+R\+E\+F\+I\+X\+\_\+\+U\+P\+P\+E\+R\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+F\+L\+A\+G\+\_\+\+P\+R\+E\+F\+I\+X\+\_\+\+U\+P\+P\+E\+R\+\_\+}{GTEST\_FLAG\_PREFIX\_UPPER\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+F\+L\+A\+G\+\_\+\+P\+R\+E\+F\+I\+X\+\_\+\+U\+P\+P\+E\+R\+\_\+~\char`\"{}G\+T\+E\+S\+T\+\_\+\char`\"{}} + + + +Definition at line 516 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a3749ef4fba6b3c3993609b336031644d}\label{gtest_8h_a3749ef4fba6b3c3993609b336031644d}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+F\+L\+A\+G\+\_\+\+S\+A\+V\+E\+R\+\_\+@{G\+T\+E\+S\+T\+\_\+\+F\+L\+A\+G\+\_\+\+S\+A\+V\+E\+R\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+F\+L\+A\+G\+\_\+\+S\+A\+V\+E\+R\+\_\+@{G\+T\+E\+S\+T\+\_\+\+F\+L\+A\+G\+\_\+\+S\+A\+V\+E\+R\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+F\+L\+A\+G\+\_\+\+S\+A\+V\+E\+R\+\_\+}{GTEST\_FLAG\_SAVER\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+F\+L\+A\+G\+\_\+\+S\+A\+V\+E\+R\+\_\+~\+::testing\+::internal\+::\+G\+Test\+Flag\+Saver} + + + +Definition at line 2493 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_acf0ee1851e6d342237bb64806ee1fd27}\label{gtest_8h_acf0ee1851e6d342237bb64806ee1fd27}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+A\+L\+T\+\_\+\+P\+A\+T\+H\+\_\+\+S\+E\+P\+\_\+@{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+A\+L\+T\+\_\+\+P\+A\+T\+H\+\_\+\+S\+E\+P\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+A\+L\+T\+\_\+\+P\+A\+T\+H\+\_\+\+S\+E\+P\+\_\+@{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+A\+L\+T\+\_\+\+P\+A\+T\+H\+\_\+\+S\+E\+P\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+A\+L\+T\+\_\+\+P\+A\+T\+H\+\_\+\+S\+E\+P\+\_\+}{GTEST\_HAS\_ALT\_PATH\_SEP\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+A\+L\+T\+\_\+\+P\+A\+T\+H\+\_\+\+S\+E\+P\+\_\+~0} + + + +Definition at line 2222 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a40c075a7f969a694e59532356be59fd5}\label{gtest_8h_a40c075a7f969a694e59532356be59fd5}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+C\+L\+O\+NE@{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+C\+L\+O\+NE}} +\index{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+C\+L\+O\+NE@{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+C\+L\+O\+NE}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+C\+L\+O\+NE}{GTEST\_HAS\_CLONE}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+C\+L\+O\+NE~0} + + + +Definition at line 817 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_ae6239a8ccf4c230008d1db1ea8bd738e}\label{gtest_8h_ae6239a8ccf4c230008d1db1ea8bd738e}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+C\+X\+X\+A\+B\+I\+\_\+\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+C\+X\+X\+A\+B\+I\+\_\+\+H\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+C\+X\+X\+A\+B\+I\+\_\+\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+C\+X\+X\+A\+B\+I\+\_\+\+H\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+C\+X\+X\+A\+B\+I\+\_\+\+H\+\_\+}{GTEST\_HAS\_CXXABI\_H\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+C\+X\+X\+A\+B\+I\+\_\+\+H\+\_\+~0} + + + +Definition at line 1017 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_aedcf220690e6589d0fc2bd3db768ea66}\label{gtest_8h_aedcf220690e6589d0fc2bd3db768ea66}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+E\+X\+C\+E\+P\+T\+I\+O\+NS@{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+E\+X\+C\+E\+P\+T\+I\+O\+NS}} +\index{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+E\+X\+C\+E\+P\+T\+I\+O\+NS@{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+E\+X\+C\+E\+P\+T\+I\+O\+NS}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+E\+X\+C\+E\+P\+T\+I\+O\+NS}{GTEST\_HAS\_EXCEPTIONS}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+E\+X\+C\+E\+P\+T\+I\+O\+NS~0} + + + +Definition at line 675 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a6ab57c4a17233dd4ed30c2926bb99cc5}\label{gtest_8h_a6ab57c4a17233dd4ed30c2926bb99cc5}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+G\+L\+O\+B\+A\+L\+\_\+\+S\+T\+R\+I\+NG@{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+G\+L\+O\+B\+A\+L\+\_\+\+S\+T\+R\+I\+NG}} +\index{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+G\+L\+O\+B\+A\+L\+\_\+\+S\+T\+R\+I\+NG@{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+G\+L\+O\+B\+A\+L\+\_\+\+S\+T\+R\+I\+NG}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+G\+L\+O\+B\+A\+L\+\_\+\+S\+T\+R\+I\+NG}{GTEST\_HAS\_GLOBAL\_STRING}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+G\+L\+O\+B\+A\+L\+\_\+\+S\+T\+R\+I\+NG~0} + + + +Definition at line 689 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_afca9ecaf5846561187a15b75013aa85b}\label{gtest_8h_afca9ecaf5846561187a15b75013aa85b}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+G\+L\+O\+B\+A\+L\+\_\+\+W\+S\+T\+R\+I\+NG@{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+G\+L\+O\+B\+A\+L\+\_\+\+W\+S\+T\+R\+I\+NG}} +\index{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+G\+L\+O\+B\+A\+L\+\_\+\+W\+S\+T\+R\+I\+NG@{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+G\+L\+O\+B\+A\+L\+\_\+\+W\+S\+T\+R\+I\+NG}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+G\+L\+O\+B\+A\+L\+\_\+\+W\+S\+T\+R\+I\+NG}{GTEST\_HAS\_GLOBAL\_WSTRING}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+G\+L\+O\+B\+A\+L\+\_\+\+W\+S\+T\+R\+I\+NG~(\mbox{\hyperlink{gtest_8h_a6e087748d8bbd2ca57c487b6ad268670}{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+S\+T\+D\+\_\+\+W\+S\+T\+R\+I\+NG}} \&\& \mbox{\hyperlink{gtest_8h_a6ab57c4a17233dd4ed30c2926bb99cc5}{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+G\+L\+O\+B\+A\+L\+\_\+\+S\+T\+R\+I\+NG}})} + + + +Definition at line 706 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_af5c4295ea1d76f07f65934f659792431}\label{gtest_8h_af5c4295ea1d76f07f65934f659792431}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+P\+O\+S\+I\+X\+\_\+\+RE@{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+P\+O\+S\+I\+X\+\_\+\+RE}} +\index{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+P\+O\+S\+I\+X\+\_\+\+RE@{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+P\+O\+S\+I\+X\+\_\+\+RE}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+P\+O\+S\+I\+X\+\_\+\+RE}{GTEST\_HAS\_POSIX\_RE}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+P\+O\+S\+I\+X\+\_\+\+RE~(!G\+T\+E\+S\+T\+\_\+\+O\+S\+\_\+\+W\+I\+N\+D\+O\+WS)} + + + +Definition at line 603 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a3341397e1952de0b9cd88762d4d3ae4b}\label{gtest_8h_a3341397e1952de0b9cd88762d4d3ae4b}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+P\+T\+H\+R\+E\+AD@{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+P\+T\+H\+R\+E\+AD}} +\index{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+P\+T\+H\+R\+E\+AD@{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+P\+T\+H\+R\+E\+AD}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+P\+T\+H\+R\+E\+AD}{GTEST\_HAS\_PTHREAD}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+P\+T\+H\+R\+E\+AD} + +{\bfseries Value\+:} +\begin{DoxyCode} +(GTEST\_OS\_LINUX || GTEST\_OS\_MAC || GTEST\_OS\_HPUX || GTEST\_OS\_QNX || \(\backslash\) + GTEST\_OS\_FREEBSD || GTEST\_OS\_NACL || GTEST\_OS\_NETBSD || GTEST\_OS\_FUCHSIA) +\end{DoxyCode} + + +Definition at line 780 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a9ba781217167f905bff2f1c410a97930}\label{gtest_8h_a9ba781217167f905bff2f1c410a97930}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+R\+T\+TI@{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+R\+T\+TI}} +\index{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+R\+T\+TI@{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+R\+T\+TI}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+R\+T\+TI}{GTEST\_HAS\_RTTI}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+R\+T\+TI~1} + + + +Definition at line 761 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a8f6a84e8be3c94cd1f6f46a136df2c62}\label{gtest_8h_a8f6a84e8be3c94cd1f6f46a136df2c62}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+S\+EH@{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+S\+EH}} +\index{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+S\+EH@{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+S\+EH}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+S\+EH}{GTEST\_HAS\_SEH}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+S\+EH~0} + + + +Definition at line 966 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_adba1121430c11cee8ba0c74e8cf6aa40}\label{gtest_8h_adba1121430c11cee8ba0c74e8cf6aa40}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+S\+T\+D\+\_\+\+S\+T\+R\+I\+NG@{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+S\+T\+D\+\_\+\+S\+T\+R\+I\+NG}} +\index{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+S\+T\+D\+\_\+\+S\+T\+R\+I\+NG@{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+S\+T\+D\+\_\+\+S\+T\+R\+I\+NG}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+S\+T\+D\+\_\+\+S\+T\+R\+I\+NG}{GTEST\_HAS\_STD\_STRING}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+S\+T\+D\+\_\+\+S\+T\+R\+I\+NG~1} + + + +Definition at line 682 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a6e087748d8bbd2ca57c487b6ad268670}\label{gtest_8h_a6e087748d8bbd2ca57c487b6ad268670}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+S\+T\+D\+\_\+\+W\+S\+T\+R\+I\+NG@{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+S\+T\+D\+\_\+\+W\+S\+T\+R\+I\+NG}} +\index{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+S\+T\+D\+\_\+\+W\+S\+T\+R\+I\+NG@{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+S\+T\+D\+\_\+\+W\+S\+T\+R\+I\+NG}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+S\+T\+D\+\_\+\+W\+S\+T\+R\+I\+NG}{GTEST\_HAS\_STD\_WSTRING}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+S\+T\+D\+\_\+\+W\+S\+T\+R\+I\+NG~(!(G\+T\+E\+S\+T\+\_\+\+O\+S\+\_\+\+L\+I\+N\+U\+X\+\_\+\+A\+N\+D\+R\+O\+ID $\vert$$\vert$ G\+T\+E\+S\+T\+\_\+\+O\+S\+\_\+\+C\+Y\+G\+W\+IN $\vert$$\vert$ G\+T\+E\+S\+T\+\_\+\+O\+S\+\_\+\+S\+O\+L\+A\+R\+IS))} + + + +Definition at line 698 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_add695166eb7b691f93777525d5881062}\label{gtest_8h_add695166eb7b691f93777525d5881062}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+S\+T\+R\+E\+A\+M\+\_\+\+R\+E\+D\+I\+R\+E\+C\+T\+I\+ON@{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+S\+T\+R\+E\+A\+M\+\_\+\+R\+E\+D\+I\+R\+E\+C\+T\+I\+ON}} +\index{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+S\+T\+R\+E\+A\+M\+\_\+\+R\+E\+D\+I\+R\+E\+C\+T\+I\+ON@{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+S\+T\+R\+E\+A\+M\+\_\+\+R\+E\+D\+I\+R\+E\+C\+T\+I\+ON}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+S\+T\+R\+E\+A\+M\+\_\+\+R\+E\+D\+I\+R\+E\+C\+T\+I\+ON}{GTEST\_HAS\_STREAM\_REDIRECTION}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+H\+A\+S\+\_\+\+S\+T\+R\+E\+A\+M\+\_\+\+R\+E\+D\+I\+R\+E\+C\+T\+I\+ON~1} + + + +Definition at line 830 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a4a5b6fbde5dd05e05dd6846ac5e5c18e}\label{gtest_8h_a4a5b6fbde5dd05e05dd6846ac5e5c18e}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+C\+M\+P\+\_\+\+H\+E\+L\+P\+E\+R\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+C\+M\+P\+\_\+\+H\+E\+L\+P\+E\+R\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+C\+M\+P\+\_\+\+H\+E\+L\+P\+E\+R\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+C\+M\+P\+\_\+\+H\+E\+L\+P\+E\+R\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+C\+M\+P\+\_\+\+H\+E\+L\+P\+E\+R\+\_\+}{GTEST\_IMPL\_CMP\_HELPER\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+C\+M\+P\+\_\+\+H\+E\+L\+P\+E\+R\+\_\+(\begin{DoxyParamCaption}\item[{}]{op\+\_\+name, }\item[{}]{op }\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode} +\textcolor{keyword}{template} <\textcolor{keyword}{typename} T1, \textcolor{keyword}{typename} T2>\(\backslash\) +AssertionResult CmpHelper##op\_name(\textcolor{keyword}{const} \textcolor{keywordtype}{char}* expr1, \textcolor{keyword}{const} \textcolor{keywordtype}{char}* expr2, \(\backslash\) + \textcolor{keyword}{const} T1& val1, \textcolor{keyword}{const} T2& val2) \{\(\backslash\) + if (val1 op val2) \{\(\backslash\) + return AssertionSuccess();\(\backslash\) + \} \textcolor{keywordflow}{else} \{\(\backslash\) + return \mbox{\hyperlink{namespacetesting_1_1internal_a894ffccd936d78fd555f490020c27f0a}{CmpHelperOpFailure}}(expr1, expr2, val1, val2, #op);\(\backslash\) + \}\(\backslash\) +\}\(\backslash\) +GTEST\_API\_ AssertionResult CmpHelper##op\_name(\(\backslash\) + \textcolor{keyword}{const} \textcolor{keywordtype}{char}* expr1, \textcolor{keyword}{const} \textcolor{keywordtype}{char}* expr2, \mbox{\hyperlink{namespacetesting_1_1internal_a05c6bd9ede5ccdf25191a590d610dcc6}{BiggestInt}} val1, \mbox{\hyperlink{namespacetesting_1_1internal_a05c6bd9ede5ccdf25191a590d610dcc6}{BiggestInt}} val2) +\end{DoxyCode} + + +Definition at line 16226 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a79d4724b4bc2a1dd8493c366b5ca626a}\label{gtest_8h_a79d4724b4bc2a1dd8493c366b5ca626a}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+C\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+A\+S\+\_\+\+P\+O\+I\+N\+T\+E\+R\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+C\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+A\+S\+\_\+\+P\+O\+I\+N\+T\+E\+R\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+C\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+A\+S\+\_\+\+P\+O\+I\+N\+T\+E\+R\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+C\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+A\+S\+\_\+\+P\+O\+I\+N\+T\+E\+R\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+C\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+A\+S\+\_\+\+P\+O\+I\+N\+T\+E\+R\+\_\+}{GTEST\_IMPL\_FORMAT\_C\_STRING\_AS\_POINTER\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+C\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+A\+S\+\_\+\+P\+O\+I\+N\+T\+E\+R\+\_\+(\begin{DoxyParamCaption}\item[{}]{Char\+Type }\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode} +\textcolor{keyword}{template} <\textcolor{keyword}{typename} OtherOperand> \(\backslash\) + class FormatForComparison \{ \(\backslash\) + public: \mbox{\hyperlink{namespacetesting_1_1internal_a8e8ff5b11e64078831112677156cb111}{\(\backslash\)}} +\mbox{\hyperlink{namespacetesting_1_1internal_a8e8ff5b11e64078831112677156cb111}{ static ::std::string}} Format(CharType* value) \{ + \mbox{\hyperlink{namespacetesting_aa5717bb1144edd1d262d310ba70c82ed}{\(\backslash\)}} +\mbox{\hyperlink{namespacetesting_aa5717bb1144edd1d262d310ba70c82ed}{ return ::testing::PrintToString}}(static\_cast(value)) + ; \(\backslash\) + \} \(\backslash\) + \} +\end{DoxyCode} + + +Definition at line 8359 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_ad6102ed2a0571d5196e606a061c16a10}\label{gtest_8h_ad6102ed2a0571d5196e606a061c16a10}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+C\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+A\+S\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+C\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+A\+S\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+C\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+A\+S\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+C\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+A\+S\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+C\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+A\+S\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+}{GTEST\_IMPL\_FORMAT\_C\_STRING\_AS\_STRING\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+C\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+A\+S\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+(\begin{DoxyParamCaption}\item[{}]{Char\+Type, }\item[{}]{Other\+String\+Type }\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode} +\textcolor{keyword}{template} <> \(\backslash\) + class FormatForComparison \{ \(\backslash\) + public: \mbox{\hyperlink{namespacetesting_1_1internal_a8e8ff5b11e64078831112677156cb111}{\(\backslash\)}} +\mbox{\hyperlink{namespacetesting_1_1internal_a8e8ff5b11e64078831112677156cb111}{ static ::std::string}} Format(CharType* value) \{ + \mbox{\hyperlink{namespacetesting_aa5717bb1144edd1d262d310ba70c82ed}{\(\backslash\)}} +\mbox{\hyperlink{namespacetesting_aa5717bb1144edd1d262d310ba70c82ed}{ return ::testing::PrintToString}}(value); + \(\backslash\) + \} \(\backslash\) + \} +\end{DoxyCode} + + +Definition at line 8378 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a9be22723f67d5ad4d6d26214a84a19f9}\label{gtest_8h_a9be22723f67d5ad4d6d26214a84a19f9}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+D\+E\+A\+T\+H\+\_\+\+T\+E\+S\+T\+\_\+\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+D\+E\+A\+T\+H\+\_\+\+T\+E\+S\+T\+\_\+\+H\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+D\+E\+A\+T\+H\+\_\+\+T\+E\+S\+T\+\_\+\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+D\+E\+A\+T\+H\+\_\+\+T\+E\+S\+T\+\_\+\+H\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+D\+E\+A\+T\+H\+\_\+\+T\+E\+S\+T\+\_\+\+H\+\_\+}{GTEST\_INCLUDE\_GTEST\_GTEST\_DEATH\_TEST\_H\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+D\+E\+A\+T\+H\+\_\+\+T\+E\+S\+T\+\_\+\+H\+\_\+} + + + +Definition at line 7948 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_ac5d82b7725576c4a54ae99ce1cc861e0}\label{gtest_8h_ac5d82b7725576c4a54ae99ce1cc861e0}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+M\+A\+T\+C\+H\+E\+R\+S\+\_\+\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+M\+A\+T\+C\+H\+E\+R\+S\+\_\+\+H\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+M\+A\+T\+C\+H\+E\+R\+S\+\_\+\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+M\+A\+T\+C\+H\+E\+R\+S\+\_\+\+H\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+M\+A\+T\+C\+H\+E\+R\+S\+\_\+\+H\+\_\+}{GTEST\_INCLUDE\_GTEST\_GTEST\_MATCHERS\_H\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+M\+A\+T\+C\+H\+E\+R\+S\+\_\+\+H\+\_\+} + + + +Definition at line 8027 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a5c2d86823d7f9ffac3e3766da17091dd}\label{gtest_8h_a5c2d86823d7f9ffac3e3766da17091dd}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+M\+E\+S\+S\+A\+G\+E\+\_\+\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+M\+E\+S\+S\+A\+G\+E\+\_\+\+H\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+M\+E\+S\+S\+A\+G\+E\+\_\+\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+M\+E\+S\+S\+A\+G\+E\+\_\+\+H\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+M\+E\+S\+S\+A\+G\+E\+\_\+\+H\+\_\+}{GTEST\_INCLUDE\_GTEST\_GTEST\_MESSAGE\_H\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+M\+E\+S\+S\+A\+G\+E\+\_\+\+H\+\_\+} + + + +Definition at line 2603 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a15b9e83e56cafef0ddd12e2444772908}\label{gtest_8h_a15b9e83e56cafef0ddd12e2444772908}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+A\+R\+A\+M\+\_\+\+T\+E\+S\+T\+\_\+\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+A\+R\+A\+M\+\_\+\+T\+E\+S\+T\+\_\+\+H\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+A\+R\+A\+M\+\_\+\+T\+E\+S\+T\+\_\+\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+A\+R\+A\+M\+\_\+\+T\+E\+S\+T\+\_\+\+H\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+A\+R\+A\+M\+\_\+\+T\+E\+S\+T\+\_\+\+H\+\_\+}{GTEST\_INCLUDE\_GTEST\_GTEST\_PARAM\_TEST\_H\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+A\+R\+A\+M\+\_\+\+T\+E\+S\+T\+\_\+\+H\+\_\+} + + + +Definition at line 10401 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a36afb7e44e600d2da0e6d8f4f739ea3b}\label{gtest_8h_a36afb7e44e600d2da0e6d8f4f739ea3b}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+I\+M\+P\+L\+\_\+\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+I\+M\+P\+L\+\_\+\+H\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+I\+M\+P\+L\+\_\+\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+I\+M\+P\+L\+\_\+\+H\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+I\+M\+P\+L\+\_\+\+H\+\_\+}{GTEST\_INCLUDE\_GTEST\_GTEST\_PRED\_IMPL\_H\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+I\+M\+P\+L\+\_\+\+H\+\_\+} + + + +Definition at line 14666 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a146e4a81159ecfdc33030e147a024346}\label{gtest_8h_a146e4a81159ecfdc33030e147a024346}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+R\+I\+N\+T\+E\+R\+S\+\_\+\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+R\+I\+N\+T\+E\+R\+S\+\_\+\+H\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+R\+I\+N\+T\+E\+R\+S\+\_\+\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+R\+I\+N\+T\+E\+R\+S\+\_\+\+H\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+R\+I\+N\+T\+E\+R\+S\+\_\+\+H\+\_\+}{GTEST\_INCLUDE\_GTEST\_GTEST\_PRINTERS\_H\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+R\+I\+N\+T\+E\+R\+S\+\_\+\+H\+\_\+} + + + +Definition at line 8133 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a61e419ca2f3cc78bbae47d074c5d4400}\label{gtest_8h_a61e419ca2f3cc78bbae47d074c5d4400}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+R\+O\+D\+\_\+\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+R\+O\+D\+\_\+\+H\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+R\+O\+D\+\_\+\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+R\+O\+D\+\_\+\+H\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+R\+O\+D\+\_\+\+H\+\_\+}{GTEST\_INCLUDE\_GTEST\_GTEST\_PROD\_H\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+R\+O\+D\+\_\+\+H\+\_\+} + + + +Definition at line 13779 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a6454a5e01489b59f55be53c206ca929b}\label{gtest_8h_a6454a5e01489b59f55be53c206ca929b}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+P\+A\+R\+T\+\_\+\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+P\+A\+R\+T\+\_\+\+H\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+P\+A\+R\+T\+\_\+\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+P\+A\+R\+T\+\_\+\+H\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+P\+A\+R\+T\+\_\+\+H\+\_\+}{GTEST\_INCLUDE\_GTEST\_GTEST\_TEST\_PART\_H\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+P\+A\+R\+T\+\_\+\+H\+\_\+} + + + +Definition at line 13838 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_adddef1e04ac44c9721ce3716c1b8a09e}\label{gtest_8h_adddef1e04ac44c9721ce3716c1b8a09e}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+T\+Y\+P\+E\+D\+\_\+\+T\+E\+S\+T\+\_\+\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+T\+Y\+P\+E\+D\+\_\+\+T\+E\+S\+T\+\_\+\+H\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+T\+Y\+P\+E\+D\+\_\+\+T\+E\+S\+T\+\_\+\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+T\+Y\+P\+E\+D\+\_\+\+T\+E\+S\+T\+\_\+\+H\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+T\+Y\+P\+E\+D\+\_\+\+T\+E\+S\+T\+\_\+\+H\+\_\+}{GTEST\_INCLUDE\_GTEST\_GTEST\_TYPED\_TEST\_H\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+G\+T\+E\+S\+T\+\_\+\+T\+Y\+P\+E\+D\+\_\+\+T\+E\+S\+T\+\_\+\+H\+\_\+} + +\mbox{\Hypertarget{gtest_8h_aae632b050088c635963f553c4a5157b0}\label{gtest_8h_aae632b050088c635963f553c4a5157b0}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+C\+U\+S\+T\+O\+M\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+O\+R\+T\+\_\+\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+C\+U\+S\+T\+O\+M\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+O\+R\+T\+\_\+\+H\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+C\+U\+S\+T\+O\+M\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+O\+R\+T\+\_\+\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+C\+U\+S\+T\+O\+M\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+O\+R\+T\+\_\+\+H\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+C\+U\+S\+T\+O\+M\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+O\+R\+T\+\_\+\+H\+\_\+}{GTEST\_INCLUDE\_GTEST\_INTERNAL\_CUSTOM\_GTEST\_PORT\_H\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+C\+U\+S\+T\+O\+M\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+O\+R\+T\+\_\+\+H\+\_\+} + + + +Definition at line 508 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a790dd922b87864bf5b8d93a22853933c}\label{gtest_8h_a790dd922b87864bf5b8d93a22853933c}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+C\+U\+S\+T\+O\+M\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+R\+I\+N\+T\+E\+R\+S\+\_\+\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+C\+U\+S\+T\+O\+M\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+R\+I\+N\+T\+E\+R\+S\+\_\+\+H\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+C\+U\+S\+T\+O\+M\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+R\+I\+N\+T\+E\+R\+S\+\_\+\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+C\+U\+S\+T\+O\+M\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+R\+I\+N\+T\+E\+R\+S\+\_\+\+H\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+C\+U\+S\+T\+O\+M\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+R\+I\+N\+T\+E\+R\+S\+\_\+\+H\+\_\+}{GTEST\_INCLUDE\_GTEST\_INTERNAL\_CUSTOM\_GTEST\_PRINTERS\_H\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+C\+U\+S\+T\+O\+M\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+R\+I\+N\+T\+E\+R\+S\+\_\+\+H\+\_\+} + + + +Definition at line 9019 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a83e03f206a1c53a656f7eac87c122d16}\label{gtest_8h_a83e03f206a1c53a656f7eac87c122d16}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+D\+E\+A\+T\+H\+\_\+\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+D\+E\+A\+T\+H\+\_\+\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+H\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+D\+E\+A\+T\+H\+\_\+\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+D\+E\+A\+T\+H\+\_\+\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+H\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+D\+E\+A\+T\+H\+\_\+\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+H\+\_\+}{GTEST\_INCLUDE\_GTEST\_INTERNAL\_GTEST\_DEATH\_TEST\_INTERNAL\_H\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+D\+E\+A\+T\+H\+\_\+\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+H\+\_\+} + + + +Definition at line 7986 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_aa6f5334cb6792f48ac5621193b41bb61}\label{gtest_8h_aa6f5334cb6792f48ac5621193b41bb61}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+F\+I\+L\+E\+P\+A\+T\+H\+\_\+\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+F\+I\+L\+E\+P\+A\+T\+H\+\_\+\+H\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+F\+I\+L\+E\+P\+A\+T\+H\+\_\+\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+F\+I\+L\+E\+P\+A\+T\+H\+\_\+\+H\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+F\+I\+L\+E\+P\+A\+T\+H\+\_\+\+H\+\_\+}{GTEST\_INCLUDE\_GTEST\_INTERNAL\_GTEST\_FILEPATH\_H\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+F\+I\+L\+E\+P\+A\+T\+H\+\_\+\+H\+\_\+} + +\mbox{\Hypertarget{gtest_8h_a508d33581439542ea940eacbf306ad2a}\label{gtest_8h_a508d33581439542ea940eacbf306ad2a}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+H\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+H\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+H\+\_\+}{GTEST\_INCLUDE\_GTEST\_INTERNAL\_GTEST\_INTERNAL\_H\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+H\+\_\+} + + + +Definition at line 97 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a34b82ce6255f2f5666647d35498f4c65}\label{gtest_8h_a34b82ce6255f2f5666647d35498f4c65}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+A\+R\+A\+M\+\_\+\+U\+T\+I\+L\+\_\+\+G\+E\+N\+E\+R\+A\+T\+E\+D\+\_\+\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+A\+R\+A\+M\+\_\+\+U\+T\+I\+L\+\_\+\+G\+E\+N\+E\+R\+A\+T\+E\+D\+\_\+\+H\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+A\+R\+A\+M\+\_\+\+U\+T\+I\+L\+\_\+\+G\+E\+N\+E\+R\+A\+T\+E\+D\+\_\+\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+A\+R\+A\+M\+\_\+\+U\+T\+I\+L\+\_\+\+G\+E\+N\+E\+R\+A\+T\+E\+D\+\_\+\+H\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+A\+R\+A\+M\+\_\+\+U\+T\+I\+L\+\_\+\+G\+E\+N\+E\+R\+A\+T\+E\+D\+\_\+\+H\+\_\+}{GTEST\_INCLUDE\_GTEST\_INTERNAL\_GTEST\_PARAM\_UTIL\_GENERATED\_H\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+A\+R\+A\+M\+\_\+\+U\+T\+I\+L\+\_\+\+G\+E\+N\+E\+R\+A\+T\+E\+D\+\_\+\+H\+\_\+} + + + +Definition at line 11353 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a83cf5c299fc04d9f8e555cb42a97aa47}\label{gtest_8h_a83cf5c299fc04d9f8e555cb42a97aa47}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+A\+R\+A\+M\+\_\+\+U\+T\+I\+L\+\_\+\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+A\+R\+A\+M\+\_\+\+U\+T\+I\+L\+\_\+\+H\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+A\+R\+A\+M\+\_\+\+U\+T\+I\+L\+\_\+\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+A\+R\+A\+M\+\_\+\+U\+T\+I\+L\+\_\+\+H\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+A\+R\+A\+M\+\_\+\+U\+T\+I\+L\+\_\+\+H\+\_\+}{GTEST\_INCLUDE\_GTEST\_INTERNAL\_GTEST\_PARAM\_UTIL\_H\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+A\+R\+A\+M\+\_\+\+U\+T\+I\+L\+\_\+\+H\+\_\+} + + + +Definition at line 10578 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a0392ac662f9547fb26a0d23c26d09fa6}\label{gtest_8h_a0392ac662f9547fb26a0d23c26d09fa6}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+O\+R\+T\+\_\+\+A\+R\+C\+H\+\_\+\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+O\+R\+T\+\_\+\+A\+R\+C\+H\+\_\+\+H\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+O\+R\+T\+\_\+\+A\+R\+C\+H\+\_\+\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+O\+R\+T\+\_\+\+A\+R\+C\+H\+\_\+\+H\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+O\+R\+T\+\_\+\+A\+R\+C\+H\+\_\+\+H\+\_\+}{GTEST\_INCLUDE\_GTEST\_INTERNAL\_GTEST\_PORT\_ARCH\_H\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+O\+R\+T\+\_\+\+A\+R\+C\+H\+\_\+\+H\+\_\+} + + + +Definition at line 408 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a6d13def13619ff1647c90e3354a65732}\label{gtest_8h_a6d13def13619ff1647c90e3354a65732}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+O\+R\+T\+\_\+\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+O\+R\+T\+\_\+\+H\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+O\+R\+T\+\_\+\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+O\+R\+T\+\_\+\+H\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+O\+R\+T\+\_\+\+H\+\_\+}{GTEST\_INCLUDE\_GTEST\_INTERNAL\_GTEST\_PORT\_H\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+P\+O\+R\+T\+\_\+\+H\+\_\+} + + + +Definition at line 142 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_af7adda0fee2a48fec4d8628cbaedec76}\label{gtest_8h_af7adda0fee2a48fec4d8628cbaedec76}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+H\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+H\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+H\+\_\+}{GTEST\_INCLUDE\_GTEST\_INTERNAL\_GTEST\_STRING\_H\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+H\+\_\+} + +\mbox{\Hypertarget{gtest_8h_aff22afce4bffd0181c178e2e4d848c97}\label{gtest_8h_aff22afce4bffd0181c178e2e4d848c97}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+T\+Y\+P\+E\+\_\+\+U\+T\+I\+L\+\_\+\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+T\+Y\+P\+E\+\_\+\+U\+T\+I\+L\+\_\+\+H\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+T\+Y\+P\+E\+\_\+\+U\+T\+I\+L\+\_\+\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+T\+Y\+P\+E\+\_\+\+U\+T\+I\+L\+\_\+\+H\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+T\+Y\+P\+E\+\_\+\+U\+T\+I\+L\+\_\+\+H\+\_\+}{GTEST\_INCLUDE\_GTEST\_INTERNAL\_GTEST\_TYPE\_UTIL\_H\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+I\+N\+C\+L\+U\+D\+E\+\_\+\+G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+G\+T\+E\+S\+T\+\_\+\+T\+Y\+P\+E\+\_\+\+U\+T\+I\+L\+\_\+\+H\+\_\+} + +\mbox{\Hypertarget{gtest_8h_aa5e27ad4f88278501ef71bd9ddbb44c6}\label{gtest_8h_aa5e27ad4f88278501ef71bd9ddbb44c6}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+I\+N\+I\+T\+\_\+\+G\+O\+O\+G\+L\+E\+\_\+\+T\+E\+S\+T\+\_\+\+N\+A\+M\+E\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+N\+I\+T\+\_\+\+G\+O\+O\+G\+L\+E\+\_\+\+T\+E\+S\+T\+\_\+\+N\+A\+M\+E\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+I\+N\+I\+T\+\_\+\+G\+O\+O\+G\+L\+E\+\_\+\+T\+E\+S\+T\+\_\+\+N\+A\+M\+E\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+N\+I\+T\+\_\+\+G\+O\+O\+G\+L\+E\+\_\+\+T\+E\+S\+T\+\_\+\+N\+A\+M\+E\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+I\+N\+I\+T\+\_\+\+G\+O\+O\+G\+L\+E\+\_\+\+T\+E\+S\+T\+\_\+\+N\+A\+M\+E\+\_\+}{GTEST\_INIT\_GOOGLE\_TEST\_NAME\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+I\+N\+I\+T\+\_\+\+G\+O\+O\+G\+L\+E\+\_\+\+T\+E\+S\+T\+\_\+\+N\+A\+M\+E\+\_\+~\char`\"{}testing\+::\+Init\+Google\+Test\char`\"{}} + + + +Definition at line 522 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_ad115e2c466f7e8a32f1cf23ef2e5f220}\label{gtest_8h_ad115e2c466f7e8a32f1cf23ef2e5f220}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+N\+T\+I\+O\+N\+A\+L\+\_\+\+C\+O\+N\+S\+T\+\_\+\+C\+O\+N\+D\+\_\+\+P\+O\+P\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+N\+T\+I\+O\+N\+A\+L\+\_\+\+C\+O\+N\+S\+T\+\_\+\+C\+O\+N\+D\+\_\+\+P\+O\+P\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+N\+T\+I\+O\+N\+A\+L\+\_\+\+C\+O\+N\+S\+T\+\_\+\+C\+O\+N\+D\+\_\+\+P\+O\+P\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+N\+T\+I\+O\+N\+A\+L\+\_\+\+C\+O\+N\+S\+T\+\_\+\+C\+O\+N\+D\+\_\+\+P\+O\+P\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+N\+T\+I\+O\+N\+A\+L\+\_\+\+C\+O\+N\+S\+T\+\_\+\+C\+O\+N\+D\+\_\+\+P\+O\+P\+\_\+}{GTEST\_INTENTIONAL\_CONST\_COND\_POP\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+N\+T\+I\+O\+N\+A\+L\+\_\+\+C\+O\+N\+S\+T\+\_\+\+C\+O\+N\+D\+\_\+\+P\+O\+P\+\_\+(\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest-all_8cc_a789f37f9c345c2032699c194a58623d9}{G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+W\+A\+R\+N\+I\+N\+G\+S\+\_\+\+P\+O\+P\+\_\+}}()} + + + +Definition at line 952 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a69b0cadb05bf2a1ef96151243c6b6241}\label{gtest_8h_a69b0cadb05bf2a1ef96151243c6b6241}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+N\+T\+I\+O\+N\+A\+L\+\_\+\+C\+O\+N\+S\+T\+\_\+\+C\+O\+N\+D\+\_\+\+P\+U\+S\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+N\+T\+I\+O\+N\+A\+L\+\_\+\+C\+O\+N\+S\+T\+\_\+\+C\+O\+N\+D\+\_\+\+P\+U\+S\+H\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+N\+T\+I\+O\+N\+A\+L\+\_\+\+C\+O\+N\+S\+T\+\_\+\+C\+O\+N\+D\+\_\+\+P\+U\+S\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+N\+T\+I\+O\+N\+A\+L\+\_\+\+C\+O\+N\+S\+T\+\_\+\+C\+O\+N\+D\+\_\+\+P\+U\+S\+H\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+N\+T\+I\+O\+N\+A\+L\+\_\+\+C\+O\+N\+S\+T\+\_\+\+C\+O\+N\+D\+\_\+\+P\+U\+S\+H\+\_\+}{GTEST\_INTENTIONAL\_CONST\_COND\_PUSH\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+N\+T\+I\+O\+N\+A\+L\+\_\+\+C\+O\+N\+S\+T\+\_\+\+C\+O\+N\+D\+\_\+\+P\+U\+S\+H\+\_\+(\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_a88f79832f9d045112a76e9da8611cc13}{G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+W\+A\+R\+N\+I\+N\+G\+S\+\_\+\+P\+U\+S\+H\+\_\+}}(4127)} + + + +Definition at line 950 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a6aa594029905b65753d0e85f2db521ab}\label{gtest_8h_a6aa594029905b65753d0e85f2db521ab}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+D\+E\+P\+R\+E\+C\+A\+T\+ED@{G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+D\+E\+P\+R\+E\+C\+A\+T\+ED}} +\index{G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+D\+E\+P\+R\+E\+C\+A\+T\+ED@{G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+D\+E\+P\+R\+E\+C\+A\+T\+ED}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+D\+E\+P\+R\+E\+C\+A\+T\+ED}{GTEST\_INTERNAL\_DEPRECATED}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+I\+N\+T\+E\+R\+N\+A\+L\+\_\+\+D\+E\+P\+R\+E\+C\+A\+T\+ED(\begin{DoxyParamCaption}\item[{}]{message }\end{DoxyParamCaption})} + + + +Definition at line 7907 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_ae5dd8e23090e08856613878fa1ff6fca}\label{gtest_8h_ae5dd8e23090e08856613878fa1ff6fca}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+I\+S\+\_\+\+N\+U\+L\+L\+\_\+\+L\+I\+T\+E\+R\+A\+L\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+S\+\_\+\+N\+U\+L\+L\+\_\+\+L\+I\+T\+E\+R\+A\+L\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+I\+S\+\_\+\+N\+U\+L\+L\+\_\+\+L\+I\+T\+E\+R\+A\+L\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+S\+\_\+\+N\+U\+L\+L\+\_\+\+L\+I\+T\+E\+R\+A\+L\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+I\+S\+\_\+\+N\+U\+L\+L\+\_\+\+L\+I\+T\+E\+R\+A\+L\+\_\+}{GTEST\_IS\_NULL\_LITERAL\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+I\+S\+\_\+\+N\+U\+L\+L\+\_\+\+L\+I\+T\+E\+R\+A\+L\+\_\+(\begin{DoxyParamCaption}\item[{}]{x }\end{DoxyParamCaption})~decltype(\+::\mbox{\hyperlink{namespacetesting_1_1internal_a3db36c62f31a9439117c41c2b13f4941}{testing\+::internal\+::\+Is\+Null\+Literal\+Helper}}(x))\+::value} + + + +Definition at line 6572 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a727149862f53b2fb21f6d33cd9323886}\label{gtest_8h_a727149862f53b2fb21f6d33cd9323886}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+I\+S\+\_\+\+T\+H\+R\+E\+A\+D\+S\+A\+FE@{G\+T\+E\+S\+T\+\_\+\+I\+S\+\_\+\+T\+H\+R\+E\+A\+D\+S\+A\+FE}} +\index{G\+T\+E\+S\+T\+\_\+\+I\+S\+\_\+\+T\+H\+R\+E\+A\+D\+S\+A\+FE@{G\+T\+E\+S\+T\+\_\+\+I\+S\+\_\+\+T\+H\+R\+E\+A\+D\+S\+A\+FE}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+I\+S\+\_\+\+T\+H\+R\+E\+A\+D\+S\+A\+FE}{GTEST\_IS\_THREADSAFE}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+I\+S\+\_\+\+T\+H\+R\+E\+A\+D\+S\+A\+FE} + +{\bfseries Value\+:} +\begin{DoxyCode} +(GTEST\_HAS\_MUTEX\_AND\_THREAD\_LOCAL\_ || \(\backslash\) + (GTEST\_OS\_WINDOWS && !GTEST\_OS\_WINDOWS\_PHONE && !GTEST\_OS\_WINDOWS\_RT) || \(\backslash\) + \mbox{\hyperlink{gtest_8h_a3341397e1952de0b9cd88762d4d3ae4b}{GTEST\_HAS\_PTHREAD}}) +\end{DoxyCode} + + +Definition at line 973 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a69abff5a4efdd07bd5faebe3dd318d06}\label{gtest_8h_a69abff5a4efdd07bd5faebe3dd318d06}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+L\+O\+C\+K\+\_\+\+E\+X\+C\+L\+U\+D\+E\+D\+\_\+@{G\+T\+E\+S\+T\+\_\+\+L\+O\+C\+K\+\_\+\+E\+X\+C\+L\+U\+D\+E\+D\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+L\+O\+C\+K\+\_\+\+E\+X\+C\+L\+U\+D\+E\+D\+\_\+@{G\+T\+E\+S\+T\+\_\+\+L\+O\+C\+K\+\_\+\+E\+X\+C\+L\+U\+D\+E\+D\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+L\+O\+C\+K\+\_\+\+E\+X\+C\+L\+U\+D\+E\+D\+\_\+}{GTEST\_LOCK\_EXCLUDED\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+L\+O\+C\+K\+\_\+\+E\+X\+C\+L\+U\+D\+E\+D\+\_\+(\begin{DoxyParamCaption}\item[{}]{locks }\end{DoxyParamCaption})} + + + +Definition at line 2515 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a8ef4cb4c465db8c15464aecc6d9510ef}\label{gtest_8h_a8ef4cb4c465db8c15464aecc6d9510ef}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+L\+O\+G\+\_\+@{G\+T\+E\+S\+T\+\_\+\+L\+O\+G\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+L\+O\+G\+\_\+@{G\+T\+E\+S\+T\+\_\+\+L\+O\+G\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+L\+O\+G\+\_\+}{GTEST\_LOG\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+L\+O\+G\+\_\+(\begin{DoxyParamCaption}\item[{}]{severity }\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode} +\mbox{\hyperlink{classtesting_1_1internal_1_1_g_test_log}{::testing::internal::GTestLog}}(::testing::internal::GTEST\_##severity, \(\backslash\) + \_\_FILE\_\_, \_\_LINE\_\_).\mbox{\hyperlink{classtesting_1_1internal_1_1_g_test_log_aebb92e67d98eca69f0347d5121dab27a}{GetStream}}() +\end{DoxyCode} + + +Definition at line 1246 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a94c73d5368ec946bc354d0992ad00810}\label{gtest_8h_a94c73d5368ec946bc354d0992ad00810}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+M\+E\+S\+S\+A\+G\+E\+\_\+@{G\+T\+E\+S\+T\+\_\+\+M\+E\+S\+S\+A\+G\+E\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+M\+E\+S\+S\+A\+G\+E\+\_\+@{G\+T\+E\+S\+T\+\_\+\+M\+E\+S\+S\+A\+G\+E\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+M\+E\+S\+S\+A\+G\+E\+\_\+}{GTEST\_MESSAGE\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+M\+E\+S\+S\+A\+G\+E\+\_\+(\begin{DoxyParamCaption}\item[{}]{message, }\item[{}]{result\+\_\+type }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_a8d70025c45a47a493780746dfd66d565}{G\+T\+E\+S\+T\+\_\+\+M\+E\+S\+S\+A\+G\+E\+\_\+\+A\+T\+\_\+}}(\+\_\+\+\_\+\+F\+I\+L\+E\+\_\+\+\_\+, \+\_\+\+\_\+\+L\+I\+N\+E\+\_\+\+\_\+, message, result\+\_\+type)} + + + +Definition at line 7757 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a8d70025c45a47a493780746dfd66d565}\label{gtest_8h_a8d70025c45a47a493780746dfd66d565}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+M\+E\+S\+S\+A\+G\+E\+\_\+\+A\+T\+\_\+@{G\+T\+E\+S\+T\+\_\+\+M\+E\+S\+S\+A\+G\+E\+\_\+\+A\+T\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+M\+E\+S\+S\+A\+G\+E\+\_\+\+A\+T\+\_\+@{G\+T\+E\+S\+T\+\_\+\+M\+E\+S\+S\+A\+G\+E\+\_\+\+A\+T\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+M\+E\+S\+S\+A\+G\+E\+\_\+\+A\+T\+\_\+}{GTEST\_MESSAGE\_AT\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+M\+E\+S\+S\+A\+G\+E\+\_\+\+A\+T\+\_\+(\begin{DoxyParamCaption}\item[{}]{file, }\item[{}]{line, }\item[{}]{message, }\item[{}]{result\+\_\+type }\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode} +\mbox{\hyperlink{classtesting_1_1internal_1_1_assert_helper}{::testing::internal::AssertHelper}}(result\_type, file, line, message) \(\backslash\) + = \mbox{\hyperlink{classtesting_1_1_message}{::testing::Message}}() +\end{DoxyCode} + + +Definition at line 7753 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a8e5aab8276b2645f64f41c9e3021b935}\label{gtest_8h_a8e5aab8276b2645f64f41c9e3021b935}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+M\+U\+S\+T\+\_\+\+U\+S\+E\+\_\+\+R\+E\+S\+U\+L\+T\+\_\+@{G\+T\+E\+S\+T\+\_\+\+M\+U\+S\+T\+\_\+\+U\+S\+E\+\_\+\+R\+E\+S\+U\+L\+T\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+M\+U\+S\+T\+\_\+\+U\+S\+E\+\_\+\+R\+E\+S\+U\+L\+T\+\_\+@{G\+T\+E\+S\+T\+\_\+\+M\+U\+S\+T\+\_\+\+U\+S\+E\+\_\+\+R\+E\+S\+U\+L\+T\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+M\+U\+S\+T\+\_\+\+U\+S\+E\+\_\+\+R\+E\+S\+U\+L\+T\+\_\+}{GTEST\_MUST\_USE\_RESULT\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+M\+U\+S\+T\+\_\+\+U\+S\+E\+\_\+\+R\+E\+S\+U\+L\+T\+\_\+} + + + +Definition at line 939 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a13d98c217176bd8722c395b9225fc19d}\label{gtest_8h_a13d98c217176bd8722c395b9225fc19d}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+N\+A\+M\+E\+\_\+@{G\+T\+E\+S\+T\+\_\+\+N\+A\+M\+E\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+N\+A\+M\+E\+\_\+@{G\+T\+E\+S\+T\+\_\+\+N\+A\+M\+E\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+N\+A\+M\+E\+\_\+}{GTEST\_NAME\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+N\+A\+M\+E\+\_\+~\char`\"{}Google Test\char`\"{}} + + + +Definition at line 517 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a9945cbd967fbccb15f8de711f58955c7}\label{gtest_8h_a9945cbd967fbccb15f8de711f58955c7}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+N\+O\+\_\+\+I\+N\+L\+I\+N\+E\+\_\+@{G\+T\+E\+S\+T\+\_\+\+N\+O\+\_\+\+I\+N\+L\+I\+N\+E\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+N\+O\+\_\+\+I\+N\+L\+I\+N\+E\+\_\+@{G\+T\+E\+S\+T\+\_\+\+N\+O\+\_\+\+I\+N\+L\+I\+N\+E\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+N\+O\+\_\+\+I\+N\+L\+I\+N\+E\+\_\+}{GTEST\_NO\_INLINE\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+N\+O\+\_\+\+I\+N\+L\+I\+N\+E\+\_\+} + + + +Definition at line 1009 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a6cb7482cfa03661a91c698eb5895f642}\label{gtest_8h_a6cb7482cfa03661a91c698eb5895f642}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+N\+O\+N\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+@{G\+T\+E\+S\+T\+\_\+\+N\+O\+N\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+N\+O\+N\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+@{G\+T\+E\+S\+T\+\_\+\+N\+O\+N\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+N\+O\+N\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}{GTEST\_NONFATAL\_FAILURE\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+N\+O\+N\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+(\begin{DoxyParamCaption}\item[{}]{message }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_a94c73d5368ec946bc354d0992ad00810}{G\+T\+E\+S\+T\+\_\+\+M\+E\+S\+S\+A\+G\+E\+\_\+}}(message, \+::testing\+::\+Test\+Part\+Result\+::k\+Non\+Fatal\+Failure)} + + + +Definition at line 7763 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_afbb636e91bdd50267dbef11a50490b29}\label{gtest_8h_afbb636e91bdd50267dbef11a50490b29}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+P\+A\+T\+H\+\_\+\+S\+E\+P\+\_\+@{G\+T\+E\+S\+T\+\_\+\+P\+A\+T\+H\+\_\+\+S\+E\+P\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+P\+A\+T\+H\+\_\+\+S\+E\+P\+\_\+@{G\+T\+E\+S\+T\+\_\+\+P\+A\+T\+H\+\_\+\+S\+E\+P\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+P\+A\+T\+H\+\_\+\+S\+E\+P\+\_\+}{GTEST\_PATH\_SEP\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+P\+A\+T\+H\+\_\+\+S\+E\+P\+\_\+~\char`\"{}/\char`\"{}} + + + +Definition at line 2221 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_ad44cf322952076d85305bbdf39769ac1}\label{gtest_8h_ad44cf322952076d85305bbdf39769ac1}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D1\+\_\+@{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D1\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D1\+\_\+@{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D1\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D1\+\_\+}{GTEST\_PRED1\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D1\+\_\+(\begin{DoxyParamCaption}\item[{}]{pred, }\item[{}]{v1, }\item[{}]{on\+\_\+failure }\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode} +\mbox{\hyperlink{gtest_8h_a8c09939dd67f1bb5b68c9f6a44ea75db}{GTEST\_ASSERT\_}}(::\mbox{\hyperlink{namespacetesting_a7f73180474723be6e92185d6fa9e7c9f}{testing::AssertPred1Helper}}(#pred, \(\backslash\) + #v1, \(\backslash\) + pred, \(\backslash\) + v1), on\_failure) +\end{DoxyCode} + + +Definition at line 14735 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_ac560264104bd030b64034505d294a7b6}\label{gtest_8h_ac560264104bd030b64034505d294a7b6}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D2\+\_\+@{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D2\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D2\+\_\+@{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D2\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D2\+\_\+}{GTEST\_PRED2\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D2\+\_\+(\begin{DoxyParamCaption}\item[{}]{pred, }\item[{}]{v1, }\item[{}]{v2, }\item[{}]{on\+\_\+failure }\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode} +\mbox{\hyperlink{gtest_8h_a8c09939dd67f1bb5b68c9f6a44ea75db}{GTEST\_ASSERT\_}}(::\mbox{\hyperlink{namespacetesting_aa6587938029dd8733ecb885068f08247}{testing::AssertPred2Helper}}(#pred, \(\backslash\) + #v1, \(\backslash\) + #v2, \(\backslash\) + pred, \(\backslash\) + v1, \(\backslash\) + v2), on\_failure) +\end{DoxyCode} + + +Definition at line 14782 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_af30518f03233bc4486b55284b0827eb8}\label{gtest_8h_af30518f03233bc4486b55284b0827eb8}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D3\+\_\+@{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D3\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D3\+\_\+@{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D3\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D3\+\_\+}{GTEST\_PRED3\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D3\+\_\+(\begin{DoxyParamCaption}\item[{}]{pred, }\item[{}]{v1, }\item[{}]{v2, }\item[{}]{v3, }\item[{}]{on\+\_\+failure }\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode} +\mbox{\hyperlink{gtest_8h_a8c09939dd67f1bb5b68c9f6a44ea75db}{GTEST\_ASSERT\_}}(::\mbox{\hyperlink{namespacetesting_ac92dcbd00a0ffb2913e65d286e321a22}{testing::AssertPred3Helper}}(#pred, \(\backslash\) + #v1, \(\backslash\) + #v2, \(\backslash\) + #v3, \(\backslash\) + pred, \(\backslash\) + v1, \(\backslash\) + v2, \(\backslash\) + v3), on\_failure) +\end{DoxyCode} + + +Definition at line 14835 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a14e8c70455104fac032efec097ef668b}\label{gtest_8h_a14e8c70455104fac032efec097ef668b}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D4\+\_\+@{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D4\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D4\+\_\+@{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D4\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D4\+\_\+}{GTEST\_PRED4\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D4\+\_\+(\begin{DoxyParamCaption}\item[{}]{pred, }\item[{}]{v1, }\item[{}]{v2, }\item[{}]{v3, }\item[{}]{v4, }\item[{}]{on\+\_\+failure }\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode} +\mbox{\hyperlink{gtest_8h_a8c09939dd67f1bb5b68c9f6a44ea75db}{GTEST\_ASSERT\_}}(::\mbox{\hyperlink{namespacetesting_ae90c778d69db4682e8fd8baaa0a9f9cd}{testing::AssertPred4Helper}}(#pred, \(\backslash\) + #v1, \(\backslash\) + #v2, \(\backslash\) + #v3, \(\backslash\) + #v4, \(\backslash\) + pred, \(\backslash\) + v1, \(\backslash\) + v2, \(\backslash\) + v3, \(\backslash\) + v4), on\_failure) +\end{DoxyCode} + + +Definition at line 14894 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a2c42692f7d910dc2fe57869883190e6c}\label{gtest_8h_a2c42692f7d910dc2fe57869883190e6c}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D5\+\_\+@{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D5\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D5\+\_\+@{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D5\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D5\+\_\+}{GTEST\_PRED5\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D5\+\_\+(\begin{DoxyParamCaption}\item[{}]{pred, }\item[{}]{v1, }\item[{}]{v2, }\item[{}]{v3, }\item[{}]{v4, }\item[{}]{v5, }\item[{}]{on\+\_\+failure }\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode} +\mbox{\hyperlink{gtest_8h_a8c09939dd67f1bb5b68c9f6a44ea75db}{GTEST\_ASSERT\_}}(::\mbox{\hyperlink{namespacetesting_addcf52b273ce17269cbf4956cfe600a6}{testing::AssertPred5Helper}}(#pred, \(\backslash\) + #v1, \(\backslash\) + #v2, \(\backslash\) + #v3, \(\backslash\) + #v4, \(\backslash\) + #v5, \(\backslash\) + pred, \(\backslash\) + v1, \(\backslash\) + v2, \(\backslash\) + v3, \(\backslash\) + v4, \(\backslash\) + v5), on\_failure) +\end{DoxyCode} + + +Definition at line 14959 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_aa3e3bfe04bb0e54d7f0e57e2f991d1eb}\label{gtest_8h_aa3e3bfe04bb0e54d7f0e57e2f991d1eb}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T1\+\_\+@{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T1\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T1\+\_\+@{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T1\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T1\+\_\+}{GTEST\_PRED\_FORMAT1\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T1\+\_\+(\begin{DoxyParamCaption}\item[{}]{pred\+\_\+format, }\item[{}]{v1, }\item[{}]{on\+\_\+failure }\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode} +\mbox{\hyperlink{gtest_8h_a8c09939dd67f1bb5b68c9f6a44ea75db}{GTEST\_ASSERT\_}}(pred\_format(#v1, v1), \(\backslash\) + on\_failure) +\end{DoxyCode} + + +Definition at line 14729 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a115c18d1f752b7f091d577fb69cac372}\label{gtest_8h_a115c18d1f752b7f091d577fb69cac372}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2\+\_\+@{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2\+\_\+@{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2\+\_\+}{GTEST\_PRED\_FORMAT2\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T2\+\_\+(\begin{DoxyParamCaption}\item[{}]{pred\+\_\+format, }\item[{}]{v1, }\item[{}]{v2, }\item[{}]{on\+\_\+failure }\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode} +\mbox{\hyperlink{gtest_8h_a8c09939dd67f1bb5b68c9f6a44ea75db}{GTEST\_ASSERT\_}}(pred\_format(#v1, #v2, v1, v2), \(\backslash\) + on\_failure) +\end{DoxyCode} + + +Definition at line 14776 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a49cdf8707268ee932bb772d879a226cc}\label{gtest_8h_a49cdf8707268ee932bb772d879a226cc}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T3\+\_\+@{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T3\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T3\+\_\+@{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T3\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T3\+\_\+}{GTEST\_PRED\_FORMAT3\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T3\+\_\+(\begin{DoxyParamCaption}\item[{}]{pred\+\_\+format, }\item[{}]{v1, }\item[{}]{v2, }\item[{}]{v3, }\item[{}]{on\+\_\+failure }\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode} +\mbox{\hyperlink{gtest_8h_a8c09939dd67f1bb5b68c9f6a44ea75db}{GTEST\_ASSERT\_}}(pred\_format(#v1, #v2, #v3, v1, v2, v3), \(\backslash\) + on\_failure) +\end{DoxyCode} + + +Definition at line 14829 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_abd207ed869491ba4bba29f8df37b7355}\label{gtest_8h_abd207ed869491ba4bba29f8df37b7355}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T4\+\_\+@{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T4\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T4\+\_\+@{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T4\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T4\+\_\+}{GTEST\_PRED\_FORMAT4\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T4\+\_\+(\begin{DoxyParamCaption}\item[{}]{pred\+\_\+format, }\item[{}]{v1, }\item[{}]{v2, }\item[{}]{v3, }\item[{}]{v4, }\item[{}]{on\+\_\+failure }\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode} +\mbox{\hyperlink{gtest_8h_a8c09939dd67f1bb5b68c9f6a44ea75db}{GTEST\_ASSERT\_}}(pred\_format(#v1, #v2, #v3, #v4, v1, v2, v3, v4), \(\backslash\) + on\_failure) +\end{DoxyCode} + + +Definition at line 14888 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a107623ee191560f703a3fdc983803c8e}\label{gtest_8h_a107623ee191560f703a3fdc983803c8e}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T5\+\_\+@{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T5\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T5\+\_\+@{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T5\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T5\+\_\+}{GTEST\_PRED\_FORMAT5\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+P\+R\+E\+D\+\_\+\+F\+O\+R\+M\+A\+T5\+\_\+(\begin{DoxyParamCaption}\item[{}]{pred\+\_\+format, }\item[{}]{v1, }\item[{}]{v2, }\item[{}]{v3, }\item[{}]{v4, }\item[{}]{v5, }\item[{}]{on\+\_\+failure }\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode} +\mbox{\hyperlink{gtest_8h_a8c09939dd67f1bb5b68c9f6a44ea75db}{GTEST\_ASSERT\_}}(pred\_format(#v1, #v2, #v3, #v4, #v5, v1, v2, v3, v4, v5), \(\backslash\) + on\_failure) +\end{DoxyCode} + + +Definition at line 14953 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a5aa3c938fc1d049f1d9c5332f6a0b1d4}\label{gtest_8h_a5aa3c938fc1d049f1d9c5332f6a0b1d4}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+P\+R\+O\+J\+E\+C\+T\+\_\+\+U\+R\+L\+\_\+@{G\+T\+E\+S\+T\+\_\+\+P\+R\+O\+J\+E\+C\+T\+\_\+\+U\+R\+L\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+P\+R\+O\+J\+E\+C\+T\+\_\+\+U\+R\+L\+\_\+@{G\+T\+E\+S\+T\+\_\+\+P\+R\+O\+J\+E\+C\+T\+\_\+\+U\+R\+L\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+P\+R\+O\+J\+E\+C\+T\+\_\+\+U\+R\+L\+\_\+}{GTEST\_PROJECT\_URL\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+P\+R\+O\+J\+E\+C\+T\+\_\+\+U\+R\+L\+\_\+~\char`\"{}https\+://github.\+com/google/googletest/\char`\"{}} + + + +Definition at line 518 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a9f91fcd24cae0b48fdaeb19102dac525}\label{gtest_8h_a9f91fcd24cae0b48fdaeb19102dac525}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+R\+E\+F\+E\+R\+E\+N\+C\+E\+\_\+\+T\+O\+\_\+\+C\+O\+N\+S\+T\+\_\+@{G\+T\+E\+S\+T\+\_\+\+R\+E\+F\+E\+R\+E\+N\+C\+E\+\_\+\+T\+O\+\_\+\+C\+O\+N\+S\+T\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+R\+E\+F\+E\+R\+E\+N\+C\+E\+\_\+\+T\+O\+\_\+\+C\+O\+N\+S\+T\+\_\+@{G\+T\+E\+S\+T\+\_\+\+R\+E\+F\+E\+R\+E\+N\+C\+E\+\_\+\+T\+O\+\_\+\+C\+O\+N\+S\+T\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+R\+E\+F\+E\+R\+E\+N\+C\+E\+\_\+\+T\+O\+\_\+\+C\+O\+N\+S\+T\+\_\+}{GTEST\_REFERENCE\_TO\_CONST\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+R\+E\+F\+E\+R\+E\+N\+C\+E\+\_\+\+T\+O\+\_\+\+C\+O\+N\+S\+T\+\_\+(\begin{DoxyParamCaption}\item[{}]{T }\end{DoxyParamCaption})~typename \+::\mbox{\hyperlink{structtesting_1_1internal_1_1_const_ref}{testing\+::internal\+::\+Const\+Ref}}$<$T$>$\+::type} + + + +Definition at line 1318 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a2ffec8c60510eb130af387f5ce9a756a}\label{gtest_8h_a2ffec8c60510eb130af387f5ce9a756a}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+R\+E\+M\+O\+V\+E\+\_\+\+C\+O\+N\+S\+T\+\_\+@{G\+T\+E\+S\+T\+\_\+\+R\+E\+M\+O\+V\+E\+\_\+\+C\+O\+N\+S\+T\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+R\+E\+M\+O\+V\+E\+\_\+\+C\+O\+N\+S\+T\+\_\+@{G\+T\+E\+S\+T\+\_\+\+R\+E\+M\+O\+V\+E\+\_\+\+C\+O\+N\+S\+T\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+R\+E\+M\+O\+V\+E\+\_\+\+C\+O\+N\+S\+T\+\_\+}{GTEST\_REMOVE\_CONST\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+R\+E\+M\+O\+V\+E\+\_\+\+C\+O\+N\+S\+T\+\_\+(\begin{DoxyParamCaption}\item[{}]{T }\end{DoxyParamCaption})~typename \+::\mbox{\hyperlink{structtesting_1_1internal_1_1_remove_const}{testing\+::internal\+::\+Remove\+Const}}$<$T$>$\+::type} + + + +Definition at line 7333 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a84c72f25a6a6600e3ff8381ca6982ae9}\label{gtest_8h_a84c72f25a6a6600e3ff8381ca6982ae9}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+R\+E\+M\+O\+V\+E\+\_\+\+R\+E\+F\+E\+R\+E\+N\+C\+E\+\_\+@{G\+T\+E\+S\+T\+\_\+\+R\+E\+M\+O\+V\+E\+\_\+\+R\+E\+F\+E\+R\+E\+N\+C\+E\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+R\+E\+M\+O\+V\+E\+\_\+\+R\+E\+F\+E\+R\+E\+N\+C\+E\+\_\+@{G\+T\+E\+S\+T\+\_\+\+R\+E\+M\+O\+V\+E\+\_\+\+R\+E\+F\+E\+R\+E\+N\+C\+E\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+R\+E\+M\+O\+V\+E\+\_\+\+R\+E\+F\+E\+R\+E\+N\+C\+E\+\_\+}{GTEST\_REMOVE\_REFERENCE\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+R\+E\+M\+O\+V\+E\+\_\+\+R\+E\+F\+E\+R\+E\+N\+C\+E\+\_\+(\begin{DoxyParamCaption}\item[{}]{T }\end{DoxyParamCaption})~typename \+::\mbox{\hyperlink{structtesting_1_1internal_1_1_remove_reference}{testing\+::internal\+::\+Remove\+Reference}}$<$T$>$\+::type} + + + +Definition at line 7312 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a874567b176266188fabfffb8393267ce}\label{gtest_8h_a874567b176266188fabfffb8393267ce}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+R\+E\+M\+O\+V\+E\+\_\+\+R\+E\+F\+E\+R\+E\+N\+C\+E\+\_\+\+A\+N\+D\+\_\+\+C\+O\+N\+S\+T\+\_\+@{G\+T\+E\+S\+T\+\_\+\+R\+E\+M\+O\+V\+E\+\_\+\+R\+E\+F\+E\+R\+E\+N\+C\+E\+\_\+\+A\+N\+D\+\_\+\+C\+O\+N\+S\+T\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+R\+E\+M\+O\+V\+E\+\_\+\+R\+E\+F\+E\+R\+E\+N\+C\+E\+\_\+\+A\+N\+D\+\_\+\+C\+O\+N\+S\+T\+\_\+@{G\+T\+E\+S\+T\+\_\+\+R\+E\+M\+O\+V\+E\+\_\+\+R\+E\+F\+E\+R\+E\+N\+C\+E\+\_\+\+A\+N\+D\+\_\+\+C\+O\+N\+S\+T\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+R\+E\+M\+O\+V\+E\+\_\+\+R\+E\+F\+E\+R\+E\+N\+C\+E\+\_\+\+A\+N\+D\+\_\+\+C\+O\+N\+S\+T\+\_\+}{GTEST\_REMOVE\_REFERENCE\_AND\_CONST\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+R\+E\+M\+O\+V\+E\+\_\+\+R\+E\+F\+E\+R\+E\+N\+C\+E\+\_\+\+A\+N\+D\+\_\+\+C\+O\+N\+S\+T\+\_\+(\begin{DoxyParamCaption}\item[{}]{T }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_a2ffec8c60510eb130af387f5ce9a756a}{G\+T\+E\+S\+T\+\_\+\+R\+E\+M\+O\+V\+E\+\_\+\+C\+O\+N\+S\+T\+\_\+}}(\mbox{\hyperlink{gtest_8h_a84c72f25a6a6600e3ff8381ca6982ae9}{G\+T\+E\+S\+T\+\_\+\+R\+E\+M\+O\+V\+E\+\_\+\+R\+E\+F\+E\+R\+E\+N\+C\+E\+\_\+}}(T))} + + + +Definition at line 7337 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a3c0bbb980d533108ecc23c3534527d3c}\label{gtest_8h_a3c0bbb980d533108ecc23c3534527d3c}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+S\+K\+IP@{G\+T\+E\+S\+T\+\_\+\+S\+K\+IP}} +\index{G\+T\+E\+S\+T\+\_\+\+S\+K\+IP@{G\+T\+E\+S\+T\+\_\+\+S\+K\+IP}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+S\+K\+IP}{GTEST\_SKIP}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+S\+K\+IP(\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_ab75ed7a6cd9e466944ce680c1c07ab47}{G\+T\+E\+S\+T\+\_\+\+S\+K\+I\+P\+\_\+}}(\char`\"{}Skipped\char`\"{})} + + + +Definition at line 16513 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_ab75ed7a6cd9e466944ce680c1c07ab47}\label{gtest_8h_ab75ed7a6cd9e466944ce680c1c07ab47}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+S\+K\+I\+P\+\_\+@{G\+T\+E\+S\+T\+\_\+\+S\+K\+I\+P\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+S\+K\+I\+P\+\_\+@{G\+T\+E\+S\+T\+\_\+\+S\+K\+I\+P\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+S\+K\+I\+P\+\_\+}{GTEST\_SKIP\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+S\+K\+I\+P\+\_\+(\begin{DoxyParamCaption}\item[{}]{message }\end{DoxyParamCaption})~return \mbox{\hyperlink{gtest_8h_a94c73d5368ec946bc354d0992ad00810}{G\+T\+E\+S\+T\+\_\+\+M\+E\+S\+S\+A\+G\+E\+\_\+}}(message, \+::testing\+::\+Test\+Part\+Result\+::k\+Skip)} + + + +Definition at line 7769 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_aed1cc8143222d7a845a1269448ec203e}\label{gtest_8h_aed1cc8143222d7a845a1269448ec203e}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+S\+N\+P\+R\+I\+N\+T\+F\+\_\+@{G\+T\+E\+S\+T\+\_\+\+S\+N\+P\+R\+I\+N\+T\+F\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+S\+N\+P\+R\+I\+N\+T\+F\+\_\+@{G\+T\+E\+S\+T\+\_\+\+S\+N\+P\+R\+I\+N\+T\+F\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+S\+N\+P\+R\+I\+N\+T\+F\+\_\+}{GTEST\_SNPRINTF\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+S\+N\+P\+R\+I\+N\+T\+F\+\_\+~snprintf} + + + +Definition at line 2410 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_affa935d4361fa573644e9c739dde2b14}\label{gtest_8h_affa935d4361fa573644e9c739dde2b14}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+S\+T\+R\+I\+N\+G\+I\+F\+Y\+\_\+@{G\+T\+E\+S\+T\+\_\+\+S\+T\+R\+I\+N\+G\+I\+F\+Y\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+S\+T\+R\+I\+N\+G\+I\+F\+Y\+\_\+@{G\+T\+E\+S\+T\+\_\+\+S\+T\+R\+I\+N\+G\+I\+F\+Y\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+S\+T\+R\+I\+N\+G\+I\+F\+Y\+\_\+}{GTEST\_STRINGIFY\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+S\+T\+R\+I\+N\+G\+I\+F\+Y\+\_\+(\begin{DoxyParamCaption}\item[{}]{name }\end{DoxyParamCaption})~\#name} + + + +Definition at line 6514 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a2690441c38202728f4159ac2462d9720}\label{gtest_8h_a2690441c38202728f4159ac2462d9720}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+S\+U\+C\+C\+E\+ED@{G\+T\+E\+S\+T\+\_\+\+S\+U\+C\+C\+E\+ED}} +\index{G\+T\+E\+S\+T\+\_\+\+S\+U\+C\+C\+E\+ED@{G\+T\+E\+S\+T\+\_\+\+S\+U\+C\+C\+E\+ED}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+S\+U\+C\+C\+E\+ED}{GTEST\_SUCCEED}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+S\+U\+C\+C\+E\+ED(\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_abe012b550eb3807e8c49f7e161bd1567}{G\+T\+E\+S\+T\+\_\+\+S\+U\+C\+C\+E\+S\+S\+\_\+}}(\char`\"{}Succeeded\char`\"{})} + + + +Definition at line 16551 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_abe012b550eb3807e8c49f7e161bd1567}\label{gtest_8h_abe012b550eb3807e8c49f7e161bd1567}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+S\+U\+C\+C\+E\+S\+S\+\_\+@{G\+T\+E\+S\+T\+\_\+\+S\+U\+C\+C\+E\+S\+S\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+S\+U\+C\+C\+E\+S\+S\+\_\+@{G\+T\+E\+S\+T\+\_\+\+S\+U\+C\+C\+E\+S\+S\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+S\+U\+C\+C\+E\+S\+S\+\_\+}{GTEST\_SUCCESS\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+S\+U\+C\+C\+E\+S\+S\+\_\+(\begin{DoxyParamCaption}\item[{}]{message }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_a94c73d5368ec946bc354d0992ad00810}{G\+T\+E\+S\+T\+\_\+\+M\+E\+S\+S\+A\+G\+E\+\_\+}}(message, \+::testing\+::\+Test\+Part\+Result\+::k\+Success)} + + + +Definition at line 7766 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a2e66f7dfc5cb87e0fa0289f653173c69}\label{gtest_8h_a2e66f7dfc5cb87e0fa0289f653173c69}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+S\+U\+P\+P\+R\+E\+S\+S\+\_\+\+U\+N\+R\+E\+A\+C\+H\+A\+B\+L\+E\+\_\+\+C\+O\+D\+E\+\_\+\+W\+A\+R\+N\+I\+N\+G\+\_\+\+B\+E\+L\+O\+W\+\_\+@{G\+T\+E\+S\+T\+\_\+\+S\+U\+P\+P\+R\+E\+S\+S\+\_\+\+U\+N\+R\+E\+A\+C\+H\+A\+B\+L\+E\+\_\+\+C\+O\+D\+E\+\_\+\+W\+A\+R\+N\+I\+N\+G\+\_\+\+B\+E\+L\+O\+W\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+S\+U\+P\+P\+R\+E\+S\+S\+\_\+\+U\+N\+R\+E\+A\+C\+H\+A\+B\+L\+E\+\_\+\+C\+O\+D\+E\+\_\+\+W\+A\+R\+N\+I\+N\+G\+\_\+\+B\+E\+L\+O\+W\+\_\+@{G\+T\+E\+S\+T\+\_\+\+S\+U\+P\+P\+R\+E\+S\+S\+\_\+\+U\+N\+R\+E\+A\+C\+H\+A\+B\+L\+E\+\_\+\+C\+O\+D\+E\+\_\+\+W\+A\+R\+N\+I\+N\+G\+\_\+\+B\+E\+L\+O\+W\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+S\+U\+P\+P\+R\+E\+S\+S\+\_\+\+U\+N\+R\+E\+A\+C\+H\+A\+B\+L\+E\+\_\+\+C\+O\+D\+E\+\_\+\+W\+A\+R\+N\+I\+N\+G\+\_\+\+B\+E\+L\+O\+W\+\_\+}{GTEST\_SUPPRESS\_UNREACHABLE\_CODE\_WARNING\_BELOW\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+S\+U\+P\+P\+R\+E\+S\+S\+\_\+\+U\+N\+R\+E\+A\+C\+H\+A\+B\+L\+E\+\_\+\+C\+O\+D\+E\+\_\+\+W\+A\+R\+N\+I\+N\+G\+\_\+\+B\+E\+L\+O\+W\+\_\+(\begin{DoxyParamCaption}\item[{}]{statement }\end{DoxyParamCaption})~if (\+::\mbox{\hyperlink{namespacetesting_1_1internal_a4d46f09c3bfe68700b7f728d2cc3782f}{testing\+::internal\+::\+Always\+True}}()) \{ statement; \}} + + + +Definition at line 7775 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a216a746d9241b1f42fdd4449698a4d8d}\label{gtest_8h_a216a746d9241b1f42fdd4449698a4d8d}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+T\+E\+ST@{G\+T\+E\+S\+T\+\_\+\+T\+E\+ST}} +\index{G\+T\+E\+S\+T\+\_\+\+T\+E\+ST@{G\+T\+E\+S\+T\+\_\+\+T\+E\+ST}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+T\+E\+ST}{GTEST\_TEST}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+T\+E\+ST(\begin{DoxyParamCaption}\item[{}]{test\+\_\+suite\+\_\+name, }\item[{}]{test\+\_\+name }\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode} +\mbox{\hyperlink{gtest_8h_ab43103f7842de04474e362689f782a46}{GTEST\_TEST\_}}(test\_suite\_name, test\_name, ::\mbox{\hyperlink{classtesting_1_1_test}{testing::Test}}, \(\backslash\) + ::\mbox{\hyperlink{namespacetesting_1_1internal_a1e85cf16bb95b60f879d48ba1fbfc1c9}{testing::internal::GetTestTypeId}}()) +\end{DoxyCode} + + +Definition at line 16957 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_ab43103f7842de04474e362689f782a46}\label{gtest_8h_ab43103f7842de04474e362689f782a46}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+@{G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+@{G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+}{GTEST\_TEST\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+(\begin{DoxyParamCaption}\item[{}]{test\+\_\+suite\+\_\+name, }\item[{}]{test\+\_\+name, }\item[{}]{parent\+\_\+class, }\item[{}]{parent\+\_\+id }\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode} +\textcolor{keyword}{class }\mbox{\hyperlink{gtest_8h_ad4bc4ec847a06e7de981e81c9bb116cf}{GTEST\_TEST\_CLASS\_NAME\_}}(test\_suite\_name, test\_name) \(\backslash\) + : \textcolor{keyword}{public} parent\_class \{ \(\backslash\) + public: \(\backslash\) + GTEST\_TEST\_CLASS\_NAME\_(test\_suite\_name, test\_name)() \{\} \(\backslash\) + \(\backslash\) + private: \(\backslash\) + virtual \textcolor{keywordtype}{void} TestBody(); \(\backslash\) + static ::testing::TestInfo* \textcolor{keyword}{const} test\_info\_ \mbox{\hyperlink{gtest_8h_acdd47601a9376161c349a5881ccc6918}{GTEST\_ATTRIBUTE\_UNUSED\_}}; \(\backslash\) + GTEST\_DISALLOW\_COPY\_AND\_ASSIGN\_(\mbox{\hyperlink{gtest_8h_ad4bc4ec847a06e7de981e81c9bb116cf}{GTEST\_TEST\_CLASS\_NAME\_}}(test\_suite\_name, \(\backslash\) + test\_name)); \(\backslash\) + \}; \(\backslash\) + \(\backslash\) + \mbox{\hyperlink{classtesting_1_1_test_info}{::testing::TestInfo}}* \textcolor{keyword}{const} \mbox{\hyperlink{gtest_8h_ad4bc4ec847a06e7de981e81c9bb116cf}{GTEST\_TEST\_CLASS\_NAME\_}}( + test\_suite\_name, \(\backslash\) + test\_name)::test\_info\_ = \(\backslash\) + ::\mbox{\hyperlink{namespacetesting}{testing}}::internal::\mbox{\hyperlink{namespacetesting_1_1internal_a7ab4072540184e26119ad853f45059f7}{MakeAndRegisterTestInfo}}( + \(\backslash\) + #test\_suite\_name, #test\_name, nullptr, nullptr, \(\backslash\) + ::\mbox{\hyperlink{namespacetesting}{testing}}::internal::CodeLocation(\_\_FILE\_\_, \_\_LINE\_\_), (parent\_id), \(\backslash\) + ::\mbox{\hyperlink{namespacetesting}{testing}}::internal::SuiteApiResolver< \(\backslash\) + parent\_class>::GetSetUpCaseOrSuite(), \(\backslash\) + ::\mbox{\hyperlink{namespacetesting}{testing}}::internal::SuiteApiResolver< \(\backslash\) + parent\_class>::GetTearDownCaseOrSuite(), \(\backslash\) + new ::\mbox{\hyperlink{namespacetesting}{testing}}::internal::TestFactoryImpl<\mbox{\hyperlink{gtest_8h_ad4bc4ec847a06e7de981e81c9bb116cf}{GTEST\_TEST\_CLASS\_NAME\_}}( + \(\backslash\) + test\_suite\_name, test\_name)>); \(\backslash\) + void \mbox{\hyperlink{gtest_8h_ad4bc4ec847a06e7de981e81c9bb116cf}{GTEST\_TEST\_CLASS\_NAME\_}}(test\_suite\_name, test\_name)::TestBody() +\end{DoxyCode} + + +Definition at line 7868 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_af48bbd26d54d4afc5e4cef39b1c76ba3}\label{gtest_8h_af48bbd26d54d4afc5e4cef39b1c76ba3}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+A\+N\+Y\+\_\+\+T\+H\+R\+O\+W\+\_\+@{G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+A\+N\+Y\+\_\+\+T\+H\+R\+O\+W\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+A\+N\+Y\+\_\+\+T\+H\+R\+O\+W\+\_\+@{G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+A\+N\+Y\+\_\+\+T\+H\+R\+O\+W\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+A\+N\+Y\+\_\+\+T\+H\+R\+O\+W\+\_\+}{GTEST\_TEST\_ANY\_THROW\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+A\+N\+Y\+\_\+\+T\+H\+R\+O\+W\+\_\+(\begin{DoxyParamCaption}\item[{}]{statement, }\item[{}]{fail }\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode} +GTEST\_AMBIGUOUS\_ELSE\_BLOCKER\_ \(\backslash\) + if (::\mbox{\hyperlink{namespacetesting_1_1internal_a4d46f09c3bfe68700b7f728d2cc3782f}{testing::internal::AlwaysTrue}}()) \{ \(\backslash\) + bool gtest\_caught\_any = \textcolor{keyword}{false}; \(\backslash\) + try \{ \(\backslash\) + GTEST\_SUPPRESS\_UNREACHABLE\_CODE\_WARNING\_BELOW\_(statement); \(\backslash\) + \} \(\backslash\) + catch (...) \{ \(\backslash\) + gtest\_caught\_any = \textcolor{keyword}{true}; \(\backslash\) + \} \(\backslash\) + if (!gtest\_caught\_any) \{ \(\backslash\) + goto \mbox{\hyperlink{gtest_8h_ae3c336cbe1ae2bd1b1d019333e4428a0}{GTEST\_CONCAT\_TOKEN\_}}(gtest\_label\_testanythrow\_, \_\_LINE\_\_); \(\backslash\) + \} \(\backslash\) + \} \mbox{\hyperlink{gtest_8h_ae3c336cbe1ae2bd1b1d019333e4428a0}{else \(\backslash\)}} +\mbox{\hyperlink{gtest_8h_ae3c336cbe1ae2bd1b1d019333e4428a0}{ GTEST\_CONCAT\_TOKEN\_}}(gtest\_label\_testanythrow\_, \_\_LINE\_\_): \(\backslash\) + fail(\textcolor{stringliteral}{"Expected: "} #statement \textcolor{stringliteral}{" throws an exception.\(\backslash\)n"} \(\backslash\) + \textcolor{stringliteral}{" Actual: it doesn't."}) +\end{DoxyCode} + + +Definition at line 7818 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_ae8912365e1d00a7a2bd248268c64aa1a}\label{gtest_8h_ae8912365e1d00a7a2bd248268c64aa1a}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+B\+O\+O\+L\+E\+A\+N\+\_\+@{G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+B\+O\+O\+L\+E\+A\+N\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+B\+O\+O\+L\+E\+A\+N\+\_\+@{G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+B\+O\+O\+L\+E\+A\+N\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+B\+O\+O\+L\+E\+A\+N\+\_\+}{GTEST\_TEST\_BOOLEAN\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+B\+O\+O\+L\+E\+A\+N\+\_\+(\begin{DoxyParamCaption}\item[{}]{expression, }\item[{}]{text, }\item[{}]{actual, }\item[{}]{expected, }\item[{}]{fail }\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode} +GTEST\_AMBIGUOUS\_ELSE\_BLOCKER\_ \(\backslash\) + if (const ::testing::AssertionResult gtest\_ar\_ = \(\backslash\) + ::testing::AssertionResult(expression)) \(\backslash\) + ; \(\backslash\) + else \(\backslash\) + fail(::\mbox{\hyperlink{namespacetesting_1_1internal_aed8d3ad4341f8f2de53440e39c995632}{testing::internal::GetBoolAssertionFailureMessage}} + (\(\backslash\) + gtest\_ar\_, text, #actual, #expected).c\_str()) +\end{DoxyCode} + + +Definition at line 7840 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_ad4bc4ec847a06e7de981e81c9bb116cf}\label{gtest_8h_ad4bc4ec847a06e7de981e81c9bb116cf}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+C\+L\+A\+S\+S\+\_\+\+N\+A\+M\+E\+\_\+@{G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+C\+L\+A\+S\+S\+\_\+\+N\+A\+M\+E\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+C\+L\+A\+S\+S\+\_\+\+N\+A\+M\+E\+\_\+@{G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+C\+L\+A\+S\+S\+\_\+\+N\+A\+M\+E\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+C\+L\+A\+S\+S\+\_\+\+N\+A\+M\+E\+\_\+}{GTEST\_TEST\_CLASS\_NAME\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+C\+L\+A\+S\+S\+\_\+\+N\+A\+M\+E\+\_\+(\begin{DoxyParamCaption}\item[{}]{test\+\_\+suite\+\_\+name, }\item[{}]{test\+\_\+name }\end{DoxyParamCaption})~test\+\_\+suite\+\_\+name\#\#\+\_\+\#\#test\+\_\+name\#\#\+\_\+\+Test} + + + +Definition at line 7864 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a1b37a3c446836d33040f3266a6236081}\label{gtest_8h_a1b37a3c446836d33040f3266a6236081}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+N\+O\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+@{G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+N\+O\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+N\+O\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+@{G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+N\+O\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+N\+O\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+}{GTEST\_TEST\_NO\_FATAL\_FAILURE\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+N\+O\+\_\+\+F\+A\+T\+A\+L\+\_\+\+F\+A\+I\+L\+U\+R\+E\+\_\+(\begin{DoxyParamCaption}\item[{}]{statement, }\item[{}]{fail }\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode} +GTEST\_AMBIGUOUS\_ELSE\_BLOCKER\_ \(\backslash\) + if (::\mbox{\hyperlink{namespacetesting_1_1internal_a4d46f09c3bfe68700b7f728d2cc3782f}{testing::internal::AlwaysTrue}}()) \{ \(\backslash\) + ::testing::internal::HasNewFatalFailureHelper gtest\_fatal\_failure\_checker; \(\backslash\) + GTEST\_SUPPRESS\_UNREACHABLE\_CODE\_WARNING\_BELOW\_(statement); \(\backslash\) + if (gtest\_fatal\_failure\_checker.has\_new\_fatal\_failure()) \{ \(\backslash\) + goto \mbox{\hyperlink{gtest_8h_ae3c336cbe1ae2bd1b1d019333e4428a0}{GTEST\_CONCAT\_TOKEN\_}}(gtest\_label\_testnofatal\_, \_\_LINE\_\_); \(\backslash\) + \} \(\backslash\) + \} \mbox{\hyperlink{gtest_8h_ae3c336cbe1ae2bd1b1d019333e4428a0}{else \(\backslash\)}} +\mbox{\hyperlink{gtest_8h_ae3c336cbe1ae2bd1b1d019333e4428a0}{ GTEST\_CONCAT\_TOKEN\_}}(gtest\_label\_testnofatal\_, \_\_LINE\_\_): \(\backslash\) + fail(\textcolor{stringliteral}{"Expected: "} #statement \textcolor{stringliteral}{" doesn't generate new fatal "} \(\backslash\) + \textcolor{stringliteral}{"failures in the current thread.\(\backslash\)n"} \(\backslash\) + \textcolor{stringliteral}{" Actual: it does."}) +\end{DoxyCode} + + +Definition at line 7849 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a9a109d026b5a904646437d7570e13581}\label{gtest_8h_a9a109d026b5a904646437d7570e13581}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+N\+O\+\_\+\+T\+H\+R\+O\+W\+\_\+@{G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+N\+O\+\_\+\+T\+H\+R\+O\+W\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+N\+O\+\_\+\+T\+H\+R\+O\+W\+\_\+@{G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+N\+O\+\_\+\+T\+H\+R\+O\+W\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+N\+O\+\_\+\+T\+H\+R\+O\+W\+\_\+}{GTEST\_TEST\_NO\_THROW\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+N\+O\+\_\+\+T\+H\+R\+O\+W\+\_\+(\begin{DoxyParamCaption}\item[{}]{statement, }\item[{}]{fail }\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode} +GTEST\_AMBIGUOUS\_ELSE\_BLOCKER\_ \(\backslash\) + if (::\mbox{\hyperlink{namespacetesting_1_1internal_a4d46f09c3bfe68700b7f728d2cc3782f}{testing::internal::AlwaysTrue}}()) \{ \(\backslash\) + try \{ \(\backslash\) + GTEST\_SUPPRESS\_UNREACHABLE\_CODE\_WARNING\_BELOW\_(statement); \(\backslash\) + \} \(\backslash\) + catch (...) \{ \(\backslash\) + goto \mbox{\hyperlink{gtest_8h_ae3c336cbe1ae2bd1b1d019333e4428a0}{GTEST\_CONCAT\_TOKEN\_}}(gtest\_label\_testnothrow\_, \_\_LINE\_\_); \(\backslash\) + \} \(\backslash\) + \} \mbox{\hyperlink{gtest_8h_ae3c336cbe1ae2bd1b1d019333e4428a0}{else \(\backslash\)}} +\mbox{\hyperlink{gtest_8h_ae3c336cbe1ae2bd1b1d019333e4428a0}{ GTEST\_CONCAT\_TOKEN\_}}(gtest\_label\_testnothrow\_, \_\_LINE\_\_): \(\backslash\) + fail(\textcolor{stringliteral}{"Expected: "} #statement \textcolor{stringliteral}{" doesn't throw an exception.\(\backslash\)n"} \(\backslash\) + \textcolor{stringliteral}{" Actual: it throws."}) +\end{DoxyCode} + + +Definition at line 7804 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a3f71db93eaf30b0cfca9612b9ac32106}\label{gtest_8h_a3f71db93eaf30b0cfca9612b9ac32106}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+T\+H\+R\+O\+W\+\_\+@{G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+T\+H\+R\+O\+W\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+T\+H\+R\+O\+W\+\_\+@{G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+T\+H\+R\+O\+W\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+T\+H\+R\+O\+W\+\_\+}{GTEST\_TEST\_THROW\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+T\+E\+S\+T\+\_\+\+T\+H\+R\+O\+W\+\_\+(\begin{DoxyParamCaption}\item[{}]{statement, }\item[{}]{expected\+\_\+exception, }\item[{}]{fail }\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode} +GTEST\_AMBIGUOUS\_ELSE\_BLOCKER\_ \(\backslash\) + if (::\mbox{\hyperlink{structtesting_1_1internal_1_1_const_char_ptr}{testing::internal::ConstCharPtr}} gtest\_msg = \textcolor{stringliteral}{""}) \{ \(\backslash\) + bool gtest\_caught\_expected = \textcolor{keyword}{false}; \(\backslash\) + try \{ \(\backslash\) + GTEST\_SUPPRESS\_UNREACHABLE\_CODE\_WARNING\_BELOW\_(statement); \(\backslash\) + \} \(\backslash\) + catch (expected\_exception \textcolor{keyword}{const}&) \{ \(\backslash\) + gtest\_caught\_expected = \textcolor{keyword}{true}; \(\backslash\) + \} \(\backslash\) + catch (...) \{ \(\backslash\) + gtest\_msg.value = \(\backslash\) + \textcolor{stringliteral}{"Expected: "} #statement \textcolor{stringliteral}{" throws an exception of type "} \(\backslash\) +\textcolor{preprocessor}{ #expected\_exception ".\(\backslash\)n Actual: it throws a different type."; \(\backslash\)} +\textcolor{preprocessor}{ goto GTEST\_CONCAT\_TOKEN\_(gtest\_label\_testthrow\_, \_\_LINE\_\_); \(\backslash\)} +\textcolor{preprocessor}{ \} \(\backslash\)} +\textcolor{preprocessor}{ if (!gtest\_caught\_expected) \{ \(\backslash\)} +\textcolor{preprocessor}{ gtest\_msg.value = \(\backslash\)} +\textcolor{preprocessor}{ "Expected: " #statement " throws an exception of type " \(\backslash\)} +\textcolor{preprocessor}{ #expected\_exception ".\(\backslash\)n Actual: it throws nothing."; \(\backslash\)} +\textcolor{preprocessor}{ goto GTEST\_CONCAT\_TOKEN\_(gtest\_label\_testthrow\_, \_\_LINE\_\_); \(\backslash\)} +\textcolor{preprocessor}{ \} \(\backslash\)} +\textcolor{preprocessor}{ \} else \(\backslash\)} +\textcolor{preprocessor}{ GTEST\_CONCAT\_TOKEN\_(gtest\_label\_testthrow\_, \_\_LINE\_\_): \(\backslash\)} +\textcolor{preprocessor}{ fail(gtest\_msg.value)} +\end{DoxyCode} + + +Definition at line 7778 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_aa5f42ab29859b7f49a901770d2e66855}\label{gtest_8h_aa5f42ab29859b7f49a901770d2e66855}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+U\+N\+S\+U\+P\+P\+O\+R\+T\+E\+D\+\_\+\+D\+E\+A\+T\+H\+\_\+\+T\+E\+ST@{G\+T\+E\+S\+T\+\_\+\+U\+N\+S\+U\+P\+P\+O\+R\+T\+E\+D\+\_\+\+D\+E\+A\+T\+H\+\_\+\+T\+E\+ST}} +\index{G\+T\+E\+S\+T\+\_\+\+U\+N\+S\+U\+P\+P\+O\+R\+T\+E\+D\+\_\+\+D\+E\+A\+T\+H\+\_\+\+T\+E\+ST@{G\+T\+E\+S\+T\+\_\+\+U\+N\+S\+U\+P\+P\+O\+R\+T\+E\+D\+\_\+\+D\+E\+A\+T\+H\+\_\+\+T\+E\+ST}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+U\+N\+S\+U\+P\+P\+O\+R\+T\+E\+D\+\_\+\+D\+E\+A\+T\+H\+\_\+\+T\+E\+ST}{GTEST\_UNSUPPORTED\_DEATH\_TEST}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+U\+N\+S\+U\+P\+P\+O\+R\+T\+E\+D\+\_\+\+D\+E\+A\+T\+H\+\_\+\+T\+E\+ST(\begin{DoxyParamCaption}\item[{}]{statement, }\item[{}]{regex, }\item[{}]{terminator }\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode} +GTEST\_AMBIGUOUS\_ELSE\_BLOCKER\_ \(\backslash\) + if (::\mbox{\hyperlink{namespacetesting_1_1internal_a4d46f09c3bfe68700b7f728d2cc3782f}{testing::internal::AlwaysTrue}}()) \{ \(\backslash\) + GTEST\_LOG\_(WARNING) \(\backslash\) + << \textcolor{stringliteral}{"Death tests are not supported on this platform.\(\backslash\)n"} \(\backslash\) + << \textcolor{stringliteral}{"Statement '"} #statement \textcolor{stringliteral}{"' cannot be verified."}; \(\backslash\) + \} \textcolor{keywordflow}{else} \textcolor{keywordflow}{if} (::\mbox{\hyperlink{namespacetesting_1_1internal_a4b24c851ab13569b1b15b3d259b60d2e}{testing::internal::AlwaysFalse}}()) \{ + \mbox{\hyperlink{classtesting_1_1internal_1_1_r_e_a1e81f9a87211bdca645e025f8f0236c8}{\(\backslash\)}} +\mbox{\hyperlink{classtesting_1_1internal_1_1_r_e_a1e81f9a87211bdca645e025f8f0236c8}{ ::testing::internal::RE::PartialMatch}}(\textcolor{stringliteral}{".*"}, (regex)); \(\backslash\) + GTEST\_SUPPRESS\_UNREACHABLE\_CODE\_WARNING\_BELOW\_(statement); \(\backslash\) + terminator; \(\backslash\) + \} else \(\backslash\) + ::testing::Message() +\end{DoxyCode} + + +Definition at line 10328 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_aa2315948dda8dba4fc516575657f193c}\label{gtest_8h_aa2315948dda8dba4fc516575657f193c}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+U\+S\+E\+\_\+\+O\+W\+N\+\_\+\+F\+L\+A\+G\+F\+I\+L\+E\+\_\+\+F\+L\+A\+G\+\_\+@{G\+T\+E\+S\+T\+\_\+\+U\+S\+E\+\_\+\+O\+W\+N\+\_\+\+F\+L\+A\+G\+F\+I\+L\+E\+\_\+\+F\+L\+A\+G\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+U\+S\+E\+\_\+\+O\+W\+N\+\_\+\+F\+L\+A\+G\+F\+I\+L\+E\+\_\+\+F\+L\+A\+G\+\_\+@{G\+T\+E\+S\+T\+\_\+\+U\+S\+E\+\_\+\+O\+W\+N\+\_\+\+F\+L\+A\+G\+F\+I\+L\+E\+\_\+\+F\+L\+A\+G\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+U\+S\+E\+\_\+\+O\+W\+N\+\_\+\+F\+L\+A\+G\+F\+I\+L\+E\+\_\+\+F\+L\+A\+G\+\_\+}{GTEST\_USE\_OWN\_FLAGFILE\_FLAG\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+U\+S\+E\+\_\+\+O\+W\+N\+\_\+\+F\+L\+A\+G\+F\+I\+L\+E\+\_\+\+F\+L\+A\+G\+\_\+~1} + + + +Definition at line 2489 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_acecef794eeb09598cd47da764271cb18}\label{gtest_8h_acecef794eeb09598cd47da764271cb18}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+U\+S\+E\+S\+\_\+\+P\+O\+S\+I\+X\+\_\+\+RE@{G\+T\+E\+S\+T\+\_\+\+U\+S\+E\+S\+\_\+\+P\+O\+S\+I\+X\+\_\+\+RE}} +\index{G\+T\+E\+S\+T\+\_\+\+U\+S\+E\+S\+\_\+\+P\+O\+S\+I\+X\+\_\+\+RE@{G\+T\+E\+S\+T\+\_\+\+U\+S\+E\+S\+\_\+\+P\+O\+S\+I\+X\+\_\+\+RE}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+U\+S\+E\+S\+\_\+\+P\+O\+S\+I\+X\+\_\+\+RE}{GTEST\_USES\_POSIX\_RE}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+U\+S\+E\+S\+\_\+\+P\+O\+S\+I\+X\+\_\+\+RE~1} + + + +Definition at line 618 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a0e3904ca8d62334ab5f29c057dceb6a1}\label{gtest_8h_a0e3904ca8d62334ab5f29c057dceb6a1}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+W\+I\+D\+E\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+U\+S\+E\+S\+\_\+\+U\+T\+F16\+\_\+@{G\+T\+E\+S\+T\+\_\+\+W\+I\+D\+E\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+U\+S\+E\+S\+\_\+\+U\+T\+F16\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+W\+I\+D\+E\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+U\+S\+E\+S\+\_\+\+U\+T\+F16\+\_\+@{G\+T\+E\+S\+T\+\_\+\+W\+I\+D\+E\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+U\+S\+E\+S\+\_\+\+U\+T\+F16\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+W\+I\+D\+E\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+U\+S\+E\+S\+\_\+\+U\+T\+F16\+\_\+}{GTEST\_WIDE\_STRING\_USES\_UTF16\_}} +{\footnotesize\ttfamily \#define G\+T\+E\+S\+T\+\_\+\+W\+I\+D\+E\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+U\+S\+E\+S\+\_\+\+U\+T\+F16\+\_\+~(G\+T\+E\+S\+T\+\_\+\+O\+S\+\_\+\+W\+I\+N\+D\+O\+WS $\vert$$\vert$ G\+T\+E\+S\+T\+\_\+\+O\+S\+\_\+\+C\+Y\+G\+W\+IN $\vert$$\vert$ G\+T\+E\+S\+T\+\_\+\+O\+S\+\_\+\+A\+IX $\vert$$\vert$ G\+T\+E\+S\+T\+\_\+\+O\+S\+\_\+\+O\+S2)} + + + +Definition at line 856 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_acc356fe00725fe8bf8b95791c0ffacbd}\label{gtest_8h_acc356fe00725fe8bf8b95791c0ffacbd}} +\index{gtest.\+h@{gtest.\+h}!I\+N\+S\+T\+A\+N\+T\+I\+A\+T\+E\+\_\+\+T\+E\+S\+T\+\_\+\+C\+A\+S\+E\+\_\+P@{I\+N\+S\+T\+A\+N\+T\+I\+A\+T\+E\+\_\+\+T\+E\+S\+T\+\_\+\+C\+A\+S\+E\+\_\+P}} +\index{I\+N\+S\+T\+A\+N\+T\+I\+A\+T\+E\+\_\+\+T\+E\+S\+T\+\_\+\+C\+A\+S\+E\+\_\+P@{I\+N\+S\+T\+A\+N\+T\+I\+A\+T\+E\+\_\+\+T\+E\+S\+T\+\_\+\+C\+A\+S\+E\+\_\+P}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{I\+N\+S\+T\+A\+N\+T\+I\+A\+T\+E\+\_\+\+T\+E\+S\+T\+\_\+\+C\+A\+S\+E\+\_\+P}{INSTANTIATE\_TEST\_CASE\_P}} +{\footnotesize\ttfamily \#define I\+N\+S\+T\+A\+N\+T\+I\+A\+T\+E\+\_\+\+T\+E\+S\+T\+\_\+\+C\+A\+S\+E\+\_\+P~\mbox{\hyperlink{gtest_8h_a016124361c862c0db315e4c9dc4d911a}{I\+N\+S\+T\+A\+N\+T\+I\+A\+T\+E\+\_\+\+T\+E\+S\+T\+\_\+\+S\+U\+I\+T\+E\+\_\+P}}} + + + +Definition at line 13739 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a016124361c862c0db315e4c9dc4d911a}\label{gtest_8h_a016124361c862c0db315e4c9dc4d911a}} +\index{gtest.\+h@{gtest.\+h}!I\+N\+S\+T\+A\+N\+T\+I\+A\+T\+E\+\_\+\+T\+E\+S\+T\+\_\+\+S\+U\+I\+T\+E\+\_\+P@{I\+N\+S\+T\+A\+N\+T\+I\+A\+T\+E\+\_\+\+T\+E\+S\+T\+\_\+\+S\+U\+I\+T\+E\+\_\+P}} +\index{I\+N\+S\+T\+A\+N\+T\+I\+A\+T\+E\+\_\+\+T\+E\+S\+T\+\_\+\+S\+U\+I\+T\+E\+\_\+P@{I\+N\+S\+T\+A\+N\+T\+I\+A\+T\+E\+\_\+\+T\+E\+S\+T\+\_\+\+S\+U\+I\+T\+E\+\_\+P}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{I\+N\+S\+T\+A\+N\+T\+I\+A\+T\+E\+\_\+\+T\+E\+S\+T\+\_\+\+S\+U\+I\+T\+E\+\_\+P}{INSTANTIATE\_TEST\_SUITE\_P}} +{\footnotesize\ttfamily \#define I\+N\+S\+T\+A\+N\+T\+I\+A\+T\+E\+\_\+\+T\+E\+S\+T\+\_\+\+S\+U\+I\+T\+E\+\_\+P(\begin{DoxyParamCaption}\item[{}]{prefix, }\item[{}]{test\+\_\+suite\+\_\+name, }\item[{}]{generator, }\item[{}]{... }\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode} +static ::testing::internal::ParamGenerator \(\backslash\) + gtest\_##prefix##test\_suite\_name##\_EvalGenerator\_() \{ \(\backslash\) + return generator; \(\backslash\) + \} \mbox{\hyperlink{namespacetesting_1_1internal_a8e8ff5b11e64078831112677156cb111}{\(\backslash\)}} +\mbox{\hyperlink{namespacetesting_1_1internal_a8e8ff5b11e64078831112677156cb111}{ static ::std::string}} gtest\_##prefix##test\_suite\_name##\_EvalGenerateName\_( \(\backslash\) + const ::testing::TestParamInfo& info) \{ \(\backslash\) + return ::testing::internal::GetParamNameGen( \(\backslash\) + \_\_VA\_ARGS\_\_)(info); \(\backslash\) + \} \(\backslash\) + static \textcolor{keywordtype}{int} gtest\_##prefix##test\_suite\_name##\_dummy\_ \(\backslash\) + GTEST\_ATTRIBUTE\_UNUSED\_ = \mbox{\hyperlink{classtesting_1_1_unit_test_af254e2e695471eb9f128bc556bae3668}{\(\backslash\)}} +\mbox{\hyperlink{classtesting_1_1_unit_test_af254e2e695471eb9f128bc556bae3668}{ ::testing::UnitTest::GetInstance}}() + \(\backslash\) + ->\mbox{\hyperlink{classtesting_1_1_unit_test_a3f72b753a9eda20bf7ab2aef0bdcc40f}{parameterized\_test\_registry}}() \(\backslash\) + .\mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_registry_a89ef6dd228f4188e1928513e860580d0}{GetTestSuitePatternHolder}}( \(\backslash\) +\textcolor{preprocessor}{ #test\_suite\_name, \(\backslash\)} +\textcolor{preprocessor}{ ::testing::internal::CodeLocation(\_\_FILE\_\_, \_\_LINE\_\_)) \(\backslash\)} +\textcolor{preprocessor}{ ->AddTestSuiteInstantiation( \(\backslash\)} +\textcolor{preprocessor}{ #prefix, >est\_##prefix##test\_suite\_name##\_EvalGenerator\_, \(\backslash\)} +\textcolor{preprocessor}{ >est\_##prefix##test\_suite\_name##\_EvalGenerateName\_, \(\backslash\)} +\textcolor{preprocessor}{ \_\_FILE\_\_, \_\_LINE\_\_)} +\end{DoxyCode} + + +Definition at line 13715 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a4dac08f15adc8cb1ee0e5c1bfb0f440d}\label{gtest_8h_a4dac08f15adc8cb1ee0e5c1bfb0f440d}} +\index{gtest.\+h@{gtest.\+h}!S\+C\+O\+P\+E\+D\+\_\+\+T\+R\+A\+CE@{S\+C\+O\+P\+E\+D\+\_\+\+T\+R\+A\+CE}} +\index{S\+C\+O\+P\+E\+D\+\_\+\+T\+R\+A\+CE@{S\+C\+O\+P\+E\+D\+\_\+\+T\+R\+A\+CE}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{S\+C\+O\+P\+E\+D\+\_\+\+T\+R\+A\+CE}{SCOPED\_TRACE}} +{\footnotesize\ttfamily \#define S\+C\+O\+P\+E\+D\+\_\+\+T\+R\+A\+CE(\begin{DoxyParamCaption}\item[{}]{message }\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode} +\mbox{\hyperlink{classtesting_1_1_scoped_trace}{::testing::ScopedTrace}} \mbox{\hyperlink{gtest_8h_ae3c336cbe1ae2bd1b1d019333e4428a0}{GTEST\_CONCAT\_TOKEN\_}}(gtest\_trace\_, \_\_LINE\_\_) + (\(\backslash\) + \_\_FILE\_\_, \_\_LINE\_\_, (message)) +\end{DoxyCode} + + +Definition at line 16891 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a75adcdf89f69b0b615e395daafc315af}\label{gtest_8h_a75adcdf89f69b0b615e395daafc315af}} +\index{gtest.\+h@{gtest.\+h}!S\+U\+C\+C\+E\+ED@{S\+U\+C\+C\+E\+ED}} +\index{S\+U\+C\+C\+E\+ED@{S\+U\+C\+C\+E\+ED}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{S\+U\+C\+C\+E\+ED}{SUCCEED}} +{\footnotesize\ttfamily \#define S\+U\+C\+C\+E\+ED(\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_a2690441c38202728f4159ac2462d9720}{G\+T\+E\+S\+T\+\_\+\+S\+U\+C\+C\+E\+ED}}()} + + + +Definition at line 16556 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_ab5540a6d621853916be8240ff51819cf}\label{gtest_8h_ab5540a6d621853916be8240ff51819cf}} +\index{gtest.\+h@{gtest.\+h}!T\+E\+ST@{T\+E\+ST}} +\index{T\+E\+ST@{T\+E\+ST}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{T\+E\+ST}{TEST}} +{\footnotesize\ttfamily \#define T\+E\+ST(\begin{DoxyParamCaption}\item[{}]{test\+\_\+suite\+\_\+name, }\item[{}]{test\+\_\+name }\end{DoxyParamCaption})~\mbox{\hyperlink{gtest_8h_a216a746d9241b1f42fdd4449698a4d8d}{G\+T\+E\+S\+T\+\_\+\+T\+E\+ST}}(test\+\_\+suite\+\_\+name, test\+\_\+name)} + + + +Definition at line 16964 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a0ee66d464d1a06c20c1929cae09d8758}\label{gtest_8h_a0ee66d464d1a06c20c1929cae09d8758}} +\index{gtest.\+h@{gtest.\+h}!T\+E\+S\+T\+\_\+F@{T\+E\+S\+T\+\_\+F}} +\index{T\+E\+S\+T\+\_\+F@{T\+E\+S\+T\+\_\+F}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{T\+E\+S\+T\+\_\+F}{TEST\_F}} +{\footnotesize\ttfamily \#define T\+E\+S\+T\+\_\+F(\begin{DoxyParamCaption}\item[{}]{test\+\_\+fixture, }\item[{}]{test\+\_\+name }\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode} +\mbox{\hyperlink{gtest_8h_ab43103f7842de04474e362689f782a46}{GTEST\_TEST\_}}(test\_fixture, test\_name, test\_fixture, \(\backslash\) + ::testing::internal::GetTypeId()) +\end{DoxyCode} + + +Definition at line 16993 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a1adc861b311e3fbd97bcc72e0b0f5962}\label{gtest_8h_a1adc861b311e3fbd97bcc72e0b0f5962}} +\index{gtest.\+h@{gtest.\+h}!T\+E\+S\+T\+\_\+P@{T\+E\+S\+T\+\_\+P}} +\index{T\+E\+S\+T\+\_\+P@{T\+E\+S\+T\+\_\+P}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{T\+E\+S\+T\+\_\+P}{TEST\_P}} +{\footnotesize\ttfamily \#define T\+E\+S\+T\+\_\+P(\begin{DoxyParamCaption}\item[{}]{test\+\_\+suite\+\_\+name, }\item[{}]{test\+\_\+name }\end{DoxyParamCaption})} + +{\bfseries Value\+:} +\begin{DoxyCode} +\textcolor{keyword}{class }\mbox{\hyperlink{gtest_8h_ad4bc4ec847a06e7de981e81c9bb116cf}{GTEST\_TEST\_CLASS\_NAME\_}}(test\_suite\_name, test\_name) \(\backslash\) + : \textcolor{keyword}{public} test\_suite\_name \{ \(\backslash\) + public: \(\backslash\) + GTEST\_TEST\_CLASS\_NAME\_(test\_suite\_name, test\_name)() \{\} \(\backslash\) + virtual \textcolor{keywordtype}{void} TestBody(); \(\backslash\) + \(\backslash\) + private: \(\backslash\) + static \textcolor{keywordtype}{int} AddToRegistry() \{ \mbox{\hyperlink{classtesting_1_1_unit_test_af254e2e695471eb9f128bc556bae3668}{\(\backslash\)}} +\mbox{\hyperlink{classtesting_1_1_unit_test_af254e2e695471eb9f128bc556bae3668}{ ::testing::UnitTest::GetInstance}}() + \(\backslash\) + ->\mbox{\hyperlink{classtesting_1_1_unit_test_a3f72b753a9eda20bf7ab2aef0bdcc40f}{parameterized\_test\_registry}}() \(\backslash\) + .\mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_registry_a89ef6dd228f4188e1928513e860580d0}{GetTestSuitePatternHolder}}( \(\backslash\) +\textcolor{preprocessor}{ #test\_suite\_name, \(\backslash\)} +\textcolor{preprocessor}{ ::testing::internal::CodeLocation(\_\_FILE\_\_, \_\_LINE\_\_)) \(\backslash\)} +\textcolor{preprocessor}{ ->AddTestPattern( \(\backslash\)} +\textcolor{preprocessor}{ GTEST\_STRINGIFY\_(test\_suite\_name), GTEST\_STRINGIFY\_(test\_name), \(\backslash\)} +\textcolor{preprocessor}{ new ::testing::internal::TestMetaFactory()); \(\backslash\)} +\textcolor{preprocessor}{ return 0; \(\backslash\)} +\textcolor{preprocessor}{ \} \(\backslash\)} +\textcolor{preprocessor}{ static int gtest\_registering\_dummy\_ GTEST\_ATTRIBUTE\_UNUSED\_; \(\backslash\)} +\textcolor{preprocessor}{ GTEST\_DISALLOW\_COPY\_AND\_ASSIGN\_(GTEST\_TEST\_CLASS\_NAME\_(test\_suite\_name, \(\backslash\)} +\textcolor{preprocessor}{ test\_name)); \(\backslash\)} +\textcolor{preprocessor}{ \}; \(\backslash\)} +\textcolor{preprocessor}{ int GTEST\_TEST\_CLASS\_NAME\_(test\_suite\_name, \(\backslash\)} +\textcolor{preprocessor}{ test\_name)::gtest\_registering\_dummy\_ = \(\backslash\)} +\textcolor{preprocessor}{ GTEST\_TEST\_CLASS\_NAME\_(test\_suite\_name, test\_name)::AddToRegistry(); \(\backslash\)} +\textcolor{preprocessor}{ void GTEST\_TEST\_CLASS\_NAME\_(test\_suite\_name, test\_name)::TestBody()} +\end{DoxyCode} + + +Definition at line 13674 of file gtest.\+h. + + + +\subsection{Function Documentation} +\mbox{\Hypertarget{gtest_8h_a88f79832f9d045112a76e9da8611cc13}\label{gtest_8h_a88f79832f9d045112a76e9da8611cc13}} +\index{gtest.\+h@{gtest.\+h}!G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+W\+A\+R\+N\+I\+N\+G\+S\+\_\+\+P\+U\+S\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+W\+A\+R\+N\+I\+N\+G\+S\+\_\+\+P\+U\+S\+H\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+W\+A\+R\+N\+I\+N\+G\+S\+\_\+\+P\+U\+S\+H\+\_\+@{G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+W\+A\+R\+N\+I\+N\+G\+S\+\_\+\+P\+U\+S\+H\+\_\+}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+W\+A\+R\+N\+I\+N\+G\+S\+\_\+\+P\+U\+S\+H\+\_\+()}{GTEST\_DISABLE\_MSC\_WARNINGS\_PUSH\_()}} +{\footnotesize\ttfamily G\+T\+E\+S\+T\+\_\+\+D\+I\+S\+A\+B\+L\+E\+\_\+\+M\+S\+C\+\_\+\+W\+A\+R\+N\+I\+N\+G\+S\+\_\+\+P\+U\+S\+H\+\_\+ (\begin{DoxyParamCaption}\item[{4251}]{5046 }\end{DoxyParamCaption})} + + + +Definition at line 2988 of file gtest.\+h. + +\mbox{\Hypertarget{gtest_8h_a853a3792807489591d3d4a2f2ff9359f}\label{gtest_8h_a853a3792807489591d3d4a2f2ff9359f}} +\index{gtest.\+h@{gtest.\+h}!R\+U\+N\+\_\+\+A\+L\+L\+\_\+\+T\+E\+S\+TS@{R\+U\+N\+\_\+\+A\+L\+L\+\_\+\+T\+E\+S\+TS}} +\index{R\+U\+N\+\_\+\+A\+L\+L\+\_\+\+T\+E\+S\+TS@{R\+U\+N\+\_\+\+A\+L\+L\+\_\+\+T\+E\+S\+TS}!gtest.\+h@{gtest.\+h}} +\subsubsection{\texorpdfstring{R\+U\+N\+\_\+\+A\+L\+L\+\_\+\+T\+E\+S\+T\+S()}{RUN\_ALL\_TESTS()}} +{\footnotesize\ttfamily int R\+U\+N\+\_\+\+A\+L\+L\+\_\+\+T\+E\+S\+TS (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 17097 of file gtest.\+h. + diff --git a/doc/latex/hierarchy.tex b/doc/latex/hierarchy.tex new file mode 100644 index 0000000..53ec091 --- /dev/null +++ b/doc/latex/hierarchy.tex @@ -0,0 +1,550 @@ +\section{Class Hierarchy} +This inheritance list is sorted roughly, but not completely, alphabetically\+:\begin{DoxyCompactList} +\item \contentsline{section}{utl\+:\+:\+\_\+1wire\+\_\+i$<$ impl\+\_\+t $>$}{\pageref{classutl_1_1__1wire__i}}{} +\item \contentsline{section}{utl\+:\+:\+\_\+1wire\+\_\+i$<$ \+\_\+1wire\+\_\+uart\+\_\+i$<$ Impl\+\_\+t $>$ $>$}{\pageref{classutl_1_1__1wire__i}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{utl\+:\+:\+\_\+1wire\+\_\+uart\+\_\+i$<$ Impl\+\_\+t $>$}{\pageref{classutl_1_1__1wire__uart__i}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{test\+\_\+1w\+:\+:OW}{\pageref{classtest__1w_1_1_o_w}}{} +\end{DoxyCompactList} +\end{DoxyCompactList} +\item \contentsline{section}{utl\+:\+:\+\_\+1wire\+\_\+i$<$ \+\_\+1wire\+\_\+uart\+\_\+i$<$ OW $>$ $>$}{\pageref{classutl_1_1__1wire__i}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{utl\+:\+:\+\_\+1wire\+\_\+uart\+\_\+i$<$ OW $>$}{\pageref{classutl_1_1__1wire__uart__i}}{} +\end{DoxyCompactList} +\item \contentsline{section}{utl\+:\+:\+\_\+1wire\+\_\+i$<$ type $>$}{\pageref{classutl_1_1__1wire__i}}{} +\item \contentsline{section}{utl\+:\+:\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}{\pageref{classutl_1_1__1wire__i_3_01virtual__tag_01_4}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{utl\+:\+:\+\_\+1wire\+\_\+uart\+\_\+i$<$ virtual\+\_\+tag $>$}{\pageref{classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4}}{} +\end{DoxyCompactList} +\item \contentsline{section}{utl\+:\+:common\+\_\+impl\+:\+:\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T, U, class $>$}{\pageref{structutl_1_1common__impl_1_1____common__ref__}}{} +\item \contentsline{section}{utl\+:\+:common\+\_\+impl\+:\+:\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T \&\&, U \&\&, meta\+:\+:void\+\_\+t$<$ \+\_\+\+\_\+common\+\_\+ref$<$ T \&, U \& $>$, meta\+:\+:when$<$ Convertible\+To$<$ T \&\&, \+\_\+\+\_\+rref\+\_\+res$<$ T, U $>$ $>$ $>$, meta\+:\+:when$<$ Convertible\+To$<$ U \&\&, \+\_\+\+\_\+rref\+\_\+res$<$ T, U $>$ $>$ $>$ $>$ $>$}{\pageref{structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_6_00_01meta_1_1void__tc4e71c227f251cadf0e0fb7b1ba6f1e9}}{} +\item \contentsline{section}{utl\+:\+:common\+\_\+impl\+:\+:\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T \&\&, U \&, meta\+:\+:void\+\_\+t$<$ \+\_\+\+\_\+common\+\_\+ref$<$ const T \&, U \& $>$, meta\+:\+:when$<$ Convertible\+To$<$ T \&\&, \+\_\+\+\_\+common\+\_\+ref$<$ const T \&, U \& $>$ $>$ $>$ $>$ $>$}{\pageref{structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_00_01meta_1_1void__t_3972a8d6e6799b6ee6537c969cdced343}}{} +\item \contentsline{section}{utl\+:\+:common\+\_\+impl\+:\+:\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T \&, U \&\&, meta\+:\+:void\+\_\+t$<$ \+\_\+\+\_\+common\+\_\+ref$<$ T \&, const U \& $>$, meta\+:\+:when$<$ Convertible\+To$<$ U \&\&, \+\_\+\+\_\+common\+\_\+ref$<$ T \&, const U \& $>$ $>$ $>$ $>$ $>$}{\pageref{structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_6_00_01meta_1_1void__t_329fba5aeac3b93aa9cfa5aa7e282e196}}{} +\item \contentsline{section}{utl\+:\+:common\+\_\+impl\+:\+:\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T \&, U \&, meta\+:\+:void\+\_\+t$<$ \+\_\+\+\_\+lref\+\_\+res$<$ T, U $>$, meta\+:\+:when$<$ std\+:\+:is\+\_\+reference$<$ \+\_\+\+\_\+lref\+\_\+res$<$ T, U $>$ $>$\+:\+:value $>$ $>$ $>$}{\pageref{structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_00_01meta_1_1void__t_3_05e5aa384829bb34312a7b8ee4ecaa00f}}{} +\item \contentsline{section}{utl\+:\+:common\+\_\+impl\+:\+:\+\_\+\+\_\+common\+\_\+reference2$<$ T, U, meta\+:\+:void\+\_\+t$<$ \+\_\+\+\_\+basic\+\_\+common\+\_\+reference\+\_\+t$<$ T, U $>$ $>$ $>$}{\pageref{structutl_1_1common__impl_1_1____common__reference2_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____785d0aa2f8a62416e19573fcbdd83836}}{} +\item \contentsline{section}{utl\+:\+:common\+\_\+impl\+:\+:\+\_\+\+\_\+common\+\_\+reference3$<$ T, U, meta\+:\+:void\+\_\+t$<$ \+\_\+\+\_\+cond\+\_\+res$<$ T, U $>$ $>$ $>$}{\pageref{structutl_1_1common__impl_1_1____common__reference3_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____015b01ed12d2d90ee57fbf756ab847e9}}{} +\item \contentsline{section}{utl\+:\+:common\+\_\+impl\+:\+:\+\_\+\+\_\+common\+\_\+reference$<$ T, U, meta\+:\+:when$<$ std\+:\+:is\+\_\+reference$<$ T $>$\+:\+:value \&\&std\+:\+:is\+\_\+reference$<$ U $>$\+:\+:value $>$ $>$}{\pageref{structutl_1_1common__impl_1_1____common__reference_3_01_t_00_01_u_00_01meta_1_1when_3_01std_1_1i23b95b4b3a65ce598dbcc7f52e9dab2c}}{} +\item \contentsline{section}{utl\+:\+:common\+\_\+impl\+:\+:\+\_\+\+\_\+copy\+\_\+cv\+\_\+$<$ From $>$}{\pageref{structutl_1_1common__impl_1_1____copy__cv__}}{} +\item \contentsline{section}{utl\+:\+:common\+\_\+impl\+:\+:\+\_\+\+\_\+copy\+\_\+cv\+\_\+$<$ const From $>$}{\pageref{structutl_1_1common__impl_1_1____copy__cv___3_01const_01_from_01_4}}{} +\item \contentsline{section}{utl\+:\+:common\+\_\+impl\+:\+:\+\_\+\+\_\+copy\+\_\+cv\+\_\+$<$ const volatile From $>$}{\pageref{structutl_1_1common__impl_1_1____copy__cv___3_01const_01volatile_01_from_01_4}}{} +\item \contentsline{section}{utl\+:\+:common\+\_\+impl\+:\+:\+\_\+\+\_\+copy\+\_\+cv\+\_\+$<$ volatile From $>$}{\pageref{structutl_1_1common__impl_1_1____copy__cv___3_01volatile_01_from_01_4}}{} +\item \contentsline{section}{utl\+:\+:common\+\_\+impl\+:\+:\+\_\+\+\_\+xref$<$ class $>$}{\pageref{structutl_1_1common__impl_1_1____xref}}{} +\item \contentsline{section}{utl\+:\+:common\+\_\+impl\+:\+:\+\_\+\+\_\+xref$<$ const T $>$}{\pageref{structutl_1_1common__impl_1_1____xref_3_01const_01_t_01_4}}{} +\item \contentsline{section}{utl\+:\+:common\+\_\+impl\+:\+:\+\_\+\+\_\+xref$<$ const volatile T $>$}{\pageref{structutl_1_1common__impl_1_1____xref_3_01const_01volatile_01_t_01_4}}{} +\item \contentsline{section}{utl\+:\+:common\+\_\+impl\+:\+:\+\_\+\+\_\+xref$<$ T \& $>$}{\pageref{structutl_1_1common__impl_1_1____xref_3_01_t_01_6_01_4}}{} +\item \contentsline{section}{utl\+:\+:common\+\_\+impl\+:\+:\+\_\+\+\_\+xref$<$ T \&\& $>$}{\pageref{structutl_1_1common__impl_1_1____xref_3_01_t_01_6_6_01_4}}{} +\item \contentsline{section}{utl\+:\+:common\+\_\+impl\+:\+:\+\_\+\+\_\+xref$<$ volatile T $>$}{\pageref{structutl_1_1common__impl_1_1____xref_3_01volatile_01_t_01_4}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:at\+\_\+impl\+:\+:\+\_\+add\+\_\+pointer$<$ T $>$}{\pageref{structutl_1_1meta_1_1at__impl_1_1__add__pointer}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:detail\+:\+:\+\_\+and\+\_\+$<$... $>$}{\pageref{structutl_1_1meta_1_1detail_1_1__and__}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:detail\+:\+:\+\_\+or\+\_\+$<$... $>$}{\pageref{structutl_1_1meta_1_1detail_1_1__or__}}{} +\item \+\_\+\+T1\begin{DoxyCompactList} +\item \contentsline{section}{utl\+:\+:meta\+:\+:detail\+:\+:\+\_\+and\+\_\+$<$ \+\_\+\+T1 $>$}{\pageref{structutl_1_1meta_1_1detail_1_1__and___3_01___t1_01_4}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:detail\+:\+:\+\_\+or\+\_\+$<$ \+\_\+\+T1 $>$}{\pageref{structutl_1_1meta_1_1detail_1_1__or___3_01___t1_01_4}}{} +\end{DoxyCompactList} +\item \contentsline{section}{test\+\_\+concepts\+:\+:A}{\pageref{structtest__concepts_1_1_a}}{} +\item \contentsline{section}{Tmeta\+Detection\+:\+:A$<$ T $>$}{\pageref{struct_tmeta_detection_1_1_a}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Add\+Reference$<$ T $>$}{\pageref{structtesting_1_1internal_1_1_add_reference}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Add\+Reference$<$ T \& $>$}{\pageref{structtesting_1_1internal_1_1_add_reference_3_01_t_01_6_01_4}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:apply\+\_\+impl\+:\+:apply\+\_\+$<$ Fn, Seq $>$}{\pageref{structutl_1_1meta_1_1apply__impl_1_1apply__}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:apply\+\_\+impl\+:\+:apply\+\_\+$<$ Fn, integer\+\_\+sequence$<$ T, Is... $>$ $>$}{\pageref{structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01integer__sequence_3_01_t_00_01_is_8_8_8_01_4_01_4}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:apply\+\_\+impl\+:\+:apply\+\_\+$<$ Fn, typelist$<$ List... $>$ $>$}{\pageref{structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01typelist_3_01_list_8_8_8_01_4_01_4}}{} +\item \contentsline{section}{utl\+:\+:array$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$}{\pageref{structutl_1_1array}}{} +\item \contentsline{section}{utl\+:\+:array\+\_\+traits$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$}{\pageref{structutl_1_1array__traits}}{} +\item \contentsline{section}{utl\+:\+:array\+\_\+traits$<$ \+\_\+\+Tp, 0 $>$}{\pageref{structutl_1_1array__traits_3_01___tp_00_010_01_4}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Assert\+Helper}{\pageref{classtesting_1_1internal_1_1_assert_helper}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:at\+\_\+impl\+:\+:at\+\_\+$<$ List, N $>$}{\pageref{structutl_1_1meta_1_1at__impl_1_1at__}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:at\+\_\+impl\+:\+:at\+\_\+$<$ typelist$<$ List... $>$, N $>$}{\pageref{structutl_1_1meta_1_1at__impl_1_1at___3_01typelist_3_01_list_8_8_8_01_4_00_01_n_01_4}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:at\+\_\+impl\+:\+:at\+\_\+head\+\_\+$<$... $>$}{\pageref{structutl_1_1meta_1_1at__impl_1_1at__head__}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:at\+\_\+impl\+:\+:at\+\_\+head\+\_\+$<$ typelist$<$ voids... $>$ $>$}{\pageref{structutl_1_1meta_1_1at__impl_1_1at__head___3_01typelist_3_01voids_8_8_8_01_4_01_4}}{} +\item \contentsline{section}{test\+\_\+concepts\+:\+:B}{\pageref{structtest__concepts_1_1_b}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:back\+\_\+impl\+:\+:back\+\_\+$<$ List $>$}{\pageref{structutl_1_1meta_1_1back__impl_1_1back__}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:back\+\_\+impl\+:\+:back\+\_\+$<$ typelist$<$ Head, Tail... $>$ $>$}{\pageref{structutl_1_1meta_1_1back__impl_1_1back___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4}}{} +\item \contentsline{section}{Tmeta\+Detection\+:\+:Bar}{\pageref{struct_tmeta_detection_1_1_bar}}{} +\item \contentsline{section}{test\+\_\+concepts\+:\+:Base}{\pageref{classtest__concepts_1_1_base}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{test\+\_\+concepts\+:\+:Derived1}{\pageref{classtest__concepts_1_1_derived1}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{test\+\_\+concepts\+:\+:Derived2}{\pageref{classtest__concepts_1_1_derived2}}{} +\end{DoxyCompactList} +\end{DoxyCompactList} +\item \contentsline{section}{utl\+:\+:common\+\_\+impl\+:\+:basic\+\_\+common\+\_\+reference$<$ class, class, class, class $>$}{\pageref{structutl_1_1common__impl_1_1basic__common__reference}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:bind\+\_\+back$<$ Fn, Ts $>$}{\pageref{structutl_1_1meta_1_1bind__back}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:bind\+\_\+front$<$ Fn, Ts $>$}{\pageref{structutl_1_1meta_1_1bind__front}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:bool\+\_\+constant$<$ bool\+\_\+value $>$}{\pageref{structtesting_1_1internal_1_1bool__constant}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{testing\+:\+:internal\+:\+:is\+\_\+same$<$ T, U $>$}{\pageref{structtesting_1_1internal_1_1is__same}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:is\+\_\+same$<$ T, T $>$}{\pageref{structtesting_1_1internal_1_1is__same_3_01_t_00_01_t_01_4}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Is\+Recursive\+Container\+Impl$<$ C, false $>$}{\pageref{structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01false_01_4}}{} +\end{DoxyCompactList} +\item \contentsline{section}{testing\+:\+:internal\+:\+:bool\+\_\+constant$<$ Implicitly\+Convertible$<$ const T $\ast$, const \+:\+:Protocol\+Message $\ast$$>$\+:\+:value$\vert$$\vert$\+Implicitly\+Convertible$<$ const T $\ast$, const \+:\+:proto2\+:\+:Message $\ast$$>$\+:\+:value $>$}{\pageref{structtesting_1_1internal_1_1bool__constant}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Is\+A\+Protocol\+Message$<$ T $>$}{\pageref{structtesting_1_1internal_1_1_is_a_protocol_message}}{} +\end{DoxyCompactList} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Captured\+Stream}{\pageref{classtesting_1_1internal_1_1_captured_stream}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Cartesian\+Product\+Holder10$<$ Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8, Generator9, Generator10 $>$}{\pageref{classtesting_1_1internal_1_1_cartesian_product_holder10}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Cartesian\+Product\+Holder2$<$ Generator1, Generator2 $>$}{\pageref{classtesting_1_1internal_1_1_cartesian_product_holder2}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Cartesian\+Product\+Holder3$<$ Generator1, Generator2, Generator3 $>$}{\pageref{classtesting_1_1internal_1_1_cartesian_product_holder3}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Cartesian\+Product\+Holder4$<$ Generator1, Generator2, Generator3, Generator4 $>$}{\pageref{classtesting_1_1internal_1_1_cartesian_product_holder4}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Cartesian\+Product\+Holder5$<$ Generator1, Generator2, Generator3, Generator4, Generator5 $>$}{\pageref{classtesting_1_1internal_1_1_cartesian_product_holder5}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Cartesian\+Product\+Holder6$<$ Generator1, Generator2, Generator3, Generator4, Generator5, Generator6 $>$}{\pageref{classtesting_1_1internal_1_1_cartesian_product_holder6}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Cartesian\+Product\+Holder7$<$ Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7 $>$}{\pageref{classtesting_1_1internal_1_1_cartesian_product_holder7}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Cartesian\+Product\+Holder8$<$ Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8 $>$}{\pageref{classtesting_1_1internal_1_1_cartesian_product_holder8}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Cartesian\+Product\+Holder9$<$ Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8, Generator9 $>$}{\pageref{classtesting_1_1internal_1_1_cartesian_product_holder9}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:cat\+\_\+impl\+:\+:cat\+\_\+$<$ Lists $>$}{\pageref{structutl_1_1meta_1_1cat__impl_1_1cat__}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:cat\+\_\+impl\+:\+:cat\+\_\+$<$ typelist$<$ L1... $>$ $>$}{\pageref{structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_01_4}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:cat\+\_\+impl\+:\+:cat\+\_\+$<$ typelist$<$ L1... $>$, typelist$<$ L2... $>$ $>$}{\pageref{structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:cat\+\_\+impl\+:\+:cat\+\_\+$<$ typelist$<$ L1..., L2... $>$, Ln... $>$}{\pageref{structutl_1_1meta_1_1cat__impl_1_1cat__}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{utl\+:\+:meta\+:\+:cat\+\_\+impl\+:\+:cat\+\_\+$<$ typelist$<$ L1... $>$, typelist$<$ L2... $>$, Ln... $>$}{\pageref{structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_00_01_ln_8_8_8_01_4}}{} +\end{DoxyCompactList} +\item \contentsline{section}{utl\+:\+:meta\+:\+:cat\+\_\+impl\+:\+:cat\+\_\+$<$$>$}{\pageref{structutl_1_1meta_1_1cat__impl_1_1cat___3_4}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Code\+Location}{\pageref{structtesting_1_1internal_1_1_code_location}}{} +\item \contentsline{section}{utl\+:\+:common\+\_\+impl\+:\+:common\+\_\+reference$<$... $>$}{\pageref{structutl_1_1common__impl_1_1common__reference}}{} +\item \contentsline{section}{utl\+:\+:common\+\_\+impl\+:\+:common\+\_\+reference$<$ common\+\_\+reference\+\_\+t$<$ T, U $>$, V, W... $>$}{\pageref{structutl_1_1common__impl_1_1common__reference}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{utl\+:\+:common\+\_\+impl\+:\+:common\+\_\+reference$<$ T, U, V, W... $>$}{\pageref{structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_00_01_v_00_01_w_8_8_8_01_4}}{} +\end{DoxyCompactList} +\item \contentsline{section}{utl\+:\+:common\+\_\+impl\+:\+:common\+\_\+reference$<$ T $>$}{\pageref{structutl_1_1common__impl_1_1common__reference_3_01_t_01_4}}{} +\item common\+\_\+type\begin{DoxyCompactList} +\item \contentsline{section}{utl\+:\+:common\+\_\+impl\+:\+:\+\_\+\+\_\+common\+\_\+reference3$<$ T, U $>$}{\pageref{structutl_1_1common__impl_1_1____common__reference3}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{utl\+:\+:common\+\_\+impl\+:\+:\+\_\+\+\_\+common\+\_\+reference2$<$ T, U $>$}{\pageref{structutl_1_1common__impl_1_1____common__reference2}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{utl\+:\+:common\+\_\+impl\+:\+:\+\_\+\+\_\+common\+\_\+reference$<$ T, U $>$}{\pageref{structutl_1_1common__impl_1_1____common__reference}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{utl\+:\+:common\+\_\+impl\+:\+:common\+\_\+reference$<$ T, U $>$}{\pageref{structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_01_4}}{} +\end{DoxyCompactList} +\item \contentsline{section}{utl\+:\+:common\+\_\+impl\+:\+:\+\_\+\+\_\+common\+\_\+reference$<$ T, U,... $>$}{\pageref{structutl_1_1common__impl_1_1____common__reference}}{} +\end{DoxyCompactList} +\item \contentsline{section}{utl\+:\+:common\+\_\+impl\+:\+:\+\_\+\+\_\+common\+\_\+reference2$<$ T, U,... $>$}{\pageref{structutl_1_1common__impl_1_1____common__reference2}}{} +\end{DoxyCompactList} +\item \contentsline{section}{utl\+:\+:common\+\_\+impl\+:\+:\+\_\+\+\_\+common\+\_\+reference3$<$ T, U,... $>$}{\pageref{structutl_1_1common__impl_1_1____common__reference3}}{} +\end{DoxyCompactList} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Compile\+Assert\+Types\+Equal$<$ T1, T2 $>$}{\pageref{structtesting_1_1internal_1_1_compile_assert_types_equal}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Compile\+Assert\+Types\+Equal$<$ T, T $>$}{\pageref{structtesting_1_1internal_1_1_compile_assert_types_equal_3_01_t_00_01_t_01_4}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:detail\+:\+:compose\+\_\+$<$ Fns $>$}{\pageref{structutl_1_1meta_1_1detail_1_1compose__}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:detail\+:\+:compose\+\_\+$<$ Fn0 $>$}{\pageref{structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_01_4}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:detail\+:\+:compose\+\_\+$<$ Fn0, Fns... $>$}{\pageref{structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_00_01_fns_8_8_8_01_4}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:detail\+:\+:compose\+\_\+f\+\_\+$<$ Fns $>$}{\pageref{structutl_1_1meta_1_1detail_1_1compose__f__}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:detail\+:\+:compose\+\_\+f\+\_\+$<$ Fn0 $>$}{\pageref{structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_01_4}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:detail\+:\+:compose\+\_\+f\+\_\+$<$ Fn0, Fns... $>$}{\pageref{structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_00_01_fns_8_8_8_01_4}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Const\+Char\+Ptr}{\pageref{structtesting_1_1internal_1_1_const_char_ptr}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Const\+Ref$<$ T $>$}{\pageref{structtesting_1_1internal_1_1_const_ref}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Const\+Ref$<$ T \& $>$}{\pageref{structtesting_1_1internal_1_1_const_ref_3_01_t_01_6_01_4}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:count\+\_\+if\+\_\+impl\+:\+:count\+\_\+if\+\_\+$<$ typename, typename, size\+\_\+t $>$}{\pageref{structutl_1_1meta_1_1count__if__impl_1_1count__if__}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:count\+\_\+if\+\_\+impl\+:\+:count\+\_\+if\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, N $>$}{\pageref{structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:count\+\_\+if\+\_\+impl\+:\+:count\+\_\+if\+\_\+$<$ typelist$<$$>$, Fn, N $>$}{\pageref{structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4}}{} +\item \contentsline{section}{utl\+:\+:crtp\+\_\+tag}{\pageref{structutl_1_1crtp__tag}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:detail\+:\+:defer\+\_\+$<$ F, Ts $>$}{\pageref{structutl_1_1meta_1_1detail_1_1defer__}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:detail\+:\+:defer\+\_\+i\+\_\+$<$ T, F, Is $>$}{\pageref{structutl_1_1meta_1_1detail_1_1defer__i__}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:detail\+:\+:detector$<$ Default, Always\+Void, Op, Args $>$}{\pageref{structutl_1_1meta_1_1detail_1_1detector}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:detail\+:\+:detector$<$ Default, void\+\_\+t$<$ Op$<$ Args... $>$ $>$, Op, Args... $>$}{\pageref{structutl_1_1meta_1_1detail_1_1detector_3_01_default_00_01void__t_3_01_op_3_01_args_8_8_8_01_4_0c35bdbd19f56980c0b5ee6d490bfb634}}{} +\item \contentsline{section}{utl\+:\+:dev\+\_\+iterator\+\_\+traits$<$ \+\_\+\+Cat, \+\_\+\+Tp, \+\_\+\+Diff $>$}{\pageref{structutl_1_1dev__iterator__traits}}{} +\item \contentsline{section}{utl\+:\+:dev\+\_\+iterator\+\_\+traits$<$ std\+:\+:output\+\_\+iterator\+\_\+tag, data\+\_\+t, void $>$}{\pageref{structutl_1_1dev__iterator__traits}}{} +\item \contentsline{section}{utl\+:\+:dev\+\_\+iterator\+\_\+traits$<$ std\+:\+:output\+\_\+iterator\+\_\+tag, iter\+\_\+t $>$}{\pageref{structutl_1_1dev__iterator__traits}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Double\+Sequence$<$ plus\+\_\+one, T, sizeofT $>$}{\pageref{structtesting_1_1internal_1_1_double_sequence}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Double\+Sequence$<$ false, Index\+Sequence$<$ I... $>$, sizeofT $>$}{\pageref{structtesting_1_1internal_1_1_double_sequence_3_01false_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Double\+Sequence$<$ true, Index\+Sequence$<$ I... $>$, sizeofT $>$}{\pageref{structtesting_1_1internal_1_1_double_sequence_3_01true_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Elem\+From\+List$<$ N, I, T $>$}{\pageref{structtesting_1_1internal_1_1_elem_from_list}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Elem\+From\+List$<$ I, typename Make\+Index\+Sequence$<$ sizeof...(T)$>$\+:\+:type, T... $>$}{\pageref{structtesting_1_1internal_1_1_elem_from_list}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Elem\+From\+List\+Impl$<$ T, size\+\_\+t, size\+\_\+t $>$}{\pageref{structtesting_1_1internal_1_1_elem_from_list_impl}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Elem\+From\+List\+Impl$<$ T, I, I $>$}{\pageref{structtesting_1_1internal_1_1_elem_from_list_impl_3_01_t_00_01_i_00_01_i_01_4}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Elem\+From\+List\+Impl$<$ T, N, I $>$}{\pageref{structtesting_1_1internal_1_1_elem_from_list_impl}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Elem\+From\+List$<$ N, Index\+Sequence$<$ I... $>$, T... $>$}{\pageref{structtesting_1_1internal_1_1_elem_from_list_3_01_n_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01_t_8_8_8_01_4}}{} +\end{DoxyCompactList} +\item \contentsline{section}{test\+\_\+concepts\+:\+:Empty}{\pageref{structtest__concepts_1_1_empty}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Enable\+If$<$ bool $>$}{\pageref{structtesting_1_1internal_1_1_enable_if}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Enable\+If$<$ true $>$}{\pageref{structtesting_1_1internal_1_1_enable_if_3_01true_01_4}}{} +\item \contentsline{section}{testing\+:\+:Environment}{\pageref{classtesting_1_1_environment}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Eq\+Helper$<$ lhs\+\_\+is\+\_\+null\+\_\+literal $>$}{\pageref{classtesting_1_1internal_1_1_eq_helper}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Eq\+Helper$<$ true $>$}{\pageref{classtesting_1_1internal_1_1_eq_helper_3_01true_01_4}}{} +\item \contentsline{section}{Tmeta\+Typelist\+:\+:F$<$ T1, T2 $>$}{\pageref{struct_tmeta_typelist_1_1_f}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:faketype}{\pageref{structtesting_1_1internal_1_1faketype}}{} +\item false\+\_\+\begin{DoxyCompactList} +\item \contentsline{section}{utl\+:\+:meta\+:\+:same\+\_\+$<$ T1, T2 $>$}{\pageref{structutl_1_1meta_1_1same__}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{utl\+:\+:meta\+:\+:same\+\_\+as$<$ T1 $>$\+:\+:apply$<$ T2 $>$}{\pageref{structutl_1_1meta_1_1same__as_1_1apply}}{} +\end{DoxyCompactList} +\item \contentsline{section}{utl\+:\+:idx\+\_\+dev\+\_\+details\+:\+:is\+\_\+idx\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, typename $>$}{\pageref{structutl_1_1idx__dev__details_1_1is__idx__dev__}}{} +\item \contentsline{section}{utl\+:\+:in\+\_\+dev\+\_\+details\+:\+:is\+\_\+in\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, typename $>$}{\pageref{structutl_1_1in__dev__details_1_1is__in__dev__}}{} +\item \contentsline{section}{utl\+:\+:inbuf\+\_\+dev\+\_\+details\+:\+:is\+\_\+inbuf\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, typename $>$}{\pageref{structutl_1_1inbuf__dev__details_1_1is__inbuf__dev__}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:detail\+:\+:\+\_\+or\+\_\+$<$$>$}{\pageref{structutl_1_1meta_1_1detail_1_1__or___3_4}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:same\+\_\+$<$ \+\_\+\+T1, \+\_\+\+T2 $>$}{\pageref{structutl_1_1meta_1_1same__}}{} +\item \contentsline{section}{utl\+:\+:out\+\_\+dev\+\_\+details\+:\+:is\+\_\+out\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, typename $>$}{\pageref{structutl_1_1out__dev__details_1_1is__out__dev__}}{} +\end{DoxyCompactList} +\item false\+\_\+\begin{DoxyCompactList} +\item \contentsline{section}{utl\+:\+:\+\_\+1wire\+\_\+i\+\_\+det\+:\+:is\+\_\+1wire\+\_\+$<$ \+\_\+\+Tp, typename $>$}{\pageref{structutl_1_1__1wire__i__det_1_1is__1wire__}}{} +\item \contentsline{section}{utl\+:\+:detail\+:\+:is\+\_\+ref\+\_\+wrapper$<$ T $>$}{\pageref{structutl_1_1detail_1_1is__ref__wrapper}}{} +\item \contentsline{section}{utl\+:\+:i2c\+\_\+i\+\_\+details\+:\+:is\+\_\+i2c\+\_\+$<$ \+\_\+\+Tp, typename $>$}{\pageref{structutl_1_1i2c__i__details_1_1is__i2c__}}{} +\item \contentsline{section}{utl\+:\+:idxdev\+\_\+it\+\_\+details\+:\+:is\+\_\+idxdev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, typename $>$}{\pageref{structutl_1_1idxdev__it__details_1_1is__idxdev__it__}}{} +\item \contentsline{section}{utl\+:\+:indev\+\_\+it\+\_\+details\+:\+:is\+\_\+indev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, typename $>$}{\pageref{structutl_1_1indev__it__details_1_1is__indev__it__}}{} +\item \contentsline{section}{utl\+:\+:outdev\+\_\+it\+\_\+details\+:\+:is\+\_\+outdev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, typename $>$}{\pageref{structutl_1_1outdev__it__details_1_1is__outdev__it__}}{} +\item \contentsline{section}{utl\+:\+:spi\+\_\+i\+\_\+details\+:\+:is\+\_\+spi\+\_\+$<$ \+\_\+\+Tp, typename $>$}{\pageref{structutl_1_1spi__i__details_1_1is__spi__}}{} +\end{DoxyCompactList} +\item \contentsline{section}{utl\+:\+:meta\+:\+:filter\+\_\+impl\+:\+:filter\+\_\+$<$ typename, typename, typename $>$}{\pageref{structutl_1_1meta_1_1filter__impl_1_1filter__}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:filter\+\_\+impl\+:\+:filter\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, L $>$}{\pageref{structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_l_01_4}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:filter\+\_\+impl\+:\+:filter\+\_\+$<$ typelist$<$$>$, Fn, L $>$}{\pageref{structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_4_00_01_fn_00_01_l_01_4}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:find\+\_\+if\+\_\+impl\+:\+:find\+\_\+if\+\_\+$<$ typename, typename, index\+\_\+t $>$}{\pageref{structutl_1_1meta_1_1find__if__impl_1_1find__if__}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:find\+\_\+if\+\_\+impl\+:\+:find\+\_\+if\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, N $>$}{\pageref{structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:find\+\_\+if\+\_\+impl\+:\+:find\+\_\+if\+\_\+$<$ typelist$<$$>$, Fn, N $>$}{\pageref{structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Flat\+Tuple\+Base$<$ Derived, Idx $>$}{\pageref{structtesting_1_1internal_1_1_flat_tuple_base}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Flat\+Tuple\+Base$<$ Flat\+Tuple$<$ T... $>$, Make\+Index\+Sequence$<$ sizeof...(T)$>$\+:\+:type $>$}{\pageref{structtesting_1_1internal_1_1_flat_tuple_base}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Flat\+Tuple$<$ Ts... $>$}{\pageref{classtesting_1_1internal_1_1_flat_tuple}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Flat\+Tuple$<$ T $>$}{\pageref{classtesting_1_1internal_1_1_flat_tuple}}{} +\end{DoxyCompactList} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Flat\+Tuple\+Elem\+Base$<$ Derived, I $>$}{\pageref{structtesting_1_1internal_1_1_flat_tuple_elem_base}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Flat\+Tuple\+Elem\+Base$<$ Flat\+Tuple$<$ T... $>$, I $>$}{\pageref{structtesting_1_1internal_1_1_flat_tuple_elem_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_i_01_4}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Flat\+Tuple\+Elem\+Base$<$ Flat\+Tuple$<$ T... $>$, Idx $>$}{\pageref{structtesting_1_1internal_1_1_flat_tuple_elem_base}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Flat\+Tuple\+Base$<$ Flat\+Tuple$<$ T... $>$, Index\+Sequence$<$ Idx... $>$ $>$}{\pageref{structtesting_1_1internal_1_1_flat_tuple_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_index_sequence_3_01_idx_8_8_8_01_4_01_4}}{} +\end{DoxyCompactList} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Floating\+Point$<$ Raw\+Type $>$}{\pageref{classtesting_1_1internal_1_1_floating_point}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:fold\+\_\+impl\+:\+:fold\+\_\+$<$ typename, typename, typename $>$}{\pageref{structutl_1_1meta_1_1fold__impl_1_1fold__}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:fold\+\_\+impl\+:\+:fold\+\_\+$<$ typelist$<$ Head, Tail... $>$, V, Fn $>$}{\pageref{structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:fold\+\_\+impl\+:\+:fold\+\_\+$<$ typelist$<$$>$, V0, Fn $>$}{\pageref{structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_4_00_01_v0_00_01_fn_01_4}}{} +\item \contentsline{section}{Tmeta\+Detection\+:\+:Foo}{\pageref{struct_tmeta_detection_1_1_foo}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Format\+For\+Comparison$<$ To\+Print, Other\+Operand $>$}{\pageref{classtesting_1_1internal_1_1_format_for_comparison}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Format\+For\+Comparison$<$ To\+Print\mbox{[}N\mbox{]}, Other\+Operand $>$}{\pageref{classtesting_1_1internal_1_1_format_for_comparison_3_01_to_print[_n]_00_01_other_operand_01_4}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:front\+\_\+impl\+:\+:front\+\_\+$<$ L $>$}{\pageref{structutl_1_1meta_1_1front__impl_1_1front__}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:front\+\_\+impl\+:\+:front\+\_\+$<$ typelist$<$ Head, Tail... $>$ $>$}{\pageref{structutl_1_1meta_1_1front__impl_1_1front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:G\+Test\+Log}{\pageref{classtesting_1_1internal_1_1_g_test_log}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:G\+Test\+Mutex\+Lock}{\pageref{classtesting_1_1internal_1_1_g_test_mutex_lock}}{} +\item \contentsline{section}{test\+\_\+concepts\+:\+:Have\+Copy\+And\+Move}{\pageref{structtest__concepts_1_1_have_copy_and_move}}{} +\item \contentsline{section}{test\+\_\+concepts\+:\+:Have\+Only\+Copy}{\pageref{structtest__concepts_1_1_have_only_copy}}{} +\item \contentsline{section}{test\+\_\+concepts\+:\+:Have\+Only\+Move}{\pageref{structtest__concepts_1_1_have_only_move}}{} +\item \contentsline{section}{test\+\_\+concepts\+:\+:Have\+Operator\+Base}{\pageref{classtest__concepts_1_1_have_operator_base}}{} +\item \contentsline{section}{test\+\_\+concepts\+:\+:Have\+Perfect\+Forwarding}{\pageref{classtest__concepts_1_1_have_perfect_forwarding}}{} +\item \contentsline{section}{utl\+:\+:i2c\+\_\+i$<$ impl\+\_\+t $>$}{\pageref{classutl_1_1i2c__i}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{utl\+:\+:i2c\+\_\+bb\+\_\+i$<$ impl\+\_\+t $>$}{\pageref{classutl_1_1i2c__bb__i}}{} +\end{DoxyCompactList} +\item \contentsline{section}{utl\+:\+:i2c\+\_\+i$<$ i2c\+\_\+bb\+\_\+i$<$ I2C $>$ $>$}{\pageref{classutl_1_1i2c__i}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{utl\+:\+:i2c\+\_\+bb\+\_\+i$<$ I2C $>$}{\pageref{classutl_1_1i2c__bb__i}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{test\+\_\+i2c\+:\+:I2C}{\pageref{classtest__i2c_1_1_i2_c}}{} +\end{DoxyCompactList} +\end{DoxyCompactList} +\item \contentsline{section}{utl\+:\+:i2c\+\_\+i$<$ i2c\+\_\+bb\+\_\+i$<$ impl\+\_\+t $>$ $>$}{\pageref{classutl_1_1i2c__i}}{} +\item \contentsline{section}{utl\+:\+:i2c\+\_\+i$<$ virtual\+\_\+tag $>$}{\pageref{classutl_1_1i2c__i_3_01virtual__tag_01_4}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{utl\+:\+:i2c\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag $>$}{\pageref{classutl_1_1i2c__bb__i_3_01virtual__tag_01_4}}{} +\end{DoxyCompactList} +\item \contentsline{section}{test\+\_\+meta\+:\+:Ibar}{\pageref{structtest__meta_1_1_ibar}}{} +\item \contentsline{section}{utl\+:\+:id\+\_\+t$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$}{\pageref{structutl_1_1id__t}}{} +\item \contentsline{section}{utl\+:\+:id\+\_\+t$<$ uint8\+\_\+t, 8 $>$}{\pageref{structutl_1_1id__t}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{utl\+:\+:\+\_\+1wire\+\_\+id\+\_\+t}{\pageref{classutl_1_1__1wire__id__t}}{} +\end{DoxyCompactList} +\item \contentsline{section}{utl\+:\+:id\+\_\+traits$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$}{\pageref{structutl_1_1id__traits}}{} +\item \contentsline{section}{utl\+:\+:id\+\_\+traits$<$ \+\_\+\+Tp, 0 $>$}{\pageref{structutl_1_1id__traits_3_01___tp_00_010_01_4}}{} +\item \contentsline{section}{Tmeta\+Basic\+:\+:Identity$<$ T $>$}{\pageref{struct_tmeta_basic_1_1_identity}}{} +\item \contentsline{section}{Tmeta\+Typelist\+:\+:Identity$<$ T $>$}{\pageref{struct_tmeta_typelist_1_1_identity}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:identity$<$ \+\_\+\+Tp $>$}{\pageref{structutl_1_1meta_1_1identity}}{} +\item \contentsline{section}{utl\+:\+:idx\+\_\+dev$<$ impl\+\_\+t, data\+\_\+t, idx\+\_\+t, N $>$}{\pageref{classutl_1_1idx__dev}}{} +\item \contentsline{section}{utl\+:\+:idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}{\pageref{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4}}{} +\item if\+\_\+\begin{DoxyCompactList} +\item \contentsline{section}{utl\+:\+:meta\+:\+:detail\+:\+:\+\_\+and\+\_\+$<$ \+\_\+\+T1, \+\_\+\+T2 $>$}{\pageref{structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_01_4}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:detail\+:\+:\+\_\+and\+\_\+$<$ \+\_\+\+T1, \+\_\+\+T2, \+\_\+\+T3, \+\_\+\+Tn... $>$}{\pageref{structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:detail\+:\+:\+\_\+or\+\_\+$<$ \+\_\+\+T1, \+\_\+\+T2 $>$}{\pageref{structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_01_4}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:detail\+:\+:\+\_\+or\+\_\+$<$ \+\_\+\+T1, \+\_\+\+T2, \+\_\+\+T3, \+\_\+\+Tn... $>$}{\pageref{structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4}}{} +\end{DoxyCompactList} +\item \contentsline{section}{utl\+:\+:meta\+:\+:detail\+:\+:if\+\_\+c\+\_\+$<$ If,... $>$}{\pageref{structutl_1_1meta_1_1detail_1_1if__c__}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:detail\+:\+:if\+\_\+c\+\_\+$<$ false, Then, Else $>$}{\pageref{structutl_1_1meta_1_1detail_1_1if__c___3_01false_00_01_then_00_01_else_01_4}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:detail\+:\+:if\+\_\+c\+\_\+$<$ true, Then $>$}{\pageref{structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_01_4}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:detail\+:\+:if\+\_\+c\+\_\+$<$ true, Then, Else $>$}{\pageref{structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_00_01_else_01_4}}{} +\item \contentsline{section}{test\+\_\+meta\+:\+:Ifoo}{\pageref{structtest__meta_1_1_ifoo}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Ignored\+Value}{\pageref{classtesting_1_1internal_1_1_ignored_value}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Implicitly\+Convertible$<$ From, To $>$}{\pageref{classtesting_1_1internal_1_1_implicitly_convertible}}{} +\item \contentsline{section}{utl\+:\+:in\+\_\+dev$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$}{\pageref{classutl_1_1in__dev}}{} +\item \contentsline{section}{utl\+:\+:in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}{\pageref{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}}{} +\item \contentsline{section}{utl\+:\+:inbuf\+\_\+dev$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$}{\pageref{classutl_1_1inbuf__dev}}{} +\item \contentsline{section}{utl\+:\+:inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}{\pageref{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}}{} +\item \contentsline{section}{test\+\_\+concepts\+:\+:Incr}{\pageref{structtest__concepts_1_1_incr}}{} +\item \contentsline{section}{utl\+:\+:indev\+\_\+it$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$}{\pageref{classutl_1_1indev__it}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Index\+Sequence$<$ Is $>$}{\pageref{structtesting_1_1internal_1_1_index_sequence}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Index\+Sequence$<$$>$}{\pageref{structtesting_1_1internal_1_1_index_sequence}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Make\+Index\+Sequence$<$ 0 $>$}{\pageref{structtesting_1_1internal_1_1_make_index_sequence_3_010_01_4}}{} +\end{DoxyCompactList} +\item \contentsline{section}{utl\+:\+:input\+\_\+iterator\+\_\+tag}{\pageref{structutl_1_1input__iterator__tag}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{utl\+:\+:forward\+\_\+iterator\+\_\+tag}{\pageref{structutl_1_1forward__iterator__tag}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{utl\+:\+:bidirectional\+\_\+iterator\+\_\+tag}{\pageref{structutl_1_1bidirectional__iterator__tag}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{utl\+:\+:random\+\_\+access\+\_\+iterator\+\_\+tag}{\pageref{structutl_1_1random__access__iterator__tag}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{utl\+:\+:contiguous\+\_\+iterator\+\_\+tag}{\pageref{structutl_1_1contiguous__iterator__tag}}{} +\end{DoxyCompactList} +\end{DoxyCompactList} +\end{DoxyCompactList} +\end{DoxyCompactList} +\item \contentsline{section}{test\+\_\+concepts\+:\+:Inv}{\pageref{structtest__concepts_1_1_inv}}{} +\item \contentsline{section}{utl\+:\+:detail\+:\+:invoke\+\_\+result\+\_\+$<$ B, \+\_\+\+Callable, \+\_\+\+Args $>$}{\pageref{structutl_1_1detail_1_1invoke__result__}}{} +\item \contentsline{section}{utl\+:\+:detail\+:\+:invoke\+\_\+result\+\_\+$<$ true, \+\_\+\+Callable, \+\_\+\+Args... $>$}{\pageref{structutl_1_1detail_1_1invoke__result___3_01true_00_01___callable_00_01___args_8_8_8_01_4}}{} +\item \contentsline{section}{utl\+:\+:iodev\+\_\+it$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+size $>$}{\pageref{classutl_1_1iodev__it}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:detail\+:\+:is\+\_\+applicable\+\_\+$<$ F, T $>$}{\pageref{structutl_1_1meta_1_1detail_1_1is__applicable__}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:detail\+:\+:is\+\_\+applicable\+\_\+i\+\_\+$<$ T, F, Is $>$}{\pageref{structutl_1_1meta_1_1detail_1_1is__applicable__i__}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:detail\+:\+:is\+\_\+applicable\+\_\+q\+\_\+$<$ F, T $>$}{\pageref{structutl_1_1meta_1_1detail_1_1is__applicable__q__}}{} +\item \contentsline{section}{utl\+:\+:details\+:\+:is\+\_\+boolean\+\_\+$<$ B, typename $>$}{\pageref{structutl_1_1details_1_1is__boolean__}}{} +\item \contentsline{section}{utl\+:\+:details\+:\+:is\+\_\+boolean\+\_\+$<$ B, meta\+:\+:void\+\_\+t$<$ meta\+:\+:use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(!std\+:\+:declval$<$ cref\+\_\+$<$ B $>$$>$())$>$, meta\+:\+:use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+:\+:declval$<$ cref\+\_\+$<$ B $>$$>$()==std\+:\+:declval$<$ cref\+\_\+$<$ B $>$$>$())$>$, meta\+:\+:use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+:\+:declval$<$ cref\+\_\+$<$ B $>$$>$() !=std\+:\+:declval$<$ cref\+\_\+$<$ B $>$$>$())$>$, meta\+:\+:use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+:\+:declval$<$ cref\+\_\+$<$ B $>$$>$() \&\&std\+:\+:declval$<$ cref\+\_\+$<$ B $>$$>$())$>$, meta\+:\+:use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+:\+:declval$<$ cref\+\_\+$<$ B $>$$>$()$\vert$$\vert$std\+:\+:declval$<$ cref\+\_\+$<$ B $>$$>$())$>$ $>$ $>$}{\pageref{structutl_1_1details_1_1is__boolean___3_01_b_00_01meta_1_1void__t_3_01meta_1_1use__if__same__t_37e77ed45a431955fc15b4c1210ad8491}}{} +\item is\+\_\+constructible\begin{DoxyCompactList} +\item \contentsline{section}{utl\+:\+:is\+\_\+invocable$<$ F, Args $>$}{\pageref{structutl_1_1is__invocable}}{} +\item \contentsline{section}{utl\+:\+:is\+\_\+invocable\+\_\+r$<$ R, F, Args $>$}{\pageref{structutl_1_1is__invocable__r}}{} +\end{DoxyCompactList} +\item \contentsline{section}{utl\+:\+:details\+:\+:is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+$<$ T, typename $>$}{\pageref{structutl_1_1details_1_1is__strict__totally__ordered__}}{} +\item \contentsline{section}{utl\+:\+:details\+:\+:is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+$<$ T, meta\+:\+:void\+\_\+t$<$ meta\+:\+:use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+:\+:declval$<$ cref\+\_\+$<$ T $>$$>$()$<$ std\+:\+:declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+:\+:use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+:\+:declval$<$ cref\+\_\+$<$ T $>$$>$() $>$ std\+:\+:declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+:\+:use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+:\+:declval$<$ cref\+\_\+$<$ T $>$$>$()$<$=std\+:\+:declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+:\+:use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+:\+:declval$<$ cref\+\_\+$<$ T $>$$>$() $>$=std\+:\+:declval$<$ cref\+\_\+$<$ T $>$$>$())$>$ $>$ $>$}{\pageref{structutl_1_1details_1_1is__strict__totally__ordered___3_01_t_00_01meta_1_1void__t_3_01meta_1_1uab48bcfc89164f446368b35bcc7c8bcd}}{} +\item \contentsline{section}{utl\+:\+:details\+:\+:is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+with\+\_\+$<$ T, U, typename $>$}{\pageref{structutl_1_1details_1_1is__strict__totally__ordered__with__}}{} +\item \contentsline{section}{utl\+:\+:details\+:\+:is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+with\+\_\+$<$ T, U, meta\+:\+:void\+\_\+t$<$ meta\+:\+:use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+:\+:declval$<$ cref\+\_\+$<$ T $>$$>$()$<$ std\+:\+:declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+:\+:use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+:\+:declval$<$ cref\+\_\+$<$ T $>$$>$() $>$ std\+:\+:declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+:\+:use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+:\+:declval$<$ cref\+\_\+$<$ T $>$$>$()$<$=std\+:\+:declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+:\+:use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+:\+:declval$<$ cref\+\_\+$<$ T $>$$>$() $>$=std\+:\+:declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+:\+:use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+:\+:declval$<$ cref\+\_\+$<$ U $>$$>$()$<$ std\+:\+:declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+:\+:use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+:\+:declval$<$ cref\+\_\+$<$ U $>$$>$() $>$ std\+:\+:declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+:\+:use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+:\+:declval$<$ cref\+\_\+$<$ U $>$$>$()$<$=std\+:\+:declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+:\+:use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+:\+:declval$<$ cref\+\_\+$<$ U $>$$>$() $>$=std\+:\+:declval$<$ cref\+\_\+$<$ T $>$$>$())$>$ $>$ $>$}{\pageref{structutl_1_1details_1_1is__strict__totally__ordered__with___3_01_t_00_01_u_00_01meta_1_1void__t8fb7dd5a6ad25952241e37c6f163f434}}{} +\item \contentsline{section}{utl\+:\+:details\+:\+:is\+\_\+weakly\+\_\+equality\+\_\+comparable\+\_\+with\+\_\+$<$ T, U, typename $>$}{\pageref{structutl_1_1details_1_1is__weakly__equality__comparable__with__}}{} +\item \contentsline{section}{utl\+:\+:details\+:\+:is\+\_\+weakly\+\_\+equality\+\_\+comparable\+\_\+with\+\_\+$<$ T, U, meta\+:\+:void\+\_\+t$<$ meta\+:\+:use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+:\+:declval$<$ cref\+\_\+$<$ T $>$$>$()==std\+:\+:declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+:\+:use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+:\+:declval$<$ cref\+\_\+$<$ T $>$$>$() !=std\+:\+:declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+:\+:use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+:\+:declval$<$ cref\+\_\+$<$ U $>$$>$()==std\+:\+:declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+:\+:use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+:\+:declval$<$ cref\+\_\+$<$ U $>$$>$() !=std\+:\+:declval$<$ cref\+\_\+$<$ T $>$$>$())$>$ $>$ $>$}{\pageref{structutl_1_1details_1_1is__weakly__equality__comparable__with___3_01_t_00_01_u_00_01meta_1_1voi4404f901930622694666ca68fb75381b}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Is\+Hash\+Table$<$ T $>$}{\pageref{structtesting_1_1internal_1_1_is_hash_table}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Is\+Recursive\+Container\+Impl$<$ C, bool $>$}{\pageref{structtesting_1_1internal_1_1_is_recursive_container_impl}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Is\+Recursive\+Container\+Impl$<$ C, true $>$}{\pageref{structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01true_01_4}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Is\+Same$<$ T, U $>$}{\pageref{structtesting_1_1internal_1_1_is_same}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Is\+Same$<$ T, T $>$}{\pageref{structtesting_1_1internal_1_1_is_same_3_01_t_00_01_t_01_4}}{} +\item \contentsline{section}{utl\+:\+:istreamdev\+\_\+it$<$ cont\+\_\+t, data\+\_\+t $>$}{\pageref{classutl_1_1istreamdev__it}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Iterator\+Traits$<$ Iterator $>$}{\pageref{structtesting_1_1internal_1_1_iterator_traits}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Iterator\+Traits$<$ const T $\ast$ $>$}{\pageref{structtesting_1_1internal_1_1_iterator_traits_3_01const_01_t_01_5_01_4}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Iterator\+Traits$<$ T $\ast$ $>$}{\pageref{structtesting_1_1internal_1_1_iterator_traits_3_01_t_01_5_01_4}}{} +\item \contentsline{section}{testing\+:\+:Message}{\pageref{classtesting_1_1_message}}{} +\item \contentsline{section}{Tmeta\+Detection\+:\+:m\+Fun$<$ T1, T2 $>$}{\pageref{struct_tmeta_detection_1_1m_fun}}{} +\item \contentsline{section}{Tmeta\+Typelist\+:\+:Mfun\+Bin$<$ T1, T2 $>$}{\pageref{struct_tmeta_typelist_1_1_mfun_bin}}{} +\item \contentsline{section}{Tmeta\+Typelist\+:\+:Mfun\+Bin\+\_\+i$<$ a, b $>$}{\pageref{struct_tmeta_typelist_1_1_mfun_bin__i}}{} +\item \contentsline{section}{Tmeta\+Typelist\+:\+:Mfun\+Un1$<$ T1 $>$}{\pageref{struct_tmeta_typelist_1_1_mfun_un1}}{} +\item \contentsline{section}{Tmeta\+Typelist\+:\+:Mfun\+Un2$<$ T1 $>$}{\pageref{struct_tmeta_typelist_1_1_mfun_un2}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Mutex}{\pageref{classtesting_1_1internal_1_1_mutex}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:nat\+\_\+}{\pageref{structutl_1_1meta_1_1nat__}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Native\+Array$<$ Element $>$}{\pageref{classtesting_1_1internal_1_1_native_array}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:nil\+\_\+}{\pageref{structutl_1_1meta_1_1nil__}}{} +\item not\+\_\+same\+\_\+\begin{DoxyCompactList} +\item \contentsline{section}{utl\+:\+:meta\+:\+:not\+\_\+same\+\_\+as$<$ T1 $>$\+:\+:apply$<$ T2 $>$}{\pageref{structutl_1_1meta_1_1not__same__as_1_1apply}}{} +\end{DoxyCompactList} +\item \contentsline{section}{utl\+:\+:meta\+:\+:not\+\_\+same\+\_\+as$<$ T1 $>$}{\pageref{structutl_1_1meta_1_1not__same__as}}{} +\item \contentsline{section}{utl\+:\+:ostream\+\_\+dev$<$ impl\+\_\+t, data\+\_\+t $>$}{\pageref{classutl_1_1ostream__dev}}{} +\item \contentsline{section}{utl\+:\+:ostream\+\_\+dev$<$ Ostream\+\_\+dev\+\_\+impl, test\+\_\+data\+\_\+t $>$}{\pageref{classutl_1_1ostream__dev}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{test\+\_\+ostream\+\_\+dev\+:\+:Ostream\+\_\+dev\+\_\+impl}{\pageref{classtest__ostream__dev_1_1_ostream__dev__impl}}{} +\end{DoxyCompactList} +\item \contentsline{section}{utl\+:\+:ostream\+\_\+dev$<$ utl\+:\+:virtual\+\_\+tag, test\+\_\+data\+\_\+t $>$}{\pageref{classutl_1_1ostream__dev}}{} +\item \contentsline{section}{utl\+:\+:ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$}{\pageref{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4}}{} +\item \contentsline{section}{utl\+:\+:ostream\+\_\+dev$<$ virtual\+\_\+tag, test\+\_\+data\+\_\+t $>$}{\pageref{classutl_1_1ostream__dev}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{test\+\_\+ostream\+\_\+dev\+:\+:Ostream\+\_\+vdev\+\_\+impl}{\pageref{classtest__ostream__dev_1_1_ostream__vdev__impl}}{} +\end{DoxyCompactList} +\item \contentsline{section}{utl\+:\+:ostreamdev\+\_\+it$<$ cont\+\_\+t, data\+\_\+t $>$}{\pageref{classutl_1_1ostreamdev__it}}{} +\item \contentsline{section}{utl\+:\+:out\+\_\+dev$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$}{\pageref{classutl_1_1out__dev}}{} +\item \contentsline{section}{utl\+:\+:out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}{\pageref{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}}{} +\item \contentsline{section}{utl\+:\+:outdev\+\_\+it$<$ cont\+\_\+t, iter\+\_\+t, \+\_\+beg, \+\_\+end $>$}{\pageref{classutl_1_1outdev__it}}{} +\item \contentsline{section}{utl\+:\+:output\+\_\+iterator\+\_\+tag}{\pageref{structutl_1_1output__iterator__tag}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Parameterized\+Test\+Suite\+Info\+Base}{\pageref{classtesting_1_1internal_1_1_parameterized_test_suite_info_base}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Parameterized\+Test\+Suite\+Info$<$ Test\+Suite $>$}{\pageref{classtesting_1_1internal_1_1_parameterized_test_suite_info}}{} +\end{DoxyCompactList} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Parameterized\+Test\+Suite\+Registry}{\pageref{classtesting_1_1internal_1_1_parameterized_test_suite_registry}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Param\+Generator$<$ T $>$}{\pageref{classtesting_1_1internal_1_1_param_generator}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Param\+Generator$<$ T1 $>$}{\pageref{classtesting_1_1internal_1_1_param_generator}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Param\+Generator$<$ T10 $>$}{\pageref{classtesting_1_1internal_1_1_param_generator}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Param\+Generator$<$ T2 $>$}{\pageref{classtesting_1_1internal_1_1_param_generator}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Param\+Generator$<$ T3 $>$}{\pageref{classtesting_1_1internal_1_1_param_generator}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Param\+Generator$<$ T4 $>$}{\pageref{classtesting_1_1internal_1_1_param_generator}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Param\+Generator$<$ T5 $>$}{\pageref{classtesting_1_1internal_1_1_param_generator}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Param\+Generator$<$ T6 $>$}{\pageref{classtesting_1_1internal_1_1_param_generator}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Param\+Generator$<$ T7 $>$}{\pageref{classtesting_1_1internal_1_1_param_generator}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Param\+Generator$<$ T8 $>$}{\pageref{classtesting_1_1internal_1_1_param_generator}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Param\+Generator$<$ T9 $>$}{\pageref{classtesting_1_1internal_1_1_param_generator}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Param\+Generator\+Interface$<$ T $>$}{\pageref{classtesting_1_1internal_1_1_param_generator_interface}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Range\+Generator$<$ T, IncrementT $>$}{\pageref{classtesting_1_1internal_1_1_range_generator}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Values\+In\+Iterator\+Range\+Generator$<$ T $>$}{\pageref{classtesting_1_1internal_1_1_values_in_iterator_range_generator}}{} +\end{DoxyCompactList} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Param\+Generator\+Interface$<$ \+:\+:std\+:\+:tuple$<$ T1, T2 $>$ $>$}{\pageref{classtesting_1_1internal_1_1_param_generator_interface}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Cartesian\+Product\+Generator2$<$ T1, T2 $>$}{\pageref{classtesting_1_1internal_1_1_cartesian_product_generator2}}{} +\end{DoxyCompactList} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Param\+Generator\+Interface$<$ \+:\+:std\+:\+:tuple$<$ T1, T2, T3 $>$ $>$}{\pageref{classtesting_1_1internal_1_1_param_generator_interface}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Cartesian\+Product\+Generator3$<$ T1, T2, T3 $>$}{\pageref{classtesting_1_1internal_1_1_cartesian_product_generator3}}{} +\end{DoxyCompactList} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Param\+Generator\+Interface$<$ \+:\+:std\+:\+:tuple$<$ T1, T2, T3, T4 $>$ $>$}{\pageref{classtesting_1_1internal_1_1_param_generator_interface}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Cartesian\+Product\+Generator4$<$ T1, T2, T3, T4 $>$}{\pageref{classtesting_1_1internal_1_1_cartesian_product_generator4}}{} +\end{DoxyCompactList} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Param\+Generator\+Interface$<$ \+:\+:std\+:\+:tuple$<$ T1, T2, T3, T4, T5 $>$ $>$}{\pageref{classtesting_1_1internal_1_1_param_generator_interface}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Cartesian\+Product\+Generator5$<$ T1, T2, T3, T4, T5 $>$}{\pageref{classtesting_1_1internal_1_1_cartesian_product_generator5}}{} +\end{DoxyCompactList} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Param\+Generator\+Interface$<$ \+:\+:std\+:\+:tuple$<$ T1, T2, T3, T4, T5, T6 $>$ $>$}{\pageref{classtesting_1_1internal_1_1_param_generator_interface}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Cartesian\+Product\+Generator6$<$ T1, T2, T3, T4, T5, T6 $>$}{\pageref{classtesting_1_1internal_1_1_cartesian_product_generator6}}{} +\end{DoxyCompactList} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Param\+Generator\+Interface$<$ \+:\+:std\+:\+:tuple$<$ T1, T2, T3, T4, T5, T6, T7 $>$ $>$}{\pageref{classtesting_1_1internal_1_1_param_generator_interface}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Cartesian\+Product\+Generator7$<$ T1, T2, T3, T4, T5, T6, T7 $>$}{\pageref{classtesting_1_1internal_1_1_cartesian_product_generator7}}{} +\end{DoxyCompactList} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Param\+Generator\+Interface$<$ \+:\+:std\+:\+:tuple$<$ T1, T2, T3, T4, T5, T6, T7, T8 $>$ $>$}{\pageref{classtesting_1_1internal_1_1_param_generator_interface}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Cartesian\+Product\+Generator8$<$ T1, T2, T3, T4, T5, T6, T7, T8 $>$}{\pageref{classtesting_1_1internal_1_1_cartesian_product_generator8}}{} +\end{DoxyCompactList} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Param\+Generator\+Interface$<$ \+:\+:std\+:\+:tuple$<$ T1, T2, T3, T4, T5, T6, T7, T8, T9 $>$ $>$}{\pageref{classtesting_1_1internal_1_1_param_generator_interface}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Cartesian\+Product\+Generator9$<$ T1, T2, T3, T4, T5, T6, T7, T8, T9 $>$}{\pageref{classtesting_1_1internal_1_1_cartesian_product_generator9}}{} +\end{DoxyCompactList} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Param\+Generator\+Interface$<$ \+:\+:std\+:\+:tuple$<$ T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 $>$ $>$}{\pageref{classtesting_1_1internal_1_1_param_generator_interface}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Cartesian\+Product\+Generator10$<$ T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 $>$}{\pageref{classtesting_1_1internal_1_1_cartesian_product_generator10}}{} +\end{DoxyCompactList} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Param\+Generator\+Interface$<$ Param\+Type $>$}{\pageref{classtesting_1_1internal_1_1_param_generator_interface}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Param\+Iterator$<$ T $>$}{\pageref{classtesting_1_1internal_1_1_param_iterator}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Param\+Iterator\+Interface$<$ T $>$}{\pageref{classtesting_1_1internal_1_1_param_iterator_interface}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Param\+Iterator\+Interface$<$ Param\+Type $>$}{\pageref{classtesting_1_1internal_1_1_param_iterator_interface}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Param\+Name\+Gen\+Func$<$ Param\+Type $>$}{\pageref{structtesting_1_1internal_1_1_param_name_gen_func}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:pop\+\_\+back\+\_\+impl\+:\+:pop\+\_\+back\+\_\+$<$ List $>$}{\pageref{structutl_1_1meta_1_1pop__back__impl_1_1pop__back__}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:pop\+\_\+front\+\_\+impl\+:\+:pop\+\_\+front\+\_\+$<$ List $>$}{\pageref{structutl_1_1meta_1_1pop__front__impl_1_1pop__front__}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:pop\+\_\+front\+\_\+impl\+:\+:pop\+\_\+front\+\_\+$<$ typelist$<$ Head, Tail... $>$ $>$}{\pageref{structutl_1_1meta_1_1pop__front__impl_1_1pop__front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4}}{} +\item \contentsline{section}{test\+\_\+concepts\+:\+:Pred}{\pageref{structtest__concepts_1_1_pred}}{} +\item \contentsline{section}{Tmeta\+Typelist\+:\+:Pred\+\_\+is\+Int$<$ T $>$}{\pageref{struct_tmeta_typelist_1_1_pred__is_int}}{} +\item \contentsline{section}{Tmeta\+Typelist\+:\+:Pred\+\_\+is\+Void$<$ T $>$}{\pageref{struct_tmeta_typelist_1_1_pred__is_void}}{} +\item \contentsline{section}{testing\+:\+:Print\+To\+String\+Param\+Name}{\pageref{structtesting_1_1_print_to_string_param_name}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:quote$<$ F $>$}{\pageref{structutl_1_1meta_1_1quote}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:quote\+\_\+i$<$ T, F $>$}{\pageref{structutl_1_1meta_1_1quote__i}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Random}{\pageref{classtesting_1_1internal_1_1_random}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:RE}{\pageref{classtesting_1_1internal_1_1_r_e}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Relation\+To\+Source\+Copy}{\pageref{structtesting_1_1internal_1_1_relation_to_source_copy}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Relation\+To\+Source\+Reference}{\pageref{structtesting_1_1internal_1_1_relation_to_source_reference}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Remove\+Const$<$ T $>$}{\pageref{structtesting_1_1internal_1_1_remove_const}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Remove\+Const$<$ const T $>$}{\pageref{structtesting_1_1internal_1_1_remove_const_3_01const_01_t_01_4}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Remove\+Const$<$ const T\mbox{[}N\mbox{]}$>$}{\pageref{structtesting_1_1internal_1_1_remove_const_3_01const_01_t[_n]_4}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Remove\+Reference$<$ T $>$}{\pageref{structtesting_1_1internal_1_1_remove_reference}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Remove\+Reference$<$ T \& $>$}{\pageref{structtesting_1_1internal_1_1_remove_reference_3_01_t_01_6_01_4}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:replace\+\_\+if\+\_\+impl\+:\+:replace\+\_\+if\+\_\+$<$ typename, typename, typename, typename $>$}{\pageref{structutl_1_1meta_1_1replace__if__impl_1_1replace__if__}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:replace\+\_\+if\+\_\+impl\+:\+:replace\+\_\+if\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, T, Ret $>$}{\pageref{structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_01_head_00_01_tail_8_8_8_dfa8065a3617f53ecded260506092a07}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:replace\+\_\+if\+\_\+impl\+:\+:replace\+\_\+if\+\_\+$<$ typelist$<$$>$, Fn, T, Ret $>$}{\pageref{structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_4_00_01_fn_00_01_t_00_01_ret_01_4}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:rev\+\_\+fold\+\_\+impl\+:\+:rev\+\_\+fold\+\_\+$<$ typename, typename, typename $>$}{\pageref{structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold__}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:rev\+\_\+fold\+\_\+impl\+:\+:rev\+\_\+fold\+\_\+$<$ typelist$<$ Head, Tail... $>$, V, Fn $>$}{\pageref{structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:rev\+\_\+fold\+\_\+impl\+:\+:rev\+\_\+fold\+\_\+$<$ typelist$<$ Tail $>$, V, Fn $>$}{\pageref{structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_tail_01_4_00_01_v_00_01_fn_01_4}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:rev\+\_\+fold\+\_\+impl\+:\+:rev\+\_\+fold\+\_\+$<$ typelist$<$$>$, V, Fn $>$}{\pageref{structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_4_00_01_v_00_01_fn_01_4}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:reverse\+\_\+impl\+:\+:reverse\+\_\+$<$ List, V $>$}{\pageref{structutl_1_1meta_1_1reverse__impl_1_1reverse__}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:same\+\_\+as$<$ T1 $>$}{\pageref{structutl_1_1meta_1_1same__as}}{} +\item \contentsline{section}{testing\+:\+:Scoped\+Trace}{\pageref{classtesting_1_1_scoped_trace}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:seek\+\_\+if\+\_\+impl\+:\+:seek\+\_\+if\+\_\+$<$ typename, typename, index\+\_\+t $>$}{\pageref{structutl_1_1meta_1_1seek__if__impl_1_1seek__if__}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:seek\+\_\+if\+\_\+impl\+:\+:seek\+\_\+if\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, N $>$}{\pageref{structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:seek\+\_\+if\+\_\+impl\+:\+:seek\+\_\+if\+\_\+$<$ typelist$<$$>$, Fn, N $>$}{\pageref{structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4}}{} +\item \contentsline{section}{utl\+:\+:spi\+\_\+i$<$ impl\+\_\+t $>$}{\pageref{classutl_1_1spi__i}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{utl\+:\+:spi\+\_\+bb\+\_\+i$<$ impl\+\_\+t, C\+P\+OL, C\+P\+HA, Bit\+Order $>$}{\pageref{classutl_1_1spi__bb__i}}{} +\end{DoxyCompactList} +\item \contentsline{section}{utl\+:\+:spi\+\_\+i$<$ spi\+\_\+bb\+\_\+i$<$ impl\+\_\+t, C\+P\+OL, C\+P\+HA, Bit\+Order $>$ $>$}{\pageref{classutl_1_1spi__i}}{} +\item \contentsline{section}{utl\+:\+:spi\+\_\+i$<$ spi\+\_\+bb\+\_\+i$<$ S\+PI, C\+P\+OL, C\+P\+HA, spi\+:\+:bit\+Order\+:\+:M\+S\+B\+\_\+\+First $>$ $>$}{\pageref{classutl_1_1spi__i}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{utl\+:\+:spi\+\_\+bb\+\_\+i$<$ S\+PI, spi\+:\+:cpol\+:\+:L\+OW, spi\+:\+:cpha\+:\+:L\+OW $>$}{\pageref{classutl_1_1spi__bb__i}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{test\+\_\+spi\+:\+:S\+PI}{\pageref{classtest__spi_1_1_s_p_i}}{} +\end{DoxyCompactList} +\end{DoxyCompactList} +\item \contentsline{section}{utl\+:\+:spi\+\_\+i$<$ virtual\+\_\+tag $>$}{\pageref{classutl_1_1spi__i_3_01virtual__tag_01_4}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{utl\+:\+:spi\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag, C\+P\+OL, C\+P\+HA, Bit\+Order $>$}{\pageref{classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4}}{} +\end{DoxyCompactList} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Static\+Assert\+Type\+Eq\+Helper$<$ T1, T2 $>$}{\pageref{structtesting_1_1internal_1_1_static_assert_type_eq_helper}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Static\+Assert\+Type\+Eq\+Helper$<$ T, T $>$}{\pageref{structtesting_1_1internal_1_1_static_assert_type_eq_helper_3_01_t_00_01_t_01_4}}{} +\item T\begin{DoxyCompactList} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Suite\+Api\+Resolver$<$ T $>$}{\pageref{structtesting_1_1internal_1_1_suite_api_resolver}}{} +\end{DoxyCompactList} +\item \contentsline{section}{testing\+:\+:Test}{\pageref{classtesting_1_1_test}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{test\+\_\+1w\+:\+:Test\+\_\+1w\+\_\+impl}{\pageref{classtest__1w_1_1_test__1w__impl}}{} +\item \contentsline{section}{test\+\_\+ostream\+\_\+dev\+:\+:Tostream\+\_\+\+Idev}{\pageref{classtest__ostream__dev_1_1_tostream___idev}}{} +\item \contentsline{section}{test\+\_\+ostream\+\_\+dev\+:\+:Tostream\+\_\+\+Vdev}{\pageref{classtest__ostream__dev_1_1_tostream___vdev}}{} +\item \contentsline{section}{test\+\_\+spi\+:\+:Test\+\_\+spi\+\_\+impl}{\pageref{classtest__spi_1_1_test__spi__impl}}{} +\item \contentsline{section}{testing\+:\+:Test\+With\+Param$<$ T $>$}{\pageref{classtesting_1_1_test_with_param}}{} +\end{DoxyCompactList} +\item \contentsline{section}{testing\+:\+:Test\+Event\+Listener}{\pageref{classtesting_1_1_test_event_listener}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{testing\+:\+:Empty\+Test\+Event\+Listener}{\pageref{classtesting_1_1_empty_test_event_listener}}{} +\end{DoxyCompactList} +\item \contentsline{section}{testing\+:\+:Test\+Event\+Listeners}{\pageref{classtesting_1_1_test_event_listeners}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Test\+Factory\+Base}{\pageref{classtesting_1_1internal_1_1_test_factory_base}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Parameterized\+Test\+Factory$<$ Test\+Class $>$}{\pageref{classtesting_1_1internal_1_1_parameterized_test_factory}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Test\+Factory\+Impl$<$ Test\+Class $>$}{\pageref{classtesting_1_1internal_1_1_test_factory_impl}}{} +\end{DoxyCompactList} +\item \contentsline{section}{testing\+:\+:Test\+Info}{\pageref{classtesting_1_1_test_info}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Test\+Meta\+Factory\+Base$<$ Param\+Type $>$}{\pageref{classtesting_1_1internal_1_1_test_meta_factory_base}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Test\+Meta\+Factory\+Base$<$ Test\+Suite\+:\+:Param\+Type $>$}{\pageref{classtesting_1_1internal_1_1_test_meta_factory_base}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Test\+Meta\+Factory$<$ Test\+Suite $>$}{\pageref{classtesting_1_1internal_1_1_test_meta_factory}}{} +\end{DoxyCompactList} +\item \contentsline{section}{testing\+:\+:Test\+Param\+Info$<$ Param\+Type $>$}{\pageref{structtesting_1_1_test_param_info}}{} +\item \contentsline{section}{testing\+:\+:Test\+Property}{\pageref{classtesting_1_1_test_property}}{} +\item \contentsline{section}{testing\+:\+:Test\+Result}{\pageref{classtesting_1_1_test_result}}{} +\item \contentsline{section}{testing\+:\+:Test\+Suite}{\pageref{classtesting_1_1_test_suite}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Thread\+Local$<$ T $>$}{\pageref{classtesting_1_1internal_1_1_thread_local}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:transform\+\_\+impl\+:\+:transform\+\_\+$<$ typename, typename $>$}{\pageref{structutl_1_1meta_1_1transform__impl_1_1transform__}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:transform\+\_\+impl\+:\+:transform\+\_\+$<$ typelist$<$ typelist$<$ Ts... $>$, Fn $>$, void\+\_\+t$<$ invoke$<$ Fn, Ts $>$... $>$ $>$}{\pageref{structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts_8_8_8_01_40fe2b1c8ede658aadb6925de73541689}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:transform\+\_\+impl\+:\+:transform\+\_\+$<$ typelist$<$ typelist$<$ Ts0... $>$, typelist$<$ Ts1... $>$, Fn $>$, void\+\_\+t$<$ invoke$<$ Fn, Ts0, Ts1 $>$... $>$ $>$}{\pageref{structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts0_8_8_8_01_8fba6bf3d0565d17a96950cb517db5f1}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:transform\+\_\+lazy\+\_\+impl\+:\+:transform\+\_\+lazy\+\_\+$<$ typename, typename $>$}{\pageref{structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy__}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:transform\+\_\+lazy\+\_\+impl\+:\+:transform\+\_\+lazy\+\_\+$<$ typelist$<$ typelist$<$ Ts... $>$, Fn $>$, void\+\_\+t$<$ invoke$<$ Fn, Ts $>$... $>$ $>$}{\pageref{structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t56243bc35bf73da8271cb88f34751f3a}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:transform\+\_\+lazy\+\_\+impl\+:\+:transform\+\_\+lazy\+\_\+$<$ typelist$<$ typelist$<$ Ts0... $>$, typelist$<$ Ts1... $>$, Fn $>$, void\+\_\+t$<$ invoke$<$ Fn, Ts0, Ts1 $>$... $>$ $>$}{\pageref{structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t14ff615a4bff6c4c3701df9c38aaa6a5}}{} +\item true\+\_\+\begin{DoxyCompactList} +\item \contentsline{section}{utl\+:\+:idx\+\_\+dev\+\_\+details\+:\+:is\+\_\+idx\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, void\+\_\+t$<$ typename \+\_\+\+Tp\+:\+:data\+\_\+type, typename \+\_\+\+Tp\+:\+:pointer\+\_\+type, typename \+\_\+\+Tp\+:\+:iterator, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+get1\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+get2\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cbegin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cend\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator $>$ $>$ $>$}{\pageref{structutl_1_1idx__dev__details_1_1is__idx__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1ae8b6b24c31c81bdd901da6e6387d84b}}{} +\item \contentsline{section}{utl\+:\+:in\+\_\+dev\+\_\+details\+:\+:is\+\_\+in\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, void\+\_\+t$<$ typename \+\_\+\+Tp\+:\+:data\+\_\+type, typename \+\_\+\+Tp\+:\+:pointer\+\_\+type, typename \+\_\+\+Tp\+:\+:iterator, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+get1\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+get2\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cbegin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cend\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator $>$ $>$ $>$}{\pageref{structutl_1_1in__dev__details_1_1is__in__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1dad922a62deb7c32e2cff18d66b8c887d2}}{} +\item \contentsline{section}{utl\+:\+:inbuf\+\_\+dev\+\_\+details\+:\+:is\+\_\+inbuf\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, void\+\_\+t$<$ typename \+\_\+\+Tp\+:\+:data\+\_\+type, typename \+\_\+\+Tp\+:\+:pointer\+\_\+type, typename \+\_\+\+Tp\+:\+:iterator, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+get1\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+get2\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cbegin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cend\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator $>$ $>$ $>$}{\pageref{structutl_1_1inbuf__dev__details_1_1is__inbuf__dev___3_01___tp_00_01void__t_3_01typename_01___tpc269ee3885240cc8c352f3c6b3a67cd7}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:detail\+:\+:\+\_\+and\+\_\+$<$$>$}{\pageref{structutl_1_1meta_1_1detail_1_1__and___3_4}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:same\+\_\+$<$ \+\_\+\+Tp, \+\_\+\+Tp $>$}{\pageref{structutl_1_1meta_1_1same___3_01___tp_00_01___tp_01_4}}{} +\item \contentsline{section}{utl\+:\+:out\+\_\+dev\+\_\+details\+:\+:is\+\_\+out\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, void\+\_\+t$<$ typename \+\_\+\+Tp\+:\+:data\+\_\+type, typename \+\_\+\+Tp\+:\+:pointer\+\_\+type, typename \+\_\+\+Tp\+:\+:iterator, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+put1\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+put2\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cbegin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cend\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator $>$ $>$ $>$}{\pageref{structutl_1_1out__dev__details_1_1is__out__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1fbf8d2409fc6de9dd6b9649bedc1b379}}{} +\end{DoxyCompactList} +\item true\+\_\+\begin{DoxyCompactList} +\item \contentsline{section}{utl\+:\+:\+\_\+1wire\+\_\+i\+\_\+det\+:\+:is\+\_\+1wire\+\_\+$<$ \+\_\+\+Tp, meta\+:\+:void\+\_\+t$<$ void $>$ $>$}{\pageref{structutl_1_1__1wire__i__det_1_1is__1wire___3_01___tp_00_01meta_1_1void__t_3_01void_01_4_01_4}}{} +\item \contentsline{section}{utl\+:\+:detail\+:\+:is\+\_\+ref\+\_\+wrapper$<$ std\+:\+:reference\+\_\+wrapper$<$ U $>$ $>$}{\pageref{structutl_1_1detail_1_1is__ref__wrapper_3_01std_1_1reference__wrapper_3_01_u_01_4_01_4}}{} +\item \contentsline{section}{utl\+:\+:i2c\+\_\+i\+\_\+details\+:\+:is\+\_\+i2c\+\_\+$<$ \+\_\+\+Tp, meta\+:\+:void\+\_\+t$<$ typename \+\_\+\+Tp\+:\+:Sequence, void $>$ $>$}{\pageref{structutl_1_1i2c__i__details_1_1is__i2c___3_01___tp_00_01meta_1_1void__t_3_01typename_01___tp_1_1_sequence_00_01void_01_4_01_4}}{} +\item \contentsline{section}{utl\+:\+:idxdev\+\_\+it\+\_\+details\+:\+:is\+\_\+idxdev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, meta\+:\+:void\+\_\+t$<$ typename \+\_\+\+Tp\+:\+:value\+\_\+type, typename \+\_\+\+Tp\+:\+:difference\+\_\+type, typename \+\_\+\+Tp\+:\+:pointer, typename \+\_\+\+Tp\+:\+:reference, void $>$ $>$}{\pageref{structutl_1_1idxdev__it__details_1_1is__idxdev__it___3_01___tp_00_01meta_1_1void__t_3_01typenamebd9ada52ca7b7570c26d0c280af5e635}}{} +\item \contentsline{section}{utl\+:\+:indev\+\_\+it\+\_\+details\+:\+:is\+\_\+indev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, meta\+:\+:void\+\_\+t$<$ typename \+\_\+\+Tp\+:\+:value\+\_\+type, typename \+\_\+\+Tp\+:\+:difference\+\_\+type, typename \+\_\+\+Tp\+:\+:pointer, typename \+\_\+\+Tp\+:\+:reference, void $>$ $>$}{\pageref{structutl_1_1indev__it__details_1_1is__indev__it___3_01___tp_00_01meta_1_1void__t_3_01typename_06508604dcee4010234c84cc332fa196b}}{} +\item \contentsline{section}{utl\+:\+:outdev\+\_\+it\+\_\+details\+:\+:is\+\_\+outdev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, meta\+:\+:void\+\_\+t$<$ typename \+\_\+\+Tp\+:\+:value\+\_\+type, typename \+\_\+\+Tp\+:\+:difference\+\_\+type, typename \+\_\+\+Tp\+:\+:pointer, typename \+\_\+\+Tp\+:\+:reference, void $>$ $>$}{\pageref{structutl_1_1outdev__it__details_1_1is__outdev__it___3_01___tp_00_01meta_1_1void__t_3_01typename8786ebbbd0dc9ca1b14571e779d99d60}}{} +\item \contentsline{section}{utl\+:\+:spi\+\_\+i\+\_\+details\+:\+:is\+\_\+spi\+\_\+$<$ \+\_\+\+Tp, meta\+:\+:void\+\_\+t$<$ meta\+:\+:use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cclock\+\_\+t$<$ \+\_\+\+Tp $>$, uint32\+\_\+t $>$, meta\+:\+:use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+clock\+\_\+t$<$ \+\_\+\+Tp $>$, void $>$, meta\+:\+:use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+tx\+\_\+t$<$ \+\_\+\+Tp $>$, byte\+\_\+t $>$, meta\+:\+:use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+rx\+\_\+t$<$ \+\_\+\+Tp $>$, byte\+\_\+t $>$ $>$ $>$}{\pageref{structutl_1_1spi__i__details_1_1is__spi___3_01___tp_00_01meta_1_1void__t_3_01meta_1_1use__if__sa2db29f6d65d34ecf5e49ec30b6600d78}}{} +\end{DoxyCompactList} +\item \contentsline{section}{utl\+:\+:detail\+:\+:try\+\_\+invoke$<$ \+\_\+\+Callable, \+\_\+\+Args $>$}{\pageref{structutl_1_1detail_1_1try__invoke}}{} +\item type\begin{DoxyCompactList} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Is\+Recursive\+Container$<$ C $>$}{\pageref{structtesting_1_1internal_1_1_is_recursive_container}}{} +\end{DoxyCompactList} +\item type\begin{DoxyCompactList} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Make\+Index\+Sequence$<$ N $>$}{\pageref{structtesting_1_1internal_1_1_make_index_sequence}}{} +\end{DoxyCompactList} +\item \contentsline{section}{utl\+:\+:array\+\_\+traits$<$ \+\_\+\+Tp, 0 $>$\+:\+:type}{\pageref{structutl_1_1array__traits_3_01___tp_00_010_01_4_1_1type}}{} +\item \contentsline{section}{utl\+:\+:id\+\_\+traits$<$ \+\_\+\+Tp, 0 $>$\+:\+:type}{\pageref{structutl_1_1id__traits_3_01___tp_00_010_01_4_1_1type}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Type\+Id\+Helper$<$ T $>$}{\pageref{classtesting_1_1internal_1_1_type_id_helper}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:typelist$<$ Ts $>$}{\pageref{structutl_1_1meta_1_1typelist}}{} +\item \contentsline{section}{testing\+:\+:internal2\+:\+:Type\+Without\+Formatter$<$ T, k\+Type\+Kind $>$}{\pageref{classtesting_1_1internal2_1_1_type_without_formatter}}{} +\item \contentsline{section}{testing\+:\+:internal2\+:\+:Type\+Without\+Formatter$<$ T, k\+Convertible\+To\+Integer $>$}{\pageref{classtesting_1_1internal2_1_1_type_without_formatter_3_01_t_00_01k_convertible_to_integer_01_4}}{} +\item \contentsline{section}{testing\+:\+:internal2\+:\+:Type\+Without\+Formatter$<$ T, k\+Protobuf $>$}{\pageref{classtesting_1_1internal2_1_1_type_without_formatter_3_01_t_00_01k_protobuf_01_4}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Type\+With\+Size$<$ size $>$}{\pageref{classtesting_1_1internal_1_1_type_with_size}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Type\+With\+Size$<$ 4 $>$}{\pageref{classtesting_1_1internal_1_1_type_with_size_3_014_01_4}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Type\+With\+Size$<$ 8 $>$}{\pageref{classtesting_1_1internal_1_1_type_with_size_3_018_01_4}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Type\+With\+Size$<$ sizeof(Raw\+Type)$>$}{\pageref{classtesting_1_1internal_1_1_type_with_size}}{} +\item \contentsline{section}{testing\+:\+:Unit\+Test}{\pageref{classtesting_1_1_unit_test}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Universal\+Printer$<$ T $>$}{\pageref{classtesting_1_1internal_1_1_universal_printer}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Universal\+Printer$<$ T \& $>$}{\pageref{classtesting_1_1internal_1_1_universal_printer_3_01_t_01_6_01_4}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Universal\+Printer$<$ T\mbox{[}N\mbox{]}$>$}{\pageref{classtesting_1_1internal_1_1_universal_printer_3_01_t[_n]_4}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Universal\+Terse\+Printer$<$ T $>$}{\pageref{classtesting_1_1internal_1_1_universal_terse_printer}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Universal\+Terse\+Printer$<$ char $\ast$ $>$}{\pageref{classtesting_1_1internal_1_1_universal_terse_printer_3_01char_01_5_01_4}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Universal\+Terse\+Printer$<$ const char $\ast$ $>$}{\pageref{classtesting_1_1internal_1_1_universal_terse_printer_3_01const_01char_01_5_01_4}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Universal\+Terse\+Printer$<$ const wchar\+\_\+t $\ast$ $>$}{\pageref{classtesting_1_1internal_1_1_universal_terse_printer_3_01const_01wchar__t_01_5_01_4}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Universal\+Terse\+Printer$<$ T \& $>$}{\pageref{classtesting_1_1internal_1_1_universal_terse_printer_3_01_t_01_6_01_4}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Universal\+Terse\+Printer$<$ T\mbox{[}N\mbox{]}$>$}{\pageref{classtesting_1_1internal_1_1_universal_terse_printer_3_01_t[_n]_4}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Universal\+Terse\+Printer$<$ wchar\+\_\+t $\ast$ $>$}{\pageref{classtesting_1_1internal_1_1_universal_terse_printer_3_01wchar__t_01_5_01_4}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Value\+Array$<$ Ts $>$}{\pageref{classtesting_1_1internal_1_1_value_array}}{} +\item \contentsline{section}{utl\+:\+:virtual\+\_\+tag}{\pageref{structutl_1_1virtual__tag}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:detail\+:\+:when\+\_\+$<$ If $>$}{\pageref{structutl_1_1meta_1_1detail_1_1when__}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:detail\+:\+:when\+\_\+$<$ true $>$}{\pageref{structutl_1_1meta_1_1detail_1_1when___3_01true_01_4}}{} +\item \contentsline{section}{testing\+:\+:With\+Param\+Interface$<$ T $>$}{\pageref{classtesting_1_1_with_param_interface}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{testing\+:\+:Test\+With\+Param$<$ T $>$}{\pageref{classtesting_1_1_test_with_param}}{} +\end{DoxyCompactList} +\item \contentsline{section}{utl\+:\+:meta\+:\+:wrap$<$ F $>$}{\pageref{structutl_1_1meta_1_1wrap}}{} +\item \contentsline{section}{utl\+:\+:meta\+:\+:wrap\+\_\+i$<$ T, F $>$}{\pageref{structutl_1_1meta_1_1wrap__i}}{} +\item \contentsline{section}{testing\+:\+:internal\+:\+:Wrap\+Printer\+Type$<$ type $>$}{\pageref{structtesting_1_1internal_1_1_wrap_printer_type}}{} +\end{DoxyCompactList} diff --git a/doc/latex/i2c_8h.tex b/doc/latex/i2c_8h.tex new file mode 100644 index 0000000..4ea6454 --- /dev/null +++ b/doc/latex/i2c_8h.tex @@ -0,0 +1,55 @@ +\hypertarget{i2c_8h}{}\section{include/utl/com/i2c.h File Reference} +\label{i2c_8h}\index{include/utl/com/i2c.\+h@{include/utl/com/i2c.\+h}} + + +An Abstract base class interface for the i2c bus. + + +{\ttfamily \#include $<$utl/core/impl.\+h$>$}\newline +{\ttfamily \#include $<$utl/core/crtp.\+h$>$}\newline +{\ttfamily \#include $<$utl/meta/meta.\+h$>$}\newline +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +class \mbox{\hyperlink{classutl_1_1i2c__i}{utl\+::i2c\+\_\+i$<$ impl\+\_\+t $>$}} +\begin{DoxyCompactList}\small\item\em Abstract base class for i2c bus. \end{DoxyCompactList}\item +class \mbox{\hyperlink{classutl_1_1i2c__i_3_01virtual__tag_01_4}{utl\+::i2c\+\_\+i$<$ virtual\+\_\+tag $>$}} +\begin{DoxyCompactList}\small\item\em A virtual base class specialization. \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1i2c__i__details_1_1is__i2c__}{utl\+::i2c\+\_\+i\+\_\+details\+::is\+\_\+i2c\+\_\+$<$ \+\_\+\+Tp, typename $>$}} +\begin{DoxyCompactList}\small\item\em Primary template to catch any non I2C interface types. \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1i2c__i__details_1_1is__i2c___3_01___tp_00_01meta_1_1void__t_3_01typename_01___tp_1_1_sequence_00_01void_01_4_01_4}{utl\+::i2c\+\_\+i\+\_\+details\+::is\+\_\+i2c\+\_\+$<$ \+\_\+\+Tp, meta\+::void\+\_\+t$<$ typename \+\_\+\+Tp\+::\+Sequence, void $>$ $>$}} +\begin{DoxyCompactList}\small\item\em template to catch a proper I2C interface type \end{DoxyCompactList}\end{DoxyCompactItemize} +\subsection*{Namespaces} +\begin{DoxyCompactItemize} +\item + \mbox{\hyperlink{namespaceutl}{utl}} +\begin{DoxyCompactList}\small\item\em S\+TL\textquotesingle{}s core language concepts. \end{DoxyCompactList}\item + \mbox{\hyperlink{namespaceutl_1_1i2c__i__details}{utl\+::i2c\+\_\+i\+\_\+details}} +\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1i2c__i__details_a81c12a06fe9cf6f643718f9175da8769}{utl\+::i2c\+\_\+i\+\_\+details\+::try\+\_\+cclk\+\_\+t}} = decltype(declval$<$ const \+\_\+\+Tp $>$().clock()) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1i2c__i__details_adaf6b9dbc57caeda1a6a85bd17ac6317}{utl\+::i2c\+\_\+i\+\_\+details\+::try\+\_\+clk\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().clock(declval$<$ uint32\+\_\+t $>$())) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1i2c__i__details_a173335d0a45cba1b159bf33bcefb3a46}{utl\+::i2c\+\_\+i\+\_\+details\+::try\+\_\+start\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().start()) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1i2c__i__details_a25cbce342478441f05d3a101fcafc02c}{utl\+::i2c\+\_\+i\+\_\+details\+::try\+\_\+stop\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().stop()) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1i2c__i__details_a10de1b351bd683c5435e2db3d682819c}{utl\+::i2c\+\_\+i\+\_\+details\+::try\+\_\+rx\+\_\+data\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().rx\+\_\+data(declval$<$ bool $>$(), declval$<$ typename \+\_\+\+Tp\+::\+Sequence $>$())) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1i2c__i__details_ad8d87a56b12244ba8060f8d27207083f}{utl\+::i2c\+\_\+i\+\_\+details\+::try\+\_\+tx\+\_\+data\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().tx\+\_\+data(declval$<$ byte\+\_\+t $>$(), declval$<$ typename \+\_\+\+Tp\+::\+Sequence $>$())) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +An Abstract base class interface for the i2c bus. + +Copyright (C) 2018 Christos Choutouridis + +This program is free software\+: you can redistribute it and/or modify it under the terms of the G\+NU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but W\+I\+T\+H\+O\+UT A\+NY W\+A\+R\+R\+A\+N\+TY; without even the implied warranty of M\+E\+R\+C\+H\+A\+N\+T\+A\+B\+I\+L\+I\+TY or F\+I\+T\+N\+E\+SS F\+OR A P\+A\+R\+T\+I\+C\+U\+L\+AR P\+U\+R\+P\+O\+SE. See the G\+NU Lesser General Public License for more details. + +You should have received a copy of the G\+NU Lesser General Public License along with this program. If not, see \href{http://www.gnu.org/licenses/}{\tt http\+://www.\+gnu.\+org/licenses/}. \ No newline at end of file diff --git a/doc/latex/i2c__bb_8h.tex b/doc/latex/i2c__bb_8h.tex new file mode 100644 index 0000000..2bd88c3 --- /dev/null +++ b/doc/latex/i2c__bb_8h.tex @@ -0,0 +1,34 @@ +\hypertarget{i2c__bb_8h}{}\section{include/utl/com/i2c\+\_\+bb.h File Reference} +\label{i2c__bb_8h}\index{include/utl/com/i2c\+\_\+bb.\+h@{include/utl/com/i2c\+\_\+bb.\+h}} + + +A bit banking implementation of i2c bus inherited from i2c\+\_\+i base class. + + +{\ttfamily \#include $<$utl/core/impl.\+h$>$}\newline +{\ttfamily \#include $<$utl/core/crtp.\+h$>$}\newline +{\ttfamily \#include $<$utl/com/i2c.\+h$>$}\newline +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +class \mbox{\hyperlink{classutl_1_1i2c__bb__i}{utl\+::i2c\+\_\+bb\+\_\+i$<$ impl\+\_\+t $>$}} +\begin{DoxyCompactList}\small\item\em A bit banking implementation of i2c bus inherited from \mbox{\hyperlink{classutl_1_1i2c__i}{i2c\+\_\+i}} base class. \end{DoxyCompactList}\item +class \mbox{\hyperlink{classutl_1_1i2c__bb__i_3_01virtual__tag_01_4}{utl\+::i2c\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag $>$}} +\begin{DoxyCompactList}\small\item\em A virtual base class interface specialization. Using the private virtual interface we provide the interface from \mbox{\hyperlink{classutl_1_1i2c__i_3_01virtual__tag_01_4}{i2c\+\_\+i$<$virtual\+\_\+tag$>$}} \end{DoxyCompactList}\end{DoxyCompactItemize} +\subsection*{Namespaces} +\begin{DoxyCompactItemize} +\item + \mbox{\hyperlink{namespaceutl}{utl}} +\begin{DoxyCompactList}\small\item\em S\+TL\textquotesingle{}s core language concepts. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +A bit banking implementation of i2c bus inherited from i2c\+\_\+i base class. + +Copyright (C) 2018 Christos Choutouridis + +This program is free software\+: you can redistribute it and/or modify it under the terms of the G\+NU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but W\+I\+T\+H\+O\+UT A\+NY W\+A\+R\+R\+A\+N\+TY; without even the implied warranty of M\+E\+R\+C\+H\+A\+N\+T\+A\+B\+I\+L\+I\+TY or F\+I\+T\+N\+E\+SS F\+OR A P\+A\+R\+T\+I\+C\+U\+L\+AR P\+U\+R\+P\+O\+SE. See the G\+NU Lesser General Public License for more details. + +You should have received a copy of the G\+NU Lesser General Public License along with this program. If not, see \href{http://www.gnu.org/licenses/}{\tt http\+://www.\+gnu.\+org/licenses/}. \ No newline at end of file diff --git a/doc/latex/id_8h.tex b/doc/latex/id_8h.tex new file mode 100644 index 0000000..8eefe03 --- /dev/null +++ b/doc/latex/id_8h.tex @@ -0,0 +1,55 @@ +\hypertarget{id_8h}{}\section{include/utl/container/id.h File Reference} +\label{id_8h}\index{include/utl/container/id.\+h@{include/utl/container/id.\+h}} + + +A container for device I\+Ds. + + +{\ttfamily \#include $<$utl/core/impl.\+h$>$}\newline +{\ttfamily \#include $<$utl/container/array.\+h$>$}\newline +{\ttfamily \#include $<$algorithm$>$}\newline +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structutl_1_1id__traits}{utl\+::id\+\_\+traits$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$}} +\begin{DoxyCompactList}\small\item\em id container traits helper \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1id__traits_3_01___tp_00_010_01_4}{utl\+::id\+\_\+traits$<$ \+\_\+\+Tp, 0 $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1id__traits_3_01___tp_00_010_01_4_1_1type}{utl\+::id\+\_\+traits$<$ \+\_\+\+Tp, 0 $>$\+::type}} +\item +struct \mbox{\hyperlink{structutl_1_1id__t}{utl\+::id\+\_\+t$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$}} +\begin{DoxyCompactList}\small\item\em A standard container for storing I\+Ds as a fixed size sequence of bytes. This type is based on etl\+::array Meets the requirements of\+: \href{tables.html#65}{\tt container}, \href{tables.html#66}{\tt reversible container}, \href{tables.html#67}{\tt sequence}. Sets support random access iterators. \end{DoxyCompactList}\end{DoxyCompactItemize} +\subsection*{Namespaces} +\begin{DoxyCompactItemize} +\item + \mbox{\hyperlink{namespaceutl}{utl}} +\begin{DoxyCompactList}\small\item\em S\+TL\textquotesingle{}s core language concepts. \end{DoxyCompactList}\end{DoxyCompactItemize} +\subsection*{Functions} +\begin{Indent}\textbf{ device ID comparisons.}\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename \+\_\+\+Tp , size\+\_\+t \+\_\+\+Nm$>$ }\\bool \mbox{\hyperlink{namespaceutl_a2e319bae5449ee07261f547a94c31f87}{utl\+::operator==}} (const id\+\_\+t$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&lhs, const id\+\_\+t$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&rhs) +\item +{\footnotesize template$<$typename \+\_\+\+Tp , size\+\_\+t \+\_\+\+Nm$>$ }\\bool \mbox{\hyperlink{namespaceutl_a7f05cda5b7a37dea074df55db31aefb6}{utl\+::operator!=}} (const id\+\_\+t$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&lhs, const id\+\_\+t$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&rhs) +\item +{\footnotesize template$<$typename \+\_\+\+Tp , size\+\_\+t \+\_\+\+Nm$>$ }\\bool \mbox{\hyperlink{namespaceutl_a64bc464138b386821977a0c4ac43fddf}{utl\+::operator$<$}} (const id\+\_\+t$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&lhs, const id\+\_\+t$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&rhs) +\item +{\footnotesize template$<$typename \+\_\+\+Tp , size\+\_\+t \+\_\+\+Nm$>$ }\\bool \mbox{\hyperlink{namespaceutl_aa88fd098a89e4477ff55319be1d44a64}{utl\+::operator$>$}} (const id\+\_\+t$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&lhs, const id\+\_\+t$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&rhs) +\item +{\footnotesize template$<$typename \+\_\+\+Tp , size\+\_\+t \+\_\+\+Nm$>$ }\\bool \mbox{\hyperlink{namespaceutl_aa2c449f74d1214cb7406b1648d2caf6f}{utl\+::operator$<$=}} (const id\+\_\+t$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&lhs, const id\+\_\+t$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&rhs) +\item +{\footnotesize template$<$typename \+\_\+\+Tp , size\+\_\+t \+\_\+\+Nm$>$ }\\bool \mbox{\hyperlink{namespaceutl_a3f53717133a73715f387ebac4b6f22b3}{utl\+::operator$>$=}} (const id\+\_\+t$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&lhs, const id\+\_\+t$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&rhs) +\end{DoxyCompactItemize} +\end{Indent} + + +\subsection{Detailed Description} +A container for device I\+Ds. + +Copyright (C) 2018 Christos Choutouridis + +This program is free software\+: you can redistribute it and/or modify it under the terms of the G\+NU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but W\+I\+T\+H\+O\+UT A\+NY W\+A\+R\+R\+A\+N\+TY; without even the implied warranty of M\+E\+R\+C\+H\+A\+N\+T\+A\+B\+I\+L\+I\+TY or F\+I\+T\+N\+E\+SS F\+OR A P\+A\+R\+T\+I\+C\+U\+L\+AR P\+U\+R\+P\+O\+SE. See the G\+NU Lesser General Public License for more details. + +You should have received a copy of the G\+NU Lesser General Public License along with this program. If not, see \href{http://www.gnu.org/licenses/}{\tt http\+://www.\+gnu.\+org/licenses/}. \ No newline at end of file diff --git a/doc/latex/idx__dev_8h.tex b/doc/latex/idx__dev_8h.tex new file mode 100644 index 0000000..c880b14 --- /dev/null +++ b/doc/latex/idx__dev_8h.tex @@ -0,0 +1,67 @@ +\hypertarget{idx__dev_8h}{}\section{include/utl/dev/idx\+\_\+dev.h File Reference} +\label{idx__dev_8h}\index{include/utl/dev/idx\+\_\+dev.\+h@{include/utl/dev/idx\+\_\+dev.\+h}} + + +Abstract base class implementations for indexed devices interface of utl. + + +{\ttfamily \#include $<$utl/core/impl.\+h$>$}\newline +{\ttfamily \#include $<$utl/core/crtp.\+h$>$}\newline +{\ttfamily \#include $<$utl/dev/dev\+\_\+iterators.\+h$>$}\newline +{\ttfamily \#include $<$utl/meta/meta.\+h$>$}\newline +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +class \mbox{\hyperlink{classutl_1_1idx__dev}{utl\+::idx\+\_\+dev$<$ impl\+\_\+t, data\+\_\+t, idx\+\_\+t, N $>$}} +\begin{DoxyCompactList}\small\item\em Abstract base class for indexed devices. \end{DoxyCompactList}\item +class \mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4}{utl\+::idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}} +\begin{DoxyCompactList}\small\item\em A virtual base class specialization. \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1idx__dev__details_1_1is__idx__dev__}{utl\+::idx\+\_\+dev\+\_\+details\+::is\+\_\+idx\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, typename $>$}} +\begin{DoxyCompactList}\small\item\em Primary template to catch any non input device types. \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1idx__dev__details_1_1is__idx__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1ae8b6b24c31c81bdd901da6e6387d84b}{utl\+::idx\+\_\+dev\+\_\+details\+::is\+\_\+idx\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, void\+\_\+t$<$ typename \+\_\+\+Tp\+::data\+\_\+type, typename \+\_\+\+Tp\+::pointer\+\_\+type, typename \+\_\+\+Tp\+::iterator, typename \+\_\+\+Tp\+::const\+\_\+iterator, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+get1\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+get2\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cbegin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cend\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$ $>$ $>$}} +\begin{DoxyCompactList}\small\item\em template to catch a proper input device type \end{DoxyCompactList}\end{DoxyCompactItemize} +\subsection*{Namespaces} +\begin{DoxyCompactItemize} +\item + \mbox{\hyperlink{namespaceutl}{utl}} +\begin{DoxyCompactList}\small\item\em S\+TL\textquotesingle{}s core language concepts. \end{DoxyCompactList}\item + \mbox{\hyperlink{namespaceutl_1_1idx__dev__details}{utl\+::idx\+\_\+dev\+\_\+details}} +\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1idx__dev__details_ac3a877d2f57d7c50b77456e0571112f0}{utl\+::idx\+\_\+dev\+\_\+details\+::try\+\_\+get1\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().get(declval$<$ typename \+\_\+\+Tp\+::data\+\_\+type \& $>$())) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1idx__dev__details_a4cf6896009d70acdccfb55ba333fe7ef}{utl\+::idx\+\_\+dev\+\_\+details\+::try\+\_\+get2\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().get(declval$<$ typename \+\_\+\+Tp\+::data\+\_\+type $\ast$ $>$(), declval$<$ size\+\_\+t $>$())) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1idx__dev__details_a69a8af95a0fd62c3e022c34ddc3a956b}{utl\+::idx\+\_\+dev\+\_\+details\+::try\+\_\+begin\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().begin()) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1idx__dev__details_afe8e2fc19d7b37a1b379a5f8302ef421}{utl\+::idx\+\_\+dev\+\_\+details\+::tryc\+\_\+begin\+\_\+t}} = decltype(declval$<$ const \+\_\+\+Tp $>$().begin()) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1idx__dev__details_a655c6de0d6d8f4ac3778f2fff8e9c7de}{utl\+::idx\+\_\+dev\+\_\+details\+::try\+\_\+cbegin\+\_\+t}} = decltype(declval$<$ const \+\_\+\+Tp $>$().cbegin()) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1idx__dev__details_ab85fa5de8595b6e56a6718ffb7d4edfe}{utl\+::idx\+\_\+dev\+\_\+details\+::try\+\_\+end\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().begin()) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1idx__dev__details_aad6edb02a37f897cf4157f6345909ef1}{utl\+::idx\+\_\+dev\+\_\+details\+::tryc\+\_\+end\+\_\+t}} = decltype(declval$<$ const \+\_\+\+Tp $>$().begin()) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1idx__dev__details_adb8cac5f5772e513749038257a1f92df}{utl\+::idx\+\_\+dev\+\_\+details\+::try\+\_\+cend\+\_\+t}} = decltype(declval$<$ const \+\_\+\+Tp $>$().cend()) +\end{DoxyCompactItemize} +\subsection*{Variables} +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename \+\_\+\+Tp $>$ }\\constexpr bool \mbox{\hyperlink{namespaceutl_a80a0424d220ac1f7be50086617a05dbd}{utl\+::\+Idx\+\_\+dev}} = idx\+\_\+dev\+\_\+details\+::is\+\_\+idx\+\_\+dev\+\_\+ $<$\+\_\+\+Tp$>$\+::value +\end{DoxyCompactItemize} + + + +\subsection{Detailed Description} +Abstract base class implementations for indexed devices interface of utl. + +Copyright (C) 2018 Christos Choutouridis + +This program is free software\+: you can redistribute it and/or modify it under the terms of the G\+NU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but W\+I\+T\+H\+O\+UT A\+NY W\+A\+R\+R\+A\+N\+TY; without even the implied warranty of M\+E\+R\+C\+H\+A\+N\+T\+A\+B\+I\+L\+I\+TY or F\+I\+T\+N\+E\+SS F\+OR A P\+A\+R\+T\+I\+C\+U\+L\+AR P\+U\+R\+P\+O\+SE. See the G\+NU Lesser General Public License for more details. + +You should have received a copy of the G\+NU Lesser General Public License along with this program. If not, see \href{http://www.gnu.org/licenses/}{\tt http\+://www.\+gnu.\+org/licenses/}. \ No newline at end of file diff --git a/doc/latex/impl_8h.tex b/doc/latex/impl_8h.tex new file mode 100644 index 0000000..a11259f --- /dev/null +++ b/doc/latex/impl_8h.tex @@ -0,0 +1,21 @@ +\hypertarget{impl_8h}{}\section{include/utl/core/impl.h File Reference} +\label{impl_8h}\index{include/utl/core/impl.\+h@{include/utl/core/impl.\+h}} + + +Implementation detail main forward header. + + +{\ttfamily \#include $<$utl/core/version.\+h$>$}\newline +{\ttfamily \#include $<$utl/core/types.\+h$>$}\newline + + +\subsection{Detailed Description} +Implementation detail main forward header. + +Copyright (C) 2018 Christos Choutouridis + +This program is free software\+: you can redistribute it and/or modify it under the terms of the G\+NU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but W\+I\+T\+H\+O\+UT A\+NY W\+A\+R\+R\+A\+N\+TY; without even the implied warranty of M\+E\+R\+C\+H\+A\+N\+T\+A\+B\+I\+L\+I\+TY or F\+I\+T\+N\+E\+SS F\+OR A P\+A\+R\+T\+I\+C\+U\+L\+AR P\+U\+R\+P\+O\+SE. See the G\+NU Lesser General Public License for more details. + +You should have received a copy of the G\+NU Lesser General Public License along with this program. If not, see \href{http://www.gnu.org/licenses/}{\tt http\+://www.\+gnu.\+org/licenses/}. \ No newline at end of file diff --git a/doc/latex/in__dev_8h.tex b/doc/latex/in__dev_8h.tex new file mode 100644 index 0000000..953d6b9 --- /dev/null +++ b/doc/latex/in__dev_8h.tex @@ -0,0 +1,67 @@ +\hypertarget{in__dev_8h}{}\section{include/utl/dev/in\+\_\+dev.h File Reference} +\label{in__dev_8h}\index{include/utl/dev/in\+\_\+dev.\+h@{include/utl/dev/in\+\_\+dev.\+h}} + + +Abstract base class interface for input devices of utl. + + +{\ttfamily \#include $<$utl/core/impl.\+h$>$}\newline +{\ttfamily \#include $<$utl/core/crtp.\+h$>$}\newline +{\ttfamily \#include $<$utl/dev/dev\+\_\+iterators.\+h$>$}\newline +{\ttfamily \#include $<$utl/meta/meta.\+h$>$}\newline +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +class \mbox{\hyperlink{classutl_1_1in__dev}{utl\+::in\+\_\+dev$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$}} +\begin{DoxyCompactList}\small\item\em Abstract base class for input devices. \end{DoxyCompactList}\item +class \mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{utl\+::in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\begin{DoxyCompactList}\small\item\em A virtual base class specialization. \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1in__dev__details_1_1is__in__dev__}{utl\+::in\+\_\+dev\+\_\+details\+::is\+\_\+in\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, typename $>$}} +\begin{DoxyCompactList}\small\item\em Primary template to catch any non input device types. \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1in__dev__details_1_1is__in__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1dad922a62deb7c32e2cff18d66b8c887d2}{utl\+::in\+\_\+dev\+\_\+details\+::is\+\_\+in\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, void\+\_\+t$<$ typename \+\_\+\+Tp\+::data\+\_\+type, typename \+\_\+\+Tp\+::pointer\+\_\+type, typename \+\_\+\+Tp\+::iterator, typename \+\_\+\+Tp\+::const\+\_\+iterator, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+get1\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+get2\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cbegin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cend\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$ $>$ $>$}} +\begin{DoxyCompactList}\small\item\em template to catch a proper input device type \end{DoxyCompactList}\end{DoxyCompactItemize} +\subsection*{Namespaces} +\begin{DoxyCompactItemize} +\item + \mbox{\hyperlink{namespaceutl}{utl}} +\begin{DoxyCompactList}\small\item\em S\+TL\textquotesingle{}s core language concepts. \end{DoxyCompactList}\item + \mbox{\hyperlink{namespaceutl_1_1in__dev__details}{utl\+::in\+\_\+dev\+\_\+details}} +\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1in__dev__details_a560eec1b326b0f6b91fa96f64f15ef61}{utl\+::in\+\_\+dev\+\_\+details\+::try\+\_\+get1\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().get(declval$<$ typename \+\_\+\+Tp\+::data\+\_\+type \& $>$())) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1in__dev__details_ae11bccc2282ed8f2aaac67687d756167}{utl\+::in\+\_\+dev\+\_\+details\+::try\+\_\+get2\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().get(declval$<$ typename \+\_\+\+Tp\+::data\+\_\+type $\ast$ $>$(), declval$<$ size\+\_\+t $>$())) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1in__dev__details_af790d5cec9db9f80cc8d67e9755e823e}{utl\+::in\+\_\+dev\+\_\+details\+::try\+\_\+begin\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().begin()) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1in__dev__details_af7cb4a98688e65b04793cef145a90202}{utl\+::in\+\_\+dev\+\_\+details\+::tryc\+\_\+begin\+\_\+t}} = decltype(declval$<$ const \+\_\+\+Tp $>$().begin()) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1in__dev__details_a857d70a4119a4ff5615141d68e59ba7b}{utl\+::in\+\_\+dev\+\_\+details\+::try\+\_\+cbegin\+\_\+t}} = decltype(declval$<$ const \+\_\+\+Tp $>$().cbegin()) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1in__dev__details_acc72ca7012e26a9a0de8b08047dc9de8}{utl\+::in\+\_\+dev\+\_\+details\+::try\+\_\+end\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().begin()) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1in__dev__details_ad2dad6ed501b94ba1fa9cffade343762}{utl\+::in\+\_\+dev\+\_\+details\+::tryc\+\_\+end\+\_\+t}} = decltype(declval$<$ const \+\_\+\+Tp $>$().begin()) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1in__dev__details_ab268028c81d5385f19bbeb0c978ec9b2}{utl\+::in\+\_\+dev\+\_\+details\+::try\+\_\+cend\+\_\+t}} = decltype(declval$<$ const \+\_\+\+Tp $>$().cend()) +\end{DoxyCompactItemize} +\subsection*{Variables} +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename \+\_\+\+Tp $>$ }\\constexpr bool \mbox{\hyperlink{namespaceutl_a1470ab9407ee21ea374b2c7a81e3511b}{utl\+::\+In\+\_\+dev}} = in\+\_\+dev\+\_\+details\+::is\+\_\+in\+\_\+dev\+\_\+ $<$\+\_\+\+Tp$>$\+::value +\end{DoxyCompactItemize} + + + +\subsection{Detailed Description} +Abstract base class interface for input devices of utl. + +Copyright (C) 2018 Christos Choutouridis + +This program is free software\+: you can redistribute it and/or modify it under the terms of the G\+NU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but W\+I\+T\+H\+O\+UT A\+NY W\+A\+R\+R\+A\+N\+TY; without even the implied warranty of M\+E\+R\+C\+H\+A\+N\+T\+A\+B\+I\+L\+I\+TY or F\+I\+T\+N\+E\+SS F\+OR A P\+A\+R\+T\+I\+C\+U\+L\+AR P\+U\+R\+P\+O\+SE. See the G\+NU Lesser General Public License for more details. + +You should have received a copy of the G\+NU Lesser General Public License along with this program. If not, see \href{http://www.gnu.org/licenses/}{\tt http\+://www.\+gnu.\+org/licenses/}. \ No newline at end of file diff --git a/doc/latex/inbuf__dev_8h.tex b/doc/latex/inbuf__dev_8h.tex new file mode 100644 index 0000000..7e06b13 --- /dev/null +++ b/doc/latex/inbuf__dev_8h.tex @@ -0,0 +1,67 @@ +\hypertarget{inbuf__dev_8h}{}\section{include/utl/dev/inbuf\+\_\+dev.h File Reference} +\label{inbuf__dev_8h}\index{include/utl/dev/inbuf\+\_\+dev.\+h@{include/utl/dev/inbuf\+\_\+dev.\+h}} + + +Abstract base class interface for input buffered devices of utl. + + +{\ttfamily \#include $<$utl/core/impl.\+h$>$}\newline +{\ttfamily \#include $<$utl/core/crtp.\+h$>$}\newline +{\ttfamily \#include $<$utl/dev/dev\+\_\+iterators.\+h$>$}\newline +{\ttfamily \#include $<$utl/meta/meta.\+h$>$}\newline +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +class \mbox{\hyperlink{classutl_1_1inbuf__dev}{utl\+::inbuf\+\_\+dev$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$}} +\begin{DoxyCompactList}\small\item\em Abstract base class for input buffered devices. \end{DoxyCompactList}\item +class \mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{utl\+::inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\begin{DoxyCompactList}\small\item\em A virtual base class specialization. \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1inbuf__dev__details_1_1is__inbuf__dev__}{utl\+::inbuf\+\_\+dev\+\_\+details\+::is\+\_\+inbuf\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, typename $>$}} +\begin{DoxyCompactList}\small\item\em Primary template to catch any non input device types. \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1inbuf__dev__details_1_1is__inbuf__dev___3_01___tp_00_01void__t_3_01typename_01___tpc269ee3885240cc8c352f3c6b3a67cd7}{utl\+::inbuf\+\_\+dev\+\_\+details\+::is\+\_\+inbuf\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, void\+\_\+t$<$ typename \+\_\+\+Tp\+::data\+\_\+type, typename \+\_\+\+Tp\+::pointer\+\_\+type, typename \+\_\+\+Tp\+::iterator, typename \+\_\+\+Tp\+::const\+\_\+iterator, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+get1\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+get2\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cbegin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cend\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$ $>$ $>$}} +\begin{DoxyCompactList}\small\item\em template to catch a proper input device type \end{DoxyCompactList}\end{DoxyCompactItemize} +\subsection*{Namespaces} +\begin{DoxyCompactItemize} +\item + \mbox{\hyperlink{namespaceutl}{utl}} +\begin{DoxyCompactList}\small\item\em S\+TL\textquotesingle{}s core language concepts. \end{DoxyCompactList}\item + \mbox{\hyperlink{namespaceutl_1_1inbuf__dev__details}{utl\+::inbuf\+\_\+dev\+\_\+details}} +\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1inbuf__dev__details_a72a6469ab9ce0cba618dd0b554fc2dd2}{utl\+::inbuf\+\_\+dev\+\_\+details\+::try\+\_\+get1\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().get(declval$<$ typename \+\_\+\+Tp\+::data\+\_\+type \& $>$())) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1inbuf__dev__details_af09ed69d129c33b8a6d3f79c79b8ea35}{utl\+::inbuf\+\_\+dev\+\_\+details\+::try\+\_\+get2\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().get(declval$<$ typename \+\_\+\+Tp\+::data\+\_\+type $\ast$ $>$(), declval$<$ size\+\_\+t $>$())) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1inbuf__dev__details_a18d5c5e879b4714f58861ad411537d53}{utl\+::inbuf\+\_\+dev\+\_\+details\+::try\+\_\+begin\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().begin()) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1inbuf__dev__details_adff91b885ea1831691d4619d360bb72b}{utl\+::inbuf\+\_\+dev\+\_\+details\+::tryc\+\_\+begin\+\_\+t}} = decltype(declval$<$ const \+\_\+\+Tp $>$().begin()) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1inbuf__dev__details_a351202ead58a98a2eaad4f3987b6170c}{utl\+::inbuf\+\_\+dev\+\_\+details\+::try\+\_\+cbegin\+\_\+t}} = decltype(declval$<$ const \+\_\+\+Tp $>$().cbegin()) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1inbuf__dev__details_a5d4aa9d57c443c33cf08375e0c51bdd3}{utl\+::inbuf\+\_\+dev\+\_\+details\+::try\+\_\+end\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().begin()) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1inbuf__dev__details_a858c7a1a0b1d8d0bdc91ce681aa1b996}{utl\+::inbuf\+\_\+dev\+\_\+details\+::tryc\+\_\+end\+\_\+t}} = decltype(declval$<$ const \+\_\+\+Tp $>$().begin()) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1inbuf__dev__details_a24eae32ecbea1291607f16d92c2b029a}{utl\+::inbuf\+\_\+dev\+\_\+details\+::try\+\_\+cend\+\_\+t}} = decltype(declval$<$ const \+\_\+\+Tp $>$().cend()) +\end{DoxyCompactItemize} +\subsection*{Variables} +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename \+\_\+\+Tp $>$ }\\constexpr bool \mbox{\hyperlink{namespaceutl_ac447a457f18a1c4dcd1dddb4c2789006}{utl\+::\+Inbuf\+\_\+dev}} = inbuf\+\_\+dev\+\_\+details\+::is\+\_\+inbuf\+\_\+dev\+\_\+ $<$\+\_\+\+Tp$>$\+::value +\end{DoxyCompactItemize} + + + +\subsection{Detailed Description} +Abstract base class interface for input buffered devices of utl. + +Copyright (C) 2018 Christos Choutouridis + +This program is free software\+: you can redistribute it and/or modify it under the terms of the G\+NU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but W\+I\+T\+H\+O\+UT A\+NY W\+A\+R\+R\+A\+N\+TY; without even the implied warranty of M\+E\+R\+C\+H\+A\+N\+T\+A\+B\+I\+L\+I\+TY or F\+I\+T\+N\+E\+SS F\+OR A P\+A\+R\+T\+I\+C\+U\+L\+AR P\+U\+R\+P\+O\+SE. See the G\+NU Lesser General Public License for more details. + +You should have received a copy of the G\+NU Lesser General Public License along with this program. If not, see \href{http://www.gnu.org/licenses/}{\tt http\+://www.\+gnu.\+org/licenses/}. \ No newline at end of file diff --git a/doc/latex/integral_8h.tex b/doc/latex/integral_8h.tex new file mode 100644 index 0000000..dbb1253 --- /dev/null +++ b/doc/latex/integral_8h.tex @@ -0,0 +1,80 @@ +\hypertarget{integral_8h}{}\section{include/utl/meta/integral.h File Reference} +\label{integral_8h}\index{include/utl/meta/integral.\+h@{include/utl/meta/integral.\+h}} +{\ttfamily \#include $<$utl/core/impl.\+h$>$}\newline +{\ttfamily \#include $<$type\+\_\+traits$>$}\newline +{\ttfamily \#include $<$utility$>$}\newline +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1nil__}{utl\+::meta\+::nil\+\_\+}} +\end{DoxyCompactItemize} +\subsection*{Namespaces} +\begin{DoxyCompactItemize} +\item + \mbox{\hyperlink{namespaceutl}{utl}} +\begin{DoxyCompactList}\small\item\em S\+TL\textquotesingle{}s core language concepts. \end{DoxyCompactList}\item + \mbox{\hyperlink{namespaceutl_1_1meta}{utl\+::meta}} +\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{utl\+::meta\+::eval}} = typename Tp\+::type +\begin{DoxyCompactList}\small\item\em Type alias for {\ttfamily Tp\+::type}. Used to evaluate/extract return type of metafunctions. \end{DoxyCompactList}\item +using \mbox{\hyperlink{namespaceutl_1_1meta_af0c85cc6480a9e7a8e4fb7d8f936f01b}{utl\+::meta\+::\+Npos}} = size\+\_\+$<$ index\+\_\+t(-\/1)$>$ +\begin{DoxyCompactList}\small\item\em The last position we can express for indexing. \end{DoxyCompactList}\end{DoxyCompactItemize} +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename Tp , Tp v$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{utl\+::meta\+::integral\+\_\+}} = std\+::integral\+\_\+constant$<$ Tp, v $>$ +\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$bool v$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a0bec5828d2df0edfb4bc084773a438f6}{utl\+::meta\+::bool\+\_\+}} = integral\+\_\+$<$ bool, v $>$ +\begin{DoxyCompactList}\small\item\em bool\+\_\+ type\+: integral constant wrapper for bool \end{DoxyCompactList}\item +using \mbox{\hyperlink{namespaceutl_1_1meta_ae9a5a8fbe8202785f059935af219fb97}{utl\+::meta\+::true\+\_\+}} = bool\+\_\+$<$ true $>$ +\begin{DoxyCompactList}\small\item\em The type used as a compile-\/time boolean with true value. \end{DoxyCompactList}\item +using \mbox{\hyperlink{namespaceutl_1_1meta_a55511dbaa0adb605ce22dcec11f8d22d}{utl\+::meta\+::false\+\_\+}} = bool\+\_\+$<$ false $>$ +\begin{DoxyCompactList}\small\item\em The type used as a compile-\/time boolean with false value. \end{DoxyCompactList}\item +{\footnotesize template$<$int8\+\_\+t v$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_aa0ca1890dde0298c4380f94582cc2186}{utl\+::meta\+::int8\+\_\+}} = integral\+\_\+$<$ int8\+\_\+t, v $>$ +\begin{DoxyCompactList}\small\item\em int8\+\_\+ type\+: integral constant wrapper for {\ttfamily int8\+\_\+t} \end{DoxyCompactList}\item +{\footnotesize template$<$uint8\+\_\+t v$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_aae9c77ad9349e98af6cdc41e9b0090f8}{utl\+::meta\+::uint8\+\_\+}} = integral\+\_\+$<$ uint8\+\_\+t, v $>$ +\begin{DoxyCompactList}\small\item\em uint8\+\_\+ type\+: integral constant wrapper for {\ttfamily uint8\+\_\+t} \end{DoxyCompactList}\item +{\footnotesize template$<$int16\+\_\+t v$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a65bf025970a7ec0fd488c50a1b9c1038}{utl\+::meta\+::int16\+\_\+}} = integral\+\_\+$<$ int16\+\_\+t, v $>$ +\begin{DoxyCompactList}\small\item\em int16\+\_\+ type\+: integral constant wrapper for {\ttfamily int16\+\_\+t} \end{DoxyCompactList}\item +{\footnotesize template$<$uint16\+\_\+t v$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_af1b0b8109e3e61032c24d148202b6966}{utl\+::meta\+::uint16\+\_\+}} = integral\+\_\+$<$ uint16\+\_\+t, v $>$ +\begin{DoxyCompactList}\small\item\em uint16\+\_\+ type\+: integral constant wrapper for {\ttfamily uint16\+\_\+t} \end{DoxyCompactList}\item +{\footnotesize template$<$int32\+\_\+t v$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_aa907f027fe3df2cecca2cf60930086fb}{utl\+::meta\+::int32\+\_\+}} = integral\+\_\+$<$ int32\+\_\+t, v $>$ +\begin{DoxyCompactList}\small\item\em int32\+\_\+ type\+: integral constant wrapper for {\ttfamily int32\+\_\+t} \end{DoxyCompactList}\item +{\footnotesize template$<$uint32\+\_\+t v$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_aa8c7c38548db8df196b683ffdc109cd6}{utl\+::meta\+::uint32\+\_\+}} = integral\+\_\+$<$ uint32\+\_\+t, v $>$ +\begin{DoxyCompactList}\small\item\em uint32\+\_\+ type\+: integral constant wrapper for {\ttfamily uint32\+\_\+t} \end{DoxyCompactList}\item +{\footnotesize template$<$char v$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a0fe31eec9b085e52aa45587e6d887419}{utl\+::meta\+::char\+\_\+}} = integral\+\_\+$<$ char, v $>$ +\begin{DoxyCompactList}\small\item\em char\+\_\+ type\+: integral constant wrapper for {\ttfamily char} \end{DoxyCompactList}\item +{\footnotesize template$<$int v$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a35b962b97f8277de66c1c8c02796eed4}{utl\+::meta\+::int\+\_\+}} = integral\+\_\+$<$ int, v $>$ +\begin{DoxyCompactList}\small\item\em int\+\_\+ type\+: integral constant wrapper for {\ttfamily int} \end{DoxyCompactList}\item +{\footnotesize template$<$long v$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a5d3ed337c64ea13ee70891d09b0caa3e}{utl\+::meta\+::long\+\_\+}} = integral\+\_\+$<$ long, v $>$ +\begin{DoxyCompactList}\small\item\em long\+\_\+ type\+: integral constant wrapper for {\ttfamily long} \end{DoxyCompactList}\item +{\footnotesize template$<$index\+\_\+t v$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a5b7d36b9e568b81f2df897d56dc23b64}{utl\+::meta\+::index\+\_\+}} = integral\+\_\+$<$ index\+\_\+t, v $>$ +\begin{DoxyCompactList}\small\item\em index\+\_\+ type\+: integral constant wrapper for {\ttfamily index\+\_\+t} a.\+k.\+a std\+::size\+\_\+t \end{DoxyCompactList}\item +{\footnotesize template$<$size\+\_\+t v$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a249ac51f6613684164663bd22025fe9a}{utl\+::meta\+::size\+\_\+}} = integral\+\_\+$<$ size\+\_\+t, v $>$ +\begin{DoxyCompactList}\small\item\em size\+\_\+ type\+: integral constant wrapper for {\ttfamily size\+\_\+t} a.\+k.\+a std\+::size\+\_\+t \end{DoxyCompactList}\item +{\footnotesize template$<$typename Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a3fdae1894a962a69828ccccf73088cce}{utl\+::meta\+::sizeof\+\_\+}} = size\+\_\+$<$ sizeof(Tp)$>$ +\item +{\footnotesize template$<$typename Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_afacfb1fb855b9a9a0c8a2a625a2a9bd2}{utl\+::meta\+::alignof\+\_\+}} = size\+\_\+$<$ alignof(Tp)$>$ +\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$class Tp , Tp... Ints$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_abc3ba8590a6cdd451f64d6c5dcd8ff99}{utl\+::meta\+::integer\+\_\+sequence}} = std\+::integer\+\_\+sequence$<$ Tp, Ints... $>$ +\item +{\footnotesize template$<$typename Tp , Tp Num$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a093a8cfdae571002c305273aa02ad6a2}{utl\+::meta\+::make\+\_\+integer\+\_\+sequence}} = std\+::make\+\_\+integer\+\_\+sequence$<$ Tp, Num $>$ +\item +{\footnotesize template$<$index\+\_\+t... Idx$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_acb42e9c38b726174e64a36eea39239a5}{utl\+::meta\+::index\+\_\+sequence}} = integer\+\_\+sequence$<$ index\+\_\+t, Idx... $>$ +\begin{DoxyCompactList}\small\item\em Alias template index\+\_\+sequence. \end{DoxyCompactList}\item +{\footnotesize template$<$index\+\_\+t Num$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_aa7e48cd5c76ea88fc89ff4a66bc6f596}{utl\+::meta\+::make\+\_\+index\+\_\+sequence}} = make\+\_\+integer\+\_\+sequence$<$ index\+\_\+t, Num $>$ +\begin{DoxyCompactList}\small\item\em Alias template make\+\_\+index\+\_\+sequence. \end{DoxyCompactList}\item +{\footnotesize template$<$typename... Types$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a7cdf7fbb62116925ccdecab03d3383d9}{utl\+::meta\+::index\+\_\+sequence\+\_\+for}} = make\+\_\+index\+\_\+sequence$<$ sizeof...(Types)$>$ +\begin{DoxyCompactList}\small\item\em Alias template index\+\_\+sequence\+\_\+for. \end{DoxyCompactList}\end{DoxyCompactItemize} + diff --git a/doc/latex/iterators_8h.tex b/doc/latex/iterators_8h.tex new file mode 100644 index 0000000..cda75ee --- /dev/null +++ b/doc/latex/iterators_8h.tex @@ -0,0 +1,24 @@ +\hypertarget{iterators_8h}{}\section{include/utl/concepts/iterators.h File Reference} +\label{iterators_8h}\index{include/utl/concepts/iterators.\+h@{include/utl/concepts/iterators.\+h}} +{\ttfamily \#include $<$utl/core/impl.\+h$>$}\newline +{\ttfamily \#include $<$utl/concepts/defines.\+h$>$}\newline +{\ttfamily \#include $<$utl/concepts/stl.\+h$>$}\newline +\subsection*{Namespaces} +\begin{DoxyCompactItemize} +\item + \mbox{\hyperlink{namespaceutl}{utl}} +\begin{DoxyCompactList}\small\item\em S\+TL\textquotesingle{}s core language concepts. \end{DoxyCompactList}\item + \mbox{\hyperlink{namespaceutl_1_1detail}{utl\+::detail}} +\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename I $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1detail_a50e7a46f910a83190bca5a58f67f1e2d}{utl\+::detail\+::try\+\_\+ppI}} = decltype(++(std\+::declval$<$ I $>$())) +\item +{\footnotesize template$<$typename I $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1detail_a1371d13b3e8408cfc68e82b03ca9f3b0}{utl\+::detail\+::try\+\_\+\+Ipp}} = decltype(std\+::declval$<$ I $>$()++) +\end{DoxyCompactItemize} +\subsection*{Variables} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$class I $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a25b4f216e3d7754b1c7088dd59504dee}{utl\+::\+Weakly\+Incrementable}} +\end{DoxyCompactItemize} diff --git a/doc/latex/lib_2gtest_2gtest-all_8d.tex b/doc/latex/lib_2gtest_2gtest-all_8d.tex new file mode 100644 index 0000000..c83854c --- /dev/null +++ b/doc/latex/lib_2gtest_2gtest-all_8d.tex @@ -0,0 +1,2 @@ +\hypertarget{lib_2gtest_2gtest-all_8d}{}\section{test/eclipse-\/cygwin/\+C++14/lib/gtest/gtest-\/all.d File Reference} +\label{lib_2gtest_2gtest-all_8d}\index{test/eclipse-\/cygwin/\+C++14/lib/gtest/gtest-\/all.\+d@{test/eclipse-\/cygwin/\+C++14/lib/gtest/gtest-\/all.\+d}} diff --git a/doc/latex/main_8cpp.tex b/doc/latex/main_8cpp.tex new file mode 100644 index 0000000..2287eca --- /dev/null +++ b/doc/latex/main_8cpp.tex @@ -0,0 +1,37 @@ +\hypertarget{main_8cpp}{}\section{test/main.cpp File Reference} +\label{main_8cpp}\index{test/main.\+cpp@{test/main.\+cpp}} + + +Test project main file. + + +{\ttfamily \#include $<$gtest/gtest.\+h$>$}\newline +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} int \mbox{\hyperlink{main_8cpp_a7f83bdc516d2cb86e20235d94ddf055a}{main}} (int argc, char $\ast$$\ast$argv) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Test project main file. + +Copyright (C) 2018 Christos Choutouridis + +This program is free software\+: you can redistribute it and/or modify it under the terms of the G\+NU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but W\+I\+T\+H\+O\+UT A\+NY W\+A\+R\+R\+A\+N\+TY; without even the implied warranty of M\+E\+R\+C\+H\+A\+N\+T\+A\+B\+I\+L\+I\+TY or F\+I\+T\+N\+E\+SS F\+OR A P\+A\+R\+T\+I\+C\+U\+L\+AR P\+U\+R\+P\+O\+SE. See the G\+NU Lesser General Public License for more details. + +You should have received a copy of the G\+NU Lesser General Public License along with this program. If not, see \href{http://www.gnu.org/licenses/}{\tt http\+://www.\+gnu.\+org/licenses/}. + +\subsection{Function Documentation} +\mbox{\Hypertarget{main_8cpp_a7f83bdc516d2cb86e20235d94ddf055a}\label{main_8cpp_a7f83bdc516d2cb86e20235d94ddf055a}} +\index{main.\+cpp@{main.\+cpp}!main@{main}} +\index{main@{main}!main.\+cpp@{main.\+cpp}} +\subsubsection{\texorpdfstring{main()}{main()}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} int main (\begin{DoxyParamCaption}\item[{int}]{argc, }\item[{char $\ast$$\ast$}]{argv }\end{DoxyParamCaption})} + + + +Definition at line 23 of file main.\+cpp. + diff --git a/doc/latex/make.bat b/doc/latex/make.bat new file mode 100644 index 0000000..afcb4f7 --- /dev/null +++ b/doc/latex/make.bat @@ -0,0 +1,30 @@ +set Dir_Old=%cd% +cd /D %~dp0 + +del /s /f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out *.brf *.blg *.bbl refman.pdf + +pdflatex refman +echo ---- +makeindex refman.idx +echo ---- +pdflatex refman + +setlocal enabledelayedexpansion +set count=8 +:repeat +set content=X +for /F "tokens=*" %%T in ( 'findstr /C:"Rerun LaTeX" refman.log' ) do set content="%%~T" +if !content! == X for /F "tokens=*" %%T in ( 'findstr /C:"Rerun to get cross-references right" refman.log' ) do set content="%%~T" +if !content! == X goto :skip +set /a count-=1 +if !count! EQU 0 goto :skip + +echo ---- +pdflatex refman +goto :repeat +:skip +endlocal +makeindex refman.idx +pdflatex refman +cd /D %Dir_Old% +set Dir_Old= diff --git a/doc/latex/md__r_e_a_d_m_e.tex b/doc/latex/md__r_e_a_d_m_e.tex new file mode 100644 index 0000000..e69de29 diff --git a/doc/latex/meta_2invoke_8h.tex b/doc/latex/meta_2invoke_8h.tex new file mode 100644 index 0000000..7710254 --- /dev/null +++ b/doc/latex/meta_2invoke_8h.tex @@ -0,0 +1,110 @@ +\hypertarget{meta_2invoke_8h}{}\section{include/utl/meta/invoke.h File Reference} +\label{meta_2invoke_8h}\index{include/utl/meta/invoke.\+h@{include/utl/meta/invoke.\+h}} +{\ttfamily \#include $<$utl/core/impl.\+h$>$}\newline +{\ttfamily \#include $<$utl/meta/integral.\+h$>$}\newline +{\ttfamily \#include $<$utl/meta/detection.\+h$>$}\newline +{\ttfamily \#include $<$utl/meta/operations.\+h$>$}\newline +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1identity}{utl\+::meta\+::identity$<$ \+\_\+\+Tp $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1wrap}{utl\+::meta\+::wrap$<$ F $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1wrap__i}{utl\+::meta\+::wrap\+\_\+i$<$ T, F $>$}} +\begin{DoxyCompactList}\small\item\em Wrap a template {\ttfamily F} taking literal constants of type {\ttfamily T} into an Invokable. \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__}{utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+$<$ F, T $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__q__}{utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+q\+\_\+$<$ F, T $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__i__}{utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+i\+\_\+$<$ T, F, Is $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1defer__}{utl\+::meta\+::detail\+::defer\+\_\+$<$ F, Ts $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1defer__i__}{utl\+::meta\+::detail\+::defer\+\_\+i\+\_\+$<$ T, F, Is $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1quote}{utl\+::meta\+::quote$<$ F $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1quote__i}{utl\+::meta\+::quote\+\_\+i$<$ T, F $>$}} +\begin{DoxyCompactList}\small\item\em Wrap a template {\ttfamily F} taking literal constants of type {\ttfamily T} into an Invokable. \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1compose__f__}{utl\+::meta\+::detail\+::compose\+\_\+f\+\_\+$<$ Fns $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_00_01_fns_8_8_8_01_4}{utl\+::meta\+::detail\+::compose\+\_\+f\+\_\+$<$ Fn0, Fns... $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_01_4}{utl\+::meta\+::detail\+::compose\+\_\+f\+\_\+$<$ Fn0 $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1compose__}{utl\+::meta\+::detail\+::compose\+\_\+$<$ Fns $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_00_01_fns_8_8_8_01_4}{utl\+::meta\+::detail\+::compose\+\_\+$<$ Fn0, Fns... $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_01_4}{utl\+::meta\+::detail\+::compose\+\_\+$<$ Fn0 $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1bind__front}{utl\+::meta\+::bind\+\_\+front$<$ Fn, Ts $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1bind__back}{utl\+::meta\+::bind\+\_\+back$<$ Fn, Ts $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1same__as}{utl\+::meta\+::same\+\_\+as$<$ T1 $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1same__as_1_1apply}{utl\+::meta\+::same\+\_\+as$<$ T1 $>$\+::apply$<$ T2 $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1not__same__as}{utl\+::meta\+::not\+\_\+same\+\_\+as$<$ T1 $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1not__same__as_1_1apply}{utl\+::meta\+::not\+\_\+same\+\_\+as$<$ T1 $>$\+::apply$<$ T2 $>$}} +\end{DoxyCompactItemize} +\subsection*{Namespaces} +\begin{DoxyCompactItemize} +\item + \mbox{\hyperlink{namespaceutl}{utl}} +\begin{DoxyCompactList}\small\item\em S\+TL\textquotesingle{}s core language concepts. \end{DoxyCompactList}\item + \mbox{\hyperlink{namespaceutl_1_1meta}{utl\+::meta}} +\item + \mbox{\hyperlink{namespaceutl_1_1meta_1_1detail}{utl\+::meta\+::detail}} +\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{Indent}\textbf{ meta\+:\+:invoke}\par +{\em A meta-\/programming \mbox{\hyperlink{namespaceutl_adc675874b5426194d04112f76b356714}{invoke()}} analogous. A {\ttfamily meta\+::invocable} shall contain a nested template type named {\bfseries apply} which is bind to actual invocable meta-\/function. + + +\begin{DoxyItemize} +\item We can use {\ttfamily wrap$<$$>$} or even better {\ttfamily quote$<$$>$} in order to wrap a metafunction to a type (metafunction class) +\item We can pass these wrapped types to other metafunctions +\item We can {\ttfamily invoke$<$$>$} the inner {\ttfamily apply} from a wrapped metafunction class. +\end{DoxyItemize}}\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a63c0b6b08f4c1d9bd3c4db7432e9b2af}{utl\+::meta\+::identity\+\_\+t}} = eval$<$ identity$<$ \+\_\+\+Tp $>$ $>$ +\begin{DoxyCompactList}\small\item\em identity type alias \end{DoxyCompactList}\end{DoxyCompactItemize} +\end{Indent} +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename Fn , typename... Args$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{utl\+::meta\+::invoke}} = typename Fn\+::template apply$<$ Args... $>$ +\item +{\footnotesize template$<$typename Fn , typename... Args$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ac27f3e5f3ec42921d9f8a6bb85560cf1}{utl\+::meta\+::invoke\+\_\+t}} = eval$<$ invoke$<$ Fn, Args... $>$ $>$ +\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$template$<$ typename... $>$ class F, typename... T$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a695a94a2bbe51b0d0eec9bf82214d094}{utl\+::meta\+::is\+\_\+applicable\+\_\+t}} = eval$<$ detail\+::is\+\_\+applicable\+\_\+$<$ F, T... $>$ $>$ +\begin{DoxyCompactList}\small\item\em check if we can instantiate {\ttfamily F} with parameters {\ttfamily T} \end{DoxyCompactList}\item +{\footnotesize template$<$typename Q , typename... T$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a52c0afa73f63dc889e44cc6cc180f1f8}{utl\+::meta\+::is\+\_\+applicable\+\_\+qt}} = eval$<$ detail\+::is\+\_\+applicable\+\_\+q\+\_\+$<$ Q, T... $>$ $>$ +\begin{DoxyCompactList}\small\item\em check if we can invoke {\ttfamily Q} with parameters {\ttfamily T} \end{DoxyCompactList}\item +{\footnotesize template$<$typename T , template$<$ T... $>$ class F, T... Is$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_add602488265f07c7a3080355350cda70}{utl\+::meta\+::is\+\_\+applicable\+\_\+it}} = eval$<$ detail\+::is\+\_\+applicable\+\_\+i\+\_\+$<$ T, F, Is... $>$ $>$ +\begin{DoxyCompactList}\small\item\em check if we can instantiate {\ttfamily F} with parameters {\ttfamily Is} of type {\ttfamily T} \end{DoxyCompactList}\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$template$<$ class... $>$ class F, class... Ts$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a48f9a1220931596a9652351d2e7242be}{utl\+::meta\+::defer}} = if\+\_\+$<$ detail\+::is\+\_\+applicable\+\_\+$<$ F, Ts... $>$, detail\+::defer\+\_\+$<$ F, Ts... $>$, nil\+\_\+ $>$ +\begin{DoxyCompactList}\small\item\em defer alias template for F$<$\+Ts...$>$ \end{DoxyCompactList}\item +{\footnotesize template$<$typename T , template$<$ T... $>$ class F, T... Is$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a01f183f337439e414184beedc9bcf9e3}{utl\+::meta\+::defer\+\_\+i}} = if\+\_\+$<$ detail\+::is\+\_\+applicable\+\_\+i\+\_\+$<$ T, F, Is... $>$, detail\+::defer\+\_\+i\+\_\+$<$ T, F, Is... $>$, nil\+\_\+ $>$ +\begin{DoxyCompactList}\small\item\em defer\+\_\+i alias template for F$<$\+T, Is...$>$ \end{DoxyCompactList}\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename... Fns$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a4f0c06cabe66bc73b703eb8509c7bb07}{utl\+::meta\+::compose}} = detail\+::compose\+\_\+$<$ Fns... $>$ +\item +{\footnotesize template$<$template$<$ typename... $>$ class... Fns$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a729294327829b3068632da1235dc3090}{utl\+::meta\+::compose\+\_\+f}} = detail\+::compose\+\_\+f\+\_\+$<$ Fns... $>$ +\end{DoxyCompactItemize} + diff --git a/doc/latex/meta_8h.tex b/doc/latex/meta_8h.tex new file mode 100644 index 0000000..cda16b7 --- /dev/null +++ b/doc/latex/meta_8h.tex @@ -0,0 +1,26 @@ +\hypertarget{meta_8h}{}\section{include/utl/meta/meta.h File Reference} +\label{meta_8h}\index{include/utl/meta/meta.\+h@{include/utl/meta/meta.\+h}} + + +Include all meta library. + + +{\ttfamily \#include $<$utl/meta/integral.\+h$>$}\newline +{\ttfamily \#include $<$utl/meta/selection.\+h$>$}\newline +{\ttfamily \#include $<$utl/meta/operations.\+h$>$}\newline +{\ttfamily \#include $<$utl/meta/useif.\+h$>$}\newline +{\ttfamily \#include $<$utl/meta/typelist.\+h$>$}\newline +{\ttfamily \#include $<$utl/meta/detection.\+h$>$}\newline +{\ttfamily \#include $<$utl/meta/invoke.\+h$>$}\newline + + +\subsection{Detailed Description} +Include all meta library. + +Copyright (C) 2018-\/2019 Christos Choutouridis + +This program is free software\+: you can redistribute it and/or modify it under the terms of the G\+NU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but W\+I\+T\+H\+O\+UT A\+NY W\+A\+R\+R\+A\+N\+TY; without even the implied warranty of M\+E\+R\+C\+H\+A\+N\+T\+A\+B\+I\+L\+I\+TY or F\+I\+T\+N\+E\+SS F\+OR A P\+A\+R\+T\+I\+C\+U\+L\+AR P\+U\+R\+P\+O\+SE. See the G\+NU Lesser General Public License for more details. + +You should have received a copy of the G\+NU Lesser General Public License along with this program. If not, see \href{http://www.gnu.org/licenses/}{\tt http\+://www.\+gnu.\+org/licenses/}. \ No newline at end of file diff --git a/doc/latex/modules.tex b/doc/latex/modules.tex new file mode 100644 index 0000000..1b0229e --- /dev/null +++ b/doc/latex/modules.tex @@ -0,0 +1,16 @@ +\section{Modules} +Here is a list of all modules\+:\begin{DoxyCompactList} +\item \contentsline{section}{Concepts}{\pageref{group__concepts}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{Iterators}{\pageref{group__iterators}}{} +\end{DoxyCompactList} +\item \contentsline{section}{C\+R\+TP idiom support header}{\pageref{group__crtp}}{} +\item \contentsline{section}{version}{\pageref{group__version}}{} +\item \contentsline{section}{Detection}{\pageref{group__detection}}{} +\item \contentsline{section}{operators}{\pageref{group__integral}}{} +\item \contentsline{section}{Invoke}{\pageref{group__invoke}}{} +\item \contentsline{section}{Logic}{\pageref{group__logic}}{} +\item \contentsline{section}{selection}{\pageref{group__type}}{} +\item \contentsline{section}{Sfinae}{\pageref{group__sfinae}}{} +\item \contentsline{section}{Typelist}{\pageref{group__typelist}}{} +\end{DoxyCompactList} diff --git a/doc/latex/namespace_tmeta_basic.tex b/doc/latex/namespace_tmeta_basic.tex new file mode 100644 index 0000000..b91e1cd --- /dev/null +++ b/doc/latex/namespace_tmeta_basic.tex @@ -0,0 +1,171 @@ +\hypertarget{namespace_tmeta_basic}{}\section{Tmeta\+Basic Namespace Reference} +\label{namespace_tmeta_basic}\index{Tmeta\+Basic@{Tmeta\+Basic}} +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{struct_tmeta_basic_1_1_identity}{Identity}} +\end{DoxyCompactItemize} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{namespace_tmeta_basic_adbcfd80fbcc5a0fa1a132ea56c18e7ec}{T\+E\+ST}} (Tmeta\+Basic, Integreal\+Type) +\item +\mbox{\hyperlink{namespace_tmeta_basic_a9366a9541a3c137f06a56bb0de5dea26}{T\+E\+ST}} (Tmeta\+Basic, Integreal\+Constant) +\item +\mbox{\hyperlink{namespace_tmeta_basic_a76a07a924d058a3e5f60e1b40417348a}{T\+E\+ST}} (Tmeta\+Basic, Basic\+Types) +\item +\mbox{\hyperlink{namespace_tmeta_basic_aa66e8f02bed5fa0b5a84c70f80c29b98}{T\+E\+ST}} (Tmeta\+Basic, Selection) +\item +\mbox{\hyperlink{namespace_tmeta_basic_a8ee52197913571c983d610af12a1a664}{T\+E\+ST}} (Tmeta\+Basic, Logical\+Operations) +\item +\mbox{\hyperlink{namespace_tmeta_basic_aabef072b3cd9e8f59bd696590b1b5dfd}{T\+E\+ST}} (Tmeta\+Basic, Arithmetic\+Operations) +\item +\mbox{\hyperlink{namespace_tmeta_basic_a3ba38c6705e4f363cf52f330afedfdb6}{T\+E\+ST}} (Tmeta\+Basic, Comparison\+Operations) +\item +\mbox{\hyperlink{namespace_tmeta_basic_ae75afce18d82aad495ef6b9f7d5c0470}{T\+E\+ST}} (Tmeta\+Basic, Bit\+Operations) +\item +{\footnotesize template$<$typename T , typename = when$<$same\+\_\+$<$\+T, int$>$\+::type\+::value$>$$>$ }\\int \mbox{\hyperlink{namespace_tmeta_basic_ace6bcbc9c530fa498900e5fbcf6e7f49}{check1}} (T x) +\item +int \mbox{\hyperlink{namespace_tmeta_basic_a8fd829e39bf3d2429d66205a392a458f}{check1}} (...) +\item +{\footnotesize template$<$typename T , typename = enable\+\_\+if\+\_\+t$<$same\+\_\+$<$\+T, int$>$\+::type\+::value, void$>$$>$ }\\int \mbox{\hyperlink{namespace_tmeta_basic_a693588cb4aefc8048c1bc4fb414fa5fe}{check2}} (T x) +\item +int \mbox{\hyperlink{namespace_tmeta_basic_a691f22848ac59a710a5a588e25b79bdf}{check2}} (...) +\item +\mbox{\hyperlink{namespace_tmeta_basic_a5662c8ed09164d9e4ffbcc3931580eb9}{T\+E\+ST}} (Tmeta\+Basic, Sfinae) +\end{DoxyCompactItemize} + + +\subsection{Function Documentation} +\mbox{\Hypertarget{namespace_tmeta_basic_ace6bcbc9c530fa498900e5fbcf6e7f49}\label{namespace_tmeta_basic_ace6bcbc9c530fa498900e5fbcf6e7f49}} +\index{Tmeta\+Basic@{Tmeta\+Basic}!check1@{check1}} +\index{check1@{check1}!Tmeta\+Basic@{Tmeta\+Basic}} +\subsubsection{\texorpdfstring{check1()}{check1()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename T , typename = when$<$same\+\_\+$<$\+T, int$>$\+::type\+::value$>$$>$ \\ +int Tmeta\+Basic\+::check1 (\begin{DoxyParamCaption}\item[{T}]{x }\end{DoxyParamCaption})} + + + +Definition at line 222 of file Tmeta\+Basic.\+cpp. + +\mbox{\Hypertarget{namespace_tmeta_basic_a8fd829e39bf3d2429d66205a392a458f}\label{namespace_tmeta_basic_a8fd829e39bf3d2429d66205a392a458f}} +\index{Tmeta\+Basic@{Tmeta\+Basic}!check1@{check1}} +\index{check1@{check1}!Tmeta\+Basic@{Tmeta\+Basic}} +\subsubsection{\texorpdfstring{check1()}{check1()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily int Tmeta\+Basic\+::check1 (\begin{DoxyParamCaption}\item[{}]{... }\end{DoxyParamCaption})} + + + +Definition at line 223 of file Tmeta\+Basic.\+cpp. + +\mbox{\Hypertarget{namespace_tmeta_basic_a693588cb4aefc8048c1bc4fb414fa5fe}\label{namespace_tmeta_basic_a693588cb4aefc8048c1bc4fb414fa5fe}} +\index{Tmeta\+Basic@{Tmeta\+Basic}!check2@{check2}} +\index{check2@{check2}!Tmeta\+Basic@{Tmeta\+Basic}} +\subsubsection{\texorpdfstring{check2()}{check2()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename T , typename = enable\+\_\+if\+\_\+t$<$same\+\_\+$<$\+T, int$>$\+::type\+::value, void$>$$>$ \\ +int Tmeta\+Basic\+::check2 (\begin{DoxyParamCaption}\item[{T}]{x }\end{DoxyParamCaption})} + + + +Definition at line 226 of file Tmeta\+Basic.\+cpp. + +\mbox{\Hypertarget{namespace_tmeta_basic_a691f22848ac59a710a5a588e25b79bdf}\label{namespace_tmeta_basic_a691f22848ac59a710a5a588e25b79bdf}} +\index{Tmeta\+Basic@{Tmeta\+Basic}!check2@{check2}} +\index{check2@{check2}!Tmeta\+Basic@{Tmeta\+Basic}} +\subsubsection{\texorpdfstring{check2()}{check2()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily int Tmeta\+Basic\+::check2 (\begin{DoxyParamCaption}\item[{}]{... }\end{DoxyParamCaption})} + + + +Definition at line 227 of file Tmeta\+Basic.\+cpp. + +\mbox{\Hypertarget{namespace_tmeta_basic_adbcfd80fbcc5a0fa1a132ea56c18e7ec}\label{namespace_tmeta_basic_adbcfd80fbcc5a0fa1a132ea56c18e7ec}} +\index{Tmeta\+Basic@{Tmeta\+Basic}!T\+E\+ST@{T\+E\+ST}} +\index{T\+E\+ST@{T\+E\+ST}!Tmeta\+Basic@{Tmeta\+Basic}} +\subsubsection{\texorpdfstring{T\+E\+S\+T()}{TEST()}\hspace{0.1cm}{\footnotesize\ttfamily [1/9]}} +{\footnotesize\ttfamily Tmeta\+Basic\+::\+T\+E\+ST (\begin{DoxyParamCaption}\item[{Tmeta\+Basic}]{, }\item[{Integreal\+Type}]{ }\end{DoxyParamCaption})} + + + +Definition at line 39 of file Tmeta\+Basic.\+cpp. + +\mbox{\Hypertarget{namespace_tmeta_basic_a9366a9541a3c137f06a56bb0de5dea26}\label{namespace_tmeta_basic_a9366a9541a3c137f06a56bb0de5dea26}} +\index{Tmeta\+Basic@{Tmeta\+Basic}!T\+E\+ST@{T\+E\+ST}} +\index{T\+E\+ST@{T\+E\+ST}!Tmeta\+Basic@{Tmeta\+Basic}} +\subsubsection{\texorpdfstring{T\+E\+S\+T()}{TEST()}\hspace{0.1cm}{\footnotesize\ttfamily [2/9]}} +{\footnotesize\ttfamily Tmeta\+Basic\+::\+T\+E\+ST (\begin{DoxyParamCaption}\item[{Tmeta\+Basic}]{, }\item[{Integreal\+Constant}]{ }\end{DoxyParamCaption})} + + + +Definition at line 45 of file Tmeta\+Basic.\+cpp. + +\mbox{\Hypertarget{namespace_tmeta_basic_a76a07a924d058a3e5f60e1b40417348a}\label{namespace_tmeta_basic_a76a07a924d058a3e5f60e1b40417348a}} +\index{Tmeta\+Basic@{Tmeta\+Basic}!T\+E\+ST@{T\+E\+ST}} +\index{T\+E\+ST@{T\+E\+ST}!Tmeta\+Basic@{Tmeta\+Basic}} +\subsubsection{\texorpdfstring{T\+E\+S\+T()}{TEST()}\hspace{0.1cm}{\footnotesize\ttfamily [3/9]}} +{\footnotesize\ttfamily Tmeta\+Basic\+::\+T\+E\+ST (\begin{DoxyParamCaption}\item[{Tmeta\+Basic}]{, }\item[{Basic\+Types}]{ }\end{DoxyParamCaption})} + + + +Definition at line 51 of file Tmeta\+Basic.\+cpp. + +\mbox{\Hypertarget{namespace_tmeta_basic_aa66e8f02bed5fa0b5a84c70f80c29b98}\label{namespace_tmeta_basic_aa66e8f02bed5fa0b5a84c70f80c29b98}} +\index{Tmeta\+Basic@{Tmeta\+Basic}!T\+E\+ST@{T\+E\+ST}} +\index{T\+E\+ST@{T\+E\+ST}!Tmeta\+Basic@{Tmeta\+Basic}} +\subsubsection{\texorpdfstring{T\+E\+S\+T()}{TEST()}\hspace{0.1cm}{\footnotesize\ttfamily [4/9]}} +{\footnotesize\ttfamily Tmeta\+Basic\+::\+T\+E\+ST (\begin{DoxyParamCaption}\item[{Tmeta\+Basic}]{, }\item[{Selection}]{ }\end{DoxyParamCaption})} + + + +Definition at line 92 of file Tmeta\+Basic.\+cpp. + +\mbox{\Hypertarget{namespace_tmeta_basic_a8ee52197913571c983d610af12a1a664}\label{namespace_tmeta_basic_a8ee52197913571c983d610af12a1a664}} +\index{Tmeta\+Basic@{Tmeta\+Basic}!T\+E\+ST@{T\+E\+ST}} +\index{T\+E\+ST@{T\+E\+ST}!Tmeta\+Basic@{Tmeta\+Basic}} +\subsubsection{\texorpdfstring{T\+E\+S\+T()}{TEST()}\hspace{0.1cm}{\footnotesize\ttfamily [5/9]}} +{\footnotesize\ttfamily Tmeta\+Basic\+::\+T\+E\+ST (\begin{DoxyParamCaption}\item[{Tmeta\+Basic}]{, }\item[{Logical\+Operations}]{ }\end{DoxyParamCaption})} + + + +Definition at line 112 of file Tmeta\+Basic.\+cpp. + +\mbox{\Hypertarget{namespace_tmeta_basic_aabef072b3cd9e8f59bd696590b1b5dfd}\label{namespace_tmeta_basic_aabef072b3cd9e8f59bd696590b1b5dfd}} +\index{Tmeta\+Basic@{Tmeta\+Basic}!T\+E\+ST@{T\+E\+ST}} +\index{T\+E\+ST@{T\+E\+ST}!Tmeta\+Basic@{Tmeta\+Basic}} +\subsubsection{\texorpdfstring{T\+E\+S\+T()}{TEST()}\hspace{0.1cm}{\footnotesize\ttfamily [6/9]}} +{\footnotesize\ttfamily Tmeta\+Basic\+::\+T\+E\+ST (\begin{DoxyParamCaption}\item[{Tmeta\+Basic}]{, }\item[{Arithmetic\+Operations}]{ }\end{DoxyParamCaption})} + + + +Definition at line 152 of file Tmeta\+Basic.\+cpp. + +\mbox{\Hypertarget{namespace_tmeta_basic_a3ba38c6705e4f363cf52f330afedfdb6}\label{namespace_tmeta_basic_a3ba38c6705e4f363cf52f330afedfdb6}} +\index{Tmeta\+Basic@{Tmeta\+Basic}!T\+E\+ST@{T\+E\+ST}} +\index{T\+E\+ST@{T\+E\+ST}!Tmeta\+Basic@{Tmeta\+Basic}} +\subsubsection{\texorpdfstring{T\+E\+S\+T()}{TEST()}\hspace{0.1cm}{\footnotesize\ttfamily [7/9]}} +{\footnotesize\ttfamily Tmeta\+Basic\+::\+T\+E\+ST (\begin{DoxyParamCaption}\item[{Tmeta\+Basic}]{, }\item[{Comparison\+Operations}]{ }\end{DoxyParamCaption})} + + + +Definition at line 166 of file Tmeta\+Basic.\+cpp. + +\mbox{\Hypertarget{namespace_tmeta_basic_ae75afce18d82aad495ef6b9f7d5c0470}\label{namespace_tmeta_basic_ae75afce18d82aad495ef6b9f7d5c0470}} +\index{Tmeta\+Basic@{Tmeta\+Basic}!T\+E\+ST@{T\+E\+ST}} +\index{T\+E\+ST@{T\+E\+ST}!Tmeta\+Basic@{Tmeta\+Basic}} +\subsubsection{\texorpdfstring{T\+E\+S\+T()}{TEST()}\hspace{0.1cm}{\footnotesize\ttfamily [8/9]}} +{\footnotesize\ttfamily Tmeta\+Basic\+::\+T\+E\+ST (\begin{DoxyParamCaption}\item[{Tmeta\+Basic}]{, }\item[{Bit\+Operations}]{ }\end{DoxyParamCaption})} + + + +Definition at line 201 of file Tmeta\+Basic.\+cpp. + +\mbox{\Hypertarget{namespace_tmeta_basic_a5662c8ed09164d9e4ffbcc3931580eb9}\label{namespace_tmeta_basic_a5662c8ed09164d9e4ffbcc3931580eb9}} +\index{Tmeta\+Basic@{Tmeta\+Basic}!T\+E\+ST@{T\+E\+ST}} +\index{T\+E\+ST@{T\+E\+ST}!Tmeta\+Basic@{Tmeta\+Basic}} +\subsubsection{\texorpdfstring{T\+E\+S\+T()}{TEST()}\hspace{0.1cm}{\footnotesize\ttfamily [9/9]}} +{\footnotesize\ttfamily Tmeta\+Basic\+::\+T\+E\+ST (\begin{DoxyParamCaption}\item[{Tmeta\+Basic}]{, }\item[{Sfinae}]{ }\end{DoxyParamCaption})} + + + +Definition at line 229 of file Tmeta\+Basic.\+cpp. + diff --git a/doc/latex/namespace_tmeta_detection.tex b/doc/latex/namespace_tmeta_detection.tex new file mode 100644 index 0000000..ecfd1f8 --- /dev/null +++ b/doc/latex/namespace_tmeta_detection.tex @@ -0,0 +1,164 @@ +\hypertarget{namespace_tmeta_detection}{}\section{Tmeta\+Detection Namespace Reference} +\label{namespace_tmeta_detection}\index{Tmeta\+Detection@{Tmeta\+Detection}} +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{struct_tmeta_detection_1_1_a}{A}} +\item +struct \mbox{\hyperlink{struct_tmeta_detection_1_1_bar}{Bar}} +\item +struct \mbox{\hyperlink{struct_tmeta_detection_1_1_foo}{Foo}} +\item +struct \mbox{\hyperlink{struct_tmeta_detection_1_1m_fun}{m\+Fun}} +\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename T $>$ }\\using \mbox{\hyperlink{namespace_tmeta_detection_a8afedee9c8f0f980114df2970b85b3d6}{try\+\_\+type}} = typename T\+::type +\item +{\footnotesize template$<$typename T $>$ }\\using \mbox{\hyperlink{namespace_tmeta_detection_a5b1aa9fde2d938f131aa21dfbc31066d}{try\+\_\+none}} = typename T\+::none +\item +{\footnotesize template$<$typename T $>$ }\\using \mbox{\hyperlink{namespace_tmeta_detection_a51bb4ddb42b30683a5838f8425126955}{try\+\_\+ctor1}} = decltype(T(std\+::declval$<$ int $>$(), std\+::declval$<$ double $>$())) +\item +{\footnotesize template$<$typename T $>$ }\\using \mbox{\hyperlink{namespace_tmeta_detection_a9fb54f795c97999192547571ba631be7}{try\+\_\+ctor2}} = decltype(T(std\+::declval$<$ int $>$())) +\item +{\footnotesize template$<$typename T $>$ }\\using \mbox{\hyperlink{namespace_tmeta_detection_a5a316a6cdd1fcf52966fee4f648f5986}{try\+\_\+ppT}} = decltype(++(std\+::declval$<$ T $>$())) +\item +{\footnotesize template$<$typename T $>$ }\\using \mbox{\hyperlink{namespace_tmeta_detection_a449d376e34edf3b90990510b64998ed6}{try\+\_\+\+Tpp}} = decltype(std\+::declval$<$ T $>$()++) +\item +{\footnotesize template$<$typename T $>$ }\\using \mbox{\hyperlink{namespace_tmeta_detection_ae8a09443bafe27ded567410f5d028934}{try\+\_\+sfun}} = decltype(std\+::declval$<$ T $>$().sfun()) +\end{DoxyCompactItemize} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{namespace_tmeta_detection_aa064e60dc07918977247e299899d361b}{T\+E\+ST}} (Tmeta\+Detection, Void\+Type) +\item +\mbox{\hyperlink{namespace_tmeta_detection_aad05cd282a58a320252a8de7a8ec9ba5}{T\+E\+ST}} (Tmeta\+Detection, Not\+A\+Type) +\item +\mbox{\hyperlink{namespace_tmeta_detection_a022c84980b3a19f2087bf4694ff652a7}{T\+E\+ST}} (Tmeta\+Detection, Is\+Detected) +\item +\mbox{\hyperlink{namespace_tmeta_detection_ae8ced9a0416f4a848bc4de38355d5ee8}{T\+E\+ST}} (Tmeta\+Detection, Toolkit) +\end{DoxyCompactItemize} + + +\subsection{Typedef Documentation} +\mbox{\Hypertarget{namespace_tmeta_detection_a51bb4ddb42b30683a5838f8425126955}\label{namespace_tmeta_detection_a51bb4ddb42b30683a5838f8425126955}} +\index{Tmeta\+Detection@{Tmeta\+Detection}!try\+\_\+ctor1@{try\+\_\+ctor1}} +\index{try\+\_\+ctor1@{try\+\_\+ctor1}!Tmeta\+Detection@{Tmeta\+Detection}} +\subsubsection{\texorpdfstring{try\+\_\+ctor1}{try\_ctor1}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +using \mbox{\hyperlink{namespace_tmeta_detection_a51bb4ddb42b30683a5838f8425126955}{Tmeta\+Detection\+::try\+\_\+ctor1}} = typedef decltype (T(std\+::declval$<$int$>$(), std\+::declval$<$double$>$()))} + + + +Definition at line 55 of file Tmeta\+Detection.\+cpp. + +\mbox{\Hypertarget{namespace_tmeta_detection_a9fb54f795c97999192547571ba631be7}\label{namespace_tmeta_detection_a9fb54f795c97999192547571ba631be7}} +\index{Tmeta\+Detection@{Tmeta\+Detection}!try\+\_\+ctor2@{try\+\_\+ctor2}} +\index{try\+\_\+ctor2@{try\+\_\+ctor2}!Tmeta\+Detection@{Tmeta\+Detection}} +\subsubsection{\texorpdfstring{try\+\_\+ctor2}{try\_ctor2}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +using \mbox{\hyperlink{namespace_tmeta_detection_a9fb54f795c97999192547571ba631be7}{Tmeta\+Detection\+::try\+\_\+ctor2}} = typedef decltype (T(std\+::declval$<$int$>$()))} + + + +Definition at line 56 of file Tmeta\+Detection.\+cpp. + +\mbox{\Hypertarget{namespace_tmeta_detection_a5b1aa9fde2d938f131aa21dfbc31066d}\label{namespace_tmeta_detection_a5b1aa9fde2d938f131aa21dfbc31066d}} +\index{Tmeta\+Detection@{Tmeta\+Detection}!try\+\_\+none@{try\+\_\+none}} +\index{try\+\_\+none@{try\+\_\+none}!Tmeta\+Detection@{Tmeta\+Detection}} +\subsubsection{\texorpdfstring{try\+\_\+none}{try\_none}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +using \mbox{\hyperlink{namespace_tmeta_detection_a5b1aa9fde2d938f131aa21dfbc31066d}{Tmeta\+Detection\+::try\+\_\+none}} = typedef typename T\+::none} + + + +Definition at line 54 of file Tmeta\+Detection.\+cpp. + +\mbox{\Hypertarget{namespace_tmeta_detection_a5a316a6cdd1fcf52966fee4f648f5986}\label{namespace_tmeta_detection_a5a316a6cdd1fcf52966fee4f648f5986}} +\index{Tmeta\+Detection@{Tmeta\+Detection}!try\+\_\+ppT@{try\+\_\+ppT}} +\index{try\+\_\+ppT@{try\+\_\+ppT}!Tmeta\+Detection@{Tmeta\+Detection}} +\subsubsection{\texorpdfstring{try\+\_\+ppT}{try\_ppT}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +using \mbox{\hyperlink{namespace_tmeta_detection_a5a316a6cdd1fcf52966fee4f648f5986}{Tmeta\+Detection\+::try\+\_\+ppT}} = typedef decltype (++(std\+::declval$<$T$>$()))} + + + +Definition at line 57 of file Tmeta\+Detection.\+cpp. + +\mbox{\Hypertarget{namespace_tmeta_detection_ae8a09443bafe27ded567410f5d028934}\label{namespace_tmeta_detection_ae8a09443bafe27ded567410f5d028934}} +\index{Tmeta\+Detection@{Tmeta\+Detection}!try\+\_\+sfun@{try\+\_\+sfun}} +\index{try\+\_\+sfun@{try\+\_\+sfun}!Tmeta\+Detection@{Tmeta\+Detection}} +\subsubsection{\texorpdfstring{try\+\_\+sfun}{try\_sfun}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +using \mbox{\hyperlink{namespace_tmeta_detection_ae8a09443bafe27ded567410f5d028934}{Tmeta\+Detection\+::try\+\_\+sfun}} = typedef decltype (std\+::declval$<$T$>$().sfun())} + + + +Definition at line 59 of file Tmeta\+Detection.\+cpp. + +\mbox{\Hypertarget{namespace_tmeta_detection_a449d376e34edf3b90990510b64998ed6}\label{namespace_tmeta_detection_a449d376e34edf3b90990510b64998ed6}} +\index{Tmeta\+Detection@{Tmeta\+Detection}!try\+\_\+\+Tpp@{try\+\_\+\+Tpp}} +\index{try\+\_\+\+Tpp@{try\+\_\+\+Tpp}!Tmeta\+Detection@{Tmeta\+Detection}} +\subsubsection{\texorpdfstring{try\+\_\+\+Tpp}{try\_Tpp}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +using \mbox{\hyperlink{namespace_tmeta_detection_a449d376e34edf3b90990510b64998ed6}{Tmeta\+Detection\+::try\+\_\+\+Tpp}} = typedef decltype (std\+::declval$<$T$>$()++)} + + + +Definition at line 58 of file Tmeta\+Detection.\+cpp. + +\mbox{\Hypertarget{namespace_tmeta_detection_a8afedee9c8f0f980114df2970b85b3d6}\label{namespace_tmeta_detection_a8afedee9c8f0f980114df2970b85b3d6}} +\index{Tmeta\+Detection@{Tmeta\+Detection}!try\+\_\+type@{try\+\_\+type}} +\index{try\+\_\+type@{try\+\_\+type}!Tmeta\+Detection@{Tmeta\+Detection}} +\subsubsection{\texorpdfstring{try\+\_\+type}{try\_type}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +using \mbox{\hyperlink{namespace_tmeta_detection_a8afedee9c8f0f980114df2970b85b3d6}{Tmeta\+Detection\+::try\+\_\+type}} = typedef typename T\+::type} + + + +Definition at line 53 of file Tmeta\+Detection.\+cpp. + + + +\subsection{Function Documentation} +\mbox{\Hypertarget{namespace_tmeta_detection_aa064e60dc07918977247e299899d361b}\label{namespace_tmeta_detection_aa064e60dc07918977247e299899d361b}} +\index{Tmeta\+Detection@{Tmeta\+Detection}!T\+E\+ST@{T\+E\+ST}} +\index{T\+E\+ST@{T\+E\+ST}!Tmeta\+Detection@{Tmeta\+Detection}} +\subsubsection{\texorpdfstring{T\+E\+S\+T()}{TEST()}\hspace{0.1cm}{\footnotesize\ttfamily [1/4]}} +{\footnotesize\ttfamily Tmeta\+Detection\+::\+T\+E\+ST (\begin{DoxyParamCaption}\item[{Tmeta\+Detection}]{, }\item[{Void\+Type}]{ }\end{DoxyParamCaption})} + + + +Definition at line 64 of file Tmeta\+Detection.\+cpp. + +\mbox{\Hypertarget{namespace_tmeta_detection_aad05cd282a58a320252a8de7a8ec9ba5}\label{namespace_tmeta_detection_aad05cd282a58a320252a8de7a8ec9ba5}} +\index{Tmeta\+Detection@{Tmeta\+Detection}!T\+E\+ST@{T\+E\+ST}} +\index{T\+E\+ST@{T\+E\+ST}!Tmeta\+Detection@{Tmeta\+Detection}} +\subsubsection{\texorpdfstring{T\+E\+S\+T()}{TEST()}\hspace{0.1cm}{\footnotesize\ttfamily [2/4]}} +{\footnotesize\ttfamily Tmeta\+Detection\+::\+T\+E\+ST (\begin{DoxyParamCaption}\item[{Tmeta\+Detection}]{, }\item[{Not\+A\+Type}]{ }\end{DoxyParamCaption})} + + + +Definition at line 72 of file Tmeta\+Detection.\+cpp. + +\mbox{\Hypertarget{namespace_tmeta_detection_a022c84980b3a19f2087bf4694ff652a7}\label{namespace_tmeta_detection_a022c84980b3a19f2087bf4694ff652a7}} +\index{Tmeta\+Detection@{Tmeta\+Detection}!T\+E\+ST@{T\+E\+ST}} +\index{T\+E\+ST@{T\+E\+ST}!Tmeta\+Detection@{Tmeta\+Detection}} +\subsubsection{\texorpdfstring{T\+E\+S\+T()}{TEST()}\hspace{0.1cm}{\footnotesize\ttfamily [3/4]}} +{\footnotesize\ttfamily Tmeta\+Detection\+::\+T\+E\+ST (\begin{DoxyParamCaption}\item[{Tmeta\+Detection}]{, }\item[{Is\+Detected}]{ }\end{DoxyParamCaption})} + + + +Definition at line 82 of file Tmeta\+Detection.\+cpp. + +\mbox{\Hypertarget{namespace_tmeta_detection_ae8ced9a0416f4a848bc4de38355d5ee8}\label{namespace_tmeta_detection_ae8ced9a0416f4a848bc4de38355d5ee8}} +\index{Tmeta\+Detection@{Tmeta\+Detection}!T\+E\+ST@{T\+E\+ST}} +\index{T\+E\+ST@{T\+E\+ST}!Tmeta\+Detection@{Tmeta\+Detection}} +\subsubsection{\texorpdfstring{T\+E\+S\+T()}{TEST()}\hspace{0.1cm}{\footnotesize\ttfamily [4/4]}} +{\footnotesize\ttfamily Tmeta\+Detection\+::\+T\+E\+ST (\begin{DoxyParamCaption}\item[{Tmeta\+Detection}]{, }\item[{Toolkit}]{ }\end{DoxyParamCaption})} + + + +Definition at line 106 of file Tmeta\+Detection.\+cpp. + diff --git a/doc/latex/namespace_tmeta_typelist.tex b/doc/latex/namespace_tmeta_typelist.tex new file mode 100644 index 0000000..0ec3bed --- /dev/null +++ b/doc/latex/namespace_tmeta_typelist.tex @@ -0,0 +1,171 @@ +\hypertarget{namespace_tmeta_typelist}{}\section{Tmeta\+Typelist Namespace Reference} +\label{namespace_tmeta_typelist}\index{Tmeta\+Typelist@{Tmeta\+Typelist}} +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{struct_tmeta_typelist_1_1_f}{F}} +\item +struct \mbox{\hyperlink{struct_tmeta_typelist_1_1_identity}{Identity}} +\item +struct \mbox{\hyperlink{struct_tmeta_typelist_1_1_mfun_bin}{Mfun\+Bin}} +\item +struct \mbox{\hyperlink{struct_tmeta_typelist_1_1_mfun_bin__i}{Mfun\+Bin\+\_\+i}} +\item +struct \mbox{\hyperlink{struct_tmeta_typelist_1_1_mfun_un1}{Mfun\+Un1}} +\item +struct \mbox{\hyperlink{struct_tmeta_typelist_1_1_mfun_un2}{Mfun\+Un2}} +\item +struct \mbox{\hyperlink{struct_tmeta_typelist_1_1_pred__is_int}{Pred\+\_\+is\+Int}} +\item +struct \mbox{\hyperlink{struct_tmeta_typelist_1_1_pred__is_void}{Pred\+\_\+is\+Void}} +\end{DoxyCompactItemize} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{namespace_tmeta_typelist_a0efd5c09e08d72ca3dd8236e59ca0907}{T\+E\+ST}} (Tmeta\+Typelist, Invoke) +\item +\mbox{\hyperlink{namespace_tmeta_typelist_a487d8ae681bd99bee73bff152870b288}{T\+E\+ST}} (Tmeta\+Typelist, Basics) +\item +\mbox{\hyperlink{namespace_tmeta_typelist_a923b1c0b0dc401bd6360f86bea674239}{T\+E\+ST}} (Tmeta\+Typelist, Element\+Access) +\item +\mbox{\hyperlink{namespace_tmeta_typelist_a43c71fc11f99d862f2a965a36b7e9562}{T\+E\+ST}} (Tmeta\+Typelist, Concat) +\item +\mbox{\hyperlink{namespace_tmeta_typelist_aab40220bb9343d3b08715d741a87b813}{T\+E\+ST}} (Tmeta\+Typelist, Fold) +\item +\mbox{\hyperlink{namespace_tmeta_typelist_a346d379aa948955d431367fb850a58d5}{T\+E\+ST}} (Tmeta\+Typelist, Push\+Pop\+Reverse) +\item +\mbox{\hyperlink{namespace_tmeta_typelist_a716c04dce454d80e8d1258f357524513}{T\+E\+ST}} (Tmeta\+Typelist, Transform) +\item +\mbox{\hyperlink{namespace_tmeta_typelist_a7842447ab76734f253d3f9ac69ef6909}{T\+E\+ST}} (Tmeta\+Typelist, Find) +\item +\mbox{\hyperlink{namespace_tmeta_typelist_a973fce2375bc2b023f9c8fe8fdbdf1d8}{T\+E\+ST}} (Tmeta\+Typelist, Count) +\item +\mbox{\hyperlink{namespace_tmeta_typelist_ae822d411c84a042d49709373dd943af0}{T\+E\+ST}} (Tmeta\+Typelist, Filter) +\item +\mbox{\hyperlink{namespace_tmeta_typelist_ad468d62cfaa953d118cf11d2f59b81b5}{T\+E\+ST}} (Tmeta\+Typelist, Replace) +\item +\mbox{\hyperlink{namespace_tmeta_typelist_a26027622e87df6c393dfae7b42c3e061}{T\+E\+ST}} (Tmeta\+Typelist, All\+Any\+None) +\end{DoxyCompactItemize} + + +\subsection{Function Documentation} +\mbox{\Hypertarget{namespace_tmeta_typelist_a0efd5c09e08d72ca3dd8236e59ca0907}\label{namespace_tmeta_typelist_a0efd5c09e08d72ca3dd8236e59ca0907}} +\index{Tmeta\+Typelist@{Tmeta\+Typelist}!T\+E\+ST@{T\+E\+ST}} +\index{T\+E\+ST@{T\+E\+ST}!Tmeta\+Typelist@{Tmeta\+Typelist}} +\subsubsection{\texorpdfstring{T\+E\+S\+T()}{TEST()}\hspace{0.1cm}{\footnotesize\ttfamily [1/12]}} +{\footnotesize\ttfamily Tmeta\+Typelist\+::\+T\+E\+ST (\begin{DoxyParamCaption}\item[{Tmeta\+Typelist}]{, }\item[{Invoke}]{ }\end{DoxyParamCaption})} + + + +Definition at line 60 of file Tmeta\+Typelist.\+cpp. + +\mbox{\Hypertarget{namespace_tmeta_typelist_a487d8ae681bd99bee73bff152870b288}\label{namespace_tmeta_typelist_a487d8ae681bd99bee73bff152870b288}} +\index{Tmeta\+Typelist@{Tmeta\+Typelist}!T\+E\+ST@{T\+E\+ST}} +\index{T\+E\+ST@{T\+E\+ST}!Tmeta\+Typelist@{Tmeta\+Typelist}} +\subsubsection{\texorpdfstring{T\+E\+S\+T()}{TEST()}\hspace{0.1cm}{\footnotesize\ttfamily [2/12]}} +{\footnotesize\ttfamily Tmeta\+Typelist\+::\+T\+E\+ST (\begin{DoxyParamCaption}\item[{Tmeta\+Typelist}]{, }\item[{Basics}]{ }\end{DoxyParamCaption})} + + + +Definition at line 140 of file Tmeta\+Typelist.\+cpp. + +\mbox{\Hypertarget{namespace_tmeta_typelist_a923b1c0b0dc401bd6360f86bea674239}\label{namespace_tmeta_typelist_a923b1c0b0dc401bd6360f86bea674239}} +\index{Tmeta\+Typelist@{Tmeta\+Typelist}!T\+E\+ST@{T\+E\+ST}} +\index{T\+E\+ST@{T\+E\+ST}!Tmeta\+Typelist@{Tmeta\+Typelist}} +\subsubsection{\texorpdfstring{T\+E\+S\+T()}{TEST()}\hspace{0.1cm}{\footnotesize\ttfamily [3/12]}} +{\footnotesize\ttfamily Tmeta\+Typelist\+::\+T\+E\+ST (\begin{DoxyParamCaption}\item[{Tmeta\+Typelist}]{, }\item[{Element\+Access}]{ }\end{DoxyParamCaption})} + + + +Definition at line 165 of file Tmeta\+Typelist.\+cpp. + +\mbox{\Hypertarget{namespace_tmeta_typelist_a43c71fc11f99d862f2a965a36b7e9562}\label{namespace_tmeta_typelist_a43c71fc11f99d862f2a965a36b7e9562}} +\index{Tmeta\+Typelist@{Tmeta\+Typelist}!T\+E\+ST@{T\+E\+ST}} +\index{T\+E\+ST@{T\+E\+ST}!Tmeta\+Typelist@{Tmeta\+Typelist}} +\subsubsection{\texorpdfstring{T\+E\+S\+T()}{TEST()}\hspace{0.1cm}{\footnotesize\ttfamily [4/12]}} +{\footnotesize\ttfamily Tmeta\+Typelist\+::\+T\+E\+ST (\begin{DoxyParamCaption}\item[{Tmeta\+Typelist}]{, }\item[{Concat}]{ }\end{DoxyParamCaption})} + + + +Definition at line 180 of file Tmeta\+Typelist.\+cpp. + +\mbox{\Hypertarget{namespace_tmeta_typelist_aab40220bb9343d3b08715d741a87b813}\label{namespace_tmeta_typelist_aab40220bb9343d3b08715d741a87b813}} +\index{Tmeta\+Typelist@{Tmeta\+Typelist}!T\+E\+ST@{T\+E\+ST}} +\index{T\+E\+ST@{T\+E\+ST}!Tmeta\+Typelist@{Tmeta\+Typelist}} +\subsubsection{\texorpdfstring{T\+E\+S\+T()}{TEST()}\hspace{0.1cm}{\footnotesize\ttfamily [5/12]}} +{\footnotesize\ttfamily Tmeta\+Typelist\+::\+T\+E\+ST (\begin{DoxyParamCaption}\item[{Tmeta\+Typelist}]{, }\item[{Fold}]{ }\end{DoxyParamCaption})} + + + +Definition at line 194 of file Tmeta\+Typelist.\+cpp. + +\mbox{\Hypertarget{namespace_tmeta_typelist_a346d379aa948955d431367fb850a58d5}\label{namespace_tmeta_typelist_a346d379aa948955d431367fb850a58d5}} +\index{Tmeta\+Typelist@{Tmeta\+Typelist}!T\+E\+ST@{T\+E\+ST}} +\index{T\+E\+ST@{T\+E\+ST}!Tmeta\+Typelist@{Tmeta\+Typelist}} +\subsubsection{\texorpdfstring{T\+E\+S\+T()}{TEST()}\hspace{0.1cm}{\footnotesize\ttfamily [6/12]}} +{\footnotesize\ttfamily Tmeta\+Typelist\+::\+T\+E\+ST (\begin{DoxyParamCaption}\item[{Tmeta\+Typelist}]{, }\item[{Push\+Pop\+Reverse}]{ }\end{DoxyParamCaption})} + + + +Definition at line 214 of file Tmeta\+Typelist.\+cpp. + +\mbox{\Hypertarget{namespace_tmeta_typelist_a716c04dce454d80e8d1258f357524513}\label{namespace_tmeta_typelist_a716c04dce454d80e8d1258f357524513}} +\index{Tmeta\+Typelist@{Tmeta\+Typelist}!T\+E\+ST@{T\+E\+ST}} +\index{T\+E\+ST@{T\+E\+ST}!Tmeta\+Typelist@{Tmeta\+Typelist}} +\subsubsection{\texorpdfstring{T\+E\+S\+T()}{TEST()}\hspace{0.1cm}{\footnotesize\ttfamily [7/12]}} +{\footnotesize\ttfamily Tmeta\+Typelist\+::\+T\+E\+ST (\begin{DoxyParamCaption}\item[{Tmeta\+Typelist}]{, }\item[{Transform}]{ }\end{DoxyParamCaption})} + + + +Definition at line 232 of file Tmeta\+Typelist.\+cpp. + +\mbox{\Hypertarget{namespace_tmeta_typelist_a7842447ab76734f253d3f9ac69ef6909}\label{namespace_tmeta_typelist_a7842447ab76734f253d3f9ac69ef6909}} +\index{Tmeta\+Typelist@{Tmeta\+Typelist}!T\+E\+ST@{T\+E\+ST}} +\index{T\+E\+ST@{T\+E\+ST}!Tmeta\+Typelist@{Tmeta\+Typelist}} +\subsubsection{\texorpdfstring{T\+E\+S\+T()}{TEST()}\hspace{0.1cm}{\footnotesize\ttfamily [8/12]}} +{\footnotesize\ttfamily Tmeta\+Typelist\+::\+T\+E\+ST (\begin{DoxyParamCaption}\item[{Tmeta\+Typelist}]{, }\item[{Find}]{ }\end{DoxyParamCaption})} + + + +Definition at line 250 of file Tmeta\+Typelist.\+cpp. + +\mbox{\Hypertarget{namespace_tmeta_typelist_a973fce2375bc2b023f9c8fe8fdbdf1d8}\label{namespace_tmeta_typelist_a973fce2375bc2b023f9c8fe8fdbdf1d8}} +\index{Tmeta\+Typelist@{Tmeta\+Typelist}!T\+E\+ST@{T\+E\+ST}} +\index{T\+E\+ST@{T\+E\+ST}!Tmeta\+Typelist@{Tmeta\+Typelist}} +\subsubsection{\texorpdfstring{T\+E\+S\+T()}{TEST()}\hspace{0.1cm}{\footnotesize\ttfamily [9/12]}} +{\footnotesize\ttfamily Tmeta\+Typelist\+::\+T\+E\+ST (\begin{DoxyParamCaption}\item[{Tmeta\+Typelist}]{, }\item[{Count}]{ }\end{DoxyParamCaption})} + + + +Definition at line 269 of file Tmeta\+Typelist.\+cpp. + +\mbox{\Hypertarget{namespace_tmeta_typelist_ae822d411c84a042d49709373dd943af0}\label{namespace_tmeta_typelist_ae822d411c84a042d49709373dd943af0}} +\index{Tmeta\+Typelist@{Tmeta\+Typelist}!T\+E\+ST@{T\+E\+ST}} +\index{T\+E\+ST@{T\+E\+ST}!Tmeta\+Typelist@{Tmeta\+Typelist}} +\subsubsection{\texorpdfstring{T\+E\+S\+T()}{TEST()}\hspace{0.1cm}{\footnotesize\ttfamily [10/12]}} +{\footnotesize\ttfamily Tmeta\+Typelist\+::\+T\+E\+ST (\begin{DoxyParamCaption}\item[{Tmeta\+Typelist}]{, }\item[{Filter}]{ }\end{DoxyParamCaption})} + + + +Definition at line 281 of file Tmeta\+Typelist.\+cpp. + +\mbox{\Hypertarget{namespace_tmeta_typelist_ad468d62cfaa953d118cf11d2f59b81b5}\label{namespace_tmeta_typelist_ad468d62cfaa953d118cf11d2f59b81b5}} +\index{Tmeta\+Typelist@{Tmeta\+Typelist}!T\+E\+ST@{T\+E\+ST}} +\index{T\+E\+ST@{T\+E\+ST}!Tmeta\+Typelist@{Tmeta\+Typelist}} +\subsubsection{\texorpdfstring{T\+E\+S\+T()}{TEST()}\hspace{0.1cm}{\footnotesize\ttfamily [11/12]}} +{\footnotesize\ttfamily Tmeta\+Typelist\+::\+T\+E\+ST (\begin{DoxyParamCaption}\item[{Tmeta\+Typelist}]{, }\item[{Replace}]{ }\end{DoxyParamCaption})} + + + +Definition at line 293 of file Tmeta\+Typelist.\+cpp. + +\mbox{\Hypertarget{namespace_tmeta_typelist_a26027622e87df6c393dfae7b42c3e061}\label{namespace_tmeta_typelist_a26027622e87df6c393dfae7b42c3e061}} +\index{Tmeta\+Typelist@{Tmeta\+Typelist}!T\+E\+ST@{T\+E\+ST}} +\index{T\+E\+ST@{T\+E\+ST}!Tmeta\+Typelist@{Tmeta\+Typelist}} +\subsubsection{\texorpdfstring{T\+E\+S\+T()}{TEST()}\hspace{0.1cm}{\footnotesize\ttfamily [12/12]}} +{\footnotesize\ttfamily Tmeta\+Typelist\+::\+T\+E\+ST (\begin{DoxyParamCaption}\item[{Tmeta\+Typelist}]{, }\item[{All\+Any\+None}]{ }\end{DoxyParamCaption})} + + + +Definition at line 308 of file Tmeta\+Typelist.\+cpp. + diff --git a/doc/latex/namespaceproto2.tex b/doc/latex/namespaceproto2.tex new file mode 100644 index 0000000..026b3f6 --- /dev/null +++ b/doc/latex/namespaceproto2.tex @@ -0,0 +1,2 @@ +\hypertarget{namespaceproto2}{}\section{proto2 Namespace Reference} +\label{namespaceproto2}\index{proto2@{proto2}} diff --git a/doc/latex/namespaces.tex b/doc/latex/namespaces.tex new file mode 100644 index 0000000..80e104f --- /dev/null +++ b/doc/latex/namespaces.tex @@ -0,0 +1,53 @@ +\section{Namespace List} +Here is a list of all namespaces with brief descriptions\+:\begin{DoxyCompactList} +\item\contentsline{section}{\mbox{\hyperlink{namespaceproto2}{proto2}} }{\pageref{namespaceproto2}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespacetest__1w}{test\+\_\+1w}} }{\pageref{namespacetest__1w}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespacetest__concepts}{test\+\_\+concepts}} }{\pageref{namespacetest__concepts}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespacetest__i2c}{test\+\_\+i2c}} }{\pageref{namespacetest__i2c}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespacetest__meta}{test\+\_\+meta}} }{\pageref{namespacetest__meta}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespacetest__ostream__dev}{test\+\_\+ostream\+\_\+dev}} }{\pageref{namespacetest__ostream__dev}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespacetest__spi}{test\+\_\+spi}} }{\pageref{namespacetest__spi}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespacetesting}{testing}} }{\pageref{namespacetesting}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespacetesting_1_1internal}{testing\+::internal}} }{\pageref{namespacetesting_1_1internal}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespacetesting_1_1internal2}{testing\+::internal2}} }{\pageref{namespacetesting_1_1internal2}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespacetesting_1_1internal_1_1edit__distance}{testing\+::internal\+::edit\+\_\+distance}} }{\pageref{namespacetesting_1_1internal_1_1edit__distance}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespacetesting_1_1internal_1_1posix}{testing\+::internal\+::posix}} }{\pageref{namespacetesting_1_1internal_1_1posix}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespacetesting__internal}{testing\+\_\+internal}} }{\pageref{namespacetesting__internal}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespace_tmeta_basic}{Tmeta\+Basic}} }{\pageref{namespace_tmeta_basic}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespace_tmeta_detection}{Tmeta\+Detection}} }{\pageref{namespace_tmeta_detection}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespace_tmeta_typelist}{Tmeta\+Typelist}} }{\pageref{namespace_tmeta_typelist}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespaceutl}{utl}} \\*S\+TL\textquotesingle{}s core language concepts }{\pageref{namespaceutl}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespaceutl_1_1__1wire__i__det}{utl\+::\+\_\+1wire\+\_\+i\+\_\+det}} }{\pageref{namespaceutl_1_1__1wire__i__det}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespaceutl_1_1common__impl}{utl\+::common\+\_\+impl}} }{\pageref{namespaceutl_1_1common__impl}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespaceutl_1_1detail}{utl\+::detail}} }{\pageref{namespaceutl_1_1detail}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespaceutl_1_1details}{utl\+::details}} }{\pageref{namespaceutl_1_1details}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespaceutl_1_1i2c__i__details}{utl\+::i2c\+\_\+i\+\_\+details}} }{\pageref{namespaceutl_1_1i2c__i__details}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespaceutl_1_1idx__dev__details}{utl\+::idx\+\_\+dev\+\_\+details}} }{\pageref{namespaceutl_1_1idx__dev__details}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespaceutl_1_1idxdev__it__details}{utl\+::idxdev\+\_\+it\+\_\+details}} }{\pageref{namespaceutl_1_1idxdev__it__details}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespaceutl_1_1in__dev__details}{utl\+::in\+\_\+dev\+\_\+details}} }{\pageref{namespaceutl_1_1in__dev__details}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespaceutl_1_1inbuf__dev__details}{utl\+::inbuf\+\_\+dev\+\_\+details}} }{\pageref{namespaceutl_1_1inbuf__dev__details}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespaceutl_1_1indev__it__details}{utl\+::indev\+\_\+it\+\_\+details}} }{\pageref{namespaceutl_1_1indev__it__details}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespaceutl_1_1meta}{utl\+::meta}} }{\pageref{namespaceutl_1_1meta}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespaceutl_1_1meta_1_1apply__impl}{utl\+::meta\+::apply\+\_\+impl}} }{\pageref{namespaceutl_1_1meta_1_1apply__impl}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespaceutl_1_1meta_1_1at__impl}{utl\+::meta\+::at\+\_\+impl}} }{\pageref{namespaceutl_1_1meta_1_1at__impl}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespaceutl_1_1meta_1_1back__impl}{utl\+::meta\+::back\+\_\+impl}} }{\pageref{namespaceutl_1_1meta_1_1back__impl}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespaceutl_1_1meta_1_1cat__impl}{utl\+::meta\+::cat\+\_\+impl}} }{\pageref{namespaceutl_1_1meta_1_1cat__impl}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespaceutl_1_1meta_1_1count__if__impl}{utl\+::meta\+::count\+\_\+if\+\_\+impl}} }{\pageref{namespaceutl_1_1meta_1_1count__if__impl}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespaceutl_1_1meta_1_1detail}{utl\+::meta\+::detail}} }{\pageref{namespaceutl_1_1meta_1_1detail}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespaceutl_1_1meta_1_1filter__impl}{utl\+::meta\+::filter\+\_\+impl}} }{\pageref{namespaceutl_1_1meta_1_1filter__impl}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespaceutl_1_1meta_1_1find__if__impl}{utl\+::meta\+::find\+\_\+if\+\_\+impl}} }{\pageref{namespaceutl_1_1meta_1_1find__if__impl}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespaceutl_1_1meta_1_1fold__impl}{utl\+::meta\+::fold\+\_\+impl}} }{\pageref{namespaceutl_1_1meta_1_1fold__impl}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespaceutl_1_1meta_1_1front__impl}{utl\+::meta\+::front\+\_\+impl}} }{\pageref{namespaceutl_1_1meta_1_1front__impl}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespaceutl_1_1meta_1_1pop__back__impl}{utl\+::meta\+::pop\+\_\+back\+\_\+impl}} }{\pageref{namespaceutl_1_1meta_1_1pop__back__impl}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespaceutl_1_1meta_1_1pop__front__impl}{utl\+::meta\+::pop\+\_\+front\+\_\+impl}} }{\pageref{namespaceutl_1_1meta_1_1pop__front__impl}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespaceutl_1_1meta_1_1replace__if__impl}{utl\+::meta\+::replace\+\_\+if\+\_\+impl}} }{\pageref{namespaceutl_1_1meta_1_1replace__if__impl}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespaceutl_1_1meta_1_1rev__fold__impl}{utl\+::meta\+::rev\+\_\+fold\+\_\+impl}} }{\pageref{namespaceutl_1_1meta_1_1rev__fold__impl}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespaceutl_1_1meta_1_1reverse__impl}{utl\+::meta\+::reverse\+\_\+impl}} }{\pageref{namespaceutl_1_1meta_1_1reverse__impl}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespaceutl_1_1meta_1_1seek__if__impl}{utl\+::meta\+::seek\+\_\+if\+\_\+impl}} }{\pageref{namespaceutl_1_1meta_1_1seek__if__impl}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespaceutl_1_1meta_1_1transform__impl}{utl\+::meta\+::transform\+\_\+impl}} }{\pageref{namespaceutl_1_1meta_1_1transform__impl}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespaceutl_1_1meta_1_1transform__lazy__impl}{utl\+::meta\+::transform\+\_\+lazy\+\_\+impl}} }{\pageref{namespaceutl_1_1meta_1_1transform__lazy__impl}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespaceutl_1_1out__dev__details}{utl\+::out\+\_\+dev\+\_\+details}} }{\pageref{namespaceutl_1_1out__dev__details}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespaceutl_1_1outdev__it__details}{utl\+::outdev\+\_\+it\+\_\+details}} }{\pageref{namespaceutl_1_1outdev__it__details}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespaceutl_1_1spi}{utl\+::spi}} \\*Abstract base class for spi bus }{\pageref{namespaceutl_1_1spi}}{} +\item\contentsline{section}{\mbox{\hyperlink{namespaceutl_1_1spi__i__details}{utl\+::spi\+\_\+i\+\_\+details}} }{\pageref{namespaceutl_1_1spi__i__details}}{} +\end{DoxyCompactList} diff --git a/doc/latex/namespacetest__1w.tex b/doc/latex/namespacetest__1w.tex new file mode 100644 index 0000000..d921530 --- /dev/null +++ b/doc/latex/namespacetest__1w.tex @@ -0,0 +1,57 @@ +\hypertarget{namespacetest__1w}{}\section{test\+\_\+1w Namespace Reference} +\label{namespacetest__1w}\index{test\+\_\+1w@{test\+\_\+1w}} +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +class \mbox{\hyperlink{classtest__1w_1_1_o_w}{OW}} +\item +class \mbox{\hyperlink{classtest__1w_1_1_test__1w__impl}{Test\+\_\+1w\+\_\+impl}} +\end{DoxyCompactItemize} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{namespacetest__1w_a91bee95e2ca23e750b4a33479aea8029}{T\+E\+S\+T\+\_\+F}} (\mbox{\hyperlink{classtest__1w_1_1_test__1w__impl}{Test\+\_\+1w\+\_\+impl}}, Test\+Concept) +\item +\mbox{\hyperlink{namespacetest__1w_a2e7d40e0befd264af7e7b6794b447555}{T\+E\+S\+T\+\_\+F}} (\mbox{\hyperlink{classtest__1w_1_1_test__1w__impl}{Test\+\_\+1w\+\_\+impl}}, Test\+Construction) +\item +\mbox{\hyperlink{namespacetest__1w_ab5d5a9f17f851deeb0058589c4bdbdfc}{T\+E\+S\+T\+\_\+F}} (\mbox{\hyperlink{classtest__1w_1_1_test__1w__impl}{Test\+\_\+1w\+\_\+impl}}, Test\+Functionality) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\begin{DoxyWarning}{Warning} +This is not right way of testing communication interfaces. We have to implement a Mock object to simulate the slave\textquotesingle{}s behavior. Until then we have the following. +\end{DoxyWarning} + + +\subsection{Function Documentation} +\mbox{\Hypertarget{namespacetest__1w_a91bee95e2ca23e750b4a33479aea8029}\label{namespacetest__1w_a91bee95e2ca23e750b4a33479aea8029}} +\index{test\+\_\+1w@{test\+\_\+1w}!T\+E\+S\+T\+\_\+F@{T\+E\+S\+T\+\_\+F}} +\index{T\+E\+S\+T\+\_\+F@{T\+E\+S\+T\+\_\+F}!test\+\_\+1w@{test\+\_\+1w}} +\subsubsection{\texorpdfstring{T\+E\+S\+T\+\_\+\+F()}{TEST\_F()}\hspace{0.1cm}{\footnotesize\ttfamily [1/3]}} +{\footnotesize\ttfamily test\+\_\+1w\+::\+T\+E\+S\+T\+\_\+F (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classtest__1w_1_1_test__1w__impl}{Test\+\_\+1w\+\_\+impl}}}]{, }\item[{Test\+Concept}]{ }\end{DoxyParamCaption})} + + + +Definition at line 50 of file test\+\_\+1w\+\_\+impl.\+cpp. + +\mbox{\Hypertarget{namespacetest__1w_a2e7d40e0befd264af7e7b6794b447555}\label{namespacetest__1w_a2e7d40e0befd264af7e7b6794b447555}} +\index{test\+\_\+1w@{test\+\_\+1w}!T\+E\+S\+T\+\_\+F@{T\+E\+S\+T\+\_\+F}} +\index{T\+E\+S\+T\+\_\+F@{T\+E\+S\+T\+\_\+F}!test\+\_\+1w@{test\+\_\+1w}} +\subsubsection{\texorpdfstring{T\+E\+S\+T\+\_\+\+F()}{TEST\_F()}\hspace{0.1cm}{\footnotesize\ttfamily [2/3]}} +{\footnotesize\ttfamily test\+\_\+1w\+::\+T\+E\+S\+T\+\_\+F (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classtest__1w_1_1_test__1w__impl}{Test\+\_\+1w\+\_\+impl}}}]{, }\item[{Test\+Construction}]{ }\end{DoxyParamCaption})} + + + +Definition at line 54 of file test\+\_\+1w\+\_\+impl.\+cpp. + +\mbox{\Hypertarget{namespacetest__1w_ab5d5a9f17f851deeb0058589c4bdbdfc}\label{namespacetest__1w_ab5d5a9f17f851deeb0058589c4bdbdfc}} +\index{test\+\_\+1w@{test\+\_\+1w}!T\+E\+S\+T\+\_\+F@{T\+E\+S\+T\+\_\+F}} +\index{T\+E\+S\+T\+\_\+F@{T\+E\+S\+T\+\_\+F}!test\+\_\+1w@{test\+\_\+1w}} +\subsubsection{\texorpdfstring{T\+E\+S\+T\+\_\+\+F()}{TEST\_F()}\hspace{0.1cm}{\footnotesize\ttfamily [3/3]}} +{\footnotesize\ttfamily test\+\_\+1w\+::\+T\+E\+S\+T\+\_\+F (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classtest__1w_1_1_test__1w__impl}{Test\+\_\+1w\+\_\+impl}}}]{, }\item[{Test\+Functionality}]{ }\end{DoxyParamCaption})} + + + +Definition at line 58 of file test\+\_\+1w\+\_\+impl.\+cpp. + diff --git a/doc/latex/namespacetest__concepts.tex b/doc/latex/namespacetest__concepts.tex new file mode 100644 index 0000000..4172cb3 --- /dev/null +++ b/doc/latex/namespacetest__concepts.tex @@ -0,0 +1,315 @@ +\hypertarget{namespacetest__concepts}{}\section{test\+\_\+concepts Namespace Reference} +\label{namespacetest__concepts}\index{test\+\_\+concepts@{test\+\_\+concepts}} +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structtest__concepts_1_1_a}{A}} +\item +struct \mbox{\hyperlink{structtest__concepts_1_1_b}{B}} +\item +class \mbox{\hyperlink{classtest__concepts_1_1_base}{Base}} +\item +class \mbox{\hyperlink{classtest__concepts_1_1_derived1}{Derived1}} +\item +class \mbox{\hyperlink{classtest__concepts_1_1_derived2}{Derived2}} +\item +struct \mbox{\hyperlink{structtest__concepts_1_1_empty}{Empty}} +\item +struct \mbox{\hyperlink{structtest__concepts_1_1_have_copy_and_move}{Have\+Copy\+And\+Move}} +\item +struct \mbox{\hyperlink{structtest__concepts_1_1_have_only_copy}{Have\+Only\+Copy}} +\item +struct \mbox{\hyperlink{structtest__concepts_1_1_have_only_move}{Have\+Only\+Move}} +\item +class \mbox{\hyperlink{classtest__concepts_1_1_have_operator_base}{Have\+Operator\+Base}} +\item +class \mbox{\hyperlink{classtest__concepts_1_1_have_perfect_forwarding}{Have\+Perfect\+Forwarding}} +\item +struct \mbox{\hyperlink{structtest__concepts_1_1_incr}{Incr}} +\item +struct \mbox{\hyperlink{structtest__concepts_1_1_inv}{Inv}} +\item +struct \mbox{\hyperlink{structtest__concepts_1_1_pred}{Pred}} +\end{DoxyCompactItemize} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +bool \mbox{\hyperlink{namespacetest__concepts_ae09100ab70ff8d9779ab82a64b32c379}{operator==}} (const \mbox{\hyperlink{structtest__concepts_1_1_a}{A}} \&l, const \mbox{\hyperlink{structtest__concepts_1_1_a}{A}} \&r) +\item +bool \mbox{\hyperlink{namespacetest__concepts_aa7a67208d83b1c5bfe71be98a508b2a2}{operator!=}} (const \mbox{\hyperlink{structtest__concepts_1_1_a}{A}} \&l, const \mbox{\hyperlink{structtest__concepts_1_1_a}{A}} \&r) +\item +bool \mbox{\hyperlink{namespacetest__concepts_a2bd289c839a61f3a1a4a993b8d19c252}{operator==}} (const \mbox{\hyperlink{structtest__concepts_1_1_b}{B}} \&l, const \mbox{\hyperlink{structtest__concepts_1_1_b}{B}} \&r) +\item +bool \mbox{\hyperlink{namespacetest__concepts_a5020d93acd11bc3ef58376d39742f252}{operator!=}} (const \mbox{\hyperlink{structtest__concepts_1_1_b}{B}} \&l, const \mbox{\hyperlink{structtest__concepts_1_1_b}{B}} \&r) +\item +bool \mbox{\hyperlink{namespacetest__concepts_a7df33a6fa1bf9b0e019c754ad8130861}{operator$<$}} (const \mbox{\hyperlink{structtest__concepts_1_1_b}{B}} \&l, const \mbox{\hyperlink{structtest__concepts_1_1_b}{B}} \&r) +\item +bool \mbox{\hyperlink{namespacetest__concepts_a0a84bdf10913e789466806c544c3cd23}{operator$<$=}} (const \mbox{\hyperlink{structtest__concepts_1_1_b}{B}} \&l, const \mbox{\hyperlink{structtest__concepts_1_1_b}{B}} \&r) +\item +bool \mbox{\hyperlink{namespacetest__concepts_a6c2d2768666e0eb1c5523345b8925e32}{operator$>$}} (const \mbox{\hyperlink{structtest__concepts_1_1_b}{B}} \&l, const \mbox{\hyperlink{structtest__concepts_1_1_b}{B}} \&r) +\item +bool \mbox{\hyperlink{namespacetest__concepts_aa621df5520d29f172fa1cef1d286936a}{operator$>$=}} (const \mbox{\hyperlink{structtest__concepts_1_1_b}{B}} \&l, const \mbox{\hyperlink{structtest__concepts_1_1_b}{B}} \&r) +\item +\mbox{\hyperlink{namespacetest__concepts_ab245465c002e0ed0837b91aa4c88a349}{T\+E\+ST}} (T\+Concepts, Same) +\item +\mbox{\hyperlink{namespacetest__concepts_a5d2e53efce2d5c77999eb133966f898b}{T\+E\+ST}} (T\+Concepts, Derived\+From) +\item +\mbox{\hyperlink{namespacetest__concepts_ae54bd81fa0239d5d914483314e328e4e}{T\+E\+ST}} (T\+Concepts, Convertible\+To) +\item +\mbox{\hyperlink{namespacetest__concepts_a8be0d791fe0ee2055d58940e360ff8ce}{T\+E\+ST}} (T\+Concepts, Common\+Reference) +\item +\mbox{\hyperlink{namespacetest__concepts_ace7dd5dcd339ad2bf5fd7b08b582ec7a}{T\+E\+ST}} (T\+Concepts, Integral) +\item +\mbox{\hyperlink{namespacetest__concepts_a1259dbf85ef361ae709e8b7d08ad0c8a}{T\+E\+ST}} (T\+Concepts, Assignable) +\item +\mbox{\hyperlink{namespacetest__concepts_abe06b1186f30147f38171a2f5e95920e}{T\+E\+ST}} (T\+Concepts, Swappable) +\item +\mbox{\hyperlink{namespacetest__concepts_af3f33066823dea74a24d89399fa26adb}{T\+E\+ST}} (T\+Concepts, Constructible) +\item +\mbox{\hyperlink{namespacetest__concepts_a169b771eff69e1e3086857d88a28b239}{T\+E\+ST}} (T\+Concepts, Movable\+Copyable) +\item +\mbox{\hyperlink{namespacetest__concepts_a0f4ad0aba9c032d90024e839f2d9f380}{T\+E\+ST}} (T\+Concepts, Boolean) +\item +\mbox{\hyperlink{namespacetest__concepts_a8f88e84cffb84123f470858c5c28c4fb}{T\+E\+ST}} (T\+Concepts, Comparable) +\item +\mbox{\hyperlink{namespacetest__concepts_a9f6330d88c4d4c26e80f6c1b5546ea51}{T\+E\+ST}} (T\+Concepts, Types) +\item +\mbox{\hyperlink{namespacetest__concepts_a0575232afeb3a1aed915d6de6e63a328}{T\+E\+ST}} (T\+Concepts, Callable) +\item +int \mbox{\hyperlink{namespacetest__concepts_adb4992f432f2a8cfed2c5bfa4bc5adaf}{type\+\_\+printer}} (int $\ast$i) +\item +\mbox{\hyperlink{namespacetest__concepts_acef6bf32c3066c6c73a1055184a61c08}{T\+E\+ST}} (T\+Concepts, Iterators) +\end{DoxyCompactItemize} + + +\subsection{Function Documentation} +\mbox{\Hypertarget{namespacetest__concepts_aa7a67208d83b1c5bfe71be98a508b2a2}\label{namespacetest__concepts_aa7a67208d83b1c5bfe71be98a508b2a2}} +\index{test\+\_\+concepts@{test\+\_\+concepts}!operator"!=@{operator"!=}} +\index{operator"!=@{operator"!=}!test\+\_\+concepts@{test\+\_\+concepts}} +\subsubsection{\texorpdfstring{operator"!=()}{operator!=()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily bool test\+\_\+concepts\+::operator!= (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structtest__concepts_1_1_a}{A}} \&}]{l, }\item[{const \mbox{\hyperlink{structtest__concepts_1_1_a}{A}} \&}]{r }\end{DoxyParamCaption})} + + + +Definition at line 70 of file T\+Concepts.\+cpp. + +\mbox{\Hypertarget{namespacetest__concepts_a5020d93acd11bc3ef58376d39742f252}\label{namespacetest__concepts_a5020d93acd11bc3ef58376d39742f252}} +\index{test\+\_\+concepts@{test\+\_\+concepts}!operator"!=@{operator"!=}} +\index{operator"!=@{operator"!=}!test\+\_\+concepts@{test\+\_\+concepts}} +\subsubsection{\texorpdfstring{operator"!=()}{operator!=()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily bool test\+\_\+concepts\+::operator!= (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structtest__concepts_1_1_b}{B}} \&}]{l, }\item[{const \mbox{\hyperlink{structtest__concepts_1_1_b}{B}} \&}]{r }\end{DoxyParamCaption})} + + + +Definition at line 82 of file T\+Concepts.\+cpp. + +\mbox{\Hypertarget{namespacetest__concepts_a7df33a6fa1bf9b0e019c754ad8130861}\label{namespacetest__concepts_a7df33a6fa1bf9b0e019c754ad8130861}} +\index{test\+\_\+concepts@{test\+\_\+concepts}!operator$<$@{operator$<$}} +\index{operator$<$@{operator$<$}!test\+\_\+concepts@{test\+\_\+concepts}} +\subsubsection{\texorpdfstring{operator$<$()}{operator<()}} +{\footnotesize\ttfamily bool test\+\_\+concepts\+::operator$<$ (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structtest__concepts_1_1_b}{B}} \&}]{l, }\item[{const \mbox{\hyperlink{structtest__concepts_1_1_b}{B}} \&}]{r }\end{DoxyParamCaption})} + + + +Definition at line 83 of file T\+Concepts.\+cpp. + +\mbox{\Hypertarget{namespacetest__concepts_a0a84bdf10913e789466806c544c3cd23}\label{namespacetest__concepts_a0a84bdf10913e789466806c544c3cd23}} +\index{test\+\_\+concepts@{test\+\_\+concepts}!operator$<$=@{operator$<$=}} +\index{operator$<$=@{operator$<$=}!test\+\_\+concepts@{test\+\_\+concepts}} +\subsubsection{\texorpdfstring{operator$<$=()}{operator<=()}} +{\footnotesize\ttfamily bool test\+\_\+concepts\+::operator$<$= (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structtest__concepts_1_1_b}{B}} \&}]{l, }\item[{const \mbox{\hyperlink{structtest__concepts_1_1_b}{B}} \&}]{r }\end{DoxyParamCaption})} + + + +Definition at line 84 of file T\+Concepts.\+cpp. + +\mbox{\Hypertarget{namespacetest__concepts_ae09100ab70ff8d9779ab82a64b32c379}\label{namespacetest__concepts_ae09100ab70ff8d9779ab82a64b32c379}} +\index{test\+\_\+concepts@{test\+\_\+concepts}!operator==@{operator==}} +\index{operator==@{operator==}!test\+\_\+concepts@{test\+\_\+concepts}} +\subsubsection{\texorpdfstring{operator==()}{operator==()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily bool test\+\_\+concepts\+::operator== (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structtest__concepts_1_1_a}{A}} \&}]{l, }\item[{const \mbox{\hyperlink{structtest__concepts_1_1_a}{A}} \&}]{r }\end{DoxyParamCaption})} + + + +Definition at line 69 of file T\+Concepts.\+cpp. + +\mbox{\Hypertarget{namespacetest__concepts_a2bd289c839a61f3a1a4a993b8d19c252}\label{namespacetest__concepts_a2bd289c839a61f3a1a4a993b8d19c252}} +\index{test\+\_\+concepts@{test\+\_\+concepts}!operator==@{operator==}} +\index{operator==@{operator==}!test\+\_\+concepts@{test\+\_\+concepts}} +\subsubsection{\texorpdfstring{operator==()}{operator==()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily bool test\+\_\+concepts\+::operator== (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structtest__concepts_1_1_b}{B}} \&}]{l, }\item[{const \mbox{\hyperlink{structtest__concepts_1_1_b}{B}} \&}]{r }\end{DoxyParamCaption})} + + + +Definition at line 81 of file T\+Concepts.\+cpp. + +\mbox{\Hypertarget{namespacetest__concepts_a6c2d2768666e0eb1c5523345b8925e32}\label{namespacetest__concepts_a6c2d2768666e0eb1c5523345b8925e32}} +\index{test\+\_\+concepts@{test\+\_\+concepts}!operator$>$@{operator$>$}} +\index{operator$>$@{operator$>$}!test\+\_\+concepts@{test\+\_\+concepts}} +\subsubsection{\texorpdfstring{operator$>$()}{operator>()}} +{\footnotesize\ttfamily bool test\+\_\+concepts\+::operator$>$ (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structtest__concepts_1_1_b}{B}} \&}]{l, }\item[{const \mbox{\hyperlink{structtest__concepts_1_1_b}{B}} \&}]{r }\end{DoxyParamCaption})} + + + +Definition at line 85 of file T\+Concepts.\+cpp. + +\mbox{\Hypertarget{namespacetest__concepts_aa621df5520d29f172fa1cef1d286936a}\label{namespacetest__concepts_aa621df5520d29f172fa1cef1d286936a}} +\index{test\+\_\+concepts@{test\+\_\+concepts}!operator$>$=@{operator$>$=}} +\index{operator$>$=@{operator$>$=}!test\+\_\+concepts@{test\+\_\+concepts}} +\subsubsection{\texorpdfstring{operator$>$=()}{operator>=()}} +{\footnotesize\ttfamily bool test\+\_\+concepts\+::operator$>$= (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structtest__concepts_1_1_b}{B}} \&}]{l, }\item[{const \mbox{\hyperlink{structtest__concepts_1_1_b}{B}} \&}]{r }\end{DoxyParamCaption})} + + + +Definition at line 86 of file T\+Concepts.\+cpp. + +\mbox{\Hypertarget{namespacetest__concepts_ab245465c002e0ed0837b91aa4c88a349}\label{namespacetest__concepts_ab245465c002e0ed0837b91aa4c88a349}} +\index{test\+\_\+concepts@{test\+\_\+concepts}!T\+E\+ST@{T\+E\+ST}} +\index{T\+E\+ST@{T\+E\+ST}!test\+\_\+concepts@{test\+\_\+concepts}} +\subsubsection{\texorpdfstring{T\+E\+S\+T()}{TEST()}\hspace{0.1cm}{\footnotesize\ttfamily [1/14]}} +{\footnotesize\ttfamily test\+\_\+concepts\+::\+T\+E\+ST (\begin{DoxyParamCaption}\item[{T\+Concepts}]{, }\item[{Same}]{ }\end{DoxyParamCaption})} + + + +Definition at line 89 of file T\+Concepts.\+cpp. + +\mbox{\Hypertarget{namespacetest__concepts_a5d2e53efce2d5c77999eb133966f898b}\label{namespacetest__concepts_a5d2e53efce2d5c77999eb133966f898b}} +\index{test\+\_\+concepts@{test\+\_\+concepts}!T\+E\+ST@{T\+E\+ST}} +\index{T\+E\+ST@{T\+E\+ST}!test\+\_\+concepts@{test\+\_\+concepts}} +\subsubsection{\texorpdfstring{T\+E\+S\+T()}{TEST()}\hspace{0.1cm}{\footnotesize\ttfamily [2/14]}} +{\footnotesize\ttfamily test\+\_\+concepts\+::\+T\+E\+ST (\begin{DoxyParamCaption}\item[{T\+Concepts}]{, }\item[{Derived\+From}]{ }\end{DoxyParamCaption})} + + + +Definition at line 99 of file T\+Concepts.\+cpp. + +\mbox{\Hypertarget{namespacetest__concepts_ae54bd81fa0239d5d914483314e328e4e}\label{namespacetest__concepts_ae54bd81fa0239d5d914483314e328e4e}} +\index{test\+\_\+concepts@{test\+\_\+concepts}!T\+E\+ST@{T\+E\+ST}} +\index{T\+E\+ST@{T\+E\+ST}!test\+\_\+concepts@{test\+\_\+concepts}} +\subsubsection{\texorpdfstring{T\+E\+S\+T()}{TEST()}\hspace{0.1cm}{\footnotesize\ttfamily [3/14]}} +{\footnotesize\ttfamily test\+\_\+concepts\+::\+T\+E\+ST (\begin{DoxyParamCaption}\item[{T\+Concepts}]{, }\item[{Convertible\+To}]{ }\end{DoxyParamCaption})} + + + +Definition at line 109 of file T\+Concepts.\+cpp. + +\mbox{\Hypertarget{namespacetest__concepts_a8be0d791fe0ee2055d58940e360ff8ce}\label{namespacetest__concepts_a8be0d791fe0ee2055d58940e360ff8ce}} +\index{test\+\_\+concepts@{test\+\_\+concepts}!T\+E\+ST@{T\+E\+ST}} +\index{T\+E\+ST@{T\+E\+ST}!test\+\_\+concepts@{test\+\_\+concepts}} +\subsubsection{\texorpdfstring{T\+E\+S\+T()}{TEST()}\hspace{0.1cm}{\footnotesize\ttfamily [4/14]}} +{\footnotesize\ttfamily test\+\_\+concepts\+::\+T\+E\+ST (\begin{DoxyParamCaption}\item[{T\+Concepts}]{, }\item[{Common\+Reference}]{ }\end{DoxyParamCaption})} + + + +Definition at line 119 of file T\+Concepts.\+cpp. + +\mbox{\Hypertarget{namespacetest__concepts_ace7dd5dcd339ad2bf5fd7b08b582ec7a}\label{namespacetest__concepts_ace7dd5dcd339ad2bf5fd7b08b582ec7a}} +\index{test\+\_\+concepts@{test\+\_\+concepts}!T\+E\+ST@{T\+E\+ST}} +\index{T\+E\+ST@{T\+E\+ST}!test\+\_\+concepts@{test\+\_\+concepts}} +\subsubsection{\texorpdfstring{T\+E\+S\+T()}{TEST()}\hspace{0.1cm}{\footnotesize\ttfamily [5/14]}} +{\footnotesize\ttfamily test\+\_\+concepts\+::\+T\+E\+ST (\begin{DoxyParamCaption}\item[{T\+Concepts}]{, }\item[{Integral}]{ }\end{DoxyParamCaption})} + + + +Definition at line 136 of file T\+Concepts.\+cpp. + +\mbox{\Hypertarget{namespacetest__concepts_a1259dbf85ef361ae709e8b7d08ad0c8a}\label{namespacetest__concepts_a1259dbf85ef361ae709e8b7d08ad0c8a}} +\index{test\+\_\+concepts@{test\+\_\+concepts}!T\+E\+ST@{T\+E\+ST}} +\index{T\+E\+ST@{T\+E\+ST}!test\+\_\+concepts@{test\+\_\+concepts}} +\subsubsection{\texorpdfstring{T\+E\+S\+T()}{TEST()}\hspace{0.1cm}{\footnotesize\ttfamily [6/14]}} +{\footnotesize\ttfamily test\+\_\+concepts\+::\+T\+E\+ST (\begin{DoxyParamCaption}\item[{T\+Concepts}]{, }\item[{Assignable}]{ }\end{DoxyParamCaption})} + + + +Definition at line 164 of file T\+Concepts.\+cpp. + +\mbox{\Hypertarget{namespacetest__concepts_abe06b1186f30147f38171a2f5e95920e}\label{namespacetest__concepts_abe06b1186f30147f38171a2f5e95920e}} +\index{test\+\_\+concepts@{test\+\_\+concepts}!T\+E\+ST@{T\+E\+ST}} +\index{T\+E\+ST@{T\+E\+ST}!test\+\_\+concepts@{test\+\_\+concepts}} +\subsubsection{\texorpdfstring{T\+E\+S\+T()}{TEST()}\hspace{0.1cm}{\footnotesize\ttfamily [7/14]}} +{\footnotesize\ttfamily test\+\_\+concepts\+::\+T\+E\+ST (\begin{DoxyParamCaption}\item[{T\+Concepts}]{, }\item[{Swappable}]{ }\end{DoxyParamCaption})} + + + +Definition at line 200 of file T\+Concepts.\+cpp. + +\mbox{\Hypertarget{namespacetest__concepts_af3f33066823dea74a24d89399fa26adb}\label{namespacetest__concepts_af3f33066823dea74a24d89399fa26adb}} +\index{test\+\_\+concepts@{test\+\_\+concepts}!T\+E\+ST@{T\+E\+ST}} +\index{T\+E\+ST@{T\+E\+ST}!test\+\_\+concepts@{test\+\_\+concepts}} +\subsubsection{\texorpdfstring{T\+E\+S\+T()}{TEST()}\hspace{0.1cm}{\footnotesize\ttfamily [8/14]}} +{\footnotesize\ttfamily test\+\_\+concepts\+::\+T\+E\+ST (\begin{DoxyParamCaption}\item[{T\+Concepts}]{, }\item[{Constructible}]{ }\end{DoxyParamCaption})} + + + +Definition at line 219 of file T\+Concepts.\+cpp. + +\mbox{\Hypertarget{namespacetest__concepts_a169b771eff69e1e3086857d88a28b239}\label{namespacetest__concepts_a169b771eff69e1e3086857d88a28b239}} +\index{test\+\_\+concepts@{test\+\_\+concepts}!T\+E\+ST@{T\+E\+ST}} +\index{T\+E\+ST@{T\+E\+ST}!test\+\_\+concepts@{test\+\_\+concepts}} +\subsubsection{\texorpdfstring{T\+E\+S\+T()}{TEST()}\hspace{0.1cm}{\footnotesize\ttfamily [9/14]}} +{\footnotesize\ttfamily test\+\_\+concepts\+::\+T\+E\+ST (\begin{DoxyParamCaption}\item[{T\+Concepts}]{, }\item[{Movable\+Copyable}]{ }\end{DoxyParamCaption})} + + + +Definition at line 258 of file T\+Concepts.\+cpp. + +\mbox{\Hypertarget{namespacetest__concepts_a0f4ad0aba9c032d90024e839f2d9f380}\label{namespacetest__concepts_a0f4ad0aba9c032d90024e839f2d9f380}} +\index{test\+\_\+concepts@{test\+\_\+concepts}!T\+E\+ST@{T\+E\+ST}} +\index{T\+E\+ST@{T\+E\+ST}!test\+\_\+concepts@{test\+\_\+concepts}} +\subsubsection{\texorpdfstring{T\+E\+S\+T()}{TEST()}\hspace{0.1cm}{\footnotesize\ttfamily [10/14]}} +{\footnotesize\ttfamily test\+\_\+concepts\+::\+T\+E\+ST (\begin{DoxyParamCaption}\item[{T\+Concepts}]{, }\item[{Boolean}]{ }\end{DoxyParamCaption})} + + + +Definition at line 280 of file T\+Concepts.\+cpp. + +\mbox{\Hypertarget{namespacetest__concepts_a8f88e84cffb84123f470858c5c28c4fb}\label{namespacetest__concepts_a8f88e84cffb84123f470858c5c28c4fb}} +\index{test\+\_\+concepts@{test\+\_\+concepts}!T\+E\+ST@{T\+E\+ST}} +\index{T\+E\+ST@{T\+E\+ST}!test\+\_\+concepts@{test\+\_\+concepts}} +\subsubsection{\texorpdfstring{T\+E\+S\+T()}{TEST()}\hspace{0.1cm}{\footnotesize\ttfamily [11/14]}} +{\footnotesize\ttfamily test\+\_\+concepts\+::\+T\+E\+ST (\begin{DoxyParamCaption}\item[{T\+Concepts}]{, }\item[{Comparable}]{ }\end{DoxyParamCaption})} + + + +Definition at line 291 of file T\+Concepts.\+cpp. + +\mbox{\Hypertarget{namespacetest__concepts_a9f6330d88c4d4c26e80f6c1b5546ea51}\label{namespacetest__concepts_a9f6330d88c4d4c26e80f6c1b5546ea51}} +\index{test\+\_\+concepts@{test\+\_\+concepts}!T\+E\+ST@{T\+E\+ST}} +\index{T\+E\+ST@{T\+E\+ST}!test\+\_\+concepts@{test\+\_\+concepts}} +\subsubsection{\texorpdfstring{T\+E\+S\+T()}{TEST()}\hspace{0.1cm}{\footnotesize\ttfamily [12/14]}} +{\footnotesize\ttfamily test\+\_\+concepts\+::\+T\+E\+ST (\begin{DoxyParamCaption}\item[{T\+Concepts}]{, }\item[{Types}]{ }\end{DoxyParamCaption})} + + + +Definition at line 331 of file T\+Concepts.\+cpp. + +\mbox{\Hypertarget{namespacetest__concepts_a0575232afeb3a1aed915d6de6e63a328}\label{namespacetest__concepts_a0575232afeb3a1aed915d6de6e63a328}} +\index{test\+\_\+concepts@{test\+\_\+concepts}!T\+E\+ST@{T\+E\+ST}} +\index{T\+E\+ST@{T\+E\+ST}!test\+\_\+concepts@{test\+\_\+concepts}} +\subsubsection{\texorpdfstring{T\+E\+S\+T()}{TEST()}\hspace{0.1cm}{\footnotesize\ttfamily [13/14]}} +{\footnotesize\ttfamily test\+\_\+concepts\+::\+T\+E\+ST (\begin{DoxyParamCaption}\item[{T\+Concepts}]{, }\item[{Callable}]{ }\end{DoxyParamCaption})} + + + +Definition at line 385 of file T\+Concepts.\+cpp. + +\mbox{\Hypertarget{namespacetest__concepts_acef6bf32c3066c6c73a1055184a61c08}\label{namespacetest__concepts_acef6bf32c3066c6c73a1055184a61c08}} +\index{test\+\_\+concepts@{test\+\_\+concepts}!T\+E\+ST@{T\+E\+ST}} +\index{T\+E\+ST@{T\+E\+ST}!test\+\_\+concepts@{test\+\_\+concepts}} +\subsubsection{\texorpdfstring{T\+E\+S\+T()}{TEST()}\hspace{0.1cm}{\footnotesize\ttfamily [14/14]}} +{\footnotesize\ttfamily test\+\_\+concepts\+::\+T\+E\+ST (\begin{DoxyParamCaption}\item[{T\+Concepts}]{, }\item[{Iterators}]{ }\end{DoxyParamCaption})} + + + +Definition at line 410 of file T\+Concepts.\+cpp. + +\mbox{\Hypertarget{namespacetest__concepts_adb4992f432f2a8cfed2c5bfa4bc5adaf}\label{namespacetest__concepts_adb4992f432f2a8cfed2c5bfa4bc5adaf}} +\index{test\+\_\+concepts@{test\+\_\+concepts}!type\+\_\+printer@{type\+\_\+printer}} +\index{type\+\_\+printer@{type\+\_\+printer}!test\+\_\+concepts@{test\+\_\+concepts}} +\subsubsection{\texorpdfstring{type\+\_\+printer()}{type\_printer()}} +{\footnotesize\ttfamily int test\+\_\+concepts\+::type\+\_\+printer (\begin{DoxyParamCaption}\item[{int $\ast$}]{i }\end{DoxyParamCaption})} + + + +Definition at line 409 of file T\+Concepts.\+cpp. + diff --git a/doc/latex/namespacetest__i2c.tex b/doc/latex/namespacetest__i2c.tex new file mode 100644 index 0000000..605d2e0 --- /dev/null +++ b/doc/latex/namespacetest__i2c.tex @@ -0,0 +1,55 @@ +\hypertarget{namespacetest__i2c}{}\section{test\+\_\+i2c Namespace Reference} +\label{namespacetest__i2c}\index{test\+\_\+i2c@{test\+\_\+i2c}} +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +class \mbox{\hyperlink{classtest__i2c_1_1_i2_c}{I2C}} +\end{DoxyCompactItemize} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{namespacetest__i2c_a04c34c5bd7848008eb6803be850b2296}{T\+E\+ST}} (Test\+\_\+i2c\+\_\+impl, Test\+Concept) +\item +\mbox{\hyperlink{namespacetest__i2c_a74c8554cb3a4c7bd022cd854feb06688}{T\+E\+ST}} (Test\+\_\+i2c\+\_\+impl, Test\+Construction) +\item +\mbox{\hyperlink{namespacetest__i2c_aee88e63fc24ad87c0987c6f207dd20fa}{T\+E\+ST}} (Test\+\_\+i2c\+\_\+impl, Test\+Functionality) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\begin{DoxyWarning}{Warning} +This is not right way of testing communication interfaces. We have to implement a Mock object to simulate the slave\textquotesingle{}s behavior. Until then we have the following. +\end{DoxyWarning} + + +\subsection{Function Documentation} +\mbox{\Hypertarget{namespacetest__i2c_a04c34c5bd7848008eb6803be850b2296}\label{namespacetest__i2c_a04c34c5bd7848008eb6803be850b2296}} +\index{test\+\_\+i2c@{test\+\_\+i2c}!T\+E\+ST@{T\+E\+ST}} +\index{T\+E\+ST@{T\+E\+ST}!test\+\_\+i2c@{test\+\_\+i2c}} +\subsubsection{\texorpdfstring{T\+E\+S\+T()}{TEST()}\hspace{0.1cm}{\footnotesize\ttfamily [1/3]}} +{\footnotesize\ttfamily test\+\_\+i2c\+::\+T\+E\+ST (\begin{DoxyParamCaption}\item[{Test\+\_\+i2c\+\_\+impl}]{, }\item[{Test\+Concept}]{ }\end{DoxyParamCaption})} + + + +Definition at line 56 of file test\+\_\+i2c\+\_\+impl.\+cpp. + +\mbox{\Hypertarget{namespacetest__i2c_a74c8554cb3a4c7bd022cd854feb06688}\label{namespacetest__i2c_a74c8554cb3a4c7bd022cd854feb06688}} +\index{test\+\_\+i2c@{test\+\_\+i2c}!T\+E\+ST@{T\+E\+ST}} +\index{T\+E\+ST@{T\+E\+ST}!test\+\_\+i2c@{test\+\_\+i2c}} +\subsubsection{\texorpdfstring{T\+E\+S\+T()}{TEST()}\hspace{0.1cm}{\footnotesize\ttfamily [2/3]}} +{\footnotesize\ttfamily test\+\_\+i2c\+::\+T\+E\+ST (\begin{DoxyParamCaption}\item[{Test\+\_\+i2c\+\_\+impl}]{, }\item[{Test\+Construction}]{ }\end{DoxyParamCaption})} + + + +Definition at line 61 of file test\+\_\+i2c\+\_\+impl.\+cpp. + +\mbox{\Hypertarget{namespacetest__i2c_aee88e63fc24ad87c0987c6f207dd20fa}\label{namespacetest__i2c_aee88e63fc24ad87c0987c6f207dd20fa}} +\index{test\+\_\+i2c@{test\+\_\+i2c}!T\+E\+ST@{T\+E\+ST}} +\index{T\+E\+ST@{T\+E\+ST}!test\+\_\+i2c@{test\+\_\+i2c}} +\subsubsection{\texorpdfstring{T\+E\+S\+T()}{TEST()}\hspace{0.1cm}{\footnotesize\ttfamily [3/3]}} +{\footnotesize\ttfamily test\+\_\+i2c\+::\+T\+E\+ST (\begin{DoxyParamCaption}\item[{Test\+\_\+i2c\+\_\+impl}]{, }\item[{Test\+Functionality}]{ }\end{DoxyParamCaption})} + + + +Definition at line 66 of file test\+\_\+i2c\+\_\+impl.\+cpp. + diff --git a/doc/latex/namespacetest__meta.tex b/doc/latex/namespacetest__meta.tex new file mode 100644 index 0000000..2d42450 --- /dev/null +++ b/doc/latex/namespacetest__meta.tex @@ -0,0 +1,39 @@ +\hypertarget{namespacetest__meta}{}\section{test\+\_\+meta Namespace Reference} +\label{namespacetest__meta}\index{test\+\_\+meta@{test\+\_\+meta}} +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structtest__meta_1_1_ibar}{Ibar}} +\item +struct \mbox{\hyperlink{structtest__meta_1_1_ifoo}{Ifoo}} +\end{DoxyCompactItemize} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +int \mbox{\hyperlink{namespacetest__meta_a21d4736fe75f1a8389d1eb7359a4f8f1}{Ifun}} (int i) +\item +\mbox{\hyperlink{namespacetest__meta_a569cf8c253b61a7bdd8a893dd7af7adb}{T\+E\+ST}} (Tinvoke, Invoke) +\end{DoxyCompactItemize} + + +\subsection{Function Documentation} +\mbox{\Hypertarget{namespacetest__meta_a21d4736fe75f1a8389d1eb7359a4f8f1}\label{namespacetest__meta_a21d4736fe75f1a8389d1eb7359a4f8f1}} +\index{test\+\_\+meta@{test\+\_\+meta}!Ifun@{Ifun}} +\index{Ifun@{Ifun}!test\+\_\+meta@{test\+\_\+meta}} +\subsubsection{\texorpdfstring{Ifun()}{Ifun()}} +{\footnotesize\ttfamily int test\+\_\+meta\+::\+Ifun (\begin{DoxyParamCaption}\item[{int}]{i }\end{DoxyParamCaption})} + + + +Definition at line 30 of file Tinvoke.\+cpp. + +\mbox{\Hypertarget{namespacetest__meta_a569cf8c253b61a7bdd8a893dd7af7adb}\label{namespacetest__meta_a569cf8c253b61a7bdd8a893dd7af7adb}} +\index{test\+\_\+meta@{test\+\_\+meta}!T\+E\+ST@{T\+E\+ST}} +\index{T\+E\+ST@{T\+E\+ST}!test\+\_\+meta@{test\+\_\+meta}} +\subsubsection{\texorpdfstring{T\+E\+S\+T()}{TEST()}} +{\footnotesize\ttfamily test\+\_\+meta\+::\+T\+E\+ST (\begin{DoxyParamCaption}\item[{Tinvoke}]{, }\item[{Invoke}]{ }\end{DoxyParamCaption})} + + + +Definition at line 47 of file Tinvoke.\+cpp. + diff --git a/doc/latex/namespacetest__ostream__dev.tex b/doc/latex/namespacetest__ostream__dev.tex new file mode 100644 index 0000000..42073d6 --- /dev/null +++ b/doc/latex/namespacetest__ostream__dev.tex @@ -0,0 +1,187 @@ +\hypertarget{namespacetest__ostream__dev}{}\section{test\+\_\+ostream\+\_\+dev Namespace Reference} +\label{namespacetest__ostream__dev}\index{test\+\_\+ostream\+\_\+dev@{test\+\_\+ostream\+\_\+dev}} +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +class \mbox{\hyperlink{classtest__ostream__dev_1_1_ostream__dev__impl}{Ostream\+\_\+dev\+\_\+impl}} +\item +class \mbox{\hyperlink{classtest__ostream__dev_1_1_ostream__vdev__impl}{Ostream\+\_\+vdev\+\_\+impl}} +\item +class \mbox{\hyperlink{classtest__ostream__dev_1_1_tostream___idev}{Tostream\+\_\+\+Idev}} +\item +class \mbox{\hyperlink{classtest__ostream__dev_1_1_tostream___vdev}{Tostream\+\_\+\+Vdev}} +\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{namespacetest__ostream__dev_a63ac45c38a80885dda445ddee2a1e0c8}{test\+\_\+data\+\_\+t}} = uint8\+\_\+t +\end{DoxyCompactItemize} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{namespacetest__ostream__dev_a7d0ba57fc928d165451e031ab6935d1c}{T\+E\+S\+T\+\_\+F}} (\mbox{\hyperlink{classtest__ostream__dev_1_1_tostream___idev}{Tostream\+\_\+\+Idev}}, Construction) +\item +\mbox{\hyperlink{namespacetest__ostream__dev_a933ad1f9cbffc56c355494b2e5a898ed}{T\+E\+S\+T\+\_\+F}} (\mbox{\hyperlink{classtest__ostream__dev_1_1_tostream___idev}{Tostream\+\_\+\+Idev}}, Api) +\item +\mbox{\hyperlink{namespacetest__ostream__dev_a48320d39ddad3627913184df15a6eeae}{T\+E\+S\+T\+\_\+F}} (\mbox{\hyperlink{classtest__ostream__dev_1_1_tostream___idev}{Tostream\+\_\+\+Idev}}, stream\+Operator) +\item +\mbox{\hyperlink{namespacetest__ostream__dev_a15b2cd537bd2f755805c043397a90369}{T\+E\+S\+T\+\_\+F}} (\mbox{\hyperlink{classtest__ostream__dev_1_1_tostream___idev}{Tostream\+\_\+\+Idev}}, Iterator1) +\item +\mbox{\hyperlink{namespacetest__ostream__dev_a0f24de95548df2cfaee079bb7569b43d}{T\+E\+S\+T\+\_\+F}} (\mbox{\hyperlink{classtest__ostream__dev_1_1_tostream___idev}{Tostream\+\_\+\+Idev}}, Iterator2) +\item +\mbox{\hyperlink{namespacetest__ostream__dev_a5b0629176b2db8d5e78c26337bab73fd}{T\+E\+S\+T\+\_\+F}} (\mbox{\hyperlink{classtest__ostream__dev_1_1_tostream___vdev}{Tostream\+\_\+\+Vdev}}, virtual\+Api) +\item +\mbox{\hyperlink{namespacetest__ostream__dev_a362bd1b25e349211c067276cbed35fbc}{T\+E\+S\+T\+\_\+F}} (\mbox{\hyperlink{classtest__ostream__dev_1_1_tostream___vdev}{Tostream\+\_\+\+Vdev}}, virtual\+Stream) +\item +\mbox{\hyperlink{namespacetest__ostream__dev_ac73a944cfce63878b27a9bc5843d1047}{T\+E\+S\+T\+\_\+F}} (\mbox{\hyperlink{classtest__ostream__dev_1_1_tostream___vdev}{Tostream\+\_\+\+Vdev}}, virtual\+Iterator) +\end{DoxyCompactItemize} +\subsection*{Variables} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{namespacetest__ostream__dev_a63ac45c38a80885dda445ddee2a1e0c8}{test\+\_\+data\+\_\+t}} \mbox{\hyperlink{namespacetest__ostream__dev_a7e9209298f1eec33fb72637fd17720d6}{Idata}} = 42 +\item +\mbox{\hyperlink{namespacetest__ostream__dev_a63ac45c38a80885dda445ddee2a1e0c8}{test\+\_\+data\+\_\+t}} \& \mbox{\hyperlink{namespacetest__ostream__dev_a1a5e65c79718b3bbc72501c02e090ac0}{IdataR}} = \mbox{\hyperlink{namespacetest__ostream__dev_a7e9209298f1eec33fb72637fd17720d6}{Idata}} +\item +\mbox{\hyperlink{namespacetest__ostream__dev_a63ac45c38a80885dda445ddee2a1e0c8}{test\+\_\+data\+\_\+t}} \&\& \mbox{\hyperlink{namespacetest__ostream__dev_ad7ded62f12c3abfcaddae39a905793b4}{Idata\+RR}} = 0x\+AA +\item +\mbox{\hyperlink{namespacetest__ostream__dev_a63ac45c38a80885dda445ddee2a1e0c8}{test\+\_\+data\+\_\+t}} \mbox{\hyperlink{namespacetest__ostream__dev_ab0ee4bd586c47ce5f9dcc0fe60dd27a2}{Ibuffer}} \mbox{[}$\,$\mbox{]} = \{1, 2, 3, 4, 5, 6, 7, 8, 9, 10\} +\end{DoxyCompactItemize} + + +\subsection{Typedef Documentation} +\mbox{\Hypertarget{namespacetest__ostream__dev_a63ac45c38a80885dda445ddee2a1e0c8}\label{namespacetest__ostream__dev_a63ac45c38a80885dda445ddee2a1e0c8}} +\index{test\+\_\+ostream\+\_\+dev@{test\+\_\+ostream\+\_\+dev}!test\+\_\+data\+\_\+t@{test\+\_\+data\+\_\+t}} +\index{test\+\_\+data\+\_\+t@{test\+\_\+data\+\_\+t}!test\+\_\+ostream\+\_\+dev@{test\+\_\+ostream\+\_\+dev}} +\subsubsection{\texorpdfstring{test\+\_\+data\+\_\+t}{test\_data\_t}} +{\footnotesize\ttfamily using \mbox{\hyperlink{namespacetest__ostream__dev_a63ac45c38a80885dda445ddee2a1e0c8}{test\+\_\+ostream\+\_\+dev\+::test\+\_\+data\+\_\+t}} = typedef uint8\+\_\+t} + + + +Definition at line 29 of file test\+\_\+ostream\+\_\+dev.\+cpp. + + + +\subsection{Function Documentation} +\mbox{\Hypertarget{namespacetest__ostream__dev_a7d0ba57fc928d165451e031ab6935d1c}\label{namespacetest__ostream__dev_a7d0ba57fc928d165451e031ab6935d1c}} +\index{test\+\_\+ostream\+\_\+dev@{test\+\_\+ostream\+\_\+dev}!T\+E\+S\+T\+\_\+F@{T\+E\+S\+T\+\_\+F}} +\index{T\+E\+S\+T\+\_\+F@{T\+E\+S\+T\+\_\+F}!test\+\_\+ostream\+\_\+dev@{test\+\_\+ostream\+\_\+dev}} +\subsubsection{\texorpdfstring{T\+E\+S\+T\+\_\+\+F()}{TEST\_F()}\hspace{0.1cm}{\footnotesize\ttfamily [1/8]}} +{\footnotesize\ttfamily test\+\_\+ostream\+\_\+dev\+::\+T\+E\+S\+T\+\_\+F (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classtest__ostream__dev_1_1_tostream___idev}{Tostream\+\_\+\+Idev}}}]{, }\item[{Construction}]{ }\end{DoxyParamCaption})} + + + +Definition at line 109 of file test\+\_\+ostream\+\_\+dev.\+cpp. + +\mbox{\Hypertarget{namespacetest__ostream__dev_a933ad1f9cbffc56c355494b2e5a898ed}\label{namespacetest__ostream__dev_a933ad1f9cbffc56c355494b2e5a898ed}} +\index{test\+\_\+ostream\+\_\+dev@{test\+\_\+ostream\+\_\+dev}!T\+E\+S\+T\+\_\+F@{T\+E\+S\+T\+\_\+F}} +\index{T\+E\+S\+T\+\_\+F@{T\+E\+S\+T\+\_\+F}!test\+\_\+ostream\+\_\+dev@{test\+\_\+ostream\+\_\+dev}} +\subsubsection{\texorpdfstring{T\+E\+S\+T\+\_\+\+F()}{TEST\_F()}\hspace{0.1cm}{\footnotesize\ttfamily [2/8]}} +{\footnotesize\ttfamily test\+\_\+ostream\+\_\+dev\+::\+T\+E\+S\+T\+\_\+F (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classtest__ostream__dev_1_1_tostream___idev}{Tostream\+\_\+\+Idev}}}]{, }\item[{Api}]{ }\end{DoxyParamCaption})} + + + +Definition at line 113 of file test\+\_\+ostream\+\_\+dev.\+cpp. + +\mbox{\Hypertarget{namespacetest__ostream__dev_a48320d39ddad3627913184df15a6eeae}\label{namespacetest__ostream__dev_a48320d39ddad3627913184df15a6eeae}} +\index{test\+\_\+ostream\+\_\+dev@{test\+\_\+ostream\+\_\+dev}!T\+E\+S\+T\+\_\+F@{T\+E\+S\+T\+\_\+F}} +\index{T\+E\+S\+T\+\_\+F@{T\+E\+S\+T\+\_\+F}!test\+\_\+ostream\+\_\+dev@{test\+\_\+ostream\+\_\+dev}} +\subsubsection{\texorpdfstring{T\+E\+S\+T\+\_\+\+F()}{TEST\_F()}\hspace{0.1cm}{\footnotesize\ttfamily [3/8]}} +{\footnotesize\ttfamily test\+\_\+ostream\+\_\+dev\+::\+T\+E\+S\+T\+\_\+F (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classtest__ostream__dev_1_1_tostream___idev}{Tostream\+\_\+\+Idev}}}]{, }\item[{stream\+Operator}]{ }\end{DoxyParamCaption})} + + + +Definition at line 138 of file test\+\_\+ostream\+\_\+dev.\+cpp. + +\mbox{\Hypertarget{namespacetest__ostream__dev_a15b2cd537bd2f755805c043397a90369}\label{namespacetest__ostream__dev_a15b2cd537bd2f755805c043397a90369}} +\index{test\+\_\+ostream\+\_\+dev@{test\+\_\+ostream\+\_\+dev}!T\+E\+S\+T\+\_\+F@{T\+E\+S\+T\+\_\+F}} +\index{T\+E\+S\+T\+\_\+F@{T\+E\+S\+T\+\_\+F}!test\+\_\+ostream\+\_\+dev@{test\+\_\+ostream\+\_\+dev}} +\subsubsection{\texorpdfstring{T\+E\+S\+T\+\_\+\+F()}{TEST\_F()}\hspace{0.1cm}{\footnotesize\ttfamily [4/8]}} +{\footnotesize\ttfamily test\+\_\+ostream\+\_\+dev\+::\+T\+E\+S\+T\+\_\+F (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classtest__ostream__dev_1_1_tostream___idev}{Tostream\+\_\+\+Idev}}}]{, }\item[{Iterator1}]{ }\end{DoxyParamCaption})} + + + +Definition at line 169 of file test\+\_\+ostream\+\_\+dev.\+cpp. + +\mbox{\Hypertarget{namespacetest__ostream__dev_a0f24de95548df2cfaee079bb7569b43d}\label{namespacetest__ostream__dev_a0f24de95548df2cfaee079bb7569b43d}} +\index{test\+\_\+ostream\+\_\+dev@{test\+\_\+ostream\+\_\+dev}!T\+E\+S\+T\+\_\+F@{T\+E\+S\+T\+\_\+F}} +\index{T\+E\+S\+T\+\_\+F@{T\+E\+S\+T\+\_\+F}!test\+\_\+ostream\+\_\+dev@{test\+\_\+ostream\+\_\+dev}} +\subsubsection{\texorpdfstring{T\+E\+S\+T\+\_\+\+F()}{TEST\_F()}\hspace{0.1cm}{\footnotesize\ttfamily [5/8]}} +{\footnotesize\ttfamily test\+\_\+ostream\+\_\+dev\+::\+T\+E\+S\+T\+\_\+F (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classtest__ostream__dev_1_1_tostream___idev}{Tostream\+\_\+\+Idev}}}]{, }\item[{Iterator2}]{ }\end{DoxyParamCaption})} + + + +Definition at line 198 of file test\+\_\+ostream\+\_\+dev.\+cpp. + +\mbox{\Hypertarget{namespacetest__ostream__dev_a5b0629176b2db8d5e78c26337bab73fd}\label{namespacetest__ostream__dev_a5b0629176b2db8d5e78c26337bab73fd}} +\index{test\+\_\+ostream\+\_\+dev@{test\+\_\+ostream\+\_\+dev}!T\+E\+S\+T\+\_\+F@{T\+E\+S\+T\+\_\+F}} +\index{T\+E\+S\+T\+\_\+F@{T\+E\+S\+T\+\_\+F}!test\+\_\+ostream\+\_\+dev@{test\+\_\+ostream\+\_\+dev}} +\subsubsection{\texorpdfstring{T\+E\+S\+T\+\_\+\+F()}{TEST\_F()}\hspace{0.1cm}{\footnotesize\ttfamily [6/8]}} +{\footnotesize\ttfamily test\+\_\+ostream\+\_\+dev\+::\+T\+E\+S\+T\+\_\+F (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classtest__ostream__dev_1_1_tostream___vdev}{Tostream\+\_\+\+Vdev}}}]{, }\item[{virtual\+Api}]{ }\end{DoxyParamCaption})} + + + +Definition at line 207 of file test\+\_\+ostream\+\_\+dev.\+cpp. + +\mbox{\Hypertarget{namespacetest__ostream__dev_a362bd1b25e349211c067276cbed35fbc}\label{namespacetest__ostream__dev_a362bd1b25e349211c067276cbed35fbc}} +\index{test\+\_\+ostream\+\_\+dev@{test\+\_\+ostream\+\_\+dev}!T\+E\+S\+T\+\_\+F@{T\+E\+S\+T\+\_\+F}} +\index{T\+E\+S\+T\+\_\+F@{T\+E\+S\+T\+\_\+F}!test\+\_\+ostream\+\_\+dev@{test\+\_\+ostream\+\_\+dev}} +\subsubsection{\texorpdfstring{T\+E\+S\+T\+\_\+\+F()}{TEST\_F()}\hspace{0.1cm}{\footnotesize\ttfamily [7/8]}} +{\footnotesize\ttfamily test\+\_\+ostream\+\_\+dev\+::\+T\+E\+S\+T\+\_\+F (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classtest__ostream__dev_1_1_tostream___vdev}{Tostream\+\_\+\+Vdev}}}]{, }\item[{virtual\+Stream}]{ }\end{DoxyParamCaption})} + + + +Definition at line 221 of file test\+\_\+ostream\+\_\+dev.\+cpp. + +\mbox{\Hypertarget{namespacetest__ostream__dev_ac73a944cfce63878b27a9bc5843d1047}\label{namespacetest__ostream__dev_ac73a944cfce63878b27a9bc5843d1047}} +\index{test\+\_\+ostream\+\_\+dev@{test\+\_\+ostream\+\_\+dev}!T\+E\+S\+T\+\_\+F@{T\+E\+S\+T\+\_\+F}} +\index{T\+E\+S\+T\+\_\+F@{T\+E\+S\+T\+\_\+F}!test\+\_\+ostream\+\_\+dev@{test\+\_\+ostream\+\_\+dev}} +\subsubsection{\texorpdfstring{T\+E\+S\+T\+\_\+\+F()}{TEST\_F()}\hspace{0.1cm}{\footnotesize\ttfamily [8/8]}} +{\footnotesize\ttfamily test\+\_\+ostream\+\_\+dev\+::\+T\+E\+S\+T\+\_\+F (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classtest__ostream__dev_1_1_tostream___vdev}{Tostream\+\_\+\+Vdev}}}]{, }\item[{virtual\+Iterator}]{ }\end{DoxyParamCaption})} + + + +Definition at line 246 of file test\+\_\+ostream\+\_\+dev.\+cpp. + + + +\subsection{Variable Documentation} +\mbox{\Hypertarget{namespacetest__ostream__dev_ab0ee4bd586c47ce5f9dcc0fe60dd27a2}\label{namespacetest__ostream__dev_ab0ee4bd586c47ce5f9dcc0fe60dd27a2}} +\index{test\+\_\+ostream\+\_\+dev@{test\+\_\+ostream\+\_\+dev}!Ibuffer@{Ibuffer}} +\index{Ibuffer@{Ibuffer}!test\+\_\+ostream\+\_\+dev@{test\+\_\+ostream\+\_\+dev}} +\subsubsection{\texorpdfstring{Ibuffer}{Ibuffer}} +{\footnotesize\ttfamily \mbox{\hyperlink{namespacetest__ostream__dev_a63ac45c38a80885dda445ddee2a1e0c8}{test\+\_\+data\+\_\+t}} test\+\_\+ostream\+\_\+dev\+::\+Ibuffer\mbox{[}$\,$\mbox{]} = \{1, 2, 3, 4, 5, 6, 7, 8, 9, 10\}} + + + +Definition at line 37 of file test\+\_\+ostream\+\_\+dev.\+cpp. + +\mbox{\Hypertarget{namespacetest__ostream__dev_a7e9209298f1eec33fb72637fd17720d6}\label{namespacetest__ostream__dev_a7e9209298f1eec33fb72637fd17720d6}} +\index{test\+\_\+ostream\+\_\+dev@{test\+\_\+ostream\+\_\+dev}!Idata@{Idata}} +\index{Idata@{Idata}!test\+\_\+ostream\+\_\+dev@{test\+\_\+ostream\+\_\+dev}} +\subsubsection{\texorpdfstring{Idata}{Idata}} +{\footnotesize\ttfamily \mbox{\hyperlink{namespacetest__ostream__dev_a63ac45c38a80885dda445ddee2a1e0c8}{test\+\_\+data\+\_\+t}} test\+\_\+ostream\+\_\+dev\+::\+Idata = 42} + + + +Definition at line 34 of file test\+\_\+ostream\+\_\+dev.\+cpp. + +\mbox{\Hypertarget{namespacetest__ostream__dev_a1a5e65c79718b3bbc72501c02e090ac0}\label{namespacetest__ostream__dev_a1a5e65c79718b3bbc72501c02e090ac0}} +\index{test\+\_\+ostream\+\_\+dev@{test\+\_\+ostream\+\_\+dev}!IdataR@{IdataR}} +\index{IdataR@{IdataR}!test\+\_\+ostream\+\_\+dev@{test\+\_\+ostream\+\_\+dev}} +\subsubsection{\texorpdfstring{IdataR}{IdataR}} +{\footnotesize\ttfamily \mbox{\hyperlink{namespacetest__ostream__dev_a63ac45c38a80885dda445ddee2a1e0c8}{test\+\_\+data\+\_\+t}}\& test\+\_\+ostream\+\_\+dev\+::\+IdataR = \mbox{\hyperlink{namespacetest__ostream__dev_a7e9209298f1eec33fb72637fd17720d6}{Idata}}} + + + +Definition at line 35 of file test\+\_\+ostream\+\_\+dev.\+cpp. + +\mbox{\Hypertarget{namespacetest__ostream__dev_ad7ded62f12c3abfcaddae39a905793b4}\label{namespacetest__ostream__dev_ad7ded62f12c3abfcaddae39a905793b4}} +\index{test\+\_\+ostream\+\_\+dev@{test\+\_\+ostream\+\_\+dev}!Idata\+RR@{Idata\+RR}} +\index{Idata\+RR@{Idata\+RR}!test\+\_\+ostream\+\_\+dev@{test\+\_\+ostream\+\_\+dev}} +\subsubsection{\texorpdfstring{Idata\+RR}{IdataRR}} +{\footnotesize\ttfamily \mbox{\hyperlink{namespacetest__ostream__dev_a63ac45c38a80885dda445ddee2a1e0c8}{test\+\_\+data\+\_\+t}}\&\& test\+\_\+ostream\+\_\+dev\+::\+Idata\+RR = 0x\+AA} + + + +Definition at line 36 of file test\+\_\+ostream\+\_\+dev.\+cpp. + diff --git a/doc/latex/namespacetest__spi.tex b/doc/latex/namespacetest__spi.tex new file mode 100644 index 0000000..ce51333 --- /dev/null +++ b/doc/latex/namespacetest__spi.tex @@ -0,0 +1,57 @@ +\hypertarget{namespacetest__spi}{}\section{test\+\_\+spi Namespace Reference} +\label{namespacetest__spi}\index{test\+\_\+spi@{test\+\_\+spi}} +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +class \mbox{\hyperlink{classtest__spi_1_1_s_p_i}{S\+PI}} +\item +class \mbox{\hyperlink{classtest__spi_1_1_test__spi__impl}{Test\+\_\+spi\+\_\+impl}} +\end{DoxyCompactItemize} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{namespacetest__spi_a08b6fb6773314f5914664f2089ea4eac}{T\+E\+S\+T\+\_\+F}} (\mbox{\hyperlink{classtest__spi_1_1_test__spi__impl}{Test\+\_\+spi\+\_\+impl}}, Test\+Concept) +\item +\mbox{\hyperlink{namespacetest__spi_a751c0b9fe17b002b0ab620f180a46307}{T\+E\+S\+T\+\_\+F}} (\mbox{\hyperlink{classtest__spi_1_1_test__spi__impl}{Test\+\_\+spi\+\_\+impl}}, Test\+Construction) +\item +\mbox{\hyperlink{namespacetest__spi_aa98da2aecf8b42f492ec1c206e8b8aba}{T\+E\+S\+T\+\_\+F}} (\mbox{\hyperlink{classtest__spi_1_1_test__spi__impl}{Test\+\_\+spi\+\_\+impl}}, Test\+Functionality) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\begin{DoxyWarning}{Warning} +This is not right way of testing communication interfaces. We have to implement a Mock object to simulate the slave\textquotesingle{}s behavior. Until then we have the following. +\end{DoxyWarning} + + +\subsection{Function Documentation} +\mbox{\Hypertarget{namespacetest__spi_a08b6fb6773314f5914664f2089ea4eac}\label{namespacetest__spi_a08b6fb6773314f5914664f2089ea4eac}} +\index{test\+\_\+spi@{test\+\_\+spi}!T\+E\+S\+T\+\_\+F@{T\+E\+S\+T\+\_\+F}} +\index{T\+E\+S\+T\+\_\+F@{T\+E\+S\+T\+\_\+F}!test\+\_\+spi@{test\+\_\+spi}} +\subsubsection{\texorpdfstring{T\+E\+S\+T\+\_\+\+F()}{TEST\_F()}\hspace{0.1cm}{\footnotesize\ttfamily [1/3]}} +{\footnotesize\ttfamily test\+\_\+spi\+::\+T\+E\+S\+T\+\_\+F (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classtest__spi_1_1_test__spi__impl}{Test\+\_\+spi\+\_\+impl}}}]{, }\item[{Test\+Concept}]{ }\end{DoxyParamCaption})} + + + +Definition at line 55 of file test\+\_\+spi\+\_\+impl.\+cpp. + +\mbox{\Hypertarget{namespacetest__spi_a751c0b9fe17b002b0ab620f180a46307}\label{namespacetest__spi_a751c0b9fe17b002b0ab620f180a46307}} +\index{test\+\_\+spi@{test\+\_\+spi}!T\+E\+S\+T\+\_\+F@{T\+E\+S\+T\+\_\+F}} +\index{T\+E\+S\+T\+\_\+F@{T\+E\+S\+T\+\_\+F}!test\+\_\+spi@{test\+\_\+spi}} +\subsubsection{\texorpdfstring{T\+E\+S\+T\+\_\+\+F()}{TEST\_F()}\hspace{0.1cm}{\footnotesize\ttfamily [2/3]}} +{\footnotesize\ttfamily test\+\_\+spi\+::\+T\+E\+S\+T\+\_\+F (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classtest__spi_1_1_test__spi__impl}{Test\+\_\+spi\+\_\+impl}}}]{, }\item[{Test\+Construction}]{ }\end{DoxyParamCaption})} + + + +Definition at line 59 of file test\+\_\+spi\+\_\+impl.\+cpp. + +\mbox{\Hypertarget{namespacetest__spi_aa98da2aecf8b42f492ec1c206e8b8aba}\label{namespacetest__spi_aa98da2aecf8b42f492ec1c206e8b8aba}} +\index{test\+\_\+spi@{test\+\_\+spi}!T\+E\+S\+T\+\_\+F@{T\+E\+S\+T\+\_\+F}} +\index{T\+E\+S\+T\+\_\+F@{T\+E\+S\+T\+\_\+F}!test\+\_\+spi@{test\+\_\+spi}} +\subsubsection{\texorpdfstring{T\+E\+S\+T\+\_\+\+F()}{TEST\_F()}\hspace{0.1cm}{\footnotesize\ttfamily [3/3]}} +{\footnotesize\ttfamily test\+\_\+spi\+::\+T\+E\+S\+T\+\_\+F (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classtest__spi_1_1_test__spi__impl}{Test\+\_\+spi\+\_\+impl}}}]{, }\item[{Test\+Functionality}]{ }\end{DoxyParamCaption})} + + + +Definition at line 63 of file test\+\_\+spi\+\_\+impl.\+cpp. + diff --git a/doc/latex/namespacetesting.tex b/doc/latex/namespacetesting.tex new file mode 100644 index 0000000..a9c8417 --- /dev/null +++ b/doc/latex/namespacetesting.tex @@ -0,0 +1,557 @@ +\hypertarget{namespacetesting}{}\section{testing Namespace Reference} +\label{namespacetesting}\index{testing@{testing}} +\subsection*{Namespaces} +\begin{DoxyCompactItemize} +\item + \mbox{\hyperlink{namespacetesting_1_1internal}{internal}} +\item + \mbox{\hyperlink{namespacetesting_1_1internal2}{internal2}} +\end{DoxyCompactItemize} +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +class \mbox{\hyperlink{classtesting_1_1_empty_test_event_listener}{Empty\+Test\+Event\+Listener}} +\item +class \mbox{\hyperlink{classtesting_1_1_environment}{Environment}} +\item +class \mbox{\hyperlink{classtesting_1_1_message}{Message}} +\item +struct \mbox{\hyperlink{structtesting_1_1_print_to_string_param_name}{Print\+To\+String\+Param\+Name}} +\item +class \mbox{\hyperlink{classtesting_1_1_scoped_trace}{Scoped\+Trace}} +\item +class \mbox{\hyperlink{classtesting_1_1_test}{Test}} +\item +class \mbox{\hyperlink{classtesting_1_1_test_event_listener}{Test\+Event\+Listener}} +\item +class \mbox{\hyperlink{classtesting_1_1_test_event_listeners}{Test\+Event\+Listeners}} +\item +class \mbox{\hyperlink{classtesting_1_1_test_info}{Test\+Info}} +\item +struct \mbox{\hyperlink{structtesting_1_1_test_param_info}{Test\+Param\+Info}} +\item +class \mbox{\hyperlink{classtesting_1_1_test_property}{Test\+Property}} +\item +class \mbox{\hyperlink{classtesting_1_1_test_result}{Test\+Result}} +\item +class \mbox{\hyperlink{classtesting_1_1_test_suite}{Test\+Suite}} +\item +class \mbox{\hyperlink{classtesting_1_1_test_with_param}{Test\+With\+Param}} +\item +class \mbox{\hyperlink{classtesting_1_1_unit_test}{Unit\+Test}} +\item +class \mbox{\hyperlink{classtesting_1_1_with_param_interface}{With\+Param\+Interface}} +\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +typedef \mbox{\hyperlink{namespacetesting_1_1internal_a66a845df404b38fe85c5e14a069f255a}{internal\+::\+Time\+In\+Millis}} \mbox{\hyperlink{namespacetesting_a992de1d091ce660f451d1e8b3ce30fd6}{Time\+In\+Millis}} +\end{DoxyCompactItemize} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{namespacetesting_a8e954ed3f0f6ca2e90b043e419c74123}{G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+string\+\_\+}} (death\+\_\+test\+\_\+style, \mbox{\hyperlink{namespacetesting_1_1internal_a0967cbf18fb1594f82512d8d822aba21}{internal\+::\+String\+From\+G\+Test\+Env}}(\char`\"{}death\+\_\+test\+\_\+style\char`\"{}, k\+Default\+Death\+Test\+Style), \char`\"{}Indicates how to run a death test in a forked child process\+: \char`\"{} \char`\"{}\textbackslash{}hreadsafe\textbackslash{}(child process re-\/executes the test binary \char`\"{} \char`\"{}from the beginning, running only the specific death test) or \char`\"{} \char`\"{}\textbackslash{}ast\textbackslash{}(child process runs the death test immediately \char`\"{} \char`\"{}after forking).\char`\"{}) +\item +\mbox{\hyperlink{namespacetesting_a428e5944490e497df683cb8324ce4489}{G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+bool\+\_\+}} (death\+\_\+test\+\_\+use\+\_\+fork, \mbox{\hyperlink{namespacetesting_1_1internal_a1055088bb9b867e1b7b8f096f519d7c5}{internal\+::\+Bool\+From\+G\+Test\+Env}}(\char`\"{}death\+\_\+test\+\_\+use\+\_\+fork\char`\"{}, false), \char`\"{}Instructs to use fork()/\+\_\+exit() instead of clone() in death tests. \char`\"{} \char`\"{}Ignored and always uses fork() on P\+O\+S\+IX systems where clone() is not \char`\"{} \char`\"{}implemented. Useful when running under valgrind or similar tools if \char`\"{} \char`\"{}those do not support clone(). Valgrind 3.\+3.\+1 will just fail if \char`\"{} \char`\"{}it sees an unsupported combination of clone() flags. \char`\"{} \char`\"{}It is not recommended to use this flag w/o valgrind though it will \char`\"{} \char`\"{}work in 99\% of the cases. Once valgrind is fixed, this flag will \char`\"{} \char`\"{}most likely be removed.\char`\"{}) +\item +std\+::ostream \& \mbox{\hyperlink{namespacetesting_a266e39b7c4691fedb856047673a412d8}{operator$<$$<$}} (std\+::ostream \&os, const Test\+Part\+Result \&result) +\item +std\+::ostream \& \mbox{\hyperlink{namespacetesting_a7b802e532fd68749765cb7dc156130db}{operator$<$$<$}} (std\+::ostream \&os, const \mbox{\hyperlink{classtesting_1_1_message}{Message}} \&sb) +\item +{\footnotesize template$<$typename T $>$ }\\\+::std\+::string \mbox{\hyperlink{namespacetesting_aa5717bb1144edd1d262d310ba70c82ed}{Print\+To\+String}} (const T \&value) +\item +\mbox{\hyperlink{namespacetesting_a37b7e87f0a5f502c6918f37d1768c1f3}{G\+T\+E\+S\+T\+\_\+\+D\+E\+C\+L\+A\+R\+E\+\_\+string\+\_\+}} (death\+\_\+test\+\_\+style) +\item +{\footnotesize template$<$class Container $>$ }\\\mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{internal\+::\+Param\+Generator}}$<$ typename Container\+::value\+\_\+type $>$ \mbox{\hyperlink{namespacetesting_aa67d0c8470c5f69fcfcacc9e775fa982}{Values\+In}} (const Container \&container) +\item +{\footnotesize template$<$typename T , typename IncrementT $>$ }\\\mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{internal\+::\+Param\+Generator}}$<$ T $>$ \mbox{\hyperlink{namespacetesting_a265ed70a86cf2d6641582c45ad9529e2}{Range}} (T start, T end, IncrementT step) +\item +{\footnotesize template$<$typename T $>$ }\\\mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{internal\+::\+Param\+Generator}}$<$ T $>$ \mbox{\hyperlink{namespacetesting_a56a45f85a1238dfc92e6fca03eb3a2e4}{Range}} (T start, T end) +\item +{\footnotesize template$<$typename Forward\+Iterator $>$ }\\\mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{internal\+::\+Param\+Generator}}$<$ typename \+::\mbox{\hyperlink{structtesting_1_1internal_1_1_iterator_traits}{testing\+::internal\+::\+Iterator\+Traits}}$<$ Forward\+Iterator $>$\+::value\+\_\+type $>$ \mbox{\hyperlink{namespacetesting_a96240380ae4d3b4855d07de3b84fb336}{Values\+In}} (Forward\+Iterator begin, Forward\+Iterator end) +\item +{\footnotesize template$<$typename T , size\+\_\+t N$>$ }\\\mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{internal\+::\+Param\+Generator}}$<$ T $>$ \mbox{\hyperlink{namespacetesting_a0b9ea6594ac06ad5d9eba2511ffa0fb7}{Values\+In}} (const T(\&array)\mbox{[}N\mbox{]}) +\item +{\footnotesize template$<$typename... T$>$ }\\\mbox{\hyperlink{classtesting_1_1internal_1_1_value_array}{internal\+::\+Value\+Array}}$<$ T... $>$ \mbox{\hyperlink{namespacetesting_a374d4e5fbb4c938058fbe81d4c7ff6a6}{Values}} (T... v) +\item +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{internal\+::\+Param\+Generator}}$<$ bool $>$ \mbox{\hyperlink{namespacetesting_aa9f9150ed43f949c8a6bacf3f04c03ce}{Bool}} () +\item +{\footnotesize template$<$typename Generator1 , typename Generator2 $>$ }\\\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder2}{internal\+::\+Cartesian\+Product\+Holder2}}$<$ Generator1, Generator2 $>$ \mbox{\hyperlink{namespacetesting_a4917922963bacef3e301e67366c41df3}{Combine}} (const Generator1 \&g1, const Generator2 \&g2) +\item +{\footnotesize template$<$typename Generator1 , typename Generator2 , typename Generator3 $>$ }\\\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder3}{internal\+::\+Cartesian\+Product\+Holder3}}$<$ Generator1, Generator2, Generator3 $>$ \mbox{\hyperlink{namespacetesting_a77b89180fd846e275236409d9704eda2}{Combine}} (const Generator1 \&g1, const Generator2 \&g2, const Generator3 \&g3) +\item +{\footnotesize template$<$typename Generator1 , typename Generator2 , typename Generator3 , typename Generator4 $>$ }\\\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder4}{internal\+::\+Cartesian\+Product\+Holder4}}$<$ Generator1, Generator2, Generator3, Generator4 $>$ \mbox{\hyperlink{namespacetesting_abf420810fcd8190a98c2927862805a3f}{Combine}} (const Generator1 \&g1, const Generator2 \&g2, const Generator3 \&g3, const Generator4 \&g4) +\item +{\footnotesize template$<$typename Generator1 , typename Generator2 , typename Generator3 , typename Generator4 , typename Generator5 $>$ }\\\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder5}{internal\+::\+Cartesian\+Product\+Holder5}}$<$ Generator1, Generator2, Generator3, Generator4, Generator5 $>$ \mbox{\hyperlink{namespacetesting_a81505186d64f5b5763a0e268bc2e5650}{Combine}} (const Generator1 \&g1, const Generator2 \&g2, const Generator3 \&g3, const Generator4 \&g4, const Generator5 \&g5) +\item +{\footnotesize template$<$typename Generator1 , typename Generator2 , typename Generator3 , typename Generator4 , typename Generator5 , typename Generator6 $>$ }\\\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder6}{internal\+::\+Cartesian\+Product\+Holder6}}$<$ Generator1, Generator2, Generator3, Generator4, Generator5, Generator6 $>$ \mbox{\hyperlink{namespacetesting_adccda33f9b3ad18896cb341979fe12b4}{Combine}} (const Generator1 \&g1, const Generator2 \&g2, const Generator3 \&g3, const Generator4 \&g4, const Generator5 \&g5, const Generator6 \&g6) +\item +{\footnotesize template$<$typename Generator1 , typename Generator2 , typename Generator3 , typename Generator4 , typename Generator5 , typename Generator6 , typename Generator7 $>$ }\\\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder7}{internal\+::\+Cartesian\+Product\+Holder7}}$<$ Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7 $>$ \mbox{\hyperlink{namespacetesting_a314759a93c251ca78b75c7f3ae8eda80}{Combine}} (const Generator1 \&g1, const Generator2 \&g2, const Generator3 \&g3, const Generator4 \&g4, const Generator5 \&g5, const Generator6 \&g6, const Generator7 \&g7) +\item +{\footnotesize template$<$typename Generator1 , typename Generator2 , typename Generator3 , typename Generator4 , typename Generator5 , typename Generator6 , typename Generator7 , typename Generator8 $>$ }\\\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder8}{internal\+::\+Cartesian\+Product\+Holder8}}$<$ Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8 $>$ \mbox{\hyperlink{namespacetesting_ac5508abb9d05e22332c792d101c13b2b}{Combine}} (const Generator1 \&g1, const Generator2 \&g2, const Generator3 \&g3, const Generator4 \&g4, const Generator5 \&g5, const Generator6 \&g6, const Generator7 \&g7, const Generator8 \&g8) +\item +{\footnotesize template$<$typename Generator1 , typename Generator2 , typename Generator3 , typename Generator4 , typename Generator5 , typename Generator6 , typename Generator7 , typename Generator8 , typename Generator9 $>$ }\\\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder9}{internal\+::\+Cartesian\+Product\+Holder9}}$<$ Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8, Generator9 $>$ \mbox{\hyperlink{namespacetesting_a928ed7d1e8dd1dde0da5d7d3838384d2}{Combine}} (const Generator1 \&g1, const Generator2 \&g2, const Generator3 \&g3, const Generator4 \&g4, const Generator5 \&g5, const Generator6 \&g6, const Generator7 \&g7, const Generator8 \&g8, const Generator9 \&g9) +\item +{\footnotesize template$<$typename Generator1 , typename Generator2 , typename Generator3 , typename Generator4 , typename Generator5 , typename Generator6 , typename Generator7 , typename Generator8 , typename Generator9 , typename Generator10 $>$ }\\\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder10}{internal\+::\+Cartesian\+Product\+Holder10}}$<$ Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8, Generator9, Generator10 $>$ \mbox{\hyperlink{namespacetesting_a0590cd15c5bafaea9f5d2b1061e0a28b}{Combine}} (const Generator1 \&g1, const Generator2 \&g2, const Generator3 \&g3, const Generator4 \&g4, const Generator5 \&g5, const Generator6 \&g6, const Generator7 \&g7, const Generator8 \&g8, const Generator9 \&g9, const Generator10 \&g10) +\item +{\footnotesize template$<$typename Pred , typename T1 $>$ }\\Assertion\+Result \mbox{\hyperlink{namespacetesting_a7f73180474723be6e92185d6fa9e7c9f}{Assert\+Pred1\+Helper}} (const char $\ast$pred\+\_\+text, const char $\ast$e1, Pred pred, const T1 \&v1) +\item +{\footnotesize template$<$typename Pred , typename T1 , typename T2 $>$ }\\Assertion\+Result \mbox{\hyperlink{namespacetesting_aa6587938029dd8733ecb885068f08247}{Assert\+Pred2\+Helper}} (const char $\ast$pred\+\_\+text, const char $\ast$e1, const char $\ast$e2, Pred pred, const T1 \&v1, const T2 \&v2) +\item +{\footnotesize template$<$typename Pred , typename T1 , typename T2 , typename T3 $>$ }\\Assertion\+Result \mbox{\hyperlink{namespacetesting_ac92dcbd00a0ffb2913e65d286e321a22}{Assert\+Pred3\+Helper}} (const char $\ast$pred\+\_\+text, const char $\ast$e1, const char $\ast$e2, const char $\ast$e3, Pred pred, const T1 \&v1, const T2 \&v2, const T3 \&v3) +\item +{\footnotesize template$<$typename Pred , typename T1 , typename T2 , typename T3 , typename T4 $>$ }\\Assertion\+Result \mbox{\hyperlink{namespacetesting_ae90c778d69db4682e8fd8baaa0a9f9cd}{Assert\+Pred4\+Helper}} (const char $\ast$pred\+\_\+text, const char $\ast$e1, const char $\ast$e2, const char $\ast$e3, const char $\ast$e4, Pred pred, const T1 \&v1, const T2 \&v2, const T3 \&v3, const T4 \&v4) +\item +{\footnotesize template$<$typename Pred , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 $>$ }\\Assertion\+Result \mbox{\hyperlink{namespacetesting_addcf52b273ce17269cbf4956cfe600a6}{Assert\+Pred5\+Helper}} (const char $\ast$pred\+\_\+text, const char $\ast$e1, const char $\ast$e2, const char $\ast$e3, const char $\ast$e4, const char $\ast$e5, Pred pred, const T1 \&v1, const T2 \&v2, const T3 \&v3, const T4 \&v4, const T5 \&v5) +\item +\mbox{\hyperlink{classtesting_1_1_environment}{Environment}} $\ast$ \mbox{\hyperlink{namespacetesting_a460d7b998622e332392c1e00be3a60d5}{Add\+Global\+Test\+Environment}} (\mbox{\hyperlink{classtesting_1_1_environment}{Environment}} $\ast$env) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} void \mbox{\hyperlink{namespacetesting_aee3f6f99df893f576f705f66c0559482}{Init\+Google\+Test}} (int $\ast$argc, char $\ast$$\ast$argv) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} void \mbox{\hyperlink{namespacetesting_a6e9d83553f1d10818d698d45689d8adb}{Init\+Google\+Test}} (int $\ast$argc, wchar\+\_\+t $\ast$$\ast$argv) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result \mbox{\hyperlink{namespacetesting_a5c90a86562b2470213c07742e0eeb0fe}{Is\+Substring}} (const char $\ast$needle\+\_\+expr, const char $\ast$haystack\+\_\+expr, const char $\ast$needle, const char $\ast$haystack) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result \mbox{\hyperlink{namespacetesting_a08ce65847491b27a38cbac3ac15e3035}{Is\+Substring}} (const char $\ast$needle\+\_\+expr, const char $\ast$haystack\+\_\+expr, const wchar\+\_\+t $\ast$needle, const wchar\+\_\+t $\ast$haystack) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result \mbox{\hyperlink{namespacetesting_ab553b649b06ef2339cbd90f8dfa119f0}{Is\+Not\+Substring}} (const char $\ast$needle\+\_\+expr, const char $\ast$haystack\+\_\+expr, const char $\ast$needle, const char $\ast$haystack) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result \mbox{\hyperlink{namespacetesting_a28868925c50d541c8568a540b6457e54}{Is\+Not\+Substring}} (const char $\ast$needle\+\_\+expr, const char $\ast$haystack\+\_\+expr, const wchar\+\_\+t $\ast$needle, const wchar\+\_\+t $\ast$haystack) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result \mbox{\hyperlink{namespacetesting_a32718fab95b2833ab5ffc9cfc9f5c8b0}{Is\+Substring}} (const char $\ast$needle\+\_\+expr, const char $\ast$haystack\+\_\+expr, const \+::std\+::string \&needle, const \+::std\+::string \&haystack) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result \mbox{\hyperlink{namespacetesting_a645d822e47dc64b9923e78c880807f12}{Is\+Not\+Substring}} (const char $\ast$needle\+\_\+expr, const char $\ast$haystack\+\_\+expr, const \+::std\+::string \&needle, const \+::std\+::string \&haystack) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result \mbox{\hyperlink{namespacetesting_a2ff5c4d0c112d92b20232bd0cf173904}{Is\+Substring}} (const char $\ast$needle\+\_\+expr, const char $\ast$haystack\+\_\+expr, const \+::std\+::wstring \&needle, const \+::std\+::wstring \&haystack) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result \mbox{\hyperlink{namespacetesting_a2205435db77abd191fb8209bba41862a}{Is\+Not\+Substring}} (const char $\ast$needle\+\_\+expr, const char $\ast$haystack\+\_\+expr, const \+::std\+::wstring \&needle, const \+::std\+::wstring \&haystack) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result \mbox{\hyperlink{namespacetesting_a69106491c2e7f50e50da0ce5e8ae4374}{Float\+LE}} (const char $\ast$expr1, const char $\ast$expr2, float val1, float val2) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result \mbox{\hyperlink{namespacetesting_a84c020b981d0eb4eabfb0feda155aaaf}{Double\+LE}} (const char $\ast$expr1, const char $\ast$expr2, double val1, double val2) +\item +{\footnotesize template$<$typename T1 , typename T2 $>$ }\\bool \mbox{\hyperlink{namespacetesting_a661e70fc6afeb5c085eed3716aa45059}{Static\+Assert\+Type\+Eq}} () +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} std\+::string \mbox{\hyperlink{namespacetesting_abcf5181cecc3c07915dceb3de46ab07f}{Temp\+Dir}} () +\item +{\footnotesize template$<$int \&... Explicit\+Parameter\+Barrier, typename Factory $>$ }\\\mbox{\hyperlink{classtesting_1_1_test_info}{Test\+Info}} $\ast$ \mbox{\hyperlink{namespacetesting_a302c84bdc88f2138696da2a4756b6466}{Register\+Test}} (const char $\ast$test\+\_\+suite\+\_\+name, const char $\ast$test\+\_\+name, const char $\ast$type\+\_\+param, const char $\ast$value\+\_\+param, const char $\ast$file, int line, Factory factory) +\end{DoxyCompactItemize} +\subsection*{Variables} +\begin{DoxyCompactItemize} +\item +class \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} \mbox{\hyperlink{classtesting_1_1_scoped_trace}{testing\+::\+Scoped\+Trace}} \mbox{\hyperlink{namespacetesting_aa09221196f0a830d5bf1c63ffce69dc3}{G\+T\+E\+S\+T\+\_\+\+A\+T\+T\+R\+I\+B\+U\+T\+E\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+}} +\end{DoxyCompactItemize} + + +\subsection{Typedef Documentation} +\mbox{\Hypertarget{namespacetesting_a992de1d091ce660f451d1e8b3ce30fd6}\label{namespacetesting_a992de1d091ce660f451d1e8b3ce30fd6}} +\index{testing@{testing}!Time\+In\+Millis@{Time\+In\+Millis}} +\index{Time\+In\+Millis@{Time\+In\+Millis}!testing@{testing}} +\subsubsection{\texorpdfstring{Time\+In\+Millis}{TimeInMillis}} +{\footnotesize\ttfamily typedef \mbox{\hyperlink{namespacetesting_1_1internal_a66a845df404b38fe85c5e14a069f255a}{internal\+::\+Time\+In\+Millis}} \mbox{\hyperlink{namespacetesting_a992de1d091ce660f451d1e8b3ce30fd6}{testing\+::\+Time\+In\+Millis}}} + + + +Definition at line 15127 of file gtest.\+h. + + + +\subsection{Function Documentation} +\mbox{\Hypertarget{namespacetesting_a460d7b998622e332392c1e00be3a60d5}\label{namespacetesting_a460d7b998622e332392c1e00be3a60d5}} +\index{testing@{testing}!Add\+Global\+Test\+Environment@{Add\+Global\+Test\+Environment}} +\index{Add\+Global\+Test\+Environment@{Add\+Global\+Test\+Environment}!testing@{testing}} +\subsubsection{\texorpdfstring{Add\+Global\+Test\+Environment()}{AddGlobalTestEnvironment()}} +{\footnotesize\ttfamily \mbox{\hyperlink{classtesting_1_1_environment}{Environment}}$\ast$ testing\+::\+Add\+Global\+Test\+Environment (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classtesting_1_1_environment}{Environment}} $\ast$}]{env }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 16067 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_a7f73180474723be6e92185d6fa9e7c9f}\label{namespacetesting_a7f73180474723be6e92185d6fa9e7c9f}} +\index{testing@{testing}!Assert\+Pred1\+Helper@{Assert\+Pred1\+Helper}} +\index{Assert\+Pred1\+Helper@{Assert\+Pred1\+Helper}!testing@{testing}} +\subsubsection{\texorpdfstring{Assert\+Pred1\+Helper()}{AssertPred1Helper()}} +{\footnotesize\ttfamily template$<$typename Pred , typename T1 $>$ \\ +Assertion\+Result testing\+::\+Assert\+Pred1\+Helper (\begin{DoxyParamCaption}\item[{const char $\ast$}]{pred\+\_\+text, }\item[{const char $\ast$}]{e1, }\item[{Pred}]{pred, }\item[{const T1 \&}]{v1 }\end{DoxyParamCaption})} + + + +Definition at line 14715 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_aa6587938029dd8733ecb885068f08247}\label{namespacetesting_aa6587938029dd8733ecb885068f08247}} +\index{testing@{testing}!Assert\+Pred2\+Helper@{Assert\+Pred2\+Helper}} +\index{Assert\+Pred2\+Helper@{Assert\+Pred2\+Helper}!testing@{testing}} +\subsubsection{\texorpdfstring{Assert\+Pred2\+Helper()}{AssertPred2Helper()}} +{\footnotesize\ttfamily template$<$typename Pred , typename T1 , typename T2 $>$ \\ +Assertion\+Result testing\+::\+Assert\+Pred2\+Helper (\begin{DoxyParamCaption}\item[{const char $\ast$}]{pred\+\_\+text, }\item[{const char $\ast$}]{e1, }\item[{const char $\ast$}]{e2, }\item[{Pred}]{pred, }\item[{const T1 \&}]{v1, }\item[{const T2 \&}]{v2 }\end{DoxyParamCaption})} + + + +Definition at line 14758 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_ac92dcbd00a0ffb2913e65d286e321a22}\label{namespacetesting_ac92dcbd00a0ffb2913e65d286e321a22}} +\index{testing@{testing}!Assert\+Pred3\+Helper@{Assert\+Pred3\+Helper}} +\index{Assert\+Pred3\+Helper@{Assert\+Pred3\+Helper}!testing@{testing}} +\subsubsection{\texorpdfstring{Assert\+Pred3\+Helper()}{AssertPred3Helper()}} +{\footnotesize\ttfamily template$<$typename Pred , typename T1 , typename T2 , typename T3 $>$ \\ +Assertion\+Result testing\+::\+Assert\+Pred3\+Helper (\begin{DoxyParamCaption}\item[{const char $\ast$}]{pred\+\_\+text, }\item[{const char $\ast$}]{e1, }\item[{const char $\ast$}]{e2, }\item[{const char $\ast$}]{e3, }\item[{Pred}]{pred, }\item[{const T1 \&}]{v1, }\item[{const T2 \&}]{v2, }\item[{const T3 \&}]{v3 }\end{DoxyParamCaption})} + + + +Definition at line 14808 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_ae90c778d69db4682e8fd8baaa0a9f9cd}\label{namespacetesting_ae90c778d69db4682e8fd8baaa0a9f9cd}} +\index{testing@{testing}!Assert\+Pred4\+Helper@{Assert\+Pred4\+Helper}} +\index{Assert\+Pred4\+Helper@{Assert\+Pred4\+Helper}!testing@{testing}} +\subsubsection{\texorpdfstring{Assert\+Pred4\+Helper()}{AssertPred4Helper()}} +{\footnotesize\ttfamily template$<$typename Pred , typename T1 , typename T2 , typename T3 , typename T4 $>$ \\ +Assertion\+Result testing\+::\+Assert\+Pred4\+Helper (\begin{DoxyParamCaption}\item[{const char $\ast$}]{pred\+\_\+text, }\item[{const char $\ast$}]{e1, }\item[{const char $\ast$}]{e2, }\item[{const char $\ast$}]{e3, }\item[{const char $\ast$}]{e4, }\item[{Pred}]{pred, }\item[{const T1 \&}]{v1, }\item[{const T2 \&}]{v2, }\item[{const T3 \&}]{v3, }\item[{const T4 \&}]{v4 }\end{DoxyParamCaption})} + + + +Definition at line 14864 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_addcf52b273ce17269cbf4956cfe600a6}\label{namespacetesting_addcf52b273ce17269cbf4956cfe600a6}} +\index{testing@{testing}!Assert\+Pred5\+Helper@{Assert\+Pred5\+Helper}} +\index{Assert\+Pred5\+Helper@{Assert\+Pred5\+Helper}!testing@{testing}} +\subsubsection{\texorpdfstring{Assert\+Pred5\+Helper()}{AssertPred5Helper()}} +{\footnotesize\ttfamily template$<$typename Pred , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 $>$ \\ +Assertion\+Result testing\+::\+Assert\+Pred5\+Helper (\begin{DoxyParamCaption}\item[{const char $\ast$}]{pred\+\_\+text, }\item[{const char $\ast$}]{e1, }\item[{const char $\ast$}]{e2, }\item[{const char $\ast$}]{e3, }\item[{const char $\ast$}]{e4, }\item[{const char $\ast$}]{e5, }\item[{Pred}]{pred, }\item[{const T1 \&}]{v1, }\item[{const T2 \&}]{v2, }\item[{const T3 \&}]{v3, }\item[{const T4 \&}]{v4, }\item[{const T5 \&}]{v5 }\end{DoxyParamCaption})} + + + +Definition at line 14926 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_aa9f9150ed43f949c8a6bacf3f04c03ce}\label{namespacetesting_aa9f9150ed43f949c8a6bacf3f04c03ce}} +\index{testing@{testing}!Bool@{Bool}} +\index{Bool@{Bool}!testing@{testing}} +\subsubsection{\texorpdfstring{Bool()}{Bool()}} +{\footnotesize\ttfamily \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{internal\+::\+Param\+Generator}}$<$bool$>$ testing\+::\+Bool (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 13520 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_a4917922963bacef3e301e67366c41df3}\label{namespacetesting_a4917922963bacef3e301e67366c41df3}} +\index{testing@{testing}!Combine@{Combine}} +\index{Combine@{Combine}!testing@{testing}} +\subsubsection{\texorpdfstring{Combine()}{Combine()}\hspace{0.1cm}{\footnotesize\ttfamily [1/9]}} +{\footnotesize\ttfamily template$<$typename Generator1 , typename Generator2 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder2}{internal\+::\+Cartesian\+Product\+Holder2}}$<$Generator1, Generator2$>$ testing\+::\+Combine (\begin{DoxyParamCaption}\item[{const Generator1 \&}]{g1, }\item[{const Generator2 \&}]{g2 }\end{DoxyParamCaption})} + + + +Definition at line 13571 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_a77b89180fd846e275236409d9704eda2}\label{namespacetesting_a77b89180fd846e275236409d9704eda2}} +\index{testing@{testing}!Combine@{Combine}} +\index{Combine@{Combine}!testing@{testing}} +\subsubsection{\texorpdfstring{Combine()}{Combine()}\hspace{0.1cm}{\footnotesize\ttfamily [2/9]}} +{\footnotesize\ttfamily template$<$typename Generator1 , typename Generator2 , typename Generator3 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder3}{internal\+::\+Cartesian\+Product\+Holder3}}$<$Generator1, Generator2, Generator3$>$ testing\+::\+Combine (\begin{DoxyParamCaption}\item[{const Generator1 \&}]{g1, }\item[{const Generator2 \&}]{g2, }\item[{const Generator3 \&}]{g3 }\end{DoxyParamCaption})} + + + +Definition at line 13578 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_abf420810fcd8190a98c2927862805a3f}\label{namespacetesting_abf420810fcd8190a98c2927862805a3f}} +\index{testing@{testing}!Combine@{Combine}} +\index{Combine@{Combine}!testing@{testing}} +\subsubsection{\texorpdfstring{Combine()}{Combine()}\hspace{0.1cm}{\footnotesize\ttfamily [3/9]}} +{\footnotesize\ttfamily template$<$typename Generator1 , typename Generator2 , typename Generator3 , typename Generator4 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder4}{internal\+::\+Cartesian\+Product\+Holder4}}$<$Generator1, Generator2, Generator3, Generator4$>$ testing\+::\+Combine (\begin{DoxyParamCaption}\item[{const Generator1 \&}]{g1, }\item[{const Generator2 \&}]{g2, }\item[{const Generator3 \&}]{g3, }\item[{const Generator4 \&}]{g4 }\end{DoxyParamCaption})} + + + +Definition at line 13587 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_a81505186d64f5b5763a0e268bc2e5650}\label{namespacetesting_a81505186d64f5b5763a0e268bc2e5650}} +\index{testing@{testing}!Combine@{Combine}} +\index{Combine@{Combine}!testing@{testing}} +\subsubsection{\texorpdfstring{Combine()}{Combine()}\hspace{0.1cm}{\footnotesize\ttfamily [4/9]}} +{\footnotesize\ttfamily template$<$typename Generator1 , typename Generator2 , typename Generator3 , typename Generator4 , typename Generator5 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder5}{internal\+::\+Cartesian\+Product\+Holder5}}$<$Generator1, Generator2, Generator3, Generator4, Generator5$>$ testing\+::\+Combine (\begin{DoxyParamCaption}\item[{const Generator1 \&}]{g1, }\item[{const Generator2 \&}]{g2, }\item[{const Generator3 \&}]{g3, }\item[{const Generator4 \&}]{g4, }\item[{const Generator5 \&}]{g5 }\end{DoxyParamCaption})} + + + +Definition at line 13598 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_adccda33f9b3ad18896cb341979fe12b4}\label{namespacetesting_adccda33f9b3ad18896cb341979fe12b4}} +\index{testing@{testing}!Combine@{Combine}} +\index{Combine@{Combine}!testing@{testing}} +\subsubsection{\texorpdfstring{Combine()}{Combine()}\hspace{0.1cm}{\footnotesize\ttfamily [5/9]}} +{\footnotesize\ttfamily template$<$typename Generator1 , typename Generator2 , typename Generator3 , typename Generator4 , typename Generator5 , typename Generator6 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder6}{internal\+::\+Cartesian\+Product\+Holder6}}$<$Generator1, Generator2, Generator3, Generator4, Generator5, Generator6$>$ testing\+::\+Combine (\begin{DoxyParamCaption}\item[{const Generator1 \&}]{g1, }\item[{const Generator2 \&}]{g2, }\item[{const Generator3 \&}]{g3, }\item[{const Generator4 \&}]{g4, }\item[{const Generator5 \&}]{g5, }\item[{const Generator6 \&}]{g6 }\end{DoxyParamCaption})} + + + +Definition at line 13609 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_a314759a93c251ca78b75c7f3ae8eda80}\label{namespacetesting_a314759a93c251ca78b75c7f3ae8eda80}} +\index{testing@{testing}!Combine@{Combine}} +\index{Combine@{Combine}!testing@{testing}} +\subsubsection{\texorpdfstring{Combine()}{Combine()}\hspace{0.1cm}{\footnotesize\ttfamily [6/9]}} +{\footnotesize\ttfamily template$<$typename Generator1 , typename Generator2 , typename Generator3 , typename Generator4 , typename Generator5 , typename Generator6 , typename Generator7 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder7}{internal\+::\+Cartesian\+Product\+Holder7}}$<$Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7$>$ testing\+::\+Combine (\begin{DoxyParamCaption}\item[{const Generator1 \&}]{g1, }\item[{const Generator2 \&}]{g2, }\item[{const Generator3 \&}]{g3, }\item[{const Generator4 \&}]{g4, }\item[{const Generator5 \&}]{g5, }\item[{const Generator6 \&}]{g6, }\item[{const Generator7 \&}]{g7 }\end{DoxyParamCaption})} + + + +Definition at line 13621 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_ac5508abb9d05e22332c792d101c13b2b}\label{namespacetesting_ac5508abb9d05e22332c792d101c13b2b}} +\index{testing@{testing}!Combine@{Combine}} +\index{Combine@{Combine}!testing@{testing}} +\subsubsection{\texorpdfstring{Combine()}{Combine()}\hspace{0.1cm}{\footnotesize\ttfamily [7/9]}} +{\footnotesize\ttfamily template$<$typename Generator1 , typename Generator2 , typename Generator3 , typename Generator4 , typename Generator5 , typename Generator6 , typename Generator7 , typename Generator8 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder8}{internal\+::\+Cartesian\+Product\+Holder8}}$<$Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8$>$ testing\+::\+Combine (\begin{DoxyParamCaption}\item[{const Generator1 \&}]{g1, }\item[{const Generator2 \&}]{g2, }\item[{const Generator3 \&}]{g3, }\item[{const Generator4 \&}]{g4, }\item[{const Generator5 \&}]{g5, }\item[{const Generator6 \&}]{g6, }\item[{const Generator7 \&}]{g7, }\item[{const Generator8 \&}]{g8 }\end{DoxyParamCaption})} + + + +Definition at line 13634 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_a928ed7d1e8dd1dde0da5d7d3838384d2}\label{namespacetesting_a928ed7d1e8dd1dde0da5d7d3838384d2}} +\index{testing@{testing}!Combine@{Combine}} +\index{Combine@{Combine}!testing@{testing}} +\subsubsection{\texorpdfstring{Combine()}{Combine()}\hspace{0.1cm}{\footnotesize\ttfamily [8/9]}} +{\footnotesize\ttfamily template$<$typename Generator1 , typename Generator2 , typename Generator3 , typename Generator4 , typename Generator5 , typename Generator6 , typename Generator7 , typename Generator8 , typename Generator9 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder9}{internal\+::\+Cartesian\+Product\+Holder9}}$<$Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8, Generator9$>$ testing\+::\+Combine (\begin{DoxyParamCaption}\item[{const Generator1 \&}]{g1, }\item[{const Generator2 \&}]{g2, }\item[{const Generator3 \&}]{g3, }\item[{const Generator4 \&}]{g4, }\item[{const Generator5 \&}]{g5, }\item[{const Generator6 \&}]{g6, }\item[{const Generator7 \&}]{g7, }\item[{const Generator8 \&}]{g8, }\item[{const Generator9 \&}]{g9 }\end{DoxyParamCaption})} + + + +Definition at line 13648 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_a0590cd15c5bafaea9f5d2b1061e0a28b}\label{namespacetesting_a0590cd15c5bafaea9f5d2b1061e0a28b}} +\index{testing@{testing}!Combine@{Combine}} +\index{Combine@{Combine}!testing@{testing}} +\subsubsection{\texorpdfstring{Combine()}{Combine()}\hspace{0.1cm}{\footnotesize\ttfamily [9/9]}} +{\footnotesize\ttfamily template$<$typename Generator1 , typename Generator2 , typename Generator3 , typename Generator4 , typename Generator5 , typename Generator6 , typename Generator7 , typename Generator8 , typename Generator9 , typename Generator10 $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder10}{internal\+::\+Cartesian\+Product\+Holder10}}$<$Generator1, Generator2, Generator3, Generator4, Generator5, Generator6, Generator7, Generator8, Generator9, Generator10$>$ testing\+::\+Combine (\begin{DoxyParamCaption}\item[{const Generator1 \&}]{g1, }\item[{const Generator2 \&}]{g2, }\item[{const Generator3 \&}]{g3, }\item[{const Generator4 \&}]{g4, }\item[{const Generator5 \&}]{g5, }\item[{const Generator6 \&}]{g6, }\item[{const Generator7 \&}]{g7, }\item[{const Generator8 \&}]{g8, }\item[{const Generator9 \&}]{g9, }\item[{const Generator10 \&}]{g10 }\end{DoxyParamCaption})} + + + +Definition at line 13663 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_a84c020b981d0eb4eabfb0feda155aaaf}\label{namespacetesting_a84c020b981d0eb4eabfb0feda155aaaf}} +\index{testing@{testing}!Double\+LE@{Double\+LE}} +\index{Double\+LE@{Double\+LE}!testing@{testing}} +\subsubsection{\texorpdfstring{Double\+L\+E()}{DoubleLE()}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result testing\+::\+Double\+LE (\begin{DoxyParamCaption}\item[{const char $\ast$}]{expr1, }\item[{const char $\ast$}]{expr2, }\item[{double}]{val1, }\item[{double}]{val2 }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_a69106491c2e7f50e50da0ce5e8ae4374}\label{namespacetesting_a69106491c2e7f50e50da0ce5e8ae4374}} +\index{testing@{testing}!Float\+LE@{Float\+LE}} +\index{Float\+LE@{Float\+LE}!testing@{testing}} +\subsubsection{\texorpdfstring{Float\+L\+E()}{FloatLE()}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result testing\+::\+Float\+LE (\begin{DoxyParamCaption}\item[{const char $\ast$}]{expr1, }\item[{const char $\ast$}]{expr2, }\item[{float}]{val1, }\item[{float}]{val2 }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_a37b7e87f0a5f502c6918f37d1768c1f3}\label{namespacetesting_a37b7e87f0a5f502c6918f37d1768c1f3}} +\index{testing@{testing}!G\+T\+E\+S\+T\+\_\+\+D\+E\+C\+L\+A\+R\+E\+\_\+string\+\_\+@{G\+T\+E\+S\+T\+\_\+\+D\+E\+C\+L\+A\+R\+E\+\_\+string\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+D\+E\+C\+L\+A\+R\+E\+\_\+string\+\_\+@{G\+T\+E\+S\+T\+\_\+\+D\+E\+C\+L\+A\+R\+E\+\_\+string\+\_\+}!testing@{testing}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+D\+E\+C\+L\+A\+R\+E\+\_\+string\+\_\+()}{GTEST\_DECLARE\_string\_()}} +{\footnotesize\ttfamily testing\+::\+G\+T\+E\+S\+T\+\_\+\+D\+E\+C\+L\+A\+R\+E\+\_\+string\+\_\+ (\begin{DoxyParamCaption}\item[{death\+\_\+test\+\_\+style}]{ }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_a428e5944490e497df683cb8324ce4489}\label{namespacetesting_a428e5944490e497df683cb8324ce4489}} +\index{testing@{testing}!G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+bool\+\_\+@{G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+bool\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+bool\+\_\+@{G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+bool\+\_\+}!testing@{testing}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+bool\+\_\+()}{GTEST\_DEFINE\_bool\_()}} +{\footnotesize\ttfamily testing\+::\+G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+bool\+\_\+ (\begin{DoxyParamCaption}\item[{death\+\_\+test\+\_\+use\+\_\+fork}]{, }\item[{\mbox{\hyperlink{namespacetesting_1_1internal_a1055088bb9b867e1b7b8f096f519d7c5}{internal\+::\+Bool\+From\+G\+Test\+Env}}(\char`\"{}death\+\_\+test\+\_\+use\+\_\+fork\char`\"{}, false)}]{, }\item[{\char`\"{}Instructs to use fork()/\+\_\+exit() instead of clone() in death tests. \char`\"{} \char`\"{}Ignored and always uses fork() on P\+O\+S\+IX systems where clone() is not \char`\"{} \char`\"{}implemented. Useful when running under valgrind or similar tools if \char`\"{} \char`\"{}those do not support clone(). Valgrind 3.\+3.\+1 will just fail if \char`\"{} \char`\"{}it sees an unsupported combination of clone() flags. \char`\"{} \char`\"{}It is not recommended to use this flag w/o valgrind though it will \char`\"{} \char`\"{}work in 99\% of the cases. Once valgrind is}]{fixed, }\item[{this flag will \char`\"{} \char`\"{}most likely be removed.\char`\"{}}]{ }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_a8e954ed3f0f6ca2e90b043e419c74123}\label{namespacetesting_a8e954ed3f0f6ca2e90b043e419c74123}} +\index{testing@{testing}!G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+string\+\_\+@{G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+string\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+string\+\_\+@{G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+string\+\_\+}!testing@{testing}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+string\+\_\+()}{GTEST\_DEFINE\_string\_()}} +{\footnotesize\ttfamily testing\+::\+G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+string\+\_\+ (\begin{DoxyParamCaption}\item[{death\+\_\+test\+\_\+style}]{, }\item[{\mbox{\hyperlink{namespacetesting_1_1internal_a0967cbf18fb1594f82512d8d822aba21}{internal\+::\+String\+From\+G\+Test\+Env}}(\char`\"{}death\+\_\+test\+\_\+style\char`\"{}, k\+Default\+Death\+Test\+Style)}]{, }\item[{\char`\"{}Indicates how to run a death test in a forked child process\+: \char`\"{} \char`\"{}\textbackslash{}eadsafe\textbackslash{}hild process re-\/executes the test binary \char`\"{} \char`\"{}from the beginning, running only the specific death test) or \char`\"{} \char`\"{}\textbackslash{}t\textbackslash{}hild process runs the death test immediately \char`\"{} \char`\"{}after forking).\char`\"{}}]{ }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_aee3f6f99df893f576f705f66c0559482}\label{namespacetesting_aee3f6f99df893f576f705f66c0559482}} +\index{testing@{testing}!Init\+Google\+Test@{Init\+Google\+Test}} +\index{Init\+Google\+Test@{Init\+Google\+Test}!testing@{testing}} +\subsubsection{\texorpdfstring{Init\+Google\+Test()}{InitGoogleTest()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} void testing\+::\+Init\+Google\+Test (\begin{DoxyParamCaption}\item[{int $\ast$}]{argc, }\item[{char $\ast$$\ast$}]{argv }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_a6e9d83553f1d10818d698d45689d8adb}\label{namespacetesting_a6e9d83553f1d10818d698d45689d8adb}} +\index{testing@{testing}!Init\+Google\+Test@{Init\+Google\+Test}} +\index{Init\+Google\+Test@{Init\+Google\+Test}!testing@{testing}} +\subsubsection{\texorpdfstring{Init\+Google\+Test()}{InitGoogleTest()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} void testing\+::\+Init\+Google\+Test (\begin{DoxyParamCaption}\item[{int $\ast$}]{argc, }\item[{wchar\+\_\+t $\ast$$\ast$}]{argv }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_ab553b649b06ef2339cbd90f8dfa119f0}\label{namespacetesting_ab553b649b06ef2339cbd90f8dfa119f0}} +\index{testing@{testing}!Is\+Not\+Substring@{Is\+Not\+Substring}} +\index{Is\+Not\+Substring@{Is\+Not\+Substring}!testing@{testing}} +\subsubsection{\texorpdfstring{Is\+Not\+Substring()}{IsNotSubstring()}\hspace{0.1cm}{\footnotesize\ttfamily [1/4]}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result testing\+::\+Is\+Not\+Substring (\begin{DoxyParamCaption}\item[{const char $\ast$}]{needle\+\_\+expr, }\item[{const char $\ast$}]{haystack\+\_\+expr, }\item[{const char $\ast$}]{needle, }\item[{const char $\ast$}]{haystack }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_a28868925c50d541c8568a540b6457e54}\label{namespacetesting_a28868925c50d541c8568a540b6457e54}} +\index{testing@{testing}!Is\+Not\+Substring@{Is\+Not\+Substring}} +\index{Is\+Not\+Substring@{Is\+Not\+Substring}!testing@{testing}} +\subsubsection{\texorpdfstring{Is\+Not\+Substring()}{IsNotSubstring()}\hspace{0.1cm}{\footnotesize\ttfamily [2/4]}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result testing\+::\+Is\+Not\+Substring (\begin{DoxyParamCaption}\item[{const char $\ast$}]{needle\+\_\+expr, }\item[{const char $\ast$}]{haystack\+\_\+expr, }\item[{const wchar\+\_\+t $\ast$}]{needle, }\item[{const wchar\+\_\+t $\ast$}]{haystack }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_a645d822e47dc64b9923e78c880807f12}\label{namespacetesting_a645d822e47dc64b9923e78c880807f12}} +\index{testing@{testing}!Is\+Not\+Substring@{Is\+Not\+Substring}} +\index{Is\+Not\+Substring@{Is\+Not\+Substring}!testing@{testing}} +\subsubsection{\texorpdfstring{Is\+Not\+Substring()}{IsNotSubstring()}\hspace{0.1cm}{\footnotesize\ttfamily [3/4]}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result testing\+::\+Is\+Not\+Substring (\begin{DoxyParamCaption}\item[{const char $\ast$}]{needle\+\_\+expr, }\item[{const char $\ast$}]{haystack\+\_\+expr, }\item[{const \+::std\+::string \&}]{needle, }\item[{const \+::std\+::string \&}]{haystack }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_a2205435db77abd191fb8209bba41862a}\label{namespacetesting_a2205435db77abd191fb8209bba41862a}} +\index{testing@{testing}!Is\+Not\+Substring@{Is\+Not\+Substring}} +\index{Is\+Not\+Substring@{Is\+Not\+Substring}!testing@{testing}} +\subsubsection{\texorpdfstring{Is\+Not\+Substring()}{IsNotSubstring()}\hspace{0.1cm}{\footnotesize\ttfamily [4/4]}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result testing\+::\+Is\+Not\+Substring (\begin{DoxyParamCaption}\item[{const char $\ast$}]{needle\+\_\+expr, }\item[{const char $\ast$}]{haystack\+\_\+expr, }\item[{const \+::std\+::wstring \&}]{needle, }\item[{const \+::std\+::wstring \&}]{haystack }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_a5c90a86562b2470213c07742e0eeb0fe}\label{namespacetesting_a5c90a86562b2470213c07742e0eeb0fe}} +\index{testing@{testing}!Is\+Substring@{Is\+Substring}} +\index{Is\+Substring@{Is\+Substring}!testing@{testing}} +\subsubsection{\texorpdfstring{Is\+Substring()}{IsSubstring()}\hspace{0.1cm}{\footnotesize\ttfamily [1/4]}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result testing\+::\+Is\+Substring (\begin{DoxyParamCaption}\item[{const char $\ast$}]{needle\+\_\+expr, }\item[{const char $\ast$}]{haystack\+\_\+expr, }\item[{const char $\ast$}]{needle, }\item[{const char $\ast$}]{haystack }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_a08ce65847491b27a38cbac3ac15e3035}\label{namespacetesting_a08ce65847491b27a38cbac3ac15e3035}} +\index{testing@{testing}!Is\+Substring@{Is\+Substring}} +\index{Is\+Substring@{Is\+Substring}!testing@{testing}} +\subsubsection{\texorpdfstring{Is\+Substring()}{IsSubstring()}\hspace{0.1cm}{\footnotesize\ttfamily [2/4]}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result testing\+::\+Is\+Substring (\begin{DoxyParamCaption}\item[{const char $\ast$}]{needle\+\_\+expr, }\item[{const char $\ast$}]{haystack\+\_\+expr, }\item[{const wchar\+\_\+t $\ast$}]{needle, }\item[{const wchar\+\_\+t $\ast$}]{haystack }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_a32718fab95b2833ab5ffc9cfc9f5c8b0}\label{namespacetesting_a32718fab95b2833ab5ffc9cfc9f5c8b0}} +\index{testing@{testing}!Is\+Substring@{Is\+Substring}} +\index{Is\+Substring@{Is\+Substring}!testing@{testing}} +\subsubsection{\texorpdfstring{Is\+Substring()}{IsSubstring()}\hspace{0.1cm}{\footnotesize\ttfamily [3/4]}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result testing\+::\+Is\+Substring (\begin{DoxyParamCaption}\item[{const char $\ast$}]{needle\+\_\+expr, }\item[{const char $\ast$}]{haystack\+\_\+expr, }\item[{const \+::std\+::string \&}]{needle, }\item[{const \+::std\+::string \&}]{haystack }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_a2ff5c4d0c112d92b20232bd0cf173904}\label{namespacetesting_a2ff5c4d0c112d92b20232bd0cf173904}} +\index{testing@{testing}!Is\+Substring@{Is\+Substring}} +\index{Is\+Substring@{Is\+Substring}!testing@{testing}} +\subsubsection{\texorpdfstring{Is\+Substring()}{IsSubstring()}\hspace{0.1cm}{\footnotesize\ttfamily [4/4]}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result testing\+::\+Is\+Substring (\begin{DoxyParamCaption}\item[{const char $\ast$}]{needle\+\_\+expr, }\item[{const char $\ast$}]{haystack\+\_\+expr, }\item[{const \+::std\+::wstring \&}]{needle, }\item[{const \+::std\+::wstring \&}]{haystack }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_a7b802e532fd68749765cb7dc156130db}\label{namespacetesting_a7b802e532fd68749765cb7dc156130db}} +\index{testing@{testing}!operator$<$$<$@{operator$<$$<$}} +\index{operator$<$$<$@{operator$<$$<$}!testing@{testing}} +\subsubsection{\texorpdfstring{operator$<$$<$()}{operator<<()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily std\+::ostream\& testing\+::operator$<$$<$ (\begin{DoxyParamCaption}\item[{std\+::ostream \&}]{os, }\item[{const \mbox{\hyperlink{classtesting_1_1_message}{Message}} \&}]{sb }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 2758 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_a266e39b7c4691fedb856047673a412d8}\label{namespacetesting_a266e39b7c4691fedb856047673a412d8}} +\index{testing@{testing}!operator$<$$<$@{operator$<$$<$}} +\index{operator$<$$<$@{operator$<$$<$}!testing@{testing}} +\subsubsection{\texorpdfstring{operator$<$$<$()}{operator<<()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily std\+::ostream\& testing\+::operator$<$$<$ (\begin{DoxyParamCaption}\item[{std\+::ostream \&}]{os, }\item[{const Test\+Part\+Result \&}]{result }\end{DoxyParamCaption})} + + + +Definition at line 11501 of file gtest-\/all.\+cc. + +\mbox{\Hypertarget{namespacetesting_aa5717bb1144edd1d262d310ba70c82ed}\label{namespacetesting_aa5717bb1144edd1d262d310ba70c82ed}} +\index{testing@{testing}!Print\+To\+String@{Print\+To\+String}} +\index{Print\+To\+String@{Print\+To\+String}!testing@{testing}} +\subsubsection{\texorpdfstring{Print\+To\+String()}{PrintToString()}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +\+::std\+::string testing\+::\+Print\+To\+String (\begin{DoxyParamCaption}\item[{const T \&}]{value }\end{DoxyParamCaption})} + + + +Definition at line 8969 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_a265ed70a86cf2d6641582c45ad9529e2}\label{namespacetesting_a265ed70a86cf2d6641582c45ad9529e2}} +\index{testing@{testing}!Range@{Range}} +\index{Range@{Range}!testing@{testing}} +\subsubsection{\texorpdfstring{Range()}{Range()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename T , typename IncrementT $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{internal\+::\+Param\+Generator}}$<$T$>$ testing\+::\+Range (\begin{DoxyParamCaption}\item[{T}]{start, }\item[{T}]{end, }\item[{IncrementT}]{step }\end{DoxyParamCaption})} + + + +Definition at line 13389 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_a56a45f85a1238dfc92e6fca03eb3a2e4}\label{namespacetesting_a56a45f85a1238dfc92e6fca03eb3a2e4}} +\index{testing@{testing}!Range@{Range}} +\index{Range@{Range}!testing@{testing}} +\subsubsection{\texorpdfstring{Range()}{Range()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{internal\+::\+Param\+Generator}}$<$T$>$ testing\+::\+Range (\begin{DoxyParamCaption}\item[{T}]{start, }\item[{T}]{end }\end{DoxyParamCaption})} + + + +Definition at line 13395 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_a302c84bdc88f2138696da2a4756b6466}\label{namespacetesting_a302c84bdc88f2138696da2a4756b6466}} +\index{testing@{testing}!Register\+Test@{Register\+Test}} +\index{Register\+Test@{Register\+Test}!testing@{testing}} +\subsubsection{\texorpdfstring{Register\+Test()}{RegisterTest()}} +{\footnotesize\ttfamily template$<$int \&... Explicit\+Parameter\+Barrier, typename Factory $>$ \\ +\mbox{\hyperlink{classtesting_1_1_test_info}{Test\+Info}}$\ast$ testing\+::\+Register\+Test (\begin{DoxyParamCaption}\item[{const char $\ast$}]{test\+\_\+suite\+\_\+name, }\item[{const char $\ast$}]{test\+\_\+name, }\item[{const char $\ast$}]{type\+\_\+param, }\item[{const char $\ast$}]{value\+\_\+param, }\item[{const char $\ast$}]{file, }\item[{int}]{line, }\item[{Factory}]{factory }\end{DoxyParamCaption})} + + + +Definition at line 17063 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_a661e70fc6afeb5c085eed3716aa45059}\label{namespacetesting_a661e70fc6afeb5c085eed3716aa45059}} +\index{testing@{testing}!Static\+Assert\+Type\+Eq@{Static\+Assert\+Type\+Eq}} +\index{Static\+Assert\+Type\+Eq@{Static\+Assert\+Type\+Eq}!testing@{testing}} +\subsubsection{\texorpdfstring{Static\+Assert\+Type\+Eq()}{StaticAssertTypeEq()}} +{\footnotesize\ttfamily template$<$typename T1 , typename T2 $>$ \\ +bool testing\+::\+Static\+Assert\+Type\+Eq (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + + + +Definition at line 16927 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_abcf5181cecc3c07915dceb3de46ab07f}\label{namespacetesting_abcf5181cecc3c07915dceb3de46ab07f}} +\index{testing@{testing}!Temp\+Dir@{Temp\+Dir}} +\index{Temp\+Dir@{Temp\+Dir}!testing@{testing}} +\subsubsection{\texorpdfstring{Temp\+Dir()}{TempDir()}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} std\+::string testing\+::\+Temp\+Dir (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_a374d4e5fbb4c938058fbe81d4c7ff6a6}\label{namespacetesting_a374d4e5fbb4c938058fbe81d4c7ff6a6}} +\index{testing@{testing}!Values@{Values}} +\index{Values@{Values}!testing@{testing}} +\subsubsection{\texorpdfstring{Values()}{Values()}} +{\footnotesize\ttfamily template$<$typename... T$>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_value_array}{internal\+::\+Value\+Array}}$<$T...$>$ testing\+::\+Values (\begin{DoxyParamCaption}\item[{T...}]{v }\end{DoxyParamCaption})} + + + +Definition at line 13496 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_aa67d0c8470c5f69fcfcacc9e775fa982}\label{namespacetesting_aa67d0c8470c5f69fcfcacc9e775fa982}} +\index{testing@{testing}!Values\+In@{Values\+In}} +\index{Values\+In@{Values\+In}!testing@{testing}} +\subsubsection{\texorpdfstring{Values\+In()}{ValuesIn()}\hspace{0.1cm}{\footnotesize\ttfamily [1/3]}} +{\footnotesize\ttfamily template$<$class Container $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{internal\+::\+Param\+Generator}}$<$ typename Container\+::value\+\_\+type $>$ testing\+::\+Values\+In (\begin{DoxyParamCaption}\item[{const Container \&}]{container }\end{DoxyParamCaption})} + + + +Definition at line 13470 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_a96240380ae4d3b4855d07de3b84fb336}\label{namespacetesting_a96240380ae4d3b4855d07de3b84fb336}} +\index{testing@{testing}!Values\+In@{Values\+In}} +\index{Values\+In@{Values\+In}!testing@{testing}} +\subsubsection{\texorpdfstring{Values\+In()}{ValuesIn()}\hspace{0.1cm}{\footnotesize\ttfamily [2/3]}} +{\footnotesize\ttfamily template$<$typename Forward\+Iterator $>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{internal\+::\+Param\+Generator}}$<$ typename \+::\mbox{\hyperlink{structtesting_1_1internal_1_1_iterator_traits}{testing\+::internal\+::\+Iterator\+Traits}}$<$Forward\+Iterator$>$\+::value\+\_\+type$>$ testing\+::\+Values\+In (\begin{DoxyParamCaption}\item[{Forward\+Iterator}]{begin, }\item[{Forward\+Iterator}]{end }\end{DoxyParamCaption})} + + + +Definition at line 13457 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_a0b9ea6594ac06ad5d9eba2511ffa0fb7}\label{namespacetesting_a0b9ea6594ac06ad5d9eba2511ffa0fb7}} +\index{testing@{testing}!Values\+In@{Values\+In}} +\index{Values\+In@{Values\+In}!testing@{testing}} +\subsubsection{\texorpdfstring{Values\+In()}{ValuesIn()}\hspace{0.1cm}{\footnotesize\ttfamily [3/3]}} +{\footnotesize\ttfamily template$<$typename T , size\+\_\+t N$>$ \\ +\mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{internal\+::\+Param\+Generator}}$<$T$>$ testing\+::\+Values\+In (\begin{DoxyParamCaption}\item[{const T(\&)}]{array\mbox{[}\+N\mbox{]} }\end{DoxyParamCaption})} + + + +Definition at line 13465 of file gtest.\+h. + + + +\subsection{Variable Documentation} +\mbox{\Hypertarget{namespacetesting_aa09221196f0a830d5bf1c63ffce69dc3}\label{namespacetesting_aa09221196f0a830d5bf1c63ffce69dc3}} +\index{testing@{testing}!G\+T\+E\+S\+T\+\_\+\+A\+T\+T\+R\+I\+B\+U\+T\+E\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+@{G\+T\+E\+S\+T\+\_\+\+A\+T\+T\+R\+I\+B\+U\+T\+E\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+A\+T\+T\+R\+I\+B\+U\+T\+E\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+@{G\+T\+E\+S\+T\+\_\+\+A\+T\+T\+R\+I\+B\+U\+T\+E\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+}!testing@{testing}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+A\+T\+T\+R\+I\+B\+U\+T\+E\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+}{GTEST\_ATTRIBUTE\_UNUSED\_}} +{\footnotesize\ttfamily class \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} \mbox{\hyperlink{classtesting_1_1_scoped_trace}{testing\+::\+Scoped\+Trace}} testing\+::\+G\+T\+E\+S\+T\+\_\+\+A\+T\+T\+R\+I\+B\+U\+T\+E\+\_\+\+U\+N\+U\+S\+E\+D\+\_\+} + diff --git a/doc/latex/namespacetesting_1_1internal.tex b/doc/latex/namespacetesting_1_1internal.tex new file mode 100644 index 0000000..7c88412 --- /dev/null +++ b/doc/latex/namespacetesting_1_1internal.tex @@ -0,0 +1,2211 @@ +\hypertarget{namespacetesting_1_1internal}{}\section{testing\+:\+:internal Namespace Reference} +\label{namespacetesting_1_1internal}\index{testing\+::internal@{testing\+::internal}} +\subsection*{Namespaces} +\begin{DoxyCompactItemize} +\item + \mbox{\hyperlink{namespacetesting_1_1internal_1_1edit__distance}{edit\+\_\+distance}} +\item + \mbox{\hyperlink{namespacetesting_1_1internal_1_1posix}{posix}} +\end{DoxyCompactItemize} +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_add_reference}{Add\+Reference}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_add_reference_3_01_t_01_6_01_4}{Add\+Reference$<$ T \& $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_assert_helper}{Assert\+Helper}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1bool__constant}{bool\+\_\+constant}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_captured_stream}{Captured\+Stream}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator10}{Cartesian\+Product\+Generator10}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator2}{Cartesian\+Product\+Generator2}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator3}{Cartesian\+Product\+Generator3}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator4}{Cartesian\+Product\+Generator4}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator5}{Cartesian\+Product\+Generator5}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator6}{Cartesian\+Product\+Generator6}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator7}{Cartesian\+Product\+Generator7}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator8}{Cartesian\+Product\+Generator8}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_generator9}{Cartesian\+Product\+Generator9}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder10}{Cartesian\+Product\+Holder10}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder2}{Cartesian\+Product\+Holder2}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder3}{Cartesian\+Product\+Holder3}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder4}{Cartesian\+Product\+Holder4}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder5}{Cartesian\+Product\+Holder5}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder6}{Cartesian\+Product\+Holder6}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder7}{Cartesian\+Product\+Holder7}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder8}{Cartesian\+Product\+Holder8}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_cartesian_product_holder9}{Cartesian\+Product\+Holder9}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_code_location}{Code\+Location}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_compile_assert_types_equal}{Compile\+Assert\+Types\+Equal}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_compile_assert_types_equal_3_01_t_00_01_t_01_4}{Compile\+Assert\+Types\+Equal$<$ T, T $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_const_char_ptr}{Const\+Char\+Ptr}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_const_ref}{Const\+Ref}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_const_ref_3_01_t_01_6_01_4}{Const\+Ref$<$ T \& $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_double_sequence}{Double\+Sequence}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_double_sequence_3_01false_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4}{Double\+Sequence$<$ false, Index\+Sequence$<$ I... $>$, sizeof\+T $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_double_sequence_3_01true_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4}{Double\+Sequence$<$ true, Index\+Sequence$<$ I... $>$, sizeof\+T $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_elem_from_list}{Elem\+From\+List}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_elem_from_list_3_01_n_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01_t_8_8_8_01_4}{Elem\+From\+List$<$ N, Index\+Sequence$<$ I... $>$, T... $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_elem_from_list_impl}{Elem\+From\+List\+Impl}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_elem_from_list_impl_3_01_t_00_01_i_00_01_i_01_4}{Elem\+From\+List\+Impl$<$ T, I, I $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_enable_if}{Enable\+If}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_enable_if_3_01true_01_4}{Enable\+If$<$ true $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_eq_helper}{Eq\+Helper}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_eq_helper_3_01true_01_4}{Eq\+Helper$<$ true $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1faketype}{faketype}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_flat_tuple}{Flat\+Tuple}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_flat_tuple_base}{Flat\+Tuple\+Base}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_flat_tuple_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_index_sequence_3_01_idx_8_8_8_01_4_01_4}{Flat\+Tuple\+Base$<$ Flat\+Tuple$<$ T... $>$, Index\+Sequence$<$ Idx... $>$ $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_flat_tuple_elem_base}{Flat\+Tuple\+Elem\+Base}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_flat_tuple_elem_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_i_01_4}{Flat\+Tuple\+Elem\+Base$<$ Flat\+Tuple$<$ T... $>$, I $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point}{Floating\+Point}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_format_for_comparison}{Format\+For\+Comparison}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_format_for_comparison_3_01_to_print[_n]_00_01_other_operand_01_4}{Format\+For\+Comparison$<$ To\+Print\mbox{[}\+N\mbox{]}, Other\+Operand $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_g_test_log}{G\+Test\+Log}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_g_test_mutex_lock}{G\+Test\+Mutex\+Lock}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_ignored_value}{Ignored\+Value}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_implicitly_convertible}{Implicitly\+Convertible}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_index_sequence}{Index\+Sequence}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1is__same}{is\+\_\+same}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1is__same_3_01_t_00_01_t_01_4}{is\+\_\+same$<$ T, T $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_is_a_protocol_message}{Is\+A\+Protocol\+Message}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_is_hash_table}{Is\+Hash\+Table}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_is_recursive_container}{Is\+Recursive\+Container}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_is_recursive_container_impl}{Is\+Recursive\+Container\+Impl}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01false_01_4}{Is\+Recursive\+Container\+Impl$<$ C, false $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01true_01_4}{Is\+Recursive\+Container\+Impl$<$ C, true $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_is_same}{Is\+Same}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_is_same_3_01_t_00_01_t_01_4}{Is\+Same$<$ T, T $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_iterator_traits}{Iterator\+Traits}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_iterator_traits_3_01const_01_t_01_5_01_4}{Iterator\+Traits$<$ const T $\ast$ $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_iterator_traits_3_01_t_01_5_01_4}{Iterator\+Traits$<$ T $\ast$ $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_make_index_sequence}{Make\+Index\+Sequence}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_make_index_sequence_3_010_01_4}{Make\+Index\+Sequence$<$ 0 $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_mutex}{Mutex}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_native_array}{Native\+Array}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_factory}{Parameterized\+Test\+Factory}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_info}{Parameterized\+Test\+Suite\+Info}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_info_base}{Parameterized\+Test\+Suite\+Info\+Base}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_registry}{Parameterized\+Test\+Suite\+Registry}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator}{Param\+Generator}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_param_generator_interface}{Param\+Generator\+Interface}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator}{Param\+Iterator}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_param_iterator_interface}{Param\+Iterator\+Interface}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_param_name_gen_func}{Param\+Name\+Gen\+Func}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_random}{Random}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_range_generator}{Range\+Generator}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_r_e}{RE}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_relation_to_source_copy}{Relation\+To\+Source\+Copy}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_relation_to_source_reference}{Relation\+To\+Source\+Reference}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_remove_const}{Remove\+Const}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_remove_const_3_01const_01_t_01_4}{Remove\+Const$<$ const T $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_remove_const_3_01const_01_t[_n]_4}{Remove\+Const$<$ const T\mbox{[}\+N\mbox{]}$>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_remove_reference}{Remove\+Reference}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_remove_reference_3_01_t_01_6_01_4}{Remove\+Reference$<$ T \& $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_static_assert_type_eq_helper}{Static\+Assert\+Type\+Eq\+Helper}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_static_assert_type_eq_helper_3_01_t_00_01_t_01_4}{Static\+Assert\+Type\+Eq\+Helper$<$ T, T $>$}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_suite_api_resolver}{Suite\+Api\+Resolver}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_test_factory_base}{Test\+Factory\+Base}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_test_factory_impl}{Test\+Factory\+Impl}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_test_meta_factory}{Test\+Meta\+Factory}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_test_meta_factory_base}{Test\+Meta\+Factory\+Base}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_thread_local}{Thread\+Local}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_type_id_helper}{Type\+Id\+Helper}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_type_with_size}{Type\+With\+Size}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_type_with_size_3_014_01_4}{Type\+With\+Size$<$ 4 $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_type_with_size_3_018_01_4}{Type\+With\+Size$<$ 8 $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_universal_printer}{Universal\+Printer}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_universal_printer_3_01_t_01_6_01_4}{Universal\+Printer$<$ T \& $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_universal_printer_3_01_t[_n]_4}{Universal\+Printer$<$ T\mbox{[}\+N\mbox{]}$>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_universal_terse_printer}{Universal\+Terse\+Printer}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_universal_terse_printer_3_01char_01_5_01_4}{Universal\+Terse\+Printer$<$ char $\ast$ $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_universal_terse_printer_3_01const_01char_01_5_01_4}{Universal\+Terse\+Printer$<$ const char $\ast$ $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_universal_terse_printer_3_01const_01wchar__t_01_5_01_4}{Universal\+Terse\+Printer$<$ const wchar\+\_\+t $\ast$ $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_universal_terse_printer_3_01_t_01_6_01_4}{Universal\+Terse\+Printer$<$ T \& $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_universal_terse_printer_3_01_t[_n]_4}{Universal\+Terse\+Printer$<$ T\mbox{[}\+N\mbox{]}$>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_universal_terse_printer_3_01wchar__t_01_5_01_4}{Universal\+Terse\+Printer$<$ wchar\+\_\+t $\ast$ $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_value_array}{Value\+Array}} +\item +class \mbox{\hyperlink{classtesting_1_1internal_1_1_values_in_iterator_range_generator}{Values\+In\+Iterator\+Range\+Generator}} +\item +struct \mbox{\hyperlink{structtesting_1_1internal_1_1_wrap_printer_type}{Wrap\+Printer\+Type}} +\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +typedef \+::std\+::string \mbox{\hyperlink{namespacetesting_1_1internal_a8e8ff5b11e64078831112677156cb111}{string}} +\item +typedef \+::std\+::wstring \mbox{\hyperlink{namespacetesting_1_1internal_a3f543179329c353aee1d7b54a9a8e335}{wstring}} +\item +typedef \mbox{\hyperlink{classtesting_1_1internal_1_1_g_test_mutex_lock}{G\+Test\+Mutex\+Lock}} \mbox{\hyperlink{namespacetesting_1_1internal_a08b187c6cc4e28400aadf9a32fccc8de}{Mutex\+Lock}} +\item +typedef \mbox{\hyperlink{structtesting_1_1internal_1_1bool__constant}{bool\+\_\+constant}}$<$ false $>$ \mbox{\hyperlink{namespacetesting_1_1internal_abb1d0789f19bdde21affccbd1078b525}{false\+\_\+type}} +\item +typedef \mbox{\hyperlink{structtesting_1_1internal_1_1bool__constant}{bool\+\_\+constant}}$<$ true $>$ \mbox{\hyperlink{namespacetesting_1_1internal_a62f917c3424d8841de9b49b5ec28edb4}{true\+\_\+type}} +\item +typedef long long \mbox{\hyperlink{namespacetesting_1_1internal_a05c6bd9ede5ccdf25191a590d610dcc6}{Biggest\+Int}} +\item +typedef \mbox{\hyperlink{classtesting_1_1internal_1_1_type_with_size}{Type\+With\+Size}}$<$ 4 $>$\+::Int \mbox{\hyperlink{namespacetesting_1_1internal_a8ee38faaf875f133358abaf9bc056cec}{Int32}} +\item +typedef \mbox{\hyperlink{classtesting_1_1internal_1_1_type_with_size}{Type\+With\+Size}}$<$ 4 $>$\+::U\+Int \mbox{\hyperlink{namespacetesting_1_1internal_a40d4fffcd2bf56f18b1c380615aa85e3}{U\+Int32}} +\item +typedef \mbox{\hyperlink{classtesting_1_1internal_1_1_type_with_size}{Type\+With\+Size}}$<$ 8 $>$\+::Int \mbox{\hyperlink{namespacetesting_1_1internal_a271c563fec38b804ddab0677f51f70a8}{Int64}} +\item +typedef \mbox{\hyperlink{classtesting_1_1internal_1_1_type_with_size}{Type\+With\+Size}}$<$ 8 $>$\+::U\+Int \mbox{\hyperlink{namespacetesting_1_1internal_aa6a1ac454e6d7e550fa4925c62c35caa}{U\+Int64}} +\item +typedef \mbox{\hyperlink{classtesting_1_1internal_1_1_type_with_size}{Type\+With\+Size}}$<$ 8 $>$\+::Int \mbox{\hyperlink{namespacetesting_1_1internal_a66a845df404b38fe85c5e14a069f255a}{Time\+In\+Millis}} +\item +typedef \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point}{Floating\+Point}}$<$ float $>$ \mbox{\hyperlink{namespacetesting_1_1internal_a02e1981f5ff70609e6ac06e006ff519a}{Float}} +\item +typedef \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point}{Floating\+Point}}$<$ double $>$ \mbox{\hyperlink{namespacetesting_1_1internal_a66a7579b1893b260c31dad577f7a5c48}{Double}} +\item +typedef const void $\ast$ \mbox{\hyperlink{namespacetesting_1_1internal_ab1114197d3c657d8b7f8e0c5caa12d00}{Type\+Id}} +\item +using \mbox{\hyperlink{namespacetesting_1_1internal_a83e4e0732ac6a9dcfe6ee299dc1b9fa2}{Set\+Up\+Test\+Suite\+Func}} = void($\ast$)() +\item +using \mbox{\hyperlink{namespacetesting_1_1internal_a8257a87aa42cebaa54b0c48a6ae657a5}{Tear\+Down\+Test\+Suite\+Func}} = void($\ast$)() +\item +using \mbox{\hyperlink{namespacetesting_1_1internal_a04786aa10f8b0bf38a5ead94d00475f4}{Set\+Up\+Tear\+Down\+Suite\+Func\+Type}} = void($\ast$)() +\item +typedef int \mbox{\hyperlink{namespacetesting_1_1internal_ad8f0c2883245f1df2a53618a49f0deb3}{Is\+Container}} +\item +typedef char \mbox{\hyperlink{namespacetesting_1_1internal_abf080521ce135deb510e0a7830fd3d33}{Is\+Not\+Container}} +\item +typedef \+::std\+::vector$<$ \+::std\+::string $>$ \mbox{\hyperlink{namespacetesting_1_1internal_a50003bb76ec2934be1062be11efba8bf}{Strings}} +\item +{\footnotesize template$<$class Test\+Case $>$ }\\using \mbox{\hyperlink{namespacetesting_1_1internal_aac31682b6b41997d6cc610a5787dc8bc}{Parameterized\+Test\+Case\+Info}} = \mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_info}{Parameterized\+Test\+Suite\+Info}}$<$ Test\+Case $>$ +\end{DoxyCompactItemize} +\subsection*{Enumerations} +\begin{DoxyCompactItemize} +\item +enum \mbox{\hyperlink{namespacetesting_1_1internal_ae2ef98247c76a50cdc80ceb4a6c81793}{Char\+Format}} \{ \mbox{\hyperlink{namespacetesting_1_1internal_ae2ef98247c76a50cdc80ceb4a6c81793af7038866be92e9978360b831e376ffaa}{k\+As\+Is}}, +\mbox{\hyperlink{namespacetesting_1_1internal_ae2ef98247c76a50cdc80ceb4a6c81793aebfa5293302338a8e8678744c103f113}{k\+Hex\+Escape}}, +\mbox{\hyperlink{namespacetesting_1_1internal_ae2ef98247c76a50cdc80ceb4a6c81793ae1211108e9f35f891d9951da64794d03}{k\+Special\+Escape}} + \} +\item +enum \mbox{\hyperlink{namespacetesting_1_1internal_aa6255ef3b023c5b4e1a2198d887fb977}{G\+Test\+Log\+Severity}} \{ \mbox{\hyperlink{namespacetesting_1_1internal_aa6255ef3b023c5b4e1a2198d887fb977aff315e0913fcda86fe4de882bf5e33e9}{G\+T\+E\+S\+T\+\_\+\+I\+N\+FO}}, +\mbox{\hyperlink{namespacetesting_1_1internal_aa6255ef3b023c5b4e1a2198d887fb977a7a051bc2794f15a4bf0eab40562a304c}{G\+T\+E\+S\+T\+\_\+\+W\+A\+R\+N\+I\+NG}}, +\mbox{\hyperlink{namespacetesting_1_1internal_aa6255ef3b023c5b4e1a2198d887fb977a651e9cd2a904e0c8210536271b875f75}{G\+T\+E\+S\+T\+\_\+\+E\+R\+R\+OR}}, +\mbox{\hyperlink{namespacetesting_1_1internal_aa6255ef3b023c5b4e1a2198d887fb977a75063567740f6bf7da419b1b9197b12e}{G\+T\+E\+S\+T\+\_\+\+F\+A\+T\+AL}} + \} +\item +enum \mbox{\hyperlink{namespacetesting_1_1internal_a17fb8f0125fa92404a249ed38a43faa4}{Default\+Printer\+Type}} \{ \mbox{\hyperlink{namespacetesting_1_1internal_a17fb8f0125fa92404a249ed38a43faa4a945a19e59155ce1d335e8c3bcbdf61db}{k\+Print\+Container}}, +\mbox{\hyperlink{namespacetesting_1_1internal_a17fb8f0125fa92404a249ed38a43faa4a8eaa6fff4a58832b30027df49f73dcbf}{k\+Print\+Pointer}}, +\mbox{\hyperlink{namespacetesting_1_1internal_a17fb8f0125fa92404a249ed38a43faa4a5a066cde30e276c6460ba10d123d0c2c}{k\+Print\+Function\+Pointer}}, +\mbox{\hyperlink{namespacetesting_1_1internal_a17fb8f0125fa92404a249ed38a43faa4a6f88d77d9d763d8a009caf950cfbab28}{k\+Print\+Other}} + \} +\item +enum \mbox{\hyperlink{namespacetesting_1_1internal_a648c1bc94c2ef9e868ff3f9dff0f9c4e}{G\+Test\+Color}} \{ \mbox{\hyperlink{namespacetesting_1_1internal_a648c1bc94c2ef9e868ff3f9dff0f9c4eafcd8803dc9e37e374d5a4486afc230b7}{C\+O\+L\+O\+R\+\_\+\+D\+E\+F\+A\+U\+LT}}, +\mbox{\hyperlink{namespacetesting_1_1internal_a648c1bc94c2ef9e868ff3f9dff0f9c4ea9ebb3ddab9391781f6ee5021e1e443c3}{C\+O\+L\+O\+R\+\_\+\+R\+ED}}, +\mbox{\hyperlink{namespacetesting_1_1internal_a648c1bc94c2ef9e868ff3f9dff0f9c4ea3b1e81f5b14a17b35a8672d57d166507}{C\+O\+L\+O\+R\+\_\+\+G\+R\+E\+EN}}, +\mbox{\hyperlink{namespacetesting_1_1internal_a648c1bc94c2ef9e868ff3f9dff0f9c4ea2cca441161aca75a208ff08d07f5b1a5}{C\+O\+L\+O\+R\+\_\+\+Y\+E\+L\+L\+OW}} + \} +\end{DoxyCompactItemize} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{namespacetesting_1_1internal_a20bfd9d47d8dd167ffc1c37a4c9ff73e}{G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+string\+\_\+}} (internal\+\_\+run\+\_\+death\+\_\+test, \char`\"{}\char`\"{}, \char`\"{}Indicates the file, line number, temporal index of \char`\"{} \char`\"{}the single death test to run, and a file descriptor to \char`\"{} \char`\"{}which a success code may be sent, all separated by \char`\"{} \char`\"{}the \textquotesingle{}$\vert$\textquotesingle{} characters. This flag is specified if and only if the current \char`\"{} \char`\"{}process is a sub-\/process launched for running a thread-\/safe \char`\"{} \char`\"{}death test. F\+OR I\+N\+T\+E\+R\+N\+AL U\+SE O\+N\+L\+Y.\char`\"{}) +\item +size\+\_\+t \mbox{\hyperlink{namespacetesting_1_1internal_a8cbd8bf820517923d7f3c4477b3af5fa}{Get\+Thread\+Count}} () +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} \+::std\+::string \mbox{\hyperlink{namespacetesting_1_1internal_a31b7c3abed4a7c395f42c61e993989f4}{Format\+File\+Location}} (const char $\ast$file, int line) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} \+::std\+::string \mbox{\hyperlink{namespacetesting_1_1internal_a1ee4cde97868c53e442d3182496a9f3c}{Format\+Compiler\+Independent\+File\+Location}} (const char $\ast$file, int line) +\item +void \mbox{\hyperlink{namespacetesting_1_1internal_acba06d4f0343dec407738ba5544af990}{Capture\+Stdout}} () +\item +void \mbox{\hyperlink{namespacetesting_1_1internal_a8ec00d458d0d442bd64af7b5f9c22dda}{Capture\+Stderr}} () +\item +std\+::string \mbox{\hyperlink{namespacetesting_1_1internal_aed657219a9856a8d249a3230de0c54ce}{Get\+Captured\+Stdout}} () +\item +std\+::string \mbox{\hyperlink{namespacetesting_1_1internal_a374156401da17704099d0c33fa53adfb}{Get\+Captured\+Stderr}} () +\item +size\+\_\+t \mbox{\hyperlink{namespacetesting_1_1internal_a40bcfd87e26aae36e0cc51e5db64fd89}{Get\+File\+Size}} (F\+I\+LE $\ast$file) +\item +std\+::string \mbox{\hyperlink{namespacetesting_1_1internal_ab81b0af2a0131ea54dc11de00d5e6e51}{Read\+Entire\+File}} (F\+I\+LE $\ast$file) +\item +bool \mbox{\hyperlink{namespacetesting_1_1internal_ac06fc81336a3d80755f4020d34321766}{Parse\+Int32}} (const \mbox{\hyperlink{classtesting_1_1_message}{Message}} \&src\+\_\+text, const char $\ast$str, \mbox{\hyperlink{namespacetesting_1_1internal_a8ee38faaf875f133358abaf9bc056cec}{Int32}} $\ast$value) +\item +bool \mbox{\hyperlink{namespacetesting_1_1internal_a1055088bb9b867e1b7b8f096f519d7c5}{Bool\+From\+G\+Test\+Env}} (const char $\ast$flag, bool default\+\_\+value) +\item +\mbox{\hyperlink{namespacetesting_1_1internal_a8ee38faaf875f133358abaf9bc056cec}{Int32}} \mbox{\hyperlink{namespacetesting_1_1internal_a2196f070b2d28bceb45c7ad3b565b9ba}{Int32\+From\+G\+Test\+Env}} (const char $\ast$flag, \mbox{\hyperlink{namespacetesting_1_1internal_a8ee38faaf875f133358abaf9bc056cec}{Int32}} default\+\_\+value) +\item +std\+::string \mbox{\hyperlink{namespacetesting_1_1internal_a0c793c6d84760d900299916c077a1af4}{Output\+Flag\+Also\+Check\+Env\+Var}} () +\item +const char $\ast$ \mbox{\hyperlink{namespacetesting_1_1internal_a0967cbf18fb1594f82512d8d822aba21}{String\+From\+G\+Test\+Env}} (const char $\ast$flag, const char $\ast$default\+\_\+value) +\item +bool \mbox{\hyperlink{namespacetesting_1_1internal_a744a6dd74c12d1e2c16b3c03e14ed4d4}{Is\+Printable\+Ascii}} (wchar\+\_\+t c) +\item +{\footnotesize template$<$typename Unsigned\+Char , typename Char $>$ }\\void \mbox{\hyperlink{namespacetesting_1_1internal_a0c577e598e61d339ba45dd6643fb1969}{Print\+Char\+And\+Code\+To}} (Char c, ostream $\ast$os) +\item +void \mbox{\hyperlink{namespacetesting_1_1internal_aa7e70a85d66f0c109e3e69629ef577f2}{Print\+To}} (unsigned char c, \+::std\+::ostream $\ast$os) +\item +void \mbox{\hyperlink{namespacetesting_1_1internal_abf6c518b437569187c1218166c702807}{Print\+To}} (signed char c, \+::std\+::ostream $\ast$os) +\item +void \mbox{\hyperlink{namespacetesting_1_1internal_aa74ea9d64f76ce69eceb225ca5ebef58}{Print\+To}} (wchar\+\_\+t wc, ostream $\ast$os) +\item +void \mbox{\hyperlink{namespacetesting_1_1internal_a070107e7a8205ad6ec4d538d52b15b38}{Universal\+Print\+Array}} (const char $\ast$begin, size\+\_\+t len, ostream $\ast$os) +\item +void \mbox{\hyperlink{namespacetesting_1_1internal_a52394019018eb5079f9f1bcca23dcd60}{Universal\+Print\+Array}} (const wchar\+\_\+t $\ast$begin, size\+\_\+t len, ostream $\ast$os) +\item +void \mbox{\hyperlink{namespacetesting_1_1internal_adc6c98306d40b53fd07be4e295102a0a}{Print\+To}} (const char $\ast$s, ostream $\ast$os) +\item +void \mbox{\hyperlink{namespacetesting_1_1internal_afc20fb56b2547a8f91f9ff99650f2024}{Print\+To}} (const wchar\+\_\+t $\ast$s, ostream $\ast$os) +\item +void \mbox{\hyperlink{namespacetesting_1_1internal_ad609167d8d6792b0fb186539e0e159bd}{Print\+String\+To}} (const \+::std\+::string \&s, ostream $\ast$os) +\item +void \mbox{\hyperlink{namespacetesting_1_1internal_ac46308aa3c0294ae446a40115aeb32c6}{Print\+Wide\+String\+To}} (const \+::std\+::wstring \&s, ostream $\ast$os) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} bool \mbox{\hyperlink{namespacetesting_1_1internal_ab2709373c78eb8b1c22a6ba30cceba52}{Is\+True}} (bool condition) +\item +void \mbox{\hyperlink{namespacetesting_1_1internal_a06b1b20029fbd1dbeb59752f914fab84}{Log\+To\+Stderr}} () +\item +void \mbox{\hyperlink{namespacetesting_1_1internal_a2135f223bf6b527729aeaa651115183b}{Flush\+Info\+Log}} () +\item +{\footnotesize template$<$typename To $>$ }\\To \mbox{\hyperlink{namespacetesting_1_1internal_a982df3f369643b175f79cda4048bc3b9}{Implicit\+Cast\+\_\+}} (To x) +\item +{\footnotesize template$<$typename To , typename From $>$ }\\To \mbox{\hyperlink{namespacetesting_1_1internal_a1a1a1aed3fe00908b8a45d5ab4a33665}{Down\+Cast\+\_\+}} (From $\ast$f) +\item +{\footnotesize template$<$class Derived , class Base $>$ }\\Derived $\ast$ \mbox{\hyperlink{namespacetesting_1_1internal_abfe9bfb020d38aa4e0e12c001911b22b}{Checked\+Downcast\+To\+Actual\+Type}} (Base $\ast$base) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} std\+::vector$<$ std\+::string $>$ \mbox{\hyperlink{namespacetesting_1_1internal_a8d8ed3acadedd9c0db28d35a188973ea}{Get\+Argvs}} () +\item +bool \mbox{\hyperlink{namespacetesting_1_1internal_aeb957087fd6bbf9db98ab7cd41b0c129}{Is\+Alpha}} (char ch) +\item +bool \mbox{\hyperlink{namespacetesting_1_1internal_a83802e7f23324cd512232203662e1a98}{Is\+Al\+Num}} (char ch) +\item +bool \mbox{\hyperlink{namespacetesting_1_1internal_a4bd96b7fa6486802d33ddc217af55a39}{Is\+Digit}} (char ch) +\item +bool \mbox{\hyperlink{namespacetesting_1_1internal_ac26ce3883bc8919c27074975e958f3b7}{Is\+Lower}} (char ch) +\item +bool \mbox{\hyperlink{namespacetesting_1_1internal_af429e04f70f9c10f6aa76a5d1ccd389f}{Is\+Space}} (char ch) +\item +bool \mbox{\hyperlink{namespacetesting_1_1internal_a84f3baa379fec6bf5947cb5165aa8cc9}{Is\+Upper}} (char ch) +\item +bool \mbox{\hyperlink{namespacetesting_1_1internal_aa234ef141278263fb143b616c74c86e7}{Is\+X\+Digit}} (char ch) +\item +bool \mbox{\hyperlink{namespacetesting_1_1internal_a6ab68a30f8291c09b2289c132bbe3b16}{Is\+X\+Digit}} (wchar\+\_\+t ch) +\item +char \mbox{\hyperlink{namespacetesting_1_1internal_ad9c627ef2a94245e3fd69e7ab3d49b42}{To\+Lower}} (char ch) +\item +char \mbox{\hyperlink{namespacetesting_1_1internal_ac1b876a8133895bd553d4780ecaa1e3a}{To\+Upper}} (char ch) +\item +std\+::string \mbox{\hyperlink{namespacetesting_1_1internal_aa6afda12e567c353e2e9b9c2e8cae14f}{Strip\+Trailing\+Spaces}} (std\+::string str) +\item +{\footnotesize template$<$typename T $>$ }\\std\+::string \mbox{\hyperlink{namespacetesting_1_1internal_aad4beed95d0846e6ffc5da0978ef3bb9}{Streamable\+To\+String}} (const T \&streamable) +\item +std\+::true\+\_\+type \mbox{\hyperlink{namespacetesting_1_1internal_a3db36c62f31a9439117c41c2b13f4941}{Is\+Null\+Literal\+Helper}} (Secret $\ast$) +\item +std\+::false\+\_\+type \mbox{\hyperlink{namespacetesting_1_1internal_a1404fbe8d1164f614f6358b314ec3cf4}{Is\+Null\+Literal\+Helper}} (\mbox{\hyperlink{classtesting_1_1internal_1_1_ignored_value}{Ignored\+Value}}) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} std\+::string \mbox{\hyperlink{namespacetesting_1_1internal_af69e146a989e8d48def39a0cc59461c9}{Append\+User\+Message}} (const std\+::string \>est\+\_\+msg, const \mbox{\hyperlink{classtesting_1_1_message}{Message}} \&user\+\_\+msg) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} std\+::string \mbox{\hyperlink{namespacetesting_1_1internal_a513107ff8defa97d949937fc1350a56c}{Diff\+Strings}} (const std\+::string \&left, const std\+::string \&right, size\+\_\+t $\ast$total\+\_\+line\+\_\+count) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result \mbox{\hyperlink{namespacetesting_1_1internal_ac61e2ba2cbf259fd6ee5ffd4e49c9445}{Eq\+Failure}} (const char $\ast$expected\+\_\+expression, const char $\ast$actual\+\_\+expression, const std\+::string \&expected\+\_\+value, const std\+::string \&actual\+\_\+value, bool ignoring\+\_\+case) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} std\+::string \mbox{\hyperlink{namespacetesting_1_1internal_aed8d3ad4341f8f2de53440e39c995632}{Get\+Bool\+Assertion\+Failure\+Message}} (const Assertion\+Result \&assertion\+\_\+result, const char $\ast$expression\+\_\+text, const char $\ast$actual\+\_\+predicate\+\_\+value, const char $\ast$expected\+\_\+predicate\+\_\+value) +\item +{\footnotesize template$<$typename T $>$ }\\\mbox{\hyperlink{namespacetesting_1_1internal_ab1114197d3c657d8b7f8e0c5caa12d00}{Type\+Id}} \mbox{\hyperlink{namespacetesting_1_1internal_a6b108e56fdc68ea937ffb3759fb55ab0}{Get\+Type\+Id}} () +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} \mbox{\hyperlink{namespacetesting_1_1internal_ab1114197d3c657d8b7f8e0c5caa12d00}{Type\+Id}} \mbox{\hyperlink{namespacetesting_1_1internal_a1e85cf16bb95b60f879d48ba1fbfc1c9}{Get\+Test\+Type\+Id}} () +\item +\mbox{\hyperlink{namespacetesting_1_1internal_a04786aa10f8b0bf38a5ead94d00475f4}{Set\+Up\+Tear\+Down\+Suite\+Func\+Type}} \mbox{\hyperlink{namespacetesting_1_1internal_a9579a78c229ea302caded45d65f77336}{Get\+Not\+Default\+Or\+Null}} (\mbox{\hyperlink{namespacetesting_1_1internal_a04786aa10f8b0bf38a5ead94d00475f4}{Set\+Up\+Tear\+Down\+Suite\+Func\+Type}} a, \mbox{\hyperlink{namespacetesting_1_1internal_a04786aa10f8b0bf38a5ead94d00475f4}{Set\+Up\+Tear\+Down\+Suite\+Func\+Type}} def) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} \mbox{\hyperlink{classtesting_1_1_test_info}{Test\+Info}} $\ast$ \mbox{\hyperlink{namespacetesting_1_1internal_a7ab4072540184e26119ad853f45059f7}{Make\+And\+Register\+Test\+Info}} (const char $\ast$test\+\_\+suite\+\_\+name, const char $\ast$name, const char $\ast$type\+\_\+param, const char $\ast$value\+\_\+param, \mbox{\hyperlink{structtesting_1_1internal_1_1_code_location}{Code\+Location}} code\+\_\+location, \mbox{\hyperlink{namespacetesting_1_1internal_ab1114197d3c657d8b7f8e0c5caa12d00}{Type\+Id}} fixture\+\_\+class\+\_\+id, \mbox{\hyperlink{namespacetesting_1_1internal_a83e4e0732ac6a9dcfe6ee299dc1b9fa2}{Set\+Up\+Test\+Suite\+Func}} set\+\_\+up\+\_\+tc, \mbox{\hyperlink{namespacetesting_1_1internal_a8257a87aa42cebaa54b0c48a6ae657a5}{Tear\+Down\+Test\+Suite\+Func}} tear\+\_\+down\+\_\+tc, \mbox{\hyperlink{classtesting_1_1internal_1_1_test_factory_base}{Test\+Factory\+Base}} $\ast$factory) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} bool \mbox{\hyperlink{namespacetesting_1_1internal_aac72b20299ad4a99554ce161e1769560}{Skip\+Prefix}} (const char $\ast$prefix, const char $\ast$$\ast$pstr) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} std\+::string \mbox{\hyperlink{namespacetesting_1_1internal_ae7ae495d3207e26968dfbd537c5e6dee}{Get\+Current\+Os\+Stack\+Trace\+Except\+Top}} (\mbox{\hyperlink{classtesting_1_1_unit_test}{Unit\+Test}} $\ast$unit\+\_\+test, int skip\+\_\+count) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} bool \mbox{\hyperlink{namespacetesting_1_1internal_a4d46f09c3bfe68700b7f728d2cc3782f}{Always\+True}} () +\item +bool \mbox{\hyperlink{namespacetesting_1_1internal_a4b24c851ab13569b1b15b3d259b60d2e}{Always\+False}} () +\item +{\footnotesize template$<$class C , class Iterator = decltype(\+::std\+::declval$<$const C\&$>$().\+begin()), class = decltype(\+::std\+::declval$<$const C\&$>$().\+end()), class = decltype(++\+::std\+::declval$<$\+Iterator\&$>$()), class = decltype($\ast$\+::std\+::declval$<$\+Iterator$>$()), class = typename C\+::const\+\_\+iterator$>$ }\\\mbox{\hyperlink{namespacetesting_1_1internal_ad8f0c2883245f1df2a53618a49f0deb3}{Is\+Container}} \mbox{\hyperlink{namespacetesting_1_1internal_a764748b94f628bdd1dcd39dc81e8b71f}{Is\+Container\+Test}} (int) +\item +{\footnotesize template$<$class C $>$ }\\\mbox{\hyperlink{namespacetesting_1_1internal_abf080521ce135deb510e0a7830fd3d33}{Is\+Not\+Container}} \mbox{\hyperlink{namespacetesting_1_1internal_af545a2ae928b8a9e7581978234464275}{Is\+Container\+Test}} (long) +\item +{\footnotesize template$<$typename T , typename U $>$ }\\bool \mbox{\hyperlink{namespacetesting_1_1internal_af4bebf36baf0b0a5b26d051dde55fa47}{Array\+Eq}} (const T $\ast$lhs, size\+\_\+t size, const U $\ast$rhs) +\item +{\footnotesize template$<$typename T , typename U $>$ }\\bool \mbox{\hyperlink{namespacetesting_1_1internal_a49b4d0ee49c0f8c93bab29ebd20630cc}{Array\+Eq}} (const T \&lhs, const U \&rhs) +\item +{\footnotesize template$<$typename T , typename U , size\+\_\+t N$>$ }\\bool \mbox{\hyperlink{namespacetesting_1_1internal_a5cb6f81ee827130024261121c742b26c}{Array\+Eq}} (const T(\&lhs)\mbox{[}N\mbox{]}, const U(\&rhs)\mbox{[}N\mbox{]}) +\item +{\footnotesize template$<$typename Iter , typename Element $>$ }\\Iter \mbox{\hyperlink{namespacetesting_1_1internal_a94a857fe6ff32cf4fdc4769a4071f239}{Array\+Aware\+Find}} (Iter begin, Iter end, const Element \&elem) +\item +{\footnotesize template$<$typename T , typename U $>$ }\\void \mbox{\hyperlink{namespacetesting_1_1internal_afb1b9728aaaf6d9fe6246a19cfe3f7f5}{Copy\+Array}} (const T $\ast$from, size\+\_\+t size, U $\ast$to) +\item +{\footnotesize template$<$typename T , typename U $>$ }\\void \mbox{\hyperlink{namespacetesting_1_1internal_a84d0e746ba0827cc52b53d22000de0e8}{Copy\+Array}} (const T \&from, U $\ast$to) +\item +{\footnotesize template$<$typename T , typename U , size\+\_\+t N$>$ }\\void \mbox{\hyperlink{namespacetesting_1_1internal_a1e7ae855686720615dcd5754c8181c62}{Copy\+Array}} (const T(\&from)\mbox{[}N\mbox{]}, U($\ast$to)\mbox{[}N\mbox{]}) +\item +\mbox{\hyperlink{namespacetesting_1_1internal_a3682f962ae0ec1c0eca6444ca0a09e91}{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+C\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+A\+S\+\_\+\+P\+O\+I\+N\+T\+E\+R\+\_\+}} (char) +\item +\mbox{\hyperlink{namespacetesting_1_1internal_a85e08f00d443221e529a0a85a90fbaeb}{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+C\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+A\+S\+\_\+\+P\+O\+I\+N\+T\+E\+R\+\_\+}} (wchar\+\_\+t) +\item +\mbox{\hyperlink{namespacetesting_1_1internal_aeac30230dcc362221bdd07d61eaa4ec1}{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+C\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+A\+S\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+}} (char, \+::std\+::string) +\item +\mbox{\hyperlink{namespacetesting_1_1internal_a12070f3d771e37e1c3f2539692af0ce0}{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+C\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+A\+S\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+}} (wchar\+\_\+t, \+::std\+::wstring) +\item +{\footnotesize template$<$typename T1 , typename T2 $>$ }\\std\+::string \mbox{\hyperlink{namespacetesting_1_1internal_a91ab078f10adc669f09b7f604975c518}{Format\+For\+Comparison\+Failure\+Message}} (const T1 \&value, const T2 \&) +\item +{\footnotesize template$<$typename T $>$ }\\void \mbox{\hyperlink{namespacetesting_1_1internal_a30708fa2bacf11895b03bdb21eb72309}{Universal\+Print}} (const T \&value, \+::std\+::ostream $\ast$os) +\item +{\footnotesize template$<$typename C $>$ }\\void \mbox{\hyperlink{namespacetesting_1_1internal_a2e96c98d5bd8ee4a1b92f8e3cde7dd40}{Default\+Print\+To}} (\mbox{\hyperlink{structtesting_1_1internal_1_1_wrap_printer_type}{Wrap\+Printer\+Type}}$<$ \mbox{\hyperlink{namespacetesting_1_1internal_a17fb8f0125fa92404a249ed38a43faa4a945a19e59155ce1d335e8c3bcbdf61db}{k\+Print\+Container}} $>$, const C \&container, \+::std\+::ostream $\ast$os) +\item +{\footnotesize template$<$typename T $>$ }\\void \mbox{\hyperlink{namespacetesting_1_1internal_a074522dd8d77d61878a042b8d05cc64a}{Default\+Print\+To}} (\mbox{\hyperlink{structtesting_1_1internal_1_1_wrap_printer_type}{Wrap\+Printer\+Type}}$<$ \mbox{\hyperlink{namespacetesting_1_1internal_a17fb8f0125fa92404a249ed38a43faa4a8eaa6fff4a58832b30027df49f73dcbf}{k\+Print\+Pointer}} $>$, T $\ast$p, \+::std\+::ostream $\ast$os) +\item +{\footnotesize template$<$typename T $>$ }\\void \mbox{\hyperlink{namespacetesting_1_1internal_a7729c07abcae6c69b9b370c39db61409}{Default\+Print\+To}} (\mbox{\hyperlink{structtesting_1_1internal_1_1_wrap_printer_type}{Wrap\+Printer\+Type}}$<$ \mbox{\hyperlink{namespacetesting_1_1internal_a17fb8f0125fa92404a249ed38a43faa4a5a066cde30e276c6460ba10d123d0c2c}{k\+Print\+Function\+Pointer}} $>$, T $\ast$p, \+::std\+::ostream $\ast$os) +\item +{\footnotesize template$<$typename T $>$ }\\void \mbox{\hyperlink{namespacetesting_1_1internal_a72b1a69d96be8ea6382539f5c4fcac6d}{Default\+Print\+To}} (\mbox{\hyperlink{structtesting_1_1internal_1_1_wrap_printer_type}{Wrap\+Printer\+Type}}$<$ \mbox{\hyperlink{namespacetesting_1_1internal_a17fb8f0125fa92404a249ed38a43faa4a6f88d77d9d763d8a009caf950cfbab28}{k\+Print\+Other}} $>$, const T \&value, \+::std\+::ostream $\ast$os) +\item +{\footnotesize template$<$typename T $>$ }\\void \mbox{\hyperlink{namespacetesting_1_1internal_adb3c27150dbe661db0e0c4be27533460}{Print\+To}} (const T \&value, \+::std\+::ostream $\ast$os) +\item +void \mbox{\hyperlink{namespacetesting_1_1internal_a476bd3d411d4f129620aaf8999c257c0}{Print\+To}} (char c, \+::std\+::ostream $\ast$os) +\item +void \mbox{\hyperlink{namespacetesting_1_1internal_a2979ac1ad3e05c51dcd7dca2eb34e6ce}{Print\+To}} (bool x, \+::std\+::ostream $\ast$os) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} void \mbox{\hyperlink{namespacetesting_1_1internal_a6c50fd437a2ae2ff6f182ccd6c2744dd}{Print\+To}} (wchar\+\_\+t wc, \+::std\+::ostream $\ast$os) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} void \mbox{\hyperlink{namespacetesting_1_1internal_ac226053b96d7d61f9407e3b75bab07d9}{Print\+To}} (const char $\ast$s, \+::std\+::ostream $\ast$os) +\item +void \mbox{\hyperlink{namespacetesting_1_1internal_a553eec7bb50de01c9e91cac4accc606f}{Print\+To}} (char $\ast$s, \+::std\+::ostream $\ast$os) +\item +void \mbox{\hyperlink{namespacetesting_1_1internal_a792cc5665a34619ed7a6d54711433456}{Print\+To}} (const signed char $\ast$s, \+::std\+::ostream $\ast$os) +\item +void \mbox{\hyperlink{namespacetesting_1_1internal_a1320096b116f8cc4b688acbd5b783051}{Print\+To}} (signed char $\ast$s, \+::std\+::ostream $\ast$os) +\item +void \mbox{\hyperlink{namespacetesting_1_1internal_a42c591f2164ad105b502a9262333aed2}{Print\+To}} (const unsigned char $\ast$s, \+::std\+::ostream $\ast$os) +\item +void \mbox{\hyperlink{namespacetesting_1_1internal_a7fae797c500d66d0f5a9db4f205e3416}{Print\+To}} (unsigned char $\ast$s, \+::std\+::ostream $\ast$os) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} void \mbox{\hyperlink{namespacetesting_1_1internal_afb038075e9e2166d1d9158a19e0eed23}{Print\+To}} (const wchar\+\_\+t $\ast$s, \+::std\+::ostream $\ast$os) +\item +void \mbox{\hyperlink{namespacetesting_1_1internal_a8d41baa371fad3eb5a3dbe1bbc02c290}{Print\+To}} (wchar\+\_\+t $\ast$s, \+::std\+::ostream $\ast$os) +\item +{\footnotesize template$<$typename T $>$ }\\void \mbox{\hyperlink{namespacetesting_1_1internal_ad3013b6b4c825edee9fe18ff1d982faa}{Print\+Raw\+Array\+To}} (const T a\mbox{[}$\,$\mbox{]}, size\+\_\+t count, \+::std\+::ostream $\ast$os) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} void \mbox{\hyperlink{namespacetesting_1_1internal_a8b53e46cea3f8bdfc9342057c4f6ba62}{Print\+String\+To}} (const \+::std\+::string \&s, \+::std\+::ostream $\ast$os) +\item +void \mbox{\hyperlink{namespacetesting_1_1internal_af59b4f5d83276cd807c45063b14bad44}{Print\+To}} (const \+::std\+::string \&s, \+::std\+::ostream $\ast$os) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} void \mbox{\hyperlink{namespacetesting_1_1internal_ae38089f9d4093cb7cf93396251fd2d66}{Print\+Wide\+String\+To}} (const \+::std\+::wstring \&s, \+::std\+::ostream $\ast$os) +\item +void \mbox{\hyperlink{namespacetesting_1_1internal_a8d5be499966aeff68d4690db7d57f38a}{Print\+To}} (const \+::std\+::wstring \&s, \+::std\+::ostream $\ast$os) +\item +void \mbox{\hyperlink{namespacetesting_1_1internal_a76f564cf23190dbd5c9e088defdd092b}{Print\+To}} (std\+::nullptr\+\_\+t, \+::std\+::ostream $\ast$os) +\item +{\footnotesize template$<$typename T $>$ }\\void \mbox{\hyperlink{namespacetesting_1_1internal_a5587d09db034bc597870ae86bd8c01f8}{Print\+To}} (std\+::reference\+\_\+wrapper$<$ T $>$ ref, \+::std\+::ostream $\ast$os) +\item +{\footnotesize template$<$typename T $>$ }\\void \mbox{\hyperlink{namespacetesting_1_1internal_a7174fbf5d6ba458afae675022c9aae1e}{Print\+Tuple\+To}} (const T \&, std\+::integral\+\_\+constant$<$ size\+\_\+t, 0 $>$, \+::std\+::ostream $\ast$) +\item +{\footnotesize template$<$typename T , size\+\_\+t I$>$ }\\void \mbox{\hyperlink{namespacetesting_1_1internal_a3580971ab4571dc9a00f4ed0e17fd777}{Print\+Tuple\+To}} (const T \&t, std\+::integral\+\_\+constant$<$ size\+\_\+t, I $>$, \+::std\+::ostream $\ast$os) +\item +{\footnotesize template$<$typename... Types$>$ }\\void \mbox{\hyperlink{namespacetesting_1_1internal_a5628347cba9a345f56087fdb70930fc8}{Print\+To}} (const \+::std\+::tuple$<$ Types... $>$ \&t, \+::std\+::ostream $\ast$os) +\item +{\footnotesize template$<$typename T1 , typename T2 $>$ }\\void \mbox{\hyperlink{namespacetesting_1_1internal_af2c33928facbf2edf7af564278724d98}{Print\+To}} (const \+::std\+::pair$<$ T1, T2 $>$ \&value, \+::std\+::ostream $\ast$os) +\item +{\footnotesize template$<$typename T $>$ }\\void \mbox{\hyperlink{namespacetesting_1_1internal_ad79d71c3110f8eb24ab352d68f29436a}{Universal\+Print\+Array}} (const T $\ast$begin, size\+\_\+t len, \+::std\+::ostream $\ast$os) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} void \mbox{\hyperlink{namespacetesting_1_1internal_a72c997dbd2c562110b2cb56c359decfa}{Universal\+Print\+Array}} (const char $\ast$begin, size\+\_\+t len, \+::std\+::ostream $\ast$os) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} void \mbox{\hyperlink{namespacetesting_1_1internal_ae31e146c35fd75afc6a9cc73ae2692d1}{Universal\+Print\+Array}} (const wchar\+\_\+t $\ast$begin, size\+\_\+t len, \+::std\+::ostream $\ast$os) +\item +{\footnotesize template$<$typename T $>$ }\\void \mbox{\hyperlink{namespacetesting_1_1internal_afa92f5a284929dc3723e654a25feb7b9}{Universal\+Terse\+Print}} (const T \&value, \+::std\+::ostream $\ast$os) +\item +{\footnotesize template$<$typename Tuple $>$ }\\void \mbox{\hyperlink{namespacetesting_1_1internal_a6300aa1440d0019cf08d9a1f6efd4382}{Terse\+Print\+Prefix\+To\+Strings}} (const Tuple \&, std\+::integral\+\_\+constant$<$ size\+\_\+t, 0 $>$, \mbox{\hyperlink{namespacetesting_1_1internal_a50003bb76ec2934be1062be11efba8bf}{Strings}} $\ast$) +\item +{\footnotesize template$<$typename Tuple , size\+\_\+t I$>$ }\\void \mbox{\hyperlink{namespacetesting_1_1internal_ab244273c02742a3fac45cc241befc536}{Terse\+Print\+Prefix\+To\+Strings}} (const Tuple \&t, std\+::integral\+\_\+constant$<$ size\+\_\+t, I $>$, \mbox{\hyperlink{namespacetesting_1_1internal_a50003bb76ec2934be1062be11efba8bf}{Strings}} $\ast$strings) +\item +{\footnotesize template$<$typename Tuple $>$ }\\\mbox{\hyperlink{namespacetesting_1_1internal_a50003bb76ec2934be1062be11efba8bf}{Strings}} \mbox{\hyperlink{namespacetesting_1_1internal_a7e60d1478b074801c766eeee9be6c772}{Universal\+Terse\+Print\+Tuple\+Fields\+To\+Strings}} (const Tuple \&value) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} void \mbox{\hyperlink{namespacetesting_1_1internal_a5d3e97443d23bf1824f87feb172efd39}{Report\+Invalid\+Test\+Suite\+Type}} (const char $\ast$test\+\_\+suite\+\_\+name, \mbox{\hyperlink{structtesting_1_1internal_1_1_code_location}{Code\+Location}} code\+\_\+location) +\item +{\footnotesize template$<$class Param\+Type $>$ }\\std\+::string \mbox{\hyperlink{namespacetesting_1_1internal_a954ec4a8a932dac7743e77e459ffefdc}{Default\+Param\+Name}} (const \mbox{\hyperlink{structtesting_1_1_test_param_info}{Test\+Param\+Info}}$<$ Param\+Type $>$ \&info) +\item +{\footnotesize template$<$class Param\+Type , class Param\+Name\+Gen\+Functor $>$ }\\Param\+Name\+Gen\+Functor \mbox{\hyperlink{namespacetesting_1_1internal_abc0f0626877188afba6ad122d502f088}{Get\+Param\+Name\+Gen}} (Param\+Name\+Gen\+Functor func) +\item +{\footnotesize template$<$class Param\+Type $>$ }\\\mbox{\hyperlink{structtesting_1_1internal_1_1_param_name_gen_func}{Param\+Name\+Gen\+Func}}$<$ Param\+Type $>$\+::Type $\ast$ \mbox{\hyperlink{namespacetesting_1_1internal_a27d6ea7d401e877cb0fbddf4206ebbe4}{Get\+Param\+Name\+Gen}} () +\item +{\footnotesize template$<$typename T1 , typename T2 $>$ }\\Assertion\+Result \mbox{\hyperlink{namespacetesting_1_1internal_a1def8ec9393360a1b34a20528703e7f7}{Cmp\+Helper\+E\+Q\+Failure}} (const char $\ast$lhs\+\_\+expression, const char $\ast$rhs\+\_\+expression, const T1 \&lhs, const T2 \&rhs) +\item +bool \mbox{\hyperlink{namespacetesting_1_1internal_a5e3e473798de3189e9343132bcfd4fea}{operator==}} (\mbox{\hyperlink{structtesting_1_1internal_1_1faketype}{faketype}}, \mbox{\hyperlink{structtesting_1_1internal_1_1faketype}{faketype}}) +\item +bool \mbox{\hyperlink{namespacetesting_1_1internal_afa44fdec84edfc155ef63e4f0d4287cc}{operator!=}} (\mbox{\hyperlink{structtesting_1_1internal_1_1faketype}{faketype}}, \mbox{\hyperlink{structtesting_1_1internal_1_1faketype}{faketype}}) +\item +{\footnotesize template$<$typename T1 , typename T2 $>$ }\\Assertion\+Result \mbox{\hyperlink{namespacetesting_1_1internal_a4638c74d9b32e971f9b321af6fafc2f1}{Cmp\+Helper\+EQ}} (const char $\ast$lhs\+\_\+expression, const char $\ast$rhs\+\_\+expression, const T1 \&lhs, const T2 \&rhs) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result \mbox{\hyperlink{namespacetesting_1_1internal_a1edf90480571c0659a39d13e3777d9ce}{Cmp\+Helper\+EQ}} (const char $\ast$lhs\+\_\+expression, const char $\ast$rhs\+\_\+expression, \mbox{\hyperlink{namespacetesting_1_1internal_a05c6bd9ede5ccdf25191a590d610dcc6}{Biggest\+Int}} lhs, \mbox{\hyperlink{namespacetesting_1_1internal_a05c6bd9ede5ccdf25191a590d610dcc6}{Biggest\+Int}} rhs) +\item +{\footnotesize template$<$typename T1 , typename T2 $>$ }\\Assertion\+Result \mbox{\hyperlink{namespacetesting_1_1internal_a894ffccd936d78fd555f490020c27f0a}{Cmp\+Helper\+Op\+Failure}} (const char $\ast$expr1, const char $\ast$expr2, const T1 \&val1, const T2 \&val2, const char $\ast$op) +\item +\mbox{\hyperlink{namespacetesting_1_1internal_aa14e3caa94126d7fb8e06bfb3d24ae4a}{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+C\+M\+P\+\_\+\+H\+E\+L\+P\+E\+R\+\_\+}} (NE, !=) +\item +\mbox{\hyperlink{namespacetesting_1_1internal_ade60646b18728043fff84d7b4125de2c}{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+C\+M\+P\+\_\+\+H\+E\+L\+P\+E\+R\+\_\+}} (LE,$<$=) +\item +\mbox{\hyperlink{namespacetesting_1_1internal_aabcbff15eac496f8487699d19f42c274}{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+C\+M\+P\+\_\+\+H\+E\+L\+P\+E\+R\+\_\+}} (LT,$<$) +\item +\mbox{\hyperlink{namespacetesting_1_1internal_af969886067930ce70f6405cd5aa8b06b}{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+C\+M\+P\+\_\+\+H\+E\+L\+P\+E\+R\+\_\+}} (GE, $>$=) +\item +\mbox{\hyperlink{namespacetesting_1_1internal_a7fdb4fc164db83c51dfad17640bfeae9}{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+C\+M\+P\+\_\+\+H\+E\+L\+P\+E\+R\+\_\+}} (GT, $>$) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result \mbox{\hyperlink{namespacetesting_1_1internal_a93eb9d61cac7faf1faff6301ae5f4a46}{Cmp\+Helper\+S\+T\+R\+EQ}} (const char $\ast$s1\+\_\+expression, const char $\ast$s2\+\_\+expression, const char $\ast$s1, const char $\ast$s2) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result \mbox{\hyperlink{namespacetesting_1_1internal_a00c3d012df6173622ef558a131bfb95d}{Cmp\+Helper\+S\+T\+R\+C\+A\+S\+E\+EQ}} (const char $\ast$s1\+\_\+expression, const char $\ast$s2\+\_\+expression, const char $\ast$s1, const char $\ast$s2) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result \mbox{\hyperlink{namespacetesting_1_1internal_a6b485231a046ff760844a0321c04870b}{Cmp\+Helper\+S\+T\+R\+NE}} (const char $\ast$s1\+\_\+expression, const char $\ast$s2\+\_\+expression, const char $\ast$s1, const char $\ast$s2) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result \mbox{\hyperlink{namespacetesting_1_1internal_a5f74b933606b0a742cd5a8ad2d7087e0}{Cmp\+Helper\+S\+T\+R\+C\+A\+S\+E\+NE}} (const char $\ast$s1\+\_\+expression, const char $\ast$s2\+\_\+expression, const char $\ast$s1, const char $\ast$s2) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result \mbox{\hyperlink{namespacetesting_1_1internal_ad40d557f9c157790160d6e4f2b0d9bab}{Cmp\+Helper\+S\+T\+R\+EQ}} (const char $\ast$s1\+\_\+expression, const char $\ast$s2\+\_\+expression, const wchar\+\_\+t $\ast$s1, const wchar\+\_\+t $\ast$s2) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result \mbox{\hyperlink{namespacetesting_1_1internal_a6e700804399b6694d8d6157e3a141b17}{Cmp\+Helper\+S\+T\+R\+NE}} (const char $\ast$s1\+\_\+expression, const char $\ast$s2\+\_\+expression, const wchar\+\_\+t $\ast$s1, const wchar\+\_\+t $\ast$s2) +\item +{\footnotesize template$<$typename Raw\+Type $>$ }\\Assertion\+Result \mbox{\hyperlink{namespacetesting_1_1internal_a98ce463e5dbe0c6120fa817e1f8f2944}{Cmp\+Helper\+Floating\+Point\+EQ}} (const char $\ast$lhs\+\_\+expression, const char $\ast$rhs\+\_\+expression, Raw\+Type lhs\+\_\+value, Raw\+Type rhs\+\_\+value) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result \mbox{\hyperlink{namespacetesting_1_1internal_aea60207c4cedc8946a70ada62e38da8f}{Double\+Near\+Pred\+Format}} (const char $\ast$expr1, const char $\ast$expr2, const char $\ast$abs\+\_\+error\+\_\+expr, double val1, double val2, double abs\+\_\+error) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} \mbox{\hyperlink{namespacetesting_1_1internal_a5fd9f88035bd7f38979a2b15aead2bab}{G\+T\+E\+S\+T\+\_\+\+A\+T\+T\+R\+I\+B\+U\+T\+E\+\_\+\+P\+R\+I\+N\+T\+F\+\_\+}} (2, 3) void Colored\+Printf(\mbox{\hyperlink{namespacetesting_1_1internal_a648c1bc94c2ef9e868ff3f9dff0f9c4e}{G\+Test\+Color}} color +\end{DoxyCompactItemize} +\subsection*{Variables} +\begin{DoxyCompactItemize} +\item +const char \mbox{\hyperlink{namespacetesting_1_1internal_afcd71adaa9d1e6df7b282a17fc48125c}{k\+Path\+Separator}} = \textquotesingle{}/\textquotesingle{} +\item +const char \mbox{\hyperlink{namespacetesting_1_1internal_a23a8e9527d0e544e7df2d64ad549ce3e}{k\+Current\+Directory\+String}} \mbox{[}$\,$\mbox{]} = \char`\"{}./\char`\"{} +\item +const int \mbox{\hyperlink{namespacetesting_1_1internal_a24f0a3d50cac54a9132f4828ec9b96d9}{k\+Std\+Out\+Fileno}} = S\+T\+D\+O\+U\+T\+\_\+\+F\+I\+L\+E\+NO +\item +const int \mbox{\hyperlink{namespacetesting_1_1internal_a747eccfdbdee3ff8af3bedc476a57c85}{k\+Std\+Err\+Fileno}} = S\+T\+D\+E\+R\+R\+\_\+\+F\+I\+L\+E\+NO +\item +const char \mbox{\hyperlink{namespacetesting_1_1internal_abae7a5775c901f2fd12b058b00d09840}{k\+Unknown\+File}} \mbox{[}$\,$\mbox{]} = \char`\"{}unknown file\char`\"{} +\item +const \mbox{\hyperlink{namespacetesting_1_1internal_a05c6bd9ede5ccdf25191a590d610dcc6}{Biggest\+Int}} \mbox{\hyperlink{namespacetesting_1_1internal_ad901880198832bc166d2493096b451f7}{k\+Max\+Biggest\+Int}} +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} const char \mbox{\hyperlink{namespacetesting_1_1internal_a999c7ef9ff01b6d2d76669372c444aa3}{k\+Stack\+Trace\+Marker}} \mbox{[}$\,$\mbox{]} +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} const char $\ast$ \mbox{\hyperlink{namespacetesting_1_1internal_a40b2a93ff318f5975eb8246b01221ce8}{fmt}} +\end{DoxyCompactItemize} + + +\subsection{Typedef Documentation} +\mbox{\Hypertarget{namespacetesting_1_1internal_a05c6bd9ede5ccdf25191a590d610dcc6}\label{namespacetesting_1_1internal_a05c6bd9ede5ccdf25191a590d610dcc6}} +\index{testing\+::internal@{testing\+::internal}!Biggest\+Int@{Biggest\+Int}} +\index{Biggest\+Int@{Biggest\+Int}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Biggest\+Int}{BiggestInt}} +{\footnotesize\ttfamily typedef long long \mbox{\hyperlink{namespacetesting_1_1internal_a05c6bd9ede5ccdf25191a590d610dcc6}{testing\+::internal\+::\+Biggest\+Int}}} + + + +Definition at line 2223 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a66a7579b1893b260c31dad577f7a5c48}\label{namespacetesting_1_1internal_a66a7579b1893b260c31dad577f7a5c48}} +\index{testing\+::internal@{testing\+::internal}!Double@{Double}} +\index{Double@{Double}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Double}{Double}} +{\footnotesize\ttfamily typedef \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point}{Floating\+Point}}$<$double$>$ \mbox{\hyperlink{namespacetesting_1_1internal_a66a7579b1893b260c31dad577f7a5c48}{testing\+::internal\+::\+Double}}} + + + +Definition at line 6846 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_abb1d0789f19bdde21affccbd1078b525}\label{namespacetesting_1_1internal_abb1d0789f19bdde21affccbd1078b525}} +\index{testing\+::internal@{testing\+::internal}!false\+\_\+type@{false\+\_\+type}} +\index{false\+\_\+type@{false\+\_\+type}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{false\+\_\+type}{false\_type}} +{\footnotesize\ttfamily typedef \mbox{\hyperlink{structtesting_1_1internal_1_1bool__constant}{bool\+\_\+constant}}$<$false$>$ \mbox{\hyperlink{namespacetesting_1_1internal_abb1d0789f19bdde21affccbd1078b525}{testing\+::internal\+::false\+\_\+type}}} + + + +Definition at line 2190 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a02e1981f5ff70609e6ac06e006ff519a}\label{namespacetesting_1_1internal_a02e1981f5ff70609e6ac06e006ff519a}} +\index{testing\+::internal@{testing\+::internal}!Float@{Float}} +\index{Float@{Float}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Float}{Float}} +{\footnotesize\ttfamily typedef \mbox{\hyperlink{classtesting_1_1internal_1_1_floating_point}{Floating\+Point}}$<$float$>$ \mbox{\hyperlink{namespacetesting_1_1internal_a02e1981f5ff70609e6ac06e006ff519a}{testing\+::internal\+::\+Float}}} + + + +Definition at line 6845 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a8ee38faaf875f133358abaf9bc056cec}\label{namespacetesting_1_1internal_a8ee38faaf875f133358abaf9bc056cec}} +\index{testing\+::internal@{testing\+::internal}!Int32@{Int32}} +\index{Int32@{Int32}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Int32}{Int32}} +{\footnotesize\ttfamily typedef \mbox{\hyperlink{classtesting_1_1internal_1_1_type_with_size}{Type\+With\+Size}}$<$4$>$\+::Int \mbox{\hyperlink{namespacetesting_1_1internal_a8ee38faaf875f133358abaf9bc056cec}{testing\+::internal\+::\+Int32}}} + + + +Definition at line 2475 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a271c563fec38b804ddab0677f51f70a8}\label{namespacetesting_1_1internal_a271c563fec38b804ddab0677f51f70a8}} +\index{testing\+::internal@{testing\+::internal}!Int64@{Int64}} +\index{Int64@{Int64}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Int64}{Int64}} +{\footnotesize\ttfamily typedef \mbox{\hyperlink{classtesting_1_1internal_1_1_type_with_size}{Type\+With\+Size}}$<$8$>$\+::Int \mbox{\hyperlink{namespacetesting_1_1internal_a271c563fec38b804ddab0677f51f70a8}{testing\+::internal\+::\+Int64}}} + + + +Definition at line 2477 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_ad8f0c2883245f1df2a53618a49f0deb3}\label{namespacetesting_1_1internal_ad8f0c2883245f1df2a53618a49f0deb3}} +\index{testing\+::internal@{testing\+::internal}!Is\+Container@{Is\+Container}} +\index{Is\+Container@{Is\+Container}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Is\+Container}{IsContainer}} +{\footnotesize\ttfamily typedef int \mbox{\hyperlink{namespacetesting_1_1internal_ad8f0c2883245f1df2a53618a49f0deb3}{testing\+::internal\+::\+Is\+Container}}} + + + +Definition at line 7422 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_abf080521ce135deb510e0a7830fd3d33}\label{namespacetesting_1_1internal_abf080521ce135deb510e0a7830fd3d33}} +\index{testing\+::internal@{testing\+::internal}!Is\+Not\+Container@{Is\+Not\+Container}} +\index{Is\+Not\+Container@{Is\+Not\+Container}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Is\+Not\+Container}{IsNotContainer}} +{\footnotesize\ttfamily typedef char \mbox{\hyperlink{namespacetesting_1_1internal_abf080521ce135deb510e0a7830fd3d33}{testing\+::internal\+::\+Is\+Not\+Container}}} + + + +Definition at line 7433 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a08b187c6cc4e28400aadf9a32fccc8de}\label{namespacetesting_1_1internal_a08b187c6cc4e28400aadf9a32fccc8de}} +\index{testing\+::internal@{testing\+::internal}!Mutex\+Lock@{Mutex\+Lock}} +\index{Mutex\+Lock@{Mutex\+Lock}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Mutex\+Lock}{MutexLock}} +{\footnotesize\ttfamily typedef \mbox{\hyperlink{classtesting_1_1internal_1_1_g_test_mutex_lock}{G\+Test\+Mutex\+Lock}} \mbox{\hyperlink{namespacetesting_1_1internal_a08b187c6cc4e28400aadf9a32fccc8de}{testing\+::internal\+::\+Mutex\+Lock}}} + + + +Definition at line 2162 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_aac31682b6b41997d6cc610a5787dc8bc}\label{namespacetesting_1_1internal_aac31682b6b41997d6cc610a5787dc8bc}} +\index{testing\+::internal@{testing\+::internal}!Parameterized\+Test\+Case\+Info@{Parameterized\+Test\+Case\+Info}} +\index{Parameterized\+Test\+Case\+Info@{Parameterized\+Test\+Case\+Info}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Parameterized\+Test\+Case\+Info}{ParameterizedTestCaseInfo}} +{\footnotesize\ttfamily template$<$class Test\+Case $>$ \\ +using \mbox{\hyperlink{namespacetesting_1_1internal_aac31682b6b41997d6cc610a5787dc8bc}{testing\+::internal\+::\+Parameterized\+Test\+Case\+Info}} = typedef \mbox{\hyperlink{classtesting_1_1internal_1_1_parameterized_test_suite_info}{Parameterized\+Test\+Suite\+Info}}$<$Test\+Case$>$} + + + +Definition at line 11196 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a04786aa10f8b0bf38a5ead94d00475f4}\label{namespacetesting_1_1internal_a04786aa10f8b0bf38a5ead94d00475f4}} +\index{testing\+::internal@{testing\+::internal}!Set\+Up\+Tear\+Down\+Suite\+Func\+Type@{Set\+Up\+Tear\+Down\+Suite\+Func\+Type}} +\index{Set\+Up\+Tear\+Down\+Suite\+Func\+Type@{Set\+Up\+Tear\+Down\+Suite\+Func\+Type}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Set\+Up\+Tear\+Down\+Suite\+Func\+Type}{SetUpTearDownSuiteFuncType}} +{\footnotesize\ttfamily using \mbox{\hyperlink{namespacetesting_1_1internal_a04786aa10f8b0bf38a5ead94d00475f4}{testing\+::internal\+::\+Set\+Up\+Tear\+Down\+Suite\+Func\+Type}} = typedef void ($\ast$)()} + + + +Definition at line 6941 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a83e4e0732ac6a9dcfe6ee299dc1b9fa2}\label{namespacetesting_1_1internal_a83e4e0732ac6a9dcfe6ee299dc1b9fa2}} +\index{testing\+::internal@{testing\+::internal}!Set\+Up\+Test\+Suite\+Func@{Set\+Up\+Test\+Suite\+Func}} +\index{Set\+Up\+Test\+Suite\+Func@{Set\+Up\+Test\+Suite\+Func}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Set\+Up\+Test\+Suite\+Func}{SetUpTestSuiteFunc}} +{\footnotesize\ttfamily using \mbox{\hyperlink{namespacetesting_1_1internal_a83e4e0732ac6a9dcfe6ee299dc1b9fa2}{testing\+::internal\+::\+Set\+Up\+Test\+Suite\+Func}} = typedef void ($\ast$)()} + + + +Definition at line 6926 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a8e8ff5b11e64078831112677156cb111}\label{namespacetesting_1_1internal_a8e8ff5b11e64078831112677156cb111}} +\index{testing\+::internal@{testing\+::internal}!string@{string}} +\index{string@{string}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{string}{string}} +{\footnotesize\ttfamily typedef \+::std\+::string \mbox{\hyperlink{namespacetesting_1_1internal_a8e8ff5b11e64078831112677156cb111}{testing\+::internal\+::string}}} + + + +Definition at line 1115 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a50003bb76ec2934be1062be11efba8bf}\label{namespacetesting_1_1internal_a50003bb76ec2934be1062be11efba8bf}} +\index{testing\+::internal@{testing\+::internal}!Strings@{Strings}} +\index{Strings@{Strings}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Strings}{Strings}} +{\footnotesize\ttfamily typedef \+::std\+::vector$<$ \+::std\+::string$>$ \mbox{\hyperlink{namespacetesting_1_1internal_a50003bb76ec2934be1062be11efba8bf}{testing\+::internal\+::\+Strings}}} + + + +Definition at line 8926 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a8257a87aa42cebaa54b0c48a6ae657a5}\label{namespacetesting_1_1internal_a8257a87aa42cebaa54b0c48a6ae657a5}} +\index{testing\+::internal@{testing\+::internal}!Tear\+Down\+Test\+Suite\+Func@{Tear\+Down\+Test\+Suite\+Func}} +\index{Tear\+Down\+Test\+Suite\+Func@{Tear\+Down\+Test\+Suite\+Func}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Tear\+Down\+Test\+Suite\+Func}{TearDownTestSuiteFunc}} +{\footnotesize\ttfamily using \mbox{\hyperlink{namespacetesting_1_1internal_a8257a87aa42cebaa54b0c48a6ae657a5}{testing\+::internal\+::\+Tear\+Down\+Test\+Suite\+Func}} = typedef void ($\ast$)()} + + + +Definition at line 6927 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a66a845df404b38fe85c5e14a069f255a}\label{namespacetesting_1_1internal_a66a845df404b38fe85c5e14a069f255a}} +\index{testing\+::internal@{testing\+::internal}!Time\+In\+Millis@{Time\+In\+Millis}} +\index{Time\+In\+Millis@{Time\+In\+Millis}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Time\+In\+Millis}{TimeInMillis}} +{\footnotesize\ttfamily typedef \mbox{\hyperlink{classtesting_1_1internal_1_1_type_with_size}{Type\+With\+Size}}$<$8$>$\+::Int \mbox{\hyperlink{namespacetesting_1_1internal_a66a845df404b38fe85c5e14a069f255a}{testing\+::internal\+::\+Time\+In\+Millis}}} + + + +Definition at line 2479 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a62f917c3424d8841de9b49b5ec28edb4}\label{namespacetesting_1_1internal_a62f917c3424d8841de9b49b5ec28edb4}} +\index{testing\+::internal@{testing\+::internal}!true\+\_\+type@{true\+\_\+type}} +\index{true\+\_\+type@{true\+\_\+type}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{true\+\_\+type}{true\_type}} +{\footnotesize\ttfamily typedef \mbox{\hyperlink{structtesting_1_1internal_1_1bool__constant}{bool\+\_\+constant}}$<$true$>$ \mbox{\hyperlink{namespacetesting_1_1internal_a62f917c3424d8841de9b49b5ec28edb4}{testing\+::internal\+::true\+\_\+type}}} + + + +Definition at line 2191 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_ab1114197d3c657d8b7f8e0c5caa12d00}\label{namespacetesting_1_1internal_ab1114197d3c657d8b7f8e0c5caa12d00}} +\index{testing\+::internal@{testing\+::internal}!Type\+Id@{Type\+Id}} +\index{Type\+Id@{Type\+Id}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Type\+Id}{TypeId}} +{\footnotesize\ttfamily typedef const void$\ast$ \mbox{\hyperlink{namespacetesting_1_1internal_ab1114197d3c657d8b7f8e0c5caa12d00}{testing\+::internal\+::\+Type\+Id}}} + + + +Definition at line 6854 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a40d4fffcd2bf56f18b1c380615aa85e3}\label{namespacetesting_1_1internal_a40d4fffcd2bf56f18b1c380615aa85e3}} +\index{testing\+::internal@{testing\+::internal}!U\+Int32@{U\+Int32}} +\index{U\+Int32@{U\+Int32}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{U\+Int32}{UInt32}} +{\footnotesize\ttfamily typedef \mbox{\hyperlink{classtesting_1_1internal_1_1_type_with_size}{Type\+With\+Size}}$<$4$>$\+::U\+Int \mbox{\hyperlink{namespacetesting_1_1internal_a40d4fffcd2bf56f18b1c380615aa85e3}{testing\+::internal\+::\+U\+Int32}}} + + + +Definition at line 2476 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_aa6a1ac454e6d7e550fa4925c62c35caa}\label{namespacetesting_1_1internal_aa6a1ac454e6d7e550fa4925c62c35caa}} +\index{testing\+::internal@{testing\+::internal}!U\+Int64@{U\+Int64}} +\index{U\+Int64@{U\+Int64}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{U\+Int64}{UInt64}} +{\footnotesize\ttfamily typedef \mbox{\hyperlink{classtesting_1_1internal_1_1_type_with_size}{Type\+With\+Size}}$<$8$>$\+::U\+Int \mbox{\hyperlink{namespacetesting_1_1internal_aa6a1ac454e6d7e550fa4925c62c35caa}{testing\+::internal\+::\+U\+Int64}}} + + + +Definition at line 2478 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a3f543179329c353aee1d7b54a9a8e335}\label{namespacetesting_1_1internal_a3f543179329c353aee1d7b54a9a8e335}} +\index{testing\+::internal@{testing\+::internal}!wstring@{wstring}} +\index{wstring@{wstring}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{wstring}{wstring}} +{\footnotesize\ttfamily typedef \+::std\+::wstring \mbox{\hyperlink{namespacetesting_1_1internal_a3f543179329c353aee1d7b54a9a8e335}{testing\+::internal\+::wstring}}} + + + +Definition at line 1121 of file gtest.\+h. + + + +\subsection{Enumeration Type Documentation} +\mbox{\Hypertarget{namespacetesting_1_1internal_ae2ef98247c76a50cdc80ceb4a6c81793}\label{namespacetesting_1_1internal_ae2ef98247c76a50cdc80ceb4a6c81793}} +\index{testing\+::internal@{testing\+::internal}!Char\+Format@{Char\+Format}} +\index{Char\+Format@{Char\+Format}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Char\+Format}{CharFormat}} +{\footnotesize\ttfamily enum \mbox{\hyperlink{namespacetesting_1_1internal_ae2ef98247c76a50cdc80ceb4a6c81793}{testing\+::internal\+::\+Char\+Format}}} + +\begin{DoxyEnumFields}{Enumerator} +\raisebox{\heightof{T}}[0pt][0pt]{\index{k\+As\+Is@{k\+As\+Is}!testing\+::internal@{testing\+::internal}}\index{testing\+::internal@{testing\+::internal}!k\+As\+Is@{k\+As\+Is}}}\mbox{\Hypertarget{namespacetesting_1_1internal_ae2ef98247c76a50cdc80ceb4a6c81793af7038866be92e9978360b831e376ffaa}\label{namespacetesting_1_1internal_ae2ef98247c76a50cdc80ceb4a6c81793af7038866be92e9978360b831e376ffaa}} +k\+As\+Is&\\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{k\+Hex\+Escape@{k\+Hex\+Escape}!testing\+::internal@{testing\+::internal}}\index{testing\+::internal@{testing\+::internal}!k\+Hex\+Escape@{k\+Hex\+Escape}}}\mbox{\Hypertarget{namespacetesting_1_1internal_ae2ef98247c76a50cdc80ceb4a6c81793aebfa5293302338a8e8678744c103f113}\label{namespacetesting_1_1internal_ae2ef98247c76a50cdc80ceb4a6c81793aebfa5293302338a8e8678744c103f113}} +k\+Hex\+Escape&\\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{k\+Special\+Escape@{k\+Special\+Escape}!testing\+::internal@{testing\+::internal}}\index{testing\+::internal@{testing\+::internal}!k\+Special\+Escape@{k\+Special\+Escape}}}\mbox{\Hypertarget{namespacetesting_1_1internal_ae2ef98247c76a50cdc80ceb4a6c81793ae1211108e9f35f891d9951da64794d03}\label{namespacetesting_1_1internal_ae2ef98247c76a50cdc80ceb4a6c81793ae1211108e9f35f891d9951da64794d03}} +k\+Special\+Escape&\\ +\hline + +\end{DoxyEnumFields} + + +Definition at line 11126 of file gtest-\/all.\+cc. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a17fb8f0125fa92404a249ed38a43faa4}\label{namespacetesting_1_1internal_a17fb8f0125fa92404a249ed38a43faa4}} +\index{testing\+::internal@{testing\+::internal}!Default\+Printer\+Type@{Default\+Printer\+Type}} +\index{Default\+Printer\+Type@{Default\+Printer\+Type}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Default\+Printer\+Type}{DefaultPrinterType}} +{\footnotesize\ttfamily enum \mbox{\hyperlink{namespacetesting_1_1internal_a17fb8f0125fa92404a249ed38a43faa4}{testing\+::internal\+::\+Default\+Printer\+Type}}} + +\begin{DoxyEnumFields}{Enumerator} +\raisebox{\heightof{T}}[0pt][0pt]{\index{k\+Print\+Container@{k\+Print\+Container}!testing\+::internal@{testing\+::internal}}\index{testing\+::internal@{testing\+::internal}!k\+Print\+Container@{k\+Print\+Container}}}\mbox{\Hypertarget{namespacetesting_1_1internal_a17fb8f0125fa92404a249ed38a43faa4a945a19e59155ce1d335e8c3bcbdf61db}\label{namespacetesting_1_1internal_a17fb8f0125fa92404a249ed38a43faa4a945a19e59155ce1d335e8c3bcbdf61db}} +k\+Print\+Container&\\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{k\+Print\+Pointer@{k\+Print\+Pointer}!testing\+::internal@{testing\+::internal}}\index{testing\+::internal@{testing\+::internal}!k\+Print\+Pointer@{k\+Print\+Pointer}}}\mbox{\Hypertarget{namespacetesting_1_1internal_a17fb8f0125fa92404a249ed38a43faa4a8eaa6fff4a58832b30027df49f73dcbf}\label{namespacetesting_1_1internal_a17fb8f0125fa92404a249ed38a43faa4a8eaa6fff4a58832b30027df49f73dcbf}} +k\+Print\+Pointer&\\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{k\+Print\+Function\+Pointer@{k\+Print\+Function\+Pointer}!testing\+::internal@{testing\+::internal}}\index{testing\+::internal@{testing\+::internal}!k\+Print\+Function\+Pointer@{k\+Print\+Function\+Pointer}}}\mbox{\Hypertarget{namespacetesting_1_1internal_a17fb8f0125fa92404a249ed38a43faa4a5a066cde30e276c6460ba10d123d0c2c}\label{namespacetesting_1_1internal_a17fb8f0125fa92404a249ed38a43faa4a5a066cde30e276c6460ba10d123d0c2c}} +k\+Print\+Function\+Pointer&\\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{k\+Print\+Other@{k\+Print\+Other}!testing\+::internal@{testing\+::internal}}\index{testing\+::internal@{testing\+::internal}!k\+Print\+Other@{k\+Print\+Other}}}\mbox{\Hypertarget{namespacetesting_1_1internal_a17fb8f0125fa92404a249ed38a43faa4a6f88d77d9d763d8a009caf950cfbab28}\label{namespacetesting_1_1internal_a17fb8f0125fa92404a249ed38a43faa4a6f88d77d9d763d8a009caf950cfbab28}} +k\+Print\+Other&\\ +\hline + +\end{DoxyEnumFields} + + +Definition at line 8434 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a648c1bc94c2ef9e868ff3f9dff0f9c4e}\label{namespacetesting_1_1internal_a648c1bc94c2ef9e868ff3f9dff0f9c4e}} +\index{testing\+::internal@{testing\+::internal}!G\+Test\+Color@{G\+Test\+Color}} +\index{G\+Test\+Color@{G\+Test\+Color}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{G\+Test\+Color}{GTestColor}} +{\footnotesize\ttfamily enum \mbox{\hyperlink{namespacetesting_1_1internal_a648c1bc94c2ef9e868ff3f9dff0f9c4e}{testing\+::internal\+::\+G\+Test\+Color}}} + +\begin{DoxyEnumFields}{Enumerator} +\raisebox{\heightof{T}}[0pt][0pt]{\index{C\+O\+L\+O\+R\+\_\+\+D\+E\+F\+A\+U\+LT@{C\+O\+L\+O\+R\+\_\+\+D\+E\+F\+A\+U\+LT}!testing\+::internal@{testing\+::internal}}\index{testing\+::internal@{testing\+::internal}!C\+O\+L\+O\+R\+\_\+\+D\+E\+F\+A\+U\+LT@{C\+O\+L\+O\+R\+\_\+\+D\+E\+F\+A\+U\+LT}}}\mbox{\Hypertarget{namespacetesting_1_1internal_a648c1bc94c2ef9e868ff3f9dff0f9c4eafcd8803dc9e37e374d5a4486afc230b7}\label{namespacetesting_1_1internal_a648c1bc94c2ef9e868ff3f9dff0f9c4eafcd8803dc9e37e374d5a4486afc230b7}} +C\+O\+L\+O\+R\+\_\+\+D\+E\+F\+A\+U\+LT&\\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{C\+O\+L\+O\+R\+\_\+\+R\+ED@{C\+O\+L\+O\+R\+\_\+\+R\+ED}!testing\+::internal@{testing\+::internal}}\index{testing\+::internal@{testing\+::internal}!C\+O\+L\+O\+R\+\_\+\+R\+ED@{C\+O\+L\+O\+R\+\_\+\+R\+ED}}}\mbox{\Hypertarget{namespacetesting_1_1internal_a648c1bc94c2ef9e868ff3f9dff0f9c4ea9ebb3ddab9391781f6ee5021e1e443c3}\label{namespacetesting_1_1internal_a648c1bc94c2ef9e868ff3f9dff0f9c4ea9ebb3ddab9391781f6ee5021e1e443c3}} +C\+O\+L\+O\+R\+\_\+\+R\+ED&\\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{C\+O\+L\+O\+R\+\_\+\+G\+R\+E\+EN@{C\+O\+L\+O\+R\+\_\+\+G\+R\+E\+EN}!testing\+::internal@{testing\+::internal}}\index{testing\+::internal@{testing\+::internal}!C\+O\+L\+O\+R\+\_\+\+G\+R\+E\+EN@{C\+O\+L\+O\+R\+\_\+\+G\+R\+E\+EN}}}\mbox{\Hypertarget{namespacetesting_1_1internal_a648c1bc94c2ef9e868ff3f9dff0f9c4ea3b1e81f5b14a17b35a8672d57d166507}\label{namespacetesting_1_1internal_a648c1bc94c2ef9e868ff3f9dff0f9c4ea3b1e81f5b14a17b35a8672d57d166507}} +C\+O\+L\+O\+R\+\_\+\+G\+R\+E\+EN&\\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{C\+O\+L\+O\+R\+\_\+\+Y\+E\+L\+L\+OW@{C\+O\+L\+O\+R\+\_\+\+Y\+E\+L\+L\+OW}!testing\+::internal@{testing\+::internal}}\index{testing\+::internal@{testing\+::internal}!C\+O\+L\+O\+R\+\_\+\+Y\+E\+L\+L\+OW@{C\+O\+L\+O\+R\+\_\+\+Y\+E\+L\+L\+OW}}}\mbox{\Hypertarget{namespacetesting_1_1internal_a648c1bc94c2ef9e868ff3f9dff0f9c4ea2cca441161aca75a208ff08d07f5b1a5}\label{namespacetesting_1_1internal_a648c1bc94c2ef9e868ff3f9dff0f9c4ea2cca441161aca75a208ff08d07f5b1a5}} +C\+O\+L\+O\+R\+\_\+\+Y\+E\+L\+L\+OW&\\ +\hline + +\end{DoxyEnumFields} + + +Definition at line 16427 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_aa6255ef3b023c5b4e1a2198d887fb977}\label{namespacetesting_1_1internal_aa6255ef3b023c5b4e1a2198d887fb977}} +\index{testing\+::internal@{testing\+::internal}!G\+Test\+Log\+Severity@{G\+Test\+Log\+Severity}} +\index{G\+Test\+Log\+Severity@{G\+Test\+Log\+Severity}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{G\+Test\+Log\+Severity}{GTestLogSeverity}} +{\footnotesize\ttfamily enum \mbox{\hyperlink{namespacetesting_1_1internal_aa6255ef3b023c5b4e1a2198d887fb977}{testing\+::internal\+::\+G\+Test\+Log\+Severity}}} + +\begin{DoxyEnumFields}{Enumerator} +\raisebox{\heightof{T}}[0pt][0pt]{\index{G\+T\+E\+S\+T\+\_\+\+I\+N\+FO@{G\+T\+E\+S\+T\+\_\+\+I\+N\+FO}!testing\+::internal@{testing\+::internal}}\index{testing\+::internal@{testing\+::internal}!G\+T\+E\+S\+T\+\_\+\+I\+N\+FO@{G\+T\+E\+S\+T\+\_\+\+I\+N\+FO}}}\mbox{\Hypertarget{namespacetesting_1_1internal_aa6255ef3b023c5b4e1a2198d887fb977aff315e0913fcda86fe4de882bf5e33e9}\label{namespacetesting_1_1internal_aa6255ef3b023c5b4e1a2198d887fb977aff315e0913fcda86fe4de882bf5e33e9}} +G\+T\+E\+S\+T\+\_\+\+I\+N\+FO&\\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{G\+T\+E\+S\+T\+\_\+\+W\+A\+R\+N\+I\+NG@{G\+T\+E\+S\+T\+\_\+\+W\+A\+R\+N\+I\+NG}!testing\+::internal@{testing\+::internal}}\index{testing\+::internal@{testing\+::internal}!G\+T\+E\+S\+T\+\_\+\+W\+A\+R\+N\+I\+NG@{G\+T\+E\+S\+T\+\_\+\+W\+A\+R\+N\+I\+NG}}}\mbox{\Hypertarget{namespacetesting_1_1internal_aa6255ef3b023c5b4e1a2198d887fb977a7a051bc2794f15a4bf0eab40562a304c}\label{namespacetesting_1_1internal_aa6255ef3b023c5b4e1a2198d887fb977a7a051bc2794f15a4bf0eab40562a304c}} +G\+T\+E\+S\+T\+\_\+\+W\+A\+R\+N\+I\+NG&\\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{G\+T\+E\+S\+T\+\_\+\+E\+R\+R\+OR@{G\+T\+E\+S\+T\+\_\+\+E\+R\+R\+OR}!testing\+::internal@{testing\+::internal}}\index{testing\+::internal@{testing\+::internal}!G\+T\+E\+S\+T\+\_\+\+E\+R\+R\+OR@{G\+T\+E\+S\+T\+\_\+\+E\+R\+R\+OR}}}\mbox{\Hypertarget{namespacetesting_1_1internal_aa6255ef3b023c5b4e1a2198d887fb977a651e9cd2a904e0c8210536271b875f75}\label{namespacetesting_1_1internal_aa6255ef3b023c5b4e1a2198d887fb977a651e9cd2a904e0c8210536271b875f75}} +G\+T\+E\+S\+T\+\_\+\+E\+R\+R\+OR&\\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{G\+T\+E\+S\+T\+\_\+\+F\+A\+T\+AL@{G\+T\+E\+S\+T\+\_\+\+F\+A\+T\+AL}!testing\+::internal@{testing\+::internal}}\index{testing\+::internal@{testing\+::internal}!G\+T\+E\+S\+T\+\_\+\+F\+A\+T\+AL@{G\+T\+E\+S\+T\+\_\+\+F\+A\+T\+AL}}}\mbox{\Hypertarget{namespacetesting_1_1internal_aa6255ef3b023c5b4e1a2198d887fb977a75063567740f6bf7da419b1b9197b12e}\label{namespacetesting_1_1internal_aa6255ef3b023c5b4e1a2198d887fb977a75063567740f6bf7da419b1b9197b12e}} +G\+T\+E\+S\+T\+\_\+\+F\+A\+T\+AL&\\ +\hline + +\end{DoxyEnumFields} + + +Definition at line 1219 of file gtest.\+h. + + + +\subsection{Function Documentation} +\mbox{\Hypertarget{namespacetesting_1_1internal_a4b24c851ab13569b1b15b3d259b60d2e}\label{namespacetesting_1_1internal_a4b24c851ab13569b1b15b3d259b60d2e}} +\index{testing\+::internal@{testing\+::internal}!Always\+False@{Always\+False}} +\index{Always\+False@{Always\+False}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Always\+False()}{AlwaysFalse()}} +{\footnotesize\ttfamily bool testing\+::internal\+::\+Always\+False (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 7260 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a4d46f09c3bfe68700b7f728d2cc3782f}\label{namespacetesting_1_1internal_a4d46f09c3bfe68700b7f728d2cc3782f}} +\index{testing\+::internal@{testing\+::internal}!Always\+True@{Always\+True}} +\index{Always\+True@{Always\+True}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Always\+True()}{AlwaysTrue()}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} bool testing\+::internal\+::\+Always\+True (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_1_1internal_af69e146a989e8d48def39a0cc59461c9}\label{namespacetesting_1_1internal_af69e146a989e8d48def39a0cc59461c9}} +\index{testing\+::internal@{testing\+::internal}!Append\+User\+Message@{Append\+User\+Message}} +\index{Append\+User\+Message@{Append\+User\+Message}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Append\+User\+Message()}{AppendUserMessage()}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} std\+::string testing\+::internal\+::\+Append\+User\+Message (\begin{DoxyParamCaption}\item[{const std\+::string \&}]{gtest\+\_\+msg, }\item[{const \mbox{\hyperlink{classtesting_1_1_message}{Message}} \&}]{user\+\_\+msg }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_1_1internal_a94a857fe6ff32cf4fdc4769a4071f239}\label{namespacetesting_1_1internal_a94a857fe6ff32cf4fdc4769a4071f239}} +\index{testing\+::internal@{testing\+::internal}!Array\+Aware\+Find@{Array\+Aware\+Find}} +\index{Array\+Aware\+Find@{Array\+Aware\+Find}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Array\+Aware\+Find()}{ArrayAwareFind()}} +{\footnotesize\ttfamily template$<$typename Iter , typename Element $>$ \\ +Iter testing\+::internal\+::\+Array\+Aware\+Find (\begin{DoxyParamCaption}\item[{Iter}]{begin, }\item[{Iter}]{end, }\item[{const Element \&}]{elem }\end{DoxyParamCaption})} + + + +Definition at line 7528 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_af4bebf36baf0b0a5b26d051dde55fa47}\label{namespacetesting_1_1internal_af4bebf36baf0b0a5b26d051dde55fa47}} +\index{testing\+::internal@{testing\+::internal}!Array\+Eq@{Array\+Eq}} +\index{Array\+Eq@{Array\+Eq}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Array\+Eq()}{ArrayEq()}\hspace{0.1cm}{\footnotesize\ttfamily [1/3]}} +{\footnotesize\ttfamily template$<$typename T , typename U $>$ \\ +bool testing\+::internal\+::\+Array\+Eq (\begin{DoxyParamCaption}\item[{const T $\ast$}]{lhs, }\item[{size\+\_\+t}]{size, }\item[{const U $\ast$}]{rhs }\end{DoxyParamCaption})} + + + +Definition at line 7517 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a49b4d0ee49c0f8c93bab29ebd20630cc}\label{namespacetesting_1_1internal_a49b4d0ee49c0f8c93bab29ebd20630cc}} +\index{testing\+::internal@{testing\+::internal}!Array\+Eq@{Array\+Eq}} +\index{Array\+Eq@{Array\+Eq}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Array\+Eq()}{ArrayEq()}\hspace{0.1cm}{\footnotesize\ttfamily [2/3]}} +{\footnotesize\ttfamily template$<$typename T , typename U $>$ \\ +bool testing\+::internal\+::\+Array\+Eq (\begin{DoxyParamCaption}\item[{const T \&}]{lhs, }\item[{const U \&}]{rhs }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 7505 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a5cb6f81ee827130024261121c742b26c}\label{namespacetesting_1_1internal_a5cb6f81ee827130024261121c742b26c}} +\index{testing\+::internal@{testing\+::internal}!Array\+Eq@{Array\+Eq}} +\index{Array\+Eq@{Array\+Eq}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Array\+Eq()}{ArrayEq()}\hspace{0.1cm}{\footnotesize\ttfamily [3/3]}} +{\footnotesize\ttfamily template$<$typename T , typename U , size\+\_\+t N$>$ \\ +bool testing\+::internal\+::\+Array\+Eq (\begin{DoxyParamCaption}\item[{const T(\&)}]{lhs\mbox{[}\+N\mbox{]}, }\item[{const U(\&)}]{rhs\mbox{[}\+N\mbox{]} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 7509 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a1055088bb9b867e1b7b8f096f519d7c5}\label{namespacetesting_1_1internal_a1055088bb9b867e1b7b8f096f519d7c5}} +\index{testing\+::internal@{testing\+::internal}!Bool\+From\+G\+Test\+Env@{Bool\+From\+G\+Test\+Env}} +\index{Bool\+From\+G\+Test\+Env@{Bool\+From\+G\+Test\+Env}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Bool\+From\+G\+Test\+Env()}{BoolFromGTestEnv()}} +{\footnotesize\ttfamily bool testing\+::internal\+::\+Bool\+From\+G\+Test\+Env (\begin{DoxyParamCaption}\item[{const char $\ast$}]{flag, }\item[{bool}]{default\+\_\+value }\end{DoxyParamCaption})} + + + +Definition at line 10934 of file gtest-\/all.\+cc. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a8ec00d458d0d442bd64af7b5f9c22dda}\label{namespacetesting_1_1internal_a8ec00d458d0d442bd64af7b5f9c22dda}} +\index{testing\+::internal@{testing\+::internal}!Capture\+Stderr@{Capture\+Stderr}} +\index{Capture\+Stderr@{Capture\+Stderr}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Capture\+Stderr()}{CaptureStderr()}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} void testing\+::internal\+::\+Capture\+Stderr (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + + + +Definition at line 10784 of file gtest-\/all.\+cc. + +\mbox{\Hypertarget{namespacetesting_1_1internal_acba06d4f0343dec407738ba5544af990}\label{namespacetesting_1_1internal_acba06d4f0343dec407738ba5544af990}} +\index{testing\+::internal@{testing\+::internal}!Capture\+Stdout@{Capture\+Stdout}} +\index{Capture\+Stdout@{Capture\+Stdout}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Capture\+Stdout()}{CaptureStdout()}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} void testing\+::internal\+::\+Capture\+Stdout (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + + + +Definition at line 10779 of file gtest-\/all.\+cc. + +\mbox{\Hypertarget{namespacetesting_1_1internal_abfe9bfb020d38aa4e0e12c001911b22b}\label{namespacetesting_1_1internal_abfe9bfb020d38aa4e0e12c001911b22b}} +\index{testing\+::internal@{testing\+::internal}!Checked\+Downcast\+To\+Actual\+Type@{Checked\+Downcast\+To\+Actual\+Type}} +\index{Checked\+Downcast\+To\+Actual\+Type@{Checked\+Downcast\+To\+Actual\+Type}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Checked\+Downcast\+To\+Actual\+Type()}{CheckedDowncastToActualType()}} +{\footnotesize\ttfamily template$<$class Derived , class Base $>$ \\ +Derived$\ast$ testing\+::internal\+::\+Checked\+Downcast\+To\+Actual\+Type (\begin{DoxyParamCaption}\item[{Base $\ast$}]{base }\end{DoxyParamCaption})} + + + +Definition at line 1391 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a4638c74d9b32e971f9b321af6fafc2f1}\label{namespacetesting_1_1internal_a4638c74d9b32e971f9b321af6fafc2f1}} +\index{testing\+::internal@{testing\+::internal}!Cmp\+Helper\+EQ@{Cmp\+Helper\+EQ}} +\index{Cmp\+Helper\+EQ@{Cmp\+Helper\+EQ}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Cmp\+Helper\+E\+Q()}{CmpHelperEQ()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename T1 , typename T2 $>$ \\ +Assertion\+Result testing\+::internal\+::\+Cmp\+Helper\+EQ (\begin{DoxyParamCaption}\item[{const char $\ast$}]{lhs\+\_\+expression, }\item[{const char $\ast$}]{rhs\+\_\+expression, }\item[{const T1 \&}]{lhs, }\item[{const T2 \&}]{rhs }\end{DoxyParamCaption})} + + + +Definition at line 16111 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a1edf90480571c0659a39d13e3777d9ce}\label{namespacetesting_1_1internal_a1edf90480571c0659a39d13e3777d9ce}} +\index{testing\+::internal@{testing\+::internal}!Cmp\+Helper\+EQ@{Cmp\+Helper\+EQ}} +\index{Cmp\+Helper\+EQ@{Cmp\+Helper\+EQ}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Cmp\+Helper\+E\+Q()}{CmpHelperEQ()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result testing\+::internal\+::\+Cmp\+Helper\+EQ (\begin{DoxyParamCaption}\item[{const char $\ast$}]{lhs\+\_\+expression, }\item[{const char $\ast$}]{rhs\+\_\+expression, }\item[{\mbox{\hyperlink{namespacetesting_1_1internal_a05c6bd9ede5ccdf25191a590d610dcc6}{Biggest\+Int}}}]{lhs, }\item[{\mbox{\hyperlink{namespacetesting_1_1internal_a05c6bd9ede5ccdf25191a590d610dcc6}{Biggest\+Int}}}]{rhs }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_1_1internal_a1def8ec9393360a1b34a20528703e7f7}\label{namespacetesting_1_1internal_a1def8ec9393360a1b34a20528703e7f7}} +\index{testing\+::internal@{testing\+::internal}!Cmp\+Helper\+E\+Q\+Failure@{Cmp\+Helper\+E\+Q\+Failure}} +\index{Cmp\+Helper\+E\+Q\+Failure@{Cmp\+Helper\+E\+Q\+Failure}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Cmp\+Helper\+E\+Q\+Failure()}{CmpHelperEQFailure()}} +{\footnotesize\ttfamily template$<$typename T1 , typename T2 $>$ \\ +Assertion\+Result testing\+::internal\+::\+Cmp\+Helper\+E\+Q\+Failure (\begin{DoxyParamCaption}\item[{const char $\ast$}]{lhs\+\_\+expression, }\item[{const char $\ast$}]{rhs\+\_\+expression, }\item[{const T1 \&}]{lhs, }\item[{const T2 \&}]{rhs }\end{DoxyParamCaption})} + + + +Definition at line 16092 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a98ce463e5dbe0c6120fa817e1f8f2944}\label{namespacetesting_1_1internal_a98ce463e5dbe0c6120fa817e1f8f2944}} +\index{testing\+::internal@{testing\+::internal}!Cmp\+Helper\+Floating\+Point\+EQ@{Cmp\+Helper\+Floating\+Point\+EQ}} +\index{Cmp\+Helper\+Floating\+Point\+EQ@{Cmp\+Helper\+Floating\+Point\+EQ}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Cmp\+Helper\+Floating\+Point\+E\+Q()}{CmpHelperFloatingPointEQ()}} +{\footnotesize\ttfamily template$<$typename Raw\+Type $>$ \\ +Assertion\+Result testing\+::internal\+::\+Cmp\+Helper\+Floating\+Point\+EQ (\begin{DoxyParamCaption}\item[{const char $\ast$}]{lhs\+\_\+expression, }\item[{const char $\ast$}]{rhs\+\_\+expression, }\item[{Raw\+Type}]{lhs\+\_\+value, }\item[{Raw\+Type}]{rhs\+\_\+value }\end{DoxyParamCaption})} + + + +Definition at line 16351 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a894ffccd936d78fd555f490020c27f0a}\label{namespacetesting_1_1internal_a894ffccd936d78fd555f490020c27f0a}} +\index{testing\+::internal@{testing\+::internal}!Cmp\+Helper\+Op\+Failure@{Cmp\+Helper\+Op\+Failure}} +\index{Cmp\+Helper\+Op\+Failure@{Cmp\+Helper\+Op\+Failure}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Cmp\+Helper\+Op\+Failure()}{CmpHelperOpFailure()}} +{\footnotesize\ttfamily template$<$typename T1 , typename T2 $>$ \\ +Assertion\+Result testing\+::internal\+::\+Cmp\+Helper\+Op\+Failure (\begin{DoxyParamCaption}\item[{const char $\ast$}]{expr1, }\item[{const char $\ast$}]{expr2, }\item[{const T1 \&}]{val1, }\item[{const T2 \&}]{val2, }\item[{const char $\ast$}]{op }\end{DoxyParamCaption})} + + + +Definition at line 16206 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a00c3d012df6173622ef558a131bfb95d}\label{namespacetesting_1_1internal_a00c3d012df6173622ef558a131bfb95d}} +\index{testing\+::internal@{testing\+::internal}!Cmp\+Helper\+S\+T\+R\+C\+A\+S\+E\+EQ@{Cmp\+Helper\+S\+T\+R\+C\+A\+S\+E\+EQ}} +\index{Cmp\+Helper\+S\+T\+R\+C\+A\+S\+E\+EQ@{Cmp\+Helper\+S\+T\+R\+C\+A\+S\+E\+EQ}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Cmp\+Helper\+S\+T\+R\+C\+A\+S\+E\+E\+Q()}{CmpHelperSTRCASEEQ()}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result testing\+::internal\+::\+Cmp\+Helper\+S\+T\+R\+C\+A\+S\+E\+EQ (\begin{DoxyParamCaption}\item[{const char $\ast$}]{s1\+\_\+expression, }\item[{const char $\ast$}]{s2\+\_\+expression, }\item[{const char $\ast$}]{s1, }\item[{const char $\ast$}]{s2 }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_1_1internal_a5f74b933606b0a742cd5a8ad2d7087e0}\label{namespacetesting_1_1internal_a5f74b933606b0a742cd5a8ad2d7087e0}} +\index{testing\+::internal@{testing\+::internal}!Cmp\+Helper\+S\+T\+R\+C\+A\+S\+E\+NE@{Cmp\+Helper\+S\+T\+R\+C\+A\+S\+E\+NE}} +\index{Cmp\+Helper\+S\+T\+R\+C\+A\+S\+E\+NE@{Cmp\+Helper\+S\+T\+R\+C\+A\+S\+E\+NE}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Cmp\+Helper\+S\+T\+R\+C\+A\+S\+E\+N\+E()}{CmpHelperSTRCASENE()}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result testing\+::internal\+::\+Cmp\+Helper\+S\+T\+R\+C\+A\+S\+E\+NE (\begin{DoxyParamCaption}\item[{const char $\ast$}]{s1\+\_\+expression, }\item[{const char $\ast$}]{s2\+\_\+expression, }\item[{const char $\ast$}]{s1, }\item[{const char $\ast$}]{s2 }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_1_1internal_a93eb9d61cac7faf1faff6301ae5f4a46}\label{namespacetesting_1_1internal_a93eb9d61cac7faf1faff6301ae5f4a46}} +\index{testing\+::internal@{testing\+::internal}!Cmp\+Helper\+S\+T\+R\+EQ@{Cmp\+Helper\+S\+T\+R\+EQ}} +\index{Cmp\+Helper\+S\+T\+R\+EQ@{Cmp\+Helper\+S\+T\+R\+EQ}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Cmp\+Helper\+S\+T\+R\+E\+Q()}{CmpHelperSTREQ()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result testing\+::internal\+::\+Cmp\+Helper\+S\+T\+R\+EQ (\begin{DoxyParamCaption}\item[{const char $\ast$}]{s1\+\_\+expression, }\item[{const char $\ast$}]{s2\+\_\+expression, }\item[{const char $\ast$}]{s1, }\item[{const char $\ast$}]{s2 }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_1_1internal_ad40d557f9c157790160d6e4f2b0d9bab}\label{namespacetesting_1_1internal_ad40d557f9c157790160d6e4f2b0d9bab}} +\index{testing\+::internal@{testing\+::internal}!Cmp\+Helper\+S\+T\+R\+EQ@{Cmp\+Helper\+S\+T\+R\+EQ}} +\index{Cmp\+Helper\+S\+T\+R\+EQ@{Cmp\+Helper\+S\+T\+R\+EQ}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Cmp\+Helper\+S\+T\+R\+E\+Q()}{CmpHelperSTREQ()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result testing\+::internal\+::\+Cmp\+Helper\+S\+T\+R\+EQ (\begin{DoxyParamCaption}\item[{const char $\ast$}]{s1\+\_\+expression, }\item[{const char $\ast$}]{s2\+\_\+expression, }\item[{const wchar\+\_\+t $\ast$}]{s1, }\item[{const wchar\+\_\+t $\ast$}]{s2 }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_1_1internal_a6b485231a046ff760844a0321c04870b}\label{namespacetesting_1_1internal_a6b485231a046ff760844a0321c04870b}} +\index{testing\+::internal@{testing\+::internal}!Cmp\+Helper\+S\+T\+R\+NE@{Cmp\+Helper\+S\+T\+R\+NE}} +\index{Cmp\+Helper\+S\+T\+R\+NE@{Cmp\+Helper\+S\+T\+R\+NE}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Cmp\+Helper\+S\+T\+R\+N\+E()}{CmpHelperSTRNE()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result testing\+::internal\+::\+Cmp\+Helper\+S\+T\+R\+NE (\begin{DoxyParamCaption}\item[{const char $\ast$}]{s1\+\_\+expression, }\item[{const char $\ast$}]{s2\+\_\+expression, }\item[{const char $\ast$}]{s1, }\item[{const char $\ast$}]{s2 }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_1_1internal_a6e700804399b6694d8d6157e3a141b17}\label{namespacetesting_1_1internal_a6e700804399b6694d8d6157e3a141b17}} +\index{testing\+::internal@{testing\+::internal}!Cmp\+Helper\+S\+T\+R\+NE@{Cmp\+Helper\+S\+T\+R\+NE}} +\index{Cmp\+Helper\+S\+T\+R\+NE@{Cmp\+Helper\+S\+T\+R\+NE}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Cmp\+Helper\+S\+T\+R\+N\+E()}{CmpHelperSTRNE()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result testing\+::internal\+::\+Cmp\+Helper\+S\+T\+R\+NE (\begin{DoxyParamCaption}\item[{const char $\ast$}]{s1\+\_\+expression, }\item[{const char $\ast$}]{s2\+\_\+expression, }\item[{const wchar\+\_\+t $\ast$}]{s1, }\item[{const wchar\+\_\+t $\ast$}]{s2 }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_1_1internal_afb1b9728aaaf6d9fe6246a19cfe3f7f5}\label{namespacetesting_1_1internal_afb1b9728aaaf6d9fe6246a19cfe3f7f5}} +\index{testing\+::internal@{testing\+::internal}!Copy\+Array@{Copy\+Array}} +\index{Copy\+Array@{Copy\+Array}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Copy\+Array()}{CopyArray()}\hspace{0.1cm}{\footnotesize\ttfamily [1/3]}} +{\footnotesize\ttfamily template$<$typename T , typename U $>$ \\ +void testing\+::internal\+::\+Copy\+Array (\begin{DoxyParamCaption}\item[{const T $\ast$}]{from, }\item[{size\+\_\+t}]{size, }\item[{U $\ast$}]{to }\end{DoxyParamCaption})} + + + +Definition at line 7557 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a84d0e746ba0827cc52b53d22000de0e8}\label{namespacetesting_1_1internal_a84d0e746ba0827cc52b53d22000de0e8}} +\index{testing\+::internal@{testing\+::internal}!Copy\+Array@{Copy\+Array}} +\index{Copy\+Array@{Copy\+Array}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Copy\+Array()}{CopyArray()}\hspace{0.1cm}{\footnotesize\ttfamily [2/3]}} +{\footnotesize\ttfamily template$<$typename T , typename U $>$ \\ +void testing\+::internal\+::\+Copy\+Array (\begin{DoxyParamCaption}\item[{const T \&}]{from, }\item[{U $\ast$}]{to }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 7545 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a1e7ae855686720615dcd5754c8181c62}\label{namespacetesting_1_1internal_a1e7ae855686720615dcd5754c8181c62}} +\index{testing\+::internal@{testing\+::internal}!Copy\+Array@{Copy\+Array}} +\index{Copy\+Array@{Copy\+Array}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Copy\+Array()}{CopyArray()}\hspace{0.1cm}{\footnotesize\ttfamily [3/3]}} +{\footnotesize\ttfamily template$<$typename T , typename U , size\+\_\+t N$>$ \\ +void testing\+::internal\+::\+Copy\+Array (\begin{DoxyParamCaption}\item[{const T(\&)}]{from\mbox{[}\+N\mbox{]}, }\item[{U($\ast$)}]{to\mbox{[}\+N\mbox{]} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 7549 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a954ec4a8a932dac7743e77e459ffefdc}\label{namespacetesting_1_1internal_a954ec4a8a932dac7743e77e459ffefdc}} +\index{testing\+::internal@{testing\+::internal}!Default\+Param\+Name@{Default\+Param\+Name}} +\index{Default\+Param\+Name@{Default\+Param\+Name}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Default\+Param\+Name()}{DefaultParamName()}} +{\footnotesize\ttfamily template$<$class Param\+Type $>$ \\ +std\+::string testing\+::internal\+::\+Default\+Param\+Name (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structtesting_1_1_test_param_info}{Test\+Param\+Info}}$<$ Param\+Type $>$ \&}]{info }\end{DoxyParamCaption})} + + + +Definition at line 10912 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a2e96c98d5bd8ee4a1b92f8e3cde7dd40}\label{namespacetesting_1_1internal_a2e96c98d5bd8ee4a1b92f8e3cde7dd40}} +\index{testing\+::internal@{testing\+::internal}!Default\+Print\+To@{Default\+Print\+To}} +\index{Default\+Print\+To@{Default\+Print\+To}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Default\+Print\+To()}{DefaultPrintTo()}\hspace{0.1cm}{\footnotesize\ttfamily [1/4]}} +{\footnotesize\ttfamily template$<$typename C $>$ \\ +void testing\+::internal\+::\+Default\+Print\+To (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{structtesting_1_1internal_1_1_wrap_printer_type}{Wrap\+Printer\+Type}}$<$ \mbox{\hyperlink{namespacetesting_1_1internal_a17fb8f0125fa92404a249ed38a43faa4a945a19e59155ce1d335e8c3bcbdf61db}{k\+Print\+Container}} $>$}]{, }\item[{const C \&}]{container, }\item[{\+::std\+::ostream $\ast$}]{os }\end{DoxyParamCaption})} + + + +Definition at line 8445 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a074522dd8d77d61878a042b8d05cc64a}\label{namespacetesting_1_1internal_a074522dd8d77d61878a042b8d05cc64a}} +\index{testing\+::internal@{testing\+::internal}!Default\+Print\+To@{Default\+Print\+To}} +\index{Default\+Print\+To@{Default\+Print\+To}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Default\+Print\+To()}{DefaultPrintTo()}\hspace{0.1cm}{\footnotesize\ttfamily [2/4]}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +void testing\+::internal\+::\+Default\+Print\+To (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{structtesting_1_1internal_1_1_wrap_printer_type}{Wrap\+Printer\+Type}}$<$ \mbox{\hyperlink{namespacetesting_1_1internal_a17fb8f0125fa92404a249ed38a43faa4a8eaa6fff4a58832b30027df49f73dcbf}{k\+Print\+Pointer}} $>$}]{, }\item[{T $\ast$}]{p, }\item[{\+::std\+::ostream $\ast$}]{os }\end{DoxyParamCaption})} + + + +Definition at line 8478 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a7729c07abcae6c69b9b370c39db61409}\label{namespacetesting_1_1internal_a7729c07abcae6c69b9b370c39db61409}} +\index{testing\+::internal@{testing\+::internal}!Default\+Print\+To@{Default\+Print\+To}} +\index{Default\+Print\+To@{Default\+Print\+To}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Default\+Print\+To()}{DefaultPrintTo()}\hspace{0.1cm}{\footnotesize\ttfamily [3/4]}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +void testing\+::internal\+::\+Default\+Print\+To (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{structtesting_1_1internal_1_1_wrap_printer_type}{Wrap\+Printer\+Type}}$<$ \mbox{\hyperlink{namespacetesting_1_1internal_a17fb8f0125fa92404a249ed38a43faa4a5a066cde30e276c6460ba10d123d0c2c}{k\+Print\+Function\+Pointer}} $>$}]{, }\item[{T $\ast$}]{p, }\item[{\+::std\+::ostream $\ast$}]{os }\end{DoxyParamCaption})} + + + +Definition at line 8490 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a72b1a69d96be8ea6382539f5c4fcac6d}\label{namespacetesting_1_1internal_a72b1a69d96be8ea6382539f5c4fcac6d}} +\index{testing\+::internal@{testing\+::internal}!Default\+Print\+To@{Default\+Print\+To}} +\index{Default\+Print\+To@{Default\+Print\+To}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Default\+Print\+To()}{DefaultPrintTo()}\hspace{0.1cm}{\footnotesize\ttfamily [4/4]}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +void testing\+::internal\+::\+Default\+Print\+To (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{structtesting_1_1internal_1_1_wrap_printer_type}{Wrap\+Printer\+Type}}$<$ \mbox{\hyperlink{namespacetesting_1_1internal_a17fb8f0125fa92404a249ed38a43faa4a6f88d77d9d763d8a009caf950cfbab28}{k\+Print\+Other}} $>$}]{, }\item[{const T \&}]{value, }\item[{\+::std\+::ostream $\ast$}]{os }\end{DoxyParamCaption})} + + + +Definition at line 8505 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a513107ff8defa97d949937fc1350a56c}\label{namespacetesting_1_1internal_a513107ff8defa97d949937fc1350a56c}} +\index{testing\+::internal@{testing\+::internal}!Diff\+Strings@{Diff\+Strings}} +\index{Diff\+Strings@{Diff\+Strings}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Diff\+Strings()}{DiffStrings()}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} std\+::string testing\+::internal\+::\+Diff\+Strings (\begin{DoxyParamCaption}\item[{const std\+::string \&}]{left, }\item[{const std\+::string \&}]{right, }\item[{size\+\_\+t $\ast$}]{total\+\_\+line\+\_\+count }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_1_1internal_aea60207c4cedc8946a70ada62e38da8f}\label{namespacetesting_1_1internal_aea60207c4cedc8946a70ada62e38da8f}} +\index{testing\+::internal@{testing\+::internal}!Double\+Near\+Pred\+Format@{Double\+Near\+Pred\+Format}} +\index{Double\+Near\+Pred\+Format@{Double\+Near\+Pred\+Format}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Double\+Near\+Pred\+Format()}{DoubleNearPredFormat()}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result testing\+::internal\+::\+Double\+Near\+Pred\+Format (\begin{DoxyParamCaption}\item[{const char $\ast$}]{expr1, }\item[{const char $\ast$}]{expr2, }\item[{const char $\ast$}]{abs\+\_\+error\+\_\+expr, }\item[{double}]{val1, }\item[{double}]{val2, }\item[{double}]{abs\+\_\+error }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_1_1internal_a1a1a1aed3fe00908b8a45d5ab4a33665}\label{namespacetesting_1_1internal_a1a1a1aed3fe00908b8a45d5ab4a33665}} +\index{testing\+::internal@{testing\+::internal}!Down\+Cast\+\_\+@{Down\+Cast\+\_\+}} +\index{Down\+Cast\+\_\+@{Down\+Cast\+\_\+}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Down\+Cast\+\_\+()}{DownCast\_()}} +{\footnotesize\ttfamily template$<$typename To , typename From $>$ \\ +To testing\+::internal\+::\+Down\+Cast\+\_\+ (\begin{DoxyParamCaption}\item[{From $\ast$}]{f }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 1366 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_ac61e2ba2cbf259fd6ee5ffd4e49c9445}\label{namespacetesting_1_1internal_ac61e2ba2cbf259fd6ee5ffd4e49c9445}} +\index{testing\+::internal@{testing\+::internal}!Eq\+Failure@{Eq\+Failure}} +\index{Eq\+Failure@{Eq\+Failure}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Eq\+Failure()}{EqFailure()}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} Assertion\+Result testing\+::internal\+::\+Eq\+Failure (\begin{DoxyParamCaption}\item[{const char $\ast$}]{expected\+\_\+expression, }\item[{const char $\ast$}]{actual\+\_\+expression, }\item[{const std\+::string \&}]{expected\+\_\+value, }\item[{const std\+::string \&}]{actual\+\_\+value, }\item[{bool}]{ignoring\+\_\+case }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_1_1internal_a2135f223bf6b527729aeaa651115183b}\label{namespacetesting_1_1internal_a2135f223bf6b527729aeaa651115183b}} +\index{testing\+::internal@{testing\+::internal}!Flush\+Info\+Log@{Flush\+Info\+Log}} +\index{Flush\+Info\+Log@{Flush\+Info\+Log}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Flush\+Info\+Log()}{FlushInfoLog()}} +{\footnotesize\ttfamily void testing\+::internal\+::\+Flush\+Info\+Log (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 1251 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a1ee4cde97868c53e442d3182496a9f3c}\label{namespacetesting_1_1internal_a1ee4cde97868c53e442d3182496a9f3c}} +\index{testing\+::internal@{testing\+::internal}!Format\+Compiler\+Independent\+File\+Location@{Format\+Compiler\+Independent\+File\+Location}} +\index{Format\+Compiler\+Independent\+File\+Location@{Format\+Compiler\+Independent\+File\+Location}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Format\+Compiler\+Independent\+File\+Location()}{FormatCompilerIndependentFileLocation()}} +{\footnotesize\ttfamily G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+\+::std\+::string testing\+::internal\+::\+Format\+Compiler\+Independent\+File\+Location (\begin{DoxyParamCaption}\item[{const char $\ast$}]{file, }\item[{int}]{line }\end{DoxyParamCaption})} + + + +Definition at line 10638 of file gtest-\/all.\+cc. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a31b7c3abed4a7c395f42c61e993989f4}\label{namespacetesting_1_1internal_a31b7c3abed4a7c395f42c61e993989f4}} +\index{testing\+::internal@{testing\+::internal}!Format\+File\+Location@{Format\+File\+Location}} +\index{Format\+File\+Location@{Format\+File\+Location}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Format\+File\+Location()}{FormatFileLocation()}} +{\footnotesize\ttfamily G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+\+::std\+::string testing\+::internal\+::\+Format\+File\+Location (\begin{DoxyParamCaption}\item[{const char $\ast$}]{file, }\item[{int}]{line }\end{DoxyParamCaption})} + + + +Definition at line 10620 of file gtest-\/all.\+cc. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a91ab078f10adc669f09b7f604975c518}\label{namespacetesting_1_1internal_a91ab078f10adc669f09b7f604975c518}} +\index{testing\+::internal@{testing\+::internal}!Format\+For\+Comparison\+Failure\+Message@{Format\+For\+Comparison\+Failure\+Message}} +\index{Format\+For\+Comparison\+Failure\+Message@{Format\+For\+Comparison\+Failure\+Message}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Format\+For\+Comparison\+Failure\+Message()}{FormatForComparisonFailureMessage()}} +{\footnotesize\ttfamily template$<$typename T1 , typename T2 $>$ \\ +std\+::string testing\+::internal\+::\+Format\+For\+Comparison\+Failure\+Message (\begin{DoxyParamCaption}\item[{const T1 \&}]{value, }\item[{const T2 \&}]{ }\end{DoxyParamCaption})} + + + +Definition at line 8416 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a8d8ed3acadedd9c0db28d35a188973ea}\label{namespacetesting_1_1internal_a8d8ed3acadedd9c0db28d35a188973ea}} +\index{testing\+::internal@{testing\+::internal}!Get\+Argvs@{Get\+Argvs}} +\index{Get\+Argvs@{Get\+Argvs}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Get\+Argvs()}{GetArgvs()}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} std\+::vector$<$std\+::string$>$ testing\+::internal\+::\+Get\+Argvs (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_1_1internal_aed8d3ad4341f8f2de53440e39c995632}\label{namespacetesting_1_1internal_aed8d3ad4341f8f2de53440e39c995632}} +\index{testing\+::internal@{testing\+::internal}!Get\+Bool\+Assertion\+Failure\+Message@{Get\+Bool\+Assertion\+Failure\+Message}} +\index{Get\+Bool\+Assertion\+Failure\+Message@{Get\+Bool\+Assertion\+Failure\+Message}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Get\+Bool\+Assertion\+Failure\+Message()}{GetBoolAssertionFailureMessage()}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} std\+::string testing\+::internal\+::\+Get\+Bool\+Assertion\+Failure\+Message (\begin{DoxyParamCaption}\item[{const Assertion\+Result \&}]{assertion\+\_\+result, }\item[{const char $\ast$}]{expression\+\_\+text, }\item[{const char $\ast$}]{actual\+\_\+predicate\+\_\+value, }\item[{const char $\ast$}]{expected\+\_\+predicate\+\_\+value }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_1_1internal_a374156401da17704099d0c33fa53adfb}\label{namespacetesting_1_1internal_a374156401da17704099d0c33fa53adfb}} +\index{testing\+::internal@{testing\+::internal}!Get\+Captured\+Stderr@{Get\+Captured\+Stderr}} +\index{Get\+Captured\+Stderr@{Get\+Captured\+Stderr}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Get\+Captured\+Stderr()}{GetCapturedStderr()}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} std\+::string testing\+::internal\+::\+Get\+Captured\+Stderr (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + + + +Definition at line 10794 of file gtest-\/all.\+cc. + +\mbox{\Hypertarget{namespacetesting_1_1internal_aed657219a9856a8d249a3230de0c54ce}\label{namespacetesting_1_1internal_aed657219a9856a8d249a3230de0c54ce}} +\index{testing\+::internal@{testing\+::internal}!Get\+Captured\+Stdout@{Get\+Captured\+Stdout}} +\index{Get\+Captured\+Stdout@{Get\+Captured\+Stdout}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Get\+Captured\+Stdout()}{GetCapturedStdout()}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} std\+::string testing\+::internal\+::\+Get\+Captured\+Stdout (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + + + +Definition at line 10789 of file gtest-\/all.\+cc. + +\mbox{\Hypertarget{namespacetesting_1_1internal_ae7ae495d3207e26968dfbd537c5e6dee}\label{namespacetesting_1_1internal_ae7ae495d3207e26968dfbd537c5e6dee}} +\index{testing\+::internal@{testing\+::internal}!Get\+Current\+Os\+Stack\+Trace\+Except\+Top@{Get\+Current\+Os\+Stack\+Trace\+Except\+Top}} +\index{Get\+Current\+Os\+Stack\+Trace\+Except\+Top@{Get\+Current\+Os\+Stack\+Trace\+Except\+Top}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Get\+Current\+Os\+Stack\+Trace\+Except\+Top()}{GetCurrentOsStackTraceExceptTop()}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} std\+::string testing\+::internal\+::\+Get\+Current\+Os\+Stack\+Trace\+Except\+Top (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classtesting_1_1_unit_test}{Unit\+Test}} $\ast$}]{unit\+\_\+test, }\item[{int}]{skip\+\_\+count }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_1_1internal_a40bcfd87e26aae36e0cc51e5db64fd89}\label{namespacetesting_1_1internal_a40bcfd87e26aae36e0cc51e5db64fd89}} +\index{testing\+::internal@{testing\+::internal}!Get\+File\+Size@{Get\+File\+Size}} +\index{Get\+File\+Size@{Get\+File\+Size}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Get\+File\+Size()}{GetFileSize()}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} size\+\_\+t testing\+::internal\+::\+Get\+File\+Size (\begin{DoxyParamCaption}\item[{F\+I\+LE $\ast$}]{file }\end{DoxyParamCaption})} + + + +Definition at line 10804 of file gtest-\/all.\+cc. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a9579a78c229ea302caded45d65f77336}\label{namespacetesting_1_1internal_a9579a78c229ea302caded45d65f77336}} +\index{testing\+::internal@{testing\+::internal}!Get\+Not\+Default\+Or\+Null@{Get\+Not\+Default\+Or\+Null}} +\index{Get\+Not\+Default\+Or\+Null@{Get\+Not\+Default\+Or\+Null}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Get\+Not\+Default\+Or\+Null()}{GetNotDefaultOrNull()}} +{\footnotesize\ttfamily \mbox{\hyperlink{namespacetesting_1_1internal_a04786aa10f8b0bf38a5ead94d00475f4}{Set\+Up\+Tear\+Down\+Suite\+Func\+Type}} testing\+::internal\+::\+Get\+Not\+Default\+Or\+Null (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{namespacetesting_1_1internal_a04786aa10f8b0bf38a5ead94d00475f4}{Set\+Up\+Tear\+Down\+Suite\+Func\+Type}}}]{a, }\item[{\mbox{\hyperlink{namespacetesting_1_1internal_a04786aa10f8b0bf38a5ead94d00475f4}{Set\+Up\+Tear\+Down\+Suite\+Func\+Type}}}]{def }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 6943 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_abc0f0626877188afba6ad122d502f088}\label{namespacetesting_1_1internal_abc0f0626877188afba6ad122d502f088}} +\index{testing\+::internal@{testing\+::internal}!Get\+Param\+Name\+Gen@{Get\+Param\+Name\+Gen}} +\index{Get\+Param\+Name\+Gen@{Get\+Param\+Name\+Gen}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Get\+Param\+Name\+Gen()}{GetParamNameGen()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$class Param\+Type , class Param\+Name\+Gen\+Functor $>$ \\ +Param\+Name\+Gen\+Functor testing\+::internal\+::\+Get\+Param\+Name\+Gen (\begin{DoxyParamCaption}\item[{Param\+Name\+Gen\+Functor}]{func }\end{DoxyParamCaption})} + + + +Definition at line 10924 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a27d6ea7d401e877cb0fbddf4206ebbe4}\label{namespacetesting_1_1internal_a27d6ea7d401e877cb0fbddf4206ebbe4}} +\index{testing\+::internal@{testing\+::internal}!Get\+Param\+Name\+Gen@{Get\+Param\+Name\+Gen}} +\index{Get\+Param\+Name\+Gen@{Get\+Param\+Name\+Gen}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Get\+Param\+Name\+Gen()}{GetParamNameGen()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$class Param\+Type $>$ \\ +\mbox{\hyperlink{structtesting_1_1internal_1_1_param_name_gen_func}{Param\+Name\+Gen\+Func}}$<$Param\+Type$>$\+::Type$\ast$ testing\+::internal\+::\+Get\+Param\+Name\+Gen (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + + + +Definition at line 10934 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a1e85cf16bb95b60f879d48ba1fbfc1c9}\label{namespacetesting_1_1internal_a1e85cf16bb95b60f879d48ba1fbfc1c9}} +\index{testing\+::internal@{testing\+::internal}!Get\+Test\+Type\+Id@{Get\+Test\+Type\+Id}} +\index{Get\+Test\+Type\+Id@{Get\+Test\+Type\+Id}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Get\+Test\+Type\+Id()}{GetTestTypeId()}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} \mbox{\hyperlink{namespacetesting_1_1internal_ab1114197d3c657d8b7f8e0c5caa12d00}{Type\+Id}} testing\+::internal\+::\+Get\+Test\+Type\+Id (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_1_1internal_a8cbd8bf820517923d7f3c4477b3af5fa}\label{namespacetesting_1_1internal_a8cbd8bf820517923d7f3c4477b3af5fa}} +\index{testing\+::internal@{testing\+::internal}!Get\+Thread\+Count@{Get\+Thread\+Count}} +\index{Get\+Thread\+Count@{Get\+Thread\+Count}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Get\+Thread\+Count()}{GetThreadCount()}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} size\+\_\+t testing\+::internal\+::\+Get\+Thread\+Count (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + + + +Definition at line 9875 of file gtest-\/all.\+cc. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a6b108e56fdc68ea937ffb3759fb55ab0}\label{namespacetesting_1_1internal_a6b108e56fdc68ea937ffb3759fb55ab0}} +\index{testing\+::internal@{testing\+::internal}!Get\+Type\+Id@{Get\+Type\+Id}} +\index{Get\+Type\+Id@{Get\+Type\+Id}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Get\+Type\+Id()}{GetTypeId()}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +\mbox{\hyperlink{namespacetesting_1_1internal_ab1114197d3c657d8b7f8e0c5caa12d00}{Type\+Id}} testing\+::internal\+::\+Get\+Type\+Id (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + + + +Definition at line 6872 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a5fd9f88035bd7f38979a2b15aead2bab}\label{namespacetesting_1_1internal_a5fd9f88035bd7f38979a2b15aead2bab}} +\index{testing\+::internal@{testing\+::internal}!G\+T\+E\+S\+T\+\_\+\+A\+T\+T\+R\+I\+B\+U\+T\+E\+\_\+\+P\+R\+I\+N\+T\+F\+\_\+@{G\+T\+E\+S\+T\+\_\+\+A\+T\+T\+R\+I\+B\+U\+T\+E\+\_\+\+P\+R\+I\+N\+T\+F\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+A\+T\+T\+R\+I\+B\+U\+T\+E\+\_\+\+P\+R\+I\+N\+T\+F\+\_\+@{G\+T\+E\+S\+T\+\_\+\+A\+T\+T\+R\+I\+B\+U\+T\+E\+\_\+\+P\+R\+I\+N\+T\+F\+\_\+}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+A\+T\+T\+R\+I\+B\+U\+T\+E\+\_\+\+P\+R\+I\+N\+T\+F\+\_\+()}{GTEST\_ATTRIBUTE\_PRINTF\_()}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} testing\+::internal\+::\+G\+T\+E\+S\+T\+\_\+\+A\+T\+T\+R\+I\+B\+U\+T\+E\+\_\+\+P\+R\+I\+N\+T\+F\+\_\+ (\begin{DoxyParamCaption}\item[{2}]{, }\item[{3}]{ }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_1_1internal_a20bfd9d47d8dd167ffc1c37a4c9ff73e}\label{namespacetesting_1_1internal_a20bfd9d47d8dd167ffc1c37a4c9ff73e}} +\index{testing\+::internal@{testing\+::internal}!G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+string\+\_\+@{G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+string\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+string\+\_\+@{G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+string\+\_\+}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+string\+\_\+()}{GTEST\_DEFINE\_string\_()}} +{\footnotesize\ttfamily testing\+::internal\+::\+G\+T\+E\+S\+T\+\_\+\+D\+E\+F\+I\+N\+E\+\_\+string\+\_\+ (\begin{DoxyParamCaption}\item[{internal\+\_\+run\+\_\+death\+\_\+test}]{, }\item[{\char`\"{}\char`\"{}}]{, }\item[{\char`\"{}Indicates the}]{file, }\item[{line}]{number, }\item[{temporal index of \char`\"{} \char`\"{}the single death test to}]{run, }\item[{and a file descriptor to \char`\"{} \char`\"{}which a success code may be}]{sent, }\item[{all separated by \char`\"{} \char`\"{}the \textquotesingle{}$\vert$\textquotesingle{} characters. This flag is specified if and only if the current \char`\"{} \char`\"{}process is a sub-\/process launched for running a thread-\/safe \char`\"{} \char`\"{}death test. F\+OR I\+N\+T\+E\+R\+N\+AL U\+SE O\+N\+L\+Y.\char`\"{}}]{ }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_1_1internal_aa14e3caa94126d7fb8e06bfb3d24ae4a}\label{namespacetesting_1_1internal_aa14e3caa94126d7fb8e06bfb3d24ae4a}} +\index{testing\+::internal@{testing\+::internal}!G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+C\+M\+P\+\_\+\+H\+E\+L\+P\+E\+R\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+C\+M\+P\+\_\+\+H\+E\+L\+P\+E\+R\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+C\+M\+P\+\_\+\+H\+E\+L\+P\+E\+R\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+C\+M\+P\+\_\+\+H\+E\+L\+P\+E\+R\+\_\+}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+C\+M\+P\+\_\+\+H\+E\+L\+P\+E\+R\+\_\+()}{GTEST\_IMPL\_CMP\_HELPER\_()}\hspace{0.1cm}{\footnotesize\ttfamily [1/5]}} +{\footnotesize\ttfamily testing\+::internal\+::\+G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+C\+M\+P\+\_\+\+H\+E\+L\+P\+E\+R\+\_\+ (\begin{DoxyParamCaption}\item[{NE}]{, }\item[{!}]{ }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_1_1internal_ade60646b18728043fff84d7b4125de2c}\label{namespacetesting_1_1internal_ade60646b18728043fff84d7b4125de2c}} +\index{testing\+::internal@{testing\+::internal}!G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+C\+M\+P\+\_\+\+H\+E\+L\+P\+E\+R\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+C\+M\+P\+\_\+\+H\+E\+L\+P\+E\+R\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+C\+M\+P\+\_\+\+H\+E\+L\+P\+E\+R\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+C\+M\+P\+\_\+\+H\+E\+L\+P\+E\+R\+\_\+}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+C\+M\+P\+\_\+\+H\+E\+L\+P\+E\+R\+\_\+()}{GTEST\_IMPL\_CMP\_HELPER\_()}\hspace{0.1cm}{\footnotesize\ttfamily [2/5]}} +{\footnotesize\ttfamily testing\+::internal\+::\+G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+C\+M\+P\+\_\+\+H\+E\+L\+P\+E\+R\+\_\+ (\begin{DoxyParamCaption}\item[{LE}]{, }\item[{$<$=}]{ }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_1_1internal_aabcbff15eac496f8487699d19f42c274}\label{namespacetesting_1_1internal_aabcbff15eac496f8487699d19f42c274}} +\index{testing\+::internal@{testing\+::internal}!G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+C\+M\+P\+\_\+\+H\+E\+L\+P\+E\+R\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+C\+M\+P\+\_\+\+H\+E\+L\+P\+E\+R\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+C\+M\+P\+\_\+\+H\+E\+L\+P\+E\+R\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+C\+M\+P\+\_\+\+H\+E\+L\+P\+E\+R\+\_\+}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+C\+M\+P\+\_\+\+H\+E\+L\+P\+E\+R\+\_\+()}{GTEST\_IMPL\_CMP\_HELPER\_()}\hspace{0.1cm}{\footnotesize\ttfamily [3/5]}} +{\footnotesize\ttfamily testing\+::internal\+::\+G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+C\+M\+P\+\_\+\+H\+E\+L\+P\+E\+R\+\_\+ (\begin{DoxyParamCaption}\item[{LT}]{ }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_1_1internal_af969886067930ce70f6405cd5aa8b06b}\label{namespacetesting_1_1internal_af969886067930ce70f6405cd5aa8b06b}} +\index{testing\+::internal@{testing\+::internal}!G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+C\+M\+P\+\_\+\+H\+E\+L\+P\+E\+R\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+C\+M\+P\+\_\+\+H\+E\+L\+P\+E\+R\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+C\+M\+P\+\_\+\+H\+E\+L\+P\+E\+R\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+C\+M\+P\+\_\+\+H\+E\+L\+P\+E\+R\+\_\+}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+C\+M\+P\+\_\+\+H\+E\+L\+P\+E\+R\+\_\+()}{GTEST\_IMPL\_CMP\_HELPER\_()}\hspace{0.1cm}{\footnotesize\ttfamily [4/5]}} +{\footnotesize\ttfamily testing\+::internal\+::\+G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+C\+M\+P\+\_\+\+H\+E\+L\+P\+E\+R\+\_\+ (\begin{DoxyParamCaption}\item[{GE}]{, }\item[{$>$=}]{ }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_1_1internal_a7fdb4fc164db83c51dfad17640bfeae9}\label{namespacetesting_1_1internal_a7fdb4fc164db83c51dfad17640bfeae9}} +\index{testing\+::internal@{testing\+::internal}!G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+C\+M\+P\+\_\+\+H\+E\+L\+P\+E\+R\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+C\+M\+P\+\_\+\+H\+E\+L\+P\+E\+R\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+C\+M\+P\+\_\+\+H\+E\+L\+P\+E\+R\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+C\+M\+P\+\_\+\+H\+E\+L\+P\+E\+R\+\_\+}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+C\+M\+P\+\_\+\+H\+E\+L\+P\+E\+R\+\_\+()}{GTEST\_IMPL\_CMP\_HELPER\_()}\hspace{0.1cm}{\footnotesize\ttfamily [5/5]}} +{\footnotesize\ttfamily testing\+::internal\+::\+G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+C\+M\+P\+\_\+\+H\+E\+L\+P\+E\+R\+\_\+ (\begin{DoxyParamCaption}\item[{GT}]{ }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_1_1internal_a3682f962ae0ec1c0eca6444ca0a09e91}\label{namespacetesting_1_1internal_a3682f962ae0ec1c0eca6444ca0a09e91}} +\index{testing\+::internal@{testing\+::internal}!G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+C\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+A\+S\+\_\+\+P\+O\+I\+N\+T\+E\+R\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+C\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+A\+S\+\_\+\+P\+O\+I\+N\+T\+E\+R\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+C\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+A\+S\+\_\+\+P\+O\+I\+N\+T\+E\+R\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+C\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+A\+S\+\_\+\+P\+O\+I\+N\+T\+E\+R\+\_\+}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+C\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+A\+S\+\_\+\+P\+O\+I\+N\+T\+E\+R\+\_\+()}{GTEST\_IMPL\_FORMAT\_C\_STRING\_AS\_POINTER\_()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily testing\+::internal\+::\+G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+C\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+A\+S\+\_\+\+P\+O\+I\+N\+T\+E\+R\+\_\+ (\begin{DoxyParamCaption}\item[{char}]{ }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_1_1internal_a85e08f00d443221e529a0a85a90fbaeb}\label{namespacetesting_1_1internal_a85e08f00d443221e529a0a85a90fbaeb}} +\index{testing\+::internal@{testing\+::internal}!G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+C\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+A\+S\+\_\+\+P\+O\+I\+N\+T\+E\+R\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+C\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+A\+S\+\_\+\+P\+O\+I\+N\+T\+E\+R\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+C\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+A\+S\+\_\+\+P\+O\+I\+N\+T\+E\+R\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+C\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+A\+S\+\_\+\+P\+O\+I\+N\+T\+E\+R\+\_\+}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+C\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+A\+S\+\_\+\+P\+O\+I\+N\+T\+E\+R\+\_\+()}{GTEST\_IMPL\_FORMAT\_C\_STRING\_AS\_POINTER\_()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily testing\+::internal\+::\+G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+C\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+A\+S\+\_\+\+P\+O\+I\+N\+T\+E\+R\+\_\+ (\begin{DoxyParamCaption}\item[{wchar\+\_\+t}]{ }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_1_1internal_aeac30230dcc362221bdd07d61eaa4ec1}\label{namespacetesting_1_1internal_aeac30230dcc362221bdd07d61eaa4ec1}} +\index{testing\+::internal@{testing\+::internal}!G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+C\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+A\+S\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+C\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+A\+S\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+C\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+A\+S\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+C\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+A\+S\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+C\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+A\+S\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+()}{GTEST\_IMPL\_FORMAT\_C\_STRING\_AS\_STRING\_()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily testing\+::internal\+::\+G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+C\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+A\+S\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+ (\begin{DoxyParamCaption}\item[{char}]{, }\item[{\+::std\+::string}]{ }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_1_1internal_a12070f3d771e37e1c3f2539692af0ce0}\label{namespacetesting_1_1internal_a12070f3d771e37e1c3f2539692af0ce0}} +\index{testing\+::internal@{testing\+::internal}!G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+C\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+A\+S\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+C\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+A\+S\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+}} +\index{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+C\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+A\+S\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+@{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+C\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+A\+S\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+C\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+A\+S\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+()}{GTEST\_IMPL\_FORMAT\_C\_STRING\_AS\_STRING\_()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily testing\+::internal\+::\+G\+T\+E\+S\+T\+\_\+\+I\+M\+P\+L\+\_\+\+F\+O\+R\+M\+A\+T\+\_\+\+C\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+\+A\+S\+\_\+\+S\+T\+R\+I\+N\+G\+\_\+ (\begin{DoxyParamCaption}\item[{wchar\+\_\+t}]{, }\item[{\+::std\+::wstring}]{ }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_1_1internal_a982df3f369643b175f79cda4048bc3b9}\label{namespacetesting_1_1internal_a982df3f369643b175f79cda4048bc3b9}} +\index{testing\+::internal@{testing\+::internal}!Implicit\+Cast\+\_\+@{Implicit\+Cast\+\_\+}} +\index{Implicit\+Cast\+\_\+@{Implicit\+Cast\+\_\+}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Implicit\+Cast\+\_\+()}{ImplicitCast\_()}} +{\footnotesize\ttfamily template$<$typename To $>$ \\ +To testing\+::internal\+::\+Implicit\+Cast\+\_\+ (\begin{DoxyParamCaption}\item[{To}]{x }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 1342 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a2196f070b2d28bceb45c7ad3b565b9ba}\label{namespacetesting_1_1internal_a2196f070b2d28bceb45c7ad3b565b9ba}} +\index{testing\+::internal@{testing\+::internal}!Int32\+From\+G\+Test\+Env@{Int32\+From\+G\+Test\+Env}} +\index{Int32\+From\+G\+Test\+Env@{Int32\+From\+G\+Test\+Env}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Int32\+From\+G\+Test\+Env()}{Int32FromGTestEnv()}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} \mbox{\hyperlink{namespacetesting_1_1internal_a8ee38faaf875f133358abaf9bc056cec}{Int32}} testing\+::internal\+::\+Int32\+From\+G\+Test\+Env (\begin{DoxyParamCaption}\item[{const char $\ast$}]{flag, }\item[{\mbox{\hyperlink{namespacetesting_1_1internal_a8ee38faaf875f133358abaf9bc056cec}{Int32}}}]{default\+\_\+value }\end{DoxyParamCaption})} + + + +Definition at line 10948 of file gtest-\/all.\+cc. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a83802e7f23324cd512232203662e1a98}\label{namespacetesting_1_1internal_a83802e7f23324cd512232203662e1a98}} +\index{testing\+::internal@{testing\+::internal}!Is\+Al\+Num@{Is\+Al\+Num}} +\index{Is\+Al\+Num@{Is\+Al\+Num}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Is\+Al\+Num()}{IsAlNum()}} +{\footnotesize\ttfamily bool testing\+::internal\+::\+Is\+Al\+Num (\begin{DoxyParamCaption}\item[{char}]{ch }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 2236 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_aeb957087fd6bbf9db98ab7cd41b0c129}\label{namespacetesting_1_1internal_aeb957087fd6bbf9db98ab7cd41b0c129}} +\index{testing\+::internal@{testing\+::internal}!Is\+Alpha@{Is\+Alpha}} +\index{Is\+Alpha@{Is\+Alpha}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Is\+Alpha()}{IsAlpha()}} +{\footnotesize\ttfamily bool testing\+::internal\+::\+Is\+Alpha (\begin{DoxyParamCaption}\item[{char}]{ch }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 2233 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a764748b94f628bdd1dcd39dc81e8b71f}\label{namespacetesting_1_1internal_a764748b94f628bdd1dcd39dc81e8b71f}} +\index{testing\+::internal@{testing\+::internal}!Is\+Container\+Test@{Is\+Container\+Test}} +\index{Is\+Container\+Test@{Is\+Container\+Test}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Is\+Container\+Test()}{IsContainerTest()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$class C , class Iterator = decltype(\+::std\+::declval$<$const C\&$>$().\+begin()), class = decltype(\+::std\+::declval$<$const C\&$>$().\+end()), class = decltype(++\+::std\+::declval$<$\+Iterator\&$>$()), class = decltype($\ast$\+::std\+::declval$<$\+Iterator$>$()), class = typename C\+::const\+\_\+iterator$>$ \\ +\mbox{\hyperlink{namespacetesting_1_1internal_ad8f0c2883245f1df2a53618a49f0deb3}{Is\+Container}} testing\+::internal\+::\+Is\+Container\+Test (\begin{DoxyParamCaption}\item[{int}]{ }\end{DoxyParamCaption})} + + + +Definition at line 7429 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_af545a2ae928b8a9e7581978234464275}\label{namespacetesting_1_1internal_af545a2ae928b8a9e7581978234464275}} +\index{testing\+::internal@{testing\+::internal}!Is\+Container\+Test@{Is\+Container\+Test}} +\index{Is\+Container\+Test@{Is\+Container\+Test}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Is\+Container\+Test()}{IsContainerTest()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$class C $>$ \\ +\mbox{\hyperlink{namespacetesting_1_1internal_abf080521ce135deb510e0a7830fd3d33}{Is\+Not\+Container}} testing\+::internal\+::\+Is\+Container\+Test (\begin{DoxyParamCaption}\item[{long}]{ }\end{DoxyParamCaption})} + + + +Definition at line 7435 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a4bd96b7fa6486802d33ddc217af55a39}\label{namespacetesting_1_1internal_a4bd96b7fa6486802d33ddc217af55a39}} +\index{testing\+::internal@{testing\+::internal}!Is\+Digit@{Is\+Digit}} +\index{Is\+Digit@{Is\+Digit}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Is\+Digit()}{IsDigit()}} +{\footnotesize\ttfamily bool testing\+::internal\+::\+Is\+Digit (\begin{DoxyParamCaption}\item[{char}]{ch }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 2239 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_ac26ce3883bc8919c27074975e958f3b7}\label{namespacetesting_1_1internal_ac26ce3883bc8919c27074975e958f3b7}} +\index{testing\+::internal@{testing\+::internal}!Is\+Lower@{Is\+Lower}} +\index{Is\+Lower@{Is\+Lower}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Is\+Lower()}{IsLower()}} +{\footnotesize\ttfamily bool testing\+::internal\+::\+Is\+Lower (\begin{DoxyParamCaption}\item[{char}]{ch }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 2242 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a3db36c62f31a9439117c41c2b13f4941}\label{namespacetesting_1_1internal_a3db36c62f31a9439117c41c2b13f4941}} +\index{testing\+::internal@{testing\+::internal}!Is\+Null\+Literal\+Helper@{Is\+Null\+Literal\+Helper}} +\index{Is\+Null\+Literal\+Helper@{Is\+Null\+Literal\+Helper}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Is\+Null\+Literal\+Helper()}{IsNullLiteralHelper()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily std\+::true\+\_\+type testing\+::internal\+::\+Is\+Null\+Literal\+Helper (\begin{DoxyParamCaption}\item[{Secret $\ast$}]{ }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_1_1internal_a1404fbe8d1164f614f6358b314ec3cf4}\label{namespacetesting_1_1internal_a1404fbe8d1164f614f6358b314ec3cf4}} +\index{testing\+::internal@{testing\+::internal}!Is\+Null\+Literal\+Helper@{Is\+Null\+Literal\+Helper}} +\index{Is\+Null\+Literal\+Helper@{Is\+Null\+Literal\+Helper}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Is\+Null\+Literal\+Helper()}{IsNullLiteralHelper()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily std\+::false\+\_\+type testing\+::internal\+::\+Is\+Null\+Literal\+Helper (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classtesting_1_1internal_1_1_ignored_value}{Ignored\+Value}}}]{ }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_1_1internal_a744a6dd74c12d1e2c16b3c03e14ed4d4}\label{namespacetesting_1_1internal_a744a6dd74c12d1e2c16b3c03e14ed4d4}} +\index{testing\+::internal@{testing\+::internal}!Is\+Printable\+Ascii@{Is\+Printable\+Ascii}} +\index{Is\+Printable\+Ascii@{Is\+Printable\+Ascii}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Is\+Printable\+Ascii()}{IsPrintableAscii()}} +{\footnotesize\ttfamily bool testing\+::internal\+::\+Is\+Printable\+Ascii (\begin{DoxyParamCaption}\item[{wchar\+\_\+t}]{c }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 11135 of file gtest-\/all.\+cc. + +\mbox{\Hypertarget{namespacetesting_1_1internal_af429e04f70f9c10f6aa76a5d1ccd389f}\label{namespacetesting_1_1internal_af429e04f70f9c10f6aa76a5d1ccd389f}} +\index{testing\+::internal@{testing\+::internal}!Is\+Space@{Is\+Space}} +\index{Is\+Space@{Is\+Space}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Is\+Space()}{IsSpace()}} +{\footnotesize\ttfamily bool testing\+::internal\+::\+Is\+Space (\begin{DoxyParamCaption}\item[{char}]{ch }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 2245 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_ab2709373c78eb8b1c22a6ba30cceba52}\label{namespacetesting_1_1internal_ab2709373c78eb8b1c22a6ba30cceba52}} +\index{testing\+::internal@{testing\+::internal}!Is\+True@{Is\+True}} +\index{Is\+True@{Is\+True}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Is\+True()}{IsTrue()}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} bool testing\+::internal\+::\+Is\+True (\begin{DoxyParamCaption}\item[{bool}]{condition }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_1_1internal_a84f3baa379fec6bf5947cb5165aa8cc9}\label{namespacetesting_1_1internal_a84f3baa379fec6bf5947cb5165aa8cc9}} +\index{testing\+::internal@{testing\+::internal}!Is\+Upper@{Is\+Upper}} +\index{Is\+Upper@{Is\+Upper}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Is\+Upper()}{IsUpper()}} +{\footnotesize\ttfamily bool testing\+::internal\+::\+Is\+Upper (\begin{DoxyParamCaption}\item[{char}]{ch }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 2248 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_aa234ef141278263fb143b616c74c86e7}\label{namespacetesting_1_1internal_aa234ef141278263fb143b616c74c86e7}} +\index{testing\+::internal@{testing\+::internal}!Is\+X\+Digit@{Is\+X\+Digit}} +\index{Is\+X\+Digit@{Is\+X\+Digit}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Is\+X\+Digit()}{IsXDigit()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily bool testing\+::internal\+::\+Is\+X\+Digit (\begin{DoxyParamCaption}\item[{char}]{ch }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 2251 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a6ab68a30f8291c09b2289c132bbe3b16}\label{namespacetesting_1_1internal_a6ab68a30f8291c09b2289c132bbe3b16}} +\index{testing\+::internal@{testing\+::internal}!Is\+X\+Digit@{Is\+X\+Digit}} +\index{Is\+X\+Digit@{Is\+X\+Digit}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Is\+X\+Digit()}{IsXDigit()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily bool testing\+::internal\+::\+Is\+X\+Digit (\begin{DoxyParamCaption}\item[{wchar\+\_\+t}]{ch }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 2254 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a06b1b20029fbd1dbeb59752f914fab84}\label{namespacetesting_1_1internal_a06b1b20029fbd1dbeb59752f914fab84}} +\index{testing\+::internal@{testing\+::internal}!Log\+To\+Stderr@{Log\+To\+Stderr}} +\index{Log\+To\+Stderr@{Log\+To\+Stderr}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Log\+To\+Stderr()}{LogToStderr()}} +{\footnotesize\ttfamily void testing\+::internal\+::\+Log\+To\+Stderr (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 1250 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a7ab4072540184e26119ad853f45059f7}\label{namespacetesting_1_1internal_a7ab4072540184e26119ad853f45059f7}} +\index{testing\+::internal@{testing\+::internal}!Make\+And\+Register\+Test\+Info@{Make\+And\+Register\+Test\+Info}} +\index{Make\+And\+Register\+Test\+Info@{Make\+And\+Register\+Test\+Info}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Make\+And\+Register\+Test\+Info()}{MakeAndRegisterTestInfo()}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} \mbox{\hyperlink{classtesting_1_1_test_info}{Test\+Info}}$\ast$ testing\+::internal\+::\+Make\+And\+Register\+Test\+Info (\begin{DoxyParamCaption}\item[{const char $\ast$}]{test\+\_\+suite\+\_\+name, }\item[{const char $\ast$}]{name, }\item[{const char $\ast$}]{type\+\_\+param, }\item[{const char $\ast$}]{value\+\_\+param, }\item[{\mbox{\hyperlink{structtesting_1_1internal_1_1_code_location}{Code\+Location}}}]{code\+\_\+location, }\item[{\mbox{\hyperlink{namespacetesting_1_1internal_ab1114197d3c657d8b7f8e0c5caa12d00}{Type\+Id}}}]{fixture\+\_\+class\+\_\+id, }\item[{\mbox{\hyperlink{namespacetesting_1_1internal_a83e4e0732ac6a9dcfe6ee299dc1b9fa2}{Set\+Up\+Test\+Suite\+Func}}}]{set\+\_\+up\+\_\+tc, }\item[{\mbox{\hyperlink{namespacetesting_1_1internal_a8257a87aa42cebaa54b0c48a6ae657a5}{Tear\+Down\+Test\+Suite\+Func}}}]{tear\+\_\+down\+\_\+tc, }\item[{\mbox{\hyperlink{classtesting_1_1internal_1_1_test_factory_base}{Test\+Factory\+Base}} $\ast$}]{factory }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_1_1internal_afa44fdec84edfc155ef63e4f0d4287cc}\label{namespacetesting_1_1internal_afa44fdec84edfc155ef63e4f0d4287cc}} +\index{testing\+::internal@{testing\+::internal}!operator"!=@{operator"!=}} +\index{operator"!=@{operator"!=}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{operator"!=()}{operator!=()}} +{\footnotesize\ttfamily bool testing\+::internal\+::operator!= (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{structtesting_1_1internal_1_1faketype}{faketype}}}]{, }\item[{\mbox{\hyperlink{structtesting_1_1internal_1_1faketype}{faketype}}}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 16107 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a5e3e473798de3189e9343132bcfd4fea}\label{namespacetesting_1_1internal_a5e3e473798de3189e9343132bcfd4fea}} +\index{testing\+::internal@{testing\+::internal}!operator==@{operator==}} +\index{operator==@{operator==}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{operator==()}{operator==()}} +{\footnotesize\ttfamily bool testing\+::internal\+::operator== (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{structtesting_1_1internal_1_1faketype}{faketype}}}]{, }\item[{\mbox{\hyperlink{structtesting_1_1internal_1_1faketype}{faketype}}}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 16106 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a0c793c6d84760d900299916c077a1af4}\label{namespacetesting_1_1internal_a0c793c6d84760d900299916c077a1af4}} +\index{testing\+::internal@{testing\+::internal}!Output\+Flag\+Also\+Check\+Env\+Var@{Output\+Flag\+Also\+Check\+Env\+Var}} +\index{Output\+Flag\+Also\+Check\+Env\+Var@{Output\+Flag\+Also\+Check\+Env\+Var}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Output\+Flag\+Also\+Check\+Env\+Var()}{OutputFlagAlsoCheckEnvVar()}} +{\footnotesize\ttfamily std\+::string testing\+::internal\+::\+Output\+Flag\+Also\+Check\+Env\+Var (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + + + +Definition at line 10980 of file gtest-\/all.\+cc. + +\mbox{\Hypertarget{namespacetesting_1_1internal_ac06fc81336a3d80755f4020d34321766}\label{namespacetesting_1_1internal_ac06fc81336a3d80755f4020d34321766}} +\index{testing\+::internal@{testing\+::internal}!Parse\+Int32@{Parse\+Int32}} +\index{Parse\+Int32@{Parse\+Int32}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Parse\+Int32()}{ParseInt32()}} +{\footnotesize\ttfamily bool testing\+::internal\+::\+Parse\+Int32 (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classtesting_1_1_message}{Message}} \&}]{src\+\_\+text, }\item[{const char $\ast$}]{str, }\item[{\mbox{\hyperlink{namespacetesting_1_1internal_a8ee38faaf875f133358abaf9bc056cec}{Int32}} $\ast$}]{value }\end{DoxyParamCaption})} + + + +Definition at line 10892 of file gtest-\/all.\+cc. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a0c577e598e61d339ba45dd6643fb1969}\label{namespacetesting_1_1internal_a0c577e598e61d339ba45dd6643fb1969}} +\index{testing\+::internal@{testing\+::internal}!Print\+Char\+And\+Code\+To@{Print\+Char\+And\+Code\+To}} +\index{Print\+Char\+And\+Code\+To@{Print\+Char\+And\+Code\+To}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Print\+Char\+And\+Code\+To()}{PrintCharAndCodeTo()}} +{\footnotesize\ttfamily template$<$typename Unsigned\+Char , typename Char $>$ \\ +void testing\+::internal\+::\+Print\+Char\+And\+Code\+To (\begin{DoxyParamCaption}\item[{Char}]{c, }\item[{ostream $\ast$}]{os }\end{DoxyParamCaption})} + + + +Definition at line 11218 of file gtest-\/all.\+cc. + +\mbox{\Hypertarget{namespacetesting_1_1internal_ad3013b6b4c825edee9fe18ff1d982faa}\label{namespacetesting_1_1internal_ad3013b6b4c825edee9fe18ff1d982faa}} +\index{testing\+::internal@{testing\+::internal}!Print\+Raw\+Array\+To@{Print\+Raw\+Array\+To}} +\index{Print\+Raw\+Array\+To@{Print\+Raw\+Array\+To}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Print\+Raw\+Array\+To()}{PrintRawArrayTo()}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +void testing\+::internal\+::\+Print\+Raw\+Array\+To (\begin{DoxyParamCaption}\item[{const T}]{a\mbox{[}$\,$\mbox{]}, }\item[{size\+\_\+t}]{count, }\item[{\+::std\+::ostream $\ast$}]{os }\end{DoxyParamCaption})} + + + +Definition at line 8623 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a8b53e46cea3f8bdfc9342057c4f6ba62}\label{namespacetesting_1_1internal_a8b53e46cea3f8bdfc9342057c4f6ba62}} +\index{testing\+::internal@{testing\+::internal}!Print\+String\+To@{Print\+String\+To}} +\index{Print\+String\+To@{Print\+String\+To}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Print\+String\+To()}{PrintStringTo()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} void testing\+::internal\+::\+Print\+String\+To (\begin{DoxyParamCaption}\item[{const \+::std\+::string \&}]{s, }\item[{\+::std\+::ostream $\ast$}]{os }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_1_1internal_ad609167d8d6792b0fb186539e0e159bd}\label{namespacetesting_1_1internal_ad609167d8d6792b0fb186539e0e159bd}} +\index{testing\+::internal@{testing\+::internal}!Print\+String\+To@{Print\+String\+To}} +\index{Print\+String\+To@{Print\+String\+To}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Print\+String\+To()}{PrintStringTo()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily void testing\+::internal\+::\+Print\+String\+To (\begin{DoxyParamCaption}\item[{const \+::std\+::string \&}]{s, }\item[{ostream $\ast$}]{os }\end{DoxyParamCaption})} + + + +Definition at line 11432 of file gtest-\/all.\+cc. + +\mbox{\Hypertarget{namespacetesting_1_1internal_adb3c27150dbe661db0e0c4be27533460}\label{namespacetesting_1_1internal_adb3c27150dbe661db0e0c4be27533460}} +\index{testing\+::internal@{testing\+::internal}!Print\+To@{Print\+To}} +\index{Print\+To@{Print\+To}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Print\+To()}{PrintTo()}\hspace{0.1cm}{\footnotesize\ttfamily [1/23]}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +void testing\+::internal\+::\+Print\+To (\begin{DoxyParamCaption}\item[{const T \&}]{value, }\item[{\+::std\+::ostream $\ast$}]{os }\end{DoxyParamCaption})} + + + +Definition at line 8522 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a476bd3d411d4f129620aaf8999c257c0}\label{namespacetesting_1_1internal_a476bd3d411d4f129620aaf8999c257c0}} +\index{testing\+::internal@{testing\+::internal}!Print\+To@{Print\+To}} +\index{Print\+To@{Print\+To}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Print\+To()}{PrintTo()}\hspace{0.1cm}{\footnotesize\ttfamily [2/23]}} +{\footnotesize\ttfamily void testing\+::internal\+::\+Print\+To (\begin{DoxyParamCaption}\item[{char}]{c, }\item[{\+::std\+::ostream $\ast$}]{os }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 8562 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a2979ac1ad3e05c51dcd7dca2eb34e6ce}\label{namespacetesting_1_1internal_a2979ac1ad3e05c51dcd7dca2eb34e6ce}} +\index{testing\+::internal@{testing\+::internal}!Print\+To@{Print\+To}} +\index{Print\+To@{Print\+To}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Print\+To()}{PrintTo()}\hspace{0.1cm}{\footnotesize\ttfamily [3/23]}} +{\footnotesize\ttfamily void testing\+::internal\+::\+Print\+To (\begin{DoxyParamCaption}\item[{bool}]{x, }\item[{\+::std\+::ostream $\ast$}]{os }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 8570 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a6c50fd437a2ae2ff6f182ccd6c2744dd}\label{namespacetesting_1_1internal_a6c50fd437a2ae2ff6f182ccd6c2744dd}} +\index{testing\+::internal@{testing\+::internal}!Print\+To@{Print\+To}} +\index{Print\+To@{Print\+To}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Print\+To()}{PrintTo()}\hspace{0.1cm}{\footnotesize\ttfamily [4/23]}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} void testing\+::internal\+::\+Print\+To (\begin{DoxyParamCaption}\item[{wchar\+\_\+t}]{wc, }\item[{\+::std\+::ostream $\ast$}]{os }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_1_1internal_ac226053b96d7d61f9407e3b75bab07d9}\label{namespacetesting_1_1internal_ac226053b96d7d61f9407e3b75bab07d9}} +\index{testing\+::internal@{testing\+::internal}!Print\+To@{Print\+To}} +\index{Print\+To@{Print\+To}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Print\+To()}{PrintTo()}\hspace{0.1cm}{\footnotesize\ttfamily [5/23]}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} void testing\+::internal\+::\+Print\+To (\begin{DoxyParamCaption}\item[{const char $\ast$}]{s, }\item[{\+::std\+::ostream $\ast$}]{os }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_1_1internal_a553eec7bb50de01c9e91cac4accc606f}\label{namespacetesting_1_1internal_a553eec7bb50de01c9e91cac4accc606f}} +\index{testing\+::internal@{testing\+::internal}!Print\+To@{Print\+To}} +\index{Print\+To@{Print\+To}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Print\+To()}{PrintTo()}\hspace{0.1cm}{\footnotesize\ttfamily [6/23]}} +{\footnotesize\ttfamily void testing\+::internal\+::\+Print\+To (\begin{DoxyParamCaption}\item[{char $\ast$}]{s, }\item[{\+::std\+::ostream $\ast$}]{os }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 8585 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a792cc5665a34619ed7a6d54711433456}\label{namespacetesting_1_1internal_a792cc5665a34619ed7a6d54711433456}} +\index{testing\+::internal@{testing\+::internal}!Print\+To@{Print\+To}} +\index{Print\+To@{Print\+To}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Print\+To()}{PrintTo()}\hspace{0.1cm}{\footnotesize\ttfamily [7/23]}} +{\footnotesize\ttfamily void testing\+::internal\+::\+Print\+To (\begin{DoxyParamCaption}\item[{const signed char $\ast$}]{s, }\item[{\+::std\+::ostream $\ast$}]{os }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 8591 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a1320096b116f8cc4b688acbd5b783051}\label{namespacetesting_1_1internal_a1320096b116f8cc4b688acbd5b783051}} +\index{testing\+::internal@{testing\+::internal}!Print\+To@{Print\+To}} +\index{Print\+To@{Print\+To}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Print\+To()}{PrintTo()}\hspace{0.1cm}{\footnotesize\ttfamily [8/23]}} +{\footnotesize\ttfamily void testing\+::internal\+::\+Print\+To (\begin{DoxyParamCaption}\item[{signed char $\ast$}]{s, }\item[{\+::std\+::ostream $\ast$}]{os }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 8594 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a42c591f2164ad105b502a9262333aed2}\label{namespacetesting_1_1internal_a42c591f2164ad105b502a9262333aed2}} +\index{testing\+::internal@{testing\+::internal}!Print\+To@{Print\+To}} +\index{Print\+To@{Print\+To}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Print\+To()}{PrintTo()}\hspace{0.1cm}{\footnotesize\ttfamily [9/23]}} +{\footnotesize\ttfamily void testing\+::internal\+::\+Print\+To (\begin{DoxyParamCaption}\item[{const unsigned char $\ast$}]{s, }\item[{\+::std\+::ostream $\ast$}]{os }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 8597 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a7fae797c500d66d0f5a9db4f205e3416}\label{namespacetesting_1_1internal_a7fae797c500d66d0f5a9db4f205e3416}} +\index{testing\+::internal@{testing\+::internal}!Print\+To@{Print\+To}} +\index{Print\+To@{Print\+To}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Print\+To()}{PrintTo()}\hspace{0.1cm}{\footnotesize\ttfamily [10/23]}} +{\footnotesize\ttfamily void testing\+::internal\+::\+Print\+To (\begin{DoxyParamCaption}\item[{unsigned char $\ast$}]{s, }\item[{\+::std\+::ostream $\ast$}]{os }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 8600 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_afb038075e9e2166d1d9158a19e0eed23}\label{namespacetesting_1_1internal_afb038075e9e2166d1d9158a19e0eed23}} +\index{testing\+::internal@{testing\+::internal}!Print\+To@{Print\+To}} +\index{Print\+To@{Print\+To}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Print\+To()}{PrintTo()}\hspace{0.1cm}{\footnotesize\ttfamily [11/23]}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} void testing\+::internal\+::\+Print\+To (\begin{DoxyParamCaption}\item[{const wchar\+\_\+t $\ast$}]{s, }\item[{\+::std\+::ostream $\ast$}]{os }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_1_1internal_a8d41baa371fad3eb5a3dbe1bbc02c290}\label{namespacetesting_1_1internal_a8d41baa371fad3eb5a3dbe1bbc02c290}} +\index{testing\+::internal@{testing\+::internal}!Print\+To@{Print\+To}} +\index{Print\+To@{Print\+To}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Print\+To()}{PrintTo()}\hspace{0.1cm}{\footnotesize\ttfamily [12/23]}} +{\footnotesize\ttfamily void testing\+::internal\+::\+Print\+To (\begin{DoxyParamCaption}\item[{wchar\+\_\+t $\ast$}]{s, }\item[{\+::std\+::ostream $\ast$}]{os }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 8612 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_af59b4f5d83276cd807c45063b14bad44}\label{namespacetesting_1_1internal_af59b4f5d83276cd807c45063b14bad44}} +\index{testing\+::internal@{testing\+::internal}!Print\+To@{Print\+To}} +\index{Print\+To@{Print\+To}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Print\+To()}{PrintTo()}\hspace{0.1cm}{\footnotesize\ttfamily [13/23]}} +{\footnotesize\ttfamily void testing\+::internal\+::\+Print\+To (\begin{DoxyParamCaption}\item[{const \+::std\+::string \&}]{s, }\item[{\+::std\+::ostream $\ast$}]{os }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 8640 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a8d5be499966aeff68d4690db7d57f38a}\label{namespacetesting_1_1internal_a8d5be499966aeff68d4690db7d57f38a}} +\index{testing\+::internal@{testing\+::internal}!Print\+To@{Print\+To}} +\index{Print\+To@{Print\+To}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Print\+To()}{PrintTo()}\hspace{0.1cm}{\footnotesize\ttfamily [14/23]}} +{\footnotesize\ttfamily void testing\+::internal\+::\+Print\+To (\begin{DoxyParamCaption}\item[{const \+::std\+::wstring \&}]{s, }\item[{\+::std\+::ostream $\ast$}]{os }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 8654 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a76f564cf23190dbd5c9e088defdd092b}\label{namespacetesting_1_1internal_a76f564cf23190dbd5c9e088defdd092b}} +\index{testing\+::internal@{testing\+::internal}!Print\+To@{Print\+To}} +\index{Print\+To@{Print\+To}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Print\+To()}{PrintTo()}\hspace{0.1cm}{\footnotesize\ttfamily [15/23]}} +{\footnotesize\ttfamily void testing\+::internal\+::\+Print\+To (\begin{DoxyParamCaption}\item[{std\+::nullptr\+\_\+t}]{, }\item[{\+::std\+::ostream $\ast$}]{os }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 8666 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a5587d09db034bc597870ae86bd8c01f8}\label{namespacetesting_1_1internal_a5587d09db034bc597870ae86bd8c01f8}} +\index{testing\+::internal@{testing\+::internal}!Print\+To@{Print\+To}} +\index{Print\+To@{Print\+To}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Print\+To()}{PrintTo()}\hspace{0.1cm}{\footnotesize\ttfamily [16/23]}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +void testing\+::internal\+::\+Print\+To (\begin{DoxyParamCaption}\item[{std\+::reference\+\_\+wrapper$<$ T $>$}]{ref, }\item[{\+::std\+::ostream $\ast$}]{os }\end{DoxyParamCaption})} + + + +Definition at line 8669 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a5628347cba9a345f56087fdb70930fc8}\label{namespacetesting_1_1internal_a5628347cba9a345f56087fdb70930fc8}} +\index{testing\+::internal@{testing\+::internal}!Print\+To@{Print\+To}} +\index{Print\+To@{Print\+To}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Print\+To()}{PrintTo()}\hspace{0.1cm}{\footnotesize\ttfamily [17/23]}} +{\footnotesize\ttfamily template$<$typename... Types$>$ \\ +void testing\+::internal\+::\+Print\+To (\begin{DoxyParamCaption}\item[{const \+::std\+::tuple$<$ Types... $>$ \&}]{t, }\item[{\+::std\+::ostream $\ast$}]{os }\end{DoxyParamCaption})} + + + +Definition at line 8694 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_af2c33928facbf2edf7af564278724d98}\label{namespacetesting_1_1internal_af2c33928facbf2edf7af564278724d98}} +\index{testing\+::internal@{testing\+::internal}!Print\+To@{Print\+To}} +\index{Print\+To@{Print\+To}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Print\+To()}{PrintTo()}\hspace{0.1cm}{\footnotesize\ttfamily [18/23]}} +{\footnotesize\ttfamily template$<$typename T1 , typename T2 $>$ \\ +void testing\+::internal\+::\+Print\+To (\begin{DoxyParamCaption}\item[{const \+::std\+::pair$<$ T1, T2 $>$ \&}]{value, }\item[{\+::std\+::ostream $\ast$}]{os }\end{DoxyParamCaption})} + + + +Definition at line 8702 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_aa7e70a85d66f0c109e3e69629ef577f2}\label{namespacetesting_1_1internal_aa7e70a85d66f0c109e3e69629ef577f2}} +\index{testing\+::internal@{testing\+::internal}!Print\+To@{Print\+To}} +\index{Print\+To@{Print\+To}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Print\+To()}{PrintTo()}\hspace{0.1cm}{\footnotesize\ttfamily [19/23]}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} void testing\+::internal\+::\+Print\+To (\begin{DoxyParamCaption}\item[{unsigned char}]{c, }\item[{\+::std\+::ostream $\ast$}]{os }\end{DoxyParamCaption})} + + + +Definition at line 11242 of file gtest-\/all.\+cc. + +\mbox{\Hypertarget{namespacetesting_1_1internal_abf6c518b437569187c1218166c702807}\label{namespacetesting_1_1internal_abf6c518b437569187c1218166c702807}} +\index{testing\+::internal@{testing\+::internal}!Print\+To@{Print\+To}} +\index{Print\+To@{Print\+To}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Print\+To()}{PrintTo()}\hspace{0.1cm}{\footnotesize\ttfamily [20/23]}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} void testing\+::internal\+::\+Print\+To (\begin{DoxyParamCaption}\item[{signed char}]{c, }\item[{\+::std\+::ostream $\ast$}]{os }\end{DoxyParamCaption})} + + + +Definition at line 11245 of file gtest-\/all.\+cc. + +\mbox{\Hypertarget{namespacetesting_1_1internal_aa74ea9d64f76ce69eceb225ca5ebef58}\label{namespacetesting_1_1internal_aa74ea9d64f76ce69eceb225ca5ebef58}} +\index{testing\+::internal@{testing\+::internal}!Print\+To@{Print\+To}} +\index{Print\+To@{Print\+To}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Print\+To()}{PrintTo()}\hspace{0.1cm}{\footnotesize\ttfamily [21/23]}} +{\footnotesize\ttfamily void testing\+::internal\+::\+Print\+To (\begin{DoxyParamCaption}\item[{wchar\+\_\+t}]{wc, }\item[{ostream $\ast$}]{os }\end{DoxyParamCaption})} + + + +Definition at line 11251 of file gtest-\/all.\+cc. + +\mbox{\Hypertarget{namespacetesting_1_1internal_adc6c98306d40b53fd07be4e295102a0a}\label{namespacetesting_1_1internal_adc6c98306d40b53fd07be4e295102a0a}} +\index{testing\+::internal@{testing\+::internal}!Print\+To@{Print\+To}} +\index{Print\+To@{Print\+To}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Print\+To()}{PrintTo()}\hspace{0.1cm}{\footnotesize\ttfamily [22/23]}} +{\footnotesize\ttfamily void testing\+::internal\+::\+Print\+To (\begin{DoxyParamCaption}\item[{const char $\ast$}]{s, }\item[{ostream $\ast$}]{os }\end{DoxyParamCaption})} + + + +Definition at line 11327 of file gtest-\/all.\+cc. + +\mbox{\Hypertarget{namespacetesting_1_1internal_afc20fb56b2547a8f91f9ff99650f2024}\label{namespacetesting_1_1internal_afc20fb56b2547a8f91f9ff99650f2024}} +\index{testing\+::internal@{testing\+::internal}!Print\+To@{Print\+To}} +\index{Print\+To@{Print\+To}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Print\+To()}{PrintTo()}\hspace{0.1cm}{\footnotesize\ttfamily [23/23]}} +{\footnotesize\ttfamily void testing\+::internal\+::\+Print\+To (\begin{DoxyParamCaption}\item[{const wchar\+\_\+t $\ast$}]{s, }\item[{ostream $\ast$}]{os }\end{DoxyParamCaption})} + + + +Definition at line 11344 of file gtest-\/all.\+cc. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a7174fbf5d6ba458afae675022c9aae1e}\label{namespacetesting_1_1internal_a7174fbf5d6ba458afae675022c9aae1e}} +\index{testing\+::internal@{testing\+::internal}!Print\+Tuple\+To@{Print\+Tuple\+To}} +\index{Print\+Tuple\+To@{Print\+Tuple\+To}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Print\+Tuple\+To()}{PrintTupleTo()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +void testing\+::internal\+::\+Print\+Tuple\+To (\begin{DoxyParamCaption}\item[{const T \&}]{, }\item[{std\+::integral\+\_\+constant$<$ size\+\_\+t, 0 $>$}]{, }\item[{\+::std\+::ostream $\ast$}]{ }\end{DoxyParamCaption})} + + + +Definition at line 8677 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a3580971ab4571dc9a00f4ed0e17fd777}\label{namespacetesting_1_1internal_a3580971ab4571dc9a00f4ed0e17fd777}} +\index{testing\+::internal@{testing\+::internal}!Print\+Tuple\+To@{Print\+Tuple\+To}} +\index{Print\+Tuple\+To@{Print\+Tuple\+To}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Print\+Tuple\+To()}{PrintTupleTo()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename T , size\+\_\+t I$>$ \\ +void testing\+::internal\+::\+Print\+Tuple\+To (\begin{DoxyParamCaption}\item[{const T \&}]{t, }\item[{std\+::integral\+\_\+constant$<$ size\+\_\+t, I $>$}]{, }\item[{\+::std\+::ostream $\ast$}]{os }\end{DoxyParamCaption})} + + + +Definition at line 8681 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_ae38089f9d4093cb7cf93396251fd2d66}\label{namespacetesting_1_1internal_ae38089f9d4093cb7cf93396251fd2d66}} +\index{testing\+::internal@{testing\+::internal}!Print\+Wide\+String\+To@{Print\+Wide\+String\+To}} +\index{Print\+Wide\+String\+To@{Print\+Wide\+String\+To}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Print\+Wide\+String\+To()}{PrintWideStringTo()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} void testing\+::internal\+::\+Print\+Wide\+String\+To (\begin{DoxyParamCaption}\item[{const \+::std\+::wstring \&}]{s, }\item[{\+::std\+::ostream $\ast$}]{os }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_1_1internal_ac46308aa3c0294ae446a40115aeb32c6}\label{namespacetesting_1_1internal_ac46308aa3c0294ae446a40115aeb32c6}} +\index{testing\+::internal@{testing\+::internal}!Print\+Wide\+String\+To@{Print\+Wide\+String\+To}} +\index{Print\+Wide\+String\+To@{Print\+Wide\+String\+To}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Print\+Wide\+String\+To()}{PrintWideStringTo()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily void testing\+::internal\+::\+Print\+Wide\+String\+To (\begin{DoxyParamCaption}\item[{const \+::std\+::wstring \&}]{s, }\item[{ostream $\ast$}]{os }\end{DoxyParamCaption})} + + + +Definition at line 11448 of file gtest-\/all.\+cc. + +\mbox{\Hypertarget{namespacetesting_1_1internal_ab81b0af2a0131ea54dc11de00d5e6e51}\label{namespacetesting_1_1internal_ab81b0af2a0131ea54dc11de00d5e6e51}} +\index{testing\+::internal@{testing\+::internal}!Read\+Entire\+File@{Read\+Entire\+File}} +\index{Read\+Entire\+File@{Read\+Entire\+File}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Read\+Entire\+File()}{ReadEntireFile()}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} std\+::string testing\+::internal\+::\+Read\+Entire\+File (\begin{DoxyParamCaption}\item[{F\+I\+LE $\ast$}]{file }\end{DoxyParamCaption})} + + + +Definition at line 10809 of file gtest-\/all.\+cc. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a5d3e97443d23bf1824f87feb172efd39}\label{namespacetesting_1_1internal_a5d3e97443d23bf1824f87feb172efd39}} +\index{testing\+::internal@{testing\+::internal}!Report\+Invalid\+Test\+Suite\+Type@{Report\+Invalid\+Test\+Suite\+Type}} +\index{Report\+Invalid\+Test\+Suite\+Type@{Report\+Invalid\+Test\+Suite\+Type}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Report\+Invalid\+Test\+Suite\+Type()}{ReportInvalidTestSuiteType()}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} void testing\+::internal\+::\+Report\+Invalid\+Test\+Suite\+Type (\begin{DoxyParamCaption}\item[{const char $\ast$}]{test\+\_\+suite\+\_\+name, }\item[{\mbox{\hyperlink{structtesting_1_1internal_1_1_code_location}{Code\+Location}}}]{code\+\_\+location }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_1_1internal_aac72b20299ad4a99554ce161e1769560}\label{namespacetesting_1_1internal_aac72b20299ad4a99554ce161e1769560}} +\index{testing\+::internal@{testing\+::internal}!Skip\+Prefix@{Skip\+Prefix}} +\index{Skip\+Prefix@{Skip\+Prefix}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Skip\+Prefix()}{SkipPrefix()}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} bool testing\+::internal\+::\+Skip\+Prefix (\begin{DoxyParamCaption}\item[{const char $\ast$}]{prefix, }\item[{const char $\ast$$\ast$}]{pstr }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_1_1internal_aad4beed95d0846e6ffc5da0978ef3bb9}\label{namespacetesting_1_1internal_aad4beed95d0846e6ffc5da0978ef3bb9}} +\index{testing\+::internal@{testing\+::internal}!Streamable\+To\+String@{Streamable\+To\+String}} +\index{Streamable\+To\+String@{Streamable\+To\+String}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Streamable\+To\+String()}{StreamableToString()}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +std\+::string testing\+::internal\+::\+Streamable\+To\+String (\begin{DoxyParamCaption}\item[{const T \&}]{streamable }\end{DoxyParamCaption})} + + + +Definition at line 2769 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a0967cbf18fb1594f82512d8d822aba21}\label{namespacetesting_1_1internal_a0967cbf18fb1594f82512d8d822aba21}} +\index{testing\+::internal@{testing\+::internal}!String\+From\+G\+Test\+Env@{String\+From\+G\+Test\+Env}} +\index{String\+From\+G\+Test\+Env@{String\+From\+G\+Test\+Env}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{String\+From\+G\+Test\+Env()}{StringFromGTestEnv()}} +{\footnotesize\ttfamily const char $\ast$ testing\+::internal\+::\+String\+From\+G\+Test\+Env (\begin{DoxyParamCaption}\item[{const char $\ast$}]{flag, }\item[{const char $\ast$}]{default\+\_\+value }\end{DoxyParamCaption})} + + + +Definition at line 10991 of file gtest-\/all.\+cc. + +\mbox{\Hypertarget{namespacetesting_1_1internal_aa6afda12e567c353e2e9b9c2e8cae14f}\label{namespacetesting_1_1internal_aa6afda12e567c353e2e9b9c2e8cae14f}} +\index{testing\+::internal@{testing\+::internal}!Strip\+Trailing\+Spaces@{Strip\+Trailing\+Spaces}} +\index{Strip\+Trailing\+Spaces@{Strip\+Trailing\+Spaces}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Strip\+Trailing\+Spaces()}{StripTrailingSpaces()}} +{\footnotesize\ttfamily std\+::string testing\+::internal\+::\+Strip\+Trailing\+Spaces (\begin{DoxyParamCaption}\item[{std\+::string}]{str }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 2266 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a6300aa1440d0019cf08d9a1f6efd4382}\label{namespacetesting_1_1internal_a6300aa1440d0019cf08d9a1f6efd4382}} +\index{testing\+::internal@{testing\+::internal}!Terse\+Print\+Prefix\+To\+Strings@{Terse\+Print\+Prefix\+To\+Strings}} +\index{Terse\+Print\+Prefix\+To\+Strings@{Terse\+Print\+Prefix\+To\+Strings}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Terse\+Print\+Prefix\+To\+Strings()}{TersePrintPrefixToStrings()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename Tuple $>$ \\ +void testing\+::internal\+::\+Terse\+Print\+Prefix\+To\+Strings (\begin{DoxyParamCaption}\item[{const Tuple \&}]{, }\item[{std\+::integral\+\_\+constant$<$ size\+\_\+t, 0 $>$}]{, }\item[{\mbox{\hyperlink{namespacetesting_1_1internal_a50003bb76ec2934be1062be11efba8bf}{Strings}} $\ast$}]{ }\end{DoxyParamCaption})} + + + +Definition at line 8931 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_ab244273c02742a3fac45cc241befc536}\label{namespacetesting_1_1internal_ab244273c02742a3fac45cc241befc536}} +\index{testing\+::internal@{testing\+::internal}!Terse\+Print\+Prefix\+To\+Strings@{Terse\+Print\+Prefix\+To\+Strings}} +\index{Terse\+Print\+Prefix\+To\+Strings@{Terse\+Print\+Prefix\+To\+Strings}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Terse\+Print\+Prefix\+To\+Strings()}{TersePrintPrefixToStrings()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename Tuple , size\+\_\+t I$>$ \\ +void testing\+::internal\+::\+Terse\+Print\+Prefix\+To\+Strings (\begin{DoxyParamCaption}\item[{const Tuple \&}]{t, }\item[{std\+::integral\+\_\+constant$<$ size\+\_\+t, I $>$}]{, }\item[{\mbox{\hyperlink{namespacetesting_1_1internal_a50003bb76ec2934be1062be11efba8bf}{Strings}} $\ast$}]{strings }\end{DoxyParamCaption})} + + + +Definition at line 8934 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_ad9c627ef2a94245e3fd69e7ab3d49b42}\label{namespacetesting_1_1internal_ad9c627ef2a94245e3fd69e7ab3d49b42}} +\index{testing\+::internal@{testing\+::internal}!To\+Lower@{To\+Lower}} +\index{To\+Lower@{To\+Lower}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{To\+Lower()}{ToLower()}} +{\footnotesize\ttfamily char testing\+::internal\+::\+To\+Lower (\begin{DoxyParamCaption}\item[{char}]{ch }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 2259 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_ac1b876a8133895bd553d4780ecaa1e3a}\label{namespacetesting_1_1internal_ac1b876a8133895bd553d4780ecaa1e3a}} +\index{testing\+::internal@{testing\+::internal}!To\+Upper@{To\+Upper}} +\index{To\+Upper@{To\+Upper}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{To\+Upper()}{ToUpper()}} +{\footnotesize\ttfamily char testing\+::internal\+::\+To\+Upper (\begin{DoxyParamCaption}\item[{char}]{ch }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 2262 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a30708fa2bacf11895b03bdb21eb72309}\label{namespacetesting_1_1internal_a30708fa2bacf11895b03bdb21eb72309}} +\index{testing\+::internal@{testing\+::internal}!Universal\+Print@{Universal\+Print}} +\index{Universal\+Print@{Universal\+Print}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Universal\+Print()}{UniversalPrint()}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +void testing\+::internal\+::\+Universal\+Print (\begin{DoxyParamCaption}\item[{const T \&}]{value, }\item[{\+::std\+::ostream $\ast$}]{os }\end{DoxyParamCaption})} + + + +Definition at line 8919 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_ad79d71c3110f8eb24ab352d68f29436a}\label{namespacetesting_1_1internal_ad79d71c3110f8eb24ab352d68f29436a}} +\index{testing\+::internal@{testing\+::internal}!Universal\+Print\+Array@{Universal\+Print\+Array}} +\index{Universal\+Print\+Array@{Universal\+Print\+Array}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Universal\+Print\+Array()}{UniversalPrintArray()}\hspace{0.1cm}{\footnotesize\ttfamily [1/5]}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +void testing\+::internal\+::\+Universal\+Print\+Array (\begin{DoxyParamCaption}\item[{const T $\ast$}]{begin, }\item[{size\+\_\+t}]{len, }\item[{\+::std\+::ostream $\ast$}]{os }\end{DoxyParamCaption})} + + + +Definition at line 8784 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a72c997dbd2c562110b2cb56c359decfa}\label{namespacetesting_1_1internal_a72c997dbd2c562110b2cb56c359decfa}} +\index{testing\+::internal@{testing\+::internal}!Universal\+Print\+Array@{Universal\+Print\+Array}} +\index{Universal\+Print\+Array@{Universal\+Print\+Array}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Universal\+Print\+Array()}{UniversalPrintArray()}\hspace{0.1cm}{\footnotesize\ttfamily [2/5]}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} void testing\+::internal\+::\+Universal\+Print\+Array (\begin{DoxyParamCaption}\item[{const char $\ast$}]{begin, }\item[{size\+\_\+t}]{len, }\item[{\+::std\+::ostream $\ast$}]{os }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_1_1internal_ae31e146c35fd75afc6a9cc73ae2692d1}\label{namespacetesting_1_1internal_ae31e146c35fd75afc6a9cc73ae2692d1}} +\index{testing\+::internal@{testing\+::internal}!Universal\+Print\+Array@{Universal\+Print\+Array}} +\index{Universal\+Print\+Array@{Universal\+Print\+Array}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Universal\+Print\+Array()}{UniversalPrintArray()}\hspace{0.1cm}{\footnotesize\ttfamily [3/5]}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} void testing\+::internal\+::\+Universal\+Print\+Array (\begin{DoxyParamCaption}\item[{const wchar\+\_\+t $\ast$}]{begin, }\item[{size\+\_\+t}]{len, }\item[{\+::std\+::ostream $\ast$}]{os }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_1_1internal_a070107e7a8205ad6ec4d538d52b15b38}\label{namespacetesting_1_1internal_a070107e7a8205ad6ec4d538d52b15b38}} +\index{testing\+::internal@{testing\+::internal}!Universal\+Print\+Array@{Universal\+Print\+Array}} +\index{Universal\+Print\+Array@{Universal\+Print\+Array}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Universal\+Print\+Array()}{UniversalPrintArray()}\hspace{0.1cm}{\footnotesize\ttfamily [4/5]}} +{\footnotesize\ttfamily void testing\+::internal\+::\+Universal\+Print\+Array (\begin{DoxyParamCaption}\item[{const char $\ast$}]{begin, }\item[{size\+\_\+t}]{len, }\item[{ostream $\ast$}]{os }\end{DoxyParamCaption})} + + + +Definition at line 11316 of file gtest-\/all.\+cc. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a52394019018eb5079f9f1bcca23dcd60}\label{namespacetesting_1_1internal_a52394019018eb5079f9f1bcca23dcd60}} +\index{testing\+::internal@{testing\+::internal}!Universal\+Print\+Array@{Universal\+Print\+Array}} +\index{Universal\+Print\+Array@{Universal\+Print\+Array}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Universal\+Print\+Array()}{UniversalPrintArray()}\hspace{0.1cm}{\footnotesize\ttfamily [5/5]}} +{\footnotesize\ttfamily void testing\+::internal\+::\+Universal\+Print\+Array (\begin{DoxyParamCaption}\item[{const wchar\+\_\+t $\ast$}]{begin, }\item[{size\+\_\+t}]{len, }\item[{ostream $\ast$}]{os }\end{DoxyParamCaption})} + + + +Definition at line 11322 of file gtest-\/all.\+cc. + +\mbox{\Hypertarget{namespacetesting_1_1internal_afa92f5a284929dc3723e654a25feb7b9}\label{namespacetesting_1_1internal_afa92f5a284929dc3723e654a25feb7b9}} +\index{testing\+::internal@{testing\+::internal}!Universal\+Terse\+Print@{Universal\+Terse\+Print}} +\index{Universal\+Terse\+Print@{Universal\+Terse\+Print}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Universal\+Terse\+Print()}{UniversalTersePrint()}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +void testing\+::internal\+::\+Universal\+Terse\+Print (\begin{DoxyParamCaption}\item[{const T \&}]{value, }\item[{\+::std\+::ostream $\ast$}]{os }\end{DoxyParamCaption})} + + + +Definition at line 8910 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a7e60d1478b074801c766eeee9be6c772}\label{namespacetesting_1_1internal_a7e60d1478b074801c766eeee9be6c772}} +\index{testing\+::internal@{testing\+::internal}!Universal\+Terse\+Print\+Tuple\+Fields\+To\+Strings@{Universal\+Terse\+Print\+Tuple\+Fields\+To\+Strings}} +\index{Universal\+Terse\+Print\+Tuple\+Fields\+To\+Strings@{Universal\+Terse\+Print\+Tuple\+Fields\+To\+Strings}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{Universal\+Terse\+Print\+Tuple\+Fields\+To\+Strings()}{UniversalTersePrintTupleFieldsToStrings()}} +{\footnotesize\ttfamily template$<$typename Tuple $>$ \\ +\mbox{\hyperlink{namespacetesting_1_1internal_a50003bb76ec2934be1062be11efba8bf}{Strings}} testing\+::internal\+::\+Universal\+Terse\+Print\+Tuple\+Fields\+To\+Strings (\begin{DoxyParamCaption}\item[{const Tuple \&}]{value }\end{DoxyParamCaption})} + + + +Definition at line 8948 of file gtest.\+h. + + + +\subsection{Variable Documentation} +\mbox{\Hypertarget{namespacetesting_1_1internal_a40b2a93ff318f5975eb8246b01221ce8}\label{namespacetesting_1_1internal_a40b2a93ff318f5975eb8246b01221ce8}} +\index{testing\+::internal@{testing\+::internal}!fmt@{fmt}} +\index{fmt@{fmt}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{fmt}{fmt}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} const char$\ast$ testing\+::internal\+::fmt} + + + +Definition at line 16430 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a23a8e9527d0e544e7df2d64ad549ce3e}\label{namespacetesting_1_1internal_a23a8e9527d0e544e7df2d64ad549ce3e}} +\index{testing\+::internal@{testing\+::internal}!k\+Current\+Directory\+String@{k\+Current\+Directory\+String}} +\index{k\+Current\+Directory\+String@{k\+Current\+Directory\+String}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{k\+Current\+Directory\+String}{kCurrentDirectoryString}} +{\footnotesize\ttfamily const char testing\+::internal\+::k\+Current\+Directory\+String\mbox{[}$\,$\mbox{]} = \char`\"{}./\char`\"{}} + + + +Definition at line 9247 of file gtest-\/all.\+cc. + +\mbox{\Hypertarget{namespacetesting_1_1internal_ad901880198832bc166d2493096b451f7}\label{namespacetesting_1_1internal_ad901880198832bc166d2493096b451f7}} +\index{testing\+::internal@{testing\+::internal}!k\+Max\+Biggest\+Int@{k\+Max\+Biggest\+Int}} +\index{k\+Max\+Biggest\+Int@{k\+Max\+Biggest\+Int}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{k\+Max\+Biggest\+Int}{kMaxBiggestInt}} +{\footnotesize\ttfamily const \mbox{\hyperlink{namespacetesting_1_1internal_a05c6bd9ede5ccdf25191a590d610dcc6}{Biggest\+Int}} testing\+::internal\+::k\+Max\+Biggest\+Int} + +{\bfseries Initial value\+:} +\begin{DoxyCode} += + ~(\textcolor{keyword}{static\_cast<}\mbox{\hyperlink{namespacetesting_1_1internal_a05c6bd9ede5ccdf25191a590d610dcc6}{BiggestInt}}\textcolor{keyword}{>}(1) << (8*\textcolor{keyword}{sizeof}(\mbox{\hyperlink{namespacetesting_1_1internal_a05c6bd9ede5ccdf25191a590d610dcc6}{BiggestInt}}) - 1)) +\end{DoxyCode} + + +Definition at line 2420 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_afcd71adaa9d1e6df7b282a17fc48125c}\label{namespacetesting_1_1internal_afcd71adaa9d1e6df7b282a17fc48125c}} +\index{testing\+::internal@{testing\+::internal}!k\+Path\+Separator@{k\+Path\+Separator}} +\index{k\+Path\+Separator@{k\+Path\+Separator}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{k\+Path\+Separator}{kPathSeparator}} +{\footnotesize\ttfamily const char testing\+::internal\+::k\+Path\+Separator = \textquotesingle{}/\textquotesingle{}} + + + +Definition at line 9246 of file gtest-\/all.\+cc. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a999c7ef9ff01b6d2d76669372c444aa3}\label{namespacetesting_1_1internal_a999c7ef9ff01b6d2d76669372c444aa3}} +\index{testing\+::internal@{testing\+::internal}!k\+Stack\+Trace\+Marker@{k\+Stack\+Trace\+Marker}} +\index{k\+Stack\+Trace\+Marker@{k\+Stack\+Trace\+Marker}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{k\+Stack\+Trace\+Marker}{kStackTraceMarker}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} const char testing\+::internal\+::k\+Stack\+Trace\+Marker\mbox{[}$\,$\mbox{]}} + +\mbox{\Hypertarget{namespacetesting_1_1internal_a747eccfdbdee3ff8af3bedc476a57c85}\label{namespacetesting_1_1internal_a747eccfdbdee3ff8af3bedc476a57c85}} +\index{testing\+::internal@{testing\+::internal}!k\+Std\+Err\+Fileno@{k\+Std\+Err\+Fileno}} +\index{k\+Std\+Err\+Fileno@{k\+Std\+Err\+Fileno}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{k\+Std\+Err\+Fileno}{kStdErrFileno}} +{\footnotesize\ttfamily const int testing\+::internal\+::k\+Std\+Err\+Fileno = S\+T\+D\+E\+R\+R\+\_\+\+F\+I\+L\+E\+NO} + + + +Definition at line 9776 of file gtest-\/all.\+cc. + +\mbox{\Hypertarget{namespacetesting_1_1internal_a24f0a3d50cac54a9132f4828ec9b96d9}\label{namespacetesting_1_1internal_a24f0a3d50cac54a9132f4828ec9b96d9}} +\index{testing\+::internal@{testing\+::internal}!k\+Std\+Out\+Fileno@{k\+Std\+Out\+Fileno}} +\index{k\+Std\+Out\+Fileno@{k\+Std\+Out\+Fileno}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{k\+Std\+Out\+Fileno}{kStdOutFileno}} +{\footnotesize\ttfamily const int testing\+::internal\+::k\+Std\+Out\+Fileno = S\+T\+D\+O\+U\+T\+\_\+\+F\+I\+L\+E\+NO} + + + +Definition at line 9775 of file gtest-\/all.\+cc. + +\mbox{\Hypertarget{namespacetesting_1_1internal_abae7a5775c901f2fd12b058b00d09840}\label{namespacetesting_1_1internal_abae7a5775c901f2fd12b058b00d09840}} +\index{testing\+::internal@{testing\+::internal}!k\+Unknown\+File@{k\+Unknown\+File}} +\index{k\+Unknown\+File@{k\+Unknown\+File}!testing\+::internal@{testing\+::internal}} +\subsubsection{\texorpdfstring{k\+Unknown\+File}{kUnknownFile}} +{\footnotesize\ttfamily const char testing\+::internal\+::k\+Unknown\+File\mbox{[}$\,$\mbox{]} = \char`\"{}unknown file\char`\"{}} + + + +Definition at line 10616 of file gtest-\/all.\+cc. + diff --git a/doc/latex/namespacetesting_1_1internal2.tex b/doc/latex/namespacetesting_1_1internal2.tex new file mode 100644 index 0000000..fbdc81d --- /dev/null +++ b/doc/latex/namespacetesting_1_1internal2.tex @@ -0,0 +1,103 @@ +\hypertarget{namespacetesting_1_1internal2}{}\section{testing\+:\+:internal2 Namespace Reference} +\label{namespacetesting_1_1internal2}\index{testing\+::internal2@{testing\+::internal2}} +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +class \mbox{\hyperlink{classtesting_1_1internal2_1_1_type_without_formatter}{Type\+Without\+Formatter}} +\item +class \mbox{\hyperlink{classtesting_1_1internal2_1_1_type_without_formatter_3_01_t_00_01k_convertible_to_integer_01_4}{Type\+Without\+Formatter$<$ T, k\+Convertible\+To\+Integer $>$}} +\item +class \mbox{\hyperlink{classtesting_1_1internal2_1_1_type_without_formatter_3_01_t_00_01k_protobuf_01_4}{Type\+Without\+Formatter$<$ T, k\+Protobuf $>$}} +\end{DoxyCompactItemize} +\subsection*{Enumerations} +\begin{DoxyCompactItemize} +\item +enum \mbox{\hyperlink{namespacetesting_1_1internal2_aeb8161b0b3ee503347b0662d7028fd57}{Type\+Kind}} \{ \mbox{\hyperlink{namespacetesting_1_1internal2_aeb8161b0b3ee503347b0662d7028fd57a14aaf98a2547ecf43eef0868d54b1383}{k\+Protobuf}}, +\mbox{\hyperlink{namespacetesting_1_1internal2_aeb8161b0b3ee503347b0662d7028fd57a9bdcf3f1548f498b2b7f097306ea0224}{k\+Convertible\+To\+Integer}}, +\mbox{\hyperlink{namespacetesting_1_1internal2_aeb8161b0b3ee503347b0662d7028fd57abe8aaea44751d6ebd0cdf5bd94451db1}{k\+Other\+Type}} + \} +\end{DoxyCompactItemize} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +void \mbox{\hyperlink{namespacetesting_1_1internal2_abfb9aa80365f93b952e9a4bea09947a8}{Print\+Bytes\+In\+Object\+To}} (const unsigned char $\ast$obj\+\_\+bytes, size\+\_\+t count, ostream $\ast$os) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} void \mbox{\hyperlink{namespacetesting_1_1internal2_a9fbf8e07c0f94dc74d6ef5e56cd3c553}{Print\+Bytes\+In\+Object\+To}} (const unsigned char $\ast$obj\+\_\+bytes, size\+\_\+t count, \+::std\+::ostream $\ast$os) +\item +{\footnotesize template$<$typename Char , typename Char\+Traits , typename T $>$ }\\\+::std\+::basic\+\_\+ostream$<$ Char, Char\+Traits $>$ \& \mbox{\hyperlink{namespacetesting_1_1internal2_a07dbe129beb8952074f04b599dfce39b}{operator$<$$<$}} (\+::std\+::basic\+\_\+ostream$<$ Char, Char\+Traits $>$ \&os, const T \&x) +\end{DoxyCompactItemize} +\subsection*{Variables} +\begin{DoxyCompactItemize} +\item +const size\+\_\+t \mbox{\hyperlink{namespacetesting_1_1internal2_a140c8efd51e63a3def98445bff107518}{k\+Protobuf\+One\+Liner\+Max\+Length}} = 50 +\end{DoxyCompactItemize} + + +\subsection{Enumeration Type Documentation} +\mbox{\Hypertarget{namespacetesting_1_1internal2_aeb8161b0b3ee503347b0662d7028fd57}\label{namespacetesting_1_1internal2_aeb8161b0b3ee503347b0662d7028fd57}} +\index{testing\+::internal2@{testing\+::internal2}!Type\+Kind@{Type\+Kind}} +\index{Type\+Kind@{Type\+Kind}!testing\+::internal2@{testing\+::internal2}} +\subsubsection{\texorpdfstring{Type\+Kind}{TypeKind}} +{\footnotesize\ttfamily enum \mbox{\hyperlink{namespacetesting_1_1internal2_aeb8161b0b3ee503347b0662d7028fd57}{testing\+::internal2\+::\+Type\+Kind}}} + +\begin{DoxyEnumFields}{Enumerator} +\raisebox{\heightof{T}}[0pt][0pt]{\index{k\+Protobuf@{k\+Protobuf}!testing\+::internal2@{testing\+::internal2}}\index{testing\+::internal2@{testing\+::internal2}!k\+Protobuf@{k\+Protobuf}}}\mbox{\Hypertarget{namespacetesting_1_1internal2_aeb8161b0b3ee503347b0662d7028fd57a14aaf98a2547ecf43eef0868d54b1383}\label{namespacetesting_1_1internal2_aeb8161b0b3ee503347b0662d7028fd57a14aaf98a2547ecf43eef0868d54b1383}} +k\+Protobuf&\\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{k\+Convertible\+To\+Integer@{k\+Convertible\+To\+Integer}!testing\+::internal2@{testing\+::internal2}}\index{testing\+::internal2@{testing\+::internal2}!k\+Convertible\+To\+Integer@{k\+Convertible\+To\+Integer}}}\mbox{\Hypertarget{namespacetesting_1_1internal2_aeb8161b0b3ee503347b0662d7028fd57a9bdcf3f1548f498b2b7f097306ea0224}\label{namespacetesting_1_1internal2_aeb8161b0b3ee503347b0662d7028fd57a9bdcf3f1548f498b2b7f097306ea0224}} +k\+Convertible\+To\+Integer&\\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{k\+Other\+Type@{k\+Other\+Type}!testing\+::internal2@{testing\+::internal2}}\index{testing\+::internal2@{testing\+::internal2}!k\+Other\+Type@{k\+Other\+Type}}}\mbox{\Hypertarget{namespacetesting_1_1internal2_aeb8161b0b3ee503347b0662d7028fd57abe8aaea44751d6ebd0cdf5bd94451db1}\label{namespacetesting_1_1internal2_aeb8161b0b3ee503347b0662d7028fd57abe8aaea44751d6ebd0cdf5bd94451db1}} +k\+Other\+Type&\\ +\hline + +\end{DoxyEnumFields} + + +Definition at line 8164 of file gtest.\+h. + + + +\subsection{Function Documentation} +\mbox{\Hypertarget{namespacetesting_1_1internal2_a07dbe129beb8952074f04b599dfce39b}\label{namespacetesting_1_1internal2_a07dbe129beb8952074f04b599dfce39b}} +\index{testing\+::internal2@{testing\+::internal2}!operator$<$$<$@{operator$<$$<$}} +\index{operator$<$$<$@{operator$<$$<$}!testing\+::internal2@{testing\+::internal2}} +\subsubsection{\texorpdfstring{operator$<$$<$()}{operator<<()}} +{\footnotesize\ttfamily template$<$typename Char , typename Char\+Traits , typename T $>$ \\ +\+::std\+::basic\+\_\+ostream$<$Char, Char\+Traits$>$\& testing\+::internal2\+::operator$<$$<$ (\begin{DoxyParamCaption}\item[{\+::std\+::basic\+\_\+ostream$<$ Char, Char\+Traits $>$ \&}]{os, }\item[{const T \&}]{x }\end{DoxyParamCaption})} + + + +Definition at line 8261 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal2_a9fbf8e07c0f94dc74d6ef5e56cd3c553}\label{namespacetesting_1_1internal2_a9fbf8e07c0f94dc74d6ef5e56cd3c553}} +\index{testing\+::internal2@{testing\+::internal2}!Print\+Bytes\+In\+Object\+To@{Print\+Bytes\+In\+Object\+To}} +\index{Print\+Bytes\+In\+Object\+To@{Print\+Bytes\+In\+Object\+To}!testing\+::internal2@{testing\+::internal2}} +\subsubsection{\texorpdfstring{Print\+Bytes\+In\+Object\+To()}{PrintBytesInObjectTo()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} void testing\+::internal2\+::\+Print\+Bytes\+In\+Object\+To (\begin{DoxyParamCaption}\item[{const unsigned char $\ast$}]{obj\+\_\+bytes, }\item[{size\+\_\+t}]{count, }\item[{\+::std\+::ostream $\ast$}]{os }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_1_1internal2_abfb9aa80365f93b952e9a4bea09947a8}\label{namespacetesting_1_1internal2_abfb9aa80365f93b952e9a4bea09947a8}} +\index{testing\+::internal2@{testing\+::internal2}!Print\+Bytes\+In\+Object\+To@{Print\+Bytes\+In\+Object\+To}} +\index{Print\+Bytes\+In\+Object\+To@{Print\+Bytes\+In\+Object\+To}!testing\+::internal2@{testing\+::internal2}} +\subsubsection{\texorpdfstring{Print\+Bytes\+In\+Object\+To()}{PrintBytesInObjectTo()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily void testing\+::internal2\+::\+Print\+Bytes\+In\+Object\+To (\begin{DoxyParamCaption}\item[{const unsigned char $\ast$}]{obj\+\_\+bytes, }\item[{size\+\_\+t}]{count, }\item[{ostream $\ast$}]{os }\end{DoxyParamCaption})} + + + +Definition at line 11112 of file gtest-\/all.\+cc. + + + +\subsection{Variable Documentation} +\mbox{\Hypertarget{namespacetesting_1_1internal2_a140c8efd51e63a3def98445bff107518}\label{namespacetesting_1_1internal2_a140c8efd51e63a3def98445bff107518}} +\index{testing\+::internal2@{testing\+::internal2}!k\+Protobuf\+One\+Liner\+Max\+Length@{k\+Protobuf\+One\+Liner\+Max\+Length}} +\index{k\+Protobuf\+One\+Liner\+Max\+Length@{k\+Protobuf\+One\+Liner\+Max\+Length}!testing\+::internal2@{testing\+::internal2}} +\subsubsection{\texorpdfstring{k\+Protobuf\+One\+Liner\+Max\+Length}{kProtobufOneLinerMaxLength}} +{\footnotesize\ttfamily const size\+\_\+t testing\+::internal2\+::k\+Protobuf\+One\+Liner\+Max\+Length = 50} + + + +Definition at line 8193 of file gtest.\+h. + diff --git a/doc/latex/namespacetesting_1_1internal_1_1edit__distance.tex b/doc/latex/namespacetesting_1_1internal_1_1edit__distance.tex new file mode 100644 index 0000000..b30ebf1 --- /dev/null +++ b/doc/latex/namespacetesting_1_1internal_1_1edit__distance.tex @@ -0,0 +1,72 @@ +\hypertarget{namespacetesting_1_1internal_1_1edit__distance}{}\section{testing\+:\+:internal\+:\+:edit\+\_\+distance Namespace Reference} +\label{namespacetesting_1_1internal_1_1edit__distance}\index{testing\+::internal\+::edit\+\_\+distance@{testing\+::internal\+::edit\+\_\+distance}} +\subsection*{Enumerations} +\begin{DoxyCompactItemize} +\item +enum \mbox{\hyperlink{namespacetesting_1_1internal_1_1edit__distance_ad46aa6da12aec1a3f166310478b53a08}{Edit\+Type}} \{ \mbox{\hyperlink{namespacetesting_1_1internal_1_1edit__distance_ad46aa6da12aec1a3f166310478b53a08a7bdb9c74613a94f21b7489e0b5640a63}{k\+Match}}, +\mbox{\hyperlink{namespacetesting_1_1internal_1_1edit__distance_ad46aa6da12aec1a3f166310478b53a08a63400b073f5b311a87d568b5ae27ffe8}{k\+Add}}, +\mbox{\hyperlink{namespacetesting_1_1internal_1_1edit__distance_ad46aa6da12aec1a3f166310478b53a08a814768ef6cd0264a0a10b1e701a63e78}{k\+Remove}}, +\mbox{\hyperlink{namespacetesting_1_1internal_1_1edit__distance_ad46aa6da12aec1a3f166310478b53a08afdbf30ecf9f32f60c646a34a358615f2}{k\+Replace}} + \} +\end{DoxyCompactItemize} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} std\+::vector$<$ \mbox{\hyperlink{namespacetesting_1_1internal_1_1edit__distance_ad46aa6da12aec1a3f166310478b53a08}{Edit\+Type}} $>$ \mbox{\hyperlink{namespacetesting_1_1internal_1_1edit__distance_ad28f23b77f716200bc6644bfc7413a63}{Calculate\+Optimal\+Edits}} (const std\+::vector$<$ size\+\_\+t $>$ \&left, const std\+::vector$<$ size\+\_\+t $>$ \&right) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} std\+::vector$<$ \mbox{\hyperlink{namespacetesting_1_1internal_1_1edit__distance_ad46aa6da12aec1a3f166310478b53a08}{Edit\+Type}} $>$ \mbox{\hyperlink{namespacetesting_1_1internal_1_1edit__distance_ad2258c5c811f8f262335f58641b33544}{Calculate\+Optimal\+Edits}} (const std\+::vector$<$ std\+::string $>$ \&left, const std\+::vector$<$ std\+::string $>$ \&right) +\item +\mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} std\+::string \mbox{\hyperlink{namespacetesting_1_1internal_1_1edit__distance_a48cffebc6d3169ad1df7849b5f7fb5ff}{Create\+Unified\+Diff}} (const std\+::vector$<$ std\+::string $>$ \&left, const std\+::vector$<$ std\+::string $>$ \&right, size\+\_\+t context=2) +\end{DoxyCompactItemize} + + +\subsection{Enumeration Type Documentation} +\mbox{\Hypertarget{namespacetesting_1_1internal_1_1edit__distance_ad46aa6da12aec1a3f166310478b53a08}\label{namespacetesting_1_1internal_1_1edit__distance_ad46aa6da12aec1a3f166310478b53a08}} +\index{testing\+::internal\+::edit\+\_\+distance@{testing\+::internal\+::edit\+\_\+distance}!Edit\+Type@{Edit\+Type}} +\index{Edit\+Type@{Edit\+Type}!testing\+::internal\+::edit\+\_\+distance@{testing\+::internal\+::edit\+\_\+distance}} +\subsubsection{\texorpdfstring{Edit\+Type}{EditType}} +{\footnotesize\ttfamily enum \mbox{\hyperlink{namespacetesting_1_1internal_1_1edit__distance_ad46aa6da12aec1a3f166310478b53a08}{testing\+::internal\+::edit\+\_\+distance\+::\+Edit\+Type}}} + +\begin{DoxyEnumFields}{Enumerator} +\raisebox{\heightof{T}}[0pt][0pt]{\index{k\+Match@{k\+Match}!testing\+::internal\+::edit\+\_\+distance@{testing\+::internal\+::edit\+\_\+distance}}\index{testing\+::internal\+::edit\+\_\+distance@{testing\+::internal\+::edit\+\_\+distance}!k\+Match@{k\+Match}}}\mbox{\Hypertarget{namespacetesting_1_1internal_1_1edit__distance_ad46aa6da12aec1a3f166310478b53a08a7bdb9c74613a94f21b7489e0b5640a63}\label{namespacetesting_1_1internal_1_1edit__distance_ad46aa6da12aec1a3f166310478b53a08a7bdb9c74613a94f21b7489e0b5640a63}} +k\+Match&\\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{k\+Add@{k\+Add}!testing\+::internal\+::edit\+\_\+distance@{testing\+::internal\+::edit\+\_\+distance}}\index{testing\+::internal\+::edit\+\_\+distance@{testing\+::internal\+::edit\+\_\+distance}!k\+Add@{k\+Add}}}\mbox{\Hypertarget{namespacetesting_1_1internal_1_1edit__distance_ad46aa6da12aec1a3f166310478b53a08a63400b073f5b311a87d568b5ae27ffe8}\label{namespacetesting_1_1internal_1_1edit__distance_ad46aa6da12aec1a3f166310478b53a08a63400b073f5b311a87d568b5ae27ffe8}} +k\+Add&\\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{k\+Remove@{k\+Remove}!testing\+::internal\+::edit\+\_\+distance@{testing\+::internal\+::edit\+\_\+distance}}\index{testing\+::internal\+::edit\+\_\+distance@{testing\+::internal\+::edit\+\_\+distance}!k\+Remove@{k\+Remove}}}\mbox{\Hypertarget{namespacetesting_1_1internal_1_1edit__distance_ad46aa6da12aec1a3f166310478b53a08a814768ef6cd0264a0a10b1e701a63e78}\label{namespacetesting_1_1internal_1_1edit__distance_ad46aa6da12aec1a3f166310478b53a08a814768ef6cd0264a0a10b1e701a63e78}} +k\+Remove&\\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{k\+Replace@{k\+Replace}!testing\+::internal\+::edit\+\_\+distance@{testing\+::internal\+::edit\+\_\+distance}}\index{testing\+::internal\+::edit\+\_\+distance@{testing\+::internal\+::edit\+\_\+distance}!k\+Replace@{k\+Replace}}}\mbox{\Hypertarget{namespacetesting_1_1internal_1_1edit__distance_ad46aa6da12aec1a3f166310478b53a08afdbf30ecf9f32f60c646a34a358615f2}\label{namespacetesting_1_1internal_1_1edit__distance_ad46aa6da12aec1a3f166310478b53a08afdbf30ecf9f32f60c646a34a358615f2}} +k\+Replace&\\ +\hline + +\end{DoxyEnumFields} + + +Definition at line 6605 of file gtest.\+h. + + + +\subsection{Function Documentation} +\mbox{\Hypertarget{namespacetesting_1_1internal_1_1edit__distance_ad28f23b77f716200bc6644bfc7413a63}\label{namespacetesting_1_1internal_1_1edit__distance_ad28f23b77f716200bc6644bfc7413a63}} +\index{testing\+::internal\+::edit\+\_\+distance@{testing\+::internal\+::edit\+\_\+distance}!Calculate\+Optimal\+Edits@{Calculate\+Optimal\+Edits}} +\index{Calculate\+Optimal\+Edits@{Calculate\+Optimal\+Edits}!testing\+::internal\+::edit\+\_\+distance@{testing\+::internal\+::edit\+\_\+distance}} +\subsubsection{\texorpdfstring{Calculate\+Optimal\+Edits()}{CalculateOptimalEdits()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} std\+::vector$<$\mbox{\hyperlink{namespacetesting_1_1internal_1_1edit__distance_ad46aa6da12aec1a3f166310478b53a08}{Edit\+Type}}$>$ testing\+::internal\+::edit\+\_\+distance\+::\+Calculate\+Optimal\+Edits (\begin{DoxyParamCaption}\item[{const std\+::vector$<$ size\+\_\+t $>$ \&}]{left, }\item[{const std\+::vector$<$ size\+\_\+t $>$ \&}]{right }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_1_1internal_1_1edit__distance_ad2258c5c811f8f262335f58641b33544}\label{namespacetesting_1_1internal_1_1edit__distance_ad2258c5c811f8f262335f58641b33544}} +\index{testing\+::internal\+::edit\+\_\+distance@{testing\+::internal\+::edit\+\_\+distance}!Calculate\+Optimal\+Edits@{Calculate\+Optimal\+Edits}} +\index{Calculate\+Optimal\+Edits@{Calculate\+Optimal\+Edits}!testing\+::internal\+::edit\+\_\+distance@{testing\+::internal\+::edit\+\_\+distance}} +\subsubsection{\texorpdfstring{Calculate\+Optimal\+Edits()}{CalculateOptimalEdits()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} std\+::vector$<$\mbox{\hyperlink{namespacetesting_1_1internal_1_1edit__distance_ad46aa6da12aec1a3f166310478b53a08}{Edit\+Type}}$>$ testing\+::internal\+::edit\+\_\+distance\+::\+Calculate\+Optimal\+Edits (\begin{DoxyParamCaption}\item[{const std\+::vector$<$ std\+::string $>$ \&}]{left, }\item[{const std\+::vector$<$ std\+::string $>$ \&}]{right }\end{DoxyParamCaption})} + +\mbox{\Hypertarget{namespacetesting_1_1internal_1_1edit__distance_a48cffebc6d3169ad1df7849b5f7fb5ff}\label{namespacetesting_1_1internal_1_1edit__distance_a48cffebc6d3169ad1df7849b5f7fb5ff}} +\index{testing\+::internal\+::edit\+\_\+distance@{testing\+::internal\+::edit\+\_\+distance}!Create\+Unified\+Diff@{Create\+Unified\+Diff}} +\index{Create\+Unified\+Diff@{Create\+Unified\+Diff}!testing\+::internal\+::edit\+\_\+distance@{testing\+::internal\+::edit\+\_\+distance}} +\subsubsection{\texorpdfstring{Create\+Unified\+Diff()}{CreateUnifiedDiff()}} +{\footnotesize\ttfamily \mbox{\hyperlink{gtest_8h_aa73be6f0ba4a7456180a94904ce17790}{G\+T\+E\+S\+T\+\_\+\+A\+P\+I\+\_\+}} std\+::string testing\+::internal\+::edit\+\_\+distance\+::\+Create\+Unified\+Diff (\begin{DoxyParamCaption}\item[{const std\+::vector$<$ std\+::string $>$ \&}]{left, }\item[{const std\+::vector$<$ std\+::string $>$ \&}]{right, }\item[{size\+\_\+t}]{context = {\ttfamily 2} }\end{DoxyParamCaption})} + diff --git a/doc/latex/namespacetesting_1_1internal_1_1posix.tex b/doc/latex/namespacetesting_1_1internal_1_1posix.tex new file mode 100644 index 0000000..f1d5fc4 --- /dev/null +++ b/doc/latex/namespacetesting_1_1internal_1_1posix.tex @@ -0,0 +1,254 @@ +\hypertarget{namespacetesting_1_1internal_1_1posix}{}\section{testing\+:\+:internal\+:\+:posix Namespace Reference} +\label{namespacetesting_1_1internal_1_1posix}\index{testing\+::internal\+::posix@{testing\+::internal\+::posix}} +\subsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +typedef struct stat \mbox{\hyperlink{namespacetesting_1_1internal_1_1posix_a8eb9f08d3af29941c2d2a964cfff3ecb}{Stat\+Struct}} +\end{DoxyCompactItemize} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +int \mbox{\hyperlink{namespacetesting_1_1internal_1_1posix_a3117b067e1f942a2031e666953120ccc}{File\+No}} (F\+I\+LE $\ast$file) +\item +int \mbox{\hyperlink{namespacetesting_1_1internal_1_1posix_a16ebe936b3a8ea462a94191635aedc27}{Is\+A\+T\+TY}} (int fd) +\item +int \mbox{\hyperlink{namespacetesting_1_1internal_1_1posix_a2b87b7ff647a128614daf50667eb9304}{Stat}} (const char $\ast$path, \mbox{\hyperlink{namespacetesting_1_1internal_1_1posix_a8eb9f08d3af29941c2d2a964cfff3ecb}{Stat\+Struct}} $\ast$buf) +\item +int \mbox{\hyperlink{namespacetesting_1_1internal_1_1posix_a1ef2385a7f8e4c706054da35967e76bd}{Str\+Case\+Cmp}} (const char $\ast$s1, const char $\ast$s2) +\item +char $\ast$ \mbox{\hyperlink{namespacetesting_1_1internal_1_1posix_a8e352884793a65ae8be144676f1a9136}{Str\+Dup}} (const char $\ast$src) +\item +int \mbox{\hyperlink{namespacetesting_1_1internal_1_1posix_acbad5d4ea5b73fd1765f5f760642932a}{Rm\+Dir}} (const char $\ast$dir) +\item +bool \mbox{\hyperlink{namespacetesting_1_1internal_1_1posix_af0d04ed5baeed28353fa38742748a421}{Is\+Dir}} (const \mbox{\hyperlink{namespacetesting_1_1internal_1_1posix_a8eb9f08d3af29941c2d2a964cfff3ecb}{Stat\+Struct}} \&st) +\item +const char $\ast$ \mbox{\hyperlink{namespacetesting_1_1internal_1_1posix_a36fca815713332e5c6dc92c98b6b2574}{Str\+N\+Cpy}} (char $\ast$dest, const char $\ast$src, size\+\_\+t n) +\item +int \mbox{\hyperlink{namespacetesting_1_1internal_1_1posix_a1ddc8a4fc6bb21da372307485591a212}{Ch\+Dir}} (const char $\ast$dir) +\item +F\+I\+LE $\ast$ \mbox{\hyperlink{namespacetesting_1_1internal_1_1posix_a4042201dcc4932641d484e7ddf94de7d}{F\+Open}} (const char $\ast$path, const char $\ast$mode) +\item +F\+I\+LE $\ast$ \mbox{\hyperlink{namespacetesting_1_1internal_1_1posix_a9ef6d089cdae03f9d9e0e6d379c40703}{F\+Reopen}} (const char $\ast$path, const char $\ast$mode, F\+I\+LE $\ast$stream) +\item +F\+I\+LE $\ast$ \mbox{\hyperlink{namespacetesting_1_1internal_1_1posix_af7c268eba32d5a718b36b6b3801302e0}{F\+D\+Open}} (int fd, const char $\ast$mode) +\item +int \mbox{\hyperlink{namespacetesting_1_1internal_1_1posix_af4beeaaa8d62916d5e3b644a1ddfbd6b}{F\+Close}} (F\+I\+LE $\ast$fp) +\item +int \mbox{\hyperlink{namespacetesting_1_1internal_1_1posix_a3c6ab13e581a56f1b02f3eb7536c97fd}{Read}} (int fd, void $\ast$buf, unsigned int count) +\item +int \mbox{\hyperlink{namespacetesting_1_1internal_1_1posix_af4acf9f78d55f815a18b43786511abef}{Write}} (int fd, const void $\ast$buf, unsigned int count) +\item +int \mbox{\hyperlink{namespacetesting_1_1internal_1_1posix_a15e5b8f2a535ef1b2529b85b861e4846}{Close}} (int fd) +\item +const char $\ast$ \mbox{\hyperlink{namespacetesting_1_1internal_1_1posix_a4b77b14af6f4d18f83d303b98e9349c4}{Str\+Error}} (int errnum) +\item +const char $\ast$ \mbox{\hyperlink{namespacetesting_1_1internal_1_1posix_a1d5e3da5a27eed25986859fa83cafe95}{Get\+Env}} (const char $\ast$name) +\item +void \mbox{\hyperlink{namespacetesting_1_1internal_1_1posix_a69b8278c59359dd6a6f941b4643db9fb}{Abort}} () +\end{DoxyCompactItemize} + + +\subsection{Typedef Documentation} +\mbox{\Hypertarget{namespacetesting_1_1internal_1_1posix_a8eb9f08d3af29941c2d2a964cfff3ecb}\label{namespacetesting_1_1internal_1_1posix_a8eb9f08d3af29941c2d2a964cfff3ecb}} +\index{testing\+::internal\+::posix@{testing\+::internal\+::posix}!Stat\+Struct@{Stat\+Struct}} +\index{Stat\+Struct@{Stat\+Struct}!testing\+::internal\+::posix@{testing\+::internal\+::posix}} +\subsubsection{\texorpdfstring{Stat\+Struct}{StatStruct}} +{\footnotesize\ttfamily typedef struct stat \mbox{\hyperlink{namespacetesting_1_1internal_1_1posix_a8eb9f08d3af29941c2d2a964cfff3ecb}{testing\+::internal\+::posix\+::\+Stat\+Struct}}} + + + +Definition at line 2320 of file gtest.\+h. + + + +\subsection{Function Documentation} +\mbox{\Hypertarget{namespacetesting_1_1internal_1_1posix_a69b8278c59359dd6a6f941b4643db9fb}\label{namespacetesting_1_1internal_1_1posix_a69b8278c59359dd6a6f941b4643db9fb}} +\index{testing\+::internal\+::posix@{testing\+::internal\+::posix}!Abort@{Abort}} +\index{Abort@{Abort}!testing\+::internal\+::posix@{testing\+::internal\+::posix}} +\subsubsection{\texorpdfstring{Abort()}{Abort()}} +{\footnotesize\ttfamily void testing\+::internal\+::posix\+::\+Abort (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 2392 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_1_1posix_a1ddc8a4fc6bb21da372307485591a212}\label{namespacetesting_1_1internal_1_1posix_a1ddc8a4fc6bb21da372307485591a212}} +\index{testing\+::internal\+::posix@{testing\+::internal\+::posix}!Ch\+Dir@{Ch\+Dir}} +\index{Ch\+Dir@{Ch\+Dir}!testing\+::internal\+::posix@{testing\+::internal\+::posix}} +\subsubsection{\texorpdfstring{Ch\+Dir()}{ChDir()}} +{\footnotesize\ttfamily int testing\+::internal\+::posix\+::\+Ch\+Dir (\begin{DoxyParamCaption}\item[{const char $\ast$}]{dir }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 2347 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_1_1posix_a15e5b8f2a535ef1b2529b85b861e4846}\label{namespacetesting_1_1internal_1_1posix_a15e5b8f2a535ef1b2529b85b861e4846}} +\index{testing\+::internal\+::posix@{testing\+::internal\+::posix}!Close@{Close}} +\index{Close@{Close}!testing\+::internal\+::posix@{testing\+::internal\+::posix}} +\subsubsection{\texorpdfstring{Close()}{Close()}} +{\footnotesize\ttfamily int testing\+::internal\+::posix\+::\+Close (\begin{DoxyParamCaption}\item[{int}]{fd }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 2366 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_1_1posix_af4beeaaa8d62916d5e3b644a1ddfbd6b}\label{namespacetesting_1_1internal_1_1posix_af4beeaaa8d62916d5e3b644a1ddfbd6b}} +\index{testing\+::internal\+::posix@{testing\+::internal\+::posix}!F\+Close@{F\+Close}} +\index{F\+Close@{F\+Close}!testing\+::internal\+::posix@{testing\+::internal\+::posix}} +\subsubsection{\texorpdfstring{F\+Close()}{FClose()}} +{\footnotesize\ttfamily int testing\+::internal\+::posix\+::\+F\+Close (\begin{DoxyParamCaption}\item[{F\+I\+LE $\ast$}]{fp }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 2358 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_1_1posix_af7c268eba32d5a718b36b6b3801302e0}\label{namespacetesting_1_1internal_1_1posix_af7c268eba32d5a718b36b6b3801302e0}} +\index{testing\+::internal\+::posix@{testing\+::internal\+::posix}!F\+D\+Open@{F\+D\+Open}} +\index{F\+D\+Open@{F\+D\+Open}!testing\+::internal\+::posix@{testing\+::internal\+::posix}} +\subsubsection{\texorpdfstring{F\+D\+Open()}{FDOpen()}} +{\footnotesize\ttfamily F\+I\+LE$\ast$ testing\+::internal\+::posix\+::\+F\+D\+Open (\begin{DoxyParamCaption}\item[{int}]{fd, }\item[{const char $\ast$}]{mode }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 2356 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_1_1posix_a3117b067e1f942a2031e666953120ccc}\label{namespacetesting_1_1internal_1_1posix_a3117b067e1f942a2031e666953120ccc}} +\index{testing\+::internal\+::posix@{testing\+::internal\+::posix}!File\+No@{File\+No}} +\index{File\+No@{File\+No}!testing\+::internal\+::posix@{testing\+::internal\+::posix}} +\subsubsection{\texorpdfstring{File\+No()}{FileNo()}} +{\footnotesize\ttfamily int testing\+::internal\+::posix\+::\+File\+No (\begin{DoxyParamCaption}\item[{F\+I\+LE $\ast$}]{file }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 2322 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_1_1posix_a4042201dcc4932641d484e7ddf94de7d}\label{namespacetesting_1_1internal_1_1posix_a4042201dcc4932641d484e7ddf94de7d}} +\index{testing\+::internal\+::posix@{testing\+::internal\+::posix}!F\+Open@{F\+Open}} +\index{F\+Open@{F\+Open}!testing\+::internal\+::posix@{testing\+::internal\+::posix}} +\subsubsection{\texorpdfstring{F\+Open()}{FOpen()}} +{\footnotesize\ttfamily F\+I\+LE$\ast$ testing\+::internal\+::posix\+::\+F\+Open (\begin{DoxyParamCaption}\item[{const char $\ast$}]{path, }\item[{const char $\ast$}]{mode }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 2349 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_1_1posix_a9ef6d089cdae03f9d9e0e6d379c40703}\label{namespacetesting_1_1internal_1_1posix_a9ef6d089cdae03f9d9e0e6d379c40703}} +\index{testing\+::internal\+::posix@{testing\+::internal\+::posix}!F\+Reopen@{F\+Reopen}} +\index{F\+Reopen@{F\+Reopen}!testing\+::internal\+::posix@{testing\+::internal\+::posix}} +\subsubsection{\texorpdfstring{F\+Reopen()}{FReopen()}} +{\footnotesize\ttfamily F\+I\+LE$\ast$ testing\+::internal\+::posix\+::\+F\+Reopen (\begin{DoxyParamCaption}\item[{const char $\ast$}]{path, }\item[{const char $\ast$}]{mode, }\item[{F\+I\+LE $\ast$}]{stream }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 2353 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_1_1posix_a1d5e3da5a27eed25986859fa83cafe95}\label{namespacetesting_1_1internal_1_1posix_a1d5e3da5a27eed25986859fa83cafe95}} +\index{testing\+::internal\+::posix@{testing\+::internal\+::posix}!Get\+Env@{Get\+Env}} +\index{Get\+Env@{Get\+Env}!testing\+::internal\+::posix@{testing\+::internal\+::posix}} +\subsubsection{\texorpdfstring{Get\+Env()}{GetEnv()}} +{\footnotesize\ttfamily const char$\ast$ testing\+::internal\+::posix\+::\+Get\+Env (\begin{DoxyParamCaption}\item[{const char $\ast$}]{name }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 2369 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_1_1posix_a16ebe936b3a8ea462a94191635aedc27}\label{namespacetesting_1_1internal_1_1posix_a16ebe936b3a8ea462a94191635aedc27}} +\index{testing\+::internal\+::posix@{testing\+::internal\+::posix}!Is\+A\+T\+TY@{Is\+A\+T\+TY}} +\index{Is\+A\+T\+TY@{Is\+A\+T\+TY}!testing\+::internal\+::posix@{testing\+::internal\+::posix}} +\subsubsection{\texorpdfstring{Is\+A\+T\+T\+Y()}{IsATTY()}} +{\footnotesize\ttfamily int testing\+::internal\+::posix\+::\+Is\+A\+T\+TY (\begin{DoxyParamCaption}\item[{int}]{fd }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 2323 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_1_1posix_af0d04ed5baeed28353fa38742748a421}\label{namespacetesting_1_1internal_1_1posix_af0d04ed5baeed28353fa38742748a421}} +\index{testing\+::internal\+::posix@{testing\+::internal\+::posix}!Is\+Dir@{Is\+Dir}} +\index{Is\+Dir@{Is\+Dir}!testing\+::internal\+::posix@{testing\+::internal\+::posix}} +\subsubsection{\texorpdfstring{Is\+Dir()}{IsDir()}} +{\footnotesize\ttfamily bool testing\+::internal\+::posix\+::\+Is\+Dir (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{namespacetesting_1_1internal_1_1posix_a8eb9f08d3af29941c2d2a964cfff3ecb}{Stat\+Struct}} \&}]{st }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 2330 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_1_1posix_a3c6ab13e581a56f1b02f3eb7536c97fd}\label{namespacetesting_1_1internal_1_1posix_a3c6ab13e581a56f1b02f3eb7536c97fd}} +\index{testing\+::internal\+::posix@{testing\+::internal\+::posix}!Read@{Read}} +\index{Read@{Read}!testing\+::internal\+::posix@{testing\+::internal\+::posix}} +\subsubsection{\texorpdfstring{Read()}{Read()}} +{\footnotesize\ttfamily int testing\+::internal\+::posix\+::\+Read (\begin{DoxyParamCaption}\item[{int}]{fd, }\item[{void $\ast$}]{buf, }\item[{unsigned int}]{count }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 2360 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_1_1posix_acbad5d4ea5b73fd1765f5f760642932a}\label{namespacetesting_1_1internal_1_1posix_acbad5d4ea5b73fd1765f5f760642932a}} +\index{testing\+::internal\+::posix@{testing\+::internal\+::posix}!Rm\+Dir@{Rm\+Dir}} +\index{Rm\+Dir@{Rm\+Dir}!testing\+::internal\+::posix@{testing\+::internal\+::posix}} +\subsubsection{\texorpdfstring{Rm\+Dir()}{RmDir()}} +{\footnotesize\ttfamily int testing\+::internal\+::posix\+::\+Rm\+Dir (\begin{DoxyParamCaption}\item[{const char $\ast$}]{dir }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 2329 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_1_1posix_a2b87b7ff647a128614daf50667eb9304}\label{namespacetesting_1_1internal_1_1posix_a2b87b7ff647a128614daf50667eb9304}} +\index{testing\+::internal\+::posix@{testing\+::internal\+::posix}!Stat@{Stat}} +\index{Stat@{Stat}!testing\+::internal\+::posix@{testing\+::internal\+::posix}} +\subsubsection{\texorpdfstring{Stat()}{Stat()}} +{\footnotesize\ttfamily int testing\+::internal\+::posix\+::\+Stat (\begin{DoxyParamCaption}\item[{const char $\ast$}]{path, }\item[{\mbox{\hyperlink{namespacetesting_1_1internal_1_1posix_a8eb9f08d3af29941c2d2a964cfff3ecb}{Stat\+Struct}} $\ast$}]{buf }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 2324 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_1_1posix_a1ef2385a7f8e4c706054da35967e76bd}\label{namespacetesting_1_1internal_1_1posix_a1ef2385a7f8e4c706054da35967e76bd}} +\index{testing\+::internal\+::posix@{testing\+::internal\+::posix}!Str\+Case\+Cmp@{Str\+Case\+Cmp}} +\index{Str\+Case\+Cmp@{Str\+Case\+Cmp}!testing\+::internal\+::posix@{testing\+::internal\+::posix}} +\subsubsection{\texorpdfstring{Str\+Case\+Cmp()}{StrCaseCmp()}} +{\footnotesize\ttfamily int testing\+::internal\+::posix\+::\+Str\+Case\+Cmp (\begin{DoxyParamCaption}\item[{const char $\ast$}]{s1, }\item[{const char $\ast$}]{s2 }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 2325 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_1_1posix_a8e352884793a65ae8be144676f1a9136}\label{namespacetesting_1_1internal_1_1posix_a8e352884793a65ae8be144676f1a9136}} +\index{testing\+::internal\+::posix@{testing\+::internal\+::posix}!Str\+Dup@{Str\+Dup}} +\index{Str\+Dup@{Str\+Dup}!testing\+::internal\+::posix@{testing\+::internal\+::posix}} +\subsubsection{\texorpdfstring{Str\+Dup()}{StrDup()}} +{\footnotesize\ttfamily char$\ast$ testing\+::internal\+::posix\+::\+Str\+Dup (\begin{DoxyParamCaption}\item[{const char $\ast$}]{src }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 2328 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_1_1posix_a4b77b14af6f4d18f83d303b98e9349c4}\label{namespacetesting_1_1internal_1_1posix_a4b77b14af6f4d18f83d303b98e9349c4}} +\index{testing\+::internal\+::posix@{testing\+::internal\+::posix}!Str\+Error@{Str\+Error}} +\index{Str\+Error@{Str\+Error}!testing\+::internal\+::posix@{testing\+::internal\+::posix}} +\subsubsection{\texorpdfstring{Str\+Error()}{StrError()}} +{\footnotesize\ttfamily const char$\ast$ testing\+::internal\+::posix\+::\+Str\+Error (\begin{DoxyParamCaption}\item[{int}]{errnum }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 2367 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_1_1posix_a36fca815713332e5c6dc92c98b6b2574}\label{namespacetesting_1_1internal_1_1posix_a36fca815713332e5c6dc92c98b6b2574}} +\index{testing\+::internal\+::posix@{testing\+::internal\+::posix}!Str\+N\+Cpy@{Str\+N\+Cpy}} +\index{Str\+N\+Cpy@{Str\+N\+Cpy}!testing\+::internal\+::posix@{testing\+::internal\+::posix}} +\subsubsection{\texorpdfstring{Str\+N\+Cpy()}{StrNCpy()}} +{\footnotesize\ttfamily const char$\ast$ testing\+::internal\+::posix\+::\+Str\+N\+Cpy (\begin{DoxyParamCaption}\item[{char $\ast$}]{dest, }\item[{const char $\ast$}]{src, }\item[{size\+\_\+t}]{n }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 2338 of file gtest.\+h. + +\mbox{\Hypertarget{namespacetesting_1_1internal_1_1posix_af4acf9f78d55f815a18b43786511abef}\label{namespacetesting_1_1internal_1_1posix_af4acf9f78d55f815a18b43786511abef}} +\index{testing\+::internal\+::posix@{testing\+::internal\+::posix}!Write@{Write}} +\index{Write@{Write}!testing\+::internal\+::posix@{testing\+::internal\+::posix}} +\subsubsection{\texorpdfstring{Write()}{Write()}} +{\footnotesize\ttfamily int testing\+::internal\+::posix\+::\+Write (\begin{DoxyParamCaption}\item[{int}]{fd, }\item[{const void $\ast$}]{buf, }\item[{unsigned int}]{count }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 2363 of file gtest.\+h. + diff --git a/doc/latex/namespacetesting__internal.tex b/doc/latex/namespacetesting__internal.tex new file mode 100644 index 0000000..3587896 --- /dev/null +++ b/doc/latex/namespacetesting__internal.tex @@ -0,0 +1,21 @@ +\hypertarget{namespacetesting__internal}{}\section{testing\+\_\+internal Namespace Reference} +\label{namespacetesting__internal}\index{testing\+\_\+internal@{testing\+\_\+internal}} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename T $>$ }\\void \mbox{\hyperlink{namespacetesting__internal_a3f49d3d0c996242f9d383c850097a656}{Default\+Print\+Non\+Container\+To}} (const T \&value, \+::std\+::ostream $\ast$os) +\end{DoxyCompactItemize} + + +\subsection{Function Documentation} +\mbox{\Hypertarget{namespacetesting__internal_a3f49d3d0c996242f9d383c850097a656}\label{namespacetesting__internal_a3f49d3d0c996242f9d383c850097a656}} +\index{testing\+\_\+internal@{testing\+\_\+internal}!Default\+Print\+Non\+Container\+To@{Default\+Print\+Non\+Container\+To}} +\index{Default\+Print\+Non\+Container\+To@{Default\+Print\+Non\+Container\+To}!testing\+\_\+internal@{testing\+\_\+internal}} +\subsubsection{\texorpdfstring{Default\+Print\+Non\+Container\+To()}{DefaultPrintNonContainerTo()}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +void testing\+\_\+internal\+::\+Default\+Print\+Non\+Container\+To (\begin{DoxyParamCaption}\item[{const T \&}]{value, }\item[{\+::std\+::ostream $\ast$}]{os }\end{DoxyParamCaption})} + + + +Definition at line 8289 of file gtest.\+h. + diff --git a/doc/latex/namespaceutl.tex b/doc/latex/namespaceutl.tex new file mode 100644 index 0000000..11b8bed --- /dev/null +++ b/doc/latex/namespaceutl.tex @@ -0,0 +1,1726 @@ +\hypertarget{namespaceutl}{}\section{utl Namespace Reference} +\label{namespaceutl}\index{utl@{utl}} + + +S\+TL\textquotesingle{}s core language concepts. + + +\subsection*{Namespaces} +\begin{DoxyCompactItemize} +\item + \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det}{\+\_\+1wire\+\_\+i\+\_\+det}} +\item + \mbox{\hyperlink{namespaceutl_1_1common__impl}{common\+\_\+impl}} +\item + \mbox{\hyperlink{namespaceutl_1_1detail}{detail}} +\item + \mbox{\hyperlink{namespaceutl_1_1details}{details}} +\item + \mbox{\hyperlink{namespaceutl_1_1i2c__i__details}{i2c\+\_\+i\+\_\+details}} +\item + \mbox{\hyperlink{namespaceutl_1_1idx__dev__details}{idx\+\_\+dev\+\_\+details}} +\item + \mbox{\hyperlink{namespaceutl_1_1idxdev__it__details}{idxdev\+\_\+it\+\_\+details}} +\item + \mbox{\hyperlink{namespaceutl_1_1in__dev__details}{in\+\_\+dev\+\_\+details}} +\item + \mbox{\hyperlink{namespaceutl_1_1inbuf__dev__details}{inbuf\+\_\+dev\+\_\+details}} +\item + \mbox{\hyperlink{namespaceutl_1_1indev__it__details}{indev\+\_\+it\+\_\+details}} +\item + \mbox{\hyperlink{namespaceutl_1_1meta}{meta}} +\item + \mbox{\hyperlink{namespaceutl_1_1out__dev__details}{out\+\_\+dev\+\_\+details}} +\item + \mbox{\hyperlink{namespaceutl_1_1outdev__it__details}{outdev\+\_\+it\+\_\+details}} +\item + \mbox{\hyperlink{namespaceutl_1_1spi}{spi}} +\begin{DoxyCompactList}\small\item\em Abstract base class for spi bus. \end{DoxyCompactList}\item + \mbox{\hyperlink{namespaceutl_1_1spi__i__details}{spi\+\_\+i\+\_\+details}} +\end{DoxyCompactItemize} +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +class \mbox{\hyperlink{classutl_1_1__1wire__i}{\+\_\+1wire\+\_\+i}} +\begin{DoxyCompactList}\small\item\em Template base class for 1-\/wire communication interface using C\+R\+TP. \end{DoxyCompactList}\item +class \mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4}{\+\_\+1wire\+\_\+i$<$ virtual\+\_\+tag $>$}} +\begin{DoxyCompactList}\small\item\em A virtual base class implementation. \end{DoxyCompactList}\item +class \mbox{\hyperlink{classutl_1_1__1wire__id__t}{\+\_\+1wire\+\_\+id\+\_\+t}} +\item +class \mbox{\hyperlink{classutl_1_1__1wire__uart__i}{\+\_\+1wire\+\_\+uart\+\_\+i}} +\begin{DoxyCompactList}\small\item\em 1-\/wire U\+A\+RT interface template class using C\+R\+TP Using the private virtual interface we provide the interface from \+\_\+1wire\+\_\+i$<$$>$ \end{DoxyCompactList}\item +class \mbox{\hyperlink{classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4}{\+\_\+1wire\+\_\+uart\+\_\+i$<$ virtual\+\_\+tag $>$}} +\begin{DoxyCompactList}\small\item\em A virtual base class interface implementation. Using the private virtual interface we provide the interface from \mbox{\hyperlink{classutl_1_1__1wire__i_3_01virtual__tag_01_4}{\+\_\+1wire\+\_\+i$<$virtual\+\_\+tag$>$}} \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1array}{array}} +\begin{DoxyCompactList}\small\item\em A standard container for storing a fixed size sequence of elements. \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1array__traits}{array\+\_\+traits}} +\begin{DoxyCompactList}\small\item\em array container traits helper \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1array__traits_3_01___tp_00_010_01_4}{array\+\_\+traits$<$ \+\_\+\+Tp, 0 $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1bidirectional__iterator__tag}{bidirectional\+\_\+iterator\+\_\+tag}} +\item +struct \mbox{\hyperlink{structutl_1_1contiguous__iterator__tag}{contiguous\+\_\+iterator\+\_\+tag}} +\item +struct \mbox{\hyperlink{structutl_1_1crtp__tag}{crtp\+\_\+tag}} +\begin{DoxyCompactList}\small\item\em C\+R\+TP support tag type. \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{dev\+\_\+iterator\+\_\+traits}} +\begin{DoxyCompactList}\small\item\em Device iterator collection. \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1forward__iterator__tag}{forward\+\_\+iterator\+\_\+tag}} +\item +class \mbox{\hyperlink{classutl_1_1i2c__bb__i}{i2c\+\_\+bb\+\_\+i}} +\begin{DoxyCompactList}\small\item\em A bit banking implementation of i2c bus inherited from \mbox{\hyperlink{classutl_1_1i2c__i}{i2c\+\_\+i}} base class. \end{DoxyCompactList}\item +class \mbox{\hyperlink{classutl_1_1i2c__bb__i_3_01virtual__tag_01_4}{i2c\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag $>$}} +\begin{DoxyCompactList}\small\item\em A virtual base class interface specialization. Using the private virtual interface we provide the interface from \mbox{\hyperlink{classutl_1_1i2c__i_3_01virtual__tag_01_4}{i2c\+\_\+i$<$virtual\+\_\+tag$>$}} \end{DoxyCompactList}\item +class \mbox{\hyperlink{classutl_1_1i2c__i}{i2c\+\_\+i}} +\begin{DoxyCompactList}\small\item\em Abstract base class for i2c bus. \end{DoxyCompactList}\item +class \mbox{\hyperlink{classutl_1_1i2c__i_3_01virtual__tag_01_4}{i2c\+\_\+i$<$ virtual\+\_\+tag $>$}} +\begin{DoxyCompactList}\small\item\em A virtual base class specialization. \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1id__t}{id\+\_\+t}} +\begin{DoxyCompactList}\small\item\em A standard container for storing I\+Ds as a fixed size sequence of bytes. This type is based on etl\+::array Meets the requirements of\+: \href{tables.html#65}{\tt container}, \href{tables.html#66}{\tt reversible container}, \href{tables.html#67}{\tt sequence}. Sets support random access iterators. \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1id__traits}{id\+\_\+traits}} +\begin{DoxyCompactList}\small\item\em id container traits helper \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1id__traits_3_01___tp_00_010_01_4}{id\+\_\+traits$<$ \+\_\+\+Tp, 0 $>$}} +\item +class \mbox{\hyperlink{classutl_1_1idx__dev}{idx\+\_\+dev}} +\begin{DoxyCompactList}\small\item\em Abstract base class for indexed devices. \end{DoxyCompactList}\item +class \mbox{\hyperlink{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4}{idx\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, idx\+\_\+t, N $>$}} +\begin{DoxyCompactList}\small\item\em A virtual base class specialization. \end{DoxyCompactList}\item +class \mbox{\hyperlink{classutl_1_1in__dev}{in\+\_\+dev}} +\begin{DoxyCompactList}\small\item\em Abstract base class for input devices. \end{DoxyCompactList}\item +class \mbox{\hyperlink{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{in\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\begin{DoxyCompactList}\small\item\em A virtual base class specialization. \end{DoxyCompactList}\item +class \mbox{\hyperlink{classutl_1_1inbuf__dev}{inbuf\+\_\+dev}} +\begin{DoxyCompactList}\small\item\em Abstract base class for input buffered devices. \end{DoxyCompactList}\item +class \mbox{\hyperlink{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{inbuf\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\begin{DoxyCompactList}\small\item\em A virtual base class specialization. \end{DoxyCompactList}\item +class \mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}} +\begin{DoxyCompactList}\small\item\em Input device iterator type. We \char`\"{}future call\char`\"{} interface methods from owner class to provide iterator functionality. \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1input__iterator__tag}{input\+\_\+iterator\+\_\+tag}} +\item +class \mbox{\hyperlink{classutl_1_1iodev__it}{iodev\+\_\+it}} +\begin{DoxyCompactList}\small\item\em Indexed device iterator type. We \char`\"{}future call\char`\"{} interface methods from owner class to provide iterator functionality. \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1is__invocable}{is\+\_\+invocable}} +\begin{DoxyCompactList}\small\item\em std\+::is\+\_\+invocable trait for C++11 \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1is__invocable__r}{is\+\_\+invocable\+\_\+r}} +\begin{DoxyCompactList}\small\item\em std\+::is\+\_\+invocable\+\_\+r trait for C++11 \end{DoxyCompactList}\item +class \mbox{\hyperlink{classutl_1_1istreamdev__it}{istreamdev\+\_\+it}} +\item +class \mbox{\hyperlink{classutl_1_1ostream__dev}{ostream\+\_\+dev}} +\begin{DoxyCompactList}\small\item\em Abstract base classes for output stream devices. \end{DoxyCompactList}\item +class \mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4}{ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$}} +\item +class \mbox{\hyperlink{classutl_1_1ostreamdev__it}{ostreamdev\+\_\+it}} +\item +class \mbox{\hyperlink{classutl_1_1out__dev}{out\+\_\+dev}} +\begin{DoxyCompactList}\small\item\em Abstract base classes for output devices. \end{DoxyCompactList}\item +class \mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\begin{DoxyCompactList}\small\item\em A virtual base class specialization. \end{DoxyCompactList}\item +class \mbox{\hyperlink{classutl_1_1outdev__it}{outdev\+\_\+it}} +\begin{DoxyCompactList}\small\item\em Output device iterator type. We \char`\"{}future call\char`\"{} interface methods from owner class to provide iterator functionality. \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1output__iterator__tag}{output\+\_\+iterator\+\_\+tag}} +\begin{DoxyCompactList}\small\item\em Iterator tags \mbox{[}std.\+iterator.\+tags\mbox{]} Extension\+: \mbox{\hyperlink{structutl_1_1contiguous__iterator__tag}{contiguous\+\_\+iterator\+\_\+tag}} for denoting contiguous iterators. \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1random__access__iterator__tag}{random\+\_\+access\+\_\+iterator\+\_\+tag}} +\item +class \mbox{\hyperlink{classutl_1_1spi__bb__i}{spi\+\_\+bb\+\_\+i}} +\begin{DoxyCompactList}\small\item\em A bit banking implementation of spi bus inherited from \mbox{\hyperlink{classutl_1_1spi__i}{spi\+\_\+i}} base class. \end{DoxyCompactList}\item +class \mbox{\hyperlink{classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4}{spi\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag, C\+P\+O\+L, C\+P\+H\+A, Bit\+Order $>$}} +\begin{DoxyCompactList}\small\item\em A virtual base class interface specialization. Using the private virtual interface we provide the interface from \mbox{\hyperlink{classutl_1_1spi__i_3_01virtual__tag_01_4}{spi\+\_\+i$<$virtual\+\_\+tag$>$}} \end{DoxyCompactList}\item +class \mbox{\hyperlink{classutl_1_1spi__i}{spi\+\_\+i}} +\item +class \mbox{\hyperlink{classutl_1_1spi__i_3_01virtual__tag_01_4}{spi\+\_\+i$<$ virtual\+\_\+tag $>$}} +\begin{DoxyCompactList}\small\item\em A virtual base class implementation. \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1virtual__tag}{virtual\+\_\+tag}} +\begin{DoxyCompactList}\small\item\em virtual support tag type \end{DoxyCompactList}\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename T $>$ }\\using \mbox{\hyperlink{namespaceutl_a7a9d26263662e02fbe3b238da5fd7338}{remove\+\_\+cvref\+\_\+t}} = std\+::remove\+\_\+cv\+\_\+t$<$ std\+::remove\+\_\+reference\+\_\+t$<$ T $>$ $>$ +\item +{\footnotesize template$<$typename T $>$ }\\using \mbox{\hyperlink{namespaceutl_a7d69beba08b81379703fd3b0ca42044d}{cref\+\_\+}} = const std\+::remove\+\_\+reference\+\_\+t$<$ T $>$ \& +\item +{\footnotesize template$<$typename T $>$ }\\using \mbox{\hyperlink{namespaceutl_aa3f95fc48a94b2fae3c2959b7c024998}{\+\_\+ref\+\_\+t}} = std\+::add\+\_\+lvalue\+\_\+reference\+\_\+t$<$ T $>$ +\item +{\footnotesize template$<$typename \+\_\+\+T1 , typename \+\_\+\+T2 , typename \+\_\+\+Ret = \+\_\+\+T1$>$ }\\using \mbox{\hyperlink{namespaceutl_ac5e425d39e8ee62e68664c6166d02d0c}{use\+\_\+if\+\_\+same\+\_\+t}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{meta\+::eval}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_ab3fed26a4c7a8204accb349f0b6600e8}{meta\+::enable\+\_\+if}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1same__}{meta\+::same\+\_\+}}$<$ \+\_\+\+T1, \+\_\+\+T2 $>$\+::value, \+\_\+\+Ret $>$ $>$ +\end{DoxyCompactItemize} +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename... Ts$>$ }\\using \mbox{\hyperlink{namespaceutl_a3970b90f0e0fd9f801cfcb1d955e3d42}{common\+\_\+reference}} = \mbox{\hyperlink{structutl_1_1common__impl_1_1common__reference}{common\+\_\+impl\+::common\+\_\+reference}}$<$ Ts... $>$ +\item +{\footnotesize template$<$typename... Ts$>$ }\\using \mbox{\hyperlink{namespaceutl_a4d76d9e29b830c16ad7dd34e3800a746}{common\+\_\+reference\+\_\+t}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{meta\+::eval}}$<$ \mbox{\hyperlink{namespaceutl_a3970b90f0e0fd9f801cfcb1d955e3d42}{common\+\_\+reference}}$<$ Ts... $>$ $>$ +\end{DoxyCompactItemize} + +\begin{Indent}\textbf{ byte and word types}\par +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} = uint8\+\_\+t +\begin{DoxyCompactList}\small\item\em 8 bits wide \end{DoxyCompactList}\item +using \mbox{\hyperlink{namespaceutl_a1368cb6928f648fe4db1c85c190f0548}{word\+\_\+t}} = uint16\+\_\+t +\begin{DoxyCompactList}\small\item\em 16 bits wide \end{DoxyCompactList}\item +using \mbox{\hyperlink{namespaceutl_abc93b88d0c0f95081ecd3d2194daf0fb}{dword\+\_\+t}} = uint32\+\_\+t +\end{DoxyCompactItemize} +\end{Indent} +\begin{Indent}\textbf{ size and index}\par +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} = std\+::size\+\_\+t +\item +using \mbox{\hyperlink{namespaceutl_a676c0acd539dd04048dcc7b4d698577e}{index\+\_\+t}} = \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} +\begin{DoxyCompactList}\small\item\em index\+\_\+t and size\+\_\+t mend to be interchangeable \end{DoxyCompactList}\item +using \mbox{\hyperlink{namespaceutl_a1b83655ba00b548af9b51f169c6c567a}{ptrdiff\+\_\+t}} = std\+::ptrdiff\+\_\+t +\end{DoxyCompactItemize} +\end{Indent} +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename \+\_\+\+Callable , typename... \+\_\+\+Args$>$ }\\using \mbox{\hyperlink{namespaceutl_a9dd560a1b217a10af34d1ade3e77a76b}{invoke\+\_\+result}} = \mbox{\hyperlink{structutl_1_1detail_1_1invoke__result__}{detail\+::invoke\+\_\+result\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1is__invocable}{is\+\_\+invocable}}$<$ \+\_\+\+Callable, \+\_\+\+Args... $>$\+::value, \+\_\+\+Callable, \+\_\+\+Args... $>$ +\begin{DoxyCompactList}\small\item\em invoke\+\_\+result (for C++14) \end{DoxyCompactList}\item +{\footnotesize template$<$typename \+\_\+\+Callable , typename... \+\_\+\+Args$>$ }\\using \mbox{\hyperlink{namespaceutl_ae40494acc30f2894c74544f3e9142933}{invoke\+\_\+result\+\_\+t}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{meta\+::eval}}$<$ \mbox{\hyperlink{namespaceutl_a9dd560a1b217a10af34d1ade3e77a76b}{invoke\+\_\+result}}$<$ \+\_\+\+Callable, \+\_\+\+Args... $>$ $>$ +\begin{DoxyCompactList}\small\item\em invoke\+\_\+result\+\_\+t (for C++14) \end{DoxyCompactList}\end{DoxyCompactItemize} + +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename \+\_\+\+Tp , size\+\_\+t \+\_\+\+Nm$>$ }\\void \mbox{\hyperlink{namespaceutl_ae0f873b4883af7cc18cb23dd2810f4e6}{swap}} (\mbox{\hyperlink{structutl_1_1array}{array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&lhs, \mbox{\hyperlink{structutl_1_1array}{array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&rhs) noexcept(noexcept(lhs.\+swap(rhs))) +\item +{\footnotesize template$<$size\+\_\+t \+\_\+\+Int, typename \+\_\+\+Tp , size\+\_\+t \+\_\+\+Nm$>$ }\\constexpr \+\_\+\+Tp \& \mbox{\hyperlink{namespaceutl_a29057d2e164fe6dd3f3095f0d69c6546}{get}} (\mbox{\hyperlink{structutl_1_1array}{array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&arr) noexcept +\item +{\footnotesize template$<$size\+\_\+t \+\_\+\+Int, typename \+\_\+\+Tp , size\+\_\+t \+\_\+\+Nm$>$ }\\constexpr \+\_\+\+Tp \&\& \mbox{\hyperlink{namespaceutl_ab0087ff901c30848b7ac6f5ffa31f5cf}{get}} (\mbox{\hyperlink{structutl_1_1array}{array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&\&arr) noexcept +\item +{\footnotesize template$<$size\+\_\+t \+\_\+\+Int, typename \+\_\+\+Tp , size\+\_\+t \+\_\+\+Nm$>$ }\\constexpr const \+\_\+\+Tp \& \mbox{\hyperlink{namespaceutl_aad376ab583a0db920180465f9f35d67b}{get}} (const \mbox{\hyperlink{structutl_1_1array}{array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&arr) noexcept +\item +{\footnotesize template$<$typename \+\_\+\+Callable , typename... \+\_\+\+Args$>$ }\\decltype(auto) \mbox{\hyperlink{namespaceutl_adc675874b5426194d04112f76b356714}{invoke}} (\+\_\+\+Callable \&\&fn, \+\_\+\+Args \&\&... args) +\begin{DoxyCompactList}\small\item\em Invoke a callable object (for C++14) \end{DoxyCompactList}\end{DoxyCompactItemize} +\begin{Indent}\textbf{ Array comparisons.}\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename \+\_\+\+Tp , size\+\_\+t \+\_\+\+Nm$>$ }\\bool \mbox{\hyperlink{namespaceutl_a841f326020eb98fa4b8f764bf35442c0}{operator==}} (const \mbox{\hyperlink{structutl_1_1array}{array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&lhs, const \mbox{\hyperlink{structutl_1_1array}{array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&rhs) +\item +{\footnotesize template$<$typename \+\_\+\+Tp , size\+\_\+t \+\_\+\+Nm$>$ }\\bool \mbox{\hyperlink{namespaceutl_a45cd30dab2ec904b6fd64641d777b35e}{operator!=}} (const \mbox{\hyperlink{structutl_1_1array}{array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&lhs, const \mbox{\hyperlink{structutl_1_1array}{array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&rhs) +\item +{\footnotesize template$<$typename \+\_\+\+Tp , size\+\_\+t \+\_\+\+Nm$>$ }\\bool \mbox{\hyperlink{namespaceutl_a633f700b294b53e4f58183fd4bc6963f}{operator$<$}} (const \mbox{\hyperlink{structutl_1_1array}{array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&lhs, const \mbox{\hyperlink{structutl_1_1array}{array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&rhs) +\item +{\footnotesize template$<$typename \+\_\+\+Tp , size\+\_\+t \+\_\+\+Nm$>$ }\\bool \mbox{\hyperlink{namespaceutl_a1d5c761bf59037aeed9157e4f63bed9e}{operator$>$}} (const \mbox{\hyperlink{structutl_1_1array}{array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&lhs, const \mbox{\hyperlink{structutl_1_1array}{array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&rhs) +\item +{\footnotesize template$<$typename \+\_\+\+Tp , size\+\_\+t \+\_\+\+Nm$>$ }\\bool \mbox{\hyperlink{namespaceutl_a36f9fadffe88aefcc2d37249eaf951c3}{operator$<$=}} (const \mbox{\hyperlink{structutl_1_1array}{array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&lhs, const \mbox{\hyperlink{structutl_1_1array}{array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&rhs) +\item +{\footnotesize template$<$typename \+\_\+\+Tp , size\+\_\+t \+\_\+\+Nm$>$ }\\bool \mbox{\hyperlink{namespaceutl_a942cac675f6dd1313807eccb407ebec6}{operator$>$=}} (const \mbox{\hyperlink{structutl_1_1array}{array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&lhs, const \mbox{\hyperlink{structutl_1_1array}{array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&rhs) +\end{DoxyCompactItemize} +\end{Indent} +\begin{Indent}\textbf{ device ID comparisons.}\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename \+\_\+\+Tp , size\+\_\+t \+\_\+\+Nm$>$ }\\bool \mbox{\hyperlink{namespaceutl_a2e319bae5449ee07261f547a94c31f87}{operator==}} (const \mbox{\hyperlink{structutl_1_1id__t}{id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&lhs, const \mbox{\hyperlink{structutl_1_1id__t}{id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&rhs) +\item +{\footnotesize template$<$typename \+\_\+\+Tp , size\+\_\+t \+\_\+\+Nm$>$ }\\bool \mbox{\hyperlink{namespaceutl_a7f05cda5b7a37dea074df55db31aefb6}{operator!=}} (const \mbox{\hyperlink{structutl_1_1id__t}{id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&lhs, const \mbox{\hyperlink{structutl_1_1id__t}{id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&rhs) +\item +{\footnotesize template$<$typename \+\_\+\+Tp , size\+\_\+t \+\_\+\+Nm$>$ }\\bool \mbox{\hyperlink{namespaceutl_a64bc464138b386821977a0c4ac43fddf}{operator$<$}} (const \mbox{\hyperlink{structutl_1_1id__t}{id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&lhs, const \mbox{\hyperlink{structutl_1_1id__t}{id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&rhs) +\item +{\footnotesize template$<$typename \+\_\+\+Tp , size\+\_\+t \+\_\+\+Nm$>$ }\\bool \mbox{\hyperlink{namespaceutl_aa88fd098a89e4477ff55319be1d44a64}{operator$>$}} (const \mbox{\hyperlink{structutl_1_1id__t}{id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&lhs, const \mbox{\hyperlink{structutl_1_1id__t}{id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&rhs) +\item +{\footnotesize template$<$typename \+\_\+\+Tp , size\+\_\+t \+\_\+\+Nm$>$ }\\bool \mbox{\hyperlink{namespaceutl_aa2c449f74d1214cb7406b1648d2caf6f}{operator$<$=}} (const \mbox{\hyperlink{structutl_1_1id__t}{id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&lhs, const \mbox{\hyperlink{structutl_1_1id__t}{id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&rhs) +\item +{\footnotesize template$<$typename \+\_\+\+Tp , size\+\_\+t \+\_\+\+Nm$>$ }\\bool \mbox{\hyperlink{namespaceutl_a3f53717133a73715f387ebac4b6f22b3}{operator$>$=}} (const \mbox{\hyperlink{structutl_1_1id__t}{id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&lhs, const \mbox{\hyperlink{structutl_1_1id__t}{id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&rhs) +\end{DoxyCompactItemize} +\end{Indent} +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename \+\_\+\+C1 , typename \+\_\+\+D1 , typename \+\_\+\+C2 , typename \+\_\+\+D2 $>$ }\\bool \mbox{\hyperlink{namespaceutl_a5ba78d196f9abb63a1d2fff13cabe636}{operator==}} (const \mbox{\hyperlink{classutl_1_1istreamdev__it}{istreamdev\+\_\+it}}$<$ \+\_\+\+C1, \+\_\+\+D1 $>$ \&lhs, const \mbox{\hyperlink{classutl_1_1istreamdev__it}{istreamdev\+\_\+it}}$<$ \+\_\+\+C2, \+\_\+\+D2 $>$ \&rhs) noexcept +\begin{DoxyCompactList}\small\item\em Equality comparison template so that comparison between cv-\/qualified and non-\/cv-\/qualified iterators be valid. \end{DoxyCompactList}\item +{\footnotesize template$<$typename \+\_\+\+C1 , typename \+\_\+\+D1 , typename \+\_\+\+C2 , typename \+\_\+\+D2 $>$ }\\bool \mbox{\hyperlink{namespaceutl_aa7a25ea4d2598ec5db5b37bfaaf55ec3}{operator!=}} (const \mbox{\hyperlink{classutl_1_1istreamdev__it}{istreamdev\+\_\+it}}$<$ \+\_\+\+C1, \+\_\+\+D1 $>$ \&lhs, const \mbox{\hyperlink{classutl_1_1istreamdev__it}{istreamdev\+\_\+it}}$<$ \+\_\+\+C2, \+\_\+\+D2 $>$ \&rhs) noexcept +\item +{\footnotesize template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, index\+\_\+t \+\_\+end1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, index\+\_\+t \+\_\+end2$>$ }\\bool \mbox{\hyperlink{namespaceutl_a6726b451c897c4581e8781a819c025ba}{operator==}} (const \mbox{\hyperlink{classutl_1_1outdev__it}{outdev\+\_\+it}}$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+end1 $>$ \&lhs, const \mbox{\hyperlink{classutl_1_1outdev__it}{outdev\+\_\+it}}$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+end2 $>$ \&rhs) noexcept +\begin{DoxyCompactList}\small\item\em Equality comparison template so that comparison between cv-\/qualified and non-\/cv-\/qualified iterators be valid. \end{DoxyCompactList}\item +{\footnotesize template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, index\+\_\+t \+\_\+end1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, index\+\_\+t \+\_\+end2$>$ }\\bool \mbox{\hyperlink{namespaceutl_ada8975062732a20074909f8a3f609538}{operator!=}} (const \mbox{\hyperlink{classutl_1_1outdev__it}{outdev\+\_\+it}}$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+end1 $>$ \&lhs, const \mbox{\hyperlink{classutl_1_1outdev__it}{outdev\+\_\+it}}$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+end2 $>$ \&rhs) noexcept +\begin{DoxyCompactList}\small\item\em Inequality comparison template so that comparison between cv-\/qualified and non-\/cv-\/qualified iterators be valid. \end{DoxyCompactList}\end{DoxyCompactItemize} + +\begin{Indent}\textbf{ indev\+\_\+it Equality\+Comparable \&\& Less\+Than\+Comparable requirements}\par +{\em comparison template so that comparison between cv-\/qualified and non-\/cv-\/qualified iterators be valid }\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ }\\bool \mbox{\hyperlink{namespaceutl_aa30fa8ed97138ea75003069144f78e97}{operator==}} (const \mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}}$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&x, const \mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}}$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+size2 $>$ \&y) noexcept +\item +{\footnotesize template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ }\\bool \mbox{\hyperlink{namespaceutl_aac9f2116bf5b1463391b2a5ec437ef1d}{operator$<$}} (const \mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}}$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&x, const \mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}}$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+size2 $>$ \&y) noexcept +\begin{DoxyCompactList}\small\item\em Less than. \end{DoxyCompactList}\item +{\footnotesize template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ }\\bool \mbox{\hyperlink{namespaceutl_a15d049c37bf09ffb29f2a0c0070bf89c}{operator!=}} (const \mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}}$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&x, const \mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}}$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+size2 $>$ \&y) noexcept +\item +{\footnotesize template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ }\\bool \mbox{\hyperlink{namespaceutl_a93043b2e245bb724c9c2e89577222532}{operator$<$=}} (const \mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}}$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&x, const \mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}}$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+size2 $>$ \&y) noexcept +\item +{\footnotesize template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ }\\bool \mbox{\hyperlink{namespaceutl_a254af18987f59f185ceeaac1aaf3c1e1}{operator$>$}} (const \mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}}$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&x, const \mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}}$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+size2 $>$ \&y) noexcept +\item +{\footnotesize template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ }\\bool \mbox{\hyperlink{namespaceutl_abdada8bc0cbd311c4dea3dde078f5483}{operator$>$=}} (const \mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}}$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&x, const \mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}}$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+size2 $>$ \&y) noexcept +\item +{\footnotesize template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ }\\bool \mbox{\hyperlink{namespaceutl_a7ad3384389159ce575279712fb92e3c6}{operator==}} (const \mbox{\hyperlink{classutl_1_1iodev__it}{iodev\+\_\+it}}$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&x, const \mbox{\hyperlink{classutl_1_1iodev__it}{iodev\+\_\+it}}$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+size2 $>$ \&y) noexcept +\item +{\footnotesize template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ }\\bool \mbox{\hyperlink{namespaceutl_aacd0760a2943441abcc86ef9d825c8b0}{operator$<$}} (const \mbox{\hyperlink{classutl_1_1iodev__it}{iodev\+\_\+it}}$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&x, const \mbox{\hyperlink{classutl_1_1iodev__it}{iodev\+\_\+it}}$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+size2 $>$ \&y) noexcept +\begin{DoxyCompactList}\small\item\em Less than. \end{DoxyCompactList}\item +{\footnotesize template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ }\\bool \mbox{\hyperlink{namespaceutl_a388830b63c30f5ee32a3e2a761c703c8}{operator!=}} (const \mbox{\hyperlink{classutl_1_1iodev__it}{iodev\+\_\+it}}$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&x, const \mbox{\hyperlink{classutl_1_1iodev__it}{iodev\+\_\+it}}$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+size2 $>$ \&y) noexcept +\item +{\footnotesize template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ }\\bool \mbox{\hyperlink{namespaceutl_aa369d59a59c21d50b371b5db6195b043}{operator$<$=}} (const \mbox{\hyperlink{classutl_1_1iodev__it}{iodev\+\_\+it}}$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&x, const \mbox{\hyperlink{classutl_1_1iodev__it}{iodev\+\_\+it}}$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+size2 $>$ \&y) noexcept +\item +{\footnotesize template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ }\\bool \mbox{\hyperlink{namespaceutl_a623dee5dafd7fe274dc205c3e20c96af}{operator$>$}} (const \mbox{\hyperlink{classutl_1_1iodev__it}{iodev\+\_\+it}}$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&x, const \mbox{\hyperlink{classutl_1_1iodev__it}{iodev\+\_\+it}}$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+size2 $>$ \&y) noexcept +\item +{\footnotesize template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ }\\bool \mbox{\hyperlink{namespaceutl_a1988125a6394416aaf6ae85eaafa3ec4}{operator$>$=}} (const \mbox{\hyperlink{classutl_1_1iodev__it}{iodev\+\_\+it}}$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&x, const \mbox{\hyperlink{classutl_1_1iodev__it}{iodev\+\_\+it}}$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+size2 $>$ \&y) noexcept +\end{DoxyCompactItemize} +\end{Indent} +\begin{Indent}\textbf{ iterator arithmetic}\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ }\\auto \mbox{\hyperlink{namespaceutl_aae4b45dc79b7d9b85e0bf83278f88508}{operator-\/}} (\mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}}$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&x, \mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}}$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&y) noexcept -\/$>$ decltype(x.\+cursor() -\/ y.\+cursor()) +\item +{\footnotesize template$<$typename \+\_\+\+Cont , typename \+\_\+\+It , index\+\_\+t \+\_\+beg, size\+\_\+t \+\_\+size$>$ }\\\mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}}$<$ \+\_\+\+Cont, \+\_\+\+It, \+\_\+beg, \+\_\+size $>$ \mbox{\hyperlink{namespaceutl_a69289a7a150563ce48244d7f39b33dbb}{operator+}} (typename \+\_\+\+Cont\+::difference\+\_\+type n, \mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}}$<$ \+\_\+\+Cont, \+\_\+\+It, \+\_\+beg, \+\_\+size $>$ \&it) noexcept +\item +{\footnotesize template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ }\\auto \mbox{\hyperlink{namespaceutl_a191590b661dc64e2fd487adb6b5e8889}{operator-\/}} (\mbox{\hyperlink{classutl_1_1iodev__it}{iodev\+\_\+it}}$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&x, \mbox{\hyperlink{classutl_1_1iodev__it}{iodev\+\_\+it}}$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&y) noexcept -\/$>$ decltype(x.\+cursor() -\/ y.\+cursor()) +\item +{\footnotesize template$<$typename \+\_\+\+Cont , typename \+\_\+\+It , index\+\_\+t \+\_\+beg, size\+\_\+t \+\_\+size$>$ }\\\mbox{\hyperlink{classutl_1_1iodev__it}{iodev\+\_\+it}}$<$ \+\_\+\+Cont, \+\_\+\+It, \+\_\+beg, \+\_\+size $>$ \mbox{\hyperlink{namespaceutl_a829bc4894560bf7e0a6fd829ac9d3c10}{operator+}} (typename \+\_\+\+Cont\+::difference\+\_\+type n, \mbox{\hyperlink{classutl_1_1iodev__it}{iodev\+\_\+it}}$<$ \+\_\+\+Cont, \+\_\+\+It, \+\_\+beg, \+\_\+size $>$ \&it) noexcept +\end{DoxyCompactItemize} +\end{Indent} +\subsection*{Variables} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$class I $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a25b4f216e3d7754b1c7088dd59504dee}{Weakly\+Incrementable}} +\item +{\footnotesize template$<$class T , class U $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_af86da3571c3026c6bbd501c6b7bc5093}{Same}} = \mbox{\hyperlink{structutl_1_1meta_1_1same__}{meta\+::same\+\_\+}}$<$T, U$>$\+::value +\item +{\footnotesize template$<$class Derived , class Base $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a0904cc4071a8ea97a1d646dc0a9ca85b}{Derived\+From}} +\item +{\footnotesize template$<$class From , class To $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a9c88a03a5b6dd66200e86f98fb1eb9eb}{Convertible\+To}} = std\+::is\+\_\+convertible$<$From, To$>$\+::value +\item +{\footnotesize template$<$class T , class U $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a1cc37f121888dcc030b8e676b077024f}{Common\+Reference}} +\item +{\footnotesize template$<$class T , class U $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a79e23f98aa58c2dcd111743a096ef092}{Common}} +\item +{\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_ada9137016ddccf3339b2f6b3c409cc3c}{Integral}} = std\+::is\+\_\+integral$<$T$>$\+::value +\item +{\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a667b758d906c466d1b8a878a45750bf1}{Signed\+Integral}} = \mbox{\hyperlink{namespaceutl_ada9137016ddccf3339b2f6b3c409cc3c}{Integral}}$<$T$>$ \&\& std\+::is\+\_\+signed$<$T$>$\+::value +\item +{\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a7fb6eaf8fc1c5d65755c8c96a7a9b61f}{Unsigned\+Integral}} = \mbox{\hyperlink{namespaceutl_ada9137016ddccf3339b2f6b3c409cc3c}{Integral}}$<$T$>$ \&\& !std\+::is\+\_\+signed$<$T$>$\+::value +\item +{\footnotesize template$<$typename T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a7b8e4a26148ed5f2c60e4fd7d41e7e63}{Move\+Assignable}} = std\+::is\+\_\+move\+\_\+assignable$<$T$>$\+::value +\item +{\footnotesize template$<$typename T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a1be866c815c4fcb2a7344650c3491c0c}{Copy\+Assignable}} = std\+::is\+\_\+copy\+\_\+assignable$<$T$>$\+::value +\item +{\footnotesize template$<$class L\+HS , class R\+HS $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_acfbced82f83ceb87eeb77d31941c011a}{Assignable}} +\item +{\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_acf2f1df100b0cc4f127243a1a83a8469}{Destructible}} = std\+::is\+\_\+nothrow\+\_\+destructible$<$T$>$\+::value +\item +{\footnotesize template$<$class T , class... Args$>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a2a3ef7a9c788ffc1291ce15d2e5869bf}{Constructible}} +\item +{\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_aacd3a17129d764e8a80c615eb4b88dc3}{Default\+Constructible}} = \mbox{\hyperlink{namespaceutl_a2a3ef7a9c788ffc1291ce15d2e5869bf}{Constructible}}$<$T$>$ +\item +{\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a2a728f3d477d96f4f719bf62079321cf}{Move\+Constructible}} +\item +{\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_afb0f121b33b44640406b724c4d582b70}{Copy\+Constructible}} +\item +{\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_afc25cb525eb29162042c21238f28f26e}{Movable}} +\item +{\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_ac300f0e204f0ec4bd0ca38a551bb2b88}{Copyable}} +\item +{\footnotesize template$<$class B $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a38e00606b4b45a2ac59fa4576b4498c6}{Boolean}} +\item +{\footnotesize template$<$class T , class U $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a216f6e14ca647d85841fa13c40dc4ee3}{Weakly\+Equality\+Comparable\+With}} +\item +{\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a92a38a3d1638ccad068c24d1242ef63a}{Equality\+Comparable}} = \mbox{\hyperlink{namespaceutl_a216f6e14ca647d85841fa13c40dc4ee3}{Weakly\+Equality\+Comparable\+With}}$<$T, T$>$ +\item +{\footnotesize template$<$class T , class U $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_aa2be0b64c41b392c5264de5f5fee094e}{Equality\+Comparable\+With}} +\item +{\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a720d6ece86f3f3320816aaae02eb16e4}{Strict\+Totally\+Ordered}} +\item +{\footnotesize template$<$class T , class U $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a5599d14d1bd008e4c14787d610a2b429}{Strict\+Totally\+Ordered\+With}} +\item +{\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_af6b010e85897cb590e66a52157be1af5}{Semiregular}} = \mbox{\hyperlink{namespaceutl_ac300f0e204f0ec4bd0ca38a551bb2b88}{Copyable}}$<$T$>$ \&\& \mbox{\hyperlink{namespaceutl_aacd3a17129d764e8a80c615eb4b88dc3}{Default\+Constructible}}$<$T$>$ +\item +{\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a3accaa436a17248b4214baebc582b2f6}{Regular}} = \mbox{\hyperlink{namespaceutl_af6b010e85897cb590e66a52157be1af5}{Semiregular}}$<$T$>$ \&\& \mbox{\hyperlink{namespaceutl_a92a38a3d1638ccad068c24d1242ef63a}{Equality\+Comparable}}$<$T$>$ +\item +{\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a7f86c4bf42b13d9525481d731b194308}{Scalar}} +\item +{\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a41733496c30138efd3d88f13d9382aad}{Arithmetic}} +\item +{\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a07e83d4763a298c1faf2b1069b55e286}{Floating\+Point}} +\item +{\footnotesize template$<$class F , class... Args$>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a9d5bbdf19b08d6d714ec696b0ec44d0a}{Invocable}} = \mbox{\hyperlink{structutl_1_1is__invocable}{is\+\_\+invocable}}$<$F, Args...$>$\+::value +\item +{\footnotesize template$<$class F , class... Args$>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_ace9ef6da96e8cf5dc72762cd66240186}{Regular\+Invocable}} = \mbox{\hyperlink{namespaceutl_a9d5bbdf19b08d6d714ec696b0ec44d0a}{Invocable}}$<$F, Args...$>$ +\item +{\footnotesize template$<$class F , class... Args$>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_aae56a019cdd2006c4f07d2e207289195}{Predicate}} +\item +{\footnotesize template$<$class R , class T , class U $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a6d1e9b4853dd005ddaf61a79333cab98}{Relation}} +\item +{\footnotesize template$<$class R , class T , class U $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_aa4b7b9105cfab3cd72865b5e0db23b11}{Strict\+Weak\+Order}} = \mbox{\hyperlink{namespaceutl_a6d1e9b4853dd005ddaf61a79333cab98}{Relation}}$<$R, T, U$>$ +\end{DoxyCompactItemize} +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename \+\_\+\+Tp $>$ }\\constexpr bool \mbox{\hyperlink{namespaceutl_a80a0424d220ac1f7be50086617a05dbd}{Idx\+\_\+dev}} = \mbox{\hyperlink{structutl_1_1idx__dev__details_1_1is__idx__dev__}{idx\+\_\+dev\+\_\+details\+::is\+\_\+idx\+\_\+dev\+\_\+}} $<$\+\_\+\+Tp$>$\+::value +\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename \+\_\+\+Tp $>$ }\\constexpr bool \mbox{\hyperlink{namespaceutl_a1470ab9407ee21ea374b2c7a81e3511b}{In\+\_\+dev}} = \mbox{\hyperlink{structutl_1_1in__dev__details_1_1is__in__dev__}{in\+\_\+dev\+\_\+details\+::is\+\_\+in\+\_\+dev\+\_\+}} $<$\+\_\+\+Tp$>$\+::value +\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename \+\_\+\+Tp $>$ }\\constexpr bool \mbox{\hyperlink{namespaceutl_ac447a457f18a1c4dcd1dddb4c2789006}{Inbuf\+\_\+dev}} = \mbox{\hyperlink{structutl_1_1inbuf__dev__details_1_1is__inbuf__dev__}{inbuf\+\_\+dev\+\_\+details\+::is\+\_\+inbuf\+\_\+dev\+\_\+}} $<$\+\_\+\+Tp$>$\+::value +\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename \+\_\+\+Tp $>$ }\\constexpr bool \mbox{\hyperlink{namespaceutl_a77f27f594c8696fcfbc85a9ec66c11f1}{Out\+\_\+dev}} = \mbox{\hyperlink{structutl_1_1out__dev__details_1_1is__out__dev__}{out\+\_\+dev\+\_\+details\+::is\+\_\+out\+\_\+dev\+\_\+}}$<$\+\_\+\+Tp$>$\+::value +\end{DoxyCompactItemize} + +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{namespaceutl_a1d50e9abd420e77555624f3e52bc7479}{is\+\_\+swappable}} = std\+::is\+\_\+swappable +\item +using \mbox{\hyperlink{namespaceutl_ab437a6d3a1f420b44e01378ae37fcb24}{is\+\_\+swappable\+\_\+with}} = std\+::is\+\_\+swappable\+\_\+with +\item +{\footnotesize template$<$class T , class U $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a4a3bb850ba59d499382bd11153104af7}{Swappable\+With}} +\item +{\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_ae2b149b19fb3d69a4fc555e4474bf9de}{Swappable}} = \mbox{\hyperlink{namespaceutl_ab437a6d3a1f420b44e01378ae37fcb24}{is\+\_\+swappable\+\_\+with}}$<$T, T$>$\+::type\+::value +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +S\+TL\textquotesingle{}s core language concepts. + +We provide std concepts in case host\textquotesingle{}s stl does not provide them yet. + +For more information \begin{DoxySeeAlso}{See also} +\href{https://en.cppreference.com/w/cpp/concepts}{\tt https\+://en.\+cppreference.\+com/w/cpp/concepts} +\end{DoxySeeAlso} + + +\subsection{Typedef Documentation} +\mbox{\Hypertarget{namespaceutl_aa3f95fc48a94b2fae3c2959b7c024998}\label{namespaceutl_aa3f95fc48a94b2fae3c2959b7c024998}} +\index{utl@{utl}!\+\_\+ref\+\_\+t@{\+\_\+ref\+\_\+t}} +\index{\+\_\+ref\+\_\+t@{\+\_\+ref\+\_\+t}!utl@{utl}} +\subsubsection{\texorpdfstring{\+\_\+ref\+\_\+t}{\_ref\_t}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +using \mbox{\hyperlink{namespaceutl_aa3f95fc48a94b2fae3c2959b7c024998}{utl\+::\+\_\+ref\+\_\+t}} = typedef std\+::add\+\_\+lvalue\+\_\+reference\+\_\+t$<$T$>$} + + + +Definition at line 48 of file stl.\+h. + +\mbox{\Hypertarget{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}\label{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}} +\index{utl@{utl}!byte\+\_\+t@{byte\+\_\+t}} +\index{byte\+\_\+t@{byte\+\_\+t}!utl@{utl}} +\subsubsection{\texorpdfstring{byte\+\_\+t}{byte\_t}} +{\footnotesize\ttfamily using \mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{utl\+::byte\+\_\+t}} = typedef uint8\+\_\+t} + + + +8 bits wide + + + +Definition at line 31 of file types.\+h. + +\mbox{\Hypertarget{namespaceutl_a3970b90f0e0fd9f801cfcb1d955e3d42}\label{namespaceutl_a3970b90f0e0fd9f801cfcb1d955e3d42}} +\index{utl@{utl}!common\+\_\+reference@{common\+\_\+reference}} +\index{common\+\_\+reference@{common\+\_\+reference}!utl@{utl}} +\subsubsection{\texorpdfstring{common\+\_\+reference}{common\_reference}} +{\footnotesize\ttfamily template$<$typename... Ts$>$ \\ +using \mbox{\hyperlink{namespaceutl_a3970b90f0e0fd9f801cfcb1d955e3d42}{utl\+::common\+\_\+reference}} = typedef \mbox{\hyperlink{structutl_1_1common__impl_1_1common__reference}{common\+\_\+impl\+::common\+\_\+reference}}$<$Ts...$>$} + + + +Definition at line 281 of file stl.\+h. + +\mbox{\Hypertarget{namespaceutl_a4d76d9e29b830c16ad7dd34e3800a746}\label{namespaceutl_a4d76d9e29b830c16ad7dd34e3800a746}} +\index{utl@{utl}!common\+\_\+reference\+\_\+t@{common\+\_\+reference\+\_\+t}} +\index{common\+\_\+reference\+\_\+t@{common\+\_\+reference\+\_\+t}!utl@{utl}} +\subsubsection{\texorpdfstring{common\+\_\+reference\+\_\+t}{common\_reference\_t}} +{\footnotesize\ttfamily template$<$typename... Ts$>$ \\ +using \mbox{\hyperlink{namespaceutl_a4d76d9e29b830c16ad7dd34e3800a746}{utl\+::common\+\_\+reference\+\_\+t}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{meta\+::eval}}$<$ \mbox{\hyperlink{namespaceutl_a3970b90f0e0fd9f801cfcb1d955e3d42}{common\+\_\+reference}}$<$Ts...$>$ $>$} + + + +Definition at line 286 of file stl.\+h. + +\mbox{\Hypertarget{namespaceutl_a7d69beba08b81379703fd3b0ca42044d}\label{namespaceutl_a7d69beba08b81379703fd3b0ca42044d}} +\index{utl@{utl}!cref\+\_\+@{cref\+\_\+}} +\index{cref\+\_\+@{cref\+\_\+}!utl@{utl}} +\subsubsection{\texorpdfstring{cref\+\_\+}{cref\_}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +using \mbox{\hyperlink{namespaceutl_a7d69beba08b81379703fd3b0ca42044d}{utl\+::cref\+\_\+}} = typedef const std\+::remove\+\_\+reference\+\_\+t$<$T$>$\&} + + + +Definition at line 45 of file stl.\+h. + +\mbox{\Hypertarget{namespaceutl_abc93b88d0c0f95081ecd3d2194daf0fb}\label{namespaceutl_abc93b88d0c0f95081ecd3d2194daf0fb}} +\index{utl@{utl}!dword\+\_\+t@{dword\+\_\+t}} +\index{dword\+\_\+t@{dword\+\_\+t}!utl@{utl}} +\subsubsection{\texorpdfstring{dword\+\_\+t}{dword\_t}} +{\footnotesize\ttfamily using \mbox{\hyperlink{namespaceutl_abc93b88d0c0f95081ecd3d2194daf0fb}{utl\+::dword\+\_\+t}} = typedef uint32\+\_\+t} + +32 bits wide + +Definition at line 33 of file types.\+h. + +\mbox{\Hypertarget{namespaceutl_a676c0acd539dd04048dcc7b4d698577e}\label{namespaceutl_a676c0acd539dd04048dcc7b4d698577e}} +\index{utl@{utl}!index\+\_\+t@{index\+\_\+t}} +\index{index\+\_\+t@{index\+\_\+t}!utl@{utl}} +\subsubsection{\texorpdfstring{index\+\_\+t}{index\_t}} +{\footnotesize\ttfamily using \mbox{\hyperlink{namespaceutl_a676c0acd539dd04048dcc7b4d698577e}{utl\+::index\+\_\+t}} = typedef \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}}} + + + +index\+\_\+t and size\+\_\+t mend to be interchangeable + +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} + + +Definition at line 38 of file types.\+h. + +\mbox{\Hypertarget{namespaceutl_a9dd560a1b217a10af34d1ade3e77a76b}\label{namespaceutl_a9dd560a1b217a10af34d1ade3e77a76b}} +\index{utl@{utl}!invoke\+\_\+result@{invoke\+\_\+result}} +\index{invoke\+\_\+result@{invoke\+\_\+result}!utl@{utl}} +\subsubsection{\texorpdfstring{invoke\+\_\+result}{invoke\_result}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Callable , typename... \+\_\+\+Args$>$ \\ +using \mbox{\hyperlink{namespaceutl_a9dd560a1b217a10af34d1ade3e77a76b}{utl\+::invoke\+\_\+result}} = typedef \mbox{\hyperlink{structutl_1_1detail_1_1invoke__result__}{detail\+::invoke\+\_\+result\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1is__invocable}{is\+\_\+invocable}}$<$\+\_\+\+Callable, \+\_\+\+Args...$>$\+::value, \+\_\+\+Callable, \+\_\+\+Args... $>$} + + + +invoke\+\_\+result (for C++14) + + + +Definition at line 174 of file invoke.\+h. + +\mbox{\Hypertarget{namespaceutl_ae40494acc30f2894c74544f3e9142933}\label{namespaceutl_ae40494acc30f2894c74544f3e9142933}} +\index{utl@{utl}!invoke\+\_\+result\+\_\+t@{invoke\+\_\+result\+\_\+t}} +\index{invoke\+\_\+result\+\_\+t@{invoke\+\_\+result\+\_\+t}!utl@{utl}} +\subsubsection{\texorpdfstring{invoke\+\_\+result\+\_\+t}{invoke\_result\_t}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Callable , typename... \+\_\+\+Args$>$ \\ +using \mbox{\hyperlink{namespaceutl_ae40494acc30f2894c74544f3e9142933}{utl\+::invoke\+\_\+result\+\_\+t}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{meta\+::eval}} $<$ \mbox{\hyperlink{namespaceutl_a9dd560a1b217a10af34d1ade3e77a76b}{invoke\+\_\+result}}$<$\+\_\+\+Callable, \+\_\+\+Args...$>$ $>$} + + + +invoke\+\_\+result\+\_\+t (for C++14) + + + +Definition at line 180 of file invoke.\+h. + +\mbox{\Hypertarget{namespaceutl_a1d50e9abd420e77555624f3e52bc7479}\label{namespaceutl_a1d50e9abd420e77555624f3e52bc7479}} +\index{utl@{utl}!is\+\_\+swappable@{is\+\_\+swappable}} +\index{is\+\_\+swappable@{is\+\_\+swappable}!utl@{utl}} +\subsubsection{\texorpdfstring{is\+\_\+swappable}{is\_swappable}} +{\footnotesize\ttfamily using \mbox{\hyperlink{namespaceutl_a1d50e9abd420e77555624f3e52bc7479}{utl\+::is\+\_\+swappable}} = typedef std\+::is\+\_\+swappable} + +Swappable, Swappable\+With + +Definition at line 407 of file stl.\+h. + +\mbox{\Hypertarget{namespaceutl_ab437a6d3a1f420b44e01378ae37fcb24}\label{namespaceutl_ab437a6d3a1f420b44e01378ae37fcb24}} +\index{utl@{utl}!is\+\_\+swappable\+\_\+with@{is\+\_\+swappable\+\_\+with}} +\index{is\+\_\+swappable\+\_\+with@{is\+\_\+swappable\+\_\+with}!utl@{utl}} +\subsubsection{\texorpdfstring{is\+\_\+swappable\+\_\+with}{is\_swappable\_with}} +{\footnotesize\ttfamily using \mbox{\hyperlink{namespaceutl_ab437a6d3a1f420b44e01378ae37fcb24}{utl\+::is\+\_\+swappable\+\_\+with}} = typedef std\+::is\+\_\+swappable\+\_\+with} + + + +Definition at line 408 of file stl.\+h. + +\mbox{\Hypertarget{namespaceutl_a1b83655ba00b548af9b51f169c6c567a}\label{namespaceutl_a1b83655ba00b548af9b51f169c6c567a}} +\index{utl@{utl}!ptrdiff\+\_\+t@{ptrdiff\+\_\+t}} +\index{ptrdiff\+\_\+t@{ptrdiff\+\_\+t}!utl@{utl}} +\subsubsection{\texorpdfstring{ptrdiff\+\_\+t}{ptrdiff\_t}} +{\footnotesize\ttfamily using \mbox{\hyperlink{namespaceutl_a1b83655ba00b548af9b51f169c6c567a}{utl\+::ptrdiff\+\_\+t}} = typedef std\+::ptrdiff\+\_\+t} + + + +Definition at line 40 of file types.\+h. + +\mbox{\Hypertarget{namespaceutl_a7a9d26263662e02fbe3b238da5fd7338}\label{namespaceutl_a7a9d26263662e02fbe3b238da5fd7338}} +\index{utl@{utl}!remove\+\_\+cvref\+\_\+t@{remove\+\_\+cvref\+\_\+t}} +\index{remove\+\_\+cvref\+\_\+t@{remove\+\_\+cvref\+\_\+t}!utl@{utl}} +\subsubsection{\texorpdfstring{remove\+\_\+cvref\+\_\+t}{remove\_cvref\_t}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +using \mbox{\hyperlink{namespaceutl_a7a9d26263662e02fbe3b238da5fd7338}{utl\+::remove\+\_\+cvref\+\_\+t}} = typedef std\+::remove\+\_\+cv\+\_\+t$<$ std\+::remove\+\_\+reference\+\_\+t$<$T$>$ $>$} + + + +Definition at line 42 of file stl.\+h. + +\mbox{\Hypertarget{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}\label{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}} +\index{utl@{utl}!size\+\_\+t@{size\+\_\+t}} +\index{size\+\_\+t@{size\+\_\+t}!utl@{utl}} +\subsubsection{\texorpdfstring{size\+\_\+t}{size\_t}} +{\footnotesize\ttfamily using \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{utl\+::size\+\_\+t}} = typedef std\+::size\+\_\+t} + + + +Definition at line 37 of file types.\+h. + +\mbox{\Hypertarget{namespaceutl_ac5e425d39e8ee62e68664c6166d02d0c}\label{namespaceutl_ac5e425d39e8ee62e68664c6166d02d0c}} +\index{utl@{utl}!use\+\_\+if\+\_\+same\+\_\+t@{use\+\_\+if\+\_\+same\+\_\+t}} +\index{use\+\_\+if\+\_\+same\+\_\+t@{use\+\_\+if\+\_\+same\+\_\+t}!utl@{utl}} +\subsubsection{\texorpdfstring{use\+\_\+if\+\_\+same\+\_\+t}{use\_if\_same\_t}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+T1 , typename \+\_\+\+T2 , typename \+\_\+\+Ret = \+\_\+\+T1$>$ \\ +using \mbox{\hyperlink{namespaceutl_ac5e425d39e8ee62e68664c6166d02d0c}{utl\+::use\+\_\+if\+\_\+same\+\_\+t}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{meta\+::eval}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_ab3fed26a4c7a8204accb349f0b6600e8}{meta\+::enable\+\_\+if}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1same__}{meta\+::same\+\_\+}}$<$\+\_\+\+T1, \+\_\+\+T2$>$\+::value, \+\_\+\+Ret $>$ $>$} + + + +Definition at line 55 of file stl.\+h. + +\mbox{\Hypertarget{namespaceutl_a1368cb6928f648fe4db1c85c190f0548}\label{namespaceutl_a1368cb6928f648fe4db1c85c190f0548}} +\index{utl@{utl}!word\+\_\+t@{word\+\_\+t}} +\index{word\+\_\+t@{word\+\_\+t}!utl@{utl}} +\subsubsection{\texorpdfstring{word\+\_\+t}{word\_t}} +{\footnotesize\ttfamily using \mbox{\hyperlink{namespaceutl_a1368cb6928f648fe4db1c85c190f0548}{utl\+::word\+\_\+t}} = typedef uint16\+\_\+t} + + + +16 bits wide + + + +Definition at line 32 of file types.\+h. + + + +\subsection{Function Documentation} +\mbox{\Hypertarget{namespaceutl_a29057d2e164fe6dd3f3095f0d69c6546}\label{namespaceutl_a29057d2e164fe6dd3f3095f0d69c6546}} +\index{utl@{utl}!get@{get}} +\index{get@{get}!utl@{utl}} +\subsubsection{\texorpdfstring{get()}{get()}\hspace{0.1cm}{\footnotesize\ttfamily [1/3]}} +{\footnotesize\ttfamily template$<$size\+\_\+t \+\_\+\+Int, typename \+\_\+\+Tp , size\+\_\+t \+\_\+\+Nm$>$ \\ +constexpr \+\_\+\+Tp\& utl\+::get (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{structutl_1_1array}{array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&}]{arr }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [noexcept]}} + + + +Definition at line 220 of file array.\+h. + +\mbox{\Hypertarget{namespaceutl_ab0087ff901c30848b7ac6f5ffa31f5cf}\label{namespaceutl_ab0087ff901c30848b7ac6f5ffa31f5cf}} +\index{utl@{utl}!get@{get}} +\index{get@{get}!utl@{utl}} +\subsubsection{\texorpdfstring{get()}{get()}\hspace{0.1cm}{\footnotesize\ttfamily [2/3]}} +{\footnotesize\ttfamily template$<$size\+\_\+t \+\_\+\+Int, typename \+\_\+\+Tp , size\+\_\+t \+\_\+\+Nm$>$ \\ +constexpr \+\_\+\+Tp\&\& utl\+::get (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{structutl_1_1array}{array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&\&}]{arr }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [noexcept]}} + + + +Definition at line 226 of file array.\+h. + +\mbox{\Hypertarget{namespaceutl_aad376ab583a0db920180465f9f35d67b}\label{namespaceutl_aad376ab583a0db920180465f9f35d67b}} +\index{utl@{utl}!get@{get}} +\index{get@{get}!utl@{utl}} +\subsubsection{\texorpdfstring{get()}{get()}\hspace{0.1cm}{\footnotesize\ttfamily [3/3]}} +{\footnotesize\ttfamily template$<$size\+\_\+t \+\_\+\+Int, typename \+\_\+\+Tp , size\+\_\+t \+\_\+\+Nm$>$ \\ +constexpr const \+\_\+\+Tp\& utl\+::get (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structutl_1_1array}{array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&}]{arr }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [noexcept]}} + + + +Definition at line 232 of file array.\+h. + +\mbox{\Hypertarget{namespaceutl_adc675874b5426194d04112f76b356714}\label{namespaceutl_adc675874b5426194d04112f76b356714}} +\index{utl@{utl}!invoke@{invoke}} +\index{invoke@{invoke}!utl@{utl}} +\subsubsection{\texorpdfstring{invoke()}{invoke()}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Callable , typename... \+\_\+\+Args$>$ \\ +decltype(auto) utl\+::invoke (\begin{DoxyParamCaption}\item[{\+\_\+\+Callable \&\&}]{fn, }\item[{\+\_\+\+Args \&\&...}]{args }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Invoke a callable object (for C++14) + + + +Definition at line 121 of file invoke.\+h. + +\mbox{\Hypertarget{namespaceutl_a45cd30dab2ec904b6fd64641d777b35e}\label{namespaceutl_a45cd30dab2ec904b6fd64641d777b35e}} +\index{utl@{utl}!operator"!=@{operator"!=}} +\index{operator"!=@{operator"!=}!utl@{utl}} +\subsubsection{\texorpdfstring{operator"!=()}{operator!=()}\hspace{0.1cm}{\footnotesize\ttfamily [1/6]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp , size\+\_\+t \+\_\+\+Nm$>$ \\ +bool utl\+::operator!= (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structutl_1_1array}{array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&}]{lhs, }\item[{const \mbox{\hyperlink{structutl_1_1array}{array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&}]{rhs }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 186 of file array.\+h. + +\mbox{\Hypertarget{namespaceutl_a7f05cda5b7a37dea074df55db31aefb6}\label{namespaceutl_a7f05cda5b7a37dea074df55db31aefb6}} +\index{utl@{utl}!operator"!=@{operator"!=}} +\index{operator"!=@{operator"!=}!utl@{utl}} +\subsubsection{\texorpdfstring{operator"!=()}{operator!=()}\hspace{0.1cm}{\footnotesize\ttfamily [2/6]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp , size\+\_\+t \+\_\+\+Nm$>$ \\ +bool utl\+::operator!= (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structutl_1_1id__t}{id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&}]{lhs, }\item[{const \mbox{\hyperlink{structutl_1_1id__t}{id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&}]{rhs }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 206 of file id.\+h. + +\mbox{\Hypertarget{namespaceutl_aa7a25ea4d2598ec5db5b37bfaaf55ec3}\label{namespaceutl_aa7a25ea4d2598ec5db5b37bfaaf55ec3}} +\index{utl@{utl}!operator"!=@{operator"!=}} +\index{operator"!=@{operator"!=}!utl@{utl}} +\subsubsection{\texorpdfstring{operator"!=()}{operator!=()}\hspace{0.1cm}{\footnotesize\ttfamily [3/6]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+C1 , typename \+\_\+\+D1 , typename \+\_\+\+C2 , typename \+\_\+\+D2 $>$ \\ +bool utl\+::operator!= (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1istreamdev__it}{istreamdev\+\_\+it}}$<$ \+\_\+\+C1, \+\_\+\+D1 $>$ \&}]{lhs, }\item[{const \mbox{\hyperlink{classutl_1_1istreamdev__it}{istreamdev\+\_\+it}}$<$ \+\_\+\+C2, \+\_\+\+D2 $>$ \&}]{rhs }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 236 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{namespaceutl_ada8975062732a20074909f8a3f609538}\label{namespaceutl_ada8975062732a20074909f8a3f609538}} +\index{utl@{utl}!operator"!=@{operator"!=}} +\index{operator"!=@{operator"!=}!utl@{utl}} +\subsubsection{\texorpdfstring{operator"!=()}{operator!=()}\hspace{0.1cm}{\footnotesize\ttfamily [4/6]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, index\+\_\+t \+\_\+end1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, index\+\_\+t \+\_\+end2$>$ \\ +bool utl\+::operator!= (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1outdev__it}{outdev\+\_\+it}}$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+end1 $>$ \&}]{lhs, }\item[{const \mbox{\hyperlink{classutl_1_1outdev__it}{outdev\+\_\+it}}$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+end2 $>$ \&}]{rhs }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Inequality comparison template so that comparison between cv-\/qualified and non-\/cv-\/qualified iterators be valid. + + +\begin{DoxyParams}{Parameters} +{\em lhs} & Left hand site iterator \\ +\hline +{\em rhs} & Right hand site iterator \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +True in inequality +\end{DoxyReturn} + + +Definition at line 382 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{namespaceutl_a15d049c37bf09ffb29f2a0c0070bf89c}\label{namespaceutl_a15d049c37bf09ffb29f2a0c0070bf89c}} +\index{utl@{utl}!operator"!=@{operator"!=}} +\index{operator"!=@{operator"!=}!utl@{utl}} +\subsubsection{\texorpdfstring{operator"!=()}{operator!=()}\hspace{0.1cm}{\footnotesize\ttfamily [5/6]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ \\ +bool utl\+::operator!= (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}}$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&}]{x, }\item[{const \mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}}$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+size2 $>$ \&}]{y }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 624 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{namespaceutl_a388830b63c30f5ee32a3e2a761c703c8}\label{namespaceutl_a388830b63c30f5ee32a3e2a761c703c8}} +\index{utl@{utl}!operator"!=@{operator"!=}} +\index{operator"!=@{operator"!=}!utl@{utl}} +\subsubsection{\texorpdfstring{operator"!=()}{operator!=()}\hspace{0.1cm}{\footnotesize\ttfamily [6/6]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ \\ +bool utl\+::operator!= (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1iodev__it}{iodev\+\_\+it}}$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&}]{x, }\item[{const \mbox{\hyperlink{classutl_1_1iodev__it}{iodev\+\_\+it}}$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+size2 $>$ \&}]{y }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 909 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{namespaceutl_a69289a7a150563ce48244d7f39b33dbb}\label{namespaceutl_a69289a7a150563ce48244d7f39b33dbb}} +\index{utl@{utl}!operator+@{operator+}} +\index{operator+@{operator+}!utl@{utl}} +\subsubsection{\texorpdfstring{operator+()}{operator+()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Cont , typename \+\_\+\+It , index\+\_\+t \+\_\+beg, size\+\_\+t \+\_\+size$>$ \\ +\mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}}$<$\+\_\+\+Cont, \+\_\+\+It, \+\_\+beg, \+\_\+size$>$ utl\+::operator+ (\begin{DoxyParamCaption}\item[{typename \+\_\+\+Cont\+::difference\+\_\+type}]{n, }\item[{\mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}}$<$ \+\_\+\+Cont, \+\_\+\+It, \+\_\+beg, \+\_\+size $>$ \&}]{it }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 659 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{namespaceutl_a829bc4894560bf7e0a6fd829ac9d3c10}\label{namespaceutl_a829bc4894560bf7e0a6fd829ac9d3c10}} +\index{utl@{utl}!operator+@{operator+}} +\index{operator+@{operator+}!utl@{utl}} +\subsubsection{\texorpdfstring{operator+()}{operator+()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Cont , typename \+\_\+\+It , index\+\_\+t \+\_\+beg, size\+\_\+t \+\_\+size$>$ \\ +\mbox{\hyperlink{classutl_1_1iodev__it}{iodev\+\_\+it}}$<$\+\_\+\+Cont, \+\_\+\+It, \+\_\+beg, \+\_\+size$>$ utl\+::operator+ (\begin{DoxyParamCaption}\item[{typename \+\_\+\+Cont\+::difference\+\_\+type}]{n, }\item[{\mbox{\hyperlink{classutl_1_1iodev__it}{iodev\+\_\+it}}$<$ \+\_\+\+Cont, \+\_\+\+It, \+\_\+beg, \+\_\+size $>$ \&}]{it }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 944 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{namespaceutl_aae4b45dc79b7d9b85e0bf83278f88508}\label{namespaceutl_aae4b45dc79b7d9b85e0bf83278f88508}} +\index{utl@{utl}!operator-\/@{operator-\/}} +\index{operator-\/@{operator-\/}!utl@{utl}} +\subsubsection{\texorpdfstring{operator-\/()}{operator-()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ \\ +auto utl\+::operator-\/ (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}}$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&}]{x, }\item[{\mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}}$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&}]{y }\end{DoxyParamCaption}) -\/$>$ decltype (x.\+cursor() -\/ y.\+cursor()) \hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 651 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{namespaceutl_a191590b661dc64e2fd487adb6b5e8889}\label{namespaceutl_a191590b661dc64e2fd487adb6b5e8889}} +\index{utl@{utl}!operator-\/@{operator-\/}} +\index{operator-\/@{operator-\/}!utl@{utl}} +\subsubsection{\texorpdfstring{operator-\/()}{operator-()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ \\ +auto utl\+::operator-\/ (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{classutl_1_1iodev__it}{iodev\+\_\+it}}$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&}]{x, }\item[{\mbox{\hyperlink{classutl_1_1iodev__it}{iodev\+\_\+it}}$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&}]{y }\end{DoxyParamCaption}) -\/$>$ decltype (x.\+cursor() -\/ y.\+cursor()) \hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 936 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{namespaceutl_a633f700b294b53e4f58183fd4bc6963f}\label{namespaceutl_a633f700b294b53e4f58183fd4bc6963f}} +\index{utl@{utl}!operator$<$@{operator$<$}} +\index{operator$<$@{operator$<$}!utl@{utl}} +\subsubsection{\texorpdfstring{operator$<$()}{operator<()}\hspace{0.1cm}{\footnotesize\ttfamily [1/4]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp , size\+\_\+t \+\_\+\+Nm$>$ \\ +bool utl\+::operator$<$ (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structutl_1_1array}{array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&}]{lhs, }\item[{const \mbox{\hyperlink{structutl_1_1array}{array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&}]{rhs }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 191 of file array.\+h. + +\mbox{\Hypertarget{namespaceutl_a64bc464138b386821977a0c4ac43fddf}\label{namespaceutl_a64bc464138b386821977a0c4ac43fddf}} +\index{utl@{utl}!operator$<$@{operator$<$}} +\index{operator$<$@{operator$<$}!utl@{utl}} +\subsubsection{\texorpdfstring{operator$<$()}{operator<()}\hspace{0.1cm}{\footnotesize\ttfamily [2/4]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp , size\+\_\+t \+\_\+\+Nm$>$ \\ +bool utl\+::operator$<$ (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structutl_1_1id__t}{id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&}]{lhs, }\item[{const \mbox{\hyperlink{structutl_1_1id__t}{id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&}]{rhs }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 211 of file id.\+h. + +\mbox{\Hypertarget{namespaceutl_aac9f2116bf5b1463391b2a5ec437ef1d}\label{namespaceutl_aac9f2116bf5b1463391b2a5ec437ef1d}} +\index{utl@{utl}!operator$<$@{operator$<$}} +\index{operator$<$@{operator$<$}!utl@{utl}} +\subsubsection{\texorpdfstring{operator$<$()}{operator<()}\hspace{0.1cm}{\footnotesize\ttfamily [3/4]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ \\ +bool utl\+::operator$<$ (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}}$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&}]{x, }\item[{const \mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}}$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+size2 $>$ \&}]{y }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Less than. + + + +Definition at line 616 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{namespaceutl_aacd0760a2943441abcc86ef9d825c8b0}\label{namespaceutl_aacd0760a2943441abcc86ef9d825c8b0}} +\index{utl@{utl}!operator$<$@{operator$<$}} +\index{operator$<$@{operator$<$}!utl@{utl}} +\subsubsection{\texorpdfstring{operator$<$()}{operator<()}\hspace{0.1cm}{\footnotesize\ttfamily [4/4]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ \\ +bool utl\+::operator$<$ (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1iodev__it}{iodev\+\_\+it}}$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&}]{x, }\item[{const \mbox{\hyperlink{classutl_1_1iodev__it}{iodev\+\_\+it}}$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+size2 $>$ \&}]{y }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Less than. + + + +Definition at line 901 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{namespaceutl_a36f9fadffe88aefcc2d37249eaf951c3}\label{namespaceutl_a36f9fadffe88aefcc2d37249eaf951c3}} +\index{utl@{utl}!operator$<$=@{operator$<$=}} +\index{operator$<$=@{operator$<$=}!utl@{utl}} +\subsubsection{\texorpdfstring{operator$<$=()}{operator<=()}\hspace{0.1cm}{\footnotesize\ttfamily [1/4]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp , size\+\_\+t \+\_\+\+Nm$>$ \\ +bool utl\+::operator$<$= (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structutl_1_1array}{array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&}]{lhs, }\item[{const \mbox{\hyperlink{structutl_1_1array}{array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&}]{rhs }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 201 of file array.\+h. + +\mbox{\Hypertarget{namespaceutl_aa2c449f74d1214cb7406b1648d2caf6f}\label{namespaceutl_aa2c449f74d1214cb7406b1648d2caf6f}} +\index{utl@{utl}!operator$<$=@{operator$<$=}} +\index{operator$<$=@{operator$<$=}!utl@{utl}} +\subsubsection{\texorpdfstring{operator$<$=()}{operator<=()}\hspace{0.1cm}{\footnotesize\ttfamily [2/4]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp , size\+\_\+t \+\_\+\+Nm$>$ \\ +bool utl\+::operator$<$= (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structutl_1_1id__t}{id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&}]{lhs, }\item[{const \mbox{\hyperlink{structutl_1_1id__t}{id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&}]{rhs }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 222 of file id.\+h. + +\mbox{\Hypertarget{namespaceutl_a93043b2e245bb724c9c2e89577222532}\label{namespaceutl_a93043b2e245bb724c9c2e89577222532}} +\index{utl@{utl}!operator$<$=@{operator$<$=}} +\index{operator$<$=@{operator$<$=}!utl@{utl}} +\subsubsection{\texorpdfstring{operator$<$=()}{operator<=()}\hspace{0.1cm}{\footnotesize\ttfamily [3/4]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ \\ +bool utl\+::operator$<$= (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}}$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&}]{x, }\item[{const \mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}}$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+size2 $>$ \&}]{y }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 630 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{namespaceutl_aa369d59a59c21d50b371b5db6195b043}\label{namespaceutl_aa369d59a59c21d50b371b5db6195b043}} +\index{utl@{utl}!operator$<$=@{operator$<$=}} +\index{operator$<$=@{operator$<$=}!utl@{utl}} +\subsubsection{\texorpdfstring{operator$<$=()}{operator<=()}\hspace{0.1cm}{\footnotesize\ttfamily [4/4]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ \\ +bool utl\+::operator$<$= (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1iodev__it}{iodev\+\_\+it}}$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&}]{x, }\item[{const \mbox{\hyperlink{classutl_1_1iodev__it}{iodev\+\_\+it}}$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+size2 $>$ \&}]{y }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 915 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{namespaceutl_a841f326020eb98fa4b8f764bf35442c0}\label{namespaceutl_a841f326020eb98fa4b8f764bf35442c0}} +\index{utl@{utl}!operator==@{operator==}} +\index{operator==@{operator==}!utl@{utl}} +\subsubsection{\texorpdfstring{operator==()}{operator==()}\hspace{0.1cm}{\footnotesize\ttfamily [1/6]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp , size\+\_\+t \+\_\+\+Nm$>$ \\ +bool utl\+::operator== (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structutl_1_1array}{array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&}]{lhs, }\item[{const \mbox{\hyperlink{structutl_1_1array}{array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&}]{rhs }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 181 of file array.\+h. + +\mbox{\Hypertarget{namespaceutl_a2e319bae5449ee07261f547a94c31f87}\label{namespaceutl_a2e319bae5449ee07261f547a94c31f87}} +\index{utl@{utl}!operator==@{operator==}} +\index{operator==@{operator==}!utl@{utl}} +\subsubsection{\texorpdfstring{operator==()}{operator==()}\hspace{0.1cm}{\footnotesize\ttfamily [2/6]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp , size\+\_\+t \+\_\+\+Nm$>$ \\ +bool utl\+::operator== (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structutl_1_1id__t}{id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&}]{lhs, }\item[{const \mbox{\hyperlink{structutl_1_1id__t}{id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&}]{rhs }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 201 of file id.\+h. + +\mbox{\Hypertarget{namespaceutl_a5ba78d196f9abb63a1d2fff13cabe636}\label{namespaceutl_a5ba78d196f9abb63a1d2fff13cabe636}} +\index{utl@{utl}!operator==@{operator==}} +\index{operator==@{operator==}!utl@{utl}} +\subsubsection{\texorpdfstring{operator==()}{operator==()}\hspace{0.1cm}{\footnotesize\ttfamily [3/6]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+C1 , typename \+\_\+\+D1 , typename \+\_\+\+C2 , typename \+\_\+\+D2 $>$ \\ +bool utl\+::operator== (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1istreamdev__it}{istreamdev\+\_\+it}}$<$ \+\_\+\+C1, \+\_\+\+D1 $>$ \&}]{lhs, }\item[{const \mbox{\hyperlink{classutl_1_1istreamdev__it}{istreamdev\+\_\+it}}$<$ \+\_\+\+C2, \+\_\+\+D2 $>$ \&}]{rhs }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Equality comparison template so that comparison between cv-\/qualified and non-\/cv-\/qualified iterators be valid. + + +\begin{DoxyParams}{Parameters} +{\em lhs} & Left hand site iterator \\ +\hline +{\em rhs} & Right hand site iterator \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +True in equality +\end{DoxyReturn} + + +Definition at line 229 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{namespaceutl_a6726b451c897c4581e8781a819c025ba}\label{namespaceutl_a6726b451c897c4581e8781a819c025ba}} +\index{utl@{utl}!operator==@{operator==}} +\index{operator==@{operator==}!utl@{utl}} +\subsubsection{\texorpdfstring{operator==()}{operator==()}\hspace{0.1cm}{\footnotesize\ttfamily [4/6]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, index\+\_\+t \+\_\+end1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, index\+\_\+t \+\_\+end2$>$ \\ +bool utl\+::operator== (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1outdev__it}{outdev\+\_\+it}}$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+end1 $>$ \&}]{lhs, }\item[{const \mbox{\hyperlink{classutl_1_1outdev__it}{outdev\+\_\+it}}$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+end2 $>$ \&}]{rhs }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Equality comparison template so that comparison between cv-\/qualified and non-\/cv-\/qualified iterators be valid. + +\begin{DoxyNote}{Note} +The following are not requirements for output iterator. We provide them nevertheless. Required\+: The rhs and lhs M\+U\+ST belong to the same owner or the result is undefined. +\end{DoxyNote} + +\begin{DoxyParams}{Parameters} +{\em lhs} & Left hand site iterator \\ +\hline +{\em rhs} & Right hand site iterator \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +True in equality +\end{DoxyReturn} + + +Definition at line 366 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{namespaceutl_aa30fa8ed97138ea75003069144f78e97}\label{namespaceutl_aa30fa8ed97138ea75003069144f78e97}} +\index{utl@{utl}!operator==@{operator==}} +\index{operator==@{operator==}!utl@{utl}} +\subsubsection{\texorpdfstring{operator==()}{operator==()}\hspace{0.1cm}{\footnotesize\ttfamily [5/6]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ \\ +bool utl\+::operator== (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}}$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&}]{x, }\item[{const \mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}}$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+size2 $>$ \&}]{y }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + +Equality + +Definition at line 608 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{namespaceutl_a7ad3384389159ce575279712fb92e3c6}\label{namespaceutl_a7ad3384389159ce575279712fb92e3c6}} +\index{utl@{utl}!operator==@{operator==}} +\index{operator==@{operator==}!utl@{utl}} +\subsubsection{\texorpdfstring{operator==()}{operator==()}\hspace{0.1cm}{\footnotesize\ttfamily [6/6]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ \\ +bool utl\+::operator== (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1iodev__it}{iodev\+\_\+it}}$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&}]{x, }\item[{const \mbox{\hyperlink{classutl_1_1iodev__it}{iodev\+\_\+it}}$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+size2 $>$ \&}]{y }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + +Equality + +Definition at line 893 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{namespaceutl_a1d5c761bf59037aeed9157e4f63bed9e}\label{namespaceutl_a1d5c761bf59037aeed9157e4f63bed9e}} +\index{utl@{utl}!operator$>$@{operator$>$}} +\index{operator$>$@{operator$>$}!utl@{utl}} +\subsubsection{\texorpdfstring{operator$>$()}{operator>()}\hspace{0.1cm}{\footnotesize\ttfamily [1/4]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp , size\+\_\+t \+\_\+\+Nm$>$ \\ +bool utl\+::operator$>$ (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structutl_1_1array}{array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&}]{lhs, }\item[{const \mbox{\hyperlink{structutl_1_1array}{array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&}]{rhs }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 196 of file array.\+h. + +\mbox{\Hypertarget{namespaceutl_aa88fd098a89e4477ff55319be1d44a64}\label{namespaceutl_aa88fd098a89e4477ff55319be1d44a64}} +\index{utl@{utl}!operator$>$@{operator$>$}} +\index{operator$>$@{operator$>$}!utl@{utl}} +\subsubsection{\texorpdfstring{operator$>$()}{operator>()}\hspace{0.1cm}{\footnotesize\ttfamily [2/4]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp , size\+\_\+t \+\_\+\+Nm$>$ \\ +bool utl\+::operator$>$ (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structutl_1_1id__t}{id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&}]{lhs, }\item[{const \mbox{\hyperlink{structutl_1_1id__t}{id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&}]{rhs }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 217 of file id.\+h. + +\mbox{\Hypertarget{namespaceutl_a254af18987f59f185ceeaac1aaf3c1e1}\label{namespaceutl_a254af18987f59f185ceeaac1aaf3c1e1}} +\index{utl@{utl}!operator$>$@{operator$>$}} +\index{operator$>$@{operator$>$}!utl@{utl}} +\subsubsection{\texorpdfstring{operator$>$()}{operator>()}\hspace{0.1cm}{\footnotesize\ttfamily [3/4]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ \\ +bool utl\+::operator$>$ (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}}$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&}]{x, }\item[{const \mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}}$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+size2 $>$ \&}]{y }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 636 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{namespaceutl_a623dee5dafd7fe274dc205c3e20c96af}\label{namespaceutl_a623dee5dafd7fe274dc205c3e20c96af}} +\index{utl@{utl}!operator$>$@{operator$>$}} +\index{operator$>$@{operator$>$}!utl@{utl}} +\subsubsection{\texorpdfstring{operator$>$()}{operator>()}\hspace{0.1cm}{\footnotesize\ttfamily [4/4]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ \\ +bool utl\+::operator$>$ (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1iodev__it}{iodev\+\_\+it}}$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&}]{x, }\item[{const \mbox{\hyperlink{classutl_1_1iodev__it}{iodev\+\_\+it}}$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+size2 $>$ \&}]{y }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 921 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{namespaceutl_a942cac675f6dd1313807eccb407ebec6}\label{namespaceutl_a942cac675f6dd1313807eccb407ebec6}} +\index{utl@{utl}!operator$>$=@{operator$>$=}} +\index{operator$>$=@{operator$>$=}!utl@{utl}} +\subsubsection{\texorpdfstring{operator$>$=()}{operator>=()}\hspace{0.1cm}{\footnotesize\ttfamily [1/4]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp , size\+\_\+t \+\_\+\+Nm$>$ \\ +bool utl\+::operator$>$= (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structutl_1_1array}{array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&}]{lhs, }\item[{const \mbox{\hyperlink{structutl_1_1array}{array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&}]{rhs }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 207 of file array.\+h. + +\mbox{\Hypertarget{namespaceutl_a3f53717133a73715f387ebac4b6f22b3}\label{namespaceutl_a3f53717133a73715f387ebac4b6f22b3}} +\index{utl@{utl}!operator$>$=@{operator$>$=}} +\index{operator$>$=@{operator$>$=}!utl@{utl}} +\subsubsection{\texorpdfstring{operator$>$=()}{operator>=()}\hspace{0.1cm}{\footnotesize\ttfamily [2/4]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp , size\+\_\+t \+\_\+\+Nm$>$ \\ +bool utl\+::operator$>$= (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structutl_1_1id__t}{id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&}]{lhs, }\item[{const \mbox{\hyperlink{structutl_1_1id__t}{id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&}]{rhs }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 227 of file id.\+h. + +\mbox{\Hypertarget{namespaceutl_abdada8bc0cbd311c4dea3dde078f5483}\label{namespaceutl_abdada8bc0cbd311c4dea3dde078f5483}} +\index{utl@{utl}!operator$>$=@{operator$>$=}} +\index{operator$>$=@{operator$>$=}!utl@{utl}} +\subsubsection{\texorpdfstring{operator$>$=()}{operator>=()}\hspace{0.1cm}{\footnotesize\ttfamily [3/4]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ \\ +bool utl\+::operator$>$= (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}}$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&}]{x, }\item[{const \mbox{\hyperlink{classutl_1_1indev__it}{indev\+\_\+it}}$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+size2 $>$ \&}]{y }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 642 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{namespaceutl_a1988125a6394416aaf6ae85eaafa3ec4}\label{namespaceutl_a1988125a6394416aaf6ae85eaafa3ec4}} +\index{utl@{utl}!operator$>$=@{operator$>$=}} +\index{operator$>$=@{operator$>$=}!utl@{utl}} +\subsubsection{\texorpdfstring{operator$>$=()}{operator>=()}\hspace{0.1cm}{\footnotesize\ttfamily [4/4]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Cont1 , typename \+\_\+\+It1 , index\+\_\+t \+\_\+beg1, size\+\_\+t \+\_\+size1, typename \+\_\+\+Cont2 , typename \+\_\+\+It2 , index\+\_\+t \+\_\+beg2, size\+\_\+t \+\_\+size2$>$ \\ +bool utl\+::operator$>$= (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{classutl_1_1iodev__it}{iodev\+\_\+it}}$<$ \+\_\+\+Cont1, \+\_\+\+It1, \+\_\+beg1, \+\_\+size1 $>$ \&}]{x, }\item[{const \mbox{\hyperlink{classutl_1_1iodev__it}{iodev\+\_\+it}}$<$ \+\_\+\+Cont2, \+\_\+\+It2, \+\_\+beg2, \+\_\+size2 $>$ \&}]{y }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 927 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{namespaceutl_ae0f873b4883af7cc18cb23dd2810f4e6}\label{namespaceutl_ae0f873b4883af7cc18cb23dd2810f4e6}} +\index{utl@{utl}!swap@{swap}} +\index{swap@{swap}!utl@{utl}} +\subsubsection{\texorpdfstring{swap()}{swap()}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp , size\+\_\+t \+\_\+\+Nm$>$ \\ +void utl\+::swap (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{structutl_1_1array}{array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&}]{lhs, }\item[{\mbox{\hyperlink{structutl_1_1array}{array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&}]{rhs }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 214 of file array.\+h. + + + +\subsection{Variable Documentation} +\mbox{\Hypertarget{namespaceutl_a41733496c30138efd3d88f13d9382aad}\label{namespaceutl_a41733496c30138efd3d88f13d9382aad}} +\index{utl@{utl}!Arithmetic@{Arithmetic}} +\index{Arithmetic@{Arithmetic}!utl@{utl}} +\subsubsection{\texorpdfstring{Arithmetic}{Arithmetic}} +{\footnotesize\ttfamily template$<$class T $>$ \\ +\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} utl\+::\+Arithmetic} + +{\bfseries Initial value\+:} +\begin{DoxyCode} += + std::is\_arithmetic::value && Scalar && StrictTotallyOrdered +\end{DoxyCode} +Arithmetic + +Definition at line 736 of file stl.\+h. + +\mbox{\Hypertarget{namespaceutl_acfbced82f83ceb87eeb77d31941c011a}\label{namespaceutl_acfbced82f83ceb87eeb77d31941c011a}} +\index{utl@{utl}!Assignable@{Assignable}} +\index{Assignable@{Assignable}!utl@{utl}} +\subsubsection{\texorpdfstring{Assignable}{Assignable}} +{\footnotesize\ttfamily template$<$class L\+HS , class R\+HS $>$ \\ +\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} utl\+::\+Assignable} + +{\bfseries Initial value\+:} +\begin{DoxyCode} += + + + + + + + + + + + + + std::is\_assignable::value +\end{DoxyCode} +Assignable \begin{DoxyNote}{Note} +!= std\+:\+: on Common\+Reference +\end{DoxyNote} + + +Definition at line 366 of file stl.\+h. + +\mbox{\Hypertarget{namespaceutl_a38e00606b4b45a2ac59fa4576b4498c6}\label{namespaceutl_a38e00606b4b45a2ac59fa4576b4498c6}} +\index{utl@{utl}!Boolean@{Boolean}} +\index{Boolean@{Boolean}!utl@{utl}} +\subsubsection{\texorpdfstring{Boolean}{Boolean}} +{\footnotesize\ttfamily template$<$class B $>$ \\ +\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} utl\+::\+Boolean} + +{\bfseries Initial value\+:} +\begin{DoxyCode} += + Movable> && + + ConvertibleTo, \textcolor{keywordtype}{bool}> && + Same> +\end{DoxyCode} + + +Definition at line 551 of file stl.\+h. + +\mbox{\Hypertarget{namespaceutl_a79e23f98aa58c2dcd111743a096ef092}\label{namespaceutl_a79e23f98aa58c2dcd111743a096ef092}} +\index{utl@{utl}!Common@{Common}} +\index{Common@{Common}!utl@{utl}} +\subsubsection{\texorpdfstring{Common}{Common}} +{\footnotesize\ttfamily template$<$class T , class U $>$ \\ +\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} utl\+::\+Common} + +{\bfseries Initial value\+:} +\begin{DoxyCode} += + + + + + + + + + + + + + + + + + + + + Same, std::common\_type\_t> +\end{DoxyCode} + + +Definition at line 301 of file stl.\+h. + +\mbox{\Hypertarget{namespaceutl_a1cc37f121888dcc030b8e676b077024f}\label{namespaceutl_a1cc37f121888dcc030b8e676b077024f}} +\index{utl@{utl}!Common\+Reference@{Common\+Reference}} +\index{Common\+Reference@{Common\+Reference}!utl@{utl}} +\subsubsection{\texorpdfstring{Common\+Reference}{CommonReference}} +{\footnotesize\ttfamily template$<$class T , class U $>$ \\ +\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} utl\+::\+Common\+Reference} + +{\bfseries Initial value\+:} +\begin{DoxyCode} += + Same, common\_reference\_t> && + ConvertibleTo> && + ConvertibleTo> +\end{DoxyCode} + + +Definition at line 293 of file stl.\+h. + +\mbox{\Hypertarget{namespaceutl_a2a3ef7a9c788ffc1291ce15d2e5869bf}\label{namespaceutl_a2a3ef7a9c788ffc1291ce15d2e5869bf}} +\index{utl@{utl}!Constructible@{Constructible}} +\index{Constructible@{Constructible}!utl@{utl}} +\subsubsection{\texorpdfstring{Constructible}{Constructible}} +{\footnotesize\ttfamily template$<$class T , class... Args$>$ \\ +\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} utl\+::\+Constructible} + +{\bfseries Initial value\+:} +\begin{DoxyCode} += + Destructible && std::is\_constructible::value +\end{DoxyCode} +Constructible + +Definition at line 438 of file stl.\+h. + +\mbox{\Hypertarget{namespaceutl_a9c88a03a5b6dd66200e86f98fb1eb9eb}\label{namespaceutl_a9c88a03a5b6dd66200e86f98fb1eb9eb}} +\index{utl@{utl}!Convertible\+To@{Convertible\+To}} +\index{Convertible\+To@{Convertible\+To}!utl@{utl}} +\subsubsection{\texorpdfstring{Convertible\+To}{ConvertibleTo}} +{\footnotesize\ttfamily template$<$class From , class To $>$ \\ +\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} utl\+::\+Convertible\+To = std\+::is\+\_\+convertible$<$From, To$>$\+::value} + +Convertible\+To + +Definition at line 87 of file stl.\+h. + +\mbox{\Hypertarget{namespaceutl_ac300f0e204f0ec4bd0ca38a551bb2b88}\label{namespaceutl_ac300f0e204f0ec4bd0ca38a551bb2b88}} +\index{utl@{utl}!Copyable@{Copyable}} +\index{Copyable@{Copyable}!utl@{utl}} +\subsubsection{\texorpdfstring{Copyable}{Copyable}} +{\footnotesize\ttfamily template$<$class T $>$ \\ +\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} utl\+::\+Copyable} + +{\bfseries Initial value\+:} +\begin{DoxyCode} += + CopyConstructible && + Movable && + Assignable<\_ref\_t, \textcolor{keyword}{const} \_ref\_t> +\end{DoxyCode} +Copyable + +Definition at line 480 of file stl.\+h. + +\mbox{\Hypertarget{namespaceutl_a1be866c815c4fcb2a7344650c3491c0c}\label{namespaceutl_a1be866c815c4fcb2a7344650c3491c0c}} +\index{utl@{utl}!Copy\+Assignable@{Copy\+Assignable}} +\index{Copy\+Assignable@{Copy\+Assignable}!utl@{utl}} +\subsubsection{\texorpdfstring{Copy\+Assignable}{CopyAssignable}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} utl\+::\+Copy\+Assignable = std\+::is\+\_\+copy\+\_\+assignable$<$T$>$\+::value} + + + +Definition at line 359 of file stl.\+h. + +\mbox{\Hypertarget{namespaceutl_afb0f121b33b44640406b724c4d582b70}\label{namespaceutl_afb0f121b33b44640406b724c4d582b70}} +\index{utl@{utl}!Copy\+Constructible@{Copy\+Constructible}} +\index{Copy\+Constructible@{Copy\+Constructible}!utl@{utl}} +\subsubsection{\texorpdfstring{Copy\+Constructible}{CopyConstructible}} +{\footnotesize\ttfamily template$<$class T $>$ \\ +\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} utl\+::\+Copy\+Constructible} + +{\bfseries Initial value\+:} +\begin{DoxyCode} += + MoveConstructible && + Constructible> && ConvertibleTo<\_ref\_t, T> && + Constructible> && ConvertibleTo, T> && + Constructible && ConvertibleTo +\end{DoxyCode} +Copy\+Constructible + +Definition at line 459 of file stl.\+h. + +\mbox{\Hypertarget{namespaceutl_aacd3a17129d764e8a80c615eb4b88dc3}\label{namespaceutl_aacd3a17129d764e8a80c615eb4b88dc3}} +\index{utl@{utl}!Default\+Constructible@{Default\+Constructible}} +\index{Default\+Constructible@{Default\+Constructible}!utl@{utl}} +\subsubsection{\texorpdfstring{Default\+Constructible}{DefaultConstructible}} +{\footnotesize\ttfamily template$<$class T $>$ \\ +\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} utl\+::\+Default\+Constructible = \mbox{\hyperlink{namespaceutl_a2a3ef7a9c788ffc1291ce15d2e5869bf}{Constructible}}$<$T$>$} + +Default\+Constructible + +Definition at line 444 of file stl.\+h. + +\mbox{\Hypertarget{namespaceutl_a0904cc4071a8ea97a1d646dc0a9ca85b}\label{namespaceutl_a0904cc4071a8ea97a1d646dc0a9ca85b}} +\index{utl@{utl}!Derived\+From@{Derived\+From}} +\index{Derived\+From@{Derived\+From}!utl@{utl}} +\subsubsection{\texorpdfstring{Derived\+From}{DerivedFrom}} +{\footnotesize\ttfamily template$<$class Derived , class Base $>$ \\ +\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} utl\+::\+Derived\+From} + +{\bfseries Initial value\+:} +\begin{DoxyCode} += + std::is\_base\_of::value && + std::is\_convertible::value +\end{DoxyCode} +Derived\+From + +Definition at line 71 of file stl.\+h. + +\mbox{\Hypertarget{namespaceutl_acf2f1df100b0cc4f127243a1a83a8469}\label{namespaceutl_acf2f1df100b0cc4f127243a1a83a8469}} +\index{utl@{utl}!Destructible@{Destructible}} +\index{Destructible@{Destructible}!utl@{utl}} +\subsubsection{\texorpdfstring{Destructible}{Destructible}} +{\footnotesize\ttfamily template$<$class T $>$ \\ +\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} utl\+::\+Destructible = std\+::is\+\_\+nothrow\+\_\+destructible$<$T$>$\+::value} + +Destructible + +Definition at line 432 of file stl.\+h. + +\mbox{\Hypertarget{namespaceutl_a92a38a3d1638ccad068c24d1242ef63a}\label{namespaceutl_a92a38a3d1638ccad068c24d1242ef63a}} +\index{utl@{utl}!Equality\+Comparable@{Equality\+Comparable}} +\index{Equality\+Comparable@{Equality\+Comparable}!utl@{utl}} +\subsubsection{\texorpdfstring{Equality\+Comparable}{EqualityComparable}} +{\footnotesize\ttfamily template$<$class T $>$ \\ +\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} utl\+::\+Equality\+Comparable = \mbox{\hyperlink{namespaceutl_a216f6e14ca647d85841fa13c40dc4ee3}{Weakly\+Equality\+Comparable\+With}}$<$T, T$>$} + + + +Definition at line 596 of file stl.\+h. + +\mbox{\Hypertarget{namespaceutl_aa2be0b64c41b392c5264de5f5fee094e}\label{namespaceutl_aa2be0b64c41b392c5264de5f5fee094e}} +\index{utl@{utl}!Equality\+Comparable\+With@{Equality\+Comparable\+With}} +\index{Equality\+Comparable\+With@{Equality\+Comparable\+With}!utl@{utl}} +\subsubsection{\texorpdfstring{Equality\+Comparable\+With}{EqualityComparableWith}} +{\footnotesize\ttfamily template$<$class T , class U $>$ \\ +\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} utl\+::\+Equality\+Comparable\+With} + +{\bfseries Initial value\+:} +\begin{DoxyCode} += + EqualityComparable && + EqualityComparable && + + + + + + + + WeaklyEqualityComparableWith +\end{DoxyCode} + + +Definition at line 599 of file stl.\+h. + +\mbox{\Hypertarget{namespaceutl_a07e83d4763a298c1faf2b1069b55e286}\label{namespaceutl_a07e83d4763a298c1faf2b1069b55e286}} +\index{utl@{utl}!Floating\+Point@{Floating\+Point}} +\index{Floating\+Point@{Floating\+Point}!utl@{utl}} +\subsubsection{\texorpdfstring{Floating\+Point}{FloatingPoint}} +{\footnotesize\ttfamily template$<$class T $>$ \\ +\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} utl\+::\+Floating\+Point} + +{\bfseries Initial value\+:} +\begin{DoxyCode} += + std::is\_floating\_point::value && Arithmetic +\end{DoxyCode} +Floating\+Point + +Definition at line 743 of file stl.\+h. + +\mbox{\Hypertarget{namespaceutl_a80a0424d220ac1f7be50086617a05dbd}\label{namespaceutl_a80a0424d220ac1f7be50086617a05dbd}} +\index{utl@{utl}!Idx\+\_\+dev@{Idx\+\_\+dev}} +\index{Idx\+\_\+dev@{Idx\+\_\+dev}!utl@{utl}} +\subsubsection{\texorpdfstring{Idx\+\_\+dev}{Idx\_dev}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp $>$ \\ +constexpr bool utl\+::\+Idx\+\_\+dev = \mbox{\hyperlink{structutl_1_1idx__dev__details_1_1is__idx__dev__}{idx\+\_\+dev\+\_\+details\+::is\+\_\+idx\+\_\+dev\+\_\+}} $<$\+\_\+\+Tp$>$\+::value} + +Predicate for input device checking +\begin{DoxyParams}{Parameters} +{\em \+\_\+\+Tp} & Type to check \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +True if \+\_\+\+Tp is a input device +\end{DoxyReturn} + + +Definition at line 523 of file idx\+\_\+dev.\+h. + +\mbox{\Hypertarget{namespaceutl_a1470ab9407ee21ea374b2c7a81e3511b}\label{namespaceutl_a1470ab9407ee21ea374b2c7a81e3511b}} +\index{utl@{utl}!In\+\_\+dev@{In\+\_\+dev}} +\index{In\+\_\+dev@{In\+\_\+dev}!utl@{utl}} +\subsubsection{\texorpdfstring{In\+\_\+dev}{In\_dev}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp $>$ \\ +constexpr bool utl\+::\+In\+\_\+dev = \mbox{\hyperlink{structutl_1_1in__dev__details_1_1is__in__dev__}{in\+\_\+dev\+\_\+details\+::is\+\_\+in\+\_\+dev\+\_\+}} $<$\+\_\+\+Tp$>$\+::value} + +Predicate for input device checking +\begin{DoxyParams}{Parameters} +{\em \+\_\+\+Tp} & Type to check \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +True if \+\_\+\+Tp is a input device +\end{DoxyReturn} + + +Definition at line 335 of file in\+\_\+dev.\+h. + +\mbox{\Hypertarget{namespaceutl_ac447a457f18a1c4dcd1dddb4c2789006}\label{namespaceutl_ac447a457f18a1c4dcd1dddb4c2789006}} +\index{utl@{utl}!Inbuf\+\_\+dev@{Inbuf\+\_\+dev}} +\index{Inbuf\+\_\+dev@{Inbuf\+\_\+dev}!utl@{utl}} +\subsubsection{\texorpdfstring{Inbuf\+\_\+dev}{Inbuf\_dev}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp $>$ \\ +constexpr bool utl\+::\+Inbuf\+\_\+dev = \mbox{\hyperlink{structutl_1_1inbuf__dev__details_1_1is__inbuf__dev__}{inbuf\+\_\+dev\+\_\+details\+::is\+\_\+inbuf\+\_\+dev\+\_\+}} $<$\+\_\+\+Tp$>$\+::value} + +Predicate for input device checking +\begin{DoxyParams}{Parameters} +{\em \+\_\+\+Tp} & Type to check \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +True if \+\_\+\+Tp is a input device +\end{DoxyReturn} + + +Definition at line 380 of file inbuf\+\_\+dev.\+h. + +\mbox{\Hypertarget{namespaceutl_ada9137016ddccf3339b2f6b3c409cc3c}\label{namespaceutl_ada9137016ddccf3339b2f6b3c409cc3c}} +\index{utl@{utl}!Integral@{Integral}} +\index{Integral@{Integral}!utl@{utl}} +\subsubsection{\texorpdfstring{Integral}{Integral}} +{\footnotesize\ttfamily template$<$class T $>$ \\ +\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} utl\+::\+Integral = std\+::is\+\_\+integral$<$T$>$\+::value} + +Integral + +Definition at line 340 of file stl.\+h. + +\mbox{\Hypertarget{namespaceutl_a9d5bbdf19b08d6d714ec696b0ec44d0a}\label{namespaceutl_a9d5bbdf19b08d6d714ec696b0ec44d0a}} +\index{utl@{utl}!Invocable@{Invocable}} +\index{Invocable@{Invocable}!utl@{utl}} +\subsubsection{\texorpdfstring{Invocable}{Invocable}} +{\footnotesize\ttfamily template$<$class F , class... Args$>$ \\ +\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} utl\+::\+Invocable = \mbox{\hyperlink{structutl_1_1is__invocable}{is\+\_\+invocable}}$<$F, Args...$>$\+::value} + +Invocable + +Definition at line 750 of file stl.\+h. + +\mbox{\Hypertarget{namespaceutl_afc25cb525eb29162042c21238f28f26e}\label{namespaceutl_afc25cb525eb29162042c21238f28f26e}} +\index{utl@{utl}!Movable@{Movable}} +\index{Movable@{Movable}!utl@{utl}} +\subsubsection{\texorpdfstring{Movable}{Movable}} +{\footnotesize\ttfamily template$<$class T $>$ \\ +\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} utl\+::\+Movable} + +{\bfseries Initial value\+:} +\begin{DoxyCode} += + std::is\_object::value && + MoveConstructible && + Assignable<\_ref\_t, T> && + Swappable +\end{DoxyCode} +Movable + +Definition at line 469 of file stl.\+h. + +\mbox{\Hypertarget{namespaceutl_a7b8e4a26148ed5f2c60e4fd7d41e7e63}\label{namespaceutl_a7b8e4a26148ed5f2c60e4fd7d41e7e63}} +\index{utl@{utl}!Move\+Assignable@{Move\+Assignable}} +\index{Move\+Assignable@{Move\+Assignable}!utl@{utl}} +\subsubsection{\texorpdfstring{Move\+Assignable}{MoveAssignable}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} utl\+::\+Move\+Assignable = std\+::is\+\_\+move\+\_\+assignable$<$T$>$\+::value} + + + +Definition at line 356 of file stl.\+h. + +\mbox{\Hypertarget{namespaceutl_a2a728f3d477d96f4f719bf62079321cf}\label{namespaceutl_a2a728f3d477d96f4f719bf62079321cf}} +\index{utl@{utl}!Move\+Constructible@{Move\+Constructible}} +\index{Move\+Constructible@{Move\+Constructible}!utl@{utl}} +\subsubsection{\texorpdfstring{Move\+Constructible}{MoveConstructible}} +{\footnotesize\ttfamily template$<$class T $>$ \\ +\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} utl\+::\+Move\+Constructible} + +{\bfseries Initial value\+:} +\begin{DoxyCode} += + Constructible && ConvertibleTo +\end{DoxyCode} +Move\+Constructible \begin{DoxyNote}{Note} +Another approach would be std\+::is\+\_\+move\+\_\+constructible$<$\+T$>$\+::value; +\end{DoxyNote} + + +Definition at line 452 of file stl.\+h. + +\mbox{\Hypertarget{namespaceutl_a77f27f594c8696fcfbc85a9ec66c11f1}\label{namespaceutl_a77f27f594c8696fcfbc85a9ec66c11f1}} +\index{utl@{utl}!Out\+\_\+dev@{Out\+\_\+dev}} +\index{Out\+\_\+dev@{Out\+\_\+dev}!utl@{utl}} +\subsubsection{\texorpdfstring{Out\+\_\+dev}{Out\_dev}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp $>$ \\ +constexpr bool utl\+::\+Out\+\_\+dev = \mbox{\hyperlink{structutl_1_1out__dev__details_1_1is__out__dev__}{out\+\_\+dev\+\_\+details\+::is\+\_\+out\+\_\+dev\+\_\+}}$<$\+\_\+\+Tp$>$\+::value} + +Predicate for output device checking +\begin{DoxyParams}{Parameters} +{\em \+\_\+\+Tp} & Type to check \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +True if \+\_\+\+Tp is a output device +\end{DoxyReturn} + + +Definition at line 357 of file out\+\_\+dev.\+h. + +\mbox{\Hypertarget{namespaceutl_aae56a019cdd2006c4f07d2e207289195}\label{namespaceutl_aae56a019cdd2006c4f07d2e207289195}} +\index{utl@{utl}!Predicate@{Predicate}} +\index{Predicate@{Predicate}!utl@{utl}} +\subsubsection{\texorpdfstring{Predicate}{Predicate}} +{\footnotesize\ttfamily template$<$class F , class... Args$>$ \\ +\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} utl\+::\+Predicate} + +{\bfseries Initial value\+:} +\begin{DoxyCode} += + \mbox{\hyperlink{namespaceutl_ace9ef6da96e8cf5dc72762cd66240186}{RegularInvocable}} && + \mbox{\hyperlink{namespaceutl_a38e00606b4b45a2ac59fa4576b4498c6}{Boolean}}<\mbox{\hyperlink{namespaceutl_ae40494acc30f2894c74544f3e9142933}{invoke\_result\_t}}> +\end{DoxyCode} + + +Definition at line 759 of file stl.\+h. + +\mbox{\Hypertarget{namespaceutl_a3accaa436a17248b4214baebc582b2f6}\label{namespaceutl_a3accaa436a17248b4214baebc582b2f6}} +\index{utl@{utl}!Regular@{Regular}} +\index{Regular@{Regular}!utl@{utl}} +\subsubsection{\texorpdfstring{Regular}{Regular}} +{\footnotesize\ttfamily template$<$class T $>$ \\ +\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} utl\+::\+Regular = \mbox{\hyperlink{namespaceutl_af6b010e85897cb590e66a52157be1af5}{Semiregular}}$<$T$>$ \&\& \mbox{\hyperlink{namespaceutl_a92a38a3d1638ccad068c24d1242ef63a}{Equality\+Comparable}}$<$T$>$} + +Regular + +Definition at line 723 of file stl.\+h. + +\mbox{\Hypertarget{namespaceutl_ace9ef6da96e8cf5dc72762cd66240186}\label{namespaceutl_ace9ef6da96e8cf5dc72762cd66240186}} +\index{utl@{utl}!Regular\+Invocable@{Regular\+Invocable}} +\index{Regular\+Invocable@{Regular\+Invocable}!utl@{utl}} +\subsubsection{\texorpdfstring{Regular\+Invocable}{RegularInvocable}} +{\footnotesize\ttfamily template$<$class F , class... Args$>$ \\ +\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} utl\+::\+Regular\+Invocable = \mbox{\hyperlink{namespaceutl_a9d5bbdf19b08d6d714ec696b0ec44d0a}{Invocable}}$<$F, Args...$>$} + + + +Definition at line 756 of file stl.\+h. + +\mbox{\Hypertarget{namespaceutl_a6d1e9b4853dd005ddaf61a79333cab98}\label{namespaceutl_a6d1e9b4853dd005ddaf61a79333cab98}} +\index{utl@{utl}!Relation@{Relation}} +\index{Relation@{Relation}!utl@{utl}} +\subsubsection{\texorpdfstring{Relation}{Relation}} +{\footnotesize\ttfamily template$<$class R , class T , class U $>$ \\ +\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} utl\+::\+Relation} + +{\bfseries Initial value\+:} +\begin{DoxyCode} += + Predicate && Predicate && + Predicate && Predicate +\end{DoxyCode} + + +Definition at line 764 of file stl.\+h. + +\mbox{\Hypertarget{namespaceutl_af86da3571c3026c6bbd501c6b7bc5093}\label{namespaceutl_af86da3571c3026c6bbd501c6b7bc5093}} +\index{utl@{utl}!Same@{Same}} +\index{Same@{Same}!utl@{utl}} +\subsubsection{\texorpdfstring{Same}{Same}} +{\footnotesize\ttfamily template$<$class T , class U $>$ \\ +\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} utl\+::\+Same = \mbox{\hyperlink{structutl_1_1meta_1_1same__}{meta\+::same\+\_\+}}$<$T, U$>$\+::value} + +Same + +Definition at line 62 of file stl.\+h. + +\mbox{\Hypertarget{namespaceutl_a7f86c4bf42b13d9525481d731b194308}\label{namespaceutl_a7f86c4bf42b13d9525481d731b194308}} +\index{utl@{utl}!Scalar@{Scalar}} +\index{Scalar@{Scalar}!utl@{utl}} +\subsubsection{\texorpdfstring{Scalar}{Scalar}} +{\footnotesize\ttfamily template$<$class T $>$ \\ +\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} utl\+::\+Scalar} + +{\bfseries Initial value\+:} +\begin{DoxyCode} += + std::is\_scalar::value && Regular +\end{DoxyCode} +Scalar + +Definition at line 729 of file stl.\+h. + +\mbox{\Hypertarget{namespaceutl_af6b010e85897cb590e66a52157be1af5}\label{namespaceutl_af6b010e85897cb590e66a52157be1af5}} +\index{utl@{utl}!Semiregular@{Semiregular}} +\index{Semiregular@{Semiregular}!utl@{utl}} +\subsubsection{\texorpdfstring{Semiregular}{Semiregular}} +{\footnotesize\ttfamily template$<$class T $>$ \\ +\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} utl\+::\+Semiregular = \mbox{\hyperlink{namespaceutl_ac300f0e204f0ec4bd0ca38a551bb2b88}{Copyable}}$<$T$>$ \&\& \mbox{\hyperlink{namespaceutl_aacd3a17129d764e8a80c615eb4b88dc3}{Default\+Constructible}}$<$T$>$} + +Semiregular + +Definition at line 717 of file stl.\+h. + +\mbox{\Hypertarget{namespaceutl_a667b758d906c466d1b8a878a45750bf1}\label{namespaceutl_a667b758d906c466d1b8a878a45750bf1}} +\index{utl@{utl}!Signed\+Integral@{Signed\+Integral}} +\index{Signed\+Integral@{Signed\+Integral}!utl@{utl}} +\subsubsection{\texorpdfstring{Signed\+Integral}{SignedIntegral}} +{\footnotesize\ttfamily template$<$class T $>$ \\ +\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} utl\+::\+Signed\+Integral = \mbox{\hyperlink{namespaceutl_ada9137016ddccf3339b2f6b3c409cc3c}{Integral}}$<$T$>$ \&\& std\+::is\+\_\+signed$<$T$>$\+::value} + +Signed Integral + +Definition at line 346 of file stl.\+h. + +\mbox{\Hypertarget{namespaceutl_a720d6ece86f3f3320816aaae02eb16e4}\label{namespaceutl_a720d6ece86f3f3320816aaae02eb16e4}} +\index{utl@{utl}!Strict\+Totally\+Ordered@{Strict\+Totally\+Ordered}} +\index{Strict\+Totally\+Ordered@{Strict\+Totally\+Ordered}!utl@{utl}} +\subsubsection{\texorpdfstring{Strict\+Totally\+Ordered}{StrictTotallyOrdered}} +{\footnotesize\ttfamily template$<$class T $>$ \\ +\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} utl\+::\+Strict\+Totally\+Ordered} + +{\bfseries Initial value\+:} +\begin{DoxyCode} += + EqualityComparable && + Same > +\end{DoxyCode} + + +Definition at line 647 of file stl.\+h. + +\mbox{\Hypertarget{namespaceutl_a5599d14d1bd008e4c14787d610a2b429}\label{namespaceutl_a5599d14d1bd008e4c14787d610a2b429}} +\index{utl@{utl}!Strict\+Totally\+Ordered\+With@{Strict\+Totally\+Ordered\+With}} +\index{Strict\+Totally\+Ordered\+With@{Strict\+Totally\+Ordered\+With}!utl@{utl}} +\subsubsection{\texorpdfstring{Strict\+Totally\+Ordered\+With}{StrictTotallyOrderedWith}} +{\footnotesize\ttfamily template$<$class T , class U $>$ \\ +\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} utl\+::\+Strict\+Totally\+Ordered\+With} + +{\bfseries Initial value\+:} +\begin{DoxyCode} += + StrictTotallyOrdered && + StrictTotallyOrdered && + EqualityComparableWith && + Same > +\end{DoxyCode} + + +Definition at line 706 of file stl.\+h. + +\mbox{\Hypertarget{namespaceutl_aa4b7b9105cfab3cd72865b5e0db23b11}\label{namespaceutl_aa4b7b9105cfab3cd72865b5e0db23b11}} +\index{utl@{utl}!Strict\+Weak\+Order@{Strict\+Weak\+Order}} +\index{Strict\+Weak\+Order@{Strict\+Weak\+Order}!utl@{utl}} +\subsubsection{\texorpdfstring{Strict\+Weak\+Order}{StrictWeakOrder}} +{\footnotesize\ttfamily template$<$class R , class T , class U $>$ \\ +\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} utl\+::\+Strict\+Weak\+Order = \mbox{\hyperlink{namespaceutl_a6d1e9b4853dd005ddaf61a79333cab98}{Relation}}$<$R, T, U$>$} + + + +Definition at line 769 of file stl.\+h. + +\mbox{\Hypertarget{namespaceutl_ae2b149b19fb3d69a4fc555e4474bf9de}\label{namespaceutl_ae2b149b19fb3d69a4fc555e4474bf9de}} +\index{utl@{utl}!Swappable@{Swappable}} +\index{Swappable@{Swappable}!utl@{utl}} +\subsubsection{\texorpdfstring{Swappable}{Swappable}} +{\footnotesize\ttfamily template$<$class T $>$ \\ +\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} utl\+::\+Swappable = \mbox{\hyperlink{namespaceutl_ab437a6d3a1f420b44e01378ae37fcb24}{is\+\_\+swappable\+\_\+with}}$<$T, T$>$\+::type\+::value} + + + +Definition at line 425 of file stl.\+h. + +\mbox{\Hypertarget{namespaceutl_a4a3bb850ba59d499382bd11153104af7}\label{namespaceutl_a4a3bb850ba59d499382bd11153104af7}} +\index{utl@{utl}!Swappable\+With@{Swappable\+With}} +\index{Swappable\+With@{Swappable\+With}!utl@{utl}} +\subsubsection{\texorpdfstring{Swappable\+With}{SwappableWith}} +{\footnotesize\ttfamily template$<$class T , class U $>$ \\ +\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} utl\+::\+Swappable\+With} + +{\bfseries Initial value\+:} +\begin{DoxyCode} += + is\_swappable\_with::type::value && + is\_swappable\_with::type::value && + is\_swappable\_with::type::value && + is\_swappable\_with::type::value +\end{DoxyCode} + + +Definition at line 413 of file stl.\+h. + +\mbox{\Hypertarget{namespaceutl_a7fb6eaf8fc1c5d65755c8c96a7a9b61f}\label{namespaceutl_a7fb6eaf8fc1c5d65755c8c96a7a9b61f}} +\index{utl@{utl}!Unsigned\+Integral@{Unsigned\+Integral}} +\index{Unsigned\+Integral@{Unsigned\+Integral}!utl@{utl}} +\subsubsection{\texorpdfstring{Unsigned\+Integral}{UnsignedIntegral}} +{\footnotesize\ttfamily template$<$class T $>$ \\ +\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} utl\+::\+Unsigned\+Integral = \mbox{\hyperlink{namespaceutl_ada9137016ddccf3339b2f6b3c409cc3c}{Integral}}$<$T$>$ \&\& !std\+::is\+\_\+signed$<$T$>$\+::value} + +Unsigned Integral + +Definition at line 352 of file stl.\+h. + +\mbox{\Hypertarget{namespaceutl_a216f6e14ca647d85841fa13c40dc4ee3}\label{namespaceutl_a216f6e14ca647d85841fa13c40dc4ee3}} +\index{utl@{utl}!Weakly\+Equality\+Comparable\+With@{Weakly\+Equality\+Comparable\+With}} +\index{Weakly\+Equality\+Comparable\+With@{Weakly\+Equality\+Comparable\+With}!utl@{utl}} +\subsubsection{\texorpdfstring{Weakly\+Equality\+Comparable\+With}{WeaklyEqualityComparableWith}} +{\footnotesize\ttfamily template$<$class T , class U $>$ \\ +\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} utl\+::\+Weakly\+Equality\+Comparable\+With} + +{\bfseries Initial value\+:} +\begin{DoxyCode} += + + + + + + + + + + Same> +\end{DoxyCode} + + +Definition at line 582 of file stl.\+h. + +\mbox{\Hypertarget{namespaceutl_a25b4f216e3d7754b1c7088dd59504dee}\label{namespaceutl_a25b4f216e3d7754b1c7088dd59504dee}} +\index{utl@{utl}!Weakly\+Incrementable@{Weakly\+Incrementable}} +\index{Weakly\+Incrementable@{Weakly\+Incrementable}!utl@{utl}} +\subsubsection{\texorpdfstring{Weakly\+Incrementable}{WeaklyIncrementable}} +{\footnotesize\ttfamily template$<$class I $>$ \\ +\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} utl\+::\+Weakly\+Incrementable} + +{\bfseries Initial value\+:} +\begin{DoxyCode} += + Semiregular + && Same<\_ref\_t, meta::detected\_t>> + && meta::is\_detected>::value +\end{DoxyCode} + + +Definition at line 49 of file iterators.\+h. + diff --git a/doc/latex/namespaceutl_1_1__1wire__i__det.tex b/doc/latex/namespaceutl_1_1__1wire__i__det.tex new file mode 100644 index 0000000..591a92f --- /dev/null +++ b/doc/latex/namespaceutl_1_1__1wire__i__det.tex @@ -0,0 +1,305 @@ +\hypertarget{namespaceutl_1_1__1wire__i__det}{}\section{utl\+:\+:\+\_\+1wire\+\_\+i\+\_\+det Namespace Reference} +\label{namespaceutl_1_1__1wire__i__det}\index{utl\+::\+\_\+1wire\+\_\+i\+\_\+det@{utl\+::\+\_\+1wire\+\_\+i\+\_\+det}} +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structutl_1_1__1wire__i__det_1_1is__1wire__}{is\+\_\+1wire\+\_\+}} +\begin{DoxyCompactList}\small\item\em Primary template to catch any non 1-\/wire interface types. \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1__1wire__i__det_1_1is__1wire___3_01___tp_00_01meta_1_1void__t_3_01void_01_4_01_4}{is\+\_\+1wire\+\_\+$<$ \+\_\+\+Tp, meta\+::void\+\_\+t$<$ void $>$ $>$}} +\begin{DoxyCompactList}\small\item\em template to catch a proper 1-\/wire interface type \end{DoxyCompactList}\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det_a502fff2c967d26334aa3c2fcf0b037ba}{try\+\_\+reset\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().reset(declval$<$ typename \+\_\+\+Tp\+::\+Speed $>$())) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det_a303cf58468da38ceeaa2477570f82948}{try\+\_\+rx1\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().rx\+\_\+data(declval$<$ typename \+\_\+\+Tp\+::\+Speed $>$())) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det_ac6a2b551bcf51b426c2e8506ab2473fe}{try\+\_\+tx1\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().tx\+\_\+data(declval$<$ \mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} $>$(), declval$<$ typename \+\_\+\+Tp\+::\+Speed $>$())) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det_a3416ddb06e089a5c191d356dd358ff00}{try\+\_\+match\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().match(declval$<$ \mbox{\hyperlink{classutl_1_1__1wire__id__t}{\+\_\+1wire\+\_\+id\+\_\+t}} \& $>$(), declval$<$ typename \+\_\+\+Tp\+::\+Speed $>$())) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det_aa85f59a97c388dc259589cb517824233}{try\+\_\+match\+\_\+n\+\_\+ovdr\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().match\+\_\+n\+\_\+ovdr(declval$<$ \mbox{\hyperlink{classutl_1_1__1wire__id__t}{\+\_\+1wire\+\_\+id\+\_\+t}} \& $>$())) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det_a9d0825a40484e7868bf41fc4825b4f7d}{try\+\_\+skip\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().skip(declval$<$ typename \+\_\+\+Tp\+::\+Speed $>$())) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det_af6c9df3cb6bf2479e8d30a5d36ab71cb}{try\+\_\+skip\+\_\+n\+\_\+ovdr\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().skip\+\_\+n\+\_\+ovdr()) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det_a3dc7b4df37cebf753556ba527306cf9f}{try\+\_\+first\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().first(declval$<$ typename \+\_\+\+Tp\+::\+Speed $>$())) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det_a67a086b8e4e3ee051ccb0351e6456630}{try\+\_\+next\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().next(declval$<$ typename \+\_\+\+Tp\+::\+Speed $>$())) +\end{DoxyCompactItemize} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename \+\_\+T $>$ }\\\mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det_a85a3a19778edb037f6341f37135a5494}{\+\_\+touch}} (\+\_\+T \&obj, \mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} out, typename \+\_\+\+T\+::\+Speed s) +\begin{DoxyCompactList}\small\item\em Write a byte to 1-\/\+Wire bus and read the response. \end{DoxyCompactList}\item +{\footnotesize template$<$typename \+\_\+T $>$ }\\void \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det_a1b07e623a39ce82f1514846169f3a954}{\+\_\+match}} (\+\_\+T \&obj, \mbox{\hyperlink{classutl_1_1__1wire__id__t}{\+\_\+1wire\+\_\+id\+\_\+t}} \&id, typename \+\_\+\+T\+::\+Speed s) +\item +{\footnotesize template$<$typename \+\_\+T $>$ }\\void \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det_a1e14f734d5e232c914be6ea97982aa40}{\+\_\+match\+\_\+n\+\_\+ovdr}} (\+\_\+T \&obj, \mbox{\hyperlink{classutl_1_1__1wire__id__t}{\+\_\+1wire\+\_\+id\+\_\+t}} \&id) +\item +{\footnotesize template$<$typename \+\_\+T $>$ }\\void \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det_a9ea80f4ef2422a7fd71788c42b228053}{\+\_\+skip}} (\+\_\+T \&obj, typename \+\_\+\+T\+::\+Speed s) +\item +{\footnotesize template$<$typename \+\_\+T $>$ }\\void \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det_ace224a4d329166bfd9f3448e492baf2b}{\+\_\+skip\+\_\+n\+\_\+ovdr}} (\+\_\+T \&obj) +\item +{\footnotesize template$<$typename \+\_\+T $>$ }\\\mbox{\hyperlink{classutl_1_1__1wire__id__t}{\+\_\+1wire\+\_\+id\+\_\+t}} \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det_a237719ffa105f988cb175d6720712a4a}{\+\_\+first}} (\+\_\+T \&obj, typename \+\_\+\+T\+::\+Speed s, bool alarm) +\begin{DoxyCompactList}\small\item\em \textquotesingle{}first\textquotesingle{} operation, to search on the 1-\/\+Wire for the first device. This is performed by setting dec\+\_\+, pos\+\_\+ and cur\+\_\+ to zero and then doing the search. \end{DoxyCompactList}\item +{\footnotesize template$<$typename \+\_\+T $>$ }\\\mbox{\hyperlink{classutl_1_1__1wire__id__t}{\+\_\+1wire\+\_\+id\+\_\+t}} \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det_a1f7b692a40769ebe59343613b147e01d}{\+\_\+next}} (\+\_\+T \&obj, typename \+\_\+\+T\+::\+Speed s, bool alarm) +\begin{DoxyCompactList}\small\item\em \textquotesingle{}next\textquotesingle{} operation, to search on the 1-\/\+Wire for the next device. This search is usually performed after a \textquotesingle{}first\textquotesingle{} operation or another \textquotesingle{}next\textquotesingle{} operation. Based on maxim-\/ic application note 187. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\subsection{Typedef Documentation} +\mbox{\Hypertarget{namespaceutl_1_1__1wire__i__det_a3dc7b4df37cebf753556ba527306cf9f}\label{namespaceutl_1_1__1wire__i__det_a3dc7b4df37cebf753556ba527306cf9f}} +\index{utl\+::\+\_\+1wire\+\_\+i\+\_\+det@{utl\+::\+\_\+1wire\+\_\+i\+\_\+det}!try\+\_\+first\+\_\+t@{try\+\_\+first\+\_\+t}} +\index{try\+\_\+first\+\_\+t@{try\+\_\+first\+\_\+t}!utl\+::\+\_\+1wire\+\_\+i\+\_\+det@{utl\+::\+\_\+1wire\+\_\+i\+\_\+det}} +\subsubsection{\texorpdfstring{try\+\_\+first\+\_\+t}{try\_first\_t}} +{\footnotesize\ttfamily template$<$class \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det_a3dc7b4df37cebf753556ba527306cf9f}{utl\+::\+\_\+1wire\+\_\+i\+\_\+det\+::try\+\_\+first\+\_\+t}} = typedef decltype (declval$<$\+\_\+\+Tp$>$().first (declval$<$typename \+\_\+\+Tp\+::\+Speed$>$()))} + + + +Definition at line 679 of file \+\_\+1wire.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1__1wire__i__det_aa85f59a97c388dc259589cb517824233}\label{namespaceutl_1_1__1wire__i__det_aa85f59a97c388dc259589cb517824233}} +\index{utl\+::\+\_\+1wire\+\_\+i\+\_\+det@{utl\+::\+\_\+1wire\+\_\+i\+\_\+det}!try\+\_\+match\+\_\+n\+\_\+ovdr\+\_\+t@{try\+\_\+match\+\_\+n\+\_\+ovdr\+\_\+t}} +\index{try\+\_\+match\+\_\+n\+\_\+ovdr\+\_\+t@{try\+\_\+match\+\_\+n\+\_\+ovdr\+\_\+t}!utl\+::\+\_\+1wire\+\_\+i\+\_\+det@{utl\+::\+\_\+1wire\+\_\+i\+\_\+det}} +\subsubsection{\texorpdfstring{try\+\_\+match\+\_\+n\+\_\+ovdr\+\_\+t}{try\_match\_n\_ovdr\_t}} +{\footnotesize\ttfamily template$<$class \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det_aa85f59a97c388dc259589cb517824233}{utl\+::\+\_\+1wire\+\_\+i\+\_\+det\+::try\+\_\+match\+\_\+n\+\_\+ovdr\+\_\+t}} = typedef decltype (declval$<$\+\_\+\+Tp$>$().match\+\_\+n\+\_\+ovdr (declval$<$\mbox{\hyperlink{classutl_1_1__1wire__id__t}{\+\_\+1wire\+\_\+id\+\_\+t}}\&$>$()))} + + + +Definition at line 676 of file \+\_\+1wire.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1__1wire__i__det_a3416ddb06e089a5c191d356dd358ff00}\label{namespaceutl_1_1__1wire__i__det_a3416ddb06e089a5c191d356dd358ff00}} +\index{utl\+::\+\_\+1wire\+\_\+i\+\_\+det@{utl\+::\+\_\+1wire\+\_\+i\+\_\+det}!try\+\_\+match\+\_\+t@{try\+\_\+match\+\_\+t}} +\index{try\+\_\+match\+\_\+t@{try\+\_\+match\+\_\+t}!utl\+::\+\_\+1wire\+\_\+i\+\_\+det@{utl\+::\+\_\+1wire\+\_\+i\+\_\+det}} +\subsubsection{\texorpdfstring{try\+\_\+match\+\_\+t}{try\_match\_t}} +{\footnotesize\ttfamily template$<$class \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det_a3416ddb06e089a5c191d356dd358ff00}{utl\+::\+\_\+1wire\+\_\+i\+\_\+det\+::try\+\_\+match\+\_\+t}} = typedef decltype (declval$<$\+\_\+\+Tp$>$().match (declval$<$\mbox{\hyperlink{classutl_1_1__1wire__id__t}{\+\_\+1wire\+\_\+id\+\_\+t}}\&$>$(), declval$<$typename \+\_\+\+Tp\+::\+Speed$>$()))} + + + +Definition at line 675 of file \+\_\+1wire.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1__1wire__i__det_a67a086b8e4e3ee051ccb0351e6456630}\label{namespaceutl_1_1__1wire__i__det_a67a086b8e4e3ee051ccb0351e6456630}} +\index{utl\+::\+\_\+1wire\+\_\+i\+\_\+det@{utl\+::\+\_\+1wire\+\_\+i\+\_\+det}!try\+\_\+next\+\_\+t@{try\+\_\+next\+\_\+t}} +\index{try\+\_\+next\+\_\+t@{try\+\_\+next\+\_\+t}!utl\+::\+\_\+1wire\+\_\+i\+\_\+det@{utl\+::\+\_\+1wire\+\_\+i\+\_\+det}} +\subsubsection{\texorpdfstring{try\+\_\+next\+\_\+t}{try\_next\_t}} +{\footnotesize\ttfamily template$<$class \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det_a67a086b8e4e3ee051ccb0351e6456630}{utl\+::\+\_\+1wire\+\_\+i\+\_\+det\+::try\+\_\+next\+\_\+t}} = typedef decltype (declval$<$\+\_\+\+Tp$>$().next (declval$<$typename \+\_\+\+Tp\+::\+Speed$>$()))} + + + +Definition at line 680 of file \+\_\+1wire.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1__1wire__i__det_a502fff2c967d26334aa3c2fcf0b037ba}\label{namespaceutl_1_1__1wire__i__det_a502fff2c967d26334aa3c2fcf0b037ba}} +\index{utl\+::\+\_\+1wire\+\_\+i\+\_\+det@{utl\+::\+\_\+1wire\+\_\+i\+\_\+det}!try\+\_\+reset\+\_\+t@{try\+\_\+reset\+\_\+t}} +\index{try\+\_\+reset\+\_\+t@{try\+\_\+reset\+\_\+t}!utl\+::\+\_\+1wire\+\_\+i\+\_\+det@{utl\+::\+\_\+1wire\+\_\+i\+\_\+det}} +\subsubsection{\texorpdfstring{try\+\_\+reset\+\_\+t}{try\_reset\_t}} +{\footnotesize\ttfamily template$<$class \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det_a502fff2c967d26334aa3c2fcf0b037ba}{utl\+::\+\_\+1wire\+\_\+i\+\_\+det\+::try\+\_\+reset\+\_\+t}} = typedef decltype (declval$<$\+\_\+\+Tp$>$().reset (declval$<$typename \+\_\+\+Tp\+::\+Speed$>$()))} + + + +Definition at line 671 of file \+\_\+1wire.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1__1wire__i__det_a303cf58468da38ceeaa2477570f82948}\label{namespaceutl_1_1__1wire__i__det_a303cf58468da38ceeaa2477570f82948}} +\index{utl\+::\+\_\+1wire\+\_\+i\+\_\+det@{utl\+::\+\_\+1wire\+\_\+i\+\_\+det}!try\+\_\+rx1\+\_\+t@{try\+\_\+rx1\+\_\+t}} +\index{try\+\_\+rx1\+\_\+t@{try\+\_\+rx1\+\_\+t}!utl\+::\+\_\+1wire\+\_\+i\+\_\+det@{utl\+::\+\_\+1wire\+\_\+i\+\_\+det}} +\subsubsection{\texorpdfstring{try\+\_\+rx1\+\_\+t}{try\_rx1\_t}} +{\footnotesize\ttfamily template$<$class \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det_a303cf58468da38ceeaa2477570f82948}{utl\+::\+\_\+1wire\+\_\+i\+\_\+det\+::try\+\_\+rx1\+\_\+t}} = typedef decltype (declval$<$\+\_\+\+Tp$>$().rx\+\_\+data (declval$<$typename \+\_\+\+Tp\+::\+Speed$>$()))} + + + +Definition at line 672 of file \+\_\+1wire.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1__1wire__i__det_af6c9df3cb6bf2479e8d30a5d36ab71cb}\label{namespaceutl_1_1__1wire__i__det_af6c9df3cb6bf2479e8d30a5d36ab71cb}} +\index{utl\+::\+\_\+1wire\+\_\+i\+\_\+det@{utl\+::\+\_\+1wire\+\_\+i\+\_\+det}!try\+\_\+skip\+\_\+n\+\_\+ovdr\+\_\+t@{try\+\_\+skip\+\_\+n\+\_\+ovdr\+\_\+t}} +\index{try\+\_\+skip\+\_\+n\+\_\+ovdr\+\_\+t@{try\+\_\+skip\+\_\+n\+\_\+ovdr\+\_\+t}!utl\+::\+\_\+1wire\+\_\+i\+\_\+det@{utl\+::\+\_\+1wire\+\_\+i\+\_\+det}} +\subsubsection{\texorpdfstring{try\+\_\+skip\+\_\+n\+\_\+ovdr\+\_\+t}{try\_skip\_n\_ovdr\_t}} +{\footnotesize\ttfamily template$<$class \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det_af6c9df3cb6bf2479e8d30a5d36ab71cb}{utl\+::\+\_\+1wire\+\_\+i\+\_\+det\+::try\+\_\+skip\+\_\+n\+\_\+ovdr\+\_\+t}} = typedef decltype (declval$<$\+\_\+\+Tp$>$().skip\+\_\+n\+\_\+ovdr ())} + + + +Definition at line 678 of file \+\_\+1wire.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1__1wire__i__det_a9d0825a40484e7868bf41fc4825b4f7d}\label{namespaceutl_1_1__1wire__i__det_a9d0825a40484e7868bf41fc4825b4f7d}} +\index{utl\+::\+\_\+1wire\+\_\+i\+\_\+det@{utl\+::\+\_\+1wire\+\_\+i\+\_\+det}!try\+\_\+skip\+\_\+t@{try\+\_\+skip\+\_\+t}} +\index{try\+\_\+skip\+\_\+t@{try\+\_\+skip\+\_\+t}!utl\+::\+\_\+1wire\+\_\+i\+\_\+det@{utl\+::\+\_\+1wire\+\_\+i\+\_\+det}} +\subsubsection{\texorpdfstring{try\+\_\+skip\+\_\+t}{try\_skip\_t}} +{\footnotesize\ttfamily template$<$class \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det_a9d0825a40484e7868bf41fc4825b4f7d}{utl\+::\+\_\+1wire\+\_\+i\+\_\+det\+::try\+\_\+skip\+\_\+t}} = typedef decltype (declval$<$\+\_\+\+Tp$>$().skip (declval$<$typename \+\_\+\+Tp\+::\+Speed$>$()))} + + + +Definition at line 677 of file \+\_\+1wire.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1__1wire__i__det_ac6a2b551bcf51b426c2e8506ab2473fe}\label{namespaceutl_1_1__1wire__i__det_ac6a2b551bcf51b426c2e8506ab2473fe}} +\index{utl\+::\+\_\+1wire\+\_\+i\+\_\+det@{utl\+::\+\_\+1wire\+\_\+i\+\_\+det}!try\+\_\+tx1\+\_\+t@{try\+\_\+tx1\+\_\+t}} +\index{try\+\_\+tx1\+\_\+t@{try\+\_\+tx1\+\_\+t}!utl\+::\+\_\+1wire\+\_\+i\+\_\+det@{utl\+::\+\_\+1wire\+\_\+i\+\_\+det}} +\subsubsection{\texorpdfstring{try\+\_\+tx1\+\_\+t}{try\_tx1\_t}} +{\footnotesize\ttfamily template$<$class \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1__1wire__i__det_ac6a2b551bcf51b426c2e8506ab2473fe}{utl\+::\+\_\+1wire\+\_\+i\+\_\+det\+::try\+\_\+tx1\+\_\+t}} = typedef decltype (declval$<$\+\_\+\+Tp$>$().tx\+\_\+data (declval$<$\mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}}$>$(), declval$<$typename \+\_\+\+Tp\+::\+Speed$>$()))} + + + +Definition at line 673 of file \+\_\+1wire.\+h. + + + +\subsection{Function Documentation} +\mbox{\Hypertarget{namespaceutl_1_1__1wire__i__det_a237719ffa105f988cb175d6720712a4a}\label{namespaceutl_1_1__1wire__i__det_a237719ffa105f988cb175d6720712a4a}} +\index{utl\+::\+\_\+1wire\+\_\+i\+\_\+det@{utl\+::\+\_\+1wire\+\_\+i\+\_\+det}!\+\_\+first@{\+\_\+first}} +\index{\+\_\+first@{\+\_\+first}!utl\+::\+\_\+1wire\+\_\+i\+\_\+det@{utl\+::\+\_\+1wire\+\_\+i\+\_\+det}} +\subsubsection{\texorpdfstring{\+\_\+first()}{\_first()}} +{\footnotesize\ttfamily template$<$typename \+\_\+T $>$ \\ +\mbox{\hyperlink{classutl_1_1__1wire__id__t}{\+\_\+1wire\+\_\+id\+\_\+t}} utl\+::\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+first (\begin{DoxyParamCaption}\item[{\+\_\+T \&}]{obj, }\item[{typename \+\_\+\+T\+::\+Speed}]{s, }\item[{bool}]{alarm }\end{DoxyParamCaption})} + + + +\textquotesingle{}first\textquotesingle{} operation, to search on the 1-\/\+Wire for the first device. This is performed by setting dec\+\_\+, pos\+\_\+ and cur\+\_\+ to zero and then doing the search. + + +\begin{DoxyParams}{Parameters} +{\em obj} & The object from which we call private members \\ +\hline +{\em s} & The bus speed \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +ID The rom\+ID \begin{DoxyItemize} +\item null\+Dev Indicate no \mbox{[}more\mbox{]} device\mbox{[}s\mbox{]} \end{DoxyItemize} + +\end{DoxyReturn} + + +Definition at line 540 of file \+\_\+1wire.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1__1wire__i__det_a1b07e623a39ce82f1514846169f3a954}\label{namespaceutl_1_1__1wire__i__det_a1b07e623a39ce82f1514846169f3a954}} +\index{utl\+::\+\_\+1wire\+\_\+i\+\_\+det@{utl\+::\+\_\+1wire\+\_\+i\+\_\+det}!\+\_\+match@{\+\_\+match}} +\index{\+\_\+match@{\+\_\+match}!utl\+::\+\_\+1wire\+\_\+i\+\_\+det@{utl\+::\+\_\+1wire\+\_\+i\+\_\+det}} +\subsubsection{\texorpdfstring{\+\_\+match()}{\_match()}} +{\footnotesize\ttfamily template$<$typename \+\_\+T $>$ \\ +void utl\+::\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+match (\begin{DoxyParamCaption}\item[{\+\_\+T \&}]{obj, }\item[{\mbox{\hyperlink{classutl_1_1__1wire__id__t}{\+\_\+1wire\+\_\+id\+\_\+t}} \&}]{id, }\item[{typename \+\_\+\+T\+::\+Speed}]{s }\end{DoxyParamCaption})} + +Send match rom command +\begin{DoxyParams}{Parameters} +{\em obj} & The object from which we call private members \\ +\hline +{\em id} & The ID to select on the bus \\ +\hline +{\em s} & The speed to use for the command \\ +\hline +\end{DoxyParams} + + +Definition at line 493 of file \+\_\+1wire.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1__1wire__i__det_a1e14f734d5e232c914be6ea97982aa40}\label{namespaceutl_1_1__1wire__i__det_a1e14f734d5e232c914be6ea97982aa40}} +\index{utl\+::\+\_\+1wire\+\_\+i\+\_\+det@{utl\+::\+\_\+1wire\+\_\+i\+\_\+det}!\+\_\+match\+\_\+n\+\_\+ovdr@{\+\_\+match\+\_\+n\+\_\+ovdr}} +\index{\+\_\+match\+\_\+n\+\_\+ovdr@{\+\_\+match\+\_\+n\+\_\+ovdr}!utl\+::\+\_\+1wire\+\_\+i\+\_\+det@{utl\+::\+\_\+1wire\+\_\+i\+\_\+det}} +\subsubsection{\texorpdfstring{\+\_\+match\+\_\+n\+\_\+ovdr()}{\_match\_n\_ovdr()}} +{\footnotesize\ttfamily template$<$typename \+\_\+T $>$ \\ +void utl\+::\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+match\+\_\+n\+\_\+ovdr (\begin{DoxyParamCaption}\item[{\+\_\+T \&}]{obj, }\item[{\mbox{\hyperlink{classutl_1_1__1wire__id__t}{\+\_\+1wire\+\_\+id\+\_\+t}} \&}]{id }\end{DoxyParamCaption})} + +Match and overdrive sequence +\begin{DoxyParams}{Parameters} +{\em obj} & The object from which we call private members \\ +\hline +{\em id} & The ID to select on the bus \\ +\hline +\end{DoxyParams} + + +Definition at line 505 of file \+\_\+1wire.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1__1wire__i__det_a1f7b692a40769ebe59343613b147e01d}\label{namespaceutl_1_1__1wire__i__det_a1f7b692a40769ebe59343613b147e01d}} +\index{utl\+::\+\_\+1wire\+\_\+i\+\_\+det@{utl\+::\+\_\+1wire\+\_\+i\+\_\+det}!\+\_\+next@{\+\_\+next}} +\index{\+\_\+next@{\+\_\+next}!utl\+::\+\_\+1wire\+\_\+i\+\_\+det@{utl\+::\+\_\+1wire\+\_\+i\+\_\+det}} +\subsubsection{\texorpdfstring{\+\_\+next()}{\_next()}} +{\footnotesize\ttfamily template$<$typename \+\_\+T $>$ \\ +\mbox{\hyperlink{classutl_1_1__1wire__id__t}{\+\_\+1wire\+\_\+id\+\_\+t}} utl\+::\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+next (\begin{DoxyParamCaption}\item[{\+\_\+T \&}]{obj, }\item[{typename \+\_\+\+T\+::\+Speed}]{s, }\item[{bool}]{alarm }\end{DoxyParamCaption})} + + + +\textquotesingle{}next\textquotesingle{} operation, to search on the 1-\/\+Wire for the next device. This search is usually performed after a \textquotesingle{}first\textquotesingle{} operation or another \textquotesingle{}next\textquotesingle{} operation. Based on maxim-\/ic application note 187. + + +\begin{DoxyParams}{Parameters} +{\em obj} & The object from which we call private members \\ +\hline +{\em s} & The bus speed \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +The rom\+ID \begin{DoxyItemize} +\item null\+Dev Indicate no \mbox{[}more\mbox{]} device\mbox{[}s\mbox{]} \end{DoxyItemize} + +\end{DoxyReturn} + + +Definition at line 556 of file \+\_\+1wire.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1__1wire__i__det_a9ea80f4ef2422a7fd71788c42b228053}\label{namespaceutl_1_1__1wire__i__det_a9ea80f4ef2422a7fd71788c42b228053}} +\index{utl\+::\+\_\+1wire\+\_\+i\+\_\+det@{utl\+::\+\_\+1wire\+\_\+i\+\_\+det}!\+\_\+skip@{\+\_\+skip}} +\index{\+\_\+skip@{\+\_\+skip}!utl\+::\+\_\+1wire\+\_\+i\+\_\+det@{utl\+::\+\_\+1wire\+\_\+i\+\_\+det}} +\subsubsection{\texorpdfstring{\+\_\+skip()}{\_skip()}} +{\footnotesize\ttfamily template$<$typename \+\_\+T $>$ \\ +void utl\+::\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+skip (\begin{DoxyParamCaption}\item[{\+\_\+T \&}]{obj, }\item[{typename \+\_\+\+T\+::\+Speed}]{s }\end{DoxyParamCaption})} + +Send skip command to the bus +\begin{DoxyParams}{Parameters} +{\em obj} & The object from which we call private members \\ +\hline +{\em id} & The ID to select on the bus \\ +\hline +\end{DoxyParams} + + +Definition at line 517 of file \+\_\+1wire.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1__1wire__i__det_ace224a4d329166bfd9f3448e492baf2b}\label{namespaceutl_1_1__1wire__i__det_ace224a4d329166bfd9f3448e492baf2b}} +\index{utl\+::\+\_\+1wire\+\_\+i\+\_\+det@{utl\+::\+\_\+1wire\+\_\+i\+\_\+det}!\+\_\+skip\+\_\+n\+\_\+ovdr@{\+\_\+skip\+\_\+n\+\_\+ovdr}} +\index{\+\_\+skip\+\_\+n\+\_\+ovdr@{\+\_\+skip\+\_\+n\+\_\+ovdr}!utl\+::\+\_\+1wire\+\_\+i\+\_\+det@{utl\+::\+\_\+1wire\+\_\+i\+\_\+det}} +\subsubsection{\texorpdfstring{\+\_\+skip\+\_\+n\+\_\+ovdr()}{\_skip\_n\_ovdr()}} +{\footnotesize\ttfamily template$<$typename \+\_\+T $>$ \\ +void utl\+::\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+skip\+\_\+n\+\_\+ovdr (\begin{DoxyParamCaption}\item[{\+\_\+T \&}]{obj }\end{DoxyParamCaption})} + +Send the Skip and Overdrive sequence +\begin{DoxyParams}{Parameters} +{\em obj} & The object from which we call private members \\ +\hline +\end{DoxyParams} + + +Definition at line 526 of file \+\_\+1wire.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1__1wire__i__det_a85a3a19778edb037f6341f37135a5494}\label{namespaceutl_1_1__1wire__i__det_a85a3a19778edb037f6341f37135a5494}} +\index{utl\+::\+\_\+1wire\+\_\+i\+\_\+det@{utl\+::\+\_\+1wire\+\_\+i\+\_\+det}!\+\_\+touch@{\+\_\+touch}} +\index{\+\_\+touch@{\+\_\+touch}!utl\+::\+\_\+1wire\+\_\+i\+\_\+det@{utl\+::\+\_\+1wire\+\_\+i\+\_\+det}} +\subsubsection{\texorpdfstring{\+\_\+touch()}{\_touch()}} +{\footnotesize\ttfamily template$<$typename \+\_\+T $>$ \\ +\mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} utl\+::\+\_\+1wire\+\_\+i\+\_\+det\+::\+\_\+touch (\begin{DoxyParamCaption}\item[{\+\_\+T \&}]{obj, }\item[{\mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}}}]{out, }\item[{typename \+\_\+\+T\+::\+Speed}]{s }\end{DoxyParamCaption})} + + + +Write a byte to 1-\/\+Wire bus and read the response. + + +\begin{DoxyParams}{Parameters} +{\em obj} & The object from which we call private members \\ +\hline +{\em b} & The byte to write \\ +\hline +{\em s} & Bus speed to use \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +The byte received. +\end{DoxyReturn} + + +Definition at line 467 of file \+\_\+1wire.\+h. + diff --git a/doc/latex/namespaceutl_1_1common__impl.tex b/doc/latex/namespaceutl_1_1common__impl.tex new file mode 100644 index 0000000..fd44662 --- /dev/null +++ b/doc/latex/namespaceutl_1_1common__impl.tex @@ -0,0 +1,173 @@ +\hypertarget{namespaceutl_1_1common__impl}{}\section{utl\+:\+:common\+\_\+impl Namespace Reference} +\label{namespaceutl_1_1common__impl}\index{utl\+::common\+\_\+impl@{utl\+::common\+\_\+impl}} +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____common__ref__}{\+\_\+\+\_\+common\+\_\+ref\+\_\+}} +\item +struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_6_00_01meta_1_1void__tc4e71c227f251cadf0e0fb7b1ba6f1e9}{\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T \&\&, U \&\&, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+common\+\_\+ref$<$ T \&, U \& $>$, meta\+::when$<$ Convertible\+To$<$ T \&\&, \+\_\+\+\_\+rref\+\_\+res$<$ T, U $>$ $>$ $>$, meta\+::when$<$ Convertible\+To$<$ U \&\&, \+\_\+\+\_\+rref\+\_\+res$<$ T, U $>$ $>$ $>$ $>$ $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_00_01meta_1_1void__t_3972a8d6e6799b6ee6537c969cdced343}{\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T \&\&, U \&, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+common\+\_\+ref$<$ const T \&, U \& $>$, meta\+::when$<$ Convertible\+To$<$ T \&\&, \+\_\+\+\_\+common\+\_\+ref$<$ const T \&, U \& $>$ $>$ $>$ $>$ $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_6_00_01meta_1_1void__t_329fba5aeac3b93aa9cfa5aa7e282e196}{\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T \&, U \&\&, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+common\+\_\+ref$<$ T \&, const U \& $>$, meta\+::when$<$ Convertible\+To$<$ U \&\&, \+\_\+\+\_\+common\+\_\+ref$<$ T \&, const U \& $>$ $>$ $>$ $>$ $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_00_01meta_1_1void__t_3_05e5aa384829bb34312a7b8ee4ecaa00f}{\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T \&, U \&, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+lref\+\_\+res$<$ T, U $>$, meta\+::when$<$ std\+::is\+\_\+reference$<$ \+\_\+\+\_\+lref\+\_\+res$<$ T, U $>$ $>$\+::value $>$ $>$ $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____common__reference}{\+\_\+\+\_\+common\+\_\+reference}} +\item +struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____common__reference2}{\+\_\+\+\_\+common\+\_\+reference2}} +\item +struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____common__reference2_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____785d0aa2f8a62416e19573fcbdd83836}{\+\_\+\+\_\+common\+\_\+reference2$<$ T, U, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+basic\+\_\+common\+\_\+reference\+\_\+t$<$ T, U $>$ $>$ $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____common__reference3}{\+\_\+\+\_\+common\+\_\+reference3}} +\item +struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____common__reference3_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____015b01ed12d2d90ee57fbf756ab847e9}{\+\_\+\+\_\+common\+\_\+reference3$<$ T, U, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+cond\+\_\+res$<$ T, U $>$ $>$ $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____common__reference_3_01_t_00_01_u_00_01meta_1_1when_3_01std_1_1i23b95b4b3a65ce598dbcc7f52e9dab2c}{\+\_\+\+\_\+common\+\_\+reference$<$ T, U, meta\+::when$<$ std\+::is\+\_\+reference$<$ T $>$\+::value \&\&std\+::is\+\_\+reference$<$ U $>$\+::value $>$ $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____copy__cv__}{\+\_\+\+\_\+copy\+\_\+cv\+\_\+}} +\item +struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____copy__cv___3_01const_01_from_01_4}{\+\_\+\+\_\+copy\+\_\+cv\+\_\+$<$ const From $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____copy__cv___3_01const_01volatile_01_from_01_4}{\+\_\+\+\_\+copy\+\_\+cv\+\_\+$<$ const volatile From $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____copy__cv___3_01volatile_01_from_01_4}{\+\_\+\+\_\+copy\+\_\+cv\+\_\+$<$ volatile From $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____xref}{\+\_\+\+\_\+xref}} +\item +struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____xref_3_01const_01_t_01_4}{\+\_\+\+\_\+xref$<$ const T $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____xref_3_01const_01volatile_01_t_01_4}{\+\_\+\+\_\+xref$<$ const volatile T $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____xref_3_01_t_01_6_01_4}{\+\_\+\+\_\+xref$<$ T \& $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____xref_3_01_t_01_6_6_01_4}{\+\_\+\+\_\+xref$<$ T \&\& $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____xref_3_01volatile_01_t_01_4}{\+\_\+\+\_\+xref$<$ volatile T $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1common__impl_1_1basic__common__reference}{basic\+\_\+common\+\_\+reference}} +\item +struct \mbox{\hyperlink{structutl_1_1common__impl_1_1common__reference}{common\+\_\+reference}} +\item +struct \mbox{\hyperlink{structutl_1_1common__impl_1_1common__reference_3_01_t_01_4}{common\+\_\+reference$<$ T $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_01_4}{common\+\_\+reference$<$ T, U $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_00_01_v_00_01_w_8_8_8_01_4}{common\+\_\+reference$<$ T, U, V, W... $>$}} +\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$class T , class U $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1common__impl_ab43a461d352a35dc1b3de39bfe17e38b}{\+\_\+\+\_\+cond\+\_\+res}} = decltype(false ? std\+::declval$<$ T(\&)()$>$()() \+:std\+::declval$<$ U(\&)()$>$()()) +\item +{\footnotesize template$<$class From , class To $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1common__impl_aed700217ef1518692242c1059f3dff27}{\+\_\+\+\_\+copy\+\_\+cv}} = \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{meta\+::invoke}}$<$ \mbox{\hyperlink{structutl_1_1common__impl_1_1____copy__cv__}{\+\_\+\+\_\+copy\+\_\+cv\+\_\+}}$<$ From $>$, To $>$ +\item +{\footnotesize template$<$class T $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1common__impl_a3d7922723a5d41f399f3c8a99e016e73}{\+\_\+\+\_\+cref}} = std\+::add\+\_\+lvalue\+\_\+reference\+\_\+t$<$ const std\+::remove\+\_\+reference\+\_\+t$<$ T $>$ $>$ +\item +{\footnotesize template$<$class T , class U $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1common__impl_a8913f9d610ed8720c817081662fa9f1f}{\+\_\+\+\_\+common\+\_\+ref}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{meta\+::eval}}$<$ \mbox{\hyperlink{structutl_1_1common__impl_1_1____common__ref__}{\+\_\+\+\_\+common\+\_\+ref\+\_\+}}$<$ T, U $>$ $>$ +\item +{\footnotesize template$<$class T , class U $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1common__impl_ae2f3d56c7e5144e099cdf37b19523290}{\+\_\+\+\_\+lref\+\_\+res}} = \mbox{\hyperlink{namespaceutl_1_1common__impl_ab43a461d352a35dc1b3de39bfe17e38b}{\+\_\+\+\_\+cond\+\_\+res}}$<$ \mbox{\hyperlink{namespaceutl_1_1common__impl_aed700217ef1518692242c1059f3dff27}{\+\_\+\+\_\+copy\+\_\+cv}}$<$ T, U $>$ \&, \mbox{\hyperlink{namespaceutl_1_1common__impl_aed700217ef1518692242c1059f3dff27}{\+\_\+\+\_\+copy\+\_\+cv}}$<$ U, T $>$ \&$>$ +\item +{\footnotesize template$<$class T , class U , class R = \+\_\+\+\_\+common\+\_\+ref$<$\+T\&, U\&$>$$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1common__impl_a312c9f3e740103f831a49624097948f5}{\+\_\+\+\_\+rref\+\_\+res}} = std\+::remove\+\_\+reference\+\_\+t$<$ R $>$ \&\& +\item +{\footnotesize template$<$class T , class U $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1common__impl_a3bbe5eb74a1c6017f60e3034519d69d6}{\+\_\+\+\_\+basic\+\_\+common\+\_\+reference\+\_\+t}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{meta\+::eval}}$<$ \mbox{\hyperlink{structutl_1_1common__impl_1_1basic__common__reference}{basic\+\_\+common\+\_\+reference}}$<$ \mbox{\hyperlink{namespaceutl_a7a9d26263662e02fbe3b238da5fd7338}{remove\+\_\+cvref\+\_\+t}}$<$ T $>$, \mbox{\hyperlink{namespaceutl_a7a9d26263662e02fbe3b238da5fd7338}{remove\+\_\+cvref\+\_\+t}}$<$ U $>$, \mbox{\hyperlink{structutl_1_1common__impl_1_1____xref}{\+\_\+\+\_\+xref}}$<$ T $>$\+::template apply, \mbox{\hyperlink{structutl_1_1common__impl_1_1____xref}{\+\_\+\+\_\+xref}}$<$ U $>$\+::template apply $>$ $>$ +\item +{\footnotesize template$<$class... Ts$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1common__impl_adc4b085a84c0355fda341475074ff230}{common\+\_\+reference\+\_\+t}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{meta\+::eval}}$<$ \mbox{\hyperlink{structutl_1_1common__impl_1_1common__reference}{common\+\_\+reference}}$<$ Ts... $>$ $>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Common Reference + +\subsection{Typedef Documentation} +\mbox{\Hypertarget{namespaceutl_1_1common__impl_a3bbe5eb74a1c6017f60e3034519d69d6}\label{namespaceutl_1_1common__impl_a3bbe5eb74a1c6017f60e3034519d69d6}} +\index{utl\+::common\+\_\+impl@{utl\+::common\+\_\+impl}!\+\_\+\+\_\+basic\+\_\+common\+\_\+reference\+\_\+t@{\+\_\+\+\_\+basic\+\_\+common\+\_\+reference\+\_\+t}} +\index{\+\_\+\+\_\+basic\+\_\+common\+\_\+reference\+\_\+t@{\+\_\+\+\_\+basic\+\_\+common\+\_\+reference\+\_\+t}!utl\+::common\+\_\+impl@{utl\+::common\+\_\+impl}} +\subsubsection{\texorpdfstring{\+\_\+\+\_\+basic\+\_\+common\+\_\+reference\+\_\+t}{\_\_basic\_common\_reference\_t}} +{\footnotesize\ttfamily template$<$class T , class U $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1common__impl_a3bbe5eb74a1c6017f60e3034519d69d6}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+basic\+\_\+common\+\_\+reference\+\_\+t}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{meta\+::eval}}$<$ \mbox{\hyperlink{structutl_1_1common__impl_1_1basic__common__reference}{basic\+\_\+common\+\_\+reference}}$<$ \mbox{\hyperlink{namespaceutl_a7a9d26263662e02fbe3b238da5fd7338}{remove\+\_\+cvref\+\_\+t}}$<$T$>$, \mbox{\hyperlink{namespaceutl_a7a9d26263662e02fbe3b238da5fd7338}{remove\+\_\+cvref\+\_\+t}}$<$U$>$, \mbox{\hyperlink{structutl_1_1common__impl_1_1____xref}{\+\_\+\+\_\+xref}}$<$T$>$\+::template apply, \mbox{\hyperlink{structutl_1_1common__impl_1_1____xref}{\+\_\+\+\_\+xref}}$<$U$>$\+::template apply $>$ $>$} + + + +Definition at line 219 of file stl.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1common__impl_a8913f9d610ed8720c817081662fa9f1f}\label{namespaceutl_1_1common__impl_a8913f9d610ed8720c817081662fa9f1f}} +\index{utl\+::common\+\_\+impl@{utl\+::common\+\_\+impl}!\+\_\+\+\_\+common\+\_\+ref@{\+\_\+\+\_\+common\+\_\+ref}} +\index{\+\_\+\+\_\+common\+\_\+ref@{\+\_\+\+\_\+common\+\_\+ref}!utl\+::common\+\_\+impl@{utl\+::common\+\_\+impl}} +\subsubsection{\texorpdfstring{\+\_\+\+\_\+common\+\_\+ref}{\_\_common\_ref}} +{\footnotesize\ttfamily template$<$class T , class U $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1common__impl_a8913f9d610ed8720c817081662fa9f1f}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+ref}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{meta\+::eval}}$<$\mbox{\hyperlink{structutl_1_1common__impl_1_1____common__ref__}{\+\_\+\+\_\+common\+\_\+ref\+\_\+}}$<$T, U$>$ $>$} + + + +Definition at line 133 of file stl.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1common__impl_ab43a461d352a35dc1b3de39bfe17e38b}\label{namespaceutl_1_1common__impl_ab43a461d352a35dc1b3de39bfe17e38b}} +\index{utl\+::common\+\_\+impl@{utl\+::common\+\_\+impl}!\+\_\+\+\_\+cond\+\_\+res@{\+\_\+\+\_\+cond\+\_\+res}} +\index{\+\_\+\+\_\+cond\+\_\+res@{\+\_\+\+\_\+cond\+\_\+res}!utl\+::common\+\_\+impl@{utl\+::common\+\_\+impl}} +\subsubsection{\texorpdfstring{\+\_\+\+\_\+cond\+\_\+res}{\_\_cond\_res}} +{\footnotesize\ttfamily template$<$class T , class U $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1common__impl_ab43a461d352a35dc1b3de39bfe17e38b}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+cond\+\_\+res}} = typedef decltype(false ? std\+::declval$<$T(\&)()$>$()() \+: std\+::declval$<$U(\&)()$>$()())} + +\begin{DoxySeeAlso}{See also} +\href{https://ericniebler.github.io/std/wg21/D0022.html}{\tt https\+://ericniebler.\+github.\+io/std/wg21/\+D0022.\+html} +\end{DoxySeeAlso} + + +Definition at line 99 of file stl.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1common__impl_aed700217ef1518692242c1059f3dff27}\label{namespaceutl_1_1common__impl_aed700217ef1518692242c1059f3dff27}} +\index{utl\+::common\+\_\+impl@{utl\+::common\+\_\+impl}!\+\_\+\+\_\+copy\+\_\+cv@{\+\_\+\+\_\+copy\+\_\+cv}} +\index{\+\_\+\+\_\+copy\+\_\+cv@{\+\_\+\+\_\+copy\+\_\+cv}!utl\+::common\+\_\+impl@{utl\+::common\+\_\+impl}} +\subsubsection{\texorpdfstring{\+\_\+\+\_\+copy\+\_\+cv}{\_\_copy\_cv}} +{\footnotesize\ttfamily template$<$class From , class To $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1common__impl_aed700217ef1518692242c1059f3dff27}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+copy\+\_\+cv}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{meta\+::invoke}}$<$\mbox{\hyperlink{structutl_1_1common__impl_1_1____copy__cv__}{\+\_\+\+\_\+copy\+\_\+cv\+\_\+}}$<$From$>$, To$>$} + + + +Definition at line 119 of file stl.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1common__impl_a3d7922723a5d41f399f3c8a99e016e73}\label{namespaceutl_1_1common__impl_a3d7922723a5d41f399f3c8a99e016e73}} +\index{utl\+::common\+\_\+impl@{utl\+::common\+\_\+impl}!\+\_\+\+\_\+cref@{\+\_\+\+\_\+cref}} +\index{\+\_\+\+\_\+cref@{\+\_\+\+\_\+cref}!utl\+::common\+\_\+impl@{utl\+::common\+\_\+impl}} +\subsubsection{\texorpdfstring{\+\_\+\+\_\+cref}{\_\_cref}} +{\footnotesize\ttfamily template$<$class T $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1common__impl_a3d7922723a5d41f399f3c8a99e016e73}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+cref}} = typedef std\+::add\+\_\+lvalue\+\_\+reference\+\_\+t$<$const std\+::remove\+\_\+reference\+\_\+t$<$T$>$ $>$} + + + +Definition at line 123 of file stl.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1common__impl_ae2f3d56c7e5144e099cdf37b19523290}\label{namespaceutl_1_1common__impl_ae2f3d56c7e5144e099cdf37b19523290}} +\index{utl\+::common\+\_\+impl@{utl\+::common\+\_\+impl}!\+\_\+\+\_\+lref\+\_\+res@{\+\_\+\+\_\+lref\+\_\+res}} +\index{\+\_\+\+\_\+lref\+\_\+res@{\+\_\+\+\_\+lref\+\_\+res}!utl\+::common\+\_\+impl@{utl\+::common\+\_\+impl}} +\subsubsection{\texorpdfstring{\+\_\+\+\_\+lref\+\_\+res}{\_\_lref\_res}} +{\footnotesize\ttfamily template$<$class T , class U $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1common__impl_ae2f3d56c7e5144e099cdf37b19523290}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+lref\+\_\+res}} = typedef \mbox{\hyperlink{namespaceutl_1_1common__impl_ab43a461d352a35dc1b3de39bfe17e38b}{\+\_\+\+\_\+cond\+\_\+res}}$<$ \mbox{\hyperlink{namespaceutl_1_1common__impl_aed700217ef1518692242c1059f3dff27}{\+\_\+\+\_\+copy\+\_\+cv}}$<$T, U$>$ \&, \mbox{\hyperlink{namespaceutl_1_1common__impl_aed700217ef1518692242c1059f3dff27}{\+\_\+\+\_\+copy\+\_\+cv}}$<$U, T$>$ \& $>$} + + + +Definition at line 140 of file stl.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1common__impl_a312c9f3e740103f831a49624097948f5}\label{namespaceutl_1_1common__impl_a312c9f3e740103f831a49624097948f5}} +\index{utl\+::common\+\_\+impl@{utl\+::common\+\_\+impl}!\+\_\+\+\_\+rref\+\_\+res@{\+\_\+\+\_\+rref\+\_\+res}} +\index{\+\_\+\+\_\+rref\+\_\+res@{\+\_\+\+\_\+rref\+\_\+res}!utl\+::common\+\_\+impl@{utl\+::common\+\_\+impl}} +\subsubsection{\texorpdfstring{\+\_\+\+\_\+rref\+\_\+res}{\_\_rref\_res}} +{\footnotesize\ttfamily template$<$class T , class U , class R = \+\_\+\+\_\+common\+\_\+ref$<$\+T\&, U\&$>$$>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1common__impl_a312c9f3e740103f831a49624097948f5}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+rref\+\_\+res}} = typedef std\+::remove\+\_\+reference\+\_\+t$<$R$>$\&\&} + + + +Definition at line 144 of file stl.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1common__impl_adc4b085a84c0355fda341475074ff230}\label{namespaceutl_1_1common__impl_adc4b085a84c0355fda341475074ff230}} +\index{utl\+::common\+\_\+impl@{utl\+::common\+\_\+impl}!common\+\_\+reference\+\_\+t@{common\+\_\+reference\+\_\+t}} +\index{common\+\_\+reference\+\_\+t@{common\+\_\+reference\+\_\+t}!utl\+::common\+\_\+impl@{utl\+::common\+\_\+impl}} +\subsubsection{\texorpdfstring{common\+\_\+reference\+\_\+t}{common\_reference\_t}} +{\footnotesize\ttfamily template$<$class... Ts$>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1common__impl_adc4b085a84c0355fda341475074ff230}{utl\+::common\+\_\+impl\+::common\+\_\+reference\+\_\+t}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{meta\+::eval}}$<$ \mbox{\hyperlink{structutl_1_1common__impl_1_1common__reference}{common\+\_\+reference}}$<$Ts...$>$ $>$} + + + +Definition at line 227 of file stl.\+h. + diff --git a/doc/latex/namespaceutl_1_1detail.tex b/doc/latex/namespaceutl_1_1detail.tex new file mode 100644 index 0000000..6f40708 --- /dev/null +++ b/doc/latex/namespaceutl_1_1detail.tex @@ -0,0 +1,82 @@ +\hypertarget{namespaceutl_1_1detail}{}\section{utl\+:\+:detail Namespace Reference} +\label{namespaceutl_1_1detail}\index{utl\+::detail@{utl\+::detail}} +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structutl_1_1detail_1_1invoke__result__}{invoke\+\_\+result\+\_\+}} +\item +struct \mbox{\hyperlink{structutl_1_1detail_1_1invoke__result___3_01true_00_01___callable_00_01___args_8_8_8_01_4}{invoke\+\_\+result\+\_\+$<$ true, \+\_\+\+Callable, \+\_\+\+Args... $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1detail_1_1is__ref__wrapper}{is\+\_\+ref\+\_\+wrapper}} +\item +struct \mbox{\hyperlink{structutl_1_1detail_1_1is__ref__wrapper_3_01std_1_1reference__wrapper_3_01_u_01_4_01_4}{is\+\_\+ref\+\_\+wrapper$<$ std\+::reference\+\_\+wrapper$<$ U $>$ $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1detail_1_1try__invoke}{try\+\_\+invoke}} +\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename I $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1detail_a50e7a46f910a83190bca5a58f67f1e2d}{try\+\_\+ppI}} = decltype(++(std\+::declval$<$ I $>$())) +\item +{\footnotesize template$<$typename I $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1detail_a1371d13b3e8408cfc68e82b03ca9f3b0}{try\+\_\+\+Ipp}} = decltype(std\+::declval$<$ I $>$()++) +\end{DoxyCompactItemize} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$class T , class Type , class T1 , class... Args, meta\+::enable\+\_\+if\+\_\+t$<$ std\+::is\+\_\+member\+\_\+function\+\_\+pointer$<$ std\+::decay\+\_\+t$<$ Type T\+::$\ast$$>$$>$\+::value \&\&std\+::is\+\_\+base\+\_\+of$<$ T, std\+::decay\+\_\+t$<$ T1 $>$$>$\+::value, int $>$ = 0$>$ }\\decltype(auto) \mbox{\hyperlink{namespaceutl_1_1detail_a2c39a67272ada5da5f1b84115dadc4a1}{invoke\+\_\+impl\+\_\+}} (Type T\+::$\ast$f, T1 \&\&t1, Args \&\&... args) +\item +{\footnotesize template$<$class F , class... Args$>$ }\\decltype(auto) \mbox{\hyperlink{namespaceutl_1_1detail_a09341831ecc9aab67a23d3a47b2d114f}{invoke\+\_\+impl\+\_\+}} (F \&\&f, Args \&\&... args) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +invoke\+\_\+result (S\+F\+I\+N\+AE friendly) + +\subsection{Typedef Documentation} +\mbox{\Hypertarget{namespaceutl_1_1detail_a1371d13b3e8408cfc68e82b03ca9f3b0}\label{namespaceutl_1_1detail_a1371d13b3e8408cfc68e82b03ca9f3b0}} +\index{utl\+::detail@{utl\+::detail}!try\+\_\+\+Ipp@{try\+\_\+\+Ipp}} +\index{try\+\_\+\+Ipp@{try\+\_\+\+Ipp}!utl\+::detail@{utl\+::detail}} +\subsubsection{\texorpdfstring{try\+\_\+\+Ipp}{try\_Ipp}} +{\footnotesize\ttfamily template$<$typename I $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1detail_a1371d13b3e8408cfc68e82b03ca9f3b0}{utl\+::detail\+::try\+\_\+\+Ipp}} = typedef decltype (std\+::declval$<$I$>$()++)} + + + +Definition at line 46 of file iterators.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1detail_a50e7a46f910a83190bca5a58f67f1e2d}\label{namespaceutl_1_1detail_a50e7a46f910a83190bca5a58f67f1e2d}} +\index{utl\+::detail@{utl\+::detail}!try\+\_\+ppI@{try\+\_\+ppI}} +\index{try\+\_\+ppI@{try\+\_\+ppI}!utl\+::detail@{utl\+::detail}} +\subsubsection{\texorpdfstring{try\+\_\+ppI}{try\_ppI}} +{\footnotesize\ttfamily template$<$typename I $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1detail_a50e7a46f910a83190bca5a58f67f1e2d}{utl\+::detail\+::try\+\_\+ppI}} = typedef decltype (++(std\+::declval$<$I$>$()))} + + + +Definition at line 45 of file iterators.\+h. + + + +\subsection{Function Documentation} +\mbox{\Hypertarget{namespaceutl_1_1detail_a2c39a67272ada5da5f1b84115dadc4a1}\label{namespaceutl_1_1detail_a2c39a67272ada5da5f1b84115dadc4a1}} +\index{utl\+::detail@{utl\+::detail}!invoke\+\_\+impl\+\_\+@{invoke\+\_\+impl\+\_\+}} +\index{invoke\+\_\+impl\+\_\+@{invoke\+\_\+impl\+\_\+}!utl\+::detail@{utl\+::detail}} +\subsubsection{\texorpdfstring{invoke\+\_\+impl\+\_\+()}{invoke\_impl\_()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$class T , class Type , class T1 , class... Args, meta\+::enable\+\_\+if\+\_\+t$<$ std\+::is\+\_\+member\+\_\+function\+\_\+pointer$<$ std\+::decay\+\_\+t$<$ Type T\+::$\ast$$>$$>$\+::value \&\&std\+::is\+\_\+base\+\_\+of$<$ T, std\+::decay\+\_\+t$<$ T1 $>$$>$\+::value, int $>$ = 0$>$ \\ +decltype(auto) utl\+::detail\+::invoke\+\_\+impl\+\_\+ (\begin{DoxyParamCaption}\item[{Type T\+::$\ast$}]{f, }\item[{T1 \&\&}]{t1, }\item[{Args \&\&...}]{args }\end{DoxyParamCaption})} + + + +Definition at line 51 of file invoke.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1detail_a09341831ecc9aab67a23d3a47b2d114f}\label{namespaceutl_1_1detail_a09341831ecc9aab67a23d3a47b2d114f}} +\index{utl\+::detail@{utl\+::detail}!invoke\+\_\+impl\+\_\+@{invoke\+\_\+impl\+\_\+}} +\index{invoke\+\_\+impl\+\_\+@{invoke\+\_\+impl\+\_\+}!utl\+::detail@{utl\+::detail}} +\subsubsection{\texorpdfstring{invoke\+\_\+impl\+\_\+()}{invoke\_impl\_()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$class F , class... Args$>$ \\ +decltype(auto) utl\+::detail\+::invoke\+\_\+impl\+\_\+ (\begin{DoxyParamCaption}\item[{F \&\&}]{f, }\item[{Args \&\&...}]{args }\end{DoxyParamCaption})} + + + +Definition at line 113 of file invoke.\+h. + diff --git a/doc/latex/namespaceutl_1_1details.tex b/doc/latex/namespaceutl_1_1details.tex new file mode 100644 index 0000000..b9fba4a --- /dev/null +++ b/doc/latex/namespaceutl_1_1details.tex @@ -0,0 +1,82 @@ +\hypertarget{namespaceutl_1_1details}{}\section{utl\+:\+:details Namespace Reference} +\label{namespaceutl_1_1details}\index{utl\+::details@{utl\+::details}} +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structutl_1_1details_1_1is__boolean__}{is\+\_\+boolean\+\_\+}} +\item +struct \mbox{\hyperlink{structutl_1_1details_1_1is__boolean___3_01_b_00_01meta_1_1void__t_3_01meta_1_1use__if__same__t_37e77ed45a431955fc15b4c1210ad8491}{is\+\_\+boolean\+\_\+$<$ B, meta\+::void\+\_\+t$<$ meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(!std\+::declval$<$ cref\+\_\+$<$ B $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ B $>$$>$()==std\+::declval$<$ cref\+\_\+$<$ B $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ B $>$$>$() !=std\+::declval$<$ cref\+\_\+$<$ B $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ B $>$$>$() \&\&std\+::declval$<$ cref\+\_\+$<$ B $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ B $>$$>$()$\vert$$\vert$std\+::declval$<$ cref\+\_\+$<$ B $>$$>$())$>$ $>$ $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1details_1_1is__strict__totally__ordered__}{is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+}} +\item +struct \mbox{\hyperlink{structutl_1_1details_1_1is__strict__totally__ordered___3_01_t_00_01meta_1_1void__t_3_01meta_1_1uab48bcfc89164f446368b35bcc7c8bcd}{is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+$<$ T, meta\+::void\+\_\+t$<$ meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$()$<$ std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$() $>$ std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$()$<$=std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$() $>$=std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$ $>$ $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1details_1_1is__strict__totally__ordered__with__}{is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+with\+\_\+}} +\item +struct \mbox{\hyperlink{structutl_1_1details_1_1is__strict__totally__ordered__with___3_01_t_00_01_u_00_01meta_1_1void__t8fb7dd5a6ad25952241e37c6f163f434}{is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+with\+\_\+$<$ T, U, meta\+::void\+\_\+t$<$ meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$()$<$ std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$() $>$ std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$()$<$=std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$() $>$=std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$()$<$ std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$() $>$ std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$()$<$=std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$() $>$=std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$ $>$ $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1details_1_1is__weakly__equality__comparable__with__}{is\+\_\+weakly\+\_\+equality\+\_\+comparable\+\_\+with\+\_\+}} +\item +struct \mbox{\hyperlink{structutl_1_1details_1_1is__weakly__equality__comparable__with___3_01_t_00_01_u_00_01meta_1_1voi4404f901930622694666ca68fb75381b}{is\+\_\+weakly\+\_\+equality\+\_\+comparable\+\_\+with\+\_\+$<$ T, U, meta\+::void\+\_\+t$<$ meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$()==std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$() !=std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$()==std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$() !=std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$ $>$ $>$}} +\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename B $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1details_a7f9309206778a6e9f0859c328b4288df}{is\+\_\+boolean\+\_\+t}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{meta\+::eval}}$<$ \mbox{\hyperlink{structutl_1_1details_1_1is__boolean__}{is\+\_\+boolean\+\_\+}}$<$ B $>$ $>$ +\item +{\footnotesize template$<$typename T , typename U $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1details_a499205eb8ca7f46d1e417a27f52442b8}{is\+\_\+weakly\+\_\+equality\+\_\+comparable\+\_\+with\+\_\+t}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{meta\+::eval}}$<$ \mbox{\hyperlink{structutl_1_1details_1_1is__weakly__equality__comparable__with__}{is\+\_\+weakly\+\_\+equality\+\_\+comparable\+\_\+with\+\_\+}}$<$ T, U $>$ $>$ +\item +{\footnotesize template$<$typename T $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1details_a3d90ca0461264f84f75c7698f7bbb811}{is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+t}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{meta\+::eval}}$<$ \mbox{\hyperlink{structutl_1_1details_1_1is__strict__totally__ordered__}{is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+}}$<$ T $>$ $>$ +\item +{\footnotesize template$<$typename T , typename U $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1details_acd9fac18316e44b7abd920686de886f0}{is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+with\+\_\+t}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{meta\+::eval}}$<$ \mbox{\hyperlink{structutl_1_1details_1_1is__strict__totally__ordered__with__}{is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+with\+\_\+}}$<$ T, U $>$ $>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Boolean + +\subsection{Typedef Documentation} +\mbox{\Hypertarget{namespaceutl_1_1details_a7f9309206778a6e9f0859c328b4288df}\label{namespaceutl_1_1details_a7f9309206778a6e9f0859c328b4288df}} +\index{utl\+::details@{utl\+::details}!is\+\_\+boolean\+\_\+t@{is\+\_\+boolean\+\_\+t}} +\index{is\+\_\+boolean\+\_\+t@{is\+\_\+boolean\+\_\+t}!utl\+::details@{utl\+::details}} +\subsubsection{\texorpdfstring{is\+\_\+boolean\+\_\+t}{is\_boolean\_t}} +{\footnotesize\ttfamily template$<$typename B $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1details_a7f9309206778a6e9f0859c328b4288df}{utl\+::details\+::is\+\_\+boolean\+\_\+t}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{meta\+::eval}} $<$ \mbox{\hyperlink{structutl_1_1details_1_1is__boolean__}{is\+\_\+boolean\+\_\+}}$<$B$>$ $>$} + + + +Definition at line 548 of file stl.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1details_a3d90ca0461264f84f75c7698f7bbb811}\label{namespaceutl_1_1details_a3d90ca0461264f84f75c7698f7bbb811}} +\index{utl\+::details@{utl\+::details}!is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+t@{is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+t}} +\index{is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+t@{is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+t}!utl\+::details@{utl\+::details}} +\subsubsection{\texorpdfstring{is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+t}{is\_strict\_totally\_ordered\_t}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1details_a3d90ca0461264f84f75c7698f7bbb811}{utl\+::details\+::is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+t}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{meta\+::eval}} $<$ \mbox{\hyperlink{structutl_1_1details_1_1is__strict__totally__ordered__}{is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+}}$<$T$>$ $>$} + + + +Definition at line 644 of file stl.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1details_acd9fac18316e44b7abd920686de886f0}\label{namespaceutl_1_1details_acd9fac18316e44b7abd920686de886f0}} +\index{utl\+::details@{utl\+::details}!is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+with\+\_\+t@{is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+with\+\_\+t}} +\index{is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+with\+\_\+t@{is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+with\+\_\+t}!utl\+::details@{utl\+::details}} +\subsubsection{\texorpdfstring{is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+with\+\_\+t}{is\_strict\_totally\_ordered\_with\_t}} +{\footnotesize\ttfamily template$<$typename T , typename U $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1details_acd9fac18316e44b7abd920686de886f0}{utl\+::details\+::is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+with\+\_\+t}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{meta\+::eval}} $<$ \mbox{\hyperlink{structutl_1_1details_1_1is__strict__totally__ordered__with__}{is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+with\+\_\+}}$<$T, U$>$ $>$} + + + +Definition at line 703 of file stl.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1details_a499205eb8ca7f46d1e417a27f52442b8}\label{namespaceutl_1_1details_a499205eb8ca7f46d1e417a27f52442b8}} +\index{utl\+::details@{utl\+::details}!is\+\_\+weakly\+\_\+equality\+\_\+comparable\+\_\+with\+\_\+t@{is\+\_\+weakly\+\_\+equality\+\_\+comparable\+\_\+with\+\_\+t}} +\index{is\+\_\+weakly\+\_\+equality\+\_\+comparable\+\_\+with\+\_\+t@{is\+\_\+weakly\+\_\+equality\+\_\+comparable\+\_\+with\+\_\+t}!utl\+::details@{utl\+::details}} +\subsubsection{\texorpdfstring{is\+\_\+weakly\+\_\+equality\+\_\+comparable\+\_\+with\+\_\+t}{is\_weakly\_equality\_comparable\_with\_t}} +{\footnotesize\ttfamily template$<$typename T , typename U $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1details_a499205eb8ca7f46d1e417a27f52442b8}{utl\+::details\+::is\+\_\+weakly\+\_\+equality\+\_\+comparable\+\_\+with\+\_\+t}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{meta\+::eval}}$<$ \mbox{\hyperlink{structutl_1_1details_1_1is__weakly__equality__comparable__with__}{is\+\_\+weakly\+\_\+equality\+\_\+comparable\+\_\+with\+\_\+}} $<$T, U$>$ $>$} + + + +Definition at line 578 of file stl.\+h. + diff --git a/doc/latex/namespaceutl_1_1i2c__i__details.tex b/doc/latex/namespaceutl_1_1i2c__i__details.tex new file mode 100644 index 0000000..d88cb39 --- /dev/null +++ b/doc/latex/namespaceutl_1_1i2c__i__details.tex @@ -0,0 +1,93 @@ +\hypertarget{namespaceutl_1_1i2c__i__details}{}\section{utl\+:\+:i2c\+\_\+i\+\_\+details Namespace Reference} +\label{namespaceutl_1_1i2c__i__details}\index{utl\+::i2c\+\_\+i\+\_\+details@{utl\+::i2c\+\_\+i\+\_\+details}} +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structutl_1_1i2c__i__details_1_1is__i2c__}{is\+\_\+i2c\+\_\+}} +\begin{DoxyCompactList}\small\item\em Primary template to catch any non I2C interface types. \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1i2c__i__details_1_1is__i2c___3_01___tp_00_01meta_1_1void__t_3_01typename_01___tp_1_1_sequence_00_01void_01_4_01_4}{is\+\_\+i2c\+\_\+$<$ \+\_\+\+Tp, meta\+::void\+\_\+t$<$ typename \+\_\+\+Tp\+::\+Sequence, void $>$ $>$}} +\begin{DoxyCompactList}\small\item\em template to catch a proper I2C interface type \end{DoxyCompactList}\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1i2c__i__details_a81c12a06fe9cf6f643718f9175da8769}{try\+\_\+cclk\+\_\+t}} = decltype(declval$<$ const \+\_\+\+Tp $>$().clock()) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1i2c__i__details_adaf6b9dbc57caeda1a6a85bd17ac6317}{try\+\_\+clk\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().clock(declval$<$ uint32\+\_\+t $>$())) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1i2c__i__details_a173335d0a45cba1b159bf33bcefb3a46}{try\+\_\+start\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().start()) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1i2c__i__details_a25cbce342478441f05d3a101fcafc02c}{try\+\_\+stop\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().stop()) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1i2c__i__details_a10de1b351bd683c5435e2db3d682819c}{try\+\_\+rx\+\_\+data\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().rx\+\_\+data(declval$<$ bool $>$(), declval$<$ typename \+\_\+\+Tp\+::\+Sequence $>$())) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1i2c__i__details_ad8d87a56b12244ba8060f8d27207083f}{try\+\_\+tx\+\_\+data\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().tx\+\_\+data(declval$<$ \mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} $>$(), declval$<$ typename \+\_\+\+Tp\+::\+Sequence $>$())) +\end{DoxyCompactItemize} + + +\subsection{Typedef Documentation} +\mbox{\Hypertarget{namespaceutl_1_1i2c__i__details_a81c12a06fe9cf6f643718f9175da8769}\label{namespaceutl_1_1i2c__i__details_a81c12a06fe9cf6f643718f9175da8769}} +\index{utl\+::i2c\+\_\+i\+\_\+details@{utl\+::i2c\+\_\+i\+\_\+details}!try\+\_\+cclk\+\_\+t@{try\+\_\+cclk\+\_\+t}} +\index{try\+\_\+cclk\+\_\+t@{try\+\_\+cclk\+\_\+t}!utl\+::i2c\+\_\+i\+\_\+details@{utl\+::i2c\+\_\+i\+\_\+details}} +\subsubsection{\texorpdfstring{try\+\_\+cclk\+\_\+t}{try\_cclk\_t}} +{\footnotesize\ttfamily template$<$class \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1i2c__i__details_a81c12a06fe9cf6f643718f9175da8769}{utl\+::i2c\+\_\+i\+\_\+details\+::try\+\_\+cclk\+\_\+t}} = typedef decltype (declval$<$const \+\_\+\+Tp$>$().clock())} + + + +Definition at line 246 of file i2c.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1i2c__i__details_adaf6b9dbc57caeda1a6a85bd17ac6317}\label{namespaceutl_1_1i2c__i__details_adaf6b9dbc57caeda1a6a85bd17ac6317}} +\index{utl\+::i2c\+\_\+i\+\_\+details@{utl\+::i2c\+\_\+i\+\_\+details}!try\+\_\+clk\+\_\+t@{try\+\_\+clk\+\_\+t}} +\index{try\+\_\+clk\+\_\+t@{try\+\_\+clk\+\_\+t}!utl\+::i2c\+\_\+i\+\_\+details@{utl\+::i2c\+\_\+i\+\_\+details}} +\subsubsection{\texorpdfstring{try\+\_\+clk\+\_\+t}{try\_clk\_t}} +{\footnotesize\ttfamily template$<$class \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1i2c__i__details_adaf6b9dbc57caeda1a6a85bd17ac6317}{utl\+::i2c\+\_\+i\+\_\+details\+::try\+\_\+clk\+\_\+t}} = typedef decltype (declval$<$\+\_\+\+Tp$>$().clock(declval$<$uint32\+\_\+t$>$()))} + + + +Definition at line 247 of file i2c.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1i2c__i__details_a10de1b351bd683c5435e2db3d682819c}\label{namespaceutl_1_1i2c__i__details_a10de1b351bd683c5435e2db3d682819c}} +\index{utl\+::i2c\+\_\+i\+\_\+details@{utl\+::i2c\+\_\+i\+\_\+details}!try\+\_\+rx\+\_\+data\+\_\+t@{try\+\_\+rx\+\_\+data\+\_\+t}} +\index{try\+\_\+rx\+\_\+data\+\_\+t@{try\+\_\+rx\+\_\+data\+\_\+t}!utl\+::i2c\+\_\+i\+\_\+details@{utl\+::i2c\+\_\+i\+\_\+details}} +\subsubsection{\texorpdfstring{try\+\_\+rx\+\_\+data\+\_\+t}{try\_rx\_data\_t}} +{\footnotesize\ttfamily template$<$class \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1i2c__i__details_a10de1b351bd683c5435e2db3d682819c}{utl\+::i2c\+\_\+i\+\_\+details\+::try\+\_\+rx\+\_\+data\+\_\+t}} = typedef decltype (declval$<$\+\_\+\+Tp$>$().rx\+\_\+data (declval$<$bool$>$(), declval$<$typename \+\_\+\+Tp\+::\+Sequence$>$()))} + + + +Definition at line 251 of file i2c.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1i2c__i__details_a173335d0a45cba1b159bf33bcefb3a46}\label{namespaceutl_1_1i2c__i__details_a173335d0a45cba1b159bf33bcefb3a46}} +\index{utl\+::i2c\+\_\+i\+\_\+details@{utl\+::i2c\+\_\+i\+\_\+details}!try\+\_\+start\+\_\+t@{try\+\_\+start\+\_\+t}} +\index{try\+\_\+start\+\_\+t@{try\+\_\+start\+\_\+t}!utl\+::i2c\+\_\+i\+\_\+details@{utl\+::i2c\+\_\+i\+\_\+details}} +\subsubsection{\texorpdfstring{try\+\_\+start\+\_\+t}{try\_start\_t}} +{\footnotesize\ttfamily template$<$class \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1i2c__i__details_a173335d0a45cba1b159bf33bcefb3a46}{utl\+::i2c\+\_\+i\+\_\+details\+::try\+\_\+start\+\_\+t}} = typedef decltype (declval$<$\+\_\+\+Tp$>$().start())} + + + +Definition at line 248 of file i2c.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1i2c__i__details_a25cbce342478441f05d3a101fcafc02c}\label{namespaceutl_1_1i2c__i__details_a25cbce342478441f05d3a101fcafc02c}} +\index{utl\+::i2c\+\_\+i\+\_\+details@{utl\+::i2c\+\_\+i\+\_\+details}!try\+\_\+stop\+\_\+t@{try\+\_\+stop\+\_\+t}} +\index{try\+\_\+stop\+\_\+t@{try\+\_\+stop\+\_\+t}!utl\+::i2c\+\_\+i\+\_\+details@{utl\+::i2c\+\_\+i\+\_\+details}} +\subsubsection{\texorpdfstring{try\+\_\+stop\+\_\+t}{try\_stop\_t}} +{\footnotesize\ttfamily template$<$class \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1i2c__i__details_a25cbce342478441f05d3a101fcafc02c}{utl\+::i2c\+\_\+i\+\_\+details\+::try\+\_\+stop\+\_\+t}} = typedef decltype (declval$<$\+\_\+\+Tp$>$().stop())} + + + +Definition at line 249 of file i2c.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1i2c__i__details_ad8d87a56b12244ba8060f8d27207083f}\label{namespaceutl_1_1i2c__i__details_ad8d87a56b12244ba8060f8d27207083f}} +\index{utl\+::i2c\+\_\+i\+\_\+details@{utl\+::i2c\+\_\+i\+\_\+details}!try\+\_\+tx\+\_\+data\+\_\+t@{try\+\_\+tx\+\_\+data\+\_\+t}} +\index{try\+\_\+tx\+\_\+data\+\_\+t@{try\+\_\+tx\+\_\+data\+\_\+t}!utl\+::i2c\+\_\+i\+\_\+details@{utl\+::i2c\+\_\+i\+\_\+details}} +\subsubsection{\texorpdfstring{try\+\_\+tx\+\_\+data\+\_\+t}{try\_tx\_data\_t}} +{\footnotesize\ttfamily template$<$class \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1i2c__i__details_ad8d87a56b12244ba8060f8d27207083f}{utl\+::i2c\+\_\+i\+\_\+details\+::try\+\_\+tx\+\_\+data\+\_\+t}} = typedef decltype (declval$<$\+\_\+\+Tp$>$().tx\+\_\+data (declval$<$\mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}}$>$(), declval$<$typename \+\_\+\+Tp\+::\+Sequence$>$()))} + + + +Definition at line 253 of file i2c.\+h. + diff --git a/doc/latex/namespaceutl_1_1idx__dev__details.tex b/doc/latex/namespaceutl_1_1idx__dev__details.tex new file mode 100644 index 0000000..bfaee3d --- /dev/null +++ b/doc/latex/namespaceutl_1_1idx__dev__details.tex @@ -0,0 +1,122 @@ +\hypertarget{namespaceutl_1_1idx__dev__details}{}\section{utl\+:\+:idx\+\_\+dev\+\_\+details Namespace Reference} +\label{namespaceutl_1_1idx__dev__details}\index{utl\+::idx\+\_\+dev\+\_\+details@{utl\+::idx\+\_\+dev\+\_\+details}} +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structutl_1_1idx__dev__details_1_1is__idx__dev__}{is\+\_\+idx\+\_\+dev\+\_\+}} +\begin{DoxyCompactList}\small\item\em Primary template to catch any non input device types. \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1idx__dev__details_1_1is__idx__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1ae8b6b24c31c81bdd901da6e6387d84b}{is\+\_\+idx\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, void\+\_\+t$<$ typename \+\_\+\+Tp\+::data\+\_\+type, typename \+\_\+\+Tp\+::pointer\+\_\+type, typename \+\_\+\+Tp\+::iterator, typename \+\_\+\+Tp\+::const\+\_\+iterator, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+get1\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+get2\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cbegin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cend\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$ $>$ $>$}} +\begin{DoxyCompactList}\small\item\em template to catch a proper input device type \end{DoxyCompactList}\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1idx__dev__details_ac3a877d2f57d7c50b77456e0571112f0}{try\+\_\+get1\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().\mbox{\hyperlink{namespaceutl_a29057d2e164fe6dd3f3095f0d69c6546}{get}}(declval$<$ typename \+\_\+\+Tp\+::data\+\_\+type \& $>$())) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1idx__dev__details_a4cf6896009d70acdccfb55ba333fe7ef}{try\+\_\+get2\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().\mbox{\hyperlink{namespaceutl_a29057d2e164fe6dd3f3095f0d69c6546}{get}}(declval$<$ typename \+\_\+\+Tp\+::data\+\_\+type $\ast$ $>$(), declval$<$ \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} $>$())) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1idx__dev__details_a69a8af95a0fd62c3e022c34ddc3a956b}{try\+\_\+begin\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().begin()) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1idx__dev__details_afe8e2fc19d7b37a1b379a5f8302ef421}{tryc\+\_\+begin\+\_\+t}} = decltype(declval$<$ const \+\_\+\+Tp $>$().begin()) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1idx__dev__details_a655c6de0d6d8f4ac3778f2fff8e9c7de}{try\+\_\+cbegin\+\_\+t}} = decltype(declval$<$ const \+\_\+\+Tp $>$().cbegin()) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1idx__dev__details_ab85fa5de8595b6e56a6718ffb7d4edfe}{try\+\_\+end\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().begin()) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1idx__dev__details_aad6edb02a37f897cf4157f6345909ef1}{tryc\+\_\+end\+\_\+t}} = decltype(declval$<$ const \+\_\+\+Tp $>$().begin()) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1idx__dev__details_adb8cac5f5772e513749038257a1f92df}{try\+\_\+cend\+\_\+t}} = decltype(declval$<$ const \+\_\+\+Tp $>$().cend()) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +indexed device concept + +\subsection{Typedef Documentation} +\mbox{\Hypertarget{namespaceutl_1_1idx__dev__details_a69a8af95a0fd62c3e022c34ddc3a956b}\label{namespaceutl_1_1idx__dev__details_a69a8af95a0fd62c3e022c34ddc3a956b}} +\index{utl\+::idx\+\_\+dev\+\_\+details@{utl\+::idx\+\_\+dev\+\_\+details}!try\+\_\+begin\+\_\+t@{try\+\_\+begin\+\_\+t}} +\index{try\+\_\+begin\+\_\+t@{try\+\_\+begin\+\_\+t}!utl\+::idx\+\_\+dev\+\_\+details@{utl\+::idx\+\_\+dev\+\_\+details}} +\subsubsection{\texorpdfstring{try\+\_\+begin\+\_\+t}{try\_begin\_t}} +{\footnotesize\ttfamily template$<$class \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1idx__dev__details_a69a8af95a0fd62c3e022c34ddc3a956b}{utl\+::idx\+\_\+dev\+\_\+details\+::try\+\_\+begin\+\_\+t}} = typedef decltype (declval$<$\+\_\+\+Tp$>$().begin())} + + + +Definition at line 486 of file idx\+\_\+dev.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1idx__dev__details_a655c6de0d6d8f4ac3778f2fff8e9c7de}\label{namespaceutl_1_1idx__dev__details_a655c6de0d6d8f4ac3778f2fff8e9c7de}} +\index{utl\+::idx\+\_\+dev\+\_\+details@{utl\+::idx\+\_\+dev\+\_\+details}!try\+\_\+cbegin\+\_\+t@{try\+\_\+cbegin\+\_\+t}} +\index{try\+\_\+cbegin\+\_\+t@{try\+\_\+cbegin\+\_\+t}!utl\+::idx\+\_\+dev\+\_\+details@{utl\+::idx\+\_\+dev\+\_\+details}} +\subsubsection{\texorpdfstring{try\+\_\+cbegin\+\_\+t}{try\_cbegin\_t}} +{\footnotesize\ttfamily template$<$class \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1idx__dev__details_a655c6de0d6d8f4ac3778f2fff8e9c7de}{utl\+::idx\+\_\+dev\+\_\+details\+::try\+\_\+cbegin\+\_\+t}} = typedef decltype (declval$<$const \+\_\+\+Tp$>$().cbegin())} + + + +Definition at line 488 of file idx\+\_\+dev.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1idx__dev__details_adb8cac5f5772e513749038257a1f92df}\label{namespaceutl_1_1idx__dev__details_adb8cac5f5772e513749038257a1f92df}} +\index{utl\+::idx\+\_\+dev\+\_\+details@{utl\+::idx\+\_\+dev\+\_\+details}!try\+\_\+cend\+\_\+t@{try\+\_\+cend\+\_\+t}} +\index{try\+\_\+cend\+\_\+t@{try\+\_\+cend\+\_\+t}!utl\+::idx\+\_\+dev\+\_\+details@{utl\+::idx\+\_\+dev\+\_\+details}} +\subsubsection{\texorpdfstring{try\+\_\+cend\+\_\+t}{try\_cend\_t}} +{\footnotesize\ttfamily template$<$class \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1idx__dev__details_adb8cac5f5772e513749038257a1f92df}{utl\+::idx\+\_\+dev\+\_\+details\+::try\+\_\+cend\+\_\+t}} = typedef decltype (declval$<$const \+\_\+\+Tp$>$().cend())} + + + +Definition at line 491 of file idx\+\_\+dev.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1idx__dev__details_ab85fa5de8595b6e56a6718ffb7d4edfe}\label{namespaceutl_1_1idx__dev__details_ab85fa5de8595b6e56a6718ffb7d4edfe}} +\index{utl\+::idx\+\_\+dev\+\_\+details@{utl\+::idx\+\_\+dev\+\_\+details}!try\+\_\+end\+\_\+t@{try\+\_\+end\+\_\+t}} +\index{try\+\_\+end\+\_\+t@{try\+\_\+end\+\_\+t}!utl\+::idx\+\_\+dev\+\_\+details@{utl\+::idx\+\_\+dev\+\_\+details}} +\subsubsection{\texorpdfstring{try\+\_\+end\+\_\+t}{try\_end\_t}} +{\footnotesize\ttfamily template$<$class \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1idx__dev__details_ab85fa5de8595b6e56a6718ffb7d4edfe}{utl\+::idx\+\_\+dev\+\_\+details\+::try\+\_\+end\+\_\+t}} = typedef decltype (declval$<$\+\_\+\+Tp$>$().begin())} + + + +Definition at line 489 of file idx\+\_\+dev.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1idx__dev__details_ac3a877d2f57d7c50b77456e0571112f0}\label{namespaceutl_1_1idx__dev__details_ac3a877d2f57d7c50b77456e0571112f0}} +\index{utl\+::idx\+\_\+dev\+\_\+details@{utl\+::idx\+\_\+dev\+\_\+details}!try\+\_\+get1\+\_\+t@{try\+\_\+get1\+\_\+t}} +\index{try\+\_\+get1\+\_\+t@{try\+\_\+get1\+\_\+t}!utl\+::idx\+\_\+dev\+\_\+details@{utl\+::idx\+\_\+dev\+\_\+details}} +\subsubsection{\texorpdfstring{try\+\_\+get1\+\_\+t}{try\_get1\_t}} +{\footnotesize\ttfamily template$<$class \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1idx__dev__details_ac3a877d2f57d7c50b77456e0571112f0}{utl\+::idx\+\_\+dev\+\_\+details\+::try\+\_\+get1\+\_\+t}} = typedef decltype (declval$<$\+\_\+\+Tp$>$().\mbox{\hyperlink{namespaceutl_a29057d2e164fe6dd3f3095f0d69c6546}{get}} (declval$<$typename \+\_\+\+Tp\+::data\+\_\+type\&$>$()))} + + + +Definition at line 481 of file idx\+\_\+dev.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1idx__dev__details_a4cf6896009d70acdccfb55ba333fe7ef}\label{namespaceutl_1_1idx__dev__details_a4cf6896009d70acdccfb55ba333fe7ef}} +\index{utl\+::idx\+\_\+dev\+\_\+details@{utl\+::idx\+\_\+dev\+\_\+details}!try\+\_\+get2\+\_\+t@{try\+\_\+get2\+\_\+t}} +\index{try\+\_\+get2\+\_\+t@{try\+\_\+get2\+\_\+t}!utl\+::idx\+\_\+dev\+\_\+details@{utl\+::idx\+\_\+dev\+\_\+details}} +\subsubsection{\texorpdfstring{try\+\_\+get2\+\_\+t}{try\_get2\_t}} +{\footnotesize\ttfamily template$<$class \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1idx__dev__details_a4cf6896009d70acdccfb55ba333fe7ef}{utl\+::idx\+\_\+dev\+\_\+details\+::try\+\_\+get2\+\_\+t}} = typedef decltype (declval$<$\+\_\+\+Tp$>$().\mbox{\hyperlink{namespaceutl_a29057d2e164fe6dd3f3095f0d69c6546}{get}} (declval$<$typename \+\_\+\+Tp\+::data\+\_\+type$\ast$$>$(), declval$<$\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}}$>$()))} + + + +Definition at line 482 of file idx\+\_\+dev.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1idx__dev__details_afe8e2fc19d7b37a1b379a5f8302ef421}\label{namespaceutl_1_1idx__dev__details_afe8e2fc19d7b37a1b379a5f8302ef421}} +\index{utl\+::idx\+\_\+dev\+\_\+details@{utl\+::idx\+\_\+dev\+\_\+details}!tryc\+\_\+begin\+\_\+t@{tryc\+\_\+begin\+\_\+t}} +\index{tryc\+\_\+begin\+\_\+t@{tryc\+\_\+begin\+\_\+t}!utl\+::idx\+\_\+dev\+\_\+details@{utl\+::idx\+\_\+dev\+\_\+details}} +\subsubsection{\texorpdfstring{tryc\+\_\+begin\+\_\+t}{tryc\_begin\_t}} +{\footnotesize\ttfamily template$<$class \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1idx__dev__details_afe8e2fc19d7b37a1b379a5f8302ef421}{utl\+::idx\+\_\+dev\+\_\+details\+::tryc\+\_\+begin\+\_\+t}} = typedef decltype (declval$<$const \+\_\+\+Tp$>$().begin())} + + + +Definition at line 487 of file idx\+\_\+dev.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1idx__dev__details_aad6edb02a37f897cf4157f6345909ef1}\label{namespaceutl_1_1idx__dev__details_aad6edb02a37f897cf4157f6345909ef1}} +\index{utl\+::idx\+\_\+dev\+\_\+details@{utl\+::idx\+\_\+dev\+\_\+details}!tryc\+\_\+end\+\_\+t@{tryc\+\_\+end\+\_\+t}} +\index{tryc\+\_\+end\+\_\+t@{tryc\+\_\+end\+\_\+t}!utl\+::idx\+\_\+dev\+\_\+details@{utl\+::idx\+\_\+dev\+\_\+details}} +\subsubsection{\texorpdfstring{tryc\+\_\+end\+\_\+t}{tryc\_end\_t}} +{\footnotesize\ttfamily template$<$class \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1idx__dev__details_aad6edb02a37f897cf4157f6345909ef1}{utl\+::idx\+\_\+dev\+\_\+details\+::tryc\+\_\+end\+\_\+t}} = typedef decltype (declval$<$const \+\_\+\+Tp$>$().begin())} + + + +Definition at line 490 of file idx\+\_\+dev.\+h. + diff --git a/doc/latex/namespaceutl_1_1idxdev__it__details.tex b/doc/latex/namespaceutl_1_1idxdev__it__details.tex new file mode 100644 index 0000000..d3fea26 --- /dev/null +++ b/doc/latex/namespaceutl_1_1idxdev__it__details.tex @@ -0,0 +1,13 @@ +\hypertarget{namespaceutl_1_1idxdev__it__details}{}\section{utl\+:\+:idxdev\+\_\+it\+\_\+details Namespace Reference} +\label{namespaceutl_1_1idxdev__it__details}\index{utl\+::idxdev\+\_\+it\+\_\+details@{utl\+::idxdev\+\_\+it\+\_\+details}} +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structutl_1_1idxdev__it__details_1_1is__idxdev__it__}{is\+\_\+idxdev\+\_\+it\+\_\+}} +\begin{DoxyCompactList}\small\item\em Primary template to catch any non S\+PI interface types. \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1idxdev__it__details_1_1is__idxdev__it___3_01___tp_00_01meta_1_1void__t_3_01typenamebd9ada52ca7b7570c26d0c280af5e635}{is\+\_\+idxdev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, meta\+::void\+\_\+t$<$ typename \+\_\+\+Tp\+::value\+\_\+type, typename \+\_\+\+Tp\+::difference\+\_\+type, typename \+\_\+\+Tp\+::pointer, typename \+\_\+\+Tp\+::reference, void $>$ $>$}} +\begin{DoxyCompactList}\small\item\em template to catch a proper S\+PI interface type \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Index device iterator concept \ No newline at end of file diff --git a/doc/latex/namespaceutl_1_1in__dev__details.tex b/doc/latex/namespaceutl_1_1in__dev__details.tex new file mode 100644 index 0000000..2a1b806 --- /dev/null +++ b/doc/latex/namespaceutl_1_1in__dev__details.tex @@ -0,0 +1,119 @@ +\hypertarget{namespaceutl_1_1in__dev__details}{}\section{utl\+:\+:in\+\_\+dev\+\_\+details Namespace Reference} +\label{namespaceutl_1_1in__dev__details}\index{utl\+::in\+\_\+dev\+\_\+details@{utl\+::in\+\_\+dev\+\_\+details}} +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structutl_1_1in__dev__details_1_1is__in__dev__}{is\+\_\+in\+\_\+dev\+\_\+}} +\begin{DoxyCompactList}\small\item\em Primary template to catch any non input device types. \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1in__dev__details_1_1is__in__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1dad922a62deb7c32e2cff18d66b8c887d2}{is\+\_\+in\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, void\+\_\+t$<$ typename \+\_\+\+Tp\+::data\+\_\+type, typename \+\_\+\+Tp\+::pointer\+\_\+type, typename \+\_\+\+Tp\+::iterator, typename \+\_\+\+Tp\+::const\+\_\+iterator, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+get1\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+get2\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cbegin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cend\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$ $>$ $>$}} +\begin{DoxyCompactList}\small\item\em template to catch a proper input device type \end{DoxyCompactList}\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1in__dev__details_a560eec1b326b0f6b91fa96f64f15ef61}{try\+\_\+get1\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().\mbox{\hyperlink{namespaceutl_a29057d2e164fe6dd3f3095f0d69c6546}{get}}(declval$<$ typename \+\_\+\+Tp\+::data\+\_\+type \& $>$())) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1in__dev__details_ae11bccc2282ed8f2aaac67687d756167}{try\+\_\+get2\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().\mbox{\hyperlink{namespaceutl_a29057d2e164fe6dd3f3095f0d69c6546}{get}}(declval$<$ typename \+\_\+\+Tp\+::data\+\_\+type $\ast$ $>$(), declval$<$ \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} $>$())) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1in__dev__details_af790d5cec9db9f80cc8d67e9755e823e}{try\+\_\+begin\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().begin()) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1in__dev__details_af7cb4a98688e65b04793cef145a90202}{tryc\+\_\+begin\+\_\+t}} = decltype(declval$<$ const \+\_\+\+Tp $>$().begin()) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1in__dev__details_a857d70a4119a4ff5615141d68e59ba7b}{try\+\_\+cbegin\+\_\+t}} = decltype(declval$<$ const \+\_\+\+Tp $>$().cbegin()) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1in__dev__details_acc72ca7012e26a9a0de8b08047dc9de8}{try\+\_\+end\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().begin()) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1in__dev__details_ad2dad6ed501b94ba1fa9cffade343762}{tryc\+\_\+end\+\_\+t}} = decltype(declval$<$ const \+\_\+\+Tp $>$().begin()) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1in__dev__details_ab268028c81d5385f19bbeb0c978ec9b2}{try\+\_\+cend\+\_\+t}} = decltype(declval$<$ const \+\_\+\+Tp $>$().cend()) +\end{DoxyCompactItemize} + + +\subsection{Typedef Documentation} +\mbox{\Hypertarget{namespaceutl_1_1in__dev__details_af790d5cec9db9f80cc8d67e9755e823e}\label{namespaceutl_1_1in__dev__details_af790d5cec9db9f80cc8d67e9755e823e}} +\index{utl\+::in\+\_\+dev\+\_\+details@{utl\+::in\+\_\+dev\+\_\+details}!try\+\_\+begin\+\_\+t@{try\+\_\+begin\+\_\+t}} +\index{try\+\_\+begin\+\_\+t@{try\+\_\+begin\+\_\+t}!utl\+::in\+\_\+dev\+\_\+details@{utl\+::in\+\_\+dev\+\_\+details}} +\subsubsection{\texorpdfstring{try\+\_\+begin\+\_\+t}{try\_begin\_t}} +{\footnotesize\ttfamily template$<$class \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1in__dev__details_af790d5cec9db9f80cc8d67e9755e823e}{utl\+::in\+\_\+dev\+\_\+details\+::try\+\_\+begin\+\_\+t}} = typedef decltype (declval$<$\+\_\+\+Tp$>$().begin())} + + + +Definition at line 298 of file in\+\_\+dev.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1in__dev__details_a857d70a4119a4ff5615141d68e59ba7b}\label{namespaceutl_1_1in__dev__details_a857d70a4119a4ff5615141d68e59ba7b}} +\index{utl\+::in\+\_\+dev\+\_\+details@{utl\+::in\+\_\+dev\+\_\+details}!try\+\_\+cbegin\+\_\+t@{try\+\_\+cbegin\+\_\+t}} +\index{try\+\_\+cbegin\+\_\+t@{try\+\_\+cbegin\+\_\+t}!utl\+::in\+\_\+dev\+\_\+details@{utl\+::in\+\_\+dev\+\_\+details}} +\subsubsection{\texorpdfstring{try\+\_\+cbegin\+\_\+t}{try\_cbegin\_t}} +{\footnotesize\ttfamily template$<$class \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1in__dev__details_a857d70a4119a4ff5615141d68e59ba7b}{utl\+::in\+\_\+dev\+\_\+details\+::try\+\_\+cbegin\+\_\+t}} = typedef decltype (declval$<$const \+\_\+\+Tp$>$().cbegin())} + + + +Definition at line 300 of file in\+\_\+dev.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1in__dev__details_ab268028c81d5385f19bbeb0c978ec9b2}\label{namespaceutl_1_1in__dev__details_ab268028c81d5385f19bbeb0c978ec9b2}} +\index{utl\+::in\+\_\+dev\+\_\+details@{utl\+::in\+\_\+dev\+\_\+details}!try\+\_\+cend\+\_\+t@{try\+\_\+cend\+\_\+t}} +\index{try\+\_\+cend\+\_\+t@{try\+\_\+cend\+\_\+t}!utl\+::in\+\_\+dev\+\_\+details@{utl\+::in\+\_\+dev\+\_\+details}} +\subsubsection{\texorpdfstring{try\+\_\+cend\+\_\+t}{try\_cend\_t}} +{\footnotesize\ttfamily template$<$class \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1in__dev__details_ab268028c81d5385f19bbeb0c978ec9b2}{utl\+::in\+\_\+dev\+\_\+details\+::try\+\_\+cend\+\_\+t}} = typedef decltype (declval$<$const \+\_\+\+Tp$>$().cend())} + + + +Definition at line 303 of file in\+\_\+dev.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1in__dev__details_acc72ca7012e26a9a0de8b08047dc9de8}\label{namespaceutl_1_1in__dev__details_acc72ca7012e26a9a0de8b08047dc9de8}} +\index{utl\+::in\+\_\+dev\+\_\+details@{utl\+::in\+\_\+dev\+\_\+details}!try\+\_\+end\+\_\+t@{try\+\_\+end\+\_\+t}} +\index{try\+\_\+end\+\_\+t@{try\+\_\+end\+\_\+t}!utl\+::in\+\_\+dev\+\_\+details@{utl\+::in\+\_\+dev\+\_\+details}} +\subsubsection{\texorpdfstring{try\+\_\+end\+\_\+t}{try\_end\_t}} +{\footnotesize\ttfamily template$<$class \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1in__dev__details_acc72ca7012e26a9a0de8b08047dc9de8}{utl\+::in\+\_\+dev\+\_\+details\+::try\+\_\+end\+\_\+t}} = typedef decltype (declval$<$\+\_\+\+Tp$>$().begin())} + + + +Definition at line 301 of file in\+\_\+dev.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1in__dev__details_a560eec1b326b0f6b91fa96f64f15ef61}\label{namespaceutl_1_1in__dev__details_a560eec1b326b0f6b91fa96f64f15ef61}} +\index{utl\+::in\+\_\+dev\+\_\+details@{utl\+::in\+\_\+dev\+\_\+details}!try\+\_\+get1\+\_\+t@{try\+\_\+get1\+\_\+t}} +\index{try\+\_\+get1\+\_\+t@{try\+\_\+get1\+\_\+t}!utl\+::in\+\_\+dev\+\_\+details@{utl\+::in\+\_\+dev\+\_\+details}} +\subsubsection{\texorpdfstring{try\+\_\+get1\+\_\+t}{try\_get1\_t}} +{\footnotesize\ttfamily template$<$class \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1in__dev__details_a560eec1b326b0f6b91fa96f64f15ef61}{utl\+::in\+\_\+dev\+\_\+details\+::try\+\_\+get1\+\_\+t}} = typedef decltype (declval$<$\+\_\+\+Tp$>$().\mbox{\hyperlink{namespaceutl_a29057d2e164fe6dd3f3095f0d69c6546}{get}} (declval$<$typename \+\_\+\+Tp\+::data\+\_\+type\&$>$()))} + + + +Definition at line 293 of file in\+\_\+dev.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1in__dev__details_ae11bccc2282ed8f2aaac67687d756167}\label{namespaceutl_1_1in__dev__details_ae11bccc2282ed8f2aaac67687d756167}} +\index{utl\+::in\+\_\+dev\+\_\+details@{utl\+::in\+\_\+dev\+\_\+details}!try\+\_\+get2\+\_\+t@{try\+\_\+get2\+\_\+t}} +\index{try\+\_\+get2\+\_\+t@{try\+\_\+get2\+\_\+t}!utl\+::in\+\_\+dev\+\_\+details@{utl\+::in\+\_\+dev\+\_\+details}} +\subsubsection{\texorpdfstring{try\+\_\+get2\+\_\+t}{try\_get2\_t}} +{\footnotesize\ttfamily template$<$class \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1in__dev__details_ae11bccc2282ed8f2aaac67687d756167}{utl\+::in\+\_\+dev\+\_\+details\+::try\+\_\+get2\+\_\+t}} = typedef decltype (declval$<$\+\_\+\+Tp$>$().\mbox{\hyperlink{namespaceutl_a29057d2e164fe6dd3f3095f0d69c6546}{get}} (declval$<$typename \+\_\+\+Tp\+::data\+\_\+type$\ast$$>$(), declval$<$\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}}$>$()))} + + + +Definition at line 294 of file in\+\_\+dev.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1in__dev__details_af7cb4a98688e65b04793cef145a90202}\label{namespaceutl_1_1in__dev__details_af7cb4a98688e65b04793cef145a90202}} +\index{utl\+::in\+\_\+dev\+\_\+details@{utl\+::in\+\_\+dev\+\_\+details}!tryc\+\_\+begin\+\_\+t@{tryc\+\_\+begin\+\_\+t}} +\index{tryc\+\_\+begin\+\_\+t@{tryc\+\_\+begin\+\_\+t}!utl\+::in\+\_\+dev\+\_\+details@{utl\+::in\+\_\+dev\+\_\+details}} +\subsubsection{\texorpdfstring{tryc\+\_\+begin\+\_\+t}{tryc\_begin\_t}} +{\footnotesize\ttfamily template$<$class \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1in__dev__details_af7cb4a98688e65b04793cef145a90202}{utl\+::in\+\_\+dev\+\_\+details\+::tryc\+\_\+begin\+\_\+t}} = typedef decltype (declval$<$const \+\_\+\+Tp$>$().begin())} + + + +Definition at line 299 of file in\+\_\+dev.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1in__dev__details_ad2dad6ed501b94ba1fa9cffade343762}\label{namespaceutl_1_1in__dev__details_ad2dad6ed501b94ba1fa9cffade343762}} +\index{utl\+::in\+\_\+dev\+\_\+details@{utl\+::in\+\_\+dev\+\_\+details}!tryc\+\_\+end\+\_\+t@{tryc\+\_\+end\+\_\+t}} +\index{tryc\+\_\+end\+\_\+t@{tryc\+\_\+end\+\_\+t}!utl\+::in\+\_\+dev\+\_\+details@{utl\+::in\+\_\+dev\+\_\+details}} +\subsubsection{\texorpdfstring{tryc\+\_\+end\+\_\+t}{tryc\_end\_t}} +{\footnotesize\ttfamily template$<$class \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1in__dev__details_ad2dad6ed501b94ba1fa9cffade343762}{utl\+::in\+\_\+dev\+\_\+details\+::tryc\+\_\+end\+\_\+t}} = typedef decltype (declval$<$const \+\_\+\+Tp$>$().begin())} + + + +Definition at line 302 of file in\+\_\+dev.\+h. + diff --git a/doc/latex/namespaceutl_1_1inbuf__dev__details.tex b/doc/latex/namespaceutl_1_1inbuf__dev__details.tex new file mode 100644 index 0000000..72a1c84 --- /dev/null +++ b/doc/latex/namespaceutl_1_1inbuf__dev__details.tex @@ -0,0 +1,122 @@ +\hypertarget{namespaceutl_1_1inbuf__dev__details}{}\section{utl\+:\+:inbuf\+\_\+dev\+\_\+details Namespace Reference} +\label{namespaceutl_1_1inbuf__dev__details}\index{utl\+::inbuf\+\_\+dev\+\_\+details@{utl\+::inbuf\+\_\+dev\+\_\+details}} +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structutl_1_1inbuf__dev__details_1_1is__inbuf__dev__}{is\+\_\+inbuf\+\_\+dev\+\_\+}} +\begin{DoxyCompactList}\small\item\em Primary template to catch any non input device types. \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1inbuf__dev__details_1_1is__inbuf__dev___3_01___tp_00_01void__t_3_01typename_01___tpc269ee3885240cc8c352f3c6b3a67cd7}{is\+\_\+inbuf\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, void\+\_\+t$<$ typename \+\_\+\+Tp\+::data\+\_\+type, typename \+\_\+\+Tp\+::pointer\+\_\+type, typename \+\_\+\+Tp\+::iterator, typename \+\_\+\+Tp\+::const\+\_\+iterator, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+get1\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+get2\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cbegin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cend\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$ $>$ $>$}} +\begin{DoxyCompactList}\small\item\em template to catch a proper input device type \end{DoxyCompactList}\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1inbuf__dev__details_a72a6469ab9ce0cba618dd0b554fc2dd2}{try\+\_\+get1\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().\mbox{\hyperlink{namespaceutl_a29057d2e164fe6dd3f3095f0d69c6546}{get}}(declval$<$ typename \+\_\+\+Tp\+::data\+\_\+type \& $>$())) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1inbuf__dev__details_af09ed69d129c33b8a6d3f79c79b8ea35}{try\+\_\+get2\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().\mbox{\hyperlink{namespaceutl_a29057d2e164fe6dd3f3095f0d69c6546}{get}}(declval$<$ typename \+\_\+\+Tp\+::data\+\_\+type $\ast$ $>$(), declval$<$ \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} $>$())) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1inbuf__dev__details_a18d5c5e879b4714f58861ad411537d53}{try\+\_\+begin\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().begin()) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1inbuf__dev__details_adff91b885ea1831691d4619d360bb72b}{tryc\+\_\+begin\+\_\+t}} = decltype(declval$<$ const \+\_\+\+Tp $>$().begin()) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1inbuf__dev__details_a351202ead58a98a2eaad4f3987b6170c}{try\+\_\+cbegin\+\_\+t}} = decltype(declval$<$ const \+\_\+\+Tp $>$().cbegin()) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1inbuf__dev__details_a5d4aa9d57c443c33cf08375e0c51bdd3}{try\+\_\+end\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().begin()) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1inbuf__dev__details_a858c7a1a0b1d8d0bdc91ce681aa1b996}{tryc\+\_\+end\+\_\+t}} = decltype(declval$<$ const \+\_\+\+Tp $>$().begin()) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1inbuf__dev__details_a24eae32ecbea1291607f16d92c2b029a}{try\+\_\+cend\+\_\+t}} = decltype(declval$<$ const \+\_\+\+Tp $>$().cend()) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Input buffer device concept + +\subsection{Typedef Documentation} +\mbox{\Hypertarget{namespaceutl_1_1inbuf__dev__details_a18d5c5e879b4714f58861ad411537d53}\label{namespaceutl_1_1inbuf__dev__details_a18d5c5e879b4714f58861ad411537d53}} +\index{utl\+::inbuf\+\_\+dev\+\_\+details@{utl\+::inbuf\+\_\+dev\+\_\+details}!try\+\_\+begin\+\_\+t@{try\+\_\+begin\+\_\+t}} +\index{try\+\_\+begin\+\_\+t@{try\+\_\+begin\+\_\+t}!utl\+::inbuf\+\_\+dev\+\_\+details@{utl\+::inbuf\+\_\+dev\+\_\+details}} +\subsubsection{\texorpdfstring{try\+\_\+begin\+\_\+t}{try\_begin\_t}} +{\footnotesize\ttfamily template$<$class \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1inbuf__dev__details_a18d5c5e879b4714f58861ad411537d53}{utl\+::inbuf\+\_\+dev\+\_\+details\+::try\+\_\+begin\+\_\+t}} = typedef decltype (declval$<$\+\_\+\+Tp$>$().begin())} + + + +Definition at line 343 of file inbuf\+\_\+dev.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1inbuf__dev__details_a351202ead58a98a2eaad4f3987b6170c}\label{namespaceutl_1_1inbuf__dev__details_a351202ead58a98a2eaad4f3987b6170c}} +\index{utl\+::inbuf\+\_\+dev\+\_\+details@{utl\+::inbuf\+\_\+dev\+\_\+details}!try\+\_\+cbegin\+\_\+t@{try\+\_\+cbegin\+\_\+t}} +\index{try\+\_\+cbegin\+\_\+t@{try\+\_\+cbegin\+\_\+t}!utl\+::inbuf\+\_\+dev\+\_\+details@{utl\+::inbuf\+\_\+dev\+\_\+details}} +\subsubsection{\texorpdfstring{try\+\_\+cbegin\+\_\+t}{try\_cbegin\_t}} +{\footnotesize\ttfamily template$<$class \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1inbuf__dev__details_a351202ead58a98a2eaad4f3987b6170c}{utl\+::inbuf\+\_\+dev\+\_\+details\+::try\+\_\+cbegin\+\_\+t}} = typedef decltype (declval$<$const \+\_\+\+Tp$>$().cbegin())} + + + +Definition at line 345 of file inbuf\+\_\+dev.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1inbuf__dev__details_a24eae32ecbea1291607f16d92c2b029a}\label{namespaceutl_1_1inbuf__dev__details_a24eae32ecbea1291607f16d92c2b029a}} +\index{utl\+::inbuf\+\_\+dev\+\_\+details@{utl\+::inbuf\+\_\+dev\+\_\+details}!try\+\_\+cend\+\_\+t@{try\+\_\+cend\+\_\+t}} +\index{try\+\_\+cend\+\_\+t@{try\+\_\+cend\+\_\+t}!utl\+::inbuf\+\_\+dev\+\_\+details@{utl\+::inbuf\+\_\+dev\+\_\+details}} +\subsubsection{\texorpdfstring{try\+\_\+cend\+\_\+t}{try\_cend\_t}} +{\footnotesize\ttfamily template$<$class \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1inbuf__dev__details_a24eae32ecbea1291607f16d92c2b029a}{utl\+::inbuf\+\_\+dev\+\_\+details\+::try\+\_\+cend\+\_\+t}} = typedef decltype (declval$<$const \+\_\+\+Tp$>$().cend())} + + + +Definition at line 348 of file inbuf\+\_\+dev.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1inbuf__dev__details_a5d4aa9d57c443c33cf08375e0c51bdd3}\label{namespaceutl_1_1inbuf__dev__details_a5d4aa9d57c443c33cf08375e0c51bdd3}} +\index{utl\+::inbuf\+\_\+dev\+\_\+details@{utl\+::inbuf\+\_\+dev\+\_\+details}!try\+\_\+end\+\_\+t@{try\+\_\+end\+\_\+t}} +\index{try\+\_\+end\+\_\+t@{try\+\_\+end\+\_\+t}!utl\+::inbuf\+\_\+dev\+\_\+details@{utl\+::inbuf\+\_\+dev\+\_\+details}} +\subsubsection{\texorpdfstring{try\+\_\+end\+\_\+t}{try\_end\_t}} +{\footnotesize\ttfamily template$<$class \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1inbuf__dev__details_a5d4aa9d57c443c33cf08375e0c51bdd3}{utl\+::inbuf\+\_\+dev\+\_\+details\+::try\+\_\+end\+\_\+t}} = typedef decltype (declval$<$\+\_\+\+Tp$>$().begin())} + + + +Definition at line 346 of file inbuf\+\_\+dev.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1inbuf__dev__details_a72a6469ab9ce0cba618dd0b554fc2dd2}\label{namespaceutl_1_1inbuf__dev__details_a72a6469ab9ce0cba618dd0b554fc2dd2}} +\index{utl\+::inbuf\+\_\+dev\+\_\+details@{utl\+::inbuf\+\_\+dev\+\_\+details}!try\+\_\+get1\+\_\+t@{try\+\_\+get1\+\_\+t}} +\index{try\+\_\+get1\+\_\+t@{try\+\_\+get1\+\_\+t}!utl\+::inbuf\+\_\+dev\+\_\+details@{utl\+::inbuf\+\_\+dev\+\_\+details}} +\subsubsection{\texorpdfstring{try\+\_\+get1\+\_\+t}{try\_get1\_t}} +{\footnotesize\ttfamily template$<$class \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1inbuf__dev__details_a72a6469ab9ce0cba618dd0b554fc2dd2}{utl\+::inbuf\+\_\+dev\+\_\+details\+::try\+\_\+get1\+\_\+t}} = typedef decltype (declval$<$\+\_\+\+Tp$>$().\mbox{\hyperlink{namespaceutl_a29057d2e164fe6dd3f3095f0d69c6546}{get}} (declval$<$typename \+\_\+\+Tp\+::data\+\_\+type\&$>$()))} + + + +Definition at line 338 of file inbuf\+\_\+dev.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1inbuf__dev__details_af09ed69d129c33b8a6d3f79c79b8ea35}\label{namespaceutl_1_1inbuf__dev__details_af09ed69d129c33b8a6d3f79c79b8ea35}} +\index{utl\+::inbuf\+\_\+dev\+\_\+details@{utl\+::inbuf\+\_\+dev\+\_\+details}!try\+\_\+get2\+\_\+t@{try\+\_\+get2\+\_\+t}} +\index{try\+\_\+get2\+\_\+t@{try\+\_\+get2\+\_\+t}!utl\+::inbuf\+\_\+dev\+\_\+details@{utl\+::inbuf\+\_\+dev\+\_\+details}} +\subsubsection{\texorpdfstring{try\+\_\+get2\+\_\+t}{try\_get2\_t}} +{\footnotesize\ttfamily template$<$class \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1inbuf__dev__details_af09ed69d129c33b8a6d3f79c79b8ea35}{utl\+::inbuf\+\_\+dev\+\_\+details\+::try\+\_\+get2\+\_\+t}} = typedef decltype (declval$<$\+\_\+\+Tp$>$().\mbox{\hyperlink{namespaceutl_a29057d2e164fe6dd3f3095f0d69c6546}{get}} (declval$<$typename \+\_\+\+Tp\+::data\+\_\+type$\ast$$>$(), declval$<$\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}}$>$()))} + + + +Definition at line 339 of file inbuf\+\_\+dev.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1inbuf__dev__details_adff91b885ea1831691d4619d360bb72b}\label{namespaceutl_1_1inbuf__dev__details_adff91b885ea1831691d4619d360bb72b}} +\index{utl\+::inbuf\+\_\+dev\+\_\+details@{utl\+::inbuf\+\_\+dev\+\_\+details}!tryc\+\_\+begin\+\_\+t@{tryc\+\_\+begin\+\_\+t}} +\index{tryc\+\_\+begin\+\_\+t@{tryc\+\_\+begin\+\_\+t}!utl\+::inbuf\+\_\+dev\+\_\+details@{utl\+::inbuf\+\_\+dev\+\_\+details}} +\subsubsection{\texorpdfstring{tryc\+\_\+begin\+\_\+t}{tryc\_begin\_t}} +{\footnotesize\ttfamily template$<$class \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1inbuf__dev__details_adff91b885ea1831691d4619d360bb72b}{utl\+::inbuf\+\_\+dev\+\_\+details\+::tryc\+\_\+begin\+\_\+t}} = typedef decltype (declval$<$const \+\_\+\+Tp$>$().begin())} + + + +Definition at line 344 of file inbuf\+\_\+dev.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1inbuf__dev__details_a858c7a1a0b1d8d0bdc91ce681aa1b996}\label{namespaceutl_1_1inbuf__dev__details_a858c7a1a0b1d8d0bdc91ce681aa1b996}} +\index{utl\+::inbuf\+\_\+dev\+\_\+details@{utl\+::inbuf\+\_\+dev\+\_\+details}!tryc\+\_\+end\+\_\+t@{tryc\+\_\+end\+\_\+t}} +\index{tryc\+\_\+end\+\_\+t@{tryc\+\_\+end\+\_\+t}!utl\+::inbuf\+\_\+dev\+\_\+details@{utl\+::inbuf\+\_\+dev\+\_\+details}} +\subsubsection{\texorpdfstring{tryc\+\_\+end\+\_\+t}{tryc\_end\_t}} +{\footnotesize\ttfamily template$<$class \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1inbuf__dev__details_a858c7a1a0b1d8d0bdc91ce681aa1b996}{utl\+::inbuf\+\_\+dev\+\_\+details\+::tryc\+\_\+end\+\_\+t}} = typedef decltype (declval$<$const \+\_\+\+Tp$>$().begin())} + + + +Definition at line 347 of file inbuf\+\_\+dev.\+h. + diff --git a/doc/latex/namespaceutl_1_1indev__it__details.tex b/doc/latex/namespaceutl_1_1indev__it__details.tex new file mode 100644 index 0000000..faebeff --- /dev/null +++ b/doc/latex/namespaceutl_1_1indev__it__details.tex @@ -0,0 +1,13 @@ +\hypertarget{namespaceutl_1_1indev__it__details}{}\section{utl\+:\+:indev\+\_\+it\+\_\+details Namespace Reference} +\label{namespaceutl_1_1indev__it__details}\index{utl\+::indev\+\_\+it\+\_\+details@{utl\+::indev\+\_\+it\+\_\+details}} +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structutl_1_1indev__it__details_1_1is__indev__it__}{is\+\_\+indev\+\_\+it\+\_\+}} +\begin{DoxyCompactList}\small\item\em Primary template to catch any non S\+PI interface types. \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1indev__it__details_1_1is__indev__it___3_01___tp_00_01meta_1_1void__t_3_01typename_06508604dcee4010234c84cc332fa196b}{is\+\_\+indev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, meta\+::void\+\_\+t$<$ typename \+\_\+\+Tp\+::value\+\_\+type, typename \+\_\+\+Tp\+::difference\+\_\+type, typename \+\_\+\+Tp\+::pointer, typename \+\_\+\+Tp\+::reference, void $>$ $>$}} +\begin{DoxyCompactList}\small\item\em template to catch a proper S\+PI interface type \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Input device iterator concept \ No newline at end of file diff --git a/doc/latex/namespaceutl_1_1meta.tex b/doc/latex/namespaceutl_1_1meta.tex new file mode 100644 index 0000000..bc22c02 --- /dev/null +++ b/doc/latex/namespaceutl_1_1meta.tex @@ -0,0 +1,2083 @@ +\hypertarget{namespaceutl_1_1meta}{}\section{utl\+:\+:meta Namespace Reference} +\label{namespaceutl_1_1meta}\index{utl\+::meta@{utl\+::meta}} +\subsection*{Namespaces} +\begin{DoxyCompactItemize} +\item + \mbox{\hyperlink{namespaceutl_1_1meta_1_1apply__impl}{apply\+\_\+impl}} +\item + \mbox{\hyperlink{namespaceutl_1_1meta_1_1at__impl}{at\+\_\+impl}} +\item + \mbox{\hyperlink{namespaceutl_1_1meta_1_1back__impl}{back\+\_\+impl}} +\item + \mbox{\hyperlink{namespaceutl_1_1meta_1_1cat__impl}{cat\+\_\+impl}} +\item + \mbox{\hyperlink{namespaceutl_1_1meta_1_1count__if__impl}{count\+\_\+if\+\_\+impl}} +\item + \mbox{\hyperlink{namespaceutl_1_1meta_1_1detail}{detail}} +\item + \mbox{\hyperlink{namespaceutl_1_1meta_1_1filter__impl}{filter\+\_\+impl}} +\item + \mbox{\hyperlink{namespaceutl_1_1meta_1_1find__if__impl}{find\+\_\+if\+\_\+impl}} +\item + \mbox{\hyperlink{namespaceutl_1_1meta_1_1fold__impl}{fold\+\_\+impl}} +\item + \mbox{\hyperlink{namespaceutl_1_1meta_1_1front__impl}{front\+\_\+impl}} +\item + \mbox{\hyperlink{namespaceutl_1_1meta_1_1pop__back__impl}{pop\+\_\+back\+\_\+impl}} +\item + \mbox{\hyperlink{namespaceutl_1_1meta_1_1pop__front__impl}{pop\+\_\+front\+\_\+impl}} +\item + \mbox{\hyperlink{namespaceutl_1_1meta_1_1replace__if__impl}{replace\+\_\+if\+\_\+impl}} +\item + \mbox{\hyperlink{namespaceutl_1_1meta_1_1rev__fold__impl}{rev\+\_\+fold\+\_\+impl}} +\item + \mbox{\hyperlink{namespaceutl_1_1meta_1_1reverse__impl}{reverse\+\_\+impl}} +\item + \mbox{\hyperlink{namespaceutl_1_1meta_1_1seek__if__impl}{seek\+\_\+if\+\_\+impl}} +\item + \mbox{\hyperlink{namespaceutl_1_1meta_1_1transform__impl}{transform\+\_\+impl}} +\item + \mbox{\hyperlink{namespaceutl_1_1meta_1_1transform__lazy__impl}{transform\+\_\+lazy\+\_\+impl}} +\end{DoxyCompactItemize} +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1bind__back}{bind\+\_\+back}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1bind__front}{bind\+\_\+front}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1identity}{identity}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1nat__}{nat\+\_\+}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1nil__}{nil\+\_\+}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1not__same__as}{not\+\_\+same\+\_\+as}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1quote}{quote}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1quote__i}{quote\+\_\+i}} +\begin{DoxyCompactList}\small\item\em Wrap a template {\ttfamily F} taking literal constants of type {\ttfamily T} into an Invokable. \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1same__}{same\+\_\+}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1same___3_01___tp_00_01___tp_01_4}{same\+\_\+$<$ \+\_\+\+Tp, \+\_\+\+Tp $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1same__as}{same\+\_\+as}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1wrap}{wrap}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1wrap__i}{wrap\+\_\+i}} +\begin{DoxyCompactList}\small\item\em Wrap a template {\ttfamily F} taking literal constants of type {\ttfamily T} into an Invokable. \end{DoxyCompactList}\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename... $>$ }\\using \mbox{\hyperlink{group__detection_gac16d50de47cf57734433e9ea636522c5}{void\+\_\+}} = void +\begin{DoxyCompactList}\small\item\em void\+\_\+ type alias \end{DoxyCompactList}\item +{\footnotesize template$<$typename... $>$ }\\using \mbox{\hyperlink{group__detection_gae7373c997420d16cf37e542eb3cfa3ad}{void\+\_\+t}} = void +\begin{DoxyCompactList}\small\item\em void\+\_\+t type alias \end{DoxyCompactList}\item +{\footnotesize template$<$typename Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}} = typename Tp\+::type +\begin{DoxyCompactList}\small\item\em Type alias for {\ttfamily Tp\+::type}. Used to evaluate/extract return type of metafunctions. \end{DoxyCompactList}\item +using \mbox{\hyperlink{namespaceutl_1_1meta_af0c85cc6480a9e7a8e4fb7d8f936f01b}{Npos}} = \mbox{\hyperlink{namespaceutl_1_1meta_a249ac51f6613684164663bd22025fe9a}{size\+\_\+}}$<$ \mbox{\hyperlink{namespaceutl_a676c0acd539dd04048dcc7b4d698577e}{index\+\_\+t}}(-\/1)$>$ +\begin{DoxyCompactList}\small\item\em The last position we can express for indexing. \end{DoxyCompactList}\item +{\footnotesize template$<$bool B$>$ }\\using \mbox{\hyperlink{group__integral_ga7de987520bd0973f03ff8bab3152361a}{not\+\_\+c}} = \mbox{\hyperlink{namespaceutl_1_1meta_a0bec5828d2df0edfb4bc084773a438f6}{bool\+\_\+}}$<$!B $>$ +\begin{DoxyCompactList}\small\item\em Negate the {\itshape bool} constant parameter. \end{DoxyCompactList}\item +{\footnotesize template$<$typename \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{group__integral_ga16df145331d3c62e624385c5949d90c4}{not\+\_\+}} = \mbox{\hyperlink{group__integral_ga7de987520bd0973f03ff8bab3152361a}{not\+\_\+c}}$<$ \+\_\+\+Tp\+::type\+::value $>$ +\begin{DoxyCompactList}\small\item\em not \end{DoxyCompactList}\item +{\footnotesize template$<$typename List $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a0edfc2c15e42531e53c0822264d220ec}{size}} = \mbox{\hyperlink{namespaceutl_1_1meta_a249ac51f6613684164663bd22025fe9a}{size\+\_\+}}$<$ List\+::size()$>$ +\item +{\footnotesize template$<$typename List $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a58c1744750d0df133034f60a95f87e19}{empty}} = \mbox{\hyperlink{namespaceutl_1_1meta_a0bec5828d2df0edfb4bc084773a438f6}{bool\+\_\+}}$<$ List\+::empty()$>$ +\item +{\footnotesize template$<$typename T1 , typename T2 $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_aa6513d9d2a5db3ba3517efff33adc761}{pair}} = \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ T1, T2 $>$ +\item +{\footnotesize template$<$typename List , typename... Ts$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ab0f84ba0807b6fd36fa9e4e5cfc4cd32}{push\+\_\+front}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_a3f684549221fac60bc8c7979cb4b98f4}{apply}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1bind__front}{bind\+\_\+front}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1quote}{quote}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}} $>$, Ts... $>$, List $>$ $>$ +\item +{\footnotesize template$<$typename List , typename... Ts$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_adf545ba110edc6a34ddcaf2280a0c7f4}{push\+\_\+back}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_a3f684549221fac60bc8c7979cb4b98f4}{apply}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1bind__back}{bind\+\_\+back}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1quote}{quote}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}} $>$, Ts... $>$, List $>$ $>$ +\item +{\footnotesize template$<$typename List , typename Pred $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ace96e2f19376375cc71ee0cd80f4bb75}{all\+\_\+of}} = \mbox{\hyperlink{group__type_ga39cc4e727a8faa5ea176f543e62c05c0}{if\+\_\+}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_a58c1744750d0df133034f60a95f87e19}{empty}}$<$ List $>$, \mbox{\hyperlink{namespaceutl_1_1meta_a55511dbaa0adb605ce22dcec11f8d22d}{false\+\_\+}}, \mbox{\hyperlink{namespaceutl_1_1meta_a58c1744750d0df133034f60a95f87e19}{empty}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_ac72acc616316c322e750d20a46553ba4}{filter}}$<$ List, \mbox{\hyperlink{namespaceutl_1_1meta_a4f0c06cabe66bc73b703eb8509c7bb07}{compose}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1quote}{quote}}$<$ \mbox{\hyperlink{group__integral_ga16df145331d3c62e624385c5949d90c4}{not\+\_\+}} $>$, Pred $>$ $>$ $>$ $>$ +\item +{\footnotesize template$<$typename List , typename Pred $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a212c26a29491610187f6e8543f06df5f}{any\+\_\+of}} = \mbox{\hyperlink{group__integral_ga16df145331d3c62e624385c5949d90c4}{not\+\_\+}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_a58c1744750d0df133034f60a95f87e19}{empty}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_ac72acc616316c322e750d20a46553ba4}{filter}}$<$ List, Pred $>$ $>$ $>$ +\item +{\footnotesize template$<$typename List , typename Pred $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_af324255cfaa0be3f02843961f5becb85}{none\+\_\+of}} = \mbox{\hyperlink{namespaceutl_1_1meta_a58c1744750d0df133034f60a95f87e19}{empty}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_ac72acc616316c322e750d20a46553ba4}{filter}}$<$ List, Pred $>$ $>$ +\item +{\footnotesize template$<$typename \+\_\+\+T1 , typename \+\_\+\+T2 , typename \+\_\+\+Ret = \+\_\+\+T1$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a7b4ba22b3afb3e7a98e1012a350cb573}{use\+\_\+if\+\_\+same\+\_\+t}} = \mbox{\hyperlink{namespaceutl_1_1meta_a372fe391d9567f66a81091f581e1fa01}{enable\+\_\+if\+\_\+t}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1same__}{same\+\_\+}}$<$ \+\_\+\+T1, \+\_\+\+T2 $>$\+::value, \+\_\+\+Ret $>$ +\begin{DoxyCompactList}\small\item\em If same type resolves to \+\_\+\+Ret, else S\+F\+I\+N\+AE. \end{DoxyCompactList}\item +{\footnotesize template$<$typename \+\_\+\+T1 , typename \+\_\+\+T2 , typename \+\_\+\+Ret = \+\_\+\+T1$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_af590469269a8c378d937d8d75ee96e8c}{use\+\_\+if\+\_\+not\+\_\+same\+\_\+t}} = \mbox{\hyperlink{namespaceutl_1_1meta_a372fe391d9567f66a81091f581e1fa01}{enable\+\_\+if\+\_\+t}}$<$ !\mbox{\hyperlink{structutl_1_1meta_1_1same__}{same\+\_\+}}$<$ \+\_\+\+T1, \+\_\+\+T2 $>$\+::value, \+\_\+\+Ret $>$ +\begin{DoxyCompactList}\small\item\em If not same type resolves to \+\_\+\+Ret, else S\+F\+I\+N\+AE. \end{DoxyCompactList}\item +{\footnotesize template$<$typename T1 , typename... Ts$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ad0394846551cd881782e46d2d05190de}{use\+\_\+if\+\_\+any\+\_\+t}} = \mbox{\hyperlink{namespaceutl_1_1meta_a372fe391d9567f66a81091f581e1fa01}{enable\+\_\+if\+\_\+t}}$<$ \mbox{\hyperlink{group__integral_gac43f400cc93d54f5f79892e618069d9b}{or\+\_\+}}$<$ T1, Ts... $>$\+::value, T1 $>$ +\begin{DoxyCompactList}\small\item\em If any type (\+\_\+\+T1 or \+\_\+\+T2) type resolves to \+\_\+\+Ret, else to S\+F\+I\+N\+AE. \end{DoxyCompactList}\item +{\footnotesize template$<$typename T1 , typename... Ts$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a52ff6257bf079904f9cb51a65f5a7397}{use\+\_\+if\+\_\+all\+\_\+t}} = \mbox{\hyperlink{namespaceutl_1_1meta_a372fe391d9567f66a81091f581e1fa01}{enable\+\_\+if\+\_\+t}}$<$ \mbox{\hyperlink{group__integral_ga8e82f4758321e0e0b3705607f7d8e068}{and\+\_\+}}$<$ T1, Ts... $>$\+::value, T1 $>$ +\begin{DoxyCompactList}\small\item\em If both type (\+\_\+\+T1 and \+\_\+\+T2) type resolves to \+\_\+\+Ret, else to S\+F\+I\+N\+AE. \end{DoxyCompactList}\end{DoxyCompactItemize} +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename Tp , Tp v$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}} = std\+::integral\+\_\+constant$<$ Tp, v $>$ +\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$bool v$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a0bec5828d2df0edfb4bc084773a438f6}{bool\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ bool, v $>$ +\begin{DoxyCompactList}\small\item\em bool\+\_\+ type\+: integral constant wrapper for bool \end{DoxyCompactList}\item +using \mbox{\hyperlink{namespaceutl_1_1meta_ae9a5a8fbe8202785f059935af219fb97}{true\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_a0bec5828d2df0edfb4bc084773a438f6}{bool\+\_\+}}$<$ true $>$ +\begin{DoxyCompactList}\small\item\em The type used as a compile-\/time boolean with true value. \end{DoxyCompactList}\item +using \mbox{\hyperlink{namespaceutl_1_1meta_a55511dbaa0adb605ce22dcec11f8d22d}{false\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_a0bec5828d2df0edfb4bc084773a438f6}{bool\+\_\+}}$<$ false $>$ +\begin{DoxyCompactList}\small\item\em The type used as a compile-\/time boolean with false value. \end{DoxyCompactList}\item +{\footnotesize template$<$int8\+\_\+t v$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_aa0ca1890dde0298c4380f94582cc2186}{int8\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ int8\+\_\+t, v $>$ +\begin{DoxyCompactList}\small\item\em int8\+\_\+ type\+: integral constant wrapper for {\ttfamily int8\+\_\+t} \end{DoxyCompactList}\item +{\footnotesize template$<$uint8\+\_\+t v$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_aae9c77ad9349e98af6cdc41e9b0090f8}{uint8\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ uint8\+\_\+t, v $>$ +\begin{DoxyCompactList}\small\item\em uint8\+\_\+ type\+: integral constant wrapper for {\ttfamily uint8\+\_\+t} \end{DoxyCompactList}\item +{\footnotesize template$<$int16\+\_\+t v$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a65bf025970a7ec0fd488c50a1b9c1038}{int16\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ int16\+\_\+t, v $>$ +\begin{DoxyCompactList}\small\item\em int16\+\_\+ type\+: integral constant wrapper for {\ttfamily int16\+\_\+t} \end{DoxyCompactList}\item +{\footnotesize template$<$uint16\+\_\+t v$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_af1b0b8109e3e61032c24d148202b6966}{uint16\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ uint16\+\_\+t, v $>$ +\begin{DoxyCompactList}\small\item\em uint16\+\_\+ type\+: integral constant wrapper for {\ttfamily uint16\+\_\+t} \end{DoxyCompactList}\item +{\footnotesize template$<$int32\+\_\+t v$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_aa907f027fe3df2cecca2cf60930086fb}{int32\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ int32\+\_\+t, v $>$ +\begin{DoxyCompactList}\small\item\em int32\+\_\+ type\+: integral constant wrapper for {\ttfamily int32\+\_\+t} \end{DoxyCompactList}\item +{\footnotesize template$<$uint32\+\_\+t v$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_aa8c7c38548db8df196b683ffdc109cd6}{uint32\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ uint32\+\_\+t, v $>$ +\begin{DoxyCompactList}\small\item\em uint32\+\_\+ type\+: integral constant wrapper for {\ttfamily uint32\+\_\+t} \end{DoxyCompactList}\item +{\footnotesize template$<$char v$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a0fe31eec9b085e52aa45587e6d887419}{char\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ char, v $>$ +\begin{DoxyCompactList}\small\item\em char\+\_\+ type\+: integral constant wrapper for {\ttfamily char} \end{DoxyCompactList}\item +{\footnotesize template$<$int v$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a35b962b97f8277de66c1c8c02796eed4}{int\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ int, v $>$ +\begin{DoxyCompactList}\small\item\em int\+\_\+ type\+: integral constant wrapper for {\ttfamily int} \end{DoxyCompactList}\item +{\footnotesize template$<$long v$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a5d3ed337c64ea13ee70891d09b0caa3e}{long\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ long, v $>$ +\begin{DoxyCompactList}\small\item\em long\+\_\+ type\+: integral constant wrapper for {\ttfamily long} \end{DoxyCompactList}\item +{\footnotesize template$<$index\+\_\+t v$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a5b7d36b9e568b81f2df897d56dc23b64}{index\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ \mbox{\hyperlink{namespaceutl_a676c0acd539dd04048dcc7b4d698577e}{index\+\_\+t}}, v $>$ +\begin{DoxyCompactList}\small\item\em index\+\_\+ type\+: integral constant wrapper for {\ttfamily index\+\_\+t} a.\+k.\+a std\+::size\+\_\+t \end{DoxyCompactList}\item +{\footnotesize template$<$size\+\_\+t v$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a249ac51f6613684164663bd22025fe9a}{size\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}}, v $>$ +\begin{DoxyCompactList}\small\item\em size\+\_\+ type\+: integral constant wrapper for {\ttfamily size\+\_\+t} a.\+k.\+a std\+::size\+\_\+t \end{DoxyCompactList}\item +{\footnotesize template$<$typename Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a3fdae1894a962a69828ccccf73088cce}{sizeof\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_a249ac51f6613684164663bd22025fe9a}{size\+\_\+}}$<$ sizeof(Tp)$>$ +\item +{\footnotesize template$<$typename Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_afacfb1fb855b9a9a0c8a2a625a2a9bd2}{alignof\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_a249ac51f6613684164663bd22025fe9a}{size\+\_\+}}$<$ alignof(Tp)$>$ +\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$class Tp , Tp... Ints$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_abc3ba8590a6cdd451f64d6c5dcd8ff99}{integer\+\_\+sequence}} = std\+::integer\+\_\+sequence$<$ Tp, Ints... $>$ +\item +{\footnotesize template$<$typename Tp , Tp Num$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a093a8cfdae571002c305273aa02ad6a2}{make\+\_\+integer\+\_\+sequence}} = std\+::make\+\_\+integer\+\_\+sequence$<$ Tp, Num $>$ +\item +{\footnotesize template$<$index\+\_\+t... Idx$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_acb42e9c38b726174e64a36eea39239a5}{index\+\_\+sequence}} = \mbox{\hyperlink{namespaceutl_1_1meta_abc3ba8590a6cdd451f64d6c5dcd8ff99}{integer\+\_\+sequence}}$<$ \mbox{\hyperlink{namespaceutl_a676c0acd539dd04048dcc7b4d698577e}{index\+\_\+t}}, Idx... $>$ +\begin{DoxyCompactList}\small\item\em Alias template index\+\_\+sequence. \end{DoxyCompactList}\item +{\footnotesize template$<$index\+\_\+t Num$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_aa7e48cd5c76ea88fc89ff4a66bc6f596}{make\+\_\+index\+\_\+sequence}} = \mbox{\hyperlink{namespaceutl_1_1meta_a093a8cfdae571002c305273aa02ad6a2}{make\+\_\+integer\+\_\+sequence}}$<$ \mbox{\hyperlink{namespaceutl_a676c0acd539dd04048dcc7b4d698577e}{index\+\_\+t}}, Num $>$ +\begin{DoxyCompactList}\small\item\em Alias template make\+\_\+index\+\_\+sequence. \end{DoxyCompactList}\item +{\footnotesize template$<$typename... Types$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a7cdf7fbb62116925ccdecab03d3383d9}{index\+\_\+sequence\+\_\+for}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa7e48cd5c76ea88fc89ff4a66bc6f596}{make\+\_\+index\+\_\+sequence}}$<$ sizeof...(Types)$>$ +\begin{DoxyCompactList}\small\item\em Alias template index\+\_\+sequence\+\_\+for. \end{DoxyCompactList}\end{DoxyCompactItemize} + +\begin{Indent}\textbf{ meta\+:\+:invoke}\par +{\em A meta-\/programming \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke()}} analogous. A {\ttfamily meta\+::invocable} shall contain a nested template type named {\bfseries apply} which is bind to actual invocable meta-\/function. + + +\begin{DoxyItemize} +\item We can use {\ttfamily wrap$<$$>$} or even better {\ttfamily quote$<$$>$} in order to wrap a metafunction to a type (metafunction class) +\item We can pass these wrapped types to other metafunctions +\item We can {\ttfamily invoke$<$$>$} the inner {\ttfamily apply} from a wrapped metafunction class. +\end{DoxyItemize}}\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a63c0b6b08f4c1d9bd3c4db7432e9b2af}{identity\+\_\+t}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1identity}{identity}}$<$ \+\_\+\+Tp $>$ $>$ +\begin{DoxyCompactList}\small\item\em identity type alias \end{DoxyCompactList}\end{DoxyCompactItemize} +\end{Indent} +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename Fn , typename... Args$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}} = typename Fn\+::template \mbox{\hyperlink{namespaceutl_1_1meta_a3f684549221fac60bc8c7979cb4b98f4}{apply}}$<$ Args... $>$ +\item +{\footnotesize template$<$typename Fn , typename... Args$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ac27f3e5f3ec42921d9f8a6bb85560cf1}{invoke\+\_\+t}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}}$<$ Fn, Args... $>$ $>$ +\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$template$<$ typename... $>$ class F, typename... T$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a695a94a2bbe51b0d0eec9bf82214d094}{is\+\_\+applicable\+\_\+t}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__}{detail\+::is\+\_\+applicable\+\_\+}}$<$ F, T... $>$ $>$ +\begin{DoxyCompactList}\small\item\em check if we can instantiate {\ttfamily F} with parameters {\ttfamily T} \end{DoxyCompactList}\item +{\footnotesize template$<$typename Q , typename... T$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a52c0afa73f63dc889e44cc6cc180f1f8}{is\+\_\+applicable\+\_\+qt}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__q__}{detail\+::is\+\_\+applicable\+\_\+q\+\_\+}}$<$ Q, T... $>$ $>$ +\begin{DoxyCompactList}\small\item\em check if we can invoke {\ttfamily Q} with parameters {\ttfamily T} \end{DoxyCompactList}\item +{\footnotesize template$<$typename T , template$<$ T... $>$ class F, T... Is$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_add602488265f07c7a3080355350cda70}{is\+\_\+applicable\+\_\+it}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__i__}{detail\+::is\+\_\+applicable\+\_\+i\+\_\+}}$<$ T, F, Is... $>$ $>$ +\begin{DoxyCompactList}\small\item\em check if we can instantiate {\ttfamily F} with parameters {\ttfamily Is} of type {\ttfamily T} \end{DoxyCompactList}\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$template$<$ class... $>$ class F, class... Ts$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a48f9a1220931596a9652351d2e7242be}{defer}} = \mbox{\hyperlink{group__type_ga39cc4e727a8faa5ea176f543e62c05c0}{if\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__}{detail\+::is\+\_\+applicable\+\_\+}}$<$ F, Ts... $>$, \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1defer__}{detail\+::defer\+\_\+}}$<$ F, Ts... $>$, \mbox{\hyperlink{structutl_1_1meta_1_1nil__}{nil\+\_\+}} $>$ +\begin{DoxyCompactList}\small\item\em defer alias template for F$<$\+Ts...$>$ \end{DoxyCompactList}\item +{\footnotesize template$<$typename T , template$<$ T... $>$ class F, T... Is$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a01f183f337439e414184beedc9bcf9e3}{defer\+\_\+i}} = \mbox{\hyperlink{group__type_ga39cc4e727a8faa5ea176f543e62c05c0}{if\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__i__}{detail\+::is\+\_\+applicable\+\_\+i\+\_\+}}$<$ T, F, Is... $>$, \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1defer__i__}{detail\+::defer\+\_\+i\+\_\+}}$<$ T, F, Is... $>$, \mbox{\hyperlink{structutl_1_1meta_1_1nil__}{nil\+\_\+}} $>$ +\begin{DoxyCompactList}\small\item\em defer\+\_\+i alias template for F$<$\+T, Is...$>$ \end{DoxyCompactList}\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename... Fns$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a4f0c06cabe66bc73b703eb8509c7bb07}{compose}} = \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1compose__}{detail\+::compose\+\_\+}}$<$ Fns... $>$ +\item +{\footnotesize template$<$template$<$ typename... $>$ class... Fns$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a729294327829b3068632da1235dc3090}{compose\+\_\+f}} = \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1compose__f__}{detail\+::compose\+\_\+f\+\_\+}}$<$ Fns... $>$ +\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename... \+\_\+\+Ts$>$ }\\using \mbox{\hyperlink{group__integral_gac43f400cc93d54f5f79892e618069d9b}{or\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1__or__}{detail\+::\+\_\+or\+\_\+}}$<$ \+\_\+\+Ts... $>$ $>$ +\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename... \+\_\+\+Ts$>$ }\\using \mbox{\hyperlink{group__integral_ga8e82f4758321e0e0b3705607f7d8e068}{and\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1__and__}{detail\+::\+\_\+and\+\_\+}}$<$ \+\_\+\+Ts... $>$ $>$ +\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename \+\_\+\+T1 , typename \+\_\+\+T2 $>$ }\\using \mbox{\hyperlink{group__integral_ga4dfaf054d891eb35d741662b077bbbd2}{not\+\_\+same\+\_\+}} = \mbox{\hyperlink{group__integral_ga16df145331d3c62e624385c5949d90c4}{not\+\_\+}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1same__}{same\+\_\+}}$<$ \+\_\+\+T1, \+\_\+\+T2 $>$ $>$$>$ +\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_aec4bf9329ff8356d333a59e3c369d0b7}{negate}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ decltype(-\/\+\_\+\+Tp()), -\/\+\_\+\+Tp()$>$ +\begin{DoxyCompactList}\small\item\em Negation. \end{DoxyCompactList}\item +{\footnotesize template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a559ad95ef39fd2c81664bd1a22dd99c1}{add}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ decltype(\+\_\+\+Tp1()+\+\_\+\+Tp2()), \+\_\+\+Tp1()+\+\_\+\+Tp2() $>$ +\begin{DoxyCompactList}\small\item\em Addition. \end{DoxyCompactList}\item +{\footnotesize template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a5f0a890cbd116d4a72a760a26f5a8244}{mult}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ decltype(\+\_\+\+Tp2() $\ast$\+\_\+\+Tp2()), \+\_\+\+Tp1() $\ast$\+\_\+\+Tp2() $>$ +\begin{DoxyCompactList}\small\item\em Multiplication. \end{DoxyCompactList}\item +{\footnotesize template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ae1ec6fc1f76abbb2e5287aa91cd85068}{divide}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ decltype(\+\_\+\+Tp2()/\+\_\+\+Tp2()), \+\_\+\+Tp1()/\+\_\+\+Tp2() $>$ +\begin{DoxyCompactList}\small\item\em Division. \end{DoxyCompactList}\item +{\footnotesize template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_adf7106374b1acc978be05b5848002cfc}{modulo}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ decltype(\+\_\+\+Tp1() \% \+\_\+\+Tp2()), \+\_\+\+Tp1() \% \+\_\+\+Tp2() $>$ +\begin{DoxyCompactList}\small\item\em Modulo. \end{DoxyCompactList}\item +{\footnotesize template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a9f90eea3852367afa4e1fe74756976fb}{sub}} = \mbox{\hyperlink{namespaceutl_1_1meta_a559ad95ef39fd2c81664bd1a22dd99c1}{add}}$<$ \+\_\+\+Tp1, \mbox{\hyperlink{namespaceutl_1_1meta_aec4bf9329ff8356d333a59e3c369d0b7}{negate}}$<$ \+\_\+\+Tp2 $>$ $>$ +\begin{DoxyCompactList}\small\item\em Substruction. \end{DoxyCompactList}\item +{\footnotesize template$<$typename \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_af74f5af58b33241f1b94102742a73ab1}{inc}} = \mbox{\hyperlink{namespaceutl_1_1meta_a559ad95ef39fd2c81664bd1a22dd99c1}{add}}$<$ \+\_\+\+Tp, \mbox{\hyperlink{namespaceutl_1_1meta_a35b962b97f8277de66c1c8c02796eed4}{int\+\_\+}}$<$ 1 $>$ $>$ +\begin{DoxyCompactList}\small\item\em Increase. \end{DoxyCompactList}\item +{\footnotesize template$<$typename \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_abee96e75aadb364fdd0890aa3ee490b7}{dec}} = \mbox{\hyperlink{namespaceutl_1_1meta_a559ad95ef39fd2c81664bd1a22dd99c1}{add}}$<$ \+\_\+\+Tp, \mbox{\hyperlink{namespaceutl_1_1meta_a35b962b97f8277de66c1c8c02796eed4}{int\+\_\+}}$<$-\/1 $>$ $>$ +\begin{DoxyCompactList}\small\item\em decrease \end{DoxyCompactList}\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a7ae2d08147055946f1b9345e579a26b6}{comp\+\_\+eq}} = \mbox{\hyperlink{namespaceutl_1_1meta_a0bec5828d2df0edfb4bc084773a438f6}{bool\+\_\+}}$<$ \+\_\+\+Tp1()==\+\_\+\+Tp2()$>$ +\item +{\footnotesize template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a1a948746d1758a05c0ae71cfd114b05d}{comp\+\_\+lt}} = \mbox{\hyperlink{namespaceutl_1_1meta_a0bec5828d2df0edfb4bc084773a438f6}{bool\+\_\+}}$<$(\+\_\+\+Tp1()$<$ \+\_\+\+Tp2())$>$ +\item +{\footnotesize template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_af92bee16de47b16ba01a8efac686b488}{comp\+\_\+ne}} = \mbox{\hyperlink{group__integral_ga16df145331d3c62e624385c5949d90c4}{not\+\_\+}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_a7ae2d08147055946f1b9345e579a26b6}{comp\+\_\+eq}}$<$ \+\_\+\+Tp1, \+\_\+\+Tp2 $>$ $>$ +\begin{DoxyCompactList}\small\item\em Not equal. \end{DoxyCompactList}\item +{\footnotesize template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a3c4784ad3eb1f745c58b9a4b65a406e8}{comp\+\_\+gt}} = \mbox{\hyperlink{namespaceutl_1_1meta_a1a948746d1758a05c0ae71cfd114b05d}{comp\+\_\+lt}}$<$ \+\_\+\+Tp2, \+\_\+\+Tp1 $>$ +\begin{DoxyCompactList}\small\item\em Greater than. \end{DoxyCompactList}\item +{\footnotesize template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_afb9a35dc5ef40b5bf9902c0daec7f1af}{comp\+\_\+le}} = \mbox{\hyperlink{group__integral_ga16df145331d3c62e624385c5949d90c4}{not\+\_\+}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_a1a948746d1758a05c0ae71cfd114b05d}{comp\+\_\+lt}}$<$ \+\_\+\+Tp2, \+\_\+\+Tp1 $>$ $>$ +\begin{DoxyCompactList}\small\item\em Less or equal. \end{DoxyCompactList}\item +{\footnotesize template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ae6c552e8e99ac5578f865f17c1d0efdc}{comp\+\_\+ge}} = \mbox{\hyperlink{group__integral_ga16df145331d3c62e624385c5949d90c4}{not\+\_\+}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_a1a948746d1758a05c0ae71cfd114b05d}{comp\+\_\+lt}}$<$ \+\_\+\+Tp1, \+\_\+\+Tp2 $>$ $>$ +\begin{DoxyCompactList}\small\item\em Greater or equal. \end{DoxyCompactList}\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename \+\_\+T $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a9ea199752ca985d1b813d7127868566c}{bitnot\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ typename \+\_\+\+T\+::value\+\_\+type,(typename \+\_\+\+T\+::value\+\_\+type)($\sim$\+\_\+T())$>$ +\item +{\footnotesize template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_aca6b42898b47945118c518bde9d25cc2}{bitand\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ decltype(\+\_\+\+Tp1() \&\+\_\+\+Tp2()), \+\_\+\+Tp1() \&\+\_\+\+Tp2()$>$ +\item +{\footnotesize template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a1e2c2decdd22972fc8ce43203c0ef0d1}{bitor\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ decltype(\+\_\+\+Tp1()$\vert$\+\_\+\+Tp2()), \+\_\+\+Tp1()$\vert$\+\_\+\+Tp2()$>$ +\item +{\footnotesize template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a910e21345bc7e75dc7c0ceb4a4721754}{bitxor\+\_\+}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ decltype(\+\_\+\+Tp1() $^\wedge$ \+\_\+\+Tp2()), \+\_\+\+Tp1() $^\wedge$ \+\_\+\+Tp2()$>$ +\item +{\footnotesize template$<$typename \+\_\+\+Tp , typename shift $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a63088c29ac25eefda4189721e662b391}{shift\+\_\+left}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ typename \+\_\+\+Tp\+::value\+\_\+type,(typename \+\_\+\+Tp\+::value\+\_\+type)(\+\_\+\+Tp()$<$$<$ shift())$>$ +\item +{\footnotesize template$<$typename \+\_\+\+Tp , typename shift $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_acbe6dd78c4a4230e92acc5ca86e3fcc7}{shift\+\_\+right}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ typename \+\_\+\+Tp\+::value\+\_\+type,(typename \+\_\+\+Tp\+::value\+\_\+type)(\+\_\+\+Tp() $>$ $>$ shift())$>$ +\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$bool B, typename... Args$>$ }\\using \mbox{\hyperlink{group__type_gaa3812817ce749832da73fdf5d2a85380}{if\+\_\+c}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1if__c__}{detail\+::if\+\_\+c\+\_\+}}$<$ B, Args... $>$ $>$ +\begin{DoxyCompactList}\small\item\em Select one type or another depending on a compile-\/time Boolean. \end{DoxyCompactList}\item +{\footnotesize template$<$typename If , typename... Args$>$ }\\using \mbox{\hyperlink{group__type_ga39cc4e727a8faa5ea176f543e62c05c0}{if\+\_\+}} = \mbox{\hyperlink{group__type_gaa3812817ce749832da73fdf5d2a85380}{if\+\_\+c}}$<$ If\+::type\+::value, Args... $>$ +\begin{DoxyCompactList}\small\item\em Select one type or another depending on a compile-\/time Boolean type. \end{DoxyCompactList}\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename T1 , typename ... $>$ }\\using \mbox{\hyperlink{group__type_gaf7089523d21cd405c76985643f31092a}{first\+\_\+of}} = T1 +\begin{DoxyCompactList}\small\item\em Select the first type of a type sequence. \end{DoxyCompactList}\item +{\footnotesize template$<$typename T1 , typename T2 , typename ... $>$ }\\using \mbox{\hyperlink{group__type_ga422dd1b0895f0074ad9932d68d9edbc5}{second\+\_\+of}} = T2 +\begin{DoxyCompactList}\small\item\em Select the second type of a type sequence. \end{DoxyCompactList}\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$bool If$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a181d79db46b10170529e85b907ed3dc7}{when}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1when__}{detail\+::when\+\_\+}}$<$ If $>$ $>$ +\begin{DoxyCompactList}\small\item\em Well formed only if {\ttfamily If} is true. \end{DoxyCompactList}\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$bool If, typename \+\_\+\+Tp = void$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ab3fed26a4c7a8204accb349f0b6600e8}{enable\+\_\+if}} = std\+::enable\+\_\+if$<$ If, \+\_\+\+Tp $>$ +\begin{DoxyCompactList}\small\item\em enable\+\_\+if, imported from stl \end{DoxyCompactList}\item +{\footnotesize template$<$bool If, typename \+\_\+\+Tp = void$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a372fe391d9567f66a81091f581e1fa01}{enable\+\_\+if\+\_\+t}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_ab3fed26a4c7a8204accb349f0b6600e8}{enable\+\_\+if}}$<$ If, \+\_\+\+Tp $>$ $>$ +\begin{DoxyCompactList}\small\item\em alias template for enable\+\_\+if \end{DoxyCompactList}\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$size\+\_\+t N, typename ... Ts$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_af6ff0017ea5e914543527b7135930f47}{repeat\+\_\+c}} = typename \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ Ts... $>$\+::template times$<$ N $>$ +\item +{\footnotesize template$<$typename N , typename ... Ts$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_aa013c45afb59b5c132a72be54ba145fb}{repeat}} = \mbox{\hyperlink{namespaceutl_1_1meta_af6ff0017ea5e914543527b7135930f47}{repeat\+\_\+c}}$<$ N\+::type\+::value, Ts... $>$ +\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename Fn , typename Seq $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a3f684549221fac60bc8c7979cb4b98f4}{apply}} = \mbox{\hyperlink{structutl_1_1meta_1_1apply__impl_1_1apply__}{apply\+\_\+impl\+::apply\+\_\+}}$<$ Fn, Seq $>$ +\item +{\footnotesize template$<$typename Fn , typename Seq $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ac2952cd4ed04938edc6de21ffe200e9b}{apply\+\_\+t}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_a3f684549221fac60bc8c7979cb4b98f4}{apply}}$<$ Fn, Seq $>$ $>$ +\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename List , index\+\_\+t N$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a6683b804a20d54817d61ce4663527084}{at\+\_\+c}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1at__impl_1_1at__}{at\+\_\+impl\+::at\+\_\+}}$<$ List, N $>$ $>$ +\item +{\footnotesize template$<$typename List , typename N $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a67329ec425c857dcaf4cde9044674c90}{at}} = \mbox{\hyperlink{namespaceutl_1_1meta_a6683b804a20d54817d61ce4663527084}{at\+\_\+c}}$<$ List, N\+::type\+::value $>$ +\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename List $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ace309fb2eff5c4a5a806b9393abea486}{front}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1front__impl_1_1front__}{front\+\_\+impl\+::front\+\_\+}}$<$ List $>$ $>$ +\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename List $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ad9ee55707fc633d53577b81a59136b7d}{back}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1back__impl_1_1back__}{back\+\_\+impl\+::back\+\_\+}}$<$ List $>$ $>$ +\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename... Lists$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a70d0910ace47f4e12e8fa0788679044a}{cat}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1cat__impl_1_1cat__}{cat\+\_\+impl\+::cat\+\_\+}}$<$ Lists... $>$ $>$ +\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename List , typename V , typename Fn $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a6108f39d28c924146eff4143a61af226}{fold}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1fold__impl_1_1fold__}{fold\+\_\+impl\+::fold\+\_\+}}$<$ List, V, Fn $>$ $>$ +\item +{\footnotesize template$<$typename List , typename V , typename Fn $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_aeb5cb48e804cd160b39f8c3ed2967c37}{accumulate}} = \mbox{\hyperlink{namespaceutl_1_1meta_a6108f39d28c924146eff4143a61af226}{fold}}$<$ List, V, Fn $>$ +\begin{DoxyCompactList}\small\item\em accumulate is an stl name for fold \end{DoxyCompactList}\item +{\footnotesize template$<$typename List , typename V , typename Fn $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ab1a91edef4cf9fd56b73c9a03eaeb3d4}{rev\+\_\+fold}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold__}{rev\+\_\+fold\+\_\+impl\+::rev\+\_\+fold\+\_\+}}$<$ List, V, Fn $>$ $>$ +\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename List $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a2ae6bfa22f1912b0ba09d24e0ae2ccd9}{reverse}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1reverse__impl_1_1reverse__}{reverse\+\_\+impl\+::reverse\+\_\+}}$<$ List $>$ $>$ +\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename List $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_aa4a307a81c0640c6c0dd08f8a53f3c32}{pop\+\_\+front}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1pop__front__impl_1_1pop__front__}{pop\+\_\+front\+\_\+impl\+::pop\+\_\+front\+\_\+}}$<$ List $>$ $>$ +\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename List $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a86a37f5803c474823963e1f3c6f7a6d6}{pop\+\_\+back}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1pop__back__impl_1_1pop__back__}{pop\+\_\+back\+\_\+impl\+::pop\+\_\+back\+\_\+}}$<$ List $>$ $>$ +\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename... Args$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ac8bbf187eea3cb5da38d1bdc97b52334}{transform}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1transform__impl_1_1transform__}{transform\+\_\+impl\+::transform\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ Args... $>$ $>$ $>$ +\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename... Args$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a55c0405bfb94c1d285d3131390c31451}{transform\+\_\+lazy}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy__}{transform\+\_\+lazy\+\_\+impl\+::transform\+\_\+lazy\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ Args... $>$ $>$ $>$ +\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename List , typename Pred $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_aacf124929c0cbb3b29d34679bff50a96}{find\+\_\+if}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1find__if__impl_1_1find__if__}{find\+\_\+if\+\_\+impl\+::find\+\_\+if\+\_\+}}$<$ List, Pred, 0 $>$ $>$ +\item +{\footnotesize template$<$typename List , typename T $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_af4c9b6350bba98cc0dd73e87cb4ce413}{find}} = \mbox{\hyperlink{namespaceutl_1_1meta_aacf124929c0cbb3b29d34679bff50a96}{find\+\_\+if}}$<$ List, \mbox{\hyperlink{structutl_1_1meta_1_1same__as}{same\+\_\+as}}$<$ T $>$ $>$ +\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename List , typename Pred $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ab8eafd75f3077a36c4e3363b742da64a}{seek\+\_\+if}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1seek__if__impl_1_1seek__if__}{seek\+\_\+if\+\_\+impl\+::seek\+\_\+if\+\_\+}}$<$ List, Pred, 0 $>$ $>$ +\item +{\footnotesize template$<$typename List , typename T $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_aa550d9dc96d34623af4ce71f8a1eaff5}{seek}} = \mbox{\hyperlink{namespaceutl_1_1meta_ab8eafd75f3077a36c4e3363b742da64a}{seek\+\_\+if}}$<$ List, \mbox{\hyperlink{structutl_1_1meta_1_1same__as}{same\+\_\+as}}$<$ T $>$ $>$ +\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename List , typename Pred $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a981e18b40d69cdd76466de7bfe24e619}{count\+\_\+if}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1count__if__impl_1_1count__if__}{count\+\_\+if\+\_\+impl\+::count\+\_\+if\+\_\+}}$<$ List, Pred, 0 $>$ $>$ +\item +{\footnotesize template$<$typename List , typename T $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ab5508236016638fa8e6b97cd17dfc9c2}{count}} = \mbox{\hyperlink{namespaceutl_1_1meta_a981e18b40d69cdd76466de7bfe24e619}{count\+\_\+if}}$<$ List, \mbox{\hyperlink{structutl_1_1meta_1_1same__as}{same\+\_\+as}}$<$ T $>$ $>$ +\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename List , typename Pred $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ac72acc616316c322e750d20a46553ba4}{filter}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1filter__impl_1_1filter__}{filter\+\_\+impl\+::filter\+\_\+}}$<$ List, Pred, \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$$>$ $>$ $>$ +\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename List , typename Pred , typename T $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a848a47bf281bf3eaf932cc9113477102}{replace\+\_\+if}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1replace__if__impl_1_1replace__if__}{replace\+\_\+if\+\_\+impl\+::replace\+\_\+if\+\_\+}}$<$ List, Pred, T, \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$$>$ $>$ $>$ +\item +{\footnotesize template$<$typename List , typename T , typename U $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ac9d120f858ebfa2b0ef74c6305a9fb6d}{replace}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_a848a47bf281bf3eaf932cc9113477102}{replace\+\_\+if}}$<$ List, \mbox{\hyperlink{structutl_1_1meta_1_1same__as}{same\+\_\+as}}$<$ T $>$, U $>$ $>$ +\end{DoxyCompactItemize} + +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$template$<$ typename... $>$ class Op, typename... Args$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a5329219a9d2f195421a78d8e07873507}{is\+\_\+detected}} = typename \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1detector}{detail\+::detector}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1nat__}{nat\+\_\+}}, void, Op, Args... $>$\+::detected +\item +{\footnotesize template$<$template$<$ typename... $>$ class Op, typename... Args$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_aa654a286b3bc8e6d8116ee1f57087110}{detected\+\_\+t}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1detector}{detail\+::detector}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1nat__}{nat\+\_\+}}, void, Op, Args... $>$ $>$ +\item +{\footnotesize template$<$typename Default , template$<$ typename... $>$ class Op, typename... Args$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a8fd055bc6c6c3b1d551e9605aa35644c}{detected\+\_\+or\+\_\+t}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_1_1detail_a835827cb3116483228d6f7f774b68970}{detail\+::detected\+\_\+or}}$<$ Default, Op, Args... $>$ $>$ +\item +{\footnotesize template$<$typename Expected , template$<$ typename... $>$ class Op, typename... Args$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ad5224ef66e8f40efaaf3ad3d605dd629}{is\+\_\+detected\+\_\+exact}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1same__}{same\+\_\+}}$<$ Expected, \mbox{\hyperlink{namespaceutl_1_1meta_aa654a286b3bc8e6d8116ee1f57087110}{detected\+\_\+t}}$<$ Op, Args... $>$ $>$ $>$ +\item +{\footnotesize template$<$typename To , template$<$ typename... $>$ class Op, typename... Args$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_afa24702fa15a1d0a8a05761c54b79def}{is\+\_\+detected\+\_\+convertible}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ std\+::is\+\_\+convertible$<$ \mbox{\hyperlink{namespaceutl_1_1meta_aa654a286b3bc8e6d8116ee1f57087110}{detected\+\_\+t}}$<$ Op, Args... $>$, To $>$ $>$ +\item +{\footnotesize template$<$template$<$ typename... $>$ class Op, typename... Args$>$ }\\constexpr bool \mbox{\hyperlink{namespaceutl_1_1meta_a4f3184ccb8e8ba2a78e2d2e83a0b9885}{is\+\_\+detected\+\_\+v}} = \mbox{\hyperlink{namespaceutl_1_1meta_a5329219a9d2f195421a78d8e07873507}{is\+\_\+detected}}$<$Op, Args...$>$\+::value +\begin{DoxyCompactList}\small\item\em Detection predicate. \end{DoxyCompactList}\item +{\footnotesize template$<$typename Expected , template$<$ typename... $>$ class Op, typename... Args$>$ }\\constexpr bool \mbox{\hyperlink{namespaceutl_1_1meta_a960827a1d72083a511f8ea4ccc8beceb}{is\+\_\+detected\+\_\+exact\+\_\+v}} = \mbox{\hyperlink{namespaceutl_1_1meta_ad5224ef66e8f40efaaf3ad3d605dd629}{is\+\_\+detected\+\_\+exact}}$<$ Expected, Op, Args...$>$\+::value +\begin{DoxyCompactList}\small\item\em evaluates to true if evaluation of Op$<$\+Args...$>$ is {\ttfamily Expected} and to false if not \end{DoxyCompactList}\item +{\footnotesize template$<$typename To , template$<$ typename... $>$ class Op, typename... Args$>$ }\\constexpr bool \mbox{\hyperlink{namespaceutl_1_1meta_acba521b528e775be4b37d2e481e0f138}{is\+\_\+detected\+\_\+convertible\+\_\+v}} +\end{DoxyCompactItemize} + + +\subsection{Typedef Documentation} +\mbox{\Hypertarget{namespaceutl_1_1meta_aeb5cb48e804cd160b39f8c3ed2967c37}\label{namespaceutl_1_1meta_aeb5cb48e804cd160b39f8c3ed2967c37}} +\index{utl\+::meta@{utl\+::meta}!accumulate@{accumulate}} +\index{accumulate@{accumulate}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{accumulate}{accumulate}} +{\footnotesize\ttfamily template$<$typename List , typename V , typename Fn $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_aeb5cb48e804cd160b39f8c3ed2967c37}{utl\+::meta\+::accumulate}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a6108f39d28c924146eff4143a61af226}{fold}}$<$List, V, Fn$>$} + + + +accumulate is an stl name for fold + +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} + + +Definition at line 387 of file typelist.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_a559ad95ef39fd2c81664bd1a22dd99c1}\label{namespaceutl_1_1meta_a559ad95ef39fd2c81664bd1a22dd99c1}} +\index{utl\+::meta@{utl\+::meta}!add@{add}} +\index{add@{add}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{add}{add}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_a559ad95ef39fd2c81664bd1a22dd99c1}{utl\+::meta\+::add}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ decltype(\+\_\+\+Tp1() + \+\_\+\+Tp2()), \+\_\+\+Tp1() + \+\_\+\+Tp2() $>$} + + + +Addition. + + + +Definition at line 144 of file operations.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_afacfb1fb855b9a9a0c8a2a625a2a9bd2}\label{namespaceutl_1_1meta_afacfb1fb855b9a9a0c8a2a625a2a9bd2}} +\index{utl\+::meta@{utl\+::meta}!alignof\+\_\+@{alignof\+\_\+}} +\index{alignof\+\_\+@{alignof\+\_\+}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{alignof\+\_\+}{alignof\_}} +{\footnotesize\ttfamily template$<$typename Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_afacfb1fb855b9a9a0c8a2a625a2a9bd2}{utl\+::meta\+::alignof\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a249ac51f6613684164663bd22025fe9a}{size\+\_\+}}$<$alignof(Tp)$>$} + +Computes the alignment required for any instance of the type {\ttfamily Tp}. Complexity $ O(1) $. + +Definition at line 120 of file integral.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_ace96e2f19376375cc71ee0cd80f4bb75}\label{namespaceutl_1_1meta_ace96e2f19376375cc71ee0cd80f4bb75}} +\index{utl\+::meta@{utl\+::meta}!all\+\_\+of@{all\+\_\+of}} +\index{all\+\_\+of@{all\+\_\+of}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{all\+\_\+of}{all\_of}} +{\footnotesize\ttfamily template$<$typename List , typename Pred $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_ace96e2f19376375cc71ee0cd80f4bb75}{utl\+::meta\+::all\+\_\+of}} = typedef \mbox{\hyperlink{group__type_ga39cc4e727a8faa5ea176f543e62c05c0}{if\+\_\+}} $<$ \mbox{\hyperlink{namespaceutl_1_1meta_a58c1744750d0df133034f60a95f87e19}{empty}} $<$List$>$, \mbox{\hyperlink{namespaceutl_1_1meta_a55511dbaa0adb605ce22dcec11f8d22d}{false\+\_\+}}, \mbox{\hyperlink{namespaceutl_1_1meta_a58c1744750d0df133034f60a95f87e19}{empty}} $<$ \mbox{\hyperlink{namespaceutl_1_1meta_ac72acc616316c322e750d20a46553ba4}{filter}} $<$List, \mbox{\hyperlink{namespaceutl_1_1meta_a4f0c06cabe66bc73b703eb8509c7bb07}{compose}}$<$\mbox{\hyperlink{structutl_1_1meta_1_1quote}{quote}}$<$\mbox{\hyperlink{group__integral_ga16df145331d3c62e624385c5949d90c4}{not\+\_\+}}$>$, Pred$>$ $>$ $>$ $>$} + +Returns {\ttfamily true\+\_\+} if {\ttfamily Pred} returns {\ttfamily true\+\_\+} for all the elements in the {\ttfamily List} or if the {\ttfamily List} is empty and {\ttfamily false\+\_\+} otherwise. \begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} + + +Definition at line 861 of file typelist.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_a212c26a29491610187f6e8543f06df5f}\label{namespaceutl_1_1meta_a212c26a29491610187f6e8543f06df5f}} +\index{utl\+::meta@{utl\+::meta}!any\+\_\+of@{any\+\_\+of}} +\index{any\+\_\+of@{any\+\_\+of}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{any\+\_\+of}{any\_of}} +{\footnotesize\ttfamily template$<$typename List , typename Pred $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_a212c26a29491610187f6e8543f06df5f}{utl\+::meta\+::any\+\_\+of}} = typedef \mbox{\hyperlink{group__integral_ga16df145331d3c62e624385c5949d90c4}{not\+\_\+}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_a58c1744750d0df133034f60a95f87e19}{empty}}$<$\mbox{\hyperlink{namespaceutl_1_1meta_ac72acc616316c322e750d20a46553ba4}{filter}} $<$List, Pred$>$ $>$ $>$} + +Returns {\ttfamily true\+\_\+} if {\ttfamily Pred} returns {\ttfamily true\+\_\+} for any of the elements in the {\ttfamily List} and {\ttfamily false\+\_\+} otherwise. \begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} + + +Definition at line 868 of file typelist.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_a3f684549221fac60bc8c7979cb4b98f4}\label{namespaceutl_1_1meta_a3f684549221fac60bc8c7979cb4b98f4}} +\index{utl\+::meta@{utl\+::meta}!apply@{apply}} +\index{apply@{apply}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{apply}{apply}} +{\footnotesize\ttfamily template$<$typename Fn , typename Seq $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_a3f684549221fac60bc8c7979cb4b98f4}{utl\+::meta\+::apply}} = typedef \mbox{\hyperlink{structutl_1_1meta_1_1apply__impl_1_1apply__}{apply\+\_\+impl\+::apply\+\_\+}}$<$Fn, Seq$>$} + +Apply the Invocable {\ttfamily Fn} using the types in the type {\ttfamily Seq} as arguments. \begin{DoxyNote}{Note} +This is the opposed operation of typelist$<$\+Ts...$>$ +\end{DoxyNote} +If {\ttfamily Seq} == typelist$<$$>$ then Unpack typelist and apply to {\ttfamily Fn} It {\ttfamily Seq} == integer\+\_\+sequence$<$$>$ then Unpack and use the integral\+\_\+c$<$$>$ of each integer \begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/invoke.\+h}}, and \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} + + +Definition at line 197 of file typelist.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_ac2952cd4ed04938edc6de21ffe200e9b}\label{namespaceutl_1_1meta_ac2952cd4ed04938edc6de21ffe200e9b}} +\index{utl\+::meta@{utl\+::meta}!apply\+\_\+t@{apply\+\_\+t}} +\index{apply\+\_\+t@{apply\+\_\+t}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{apply\+\_\+t}{apply\_t}} +{\footnotesize\ttfamily template$<$typename Fn , typename Seq $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_ac2952cd4ed04938edc6de21ffe200e9b}{utl\+::meta\+::apply\+\_\+t}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}} $<$\mbox{\hyperlink{namespaceutl_1_1meta_a3f684549221fac60bc8c7979cb4b98f4}{apply}}$<$Fn, Seq$>$ $>$} + +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} + + +Definition at line 200 of file typelist.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_a67329ec425c857dcaf4cde9044674c90}\label{namespaceutl_1_1meta_a67329ec425c857dcaf4cde9044674c90}} +\index{utl\+::meta@{utl\+::meta}!at@{at}} +\index{at@{at}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{at}{at}} +{\footnotesize\ttfamily template$<$typename List , typename N $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_a67329ec425c857dcaf4cde9044674c90}{utl\+::meta\+::at}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a6683b804a20d54817d61ce4663527084}{at\+\_\+c}}$<$List, N\+::type\+::value$>$} + +Return the {\ttfamily N} th element in the {\ttfamily \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{meta\+::typelist}}} {\ttfamily List}. + +Complexity $ O(N) $. \begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} + + +Definition at line 253 of file typelist.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_a6683b804a20d54817d61ce4663527084}\label{namespaceutl_1_1meta_a6683b804a20d54817d61ce4663527084}} +\index{utl\+::meta@{utl\+::meta}!at\+\_\+c@{at\+\_\+c}} +\index{at\+\_\+c@{at\+\_\+c}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{at\+\_\+c}{at\_c}} +{\footnotesize\ttfamily template$<$typename List , index\+\_\+t N$>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_a6683b804a20d54817d61ce4663527084}{utl\+::meta\+::at\+\_\+c}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1at__impl_1_1at__}{at\+\_\+impl\+::at\+\_\+}}$<$List, N$>$ $>$} + +Return the {\ttfamily N} th element in the {\ttfamily \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{meta\+::typelist}}} {\ttfamily List}. + +Complexity $ O(logN) $. \begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} + + +Definition at line 245 of file typelist.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_ad9ee55707fc633d53577b81a59136b7d}\label{namespaceutl_1_1meta_ad9ee55707fc633d53577b81a59136b7d}} +\index{utl\+::meta@{utl\+::meta}!back@{back}} +\index{back@{back}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{back}{back}} +{\footnotesize\ttfamily template$<$typename List $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_ad9ee55707fc633d53577b81a59136b7d}{utl\+::meta\+::back}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1back__impl_1_1back__}{back\+\_\+impl\+::back\+\_\+}}$<$List$>$ $>$} + +Return the last element in {\ttfamily \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{meta\+::typelist}}} {\ttfamily List}. Complexity $ O(N) $. \begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} + + +Definition at line 296 of file typelist.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_aca6b42898b47945118c518bde9d25cc2}\label{namespaceutl_1_1meta_aca6b42898b47945118c518bde9d25cc2}} +\index{utl\+::meta@{utl\+::meta}!bitand\+\_\+@{bitand\+\_\+}} +\index{bitand\+\_\+@{bitand\+\_\+}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{bitand\+\_\+}{bitand\_}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_aca6b42898b47945118c518bde9d25cc2}{utl\+::meta\+::bitand\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$decltype(\+\_\+\+Tp1() \& \+\_\+\+Tp2()), \+\_\+\+Tp1() \& \+\_\+\+Tp2()$>$} + +\begin{DoxyReturn}{Returns} +bitwise and (\&) operation of its arguments +\end{DoxyReturn} + + +Definition at line 208 of file operations.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_a9ea199752ca985d1b813d7127868566c}\label{namespaceutl_1_1meta_a9ea199752ca985d1b813d7127868566c}} +\index{utl\+::meta@{utl\+::meta}!bitnot\+\_\+@{bitnot\+\_\+}} +\index{bitnot\+\_\+@{bitnot\+\_\+}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{bitnot\+\_\+}{bitnot\_}} +{\footnotesize\ttfamily template$<$typename \+\_\+T $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_a9ea199752ca985d1b813d7127868566c}{utl\+::meta\+::bitnot\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$typename \+\_\+\+T\+::value\+\_\+type, (typename \+\_\+\+T\+::value\+\_\+type)($\sim$\+\_\+T())$>$} + +Bitwise operations requires Integral\+Constant(\+\_\+\+Tp)\begin{DoxyReturn}{Returns} +bitwise not ($\sim$) operation of its argument. +\end{DoxyReturn} + + +Definition at line 205 of file operations.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_a1e2c2decdd22972fc8ce43203c0ef0d1}\label{namespaceutl_1_1meta_a1e2c2decdd22972fc8ce43203c0ef0d1}} +\index{utl\+::meta@{utl\+::meta}!bitor\+\_\+@{bitor\+\_\+}} +\index{bitor\+\_\+@{bitor\+\_\+}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{bitor\+\_\+}{bitor\_}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_a1e2c2decdd22972fc8ce43203c0ef0d1}{utl\+::meta\+::bitor\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$decltype(\+\_\+\+Tp1() $\vert$ \+\_\+\+Tp2()), \+\_\+\+Tp1() $\vert$ \+\_\+\+Tp2()$>$} + +\begin{DoxyReturn}{Returns} +bitwise or ($\vert$) operation of its arguments. +\end{DoxyReturn} + + +Definition at line 211 of file operations.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_a910e21345bc7e75dc7c0ceb4a4721754}\label{namespaceutl_1_1meta_a910e21345bc7e75dc7c0ceb4a4721754}} +\index{utl\+::meta@{utl\+::meta}!bitxor\+\_\+@{bitxor\+\_\+}} +\index{bitxor\+\_\+@{bitxor\+\_\+}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{bitxor\+\_\+}{bitxor\_}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_a910e21345bc7e75dc7c0ceb4a4721754}{utl\+::meta\+::bitxor\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$decltype(\+\_\+\+Tp1() $^\wedge$ \+\_\+\+Tp2()), \+\_\+\+Tp1() $^\wedge$ \+\_\+\+Tp2()$>$} + +\begin{DoxyReturn}{Returns} +bitwise xor ($^\wedge$) operation of its arguments. +\end{DoxyReturn} + + +Definition at line 215 of file operations.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_a0bec5828d2df0edfb4bc084773a438f6}\label{namespaceutl_1_1meta_a0bec5828d2df0edfb4bc084773a438f6}} +\index{utl\+::meta@{utl\+::meta}!bool\+\_\+@{bool\+\_\+}} +\index{bool\+\_\+@{bool\+\_\+}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{bool\+\_\+}{bool\_}} +{\footnotesize\ttfamily template$<$bool v$>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_a0bec5828d2df0edfb4bc084773a438f6}{utl\+::meta\+::bool\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$bool, v$>$} + + + +bool\+\_\+ type\+: integral constant wrapper for bool + +Wrappers for basic types + +Definition at line 66 of file integral.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_a70d0910ace47f4e12e8fa0788679044a}\label{namespaceutl_1_1meta_a70d0910ace47f4e12e8fa0788679044a}} +\index{utl\+::meta@{utl\+::meta}!cat@{cat}} +\index{cat@{cat}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{cat}{cat}} +{\footnotesize\ttfamily template$<$typename... Lists$>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_a70d0910ace47f4e12e8fa0788679044a}{utl\+::meta\+::cat}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1cat__impl_1_1cat__}{cat\+\_\+impl\+::cat\+\_\+}}$<$Lists...$>$ $>$} + +Transformation that concatenates several lists into a single typelist. The parameters must all be instantiations of {\ttfamily \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{meta\+::typelist}}}. Complexity\+: $ O(N) $ where $ N $ is the number of lists passed to the algorithm. \begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} + + +Definition at line 338 of file typelist.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_a0fe31eec9b085e52aa45587e6d887419}\label{namespaceutl_1_1meta_a0fe31eec9b085e52aa45587e6d887419}} +\index{utl\+::meta@{utl\+::meta}!char\+\_\+@{char\+\_\+}} +\index{char\+\_\+@{char\+\_\+}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{char\+\_\+}{char\_}} +{\footnotesize\ttfamily template$<$char v$>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_a0fe31eec9b085e52aa45587e6d887419}{utl\+::meta\+::char\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$char, v$>$} + + + +char\+\_\+ type\+: integral constant wrapper for {\ttfamily char} + + + +Definition at line 94 of file integral.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_a7ae2d08147055946f1b9345e579a26b6}\label{namespaceutl_1_1meta_a7ae2d08147055946f1b9345e579a26b6}} +\index{utl\+::meta@{utl\+::meta}!comp\+\_\+eq@{comp\+\_\+eq}} +\index{comp\+\_\+eq@{comp\+\_\+eq}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{comp\+\_\+eq}{comp\_eq}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_a7ae2d08147055946f1b9345e579a26b6}{utl\+::meta\+::comp\+\_\+eq}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a0bec5828d2df0edfb4bc084773a438f6}{bool\+\_\+}}$<$\+\_\+\+Tp1() == \+\_\+\+Tp2()$>$} + +Comparison operations requires Integral\+Constant(\+\_\+\+Tp)\begin{DoxyReturn}{Returns} +a true-\/valued Integral Constant if \+\_\+\+Tp1 and \+\_\+\+Tp2 are equal. +\end{DoxyReturn} + + +Definition at line 184 of file operations.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_ae6c552e8e99ac5578f865f17c1d0efdc}\label{namespaceutl_1_1meta_ae6c552e8e99ac5578f865f17c1d0efdc}} +\index{utl\+::meta@{utl\+::meta}!comp\+\_\+ge@{comp\+\_\+ge}} +\index{comp\+\_\+ge@{comp\+\_\+ge}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{comp\+\_\+ge}{comp\_ge}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_ae6c552e8e99ac5578f865f17c1d0efdc}{utl\+::meta\+::comp\+\_\+ge}} = typedef \mbox{\hyperlink{group__integral_ga16df145331d3c62e624385c5949d90c4}{not\+\_\+}}$<$\mbox{\hyperlink{namespaceutl_1_1meta_a1a948746d1758a05c0ae71cfd114b05d}{comp\+\_\+lt}}$<$\+\_\+\+Tp1, \+\_\+\+Tp2$>$ $>$} + + + +Greater or equal. + + + +Definition at line 195 of file operations.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_a3c4784ad3eb1f745c58b9a4b65a406e8}\label{namespaceutl_1_1meta_a3c4784ad3eb1f745c58b9a4b65a406e8}} +\index{utl\+::meta@{utl\+::meta}!comp\+\_\+gt@{comp\+\_\+gt}} +\index{comp\+\_\+gt@{comp\+\_\+gt}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{comp\+\_\+gt}{comp\_gt}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_a3c4784ad3eb1f745c58b9a4b65a406e8}{utl\+::meta\+::comp\+\_\+gt}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a1a948746d1758a05c0ae71cfd114b05d}{comp\+\_\+lt}} $<$\+\_\+\+Tp2, \+\_\+\+Tp1$>$} + + + +Greater than. + + + +Definition at line 191 of file operations.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_afb9a35dc5ef40b5bf9902c0daec7f1af}\label{namespaceutl_1_1meta_afb9a35dc5ef40b5bf9902c0daec7f1af}} +\index{utl\+::meta@{utl\+::meta}!comp\+\_\+le@{comp\+\_\+le}} +\index{comp\+\_\+le@{comp\+\_\+le}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{comp\+\_\+le}{comp\_le}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_afb9a35dc5ef40b5bf9902c0daec7f1af}{utl\+::meta\+::comp\+\_\+le}} = typedef \mbox{\hyperlink{group__integral_ga16df145331d3c62e624385c5949d90c4}{not\+\_\+}}$<$\mbox{\hyperlink{namespaceutl_1_1meta_a1a948746d1758a05c0ae71cfd114b05d}{comp\+\_\+lt}}$<$\+\_\+\+Tp2, \+\_\+\+Tp1$>$ $>$} + + + +Less or equal. + + + +Definition at line 193 of file operations.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_a1a948746d1758a05c0ae71cfd114b05d}\label{namespaceutl_1_1meta_a1a948746d1758a05c0ae71cfd114b05d}} +\index{utl\+::meta@{utl\+::meta}!comp\+\_\+lt@{comp\+\_\+lt}} +\index{comp\+\_\+lt@{comp\+\_\+lt}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{comp\+\_\+lt}{comp\_lt}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_a1a948746d1758a05c0ae71cfd114b05d}{utl\+::meta\+::comp\+\_\+lt}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a0bec5828d2df0edfb4bc084773a438f6}{bool\+\_\+}}$<$(\+\_\+\+Tp1() $<$ \+\_\+\+Tp2())$>$} + +\begin{DoxyReturn}{Returns} +a true-\/valued Integral Constant if \+\_\+\+Tp1 is less than \+\_\+\+Tp2. +\end{DoxyReturn} + + +Definition at line 186 of file operations.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_af92bee16de47b16ba01a8efac686b488}\label{namespaceutl_1_1meta_af92bee16de47b16ba01a8efac686b488}} +\index{utl\+::meta@{utl\+::meta}!comp\+\_\+ne@{comp\+\_\+ne}} +\index{comp\+\_\+ne@{comp\+\_\+ne}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{comp\+\_\+ne}{comp\_ne}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_af92bee16de47b16ba01a8efac686b488}{utl\+::meta\+::comp\+\_\+ne}} = typedef \mbox{\hyperlink{group__integral_ga16df145331d3c62e624385c5949d90c4}{not\+\_\+}}$<$\mbox{\hyperlink{namespaceutl_1_1meta_a7ae2d08147055946f1b9345e579a26b6}{comp\+\_\+eq}}$<$\+\_\+\+Tp1, \+\_\+\+Tp2$>$ $>$} + + + +Not equal. + + + +Definition at line 189 of file operations.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_a4f0c06cabe66bc73b703eb8509c7bb07}\label{namespaceutl_1_1meta_a4f0c06cabe66bc73b703eb8509c7bb07}} +\index{utl\+::meta@{utl\+::meta}!compose@{compose}} +\index{compose@{compose}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{compose}{compose}} +{\footnotesize\ttfamily template$<$typename... Fns$>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_a4f0c06cabe66bc73b703eb8509c7bb07}{utl\+::meta\+::compose}} = typedef \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1compose__}{detail\+::compose\+\_\+}}$<$Fns...$>$} + +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/invoke.\+h}}.\end{Desc} + + +Definition at line 308 of file invoke.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_a729294327829b3068632da1235dc3090}\label{namespaceutl_1_1meta_a729294327829b3068632da1235dc3090}} +\index{utl\+::meta@{utl\+::meta}!compose\+\_\+f@{compose\+\_\+f}} +\index{compose\+\_\+f@{compose\+\_\+f}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{compose\+\_\+f}{compose\_f}} +{\footnotesize\ttfamily template$<$template$<$ typename... $>$ class... Fns$>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_a729294327829b3068632da1235dc3090}{utl\+::meta\+::compose\+\_\+f}} = typedef \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1compose__f__}{detail\+::compose\+\_\+f\+\_\+}}$<$Fns...$>$} + +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/invoke.\+h}}.\end{Desc} + + +Definition at line 324 of file invoke.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_ab5508236016638fa8e6b97cd17dfc9c2}\label{namespaceutl_1_1meta_ab5508236016638fa8e6b97cd17dfc9c2}} +\index{utl\+::meta@{utl\+::meta}!count@{count}} +\index{count@{count}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{count}{count}} +{\footnotesize\ttfamily template$<$typename List , typename T $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_ab5508236016638fa8e6b97cd17dfc9c2}{utl\+::meta\+::count}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a981e18b40d69cdd76466de7bfe24e619}{count\+\_\+if}}$<$List, \mbox{\hyperlink{structutl_1_1meta_1_1same__as}{same\+\_\+as}}$<$T$>$ $>$} + +Count all occurrences of type {\ttfamily T} int {\ttfamily List} \begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} + + +Definition at line 761 of file typelist.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_a981e18b40d69cdd76466de7bfe24e619}\label{namespaceutl_1_1meta_a981e18b40d69cdd76466de7bfe24e619}} +\index{utl\+::meta@{utl\+::meta}!count\+\_\+if@{count\+\_\+if}} +\index{count\+\_\+if@{count\+\_\+if}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{count\+\_\+if}{count\_if}} +{\footnotesize\ttfamily template$<$typename List , typename Pred $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_a981e18b40d69cdd76466de7bfe24e619}{utl\+::meta\+::count\+\_\+if}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1count__if__impl_1_1count__if__}{count\+\_\+if\+\_\+impl\+::count\+\_\+if\+\_\+}}$<$List, Pred, 0$>$ $>$} + +Count all {\ttfamily Items} on the {\ttfamily List} for which the predicate {\ttfamily Pred} returns true\+\_\+ when {\ttfamily eval$<$invoke$<$Pred, Item$>$$>$} + +Complexity $ O(N) $ + + +\begin{DoxyParams}{Parameters} +{\em List} & A typelist \\ +\hline +{\em Pred} & A Unary invocable predicate \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +The total count of occurrences as an integral constant of size\+\_\+t +\end{DoxyReturn} +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} + + +Definition at line 755 of file typelist.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_abee96e75aadb364fdd0890aa3ee490b7}\label{namespaceutl_1_1meta_abee96e75aadb364fdd0890aa3ee490b7}} +\index{utl\+::meta@{utl\+::meta}!dec@{dec}} +\index{dec@{dec}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{dec}{dec}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_abee96e75aadb364fdd0890aa3ee490b7}{utl\+::meta\+::dec}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a559ad95ef39fd2c81664bd1a22dd99c1}{add}}$<$\+\_\+\+Tp, \mbox{\hyperlink{namespaceutl_1_1meta_a35b962b97f8277de66c1c8c02796eed4}{int\+\_\+}}$<$-\/1$>$ $>$} + + + +decrease + + + +Definition at line 173 of file operations.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_a48f9a1220931596a9652351d2e7242be}\label{namespaceutl_1_1meta_a48f9a1220931596a9652351d2e7242be}} +\index{utl\+::meta@{utl\+::meta}!defer@{defer}} +\index{defer@{defer}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{defer}{defer}} +{\footnotesize\ttfamily template$<$template$<$ class... $>$ class F, class... Ts$>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_a48f9a1220931596a9652351d2e7242be}{utl\+::meta\+::defer}} = typedef \mbox{\hyperlink{group__type_ga39cc4e727a8faa5ea176f543e62c05c0}{if\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__}{detail\+::is\+\_\+applicable\+\_\+}}$<$F, Ts...$>$, \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1defer__}{detail\+::defer\+\_\+}}$<$F, Ts...$>$, \mbox{\hyperlink{structutl_1_1meta_1_1nil__}{nil\+\_\+}} $>$} + + + +defer alias template for F$<$\+Ts...$>$ + +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/invoke.\+h}}.\end{Desc} + + +Definition at line 213 of file invoke.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_a01f183f337439e414184beedc9bcf9e3}\label{namespaceutl_1_1meta_a01f183f337439e414184beedc9bcf9e3}} +\index{utl\+::meta@{utl\+::meta}!defer\+\_\+i@{defer\+\_\+i}} +\index{defer\+\_\+i@{defer\+\_\+i}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{defer\+\_\+i}{defer\_i}} +{\footnotesize\ttfamily template$<$typename T , template$<$ T... $>$ class F, T... Is$>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_a01f183f337439e414184beedc9bcf9e3}{utl\+::meta\+::defer\+\_\+i}} = typedef \mbox{\hyperlink{group__type_ga39cc4e727a8faa5ea176f543e62c05c0}{if\+\_\+}} $<$ \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__i__}{detail\+::is\+\_\+applicable\+\_\+i\+\_\+}}$<$T, F, Is...$>$, \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1defer__i__}{detail\+::defer\+\_\+i\+\_\+}}$<$T, F, Is...$>$, \mbox{\hyperlink{structutl_1_1meta_1_1nil__}{nil\+\_\+}} $>$} + + + +defer\+\_\+i alias template for F$<$\+T, Is...$>$ + +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/invoke.\+h}}.\end{Desc} + + +Definition at line 221 of file invoke.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_a8fd055bc6c6c3b1d551e9605aa35644c}\label{namespaceutl_1_1meta_a8fd055bc6c6c3b1d551e9605aa35644c}} +\index{utl\+::meta@{utl\+::meta}!detected\+\_\+or\+\_\+t@{detected\+\_\+or\+\_\+t}} +\index{detected\+\_\+or\+\_\+t@{detected\+\_\+or\+\_\+t}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{detected\+\_\+or\+\_\+t}{detected\_or\_t}} +{\footnotesize\ttfamily template$<$typename Default , template$<$ typename... $>$ class Op, typename... Args$>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_a8fd055bc6c6c3b1d551e9605aa35644c}{utl\+::meta\+::detected\+\_\+or\+\_\+t}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}} $<$ \mbox{\hyperlink{namespaceutl_1_1meta_1_1detail_a835827cb3116483228d6f7f774b68970}{detail\+::detected\+\_\+or}}$<$Default, Op, Args...$>$ $>$} + +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2detection_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/detection.\+h}}.\end{Desc} + + +Definition at line 172 of file detection.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_aa654a286b3bc8e6d8116ee1f57087110}\label{namespaceutl_1_1meta_aa654a286b3bc8e6d8116ee1f57087110}} +\index{utl\+::meta@{utl\+::meta}!detected\+\_\+t@{detected\+\_\+t}} +\index{detected\+\_\+t@{detected\+\_\+t}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{detected\+\_\+t}{detected\_t}} +{\footnotesize\ttfamily template$<$template$<$ typename... $>$ class Op, typename... Args$>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_aa654a286b3bc8e6d8116ee1f57087110}{utl\+::meta\+::detected\+\_\+t}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}} $<$ \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1detector}{detail\+::detector}}$<$\mbox{\hyperlink{structutl_1_1meta_1_1nat__}{nat\+\_\+}}, void, Op, Args...$>$ $>$} + +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2detection_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/detection.\+h}}.\end{Desc} + + +Definition at line 146 of file detection.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_ae1ec6fc1f76abbb2e5287aa91cd85068}\label{namespaceutl_1_1meta_ae1ec6fc1f76abbb2e5287aa91cd85068}} +\index{utl\+::meta@{utl\+::meta}!divide@{divide}} +\index{divide@{divide}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{divide}{divide}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_ae1ec6fc1f76abbb2e5287aa91cd85068}{utl\+::meta\+::divide}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ decltype(\+\_\+\+Tp2() / \+\_\+\+Tp2()), \+\_\+\+Tp1() / \+\_\+\+Tp2() $>$} + + + +Division. + + + +Definition at line 156 of file operations.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_a58c1744750d0df133034f60a95f87e19}\label{namespaceutl_1_1meta_a58c1744750d0df133034f60a95f87e19}} +\index{utl\+::meta@{utl\+::meta}!empty@{empty}} +\index{empty@{empty}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{empty}{empty}} +{\footnotesize\ttfamily template$<$typename List $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_a58c1744750d0df133034f60a95f87e19}{utl\+::meta\+::empty}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a0bec5828d2df0edfb4bc084773a438f6}{bool\+\_\+}}$<$List\+::empty()$>$} + +An Boolean constant wrapper that returns if the typelist is empty + +Complexity $ O(1) $. + + +\begin{DoxyParams}{Parameters} +{\em List} & A typelist \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +Empty or not +\end{DoxyReturn} +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} + + +Definition at line 140 of file typelist.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_ab3fed26a4c7a8204accb349f0b6600e8}\label{namespaceutl_1_1meta_ab3fed26a4c7a8204accb349f0b6600e8}} +\index{utl\+::meta@{utl\+::meta}!enable\+\_\+if@{enable\+\_\+if}} +\index{enable\+\_\+if@{enable\+\_\+if}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{enable\+\_\+if}{enable\_if}} +{\footnotesize\ttfamily template$<$bool If, typename \+\_\+\+Tp = void$>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_ab3fed26a4c7a8204accb349f0b6600e8}{utl\+::meta\+::enable\+\_\+if}} = typedef std\+::enable\+\_\+if$<$If, \+\_\+\+Tp$>$} + + + +enable\+\_\+if, imported from stl + +enable\+\_\+if + +Definition at line 60 of file sfinae.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_a372fe391d9567f66a81091f581e1fa01}\label{namespaceutl_1_1meta_a372fe391d9567f66a81091f581e1fa01}} +\index{utl\+::meta@{utl\+::meta}!enable\+\_\+if\+\_\+t@{enable\+\_\+if\+\_\+t}} +\index{enable\+\_\+if\+\_\+t@{enable\+\_\+if\+\_\+t}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{enable\+\_\+if\+\_\+t}{enable\_if\_t}} +{\footnotesize\ttfamily template$<$bool If, typename \+\_\+\+Tp = void$>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_a372fe391d9567f66a81091f581e1fa01}{utl\+::meta\+::enable\+\_\+if\+\_\+t}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_ab3fed26a4c7a8204accb349f0b6600e8}{enable\+\_\+if}}$<$If, \+\_\+\+Tp$>$ $>$} + + + +alias template for enable\+\_\+if + + + +Definition at line 63 of file sfinae.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}\label{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}} +\index{utl\+::meta@{utl\+::meta}!eval@{eval}} +\index{eval@{eval}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{eval}{eval}} +{\footnotesize\ttfamily template$<$typename Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{utl\+::meta\+::eval}} = typedef typename Tp\+::type} + + + +Type alias for {\ttfamily Tp\+::type}. Used to evaluate/extract return type of metafunctions. + +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2detection_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/detection.\+h}}, \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/invoke.\+h}}, and \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} + + +Definition at line 49 of file integral.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_a55511dbaa0adb605ce22dcec11f8d22d}\label{namespaceutl_1_1meta_a55511dbaa0adb605ce22dcec11f8d22d}} +\index{utl\+::meta@{utl\+::meta}!false\+\_\+@{false\+\_\+}} +\index{false\+\_\+@{false\+\_\+}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{false\+\_\+}{false\_}} +{\footnotesize\ttfamily using \mbox{\hyperlink{namespaceutl_1_1meta_a55511dbaa0adb605ce22dcec11f8d22d}{utl\+::meta\+::false\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a0bec5828d2df0edfb4bc084773a438f6}{bool\+\_\+}}$<$false$>$} + + + +The type used as a compile-\/time boolean with false value. + +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2detection_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/detection.\+h}}, \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/invoke.\+h}}, and \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} + + +Definition at line 69 of file integral.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_ac72acc616316c322e750d20a46553ba4}\label{namespaceutl_1_1meta_ac72acc616316c322e750d20a46553ba4}} +\index{utl\+::meta@{utl\+::meta}!filter@{filter}} +\index{filter@{filter}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{filter}{filter}} +{\footnotesize\ttfamily template$<$typename List , typename Pred $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_ac72acc616316c322e750d20a46553ba4}{utl\+::meta\+::filter}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1filter__impl_1_1filter__}{filter\+\_\+impl\+::filter\+\_\+}}$<$List, Pred, \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$$>$ $>$ $>$} + +Return a new typelist with elements, the elements of {\ttfamily List} that satisfy the invocable {\ttfamily Pred} such that {\ttfamily eval$<$invoke$<$Pred, Item$>$$>$} is {\ttfamily true\+\_\+} + +Complexity $ O(N) $ + + +\begin{DoxyParams}{Parameters} +{\em List} & The input typelist \\ +\hline +{\em Pred} & A unary invocable predicate \\ +\hline +\end{DoxyParams} +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} + + +Definition at line 800 of file typelist.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_af4c9b6350bba98cc0dd73e87cb4ce413}\label{namespaceutl_1_1meta_af4c9b6350bba98cc0dd73e87cb4ce413}} +\index{utl\+::meta@{utl\+::meta}!find@{find}} +\index{find@{find}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{find}{find}} +{\footnotesize\ttfamily template$<$typename List , typename T $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_af4c9b6350bba98cc0dd73e87cb4ce413}{utl\+::meta\+::find}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aacf124929c0cbb3b29d34679bff50a96}{find\+\_\+if}}$<$List, \mbox{\hyperlink{structutl_1_1meta_1_1same__as}{same\+\_\+as}}$<$T$>$ $>$} + +Search for the first occurrence of type {\ttfamily T} on a {\ttfamily List} \begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} + + +Definition at line 663 of file typelist.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_aacf124929c0cbb3b29d34679bff50a96}\label{namespaceutl_1_1meta_aacf124929c0cbb3b29d34679bff50a96}} +\index{utl\+::meta@{utl\+::meta}!find\+\_\+if@{find\+\_\+if}} +\index{find\+\_\+if@{find\+\_\+if}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{find\+\_\+if}{find\_if}} +{\footnotesize\ttfamily template$<$typename List , typename Pred $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_aacf124929c0cbb3b29d34679bff50a96}{utl\+::meta\+::find\+\_\+if}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1find__if__impl_1_1find__if__}{find\+\_\+if\+\_\+impl\+::find\+\_\+if\+\_\+}}$<$List, Pred, 0$>$ $>$} + +Search for the first {\ttfamily Item} on the {\ttfamily List} for which the predicate {\ttfamily Pred} returns true\+\_\+ when {\ttfamily eval$<$invoke$<$Pred, Item$>$$>$} + +Complexity $ O(N) $ + + +\begin{DoxyParams}{Parameters} +{\em List} & A typelist \\ +\hline +{\em Pred} & A Unary invocable predicate \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +An integral constant of index\+\_\+t with the location of the first match, or Npos otherwise. +\end{DoxyReturn} +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} + + +Definition at line 657 of file typelist.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_a6108f39d28c924146eff4143a61af226}\label{namespaceutl_1_1meta_a6108f39d28c924146eff4143a61af226}} +\index{utl\+::meta@{utl\+::meta}!fold@{fold}} +\index{fold@{fold}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{fold}{fold}} +{\footnotesize\ttfamily template$<$typename List , typename V , typename Fn $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_a6108f39d28c924146eff4143a61af226}{utl\+::meta\+::fold}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$\mbox{\hyperlink{structutl_1_1meta_1_1fold__impl_1_1fold__}{fold\+\_\+impl\+::fold\+\_\+}}$<$List, V, Fn$>$ $>$} + +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} + + +Definition at line 383 of file typelist.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_ace309fb2eff5c4a5a806b9393abea486}\label{namespaceutl_1_1meta_ace309fb2eff5c4a5a806b9393abea486}} +\index{utl\+::meta@{utl\+::meta}!front@{front}} +\index{front@{front}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{front}{front}} +{\footnotesize\ttfamily template$<$typename List $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_ace309fb2eff5c4a5a806b9393abea486}{utl\+::meta\+::front}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1front__impl_1_1front__}{front\+\_\+impl\+::front\+\_\+}}$<$List$>$ $>$} + +Return the first element in {\ttfamily \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{meta\+::typelist}}} {\ttfamily List}. Complexity $ O(1) $. \begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} + + +Definition at line 274 of file typelist.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_a63c0b6b08f4c1d9bd3c4db7432e9b2af}\label{namespaceutl_1_1meta_a63c0b6b08f4c1d9bd3c4db7432e9b2af}} +\index{utl\+::meta@{utl\+::meta}!identity\+\_\+t@{identity\+\_\+t}} +\index{identity\+\_\+t@{identity\+\_\+t}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{identity\+\_\+t}{identity\_t}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_a63c0b6b08f4c1d9bd3c4db7432e9b2af}{utl\+::meta\+::identity\+\_\+t}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$\mbox{\hyperlink{structutl_1_1meta_1_1identity}{identity}}$<$\+\_\+\+Tp$>$ $>$} + + + +identity type alias + +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/invoke.\+h}}.\end{Desc} + + +Definition at line 68 of file invoke.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_af74f5af58b33241f1b94102742a73ab1}\label{namespaceutl_1_1meta_af74f5af58b33241f1b94102742a73ab1}} +\index{utl\+::meta@{utl\+::meta}!inc@{inc}} +\index{inc@{inc}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{inc}{inc}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_af74f5af58b33241f1b94102742a73ab1}{utl\+::meta\+::inc}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a559ad95ef39fd2c81664bd1a22dd99c1}{add}}$<$\+\_\+\+Tp, \mbox{\hyperlink{namespaceutl_1_1meta_a35b962b97f8277de66c1c8c02796eed4}{int\+\_\+}}$<$1$>$ $>$} + + + +Increase. + + + +Definition at line 169 of file operations.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_a5b7d36b9e568b81f2df897d56dc23b64}\label{namespaceutl_1_1meta_a5b7d36b9e568b81f2df897d56dc23b64}} +\index{utl\+::meta@{utl\+::meta}!index\+\_\+@{index\+\_\+}} +\index{index\+\_\+@{index\+\_\+}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{index\+\_\+}{index\_}} +{\footnotesize\ttfamily template$<$index\+\_\+t v$>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_a5b7d36b9e568b81f2df897d56dc23b64}{utl\+::meta\+::index\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$\mbox{\hyperlink{namespaceutl_a676c0acd539dd04048dcc7b4d698577e}{index\+\_\+t}}, v$>$} + + + +index\+\_\+ type\+: integral constant wrapper for {\ttfamily index\+\_\+t} a.\+k.\+a std\+::size\+\_\+t + + + +Definition at line 106 of file integral.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_acb42e9c38b726174e64a36eea39239a5}\label{namespaceutl_1_1meta_acb42e9c38b726174e64a36eea39239a5}} +\index{utl\+::meta@{utl\+::meta}!index\+\_\+sequence@{index\+\_\+sequence}} +\index{index\+\_\+sequence@{index\+\_\+sequence}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{index\+\_\+sequence}{index\_sequence}} +{\footnotesize\ttfamily template$<$index\+\_\+t... Idx$>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_acb42e9c38b726174e64a36eea39239a5}{utl\+::meta\+::index\+\_\+sequence}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_abc3ba8590a6cdd451f64d6c5dcd8ff99}{integer\+\_\+sequence}}$<$\mbox{\hyperlink{namespaceutl_a676c0acd539dd04048dcc7b4d698577e}{index\+\_\+t}}, Idx...$>$} + + + +Alias template index\+\_\+sequence. + + + +Definition at line 136 of file integral.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_a7cdf7fbb62116925ccdecab03d3383d9}\label{namespaceutl_1_1meta_a7cdf7fbb62116925ccdecab03d3383d9}} +\index{utl\+::meta@{utl\+::meta}!index\+\_\+sequence\+\_\+for@{index\+\_\+sequence\+\_\+for}} +\index{index\+\_\+sequence\+\_\+for@{index\+\_\+sequence\+\_\+for}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{index\+\_\+sequence\+\_\+for}{index\_sequence\_for}} +{\footnotesize\ttfamily template$<$typename... Types$>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_a7cdf7fbb62116925ccdecab03d3383d9}{utl\+::meta\+::index\+\_\+sequence\+\_\+for}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa7e48cd5c76ea88fc89ff4a66bc6f596}{make\+\_\+index\+\_\+sequence}}$<$sizeof...(Types)$>$} + + + +Alias template index\+\_\+sequence\+\_\+for. + + + +Definition at line 144 of file integral.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_a65bf025970a7ec0fd488c50a1b9c1038}\label{namespaceutl_1_1meta_a65bf025970a7ec0fd488c50a1b9c1038}} +\index{utl\+::meta@{utl\+::meta}!int16\+\_\+@{int16\+\_\+}} +\index{int16\+\_\+@{int16\+\_\+}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{int16\+\_\+}{int16\_}} +{\footnotesize\ttfamily template$<$int16\+\_\+t v$>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_a65bf025970a7ec0fd488c50a1b9c1038}{utl\+::meta\+::int16\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$int16\+\_\+t, v$>$} + + + +int16\+\_\+ type\+: integral constant wrapper for {\ttfamily int16\+\_\+t} + + + +Definition at line 80 of file integral.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_aa907f027fe3df2cecca2cf60930086fb}\label{namespaceutl_1_1meta_aa907f027fe3df2cecca2cf60930086fb}} +\index{utl\+::meta@{utl\+::meta}!int32\+\_\+@{int32\+\_\+}} +\index{int32\+\_\+@{int32\+\_\+}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{int32\+\_\+}{int32\_}} +{\footnotesize\ttfamily template$<$int32\+\_\+t v$>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_aa907f027fe3df2cecca2cf60930086fb}{utl\+::meta\+::int32\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$int32\+\_\+t, v$>$} + + + +int32\+\_\+ type\+: integral constant wrapper for {\ttfamily int32\+\_\+t} + + + +Definition at line 87 of file integral.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_aa0ca1890dde0298c4380f94582cc2186}\label{namespaceutl_1_1meta_aa0ca1890dde0298c4380f94582cc2186}} +\index{utl\+::meta@{utl\+::meta}!int8\+\_\+@{int8\+\_\+}} +\index{int8\+\_\+@{int8\+\_\+}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{int8\+\_\+}{int8\_}} +{\footnotesize\ttfamily template$<$int8\+\_\+t v$>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_aa0ca1890dde0298c4380f94582cc2186}{utl\+::meta\+::int8\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$int8\+\_\+t, v$>$} + + + +int8\+\_\+ type\+: integral constant wrapper for {\ttfamily int8\+\_\+t} + + + +Definition at line 73 of file integral.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_a35b962b97f8277de66c1c8c02796eed4}\label{namespaceutl_1_1meta_a35b962b97f8277de66c1c8c02796eed4}} +\index{utl\+::meta@{utl\+::meta}!int\+\_\+@{int\+\_\+}} +\index{int\+\_\+@{int\+\_\+}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{int\+\_\+}{int\_}} +{\footnotesize\ttfamily template$<$int v$>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_a35b962b97f8277de66c1c8c02796eed4}{utl\+::meta\+::int\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$int, v$>$} + + + +int\+\_\+ type\+: integral constant wrapper for {\ttfamily int} + + + +Definition at line 98 of file integral.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_abc3ba8590a6cdd451f64d6c5dcd8ff99}\label{namespaceutl_1_1meta_abc3ba8590a6cdd451f64d6c5dcd8ff99}} +\index{utl\+::meta@{utl\+::meta}!integer\+\_\+sequence@{integer\+\_\+sequence}} +\index{integer\+\_\+sequence@{integer\+\_\+sequence}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{integer\+\_\+sequence}{integer\_sequence}} +{\footnotesize\ttfamily template$<$class Tp , Tp... Ints$>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_abc3ba8590a6cdd451f64d6c5dcd8ff99}{utl\+::meta\+::integer\+\_\+sequence}} = typedef std\+::integer\+\_\+sequence$<$Tp, Ints...$>$} + +integer sequence \begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} + + +Definition at line 129 of file integral.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}\label{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}} +\index{utl\+::meta@{utl\+::meta}!integral\+\_\+@{integral\+\_\+}} +\index{integral\+\_\+@{integral\+\_\+}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{integral\+\_\+}{integral\_}} +{\footnotesize\ttfamily template$<$typename Tp , Tp v$>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{utl\+::meta\+::integral\+\_\+}} = typedef std\+::integral\+\_\+constant$<$Tp, v$>$} + +integral\+\_\+ Integral Constant is a holder class for a compile-\/time value of an integral type. Every Integral Constant is also a null-\/ary Metafunction, returning itself. An integral constant object is implicitly convertible to the corresponding run-\/time value of the wrapped integral type + +Definition at line 58 of file integral.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}\label{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}} +\index{utl\+::meta@{utl\+::meta}!invoke@{invoke}} +\index{invoke@{invoke}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{invoke}{invoke}} +{\footnotesize\ttfamily template$<$typename Fn , typename... Args$>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{utl\+::meta\+::invoke}} = typedef typename Fn\+::template \mbox{\hyperlink{namespaceutl_1_1meta_a3f684549221fac60bc8c7979cb4b98f4}{apply}}$<$Args...$>$} + +invoke, invoke\+\_\+t + +Invoke the nested apply meta-\/function from {\ttfamily Fn} with the arguments {\ttfamily Args}. \begin{DoxyNote}{Note} +This is an analogous to the \mbox{\hyperlink{namespaceutl_adc675874b5426194d04112f76b356714}{std\+::invoke()}} +\end{DoxyNote} +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/invoke.\+h}}, and \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} + + +Definition at line 81 of file invoke.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_ac27f3e5f3ec42921d9f8a6bb85560cf1}\label{namespaceutl_1_1meta_ac27f3e5f3ec42921d9f8a6bb85560cf1}} +\index{utl\+::meta@{utl\+::meta}!invoke\+\_\+t@{invoke\+\_\+t}} +\index{invoke\+\_\+t@{invoke\+\_\+t}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{invoke\+\_\+t}{invoke\_t}} +{\footnotesize\ttfamily template$<$typename Fn , typename... Args$>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_ac27f3e5f3ec42921d9f8a6bb85560cf1}{utl\+::meta\+::invoke\+\_\+t}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}} $<$Fn, Args...$>$ $>$} + +Evaluate the invocation of the nested apply metafunction from {\ttfamily Fn} with the arguments {\ttfamily Args}. \begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/invoke.\+h}}.\end{Desc} + + +Definition at line 88 of file invoke.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_add602488265f07c7a3080355350cda70}\label{namespaceutl_1_1meta_add602488265f07c7a3080355350cda70}} +\index{utl\+::meta@{utl\+::meta}!is\+\_\+applicable\+\_\+it@{is\+\_\+applicable\+\_\+it}} +\index{is\+\_\+applicable\+\_\+it@{is\+\_\+applicable\+\_\+it}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{is\+\_\+applicable\+\_\+it}{is\_applicable\_it}} +{\footnotesize\ttfamily template$<$typename T , template$<$ T... $>$ class F, T... Is$>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_add602488265f07c7a3080355350cda70}{utl\+::meta\+::is\+\_\+applicable\+\_\+it}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__i__}{detail\+::is\+\_\+applicable\+\_\+i\+\_\+}}$<$T, F, Is...$>$ $>$} + + + +check if we can instantiate {\ttfamily F} with parameters {\ttfamily Is} of type {\ttfamily T} + +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/invoke.\+h}}.\end{Desc} + + +Definition at line 174 of file invoke.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_a52c0afa73f63dc889e44cc6cc180f1f8}\label{namespaceutl_1_1meta_a52c0afa73f63dc889e44cc6cc180f1f8}} +\index{utl\+::meta@{utl\+::meta}!is\+\_\+applicable\+\_\+qt@{is\+\_\+applicable\+\_\+qt}} +\index{is\+\_\+applicable\+\_\+qt@{is\+\_\+applicable\+\_\+qt}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{is\+\_\+applicable\+\_\+qt}{is\_applicable\_qt}} +{\footnotesize\ttfamily template$<$typename Q , typename... T$>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_a52c0afa73f63dc889e44cc6cc180f1f8}{utl\+::meta\+::is\+\_\+applicable\+\_\+qt}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}} $<$ \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__q__}{detail\+::is\+\_\+applicable\+\_\+q\+\_\+}} $<$Q, T...$>$ $>$} + + + +check if we can invoke {\ttfamily Q} with parameters {\ttfamily T} + +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/invoke.\+h}}.\end{Desc} + + +Definition at line 168 of file invoke.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_a695a94a2bbe51b0d0eec9bf82214d094}\label{namespaceutl_1_1meta_a695a94a2bbe51b0d0eec9bf82214d094}} +\index{utl\+::meta@{utl\+::meta}!is\+\_\+applicable\+\_\+t@{is\+\_\+applicable\+\_\+t}} +\index{is\+\_\+applicable\+\_\+t@{is\+\_\+applicable\+\_\+t}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{is\+\_\+applicable\+\_\+t}{is\_applicable\_t}} +{\footnotesize\ttfamily template$<$template$<$ typename... $>$ class F, typename... T$>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_a695a94a2bbe51b0d0eec9bf82214d094}{utl\+::meta\+::is\+\_\+applicable\+\_\+t}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__}{detail\+::is\+\_\+applicable\+\_\+}}$<$F, T...$>$ $>$} + + + +check if we can instantiate {\ttfamily F} with parameters {\ttfamily T} + +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/invoke.\+h}}.\end{Desc} + + +Definition at line 163 of file invoke.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_a5329219a9d2f195421a78d8e07873507}\label{namespaceutl_1_1meta_a5329219a9d2f195421a78d8e07873507}} +\index{utl\+::meta@{utl\+::meta}!is\+\_\+detected@{is\+\_\+detected}} +\index{is\+\_\+detected@{is\+\_\+detected}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{is\+\_\+detected}{is\_detected}} +{\footnotesize\ttfamily template$<$template$<$ typename... $>$ class Op, typename... Args$>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_a5329219a9d2f195421a78d8e07873507}{utl\+::meta\+::is\+\_\+detected}} = typedef typename \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1detector}{detail\+::detector}}$<$\mbox{\hyperlink{structutl_1_1meta_1_1nat__}{nat\+\_\+}}, void, Op, Args...$>$\+::detected} + +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2detection_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/detection.\+h}}.\end{Desc} + + +Definition at line 118 of file detection.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_afa24702fa15a1d0a8a05761c54b79def}\label{namespaceutl_1_1meta_afa24702fa15a1d0a8a05761c54b79def}} +\index{utl\+::meta@{utl\+::meta}!is\+\_\+detected\+\_\+convertible@{is\+\_\+detected\+\_\+convertible}} +\index{is\+\_\+detected\+\_\+convertible@{is\+\_\+detected\+\_\+convertible}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{is\+\_\+detected\+\_\+convertible}{is\_detected\_convertible}} +{\footnotesize\ttfamily template$<$typename To , template$<$ typename... $>$ class Op, typename... Args$>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_afa24702fa15a1d0a8a05761c54b79def}{utl\+::meta\+::is\+\_\+detected\+\_\+convertible}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}} $<$ std\+::is\+\_\+convertible$<$ \mbox{\hyperlink{namespaceutl_1_1meta_aa654a286b3bc8e6d8116ee1f57087110}{detected\+\_\+t}}$<$Op, Args...$>$, To $>$ $>$} + +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2detection_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/detection.\+h}}.\end{Desc} + + +Definition at line 231 of file detection.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_ad5224ef66e8f40efaaf3ad3d605dd629}\label{namespaceutl_1_1meta_ad5224ef66e8f40efaaf3ad3d605dd629}} +\index{utl\+::meta@{utl\+::meta}!is\+\_\+detected\+\_\+exact@{is\+\_\+detected\+\_\+exact}} +\index{is\+\_\+detected\+\_\+exact@{is\+\_\+detected\+\_\+exact}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{is\+\_\+detected\+\_\+exact}{is\_detected\_exact}} +{\footnotesize\ttfamily template$<$typename Expected , template$<$ typename... $>$ class Op, typename... Args$>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_ad5224ef66e8f40efaaf3ad3d605dd629}{utl\+::meta\+::is\+\_\+detected\+\_\+exact}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}} $<$ \mbox{\hyperlink{structutl_1_1meta_1_1same__}{same\+\_\+}}$<$Expected, \mbox{\hyperlink{namespaceutl_1_1meta_aa654a286b3bc8e6d8116ee1f57087110}{detected\+\_\+t}}$<$Op, Args...$>$ $>$ $>$} + +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2detection_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/detection.\+h}}.\end{Desc} + + +Definition at line 199 of file detection.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_a5d3ed337c64ea13ee70891d09b0caa3e}\label{namespaceutl_1_1meta_a5d3ed337c64ea13ee70891d09b0caa3e}} +\index{utl\+::meta@{utl\+::meta}!long\+\_\+@{long\+\_\+}} +\index{long\+\_\+@{long\+\_\+}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{long\+\_\+}{long\_}} +{\footnotesize\ttfamily template$<$long v$>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_a5d3ed337c64ea13ee70891d09b0caa3e}{utl\+::meta\+::long\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$long, v$>$} + + + +long\+\_\+ type\+: integral constant wrapper for {\ttfamily long} + + + +Definition at line 102 of file integral.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_aa7e48cd5c76ea88fc89ff4a66bc6f596}\label{namespaceutl_1_1meta_aa7e48cd5c76ea88fc89ff4a66bc6f596}} +\index{utl\+::meta@{utl\+::meta}!make\+\_\+index\+\_\+sequence@{make\+\_\+index\+\_\+sequence}} +\index{make\+\_\+index\+\_\+sequence@{make\+\_\+index\+\_\+sequence}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{make\+\_\+index\+\_\+sequence}{make\_index\_sequence}} +{\footnotesize\ttfamily template$<$index\+\_\+t Num$>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_aa7e48cd5c76ea88fc89ff4a66bc6f596}{utl\+::meta\+::make\+\_\+index\+\_\+sequence}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a093a8cfdae571002c305273aa02ad6a2}{make\+\_\+integer\+\_\+sequence}} $<$\mbox{\hyperlink{namespaceutl_a676c0acd539dd04048dcc7b4d698577e}{index\+\_\+t}}, Num$>$} + + + +Alias template make\+\_\+index\+\_\+sequence. + + + +Definition at line 140 of file integral.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_a093a8cfdae571002c305273aa02ad6a2}\label{namespaceutl_1_1meta_a093a8cfdae571002c305273aa02ad6a2}} +\index{utl\+::meta@{utl\+::meta}!make\+\_\+integer\+\_\+sequence@{make\+\_\+integer\+\_\+sequence}} +\index{make\+\_\+integer\+\_\+sequence@{make\+\_\+integer\+\_\+sequence}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{make\+\_\+integer\+\_\+sequence}{make\_integer\_sequence}} +{\footnotesize\ttfamily template$<$typename Tp , Tp Num$>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_a093a8cfdae571002c305273aa02ad6a2}{utl\+::meta\+::make\+\_\+integer\+\_\+sequence}} = typedef std\+::make\+\_\+integer\+\_\+sequence$<$Tp, Num$>$} + + + +Definition at line 132 of file integral.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_adf7106374b1acc978be05b5848002cfc}\label{namespaceutl_1_1meta_adf7106374b1acc978be05b5848002cfc}} +\index{utl\+::meta@{utl\+::meta}!modulo@{modulo}} +\index{modulo@{modulo}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{modulo}{modulo}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_adf7106374b1acc978be05b5848002cfc}{utl\+::meta\+::modulo}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ decltype(\+\_\+\+Tp1() \% \+\_\+\+Tp2()), \+\_\+\+Tp1() \% \+\_\+\+Tp2() $>$} + + + +Modulo. + + + +Definition at line 162 of file operations.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_a5f0a890cbd116d4a72a760a26f5a8244}\label{namespaceutl_1_1meta_a5f0a890cbd116d4a72a760a26f5a8244}} +\index{utl\+::meta@{utl\+::meta}!mult@{mult}} +\index{mult@{mult}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{mult}{mult}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_a5f0a890cbd116d4a72a760a26f5a8244}{utl\+::meta\+::mult}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ decltype(\+\_\+\+Tp2() $\ast$ \+\_\+\+Tp2()), \+\_\+\+Tp1() $\ast$ \+\_\+\+Tp2() $>$} + + + +Multiplication. + + + +Definition at line 150 of file operations.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_aec4bf9329ff8356d333a59e3c369d0b7}\label{namespaceutl_1_1meta_aec4bf9329ff8356d333a59e3c369d0b7}} +\index{utl\+::meta@{utl\+::meta}!negate@{negate}} +\index{negate@{negate}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{negate}{negate}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_aec4bf9329ff8356d333a59e3c369d0b7}{utl\+::meta\+::negate}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$decltype(-\/\+\_\+\+Tp()), -\/\+\_\+\+Tp()$>$} + + + +Negation. + +Math operations requires Integral\+Constant(\+\_\+\+Tp) + +Definition at line 138 of file operations.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_af324255cfaa0be3f02843961f5becb85}\label{namespaceutl_1_1meta_af324255cfaa0be3f02843961f5becb85}} +\index{utl\+::meta@{utl\+::meta}!none\+\_\+of@{none\+\_\+of}} +\index{none\+\_\+of@{none\+\_\+of}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{none\+\_\+of}{none\_of}} +{\footnotesize\ttfamily template$<$typename List , typename Pred $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_af324255cfaa0be3f02843961f5becb85}{utl\+::meta\+::none\+\_\+of}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a58c1744750d0df133034f60a95f87e19}{empty}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_ac72acc616316c322e750d20a46553ba4}{filter}} $<$List, Pred$>$ $>$} + +Returns {\ttfamily true\+\_\+} if {\ttfamily Pred} returns {\ttfamily false\+\_\+} for all the elements in the {\ttfamily List} or if the {\ttfamily List} is empty and {\ttfamily false} otherwise. \begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} + + +Definition at line 875 of file typelist.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_af0c85cc6480a9e7a8e4fb7d8f936f01b}\label{namespaceutl_1_1meta_af0c85cc6480a9e7a8e4fb7d8f936f01b}} +\index{utl\+::meta@{utl\+::meta}!Npos@{Npos}} +\index{Npos@{Npos}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{Npos}{Npos}} +{\footnotesize\ttfamily using \mbox{\hyperlink{namespaceutl_1_1meta_af0c85cc6480a9e7a8e4fb7d8f936f01b}{utl\+::meta\+::\+Npos}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a249ac51f6613684164663bd22025fe9a}{size\+\_\+}}$<$\mbox{\hyperlink{namespaceutl_a676c0acd539dd04048dcc7b4d698577e}{index\+\_\+t}}(-\/1)$>$} + + + +The last position we can express for indexing. + +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} + + +Definition at line 124 of file integral.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_aa6513d9d2a5db3ba3517efff33adc761}\label{namespaceutl_1_1meta_aa6513d9d2a5db3ba3517efff33adc761}} +\index{utl\+::meta@{utl\+::meta}!pair@{pair}} +\index{pair@{pair}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{pair}{pair}} +{\footnotesize\ttfamily template$<$typename T1 , typename T2 $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_aa6513d9d2a5db3ba3517efff33adc761}{utl\+::meta\+::pair}} = typedef \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$T1, T2$>$} + +pair A special typelist with only 2 Types \begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} + + +Definition at line 145 of file typelist.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_a86a37f5803c474823963e1f3c6f7a6d6}\label{namespaceutl_1_1meta_a86a37f5803c474823963e1f3c6f7a6d6}} +\index{utl\+::meta@{utl\+::meta}!pop\+\_\+back@{pop\+\_\+back}} +\index{pop\+\_\+back@{pop\+\_\+back}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{pop\+\_\+back}{pop\_back}} +{\footnotesize\ttfamily template$<$typename List $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_a86a37f5803c474823963e1f3c6f7a6d6}{utl\+::meta\+::pop\+\_\+back}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}} $<$ \mbox{\hyperlink{structutl_1_1meta_1_1pop__back__impl_1_1pop__back__}{pop\+\_\+back\+\_\+impl\+::pop\+\_\+back\+\_\+}}$<$List$>$ $>$} + +Return a new {\ttfamily typelist} by removing the last element from the {\ttfamily List}. Complexity $ O(N) $. \begin{DoxyNote}{Note} +This operation, in addition from other push/pop operations, is heavy(2 reverse operations). +\end{DoxyNote} +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} + + +Definition at line 526 of file typelist.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_aa4a307a81c0640c6c0dd08f8a53f3c32}\label{namespaceutl_1_1meta_aa4a307a81c0640c6c0dd08f8a53f3c32}} +\index{utl\+::meta@{utl\+::meta}!pop\+\_\+front@{pop\+\_\+front}} +\index{pop\+\_\+front@{pop\+\_\+front}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{pop\+\_\+front}{pop\_front}} +{\footnotesize\ttfamily template$<$typename List $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_aa4a307a81c0640c6c0dd08f8a53f3c32}{utl\+::meta\+::pop\+\_\+front}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1pop__front__impl_1_1pop__front__}{pop\+\_\+front\+\_\+impl\+::pop\+\_\+front\+\_\+}}$<$List$>$ $>$} + +Return a new {\ttfamily typelist} by removing the first element from the front of {\ttfamily List}. Complexity $ O(1) $ \begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} + + +Definition at line 502 of file typelist.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_adf545ba110edc6a34ddcaf2280a0c7f4}\label{namespaceutl_1_1meta_adf545ba110edc6a34ddcaf2280a0c7f4}} +\index{utl\+::meta@{utl\+::meta}!push\+\_\+back@{push\+\_\+back}} +\index{push\+\_\+back@{push\+\_\+back}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{push\+\_\+back}{push\_back}} +{\footnotesize\ttfamily template$<$typename List , typename... Ts$>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_adf545ba110edc6a34ddcaf2280a0c7f4}{utl\+::meta\+::push\+\_\+back}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_a3f684549221fac60bc8c7979cb4b98f4}{apply}} $<$ \mbox{\hyperlink{structutl_1_1meta_1_1bind__back}{bind\+\_\+back}}$<$\mbox{\hyperlink{structutl_1_1meta_1_1quote}{quote}}$<$\mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$>$, Ts...$>$, List $>$ $>$} + +Return a new {\ttfamily typelist} by adding the elements {\ttfamily Ts} to the back of {\ttfamily List}. Complexity $ O(1) $ \begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} + + +Definition at line 461 of file typelist.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_ab0f84ba0807b6fd36fa9e4e5cfc4cd32}\label{namespaceutl_1_1meta_ab0f84ba0807b6fd36fa9e4e5cfc4cd32}} +\index{utl\+::meta@{utl\+::meta}!push\+\_\+front@{push\+\_\+front}} +\index{push\+\_\+front@{push\+\_\+front}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{push\+\_\+front}{push\_front}} +{\footnotesize\ttfamily template$<$typename List , typename... Ts$>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_ab0f84ba0807b6fd36fa9e4e5cfc4cd32}{utl\+::meta\+::push\+\_\+front}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_a3f684549221fac60bc8c7979cb4b98f4}{apply}} $<$ \mbox{\hyperlink{structutl_1_1meta_1_1bind__front}{bind\+\_\+front}}$<$\mbox{\hyperlink{structutl_1_1meta_1_1quote}{quote}}$<$\mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$>$, Ts...$>$, List $>$ $>$} + +Return a new {\ttfamily typelist} by adding the elements {\ttfamily Ts} to the front of {\ttfamily List}. Complexity $ O(1) $ \begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} + + +Definition at line 450 of file typelist.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_aa013c45afb59b5c132a72be54ba145fb}\label{namespaceutl_1_1meta_aa013c45afb59b5c132a72be54ba145fb}} +\index{utl\+::meta@{utl\+::meta}!repeat@{repeat}} +\index{repeat@{repeat}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{repeat}{repeat}} +{\footnotesize\ttfamily template$<$typename N , typename ... Ts$>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_aa013c45afb59b5c132a72be54ba145fb}{utl\+::meta\+::repeat}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_af6ff0017ea5e914543527b7135930f47}{repeat\+\_\+c}}$<$N\+::type\+::value, Ts...$>$} + +A wrapper to typelist$<$$>$\+::times$<$$>$ utility for integral\+\_\+c argument {\ttfamily N} \begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} + + +Definition at line 161 of file typelist.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_af6ff0017ea5e914543527b7135930f47}\label{namespaceutl_1_1meta_af6ff0017ea5e914543527b7135930f47}} +\index{utl\+::meta@{utl\+::meta}!repeat\+\_\+c@{repeat\+\_\+c}} +\index{repeat\+\_\+c@{repeat\+\_\+c}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{repeat\+\_\+c}{repeat\_c}} +{\footnotesize\ttfamily template$<$size\+\_\+t N, typename ... Ts$>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_af6ff0017ea5e914543527b7135930f47}{utl\+::meta\+::repeat\+\_\+c}} = typedef typename \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$Ts...$>$\+::template times$<$N$>$} + +repeat + +A wrapper to typelist$<$$>$\+::times$<$$>$ utility for integer argument {\ttfamily N} \begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} + + +Definition at line 155 of file typelist.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_ac9d120f858ebfa2b0ef74c6305a9fb6d}\label{namespaceutl_1_1meta_ac9d120f858ebfa2b0ef74c6305a9fb6d}} +\index{utl\+::meta@{utl\+::meta}!replace@{replace}} +\index{replace@{replace}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{replace}{replace}} +{\footnotesize\ttfamily template$<$typename List , typename T , typename U $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_ac9d120f858ebfa2b0ef74c6305a9fb6d}{utl\+::meta\+::replace}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}} $<$ \mbox{\hyperlink{namespaceutl_1_1meta_a848a47bf281bf3eaf932cc9113477102}{replace\+\_\+if}} $<$List, \mbox{\hyperlink{structutl_1_1meta_1_1same__as}{same\+\_\+as}}$<$T$>$, U$>$ $>$} + +Alias wrapper that returns a new {\ttfamily typelist} where all instances of type {\ttfamily T} have been replaced with {\ttfamily U}. \begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} + + +Definition at line 848 of file typelist.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_a848a47bf281bf3eaf932cc9113477102}\label{namespaceutl_1_1meta_a848a47bf281bf3eaf932cc9113477102}} +\index{utl\+::meta@{utl\+::meta}!replace\+\_\+if@{replace\+\_\+if}} +\index{replace\+\_\+if@{replace\+\_\+if}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{replace\+\_\+if}{replace\_if}} +{\footnotesize\ttfamily template$<$typename List , typename Pred , typename T $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_a848a47bf281bf3eaf932cc9113477102}{utl\+::meta\+::replace\+\_\+if}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1replace__if__impl_1_1replace__if__}{replace\+\_\+if\+\_\+impl\+::replace\+\_\+if\+\_\+}}$<$List, Pred, T, \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$$>$ $>$ $>$} + +Return a new typelist where all the instances for which the invocation of{\ttfamily Pred} returns {\ttfamily true\+\_\+}, are replaced with {\ttfamily T} + +Complexity $ O(N) $ + + +\begin{DoxyParams}{Parameters} +{\em List} & The input typelist \\ +\hline +{\em Pred} & A unary invocable predicate \\ +\hline +{\em T} & The new type to replace the item of the {\ttfamily List}, when eval$<$invoke$<$\+Pred, Item$>$$>$ returns {\ttfamily true\+\_\+} \\ +\hline +\end{DoxyParams} +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} + + +Definition at line 841 of file typelist.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_ab1a91edef4cf9fd56b73c9a03eaeb3d4}\label{namespaceutl_1_1meta_ab1a91edef4cf9fd56b73c9a03eaeb3d4}} +\index{utl\+::meta@{utl\+::meta}!rev\+\_\+fold@{rev\+\_\+fold}} +\index{rev\+\_\+fold@{rev\+\_\+fold}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{rev\+\_\+fold}{rev\_fold}} +{\footnotesize\ttfamily template$<$typename List , typename V , typename Fn $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_ab1a91edef4cf9fd56b73c9a03eaeb3d4}{utl\+::meta\+::rev\+\_\+fold}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold__}{rev\+\_\+fold\+\_\+impl\+::rev\+\_\+fold\+\_\+}}$<$List, V, Fn$>$ $>$} + +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} + + +Definition at line 438 of file typelist.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_a2ae6bfa22f1912b0ba09d24e0ae2ccd9}\label{namespaceutl_1_1meta_a2ae6bfa22f1912b0ba09d24e0ae2ccd9}} +\index{utl\+::meta@{utl\+::meta}!reverse@{reverse}} +\index{reverse@{reverse}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{reverse}{reverse}} +{\footnotesize\ttfamily template$<$typename List $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_a2ae6bfa22f1912b0ba09d24e0ae2ccd9}{utl\+::meta\+::reverse}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1reverse__impl_1_1reverse__}{reverse\+\_\+impl\+::reverse\+\_\+}}$<$List$>$ $>$} + +Return a new {\ttfamily typelist} by reversing the elements in the list {\ttfamily List}. Complexity $ O(N) $ \begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} + + +Definition at line 479 of file typelist.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_aa550d9dc96d34623af4ce71f8a1eaff5}\label{namespaceutl_1_1meta_aa550d9dc96d34623af4ce71f8a1eaff5}} +\index{utl\+::meta@{utl\+::meta}!seek@{seek}} +\index{seek@{seek}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{seek}{seek}} +{\footnotesize\ttfamily template$<$typename List , typename T $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_aa550d9dc96d34623af4ce71f8a1eaff5}{utl\+::meta\+::seek}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ab8eafd75f3077a36c4e3363b742da64a}{seek\+\_\+if}} $<$List, \mbox{\hyperlink{structutl_1_1meta_1_1same__as}{same\+\_\+as}}$<$T$>$ $>$} + +Search for the first {\ttfamily Item} on the {\ttfamily List} of type {\ttfamily T} and return the rest of the {\ttfamily List} starting from that position as new typelist \begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} + + +Definition at line 711 of file typelist.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_ab8eafd75f3077a36c4e3363b742da64a}\label{namespaceutl_1_1meta_ab8eafd75f3077a36c4e3363b742da64a}} +\index{utl\+::meta@{utl\+::meta}!seek\+\_\+if@{seek\+\_\+if}} +\index{seek\+\_\+if@{seek\+\_\+if}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{seek\+\_\+if}{seek\_if}} +{\footnotesize\ttfamily template$<$typename List , typename Pred $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_ab8eafd75f3077a36c4e3363b742da64a}{utl\+::meta\+::seek\+\_\+if}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1seek__if__impl_1_1seek__if__}{seek\+\_\+if\+\_\+impl\+::seek\+\_\+if\+\_\+}}$<$List, Pred, 0$>$ $>$} + +Search for the first {\ttfamily Item} on the {\ttfamily List} for which the predicate {\ttfamily Pred} returns true\+\_\+ when {\ttfamily eval$<$invoke$<$Pred, Item$>$$>$} and return the rest of the {\ttfamily List} starting from that position as new typelist + +Complexity $ O(N) $ + + +\begin{DoxyParams}{Parameters} +{\em List} & A typelist \\ +\hline +{\em Pred} & A Unary invocable predicate \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +An integral constant with the location of the first match, on Npos otherwise +\end{DoxyReturn} +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} + + +Definition at line 705 of file typelist.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_a63088c29ac25eefda4189721e662b391}\label{namespaceutl_1_1meta_a63088c29ac25eefda4189721e662b391}} +\index{utl\+::meta@{utl\+::meta}!shift\+\_\+left@{shift\+\_\+left}} +\index{shift\+\_\+left@{shift\+\_\+left}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{shift\+\_\+left}{shift\_left}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp , typename shift $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_a63088c29ac25eefda4189721e662b391}{utl\+::meta\+::shift\+\_\+left}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$typename \+\_\+\+Tp\+::value\+\_\+type, (typename \+\_\+\+Tp\+::value\+\_\+type)(\+\_\+\+Tp() $<$$<$ shift())$>$} + +\begin{DoxyReturn}{Returns} +the result of bitwise shift left ($<$$<$) operation on \+\_\+\+Tp. +\end{DoxyReturn} + + +Definition at line 218 of file operations.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_acbe6dd78c4a4230e92acc5ca86e3fcc7}\label{namespaceutl_1_1meta_acbe6dd78c4a4230e92acc5ca86e3fcc7}} +\index{utl\+::meta@{utl\+::meta}!shift\+\_\+right@{shift\+\_\+right}} +\index{shift\+\_\+right@{shift\+\_\+right}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{shift\+\_\+right}{shift\_right}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp , typename shift $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_acbe6dd78c4a4230e92acc5ca86e3fcc7}{utl\+::meta\+::shift\+\_\+right}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$typename \+\_\+\+Tp\+::value\+\_\+type, (typename \+\_\+\+Tp\+::value\+\_\+type)(\+\_\+\+Tp() $>$ $>$ shift())$>$} + +\begin{DoxyReturn}{Returns} +the result of bitwise shift right ($>$$>$) operation on \+\_\+\+Tp. +\end{DoxyReturn} + + +Definition at line 221 of file operations.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_a0edfc2c15e42531e53c0822264d220ec}\label{namespaceutl_1_1meta_a0edfc2c15e42531e53c0822264d220ec}} +\index{utl\+::meta@{utl\+::meta}!size@{size}} +\index{size@{size}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{size}{size}} +{\footnotesize\ttfamily template$<$typename List $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_a0edfc2c15e42531e53c0822264d220ec}{utl\+::meta\+::size}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a249ac51f6613684164663bd22025fe9a}{size\+\_\+}}$<$List\+::size()$>$} + +An integral constant wrapper that is the size of the {\ttfamily \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{meta\+::typelist}}} + +Complexity $ O(1) $. + + +\begin{DoxyParams}{Parameters} +{\em List} & A typelist \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +The size of the typelist +\end{DoxyReturn} +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} + + +Definition at line 129 of file typelist.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_a249ac51f6613684164663bd22025fe9a}\label{namespaceutl_1_1meta_a249ac51f6613684164663bd22025fe9a}} +\index{utl\+::meta@{utl\+::meta}!size\+\_\+@{size\+\_\+}} +\index{size\+\_\+@{size\+\_\+}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{size\+\_\+}{size\_}} +{\footnotesize\ttfamily template$<$size\+\_\+t v$>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_a249ac51f6613684164663bd22025fe9a}{utl\+::meta\+::size\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}}, v$>$} + + + +size\+\_\+ type\+: integral constant wrapper for {\ttfamily size\+\_\+t} a.\+k.\+a std\+::size\+\_\+t + + + +Definition at line 110 of file integral.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_a3fdae1894a962a69828ccccf73088cce}\label{namespaceutl_1_1meta_a3fdae1894a962a69828ccccf73088cce}} +\index{utl\+::meta@{utl\+::meta}!sizeof\+\_\+@{sizeof\+\_\+}} +\index{sizeof\+\_\+@{sizeof\+\_\+}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{sizeof\+\_\+}{sizeof\_}} +{\footnotesize\ttfamily template$<$typename Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_a3fdae1894a962a69828ccccf73088cce}{utl\+::meta\+::sizeof\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a249ac51f6613684164663bd22025fe9a}{size\+\_\+}}$<$sizeof(Tp)$>$} + +Computes the size of the type {\ttfamily Tp}. Complexity $ O(1) $. + +Definition at line 115 of file integral.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_a9f90eea3852367afa4e1fe74756976fb}\label{namespaceutl_1_1meta_a9f90eea3852367afa4e1fe74756976fb}} +\index{utl\+::meta@{utl\+::meta}!sub@{sub}} +\index{sub@{sub}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{sub}{sub}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_a9f90eea3852367afa4e1fe74756976fb}{utl\+::meta\+::sub}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a559ad95ef39fd2c81664bd1a22dd99c1}{add}}$<$\+\_\+\+Tp1, \mbox{\hyperlink{namespaceutl_1_1meta_aec4bf9329ff8356d333a59e3c369d0b7}{negate}}$<$\+\_\+\+Tp2$>$ $>$} + + + +Substruction. + + + +Definition at line 165 of file operations.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_ac8bbf187eea3cb5da38d1bdc97b52334}\label{namespaceutl_1_1meta_ac8bbf187eea3cb5da38d1bdc97b52334}} +\index{utl\+::meta@{utl\+::meta}!transform@{transform}} +\index{transform@{transform}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{transform}{transform}} +{\footnotesize\ttfamily template$<$typename... Args$>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_ac8bbf187eea3cb5da38d1bdc97b52334}{utl\+::meta\+::transform}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1transform__impl_1_1transform__}{transform\+\_\+impl\+::transform\+\_\+}}$<$\mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$Args...$>$ $>$ $>$} + +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} + + +Definition at line 568 of file typelist.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_a55c0405bfb94c1d285d3131390c31451}\label{namespaceutl_1_1meta_a55c0405bfb94c1d285d3131390c31451}} +\index{utl\+::meta@{utl\+::meta}!transform\+\_\+lazy@{transform\+\_\+lazy}} +\index{transform\+\_\+lazy@{transform\+\_\+lazy}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{transform\+\_\+lazy}{transform\_lazy}} +{\footnotesize\ttfamily template$<$typename... Args$>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_a55c0405bfb94c1d285d3131390c31451}{utl\+::meta\+::transform\+\_\+lazy}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy__}{transform\+\_\+lazy\+\_\+impl\+::transform\+\_\+lazy\+\_\+}}$<$\mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$Args...$>$ $>$ $>$} + +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} + + +Definition at line 614 of file typelist.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_ae9a5a8fbe8202785f059935af219fb97}\label{namespaceutl_1_1meta_ae9a5a8fbe8202785f059935af219fb97}} +\index{utl\+::meta@{utl\+::meta}!true\+\_\+@{true\+\_\+}} +\index{true\+\_\+@{true\+\_\+}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{true\+\_\+}{true\_}} +{\footnotesize\ttfamily using \mbox{\hyperlink{namespaceutl_1_1meta_ae9a5a8fbe8202785f059935af219fb97}{utl\+::meta\+::true\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a0bec5828d2df0edfb4bc084773a438f6}{bool\+\_\+}}$<$true$>$} + + + +The type used as a compile-\/time boolean with true value. + +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2detection_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/detection.\+h}}, and \mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/invoke.\+h}}.\end{Desc} + + +Definition at line 68 of file integral.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_af1b0b8109e3e61032c24d148202b6966}\label{namespaceutl_1_1meta_af1b0b8109e3e61032c24d148202b6966}} +\index{utl\+::meta@{utl\+::meta}!uint16\+\_\+@{uint16\+\_\+}} +\index{uint16\+\_\+@{uint16\+\_\+}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{uint16\+\_\+}{uint16\_}} +{\footnotesize\ttfamily template$<$uint16\+\_\+t v$>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_af1b0b8109e3e61032c24d148202b6966}{utl\+::meta\+::uint16\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$uint16\+\_\+t, v$>$} + + + +uint16\+\_\+ type\+: integral constant wrapper for {\ttfamily uint16\+\_\+t} + + + +Definition at line 83 of file integral.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_aa8c7c38548db8df196b683ffdc109cd6}\label{namespaceutl_1_1meta_aa8c7c38548db8df196b683ffdc109cd6}} +\index{utl\+::meta@{utl\+::meta}!uint32\+\_\+@{uint32\+\_\+}} +\index{uint32\+\_\+@{uint32\+\_\+}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{uint32\+\_\+}{uint32\_}} +{\footnotesize\ttfamily template$<$uint32\+\_\+t v$>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_aa8c7c38548db8df196b683ffdc109cd6}{utl\+::meta\+::uint32\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$uint32\+\_\+t, v$>$} + + + +uint32\+\_\+ type\+: integral constant wrapper for {\ttfamily uint32\+\_\+t} + + + +Definition at line 90 of file integral.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_aae9c77ad9349e98af6cdc41e9b0090f8}\label{namespaceutl_1_1meta_aae9c77ad9349e98af6cdc41e9b0090f8}} +\index{utl\+::meta@{utl\+::meta}!uint8\+\_\+@{uint8\+\_\+}} +\index{uint8\+\_\+@{uint8\+\_\+}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{uint8\+\_\+}{uint8\_}} +{\footnotesize\ttfamily template$<$uint8\+\_\+t v$>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_aae9c77ad9349e98af6cdc41e9b0090f8}{utl\+::meta\+::uint8\+\_\+}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$uint8\+\_\+t, v$>$} + + + +uint8\+\_\+ type\+: integral constant wrapper for {\ttfamily uint8\+\_\+t} + + + +Definition at line 76 of file integral.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_a52ff6257bf079904f9cb51a65f5a7397}\label{namespaceutl_1_1meta_a52ff6257bf079904f9cb51a65f5a7397}} +\index{utl\+::meta@{utl\+::meta}!use\+\_\+if\+\_\+all\+\_\+t@{use\+\_\+if\+\_\+all\+\_\+t}} +\index{use\+\_\+if\+\_\+all\+\_\+t@{use\+\_\+if\+\_\+all\+\_\+t}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{use\+\_\+if\+\_\+all\+\_\+t}{use\_if\_all\_t}} +{\footnotesize\ttfamily template$<$typename T1 , typename... Ts$>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_a52ff6257bf079904f9cb51a65f5a7397}{utl\+::meta\+::use\+\_\+if\+\_\+all\+\_\+t}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a372fe391d9567f66a81091f581e1fa01}{enable\+\_\+if\+\_\+t}}$<$ \mbox{\hyperlink{group__integral_ga8e82f4758321e0e0b3705607f7d8e068}{and\+\_\+}}$<$T1, Ts...$>$\+::value, T1 $>$} + + + +If both type (\+\_\+\+T1 and \+\_\+\+T2) type resolves to \+\_\+\+Ret, else to S\+F\+I\+N\+AE. + + + +Definition at line 56 of file useif.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_ad0394846551cd881782e46d2d05190de}\label{namespaceutl_1_1meta_ad0394846551cd881782e46d2d05190de}} +\index{utl\+::meta@{utl\+::meta}!use\+\_\+if\+\_\+any\+\_\+t@{use\+\_\+if\+\_\+any\+\_\+t}} +\index{use\+\_\+if\+\_\+any\+\_\+t@{use\+\_\+if\+\_\+any\+\_\+t}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{use\+\_\+if\+\_\+any\+\_\+t}{use\_if\_any\_t}} +{\footnotesize\ttfamily template$<$typename T1 , typename... Ts$>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_ad0394846551cd881782e46d2d05190de}{utl\+::meta\+::use\+\_\+if\+\_\+any\+\_\+t}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a372fe391d9567f66a81091f581e1fa01}{enable\+\_\+if\+\_\+t}}$<$ \mbox{\hyperlink{group__integral_gac43f400cc93d54f5f79892e618069d9b}{or\+\_\+}}$<$T1, Ts...$>$\+::value, T1 $>$} + + + +If any type (\+\_\+\+T1 or \+\_\+\+T2) type resolves to \+\_\+\+Ret, else to S\+F\+I\+N\+AE. + + + +Definition at line 50 of file useif.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_af590469269a8c378d937d8d75ee96e8c}\label{namespaceutl_1_1meta_af590469269a8c378d937d8d75ee96e8c}} +\index{utl\+::meta@{utl\+::meta}!use\+\_\+if\+\_\+not\+\_\+same\+\_\+t@{use\+\_\+if\+\_\+not\+\_\+same\+\_\+t}} +\index{use\+\_\+if\+\_\+not\+\_\+same\+\_\+t@{use\+\_\+if\+\_\+not\+\_\+same\+\_\+t}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{use\+\_\+if\+\_\+not\+\_\+same\+\_\+t}{use\_if\_not\_same\_t}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+T1 , typename \+\_\+\+T2 , typename \+\_\+\+Ret = \+\_\+\+T1$>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_af590469269a8c378d937d8d75ee96e8c}{utl\+::meta\+::use\+\_\+if\+\_\+not\+\_\+same\+\_\+t}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a372fe391d9567f66a81091f581e1fa01}{enable\+\_\+if\+\_\+t}}$<$ !\mbox{\hyperlink{structutl_1_1meta_1_1same__}{same\+\_\+}}$<$\+\_\+\+T1, \+\_\+\+T2$>$\+::value, \+\_\+\+Ret $>$} + + + +If not same type resolves to \+\_\+\+Ret, else S\+F\+I\+N\+AE. + + + +Definition at line 45 of file useif.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_a7b4ba22b3afb3e7a98e1012a350cb573}\label{namespaceutl_1_1meta_a7b4ba22b3afb3e7a98e1012a350cb573}} +\index{utl\+::meta@{utl\+::meta}!use\+\_\+if\+\_\+same\+\_\+t@{use\+\_\+if\+\_\+same\+\_\+t}} +\index{use\+\_\+if\+\_\+same\+\_\+t@{use\+\_\+if\+\_\+same\+\_\+t}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{use\+\_\+if\+\_\+same\+\_\+t}{use\_if\_same\_t}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+T1 , typename \+\_\+\+T2 , typename \+\_\+\+Ret = \+\_\+\+T1$>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_a7b4ba22b3afb3e7a98e1012a350cb573}{utl\+::meta\+::use\+\_\+if\+\_\+same\+\_\+t}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_a372fe391d9567f66a81091f581e1fa01}{enable\+\_\+if\+\_\+t}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1same__}{same\+\_\+}}$<$\+\_\+\+T1, \+\_\+\+T2$>$\+::value, \+\_\+\+Ret $>$} + + + +If same type resolves to \+\_\+\+Ret, else S\+F\+I\+N\+AE. + + + +Definition at line 40 of file useif.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_a181d79db46b10170529e85b907ed3dc7}\label{namespaceutl_1_1meta_a181d79db46b10170529e85b907ed3dc7}} +\index{utl\+::meta@{utl\+::meta}!when@{when}} +\index{when@{when}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{when}{when}} +{\footnotesize\ttfamily template$<$bool If$>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_a181d79db46b10170529e85b907ed3dc7}{utl\+::meta\+::when}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1when__}{detail\+::when\+\_\+}}$<$If$>$ $>$} + + + +Well formed only if {\ttfamily If} is true. + + + +Definition at line 46 of file sfinae.\+h. + + + +\subsection{Variable Documentation} +\mbox{\Hypertarget{namespaceutl_1_1meta_acba521b528e775be4b37d2e481e0f138}\label{namespaceutl_1_1meta_acba521b528e775be4b37d2e481e0f138}} +\index{utl\+::meta@{utl\+::meta}!is\+\_\+detected\+\_\+convertible\+\_\+v@{is\+\_\+detected\+\_\+convertible\+\_\+v}} +\index{is\+\_\+detected\+\_\+convertible\+\_\+v@{is\+\_\+detected\+\_\+convertible\+\_\+v}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{is\+\_\+detected\+\_\+convertible\+\_\+v}{is\_detected\_convertible\_v}} +{\footnotesize\ttfamily template$<$typename To , template$<$ typename... $>$ class Op, typename... Args$>$ \\ +constexpr bool utl\+::meta\+::is\+\_\+detected\+\_\+convertible\+\_\+v} + +{\bfseries Initial value\+:} +\begin{DoxyCode} += + \mbox{\hyperlink{namespaceutl_1_1meta_afa24702fa15a1d0a8a05761c54b79def}{is\_detected\_convertible}}::value +\end{DoxyCode} +evaluates to true if evaluation of Op$<$\+Args...$>$ is convertible to {\ttfamily To} and to false if not \begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2detection_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/detection.\+h}}.\end{Desc} + + +Definition at line 237 of file detection.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_a960827a1d72083a511f8ea4ccc8beceb}\label{namespaceutl_1_1meta_a960827a1d72083a511f8ea4ccc8beceb}} +\index{utl\+::meta@{utl\+::meta}!is\+\_\+detected\+\_\+exact\+\_\+v@{is\+\_\+detected\+\_\+exact\+\_\+v}} +\index{is\+\_\+detected\+\_\+exact\+\_\+v@{is\+\_\+detected\+\_\+exact\+\_\+v}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{is\+\_\+detected\+\_\+exact\+\_\+v}{is\_detected\_exact\_v}} +{\footnotesize\ttfamily template$<$typename Expected , template$<$ typename... $>$ class Op, typename... Args$>$ \\ +constexpr bool utl\+::meta\+::is\+\_\+detected\+\_\+exact\+\_\+v = \mbox{\hyperlink{namespaceutl_1_1meta_ad5224ef66e8f40efaaf3ad3d605dd629}{is\+\_\+detected\+\_\+exact}}$<$ Expected, Op, Args...$>$\+::value} + + + +evaluates to true if evaluation of Op$<$\+Args...$>$ is {\ttfamily Expected} and to false if not + +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2detection_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/detection.\+h}}.\end{Desc} + + +Definition at line 204 of file detection.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1meta_a4f3184ccb8e8ba2a78e2d2e83a0b9885}\label{namespaceutl_1_1meta_a4f3184ccb8e8ba2a78e2d2e83a0b9885}} +\index{utl\+::meta@{utl\+::meta}!is\+\_\+detected\+\_\+v@{is\+\_\+detected\+\_\+v}} +\index{is\+\_\+detected\+\_\+v@{is\+\_\+detected\+\_\+v}!utl\+::meta@{utl\+::meta}} +\subsubsection{\texorpdfstring{is\+\_\+detected\+\_\+v}{is\_detected\_v}} +{\footnotesize\ttfamily template$<$template$<$ typename... $>$ class Op, typename... Args$>$ \\ +constexpr bool utl\+::meta\+::is\+\_\+detected\+\_\+v = \mbox{\hyperlink{namespaceutl_1_1meta_a5329219a9d2f195421a78d8e07873507}{is\+\_\+detected}}$<$Op, Args...$>$\+::value} + + + +Detection predicate. + +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2detection_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/detection.\+h}}.\end{Desc} + + +Definition at line 122 of file detection.\+h. + diff --git a/doc/latex/namespaceutl_1_1meta_1_1apply__impl.tex b/doc/latex/namespaceutl_1_1meta_1_1apply__impl.tex new file mode 100644 index 0000000..4e858e9 --- /dev/null +++ b/doc/latex/namespaceutl_1_1meta_1_1apply__impl.tex @@ -0,0 +1,15 @@ +\hypertarget{namespaceutl_1_1meta_1_1apply__impl}{}\section{utl\+:\+:meta\+:\+:apply\+\_\+impl Namespace Reference} +\label{namespaceutl_1_1meta_1_1apply__impl}\index{utl\+::meta\+::apply\+\_\+impl@{utl\+::meta\+::apply\+\_\+impl}} +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1apply__impl_1_1apply__}{apply\+\_\+}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01integer__sequence_3_01_t_00_01_is_8_8_8_01_4_01_4}{apply\+\_\+$<$ Fn, integer\+\_\+sequence$<$ T, Is... $>$ $>$}} +\begin{DoxyCompactList}\small\item\em Sequence == integer\+\_\+sequence$<$$>$ \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01typelist_3_01_list_8_8_8_01_4_01_4}{apply\+\_\+$<$ Fn, typelist$<$ List... $>$ $>$}} +\begin{DoxyCompactList}\small\item\em {\ttfamily Sequence} == typelist$<$$>$ \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Apply An analogous to \mbox{\hyperlink{namespaceutl_1_1meta_a3f684549221fac60bc8c7979cb4b98f4}{apply()}} implementation for tuples. We just use Our typelist$<$$>$ and integer\+\_\+sequence$<$$>$ types. \ No newline at end of file diff --git a/doc/latex/namespaceutl_1_1meta_1_1at__impl.tex b/doc/latex/namespaceutl_1_1meta_1_1at__impl.tex new file mode 100644 index 0000000..e510116 --- /dev/null +++ b/doc/latex/namespaceutl_1_1meta_1_1at__impl.tex @@ -0,0 +1,40 @@ +\hypertarget{namespaceutl_1_1meta_1_1at__impl}{}\section{utl\+:\+:meta\+:\+:at\+\_\+impl Namespace Reference} +\label{namespaceutl_1_1meta_1_1at__impl}\index{utl\+::meta\+::at\+\_\+impl@{utl\+::meta\+::at\+\_\+impl}} +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1at__impl_1_1__add__pointer}{\+\_\+add\+\_\+pointer}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1at__impl_1_1at__}{at\+\_\+}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1at__impl_1_1at___3_01typelist_3_01_list_8_8_8_01_4_00_01_n_01_4}{at\+\_\+$<$ typelist$<$ List... $>$, N $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1at__impl_1_1at__head__}{at\+\_\+head\+\_\+}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1at__impl_1_1at__head___3_01typelist_3_01voids_8_8_8_01_4_01_4}{at\+\_\+head\+\_\+$<$ typelist$<$ voids... $>$ $>$}} +\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename T $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_1_1at__impl_a1759f370bc952ff21077efca9fe0e0b4}{add\+\_\+pointer}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1at__impl_1_1__add__pointer}{\+\_\+add\+\_\+pointer}}$<$ T $>$ $>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +at\+: random element access + +\subsection{Typedef Documentation} +\mbox{\Hypertarget{namespaceutl_1_1meta_1_1at__impl_a1759f370bc952ff21077efca9fe0e0b4}\label{namespaceutl_1_1meta_1_1at__impl_a1759f370bc952ff21077efca9fe0e0b4}} +\index{utl\+::meta\+::at\+\_\+impl@{utl\+::meta\+::at\+\_\+impl}!add\+\_\+pointer@{add\+\_\+pointer}} +\index{add\+\_\+pointer@{add\+\_\+pointer}!utl\+::meta\+::at\+\_\+impl@{utl\+::meta\+::at\+\_\+impl}} +\subsubsection{\texorpdfstring{add\+\_\+pointer}{add\_pointer}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_1_1at__impl_a1759f370bc952ff21077efca9fe0e0b4}{utl\+::meta\+::at\+\_\+impl\+::add\+\_\+pointer}} = typedef \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}} $<$ \mbox{\hyperlink{structutl_1_1meta_1_1at__impl_1_1__add__pointer}{\+\_\+add\+\_\+pointer}} $<$T$>$ $>$} + +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} + + +Definition at line 212 of file typelist.\+h. + diff --git a/doc/latex/namespaceutl_1_1meta_1_1back__impl.tex b/doc/latex/namespaceutl_1_1meta_1_1back__impl.tex new file mode 100644 index 0000000..3f09ebd --- /dev/null +++ b/doc/latex/namespaceutl_1_1meta_1_1back__impl.tex @@ -0,0 +1,13 @@ +\hypertarget{namespaceutl_1_1meta_1_1back__impl}{}\section{utl\+:\+:meta\+:\+:back\+\_\+impl Namespace Reference} +\label{namespaceutl_1_1meta_1_1back__impl}\index{utl\+::meta\+::back\+\_\+impl@{utl\+::meta\+::back\+\_\+impl}} +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1back__impl_1_1back__}{back\+\_\+}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1back__impl_1_1back___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4}{back\+\_\+$<$ typelist$<$ Head, Tail... $>$ $>$}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +back \ No newline at end of file diff --git a/doc/latex/namespaceutl_1_1meta_1_1cat__impl.tex b/doc/latex/namespaceutl_1_1meta_1_1cat__impl.tex new file mode 100644 index 0000000..4999c53 --- /dev/null +++ b/doc/latex/namespaceutl_1_1meta_1_1cat__impl.tex @@ -0,0 +1,19 @@ +\hypertarget{namespaceutl_1_1meta_1_1cat__impl}{}\section{utl\+:\+:meta\+:\+:cat\+\_\+impl Namespace Reference} +\label{namespaceutl_1_1meta_1_1cat__impl}\index{utl\+::meta\+::cat\+\_\+impl@{utl\+::meta\+::cat\+\_\+impl}} +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1cat__impl_1_1cat__}{cat\+\_\+}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_01_4}{cat\+\_\+$<$ typelist$<$ L1... $>$ $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4}{cat\+\_\+$<$ typelist$<$ L1... $>$, typelist$<$ L2... $>$ $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_00_01_ln_8_8_8_01_4}{cat\+\_\+$<$ typelist$<$ L1... $>$, typelist$<$ L2... $>$, Ln... $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1cat__impl_1_1cat___3_4}{cat\+\_\+$<$$>$}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Concatenation \ No newline at end of file diff --git a/doc/latex/namespaceutl_1_1meta_1_1count__if__impl.tex b/doc/latex/namespaceutl_1_1meta_1_1count__if__impl.tex new file mode 100644 index 0000000..300fe08 --- /dev/null +++ b/doc/latex/namespaceutl_1_1meta_1_1count__if__impl.tex @@ -0,0 +1,15 @@ +\hypertarget{namespaceutl_1_1meta_1_1count__if__impl}{}\section{utl\+:\+:meta\+:\+:count\+\_\+if\+\_\+impl Namespace Reference} +\label{namespaceutl_1_1meta_1_1count__if__impl}\index{utl\+::meta\+::count\+\_\+if\+\_\+impl@{utl\+::meta\+::count\+\_\+if\+\_\+impl}} +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1count__if__impl_1_1count__if__}{count\+\_\+if\+\_\+}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4}{count\+\_\+if\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, N $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4}{count\+\_\+if\+\_\+$<$ typelist$<$$>$, Fn, N $>$}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +count\+\_\+if \ No newline at end of file diff --git a/doc/latex/namespaceutl_1_1meta_1_1detail.tex b/doc/latex/namespaceutl_1_1meta_1_1detail.tex new file mode 100644 index 0000000..aaaefbd --- /dev/null +++ b/doc/latex/namespaceutl_1_1meta_1_1detail.tex @@ -0,0 +1,106 @@ +\hypertarget{namespaceutl_1_1meta_1_1detail}{}\section{utl\+:\+:meta\+:\+:detail Namespace Reference} +\label{namespaceutl_1_1meta_1_1detail}\index{utl\+::meta\+::detail@{utl\+::meta\+::detail}} +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1__and__}{\+\_\+and\+\_\+}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1__and___3_01___t1_01_4}{\+\_\+and\+\_\+$<$ \+\_\+\+T1 $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_01_4}{\+\_\+and\+\_\+$<$ \+\_\+\+T1, \+\_\+\+T2 $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4}{\+\_\+and\+\_\+$<$ \+\_\+\+T1, \+\_\+\+T2, \+\_\+\+T3, \+\_\+\+Tn... $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1__and___3_4}{\+\_\+and\+\_\+$<$$>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1__or__}{\+\_\+or\+\_\+}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1__or___3_01___t1_01_4}{\+\_\+or\+\_\+$<$ \+\_\+\+T1 $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_01_4}{\+\_\+or\+\_\+$<$ \+\_\+\+T1, \+\_\+\+T2 $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4}{\+\_\+or\+\_\+$<$ \+\_\+\+T1, \+\_\+\+T2, \+\_\+\+T3, \+\_\+\+Tn... $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1__or___3_4}{\+\_\+or\+\_\+$<$$>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1compose__}{compose\+\_\+}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_01_4}{compose\+\_\+$<$ Fn0 $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_00_01_fns_8_8_8_01_4}{compose\+\_\+$<$ Fn0, Fns... $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1compose__f__}{compose\+\_\+f\+\_\+}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_01_4}{compose\+\_\+f\+\_\+$<$ Fn0 $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_00_01_fns_8_8_8_01_4}{compose\+\_\+f\+\_\+$<$ Fn0, Fns... $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1defer__}{defer\+\_\+}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1defer__i__}{defer\+\_\+i\+\_\+}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1detector}{detector}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1detector_3_01_default_00_01void__t_3_01_op_3_01_args_8_8_8_01_4_0c35bdbd19f56980c0b5ee6d490bfb634}{detector$<$ Default, void\+\_\+t$<$ Op$<$ Args... $>$ $>$, Op, Args... $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1if__c__}{if\+\_\+c\+\_\+}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1if__c___3_01false_00_01_then_00_01_else_01_4}{if\+\_\+c\+\_\+$<$ false, Then, Else $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_01_4}{if\+\_\+c\+\_\+$<$ true, Then $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_00_01_else_01_4}{if\+\_\+c\+\_\+$<$ true, Then, Else $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__}{is\+\_\+applicable\+\_\+}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__i__}{is\+\_\+applicable\+\_\+i\+\_\+}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__q__}{is\+\_\+applicable\+\_\+q\+\_\+}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1when__}{when\+\_\+}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1when___3_01true_01_4}{when\+\_\+$<$ true $>$}} +\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename Default , template$<$ typename... $>$ class Op, typename... Args$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_1_1detail_a835827cb3116483228d6f7f774b68970}{detected\+\_\+or}} = \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1detector}{detector}}$<$ Default, void, Op, Args... $>$ +\begin{DoxyCompactList}\small\item\em helper for detected\+\_\+or\+\_\+t \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Detector for detection idiom + +Is applicable trait + +defer + +compose + +OR implementation + +A\+ND implementation + +Type selectionif\+\_\+, if\+\_\+c + +Tool to enable a partial specialization only if a boolean condition is true. + +\subsection{Typedef Documentation} +\mbox{\Hypertarget{namespaceutl_1_1meta_1_1detail_a835827cb3116483228d6f7f774b68970}\label{namespaceutl_1_1meta_1_1detail_a835827cb3116483228d6f7f774b68970}} +\index{utl\+::meta\+::detail@{utl\+::meta\+::detail}!detected\+\_\+or@{detected\+\_\+or}} +\index{detected\+\_\+or@{detected\+\_\+or}!utl\+::meta\+::detail@{utl\+::meta\+::detail}} +\subsubsection{\texorpdfstring{detected\+\_\+or}{detected\_or}} +{\footnotesize\ttfamily template$<$typename Default , template$<$ typename... $>$ class Op, typename... Args$>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1meta_1_1detail_a835827cb3116483228d6f7f774b68970}{utl\+::meta\+::detail\+::detected\+\_\+or}} = typedef \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1detector}{detector}}$<$Default, void, Op, Args...$>$} + + + +helper for detected\+\_\+or\+\_\+t + +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2detection_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/detection.\+h}}.\end{Desc} + + +Definition at line 91 of file detection.\+h. + diff --git a/doc/latex/namespaceutl_1_1meta_1_1filter__impl.tex b/doc/latex/namespaceutl_1_1meta_1_1filter__impl.tex new file mode 100644 index 0000000..8dd7e03 --- /dev/null +++ b/doc/latex/namespaceutl_1_1meta_1_1filter__impl.tex @@ -0,0 +1,15 @@ +\hypertarget{namespaceutl_1_1meta_1_1filter__impl}{}\section{utl\+:\+:meta\+:\+:filter\+\_\+impl Namespace Reference} +\label{namespaceutl_1_1meta_1_1filter__impl}\index{utl\+::meta\+::filter\+\_\+impl@{utl\+::meta\+::filter\+\_\+impl}} +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1filter__impl_1_1filter__}{filter\+\_\+}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_l_01_4}{filter\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, L $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_4_00_01_fn_00_01_l_01_4}{filter\+\_\+$<$ typelist$<$$>$, Fn, L $>$}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +filter \ No newline at end of file diff --git a/doc/latex/namespaceutl_1_1meta_1_1find__if__impl.tex b/doc/latex/namespaceutl_1_1meta_1_1find__if__impl.tex new file mode 100644 index 0000000..dcd20a1 --- /dev/null +++ b/doc/latex/namespaceutl_1_1meta_1_1find__if__impl.tex @@ -0,0 +1,15 @@ +\hypertarget{namespaceutl_1_1meta_1_1find__if__impl}{}\section{utl\+:\+:meta\+:\+:find\+\_\+if\+\_\+impl Namespace Reference} +\label{namespaceutl_1_1meta_1_1find__if__impl}\index{utl\+::meta\+::find\+\_\+if\+\_\+impl@{utl\+::meta\+::find\+\_\+if\+\_\+impl}} +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1find__if__impl_1_1find__if__}{find\+\_\+if\+\_\+}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4}{find\+\_\+if\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, N $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4}{find\+\_\+if\+\_\+$<$ typelist$<$$>$, Fn, N $>$}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +find\+\_\+if, find \ No newline at end of file diff --git a/doc/latex/namespaceutl_1_1meta_1_1fold__impl.tex b/doc/latex/namespaceutl_1_1meta_1_1fold__impl.tex new file mode 100644 index 0000000..5bc557b --- /dev/null +++ b/doc/latex/namespaceutl_1_1meta_1_1fold__impl.tex @@ -0,0 +1,15 @@ +\hypertarget{namespaceutl_1_1meta_1_1fold__impl}{}\section{utl\+:\+:meta\+:\+:fold\+\_\+impl Namespace Reference} +\label{namespaceutl_1_1meta_1_1fold__impl}\index{utl\+::meta\+::fold\+\_\+impl@{utl\+::meta\+::fold\+\_\+impl}} +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1fold__impl_1_1fold__}{fold\+\_\+}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4}{fold\+\_\+$<$ typelist$<$ Head, Tail... $>$, V, Fn $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_4_00_01_v0_00_01_fn_01_4}{fold\+\_\+$<$ typelist$<$$>$, V0, Fn $>$}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +fold$<$\+List, V, Fn$>$, rev\+\_\+fold$<$\+List, V, Fn$>$ \ No newline at end of file diff --git a/doc/latex/namespaceutl_1_1meta_1_1front__impl.tex b/doc/latex/namespaceutl_1_1meta_1_1front__impl.tex new file mode 100644 index 0000000..7cd5732 --- /dev/null +++ b/doc/latex/namespaceutl_1_1meta_1_1front__impl.tex @@ -0,0 +1,13 @@ +\hypertarget{namespaceutl_1_1meta_1_1front__impl}{}\section{utl\+:\+:meta\+:\+:front\+\_\+impl Namespace Reference} +\label{namespaceutl_1_1meta_1_1front__impl}\index{utl\+::meta\+::front\+\_\+impl@{utl\+::meta\+::front\+\_\+impl}} +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1front__impl_1_1front__}{front\+\_\+}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1front__impl_1_1front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4}{front\+\_\+$<$ typelist$<$ Head, Tail... $>$ $>$}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +front \ No newline at end of file diff --git a/doc/latex/namespaceutl_1_1meta_1_1pop__back__impl.tex b/doc/latex/namespaceutl_1_1meta_1_1pop__back__impl.tex new file mode 100644 index 0000000..aa7e116 --- /dev/null +++ b/doc/latex/namespaceutl_1_1meta_1_1pop__back__impl.tex @@ -0,0 +1,11 @@ +\hypertarget{namespaceutl_1_1meta_1_1pop__back__impl}{}\section{utl\+:\+:meta\+:\+:pop\+\_\+back\+\_\+impl Namespace Reference} +\label{namespaceutl_1_1meta_1_1pop__back__impl}\index{utl\+::meta\+::pop\+\_\+back\+\_\+impl@{utl\+::meta\+::pop\+\_\+back\+\_\+impl}} +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1pop__back__impl_1_1pop__back__}{pop\+\_\+back\+\_\+}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +pop\+\_\+back \ No newline at end of file diff --git a/doc/latex/namespaceutl_1_1meta_1_1pop__front__impl.tex b/doc/latex/namespaceutl_1_1meta_1_1pop__front__impl.tex new file mode 100644 index 0000000..8e4553c --- /dev/null +++ b/doc/latex/namespaceutl_1_1meta_1_1pop__front__impl.tex @@ -0,0 +1,13 @@ +\hypertarget{namespaceutl_1_1meta_1_1pop__front__impl}{}\section{utl\+:\+:meta\+:\+:pop\+\_\+front\+\_\+impl Namespace Reference} +\label{namespaceutl_1_1meta_1_1pop__front__impl}\index{utl\+::meta\+::pop\+\_\+front\+\_\+impl@{utl\+::meta\+::pop\+\_\+front\+\_\+impl}} +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1pop__front__impl_1_1pop__front__}{pop\+\_\+front\+\_\+}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1pop__front__impl_1_1pop__front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4}{pop\+\_\+front\+\_\+$<$ typelist$<$ Head, Tail... $>$ $>$}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +pop\+\_\+front \ No newline at end of file diff --git a/doc/latex/namespaceutl_1_1meta_1_1replace__if__impl.tex b/doc/latex/namespaceutl_1_1meta_1_1replace__if__impl.tex new file mode 100644 index 0000000..0661cdb --- /dev/null +++ b/doc/latex/namespaceutl_1_1meta_1_1replace__if__impl.tex @@ -0,0 +1,15 @@ +\hypertarget{namespaceutl_1_1meta_1_1replace__if__impl}{}\section{utl\+:\+:meta\+:\+:replace\+\_\+if\+\_\+impl Namespace Reference} +\label{namespaceutl_1_1meta_1_1replace__if__impl}\index{utl\+::meta\+::replace\+\_\+if\+\_\+impl@{utl\+::meta\+::replace\+\_\+if\+\_\+impl}} +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1replace__if__impl_1_1replace__if__}{replace\+\_\+if\+\_\+}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_01_head_00_01_tail_8_8_8_dfa8065a3617f53ecded260506092a07}{replace\+\_\+if\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, T, Ret $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_4_00_01_fn_00_01_t_00_01_ret_01_4}{replace\+\_\+if\+\_\+$<$ typelist$<$$>$, Fn, T, Ret $>$}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +replace \ No newline at end of file diff --git a/doc/latex/namespaceutl_1_1meta_1_1rev__fold__impl.tex b/doc/latex/namespaceutl_1_1meta_1_1rev__fold__impl.tex new file mode 100644 index 0000000..53ba42e --- /dev/null +++ b/doc/latex/namespaceutl_1_1meta_1_1rev__fold__impl.tex @@ -0,0 +1,13 @@ +\hypertarget{namespaceutl_1_1meta_1_1rev__fold__impl}{}\section{utl\+:\+:meta\+:\+:rev\+\_\+fold\+\_\+impl Namespace Reference} +\label{namespaceutl_1_1meta_1_1rev__fold__impl}\index{utl\+::meta\+::rev\+\_\+fold\+\_\+impl@{utl\+::meta\+::rev\+\_\+fold\+\_\+impl}} +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold__}{rev\+\_\+fold\+\_\+}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4}{rev\+\_\+fold\+\_\+$<$ typelist$<$ Head, Tail... $>$, V, Fn $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_tail_01_4_00_01_v_00_01_fn_01_4}{rev\+\_\+fold\+\_\+$<$ typelist$<$ Tail $>$, V, Fn $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_4_00_01_v_00_01_fn_01_4}{rev\+\_\+fold\+\_\+$<$ typelist$<$$>$, V, Fn $>$}} +\end{DoxyCompactItemize} diff --git a/doc/latex/namespaceutl_1_1meta_1_1reverse__impl.tex b/doc/latex/namespaceutl_1_1meta_1_1reverse__impl.tex new file mode 100644 index 0000000..755b222 --- /dev/null +++ b/doc/latex/namespaceutl_1_1meta_1_1reverse__impl.tex @@ -0,0 +1,11 @@ +\hypertarget{namespaceutl_1_1meta_1_1reverse__impl}{}\section{utl\+:\+:meta\+:\+:reverse\+\_\+impl Namespace Reference} +\label{namespaceutl_1_1meta_1_1reverse__impl}\index{utl\+::meta\+::reverse\+\_\+impl@{utl\+::meta\+::reverse\+\_\+impl}} +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1reverse__impl_1_1reverse__}{reverse\+\_\+}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +reverse \ No newline at end of file diff --git a/doc/latex/namespaceutl_1_1meta_1_1seek__if__impl.tex b/doc/latex/namespaceutl_1_1meta_1_1seek__if__impl.tex new file mode 100644 index 0000000..e15aca3 --- /dev/null +++ b/doc/latex/namespaceutl_1_1meta_1_1seek__if__impl.tex @@ -0,0 +1,15 @@ +\hypertarget{namespaceutl_1_1meta_1_1seek__if__impl}{}\section{utl\+:\+:meta\+:\+:seek\+\_\+if\+\_\+impl Namespace Reference} +\label{namespaceutl_1_1meta_1_1seek__if__impl}\index{utl\+::meta\+::seek\+\_\+if\+\_\+impl@{utl\+::meta\+::seek\+\_\+if\+\_\+impl}} +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1seek__if__impl_1_1seek__if__}{seek\+\_\+if\+\_\+}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4}{seek\+\_\+if\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, N $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4}{seek\+\_\+if\+\_\+$<$ typelist$<$$>$, Fn, N $>$}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +seek\+\_\+if \ No newline at end of file diff --git a/doc/latex/namespaceutl_1_1meta_1_1transform__impl.tex b/doc/latex/namespaceutl_1_1meta_1_1transform__impl.tex new file mode 100644 index 0000000..3b05d3d --- /dev/null +++ b/doc/latex/namespaceutl_1_1meta_1_1transform__impl.tex @@ -0,0 +1,15 @@ +\hypertarget{namespaceutl_1_1meta_1_1transform__impl}{}\section{utl\+:\+:meta\+:\+:transform\+\_\+impl Namespace Reference} +\label{namespaceutl_1_1meta_1_1transform__impl}\index{utl\+::meta\+::transform\+\_\+impl@{utl\+::meta\+::transform\+\_\+impl}} +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1transform__impl_1_1transform__}{transform\+\_\+}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts_8_8_8_01_40fe2b1c8ede658aadb6925de73541689}{transform\+\_\+$<$ typelist$<$ typelist$<$ Ts... $>$, Fn $>$, void\+\_\+t$<$ invoke$<$ Fn, Ts $>$... $>$ $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts0_8_8_8_01_8fba6bf3d0565d17a96950cb517db5f1}{transform\+\_\+$<$ typelist$<$ typelist$<$ Ts0... $>$, typelist$<$ Ts1... $>$, Fn $>$, void\+\_\+t$<$ invoke$<$ Fn, Ts0, Ts1 $>$... $>$ $>$}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Transform \ No newline at end of file diff --git a/doc/latex/namespaceutl_1_1meta_1_1transform__lazy__impl.tex b/doc/latex/namespaceutl_1_1meta_1_1transform__lazy__impl.tex new file mode 100644 index 0000000..7ed7e75 --- /dev/null +++ b/doc/latex/namespaceutl_1_1meta_1_1transform__lazy__impl.tex @@ -0,0 +1,15 @@ +\hypertarget{namespaceutl_1_1meta_1_1transform__lazy__impl}{}\section{utl\+:\+:meta\+:\+:transform\+\_\+lazy\+\_\+impl Namespace Reference} +\label{namespaceutl_1_1meta_1_1transform__lazy__impl}\index{utl\+::meta\+::transform\+\_\+lazy\+\_\+impl@{utl\+::meta\+::transform\+\_\+lazy\+\_\+impl}} +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy__}{transform\+\_\+lazy\+\_\+}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t56243bc35bf73da8271cb88f34751f3a}{transform\+\_\+lazy\+\_\+$<$ typelist$<$ typelist$<$ Ts... $>$, Fn $>$, void\+\_\+t$<$ invoke$<$ Fn, Ts $>$... $>$ $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t14ff615a4bff6c4c3701df9c38aaa6a5}{transform\+\_\+lazy\+\_\+$<$ typelist$<$ typelist$<$ Ts0... $>$, typelist$<$ Ts1... $>$, Fn $>$, void\+\_\+t$<$ invoke$<$ Fn, Ts0, Ts1 $>$... $>$ $>$}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Transform lazy \ No newline at end of file diff --git a/doc/latex/namespaceutl_1_1out__dev__details.tex b/doc/latex/namespaceutl_1_1out__dev__details.tex new file mode 100644 index 0000000..97c4b46 --- /dev/null +++ b/doc/latex/namespaceutl_1_1out__dev__details.tex @@ -0,0 +1,122 @@ +\hypertarget{namespaceutl_1_1out__dev__details}{}\section{utl\+:\+:out\+\_\+dev\+\_\+details Namespace Reference} +\label{namespaceutl_1_1out__dev__details}\index{utl\+::out\+\_\+dev\+\_\+details@{utl\+::out\+\_\+dev\+\_\+details}} +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structutl_1_1out__dev__details_1_1is__out__dev__}{is\+\_\+out\+\_\+dev\+\_\+}} +\begin{DoxyCompactList}\small\item\em Primary template to catch any non output device types. \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1out__dev__details_1_1is__out__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1fbf8d2409fc6de9dd6b9649bedc1b379}{is\+\_\+out\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, void\+\_\+t$<$ typename \+\_\+\+Tp\+::data\+\_\+type, typename \+\_\+\+Tp\+::pointer\+\_\+type, typename \+\_\+\+Tp\+::iterator, typename \+\_\+\+Tp\+::const\+\_\+iterator, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+put1\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+put2\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cbegin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cend\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$ $>$ $>$}} +\begin{DoxyCompactList}\small\item\em template to catch a proper output device type \end{DoxyCompactList}\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1out__dev__details_adb92d30f8cf134da9586ef9d52801325}{try\+\_\+put1\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().put(declval$<$ const typename \+\_\+\+Tp\+::data\+\_\+type \& $>$())) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1out__dev__details_a314537b65eaf15b6bba5a6f5544f3ace}{try\+\_\+put2\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().put(declval$<$ const typename \+\_\+\+Tp\+::data\+\_\+type $\ast$ $>$(), declval$<$ \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} $>$())) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1out__dev__details_ab5980d368073d104e13d153e291dde86}{try\+\_\+begin\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().begin()) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1out__dev__details_a83dcd42cb9186967654eb365ab0ce712}{tryc\+\_\+begin\+\_\+t}} = decltype(declval$<$ const \+\_\+\+Tp $>$().begin()) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1out__dev__details_a92a49420cc024aec06546ac041e7707a}{try\+\_\+cbegin\+\_\+t}} = decltype(declval$<$ const \+\_\+\+Tp $>$().cbegin()) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1out__dev__details_a7d24815b4a395378766a4e9f0535c926}{try\+\_\+end\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().begin()) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1out__dev__details_ad76fb97793ff8c8f31b042d70114ded2}{tryc\+\_\+end\+\_\+t}} = decltype(declval$<$ const \+\_\+\+Tp $>$().begin()) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1out__dev__details_a9f69f9ca8e1bf642bf63bfdd18c8d567}{try\+\_\+cend\+\_\+t}} = decltype(declval$<$ const \+\_\+\+Tp $>$().cend()) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Output device concept + +\subsection{Typedef Documentation} +\mbox{\Hypertarget{namespaceutl_1_1out__dev__details_ab5980d368073d104e13d153e291dde86}\label{namespaceutl_1_1out__dev__details_ab5980d368073d104e13d153e291dde86}} +\index{utl\+::out\+\_\+dev\+\_\+details@{utl\+::out\+\_\+dev\+\_\+details}!try\+\_\+begin\+\_\+t@{try\+\_\+begin\+\_\+t}} +\index{try\+\_\+begin\+\_\+t@{try\+\_\+begin\+\_\+t}!utl\+::out\+\_\+dev\+\_\+details@{utl\+::out\+\_\+dev\+\_\+details}} +\subsubsection{\texorpdfstring{try\+\_\+begin\+\_\+t}{try\_begin\_t}} +{\footnotesize\ttfamily template$<$class \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1out__dev__details_ab5980d368073d104e13d153e291dde86}{utl\+::out\+\_\+dev\+\_\+details\+::try\+\_\+begin\+\_\+t}} = typedef decltype (declval$<$\+\_\+\+Tp$>$().begin())} + + + +Definition at line 320 of file out\+\_\+dev.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1out__dev__details_a92a49420cc024aec06546ac041e7707a}\label{namespaceutl_1_1out__dev__details_a92a49420cc024aec06546ac041e7707a}} +\index{utl\+::out\+\_\+dev\+\_\+details@{utl\+::out\+\_\+dev\+\_\+details}!try\+\_\+cbegin\+\_\+t@{try\+\_\+cbegin\+\_\+t}} +\index{try\+\_\+cbegin\+\_\+t@{try\+\_\+cbegin\+\_\+t}!utl\+::out\+\_\+dev\+\_\+details@{utl\+::out\+\_\+dev\+\_\+details}} +\subsubsection{\texorpdfstring{try\+\_\+cbegin\+\_\+t}{try\_cbegin\_t}} +{\footnotesize\ttfamily template$<$class \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1out__dev__details_a92a49420cc024aec06546ac041e7707a}{utl\+::out\+\_\+dev\+\_\+details\+::try\+\_\+cbegin\+\_\+t}} = typedef decltype (declval$<$const \+\_\+\+Tp$>$().cbegin())} + + + +Definition at line 322 of file out\+\_\+dev.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1out__dev__details_a9f69f9ca8e1bf642bf63bfdd18c8d567}\label{namespaceutl_1_1out__dev__details_a9f69f9ca8e1bf642bf63bfdd18c8d567}} +\index{utl\+::out\+\_\+dev\+\_\+details@{utl\+::out\+\_\+dev\+\_\+details}!try\+\_\+cend\+\_\+t@{try\+\_\+cend\+\_\+t}} +\index{try\+\_\+cend\+\_\+t@{try\+\_\+cend\+\_\+t}!utl\+::out\+\_\+dev\+\_\+details@{utl\+::out\+\_\+dev\+\_\+details}} +\subsubsection{\texorpdfstring{try\+\_\+cend\+\_\+t}{try\_cend\_t}} +{\footnotesize\ttfamily template$<$class \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1out__dev__details_a9f69f9ca8e1bf642bf63bfdd18c8d567}{utl\+::out\+\_\+dev\+\_\+details\+::try\+\_\+cend\+\_\+t}} = typedef decltype (declval$<$const \+\_\+\+Tp$>$().cend())} + + + +Definition at line 325 of file out\+\_\+dev.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1out__dev__details_a7d24815b4a395378766a4e9f0535c926}\label{namespaceutl_1_1out__dev__details_a7d24815b4a395378766a4e9f0535c926}} +\index{utl\+::out\+\_\+dev\+\_\+details@{utl\+::out\+\_\+dev\+\_\+details}!try\+\_\+end\+\_\+t@{try\+\_\+end\+\_\+t}} +\index{try\+\_\+end\+\_\+t@{try\+\_\+end\+\_\+t}!utl\+::out\+\_\+dev\+\_\+details@{utl\+::out\+\_\+dev\+\_\+details}} +\subsubsection{\texorpdfstring{try\+\_\+end\+\_\+t}{try\_end\_t}} +{\footnotesize\ttfamily template$<$class \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1out__dev__details_a7d24815b4a395378766a4e9f0535c926}{utl\+::out\+\_\+dev\+\_\+details\+::try\+\_\+end\+\_\+t}} = typedef decltype (declval$<$\+\_\+\+Tp$>$().begin())} + + + +Definition at line 323 of file out\+\_\+dev.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1out__dev__details_adb92d30f8cf134da9586ef9d52801325}\label{namespaceutl_1_1out__dev__details_adb92d30f8cf134da9586ef9d52801325}} +\index{utl\+::out\+\_\+dev\+\_\+details@{utl\+::out\+\_\+dev\+\_\+details}!try\+\_\+put1\+\_\+t@{try\+\_\+put1\+\_\+t}} +\index{try\+\_\+put1\+\_\+t@{try\+\_\+put1\+\_\+t}!utl\+::out\+\_\+dev\+\_\+details@{utl\+::out\+\_\+dev\+\_\+details}} +\subsubsection{\texorpdfstring{try\+\_\+put1\+\_\+t}{try\_put1\_t}} +{\footnotesize\ttfamily template$<$class \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1out__dev__details_adb92d30f8cf134da9586ef9d52801325}{utl\+::out\+\_\+dev\+\_\+details\+::try\+\_\+put1\+\_\+t}} = typedef decltype (declval$<$\+\_\+\+Tp$>$().put (declval$<$const typename \+\_\+\+Tp\+::data\+\_\+type\&$>$()))} + + + +Definition at line 314 of file out\+\_\+dev.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1out__dev__details_a314537b65eaf15b6bba5a6f5544f3ace}\label{namespaceutl_1_1out__dev__details_a314537b65eaf15b6bba5a6f5544f3ace}} +\index{utl\+::out\+\_\+dev\+\_\+details@{utl\+::out\+\_\+dev\+\_\+details}!try\+\_\+put2\+\_\+t@{try\+\_\+put2\+\_\+t}} +\index{try\+\_\+put2\+\_\+t@{try\+\_\+put2\+\_\+t}!utl\+::out\+\_\+dev\+\_\+details@{utl\+::out\+\_\+dev\+\_\+details}} +\subsubsection{\texorpdfstring{try\+\_\+put2\+\_\+t}{try\_put2\_t}} +{\footnotesize\ttfamily template$<$class \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1out__dev__details_a314537b65eaf15b6bba5a6f5544f3ace}{utl\+::out\+\_\+dev\+\_\+details\+::try\+\_\+put2\+\_\+t}} = typedef decltype (declval$<$\+\_\+\+Tp$>$().put (declval$<$const typename \+\_\+\+Tp\+::data\+\_\+type$\ast$$>$(), declval$<$\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}}$>$()))} + + + +Definition at line 316 of file out\+\_\+dev.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1out__dev__details_a83dcd42cb9186967654eb365ab0ce712}\label{namespaceutl_1_1out__dev__details_a83dcd42cb9186967654eb365ab0ce712}} +\index{utl\+::out\+\_\+dev\+\_\+details@{utl\+::out\+\_\+dev\+\_\+details}!tryc\+\_\+begin\+\_\+t@{tryc\+\_\+begin\+\_\+t}} +\index{tryc\+\_\+begin\+\_\+t@{tryc\+\_\+begin\+\_\+t}!utl\+::out\+\_\+dev\+\_\+details@{utl\+::out\+\_\+dev\+\_\+details}} +\subsubsection{\texorpdfstring{tryc\+\_\+begin\+\_\+t}{tryc\_begin\_t}} +{\footnotesize\ttfamily template$<$class \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1out__dev__details_a83dcd42cb9186967654eb365ab0ce712}{utl\+::out\+\_\+dev\+\_\+details\+::tryc\+\_\+begin\+\_\+t}} = typedef decltype (declval$<$const \+\_\+\+Tp$>$().begin())} + + + +Definition at line 321 of file out\+\_\+dev.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1out__dev__details_ad76fb97793ff8c8f31b042d70114ded2}\label{namespaceutl_1_1out__dev__details_ad76fb97793ff8c8f31b042d70114ded2}} +\index{utl\+::out\+\_\+dev\+\_\+details@{utl\+::out\+\_\+dev\+\_\+details}!tryc\+\_\+end\+\_\+t@{tryc\+\_\+end\+\_\+t}} +\index{tryc\+\_\+end\+\_\+t@{tryc\+\_\+end\+\_\+t}!utl\+::out\+\_\+dev\+\_\+details@{utl\+::out\+\_\+dev\+\_\+details}} +\subsubsection{\texorpdfstring{tryc\+\_\+end\+\_\+t}{tryc\_end\_t}} +{\footnotesize\ttfamily template$<$class \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1out__dev__details_ad76fb97793ff8c8f31b042d70114ded2}{utl\+::out\+\_\+dev\+\_\+details\+::tryc\+\_\+end\+\_\+t}} = typedef decltype (declval$<$const \+\_\+\+Tp$>$().begin())} + + + +Definition at line 324 of file out\+\_\+dev.\+h. + diff --git a/doc/latex/namespaceutl_1_1outdev__it__details.tex b/doc/latex/namespaceutl_1_1outdev__it__details.tex new file mode 100644 index 0000000..c20959d --- /dev/null +++ b/doc/latex/namespaceutl_1_1outdev__it__details.tex @@ -0,0 +1,13 @@ +\hypertarget{namespaceutl_1_1outdev__it__details}{}\section{utl\+:\+:outdev\+\_\+it\+\_\+details Namespace Reference} +\label{namespaceutl_1_1outdev__it__details}\index{utl\+::outdev\+\_\+it\+\_\+details@{utl\+::outdev\+\_\+it\+\_\+details}} +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structutl_1_1outdev__it__details_1_1is__outdev__it__}{is\+\_\+outdev\+\_\+it\+\_\+}} +\begin{DoxyCompactList}\small\item\em Primary template to catch any non S\+PI interface types. \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1outdev__it__details_1_1is__outdev__it___3_01___tp_00_01meta_1_1void__t_3_01typename8786ebbbd0dc9ca1b14571e779d99d60}{is\+\_\+outdev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, meta\+::void\+\_\+t$<$ typename \+\_\+\+Tp\+::value\+\_\+type, typename \+\_\+\+Tp\+::difference\+\_\+type, typename \+\_\+\+Tp\+::pointer, typename \+\_\+\+Tp\+::reference, void $>$ $>$}} +\begin{DoxyCompactList}\small\item\em template to catch a proper S\+PI interface type \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Output device iterator concept \ No newline at end of file diff --git a/doc/latex/namespaceutl_1_1spi.tex b/doc/latex/namespaceutl_1_1spi.tex new file mode 100644 index 0000000..ecb4dd7 --- /dev/null +++ b/doc/latex/namespaceutl_1_1spi.tex @@ -0,0 +1,88 @@ +\hypertarget{namespaceutl_1_1spi}{}\section{utl\+:\+:spi Namespace Reference} +\label{namespaceutl_1_1spi}\index{utl\+::spi@{utl\+::spi}} + + +Abstract base class for spi bus. + + +\subsection*{Enumerations} +\begin{DoxyCompactItemize} +\item +enum \mbox{\hyperlink{namespaceutl_1_1spi_aed6b713381c193c598572ebac0b284cc}{bit\+Order}} \{ \mbox{\hyperlink{namespaceutl_1_1spi_aed6b713381c193c598572ebac0b284cca6db67adee32c3bd4ff03acf3244e1b4b}{bit\+Order\+::\+L\+S\+B\+\_\+\+First}} =0x01, +\mbox{\hyperlink{namespaceutl_1_1spi_aed6b713381c193c598572ebac0b284cca47bde70fdcc82c8363d16c7137641b79}{bit\+Order\+::\+M\+S\+B\+\_\+\+First}} =0x80 + \} +\item +enum \mbox{\hyperlink{namespaceutl_1_1spi_a89e3e1af5df0b6c37239f7e336969f8a}{cpol}} \{ \mbox{\hyperlink{namespaceutl_1_1spi_a89e3e1af5df0b6c37239f7e336969f8aa41bc94cbd8eebea13ce0491b2ac11b88}{cpol\+::\+L\+OW}} =0, +\mbox{\hyperlink{namespaceutl_1_1spi_a89e3e1af5df0b6c37239f7e336969f8aab89de3b4b81c4facfac906edf29aec8c}{cpol\+::\+H\+I\+GH}} + \} +\item +enum \mbox{\hyperlink{namespaceutl_1_1spi_aa49fe33d495226891cef0a870cba59df}{cpha}} \{ \mbox{\hyperlink{namespaceutl_1_1spi_aa49fe33d495226891cef0a870cba59dfa41bc94cbd8eebea13ce0491b2ac11b88}{cpha\+::\+L\+OW}} =0, +\mbox{\hyperlink{namespaceutl_1_1spi_aa49fe33d495226891cef0a870cba59dfab89de3b4b81c4facfac906edf29aec8c}{cpha\+::\+H\+I\+GH}} + \} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Abstract base class for spi bus. + +\subsection{Enumeration Type Documentation} +\mbox{\Hypertarget{namespaceutl_1_1spi_aed6b713381c193c598572ebac0b284cc}\label{namespaceutl_1_1spi_aed6b713381c193c598572ebac0b284cc}} +\index{utl\+::spi@{utl\+::spi}!bit\+Order@{bit\+Order}} +\index{bit\+Order@{bit\+Order}!utl\+::spi@{utl\+::spi}} +\subsubsection{\texorpdfstring{bit\+Order}{bitOrder}} +{\footnotesize\ttfamily enum \mbox{\hyperlink{namespaceutl_1_1spi_aed6b713381c193c598572ebac0b284cc}{utl\+::spi\+::bit\+Order}}\hspace{0.3cm}{\ttfamily [strong]}} + +S\+PI implementation bit order \begin{DoxyEnumFields}{Enumerator} +\raisebox{\heightof{T}}[0pt][0pt]{\index{L\+S\+B\+\_\+\+First@{L\+S\+B\+\_\+\+First}!utl\+::spi@{utl\+::spi}}\index{utl\+::spi@{utl\+::spi}!L\+S\+B\+\_\+\+First@{L\+S\+B\+\_\+\+First}}}\mbox{\Hypertarget{namespaceutl_1_1spi_aed6b713381c193c598572ebac0b284cca6db67adee32c3bd4ff03acf3244e1b4b}\label{namespaceutl_1_1spi_aed6b713381c193c598572ebac0b284cca6db67adee32c3bd4ff03acf3244e1b4b}} +L\+S\+B\+\_\+\+First&Most significant first. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{M\+S\+B\+\_\+\+First@{M\+S\+B\+\_\+\+First}!utl\+::spi@{utl\+::spi}}\index{utl\+::spi@{utl\+::spi}!M\+S\+B\+\_\+\+First@{M\+S\+B\+\_\+\+First}}}\mbox{\Hypertarget{namespaceutl_1_1spi_aed6b713381c193c598572ebac0b284cca47bde70fdcc82c8363d16c7137641b79}\label{namespaceutl_1_1spi_aed6b713381c193c598572ebac0b284cca47bde70fdcc82c8363d16c7137641b79}} +M\+S\+B\+\_\+\+First&Less significant first. \\ +\hline + +\end{DoxyEnumFields} + + +Definition at line 40 of file spi.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1spi_aa49fe33d495226891cef0a870cba59df}\label{namespaceutl_1_1spi_aa49fe33d495226891cef0a870cba59df}} +\index{utl\+::spi@{utl\+::spi}!cpha@{cpha}} +\index{cpha@{cpha}!utl\+::spi@{utl\+::spi}} +\subsubsection{\texorpdfstring{cpha}{cpha}} +{\footnotesize\ttfamily enum \mbox{\hyperlink{namespaceutl_1_1spi_aa49fe33d495226891cef0a870cba59df}{utl\+::spi\+::cpha}}\hspace{0.3cm}{\ttfamily [strong]}} + +S\+PI implementation Clock Phase \begin{DoxyEnumFields}{Enumerator} +\raisebox{\heightof{T}}[0pt][0pt]{\index{L\+OW@{L\+OW}!utl\+::spi@{utl\+::spi}}\index{utl\+::spi@{utl\+::spi}!L\+OW@{L\+OW}}}\mbox{\Hypertarget{namespaceutl_1_1spi_aa49fe33d495226891cef0a870cba59dfa41bc94cbd8eebea13ce0491b2ac11b88}\label{namespaceutl_1_1spi_aa49fe33d495226891cef0a870cba59dfa41bc94cbd8eebea13ce0491b2ac11b88}} +L\+OW&L\+OW. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{H\+I\+GH@{H\+I\+GH}!utl\+::spi@{utl\+::spi}}\index{utl\+::spi@{utl\+::spi}!H\+I\+GH@{H\+I\+GH}}}\mbox{\Hypertarget{namespaceutl_1_1spi_aa49fe33d495226891cef0a870cba59dfab89de3b4b81c4facfac906edf29aec8c}\label{namespaceutl_1_1spi_aa49fe33d495226891cef0a870cba59dfab89de3b4b81c4facfac906edf29aec8c}} +H\+I\+GH&H\+I\+GH. \\ +\hline + +\end{DoxyEnumFields} + + +Definition at line 54 of file spi.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1spi_a89e3e1af5df0b6c37239f7e336969f8a}\label{namespaceutl_1_1spi_a89e3e1af5df0b6c37239f7e336969f8a}} +\index{utl\+::spi@{utl\+::spi}!cpol@{cpol}} +\index{cpol@{cpol}!utl\+::spi@{utl\+::spi}} +\subsubsection{\texorpdfstring{cpol}{cpol}} +{\footnotesize\ttfamily enum \mbox{\hyperlink{namespaceutl_1_1spi_a89e3e1af5df0b6c37239f7e336969f8a}{utl\+::spi\+::cpol}}\hspace{0.3cm}{\ttfamily [strong]}} + +S\+PI implementation Clock Polarity \begin{DoxyEnumFields}{Enumerator} +\raisebox{\heightof{T}}[0pt][0pt]{\index{L\+OW@{L\+OW}!utl\+::spi@{utl\+::spi}}\index{utl\+::spi@{utl\+::spi}!L\+OW@{L\+OW}}}\mbox{\Hypertarget{namespaceutl_1_1spi_a89e3e1af5df0b6c37239f7e336969f8aa41bc94cbd8eebea13ce0491b2ac11b88}\label{namespaceutl_1_1spi_a89e3e1af5df0b6c37239f7e336969f8aa41bc94cbd8eebea13ce0491b2ac11b88}} +L\+OW&L\+OW. \\ +\hline + +\raisebox{\heightof{T}}[0pt][0pt]{\index{H\+I\+GH@{H\+I\+GH}!utl\+::spi@{utl\+::spi}}\index{utl\+::spi@{utl\+::spi}!H\+I\+GH@{H\+I\+GH}}}\mbox{\Hypertarget{namespaceutl_1_1spi_a89e3e1af5df0b6c37239f7e336969f8aab89de3b4b81c4facfac906edf29aec8c}\label{namespaceutl_1_1spi_a89e3e1af5df0b6c37239f7e336969f8aab89de3b4b81c4facfac906edf29aec8c}} +H\+I\+GH&H\+I\+GH. \\ +\hline + +\end{DoxyEnumFields} + + +Definition at line 47 of file spi.\+h. + diff --git a/doc/latex/namespaceutl_1_1spi__i__details.tex b/doc/latex/namespaceutl_1_1spi__i__details.tex new file mode 100644 index 0000000..675f618 --- /dev/null +++ b/doc/latex/namespaceutl_1_1spi__i__details.tex @@ -0,0 +1,70 @@ +\hypertarget{namespaceutl_1_1spi__i__details}{}\section{utl\+:\+:spi\+\_\+i\+\_\+details Namespace Reference} +\label{namespaceutl_1_1spi__i__details}\index{utl\+::spi\+\_\+i\+\_\+details@{utl\+::spi\+\_\+i\+\_\+details}} +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structutl_1_1spi__i__details_1_1is__spi__}{is\+\_\+spi\+\_\+}} +\begin{DoxyCompactList}\small\item\em Primary template to catch any non S\+PI interface types. \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1spi__i__details_1_1is__spi___3_01___tp_00_01meta_1_1void__t_3_01meta_1_1use__if__sa2db29f6d65d34ecf5e49ec30b6600d78}{is\+\_\+spi\+\_\+$<$ \+\_\+\+Tp, meta\+::void\+\_\+t$<$ meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cclock\+\_\+t$<$ \+\_\+\+Tp $>$, uint32\+\_\+t $>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+clock\+\_\+t$<$ \+\_\+\+Tp $>$, void $>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+tx\+\_\+t$<$ \+\_\+\+Tp $>$, byte\+\_\+t $>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+rx\+\_\+t$<$ \+\_\+\+Tp $>$, byte\+\_\+t $>$ $>$ $>$}} +\begin{DoxyCompactList}\small\item\em template to catch a proper S\+PI interface type \end{DoxyCompactList}\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1spi__i__details_ae1a4fad6acf8faccc5e85ee9b710c109}{try\+\_\+cclock\+\_\+t}} = decltype(declval$<$ const \+\_\+\+Tp $>$().clock()) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1spi__i__details_af2f4800aa77af82767a3ac55b9b242a6}{try\+\_\+clock\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().clock(declval$<$ uint32\+\_\+t $>$())) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1spi__i__details_a755d8f10cfde3f5c3b9900eb11c858bd}{try\+\_\+tx\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().tx\+\_\+data(declval$<$ \mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}} $>$())) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1spi__i__details_a4dcf3c71fddf790e45a3be2c19906c97}{try\+\_\+rx\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().rx\+\_\+data()) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +i2c interface concept + +\subsection{Typedef Documentation} +\mbox{\Hypertarget{namespaceutl_1_1spi__i__details_ae1a4fad6acf8faccc5e85ee9b710c109}\label{namespaceutl_1_1spi__i__details_ae1a4fad6acf8faccc5e85ee9b710c109}} +\index{utl\+::spi\+\_\+i\+\_\+details@{utl\+::spi\+\_\+i\+\_\+details}!try\+\_\+cclock\+\_\+t@{try\+\_\+cclock\+\_\+t}} +\index{try\+\_\+cclock\+\_\+t@{try\+\_\+cclock\+\_\+t}!utl\+::spi\+\_\+i\+\_\+details@{utl\+::spi\+\_\+i\+\_\+details}} +\subsubsection{\texorpdfstring{try\+\_\+cclock\+\_\+t}{try\_cclock\_t}} +{\footnotesize\ttfamily template$<$class \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1spi__i__details_ae1a4fad6acf8faccc5e85ee9b710c109}{utl\+::spi\+\_\+i\+\_\+details\+::try\+\_\+cclock\+\_\+t}} = typedef decltype (declval$<$const \+\_\+\+Tp$>$().clock())} + + + +Definition at line 298 of file spi.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1spi__i__details_af2f4800aa77af82767a3ac55b9b242a6}\label{namespaceutl_1_1spi__i__details_af2f4800aa77af82767a3ac55b9b242a6}} +\index{utl\+::spi\+\_\+i\+\_\+details@{utl\+::spi\+\_\+i\+\_\+details}!try\+\_\+clock\+\_\+t@{try\+\_\+clock\+\_\+t}} +\index{try\+\_\+clock\+\_\+t@{try\+\_\+clock\+\_\+t}!utl\+::spi\+\_\+i\+\_\+details@{utl\+::spi\+\_\+i\+\_\+details}} +\subsubsection{\texorpdfstring{try\+\_\+clock\+\_\+t}{try\_clock\_t}} +{\footnotesize\ttfamily template$<$class \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1spi__i__details_af2f4800aa77af82767a3ac55b9b242a6}{utl\+::spi\+\_\+i\+\_\+details\+::try\+\_\+clock\+\_\+t}} = typedef decltype (declval$<$\+\_\+\+Tp$>$().clock(declval$<$uint32\+\_\+t$>$()))} + + + +Definition at line 299 of file spi.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1spi__i__details_a4dcf3c71fddf790e45a3be2c19906c97}\label{namespaceutl_1_1spi__i__details_a4dcf3c71fddf790e45a3be2c19906c97}} +\index{utl\+::spi\+\_\+i\+\_\+details@{utl\+::spi\+\_\+i\+\_\+details}!try\+\_\+rx\+\_\+t@{try\+\_\+rx\+\_\+t}} +\index{try\+\_\+rx\+\_\+t@{try\+\_\+rx\+\_\+t}!utl\+::spi\+\_\+i\+\_\+details@{utl\+::spi\+\_\+i\+\_\+details}} +\subsubsection{\texorpdfstring{try\+\_\+rx\+\_\+t}{try\_rx\_t}} +{\footnotesize\ttfamily template$<$class \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1spi__i__details_a4dcf3c71fddf790e45a3be2c19906c97}{utl\+::spi\+\_\+i\+\_\+details\+::try\+\_\+rx\+\_\+t}} = typedef decltype (declval$<$\+\_\+\+Tp$>$().rx\+\_\+data())} + + + +Definition at line 301 of file spi.\+h. + +\mbox{\Hypertarget{namespaceutl_1_1spi__i__details_a755d8f10cfde3f5c3b9900eb11c858bd}\label{namespaceutl_1_1spi__i__details_a755d8f10cfde3f5c3b9900eb11c858bd}} +\index{utl\+::spi\+\_\+i\+\_\+details@{utl\+::spi\+\_\+i\+\_\+details}!try\+\_\+tx\+\_\+t@{try\+\_\+tx\+\_\+t}} +\index{try\+\_\+tx\+\_\+t@{try\+\_\+tx\+\_\+t}!utl\+::spi\+\_\+i\+\_\+details@{utl\+::spi\+\_\+i\+\_\+details}} +\subsubsection{\texorpdfstring{try\+\_\+tx\+\_\+t}{try\_tx\_t}} +{\footnotesize\ttfamily template$<$class \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{namespaceutl_1_1spi__i__details_a755d8f10cfde3f5c3b9900eb11c858bd}{utl\+::spi\+\_\+i\+\_\+details\+::try\+\_\+tx\+\_\+t}} = typedef decltype (declval$<$\+\_\+\+Tp$>$().tx\+\_\+data(declval$<$\mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{byte\+\_\+t}}$>$()))} + + + +Definition at line 300 of file spi.\+h. + diff --git a/doc/latex/operations_8h.tex b/doc/latex/operations_8h.tex new file mode 100644 index 0000000..f34463a --- /dev/null +++ b/doc/latex/operations_8h.tex @@ -0,0 +1,134 @@ +\hypertarget{operations_8h}{}\section{include/utl/meta/operations.h File Reference} +\label{operations_8h}\index{include/utl/meta/operations.\+h@{include/utl/meta/operations.\+h}} + + +Integral constant operations and logical operations. + + +{\ttfamily \#include $<$utl/core/impl.\+h$>$}\newline +{\ttfamily \#include $<$utl/meta/selection.\+h$>$}\newline +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1__or__}{utl\+::meta\+::detail\+::\+\_\+or\+\_\+$<$... $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1__or___3_4}{utl\+::meta\+::detail\+::\+\_\+or\+\_\+$<$$>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1__or___3_01___t1_01_4}{utl\+::meta\+::detail\+::\+\_\+or\+\_\+$<$ \+\_\+\+T1 $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_01_4}{utl\+::meta\+::detail\+::\+\_\+or\+\_\+$<$ \+\_\+\+T1, \+\_\+\+T2 $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4}{utl\+::meta\+::detail\+::\+\_\+or\+\_\+$<$ \+\_\+\+T1, \+\_\+\+T2, \+\_\+\+T3, \+\_\+\+Tn... $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1__and__}{utl\+::meta\+::detail\+::\+\_\+and\+\_\+$<$... $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1__and___3_4}{utl\+::meta\+::detail\+::\+\_\+and\+\_\+$<$$>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1__and___3_01___t1_01_4}{utl\+::meta\+::detail\+::\+\_\+and\+\_\+$<$ \+\_\+\+T1 $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_01_4}{utl\+::meta\+::detail\+::\+\_\+and\+\_\+$<$ \+\_\+\+T1, \+\_\+\+T2 $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4}{utl\+::meta\+::detail\+::\+\_\+and\+\_\+$<$ \+\_\+\+T1, \+\_\+\+T2, \+\_\+\+T3, \+\_\+\+Tn... $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1same__}{utl\+::meta\+::same\+\_\+$<$ \+\_\+\+T1, \+\_\+\+T2 $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1same___3_01___tp_00_01___tp_01_4}{utl\+::meta\+::same\+\_\+$<$ \+\_\+\+Tp, \+\_\+\+Tp $>$}} +\end{DoxyCompactItemize} +\subsection*{Namespaces} +\begin{DoxyCompactItemize} +\item + \mbox{\hyperlink{namespaceutl}{utl}} +\begin{DoxyCompactList}\small\item\em S\+TL\textquotesingle{}s core language concepts. \end{DoxyCompactList}\item + \mbox{\hyperlink{namespaceutl_1_1meta}{utl\+::meta}} +\item + \mbox{\hyperlink{namespaceutl_1_1meta_1_1detail}{utl\+::meta\+::detail}} +\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$bool B$>$ }\\using \mbox{\hyperlink{group__integral_ga7de987520bd0973f03ff8bab3152361a}{utl\+::meta\+::not\+\_\+c}} = bool\+\_\+$<$!B $>$ +\begin{DoxyCompactList}\small\item\em Negate the {\itshape bool} constant parameter. \end{DoxyCompactList}\item +{\footnotesize template$<$typename \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{group__integral_ga16df145331d3c62e624385c5949d90c4}{utl\+::meta\+::not\+\_\+}} = not\+\_\+c$<$ \+\_\+\+Tp\+::type\+::value $>$ +\begin{DoxyCompactList}\small\item\em not \end{DoxyCompactList}\end{DoxyCompactItemize} +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename... \+\_\+\+Ts$>$ }\\using \mbox{\hyperlink{group__integral_gac43f400cc93d54f5f79892e618069d9b}{utl\+::meta\+::or\+\_\+}} = eval$<$ detail\+::\+\_\+or\+\_\+$<$ \+\_\+\+Ts... $>$ $>$ +\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename... \+\_\+\+Ts$>$ }\\using \mbox{\hyperlink{group__integral_ga8e82f4758321e0e0b3705607f7d8e068}{utl\+::meta\+::and\+\_\+}} = eval$<$ detail\+::\+\_\+and\+\_\+$<$ \+\_\+\+Ts... $>$ $>$ +\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename \+\_\+\+T1 , typename \+\_\+\+T2 $>$ }\\using \mbox{\hyperlink{group__integral_ga4dfaf054d891eb35d741662b077bbbd2}{utl\+::meta\+::not\+\_\+same\+\_\+}} = not\+\_\+$<$ eval$<$ same\+\_\+$<$ \+\_\+\+T1, \+\_\+\+T2 $>$ $>$$>$ +\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_aec4bf9329ff8356d333a59e3c369d0b7}{utl\+::meta\+::negate}} = integral\+\_\+$<$ decltype(-\/\+\_\+\+Tp()), -\/\+\_\+\+Tp()$>$ +\begin{DoxyCompactList}\small\item\em Negation. \end{DoxyCompactList}\item +{\footnotesize template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a559ad95ef39fd2c81664bd1a22dd99c1}{utl\+::meta\+::add}} = integral\+\_\+$<$ decltype(\+\_\+\+Tp1()+\+\_\+\+Tp2()), \+\_\+\+Tp1()+\+\_\+\+Tp2() $>$ +\begin{DoxyCompactList}\small\item\em Addition. \end{DoxyCompactList}\item +{\footnotesize template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a5f0a890cbd116d4a72a760a26f5a8244}{utl\+::meta\+::mult}} = integral\+\_\+$<$ decltype(\+\_\+\+Tp2() $\ast$\+\_\+\+Tp2()), \+\_\+\+Tp1() $\ast$\+\_\+\+Tp2() $>$ +\begin{DoxyCompactList}\small\item\em Multiplication. \end{DoxyCompactList}\item +{\footnotesize template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ae1ec6fc1f76abbb2e5287aa91cd85068}{utl\+::meta\+::divide}} = integral\+\_\+$<$ decltype(\+\_\+\+Tp2()/\+\_\+\+Tp2()), \+\_\+\+Tp1()/\+\_\+\+Tp2() $>$ +\begin{DoxyCompactList}\small\item\em Division. \end{DoxyCompactList}\item +{\footnotesize template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_adf7106374b1acc978be05b5848002cfc}{utl\+::meta\+::modulo}} = integral\+\_\+$<$ decltype(\+\_\+\+Tp1() \% \+\_\+\+Tp2()), \+\_\+\+Tp1() \% \+\_\+\+Tp2() $>$ +\begin{DoxyCompactList}\small\item\em Modulo. \end{DoxyCompactList}\item +{\footnotesize template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a9f90eea3852367afa4e1fe74756976fb}{utl\+::meta\+::sub}} = add$<$ \+\_\+\+Tp1, negate$<$ \+\_\+\+Tp2 $>$ $>$ +\begin{DoxyCompactList}\small\item\em Substruction. \end{DoxyCompactList}\item +{\footnotesize template$<$typename \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_af74f5af58b33241f1b94102742a73ab1}{utl\+::meta\+::inc}} = add$<$ \+\_\+\+Tp, int\+\_\+$<$ 1 $>$ $>$ +\begin{DoxyCompactList}\small\item\em Increase. \end{DoxyCompactList}\item +{\footnotesize template$<$typename \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_abee96e75aadb364fdd0890aa3ee490b7}{utl\+::meta\+::dec}} = add$<$ \+\_\+\+Tp, int\+\_\+$<$-\/1 $>$ $>$ +\begin{DoxyCompactList}\small\item\em decrease \end{DoxyCompactList}\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a7ae2d08147055946f1b9345e579a26b6}{utl\+::meta\+::comp\+\_\+eq}} = bool\+\_\+$<$ \+\_\+\+Tp1()==\+\_\+\+Tp2()$>$ +\item +{\footnotesize template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a1a948746d1758a05c0ae71cfd114b05d}{utl\+::meta\+::comp\+\_\+lt}} = bool\+\_\+$<$(\+\_\+\+Tp1()$<$ \+\_\+\+Tp2())$>$ +\item +{\footnotesize template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_af92bee16de47b16ba01a8efac686b488}{utl\+::meta\+::comp\+\_\+ne}} = not\+\_\+$<$ comp\+\_\+eq$<$ \+\_\+\+Tp1, \+\_\+\+Tp2 $>$ $>$ +\begin{DoxyCompactList}\small\item\em Not equal. \end{DoxyCompactList}\item +{\footnotesize template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a3c4784ad3eb1f745c58b9a4b65a406e8}{utl\+::meta\+::comp\+\_\+gt}} = comp\+\_\+lt$<$ \+\_\+\+Tp2, \+\_\+\+Tp1 $>$ +\begin{DoxyCompactList}\small\item\em Greater than. \end{DoxyCompactList}\item +{\footnotesize template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_afb9a35dc5ef40b5bf9902c0daec7f1af}{utl\+::meta\+::comp\+\_\+le}} = not\+\_\+$<$ comp\+\_\+lt$<$ \+\_\+\+Tp2, \+\_\+\+Tp1 $>$ $>$ +\begin{DoxyCompactList}\small\item\em Less or equal. \end{DoxyCompactList}\item +{\footnotesize template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ae6c552e8e99ac5578f865f17c1d0efdc}{utl\+::meta\+::comp\+\_\+ge}} = not\+\_\+$<$ comp\+\_\+lt$<$ \+\_\+\+Tp1, \+\_\+\+Tp2 $>$ $>$ +\begin{DoxyCompactList}\small\item\em Greater or equal. \end{DoxyCompactList}\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename \+\_\+T $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a9ea199752ca985d1b813d7127868566c}{utl\+::meta\+::bitnot\+\_\+}} = integral\+\_\+$<$ typename \+\_\+\+T\+::value\+\_\+type,(typename \+\_\+\+T\+::value\+\_\+type)($\sim$\+\_\+T())$>$ +\item +{\footnotesize template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_aca6b42898b47945118c518bde9d25cc2}{utl\+::meta\+::bitand\+\_\+}} = integral\+\_\+$<$ decltype(\+\_\+\+Tp1() \&\+\_\+\+Tp2()), \+\_\+\+Tp1() \&\+\_\+\+Tp2()$>$ +\item +{\footnotesize template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a1e2c2decdd22972fc8ce43203c0ef0d1}{utl\+::meta\+::bitor\+\_\+}} = integral\+\_\+$<$ decltype(\+\_\+\+Tp1()$\vert$\+\_\+\+Tp2()), \+\_\+\+Tp1()$\vert$\+\_\+\+Tp2()$>$ +\item +{\footnotesize template$<$typename \+\_\+\+Tp1 , typename \+\_\+\+Tp2 $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a910e21345bc7e75dc7c0ceb4a4721754}{utl\+::meta\+::bitxor\+\_\+}} = integral\+\_\+$<$ decltype(\+\_\+\+Tp1() $^\wedge$ \+\_\+\+Tp2()), \+\_\+\+Tp1() $^\wedge$ \+\_\+\+Tp2()$>$ +\item +{\footnotesize template$<$typename \+\_\+\+Tp , typename shift $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a63088c29ac25eefda4189721e662b391}{utl\+::meta\+::shift\+\_\+left}} = integral\+\_\+$<$ typename \+\_\+\+Tp\+::value\+\_\+type,(typename \+\_\+\+Tp\+::value\+\_\+type)(\+\_\+\+Tp()$<$$<$ shift())$>$ +\item +{\footnotesize template$<$typename \+\_\+\+Tp , typename shift $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_acbe6dd78c4a4230e92acc5ca86e3fcc7}{utl\+::meta\+::shift\+\_\+right}} = integral\+\_\+$<$ typename \+\_\+\+Tp\+::value\+\_\+type,(typename \+\_\+\+Tp\+::value\+\_\+type)(\+\_\+\+Tp() $>$ $>$ shift())$>$ +\end{DoxyCompactItemize} + + + +\subsection{Detailed Description} +Integral constant operations and logical operations. + +Copyright (C) 2018-\/2019 Christos Choutouridis + +This program is free software\+: you can redistribute it and/or modify it under the terms of the G\+NU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but W\+I\+T\+H\+O\+UT A\+NY W\+A\+R\+R\+A\+N\+TY; without even the implied warranty of M\+E\+R\+C\+H\+A\+N\+T\+A\+B\+I\+L\+I\+TY or F\+I\+T\+N\+E\+SS F\+OR A P\+A\+R\+T\+I\+C\+U\+L\+AR P\+U\+R\+P\+O\+SE. See the G\+NU Lesser General Public License for more details. + +You should have received a copy of the G\+NU Lesser General Public License along with this program. If not, see \href{http://www.gnu.org/licenses/}{\tt http\+://www.\+gnu.\+org/licenses/}. \ No newline at end of file diff --git a/doc/latex/ostream__dev_8h.tex b/doc/latex/ostream__dev_8h.tex new file mode 100644 index 0000000..03765f2 --- /dev/null +++ b/doc/latex/ostream__dev_8h.tex @@ -0,0 +1,35 @@ +\hypertarget{ostream__dev_8h}{}\section{include/utl/dev/ostream\+\_\+dev.h File Reference} +\label{ostream__dev_8h}\index{include/utl/dev/ostream\+\_\+dev.\+h@{include/utl/dev/ostream\+\_\+dev.\+h}} + + +Abstract base class interface for output devices of utl. + + +{\ttfamily \#include $<$utl/core/impl.\+h$>$}\newline +{\ttfamily \#include $<$utl/core/crtp.\+h$>$}\newline +{\ttfamily \#include $<$utl/dev/dev\+\_\+iterators.\+h$>$}\newline +{\ttfamily \#include $<$utl/meta/meta.\+h$>$}\newline +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +class \mbox{\hyperlink{classutl_1_1ostream__dev}{utl\+::ostream\+\_\+dev$<$ impl\+\_\+t, data\+\_\+t $>$}} +\begin{DoxyCompactList}\small\item\em Abstract base classes for output stream devices. \end{DoxyCompactList}\item +class \mbox{\hyperlink{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4}{utl\+::ostream\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t $>$}} +\end{DoxyCompactItemize} +\subsection*{Namespaces} +\begin{DoxyCompactItemize} +\item + \mbox{\hyperlink{namespaceutl}{utl}} +\begin{DoxyCompactList}\small\item\em S\+TL\textquotesingle{}s core language concepts. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Abstract base class interface for output devices of utl. + +Copyright (C) 2018 Christos Choutouridis + +This program is free software\+: you can redistribute it and/or modify it under the terms of the G\+NU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but W\+I\+T\+H\+O\+UT A\+NY W\+A\+R\+R\+A\+N\+TY; without even the implied warranty of M\+E\+R\+C\+H\+A\+N\+T\+A\+B\+I\+L\+I\+TY or F\+I\+T\+N\+E\+SS F\+OR A P\+A\+R\+T\+I\+C\+U\+L\+AR P\+U\+R\+P\+O\+SE. See the G\+NU Lesser General Public License for more details. + +You should have received a copy of the G\+NU Lesser General Public License along with this program. If not, see \href{http://www.gnu.org/licenses/}{\tt http\+://www.\+gnu.\+org/licenses/}. \ No newline at end of file diff --git a/doc/latex/out__dev_8h.tex b/doc/latex/out__dev_8h.tex new file mode 100644 index 0000000..ff3e596 --- /dev/null +++ b/doc/latex/out__dev_8h.tex @@ -0,0 +1,67 @@ +\hypertarget{out__dev_8h}{}\section{include/utl/dev/out\+\_\+dev.h File Reference} +\label{out__dev_8h}\index{include/utl/dev/out\+\_\+dev.\+h@{include/utl/dev/out\+\_\+dev.\+h}} + + +Abstract base class interface for output devices of utl. + + +{\ttfamily \#include $<$utl/core/impl.\+h$>$}\newline +{\ttfamily \#include $<$utl/core/crtp.\+h$>$}\newline +{\ttfamily \#include $<$utl/dev/dev\+\_\+iterators.\+h$>$}\newline +{\ttfamily \#include $<$utl/meta/meta.\+h$>$}\newline +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +class \mbox{\hyperlink{classutl_1_1out__dev}{utl\+::out\+\_\+dev$<$ impl\+\_\+t, data\+\_\+t, streamsize $>$}} +\begin{DoxyCompactList}\small\item\em Abstract base classes for output devices. \end{DoxyCompactList}\item +class \mbox{\hyperlink{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4}{utl\+::out\+\_\+dev$<$ virtual\+\_\+tag, data\+\_\+t, streamsize $>$}} +\begin{DoxyCompactList}\small\item\em A virtual base class specialization. \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1out__dev__details_1_1is__out__dev__}{utl\+::out\+\_\+dev\+\_\+details\+::is\+\_\+out\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, typename $>$}} +\begin{DoxyCompactList}\small\item\em Primary template to catch any non output device types. \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1out__dev__details_1_1is__out__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1fbf8d2409fc6de9dd6b9649bedc1b379}{utl\+::out\+\_\+dev\+\_\+details\+::is\+\_\+out\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, void\+\_\+t$<$ typename \+\_\+\+Tp\+::data\+\_\+type, typename \+\_\+\+Tp\+::pointer\+\_\+type, typename \+\_\+\+Tp\+::iterator, typename \+\_\+\+Tp\+::const\+\_\+iterator, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+put1\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+put2\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cbegin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cend\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$ $>$ $>$}} +\begin{DoxyCompactList}\small\item\em template to catch a proper output device type \end{DoxyCompactList}\end{DoxyCompactItemize} +\subsection*{Namespaces} +\begin{DoxyCompactItemize} +\item + \mbox{\hyperlink{namespaceutl}{utl}} +\begin{DoxyCompactList}\small\item\em S\+TL\textquotesingle{}s core language concepts. \end{DoxyCompactList}\item + \mbox{\hyperlink{namespaceutl_1_1out__dev__details}{utl\+::out\+\_\+dev\+\_\+details}} +\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1out__dev__details_adb92d30f8cf134da9586ef9d52801325}{utl\+::out\+\_\+dev\+\_\+details\+::try\+\_\+put1\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().put(declval$<$ const typename \+\_\+\+Tp\+::data\+\_\+type \& $>$())) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1out__dev__details_a314537b65eaf15b6bba5a6f5544f3ace}{utl\+::out\+\_\+dev\+\_\+details\+::try\+\_\+put2\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().put(declval$<$ const typename \+\_\+\+Tp\+::data\+\_\+type $\ast$ $>$(), declval$<$ size\+\_\+t $>$())) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1out__dev__details_ab5980d368073d104e13d153e291dde86}{utl\+::out\+\_\+dev\+\_\+details\+::try\+\_\+begin\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().begin()) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1out__dev__details_a83dcd42cb9186967654eb365ab0ce712}{utl\+::out\+\_\+dev\+\_\+details\+::tryc\+\_\+begin\+\_\+t}} = decltype(declval$<$ const \+\_\+\+Tp $>$().begin()) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1out__dev__details_a92a49420cc024aec06546ac041e7707a}{utl\+::out\+\_\+dev\+\_\+details\+::try\+\_\+cbegin\+\_\+t}} = decltype(declval$<$ const \+\_\+\+Tp $>$().cbegin()) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1out__dev__details_a7d24815b4a395378766a4e9f0535c926}{utl\+::out\+\_\+dev\+\_\+details\+::try\+\_\+end\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().begin()) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1out__dev__details_ad76fb97793ff8c8f31b042d70114ded2}{utl\+::out\+\_\+dev\+\_\+details\+::tryc\+\_\+end\+\_\+t}} = decltype(declval$<$ const \+\_\+\+Tp $>$().begin()) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1out__dev__details_a9f69f9ca8e1bf642bf63bfdd18c8d567}{utl\+::out\+\_\+dev\+\_\+details\+::try\+\_\+cend\+\_\+t}} = decltype(declval$<$ const \+\_\+\+Tp $>$().cend()) +\end{DoxyCompactItemize} +\subsection*{Variables} +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename \+\_\+\+Tp $>$ }\\constexpr bool \mbox{\hyperlink{namespaceutl_a77f27f594c8696fcfbc85a9ec66c11f1}{utl\+::\+Out\+\_\+dev}} = out\+\_\+dev\+\_\+details\+::is\+\_\+out\+\_\+dev\+\_\+$<$\+\_\+\+Tp$>$\+::value +\end{DoxyCompactItemize} + + + +\subsection{Detailed Description} +Abstract base class interface for output devices of utl. + +Copyright (C) 2018 Christos Choutouridis + +This program is free software\+: you can redistribute it and/or modify it under the terms of the G\+NU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but W\+I\+T\+H\+O\+UT A\+NY W\+A\+R\+R\+A\+N\+TY; without even the implied warranty of M\+E\+R\+C\+H\+A\+N\+T\+A\+B\+I\+L\+I\+TY or F\+I\+T\+N\+E\+SS F\+OR A P\+A\+R\+T\+I\+C\+U\+L\+AR P\+U\+R\+P\+O\+SE. See the G\+NU Lesser General Public License for more details. + +You should have received a copy of the G\+NU Lesser General Public License along with this program. If not, see \href{http://www.gnu.org/licenses/}{\tt http\+://www.\+gnu.\+org/licenses/}. \ No newline at end of file diff --git a/doc/latex/refman.tex b/doc/latex/refman.tex new file mode 100644 index 0000000..5928730 --- /dev/null +++ b/doc/latex/refman.tex @@ -0,0 +1,673 @@ +\documentclass[twoside]{book} + +% Packages required by doxygen +\usepackage{fixltx2e} +\usepackage{calc} +\usepackage{doxygen} +\usepackage[export]{adjustbox} % also loads graphicx +\usepackage{graphicx} +\usepackage[utf8]{inputenc} +\usepackage{makeidx} +\usepackage{multicol} +\usepackage{multirow} +\PassOptionsToPackage{warn}{textcomp} +\usepackage{textcomp} +\usepackage[nointegrals]{wasysym} +\usepackage[table]{xcolor} + +% Font selection +\usepackage[T1]{fontenc} +\usepackage[scaled=.90]{helvet} +\usepackage{courier} +\usepackage{amssymb} +\usepackage{sectsty} +\renewcommand{\familydefault}{\sfdefault} +\allsectionsfont{% + \fontseries{bc}\selectfont% + \color{darkgray}% +} +\renewcommand{\DoxyLabelFont}{% + \fontseries{bc}\selectfont% + \color{darkgray}% +} +\newcommand{\+}{\discretionary{\mbox{\scriptsize$\hookleftarrow$}}{}{}} + +% Page & text layout +\usepackage{geometry} +\geometry{% + a4paper,% + top=2.5cm,% + bottom=2.5cm,% + left=2.5cm,% + right=2.5cm% +} +\tolerance=750 +\hfuzz=15pt +\hbadness=750 +\setlength{\emergencystretch}{15pt} +\setlength{\parindent}{0cm} +\setlength{\parskip}{3ex plus 2ex minus 2ex} +\makeatletter +\renewcommand{\paragraph}{% + \@startsection{paragraph}{4}{0ex}{-1.0ex}{1.0ex}{% + \normalfont\normalsize\bfseries\SS@parafont% + }% +} +\renewcommand{\subparagraph}{% + \@startsection{subparagraph}{5}{0ex}{-1.0ex}{1.0ex}{% + \normalfont\normalsize\bfseries\SS@subparafont% + }% +} +\makeatother + +% Headers & footers +\usepackage{fancyhdr} +\pagestyle{fancyplain} +\fancyhead[LE]{\fancyplain{}{\bfseries\thepage}} +\fancyhead[CE]{\fancyplain{}{}} +\fancyhead[RE]{\fancyplain{}{\bfseries\leftmark}} +\fancyhead[LO]{\fancyplain{}{\bfseries\rightmark}} +\fancyhead[CO]{\fancyplain{}{}} +\fancyhead[RO]{\fancyplain{}{\bfseries\thepage}} +\fancyfoot[LE]{\fancyplain{}{}} +\fancyfoot[CE]{\fancyplain{}{}} +\fancyfoot[RE]{\fancyplain{}{\bfseries\scriptsize Generated by Doxygen }} +\fancyfoot[LO]{\fancyplain{}{\bfseries\scriptsize Generated by Doxygen }} +\fancyfoot[CO]{\fancyplain{}{}} +\fancyfoot[RO]{\fancyplain{}{}} +\renewcommand{\footrulewidth}{0.4pt} +\renewcommand{\chaptermark}[1]{% + \markboth{#1}{}% +} +\renewcommand{\sectionmark}[1]{% + \markright{\thesection\ #1}% +} + +% Indices & bibliography +\usepackage{natbib} +\usepackage[titles]{tocloft} +\setcounter{tocdepth}{3} +\setcounter{secnumdepth}{5} +\makeindex + +% Hyperlinks (required, but should be loaded last) +\usepackage{ifpdf} +\ifpdf + \usepackage[pdftex,pagebackref=true]{hyperref} +\else + \usepackage[ps2pdf,pagebackref=true]{hyperref} +\fi +\hypersetup{% + colorlinks=true,% + linkcolor=blue,% + citecolor=blue,% + unicode% +} + +% Custom commands +\newcommand{\clearemptydoublepage}{% + \newpage{\pagestyle{empty}\cleardoublepage}% +} + +\usepackage{caption} +\captionsetup{labelsep=space,justification=centering,font={bf},singlelinecheck=off,skip=4pt,position=top} + +%===== C O N T E N T S ===== + +\begin{document} + +% Titlepage & ToC +\hypersetup{pageanchor=false, + bookmarksnumbered=true, + pdfencoding=unicode + } +\pagenumbering{alph} +\begin{titlepage} +\vspace*{7cm} +\begin{center}% +{\Large u\+TL }\\ +\vspace*{1cm} +{\large Generated by Doxygen 1.8.14}\\ +\end{center} +\end{titlepage} +\clearemptydoublepage +\pagenumbering{roman} +\tableofcontents +\clearemptydoublepage +\pagenumbering{arabic} +\hypersetup{pageanchor=true} + +%--- Begin generated contents --- +\chapter{R\+E\+A\+D\+ME} +\label{md__r_e_a_d_m_e} +\Hypertarget{md__r_e_a_d_m_e} +\input{md__r_e_a_d_m_e} +\chapter{Module Index} +\input{modules} +\chapter{Namespace Index} +\input{namespaces} +\chapter{Hierarchical Index} +\input{hierarchy} +\chapter{Class Index} +\input{annotated} +\chapter{File Index} +\input{files} +\chapter{Module Documentation} +\input{group__concepts} +\include{group__iterators} +\include{group__crtp} +\include{group__version} +\include{group__detection} +\include{group__integral} +\include{group__invoke} +\include{group__logic} +\include{group__type} +\include{group__sfinae} +\include{group__typelist} +\chapter{Namespace Documentation} +\input{namespaceproto2} +\input{namespacetest__1w} +\input{namespacetest__concepts} +\input{namespacetest__i2c} +\input{namespacetest__meta} +\input{namespacetest__ostream__dev} +\input{namespacetest__spi} +\input{namespacetesting} +\input{namespacetesting_1_1internal} +\input{namespacetesting_1_1internal2} +\input{namespacetesting_1_1internal_1_1edit__distance} +\input{namespacetesting_1_1internal_1_1posix} +\input{namespacetesting__internal} +\input{namespace_tmeta_basic} +\input{namespace_tmeta_detection} +\input{namespace_tmeta_typelist} +\input{namespaceutl} +\input{namespaceutl_1_1__1wire__i__det} +\input{namespaceutl_1_1common__impl} +\input{namespaceutl_1_1detail} +\input{namespaceutl_1_1details} +\input{namespaceutl_1_1i2c__i__details} +\input{namespaceutl_1_1idx__dev__details} +\input{namespaceutl_1_1idxdev__it__details} +\input{namespaceutl_1_1in__dev__details} +\input{namespaceutl_1_1inbuf__dev__details} +\input{namespaceutl_1_1indev__it__details} +\input{namespaceutl_1_1meta} +\input{namespaceutl_1_1meta_1_1apply__impl} +\input{namespaceutl_1_1meta_1_1at__impl} +\input{namespaceutl_1_1meta_1_1back__impl} +\input{namespaceutl_1_1meta_1_1cat__impl} +\input{namespaceutl_1_1meta_1_1count__if__impl} +\input{namespaceutl_1_1meta_1_1detail} +\input{namespaceutl_1_1meta_1_1filter__impl} +\input{namespaceutl_1_1meta_1_1find__if__impl} +\input{namespaceutl_1_1meta_1_1fold__impl} +\input{namespaceutl_1_1meta_1_1front__impl} +\input{namespaceutl_1_1meta_1_1pop__back__impl} +\input{namespaceutl_1_1meta_1_1pop__front__impl} +\input{namespaceutl_1_1meta_1_1replace__if__impl} +\input{namespaceutl_1_1meta_1_1rev__fold__impl} +\input{namespaceutl_1_1meta_1_1reverse__impl} +\input{namespaceutl_1_1meta_1_1seek__if__impl} +\input{namespaceutl_1_1meta_1_1transform__impl} +\input{namespaceutl_1_1meta_1_1transform__lazy__impl} +\input{namespaceutl_1_1out__dev__details} +\input{namespaceutl_1_1outdev__it__details} +\input{namespaceutl_1_1spi} +\input{namespaceutl_1_1spi__i__details} +\chapter{Class Documentation} +\input{classutl_1_1__1wire__i} +\input{classutl_1_1__1wire__i_3_01virtual__tag_01_4} +\input{classutl_1_1__1wire__id__t} +\input{classutl_1_1__1wire__uart__i} +\input{classutl_1_1__1wire__uart__i_3_01virtual__tag_01_4} +\input{structutl_1_1common__impl_1_1____common__ref__} +\input{structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_6_00_01meta_1_1void__tc4e71c227f251cadf0e0fb7b1ba6f1e9} +\input{structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_00_01meta_1_1void__t_3972a8d6e6799b6ee6537c969cdced343} +\input{structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_6_00_01meta_1_1void__t_329fba5aeac3b93aa9cfa5aa7e282e196} +\input{structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_00_01meta_1_1void__t_3_05e5aa384829bb34312a7b8ee4ecaa00f} +\input{structutl_1_1common__impl_1_1____common__reference} +\input{structutl_1_1common__impl_1_1____common__reference2} +\input{structutl_1_1common__impl_1_1____common__reference2_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____785d0aa2f8a62416e19573fcbdd83836} +\input{structutl_1_1common__impl_1_1____common__reference3} +\input{structutl_1_1common__impl_1_1____common__reference3_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____015b01ed12d2d90ee57fbf756ab847e9} +\input{structutl_1_1common__impl_1_1____common__reference_3_01_t_00_01_u_00_01meta_1_1when_3_01std_1_1i23b95b4b3a65ce598dbcc7f52e9dab2c} +\input{structutl_1_1common__impl_1_1____copy__cv__} +\input{structutl_1_1common__impl_1_1____copy__cv___3_01const_01_from_01_4} +\input{structutl_1_1common__impl_1_1____copy__cv___3_01const_01volatile_01_from_01_4} +\input{structutl_1_1common__impl_1_1____copy__cv___3_01volatile_01_from_01_4} +\input{structutl_1_1common__impl_1_1____xref} +\input{structutl_1_1common__impl_1_1____xref_3_01const_01_t_01_4} +\input{structutl_1_1common__impl_1_1____xref_3_01const_01volatile_01_t_01_4} +\input{structutl_1_1common__impl_1_1____xref_3_01_t_01_6_01_4} +\input{structutl_1_1common__impl_1_1____xref_3_01_t_01_6_6_01_4} +\input{structutl_1_1common__impl_1_1____xref_3_01volatile_01_t_01_4} +\input{structutl_1_1meta_1_1at__impl_1_1__add__pointer} +\input{structutl_1_1meta_1_1detail_1_1__and__} +\input{structutl_1_1meta_1_1detail_1_1__and___3_01___t1_01_4} +\input{structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_01_4} +\input{structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4} +\input{structutl_1_1meta_1_1detail_1_1__and___3_4} +\input{structutl_1_1meta_1_1detail_1_1__or__} +\input{structutl_1_1meta_1_1detail_1_1__or___3_01___t1_01_4} +\input{structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_01_4} +\input{structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4} +\input{structutl_1_1meta_1_1detail_1_1__or___3_4} +\input{structtest__concepts_1_1_a} +\input{struct_tmeta_detection_1_1_a} +\input{structtesting_1_1internal_1_1_add_reference} +\input{structtesting_1_1internal_1_1_add_reference_3_01_t_01_6_01_4} +\input{structutl_1_1meta_1_1same__as_1_1apply} +\input{structutl_1_1meta_1_1not__same__as_1_1apply} +\input{structutl_1_1meta_1_1apply__impl_1_1apply__} +\input{structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01integer__sequence_3_01_t_00_01_is_8_8_8_01_4_01_4} +\input{structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01typelist_3_01_list_8_8_8_01_4_01_4} +\input{structutl_1_1array} +\input{structutl_1_1array__traits} +\input{structutl_1_1array__traits_3_01___tp_00_010_01_4} +\input{classtesting_1_1internal_1_1_assert_helper} +\input{structutl_1_1meta_1_1at__impl_1_1at__} +\input{structutl_1_1meta_1_1at__impl_1_1at___3_01typelist_3_01_list_8_8_8_01_4_00_01_n_01_4} +\input{structutl_1_1meta_1_1at__impl_1_1at__head__} +\input{structutl_1_1meta_1_1at__impl_1_1at__head___3_01typelist_3_01voids_8_8_8_01_4_01_4} +\input{structtest__concepts_1_1_b} +\input{structutl_1_1meta_1_1back__impl_1_1back__} +\input{structutl_1_1meta_1_1back__impl_1_1back___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4} +\input{struct_tmeta_detection_1_1_bar} +\input{classtest__concepts_1_1_base} +\input{structutl_1_1common__impl_1_1basic__common__reference} +\input{structutl_1_1bidirectional__iterator__tag} +\input{structutl_1_1meta_1_1bind__back} +\input{structutl_1_1meta_1_1bind__front} +\input{structtesting_1_1internal_1_1bool__constant} +\input{classtesting_1_1internal_1_1_captured_stream} +\input{classtesting_1_1internal_1_1_cartesian_product_generator10} +\input{classtesting_1_1internal_1_1_cartesian_product_generator2} +\input{classtesting_1_1internal_1_1_cartesian_product_generator3} +\input{classtesting_1_1internal_1_1_cartesian_product_generator4} +\input{classtesting_1_1internal_1_1_cartesian_product_generator5} +\input{classtesting_1_1internal_1_1_cartesian_product_generator6} +\input{classtesting_1_1internal_1_1_cartesian_product_generator7} +\input{classtesting_1_1internal_1_1_cartesian_product_generator8} +\input{classtesting_1_1internal_1_1_cartesian_product_generator9} +\input{classtesting_1_1internal_1_1_cartesian_product_holder10} +\input{classtesting_1_1internal_1_1_cartesian_product_holder2} +\input{classtesting_1_1internal_1_1_cartesian_product_holder3} +\input{classtesting_1_1internal_1_1_cartesian_product_holder4} +\input{classtesting_1_1internal_1_1_cartesian_product_holder5} +\input{classtesting_1_1internal_1_1_cartesian_product_holder6} +\input{classtesting_1_1internal_1_1_cartesian_product_holder7} +\input{classtesting_1_1internal_1_1_cartesian_product_holder8} +\input{classtesting_1_1internal_1_1_cartesian_product_holder9} +\input{structutl_1_1meta_1_1cat__impl_1_1cat__} +\input{structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_01_4} +\input{structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4} +\input{structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_00_01_ln_8_8_8_01_4} +\input{structutl_1_1meta_1_1cat__impl_1_1cat___3_4} +\input{structtesting_1_1internal_1_1_code_location} +\input{structutl_1_1common__impl_1_1common__reference} +\input{structutl_1_1common__impl_1_1common__reference_3_01_t_01_4} +\input{structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_01_4} +\input{structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_00_01_v_00_01_w_8_8_8_01_4} +\input{structtesting_1_1internal_1_1_compile_assert_types_equal} +\input{structtesting_1_1internal_1_1_compile_assert_types_equal_3_01_t_00_01_t_01_4} +\input{structutl_1_1meta_1_1detail_1_1compose__} +\input{structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_01_4} +\input{structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_00_01_fns_8_8_8_01_4} +\input{structutl_1_1meta_1_1detail_1_1compose__f__} +\input{structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_01_4} +\input{structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_00_01_fns_8_8_8_01_4} +\input{structtesting_1_1internal_1_1_const_char_ptr} +\input{structtesting_1_1internal_1_1_const_ref} +\input{structtesting_1_1internal_1_1_const_ref_3_01_t_01_6_01_4} +\input{structutl_1_1contiguous__iterator__tag} +\input{structutl_1_1meta_1_1count__if__impl_1_1count__if__} +\input{structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4} +\input{structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4} +\input{structutl_1_1crtp__tag} +\input{structutl_1_1meta_1_1detail_1_1defer__} +\input{structutl_1_1meta_1_1detail_1_1defer__i__} +\input{classtest__concepts_1_1_derived1} +\input{classtest__concepts_1_1_derived2} +\input{structutl_1_1meta_1_1detail_1_1detector} +\input{structutl_1_1meta_1_1detail_1_1detector_3_01_default_00_01void__t_3_01_op_3_01_args_8_8_8_01_4_0c35bdbd19f56980c0b5ee6d490bfb634} +\input{structutl_1_1dev__iterator__traits} +\input{structtesting_1_1internal_1_1_double_sequence} +\input{structtesting_1_1internal_1_1_double_sequence_3_01false_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4} +\input{structtesting_1_1internal_1_1_double_sequence_3_01true_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4} +\input{structtesting_1_1internal_1_1_elem_from_list} +\input{structtesting_1_1internal_1_1_elem_from_list_3_01_n_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01_t_8_8_8_01_4} +\input{structtesting_1_1internal_1_1_elem_from_list_impl} +\input{structtesting_1_1internal_1_1_elem_from_list_impl_3_01_t_00_01_i_00_01_i_01_4} +\input{structtest__concepts_1_1_empty} +\input{classtesting_1_1_empty_test_event_listener} +\input{structtesting_1_1internal_1_1_enable_if} +\input{structtesting_1_1internal_1_1_enable_if_3_01true_01_4} +\input{classtesting_1_1_environment} +\input{classtesting_1_1internal_1_1_eq_helper} +\input{classtesting_1_1internal_1_1_eq_helper_3_01true_01_4} +\input{struct_tmeta_typelist_1_1_f} +\input{structtesting_1_1internal_1_1faketype} +\input{structutl_1_1meta_1_1filter__impl_1_1filter__} +\input{structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_l_01_4} +\input{structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_4_00_01_fn_00_01_l_01_4} +\input{structutl_1_1meta_1_1find__if__impl_1_1find__if__} +\input{structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4} +\input{structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4} +\input{classtesting_1_1internal_1_1_flat_tuple} +\input{structtesting_1_1internal_1_1_flat_tuple_base} +\input{structtesting_1_1internal_1_1_flat_tuple_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_index_sequence_3_01_idx_8_8_8_01_4_01_4} +\input{structtesting_1_1internal_1_1_flat_tuple_elem_base} +\input{structtesting_1_1internal_1_1_flat_tuple_elem_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_i_01_4} +\input{classtesting_1_1internal_1_1_floating_point} +\input{structutl_1_1meta_1_1fold__impl_1_1fold__} +\input{structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4} +\input{structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_4_00_01_v0_00_01_fn_01_4} +\input{struct_tmeta_detection_1_1_foo} +\input{classtesting_1_1internal_1_1_format_for_comparison} +\input{classtesting_1_1internal_1_1_format_for_comparison_3_01_to_print[_n]_00_01_other_operand_01_4} +\input{structutl_1_1forward__iterator__tag} +\input{structutl_1_1meta_1_1front__impl_1_1front__} +\input{structutl_1_1meta_1_1front__impl_1_1front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4} +\input{classtesting_1_1internal_1_1_g_test_log} +\input{classtesting_1_1internal_1_1_g_test_mutex_lock} +\input{structtest__concepts_1_1_have_copy_and_move} +\input{structtest__concepts_1_1_have_only_copy} +\input{structtest__concepts_1_1_have_only_move} +\input{classtest__concepts_1_1_have_operator_base} +\input{classtest__concepts_1_1_have_perfect_forwarding} +\input{classtest__i2c_1_1_i2_c} +\input{classutl_1_1i2c__bb__i} +\input{classutl_1_1i2c__bb__i_3_01virtual__tag_01_4} +\input{classutl_1_1i2c__i} +\input{classutl_1_1i2c__i_3_01virtual__tag_01_4} +\input{structtest__meta_1_1_ibar} +\input{structutl_1_1id__t} +\input{structutl_1_1id__traits} +\input{structutl_1_1id__traits_3_01___tp_00_010_01_4} +\input{struct_tmeta_basic_1_1_identity} +\input{struct_tmeta_typelist_1_1_identity} +\input{structutl_1_1meta_1_1identity} +\input{classutl_1_1idx__dev} +\input{classutl_1_1idx__dev_3_01virtual__tag_00_01data__t_00_01idx__t_00_01_n_01_4} +\input{structutl_1_1meta_1_1detail_1_1if__c__} +\input{structutl_1_1meta_1_1detail_1_1if__c___3_01false_00_01_then_00_01_else_01_4} +\input{structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_01_4} +\input{structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_00_01_else_01_4} +\input{structtest__meta_1_1_ifoo} +\input{classtesting_1_1internal_1_1_ignored_value} +\input{classtesting_1_1internal_1_1_implicitly_convertible} +\input{classutl_1_1in__dev} +\input{classutl_1_1in__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4} +\input{classutl_1_1inbuf__dev} +\input{classutl_1_1inbuf__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4} +\input{structtest__concepts_1_1_incr} +\input{classutl_1_1indev__it} +\input{structtesting_1_1internal_1_1_index_sequence} +\input{structutl_1_1input__iterator__tag} +\input{structtest__concepts_1_1_inv} +\input{structutl_1_1detail_1_1invoke__result__} +\input{structutl_1_1detail_1_1invoke__result___3_01true_00_01___callable_00_01___args_8_8_8_01_4} +\input{classutl_1_1iodev__it} +\input{structutl_1_1__1wire__i__det_1_1is__1wire__} +\input{structutl_1_1__1wire__i__det_1_1is__1wire___3_01___tp_00_01meta_1_1void__t_3_01void_01_4_01_4} +\input{structutl_1_1meta_1_1detail_1_1is__applicable__} +\input{structutl_1_1meta_1_1detail_1_1is__applicable__i__} +\input{structutl_1_1meta_1_1detail_1_1is__applicable__q__} +\input{structutl_1_1details_1_1is__boolean__} +\input{structutl_1_1details_1_1is__boolean___3_01_b_00_01meta_1_1void__t_3_01meta_1_1use__if__same__t_37e77ed45a431955fc15b4c1210ad8491} +\input{structutl_1_1i2c__i__details_1_1is__i2c__} +\input{structutl_1_1i2c__i__details_1_1is__i2c___3_01___tp_00_01meta_1_1void__t_3_01typename_01___tp_1_1_sequence_00_01void_01_4_01_4} +\input{structutl_1_1idx__dev__details_1_1is__idx__dev__} +\input{structutl_1_1idx__dev__details_1_1is__idx__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1ae8b6b24c31c81bdd901da6e6387d84b} +\input{structutl_1_1idxdev__it__details_1_1is__idxdev__it__} +\input{structutl_1_1idxdev__it__details_1_1is__idxdev__it___3_01___tp_00_01meta_1_1void__t_3_01typenamebd9ada52ca7b7570c26d0c280af5e635} +\input{structutl_1_1in__dev__details_1_1is__in__dev__} +\input{structutl_1_1in__dev__details_1_1is__in__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1dad922a62deb7c32e2cff18d66b8c887d2} +\input{structutl_1_1inbuf__dev__details_1_1is__inbuf__dev__} +\input{structutl_1_1inbuf__dev__details_1_1is__inbuf__dev___3_01___tp_00_01void__t_3_01typename_01___tpc269ee3885240cc8c352f3c6b3a67cd7} +\input{structutl_1_1indev__it__details_1_1is__indev__it__} +\input{structutl_1_1indev__it__details_1_1is__indev__it___3_01___tp_00_01meta_1_1void__t_3_01typename_06508604dcee4010234c84cc332fa196b} +\input{structutl_1_1is__invocable} +\input{structutl_1_1is__invocable__r} +\input{structutl_1_1out__dev__details_1_1is__out__dev__} +\input{structutl_1_1out__dev__details_1_1is__out__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1fbf8d2409fc6de9dd6b9649bedc1b379} +\input{structutl_1_1outdev__it__details_1_1is__outdev__it__} +\input{structutl_1_1outdev__it__details_1_1is__outdev__it___3_01___tp_00_01meta_1_1void__t_3_01typename8786ebbbd0dc9ca1b14571e779d99d60} +\input{structutl_1_1detail_1_1is__ref__wrapper} +\input{structutl_1_1detail_1_1is__ref__wrapper_3_01std_1_1reference__wrapper_3_01_u_01_4_01_4} +\input{structtesting_1_1internal_1_1is__same} +\input{structtesting_1_1internal_1_1is__same_3_01_t_00_01_t_01_4} +\input{structutl_1_1spi__i__details_1_1is__spi__} +\input{structutl_1_1spi__i__details_1_1is__spi___3_01___tp_00_01meta_1_1void__t_3_01meta_1_1use__if__sa2db29f6d65d34ecf5e49ec30b6600d78} +\input{structutl_1_1details_1_1is__strict__totally__ordered__} +\input{structutl_1_1details_1_1is__strict__totally__ordered___3_01_t_00_01meta_1_1void__t_3_01meta_1_1uab48bcfc89164f446368b35bcc7c8bcd} +\input{structutl_1_1details_1_1is__strict__totally__ordered__with__} +\input{structutl_1_1details_1_1is__strict__totally__ordered__with___3_01_t_00_01_u_00_01meta_1_1void__t8fb7dd5a6ad25952241e37c6f163f434} +\input{structutl_1_1details_1_1is__weakly__equality__comparable__with__} +\input{structutl_1_1details_1_1is__weakly__equality__comparable__with___3_01_t_00_01_u_00_01meta_1_1voi4404f901930622694666ca68fb75381b} +\input{structtesting_1_1internal_1_1_is_a_protocol_message} +\input{structtesting_1_1internal_1_1_is_hash_table} +\input{structtesting_1_1internal_1_1_is_recursive_container} +\input{structtesting_1_1internal_1_1_is_recursive_container_impl} +\input{structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01false_01_4} +\input{structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01true_01_4} +\input{structtesting_1_1internal_1_1_is_same} +\input{structtesting_1_1internal_1_1_is_same_3_01_t_00_01_t_01_4} +\input{classutl_1_1istreamdev__it} +\input{structtesting_1_1internal_1_1_iterator_traits} +\input{structtesting_1_1internal_1_1_iterator_traits_3_01const_01_t_01_5_01_4} +\input{structtesting_1_1internal_1_1_iterator_traits_3_01_t_01_5_01_4} +\input{structtesting_1_1internal_1_1_make_index_sequence} +\input{structtesting_1_1internal_1_1_make_index_sequence_3_010_01_4} +\input{classtesting_1_1_message} +\input{struct_tmeta_detection_1_1m_fun} +\input{struct_tmeta_typelist_1_1_mfun_bin} +\input{struct_tmeta_typelist_1_1_mfun_bin__i} +\input{struct_tmeta_typelist_1_1_mfun_un1} +\input{struct_tmeta_typelist_1_1_mfun_un2} +\input{classtesting_1_1internal_1_1_mutex} +\input{structutl_1_1meta_1_1nat__} +\input{classtesting_1_1internal_1_1_native_array} +\input{structutl_1_1meta_1_1nil__} +\input{structutl_1_1meta_1_1not__same__as} +\input{classutl_1_1ostream__dev} +\input{classutl_1_1ostream__dev_3_01virtual__tag_00_01data__t_01_4} +\input{classtest__ostream__dev_1_1_ostream__dev__impl} +\input{classtest__ostream__dev_1_1_ostream__vdev__impl} +\input{classutl_1_1ostreamdev__it} +\input{classutl_1_1out__dev} +\input{classutl_1_1out__dev_3_01virtual__tag_00_01data__t_00_01streamsize_01_4} +\input{classutl_1_1outdev__it} +\input{structutl_1_1output__iterator__tag} +\input{classtest__1w_1_1_o_w} +\input{classtesting_1_1internal_1_1_parameterized_test_factory} +\input{classtesting_1_1internal_1_1_parameterized_test_suite_info} +\input{classtesting_1_1internal_1_1_parameterized_test_suite_info_base} +\input{classtesting_1_1internal_1_1_parameterized_test_suite_registry} +\input{classtesting_1_1internal_1_1_param_generator} +\input{classtesting_1_1internal_1_1_param_generator_interface} +\input{classtesting_1_1internal_1_1_param_iterator} +\input{classtesting_1_1internal_1_1_param_iterator_interface} +\input{structtesting_1_1internal_1_1_param_name_gen_func} +\input{structutl_1_1meta_1_1pop__back__impl_1_1pop__back__} +\input{structutl_1_1meta_1_1pop__front__impl_1_1pop__front__} +\input{structutl_1_1meta_1_1pop__front__impl_1_1pop__front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4} +\input{structtest__concepts_1_1_pred} +\input{struct_tmeta_typelist_1_1_pred__is_int} +\input{struct_tmeta_typelist_1_1_pred__is_void} +\input{structtesting_1_1_print_to_string_param_name} +\input{structutl_1_1meta_1_1quote} +\input{structutl_1_1meta_1_1quote__i} +\input{classtesting_1_1internal_1_1_random} +\input{structutl_1_1random__access__iterator__tag} +\input{classtesting_1_1internal_1_1_range_generator} +\input{classtesting_1_1internal_1_1_r_e} +\input{structtesting_1_1internal_1_1_relation_to_source_copy} +\input{structtesting_1_1internal_1_1_relation_to_source_reference} +\input{structtesting_1_1internal_1_1_remove_const} +\input{structtesting_1_1internal_1_1_remove_const_3_01const_01_t_01_4} +\input{structtesting_1_1internal_1_1_remove_const_3_01const_01_t[_n]_4} +\input{structtesting_1_1internal_1_1_remove_reference} +\input{structtesting_1_1internal_1_1_remove_reference_3_01_t_01_6_01_4} +\input{structutl_1_1meta_1_1replace__if__impl_1_1replace__if__} +\input{structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_01_head_00_01_tail_8_8_8_dfa8065a3617f53ecded260506092a07} +\input{structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_4_00_01_fn_00_01_t_00_01_ret_01_4} +\input{structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold__} +\input{structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4} +\input{structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_tail_01_4_00_01_v_00_01_fn_01_4} +\input{structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_4_00_01_v_00_01_fn_01_4} +\input{structutl_1_1meta_1_1reverse__impl_1_1reverse__} +\input{structutl_1_1meta_1_1same__} +\input{structutl_1_1meta_1_1same___3_01___tp_00_01___tp_01_4} +\input{structutl_1_1meta_1_1same__as} +\input{classtesting_1_1_scoped_trace} +\input{structutl_1_1meta_1_1seek__if__impl_1_1seek__if__} +\input{structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4} +\input{structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4} +\input{classtest__spi_1_1_s_p_i} +\input{classutl_1_1spi__bb__i} +\input{classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4} +\input{classutl_1_1spi__i} +\input{classutl_1_1spi__i_3_01virtual__tag_01_4} +\input{structtesting_1_1internal_1_1_static_assert_type_eq_helper} +\input{structtesting_1_1internal_1_1_static_assert_type_eq_helper_3_01_t_00_01_t_01_4} +\input{structtesting_1_1internal_1_1_suite_api_resolver} +\input{classtesting_1_1_test} +\input{classtest__1w_1_1_test__1w__impl} +\input{classtest__spi_1_1_test__spi__impl} +\input{classtesting_1_1_test_event_listener} +\input{classtesting_1_1_test_event_listeners} +\input{classtesting_1_1internal_1_1_test_factory_base} +\input{classtesting_1_1internal_1_1_test_factory_impl} +\input{classtesting_1_1_test_info} +\input{classtesting_1_1internal_1_1_test_meta_factory} +\input{classtesting_1_1internal_1_1_test_meta_factory_base} +\input{structtesting_1_1_test_param_info} +\input{classtesting_1_1_test_property} +\input{classtesting_1_1_test_result} +\input{classtesting_1_1_test_suite} +\input{classtesting_1_1_test_with_param} +\input{classtesting_1_1internal_1_1_thread_local} +\input{classtest__ostream__dev_1_1_tostream___idev} +\input{classtest__ostream__dev_1_1_tostream___vdev} +\input{structutl_1_1meta_1_1transform__impl_1_1transform__} +\input{structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts_8_8_8_01_40fe2b1c8ede658aadb6925de73541689} +\input{structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts0_8_8_8_01_8fba6bf3d0565d17a96950cb517db5f1} +\input{structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy__} +\input{structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t56243bc35bf73da8271cb88f34751f3a} +\input{structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t14ff615a4bff6c4c3701df9c38aaa6a5} +\input{structutl_1_1detail_1_1try__invoke} +\input{structutl_1_1array__traits_3_01___tp_00_010_01_4_1_1type} +\input{structutl_1_1id__traits_3_01___tp_00_010_01_4_1_1type} +\input{classtesting_1_1internal_1_1_type_id_helper} +\input{structutl_1_1meta_1_1typelist} +\input{classtesting_1_1internal2_1_1_type_without_formatter} +\input{classtesting_1_1internal2_1_1_type_without_formatter_3_01_t_00_01k_convertible_to_integer_01_4} +\input{classtesting_1_1internal2_1_1_type_without_formatter_3_01_t_00_01k_protobuf_01_4} +\input{classtesting_1_1internal_1_1_type_with_size} +\input{classtesting_1_1internal_1_1_type_with_size_3_014_01_4} +\input{classtesting_1_1internal_1_1_type_with_size_3_018_01_4} +\input{classtesting_1_1_unit_test} +\input{classtesting_1_1internal_1_1_universal_printer} +\input{classtesting_1_1internal_1_1_universal_printer_3_01_t_01_6_01_4} +\input{classtesting_1_1internal_1_1_universal_printer_3_01_t[_n]_4} +\input{classtesting_1_1internal_1_1_universal_terse_printer} +\input{classtesting_1_1internal_1_1_universal_terse_printer_3_01char_01_5_01_4} +\input{classtesting_1_1internal_1_1_universal_terse_printer_3_01const_01char_01_5_01_4} +\input{classtesting_1_1internal_1_1_universal_terse_printer_3_01const_01wchar__t_01_5_01_4} +\input{classtesting_1_1internal_1_1_universal_terse_printer_3_01_t_01_6_01_4} +\input{classtesting_1_1internal_1_1_universal_terse_printer_3_01_t[_n]_4} +\input{classtesting_1_1internal_1_1_universal_terse_printer_3_01wchar__t_01_5_01_4} +\input{classtesting_1_1internal_1_1_value_array} +\input{classtesting_1_1internal_1_1_values_in_iterator_range_generator} +\input{structutl_1_1virtual__tag} +\input{structutl_1_1meta_1_1detail_1_1when__} +\input{structutl_1_1meta_1_1detail_1_1when___3_01true_01_4} +\input{classtesting_1_1_with_param_interface} +\input{structutl_1_1meta_1_1wrap} +\input{structutl_1_1meta_1_1wrap__i} +\input{structtesting_1_1internal_1_1_wrap_printer_type} +\chapter{File Documentation} +\input{__1wire_8h} +\input{__1wire__id_8h} +\input{__1wire__uart_8h} +\input{i2c_8h} +\input{i2c__bb_8h} +\input{spi_8h} +\input{spi__bb_8h} +\input{concepts_8h} +\input{defines_8h} +\input{iterators_8h} +\input{stl_8h} +\input{array_8h} +\input{id_8h} +\input{crtp_8h} +\input{impl_8h} +\input{types_8h} +\input{version_8h} +\input{dev__iterators_8h} +\input{idx__dev_8h} +\input{in__dev_8h} +\input{inbuf__dev_8h} +\input{ostream__dev_8h} +\input{out__dev_8h} +\input{detection_8h} +\input{integral_8h} +\input{meta_2invoke_8h} +\input{utility_2invoke_8h} +\input{meta_8h} +\input{operations_8h} +\input{selection_8h} +\input{sfinae_8h} +\input{typelist_8h} +\input{useif_8h} +\input{_r_e_a_d_m_e_8md} +\input{_tmeta_8d} +\input{lib_2gtest_2gtest-all_8d} +\input{_concepts_2lib_2gtest_2gtest-all_8d} +\input{source_2main_8d} +\input{_concepts_2source_2main_8d} +\input{source_2tests_2_t_concepts_8d} +\input{_concepts_2source_2tests_2_t_concepts_8d} +\input{source_2tests_2test__1w__impl_8d} +\input{_concepts_2source_2tests_2test__1w__impl_8d} +\input{source_2tests_2test__i2c__impl_8d} +\input{_concepts_2source_2tests_2test__i2c__impl_8d} +\input{source_2tests_2test__ostream__dev_8d} +\input{_concepts_2source_2tests_2test__ostream__dev_8d} +\input{source_2tests_2test__spi__impl_8d} +\input{_concepts_2source_2tests_2test__spi__impl_8d} +\input{source_2tests_2_tinvoke_8d} +\input{_concepts_2source_2tests_2_tinvoke_8d} +\input{_tmeta_basic_8d} +\input{_tmeta_detection_8d} +\input{_tmeta_typelist_8d} +\input{gtest-all_8cc} +\input{gtest_8h} +\input{main_8cpp} +\input{_t_concepts_8cpp} +\input{test__1w__impl_8cpp} +\input{test__i2c__impl_8cpp} +\input{test__ostream__dev_8cpp} +\input{test__spi__impl_8cpp} +\input{_tinvoke_8cpp} +\input{_tmeta_basic_8cpp} +\input{_tmeta_detection_8cpp} +\input{_tmeta_typelist_8cpp} +\chapter{Example Documentation} +\input{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2concepts_2defines_8h-example} +\input{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2detection_8h-example} +\input{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example} +\input{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example} +%--- End generated contents --- + +% Index +\backmatter +\newpage +\phantomsection +\clearemptydoublepage +\addcontentsline{toc}{chapter}{Index} +\printindex + +\end{document} diff --git a/doc/latex/selection_8h.tex b/doc/latex/selection_8h.tex new file mode 100644 index 0000000..10c24dc --- /dev/null +++ b/doc/latex/selection_8h.tex @@ -0,0 +1,58 @@ +\hypertarget{selection_8h}{}\section{include/utl/meta/selection.h File Reference} +\label{selection_8h}\index{include/utl/meta/selection.\+h@{include/utl/meta/selection.\+h}} + + +Template meta-\/programming type selections. + + +{\ttfamily \#include $<$utl/core/impl.\+h$>$}\newline +{\ttfamily \#include $<$utl/meta/integral.\+h$>$}\newline +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1if__c__}{utl\+::meta\+::detail\+::if\+\_\+c\+\_\+$<$ If,... $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_01_4}{utl\+::meta\+::detail\+::if\+\_\+c\+\_\+$<$ true, Then $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_00_01_else_01_4}{utl\+::meta\+::detail\+::if\+\_\+c\+\_\+$<$ true, Then, Else $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1if__c___3_01false_00_01_then_00_01_else_01_4}{utl\+::meta\+::detail\+::if\+\_\+c\+\_\+$<$ false, Then, Else $>$}} +\end{DoxyCompactItemize} +\subsection*{Namespaces} +\begin{DoxyCompactItemize} +\item + \mbox{\hyperlink{namespaceutl}{utl}} +\begin{DoxyCompactList}\small\item\em S\+TL\textquotesingle{}s core language concepts. \end{DoxyCompactList}\item + \mbox{\hyperlink{namespaceutl_1_1meta}{utl\+::meta}} +\item + \mbox{\hyperlink{namespaceutl_1_1meta_1_1detail}{utl\+::meta\+::detail}} +\end{DoxyCompactItemize} +\subsection*{Typedefs} +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$bool B, typename... Args$>$ }\\using \mbox{\hyperlink{group__type_gaa3812817ce749832da73fdf5d2a85380}{utl\+::meta\+::if\+\_\+c}} = eval$<$ detail\+::if\+\_\+c\+\_\+$<$ B, Args... $>$ $>$ +\begin{DoxyCompactList}\small\item\em Select one type or another depending on a compile-\/time Boolean. \end{DoxyCompactList}\item +{\footnotesize template$<$typename If , typename... Args$>$ }\\using \mbox{\hyperlink{group__type_ga39cc4e727a8faa5ea176f543e62c05c0}{utl\+::meta\+::if\+\_\+}} = if\+\_\+c$<$ If\+::type\+::value, Args... $>$ +\begin{DoxyCompactList}\small\item\em Select one type or another depending on a compile-\/time Boolean type. \end{DoxyCompactList}\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename T1 , typename ... $>$ }\\using \mbox{\hyperlink{group__type_gaf7089523d21cd405c76985643f31092a}{utl\+::meta\+::first\+\_\+of}} = T1 +\begin{DoxyCompactList}\small\item\em Select the first type of a type sequence. \end{DoxyCompactList}\item +{\footnotesize template$<$typename T1 , typename T2 , typename ... $>$ }\\using \mbox{\hyperlink{group__type_ga422dd1b0895f0074ad9932d68d9edbc5}{utl\+::meta\+::second\+\_\+of}} = T2 +\begin{DoxyCompactList}\small\item\em Select the second type of a type sequence. \end{DoxyCompactList}\end{DoxyCompactItemize} + + + +\subsection{Detailed Description} +Template meta-\/programming type selections. + +Copyright (C) 2018-\/2019 Christos Choutouridis + +This program is free software\+: you can redistribute it and/or modify it under the terms of the G\+NU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but W\+I\+T\+H\+O\+UT A\+NY W\+A\+R\+R\+A\+N\+TY; without even the implied warranty of M\+E\+R\+C\+H\+A\+N\+T\+A\+B\+I\+L\+I\+TY or F\+I\+T\+N\+E\+SS F\+OR A P\+A\+R\+T\+I\+C\+U\+L\+AR P\+U\+R\+P\+O\+SE. See the G\+NU Lesser General Public License for more details. + +You should have received a copy of the G\+NU Lesser General Public License along with this program. If not, see \href{http://www.gnu.org/licenses/}{\tt http\+://www.\+gnu.\+org/licenses/}. \ No newline at end of file diff --git a/doc/latex/sfinae_8h.tex b/doc/latex/sfinae_8h.tex new file mode 100644 index 0000000..6f1f9b9 --- /dev/null +++ b/doc/latex/sfinae_8h.tex @@ -0,0 +1,52 @@ +\hypertarget{sfinae_8h}{}\section{include/utl/meta/sfinae.h File Reference} +\label{sfinae_8h}\index{include/utl/meta/sfinae.\+h@{include/utl/meta/sfinae.\+h}} + + +Template meta-\/programming S\+F\+I\+N\+AE helpers. + + +{\ttfamily \#include $<$utl/core/impl.\+h$>$}\newline +{\ttfamily \#include $<$type\+\_\+traits$>$}\newline +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1when__}{utl\+::meta\+::detail\+::when\+\_\+$<$ If $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1when___3_01true_01_4}{utl\+::meta\+::detail\+::when\+\_\+$<$ true $>$}} +\end{DoxyCompactItemize} +\subsection*{Namespaces} +\begin{DoxyCompactItemize} +\item + \mbox{\hyperlink{namespaceutl}{utl}} +\begin{DoxyCompactList}\small\item\em S\+TL\textquotesingle{}s core language concepts. \end{DoxyCompactList}\item + \mbox{\hyperlink{namespaceutl_1_1meta}{utl\+::meta}} +\item + \mbox{\hyperlink{namespaceutl_1_1meta_1_1detail}{utl\+::meta\+::detail}} +\end{DoxyCompactItemize} +\subsection*{Typedefs} +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$bool If$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a181d79db46b10170529e85b907ed3dc7}{utl\+::meta\+::when}} = eval$<$ detail\+::when\+\_\+$<$ If $>$ $>$ +\begin{DoxyCompactList}\small\item\em Well formed only if {\ttfamily If} is true. \end{DoxyCompactList}\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$bool If, typename \+\_\+\+Tp = void$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ab3fed26a4c7a8204accb349f0b6600e8}{utl\+::meta\+::enable\+\_\+if}} = std\+::enable\+\_\+if$<$ If, \+\_\+\+Tp $>$ +\begin{DoxyCompactList}\small\item\em enable\+\_\+if, imported from stl \end{DoxyCompactList}\item +{\footnotesize template$<$bool If, typename \+\_\+\+Tp = void$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a372fe391d9567f66a81091f581e1fa01}{utl\+::meta\+::enable\+\_\+if\+\_\+t}} = eval$<$ enable\+\_\+if$<$ If, \+\_\+\+Tp $>$ $>$ +\begin{DoxyCompactList}\small\item\em alias template for enable\+\_\+if \end{DoxyCompactList}\end{DoxyCompactItemize} + + + +\subsection{Detailed Description} +Template meta-\/programming S\+F\+I\+N\+AE helpers. + +Copyright (C) 2018-\/2019 Christos Choutouridis + +This program is free software\+: you can redistribute it and/or modify it under the terms of the G\+NU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but W\+I\+T\+H\+O\+UT A\+NY W\+A\+R\+R\+A\+N\+TY; without even the implied warranty of M\+E\+R\+C\+H\+A\+N\+T\+A\+B\+I\+L\+I\+TY or F\+I\+T\+N\+E\+SS F\+OR A P\+A\+R\+T\+I\+C\+U\+L\+AR P\+U\+R\+P\+O\+SE. See the G\+NU Lesser General Public License for more details. + +You should have received a copy of the G\+NU Lesser General Public License along with this program. If not, see \href{http://www.gnu.org/licenses/}{\tt http\+://www.\+gnu.\+org/licenses/}. \ No newline at end of file diff --git a/doc/latex/source_2main_8d.tex b/doc/latex/source_2main_8d.tex new file mode 100644 index 0000000..98a3ebf --- /dev/null +++ b/doc/latex/source_2main_8d.tex @@ -0,0 +1,2 @@ +\hypertarget{source_2main_8d}{}\section{test/eclipse-\/cygwin/\+C++14/source/main.d File Reference} +\label{source_2main_8d}\index{test/eclipse-\/cygwin/\+C++14/source/main.\+d@{test/eclipse-\/cygwin/\+C++14/source/main.\+d}} diff --git a/doc/latex/source_2tests_2_t_concepts_8d.tex b/doc/latex/source_2tests_2_t_concepts_8d.tex new file mode 100644 index 0000000..ade2f5b --- /dev/null +++ b/doc/latex/source_2tests_2_t_concepts_8d.tex @@ -0,0 +1,2 @@ +\hypertarget{source_2tests_2_t_concepts_8d}{}\section{test/eclipse-\/cygwin/\+C++14/source/tests/\+T\+Concepts.d File Reference} +\label{source_2tests_2_t_concepts_8d}\index{test/eclipse-\/cygwin/\+C++14/source/tests/\+T\+Concepts.\+d@{test/eclipse-\/cygwin/\+C++14/source/tests/\+T\+Concepts.\+d}} diff --git a/doc/latex/source_2tests_2_tinvoke_8d.tex b/doc/latex/source_2tests_2_tinvoke_8d.tex new file mode 100644 index 0000000..d2bccd0 --- /dev/null +++ b/doc/latex/source_2tests_2_tinvoke_8d.tex @@ -0,0 +1,2 @@ +\hypertarget{source_2tests_2_tinvoke_8d}{}\section{test/eclipse-\/cygwin/\+C++14/source/tests/\+Tinvoke.d File Reference} +\label{source_2tests_2_tinvoke_8d}\index{test/eclipse-\/cygwin/\+C++14/source/tests/\+Tinvoke.\+d@{test/eclipse-\/cygwin/\+C++14/source/tests/\+Tinvoke.\+d}} diff --git a/doc/latex/source_2tests_2test__1w__impl_8d.tex b/doc/latex/source_2tests_2test__1w__impl_8d.tex new file mode 100644 index 0000000..a32b059 --- /dev/null +++ b/doc/latex/source_2tests_2test__1w__impl_8d.tex @@ -0,0 +1,2 @@ +\hypertarget{source_2tests_2test__1w__impl_8d}{}\section{test/eclipse-\/cygwin/\+C++14/source/tests/test\+\_\+1w\+\_\+impl.d File Reference} +\label{source_2tests_2test__1w__impl_8d}\index{test/eclipse-\/cygwin/\+C++14/source/tests/test\+\_\+1w\+\_\+impl.\+d@{test/eclipse-\/cygwin/\+C++14/source/tests/test\+\_\+1w\+\_\+impl.\+d}} diff --git a/doc/latex/source_2tests_2test__i2c__impl_8d.tex b/doc/latex/source_2tests_2test__i2c__impl_8d.tex new file mode 100644 index 0000000..d812510 --- /dev/null +++ b/doc/latex/source_2tests_2test__i2c__impl_8d.tex @@ -0,0 +1,2 @@ +\hypertarget{source_2tests_2test__i2c__impl_8d}{}\section{test/eclipse-\/cygwin/\+C++14/source/tests/test\+\_\+i2c\+\_\+impl.d File Reference} +\label{source_2tests_2test__i2c__impl_8d}\index{test/eclipse-\/cygwin/\+C++14/source/tests/test\+\_\+i2c\+\_\+impl.\+d@{test/eclipse-\/cygwin/\+C++14/source/tests/test\+\_\+i2c\+\_\+impl.\+d}} diff --git a/doc/latex/source_2tests_2test__ostream__dev_8d.tex b/doc/latex/source_2tests_2test__ostream__dev_8d.tex new file mode 100644 index 0000000..c4d00fc --- /dev/null +++ b/doc/latex/source_2tests_2test__ostream__dev_8d.tex @@ -0,0 +1,2 @@ +\hypertarget{source_2tests_2test__ostream__dev_8d}{}\section{test/eclipse-\/cygwin/\+C++14/source/tests/test\+\_\+ostream\+\_\+dev.d File Reference} +\label{source_2tests_2test__ostream__dev_8d}\index{test/eclipse-\/cygwin/\+C++14/source/tests/test\+\_\+ostream\+\_\+dev.\+d@{test/eclipse-\/cygwin/\+C++14/source/tests/test\+\_\+ostream\+\_\+dev.\+d}} diff --git a/doc/latex/source_2tests_2test__spi__impl_8d.tex b/doc/latex/source_2tests_2test__spi__impl_8d.tex new file mode 100644 index 0000000..a72a87c --- /dev/null +++ b/doc/latex/source_2tests_2test__spi__impl_8d.tex @@ -0,0 +1,2 @@ +\hypertarget{source_2tests_2test__spi__impl_8d}{}\section{test/eclipse-\/cygwin/\+C++14/source/tests/test\+\_\+spi\+\_\+impl.d File Reference} +\label{source_2tests_2test__spi__impl_8d}\index{test/eclipse-\/cygwin/\+C++14/source/tests/test\+\_\+spi\+\_\+impl.\+d@{test/eclipse-\/cygwin/\+C++14/source/tests/test\+\_\+spi\+\_\+impl.\+d}} diff --git a/doc/latex/spi_8h.tex b/doc/latex/spi_8h.tex new file mode 100644 index 0000000..d956557 --- /dev/null +++ b/doc/latex/spi_8h.tex @@ -0,0 +1,68 @@ +\hypertarget{spi_8h}{}\section{include/utl/com/spi.h File Reference} +\label{spi_8h}\index{include/utl/com/spi.\+h@{include/utl/com/spi.\+h}} + + +An Abstract base class interface for the spi bus. + + +{\ttfamily \#include $<$utl/core/impl.\+h$>$}\newline +{\ttfamily \#include $<$utl/core/crtp.\+h$>$}\newline +{\ttfamily \#include $<$utl/meta/meta.\+h$>$}\newline +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +class \mbox{\hyperlink{classutl_1_1spi__i}{utl\+::spi\+\_\+i$<$ impl\+\_\+t $>$}} +\item +class \mbox{\hyperlink{classutl_1_1spi__i_3_01virtual__tag_01_4}{utl\+::spi\+\_\+i$<$ virtual\+\_\+tag $>$}} +\begin{DoxyCompactList}\small\item\em A virtual base class implementation. \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1spi__i__details_1_1is__spi__}{utl\+::spi\+\_\+i\+\_\+details\+::is\+\_\+spi\+\_\+$<$ \+\_\+\+Tp, typename $>$}} +\begin{DoxyCompactList}\small\item\em Primary template to catch any non S\+PI interface types. \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1spi__i__details_1_1is__spi___3_01___tp_00_01meta_1_1void__t_3_01meta_1_1use__if__sa2db29f6d65d34ecf5e49ec30b6600d78}{utl\+::spi\+\_\+i\+\_\+details\+::is\+\_\+spi\+\_\+$<$ \+\_\+\+Tp, meta\+::void\+\_\+t$<$ meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cclock\+\_\+t$<$ \+\_\+\+Tp $>$, uint32\+\_\+t $>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+clock\+\_\+t$<$ \+\_\+\+Tp $>$, void $>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+tx\+\_\+t$<$ \+\_\+\+Tp $>$, byte\+\_\+t $>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+rx\+\_\+t$<$ \+\_\+\+Tp $>$, byte\+\_\+t $>$ $>$ $>$}} +\begin{DoxyCompactList}\small\item\em template to catch a proper S\+PI interface type \end{DoxyCompactList}\end{DoxyCompactItemize} +\subsection*{Namespaces} +\begin{DoxyCompactItemize} +\item + \mbox{\hyperlink{namespaceutl}{utl}} +\begin{DoxyCompactList}\small\item\em S\+TL\textquotesingle{}s core language concepts. \end{DoxyCompactList}\item + \mbox{\hyperlink{namespaceutl_1_1spi}{utl\+::spi}} +\begin{DoxyCompactList}\small\item\em Abstract base class for spi bus. \end{DoxyCompactList}\item + \mbox{\hyperlink{namespaceutl_1_1spi__i__details}{utl\+::spi\+\_\+i\+\_\+details}} +\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1spi__i__details_ae1a4fad6acf8faccc5e85ee9b710c109}{utl\+::spi\+\_\+i\+\_\+details\+::try\+\_\+cclock\+\_\+t}} = decltype(declval$<$ const \+\_\+\+Tp $>$().clock()) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1spi__i__details_af2f4800aa77af82767a3ac55b9b242a6}{utl\+::spi\+\_\+i\+\_\+details\+::try\+\_\+clock\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().clock(declval$<$ uint32\+\_\+t $>$())) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1spi__i__details_a755d8f10cfde3f5c3b9900eb11c858bd}{utl\+::spi\+\_\+i\+\_\+details\+::try\+\_\+tx\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().tx\+\_\+data(declval$<$ byte\+\_\+t $>$())) +\item +{\footnotesize template$<$class \+\_\+\+Tp $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1spi__i__details_a4dcf3c71fddf790e45a3be2c19906c97}{utl\+::spi\+\_\+i\+\_\+details\+::try\+\_\+rx\+\_\+t}} = decltype(declval$<$ \+\_\+\+Tp $>$().rx\+\_\+data()) +\end{DoxyCompactItemize} +\subsection*{Enumerations} +\begin{DoxyCompactItemize} +\item +enum \mbox{\hyperlink{namespaceutl_1_1spi_aed6b713381c193c598572ebac0b284cc}{utl\+::spi\+::bit\+Order}} \{ \mbox{\hyperlink{namespaceutl_1_1spi_aed6b713381c193c598572ebac0b284cca6db67adee32c3bd4ff03acf3244e1b4b}{utl\+::spi\+::bit\+Order\+::\+L\+S\+B\+\_\+\+First}} =0x01, +\mbox{\hyperlink{namespaceutl_1_1spi_aed6b713381c193c598572ebac0b284cca47bde70fdcc82c8363d16c7137641b79}{utl\+::spi\+::bit\+Order\+::\+M\+S\+B\+\_\+\+First}} =0x80 + \} +\item +enum \mbox{\hyperlink{namespaceutl_1_1spi_a89e3e1af5df0b6c37239f7e336969f8a}{utl\+::spi\+::cpol}} \{ \mbox{\hyperlink{namespaceutl_1_1spi_a89e3e1af5df0b6c37239f7e336969f8aa41bc94cbd8eebea13ce0491b2ac11b88}{utl\+::spi\+::cpol\+::\+L\+OW}} =0, +\mbox{\hyperlink{namespaceutl_1_1spi_a89e3e1af5df0b6c37239f7e336969f8aab89de3b4b81c4facfac906edf29aec8c}{utl\+::spi\+::cpol\+::\+H\+I\+GH}} + \} +\item +enum \mbox{\hyperlink{namespaceutl_1_1spi_aa49fe33d495226891cef0a870cba59df}{utl\+::spi\+::cpha}} \{ \mbox{\hyperlink{namespaceutl_1_1spi_aa49fe33d495226891cef0a870cba59dfa41bc94cbd8eebea13ce0491b2ac11b88}{utl\+::spi\+::cpha\+::\+L\+OW}} =0, +\mbox{\hyperlink{namespaceutl_1_1spi_aa49fe33d495226891cef0a870cba59dfab89de3b4b81c4facfac906edf29aec8c}{utl\+::spi\+::cpha\+::\+H\+I\+GH}} + \} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +An Abstract base class interface for the spi bus. + +Copyright (C) 2018 Christos Choutouridis + +This program is free software\+: you can redistribute it and/or modify it under the terms of the G\+NU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but W\+I\+T\+H\+O\+UT A\+NY W\+A\+R\+R\+A\+N\+TY; without even the implied warranty of M\+E\+R\+C\+H\+A\+N\+T\+A\+B\+I\+L\+I\+TY or F\+I\+T\+N\+E\+SS F\+OR A P\+A\+R\+T\+I\+C\+U\+L\+AR P\+U\+R\+P\+O\+SE. See the G\+NU Lesser General Public License for more details. + +You should have received a copy of the G\+NU Lesser General Public License along with this program. If not, see \href{http://www.gnu.org/licenses/}{\tt http\+://www.\+gnu.\+org/licenses/}. \ No newline at end of file diff --git a/doc/latex/spi__bb_8h.tex b/doc/latex/spi__bb_8h.tex new file mode 100644 index 0000000..7135926 --- /dev/null +++ b/doc/latex/spi__bb_8h.tex @@ -0,0 +1,35 @@ +\hypertarget{spi__bb_8h}{}\section{include/utl/com/spi\+\_\+bb.h File Reference} +\label{spi__bb_8h}\index{include/utl/com/spi\+\_\+bb.\+h@{include/utl/com/spi\+\_\+bb.\+h}} + + +A bit banking implementation of spi bus inherited from spi\+\_\+i base class. + + +{\ttfamily \#include $<$utl/core/impl.\+h$>$}\newline +{\ttfamily \#include $<$utl/core/crtp.\+h$>$}\newline +{\ttfamily \#include $<$utl/com/spi.\+h$>$}\newline +{\ttfamily \#include $<$utl/meta/meta.\+h$>$}\newline +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +class \mbox{\hyperlink{classutl_1_1spi__bb__i}{utl\+::spi\+\_\+bb\+\_\+i$<$ impl\+\_\+t, C\+P\+O\+L, C\+P\+H\+A, Bit\+Order $>$}} +\begin{DoxyCompactList}\small\item\em A bit banking implementation of spi bus inherited from \mbox{\hyperlink{classutl_1_1spi__i}{spi\+\_\+i}} base class. \end{DoxyCompactList}\item +class \mbox{\hyperlink{classutl_1_1spi__bb__i_3_01virtual__tag_00_01_c_p_o_l_00_01_c_p_h_a_00_01_bit_order_01_4}{utl\+::spi\+\_\+bb\+\_\+i$<$ virtual\+\_\+tag, C\+P\+O\+L, C\+P\+H\+A, Bit\+Order $>$}} +\begin{DoxyCompactList}\small\item\em A virtual base class interface specialization. Using the private virtual interface we provide the interface from \mbox{\hyperlink{classutl_1_1spi__i_3_01virtual__tag_01_4}{spi\+\_\+i$<$virtual\+\_\+tag$>$}} \end{DoxyCompactList}\end{DoxyCompactItemize} +\subsection*{Namespaces} +\begin{DoxyCompactItemize} +\item + \mbox{\hyperlink{namespaceutl}{utl}} +\begin{DoxyCompactList}\small\item\em S\+TL\textquotesingle{}s core language concepts. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +A bit banking implementation of spi bus inherited from spi\+\_\+i base class. + +Copyright (C) 2018 Christos Choutouridis + +This program is free software\+: you can redistribute it and/or modify it under the terms of the G\+NU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but W\+I\+T\+H\+O\+UT A\+NY W\+A\+R\+R\+A\+N\+TY; without even the implied warranty of M\+E\+R\+C\+H\+A\+N\+T\+A\+B\+I\+L\+I\+TY or F\+I\+T\+N\+E\+SS F\+OR A P\+A\+R\+T\+I\+C\+U\+L\+AR P\+U\+R\+P\+O\+SE. See the G\+NU Lesser General Public License for more details. + +You should have received a copy of the G\+NU Lesser General Public License along with this program. If not, see \href{http://www.gnu.org/licenses/}{\tt http\+://www.\+gnu.\+org/licenses/}. \ No newline at end of file diff --git a/doc/latex/stl_8h.tex b/doc/latex/stl_8h.tex new file mode 100644 index 0000000..b81f919 --- /dev/null +++ b/doc/latex/stl_8h.tex @@ -0,0 +1,227 @@ +\hypertarget{stl_8h}{}\section{include/utl/concepts/stl.h File Reference} +\label{stl_8h}\index{include/utl/concepts/stl.\+h@{include/utl/concepts/stl.\+h}} + + +S\+TL\textquotesingle{}s Concepts. + + +{\ttfamily \#include $<$utl/core/impl.\+h$>$}\newline +{\ttfamily \#include $<$utl/meta/meta.\+h$>$}\newline +{\ttfamily \#include $<$utl/utility/invoke.\+h$>$}\newline +{\ttfamily \#include $<$utl/concepts/defines.\+h$>$}\newline +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____copy__cv__}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+copy\+\_\+cv\+\_\+$<$ From $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____copy__cv___3_01const_01_from_01_4}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+copy\+\_\+cv\+\_\+$<$ const From $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____copy__cv___3_01volatile_01_from_01_4}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+copy\+\_\+cv\+\_\+$<$ volatile From $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____copy__cv___3_01const_01volatile_01_from_01_4}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+copy\+\_\+cv\+\_\+$<$ const volatile From $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____common__ref__}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T, U, class $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_00_01meta_1_1void__t_3_05e5aa384829bb34312a7b8ee4ecaa00f}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T \&, U \&, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+lref\+\_\+res$<$ T, U $>$, meta\+::when$<$ std\+::is\+\_\+reference$<$ \+\_\+\+\_\+lref\+\_\+res$<$ T, U $>$ $>$\+::value $>$ $>$ $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_6_00_01meta_1_1void__tc4e71c227f251cadf0e0fb7b1ba6f1e9}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T \&\&, U \&\&, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+common\+\_\+ref$<$ T \&, U \& $>$, meta\+::when$<$ Convertible\+To$<$ T \&\&, \+\_\+\+\_\+rref\+\_\+res$<$ T, U $>$ $>$ $>$, meta\+::when$<$ Convertible\+To$<$ U \&\&, \+\_\+\+\_\+rref\+\_\+res$<$ T, U $>$ $>$ $>$ $>$ $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_00_01meta_1_1void__t_3972a8d6e6799b6ee6537c969cdced343}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T \&\&, U \&, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+common\+\_\+ref$<$ const T \&, U \& $>$, meta\+::when$<$ Convertible\+To$<$ T \&\&, \+\_\+\+\_\+common\+\_\+ref$<$ const T \&, U \& $>$ $>$ $>$ $>$ $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_6_00_01meta_1_1void__t_329fba5aeac3b93aa9cfa5aa7e282e196}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T \&, U \&\&, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+common\+\_\+ref$<$ T \&, const U \& $>$, meta\+::when$<$ Convertible\+To$<$ U \&\&, \+\_\+\+\_\+common\+\_\+ref$<$ T \&, const U \& $>$ $>$ $>$ $>$ $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____xref}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ class $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____xref_3_01const_01_t_01_4}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ const T $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____xref_3_01volatile_01_t_01_4}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ volatile T $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____xref_3_01const_01volatile_01_t_01_4}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ const volatile T $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____xref_3_01_t_01_6_01_4}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ T \& $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____xref_3_01_t_01_6_6_01_4}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ T \&\& $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1common__impl_1_1basic__common__reference}{utl\+::common\+\_\+impl\+::basic\+\_\+common\+\_\+reference$<$ class, class, class, class $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1common__impl_1_1common__reference}{utl\+::common\+\_\+impl\+::common\+\_\+reference$<$... $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1common__impl_1_1common__reference_3_01_t_01_4}{utl\+::common\+\_\+impl\+::common\+\_\+reference$<$ T $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____common__reference3}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+reference3$<$ T, U,... $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____common__reference3_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____015b01ed12d2d90ee57fbf756ab847e9}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+reference3$<$ T, U, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+cond\+\_\+res$<$ T, U $>$ $>$ $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____common__reference2}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+reference2$<$ T, U,... $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____common__reference2_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____785d0aa2f8a62416e19573fcbdd83836}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+reference2$<$ T, U, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+basic\+\_\+common\+\_\+reference\+\_\+t$<$ T, U $>$ $>$ $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____common__reference}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+reference$<$ T, U,... $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1common__impl_1_1____common__reference_3_01_t_00_01_u_00_01meta_1_1when_3_01std_1_1i23b95b4b3a65ce598dbcc7f52e9dab2c}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+reference$<$ T, U, meta\+::when$<$ std\+::is\+\_\+reference$<$ T $>$\+::value \&\&std\+::is\+\_\+reference$<$ U $>$\+::value $>$ $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_01_4}{utl\+::common\+\_\+impl\+::common\+\_\+reference$<$ T, U $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_00_01_v_00_01_w_8_8_8_01_4}{utl\+::common\+\_\+impl\+::common\+\_\+reference$<$ T, U, V, W... $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1details_1_1is__boolean__}{utl\+::details\+::is\+\_\+boolean\+\_\+$<$ B, typename $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1details_1_1is__boolean___3_01_b_00_01meta_1_1void__t_3_01meta_1_1use__if__same__t_37e77ed45a431955fc15b4c1210ad8491}{utl\+::details\+::is\+\_\+boolean\+\_\+$<$ B, meta\+::void\+\_\+t$<$ meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(!std\+::declval$<$ cref\+\_\+$<$ B $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ B $>$$>$()==std\+::declval$<$ cref\+\_\+$<$ B $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ B $>$$>$() !=std\+::declval$<$ cref\+\_\+$<$ B $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ B $>$$>$() \&\&std\+::declval$<$ cref\+\_\+$<$ B $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ B $>$$>$()$\vert$$\vert$std\+::declval$<$ cref\+\_\+$<$ B $>$$>$())$>$ $>$ $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1details_1_1is__weakly__equality__comparable__with__}{utl\+::details\+::is\+\_\+weakly\+\_\+equality\+\_\+comparable\+\_\+with\+\_\+$<$ T, U, typename $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1details_1_1is__weakly__equality__comparable__with___3_01_t_00_01_u_00_01meta_1_1voi4404f901930622694666ca68fb75381b}{utl\+::details\+::is\+\_\+weakly\+\_\+equality\+\_\+comparable\+\_\+with\+\_\+$<$ T, U, meta\+::void\+\_\+t$<$ meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$()==std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$() !=std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$()==std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$() !=std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$ $>$ $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1details_1_1is__strict__totally__ordered__}{utl\+::details\+::is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+$<$ T, typename $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1details_1_1is__strict__totally__ordered___3_01_t_00_01meta_1_1void__t_3_01meta_1_1uab48bcfc89164f446368b35bcc7c8bcd}{utl\+::details\+::is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+$<$ T, meta\+::void\+\_\+t$<$ meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$()$<$ std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$() $>$ std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$()$<$=std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$() $>$=std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$ $>$ $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1details_1_1is__strict__totally__ordered__with__}{utl\+::details\+::is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+with\+\_\+$<$ T, U, typename $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1details_1_1is__strict__totally__ordered__with___3_01_t_00_01_u_00_01meta_1_1void__t8fb7dd5a6ad25952241e37c6f163f434}{utl\+::details\+::is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+with\+\_\+$<$ T, U, meta\+::void\+\_\+t$<$ meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$()$<$ std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$() $>$ std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$()$<$=std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$() $>$=std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$()$<$ std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$() $>$ std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$()$<$=std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$() $>$=std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$ $>$ $>$}} +\end{DoxyCompactItemize} +\subsection*{Namespaces} +\begin{DoxyCompactItemize} +\item + \mbox{\hyperlink{namespaceutl}{utl}} +\begin{DoxyCompactList}\small\item\em S\+TL\textquotesingle{}s core language concepts. \end{DoxyCompactList}\item + \mbox{\hyperlink{namespaceutl_1_1common__impl}{utl\+::common\+\_\+impl}} +\item + \mbox{\hyperlink{namespaceutl_1_1details}{utl\+::details}} +\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename T $>$ }\\using \mbox{\hyperlink{namespaceutl_a7a9d26263662e02fbe3b238da5fd7338}{utl\+::remove\+\_\+cvref\+\_\+t}} = std\+::remove\+\_\+cv\+\_\+t$<$ std\+::remove\+\_\+reference\+\_\+t$<$ T $>$ $>$ +\item +{\footnotesize template$<$typename T $>$ }\\using \mbox{\hyperlink{namespaceutl_a7d69beba08b81379703fd3b0ca42044d}{utl\+::cref\+\_\+}} = const std\+::remove\+\_\+reference\+\_\+t$<$ T $>$ \& +\item +{\footnotesize template$<$typename T $>$ }\\using \mbox{\hyperlink{namespaceutl_aa3f95fc48a94b2fae3c2959b7c024998}{utl\+::\+\_\+ref\+\_\+t}} = std\+::add\+\_\+lvalue\+\_\+reference\+\_\+t$<$ T $>$ +\item +{\footnotesize template$<$typename \+\_\+\+T1 , typename \+\_\+\+T2 , typename \+\_\+\+Ret = \+\_\+\+T1$>$ }\\using \mbox{\hyperlink{namespaceutl_ac5e425d39e8ee62e68664c6166d02d0c}{utl\+::use\+\_\+if\+\_\+same\+\_\+t}} = meta\+::eval$<$ meta\+::enable\+\_\+if$<$ meta\+::same\+\_\+$<$ \+\_\+\+T1, \+\_\+\+T2 $>$\+::value, \+\_\+\+Ret $>$ $>$ +\item +{\footnotesize template$<$class T , class U $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1common__impl_ab43a461d352a35dc1b3de39bfe17e38b}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+cond\+\_\+res}} = decltype(false ? std\+::declval$<$ T(\&)()$>$()() \+:std\+::declval$<$ U(\&)()$>$()()) +\item +{\footnotesize template$<$class From , class To $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1common__impl_aed700217ef1518692242c1059f3dff27}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+copy\+\_\+cv}} = meta\+::invoke$<$ \+\_\+\+\_\+copy\+\_\+cv\+\_\+$<$ From $>$, To $>$ +\item +{\footnotesize template$<$class T $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1common__impl_a3d7922723a5d41f399f3c8a99e016e73}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+cref}} = std\+::add\+\_\+lvalue\+\_\+reference\+\_\+t$<$ const std\+::remove\+\_\+reference\+\_\+t$<$ T $>$ $>$ +\item +{\footnotesize template$<$class T , class U $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1common__impl_a8913f9d610ed8720c817081662fa9f1f}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+ref}} = meta\+::eval$<$ \+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T, U $>$ $>$ +\item +{\footnotesize template$<$class T , class U $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1common__impl_ae2f3d56c7e5144e099cdf37b19523290}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+lref\+\_\+res}} = \+\_\+\+\_\+cond\+\_\+res$<$ \+\_\+\+\_\+copy\+\_\+cv$<$ T, U $>$ \&, \+\_\+\+\_\+copy\+\_\+cv$<$ U, T $>$ \&$>$ +\item +{\footnotesize template$<$class T , class U , class R = \+\_\+\+\_\+common\+\_\+ref$<$\+T\&, U\&$>$$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1common__impl_a312c9f3e740103f831a49624097948f5}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+rref\+\_\+res}} = std\+::remove\+\_\+reference\+\_\+t$<$ R $>$ \&\& +\item +{\footnotesize template$<$class T , class U $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1common__impl_a3bbe5eb74a1c6017f60e3034519d69d6}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+basic\+\_\+common\+\_\+reference\+\_\+t}} = meta\+::eval$<$ basic\+\_\+common\+\_\+reference$<$ remove\+\_\+cvref\+\_\+t$<$ T $>$, remove\+\_\+cvref\+\_\+t$<$ U $>$, \+\_\+\+\_\+xref$<$ T $>$\+::template apply, \+\_\+\+\_\+xref$<$ U $>$\+::template apply $>$ $>$ +\item +{\footnotesize template$<$class... Ts$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1common__impl_adc4b085a84c0355fda341475074ff230}{utl\+::common\+\_\+impl\+::common\+\_\+reference\+\_\+t}} = meta\+::eval$<$ common\+\_\+reference$<$ Ts... $>$ $>$ +\item +{\footnotesize template$<$typename B $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1details_a7f9309206778a6e9f0859c328b4288df}{utl\+::details\+::is\+\_\+boolean\+\_\+t}} = meta\+::eval$<$ is\+\_\+boolean\+\_\+$<$ B $>$ $>$ +\item +{\footnotesize template$<$typename T , typename U $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1details_a499205eb8ca7f46d1e417a27f52442b8}{utl\+::details\+::is\+\_\+weakly\+\_\+equality\+\_\+comparable\+\_\+with\+\_\+t}} = meta\+::eval$<$ is\+\_\+weakly\+\_\+equality\+\_\+comparable\+\_\+with\+\_\+$<$ T, U $>$ $>$ +\item +{\footnotesize template$<$typename T $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1details_a3d90ca0461264f84f75c7698f7bbb811}{utl\+::details\+::is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+t}} = meta\+::eval$<$ is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+$<$ T $>$ $>$ +\item +{\footnotesize template$<$typename T , typename U $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1details_acd9fac18316e44b7abd920686de886f0}{utl\+::details\+::is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+with\+\_\+t}} = meta\+::eval$<$ is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+with\+\_\+$<$ T, U $>$ $>$ +\end{DoxyCompactItemize} +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename... Ts$>$ }\\using \mbox{\hyperlink{namespaceutl_a3970b90f0e0fd9f801cfcb1d955e3d42}{utl\+::common\+\_\+reference}} = common\+\_\+impl\+::common\+\_\+reference$<$ Ts... $>$ +\item +{\footnotesize template$<$typename... Ts$>$ }\\using \mbox{\hyperlink{namespaceutl_a4d76d9e29b830c16ad7dd34e3800a746}{utl\+::common\+\_\+reference\+\_\+t}} = meta\+::eval$<$ common\+\_\+reference$<$ Ts... $>$ $>$ +\end{DoxyCompactItemize} + +\subsection*{Variables} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$class T , class U $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_af86da3571c3026c6bbd501c6b7bc5093}{utl\+::\+Same}} = meta\+::same\+\_\+$<$T, U$>$\+::value +\item +{\footnotesize template$<$class Derived , class Base $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a0904cc4071a8ea97a1d646dc0a9ca85b}{utl\+::\+Derived\+From}} +\item +{\footnotesize template$<$class From , class To $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a9c88a03a5b6dd66200e86f98fb1eb9eb}{utl\+::\+Convertible\+To}} = std\+::is\+\_\+convertible$<$From, To$>$\+::value +\item +{\footnotesize template$<$class T , class U $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a1cc37f121888dcc030b8e676b077024f}{utl\+::\+Common\+Reference}} +\item +{\footnotesize template$<$class T , class U $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a79e23f98aa58c2dcd111743a096ef092}{utl\+::\+Common}} +\item +{\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_ada9137016ddccf3339b2f6b3c409cc3c}{utl\+::\+Integral}} = std\+::is\+\_\+integral$<$T$>$\+::value +\item +{\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a667b758d906c466d1b8a878a45750bf1}{utl\+::\+Signed\+Integral}} = Integral$<$T$>$ \&\& std\+::is\+\_\+signed$<$T$>$\+::value +\item +{\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a7fb6eaf8fc1c5d65755c8c96a7a9b61f}{utl\+::\+Unsigned\+Integral}} = Integral$<$T$>$ \&\& !std\+::is\+\_\+signed$<$T$>$\+::value +\item +{\footnotesize template$<$typename T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a7b8e4a26148ed5f2c60e4fd7d41e7e63}{utl\+::\+Move\+Assignable}} = std\+::is\+\_\+move\+\_\+assignable$<$T$>$\+::value +\item +{\footnotesize template$<$typename T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a1be866c815c4fcb2a7344650c3491c0c}{utl\+::\+Copy\+Assignable}} = std\+::is\+\_\+copy\+\_\+assignable$<$T$>$\+::value +\item +{\footnotesize template$<$class L\+HS , class R\+HS $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_acfbced82f83ceb87eeb77d31941c011a}{utl\+::\+Assignable}} +\item +{\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_acf2f1df100b0cc4f127243a1a83a8469}{utl\+::\+Destructible}} = std\+::is\+\_\+nothrow\+\_\+destructible$<$T$>$\+::value +\item +{\footnotesize template$<$class T , class... Args$>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a2a3ef7a9c788ffc1291ce15d2e5869bf}{utl\+::\+Constructible}} +\item +{\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_aacd3a17129d764e8a80c615eb4b88dc3}{utl\+::\+Default\+Constructible}} = Constructible$<$T$>$ +\item +{\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a2a728f3d477d96f4f719bf62079321cf}{utl\+::\+Move\+Constructible}} +\item +{\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_afb0f121b33b44640406b724c4d582b70}{utl\+::\+Copy\+Constructible}} +\item +{\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_afc25cb525eb29162042c21238f28f26e}{utl\+::\+Movable}} +\item +{\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_ac300f0e204f0ec4bd0ca38a551bb2b88}{utl\+::\+Copyable}} +\item +{\footnotesize template$<$class B $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a38e00606b4b45a2ac59fa4576b4498c6}{utl\+::\+Boolean}} +\item +{\footnotesize template$<$class T , class U $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a216f6e14ca647d85841fa13c40dc4ee3}{utl\+::\+Weakly\+Equality\+Comparable\+With}} +\item +{\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a92a38a3d1638ccad068c24d1242ef63a}{utl\+::\+Equality\+Comparable}} = Weakly\+Equality\+Comparable\+With$<$T, T$>$ +\item +{\footnotesize template$<$class T , class U $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_aa2be0b64c41b392c5264de5f5fee094e}{utl\+::\+Equality\+Comparable\+With}} +\item +{\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a720d6ece86f3f3320816aaae02eb16e4}{utl\+::\+Strict\+Totally\+Ordered}} +\item +{\footnotesize template$<$class T , class U $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a5599d14d1bd008e4c14787d610a2b429}{utl\+::\+Strict\+Totally\+Ordered\+With}} +\item +{\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_af6b010e85897cb590e66a52157be1af5}{utl\+::\+Semiregular}} = Copyable$<$T$>$ \&\& Default\+Constructible$<$T$>$ +\item +{\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a3accaa436a17248b4214baebc582b2f6}{utl\+::\+Regular}} = Semiregular$<$T$>$ \&\& Equality\+Comparable$<$T$>$ +\item +{\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a7f86c4bf42b13d9525481d731b194308}{utl\+::\+Scalar}} +\item +{\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a41733496c30138efd3d88f13d9382aad}{utl\+::\+Arithmetic}} +\item +{\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a07e83d4763a298c1faf2b1069b55e286}{utl\+::\+Floating\+Point}} +\item +{\footnotesize template$<$class F , class... Args$>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a9d5bbdf19b08d6d714ec696b0ec44d0a}{utl\+::\+Invocable}} = is\+\_\+invocable$<$F, Args...$>$\+::value +\item +{\footnotesize template$<$class F , class... Args$>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_ace9ef6da96e8cf5dc72762cd66240186}{utl\+::\+Regular\+Invocable}} = Invocable$<$F, Args...$>$ +\item +{\footnotesize template$<$class F , class... Args$>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_aae56a019cdd2006c4f07d2e207289195}{utl\+::\+Predicate}} +\item +{\footnotesize template$<$class R , class T , class U $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a6d1e9b4853dd005ddaf61a79333cab98}{utl\+::\+Relation}} +\item +{\footnotesize template$<$class R , class T , class U $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_aa4b7b9105cfab3cd72865b5e0db23b11}{utl\+::\+Strict\+Weak\+Order}} = Relation$<$R, T, U$>$ +\end{DoxyCompactItemize} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{namespaceutl_a1d50e9abd420e77555624f3e52bc7479}{utl\+::is\+\_\+swappable}} = std\+::is\+\_\+swappable +\item +using \mbox{\hyperlink{namespaceutl_ab437a6d3a1f420b44e01378ae37fcb24}{utl\+::is\+\_\+swappable\+\_\+with}} = std\+::is\+\_\+swappable\+\_\+with +\item +{\footnotesize template$<$class T , class U $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_a4a3bb850ba59d499382bd11153104af7}{utl\+::\+Swappable\+With}} +\item +{\footnotesize template$<$class T $>$ }\\\mbox{\hyperlink{group__concepts_gaf81026787698cd63592563ab8223062b}{\+\_\+utl\+Concept}} \mbox{\hyperlink{namespaceutl_ae2b149b19fb3d69a4fc555e4474bf9de}{utl\+::\+Swappable}} = is\+\_\+swappable\+\_\+with$<$T, T$>$\+::type\+::value +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +S\+TL\textquotesingle{}s Concepts. + +Copyright (C) 2018 -\/ 2019 Christos Choutouridis + +This program is free software\+: you can redistribute it and/or modify it under the terms of the G\+NU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but W\+I\+T\+H\+O\+UT A\+NY W\+A\+R\+R\+A\+N\+TY; without even the implied warranty of M\+E\+R\+C\+H\+A\+N\+T\+A\+B\+I\+L\+I\+TY or F\+I\+T\+N\+E\+SS F\+OR A P\+A\+R\+T\+I\+C\+U\+L\+AR P\+U\+R\+P\+O\+SE. See the G\+NU Lesser General Public License for more details. + +You should have received a copy of the G\+NU Lesser General Public License along with this program. If not, see \href{http://www.gnu.org/licenses/}{\tt http\+://www.\+gnu.\+org/licenses/}. \ No newline at end of file diff --git a/doc/latex/struct_tmeta_basic_1_1_identity.tex b/doc/latex/struct_tmeta_basic_1_1_identity.tex new file mode 100644 index 0000000..fd2d835 --- /dev/null +++ b/doc/latex/struct_tmeta_basic_1_1_identity.tex @@ -0,0 +1,36 @@ +\hypertarget{struct_tmeta_basic_1_1_identity}{}\section{Tmeta\+Basic\+:\+:Identity$<$ T $>$ Struct Template Reference} +\label{struct_tmeta_basic_1_1_identity}\index{Tmeta\+Basic\+::\+Identity$<$ T $>$@{Tmeta\+Basic\+::\+Identity$<$ T $>$}} +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{struct_tmeta_basic_1_1_identity_a9ab7e06acd9e4e822d8b925fd7749b5e}{type}} = T +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class T$>$\newline +struct Tmeta\+Basic\+::\+Identity$<$ T $>$} + + + +Definition at line 32 of file Tmeta\+Basic.\+cpp. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{struct_tmeta_basic_1_1_identity_a9ab7e06acd9e4e822d8b925fd7749b5e}\label{struct_tmeta_basic_1_1_identity_a9ab7e06acd9e4e822d8b925fd7749b5e}} +\index{Tmeta\+Basic\+::\+Identity@{Tmeta\+Basic\+::\+Identity}!type@{type}} +\index{type@{type}!Tmeta\+Basic\+::\+Identity@{Tmeta\+Basic\+::\+Identity}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$class T $>$ \\ +using \mbox{\hyperlink{struct_tmeta_basic_1_1_identity}{Tmeta\+Basic\+::\+Identity}}$<$ T $>$\+::\mbox{\hyperlink{struct_tmeta_basic_1_1_identity_a9ab7e06acd9e4e822d8b925fd7749b5e}{type}} = T} + + + +Definition at line 33 of file Tmeta\+Basic.\+cpp. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/tests/\mbox{\hyperlink{_tmeta_basic_8cpp}{Tmeta\+Basic.\+cpp}}\end{DoxyCompactItemize} diff --git a/doc/latex/struct_tmeta_detection_1_1_a.tex b/doc/latex/struct_tmeta_detection_1_1_a.tex new file mode 100644 index 0000000..165239b --- /dev/null +++ b/doc/latex/struct_tmeta_detection_1_1_a.tex @@ -0,0 +1,85 @@ +\hypertarget{struct_tmeta_detection_1_1_a}{}\section{Tmeta\+Detection\+:\+:A$<$ T $>$ Struct Template Reference} +\label{struct_tmeta_detection_1_1_a}\index{Tmeta\+Detection\+::\+A$<$ T $>$@{Tmeta\+Detection\+::\+A$<$ T $>$}} +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{struct_tmeta_detection_1_1_a_abb4c8bfc99b5eda5cf4022aebe3ce14c}{type}} = T +\end{DoxyCompactItemize} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{struct_tmeta_detection_1_1_a_a370babd29cb6d649218312629232ca2e}{A}} (int i, double d) +\item +\mbox{\hyperlink{struct_tmeta_detection_1_1_a}{A}} \& \mbox{\hyperlink{struct_tmeta_detection_1_1_a_a8d9dcbc3f32ae8c0a881855f6a589e5a}{operator++}} () +\item +{\footnotesize template$<$typename TT = T, typename = when$<$std\+::is\+\_\+integral$<$\+T\+T$>$\+::type\+::value$>$$>$ }\\TT \mbox{\hyperlink{struct_tmeta_detection_1_1_a_ada3b575458a82b475f0c11dc2187af3c}{sfun}} () +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T$>$\newline +struct Tmeta\+Detection\+::\+A$<$ T $>$} + + + +Definition at line 34 of file Tmeta\+Detection.\+cpp. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{struct_tmeta_detection_1_1_a_abb4c8bfc99b5eda5cf4022aebe3ce14c}\label{struct_tmeta_detection_1_1_a_abb4c8bfc99b5eda5cf4022aebe3ce14c}} +\index{Tmeta\+Detection\+::A@{Tmeta\+Detection\+::A}!type@{type}} +\index{type@{type}!Tmeta\+Detection\+::A@{Tmeta\+Detection\+::A}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +using \mbox{\hyperlink{struct_tmeta_detection_1_1_a}{Tmeta\+Detection\+::A}}$<$ T $>$\+::\mbox{\hyperlink{struct_tmeta_detection_1_1_a_abb4c8bfc99b5eda5cf4022aebe3ce14c}{type}} = T} + + + +Definition at line 35 of file Tmeta\+Detection.\+cpp. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{struct_tmeta_detection_1_1_a_a370babd29cb6d649218312629232ca2e}\label{struct_tmeta_detection_1_1_a_a370babd29cb6d649218312629232ca2e}} +\index{Tmeta\+Detection\+::A@{Tmeta\+Detection\+::A}!A@{A}} +\index{A@{A}!Tmeta\+Detection\+::A@{Tmeta\+Detection\+::A}} +\subsubsection{\texorpdfstring{A()}{A()}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +\mbox{\hyperlink{struct_tmeta_detection_1_1_a}{Tmeta\+Detection\+::A}}$<$ T $>$\+::\mbox{\hyperlink{struct_tmeta_detection_1_1_a}{A}} (\begin{DoxyParamCaption}\item[{int}]{i, }\item[{double}]{d }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 36 of file Tmeta\+Detection.\+cpp. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{struct_tmeta_detection_1_1_a_a8d9dcbc3f32ae8c0a881855f6a589e5a}\label{struct_tmeta_detection_1_1_a_a8d9dcbc3f32ae8c0a881855f6a589e5a}} +\index{Tmeta\+Detection\+::A@{Tmeta\+Detection\+::A}!operator++@{operator++}} +\index{operator++@{operator++}!Tmeta\+Detection\+::A@{Tmeta\+Detection\+::A}} +\subsubsection{\texorpdfstring{operator++()}{operator++()}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +\mbox{\hyperlink{struct_tmeta_detection_1_1_a}{A}}\& \mbox{\hyperlink{struct_tmeta_detection_1_1_a}{Tmeta\+Detection\+::A}}$<$ T $>$\+::operator++ (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 37 of file Tmeta\+Detection.\+cpp. + +\mbox{\Hypertarget{struct_tmeta_detection_1_1_a_ada3b575458a82b475f0c11dc2187af3c}\label{struct_tmeta_detection_1_1_a_ada3b575458a82b475f0c11dc2187af3c}} +\index{Tmeta\+Detection\+::A@{Tmeta\+Detection\+::A}!sfun@{sfun}} +\index{sfun@{sfun}!Tmeta\+Detection\+::A@{Tmeta\+Detection\+::A}} +\subsubsection{\texorpdfstring{sfun()}{sfun()}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +template$<$typename TT = T, typename = when$<$std\+::is\+\_\+integral$<$\+T\+T$>$\+::type\+::value$>$$>$ \\ +TT \mbox{\hyperlink{struct_tmeta_detection_1_1_a}{Tmeta\+Detection\+::A}}$<$ T $>$\+::sfun (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 41 of file Tmeta\+Detection.\+cpp. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/tests/\mbox{\hyperlink{_tmeta_detection_8cpp}{Tmeta\+Detection.\+cpp}}\end{DoxyCompactItemize} diff --git a/doc/latex/struct_tmeta_detection_1_1_bar.tex b/doc/latex/struct_tmeta_detection_1_1_bar.tex new file mode 100644 index 0000000..3eb57a7 --- /dev/null +++ b/doc/latex/struct_tmeta_detection_1_1_bar.tex @@ -0,0 +1,14 @@ +\hypertarget{struct_tmeta_detection_1_1_bar}{}\section{Tmeta\+Detection\+:\+:Bar Struct Reference} +\label{struct_tmeta_detection_1_1_bar}\index{Tmeta\+Detection\+::\+Bar@{Tmeta\+Detection\+::\+Bar}} + + +\subsection{Detailed Description} + + +Definition at line 32 of file Tmeta\+Detection.\+cpp. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/tests/\mbox{\hyperlink{_tmeta_detection_8cpp}{Tmeta\+Detection.\+cpp}}\end{DoxyCompactItemize} diff --git a/doc/latex/struct_tmeta_detection_1_1_foo.tex b/doc/latex/struct_tmeta_detection_1_1_foo.tex new file mode 100644 index 0000000..082d298 --- /dev/null +++ b/doc/latex/struct_tmeta_detection_1_1_foo.tex @@ -0,0 +1,14 @@ +\hypertarget{struct_tmeta_detection_1_1_foo}{}\section{Tmeta\+Detection\+:\+:Foo Struct Reference} +\label{struct_tmeta_detection_1_1_foo}\index{Tmeta\+Detection\+::\+Foo@{Tmeta\+Detection\+::\+Foo}} + + +\subsection{Detailed Description} + + +Definition at line 31 of file Tmeta\+Detection.\+cpp. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/tests/\mbox{\hyperlink{_tmeta_detection_8cpp}{Tmeta\+Detection.\+cpp}}\end{DoxyCompactItemize} diff --git a/doc/latex/struct_tmeta_detection_1_1m_fun.tex b/doc/latex/struct_tmeta_detection_1_1m_fun.tex new file mode 100644 index 0000000..7d19798 --- /dev/null +++ b/doc/latex/struct_tmeta_detection_1_1m_fun.tex @@ -0,0 +1,36 @@ +\hypertarget{struct_tmeta_detection_1_1m_fun}{}\section{Tmeta\+Detection\+:\+:m\+Fun$<$ T1, T2 $>$ Struct Template Reference} +\label{struct_tmeta_detection_1_1m_fun}\index{Tmeta\+Detection\+::m\+Fun$<$ T1, T2 $>$@{Tmeta\+Detection\+::m\+Fun$<$ T1, T2 $>$}} +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{struct_tmeta_detection_1_1m_fun_a27c6b961c5aad1b23c58d9809698489f}{type}} = std\+::is\+\_\+same$<$ T1, T2 $>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T1, typename T2$>$\newline +struct Tmeta\+Detection\+::m\+Fun$<$ T1, T2 $>$} + + + +Definition at line 48 of file Tmeta\+Detection.\+cpp. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{struct_tmeta_detection_1_1m_fun_a27c6b961c5aad1b23c58d9809698489f}\label{struct_tmeta_detection_1_1m_fun_a27c6b961c5aad1b23c58d9809698489f}} +\index{Tmeta\+Detection\+::m\+Fun@{Tmeta\+Detection\+::m\+Fun}!type@{type}} +\index{type@{type}!Tmeta\+Detection\+::m\+Fun@{Tmeta\+Detection\+::m\+Fun}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename T1 , typename T2 $>$ \\ +using \mbox{\hyperlink{struct_tmeta_detection_1_1m_fun}{Tmeta\+Detection\+::m\+Fun}}$<$ T1, T2 $>$\+::\mbox{\hyperlink{struct_tmeta_detection_1_1m_fun_a27c6b961c5aad1b23c58d9809698489f}{type}} = std\+::is\+\_\+same $<$T1, T2$>$} + + + +Definition at line 49 of file Tmeta\+Detection.\+cpp. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/tests/\mbox{\hyperlink{_tmeta_detection_8cpp}{Tmeta\+Detection.\+cpp}}\end{DoxyCompactItemize} diff --git a/doc/latex/struct_tmeta_typelist_1_1_f.tex b/doc/latex/struct_tmeta_typelist_1_1_f.tex new file mode 100644 index 0000000..f3eb2bf --- /dev/null +++ b/doc/latex/struct_tmeta_typelist_1_1_f.tex @@ -0,0 +1,17 @@ +\hypertarget{struct_tmeta_typelist_1_1_f}{}\section{Tmeta\+Typelist\+:\+:F$<$ T1, T2 $>$ Struct Template Reference} +\label{struct_tmeta_typelist_1_1_f}\index{Tmeta\+Typelist\+::\+F$<$ T1, T2 $>$@{Tmeta\+Typelist\+::\+F$<$ T1, T2 $>$}} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class T1, class T2$>$\newline +struct Tmeta\+Typelist\+::\+F$<$ T1, T2 $>$} + + + +Definition at line 193 of file Tmeta\+Typelist.\+cpp. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/tests/\mbox{\hyperlink{_tmeta_typelist_8cpp}{Tmeta\+Typelist.\+cpp}}\end{DoxyCompactItemize} diff --git a/doc/latex/struct_tmeta_typelist_1_1_identity.tex b/doc/latex/struct_tmeta_typelist_1_1_identity.tex new file mode 100644 index 0000000..70b864e --- /dev/null +++ b/doc/latex/struct_tmeta_typelist_1_1_identity.tex @@ -0,0 +1,36 @@ +\hypertarget{struct_tmeta_typelist_1_1_identity}{}\section{Tmeta\+Typelist\+:\+:Identity$<$ T $>$ Struct Template Reference} +\label{struct_tmeta_typelist_1_1_identity}\index{Tmeta\+Typelist\+::\+Identity$<$ T $>$@{Tmeta\+Typelist\+::\+Identity$<$ T $>$}} +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{struct_tmeta_typelist_1_1_identity_a8d5ff8e95ed09810df25c535a3f01d60}{type}} = T +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class T$>$\newline +struct Tmeta\+Typelist\+::\+Identity$<$ T $>$} + + + +Definition at line 32 of file Tmeta\+Typelist.\+cpp. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{struct_tmeta_typelist_1_1_identity_a8d5ff8e95ed09810df25c535a3f01d60}\label{struct_tmeta_typelist_1_1_identity_a8d5ff8e95ed09810df25c535a3f01d60}} +\index{Tmeta\+Typelist\+::\+Identity@{Tmeta\+Typelist\+::\+Identity}!type@{type}} +\index{type@{type}!Tmeta\+Typelist\+::\+Identity@{Tmeta\+Typelist\+::\+Identity}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$class T $>$ \\ +using \mbox{\hyperlink{struct_tmeta_typelist_1_1_identity}{Tmeta\+Typelist\+::\+Identity}}$<$ T $>$\+::\mbox{\hyperlink{struct_tmeta_typelist_1_1_identity_a8d5ff8e95ed09810df25c535a3f01d60}{type}} = T} + + + +Definition at line 33 of file Tmeta\+Typelist.\+cpp. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/tests/\mbox{\hyperlink{_tmeta_typelist_8cpp}{Tmeta\+Typelist.\+cpp}}\end{DoxyCompactItemize} diff --git a/doc/latex/struct_tmeta_typelist_1_1_mfun_bin.tex b/doc/latex/struct_tmeta_typelist_1_1_mfun_bin.tex new file mode 100644 index 0000000..4e735cd --- /dev/null +++ b/doc/latex/struct_tmeta_typelist_1_1_mfun_bin.tex @@ -0,0 +1,36 @@ +\hypertarget{struct_tmeta_typelist_1_1_mfun_bin}{}\section{Tmeta\+Typelist\+:\+:Mfun\+Bin$<$ T1, T2 $>$ Struct Template Reference} +\label{struct_tmeta_typelist_1_1_mfun_bin}\index{Tmeta\+Typelist\+::\+Mfun\+Bin$<$ T1, T2 $>$@{Tmeta\+Typelist\+::\+Mfun\+Bin$<$ T1, T2 $>$}} +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{struct_tmeta_typelist_1_1_mfun_bin_a35734082fbcbd3494f9ee57d54d1254c}{type}} = int +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class T1, class T2$>$\newline +struct Tmeta\+Typelist\+::\+Mfun\+Bin$<$ T1, T2 $>$} + + + +Definition at line 35 of file Tmeta\+Typelist.\+cpp. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{struct_tmeta_typelist_1_1_mfun_bin_a35734082fbcbd3494f9ee57d54d1254c}\label{struct_tmeta_typelist_1_1_mfun_bin_a35734082fbcbd3494f9ee57d54d1254c}} +\index{Tmeta\+Typelist\+::\+Mfun\+Bin@{Tmeta\+Typelist\+::\+Mfun\+Bin}!type@{type}} +\index{type@{type}!Tmeta\+Typelist\+::\+Mfun\+Bin@{Tmeta\+Typelist\+::\+Mfun\+Bin}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$class T1 , class T2 $>$ \\ +using \mbox{\hyperlink{struct_tmeta_typelist_1_1_mfun_bin}{Tmeta\+Typelist\+::\+Mfun\+Bin}}$<$ T1, T2 $>$\+::\mbox{\hyperlink{struct_tmeta_typelist_1_1_mfun_bin_a35734082fbcbd3494f9ee57d54d1254c}{type}} = int} + + + +Definition at line 36 of file Tmeta\+Typelist.\+cpp. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/tests/\mbox{\hyperlink{_tmeta_typelist_8cpp}{Tmeta\+Typelist.\+cpp}}\end{DoxyCompactItemize} diff --git a/doc/latex/struct_tmeta_typelist_1_1_mfun_bin__i.tex b/doc/latex/struct_tmeta_typelist_1_1_mfun_bin__i.tex new file mode 100644 index 0000000..b8fea72 --- /dev/null +++ b/doc/latex/struct_tmeta_typelist_1_1_mfun_bin__i.tex @@ -0,0 +1,36 @@ +\hypertarget{struct_tmeta_typelist_1_1_mfun_bin__i}{}\section{Tmeta\+Typelist\+:\+:Mfun\+Bin\+\_\+i$<$ a, b $>$ Struct Template Reference} +\label{struct_tmeta_typelist_1_1_mfun_bin__i}\index{Tmeta\+Typelist\+::\+Mfun\+Bin\+\_\+i$<$ a, b $>$@{Tmeta\+Typelist\+::\+Mfun\+Bin\+\_\+i$<$ a, b $>$}} +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{struct_tmeta_typelist_1_1_mfun_bin__i_acb696c030e1a438da62e7972e8545d88}{type}} = int +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$int a, int b$>$\newline +struct Tmeta\+Typelist\+::\+Mfun\+Bin\+\_\+i$<$ a, b $>$} + + + +Definition at line 38 of file Tmeta\+Typelist.\+cpp. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{struct_tmeta_typelist_1_1_mfun_bin__i_acb696c030e1a438da62e7972e8545d88}\label{struct_tmeta_typelist_1_1_mfun_bin__i_acb696c030e1a438da62e7972e8545d88}} +\index{Tmeta\+Typelist\+::\+Mfun\+Bin\+\_\+i@{Tmeta\+Typelist\+::\+Mfun\+Bin\+\_\+i}!type@{type}} +\index{type@{type}!Tmeta\+Typelist\+::\+Mfun\+Bin\+\_\+i@{Tmeta\+Typelist\+::\+Mfun\+Bin\+\_\+i}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$int a, int b$>$ \\ +using \mbox{\hyperlink{struct_tmeta_typelist_1_1_mfun_bin__i}{Tmeta\+Typelist\+::\+Mfun\+Bin\+\_\+i}}$<$ a, b $>$\+::\mbox{\hyperlink{struct_tmeta_typelist_1_1_mfun_bin__i_acb696c030e1a438da62e7972e8545d88}{type}} = int} + + + +Definition at line 39 of file Tmeta\+Typelist.\+cpp. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/tests/\mbox{\hyperlink{_tmeta_typelist_8cpp}{Tmeta\+Typelist.\+cpp}}\end{DoxyCompactItemize} diff --git a/doc/latex/struct_tmeta_typelist_1_1_mfun_un1.tex b/doc/latex/struct_tmeta_typelist_1_1_mfun_un1.tex new file mode 100644 index 0000000..471466b --- /dev/null +++ b/doc/latex/struct_tmeta_typelist_1_1_mfun_un1.tex @@ -0,0 +1,36 @@ +\hypertarget{struct_tmeta_typelist_1_1_mfun_un1}{}\section{Tmeta\+Typelist\+:\+:Mfun\+Un1$<$ T1 $>$ Struct Template Reference} +\label{struct_tmeta_typelist_1_1_mfun_un1}\index{Tmeta\+Typelist\+::\+Mfun\+Un1$<$ T1 $>$@{Tmeta\+Typelist\+::\+Mfun\+Un1$<$ T1 $>$}} +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{struct_tmeta_typelist_1_1_mfun_un1_a34236e5007f9095ab4ad0f7934cc6181}{type}} = int +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class T1$>$\newline +struct Tmeta\+Typelist\+::\+Mfun\+Un1$<$ T1 $>$} + + + +Definition at line 41 of file Tmeta\+Typelist.\+cpp. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{struct_tmeta_typelist_1_1_mfun_un1_a34236e5007f9095ab4ad0f7934cc6181}\label{struct_tmeta_typelist_1_1_mfun_un1_a34236e5007f9095ab4ad0f7934cc6181}} +\index{Tmeta\+Typelist\+::\+Mfun\+Un1@{Tmeta\+Typelist\+::\+Mfun\+Un1}!type@{type}} +\index{type@{type}!Tmeta\+Typelist\+::\+Mfun\+Un1@{Tmeta\+Typelist\+::\+Mfun\+Un1}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$class T1 $>$ \\ +using \mbox{\hyperlink{struct_tmeta_typelist_1_1_mfun_un1}{Tmeta\+Typelist\+::\+Mfun\+Un1}}$<$ T1 $>$\+::\mbox{\hyperlink{struct_tmeta_typelist_1_1_mfun_un1_a34236e5007f9095ab4ad0f7934cc6181}{type}} = int} + + + +Definition at line 42 of file Tmeta\+Typelist.\+cpp. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/tests/\mbox{\hyperlink{_tmeta_typelist_8cpp}{Tmeta\+Typelist.\+cpp}}\end{DoxyCompactItemize} diff --git a/doc/latex/struct_tmeta_typelist_1_1_mfun_un2.tex b/doc/latex/struct_tmeta_typelist_1_1_mfun_un2.tex new file mode 100644 index 0000000..fe0ca54 --- /dev/null +++ b/doc/latex/struct_tmeta_typelist_1_1_mfun_un2.tex @@ -0,0 +1,36 @@ +\hypertarget{struct_tmeta_typelist_1_1_mfun_un2}{}\section{Tmeta\+Typelist\+:\+:Mfun\+Un2$<$ T1 $>$ Struct Template Reference} +\label{struct_tmeta_typelist_1_1_mfun_un2}\index{Tmeta\+Typelist\+::\+Mfun\+Un2$<$ T1 $>$@{Tmeta\+Typelist\+::\+Mfun\+Un2$<$ T1 $>$}} +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{struct_tmeta_typelist_1_1_mfun_un2_a9573455d6a3878f2b8a900f8a8dca2f8}{type}} = int +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class T1$>$\newline +struct Tmeta\+Typelist\+::\+Mfun\+Un2$<$ T1 $>$} + + + +Definition at line 44 of file Tmeta\+Typelist.\+cpp. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{struct_tmeta_typelist_1_1_mfun_un2_a9573455d6a3878f2b8a900f8a8dca2f8}\label{struct_tmeta_typelist_1_1_mfun_un2_a9573455d6a3878f2b8a900f8a8dca2f8}} +\index{Tmeta\+Typelist\+::\+Mfun\+Un2@{Tmeta\+Typelist\+::\+Mfun\+Un2}!type@{type}} +\index{type@{type}!Tmeta\+Typelist\+::\+Mfun\+Un2@{Tmeta\+Typelist\+::\+Mfun\+Un2}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$class T1 $>$ \\ +using \mbox{\hyperlink{struct_tmeta_typelist_1_1_mfun_un2}{Tmeta\+Typelist\+::\+Mfun\+Un2}}$<$ T1 $>$\+::\mbox{\hyperlink{struct_tmeta_typelist_1_1_mfun_un2_a9573455d6a3878f2b8a900f8a8dca2f8}{type}} = int} + + + +Definition at line 45 of file Tmeta\+Typelist.\+cpp. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/tests/\mbox{\hyperlink{_tmeta_typelist_8cpp}{Tmeta\+Typelist.\+cpp}}\end{DoxyCompactItemize} diff --git a/doc/latex/struct_tmeta_typelist_1_1_pred__is_int.tex b/doc/latex/struct_tmeta_typelist_1_1_pred__is_int.tex new file mode 100644 index 0000000..e1fac15 --- /dev/null +++ b/doc/latex/struct_tmeta_typelist_1_1_pred__is_int.tex @@ -0,0 +1,36 @@ +\hypertarget{struct_tmeta_typelist_1_1_pred__is_int}{}\section{Tmeta\+Typelist\+:\+:Pred\+\_\+is\+Int$<$ T $>$ Struct Template Reference} +\label{struct_tmeta_typelist_1_1_pred__is_int}\index{Tmeta\+Typelist\+::\+Pred\+\_\+is\+Int$<$ T $>$@{Tmeta\+Typelist\+::\+Pred\+\_\+is\+Int$<$ T $>$}} +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{struct_tmeta_typelist_1_1_pred__is_int_aa747f96578f9bdd93d9614f917da53b4}{type}} = std\+::is\+\_\+integral$<$ T $>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T$>$\newline +struct Tmeta\+Typelist\+::\+Pred\+\_\+is\+Int$<$ T $>$} + + + +Definition at line 48 of file Tmeta\+Typelist.\+cpp. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{struct_tmeta_typelist_1_1_pred__is_int_aa747f96578f9bdd93d9614f917da53b4}\label{struct_tmeta_typelist_1_1_pred__is_int_aa747f96578f9bdd93d9614f917da53b4}} +\index{Tmeta\+Typelist\+::\+Pred\+\_\+is\+Int@{Tmeta\+Typelist\+::\+Pred\+\_\+is\+Int}!type@{type}} +\index{type@{type}!Tmeta\+Typelist\+::\+Pred\+\_\+is\+Int@{Tmeta\+Typelist\+::\+Pred\+\_\+is\+Int}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +using \mbox{\hyperlink{struct_tmeta_typelist_1_1_pred__is_int}{Tmeta\+Typelist\+::\+Pred\+\_\+is\+Int}}$<$ T $>$\+::\mbox{\hyperlink{struct_tmeta_typelist_1_1_pred__is_int_aa747f96578f9bdd93d9614f917da53b4}{type}} = std\+::is\+\_\+integral$<$T$>$} + + + +Definition at line 49 of file Tmeta\+Typelist.\+cpp. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/tests/\mbox{\hyperlink{_tmeta_typelist_8cpp}{Tmeta\+Typelist.\+cpp}}\end{DoxyCompactItemize} diff --git a/doc/latex/struct_tmeta_typelist_1_1_pred__is_void.tex b/doc/latex/struct_tmeta_typelist_1_1_pred__is_void.tex new file mode 100644 index 0000000..dc6c0c6 --- /dev/null +++ b/doc/latex/struct_tmeta_typelist_1_1_pred__is_void.tex @@ -0,0 +1,36 @@ +\hypertarget{struct_tmeta_typelist_1_1_pred__is_void}{}\section{Tmeta\+Typelist\+:\+:Pred\+\_\+is\+Void$<$ T $>$ Struct Template Reference} +\label{struct_tmeta_typelist_1_1_pred__is_void}\index{Tmeta\+Typelist\+::\+Pred\+\_\+is\+Void$<$ T $>$@{Tmeta\+Typelist\+::\+Pred\+\_\+is\+Void$<$ T $>$}} +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{struct_tmeta_typelist_1_1_pred__is_void_a94fdd3de588a464307c4683cfc386708}{type}} = std\+::is\+\_\+void$<$ T $>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T$>$\newline +struct Tmeta\+Typelist\+::\+Pred\+\_\+is\+Void$<$ T $>$} + + + +Definition at line 52 of file Tmeta\+Typelist.\+cpp. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{struct_tmeta_typelist_1_1_pred__is_void_a94fdd3de588a464307c4683cfc386708}\label{struct_tmeta_typelist_1_1_pred__is_void_a94fdd3de588a464307c4683cfc386708}} +\index{Tmeta\+Typelist\+::\+Pred\+\_\+is\+Void@{Tmeta\+Typelist\+::\+Pred\+\_\+is\+Void}!type@{type}} +\index{type@{type}!Tmeta\+Typelist\+::\+Pred\+\_\+is\+Void@{Tmeta\+Typelist\+::\+Pred\+\_\+is\+Void}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +using \mbox{\hyperlink{struct_tmeta_typelist_1_1_pred__is_void}{Tmeta\+Typelist\+::\+Pred\+\_\+is\+Void}}$<$ T $>$\+::\mbox{\hyperlink{struct_tmeta_typelist_1_1_pred__is_void_a94fdd3de588a464307c4683cfc386708}{type}} = std\+::is\+\_\+void$<$T$>$} + + + +Definition at line 53 of file Tmeta\+Typelist.\+cpp. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/tests/\mbox{\hyperlink{_tmeta_typelist_8cpp}{Tmeta\+Typelist.\+cpp}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtest__concepts_1_1_a.tex b/doc/latex/structtest__concepts_1_1_a.tex new file mode 100644 index 0000000..a223be5 --- /dev/null +++ b/doc/latex/structtest__concepts_1_1_a.tex @@ -0,0 +1,66 @@ +\hypertarget{structtest__concepts_1_1_a}{}\section{test\+\_\+concepts\+:\+:A Struct Reference} +\label{structtest__concepts_1_1_a}\index{test\+\_\+concepts\+::A@{test\+\_\+concepts\+::A}} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{structtest__concepts_1_1_a_aef6f3f3d17d29e347b2dcfa5f85d7357}{A}} (int a=0) +\item +\mbox{\hyperlink{structtest__concepts_1_1_a_ac329b6178993104585d0b4078443dbb0}{A}} (const \mbox{\hyperlink{structtest__concepts_1_1_a}{A}} \&)=default +\item +\mbox{\hyperlink{structtest__concepts_1_1_a_aba6f04a66e943f55c973abca59a28d55}{A}} (\mbox{\hyperlink{structtest__concepts_1_1_a}{A}} \&\&)=default +\end{DoxyCompactItemize} +\subsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +int \mbox{\hyperlink{structtest__concepts_1_1_a_a362094ae51a62bafa1e30538e9289115}{a\+\_\+}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} + + +Definition at line 62 of file T\+Concepts.\+cpp. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{structtest__concepts_1_1_a_aef6f3f3d17d29e347b2dcfa5f85d7357}\label{structtest__concepts_1_1_a_aef6f3f3d17d29e347b2dcfa5f85d7357}} +\index{test\+\_\+concepts\+::A@{test\+\_\+concepts\+::A}!A@{A}} +\index{A@{A}!test\+\_\+concepts\+::A@{test\+\_\+concepts\+::A}} +\subsubsection{\texorpdfstring{A()}{A()}\hspace{0.1cm}{\footnotesize\ttfamily [1/3]}} +{\footnotesize\ttfamily test\+\_\+concepts\+::\+A\+::A (\begin{DoxyParamCaption}\item[{int}]{a = {\ttfamily 0} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 65 of file T\+Concepts.\+cpp. + +\mbox{\Hypertarget{structtest__concepts_1_1_a_ac329b6178993104585d0b4078443dbb0}\label{structtest__concepts_1_1_a_ac329b6178993104585d0b4078443dbb0}} +\index{test\+\_\+concepts\+::A@{test\+\_\+concepts\+::A}!A@{A}} +\index{A@{A}!test\+\_\+concepts\+::A@{test\+\_\+concepts\+::A}} +\subsubsection{\texorpdfstring{A()}{A()}\hspace{0.1cm}{\footnotesize\ttfamily [2/3]}} +{\footnotesize\ttfamily test\+\_\+concepts\+::\+A\+::A (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structtest__concepts_1_1_a}{A}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [default]}} + +\mbox{\Hypertarget{structtest__concepts_1_1_a_aba6f04a66e943f55c973abca59a28d55}\label{structtest__concepts_1_1_a_aba6f04a66e943f55c973abca59a28d55}} +\index{test\+\_\+concepts\+::A@{test\+\_\+concepts\+::A}!A@{A}} +\index{A@{A}!test\+\_\+concepts\+::A@{test\+\_\+concepts\+::A}} +\subsubsection{\texorpdfstring{A()}{A()}\hspace{0.1cm}{\footnotesize\ttfamily [3/3]}} +{\footnotesize\ttfamily test\+\_\+concepts\+::\+A\+::A (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{structtest__concepts_1_1_a}{A}} \&\&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [default]}} + + + +\subsection{Member Data Documentation} +\mbox{\Hypertarget{structtest__concepts_1_1_a_a362094ae51a62bafa1e30538e9289115}\label{structtest__concepts_1_1_a_a362094ae51a62bafa1e30538e9289115}} +\index{test\+\_\+concepts\+::A@{test\+\_\+concepts\+::A}!a\+\_\+@{a\+\_\+}} +\index{a\+\_\+@{a\+\_\+}!test\+\_\+concepts\+::A@{test\+\_\+concepts\+::A}} +\subsubsection{\texorpdfstring{a\+\_\+}{a\_}} +{\footnotesize\ttfamily int test\+\_\+concepts\+::\+A\+::a\+\_\+} + + + +Definition at line 63 of file T\+Concepts.\+cpp. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/tests/\mbox{\hyperlink{_t_concepts_8cpp}{T\+Concepts.\+cpp}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtest__concepts_1_1_b.tex b/doc/latex/structtest__concepts_1_1_b.tex new file mode 100644 index 0000000..69979ae --- /dev/null +++ b/doc/latex/structtest__concepts_1_1_b.tex @@ -0,0 +1,85 @@ +\hypertarget{structtest__concepts_1_1_b}{}\section{test\+\_\+concepts\+:\+:B Struct Reference} +\label{structtest__concepts_1_1_b}\index{test\+\_\+concepts\+::B@{test\+\_\+concepts\+::B}} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{structtest__concepts_1_1_b_a3dbd72f4bae630407c91619fb617b36b}{B}} (int b=0) +\item +\mbox{\hyperlink{structtest__concepts_1_1_b_ab10395b4e6974d633bac8a0412df9fe6}{B}} (const \mbox{\hyperlink{structtest__concepts_1_1_b}{B}} \&)=default +\item +\mbox{\hyperlink{structtest__concepts_1_1_b_ad0eb3cde8a3046f2d2f256aee1bcd3be}{B}} (\mbox{\hyperlink{structtest__concepts_1_1_b}{B}} \&\&)=default +\item +\mbox{\hyperlink{structtest__concepts_1_1_b}{B}} \& \mbox{\hyperlink{structtest__concepts_1_1_b_a448f5cc4e3f714b84ff4ae3ac52b0aba}{operator=}} (const \mbox{\hyperlink{structtest__concepts_1_1_b}{B}} \&)=default +\item +\mbox{\hyperlink{structtest__concepts_1_1_b}{B}} \& \mbox{\hyperlink{structtest__concepts_1_1_b_a275c244ada6534beff83a21b31a2c7a5}{operator=}} (\mbox{\hyperlink{structtest__concepts_1_1_b}{B}} \&\&)=default +\end{DoxyCompactItemize} +\subsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +int \mbox{\hyperlink{structtest__concepts_1_1_b_a353f206f1add4707cbf7c6bbb2636686}{b\+\_\+}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} + + +Definition at line 72 of file T\+Concepts.\+cpp. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{structtest__concepts_1_1_b_a3dbd72f4bae630407c91619fb617b36b}\label{structtest__concepts_1_1_b_a3dbd72f4bae630407c91619fb617b36b}} +\index{test\+\_\+concepts\+::B@{test\+\_\+concepts\+::B}!B@{B}} +\index{B@{B}!test\+\_\+concepts\+::B@{test\+\_\+concepts\+::B}} +\subsubsection{\texorpdfstring{B()}{B()}\hspace{0.1cm}{\footnotesize\ttfamily [1/3]}} +{\footnotesize\ttfamily test\+\_\+concepts\+::\+B\+::B (\begin{DoxyParamCaption}\item[{int}]{b = {\ttfamily 0} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 75 of file T\+Concepts.\+cpp. + +\mbox{\Hypertarget{structtest__concepts_1_1_b_ab10395b4e6974d633bac8a0412df9fe6}\label{structtest__concepts_1_1_b_ab10395b4e6974d633bac8a0412df9fe6}} +\index{test\+\_\+concepts\+::B@{test\+\_\+concepts\+::B}!B@{B}} +\index{B@{B}!test\+\_\+concepts\+::B@{test\+\_\+concepts\+::B}} +\subsubsection{\texorpdfstring{B()}{B()}\hspace{0.1cm}{\footnotesize\ttfamily [2/3]}} +{\footnotesize\ttfamily test\+\_\+concepts\+::\+B\+::B (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structtest__concepts_1_1_b}{B}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [default]}} + +\mbox{\Hypertarget{structtest__concepts_1_1_b_ad0eb3cde8a3046f2d2f256aee1bcd3be}\label{structtest__concepts_1_1_b_ad0eb3cde8a3046f2d2f256aee1bcd3be}} +\index{test\+\_\+concepts\+::B@{test\+\_\+concepts\+::B}!B@{B}} +\index{B@{B}!test\+\_\+concepts\+::B@{test\+\_\+concepts\+::B}} +\subsubsection{\texorpdfstring{B()}{B()}\hspace{0.1cm}{\footnotesize\ttfamily [3/3]}} +{\footnotesize\ttfamily test\+\_\+concepts\+::\+B\+::B (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{structtest__concepts_1_1_b}{B}} \&\&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [default]}} + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{structtest__concepts_1_1_b_a448f5cc4e3f714b84ff4ae3ac52b0aba}\label{structtest__concepts_1_1_b_a448f5cc4e3f714b84ff4ae3ac52b0aba}} +\index{test\+\_\+concepts\+::B@{test\+\_\+concepts\+::B}!operator=@{operator=}} +\index{operator=@{operator=}!test\+\_\+concepts\+::B@{test\+\_\+concepts\+::B}} +\subsubsection{\texorpdfstring{operator=()}{operator=()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily \mbox{\hyperlink{structtest__concepts_1_1_b}{B}}\& test\+\_\+concepts\+::\+B\+::operator= (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structtest__concepts_1_1_b}{B}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [default]}} + +\mbox{\Hypertarget{structtest__concepts_1_1_b_a275c244ada6534beff83a21b31a2c7a5}\label{structtest__concepts_1_1_b_a275c244ada6534beff83a21b31a2c7a5}} +\index{test\+\_\+concepts\+::B@{test\+\_\+concepts\+::B}!operator=@{operator=}} +\index{operator=@{operator=}!test\+\_\+concepts\+::B@{test\+\_\+concepts\+::B}} +\subsubsection{\texorpdfstring{operator=()}{operator=()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily \mbox{\hyperlink{structtest__concepts_1_1_b}{B}}\& test\+\_\+concepts\+::\+B\+::operator= (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{structtest__concepts_1_1_b}{B}} \&\&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [default]}} + + + +\subsection{Member Data Documentation} +\mbox{\Hypertarget{structtest__concepts_1_1_b_a353f206f1add4707cbf7c6bbb2636686}\label{structtest__concepts_1_1_b_a353f206f1add4707cbf7c6bbb2636686}} +\index{test\+\_\+concepts\+::B@{test\+\_\+concepts\+::B}!b\+\_\+@{b\+\_\+}} +\index{b\+\_\+@{b\+\_\+}!test\+\_\+concepts\+::B@{test\+\_\+concepts\+::B}} +\subsubsection{\texorpdfstring{b\+\_\+}{b\_}} +{\footnotesize\ttfamily int test\+\_\+concepts\+::\+B\+::b\+\_\+} + + + +Definition at line 73 of file T\+Concepts.\+cpp. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/tests/\mbox{\hyperlink{_t_concepts_8cpp}{T\+Concepts.\+cpp}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtest__concepts_1_1_empty.tex b/doc/latex/structtest__concepts_1_1_empty.tex new file mode 100644 index 0000000..afab8bd --- /dev/null +++ b/doc/latex/structtest__concepts_1_1_empty.tex @@ -0,0 +1,14 @@ +\hypertarget{structtest__concepts_1_1_empty}{}\section{test\+\_\+concepts\+:\+:Empty Struct Reference} +\label{structtest__concepts_1_1_empty}\index{test\+\_\+concepts\+::\+Empty@{test\+\_\+concepts\+::\+Empty}} + + +\subsection{Detailed Description} + + +Definition at line 31 of file T\+Concepts.\+cpp. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/tests/\mbox{\hyperlink{_t_concepts_8cpp}{T\+Concepts.\+cpp}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtest__concepts_1_1_have_copy_and_move.tex b/doc/latex/structtest__concepts_1_1_have_copy_and_move.tex new file mode 100644 index 0000000..c51d375 --- /dev/null +++ b/doc/latex/structtest__concepts_1_1_have_copy_and_move.tex @@ -0,0 +1,55 @@ +\hypertarget{structtest__concepts_1_1_have_copy_and_move}{}\section{test\+\_\+concepts\+:\+:Have\+Copy\+And\+Move Struct Reference} +\label{structtest__concepts_1_1_have_copy_and_move}\index{test\+\_\+concepts\+::\+Have\+Copy\+And\+Move@{test\+\_\+concepts\+::\+Have\+Copy\+And\+Move}} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{structtest__concepts_1_1_have_copy_and_move_a09658b6e67212daef556c1316a576ece}{Have\+Copy\+And\+Move}} (const \mbox{\hyperlink{structtest__concepts_1_1_have_copy_and_move}{Have\+Copy\+And\+Move}} \&)=default +\item +\mbox{\hyperlink{structtest__concepts_1_1_have_copy_and_move_a1a96ca3715809096cd84cb4ef7139549}{Have\+Copy\+And\+Move}} (\mbox{\hyperlink{structtest__concepts_1_1_have_copy_and_move}{Have\+Copy\+And\+Move}} \&\&)=default +\item +\mbox{\hyperlink{structtest__concepts_1_1_have_copy_and_move}{Have\+Copy\+And\+Move}} \& \mbox{\hyperlink{structtest__concepts_1_1_have_copy_and_move_af57925d4cd3ac1049566548d01ef962d}{operator=}} (const \mbox{\hyperlink{structtest__concepts_1_1_have_copy_and_move}{Have\+Copy\+And\+Move}} \&)=default +\item +\mbox{\hyperlink{structtest__concepts_1_1_have_copy_and_move}{Have\+Copy\+And\+Move}} \& \mbox{\hyperlink{structtest__concepts_1_1_have_copy_and_move_adec7534ded23d293c3926fa4ead5680a}{operator=}} (\mbox{\hyperlink{structtest__concepts_1_1_have_copy_and_move}{Have\+Copy\+And\+Move}} \&\&)=default +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} + + +Definition at line 44 of file T\+Concepts.\+cpp. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{structtest__concepts_1_1_have_copy_and_move_a09658b6e67212daef556c1316a576ece}\label{structtest__concepts_1_1_have_copy_and_move_a09658b6e67212daef556c1316a576ece}} +\index{test\+\_\+concepts\+::\+Have\+Copy\+And\+Move@{test\+\_\+concepts\+::\+Have\+Copy\+And\+Move}!Have\+Copy\+And\+Move@{Have\+Copy\+And\+Move}} +\index{Have\+Copy\+And\+Move@{Have\+Copy\+And\+Move}!test\+\_\+concepts\+::\+Have\+Copy\+And\+Move@{test\+\_\+concepts\+::\+Have\+Copy\+And\+Move}} +\subsubsection{\texorpdfstring{Have\+Copy\+And\+Move()}{HaveCopyAndMove()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily test\+\_\+concepts\+::\+Have\+Copy\+And\+Move\+::\+Have\+Copy\+And\+Move (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structtest__concepts_1_1_have_copy_and_move}{Have\+Copy\+And\+Move}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [default]}} + +\mbox{\Hypertarget{structtest__concepts_1_1_have_copy_and_move_a1a96ca3715809096cd84cb4ef7139549}\label{structtest__concepts_1_1_have_copy_and_move_a1a96ca3715809096cd84cb4ef7139549}} +\index{test\+\_\+concepts\+::\+Have\+Copy\+And\+Move@{test\+\_\+concepts\+::\+Have\+Copy\+And\+Move}!Have\+Copy\+And\+Move@{Have\+Copy\+And\+Move}} +\index{Have\+Copy\+And\+Move@{Have\+Copy\+And\+Move}!test\+\_\+concepts\+::\+Have\+Copy\+And\+Move@{test\+\_\+concepts\+::\+Have\+Copy\+And\+Move}} +\subsubsection{\texorpdfstring{Have\+Copy\+And\+Move()}{HaveCopyAndMove()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily test\+\_\+concepts\+::\+Have\+Copy\+And\+Move\+::\+Have\+Copy\+And\+Move (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{structtest__concepts_1_1_have_copy_and_move}{Have\+Copy\+And\+Move}} \&\&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [default]}} + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{structtest__concepts_1_1_have_copy_and_move_af57925d4cd3ac1049566548d01ef962d}\label{structtest__concepts_1_1_have_copy_and_move_af57925d4cd3ac1049566548d01ef962d}} +\index{test\+\_\+concepts\+::\+Have\+Copy\+And\+Move@{test\+\_\+concepts\+::\+Have\+Copy\+And\+Move}!operator=@{operator=}} +\index{operator=@{operator=}!test\+\_\+concepts\+::\+Have\+Copy\+And\+Move@{test\+\_\+concepts\+::\+Have\+Copy\+And\+Move}} +\subsubsection{\texorpdfstring{operator=()}{operator=()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily \mbox{\hyperlink{structtest__concepts_1_1_have_copy_and_move}{Have\+Copy\+And\+Move}}\& test\+\_\+concepts\+::\+Have\+Copy\+And\+Move\+::operator= (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structtest__concepts_1_1_have_copy_and_move}{Have\+Copy\+And\+Move}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [default]}} + +\mbox{\Hypertarget{structtest__concepts_1_1_have_copy_and_move_adec7534ded23d293c3926fa4ead5680a}\label{structtest__concepts_1_1_have_copy_and_move_adec7534ded23d293c3926fa4ead5680a}} +\index{test\+\_\+concepts\+::\+Have\+Copy\+And\+Move@{test\+\_\+concepts\+::\+Have\+Copy\+And\+Move}!operator=@{operator=}} +\index{operator=@{operator=}!test\+\_\+concepts\+::\+Have\+Copy\+And\+Move@{test\+\_\+concepts\+::\+Have\+Copy\+And\+Move}} +\subsubsection{\texorpdfstring{operator=()}{operator=()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily \mbox{\hyperlink{structtest__concepts_1_1_have_copy_and_move}{Have\+Copy\+And\+Move}}\& test\+\_\+concepts\+::\+Have\+Copy\+And\+Move\+::operator= (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{structtest__concepts_1_1_have_copy_and_move}{Have\+Copy\+And\+Move}} \&\&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [default]}} + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/tests/\mbox{\hyperlink{_t_concepts_8cpp}{T\+Concepts.\+cpp}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtest__concepts_1_1_have_only_copy.tex b/doc/latex/structtest__concepts_1_1_have_only_copy.tex new file mode 100644 index 0000000..3257790 --- /dev/null +++ b/doc/latex/structtest__concepts_1_1_have_only_copy.tex @@ -0,0 +1,55 @@ +\hypertarget{structtest__concepts_1_1_have_only_copy}{}\section{test\+\_\+concepts\+:\+:Have\+Only\+Copy Struct Reference} +\label{structtest__concepts_1_1_have_only_copy}\index{test\+\_\+concepts\+::\+Have\+Only\+Copy@{test\+\_\+concepts\+::\+Have\+Only\+Copy}} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{structtest__concepts_1_1_have_only_copy_a8f3b6c73ec90983639343bd0052b27dc}{Have\+Only\+Copy}} (const \mbox{\hyperlink{structtest__concepts_1_1_have_only_copy}{Have\+Only\+Copy}} \&)=default +\item +\mbox{\hyperlink{structtest__concepts_1_1_have_only_copy_a58cb944b280005e00c903bea1ebe4184}{Have\+Only\+Copy}} (\mbox{\hyperlink{structtest__concepts_1_1_have_only_copy}{Have\+Only\+Copy}} \&\&)=delete +\item +\mbox{\hyperlink{structtest__concepts_1_1_have_only_copy}{Have\+Only\+Copy}} \& \mbox{\hyperlink{structtest__concepts_1_1_have_only_copy_a0e12eb47333846c1726d8ac52768e086}{operator=}} (const \mbox{\hyperlink{structtest__concepts_1_1_have_only_copy}{Have\+Only\+Copy}} \&)=default +\item +\mbox{\hyperlink{structtest__concepts_1_1_have_only_copy}{Have\+Only\+Copy}} \& \mbox{\hyperlink{structtest__concepts_1_1_have_only_copy_a28535890574b8d58255a574481860e4b}{operator=}} (\mbox{\hyperlink{structtest__concepts_1_1_have_only_copy}{Have\+Only\+Copy}} \&\&)=delete +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} + + +Definition at line 32 of file T\+Concepts.\+cpp. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{structtest__concepts_1_1_have_only_copy_a8f3b6c73ec90983639343bd0052b27dc}\label{structtest__concepts_1_1_have_only_copy_a8f3b6c73ec90983639343bd0052b27dc}} +\index{test\+\_\+concepts\+::\+Have\+Only\+Copy@{test\+\_\+concepts\+::\+Have\+Only\+Copy}!Have\+Only\+Copy@{Have\+Only\+Copy}} +\index{Have\+Only\+Copy@{Have\+Only\+Copy}!test\+\_\+concepts\+::\+Have\+Only\+Copy@{test\+\_\+concepts\+::\+Have\+Only\+Copy}} +\subsubsection{\texorpdfstring{Have\+Only\+Copy()}{HaveOnlyCopy()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily test\+\_\+concepts\+::\+Have\+Only\+Copy\+::\+Have\+Only\+Copy (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structtest__concepts_1_1_have_only_copy}{Have\+Only\+Copy}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [default]}} + +\mbox{\Hypertarget{structtest__concepts_1_1_have_only_copy_a58cb944b280005e00c903bea1ebe4184}\label{structtest__concepts_1_1_have_only_copy_a58cb944b280005e00c903bea1ebe4184}} +\index{test\+\_\+concepts\+::\+Have\+Only\+Copy@{test\+\_\+concepts\+::\+Have\+Only\+Copy}!Have\+Only\+Copy@{Have\+Only\+Copy}} +\index{Have\+Only\+Copy@{Have\+Only\+Copy}!test\+\_\+concepts\+::\+Have\+Only\+Copy@{test\+\_\+concepts\+::\+Have\+Only\+Copy}} +\subsubsection{\texorpdfstring{Have\+Only\+Copy()}{HaveOnlyCopy()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily test\+\_\+concepts\+::\+Have\+Only\+Copy\+::\+Have\+Only\+Copy (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{structtest__concepts_1_1_have_only_copy}{Have\+Only\+Copy}} \&\&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [delete]}} + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{structtest__concepts_1_1_have_only_copy_a0e12eb47333846c1726d8ac52768e086}\label{structtest__concepts_1_1_have_only_copy_a0e12eb47333846c1726d8ac52768e086}} +\index{test\+\_\+concepts\+::\+Have\+Only\+Copy@{test\+\_\+concepts\+::\+Have\+Only\+Copy}!operator=@{operator=}} +\index{operator=@{operator=}!test\+\_\+concepts\+::\+Have\+Only\+Copy@{test\+\_\+concepts\+::\+Have\+Only\+Copy}} +\subsubsection{\texorpdfstring{operator=()}{operator=()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily \mbox{\hyperlink{structtest__concepts_1_1_have_only_copy}{Have\+Only\+Copy}}\& test\+\_\+concepts\+::\+Have\+Only\+Copy\+::operator= (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structtest__concepts_1_1_have_only_copy}{Have\+Only\+Copy}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [default]}} + +\mbox{\Hypertarget{structtest__concepts_1_1_have_only_copy_a28535890574b8d58255a574481860e4b}\label{structtest__concepts_1_1_have_only_copy_a28535890574b8d58255a574481860e4b}} +\index{test\+\_\+concepts\+::\+Have\+Only\+Copy@{test\+\_\+concepts\+::\+Have\+Only\+Copy}!operator=@{operator=}} +\index{operator=@{operator=}!test\+\_\+concepts\+::\+Have\+Only\+Copy@{test\+\_\+concepts\+::\+Have\+Only\+Copy}} +\subsubsection{\texorpdfstring{operator=()}{operator=()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily \mbox{\hyperlink{structtest__concepts_1_1_have_only_copy}{Have\+Only\+Copy}}\& test\+\_\+concepts\+::\+Have\+Only\+Copy\+::operator= (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{structtest__concepts_1_1_have_only_copy}{Have\+Only\+Copy}} \&\&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [delete]}} + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/tests/\mbox{\hyperlink{_t_concepts_8cpp}{T\+Concepts.\+cpp}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtest__concepts_1_1_have_only_move.tex b/doc/latex/structtest__concepts_1_1_have_only_move.tex new file mode 100644 index 0000000..ef3f14b --- /dev/null +++ b/doc/latex/structtest__concepts_1_1_have_only_move.tex @@ -0,0 +1,55 @@ +\hypertarget{structtest__concepts_1_1_have_only_move}{}\section{test\+\_\+concepts\+:\+:Have\+Only\+Move Struct Reference} +\label{structtest__concepts_1_1_have_only_move}\index{test\+\_\+concepts\+::\+Have\+Only\+Move@{test\+\_\+concepts\+::\+Have\+Only\+Move}} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{structtest__concepts_1_1_have_only_move_a898d69d83a3866bc116bda321000436c}{Have\+Only\+Move}} (const \mbox{\hyperlink{structtest__concepts_1_1_have_only_move}{Have\+Only\+Move}} \&)=delete +\item +\mbox{\hyperlink{structtest__concepts_1_1_have_only_move_a20d36cfe0cedc4bfa8a567cafaa378ea}{Have\+Only\+Move}} (\mbox{\hyperlink{structtest__concepts_1_1_have_only_move}{Have\+Only\+Move}} \&\&)=default +\item +\mbox{\hyperlink{structtest__concepts_1_1_have_only_move}{Have\+Only\+Move}} \& \mbox{\hyperlink{structtest__concepts_1_1_have_only_move_ab1c8ccd231973a2a043cb66035839fd9}{operator=}} (const \mbox{\hyperlink{structtest__concepts_1_1_have_only_move}{Have\+Only\+Move}} \&)=delete +\item +\mbox{\hyperlink{structtest__concepts_1_1_have_only_move}{Have\+Only\+Move}} \& \mbox{\hyperlink{structtest__concepts_1_1_have_only_move_a5d43196f89ea807f2de5b5725dc42da6}{operator=}} (\mbox{\hyperlink{structtest__concepts_1_1_have_only_move}{Have\+Only\+Move}} \&\&)=default +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} + + +Definition at line 38 of file T\+Concepts.\+cpp. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{structtest__concepts_1_1_have_only_move_a898d69d83a3866bc116bda321000436c}\label{structtest__concepts_1_1_have_only_move_a898d69d83a3866bc116bda321000436c}} +\index{test\+\_\+concepts\+::\+Have\+Only\+Move@{test\+\_\+concepts\+::\+Have\+Only\+Move}!Have\+Only\+Move@{Have\+Only\+Move}} +\index{Have\+Only\+Move@{Have\+Only\+Move}!test\+\_\+concepts\+::\+Have\+Only\+Move@{test\+\_\+concepts\+::\+Have\+Only\+Move}} +\subsubsection{\texorpdfstring{Have\+Only\+Move()}{HaveOnlyMove()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily test\+\_\+concepts\+::\+Have\+Only\+Move\+::\+Have\+Only\+Move (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structtest__concepts_1_1_have_only_move}{Have\+Only\+Move}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [delete]}} + +\mbox{\Hypertarget{structtest__concepts_1_1_have_only_move_a20d36cfe0cedc4bfa8a567cafaa378ea}\label{structtest__concepts_1_1_have_only_move_a20d36cfe0cedc4bfa8a567cafaa378ea}} +\index{test\+\_\+concepts\+::\+Have\+Only\+Move@{test\+\_\+concepts\+::\+Have\+Only\+Move}!Have\+Only\+Move@{Have\+Only\+Move}} +\index{Have\+Only\+Move@{Have\+Only\+Move}!test\+\_\+concepts\+::\+Have\+Only\+Move@{test\+\_\+concepts\+::\+Have\+Only\+Move}} +\subsubsection{\texorpdfstring{Have\+Only\+Move()}{HaveOnlyMove()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily test\+\_\+concepts\+::\+Have\+Only\+Move\+::\+Have\+Only\+Move (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{structtest__concepts_1_1_have_only_move}{Have\+Only\+Move}} \&\&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [default]}} + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{structtest__concepts_1_1_have_only_move_ab1c8ccd231973a2a043cb66035839fd9}\label{structtest__concepts_1_1_have_only_move_ab1c8ccd231973a2a043cb66035839fd9}} +\index{test\+\_\+concepts\+::\+Have\+Only\+Move@{test\+\_\+concepts\+::\+Have\+Only\+Move}!operator=@{operator=}} +\index{operator=@{operator=}!test\+\_\+concepts\+::\+Have\+Only\+Move@{test\+\_\+concepts\+::\+Have\+Only\+Move}} +\subsubsection{\texorpdfstring{operator=()}{operator=()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily \mbox{\hyperlink{structtest__concepts_1_1_have_only_move}{Have\+Only\+Move}}\& test\+\_\+concepts\+::\+Have\+Only\+Move\+::operator= (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structtest__concepts_1_1_have_only_move}{Have\+Only\+Move}} \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [delete]}} + +\mbox{\Hypertarget{structtest__concepts_1_1_have_only_move_a5d43196f89ea807f2de5b5725dc42da6}\label{structtest__concepts_1_1_have_only_move_a5d43196f89ea807f2de5b5725dc42da6}} +\index{test\+\_\+concepts\+::\+Have\+Only\+Move@{test\+\_\+concepts\+::\+Have\+Only\+Move}!operator=@{operator=}} +\index{operator=@{operator=}!test\+\_\+concepts\+::\+Have\+Only\+Move@{test\+\_\+concepts\+::\+Have\+Only\+Move}} +\subsubsection{\texorpdfstring{operator=()}{operator=()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily \mbox{\hyperlink{structtest__concepts_1_1_have_only_move}{Have\+Only\+Move}}\& test\+\_\+concepts\+::\+Have\+Only\+Move\+::operator= (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{structtest__concepts_1_1_have_only_move}{Have\+Only\+Move}} \&\&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [default]}} + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/tests/\mbox{\hyperlink{_t_concepts_8cpp}{T\+Concepts.\+cpp}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtest__concepts_1_1_incr.tex b/doc/latex/structtest__concepts_1_1_incr.tex new file mode 100644 index 0000000..78c0264 --- /dev/null +++ b/doc/latex/structtest__concepts_1_1_incr.tex @@ -0,0 +1,44 @@ +\hypertarget{structtest__concepts_1_1_incr}{}\section{test\+\_\+concepts\+:\+:Incr Struct Reference} +\label{structtest__concepts_1_1_incr}\index{test\+\_\+concepts\+::\+Incr@{test\+\_\+concepts\+::\+Incr}} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{structtest__concepts_1_1_incr}{Incr}} \& \mbox{\hyperlink{structtest__concepts_1_1_incr_abae843908ab62034a1d2a97eb4f617e8}{operator++}} () +\item +\mbox{\hyperlink{structtest__concepts_1_1_incr}{Incr}} \mbox{\hyperlink{structtest__concepts_1_1_incr_a9627c856660e2333af05e3b3154f63b5}{operator++}} (int) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} + + +Definition at line 405 of file T\+Concepts.\+cpp. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{structtest__concepts_1_1_incr_abae843908ab62034a1d2a97eb4f617e8}\label{structtest__concepts_1_1_incr_abae843908ab62034a1d2a97eb4f617e8}} +\index{test\+\_\+concepts\+::\+Incr@{test\+\_\+concepts\+::\+Incr}!operator++@{operator++}} +\index{operator++@{operator++}!test\+\_\+concepts\+::\+Incr@{test\+\_\+concepts\+::\+Incr}} +\subsubsection{\texorpdfstring{operator++()}{operator++()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily \mbox{\hyperlink{structtest__concepts_1_1_incr}{Incr}}\& test\+\_\+concepts\+::\+Incr\+::operator++ (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 406 of file T\+Concepts.\+cpp. + +\mbox{\Hypertarget{structtest__concepts_1_1_incr_a9627c856660e2333af05e3b3154f63b5}\label{structtest__concepts_1_1_incr_a9627c856660e2333af05e3b3154f63b5}} +\index{test\+\_\+concepts\+::\+Incr@{test\+\_\+concepts\+::\+Incr}!operator++@{operator++}} +\index{operator++@{operator++}!test\+\_\+concepts\+::\+Incr@{test\+\_\+concepts\+::\+Incr}} +\subsubsection{\texorpdfstring{operator++()}{operator++()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily \mbox{\hyperlink{structtest__concepts_1_1_incr}{Incr}} test\+\_\+concepts\+::\+Incr\+::operator++ (\begin{DoxyParamCaption}\item[{int}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 407 of file T\+Concepts.\+cpp. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/tests/\mbox{\hyperlink{_t_concepts_8cpp}{T\+Concepts.\+cpp}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtest__concepts_1_1_inv.tex b/doc/latex/structtest__concepts_1_1_inv.tex new file mode 100644 index 0000000..0e98ac9 --- /dev/null +++ b/doc/latex/structtest__concepts_1_1_inv.tex @@ -0,0 +1,44 @@ +\hypertarget{structtest__concepts_1_1_inv}{}\section{test\+\_\+concepts\+:\+:Inv Struct Reference} +\label{structtest__concepts_1_1_inv}\index{test\+\_\+concepts\+::\+Inv@{test\+\_\+concepts\+::\+Inv}} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +void \mbox{\hyperlink{structtest__concepts_1_1_inv_a48577007f9d0d2958252cb3e8da5e765}{operator()}} (int) +\item +void \mbox{\hyperlink{structtest__concepts_1_1_inv_ac8c7c5074842856b9542f2e0828b2be4}{operator()}} () +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} + + +Definition at line 377 of file T\+Concepts.\+cpp. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{structtest__concepts_1_1_inv_a48577007f9d0d2958252cb3e8da5e765}\label{structtest__concepts_1_1_inv_a48577007f9d0d2958252cb3e8da5e765}} +\index{test\+\_\+concepts\+::\+Inv@{test\+\_\+concepts\+::\+Inv}!operator()@{operator()}} +\index{operator()@{operator()}!test\+\_\+concepts\+::\+Inv@{test\+\_\+concepts\+::\+Inv}} +\subsubsection{\texorpdfstring{operator()()}{operator()()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily void test\+\_\+concepts\+::\+Inv\+::operator() (\begin{DoxyParamCaption}\item[{int}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 378 of file T\+Concepts.\+cpp. + +\mbox{\Hypertarget{structtest__concepts_1_1_inv_ac8c7c5074842856b9542f2e0828b2be4}\label{structtest__concepts_1_1_inv_ac8c7c5074842856b9542f2e0828b2be4}} +\index{test\+\_\+concepts\+::\+Inv@{test\+\_\+concepts\+::\+Inv}!operator()@{operator()}} +\index{operator()@{operator()}!test\+\_\+concepts\+::\+Inv@{test\+\_\+concepts\+::\+Inv}} +\subsubsection{\texorpdfstring{operator()()}{operator()()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily void test\+\_\+concepts\+::\+Inv\+::operator() (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 379 of file T\+Concepts.\+cpp. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/tests/\mbox{\hyperlink{_t_concepts_8cpp}{T\+Concepts.\+cpp}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtest__concepts_1_1_pred.tex b/doc/latex/structtest__concepts_1_1_pred.tex new file mode 100644 index 0000000..11fac65 --- /dev/null +++ b/doc/latex/structtest__concepts_1_1_pred.tex @@ -0,0 +1,44 @@ +\hypertarget{structtest__concepts_1_1_pred}{}\section{test\+\_\+concepts\+:\+:Pred Struct Reference} +\label{structtest__concepts_1_1_pred}\index{test\+\_\+concepts\+::\+Pred@{test\+\_\+concepts\+::\+Pred}} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +bool \mbox{\hyperlink{structtest__concepts_1_1_pred_a2aacfb4e27c4de57190e3a9e9ff1ab07}{operator()}} (int) +\item +bool \mbox{\hyperlink{structtest__concepts_1_1_pred_a2677c56663ab4525a03eae496af547fa}{operator()}} (int, int) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} + + +Definition at line 381 of file T\+Concepts.\+cpp. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{structtest__concepts_1_1_pred_a2aacfb4e27c4de57190e3a9e9ff1ab07}\label{structtest__concepts_1_1_pred_a2aacfb4e27c4de57190e3a9e9ff1ab07}} +\index{test\+\_\+concepts\+::\+Pred@{test\+\_\+concepts\+::\+Pred}!operator()@{operator()}} +\index{operator()@{operator()}!test\+\_\+concepts\+::\+Pred@{test\+\_\+concepts\+::\+Pred}} +\subsubsection{\texorpdfstring{operator()()}{operator()()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily bool test\+\_\+concepts\+::\+Pred\+::operator() (\begin{DoxyParamCaption}\item[{int}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 382 of file T\+Concepts.\+cpp. + +\mbox{\Hypertarget{structtest__concepts_1_1_pred_a2677c56663ab4525a03eae496af547fa}\label{structtest__concepts_1_1_pred_a2677c56663ab4525a03eae496af547fa}} +\index{test\+\_\+concepts\+::\+Pred@{test\+\_\+concepts\+::\+Pred}!operator()@{operator()}} +\index{operator()@{operator()}!test\+\_\+concepts\+::\+Pred@{test\+\_\+concepts\+::\+Pred}} +\subsubsection{\texorpdfstring{operator()()}{operator()()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily bool test\+\_\+concepts\+::\+Pred\+::operator() (\begin{DoxyParamCaption}\item[{int}]{, }\item[{int}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 383 of file T\+Concepts.\+cpp. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/tests/\mbox{\hyperlink{_t_concepts_8cpp}{T\+Concepts.\+cpp}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtest__meta_1_1_ibar.tex b/doc/latex/structtest__meta_1_1_ibar.tex new file mode 100644 index 0000000..ccdb3ea --- /dev/null +++ b/doc/latex/structtest__meta_1_1_ibar.tex @@ -0,0 +1,77 @@ +\hypertarget{structtest__meta_1_1_ibar}{}\section{test\+\_\+meta\+:\+:Ibar Struct Reference} +\label{structtest__meta_1_1_ibar}\index{test\+\_\+meta\+::\+Ibar@{test\+\_\+meta\+::\+Ibar}} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{structtest__meta_1_1_ibar_a4b52f5ff89dbc9a79b081b12da4754fa}{Ibar}} (int num) +\item +int \mbox{\hyperlink{structtest__meta_1_1_ibar_a18e922be4d4097228f43933a701c772d}{echo}} (int i) const +\item +int \mbox{\hyperlink{structtest__meta_1_1_ibar_af30218244215b7fa6257d6876544cf5c}{get}} () const +\end{DoxyCompactItemize} +\subsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +int \mbox{\hyperlink{structtest__meta_1_1_ibar_a7bebffb49d52462872795f491ba0037d}{num\+\_\+}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} + + +Definition at line 37 of file Tinvoke.\+cpp. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{structtest__meta_1_1_ibar_a4b52f5ff89dbc9a79b081b12da4754fa}\label{structtest__meta_1_1_ibar_a4b52f5ff89dbc9a79b081b12da4754fa}} +\index{test\+\_\+meta\+::\+Ibar@{test\+\_\+meta\+::\+Ibar}!Ibar@{Ibar}} +\index{Ibar@{Ibar}!test\+\_\+meta\+::\+Ibar@{test\+\_\+meta\+::\+Ibar}} +\subsubsection{\texorpdfstring{Ibar()}{Ibar()}} +{\footnotesize\ttfamily test\+\_\+meta\+::\+Ibar\+::\+Ibar (\begin{DoxyParamCaption}\item[{int}]{num }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 38 of file Tinvoke.\+cpp. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{structtest__meta_1_1_ibar_a18e922be4d4097228f43933a701c772d}\label{structtest__meta_1_1_ibar_a18e922be4d4097228f43933a701c772d}} +\index{test\+\_\+meta\+::\+Ibar@{test\+\_\+meta\+::\+Ibar}!echo@{echo}} +\index{echo@{echo}!test\+\_\+meta\+::\+Ibar@{test\+\_\+meta\+::\+Ibar}} +\subsubsection{\texorpdfstring{echo()}{echo()}} +{\footnotesize\ttfamily int test\+\_\+meta\+::\+Ibar\+::echo (\begin{DoxyParamCaption}\item[{int}]{i }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 39 of file Tinvoke.\+cpp. + +\mbox{\Hypertarget{structtest__meta_1_1_ibar_af30218244215b7fa6257d6876544cf5c}\label{structtest__meta_1_1_ibar_af30218244215b7fa6257d6876544cf5c}} +\index{test\+\_\+meta\+::\+Ibar@{test\+\_\+meta\+::\+Ibar}!get@{get}} +\index{get@{get}!test\+\_\+meta\+::\+Ibar@{test\+\_\+meta\+::\+Ibar}} +\subsubsection{\texorpdfstring{get()}{get()}} +{\footnotesize\ttfamily int test\+\_\+meta\+::\+Ibar\+::get (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 40 of file Tinvoke.\+cpp. + + + +\subsection{Member Data Documentation} +\mbox{\Hypertarget{structtest__meta_1_1_ibar_a7bebffb49d52462872795f491ba0037d}\label{structtest__meta_1_1_ibar_a7bebffb49d52462872795f491ba0037d}} +\index{test\+\_\+meta\+::\+Ibar@{test\+\_\+meta\+::\+Ibar}!num\+\_\+@{num\+\_\+}} +\index{num\+\_\+@{num\+\_\+}!test\+\_\+meta\+::\+Ibar@{test\+\_\+meta\+::\+Ibar}} +\subsubsection{\texorpdfstring{num\+\_\+}{num\_}} +{\footnotesize\ttfamily int test\+\_\+meta\+::\+Ibar\+::num\+\_\+} + + + +Definition at line 41 of file Tinvoke.\+cpp. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/tests/\mbox{\hyperlink{_tinvoke_8cpp}{Tinvoke.\+cpp}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtest__meta_1_1_ifoo.tex b/doc/latex/structtest__meta_1_1_ifoo.tex new file mode 100644 index 0000000..c738aad --- /dev/null +++ b/doc/latex/structtest__meta_1_1_ifoo.tex @@ -0,0 +1,32 @@ +\hypertarget{structtest__meta_1_1_ifoo}{}\section{test\+\_\+meta\+:\+:Ifoo Struct Reference} +\label{structtest__meta_1_1_ifoo}\index{test\+\_\+meta\+::\+Ifoo@{test\+\_\+meta\+::\+Ifoo}} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +int \mbox{\hyperlink{structtest__meta_1_1_ifoo_aa7054705a6159214e95b432699f2d2ab}{operator()}} (int i) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} + + +Definition at line 31 of file Tinvoke.\+cpp. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{structtest__meta_1_1_ifoo_aa7054705a6159214e95b432699f2d2ab}\label{structtest__meta_1_1_ifoo_aa7054705a6159214e95b432699f2d2ab}} +\index{test\+\_\+meta\+::\+Ifoo@{test\+\_\+meta\+::\+Ifoo}!operator()@{operator()}} +\index{operator()@{operator()}!test\+\_\+meta\+::\+Ifoo@{test\+\_\+meta\+::\+Ifoo}} +\subsubsection{\texorpdfstring{operator()()}{operator()()}} +{\footnotesize\ttfamily int test\+\_\+meta\+::\+Ifoo\+::operator() (\begin{DoxyParamCaption}\item[{int}]{i }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 32 of file Tinvoke.\+cpp. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/tests/\mbox{\hyperlink{_tinvoke_8cpp}{Tinvoke.\+cpp}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtesting_1_1_print_to_string_param_name.tex b/doc/latex/structtesting_1_1_print_to_string_param_name.tex new file mode 100644 index 0000000..5869cc8 --- /dev/null +++ b/doc/latex/structtesting_1_1_print_to_string_param_name.tex @@ -0,0 +1,37 @@ +\hypertarget{structtesting_1_1_print_to_string_param_name}{}\section{testing\+:\+:Print\+To\+String\+Param\+Name Struct Reference} +\label{structtesting_1_1_print_to_string_param_name}\index{testing\+::\+Print\+To\+String\+Param\+Name@{testing\+::\+Print\+To\+String\+Param\+Name}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$class Param\+Type $>$ }\\std\+::string \mbox{\hyperlink{structtesting_1_1_print_to_string_param_name_a05b411cfb75dadb2c3c0355aee1dcf21}{operator()}} (const \mbox{\hyperlink{structtesting_1_1_test_param_info}{Test\+Param\+Info}}$<$ Param\+Type $>$ \&info) const +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} + + +Definition at line 10604 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{structtesting_1_1_print_to_string_param_name_a05b411cfb75dadb2c3c0355aee1dcf21}\label{structtesting_1_1_print_to_string_param_name_a05b411cfb75dadb2c3c0355aee1dcf21}} +\index{testing\+::\+Print\+To\+String\+Param\+Name@{testing\+::\+Print\+To\+String\+Param\+Name}!operator()@{operator()}} +\index{operator()@{operator()}!testing\+::\+Print\+To\+String\+Param\+Name@{testing\+::\+Print\+To\+String\+Param\+Name}} +\subsubsection{\texorpdfstring{operator()()}{operator()()}} +{\footnotesize\ttfamily template$<$class Param\+Type $>$ \\ +std\+::string testing\+::\+Print\+To\+String\+Param\+Name\+::operator() (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structtesting_1_1_test_param_info}{Test\+Param\+Info}}$<$ Param\+Type $>$ \&}]{info }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 10606 of file gtest.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtesting_1_1_test_param_info.tex b/doc/latex/structtesting_1_1_test_param_info.tex new file mode 100644 index 0000000..ed67fc1 --- /dev/null +++ b/doc/latex/structtesting_1_1_test_param_info.tex @@ -0,0 +1,72 @@ +\hypertarget{structtesting_1_1_test_param_info}{}\section{testing\+:\+:Test\+Param\+Info$<$ Param\+Type $>$ Struct Template Reference} +\label{structtesting_1_1_test_param_info}\index{testing\+::\+Test\+Param\+Info$<$ Param\+Type $>$@{testing\+::\+Test\+Param\+Info$<$ Param\+Type $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{structtesting_1_1_test_param_info_aa54199319bcad5a33c8538ecaecb6de5}{Test\+Param\+Info}} (const Param\+Type \&a\+\_\+param, size\+\_\+t an\+\_\+index) +\end{DoxyCompactItemize} +\subsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +Param\+Type \mbox{\hyperlink{structtesting_1_1_test_param_info_a146d921039f9da8b1336f7cc6e8436c2}{param}} +\item +size\+\_\+t \mbox{\hyperlink{structtesting_1_1_test_param_info_ad4d7bc02cbcc571eb3c1d2ec3ba5bb53}{index}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class Param\+Type$>$\newline +struct testing\+::\+Test\+Param\+Info$<$ Param\+Type $>$} + + + +Definition at line 10594 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{structtesting_1_1_test_param_info_aa54199319bcad5a33c8538ecaecb6de5}\label{structtesting_1_1_test_param_info_aa54199319bcad5a33c8538ecaecb6de5}} +\index{testing\+::\+Test\+Param\+Info@{testing\+::\+Test\+Param\+Info}!Test\+Param\+Info@{Test\+Param\+Info}} +\index{Test\+Param\+Info@{Test\+Param\+Info}!testing\+::\+Test\+Param\+Info@{testing\+::\+Test\+Param\+Info}} +\subsubsection{\texorpdfstring{Test\+Param\+Info()}{TestParamInfo()}} +{\footnotesize\ttfamily template$<$class Param\+Type$>$ \\ +\mbox{\hyperlink{structtesting_1_1_test_param_info}{testing\+::\+Test\+Param\+Info}}$<$ Param\+Type $>$\+::\mbox{\hyperlink{structtesting_1_1_test_param_info}{Test\+Param\+Info}} (\begin{DoxyParamCaption}\item[{const Param\+Type \&}]{a\+\_\+param, }\item[{size\+\_\+t}]{an\+\_\+index }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 10595 of file gtest.\+h. + + + +\subsection{Member Data Documentation} +\mbox{\Hypertarget{structtesting_1_1_test_param_info_ad4d7bc02cbcc571eb3c1d2ec3ba5bb53}\label{structtesting_1_1_test_param_info_ad4d7bc02cbcc571eb3c1d2ec3ba5bb53}} +\index{testing\+::\+Test\+Param\+Info@{testing\+::\+Test\+Param\+Info}!index@{index}} +\index{index@{index}!testing\+::\+Test\+Param\+Info@{testing\+::\+Test\+Param\+Info}} +\subsubsection{\texorpdfstring{index}{index}} +{\footnotesize\ttfamily template$<$class Param\+Type$>$ \\ +size\+\_\+t \mbox{\hyperlink{structtesting_1_1_test_param_info}{testing\+::\+Test\+Param\+Info}}$<$ Param\+Type $>$\+::index} + + + +Definition at line 10599 of file gtest.\+h. + +\mbox{\Hypertarget{structtesting_1_1_test_param_info_a146d921039f9da8b1336f7cc6e8436c2}\label{structtesting_1_1_test_param_info_a146d921039f9da8b1336f7cc6e8436c2}} +\index{testing\+::\+Test\+Param\+Info@{testing\+::\+Test\+Param\+Info}!param@{param}} +\index{param@{param}!testing\+::\+Test\+Param\+Info@{testing\+::\+Test\+Param\+Info}} +\subsubsection{\texorpdfstring{param}{param}} +{\footnotesize\ttfamily template$<$class Param\+Type$>$ \\ +Param\+Type \mbox{\hyperlink{structtesting_1_1_test_param_info}{testing\+::\+Test\+Param\+Info}}$<$ Param\+Type $>$\+::param} + + + +Definition at line 10598 of file gtest.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtesting_1_1internal_1_1_add_reference.tex b/doc/latex/structtesting_1_1internal_1_1_add_reference.tex new file mode 100644 index 0000000..83f9292 --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1_add_reference.tex @@ -0,0 +1,40 @@ +\hypertarget{structtesting_1_1internal_1_1_add_reference}{}\section{testing\+:\+:internal\+:\+:Add\+Reference$<$ T $>$ Struct Template Reference} +\label{structtesting_1_1internal_1_1_add_reference}\index{testing\+::internal\+::\+Add\+Reference$<$ T $>$@{testing\+::internal\+::\+Add\+Reference$<$ T $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +typedef T \& \mbox{\hyperlink{structtesting_1_1internal_1_1_add_reference_a2df8dd7c4e41f6390e6e66b1a9a67bb4}{type}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T$>$\newline +struct testing\+::internal\+::\+Add\+Reference$<$ T $>$} + + + +Definition at line 1292 of file gtest.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structtesting_1_1internal_1_1_add_reference_a2df8dd7c4e41f6390e6e66b1a9a67bb4}\label{structtesting_1_1internal_1_1_add_reference_a2df8dd7c4e41f6390e6e66b1a9a67bb4}} +\index{testing\+::internal\+::\+Add\+Reference@{testing\+::internal\+::\+Add\+Reference}!type@{type}} +\index{type@{type}!testing\+::internal\+::\+Add\+Reference@{testing\+::internal\+::\+Add\+Reference}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename T$>$ \\ +typedef T\& \mbox{\hyperlink{structtesting_1_1internal_1_1_add_reference}{testing\+::internal\+::\+Add\+Reference}}$<$ T $>$\+::\mbox{\hyperlink{structtesting_1_1internal_1_1_add_reference_a2df8dd7c4e41f6390e6e66b1a9a67bb4}{type}}} + + + +Definition at line 1292 of file gtest.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtesting_1_1internal_1_1_add_reference_3_01_t_01_6_01_4.tex b/doc/latex/structtesting_1_1internal_1_1_add_reference_3_01_t_01_6_01_4.tex new file mode 100644 index 0000000..3bbda09 --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1_add_reference_3_01_t_01_6_01_4.tex @@ -0,0 +1,40 @@ +\hypertarget{structtesting_1_1internal_1_1_add_reference_3_01_t_01_6_01_4}{}\section{testing\+:\+:internal\+:\+:Add\+Reference$<$ T \& $>$ Struct Template Reference} +\label{structtesting_1_1internal_1_1_add_reference_3_01_t_01_6_01_4}\index{testing\+::internal\+::\+Add\+Reference$<$ T \& $>$@{testing\+::internal\+::\+Add\+Reference$<$ T \& $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +typedef T \& \mbox{\hyperlink{structtesting_1_1internal_1_1_add_reference_3_01_t_01_6_01_4_a93c064cdcdaced0abd167258425e57af}{type}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T$>$\newline +struct testing\+::internal\+::\+Add\+Reference$<$ T \& $>$} + + + +Definition at line 1294 of file gtest.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structtesting_1_1internal_1_1_add_reference_3_01_t_01_6_01_4_a93c064cdcdaced0abd167258425e57af}\label{structtesting_1_1internal_1_1_add_reference_3_01_t_01_6_01_4_a93c064cdcdaced0abd167258425e57af}} +\index{testing\+::internal\+::\+Add\+Reference$<$ T \& $>$@{testing\+::internal\+::\+Add\+Reference$<$ T \& $>$}!type@{type}} +\index{type@{type}!testing\+::internal\+::\+Add\+Reference$<$ T \& $>$@{testing\+::internal\+::\+Add\+Reference$<$ T \& $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +typedef T\& \mbox{\hyperlink{structtesting_1_1internal_1_1_add_reference}{testing\+::internal\+::\+Add\+Reference}}$<$ T \& $>$\+::\mbox{\hyperlink{structtesting_1_1internal_1_1_add_reference_3_01_t_01_6_01_4_a93c064cdcdaced0abd167258425e57af}{type}}} + + + +Definition at line 1294 of file gtest.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtesting_1_1internal_1_1_code_location.tex b/doc/latex/structtesting_1_1internal_1_1_code_location.tex new file mode 100644 index 0000000..9a73116 --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1_code_location.tex @@ -0,0 +1,66 @@ +\hypertarget{structtesting_1_1internal_1_1_code_location}{}\section{testing\+:\+:internal\+:\+:Code\+Location Struct Reference} +\label{structtesting_1_1internal_1_1_code_location}\index{testing\+::internal\+::\+Code\+Location@{testing\+::internal\+::\+Code\+Location}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{structtesting_1_1internal_1_1_code_location_a323a11851c81629d632c47b9b767b8ac}{Code\+Location}} (const std\+::string \&a\+\_\+file, int a\+\_\+line) +\end{DoxyCompactItemize} +\subsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +std\+::string \mbox{\hyperlink{structtesting_1_1internal_1_1_code_location_a38118056ad3c11359920274e393bc6b3}{file}} +\item +int \mbox{\hyperlink{structtesting_1_1internal_1_1_code_location_a01c977c7e8834a05a6d6c40b0c416045}{line}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} + + +Definition at line 6929 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{structtesting_1_1internal_1_1_code_location_a323a11851c81629d632c47b9b767b8ac}\label{structtesting_1_1internal_1_1_code_location_a323a11851c81629d632c47b9b767b8ac}} +\index{testing\+::internal\+::\+Code\+Location@{testing\+::internal\+::\+Code\+Location}!Code\+Location@{Code\+Location}} +\index{Code\+Location@{Code\+Location}!testing\+::internal\+::\+Code\+Location@{testing\+::internal\+::\+Code\+Location}} +\subsubsection{\texorpdfstring{Code\+Location()}{CodeLocation()}} +{\footnotesize\ttfamily testing\+::internal\+::\+Code\+Location\+::\+Code\+Location (\begin{DoxyParamCaption}\item[{const std\+::string \&}]{a\+\_\+file, }\item[{int}]{a\+\_\+line }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 6930 of file gtest.\+h. + + + +\subsection{Member Data Documentation} +\mbox{\Hypertarget{structtesting_1_1internal_1_1_code_location_a38118056ad3c11359920274e393bc6b3}\label{structtesting_1_1internal_1_1_code_location_a38118056ad3c11359920274e393bc6b3}} +\index{testing\+::internal\+::\+Code\+Location@{testing\+::internal\+::\+Code\+Location}!file@{file}} +\index{file@{file}!testing\+::internal\+::\+Code\+Location@{testing\+::internal\+::\+Code\+Location}} +\subsubsection{\texorpdfstring{file}{file}} +{\footnotesize\ttfamily std\+::string testing\+::internal\+::\+Code\+Location\+::file} + + + +Definition at line 6933 of file gtest.\+h. + +\mbox{\Hypertarget{structtesting_1_1internal_1_1_code_location_a01c977c7e8834a05a6d6c40b0c416045}\label{structtesting_1_1internal_1_1_code_location_a01c977c7e8834a05a6d6c40b0c416045}} +\index{testing\+::internal\+::\+Code\+Location@{testing\+::internal\+::\+Code\+Location}!line@{line}} +\index{line@{line}!testing\+::internal\+::\+Code\+Location@{testing\+::internal\+::\+Code\+Location}} +\subsubsection{\texorpdfstring{line}{line}} +{\footnotesize\ttfamily int testing\+::internal\+::\+Code\+Location\+::line} + + + +Definition at line 6934 of file gtest.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtesting_1_1internal_1_1_compile_assert_types_equal.tex b/doc/latex/structtesting_1_1internal_1_1_compile_assert_types_equal.tex new file mode 100644 index 0000000..543a9bb --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1_compile_assert_types_equal.tex @@ -0,0 +1,21 @@ +\hypertarget{structtesting_1_1internal_1_1_compile_assert_types_equal}{}\section{testing\+:\+:internal\+:\+:Compile\+Assert\+Types\+Equal$<$ T1, T2 $>$ Struct Template Reference} +\label{structtesting_1_1internal_1_1_compile_assert_types_equal}\index{testing\+::internal\+::\+Compile\+Assert\+Types\+Equal$<$ T1, T2 $>$@{testing\+::internal\+::\+Compile\+Assert\+Types\+Equal$<$ T1, T2 $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T1, typename T2$>$\newline +struct testing\+::internal\+::\+Compile\+Assert\+Types\+Equal$<$ T1, T2 $>$} + + + +Definition at line 7296 of file gtest.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtesting_1_1internal_1_1_compile_assert_types_equal_3_01_t_00_01_t_01_4.tex b/doc/latex/structtesting_1_1internal_1_1_compile_assert_types_equal_3_01_t_00_01_t_01_4.tex new file mode 100644 index 0000000..db531f9 --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1_compile_assert_types_equal_3_01_t_00_01_t_01_4.tex @@ -0,0 +1,21 @@ +\hypertarget{structtesting_1_1internal_1_1_compile_assert_types_equal_3_01_t_00_01_t_01_4}{}\section{testing\+:\+:internal\+:\+:Compile\+Assert\+Types\+Equal$<$ T, T $>$ Struct Template Reference} +\label{structtesting_1_1internal_1_1_compile_assert_types_equal_3_01_t_00_01_t_01_4}\index{testing\+::internal\+::\+Compile\+Assert\+Types\+Equal$<$ T, T $>$@{testing\+::internal\+::\+Compile\+Assert\+Types\+Equal$<$ T, T $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T$>$\newline +struct testing\+::internal\+::\+Compile\+Assert\+Types\+Equal$<$ T, T $>$} + + + +Definition at line 7299 of file gtest.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtesting_1_1internal_1_1_const_char_ptr.tex b/doc/latex/structtesting_1_1internal_1_1_const_char_ptr.tex new file mode 100644 index 0000000..c197146 --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1_const_char_ptr.tex @@ -0,0 +1,69 @@ +\hypertarget{structtesting_1_1internal_1_1_const_char_ptr}{}\section{testing\+:\+:internal\+:\+:Const\+Char\+Ptr Struct Reference} +\label{structtesting_1_1internal_1_1_const_char_ptr}\index{testing\+::internal\+::\+Const\+Char\+Ptr@{testing\+::internal\+::\+Const\+Char\+Ptr}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{structtesting_1_1internal_1_1_const_char_ptr_ae94f6453fa679d815994eccc63062907}{Const\+Char\+Ptr}} (const char $\ast$str) +\item +\mbox{\hyperlink{structtesting_1_1internal_1_1_const_char_ptr_a85c8174b5d4db8fe96863509ba767b27}{operator bool}} () const +\end{DoxyCompactItemize} +\subsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +const char $\ast$ \mbox{\hyperlink{structtesting_1_1internal_1_1_const_char_ptr_adba40d23d5986904b605946f643cf26e}{value}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} + + +Definition at line 7265 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{structtesting_1_1internal_1_1_const_char_ptr_ae94f6453fa679d815994eccc63062907}\label{structtesting_1_1internal_1_1_const_char_ptr_ae94f6453fa679d815994eccc63062907}} +\index{testing\+::internal\+::\+Const\+Char\+Ptr@{testing\+::internal\+::\+Const\+Char\+Ptr}!Const\+Char\+Ptr@{Const\+Char\+Ptr}} +\index{Const\+Char\+Ptr@{Const\+Char\+Ptr}!testing\+::internal\+::\+Const\+Char\+Ptr@{testing\+::internal\+::\+Const\+Char\+Ptr}} +\subsubsection{\texorpdfstring{Const\+Char\+Ptr()}{ConstCharPtr()}} +{\footnotesize\ttfamily testing\+::internal\+::\+Const\+Char\+Ptr\+::\+Const\+Char\+Ptr (\begin{DoxyParamCaption}\item[{const char $\ast$}]{str }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 7266 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{structtesting_1_1internal_1_1_const_char_ptr_a85c8174b5d4db8fe96863509ba767b27}\label{structtesting_1_1internal_1_1_const_char_ptr_a85c8174b5d4db8fe96863509ba767b27}} +\index{testing\+::internal\+::\+Const\+Char\+Ptr@{testing\+::internal\+::\+Const\+Char\+Ptr}!operator bool@{operator bool}} +\index{operator bool@{operator bool}!testing\+::internal\+::\+Const\+Char\+Ptr@{testing\+::internal\+::\+Const\+Char\+Ptr}} +\subsubsection{\texorpdfstring{operator bool()}{operator bool()}} +{\footnotesize\ttfamily testing\+::internal\+::\+Const\+Char\+Ptr\+::operator bool (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 7267 of file gtest.\+h. + + + +\subsection{Member Data Documentation} +\mbox{\Hypertarget{structtesting_1_1internal_1_1_const_char_ptr_adba40d23d5986904b605946f643cf26e}\label{structtesting_1_1internal_1_1_const_char_ptr_adba40d23d5986904b605946f643cf26e}} +\index{testing\+::internal\+::\+Const\+Char\+Ptr@{testing\+::internal\+::\+Const\+Char\+Ptr}!value@{value}} +\index{value@{value}!testing\+::internal\+::\+Const\+Char\+Ptr@{testing\+::internal\+::\+Const\+Char\+Ptr}} +\subsubsection{\texorpdfstring{value}{value}} +{\footnotesize\ttfamily const char$\ast$ testing\+::internal\+::\+Const\+Char\+Ptr\+::value} + + + +Definition at line 7268 of file gtest.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtesting_1_1internal_1_1_const_ref.tex b/doc/latex/structtesting_1_1internal_1_1_const_ref.tex new file mode 100644 index 0000000..80877ad --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1_const_ref.tex @@ -0,0 +1,40 @@ +\hypertarget{structtesting_1_1internal_1_1_const_ref}{}\section{testing\+:\+:internal\+:\+:Const\+Ref$<$ T $>$ Struct Template Reference} +\label{structtesting_1_1internal_1_1_const_ref}\index{testing\+::internal\+::\+Const\+Ref$<$ T $>$@{testing\+::internal\+::\+Const\+Ref$<$ T $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +typedef const T \& \mbox{\hyperlink{structtesting_1_1internal_1_1_const_ref_a53610a4d0e72958332222b0a85f8937a}{type}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T$>$\newline +struct testing\+::internal\+::\+Const\+Ref$<$ T $>$} + + + +Definition at line 1313 of file gtest.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structtesting_1_1internal_1_1_const_ref_a53610a4d0e72958332222b0a85f8937a}\label{structtesting_1_1internal_1_1_const_ref_a53610a4d0e72958332222b0a85f8937a}} +\index{testing\+::internal\+::\+Const\+Ref@{testing\+::internal\+::\+Const\+Ref}!type@{type}} +\index{type@{type}!testing\+::internal\+::\+Const\+Ref@{testing\+::internal\+::\+Const\+Ref}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +typedef const T\& \mbox{\hyperlink{structtesting_1_1internal_1_1_const_ref}{testing\+::internal\+::\+Const\+Ref}}$<$ T $>$\+::\mbox{\hyperlink{structtesting_1_1internal_1_1_const_ref_a53610a4d0e72958332222b0a85f8937a}{type}}} + + + +Definition at line 1313 of file gtest.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtesting_1_1internal_1_1_const_ref_3_01_t_01_6_01_4.tex b/doc/latex/structtesting_1_1internal_1_1_const_ref_3_01_t_01_6_01_4.tex new file mode 100644 index 0000000..eceff9e --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1_const_ref_3_01_t_01_6_01_4.tex @@ -0,0 +1,40 @@ +\hypertarget{structtesting_1_1internal_1_1_const_ref_3_01_t_01_6_01_4}{}\section{testing\+:\+:internal\+:\+:Const\+Ref$<$ T \& $>$ Struct Template Reference} +\label{structtesting_1_1internal_1_1_const_ref_3_01_t_01_6_01_4}\index{testing\+::internal\+::\+Const\+Ref$<$ T \& $>$@{testing\+::internal\+::\+Const\+Ref$<$ T \& $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +typedef T \& \mbox{\hyperlink{structtesting_1_1internal_1_1_const_ref_3_01_t_01_6_01_4_a9f664dd25649a0d260cfb1f610c7a349}{type}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T$>$\newline +struct testing\+::internal\+::\+Const\+Ref$<$ T \& $>$} + + + +Definition at line 1315 of file gtest.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structtesting_1_1internal_1_1_const_ref_3_01_t_01_6_01_4_a9f664dd25649a0d260cfb1f610c7a349}\label{structtesting_1_1internal_1_1_const_ref_3_01_t_01_6_01_4_a9f664dd25649a0d260cfb1f610c7a349}} +\index{testing\+::internal\+::\+Const\+Ref$<$ T \& $>$@{testing\+::internal\+::\+Const\+Ref$<$ T \& $>$}!type@{type}} +\index{type@{type}!testing\+::internal\+::\+Const\+Ref$<$ T \& $>$@{testing\+::internal\+::\+Const\+Ref$<$ T \& $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +typedef T\& \mbox{\hyperlink{structtesting_1_1internal_1_1_const_ref}{testing\+::internal\+::\+Const\+Ref}}$<$ T \& $>$\+::\mbox{\hyperlink{structtesting_1_1internal_1_1_const_ref_3_01_t_01_6_01_4_a9f664dd25649a0d260cfb1f610c7a349}{type}}} + + + +Definition at line 1315 of file gtest.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtesting_1_1internal_1_1_double_sequence.tex b/doc/latex/structtesting_1_1internal_1_1_double_sequence.tex new file mode 100644 index 0000000..d85fa19 --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1_double_sequence.tex @@ -0,0 +1,21 @@ +\hypertarget{structtesting_1_1internal_1_1_double_sequence}{}\section{testing\+:\+:internal\+:\+:Double\+Sequence$<$ plus\+\_\+one, T, sizeofT $>$ Struct Template Reference} +\label{structtesting_1_1internal_1_1_double_sequence}\index{testing\+::internal\+::\+Double\+Sequence$<$ plus\+\_\+one, T, sizeof\+T $>$@{testing\+::internal\+::\+Double\+Sequence$<$ plus\+\_\+one, T, sizeof\+T $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + + + +\subsection{Detailed Description} +\subsubsection*{template$<$bool plus\+\_\+one, typename T, size\+\_\+t sizeofT$>$\newline +struct testing\+::internal\+::\+Double\+Sequence$<$ plus\+\_\+one, T, sizeof\+T $>$} + + + +Definition at line 7652 of file gtest.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtesting_1_1internal_1_1_double_sequence_3_01false_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4.tex b/doc/latex/structtesting_1_1internal_1_1_double_sequence_3_01false_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4.tex new file mode 100644 index 0000000..7c9afa4 --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1_double_sequence_3_01false_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4.tex @@ -0,0 +1,40 @@ +\hypertarget{structtesting_1_1internal_1_1_double_sequence_3_01false_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4}{}\section{testing\+:\+:internal\+:\+:Double\+Sequence$<$ false, Index\+Sequence$<$ I... $>$, sizeofT $>$ Struct Template Reference} +\label{structtesting_1_1internal_1_1_double_sequence_3_01false_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4}\index{testing\+::internal\+::\+Double\+Sequence$<$ false, Index\+Sequence$<$ I... $>$, sizeof\+T $>$@{testing\+::internal\+::\+Double\+Sequence$<$ false, Index\+Sequence$<$ I... $>$, sizeof\+T $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structtesting_1_1internal_1_1_double_sequence_3_01false_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4_af11568320fe19e984e2eb5ab9ad026aa}{type}} = \mbox{\hyperlink{structtesting_1_1internal_1_1_index_sequence}{Index\+Sequence}}$<$ I...,(sizeofT+I)... $>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$size\+\_\+t... I, size\+\_\+t sizeofT$>$\newline +struct testing\+::internal\+::\+Double\+Sequence$<$ false, Index\+Sequence$<$ I... $>$, sizeof\+T $>$} + + + +Definition at line 7658 of file gtest.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structtesting_1_1internal_1_1_double_sequence_3_01false_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4_af11568320fe19e984e2eb5ab9ad026aa}\label{structtesting_1_1internal_1_1_double_sequence_3_01false_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4_af11568320fe19e984e2eb5ab9ad026aa}} +\index{testing\+::internal\+::\+Double\+Sequence$<$ false, Index\+Sequence$<$ I... $>$, sizeof\+T $>$@{testing\+::internal\+::\+Double\+Sequence$<$ false, Index\+Sequence$<$ I... $>$, sizeof\+T $>$}!type@{type}} +\index{type@{type}!testing\+::internal\+::\+Double\+Sequence$<$ false, Index\+Sequence$<$ I... $>$, sizeof\+T $>$@{testing\+::internal\+::\+Double\+Sequence$<$ false, Index\+Sequence$<$ I... $>$, sizeof\+T $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$size\+\_\+t... I, size\+\_\+t sizeofT$>$ \\ +using \mbox{\hyperlink{structtesting_1_1internal_1_1_double_sequence}{testing\+::internal\+::\+Double\+Sequence}}$<$ false, \mbox{\hyperlink{structtesting_1_1internal_1_1_index_sequence}{Index\+Sequence}}$<$ I... $>$, sizeofT $>$\+::\mbox{\hyperlink{structtesting_1_1internal_1_1_double_sequence_3_01false_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4_af11568320fe19e984e2eb5ab9ad026aa}{type}} = \mbox{\hyperlink{structtesting_1_1internal_1_1_index_sequence}{Index\+Sequence}}$<$I..., (sizeofT + I)...$>$} + + + +Definition at line 7659 of file gtest.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtesting_1_1internal_1_1_double_sequence_3_01true_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4.tex b/doc/latex/structtesting_1_1internal_1_1_double_sequence_3_01true_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4.tex new file mode 100644 index 0000000..45f357b --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1_double_sequence_3_01true_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4.tex @@ -0,0 +1,40 @@ +\hypertarget{structtesting_1_1internal_1_1_double_sequence_3_01true_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4}{}\section{testing\+:\+:internal\+:\+:Double\+Sequence$<$ true, Index\+Sequence$<$ I... $>$, sizeofT $>$ Struct Template Reference} +\label{structtesting_1_1internal_1_1_double_sequence_3_01true_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4}\index{testing\+::internal\+::\+Double\+Sequence$<$ true, Index\+Sequence$<$ I... $>$, sizeof\+T $>$@{testing\+::internal\+::\+Double\+Sequence$<$ true, Index\+Sequence$<$ I... $>$, sizeof\+T $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structtesting_1_1internal_1_1_double_sequence_3_01true_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4_a6f0fbcc14f5264c7db52f3ba3e264545}{type}} = \mbox{\hyperlink{structtesting_1_1internal_1_1_index_sequence}{Index\+Sequence}}$<$ I...,(sizeofT+I)..., 2 $\ast$sizeofT $>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$size\+\_\+t... I, size\+\_\+t sizeofT$>$\newline +struct testing\+::internal\+::\+Double\+Sequence$<$ true, Index\+Sequence$<$ I... $>$, sizeof\+T $>$} + + + +Definition at line 7654 of file gtest.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structtesting_1_1internal_1_1_double_sequence_3_01true_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4_a6f0fbcc14f5264c7db52f3ba3e264545}\label{structtesting_1_1internal_1_1_double_sequence_3_01true_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4_a6f0fbcc14f5264c7db52f3ba3e264545}} +\index{testing\+::internal\+::\+Double\+Sequence$<$ true, Index\+Sequence$<$ I... $>$, sizeof\+T $>$@{testing\+::internal\+::\+Double\+Sequence$<$ true, Index\+Sequence$<$ I... $>$, sizeof\+T $>$}!type@{type}} +\index{type@{type}!testing\+::internal\+::\+Double\+Sequence$<$ true, Index\+Sequence$<$ I... $>$, sizeof\+T $>$@{testing\+::internal\+::\+Double\+Sequence$<$ true, Index\+Sequence$<$ I... $>$, sizeof\+T $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$size\+\_\+t... I, size\+\_\+t sizeofT$>$ \\ +using \mbox{\hyperlink{structtesting_1_1internal_1_1_double_sequence}{testing\+::internal\+::\+Double\+Sequence}}$<$ true, \mbox{\hyperlink{structtesting_1_1internal_1_1_index_sequence}{Index\+Sequence}}$<$ I... $>$, sizeofT $>$\+::\mbox{\hyperlink{structtesting_1_1internal_1_1_double_sequence_3_01true_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01sizeof_t_01_4_a6f0fbcc14f5264c7db52f3ba3e264545}{type}} = \mbox{\hyperlink{structtesting_1_1internal_1_1_index_sequence}{Index\+Sequence}}$<$I..., (sizeofT + I)..., 2 $\ast$ sizeofT$>$} + + + +Definition at line 7655 of file gtest.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtesting_1_1internal_1_1_elem_from_list.tex b/doc/latex/structtesting_1_1internal_1_1_elem_from_list.tex new file mode 100644 index 0000000..39aa32e --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1_elem_from_list.tex @@ -0,0 +1,21 @@ +\hypertarget{structtesting_1_1internal_1_1_elem_from_list}{}\section{testing\+:\+:internal\+:\+:Elem\+From\+List$<$ N, I, T $>$ Struct Template Reference} +\label{structtesting_1_1internal_1_1_elem_from_list}\index{testing\+::internal\+::\+Elem\+From\+List$<$ N, I, T $>$@{testing\+::internal\+::\+Elem\+From\+List$<$ N, I, T $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + + + +\subsection{Detailed Description} +\subsubsection*{template$<$size\+\_\+t N, typename I, typename... T$>$\newline +struct testing\+::internal\+::\+Elem\+From\+List$<$ N, I, T $>$} + + + +Definition at line 7686 of file gtest.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtesting_1_1internal_1_1_elem_from_list_3_01_n_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01_t_8_8_8_01_4.eps b/doc/latex/structtesting_1_1internal_1_1_elem_from_list_3_01_n_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01_t_8_8_8_01_4.eps new file mode 100644 index 0000000..b1abf81 --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1_elem_from_list_3_01_n_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01_t_8_8_8_01_4.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 105.263158 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 4.750000 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(testing::internal::ElemFromList< N, IndexSequence< I... >, T... >) cw +(testing::internal::ElemFromListImpl< T, N, I >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (testing::internal::ElemFromList< N, IndexSequence< I... >, T... >) 0.000000 0.000000 box + (testing::internal::ElemFromListImpl< T, N, I >) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/structtesting_1_1internal_1_1_elem_from_list_3_01_n_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01_t_8_8_8_01_4.tex b/doc/latex/structtesting_1_1internal_1_1_elem_from_list_3_01_n_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01_t_8_8_8_01_4.tex new file mode 100644 index 0000000..28af562 --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1_elem_from_list_3_01_n_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01_t_8_8_8_01_4.tex @@ -0,0 +1,27 @@ +\hypertarget{structtesting_1_1internal_1_1_elem_from_list_3_01_n_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01_t_8_8_8_01_4}{}\section{testing\+:\+:internal\+:\+:Elem\+From\+List$<$ N, Index\+Sequence$<$ I... $>$, T... $>$ Struct Template Reference} +\label{structtesting_1_1internal_1_1_elem_from_list_3_01_n_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01_t_8_8_8_01_4}\index{testing\+::internal\+::\+Elem\+From\+List$<$ N, Index\+Sequence$<$ I... $>$, T... $>$@{testing\+::internal\+::\+Elem\+From\+List$<$ N, Index\+Sequence$<$ I... $>$, T... $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +Inheritance diagram for testing\+:\+:internal\+:\+:Elem\+From\+List$<$ N, Index\+Sequence$<$ I... $>$, T... $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{structtesting_1_1internal_1_1_elem_from_list_3_01_n_00_01_index_sequence_3_01_i_8_8_8_01_4_00_01_t_8_8_8_01_4} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$size\+\_\+t N, size\+\_\+t... I, typename... T$>$\newline +struct testing\+::internal\+::\+Elem\+From\+List$<$ N, Index\+Sequence$<$ I... $>$, T... $>$} + + + +Definition at line 7689 of file gtest.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtesting_1_1internal_1_1_elem_from_list_impl.tex b/doc/latex/structtesting_1_1internal_1_1_elem_from_list_impl.tex new file mode 100644 index 0000000..93ec4a3 --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1_elem_from_list_impl.tex @@ -0,0 +1,21 @@ +\hypertarget{structtesting_1_1internal_1_1_elem_from_list_impl}{}\section{testing\+:\+:internal\+:\+:Elem\+From\+List\+Impl$<$ T, size\+\_\+t, size\+\_\+t $>$ Struct Template Reference} +\label{structtesting_1_1internal_1_1_elem_from_list_impl}\index{testing\+::internal\+::\+Elem\+From\+List\+Impl$<$ T, size\+\_\+t, size\+\_\+t $>$@{testing\+::internal\+::\+Elem\+From\+List\+Impl$<$ T, size\+\_\+t, size\+\_\+t $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T, size\+\_\+t, size\+\_\+t$>$\newline +struct testing\+::internal\+::\+Elem\+From\+List\+Impl$<$ T, size\+\_\+t, size\+\_\+t $>$} + + + +Definition at line 7676 of file gtest.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtesting_1_1internal_1_1_elem_from_list_impl_3_01_t_00_01_i_00_01_i_01_4.tex b/doc/latex/structtesting_1_1internal_1_1_elem_from_list_impl_3_01_t_00_01_i_00_01_i_01_4.tex new file mode 100644 index 0000000..58c055e --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1_elem_from_list_impl_3_01_t_00_01_i_00_01_i_01_4.tex @@ -0,0 +1,40 @@ +\hypertarget{structtesting_1_1internal_1_1_elem_from_list_impl_3_01_t_00_01_i_00_01_i_01_4}{}\section{testing\+:\+:internal\+:\+:Elem\+From\+List\+Impl$<$ T, I, I $>$ Struct Template Reference} +\label{structtesting_1_1internal_1_1_elem_from_list_impl_3_01_t_00_01_i_00_01_i_01_4}\index{testing\+::internal\+::\+Elem\+From\+List\+Impl$<$ T, I, I $>$@{testing\+::internal\+::\+Elem\+From\+List\+Impl$<$ T, I, I $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structtesting_1_1internal_1_1_elem_from_list_impl_3_01_t_00_01_i_00_01_i_01_4_ab1552e339cc1ff1e0aa448d684ffaf39}{type}} = T +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T, size\+\_\+t I$>$\newline +struct testing\+::internal\+::\+Elem\+From\+List\+Impl$<$ T, I, I $>$} + + + +Definition at line 7679 of file gtest.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structtesting_1_1internal_1_1_elem_from_list_impl_3_01_t_00_01_i_00_01_i_01_4_ab1552e339cc1ff1e0aa448d684ffaf39}\label{structtesting_1_1internal_1_1_elem_from_list_impl_3_01_t_00_01_i_00_01_i_01_4_ab1552e339cc1ff1e0aa448d684ffaf39}} +\index{testing\+::internal\+::\+Elem\+From\+List\+Impl$<$ T, I, I $>$@{testing\+::internal\+::\+Elem\+From\+List\+Impl$<$ T, I, I $>$}!type@{type}} +\index{type@{type}!testing\+::internal\+::\+Elem\+From\+List\+Impl$<$ T, I, I $>$@{testing\+::internal\+::\+Elem\+From\+List\+Impl$<$ T, I, I $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename T , size\+\_\+t I$>$ \\ +using \mbox{\hyperlink{structtesting_1_1internal_1_1_elem_from_list_impl}{testing\+::internal\+::\+Elem\+From\+List\+Impl}}$<$ T, I, I $>$\+::\mbox{\hyperlink{structtesting_1_1internal_1_1_elem_from_list_impl_3_01_t_00_01_i_00_01_i_01_4_ab1552e339cc1ff1e0aa448d684ffaf39}{type}} = T} + + + +Definition at line 7680 of file gtest.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtesting_1_1internal_1_1_enable_if.tex b/doc/latex/structtesting_1_1internal_1_1_enable_if.tex new file mode 100644 index 0000000..22cc28b --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1_enable_if.tex @@ -0,0 +1,21 @@ +\hypertarget{structtesting_1_1internal_1_1_enable_if}{}\section{testing\+:\+:internal\+:\+:Enable\+If$<$ bool $>$ Struct Template Reference} +\label{structtesting_1_1internal_1_1_enable_if}\index{testing\+::internal\+::\+Enable\+If$<$ bool $>$@{testing\+::internal\+::\+Enable\+If$<$ bool $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + + + +\subsection{Detailed Description} +\subsubsection*{template$<$bool$>$\newline +struct testing\+::internal\+::\+Enable\+If$<$ bool $>$} + + + +Definition at line 7491 of file gtest.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtesting_1_1internal_1_1_enable_if_3_01true_01_4.tex b/doc/latex/structtesting_1_1internal_1_1_enable_if_3_01true_01_4.tex new file mode 100644 index 0000000..5f2fb57 --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1_enable_if_3_01true_01_4.tex @@ -0,0 +1,39 @@ +\hypertarget{structtesting_1_1internal_1_1_enable_if_3_01true_01_4}{}\section{testing\+:\+:internal\+:\+:Enable\+If$<$ true $>$ Struct Template Reference} +\label{structtesting_1_1internal_1_1_enable_if_3_01true_01_4}\index{testing\+::internal\+::\+Enable\+If$<$ true $>$@{testing\+::internal\+::\+Enable\+If$<$ true $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +typedef void \mbox{\hyperlink{structtesting_1_1internal_1_1_enable_if_3_01true_01_4_a9398d803f1fdd99ff41823746f6299ff}{type}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$$>$\newline +struct testing\+::internal\+::\+Enable\+If$<$ true $>$} + + + +Definition at line 7492 of file gtest.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structtesting_1_1internal_1_1_enable_if_3_01true_01_4_a9398d803f1fdd99ff41823746f6299ff}\label{structtesting_1_1internal_1_1_enable_if_3_01true_01_4_a9398d803f1fdd99ff41823746f6299ff}} +\index{testing\+::internal\+::\+Enable\+If$<$ true $>$@{testing\+::internal\+::\+Enable\+If$<$ true $>$}!type@{type}} +\index{type@{type}!testing\+::internal\+::\+Enable\+If$<$ true $>$@{testing\+::internal\+::\+Enable\+If$<$ true $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily typedef void \mbox{\hyperlink{structtesting_1_1internal_1_1_enable_if}{testing\+::internal\+::\+Enable\+If}}$<$ true $>$\+::\mbox{\hyperlink{structtesting_1_1internal_1_1_enable_if_3_01true_01_4_a9398d803f1fdd99ff41823746f6299ff}{type}}} + + + +Definition at line 7492 of file gtest.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtesting_1_1internal_1_1_flat_tuple_base.tex b/doc/latex/structtesting_1_1internal_1_1_flat_tuple_base.tex new file mode 100644 index 0000000..81d6681 --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1_flat_tuple_base.tex @@ -0,0 +1,21 @@ +\hypertarget{structtesting_1_1internal_1_1_flat_tuple_base}{}\section{testing\+:\+:internal\+:\+:Flat\+Tuple\+Base$<$ Derived, Idx $>$ Struct Template Reference} +\label{structtesting_1_1internal_1_1_flat_tuple_base}\index{testing\+::internal\+::\+Flat\+Tuple\+Base$<$ Derived, Idx $>$@{testing\+::internal\+::\+Flat\+Tuple\+Base$<$ Derived, Idx $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename Derived, typename Idx$>$\newline +struct testing\+::internal\+::\+Flat\+Tuple\+Base$<$ Derived, Idx $>$} + + + +Definition at line 7709 of file gtest.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtesting_1_1internal_1_1_flat_tuple_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_index_sequence_3_01_idx_8_8_8_01_4_01_4.eps b/doc/latex/structtesting_1_1internal_1_1_flat_tuple_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_index_sequence_3_01_idx_8_8_8_01_4_01_4.eps new file mode 100644 index 0000000..ee8e21c --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1_flat_tuple_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_index_sequence_3_01_idx_8_8_8_01_4_01_4.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 87.719298 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 5.700000 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(testing::internal::FlatTupleBase< FlatTuple< T... >, IndexSequence< Idx... > >) cw +(testing::internal::FlatTupleElemBase< FlatTuple< T... >, Idx >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (testing::internal::FlatTupleBase< FlatTuple< T... >, IndexSequence< Idx... > >) 0.000000 0.000000 box + (testing::internal::FlatTupleElemBase< FlatTuple< T... >, Idx >) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/structtesting_1_1internal_1_1_flat_tuple_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_index_sequence_3_01_idx_8_8_8_01_4_01_4.tex b/doc/latex/structtesting_1_1internal_1_1_flat_tuple_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_index_sequence_3_01_idx_8_8_8_01_4_01_4.tex new file mode 100644 index 0000000..72376ac --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1_flat_tuple_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_index_sequence_3_01_idx_8_8_8_01_4_01_4.tex @@ -0,0 +1,74 @@ +\hypertarget{structtesting_1_1internal_1_1_flat_tuple_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_index_sequence_3_01_idx_8_8_8_01_4_01_4}{}\section{testing\+:\+:internal\+:\+:Flat\+Tuple\+Base$<$ Flat\+Tuple$<$ T... $>$, Index\+Sequence$<$ Idx... $>$ $>$ Struct Template Reference} +\label{structtesting_1_1internal_1_1_flat_tuple_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_index_sequence_3_01_idx_8_8_8_01_4_01_4}\index{testing\+::internal\+::\+Flat\+Tuple\+Base$<$ Flat\+Tuple$<$ T... $>$, Index\+Sequence$<$ Idx... $>$ $>$@{testing\+::internal\+::\+Flat\+Tuple\+Base$<$ Flat\+Tuple$<$ T... $>$, Index\+Sequence$<$ Idx... $>$ $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +Inheritance diagram for testing\+:\+:internal\+:\+:Flat\+Tuple\+Base$<$ Flat\+Tuple$<$ T... $>$, Index\+Sequence$<$ Idx... $>$ $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{structtesting_1_1internal_1_1_flat_tuple_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_index_sequence_3_01_idx_8_8_8_01_4_01_4} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structtesting_1_1internal_1_1_flat_tuple_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_index_sequence_3_01_idx_8_8_8_01_4_01_4_ada1941ebde1ec1c844b72970e0ccb304}{Indices}} = \mbox{\hyperlink{structtesting_1_1internal_1_1_index_sequence}{Index\+Sequence}}$<$ Idx... $>$ +\end{DoxyCompactItemize} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{structtesting_1_1internal_1_1_flat_tuple_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_index_sequence_3_01_idx_8_8_8_01_4_01_4_ae509b146e74176bceddc0d2f2d1cb0dc}{Flat\+Tuple\+Base}} ()=default +\item +\mbox{\hyperlink{structtesting_1_1internal_1_1_flat_tuple_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_index_sequence_3_01_idx_8_8_8_01_4_01_4_ac515eec5c0647748bf8fa4ff553c706e}{Flat\+Tuple\+Base}} (T... t) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$size\+\_\+t... Idx, typename... T$>$\newline +struct testing\+::internal\+::\+Flat\+Tuple\+Base$<$ Flat\+Tuple$<$ T... $>$, Index\+Sequence$<$ Idx... $>$ $>$} + + + +Definition at line 7712 of file gtest.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structtesting_1_1internal_1_1_flat_tuple_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_index_sequence_3_01_idx_8_8_8_01_4_01_4_ada1941ebde1ec1c844b72970e0ccb304}\label{structtesting_1_1internal_1_1_flat_tuple_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_index_sequence_3_01_idx_8_8_8_01_4_01_4_ada1941ebde1ec1c844b72970e0ccb304}} +\index{testing\+::internal\+::\+Flat\+Tuple\+Base$<$ Flat\+Tuple$<$ T... $>$, Index\+Sequence$<$ Idx... $>$ $>$@{testing\+::internal\+::\+Flat\+Tuple\+Base$<$ Flat\+Tuple$<$ T... $>$, Index\+Sequence$<$ Idx... $>$ $>$}!Indices@{Indices}} +\index{Indices@{Indices}!testing\+::internal\+::\+Flat\+Tuple\+Base$<$ Flat\+Tuple$<$ T... $>$, Index\+Sequence$<$ Idx... $>$ $>$@{testing\+::internal\+::\+Flat\+Tuple\+Base$<$ Flat\+Tuple$<$ T... $>$, Index\+Sequence$<$ Idx... $>$ $>$}} +\subsubsection{\texorpdfstring{Indices}{Indices}} +{\footnotesize\ttfamily template$<$size\+\_\+t... Idx, typename... T$>$ \\ +using \mbox{\hyperlink{structtesting_1_1internal_1_1_flat_tuple_base}{testing\+::internal\+::\+Flat\+Tuple\+Base}}$<$ \mbox{\hyperlink{classtesting_1_1internal_1_1_flat_tuple}{Flat\+Tuple}}$<$ T... $>$, \mbox{\hyperlink{structtesting_1_1internal_1_1_index_sequence}{Index\+Sequence}}$<$ Idx... $>$ $>$\+::\mbox{\hyperlink{structtesting_1_1internal_1_1_flat_tuple_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_index_sequence_3_01_idx_8_8_8_01_4_01_4_ada1941ebde1ec1c844b72970e0ccb304}{Indices}} = \mbox{\hyperlink{structtesting_1_1internal_1_1_index_sequence}{Index\+Sequence}}$<$Idx...$>$} + + + +Definition at line 7714 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{structtesting_1_1internal_1_1_flat_tuple_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_index_sequence_3_01_idx_8_8_8_01_4_01_4_ae509b146e74176bceddc0d2f2d1cb0dc}\label{structtesting_1_1internal_1_1_flat_tuple_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_index_sequence_3_01_idx_8_8_8_01_4_01_4_ae509b146e74176bceddc0d2f2d1cb0dc}} +\index{testing\+::internal\+::\+Flat\+Tuple\+Base$<$ Flat\+Tuple$<$ T... $>$, Index\+Sequence$<$ Idx... $>$ $>$@{testing\+::internal\+::\+Flat\+Tuple\+Base$<$ Flat\+Tuple$<$ T... $>$, Index\+Sequence$<$ Idx... $>$ $>$}!Flat\+Tuple\+Base@{Flat\+Tuple\+Base}} +\index{Flat\+Tuple\+Base@{Flat\+Tuple\+Base}!testing\+::internal\+::\+Flat\+Tuple\+Base$<$ Flat\+Tuple$<$ T... $>$, Index\+Sequence$<$ Idx... $>$ $>$@{testing\+::internal\+::\+Flat\+Tuple\+Base$<$ Flat\+Tuple$<$ T... $>$, Index\+Sequence$<$ Idx... $>$ $>$}} +\subsubsection{\texorpdfstring{Flat\+Tuple\+Base()}{FlatTupleBase()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$size\+\_\+t... Idx, typename... T$>$ \\ +\mbox{\hyperlink{structtesting_1_1internal_1_1_flat_tuple_base}{testing\+::internal\+::\+Flat\+Tuple\+Base}}$<$ \mbox{\hyperlink{classtesting_1_1internal_1_1_flat_tuple}{Flat\+Tuple}}$<$ T... $>$, \mbox{\hyperlink{structtesting_1_1internal_1_1_index_sequence}{Index\+Sequence}}$<$ Idx... $>$ $>$\+::\mbox{\hyperlink{structtesting_1_1internal_1_1_flat_tuple_base}{Flat\+Tuple\+Base}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [default]}} + +\mbox{\Hypertarget{structtesting_1_1internal_1_1_flat_tuple_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_index_sequence_3_01_idx_8_8_8_01_4_01_4_ac515eec5c0647748bf8fa4ff553c706e}\label{structtesting_1_1internal_1_1_flat_tuple_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_index_sequence_3_01_idx_8_8_8_01_4_01_4_ac515eec5c0647748bf8fa4ff553c706e}} +\index{testing\+::internal\+::\+Flat\+Tuple\+Base$<$ Flat\+Tuple$<$ T... $>$, Index\+Sequence$<$ Idx... $>$ $>$@{testing\+::internal\+::\+Flat\+Tuple\+Base$<$ Flat\+Tuple$<$ T... $>$, Index\+Sequence$<$ Idx... $>$ $>$}!Flat\+Tuple\+Base@{Flat\+Tuple\+Base}} +\index{Flat\+Tuple\+Base@{Flat\+Tuple\+Base}!testing\+::internal\+::\+Flat\+Tuple\+Base$<$ Flat\+Tuple$<$ T... $>$, Index\+Sequence$<$ Idx... $>$ $>$@{testing\+::internal\+::\+Flat\+Tuple\+Base$<$ Flat\+Tuple$<$ T... $>$, Index\+Sequence$<$ Idx... $>$ $>$}} +\subsubsection{\texorpdfstring{Flat\+Tuple\+Base()}{FlatTupleBase()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$size\+\_\+t... Idx, typename... T$>$ \\ +\mbox{\hyperlink{structtesting_1_1internal_1_1_flat_tuple_base}{testing\+::internal\+::\+Flat\+Tuple\+Base}}$<$ \mbox{\hyperlink{classtesting_1_1internal_1_1_flat_tuple}{Flat\+Tuple}}$<$ T... $>$, \mbox{\hyperlink{structtesting_1_1internal_1_1_index_sequence}{Index\+Sequence}}$<$ Idx... $>$ $>$\+::\mbox{\hyperlink{structtesting_1_1internal_1_1_flat_tuple_base}{Flat\+Tuple\+Base}} (\begin{DoxyParamCaption}\item[{T...}]{t }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [explicit]}} + + + +Definition at line 7716 of file gtest.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtesting_1_1internal_1_1_flat_tuple_elem_base.tex b/doc/latex/structtesting_1_1internal_1_1_flat_tuple_elem_base.tex new file mode 100644 index 0000000..c3183df --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1_flat_tuple_elem_base.tex @@ -0,0 +1,21 @@ +\hypertarget{structtesting_1_1internal_1_1_flat_tuple_elem_base}{}\section{testing\+:\+:internal\+:\+:Flat\+Tuple\+Elem\+Base$<$ Derived, I $>$ Struct Template Reference} +\label{structtesting_1_1internal_1_1_flat_tuple_elem_base}\index{testing\+::internal\+::\+Flat\+Tuple\+Elem\+Base$<$ Derived, I $>$@{testing\+::internal\+::\+Flat\+Tuple\+Elem\+Base$<$ Derived, I $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename Derived, size\+\_\+t I$>$\newline +struct testing\+::internal\+::\+Flat\+Tuple\+Elem\+Base$<$ Derived, I $>$} + + + +Definition at line 7696 of file gtest.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtesting_1_1internal_1_1_flat_tuple_elem_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_i_01_4.tex b/doc/latex/structtesting_1_1internal_1_1_flat_tuple_elem_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_i_01_4.tex new file mode 100644 index 0000000..a5d3254 --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1_flat_tuple_elem_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_i_01_4.tex @@ -0,0 +1,87 @@ +\hypertarget{structtesting_1_1internal_1_1_flat_tuple_elem_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_i_01_4}{}\section{testing\+:\+:internal\+:\+:Flat\+Tuple\+Elem\+Base$<$ Flat\+Tuple$<$ T... $>$, I $>$ Struct Template Reference} +\label{structtesting_1_1internal_1_1_flat_tuple_elem_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_i_01_4}\index{testing\+::internal\+::\+Flat\+Tuple\+Elem\+Base$<$ Flat\+Tuple$<$ T... $>$, I $>$@{testing\+::internal\+::\+Flat\+Tuple\+Elem\+Base$<$ Flat\+Tuple$<$ T... $>$, I $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structtesting_1_1internal_1_1_flat_tuple_elem_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_i_01_4_a6b87a445f87724f9363b348e6c697766}{value\+\_\+type}} = typename \mbox{\hyperlink{structtesting_1_1internal_1_1_elem_from_list}{Elem\+From\+List}}$<$ I, typename \mbox{\hyperlink{structtesting_1_1internal_1_1_make_index_sequence}{Make\+Index\+Sequence}}$<$ sizeof...(T)$>$\+::type, T... $>$\+::type +\end{DoxyCompactItemize} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{structtesting_1_1internal_1_1_flat_tuple_elem_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_i_01_4_a7b460283c4ba5ad116a4305d05155546}{Flat\+Tuple\+Elem\+Base}} ()=default +\item +\mbox{\hyperlink{structtesting_1_1internal_1_1_flat_tuple_elem_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_i_01_4_a153da382b00977dfb5974f85dd31ea58}{Flat\+Tuple\+Elem\+Base}} (\mbox{\hyperlink{structtesting_1_1internal_1_1_flat_tuple_elem_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_i_01_4_a6b87a445f87724f9363b348e6c697766}{value\+\_\+type}} t) +\end{DoxyCompactItemize} +\subsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{structtesting_1_1internal_1_1_flat_tuple_elem_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_i_01_4_a6b87a445f87724f9363b348e6c697766}{value\+\_\+type}} \mbox{\hyperlink{structtesting_1_1internal_1_1_flat_tuple_elem_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_i_01_4_ac175518e7807c0b49c0ba8c1c78269ec}{value}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename... T, size\+\_\+t I$>$\newline +struct testing\+::internal\+::\+Flat\+Tuple\+Elem\+Base$<$ Flat\+Tuple$<$ T... $>$, I $>$} + + + +Definition at line 7699 of file gtest.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structtesting_1_1internal_1_1_flat_tuple_elem_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_i_01_4_a6b87a445f87724f9363b348e6c697766}\label{structtesting_1_1internal_1_1_flat_tuple_elem_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_i_01_4_a6b87a445f87724f9363b348e6c697766}} +\index{testing\+::internal\+::\+Flat\+Tuple\+Elem\+Base$<$ Flat\+Tuple$<$ T... $>$, I $>$@{testing\+::internal\+::\+Flat\+Tuple\+Elem\+Base$<$ Flat\+Tuple$<$ T... $>$, I $>$}!value\+\_\+type@{value\+\_\+type}} +\index{value\+\_\+type@{value\+\_\+type}!testing\+::internal\+::\+Flat\+Tuple\+Elem\+Base$<$ Flat\+Tuple$<$ T... $>$, I $>$@{testing\+::internal\+::\+Flat\+Tuple\+Elem\+Base$<$ Flat\+Tuple$<$ T... $>$, I $>$}} +\subsubsection{\texorpdfstring{value\+\_\+type}{value\_type}} +{\footnotesize\ttfamily template$<$typename... T, size\+\_\+t I$>$ \\ +using \mbox{\hyperlink{structtesting_1_1internal_1_1_flat_tuple_elem_base}{testing\+::internal\+::\+Flat\+Tuple\+Elem\+Base}}$<$ \mbox{\hyperlink{classtesting_1_1internal_1_1_flat_tuple}{Flat\+Tuple}}$<$ T... $>$, I $>$\+::\mbox{\hyperlink{structtesting_1_1internal_1_1_flat_tuple_elem_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_i_01_4_a6b87a445f87724f9363b348e6c697766}{value\+\_\+type}} = typename \mbox{\hyperlink{structtesting_1_1internal_1_1_elem_from_list}{Elem\+From\+List}}$<$I, typename \mbox{\hyperlink{structtesting_1_1internal_1_1_make_index_sequence}{Make\+Index\+Sequence}}$<$sizeof...(T)$>$\+::type, T...$>$\+::type} + + + +Definition at line 7702 of file gtest.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{structtesting_1_1internal_1_1_flat_tuple_elem_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_i_01_4_a7b460283c4ba5ad116a4305d05155546}\label{structtesting_1_1internal_1_1_flat_tuple_elem_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_i_01_4_a7b460283c4ba5ad116a4305d05155546}} +\index{testing\+::internal\+::\+Flat\+Tuple\+Elem\+Base$<$ Flat\+Tuple$<$ T... $>$, I $>$@{testing\+::internal\+::\+Flat\+Tuple\+Elem\+Base$<$ Flat\+Tuple$<$ T... $>$, I $>$}!Flat\+Tuple\+Elem\+Base@{Flat\+Tuple\+Elem\+Base}} +\index{Flat\+Tuple\+Elem\+Base@{Flat\+Tuple\+Elem\+Base}!testing\+::internal\+::\+Flat\+Tuple\+Elem\+Base$<$ Flat\+Tuple$<$ T... $>$, I $>$@{testing\+::internal\+::\+Flat\+Tuple\+Elem\+Base$<$ Flat\+Tuple$<$ T... $>$, I $>$}} +\subsubsection{\texorpdfstring{Flat\+Tuple\+Elem\+Base()}{FlatTupleElemBase()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename... T, size\+\_\+t I$>$ \\ +\mbox{\hyperlink{structtesting_1_1internal_1_1_flat_tuple_elem_base}{testing\+::internal\+::\+Flat\+Tuple\+Elem\+Base}}$<$ \mbox{\hyperlink{classtesting_1_1internal_1_1_flat_tuple}{Flat\+Tuple}}$<$ T... $>$, I $>$\+::\mbox{\hyperlink{structtesting_1_1internal_1_1_flat_tuple_elem_base}{Flat\+Tuple\+Elem\+Base}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [default]}} + +\mbox{\Hypertarget{structtesting_1_1internal_1_1_flat_tuple_elem_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_i_01_4_a153da382b00977dfb5974f85dd31ea58}\label{structtesting_1_1internal_1_1_flat_tuple_elem_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_i_01_4_a153da382b00977dfb5974f85dd31ea58}} +\index{testing\+::internal\+::\+Flat\+Tuple\+Elem\+Base$<$ Flat\+Tuple$<$ T... $>$, I $>$@{testing\+::internal\+::\+Flat\+Tuple\+Elem\+Base$<$ Flat\+Tuple$<$ T... $>$, I $>$}!Flat\+Tuple\+Elem\+Base@{Flat\+Tuple\+Elem\+Base}} +\index{Flat\+Tuple\+Elem\+Base@{Flat\+Tuple\+Elem\+Base}!testing\+::internal\+::\+Flat\+Tuple\+Elem\+Base$<$ Flat\+Tuple$<$ T... $>$, I $>$@{testing\+::internal\+::\+Flat\+Tuple\+Elem\+Base$<$ Flat\+Tuple$<$ T... $>$, I $>$}} +\subsubsection{\texorpdfstring{Flat\+Tuple\+Elem\+Base()}{FlatTupleElemBase()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename... T, size\+\_\+t I$>$ \\ +\mbox{\hyperlink{structtesting_1_1internal_1_1_flat_tuple_elem_base}{testing\+::internal\+::\+Flat\+Tuple\+Elem\+Base}}$<$ \mbox{\hyperlink{classtesting_1_1internal_1_1_flat_tuple}{Flat\+Tuple}}$<$ T... $>$, I $>$\+::\mbox{\hyperlink{structtesting_1_1internal_1_1_flat_tuple_elem_base}{Flat\+Tuple\+Elem\+Base}} (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{structtesting_1_1internal_1_1_flat_tuple_elem_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_i_01_4_a6b87a445f87724f9363b348e6c697766}{value\+\_\+type}}}]{t }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [explicit]}} + + + +Definition at line 7704 of file gtest.\+h. + + + +\subsection{Member Data Documentation} +\mbox{\Hypertarget{structtesting_1_1internal_1_1_flat_tuple_elem_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_i_01_4_ac175518e7807c0b49c0ba8c1c78269ec}\label{structtesting_1_1internal_1_1_flat_tuple_elem_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_i_01_4_ac175518e7807c0b49c0ba8c1c78269ec}} +\index{testing\+::internal\+::\+Flat\+Tuple\+Elem\+Base$<$ Flat\+Tuple$<$ T... $>$, I $>$@{testing\+::internal\+::\+Flat\+Tuple\+Elem\+Base$<$ Flat\+Tuple$<$ T... $>$, I $>$}!value@{value}} +\index{value@{value}!testing\+::internal\+::\+Flat\+Tuple\+Elem\+Base$<$ Flat\+Tuple$<$ T... $>$, I $>$@{testing\+::internal\+::\+Flat\+Tuple\+Elem\+Base$<$ Flat\+Tuple$<$ T... $>$, I $>$}} +\subsubsection{\texorpdfstring{value}{value}} +{\footnotesize\ttfamily template$<$typename... T, size\+\_\+t I$>$ \\ +\mbox{\hyperlink{structtesting_1_1internal_1_1_flat_tuple_elem_base_3_01_flat_tuple_3_01_t_8_8_8_01_4_00_01_i_01_4_a6b87a445f87724f9363b348e6c697766}{value\+\_\+type}} \mbox{\hyperlink{structtesting_1_1internal_1_1_flat_tuple_elem_base}{testing\+::internal\+::\+Flat\+Tuple\+Elem\+Base}}$<$ \mbox{\hyperlink{classtesting_1_1internal_1_1_flat_tuple}{Flat\+Tuple}}$<$ T... $>$, I $>$\+::value} + + + +Definition at line 7705 of file gtest.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtesting_1_1internal_1_1_index_sequence.tex b/doc/latex/structtesting_1_1internal_1_1_index_sequence.tex new file mode 100644 index 0000000..512baad --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1_index_sequence.tex @@ -0,0 +1,40 @@ +\hypertarget{structtesting_1_1internal_1_1_index_sequence}{}\section{testing\+:\+:internal\+:\+:Index\+Sequence$<$ Is $>$ Struct Template Reference} +\label{structtesting_1_1internal_1_1_index_sequence}\index{testing\+::internal\+::\+Index\+Sequence$<$ Is $>$@{testing\+::internal\+::\+Index\+Sequence$<$ Is $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structtesting_1_1internal_1_1_index_sequence_a89bb13a7b5d169b69659f395dcec2b2d}{type}} = \mbox{\hyperlink{structtesting_1_1internal_1_1_index_sequence}{Index\+Sequence}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$size\+\_\+t... Is$>$\newline +struct testing\+::internal\+::\+Index\+Sequence$<$ Is $>$} + + + +Definition at line 7646 of file gtest.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structtesting_1_1internal_1_1_index_sequence_a89bb13a7b5d169b69659f395dcec2b2d}\label{structtesting_1_1internal_1_1_index_sequence_a89bb13a7b5d169b69659f395dcec2b2d}} +\index{testing\+::internal\+::\+Index\+Sequence@{testing\+::internal\+::\+Index\+Sequence}!type@{type}} +\index{type@{type}!testing\+::internal\+::\+Index\+Sequence@{testing\+::internal\+::\+Index\+Sequence}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$size\+\_\+t... Is$>$ \\ +using \mbox{\hyperlink{structtesting_1_1internal_1_1_index_sequence}{testing\+::internal\+::\+Index\+Sequence}}$<$ Is $>$\+::\mbox{\hyperlink{structtesting_1_1internal_1_1_index_sequence_a89bb13a7b5d169b69659f395dcec2b2d}{type}} = \mbox{\hyperlink{structtesting_1_1internal_1_1_index_sequence}{Index\+Sequence}}} + + + +Definition at line 7647 of file gtest.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtesting_1_1internal_1_1_is_a_protocol_message.eps b/doc/latex/structtesting_1_1internal_1_1_is_a_protocol_message.eps new file mode 100644 index 0000000..73063c2 --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1_is_a_protocol_message.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 40.858018 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 12.237500 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(testing::internal::IsAProtocolMessage< T >) cw +(testing::internal::bool_constant< ImplicitlyConvertible< const T *, const ::ProtocolMessage *>::value||ImplicitlyConvertible< const T *, const ::proto2::Message *>::value >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (testing::internal::IsAProtocolMessage< T >) 0.000000 0.000000 box + (testing::internal::bool_constant< ImplicitlyConvertible< const T *, const ::ProtocolMessage *>::value||ImplicitlyConvertible< const T *, const ::proto2::Message *>::value >) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/structtesting_1_1internal_1_1_is_a_protocol_message.tex b/doc/latex/structtesting_1_1internal_1_1_is_a_protocol_message.tex new file mode 100644 index 0000000..be89622 --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1_is_a_protocol_message.tex @@ -0,0 +1,28 @@ +\hypertarget{structtesting_1_1internal_1_1_is_a_protocol_message}{}\section{testing\+:\+:internal\+:\+:Is\+A\+Protocol\+Message$<$ T $>$ Struct Template Reference} +\label{structtesting_1_1internal_1_1_is_a_protocol_message}\index{testing\+::internal\+::\+Is\+A\+Protocol\+Message$<$ T $>$@{testing\+::internal\+::\+Is\+A\+Protocol\+Message$<$ T $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +Inheritance diagram for testing\+:\+:internal\+:\+:Is\+A\+Protocol\+Message$<$ T $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=1.144024cm]{structtesting_1_1internal_1_1_is_a_protocol_message} +\end{center} +\end{figure} +\subsection*{Additional Inherited Members} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T$>$\newline +struct testing\+::internal\+::\+Is\+A\+Protocol\+Message$<$ T $>$} + + + +Definition at line 7392 of file gtest.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtesting_1_1internal_1_1_is_hash_table.tex b/doc/latex/structtesting_1_1internal_1_1_is_hash_table.tex new file mode 100644 index 0000000..3eb258c --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1_is_hash_table.tex @@ -0,0 +1,40 @@ +\hypertarget{structtesting_1_1internal_1_1_is_hash_table}{}\section{testing\+:\+:internal\+:\+:Is\+Hash\+Table$<$ T $>$ Struct Template Reference} +\label{structtesting_1_1internal_1_1_is_hash_table}\index{testing\+::internal\+::\+Is\+Hash\+Table$<$ T $>$@{testing\+::internal\+::\+Is\+Hash\+Table$<$ T $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Static Public Attributes} +\begin{DoxyCompactItemize} +\item +static const bool \mbox{\hyperlink{structtesting_1_1internal_1_1_is_hash_table_a165e0a3eddfa5fadf9b950be6432d848}{value}} = sizeof(test$<$T$>$(nullptr, nullptr)) == sizeof(int) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T$>$\newline +struct testing\+::internal\+::\+Is\+Hash\+Table$<$ T $>$} + + + +Definition at line 7442 of file gtest.\+h. + + + +\subsection{Member Data Documentation} +\mbox{\Hypertarget{structtesting_1_1internal_1_1_is_hash_table_a165e0a3eddfa5fadf9b950be6432d848}\label{structtesting_1_1internal_1_1_is_hash_table_a165e0a3eddfa5fadf9b950be6432d848}} +\index{testing\+::internal\+::\+Is\+Hash\+Table@{testing\+::internal\+::\+Is\+Hash\+Table}!value@{value}} +\index{value@{value}!testing\+::internal\+::\+Is\+Hash\+Table@{testing\+::internal\+::\+Is\+Hash\+Table}} +\subsubsection{\texorpdfstring{value}{value}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +const bool \mbox{\hyperlink{structtesting_1_1internal_1_1_is_hash_table}{testing\+::internal\+::\+Is\+Hash\+Table}}$<$ T $>$\+::value = sizeof(test$<$T$>$(nullptr, nullptr)) == sizeof(int)\hspace{0.3cm}{\ttfamily [static]}} + + + +Definition at line 7452 of file gtest.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtesting_1_1internal_1_1_is_recursive_container.eps b/doc/latex/structtesting_1_1internal_1_1_is_recursive_container.eps new file mode 100644 index 0000000..1391935 --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1_is_recursive_container.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 151.515152 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 3.300000 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(testing::internal::IsRecursiveContainer< C >) cw +(IsRecursiveContainerImpl::type< C >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (testing::internal::IsRecursiveContainer< C >) 0.000000 0.000000 box + (IsRecursiveContainerImpl::type< C >) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/structtesting_1_1internal_1_1_is_recursive_container.tex b/doc/latex/structtesting_1_1internal_1_1_is_recursive_container.tex new file mode 100644 index 0000000..898c769 --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1_is_recursive_container.tex @@ -0,0 +1,27 @@ +\hypertarget{structtesting_1_1internal_1_1_is_recursive_container}{}\section{testing\+:\+:internal\+:\+:Is\+Recursive\+Container$<$ C $>$ Struct Template Reference} +\label{structtesting_1_1internal_1_1_is_recursive_container}\index{testing\+::internal\+::\+Is\+Recursive\+Container$<$ C $>$@{testing\+::internal\+::\+Is\+Recursive\+Container$<$ C $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +Inheritance diagram for testing\+:\+:internal\+:\+:Is\+Recursive\+Container$<$ C $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{structtesting_1_1internal_1_1_is_recursive_container} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename C$>$\newline +struct testing\+::internal\+::\+Is\+Recursive\+Container$<$ C $>$} + + + +Definition at line 7485 of file gtest.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtesting_1_1internal_1_1_is_recursive_container_impl.tex b/doc/latex/structtesting_1_1internal_1_1_is_recursive_container_impl.tex new file mode 100644 index 0000000..fd87229 --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1_is_recursive_container_impl.tex @@ -0,0 +1,21 @@ +\hypertarget{structtesting_1_1internal_1_1_is_recursive_container_impl}{}\section{testing\+:\+:internal\+:\+:Is\+Recursive\+Container\+Impl$<$ C, bool $>$ Struct Template Reference} +\label{structtesting_1_1internal_1_1_is_recursive_container_impl}\index{testing\+::internal\+::\+Is\+Recursive\+Container\+Impl$<$ C, bool $>$@{testing\+::internal\+::\+Is\+Recursive\+Container\+Impl$<$ C, bool $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename C, bool = sizeof(\+Is\+Container\+Test$<$\+C$>$(0)) == sizeof(\+Is\+Container)$>$\newline +struct testing\+::internal\+::\+Is\+Recursive\+Container\+Impl$<$ C, bool $>$} + + + +Definition at line 7460 of file gtest.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01false_01_4.eps b/doc/latex/structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01false_01_4.eps new file mode 100644 index 0000000..80d6de1 --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01false_01_4.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 124.223602 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 4.025000 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(testing::internal::IsRecursiveContainerImpl< C, false >) cw +(testing::internal::bool_constant< false >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (testing::internal::IsRecursiveContainerImpl< C, false >) 0.000000 0.000000 box + (testing::internal::bool_constant< false >) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01false_01_4.tex b/doc/latex/structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01false_01_4.tex new file mode 100644 index 0000000..cb6c753 --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01false_01_4.tex @@ -0,0 +1,28 @@ +\hypertarget{structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01false_01_4}{}\section{testing\+:\+:internal\+:\+:Is\+Recursive\+Container\+Impl$<$ C, false $>$ Struct Template Reference} +\label{structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01false_01_4}\index{testing\+::internal\+::\+Is\+Recursive\+Container\+Impl$<$ C, false $>$@{testing\+::internal\+::\+Is\+Recursive\+Container\+Impl$<$ C, false $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +Inheritance diagram for testing\+:\+:internal\+:\+:Is\+Recursive\+Container\+Impl$<$ C, false $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01false_01_4} +\end{center} +\end{figure} +\subsection*{Additional Inherited Members} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename C$>$\newline +struct testing\+::internal\+::\+Is\+Recursive\+Container\+Impl$<$ C, false $>$} + + + +Definition at line 7463 of file gtest.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01true_01_4.tex b/doc/latex/structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01true_01_4.tex new file mode 100644 index 0000000..90358a4 --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01true_01_4.tex @@ -0,0 +1,53 @@ +\hypertarget{structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01true_01_4}{}\section{testing\+:\+:internal\+:\+:Is\+Recursive\+Container\+Impl$<$ C, true $>$ Struct Template Reference} +\label{structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01true_01_4}\index{testing\+::internal\+::\+Is\+Recursive\+Container\+Impl$<$ C, true $>$@{testing\+::internal\+::\+Is\+Recursive\+Container\+Impl$<$ C, true $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01true_01_4_a5e8e2cf58f0d2581e9e3ab5f5630cd61}{value\+\_\+type}} = decltype($\ast$std\+::declval$<$ typename C\+::const\+\_\+iterator $>$()) +\item +using \mbox{\hyperlink{structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01true_01_4_a24b611fbe1b9a7c524ee54ae01324388}{type}} = \mbox{\hyperlink{structtesting_1_1internal_1_1is__same}{is\+\_\+same}}$<$ typename std\+::remove\+\_\+const$<$ typename std\+::remove\+\_\+reference$<$ \mbox{\hyperlink{structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01true_01_4_a5e8e2cf58f0d2581e9e3ab5f5630cd61}{value\+\_\+type}} $>$\+::\mbox{\hyperlink{structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01true_01_4_a24b611fbe1b9a7c524ee54ae01324388}{type}} $>$\+::\mbox{\hyperlink{structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01true_01_4_a24b611fbe1b9a7c524ee54ae01324388}{type}}, C $>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename C$>$\newline +struct testing\+::internal\+::\+Is\+Recursive\+Container\+Impl$<$ C, true $>$} + + + +Definition at line 7470 of file gtest.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01true_01_4_a24b611fbe1b9a7c524ee54ae01324388}\label{structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01true_01_4_a24b611fbe1b9a7c524ee54ae01324388}} +\index{testing\+::internal\+::\+Is\+Recursive\+Container\+Impl$<$ C, true $>$@{testing\+::internal\+::\+Is\+Recursive\+Container\+Impl$<$ C, true $>$}!type@{type}} +\index{type@{type}!testing\+::internal\+::\+Is\+Recursive\+Container\+Impl$<$ C, true $>$@{testing\+::internal\+::\+Is\+Recursive\+Container\+Impl$<$ C, true $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename C $>$ \\ +using \mbox{\hyperlink{structtesting_1_1internal_1_1_is_recursive_container_impl}{testing\+::internal\+::\+Is\+Recursive\+Container\+Impl}}$<$ C, true $>$\+::\mbox{\hyperlink{structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01true_01_4_a24b611fbe1b9a7c524ee54ae01324388}{type}} = \mbox{\hyperlink{structtesting_1_1internal_1_1is__same}{is\+\_\+same}}$<$typename std\+::remove\+\_\+const$<$ typename std\+::remove\+\_\+reference$<$\mbox{\hyperlink{structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01true_01_4_a5e8e2cf58f0d2581e9e3ab5f5630cd61}{value\+\_\+type}}$>$\+::\mbox{\hyperlink{structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01true_01_4_a24b611fbe1b9a7c524ee54ae01324388}{type}}$>$\+::\mbox{\hyperlink{structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01true_01_4_a24b611fbe1b9a7c524ee54ae01324388}{type}}, C$>$} + + + +Definition at line 7475 of file gtest.\+h. + +\mbox{\Hypertarget{structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01true_01_4_a5e8e2cf58f0d2581e9e3ab5f5630cd61}\label{structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01true_01_4_a5e8e2cf58f0d2581e9e3ab5f5630cd61}} +\index{testing\+::internal\+::\+Is\+Recursive\+Container\+Impl$<$ C, true $>$@{testing\+::internal\+::\+Is\+Recursive\+Container\+Impl$<$ C, true $>$}!value\+\_\+type@{value\+\_\+type}} +\index{value\+\_\+type@{value\+\_\+type}!testing\+::internal\+::\+Is\+Recursive\+Container\+Impl$<$ C, true $>$@{testing\+::internal\+::\+Is\+Recursive\+Container\+Impl$<$ C, true $>$}} +\subsubsection{\texorpdfstring{value\+\_\+type}{value\_type}} +{\footnotesize\ttfamily template$<$typename C $>$ \\ +using \mbox{\hyperlink{structtesting_1_1internal_1_1_is_recursive_container_impl}{testing\+::internal\+::\+Is\+Recursive\+Container\+Impl}}$<$ C, true $>$\+::\mbox{\hyperlink{structtesting_1_1internal_1_1_is_recursive_container_impl_3_01_c_00_01true_01_4_a5e8e2cf58f0d2581e9e3ab5f5630cd61}{value\+\_\+type}} = decltype($\ast$std\+::declval$<$typename C\+::const\+\_\+iterator$>$())} + + + +Definition at line 7471 of file gtest.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtesting_1_1internal_1_1_is_same.tex b/doc/latex/structtesting_1_1internal_1_1_is_same.tex new file mode 100644 index 0000000..54095b0 --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1_is_same.tex @@ -0,0 +1,45 @@ +\hypertarget{structtesting_1_1internal_1_1_is_same}{}\section{testing\+:\+:internal\+:\+:Is\+Same$<$ T, U $>$ Struct Template Reference} +\label{structtesting_1_1internal_1_1_is_same}\index{testing\+::internal\+::\+Is\+Same$<$ T, U $>$@{testing\+::internal\+::\+Is\+Same$<$ T, U $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +enum \{ \mbox{\hyperlink{structtesting_1_1internal_1_1_is_same_a4dfd313ccff08905c7c36f990ab52e1ca58968a8c680eff4326a25fab55aa0a5e}{value}} = false + \} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T, typename U$>$\newline +struct testing\+::internal\+::\+Is\+Same$<$ T, U $>$} + + + +Definition at line 1101 of file gtest.\+h. + + + +\subsection{Member Enumeration Documentation} +\mbox{\Hypertarget{structtesting_1_1internal_1_1_is_same_a4dfd313ccff08905c7c36f990ab52e1c}\label{structtesting_1_1internal_1_1_is_same_a4dfd313ccff08905c7c36f990ab52e1c}} +\subsubsection{\texorpdfstring{anonymous enum}{anonymous enum}} +{\footnotesize\ttfamily template$<$typename T , typename U $>$ \\ +anonymous enum} + +\begin{DoxyEnumFields}{Enumerator} +\raisebox{\heightof{T}}[0pt][0pt]{\index{value@{value}!testing\+::internal\+::\+Is\+Same@{testing\+::internal\+::\+Is\+Same}}\index{testing\+::internal\+::\+Is\+Same@{testing\+::internal\+::\+Is\+Same}!value@{value}}}\mbox{\Hypertarget{structtesting_1_1internal_1_1_is_same_a4dfd313ccff08905c7c36f990ab52e1ca58968a8c680eff4326a25fab55aa0a5e}\label{structtesting_1_1internal_1_1_is_same_a4dfd313ccff08905c7c36f990ab52e1ca58968a8c680eff4326a25fab55aa0a5e}} +value&\\ +\hline + +\end{DoxyEnumFields} + + +Definition at line 1102 of file gtest.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtesting_1_1internal_1_1_is_same_3_01_t_00_01_t_01_4.tex b/doc/latex/structtesting_1_1internal_1_1_is_same_3_01_t_00_01_t_01_4.tex new file mode 100644 index 0000000..6820e21 --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1_is_same_3_01_t_00_01_t_01_4.tex @@ -0,0 +1,45 @@ +\hypertarget{structtesting_1_1internal_1_1_is_same_3_01_t_00_01_t_01_4}{}\section{testing\+:\+:internal\+:\+:Is\+Same$<$ T, T $>$ Struct Template Reference} +\label{structtesting_1_1internal_1_1_is_same_3_01_t_00_01_t_01_4}\index{testing\+::internal\+::\+Is\+Same$<$ T, T $>$@{testing\+::internal\+::\+Is\+Same$<$ T, T $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +enum \{ \mbox{\hyperlink{structtesting_1_1internal_1_1_is_same_3_01_t_00_01_t_01_4_a87b00ed787e27293dafab4afac29184ba0bb1c61b491e4e13216a3f9e9cd24c69}{value}} = true + \} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T$>$\newline +struct testing\+::internal\+::\+Is\+Same$<$ T, T $>$} + + + +Definition at line 1105 of file gtest.\+h. + + + +\subsection{Member Enumeration Documentation} +\mbox{\Hypertarget{structtesting_1_1internal_1_1_is_same_3_01_t_00_01_t_01_4_a87b00ed787e27293dafab4afac29184b}\label{structtesting_1_1internal_1_1_is_same_3_01_t_00_01_t_01_4_a87b00ed787e27293dafab4afac29184b}} +\subsubsection{\texorpdfstring{anonymous enum}{anonymous enum}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +anonymous enum} + +\begin{DoxyEnumFields}{Enumerator} +\raisebox{\heightof{T}}[0pt][0pt]{\index{value@{value}!testing\+::internal\+::\+Is\+Same$<$ T, T $>$@{testing\+::internal\+::\+Is\+Same$<$ T, T $>$}}\index{testing\+::internal\+::\+Is\+Same$<$ T, T $>$@{testing\+::internal\+::\+Is\+Same$<$ T, T $>$}!value@{value}}}\mbox{\Hypertarget{structtesting_1_1internal_1_1_is_same_3_01_t_00_01_t_01_4_a87b00ed787e27293dafab4afac29184ba0bb1c61b491e4e13216a3f9e9cd24c69}\label{structtesting_1_1internal_1_1_is_same_3_01_t_00_01_t_01_4_a87b00ed787e27293dafab4afac29184ba0bb1c61b491e4e13216a3f9e9cd24c69}} +value&\\ +\hline + +\end{DoxyEnumFields} + + +Definition at line 1106 of file gtest.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtesting_1_1internal_1_1_iterator_traits.tex b/doc/latex/structtesting_1_1internal_1_1_iterator_traits.tex new file mode 100644 index 0000000..66ed8f4 --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1_iterator_traits.tex @@ -0,0 +1,40 @@ +\hypertarget{structtesting_1_1internal_1_1_iterator_traits}{}\section{testing\+:\+:internal\+:\+:Iterator\+Traits$<$ Iterator $>$ Struct Template Reference} +\label{structtesting_1_1internal_1_1_iterator_traits}\index{testing\+::internal\+::\+Iterator\+Traits$<$ Iterator $>$@{testing\+::internal\+::\+Iterator\+Traits$<$ Iterator $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +typedef Iterator\+::value\+\_\+type \mbox{\hyperlink{structtesting_1_1internal_1_1_iterator_traits_a29de4320a9c53ce438d3561b94e515bb}{value\+\_\+type}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename Iterator$>$\newline +struct testing\+::internal\+::\+Iterator\+Traits$<$ Iterator $>$} + + + +Definition at line 2200 of file gtest.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structtesting_1_1internal_1_1_iterator_traits_a29de4320a9c53ce438d3561b94e515bb}\label{structtesting_1_1internal_1_1_iterator_traits_a29de4320a9c53ce438d3561b94e515bb}} +\index{testing\+::internal\+::\+Iterator\+Traits@{testing\+::internal\+::\+Iterator\+Traits}!value\+\_\+type@{value\+\_\+type}} +\index{value\+\_\+type@{value\+\_\+type}!testing\+::internal\+::\+Iterator\+Traits@{testing\+::internal\+::\+Iterator\+Traits}} +\subsubsection{\texorpdfstring{value\+\_\+type}{value\_type}} +{\footnotesize\ttfamily template$<$typename Iterator $>$ \\ +typedef Iterator\+::value\+\_\+type \mbox{\hyperlink{structtesting_1_1internal_1_1_iterator_traits}{testing\+::internal\+::\+Iterator\+Traits}}$<$ Iterator $>$\+::\mbox{\hyperlink{structtesting_1_1internal_1_1_iterator_traits_a29de4320a9c53ce438d3561b94e515bb}{value\+\_\+type}}} + + + +Definition at line 2201 of file gtest.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtesting_1_1internal_1_1_iterator_traits_3_01_t_01_5_01_4.tex b/doc/latex/structtesting_1_1internal_1_1_iterator_traits_3_01_t_01_5_01_4.tex new file mode 100644 index 0000000..4d2bd79 --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1_iterator_traits_3_01_t_01_5_01_4.tex @@ -0,0 +1,40 @@ +\hypertarget{structtesting_1_1internal_1_1_iterator_traits_3_01_t_01_5_01_4}{}\section{testing\+:\+:internal\+:\+:Iterator\+Traits$<$ T $\ast$ $>$ Struct Template Reference} +\label{structtesting_1_1internal_1_1_iterator_traits_3_01_t_01_5_01_4}\index{testing\+::internal\+::\+Iterator\+Traits$<$ T $\ast$ $>$@{testing\+::internal\+::\+Iterator\+Traits$<$ T $\ast$ $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +typedef T \mbox{\hyperlink{structtesting_1_1internal_1_1_iterator_traits_3_01_t_01_5_01_4_a7e46869ed36cc5aea898e243d270a8be}{value\+\_\+type}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T$>$\newline +struct testing\+::internal\+::\+Iterator\+Traits$<$ T $\ast$ $>$} + + + +Definition at line 2206 of file gtest.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structtesting_1_1internal_1_1_iterator_traits_3_01_t_01_5_01_4_a7e46869ed36cc5aea898e243d270a8be}\label{structtesting_1_1internal_1_1_iterator_traits_3_01_t_01_5_01_4_a7e46869ed36cc5aea898e243d270a8be}} +\index{testing\+::internal\+::\+Iterator\+Traits$<$ T $\ast$ $>$@{testing\+::internal\+::\+Iterator\+Traits$<$ T $\ast$ $>$}!value\+\_\+type@{value\+\_\+type}} +\index{value\+\_\+type@{value\+\_\+type}!testing\+::internal\+::\+Iterator\+Traits$<$ T $\ast$ $>$@{testing\+::internal\+::\+Iterator\+Traits$<$ T $\ast$ $>$}} +\subsubsection{\texorpdfstring{value\+\_\+type}{value\_type}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +typedef T \mbox{\hyperlink{structtesting_1_1internal_1_1_iterator_traits}{testing\+::internal\+::\+Iterator\+Traits}}$<$ T $\ast$ $>$\+::\mbox{\hyperlink{structtesting_1_1internal_1_1_iterator_traits_3_01_t_01_5_01_4_a7e46869ed36cc5aea898e243d270a8be}{value\+\_\+type}}} + + + +Definition at line 2207 of file gtest.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtesting_1_1internal_1_1_iterator_traits_3_01const_01_t_01_5_01_4.tex b/doc/latex/structtesting_1_1internal_1_1_iterator_traits_3_01const_01_t_01_5_01_4.tex new file mode 100644 index 0000000..14adfb1 --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1_iterator_traits_3_01const_01_t_01_5_01_4.tex @@ -0,0 +1,40 @@ +\hypertarget{structtesting_1_1internal_1_1_iterator_traits_3_01const_01_t_01_5_01_4}{}\section{testing\+:\+:internal\+:\+:Iterator\+Traits$<$ const T $\ast$ $>$ Struct Template Reference} +\label{structtesting_1_1internal_1_1_iterator_traits_3_01const_01_t_01_5_01_4}\index{testing\+::internal\+::\+Iterator\+Traits$<$ const T $\ast$ $>$@{testing\+::internal\+::\+Iterator\+Traits$<$ const T $\ast$ $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +typedef T \mbox{\hyperlink{structtesting_1_1internal_1_1_iterator_traits_3_01const_01_t_01_5_01_4_ae7c8867223e106f374b56a7dc4a85547}{value\+\_\+type}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T$>$\newline +struct testing\+::internal\+::\+Iterator\+Traits$<$ const T $\ast$ $>$} + + + +Definition at line 2211 of file gtest.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structtesting_1_1internal_1_1_iterator_traits_3_01const_01_t_01_5_01_4_ae7c8867223e106f374b56a7dc4a85547}\label{structtesting_1_1internal_1_1_iterator_traits_3_01const_01_t_01_5_01_4_ae7c8867223e106f374b56a7dc4a85547}} +\index{testing\+::internal\+::\+Iterator\+Traits$<$ const T $\ast$ $>$@{testing\+::internal\+::\+Iterator\+Traits$<$ const T $\ast$ $>$}!value\+\_\+type@{value\+\_\+type}} +\index{value\+\_\+type@{value\+\_\+type}!testing\+::internal\+::\+Iterator\+Traits$<$ const T $\ast$ $>$@{testing\+::internal\+::\+Iterator\+Traits$<$ const T $\ast$ $>$}} +\subsubsection{\texorpdfstring{value\+\_\+type}{value\_type}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +typedef T \mbox{\hyperlink{structtesting_1_1internal_1_1_iterator_traits}{testing\+::internal\+::\+Iterator\+Traits}}$<$ const T $\ast$ $>$\+::\mbox{\hyperlink{structtesting_1_1internal_1_1_iterator_traits_3_01const_01_t_01_5_01_4_ae7c8867223e106f374b56a7dc4a85547}{value\+\_\+type}}} + + + +Definition at line 2212 of file gtest.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtesting_1_1internal_1_1_make_index_sequence.eps b/doc/latex/structtesting_1_1internal_1_1_make_index_sequence.eps new file mode 100644 index 0000000..32de3f1 --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1_make_index_sequence.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 87.527352 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 5.712500 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(testing::internal::MakeIndexSequence< N >) cw +(DoubleSequence::type< N % 2==1, MakeIndexSequence< N/2 >::type, N/2 >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (testing::internal::MakeIndexSequence< N >) 0.000000 0.000000 box + (DoubleSequence::type< N % 2==1, MakeIndexSequence< N/2 >::type, N/2 >) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/structtesting_1_1internal_1_1_make_index_sequence.tex b/doc/latex/structtesting_1_1internal_1_1_make_index_sequence.tex new file mode 100644 index 0000000..f902122 --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1_make_index_sequence.tex @@ -0,0 +1,27 @@ +\hypertarget{structtesting_1_1internal_1_1_make_index_sequence}{}\section{testing\+:\+:internal\+:\+:Make\+Index\+Sequence$<$ N $>$ Struct Template Reference} +\label{structtesting_1_1internal_1_1_make_index_sequence}\index{testing\+::internal\+::\+Make\+Index\+Sequence$<$ N $>$@{testing\+::internal\+::\+Make\+Index\+Sequence$<$ N $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +Inheritance diagram for testing\+:\+:internal\+:\+:Make\+Index\+Sequence$<$ N $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{structtesting_1_1internal_1_1_make_index_sequence} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$size\+\_\+t N$>$\newline +struct testing\+::internal\+::\+Make\+Index\+Sequence$<$ N $>$} + + + +Definition at line 7665 of file gtest.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtesting_1_1internal_1_1_make_index_sequence_3_010_01_4.eps b/doc/latex/structtesting_1_1internal_1_1_make_index_sequence_3_010_01_4.eps new file mode 100644 index 0000000..3e71da5 --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1_make_index_sequence_3_010_01_4.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 155.038760 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 3.225000 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(testing::internal::MakeIndexSequence< 0 >) cw +(testing::internal::IndexSequence<>) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (testing::internal::MakeIndexSequence< 0 >) 0.000000 0.000000 box + (testing::internal::IndexSequence<>) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/structtesting_1_1internal_1_1_make_index_sequence_3_010_01_4.tex b/doc/latex/structtesting_1_1internal_1_1_make_index_sequence_3_010_01_4.tex new file mode 100644 index 0000000..ce04c62 --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1_make_index_sequence_3_010_01_4.tex @@ -0,0 +1,28 @@ +\hypertarget{structtesting_1_1internal_1_1_make_index_sequence_3_010_01_4}{}\section{testing\+:\+:internal\+:\+:Make\+Index\+Sequence$<$ 0 $>$ Struct Template Reference} +\label{structtesting_1_1internal_1_1_make_index_sequence_3_010_01_4}\index{testing\+::internal\+::\+Make\+Index\+Sequence$<$ 0 $>$@{testing\+::internal\+::\+Make\+Index\+Sequence$<$ 0 $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +Inheritance diagram for testing\+:\+:internal\+:\+:Make\+Index\+Sequence$<$ 0 $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{structtesting_1_1internal_1_1_make_index_sequence_3_010_01_4} +\end{center} +\end{figure} +\subsection*{Additional Inherited Members} + + +\subsection{Detailed Description} +\subsubsection*{template$<$$>$\newline +struct testing\+::internal\+::\+Make\+Index\+Sequence$<$ 0 $>$} + + + +Definition at line 7670 of file gtest.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtesting_1_1internal_1_1_param_name_gen_func.tex b/doc/latex/structtesting_1_1internal_1_1_param_name_gen_func.tex new file mode 100644 index 0000000..910c521 --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1_param_name_gen_func.tex @@ -0,0 +1,40 @@ +\hypertarget{structtesting_1_1internal_1_1_param_name_gen_func}{}\section{testing\+:\+:internal\+:\+:Param\+Name\+Gen\+Func$<$ Param\+Type $>$ Struct Template Reference} +\label{structtesting_1_1internal_1_1_param_name_gen_func}\index{testing\+::internal\+::\+Param\+Name\+Gen\+Func$<$ Param\+Type $>$@{testing\+::internal\+::\+Param\+Name\+Gen\+Func$<$ Param\+Type $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +typedef std\+::string \mbox{\hyperlink{structtesting_1_1internal_1_1_param_name_gen_func_adf1ce5df22a930ae715082862d72590f}{Type}}(const \mbox{\hyperlink{structtesting_1_1_test_param_info}{Test\+Param\+Info}}$<$ Param\+Type $>$ \&) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class Param\+Type$>$\newline +struct testing\+::internal\+::\+Param\+Name\+Gen\+Func$<$ Param\+Type $>$} + + + +Definition at line 10929 of file gtest.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structtesting_1_1internal_1_1_param_name_gen_func_adf1ce5df22a930ae715082862d72590f}\label{structtesting_1_1internal_1_1_param_name_gen_func_adf1ce5df22a930ae715082862d72590f}} +\index{testing\+::internal\+::\+Param\+Name\+Gen\+Func@{testing\+::internal\+::\+Param\+Name\+Gen\+Func}!Type@{Type}} +\index{Type@{Type}!testing\+::internal\+::\+Param\+Name\+Gen\+Func@{testing\+::internal\+::\+Param\+Name\+Gen\+Func}} +\subsubsection{\texorpdfstring{Type}{Type}} +{\footnotesize\ttfamily template$<$class Param\+Type $>$ \\ +typedef std\+::string \mbox{\hyperlink{structtesting_1_1internal_1_1_param_name_gen_func}{testing\+::internal\+::\+Param\+Name\+Gen\+Func}}$<$ Param\+Type $>$\+::Type(const \mbox{\hyperlink{structtesting_1_1_test_param_info}{Test\+Param\+Info}}$<$ Param\+Type $>$ \&)} + + + +Definition at line 10930 of file gtest.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtesting_1_1internal_1_1_relation_to_source_copy.tex b/doc/latex/structtesting_1_1internal_1_1_relation_to_source_copy.tex new file mode 100644 index 0000000..fa83bcf --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1_relation_to_source_copy.tex @@ -0,0 +1,18 @@ +\hypertarget{structtesting_1_1internal_1_1_relation_to_source_copy}{}\section{testing\+:\+:internal\+:\+:Relation\+To\+Source\+Copy Struct Reference} +\label{structtesting_1_1internal_1_1_relation_to_source_copy}\index{testing\+::internal\+::\+Relation\+To\+Source\+Copy@{testing\+::internal\+::\+Relation\+To\+Source\+Copy}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + + + +\subsection{Detailed Description} + + +Definition at line 7568 of file gtest.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtesting_1_1internal_1_1_relation_to_source_reference.tex b/doc/latex/structtesting_1_1internal_1_1_relation_to_source_reference.tex new file mode 100644 index 0000000..35f3965 --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1_relation_to_source_reference.tex @@ -0,0 +1,18 @@ +\hypertarget{structtesting_1_1internal_1_1_relation_to_source_reference}{}\section{testing\+:\+:internal\+:\+:Relation\+To\+Source\+Reference Struct Reference} +\label{structtesting_1_1internal_1_1_relation_to_source_reference}\index{testing\+::internal\+::\+Relation\+To\+Source\+Reference@{testing\+::internal\+::\+Relation\+To\+Source\+Reference}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + + + +\subsection{Detailed Description} + + +Definition at line 7567 of file gtest.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtesting_1_1internal_1_1_remove_const.tex b/doc/latex/structtesting_1_1internal_1_1_remove_const.tex new file mode 100644 index 0000000..4f3fc3a --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1_remove_const.tex @@ -0,0 +1,40 @@ +\hypertarget{structtesting_1_1internal_1_1_remove_const}{}\section{testing\+:\+:internal\+:\+:Remove\+Const$<$ T $>$ Struct Template Reference} +\label{structtesting_1_1internal_1_1_remove_const}\index{testing\+::internal\+::\+Remove\+Const$<$ T $>$@{testing\+::internal\+::\+Remove\+Const$<$ T $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +typedef T \mbox{\hyperlink{structtesting_1_1internal_1_1_remove_const_a1be32027ea4edcc0d15abd59aba4a97f}{type}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T$>$\newline +struct testing\+::internal\+::\+Remove\+Const$<$ T $>$} + + + +Definition at line 7319 of file gtest.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structtesting_1_1internal_1_1_remove_const_a1be32027ea4edcc0d15abd59aba4a97f}\label{structtesting_1_1internal_1_1_remove_const_a1be32027ea4edcc0d15abd59aba4a97f}} +\index{testing\+::internal\+::\+Remove\+Const@{testing\+::internal\+::\+Remove\+Const}!type@{type}} +\index{type@{type}!testing\+::internal\+::\+Remove\+Const@{testing\+::internal\+::\+Remove\+Const}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename T$>$ \\ +typedef T \mbox{\hyperlink{structtesting_1_1internal_1_1_remove_const}{testing\+::internal\+::\+Remove\+Const}}$<$ T $>$\+::\mbox{\hyperlink{structtesting_1_1internal_1_1_remove_const_a1be32027ea4edcc0d15abd59aba4a97f}{type}}} + + + +Definition at line 7319 of file gtest.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtesting_1_1internal_1_1_remove_const_3_01const_01_t[_n]_4.tex b/doc/latex/structtesting_1_1internal_1_1_remove_const_3_01const_01_t[_n]_4.tex new file mode 100644 index 0000000..29f2816 --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1_remove_const_3_01const_01_t[_n]_4.tex @@ -0,0 +1,40 @@ +\hypertarget{structtesting_1_1internal_1_1_remove_const_3_01const_01_t[_n]_4}{}\section{testing\+:\+:internal\+:\+:Remove\+Const$<$ const T\mbox{[}N\mbox{]}$>$ Struct Template Reference} +\label{structtesting_1_1internal_1_1_remove_const_3_01const_01_t[_n]_4}\index{testing\+::internal\+::\+Remove\+Const$<$ const T\mbox{[}N\mbox{]}$>$@{testing\+::internal\+::\+Remove\+Const$<$ const T[N]$>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +typedef \mbox{\hyperlink{structtesting_1_1internal_1_1_remove_const}{Remove\+Const}}$<$ T $>$\+::type \mbox{\hyperlink{structtesting_1_1internal_1_1_remove_const_3_01const_01_t[_n]_4_ac976b53cb5d031a120fafbe790650068}{type}}\mbox{[}N\mbox{]} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T, size\+\_\+t N$>$\newline +struct testing\+::internal\+::\+Remove\+Const$<$ const T\mbox{[}\+N\mbox{]}$>$} + + + +Definition at line 7327 of file gtest.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structtesting_1_1internal_1_1_remove_const_3_01const_01_t[_n]_4_ac976b53cb5d031a120fafbe790650068}\label{structtesting_1_1internal_1_1_remove_const_3_01const_01_t[_n]_4_ac976b53cb5d031a120fafbe790650068}} +\index{testing\+::internal\+::\+Remove\+Const$<$ const T\mbox{[}N\mbox{]}$>$@{testing\+::internal\+::\+Remove\+Const$<$ const T[N]$>$}!type@{type}} +\index{type@{type}!testing\+::internal\+::\+Remove\+Const$<$ const T\mbox{[}N\mbox{]}$>$@{testing\+::internal\+::\+Remove\+Const$<$ const T[N]$>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename T , size\+\_\+t N$>$ \\ +typedef \mbox{\hyperlink{structtesting_1_1internal_1_1_remove_const}{Remove\+Const}}$<$T$>$\+::type \mbox{\hyperlink{structtesting_1_1internal_1_1_remove_const}{testing\+::internal\+::\+Remove\+Const}}$<$ const T\mbox{[}N\mbox{]}$>$\+::type\mbox{[}N\mbox{]}} + + + +Definition at line 7328 of file gtest.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtesting_1_1internal_1_1_remove_const_3_01const_01_t_01_4.tex b/doc/latex/structtesting_1_1internal_1_1_remove_const_3_01const_01_t_01_4.tex new file mode 100644 index 0000000..8ba4b1d --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1_remove_const_3_01const_01_t_01_4.tex @@ -0,0 +1,40 @@ +\hypertarget{structtesting_1_1internal_1_1_remove_const_3_01const_01_t_01_4}{}\section{testing\+:\+:internal\+:\+:Remove\+Const$<$ const T $>$ Struct Template Reference} +\label{structtesting_1_1internal_1_1_remove_const_3_01const_01_t_01_4}\index{testing\+::internal\+::\+Remove\+Const$<$ const T $>$@{testing\+::internal\+::\+Remove\+Const$<$ const T $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +typedef T \mbox{\hyperlink{structtesting_1_1internal_1_1_remove_const_3_01const_01_t_01_4_ac88c6824d228ab05091e5a4f1c1a95fc}{type}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T$>$\newline +struct testing\+::internal\+::\+Remove\+Const$<$ const T $>$} + + + +Definition at line 7321 of file gtest.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structtesting_1_1internal_1_1_remove_const_3_01const_01_t_01_4_ac88c6824d228ab05091e5a4f1c1a95fc}\label{structtesting_1_1internal_1_1_remove_const_3_01const_01_t_01_4_ac88c6824d228ab05091e5a4f1c1a95fc}} +\index{testing\+::internal\+::\+Remove\+Const$<$ const T $>$@{testing\+::internal\+::\+Remove\+Const$<$ const T $>$}!type@{type}} +\index{type@{type}!testing\+::internal\+::\+Remove\+Const$<$ const T $>$@{testing\+::internal\+::\+Remove\+Const$<$ const T $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +typedef T \mbox{\hyperlink{structtesting_1_1internal_1_1_remove_const}{testing\+::internal\+::\+Remove\+Const}}$<$ const T $>$\+::\mbox{\hyperlink{structtesting_1_1internal_1_1_remove_const_3_01const_01_t_01_4_ac88c6824d228ab05091e5a4f1c1a95fc}{type}}} + + + +Definition at line 7321 of file gtest.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtesting_1_1internal_1_1_remove_reference.tex b/doc/latex/structtesting_1_1internal_1_1_remove_reference.tex new file mode 100644 index 0000000..481888e --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1_remove_reference.tex @@ -0,0 +1,40 @@ +\hypertarget{structtesting_1_1internal_1_1_remove_reference}{}\section{testing\+:\+:internal\+:\+:Remove\+Reference$<$ T $>$ Struct Template Reference} +\label{structtesting_1_1internal_1_1_remove_reference}\index{testing\+::internal\+::\+Remove\+Reference$<$ T $>$@{testing\+::internal\+::\+Remove\+Reference$<$ T $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +typedef T \mbox{\hyperlink{structtesting_1_1internal_1_1_remove_reference_a9ca4f6499579225f7986b789ee4b2895}{type}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T$>$\newline +struct testing\+::internal\+::\+Remove\+Reference$<$ T $>$} + + + +Definition at line 7306 of file gtest.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structtesting_1_1internal_1_1_remove_reference_a9ca4f6499579225f7986b789ee4b2895}\label{structtesting_1_1internal_1_1_remove_reference_a9ca4f6499579225f7986b789ee4b2895}} +\index{testing\+::internal\+::\+Remove\+Reference@{testing\+::internal\+::\+Remove\+Reference}!type@{type}} +\index{type@{type}!testing\+::internal\+::\+Remove\+Reference@{testing\+::internal\+::\+Remove\+Reference}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +typedef T \mbox{\hyperlink{structtesting_1_1internal_1_1_remove_reference}{testing\+::internal\+::\+Remove\+Reference}}$<$ T $>$\+::\mbox{\hyperlink{structtesting_1_1internal_1_1_remove_reference_a9ca4f6499579225f7986b789ee4b2895}{type}}} + + + +Definition at line 7306 of file gtest.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtesting_1_1internal_1_1_remove_reference_3_01_t_01_6_01_4.tex b/doc/latex/structtesting_1_1internal_1_1_remove_reference_3_01_t_01_6_01_4.tex new file mode 100644 index 0000000..9f9e3e4 --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1_remove_reference_3_01_t_01_6_01_4.tex @@ -0,0 +1,40 @@ +\hypertarget{structtesting_1_1internal_1_1_remove_reference_3_01_t_01_6_01_4}{}\section{testing\+:\+:internal\+:\+:Remove\+Reference$<$ T \& $>$ Struct Template Reference} +\label{structtesting_1_1internal_1_1_remove_reference_3_01_t_01_6_01_4}\index{testing\+::internal\+::\+Remove\+Reference$<$ T \& $>$@{testing\+::internal\+::\+Remove\+Reference$<$ T \& $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +typedef T \mbox{\hyperlink{structtesting_1_1internal_1_1_remove_reference_3_01_t_01_6_01_4_a3d0f32a66759f333c2dd66aa31005e6d}{type}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T$>$\newline +struct testing\+::internal\+::\+Remove\+Reference$<$ T \& $>$} + + + +Definition at line 7308 of file gtest.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structtesting_1_1internal_1_1_remove_reference_3_01_t_01_6_01_4_a3d0f32a66759f333c2dd66aa31005e6d}\label{structtesting_1_1internal_1_1_remove_reference_3_01_t_01_6_01_4_a3d0f32a66759f333c2dd66aa31005e6d}} +\index{testing\+::internal\+::\+Remove\+Reference$<$ T \& $>$@{testing\+::internal\+::\+Remove\+Reference$<$ T \& $>$}!type@{type}} +\index{type@{type}!testing\+::internal\+::\+Remove\+Reference$<$ T \& $>$@{testing\+::internal\+::\+Remove\+Reference$<$ T \& $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +typedef T \mbox{\hyperlink{structtesting_1_1internal_1_1_remove_reference}{testing\+::internal\+::\+Remove\+Reference}}$<$ T \& $>$\+::\mbox{\hyperlink{structtesting_1_1internal_1_1_remove_reference_3_01_t_01_6_01_4_a3d0f32a66759f333c2dd66aa31005e6d}{type}}} + + + +Definition at line 7308 of file gtest.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtesting_1_1internal_1_1_static_assert_type_eq_helper.tex b/doc/latex/structtesting_1_1internal_1_1_static_assert_type_eq_helper.tex new file mode 100644 index 0000000..ec2ac73 --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1_static_assert_type_eq_helper.tex @@ -0,0 +1,21 @@ +\hypertarget{structtesting_1_1internal_1_1_static_assert_type_eq_helper}{}\section{testing\+:\+:internal\+:\+:Static\+Assert\+Type\+Eq\+Helper$<$ T1, T2 $>$ Struct Template Reference} +\label{structtesting_1_1internal_1_1_static_assert_type_eq_helper}\index{testing\+::internal\+::\+Static\+Assert\+Type\+Eq\+Helper$<$ T1, T2 $>$@{testing\+::internal\+::\+Static\+Assert\+Type\+Eq\+Helper$<$ T1, T2 $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T1, typename T2$>$\newline +struct testing\+::internal\+::\+Static\+Assert\+Type\+Eq\+Helper$<$ T1, T2 $>$} + + + +Definition at line 1092 of file gtest.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtesting_1_1internal_1_1_static_assert_type_eq_helper_3_01_t_00_01_t_01_4.tex b/doc/latex/structtesting_1_1internal_1_1_static_assert_type_eq_helper_3_01_t_00_01_t_01_4.tex new file mode 100644 index 0000000..1ed18bf --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1_static_assert_type_eq_helper_3_01_t_00_01_t_01_4.tex @@ -0,0 +1,45 @@ +\hypertarget{structtesting_1_1internal_1_1_static_assert_type_eq_helper_3_01_t_00_01_t_01_4}{}\section{testing\+:\+:internal\+:\+:Static\+Assert\+Type\+Eq\+Helper$<$ T, T $>$ Struct Template Reference} +\label{structtesting_1_1internal_1_1_static_assert_type_eq_helper_3_01_t_00_01_t_01_4}\index{testing\+::internal\+::\+Static\+Assert\+Type\+Eq\+Helper$<$ T, T $>$@{testing\+::internal\+::\+Static\+Assert\+Type\+Eq\+Helper$<$ T, T $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +enum \{ \mbox{\hyperlink{structtesting_1_1internal_1_1_static_assert_type_eq_helper_3_01_t_00_01_t_01_4_a70d7e229f58313a1086e819dd09b652da63c475f543e4e977d43c5093dd2b7f3f}{value}} = true + \} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T$>$\newline +struct testing\+::internal\+::\+Static\+Assert\+Type\+Eq\+Helper$<$ T, T $>$} + + + +Definition at line 1095 of file gtest.\+h. + + + +\subsection{Member Enumeration Documentation} +\mbox{\Hypertarget{structtesting_1_1internal_1_1_static_assert_type_eq_helper_3_01_t_00_01_t_01_4_a70d7e229f58313a1086e819dd09b652d}\label{structtesting_1_1internal_1_1_static_assert_type_eq_helper_3_01_t_00_01_t_01_4_a70d7e229f58313a1086e819dd09b652d}} +\subsubsection{\texorpdfstring{anonymous enum}{anonymous enum}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +anonymous enum} + +\begin{DoxyEnumFields}{Enumerator} +\raisebox{\heightof{T}}[0pt][0pt]{\index{value@{value}!testing\+::internal\+::\+Static\+Assert\+Type\+Eq\+Helper$<$ T, T $>$@{testing\+::internal\+::\+Static\+Assert\+Type\+Eq\+Helper$<$ T, T $>$}}\index{testing\+::internal\+::\+Static\+Assert\+Type\+Eq\+Helper$<$ T, T $>$@{testing\+::internal\+::\+Static\+Assert\+Type\+Eq\+Helper$<$ T, T $>$}!value@{value}}}\mbox{\Hypertarget{structtesting_1_1internal_1_1_static_assert_type_eq_helper_3_01_t_00_01_t_01_4_a70d7e229f58313a1086e819dd09b652da63c475f543e4e977d43c5093dd2b7f3f}\label{structtesting_1_1internal_1_1_static_assert_type_eq_helper_3_01_t_00_01_t_01_4_a70d7e229f58313a1086e819dd09b652da63c475f543e4e977d43c5093dd2b7f3f}} +value&\\ +\hline + +\end{DoxyEnumFields} + + +Definition at line 1096 of file gtest.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtesting_1_1internal_1_1_suite_api_resolver.eps b/doc/latex/structtesting_1_1internal_1_1_suite_api_resolver.eps new file mode 100644 index 0000000..83d1a03 --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1_suite_api_resolver.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 168.067227 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.975000 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(testing::internal::SuiteApiResolver< T >) cw +(T) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (testing::internal::SuiteApiResolver< T >) 0.000000 0.000000 box + (T) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/structtesting_1_1internal_1_1_suite_api_resolver.tex b/doc/latex/structtesting_1_1internal_1_1_suite_api_resolver.tex new file mode 100644 index 0000000..cc0fdc0 --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1_suite_api_resolver.tex @@ -0,0 +1,78 @@ +\hypertarget{structtesting_1_1internal_1_1_suite_api_resolver}{}\section{testing\+:\+:internal\+:\+:Suite\+Api\+Resolver$<$ T $>$ Struct Template Reference} +\label{structtesting_1_1internal_1_1_suite_api_resolver}\index{testing\+::internal\+::\+Suite\+Api\+Resolver$<$ T $>$@{testing\+::internal\+::\+Suite\+Api\+Resolver$<$ T $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +Inheritance diagram for testing\+:\+:internal\+:\+:Suite\+Api\+Resolver$<$ T $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{structtesting_1_1internal_1_1_suite_api_resolver} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structtesting_1_1internal_1_1_suite_api_resolver_a343c36f492a946d302b1cfc930266768}{Test}} = typename std\+::conditional$<$ sizeof(T) !=0, \+::\mbox{\hyperlink{classtesting_1_1_test}{testing\+::\+Test}}, void $>$\+::type +\end{DoxyCompactItemize} +\subsection*{Static Public Member Functions} +\begin{DoxyCompactItemize} +\item +static \mbox{\hyperlink{namespacetesting_1_1internal_a04786aa10f8b0bf38a5ead94d00475f4}{Set\+Up\+Tear\+Down\+Suite\+Func\+Type}} \mbox{\hyperlink{structtesting_1_1internal_1_1_suite_api_resolver_a460c8a0039577824e9170e6c332b530f}{Get\+Set\+Up\+Case\+Or\+Suite}} () +\item +static \mbox{\hyperlink{namespacetesting_1_1internal_a04786aa10f8b0bf38a5ead94d00475f4}{Set\+Up\+Tear\+Down\+Suite\+Func\+Type}} \mbox{\hyperlink{structtesting_1_1internal_1_1_suite_api_resolver_a8495afe4e71c81842119035a71db7e18}{Get\+Tear\+Down\+Case\+Or\+Suite}} () +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T$>$\newline +struct testing\+::internal\+::\+Suite\+Api\+Resolver$<$ T $>$} + + + +Definition at line 6952 of file gtest.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structtesting_1_1internal_1_1_suite_api_resolver_a343c36f492a946d302b1cfc930266768}\label{structtesting_1_1internal_1_1_suite_api_resolver_a343c36f492a946d302b1cfc930266768}} +\index{testing\+::internal\+::\+Suite\+Api\+Resolver@{testing\+::internal\+::\+Suite\+Api\+Resolver}!Test@{Test}} +\index{Test@{Test}!testing\+::internal\+::\+Suite\+Api\+Resolver@{testing\+::internal\+::\+Suite\+Api\+Resolver}} +\subsubsection{\texorpdfstring{Test}{Test}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +using \mbox{\hyperlink{structtesting_1_1internal_1_1_suite_api_resolver}{testing\+::internal\+::\+Suite\+Api\+Resolver}}$<$ T $>$\+::\mbox{\hyperlink{structtesting_1_1internal_1_1_suite_api_resolver_a343c36f492a946d302b1cfc930266768}{Test}} = typename std\+::conditional$<$sizeof(T) != 0, \+::\mbox{\hyperlink{classtesting_1_1_test}{testing\+::\+Test}}, void$>$\+::type} + + + +Definition at line 6956 of file gtest.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{structtesting_1_1internal_1_1_suite_api_resolver_a460c8a0039577824e9170e6c332b530f}\label{structtesting_1_1internal_1_1_suite_api_resolver_a460c8a0039577824e9170e6c332b530f}} +\index{testing\+::internal\+::\+Suite\+Api\+Resolver@{testing\+::internal\+::\+Suite\+Api\+Resolver}!Get\+Set\+Up\+Case\+Or\+Suite@{Get\+Set\+Up\+Case\+Or\+Suite}} +\index{Get\+Set\+Up\+Case\+Or\+Suite@{Get\+Set\+Up\+Case\+Or\+Suite}!testing\+::internal\+::\+Suite\+Api\+Resolver@{testing\+::internal\+::\+Suite\+Api\+Resolver}} +\subsubsection{\texorpdfstring{Get\+Set\+Up\+Case\+Or\+Suite()}{GetSetUpCaseOrSuite()}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +static \mbox{\hyperlink{namespacetesting_1_1internal_a04786aa10f8b0bf38a5ead94d00475f4}{Set\+Up\+Tear\+Down\+Suite\+Func\+Type}} \mbox{\hyperlink{structtesting_1_1internal_1_1_suite_api_resolver}{testing\+::internal\+::\+Suite\+Api\+Resolver}}$<$ T $>$\+::Get\+Set\+Up\+Case\+Or\+Suite (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}} + + + +Definition at line 6958 of file gtest.\+h. + +\mbox{\Hypertarget{structtesting_1_1internal_1_1_suite_api_resolver_a8495afe4e71c81842119035a71db7e18}\label{structtesting_1_1internal_1_1_suite_api_resolver_a8495afe4e71c81842119035a71db7e18}} +\index{testing\+::internal\+::\+Suite\+Api\+Resolver@{testing\+::internal\+::\+Suite\+Api\+Resolver}!Get\+Tear\+Down\+Case\+Or\+Suite@{Get\+Tear\+Down\+Case\+Or\+Suite}} +\index{Get\+Tear\+Down\+Case\+Or\+Suite@{Get\+Tear\+Down\+Case\+Or\+Suite}!testing\+::internal\+::\+Suite\+Api\+Resolver@{testing\+::internal\+::\+Suite\+Api\+Resolver}} +\subsubsection{\texorpdfstring{Get\+Tear\+Down\+Case\+Or\+Suite()}{GetTearDownCaseOrSuite()}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +static \mbox{\hyperlink{namespacetesting_1_1internal_a04786aa10f8b0bf38a5ead94d00475f4}{Set\+Up\+Tear\+Down\+Suite\+Func\+Type}} \mbox{\hyperlink{structtesting_1_1internal_1_1_suite_api_resolver}{testing\+::internal\+::\+Suite\+Api\+Resolver}}$<$ T $>$\+::Get\+Tear\+Down\+Case\+Or\+Suite (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}} + + + +Definition at line 6971 of file gtest.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtesting_1_1internal_1_1_wrap_printer_type.tex b/doc/latex/structtesting_1_1internal_1_1_wrap_printer_type.tex new file mode 100644 index 0000000..c169e8b --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1_wrap_printer_type.tex @@ -0,0 +1,21 @@ +\hypertarget{structtesting_1_1internal_1_1_wrap_printer_type}{}\section{testing\+:\+:internal\+:\+:Wrap\+Printer\+Type$<$ type $>$ Struct Template Reference} +\label{structtesting_1_1internal_1_1_wrap_printer_type}\index{testing\+::internal\+::\+Wrap\+Printer\+Type$<$ type $>$@{testing\+::internal\+::\+Wrap\+Printer\+Type$<$ type $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + + + +\subsection{Detailed Description} +\subsubsection*{template$<$Default\+Printer\+Type type$>$\newline +struct testing\+::internal\+::\+Wrap\+Printer\+Type$<$ type $>$} + + + +Definition at line 8440 of file gtest.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtesting_1_1internal_1_1bool__constant.eps b/doc/latex/structtesting_1_1internal_1_1bool__constant.eps new file mode 100644 index 0000000..60362d8 --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1bool__constant.eps @@ -0,0 +1,207 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 41.407867 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 12.075000 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 3 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(testing::internal::bool_constant< bool_value >) cw +(testing::internal::is_same< T, U >) cw +(testing::internal::is_same< T, T >) cw +(testing::internal::IsRecursiveContainerImpl< C, false >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (testing::internal::bool_constant< bool_value >) 1.000000 1.000000 box + (testing::internal::is_same< T, U >) 0.000000 0.000000 box + (testing::internal::is_same< T, T >) 1.000000 0.000000 box + (testing::internal::IsRecursiveContainerImpl< C, false >) 2.000000 0.000000 box + +% ----- relations ----- + +solid +1 1.000000 0.250000 out +solid +0.000000 2.000000 1.000000 conn +solid +0 0.000000 0.750000 in +solid +0 1.000000 0.750000 in +solid +0 2.000000 0.750000 in diff --git a/doc/latex/structtesting_1_1internal_1_1bool__constant.tex b/doc/latex/structtesting_1_1internal_1_1bool__constant.tex new file mode 100644 index 0000000..a2bc35b --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1bool__constant.tex @@ -0,0 +1,65 @@ +\hypertarget{structtesting_1_1internal_1_1bool__constant}{}\section{testing\+:\+:internal\+:\+:bool\+\_\+constant$<$ bool\+\_\+value $>$ Struct Template Reference} +\label{structtesting_1_1internal_1_1bool__constant}\index{testing\+::internal\+::bool\+\_\+constant$<$ bool\+\_\+value $>$@{testing\+::internal\+::bool\+\_\+constant$<$ bool\+\_\+value $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +Inheritance diagram for testing\+:\+:internal\+:\+:bool\+\_\+constant$<$ bool\+\_\+value $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=1.159420cm]{structtesting_1_1internal_1_1bool__constant} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +typedef \mbox{\hyperlink{structtesting_1_1internal_1_1bool__constant}{bool\+\_\+constant}}$<$ bool\+\_\+value $>$ \mbox{\hyperlink{structtesting_1_1internal_1_1bool__constant_aba6d09ecf7eecea6c93480f0d627a167}{type}} +\end{DoxyCompactItemize} +\subsection*{Static Public Attributes} +\begin{DoxyCompactItemize} +\item +static const bool \mbox{\hyperlink{structtesting_1_1internal_1_1bool__constant_a499fba6576296b04d99690a486424b32}{value}} = bool\+\_\+value +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$bool bool\+\_\+value$>$\newline +struct testing\+::internal\+::bool\+\_\+constant$<$ bool\+\_\+value $>$} + + + +Definition at line 2184 of file gtest.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structtesting_1_1internal_1_1bool__constant_aba6d09ecf7eecea6c93480f0d627a167}\label{structtesting_1_1internal_1_1bool__constant_aba6d09ecf7eecea6c93480f0d627a167}} +\index{testing\+::internal\+::bool\+\_\+constant@{testing\+::internal\+::bool\+\_\+constant}!type@{type}} +\index{type@{type}!testing\+::internal\+::bool\+\_\+constant@{testing\+::internal\+::bool\+\_\+constant}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$bool bool\+\_\+value$>$ \\ +typedef \mbox{\hyperlink{structtesting_1_1internal_1_1bool__constant}{bool\+\_\+constant}}$<$bool\+\_\+value$>$ \mbox{\hyperlink{structtesting_1_1internal_1_1bool__constant}{testing\+::internal\+::bool\+\_\+constant}}$<$ bool\+\_\+value $>$\+::\mbox{\hyperlink{structtesting_1_1internal_1_1bool__constant_aba6d09ecf7eecea6c93480f0d627a167}{type}}} + + + +Definition at line 2185 of file gtest.\+h. + + + +\subsection{Member Data Documentation} +\mbox{\Hypertarget{structtesting_1_1internal_1_1bool__constant_a499fba6576296b04d99690a486424b32}\label{structtesting_1_1internal_1_1bool__constant_a499fba6576296b04d99690a486424b32}} +\index{testing\+::internal\+::bool\+\_\+constant@{testing\+::internal\+::bool\+\_\+constant}!value@{value}} +\index{value@{value}!testing\+::internal\+::bool\+\_\+constant@{testing\+::internal\+::bool\+\_\+constant}} +\subsubsection{\texorpdfstring{value}{value}} +{\footnotesize\ttfamily template$<$bool bool\+\_\+value$>$ \\ +const bool \mbox{\hyperlink{structtesting_1_1internal_1_1bool__constant}{testing\+::internal\+::bool\+\_\+constant}}$<$ bool\+\_\+value $>$\+::value = bool\+\_\+value\hspace{0.3cm}{\ttfamily [static]}} + + + +Definition at line 2186 of file gtest.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtesting_1_1internal_1_1faketype.tex b/doc/latex/structtesting_1_1internal_1_1faketype.tex new file mode 100644 index 0000000..80222b1 --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1faketype.tex @@ -0,0 +1,18 @@ +\hypertarget{structtesting_1_1internal_1_1faketype}{}\section{testing\+:\+:internal\+:\+:faketype Struct Reference} +\label{structtesting_1_1internal_1_1faketype}\index{testing\+::internal\+::faketype@{testing\+::internal\+::faketype}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + + + +\subsection{Detailed Description} + + +Definition at line 16105 of file gtest.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtesting_1_1internal_1_1is__same.eps b/doc/latex/structtesting_1_1internal_1_1is__same.eps new file mode 100644 index 0000000..e3b76a5 --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1is__same.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 167.364017 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.987500 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(testing::internal::is_same< T, U >) cw +(testing::internal::bool_constant< false >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (testing::internal::is_same< T, U >) 0.000000 0.000000 box + (testing::internal::bool_constant< false >) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/structtesting_1_1internal_1_1is__same.tex b/doc/latex/structtesting_1_1internal_1_1is__same.tex new file mode 100644 index 0000000..1cc45c0 --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1is__same.tex @@ -0,0 +1,28 @@ +\hypertarget{structtesting_1_1internal_1_1is__same}{}\section{testing\+:\+:internal\+:\+:is\+\_\+same$<$ T, U $>$ Struct Template Reference} +\label{structtesting_1_1internal_1_1is__same}\index{testing\+::internal\+::is\+\_\+same$<$ T, U $>$@{testing\+::internal\+::is\+\_\+same$<$ T, U $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +Inheritance diagram for testing\+:\+:internal\+:\+:is\+\_\+same$<$ T, U $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{structtesting_1_1internal_1_1is__same} +\end{center} +\end{figure} +\subsection*{Additional Inherited Members} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T, typename U$>$\newline +struct testing\+::internal\+::is\+\_\+same$<$ T, U $>$} + + + +Definition at line 2194 of file gtest.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structtesting_1_1internal_1_1is__same_3_01_t_00_01_t_01_4.eps b/doc/latex/structtesting_1_1internal_1_1is__same_3_01_t_00_01_t_01_4.eps new file mode 100644 index 0000000..0aa8070 --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1is__same_3_01_t_00_01_t_01_4.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 170.940171 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.925000 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(testing::internal::is_same< T, T >) cw +(testing::internal::bool_constant< true >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (testing::internal::is_same< T, T >) 0.000000 0.000000 box + (testing::internal::bool_constant< true >) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/structtesting_1_1internal_1_1is__same_3_01_t_00_01_t_01_4.tex b/doc/latex/structtesting_1_1internal_1_1is__same_3_01_t_00_01_t_01_4.tex new file mode 100644 index 0000000..ef3e127 --- /dev/null +++ b/doc/latex/structtesting_1_1internal_1_1is__same_3_01_t_00_01_t_01_4.tex @@ -0,0 +1,28 @@ +\hypertarget{structtesting_1_1internal_1_1is__same_3_01_t_00_01_t_01_4}{}\section{testing\+:\+:internal\+:\+:is\+\_\+same$<$ T, T $>$ Struct Template Reference} +\label{structtesting_1_1internal_1_1is__same_3_01_t_00_01_t_01_4}\index{testing\+::internal\+::is\+\_\+same$<$ T, T $>$@{testing\+::internal\+::is\+\_\+same$<$ T, T $>$}} + + +{\ttfamily \#include $<$gtest.\+h$>$} + +Inheritance diagram for testing\+:\+:internal\+:\+:is\+\_\+same$<$ T, T $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{structtesting_1_1internal_1_1is__same_3_01_t_00_01_t_01_4} +\end{center} +\end{figure} +\subsection*{Additional Inherited Members} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T$>$\newline +struct testing\+::internal\+::is\+\_\+same$<$ T, T $>$} + + + +Definition at line 2197 of file gtest.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +test/eclipse-\/cygwin/lib/gtest/\mbox{\hyperlink{gtest_8h}{gtest.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1__1wire__i__det_1_1is__1wire__.eps b/doc/latex/structutl_1_1__1wire__i__det_1_1is__1wire__.eps new file mode 100644 index 0000000..3990708 --- /dev/null +++ b/doc/latex/structutl_1_1__1wire__i__det_1_1is__1wire__.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 143.369176 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 3.487500 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::_1wire_i_det::is_1wire_< _Tp, typename >) cw +(false_) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::_1wire_i_det::is_1wire_< _Tp, typename >) 0.000000 0.000000 box + (false_) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/structutl_1_1__1wire__i__det_1_1is__1wire__.tex b/doc/latex/structutl_1_1__1wire__i__det_1_1is__1wire__.tex new file mode 100644 index 0000000..25261ef --- /dev/null +++ b/doc/latex/structutl_1_1__1wire__i__det_1_1is__1wire__.tex @@ -0,0 +1,32 @@ +\hypertarget{structutl_1_1__1wire__i__det_1_1is__1wire__}{}\section{utl\+:\+:\+\_\+1wire\+\_\+i\+\_\+det\+:\+:is\+\_\+1wire\+\_\+$<$ \+\_\+\+Tp, typename $>$ Struct Template Reference} +\label{structutl_1_1__1wire__i__det_1_1is__1wire__}\index{utl\+::\+\_\+1wire\+\_\+i\+\_\+det\+::is\+\_\+1wire\+\_\+$<$ \+\_\+\+Tp, typename $>$@{utl\+::\+\_\+1wire\+\_\+i\+\_\+det\+::is\+\_\+1wire\+\_\+$<$ \+\_\+\+Tp, typename $>$}} + + +Primary template to catch any non 1-\/wire interface types. + + + + +{\ttfamily \#include $<$\+\_\+1wire.\+h$>$} + +Inheritance diagram for utl\+:\+:\+\_\+1wire\+\_\+i\+\_\+det\+:\+:is\+\_\+1wire\+\_\+$<$ \+\_\+\+Tp, typename $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{structutl_1_1__1wire__i__det_1_1is__1wire__} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename \+\_\+\+Tp, typename = void$>$\newline +struct utl\+::\+\_\+1wire\+\_\+i\+\_\+det\+::is\+\_\+1wire\+\_\+$<$ \+\_\+\+Tp, typename $>$} + +Primary template to catch any non 1-\/wire interface types. + +Definition at line 684 of file \+\_\+1wire.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/com/\mbox{\hyperlink{__1wire_8h}{\+\_\+1wire.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1__1wire__i__det_1_1is__1wire___3_01___tp_00_01meta_1_1void__t_3_01void_01_4_01_4.eps b/doc/latex/structutl_1_1__1wire__i__det_1_1is__1wire___3_01___tp_00_01meta_1_1void__t_3_01void_01_4_01_4.eps new file mode 100644 index 0000000..1f14a64 --- /dev/null +++ b/doc/latex/structutl_1_1__1wire__i__det_1_1is__1wire___3_01___tp_00_01meta_1_1void__t_3_01void_01_4_01_4.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 117.994100 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 4.237500 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::_1wire_i_det::is_1wire_< _Tp, meta::void_t< void > >) cw +(true_) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::_1wire_i_det::is_1wire_< _Tp, meta::void_t< void > >) 0.000000 0.000000 box + (true_) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/structutl_1_1__1wire__i__det_1_1is__1wire___3_01___tp_00_01meta_1_1void__t_3_01void_01_4_01_4.tex b/doc/latex/structutl_1_1__1wire__i__det_1_1is__1wire___3_01___tp_00_01meta_1_1void__t_3_01void_01_4_01_4.tex new file mode 100644 index 0000000..c2688b0 --- /dev/null +++ b/doc/latex/structutl_1_1__1wire__i__det_1_1is__1wire___3_01___tp_00_01meta_1_1void__t_3_01void_01_4_01_4.tex @@ -0,0 +1,32 @@ +\hypertarget{structutl_1_1__1wire__i__det_1_1is__1wire___3_01___tp_00_01meta_1_1void__t_3_01void_01_4_01_4}{}\section{utl\+:\+:\+\_\+1wire\+\_\+i\+\_\+det\+:\+:is\+\_\+1wire\+\_\+$<$ \+\_\+\+Tp, meta\+:\+:void\+\_\+t$<$ void $>$ $>$ Struct Template Reference} +\label{structutl_1_1__1wire__i__det_1_1is__1wire___3_01___tp_00_01meta_1_1void__t_3_01void_01_4_01_4}\index{utl\+::\+\_\+1wire\+\_\+i\+\_\+det\+::is\+\_\+1wire\+\_\+$<$ \+\_\+\+Tp, meta\+::void\+\_\+t$<$ void $>$ $>$@{utl\+::\+\_\+1wire\+\_\+i\+\_\+det\+::is\+\_\+1wire\+\_\+$<$ \+\_\+\+Tp, meta\+::void\+\_\+t$<$ void $>$ $>$}} + + +template to catch a proper 1-\/wire interface type + + + + +{\ttfamily \#include $<$\+\_\+1wire.\+h$>$} + +Inheritance diagram for utl\+:\+:\+\_\+1wire\+\_\+i\+\_\+det\+:\+:is\+\_\+1wire\+\_\+$<$ \+\_\+\+Tp, meta\+:\+:void\+\_\+t$<$ void $>$ $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{structutl_1_1__1wire__i__det_1_1is__1wire___3_01___tp_00_01meta_1_1void__t_3_01void_01_4_01_4} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename \+\_\+\+Tp$>$\newline +struct utl\+::\+\_\+1wire\+\_\+i\+\_\+det\+::is\+\_\+1wire\+\_\+$<$ \+\_\+\+Tp, meta\+::void\+\_\+t$<$ void $>$ $>$} + +template to catch a proper 1-\/wire interface type + +Definition at line 688 of file \+\_\+1wire.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/com/\mbox{\hyperlink{__1wire_8h}{\+\_\+1wire.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1array.tex b/doc/latex/structutl_1_1array.tex new file mode 100644 index 0000000..b084b1b --- /dev/null +++ b/doc/latex/structutl_1_1array.tex @@ -0,0 +1,599 @@ +\hypertarget{structutl_1_1array}{}\section{utl\+:\+:array$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ Struct Template Reference} +\label{structutl_1_1array}\index{utl\+::array$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$@{utl\+::array$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$}} + + +A standard container for storing a fixed size sequence of elements. + + + + +{\ttfamily \#include $<$array.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1array_a2486d9a16559e5edbf8c0f6457cc1223}{value\+\_\+type}} = \+\_\+\+Tp +\item +using \mbox{\hyperlink{structutl_1_1array_a90f23795637ad96d367bf7d978f7e5e6}{pointer}} = \mbox{\hyperlink{structutl_1_1array_a2486d9a16559e5edbf8c0f6457cc1223}{value\+\_\+type}} $\ast$ +\item +using \mbox{\hyperlink{structutl_1_1array_a61ccd50cead4ae2041fa561b1cf4d79d}{const\+\_\+pointer}} = const \mbox{\hyperlink{structutl_1_1array_a2486d9a16559e5edbf8c0f6457cc1223}{value\+\_\+type}} $\ast$ +\item +using \mbox{\hyperlink{structutl_1_1array_a054dd1ab28d43ec0676dbe2056f63cf4}{reference}} = \mbox{\hyperlink{structutl_1_1array_a2486d9a16559e5edbf8c0f6457cc1223}{value\+\_\+type}} \& +\item +using \mbox{\hyperlink{structutl_1_1array_aab01825d62c21fcf252a64fbeda2bbc4}{const\+\_\+reference}} = const \mbox{\hyperlink{structutl_1_1array_a2486d9a16559e5edbf8c0f6457cc1223}{value\+\_\+type}} \& +\item +using \mbox{\hyperlink{structutl_1_1array_a1cc94e09b75412ad9d7cf636b550ef2d}{iterator}} = \mbox{\hyperlink{structutl_1_1array_a2486d9a16559e5edbf8c0f6457cc1223}{value\+\_\+type}} $\ast$ +\item +using \mbox{\hyperlink{structutl_1_1array_ab1b4f132f7babac61535fe1f7634089a}{const\+\_\+iterator}} = const \mbox{\hyperlink{structutl_1_1array_a2486d9a16559e5edbf8c0f6457cc1223}{value\+\_\+type}} $\ast$ +\item +using \mbox{\hyperlink{structutl_1_1array_aab1bf2f35917b742e5d79ddcab335ef5}{size\+\_\+type}} = \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} +\item +using \mbox{\hyperlink{structutl_1_1array_a7b0b7e9d236db2d3d90465fa6638d22b}{difference\+\_\+type}} = \mbox{\hyperlink{namespaceutl_a1b83655ba00b548af9b51f169c6c567a}{ptrdiff\+\_\+t}} +\item +using \mbox{\hyperlink{structutl_1_1array_a777805d325ff4de41bdf0c81427a42d1}{reverse\+\_\+iterator}} = std\+::reverse\+\_\+iterator$<$ \mbox{\hyperlink{structutl_1_1array_a1cc94e09b75412ad9d7cf636b550ef2d}{iterator}} $>$ +\item +using \mbox{\hyperlink{structutl_1_1array_a2870f89643a20193a2fc420476833256}{const\+\_\+reverse\+\_\+iterator}} = std\+::reverse\+\_\+iterator$<$ \mbox{\hyperlink{structutl_1_1array_ab1b4f132f7babac61535fe1f7634089a}{const\+\_\+iterator}} $>$ +\item +using \mbox{\hyperlink{structutl_1_1array_ae479687ad5c7259e5258c093bda99c89}{array\+\_\+t}} = \mbox{\hyperlink{structutl_1_1array__traits}{array\+\_\+traits}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ +\end{DoxyCompactItemize} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +void \mbox{\hyperlink{structutl_1_1array_a388a40a3a4450a562010859ef2286587}{fill}} (const \mbox{\hyperlink{structutl_1_1array_a2486d9a16559e5edbf8c0f6457cc1223}{value\+\_\+type}} \&v) +\item +void \mbox{\hyperlink{structutl_1_1array_a437559d71769318cc7289dce06659c39}{swap}} (\mbox{\hyperlink{structutl_1_1array}{array}} \&other) noexcept +\end{DoxyCompactItemize} +\begin{Indent}\textbf{ Iterators.}\par +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{structutl_1_1array_a1cc94e09b75412ad9d7cf636b550ef2d}{iterator}} \mbox{\hyperlink{structutl_1_1array_a4b475a8e3d0c7cc41b251f08aef040f0}{begin}} () noexcept +\item +\mbox{\hyperlink{structutl_1_1array_ab1b4f132f7babac61535fe1f7634089a}{const\+\_\+iterator}} \mbox{\hyperlink{structutl_1_1array_ae72df0eae3b306e0a5410d724665c27a}{begin}} () const noexcept +\item +\mbox{\hyperlink{structutl_1_1array_a1cc94e09b75412ad9d7cf636b550ef2d}{iterator}} \mbox{\hyperlink{structutl_1_1array_a76158e0e9b7c019fe69ead7cd4800522}{end}} () noexcept +\item +\mbox{\hyperlink{structutl_1_1array_ab1b4f132f7babac61535fe1f7634089a}{const\+\_\+iterator}} \mbox{\hyperlink{structutl_1_1array_a7a0cf890bc35437821e35484a1fd8fc7}{end}} () const noexcept +\item +\mbox{\hyperlink{structutl_1_1array_ab1b4f132f7babac61535fe1f7634089a}{const\+\_\+iterator}} \mbox{\hyperlink{structutl_1_1array_a4b48e7c5d18ca4f48e187a727bad65f1}{cbegin}} () const noexcept +\item +\mbox{\hyperlink{structutl_1_1array_ab1b4f132f7babac61535fe1f7634089a}{const\+\_\+iterator}} \mbox{\hyperlink{structutl_1_1array_a707a8e620497173544904f3d11324604}{cend}} () const noexcept +\item +\mbox{\hyperlink{structutl_1_1array_a777805d325ff4de41bdf0c81427a42d1}{reverse\+\_\+iterator}} \mbox{\hyperlink{structutl_1_1array_aeeca6bc1e57a142c30590d3c7dc134a5}{rbegin}} () noexcept +\item +\mbox{\hyperlink{structutl_1_1array_a777805d325ff4de41bdf0c81427a42d1}{reverse\+\_\+iterator}} \mbox{\hyperlink{structutl_1_1array_a322f008d90c279fc4170d3ae679d13ea}{rend}} () noexcept +\item +\mbox{\hyperlink{structutl_1_1array_a2870f89643a20193a2fc420476833256}{const\+\_\+reverse\+\_\+iterator}} \mbox{\hyperlink{structutl_1_1array_a921a4f2e174c274f26189f89d38187ca}{rbegin}} () const noexcept +\item +\mbox{\hyperlink{structutl_1_1array_a2870f89643a20193a2fc420476833256}{const\+\_\+reverse\+\_\+iterator}} \mbox{\hyperlink{structutl_1_1array_ac46fe45806b4328b6bed1fb1313818a2}{rend}} () const noexcept +\item +\mbox{\hyperlink{structutl_1_1array_a2870f89643a20193a2fc420476833256}{const\+\_\+reverse\+\_\+iterator}} \mbox{\hyperlink{structutl_1_1array_afdac98eac4c6edc09f478af083029eec}{crbegin}} () const noexcept +\item +\mbox{\hyperlink{structutl_1_1array_a2870f89643a20193a2fc420476833256}{const\+\_\+reverse\+\_\+iterator}} \mbox{\hyperlink{structutl_1_1array_abcdc4718426e62fec38c380a4221b144}{crend}} () const noexcept +\end{DoxyCompactItemize} +\end{Indent} +\begin{Indent}\textbf{ Capacity.}\par +\begin{DoxyCompactItemize} +\item +constexpr \mbox{\hyperlink{structutl_1_1array_aab1bf2f35917b742e5d79ddcab335ef5}{size\+\_\+type}} \mbox{\hyperlink{structutl_1_1array_ab3fa3ca8c774c210a55dbd699ceb345b}{size}} () const noexcept +\item +constexpr \mbox{\hyperlink{structutl_1_1array_aab1bf2f35917b742e5d79ddcab335ef5}{size\+\_\+type}} \mbox{\hyperlink{structutl_1_1array_ae9145a3585ab42ad57d232863f0445dc}{max\+\_\+size}} () const noexcept +\item +constexpr bool \mbox{\hyperlink{structutl_1_1array_ac919fc992acdda9b562f5fc6414552b6}{empty}} () const noexcept +\end{DoxyCompactItemize} +\end{Indent} +\begin{Indent}\textbf{ Element access.}\par +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{structutl_1_1array_a054dd1ab28d43ec0676dbe2056f63cf4}{reference}} \mbox{\hyperlink{structutl_1_1array_a63373518cc6efade8c555ee1ebc1f754}{operator\mbox{[}$\,$\mbox{]}}} (\mbox{\hyperlink{structutl_1_1array_aab1bf2f35917b742e5d79ddcab335ef5}{size\+\_\+type}} n) noexcept +\begin{DoxyCompactList}\small\item\em Operator \mbox{[}\mbox{]}. \end{DoxyCompactList}\item +constexpr \mbox{\hyperlink{structutl_1_1array_aab01825d62c21fcf252a64fbeda2bbc4}{const\+\_\+reference}} \mbox{\hyperlink{structutl_1_1array_a4f91b2d8e9f4c2365d4d58cf1657ac95}{operator\mbox{[}$\,$\mbox{]}}} (\mbox{\hyperlink{structutl_1_1array_aab1bf2f35917b742e5d79ddcab335ef5}{size\+\_\+type}} n) const noexcept +\begin{DoxyCompactList}\small\item\em Operator \mbox{[}\mbox{]} for const. \end{DoxyCompactList}\item +\mbox{\hyperlink{structutl_1_1array_a054dd1ab28d43ec0676dbe2056f63cf4}{reference}} \mbox{\hyperlink{structutl_1_1array_aa7ebc09a296077f0ee23919c92138801}{at}} (\mbox{\hyperlink{structutl_1_1array_aab1bf2f35917b742e5d79ddcab335ef5}{size\+\_\+type}} n) noexcept +\item +constexpr \mbox{\hyperlink{structutl_1_1array_aab01825d62c21fcf252a64fbeda2bbc4}{const\+\_\+reference}} \mbox{\hyperlink{structutl_1_1array_a5525bc148cd57fdc41380593a9732ce7}{at}} (\mbox{\hyperlink{structutl_1_1array_aab1bf2f35917b742e5d79ddcab335ef5}{size\+\_\+type}} n) const noexcept +\begin{DoxyCompactList}\small\item\em Compile time boundary check dereference operator. \end{DoxyCompactList}\item +\mbox{\hyperlink{structutl_1_1array_a054dd1ab28d43ec0676dbe2056f63cf4}{reference}} \mbox{\hyperlink{structutl_1_1array_a3f325450d5240f982b2b712d72f9a411}{front}} () noexcept +\item +constexpr \mbox{\hyperlink{structutl_1_1array_aab01825d62c21fcf252a64fbeda2bbc4}{const\+\_\+reference}} \mbox{\hyperlink{structutl_1_1array_a055c38b4345d1aa5bb8cc9172887165c}{front}} () const noexcept +\item +\mbox{\hyperlink{structutl_1_1array_a054dd1ab28d43ec0676dbe2056f63cf4}{reference}} \mbox{\hyperlink{structutl_1_1array_a5cd956a1087ce3652c79b36316f5875b}{back}} () noexcept +\item +constexpr \mbox{\hyperlink{structutl_1_1array_aab01825d62c21fcf252a64fbeda2bbc4}{const\+\_\+reference}} \mbox{\hyperlink{structutl_1_1array_a4a641f61dda90de1c93d3e62bf587bd3}{back}} () const noexcept +\item +\mbox{\hyperlink{structutl_1_1array_a90f23795637ad96d367bf7d978f7e5e6}{pointer}} \mbox{\hyperlink{structutl_1_1array_a32e4367239fb6fc2f9b0c700ef4e0de6}{data}} () noexcept +\item +\mbox{\hyperlink{structutl_1_1array_a61ccd50cead4ae2041fa561b1cf4d79d}{const\+\_\+pointer}} \mbox{\hyperlink{structutl_1_1array_a07bb0f3b54805d733e97025e68f8bcbc}{data}} () const noexcept +\end{DoxyCompactItemize} +\end{Indent} +\subsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{structutl_1_1array__traits_a297f692ae07fd5c9b02a989fe5736909}{array\+\_\+t\+::type}} \mbox{\hyperlink{structutl_1_1array_a3c49a8073abb7072f4b902982789dedc}{\+\_\+data}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$\newline +struct utl\+::array$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$} + +A standard container for storing a fixed size sequence of elements. + +Meets the requirements of\+: \href{tables.html#65}{\tt container}, \href{tables.html#66}{\tt reversible container}, \href{tables.html#67}{\tt sequence}. Sets support random access iterators. + + +\begin{DoxyTemplParams}{Template Parameters} +{\em \+\_\+\+Tp} & type of element. Required to be a complete type. \\ +\hline +{\em \+\_\+\+Nm} & Number of elements. \\ +\hline +\end{DoxyTemplParams} + + +Definition at line 77 of file array.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1array_ae479687ad5c7259e5258c093bda99c89}\label{structutl_1_1array_ae479687ad5c7259e5258c093bda99c89}} +\index{utl\+::array@{utl\+::array}!array\+\_\+t@{array\+\_\+t}} +\index{array\+\_\+t@{array\+\_\+t}!utl\+::array@{utl\+::array}} +\subsubsection{\texorpdfstring{array\+\_\+t}{array\_t}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +using \mbox{\hyperlink{structutl_1_1array}{utl\+::array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::\mbox{\hyperlink{structutl_1_1array_ae479687ad5c7259e5258c093bda99c89}{array\+\_\+t}} = \mbox{\hyperlink{structutl_1_1array__traits}{array\+\_\+traits}}$<$\+\_\+\+Tp, \+\_\+\+Nm$>$} + + + +Definition at line 93 of file array.\+h. + +\mbox{\Hypertarget{structutl_1_1array_ab1b4f132f7babac61535fe1f7634089a}\label{structutl_1_1array_ab1b4f132f7babac61535fe1f7634089a}} +\index{utl\+::array@{utl\+::array}!const\+\_\+iterator@{const\+\_\+iterator}} +\index{const\+\_\+iterator@{const\+\_\+iterator}!utl\+::array@{utl\+::array}} +\subsubsection{\texorpdfstring{const\+\_\+iterator}{const\_iterator}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +using \mbox{\hyperlink{structutl_1_1array}{utl\+::array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::\mbox{\hyperlink{structutl_1_1array_ab1b4f132f7babac61535fe1f7634089a}{const\+\_\+iterator}} = const \mbox{\hyperlink{structutl_1_1array_a2486d9a16559e5edbf8c0f6457cc1223}{value\+\_\+type}}$\ast$} + + + +Definition at line 84 of file array.\+h. + +\mbox{\Hypertarget{structutl_1_1array_a61ccd50cead4ae2041fa561b1cf4d79d}\label{structutl_1_1array_a61ccd50cead4ae2041fa561b1cf4d79d}} +\index{utl\+::array@{utl\+::array}!const\+\_\+pointer@{const\+\_\+pointer}} +\index{const\+\_\+pointer@{const\+\_\+pointer}!utl\+::array@{utl\+::array}} +\subsubsection{\texorpdfstring{const\+\_\+pointer}{const\_pointer}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +using \mbox{\hyperlink{structutl_1_1array}{utl\+::array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::\mbox{\hyperlink{structutl_1_1array_a61ccd50cead4ae2041fa561b1cf4d79d}{const\+\_\+pointer}} = const \mbox{\hyperlink{structutl_1_1array_a2486d9a16559e5edbf8c0f6457cc1223}{value\+\_\+type}}$\ast$} + + + +Definition at line 80 of file array.\+h. + +\mbox{\Hypertarget{structutl_1_1array_aab01825d62c21fcf252a64fbeda2bbc4}\label{structutl_1_1array_aab01825d62c21fcf252a64fbeda2bbc4}} +\index{utl\+::array@{utl\+::array}!const\+\_\+reference@{const\+\_\+reference}} +\index{const\+\_\+reference@{const\+\_\+reference}!utl\+::array@{utl\+::array}} +\subsubsection{\texorpdfstring{const\+\_\+reference}{const\_reference}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +using \mbox{\hyperlink{structutl_1_1array}{utl\+::array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::\mbox{\hyperlink{structutl_1_1array_aab01825d62c21fcf252a64fbeda2bbc4}{const\+\_\+reference}} = const \mbox{\hyperlink{structutl_1_1array_a2486d9a16559e5edbf8c0f6457cc1223}{value\+\_\+type}}\&} + + + +Definition at line 82 of file array.\+h. + +\mbox{\Hypertarget{structutl_1_1array_a2870f89643a20193a2fc420476833256}\label{structutl_1_1array_a2870f89643a20193a2fc420476833256}} +\index{utl\+::array@{utl\+::array}!const\+\_\+reverse\+\_\+iterator@{const\+\_\+reverse\+\_\+iterator}} +\index{const\+\_\+reverse\+\_\+iterator@{const\+\_\+reverse\+\_\+iterator}!utl\+::array@{utl\+::array}} +\subsubsection{\texorpdfstring{const\+\_\+reverse\+\_\+iterator}{const\_reverse\_iterator}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +using \mbox{\hyperlink{structutl_1_1array}{utl\+::array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::\mbox{\hyperlink{structutl_1_1array_a2870f89643a20193a2fc420476833256}{const\+\_\+reverse\+\_\+iterator}} = std\+::reverse\+\_\+iterator $<$\mbox{\hyperlink{structutl_1_1array_ab1b4f132f7babac61535fe1f7634089a}{const\+\_\+iterator}}$>$} + + + +Definition at line 89 of file array.\+h. + +\mbox{\Hypertarget{structutl_1_1array_a7b0b7e9d236db2d3d90465fa6638d22b}\label{structutl_1_1array_a7b0b7e9d236db2d3d90465fa6638d22b}} +\index{utl\+::array@{utl\+::array}!difference\+\_\+type@{difference\+\_\+type}} +\index{difference\+\_\+type@{difference\+\_\+type}!utl\+::array@{utl\+::array}} +\subsubsection{\texorpdfstring{difference\+\_\+type}{difference\_type}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +using \mbox{\hyperlink{structutl_1_1array}{utl\+::array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::\mbox{\hyperlink{structutl_1_1array_a7b0b7e9d236db2d3d90465fa6638d22b}{difference\+\_\+type}} = \mbox{\hyperlink{namespaceutl_a1b83655ba00b548af9b51f169c6c567a}{ptrdiff\+\_\+t}}} + + + +Definition at line 86 of file array.\+h. + +\mbox{\Hypertarget{structutl_1_1array_a1cc94e09b75412ad9d7cf636b550ef2d}\label{structutl_1_1array_a1cc94e09b75412ad9d7cf636b550ef2d}} +\index{utl\+::array@{utl\+::array}!iterator@{iterator}} +\index{iterator@{iterator}!utl\+::array@{utl\+::array}} +\subsubsection{\texorpdfstring{iterator}{iterator}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +using \mbox{\hyperlink{structutl_1_1array}{utl\+::array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::\mbox{\hyperlink{structutl_1_1array_a1cc94e09b75412ad9d7cf636b550ef2d}{iterator}} = \mbox{\hyperlink{structutl_1_1array_a2486d9a16559e5edbf8c0f6457cc1223}{value\+\_\+type}}$\ast$} + + + +Definition at line 83 of file array.\+h. + +\mbox{\Hypertarget{structutl_1_1array_a90f23795637ad96d367bf7d978f7e5e6}\label{structutl_1_1array_a90f23795637ad96d367bf7d978f7e5e6}} +\index{utl\+::array@{utl\+::array}!pointer@{pointer}} +\index{pointer@{pointer}!utl\+::array@{utl\+::array}} +\subsubsection{\texorpdfstring{pointer}{pointer}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +using \mbox{\hyperlink{structutl_1_1array}{utl\+::array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::\mbox{\hyperlink{structutl_1_1array_a90f23795637ad96d367bf7d978f7e5e6}{pointer}} = \mbox{\hyperlink{structutl_1_1array_a2486d9a16559e5edbf8c0f6457cc1223}{value\+\_\+type}}$\ast$} + + + +Definition at line 79 of file array.\+h. + +\mbox{\Hypertarget{structutl_1_1array_a054dd1ab28d43ec0676dbe2056f63cf4}\label{structutl_1_1array_a054dd1ab28d43ec0676dbe2056f63cf4}} +\index{utl\+::array@{utl\+::array}!reference@{reference}} +\index{reference@{reference}!utl\+::array@{utl\+::array}} +\subsubsection{\texorpdfstring{reference}{reference}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +using \mbox{\hyperlink{structutl_1_1array}{utl\+::array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::\mbox{\hyperlink{structutl_1_1array_a054dd1ab28d43ec0676dbe2056f63cf4}{reference}} = \mbox{\hyperlink{structutl_1_1array_a2486d9a16559e5edbf8c0f6457cc1223}{value\+\_\+type}}\&} + + + +Definition at line 81 of file array.\+h. + +\mbox{\Hypertarget{structutl_1_1array_a777805d325ff4de41bdf0c81427a42d1}\label{structutl_1_1array_a777805d325ff4de41bdf0c81427a42d1}} +\index{utl\+::array@{utl\+::array}!reverse\+\_\+iterator@{reverse\+\_\+iterator}} +\index{reverse\+\_\+iterator@{reverse\+\_\+iterator}!utl\+::array@{utl\+::array}} +\subsubsection{\texorpdfstring{reverse\+\_\+iterator}{reverse\_iterator}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +using \mbox{\hyperlink{structutl_1_1array}{utl\+::array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::\mbox{\hyperlink{structutl_1_1array_a777805d325ff4de41bdf0c81427a42d1}{reverse\+\_\+iterator}} = std\+::reverse\+\_\+iterator $<$\mbox{\hyperlink{structutl_1_1array_a1cc94e09b75412ad9d7cf636b550ef2d}{iterator}}$>$} + + + +Definition at line 87 of file array.\+h. + +\mbox{\Hypertarget{structutl_1_1array_aab1bf2f35917b742e5d79ddcab335ef5}\label{structutl_1_1array_aab1bf2f35917b742e5d79ddcab335ef5}} +\index{utl\+::array@{utl\+::array}!size\+\_\+type@{size\+\_\+type}} +\index{size\+\_\+type@{size\+\_\+type}!utl\+::array@{utl\+::array}} +\subsubsection{\texorpdfstring{size\+\_\+type}{size\_type}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +using \mbox{\hyperlink{structutl_1_1array}{utl\+::array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::\mbox{\hyperlink{structutl_1_1array_aab1bf2f35917b742e5d79ddcab335ef5}{size\+\_\+type}} = \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}}} + + + +Definition at line 85 of file array.\+h. + +\mbox{\Hypertarget{structutl_1_1array_a2486d9a16559e5edbf8c0f6457cc1223}\label{structutl_1_1array_a2486d9a16559e5edbf8c0f6457cc1223}} +\index{utl\+::array@{utl\+::array}!value\+\_\+type@{value\+\_\+type}} +\index{value\+\_\+type@{value\+\_\+type}!utl\+::array@{utl\+::array}} +\subsubsection{\texorpdfstring{value\+\_\+type}{value\_type}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +using \mbox{\hyperlink{structutl_1_1array}{utl\+::array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::\mbox{\hyperlink{structutl_1_1array_a2486d9a16559e5edbf8c0f6457cc1223}{value\+\_\+type}} = \+\_\+\+Tp} + + + +Definition at line 78 of file array.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{structutl_1_1array_aa7ebc09a296077f0ee23919c92138801}\label{structutl_1_1array_aa7ebc09a296077f0ee23919c92138801}} +\index{utl\+::array@{utl\+::array}!at@{at}} +\index{at@{at}!utl\+::array@{utl\+::array}} +\subsubsection{\texorpdfstring{at()}{at()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +\mbox{\hyperlink{structutl_1_1array_a054dd1ab28d43ec0676dbe2056f63cf4}{reference}} \mbox{\hyperlink{structutl_1_1array}{utl\+::array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::at (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{structutl_1_1array_aab1bf2f35917b742e5d79ddcab335ef5}{size\+\_\+type}}}]{n }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + +Boundary check dereference operator. If out of bounds, abort (for now) + +Definition at line 144 of file array.\+h. + +\mbox{\Hypertarget{structutl_1_1array_a5525bc148cd57fdc41380593a9732ce7}\label{structutl_1_1array_a5525bc148cd57fdc41380593a9732ce7}} +\index{utl\+::array@{utl\+::array}!at@{at}} +\index{at@{at}!utl\+::array@{utl\+::array}} +\subsubsection{\texorpdfstring{at()}{at()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +constexpr \mbox{\hyperlink{structutl_1_1array_aab01825d62c21fcf252a64fbeda2bbc4}{const\+\_\+reference}} \mbox{\hyperlink{structutl_1_1array}{utl\+::array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::at (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{structutl_1_1array_aab1bf2f35917b742e5d79ddcab335ef5}{size\+\_\+type}}}]{n }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Compile time boundary check dereference operator. + + + +Definition at line 151 of file array.\+h. + +\mbox{\Hypertarget{structutl_1_1array_a5cd956a1087ce3652c79b36316f5875b}\label{structutl_1_1array_a5cd956a1087ce3652c79b36316f5875b}} +\index{utl\+::array@{utl\+::array}!back@{back}} +\index{back@{back}!utl\+::array@{utl\+::array}} +\subsubsection{\texorpdfstring{back()}{back()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +\mbox{\hyperlink{structutl_1_1array_a054dd1ab28d43ec0676dbe2056f63cf4}{reference}} \mbox{\hyperlink{structutl_1_1array}{utl\+::array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::back (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 164 of file array.\+h. + +\mbox{\Hypertarget{structutl_1_1array_a4a641f61dda90de1c93d3e62bf587bd3}\label{structutl_1_1array_a4a641f61dda90de1c93d3e62bf587bd3}} +\index{utl\+::array@{utl\+::array}!back@{back}} +\index{back@{back}!utl\+::array@{utl\+::array}} +\subsubsection{\texorpdfstring{back()}{back()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +constexpr \mbox{\hyperlink{structutl_1_1array_aab01825d62c21fcf252a64fbeda2bbc4}{const\+\_\+reference}} \mbox{\hyperlink{structutl_1_1array}{utl\+::array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::back (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 167 of file array.\+h. + +\mbox{\Hypertarget{structutl_1_1array_a4b475a8e3d0c7cc41b251f08aef040f0}\label{structutl_1_1array_a4b475a8e3d0c7cc41b251f08aef040f0}} +\index{utl\+::array@{utl\+::array}!begin@{begin}} +\index{begin@{begin}!utl\+::array@{utl\+::array}} +\subsubsection{\texorpdfstring{begin()}{begin()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +\mbox{\hyperlink{structutl_1_1array_a1cc94e09b75412ad9d7cf636b550ef2d}{iterator}} \mbox{\hyperlink{structutl_1_1array}{utl\+::array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::begin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 107 of file array.\+h. + +\mbox{\Hypertarget{structutl_1_1array_ae72df0eae3b306e0a5410d724665c27a}\label{structutl_1_1array_ae72df0eae3b306e0a5410d724665c27a}} +\index{utl\+::array@{utl\+::array}!begin@{begin}} +\index{begin@{begin}!utl\+::array@{utl\+::array}} +\subsubsection{\texorpdfstring{begin()}{begin()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +\mbox{\hyperlink{structutl_1_1array_ab1b4f132f7babac61535fe1f7634089a}{const\+\_\+iterator}} \mbox{\hyperlink{structutl_1_1array}{utl\+::array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::begin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 108 of file array.\+h. + +\mbox{\Hypertarget{structutl_1_1array_a4b48e7c5d18ca4f48e187a727bad65f1}\label{structutl_1_1array_a4b48e7c5d18ca4f48e187a727bad65f1}} +\index{utl\+::array@{utl\+::array}!cbegin@{cbegin}} +\index{cbegin@{cbegin}!utl\+::array@{utl\+::array}} +\subsubsection{\texorpdfstring{cbegin()}{cbegin()}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +\mbox{\hyperlink{structutl_1_1array_ab1b4f132f7babac61535fe1f7634089a}{const\+\_\+iterator}} \mbox{\hyperlink{structutl_1_1array}{utl\+::array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::cbegin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 111 of file array.\+h. + +\mbox{\Hypertarget{structutl_1_1array_a707a8e620497173544904f3d11324604}\label{structutl_1_1array_a707a8e620497173544904f3d11324604}} +\index{utl\+::array@{utl\+::array}!cend@{cend}} +\index{cend@{cend}!utl\+::array@{utl\+::array}} +\subsubsection{\texorpdfstring{cend()}{cend()}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +\mbox{\hyperlink{structutl_1_1array_ab1b4f132f7babac61535fe1f7634089a}{const\+\_\+iterator}} \mbox{\hyperlink{structutl_1_1array}{utl\+::array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::cend (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 112 of file array.\+h. + +\mbox{\Hypertarget{structutl_1_1array_afdac98eac4c6edc09f478af083029eec}\label{structutl_1_1array_afdac98eac4c6edc09f478af083029eec}} +\index{utl\+::array@{utl\+::array}!crbegin@{crbegin}} +\index{crbegin@{crbegin}!utl\+::array@{utl\+::array}} +\subsubsection{\texorpdfstring{crbegin()}{crbegin()}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +\mbox{\hyperlink{structutl_1_1array_a2870f89643a20193a2fc420476833256}{const\+\_\+reverse\+\_\+iterator}} \mbox{\hyperlink{structutl_1_1array}{utl\+::array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::crbegin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 118 of file array.\+h. + +\mbox{\Hypertarget{structutl_1_1array_abcdc4718426e62fec38c380a4221b144}\label{structutl_1_1array_abcdc4718426e62fec38c380a4221b144}} +\index{utl\+::array@{utl\+::array}!crend@{crend}} +\index{crend@{crend}!utl\+::array@{utl\+::array}} +\subsubsection{\texorpdfstring{crend()}{crend()}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +\mbox{\hyperlink{structutl_1_1array_a2870f89643a20193a2fc420476833256}{const\+\_\+reverse\+\_\+iterator}} \mbox{\hyperlink{structutl_1_1array}{utl\+::array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::crend (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 119 of file array.\+h. + +\mbox{\Hypertarget{structutl_1_1array_a32e4367239fb6fc2f9b0c700ef4e0de6}\label{structutl_1_1array_a32e4367239fb6fc2f9b0c700ef4e0de6}} +\index{utl\+::array@{utl\+::array}!data@{data}} +\index{data@{data}!utl\+::array@{utl\+::array}} +\subsubsection{\texorpdfstring{data()}{data()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +\mbox{\hyperlink{structutl_1_1array_a90f23795637ad96d367bf7d978f7e5e6}{pointer}} \mbox{\hyperlink{structutl_1_1array}{utl\+::array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::data (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 173 of file array.\+h. + +\mbox{\Hypertarget{structutl_1_1array_a07bb0f3b54805d733e97025e68f8bcbc}\label{structutl_1_1array_a07bb0f3b54805d733e97025e68f8bcbc}} +\index{utl\+::array@{utl\+::array}!data@{data}} +\index{data@{data}!utl\+::array@{utl\+::array}} +\subsubsection{\texorpdfstring{data()}{data()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +\mbox{\hyperlink{structutl_1_1array_a61ccd50cead4ae2041fa561b1cf4d79d}{const\+\_\+pointer}} \mbox{\hyperlink{structutl_1_1array}{utl\+::array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::data (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 174 of file array.\+h. + +\mbox{\Hypertarget{structutl_1_1array_ac919fc992acdda9b562f5fc6414552b6}\label{structutl_1_1array_ac919fc992acdda9b562f5fc6414552b6}} +\index{utl\+::array@{utl\+::array}!empty@{empty}} +\index{empty@{empty}!utl\+::array@{utl\+::array}} +\subsubsection{\texorpdfstring{empty()}{empty()}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +constexpr bool \mbox{\hyperlink{structutl_1_1array}{utl\+::array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::empty (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 125 of file array.\+h. + +\mbox{\Hypertarget{structutl_1_1array_a76158e0e9b7c019fe69ead7cd4800522}\label{structutl_1_1array_a76158e0e9b7c019fe69ead7cd4800522}} +\index{utl\+::array@{utl\+::array}!end@{end}} +\index{end@{end}!utl\+::array@{utl\+::array}} +\subsubsection{\texorpdfstring{end()}{end()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +\mbox{\hyperlink{structutl_1_1array_a1cc94e09b75412ad9d7cf636b550ef2d}{iterator}} \mbox{\hyperlink{structutl_1_1array}{utl\+::array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::end (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 109 of file array.\+h. + +\mbox{\Hypertarget{structutl_1_1array_a7a0cf890bc35437821e35484a1fd8fc7}\label{structutl_1_1array_a7a0cf890bc35437821e35484a1fd8fc7}} +\index{utl\+::array@{utl\+::array}!end@{end}} +\index{end@{end}!utl\+::array@{utl\+::array}} +\subsubsection{\texorpdfstring{end()}{end()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +\mbox{\hyperlink{structutl_1_1array_ab1b4f132f7babac61535fe1f7634089a}{const\+\_\+iterator}} \mbox{\hyperlink{structutl_1_1array}{utl\+::array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::end (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 110 of file array.\+h. + +\mbox{\Hypertarget{structutl_1_1array_a388a40a3a4450a562010859ef2286587}\label{structutl_1_1array_a388a40a3a4450a562010859ef2286587}} +\index{utl\+::array@{utl\+::array}!fill@{fill}} +\index{fill@{fill}!utl\+::array@{utl\+::array}} +\subsubsection{\texorpdfstring{fill()}{fill()}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +void \mbox{\hyperlink{structutl_1_1array}{utl\+::array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::fill (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structutl_1_1array_a2486d9a16559e5edbf8c0f6457cc1223}{value\+\_\+type}} \&}]{v }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 99 of file array.\+h. + +\mbox{\Hypertarget{structutl_1_1array_a3f325450d5240f982b2b712d72f9a411}\label{structutl_1_1array_a3f325450d5240f982b2b712d72f9a411}} +\index{utl\+::array@{utl\+::array}!front@{front}} +\index{front@{front}!utl\+::array@{utl\+::array}} +\subsubsection{\texorpdfstring{front()}{front()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +\mbox{\hyperlink{structutl_1_1array_a054dd1ab28d43ec0676dbe2056f63cf4}{reference}} \mbox{\hyperlink{structutl_1_1array}{utl\+::array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::front (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 156 of file array.\+h. + +\mbox{\Hypertarget{structutl_1_1array_a055c38b4345d1aa5bb8cc9172887165c}\label{structutl_1_1array_a055c38b4345d1aa5bb8cc9172887165c}} +\index{utl\+::array@{utl\+::array}!front@{front}} +\index{front@{front}!utl\+::array@{utl\+::array}} +\subsubsection{\texorpdfstring{front()}{front()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +constexpr \mbox{\hyperlink{structutl_1_1array_aab01825d62c21fcf252a64fbeda2bbc4}{const\+\_\+reference}} \mbox{\hyperlink{structutl_1_1array}{utl\+::array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::front (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 159 of file array.\+h. + +\mbox{\Hypertarget{structutl_1_1array_ae9145a3585ab42ad57d232863f0445dc}\label{structutl_1_1array_ae9145a3585ab42ad57d232863f0445dc}} +\index{utl\+::array@{utl\+::array}!max\+\_\+size@{max\+\_\+size}} +\index{max\+\_\+size@{max\+\_\+size}!utl\+::array@{utl\+::array}} +\subsubsection{\texorpdfstring{max\+\_\+size()}{max\_size()}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +constexpr \mbox{\hyperlink{structutl_1_1array_aab1bf2f35917b742e5d79ddcab335ef5}{size\+\_\+type}} \mbox{\hyperlink{structutl_1_1array}{utl\+::array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::max\+\_\+size (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 124 of file array.\+h. + +\mbox{\Hypertarget{structutl_1_1array_a63373518cc6efade8c555ee1ebc1f754}\label{structutl_1_1array_a63373518cc6efade8c555ee1ebc1f754}} +\index{utl\+::array@{utl\+::array}!operator\mbox{[}\mbox{]}@{operator[]}} +\index{operator\mbox{[}\mbox{]}@{operator[]}!utl\+::array@{utl\+::array}} +\subsubsection{\texorpdfstring{operator[]()}{operator[]()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +\mbox{\hyperlink{structutl_1_1array_a054dd1ab28d43ec0676dbe2056f63cf4}{reference}} \mbox{\hyperlink{structutl_1_1array}{utl\+::array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::operator\mbox{[}$\,$\mbox{]} (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{structutl_1_1array_aab1bf2f35917b742e5d79ddcab335ef5}{size\+\_\+type}}}]{n }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Operator \mbox{[}\mbox{]}. + + + +Definition at line 132 of file array.\+h. + +\mbox{\Hypertarget{structutl_1_1array_a4f91b2d8e9f4c2365d4d58cf1657ac95}\label{structutl_1_1array_a4f91b2d8e9f4c2365d4d58cf1657ac95}} +\index{utl\+::array@{utl\+::array}!operator\mbox{[}\mbox{]}@{operator[]}} +\index{operator\mbox{[}\mbox{]}@{operator[]}!utl\+::array@{utl\+::array}} +\subsubsection{\texorpdfstring{operator[]()}{operator[]()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +constexpr \mbox{\hyperlink{structutl_1_1array_aab01825d62c21fcf252a64fbeda2bbc4}{const\+\_\+reference}} \mbox{\hyperlink{structutl_1_1array}{utl\+::array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::operator\mbox{[}$\,$\mbox{]} (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{structutl_1_1array_aab1bf2f35917b742e5d79ddcab335ef5}{size\+\_\+type}}}]{n }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Operator \mbox{[}\mbox{]} for const. + + + +Definition at line 136 of file array.\+h. + +\mbox{\Hypertarget{structutl_1_1array_aeeca6bc1e57a142c30590d3c7dc134a5}\label{structutl_1_1array_aeeca6bc1e57a142c30590d3c7dc134a5}} +\index{utl\+::array@{utl\+::array}!rbegin@{rbegin}} +\index{rbegin@{rbegin}!utl\+::array@{utl\+::array}} +\subsubsection{\texorpdfstring{rbegin()}{rbegin()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +\mbox{\hyperlink{structutl_1_1array_a777805d325ff4de41bdf0c81427a42d1}{reverse\+\_\+iterator}} \mbox{\hyperlink{structutl_1_1array}{utl\+::array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::rbegin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 114 of file array.\+h. + +\mbox{\Hypertarget{structutl_1_1array_a921a4f2e174c274f26189f89d38187ca}\label{structutl_1_1array_a921a4f2e174c274f26189f89d38187ca}} +\index{utl\+::array@{utl\+::array}!rbegin@{rbegin}} +\index{rbegin@{rbegin}!utl\+::array@{utl\+::array}} +\subsubsection{\texorpdfstring{rbegin()}{rbegin()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +\mbox{\hyperlink{structutl_1_1array_a2870f89643a20193a2fc420476833256}{const\+\_\+reverse\+\_\+iterator}} \mbox{\hyperlink{structutl_1_1array}{utl\+::array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::rbegin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 116 of file array.\+h. + +\mbox{\Hypertarget{structutl_1_1array_a322f008d90c279fc4170d3ae679d13ea}\label{structutl_1_1array_a322f008d90c279fc4170d3ae679d13ea}} +\index{utl\+::array@{utl\+::array}!rend@{rend}} +\index{rend@{rend}!utl\+::array@{utl\+::array}} +\subsubsection{\texorpdfstring{rend()}{rend()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +\mbox{\hyperlink{structutl_1_1array_a777805d325ff4de41bdf0c81427a42d1}{reverse\+\_\+iterator}} \mbox{\hyperlink{structutl_1_1array}{utl\+::array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::rend (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 115 of file array.\+h. + +\mbox{\Hypertarget{structutl_1_1array_ac46fe45806b4328b6bed1fb1313818a2}\label{structutl_1_1array_ac46fe45806b4328b6bed1fb1313818a2}} +\index{utl\+::array@{utl\+::array}!rend@{rend}} +\index{rend@{rend}!utl\+::array@{utl\+::array}} +\subsubsection{\texorpdfstring{rend()}{rend()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +\mbox{\hyperlink{structutl_1_1array_a2870f89643a20193a2fc420476833256}{const\+\_\+reverse\+\_\+iterator}} \mbox{\hyperlink{structutl_1_1array}{utl\+::array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::rend (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 117 of file array.\+h. + +\mbox{\Hypertarget{structutl_1_1array_ab3fa3ca8c774c210a55dbd699ceb345b}\label{structutl_1_1array_ab3fa3ca8c774c210a55dbd699ceb345b}} +\index{utl\+::array@{utl\+::array}!size@{size}} +\index{size@{size}!utl\+::array@{utl\+::array}} +\subsubsection{\texorpdfstring{size()}{size()}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +constexpr \mbox{\hyperlink{structutl_1_1array_aab1bf2f35917b742e5d79ddcab335ef5}{size\+\_\+type}} \mbox{\hyperlink{structutl_1_1array}{utl\+::array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::size (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 123 of file array.\+h. + +\mbox{\Hypertarget{structutl_1_1array_a437559d71769318cc7289dce06659c39}\label{structutl_1_1array_a437559d71769318cc7289dce06659c39}} +\index{utl\+::array@{utl\+::array}!swap@{swap}} +\index{swap@{swap}!utl\+::array@{utl\+::array}} +\subsubsection{\texorpdfstring{swap()}{swap()}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +void \mbox{\hyperlink{structutl_1_1array}{utl\+::array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::swap (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{structutl_1_1array}{array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&}]{other }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 101 of file array.\+h. + + + +\subsection{Member Data Documentation} +\mbox{\Hypertarget{structutl_1_1array_a3c49a8073abb7072f4b902982789dedc}\label{structutl_1_1array_a3c49a8073abb7072f4b902982789dedc}} +\index{utl\+::array@{utl\+::array}!\+\_\+data@{\+\_\+data}} +\index{\+\_\+data@{\+\_\+data}!utl\+::array@{utl\+::array}} +\subsubsection{\texorpdfstring{\+\_\+data}{\_data}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +\mbox{\hyperlink{structutl_1_1array__traits_a297f692ae07fd5c9b02a989fe5736909}{array\+\_\+t\+::type}} \mbox{\hyperlink{structutl_1_1array}{utl\+::array}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::\+\_\+data} + + + +Definition at line 94 of file array.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/container/\mbox{\hyperlink{array_8h}{array.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1array__traits.tex b/doc/latex/structutl_1_1array__traits.tex new file mode 100644 index 0000000..029de97 --- /dev/null +++ b/doc/latex/structutl_1_1array__traits.tex @@ -0,0 +1,77 @@ +\hypertarget{structutl_1_1array__traits}{}\section{utl\+:\+:array\+\_\+traits$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ Struct Template Reference} +\label{structutl_1_1array__traits}\index{utl\+::array\+\_\+traits$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$@{utl\+::array\+\_\+traits$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$}} + + +array container traits helper + + + + +{\ttfamily \#include $<$array.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +typedef \+\_\+\+Tp \mbox{\hyperlink{structutl_1_1array__traits_a297f692ae07fd5c9b02a989fe5736909}{type}}\mbox{[}\+\_\+\+Nm\mbox{]} +\end{DoxyCompactItemize} +\subsection*{Static Public Member Functions} +\begin{DoxyCompactItemize} +\item +static constexpr \+\_\+\+Tp \& \mbox{\hyperlink{structutl_1_1array__traits_a7a759b20a4dc743a66c3b1729358f605}{Ref}} (const \mbox{\hyperlink{structutl_1_1array__traits_a297f692ae07fd5c9b02a989fe5736909}{type}} \&t, \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} n) noexcept +\item +static constexpr \+\_\+\+Tp $\ast$ \mbox{\hyperlink{structutl_1_1array__traits_ac642d673d85d054616bb143326a9ea79}{Ptr}} (const \mbox{\hyperlink{structutl_1_1array__traits_a297f692ae07fd5c9b02a989fe5736909}{type}} \&t) noexcept +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$\newline +struct utl\+::array\+\_\+traits$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$} + +array container traits helper + +Definition at line 36 of file array.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1array__traits_a297f692ae07fd5c9b02a989fe5736909}\label{structutl_1_1array__traits_a297f692ae07fd5c9b02a989fe5736909}} +\index{utl\+::array\+\_\+traits@{utl\+::array\+\_\+traits}!type@{type}} +\index{type@{type}!utl\+::array\+\_\+traits@{utl\+::array\+\_\+traits}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp , size\+\_\+t \+\_\+\+Nm$>$ \\ +typedef \+\_\+\+Tp \mbox{\hyperlink{structutl_1_1array__traits}{utl\+::array\+\_\+traits}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::type\mbox{[}\+\_\+\+Nm\mbox{]}} + + + +Definition at line 37 of file array.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{structutl_1_1array__traits_ac642d673d85d054616bb143326a9ea79}\label{structutl_1_1array__traits_ac642d673d85d054616bb143326a9ea79}} +\index{utl\+::array\+\_\+traits@{utl\+::array\+\_\+traits}!Ptr@{Ptr}} +\index{Ptr@{Ptr}!utl\+::array\+\_\+traits@{utl\+::array\+\_\+traits}} +\subsubsection{\texorpdfstring{Ptr()}{Ptr()}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp , size\+\_\+t \+\_\+\+Nm$>$ \\ +static constexpr \+\_\+\+Tp$\ast$ \mbox{\hyperlink{structutl_1_1array__traits}{utl\+::array\+\_\+traits}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::Ptr (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structutl_1_1array__traits_a297f692ae07fd5c9b02a989fe5736909}{type}} \&}]{t }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}, {\ttfamily [noexcept]}} + + + +Definition at line 43 of file array.\+h. + +\mbox{\Hypertarget{structutl_1_1array__traits_a7a759b20a4dc743a66c3b1729358f605}\label{structutl_1_1array__traits_a7a759b20a4dc743a66c3b1729358f605}} +\index{utl\+::array\+\_\+traits@{utl\+::array\+\_\+traits}!Ref@{Ref}} +\index{Ref@{Ref}!utl\+::array\+\_\+traits@{utl\+::array\+\_\+traits}} +\subsubsection{\texorpdfstring{Ref()}{Ref()}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp , size\+\_\+t \+\_\+\+Nm$>$ \\ +static constexpr \+\_\+\+Tp\& \mbox{\hyperlink{structutl_1_1array__traits}{utl\+::array\+\_\+traits}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::Ref (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structutl_1_1array__traits_a297f692ae07fd5c9b02a989fe5736909}{type}} \&}]{t, }\item[{\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}}}]{n }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}, {\ttfamily [noexcept]}} + + + +Definition at line 39 of file array.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/container/\mbox{\hyperlink{array_8h}{array.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1array__traits_3_01___tp_00_010_01_4.tex b/doc/latex/structutl_1_1array__traits_3_01___tp_00_010_01_4.tex new file mode 100644 index 0000000..e966d6b --- /dev/null +++ b/doc/latex/structutl_1_1array__traits_3_01___tp_00_010_01_4.tex @@ -0,0 +1,58 @@ +\hypertarget{structutl_1_1array__traits_3_01___tp_00_010_01_4}{}\section{utl\+:\+:array\+\_\+traits$<$ \+\_\+\+Tp, 0 $>$ Struct Template Reference} +\label{structutl_1_1array__traits_3_01___tp_00_010_01_4}\index{utl\+::array\+\_\+traits$<$ \+\_\+\+Tp, 0 $>$@{utl\+::array\+\_\+traits$<$ \+\_\+\+Tp, 0 $>$}} + + +{\ttfamily \#include $<$array.\+h$>$} + +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structutl_1_1array__traits_3_01___tp_00_010_01_4_1_1type}{type}} +\end{DoxyCompactItemize} +\subsection*{Static Public Member Functions} +\begin{DoxyCompactItemize} +\item +static constexpr \+\_\+\+Tp \& \mbox{\hyperlink{structutl_1_1array__traits_3_01___tp_00_010_01_4_a3f90cb0fbb870fcc36fc6d404857032b}{Ref}} (const type \&, \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}}) noexcept +\item +static constexpr \+\_\+\+Tp $\ast$ \mbox{\hyperlink{structutl_1_1array__traits_3_01___tp_00_010_01_4_ad5f207688e873862870d58889b2e5fec}{Ptr}} (const type \&) noexcept +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename \+\_\+\+Tp$>$\newline +struct utl\+::array\+\_\+traits$<$ \+\_\+\+Tp, 0 $>$} + + + +Definition at line 49 of file array.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{structutl_1_1array__traits_3_01___tp_00_010_01_4_ad5f207688e873862870d58889b2e5fec}\label{structutl_1_1array__traits_3_01___tp_00_010_01_4_ad5f207688e873862870d58889b2e5fec}} +\index{utl\+::array\+\_\+traits$<$ \+\_\+\+Tp, 0 $>$@{utl\+::array\+\_\+traits$<$ \+\_\+\+Tp, 0 $>$}!Ptr@{Ptr}} +\index{Ptr@{Ptr}!utl\+::array\+\_\+traits$<$ \+\_\+\+Tp, 0 $>$@{utl\+::array\+\_\+traits$<$ \+\_\+\+Tp, 0 $>$}} +\subsubsection{\texorpdfstring{Ptr()}{Ptr()}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp $>$ \\ +static constexpr \+\_\+\+Tp$\ast$ \mbox{\hyperlink{structutl_1_1array__traits}{utl\+::array\+\_\+traits}}$<$ \+\_\+\+Tp, 0 $>$\+::Ptr (\begin{DoxyParamCaption}\item[{const type \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}, {\ttfamily [noexcept]}} + + + +Definition at line 56 of file array.\+h. + +\mbox{\Hypertarget{structutl_1_1array__traits_3_01___tp_00_010_01_4_a3f90cb0fbb870fcc36fc6d404857032b}\label{structutl_1_1array__traits_3_01___tp_00_010_01_4_a3f90cb0fbb870fcc36fc6d404857032b}} +\index{utl\+::array\+\_\+traits$<$ \+\_\+\+Tp, 0 $>$@{utl\+::array\+\_\+traits$<$ \+\_\+\+Tp, 0 $>$}!Ref@{Ref}} +\index{Ref@{Ref}!utl\+::array\+\_\+traits$<$ \+\_\+\+Tp, 0 $>$@{utl\+::array\+\_\+traits$<$ \+\_\+\+Tp, 0 $>$}} +\subsubsection{\texorpdfstring{Ref()}{Ref()}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp $>$ \\ +static constexpr \+\_\+\+Tp\& \mbox{\hyperlink{structutl_1_1array__traits}{utl\+::array\+\_\+traits}}$<$ \+\_\+\+Tp, 0 $>$\+::Ref (\begin{DoxyParamCaption}\item[{const type \&}]{, }\item[{\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}}}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}, {\ttfamily [noexcept]}} + + + +Definition at line 52 of file array.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/container/\mbox{\hyperlink{array_8h}{array.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1array__traits_3_01___tp_00_010_01_4_1_1type.tex b/doc/latex/structutl_1_1array__traits_3_01___tp_00_010_01_4_1_1type.tex new file mode 100644 index 0000000..3309a0b --- /dev/null +++ b/doc/latex/structutl_1_1array__traits_3_01___tp_00_010_01_4_1_1type.tex @@ -0,0 +1,21 @@ +\hypertarget{structutl_1_1array__traits_3_01___tp_00_010_01_4_1_1type}{}\section{utl\+:\+:array\+\_\+traits$<$ \+\_\+\+Tp, 0 $>$\+:\+:type Struct Reference} +\label{structutl_1_1array__traits_3_01___tp_00_010_01_4_1_1type}\index{utl\+::array\+\_\+traits$<$ \+\_\+\+Tp, 0 $>$\+::type@{utl\+::array\+\_\+traits$<$ \+\_\+\+Tp, 0 $>$\+::type}} + + +{\ttfamily \#include $<$array.\+h$>$} + + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename \+\_\+\+Tp$>$\newline +struct utl\+::array\+\_\+traits$<$ \+\_\+\+Tp, 0 $>$\+::type} + + + +Definition at line 50 of file array.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/container/\mbox{\hyperlink{array_8h}{array.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1bidirectional__iterator__tag.eps b/doc/latex/structutl_1_1bidirectional__iterator__tag.eps new file mode 100644 index 0000000..42443c5 --- /dev/null +++ b/doc/latex/structutl_1_1bidirectional__iterator__tag.eps @@ -0,0 +1,215 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 502.512563 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 0.995000 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 5 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::bidirectional_iterator_tag) cw +(utl::forward_iterator_tag) cw +(utl::input_iterator_tag) cw +(utl::random_access_iterator_tag) cw +(utl::contiguous_iterator_tag) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::bidirectional_iterator_tag) 0.000000 2.000000 box + (utl::forward_iterator_tag) 0.000000 3.000000 box + (utl::input_iterator_tag) 0.000000 4.000000 box + (utl::random_access_iterator_tag) 0.000000 1.000000 box + (utl::contiguous_iterator_tag) 0.000000 0.000000 box + +% ----- relations ----- + +solid +0 0.000000 2.000000 out +solid +1 0.000000 3.000000 in +solid +0 0.000000 3.000000 out +solid +1 0.000000 4.000000 in +solid +1 0.000000 1.250000 out +solid +0 0.000000 1.750000 in +solid +1 0.000000 0.250000 out +solid +0 0.000000 0.750000 in diff --git a/doc/latex/structutl_1_1bidirectional__iterator__tag.tex b/doc/latex/structutl_1_1bidirectional__iterator__tag.tex new file mode 100644 index 0000000..eb28785 --- /dev/null +++ b/doc/latex/structutl_1_1bidirectional__iterator__tag.tex @@ -0,0 +1,24 @@ +\hypertarget{structutl_1_1bidirectional__iterator__tag}{}\section{utl\+:\+:bidirectional\+\_\+iterator\+\_\+tag Struct Reference} +\label{structutl_1_1bidirectional__iterator__tag}\index{utl\+::bidirectional\+\_\+iterator\+\_\+tag@{utl\+::bidirectional\+\_\+iterator\+\_\+tag}} + + +{\ttfamily \#include $<$dev\+\_\+iterators.\+h$>$} + +Inheritance diagram for utl\+:\+:bidirectional\+\_\+iterator\+\_\+tag\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=5.000000cm]{structutl_1_1bidirectional__iterator__tag} +\end{center} +\end{figure} + + +\subsection{Detailed Description} + + +Definition at line 58 of file dev\+\_\+iterators.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/dev/\mbox{\hyperlink{dev__iterators_8h}{dev\+\_\+iterators.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1common__impl_1_1____common__ref__.tex b/doc/latex/structutl_1_1common__impl_1_1____common__ref__.tex new file mode 100644 index 0000000..5ed2852 --- /dev/null +++ b/doc/latex/structutl_1_1common__impl_1_1____common__ref__.tex @@ -0,0 +1,21 @@ +\hypertarget{structutl_1_1common__impl_1_1____common__ref__}{}\section{utl\+:\+:common\+\_\+impl\+:\+:\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T, U, class $>$ Struct Template Reference} +\label{structutl_1_1common__impl_1_1____common__ref__}\index{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T, U, class $>$@{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T, U, class $>$}} + + +{\ttfamily \#include $<$stl.\+h$>$} + + + +\subsection{Detailed Description} +\subsubsection*{template$<$class T, class U, class = void$>$\newline +struct utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T, U, class $>$} + + + +Definition at line 127 of file stl.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/concepts/\mbox{\hyperlink{stl_8h}{stl.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_00_01meta_1_1void__t_3_05e5aa384829bb34312a7b8ee4ecaa00f.tex b/doc/latex/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_00_01meta_1_1void__t_3_05e5aa384829bb34312a7b8ee4ecaa00f.tex new file mode 100644 index 0000000..406a223 --- /dev/null +++ b/doc/latex/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_00_01meta_1_1void__t_3_05e5aa384829bb34312a7b8ee4ecaa00f.tex @@ -0,0 +1,40 @@ +\hypertarget{structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_00_01meta_1_1void__t_3_05e5aa384829bb34312a7b8ee4ecaa00f}{}\section{utl\+:\+:common\+\_\+impl\+:\+:\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T \&, U \&, meta\+:\+:void\+\_\+t$<$ \+\_\+\+\_\+lref\+\_\+res$<$ T, U $>$, meta\+:\+:when$<$ std\+:\+:is\+\_\+reference$<$ \+\_\+\+\_\+lref\+\_\+res$<$ T, U $>$ $>$\+:\+:value $>$ $>$ $>$ Struct Template Reference} +\label{structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_00_01meta_1_1void__t_3_05e5aa384829bb34312a7b8ee4ecaa00f}\index{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T \&, U \&, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+lref\+\_\+res$<$ T, U $>$, meta\+::when$<$ std\+::is\+\_\+reference$<$ \+\_\+\+\_\+lref\+\_\+res$<$ T, U $>$ $>$\+::value $>$ $>$ $>$@{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T \&, U \&, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+lref\+\_\+res$<$ T, U $>$, meta\+::when$<$ std\+::is\+\_\+reference$<$ \+\_\+\+\_\+lref\+\_\+res$<$ T, U $>$ $>$\+::value $>$ $>$ $>$}} + + +{\ttfamily \#include $<$stl.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_00_01meta_1_1void__t_3_05e5aa384829bb34312a7b8ee4ecaa00f_a9818dd472dbf7e5819a37c772d0566d2}{type}} = \mbox{\hyperlink{namespaceutl_1_1common__impl_ae2f3d56c7e5144e099cdf37b19523290}{\+\_\+\+\_\+lref\+\_\+res}}$<$ T, U $>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class T, class U$>$\newline +struct utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T \&, U \&, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+lref\+\_\+res$<$ T, U $>$, meta\+::when$<$ std\+::is\+\_\+reference$<$ \+\_\+\+\_\+lref\+\_\+res$<$ T, U $>$ $>$\+::value $>$ $>$ $>$} + + + +Definition at line 147 of file stl.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_00_01meta_1_1void__t_3_05e5aa384829bb34312a7b8ee4ecaa00f_a9818dd472dbf7e5819a37c772d0566d2}\label{structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_00_01meta_1_1void__t_3_05e5aa384829bb34312a7b8ee4ecaa00f_a9818dd472dbf7e5819a37c772d0566d2}} +\index{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T \&, U \&, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+lref\+\_\+res$<$ T, U $>$, meta\+::when$<$ std\+::is\+\_\+reference$<$ \+\_\+\+\_\+lref\+\_\+res$<$ T, U $>$ $>$\+::value $>$ $>$ $>$@{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T \&, U \&, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+lref\+\_\+res$<$ T, U $>$, meta\+::when$<$ std\+::is\+\_\+reference$<$ \+\_\+\+\_\+lref\+\_\+res$<$ T, U $>$ $>$\+::value $>$ $>$ $>$}!type@{type}} +\index{type@{type}!utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T \&, U \&, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+lref\+\_\+res$<$ T, U $>$, meta\+::when$<$ std\+::is\+\_\+reference$<$ \+\_\+\+\_\+lref\+\_\+res$<$ T, U $>$ $>$\+::value $>$ $>$ $>$@{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T \&, U \&, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+lref\+\_\+res$<$ T, U $>$, meta\+::when$<$ std\+::is\+\_\+reference$<$ \+\_\+\+\_\+lref\+\_\+res$<$ T, U $>$ $>$\+::value $>$ $>$ $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$class T , class U $>$ \\ +using \mbox{\hyperlink{structutl_1_1common__impl_1_1____common__ref__}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+ref\+\_\+}}$<$ T \&, U \&, \mbox{\hyperlink{group__detection_gae7373c997420d16cf37e542eb3cfa3ad}{meta\+::void\+\_\+t}}$<$ \mbox{\hyperlink{namespaceutl_1_1common__impl_ae2f3d56c7e5144e099cdf37b19523290}{\+\_\+\+\_\+lref\+\_\+res}}$<$ T, U $>$, \mbox{\hyperlink{namespaceutl_1_1meta_a181d79db46b10170529e85b907ed3dc7}{meta\+::when}}$<$ std\+::is\+\_\+reference$<$ \mbox{\hyperlink{namespaceutl_1_1common__impl_ae2f3d56c7e5144e099cdf37b19523290}{\+\_\+\+\_\+lref\+\_\+res}}$<$ T, U $>$ $>$\+::value $>$ $>$ $>$\+::\mbox{\hyperlink{structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_00_01meta_1_1void__t_3_05e5aa384829bb34312a7b8ee4ecaa00f_a9818dd472dbf7e5819a37c772d0566d2}{type}} = \mbox{\hyperlink{namespaceutl_1_1common__impl_ae2f3d56c7e5144e099cdf37b19523290}{\+\_\+\+\_\+lref\+\_\+res}}$<$T, U$>$} + + + +Definition at line 150 of file stl.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/concepts/\mbox{\hyperlink{stl_8h}{stl.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_6_00_01meta_1_1void__t_329fba5aeac3b93aa9cfa5aa7e282e196.tex b/doc/latex/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_6_00_01meta_1_1void__t_329fba5aeac3b93aa9cfa5aa7e282e196.tex new file mode 100644 index 0000000..cb7dc85 --- /dev/null +++ b/doc/latex/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_6_00_01meta_1_1void__t_329fba5aeac3b93aa9cfa5aa7e282e196.tex @@ -0,0 +1,40 @@ +\hypertarget{structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_6_00_01meta_1_1void__t_329fba5aeac3b93aa9cfa5aa7e282e196}{}\section{utl\+:\+:common\+\_\+impl\+:\+:\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T \&, U \&\&, meta\+:\+:void\+\_\+t$<$ \+\_\+\+\_\+common\+\_\+ref$<$ T \&, const U \& $>$, meta\+:\+:when$<$ Convertible\+To$<$ U \&\&, \+\_\+\+\_\+common\+\_\+ref$<$ T \&, const U \& $>$ $>$ $>$ $>$ $>$ Struct Template Reference} +\label{structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_6_00_01meta_1_1void__t_329fba5aeac3b93aa9cfa5aa7e282e196}\index{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T \&, U \&\&, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+common\+\_\+ref$<$ T \&, const U \& $>$, meta\+::when$<$ Convertible\+To$<$ U \&\&, \+\_\+\+\_\+common\+\_\+ref$<$ T \&, const U \& $>$ $>$ $>$ $>$ $>$@{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T \&, U \&\&, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+common\+\_\+ref$<$ T \&, const U \& $>$, meta\+::when$<$ Convertible\+To$<$ U \&\&, \+\_\+\+\_\+common\+\_\+ref$<$ T \&, const U \& $>$ $>$ $>$ $>$ $>$}} + + +{\ttfamily \#include $<$stl.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_6_00_01meta_1_1void__t_329fba5aeac3b93aa9cfa5aa7e282e196_a382d2ef7e9cf4cba7efe589969b64b07}{type}} = \mbox{\hyperlink{namespaceutl_1_1common__impl_a8913f9d610ed8720c817081662fa9f1f}{\+\_\+\+\_\+common\+\_\+ref}}$<$ T \&, const U \& $>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class T, class U$>$\newline +struct utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T \&, U \&\&, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+common\+\_\+ref$<$ T \&, const U \& $>$, meta\+::when$<$ Convertible\+To$<$ U \&\&, \+\_\+\+\_\+common\+\_\+ref$<$ T \&, const U \& $>$ $>$ $>$ $>$ $>$} + + + +Definition at line 171 of file stl.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_6_00_01meta_1_1void__t_329fba5aeac3b93aa9cfa5aa7e282e196_a382d2ef7e9cf4cba7efe589969b64b07}\label{structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_6_00_01meta_1_1void__t_329fba5aeac3b93aa9cfa5aa7e282e196_a382d2ef7e9cf4cba7efe589969b64b07}} +\index{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T \&, U \&\&, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+common\+\_\+ref$<$ T \&, const U \& $>$, meta\+::when$<$ Convertible\+To$<$ U \&\&, \+\_\+\+\_\+common\+\_\+ref$<$ T \&, const U \& $>$ $>$ $>$ $>$ $>$@{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T \&, U \&\&, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+common\+\_\+ref$<$ T \&, const U \& $>$, meta\+::when$<$ Convertible\+To$<$ U \&\&, \+\_\+\+\_\+common\+\_\+ref$<$ T \&, const U \& $>$ $>$ $>$ $>$ $>$}!type@{type}} +\index{type@{type}!utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T \&, U \&\&, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+common\+\_\+ref$<$ T \&, const U \& $>$, meta\+::when$<$ Convertible\+To$<$ U \&\&, \+\_\+\+\_\+common\+\_\+ref$<$ T \&, const U \& $>$ $>$ $>$ $>$ $>$@{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T \&, U \&\&, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+common\+\_\+ref$<$ T \&, const U \& $>$, meta\+::when$<$ Convertible\+To$<$ U \&\&, \+\_\+\+\_\+common\+\_\+ref$<$ T \&, const U \& $>$ $>$ $>$ $>$ $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$class T , class U $>$ \\ +using \mbox{\hyperlink{structutl_1_1common__impl_1_1____common__ref__}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+ref\+\_\+}}$<$ T \&, U \&\&, \mbox{\hyperlink{group__detection_gae7373c997420d16cf37e542eb3cfa3ad}{meta\+::void\+\_\+t}}$<$ \mbox{\hyperlink{namespaceutl_1_1common__impl_a8913f9d610ed8720c817081662fa9f1f}{\+\_\+\+\_\+common\+\_\+ref}}$<$ T \&, const U \& $>$, \mbox{\hyperlink{namespaceutl_1_1meta_a181d79db46b10170529e85b907ed3dc7}{meta\+::when}}$<$ \mbox{\hyperlink{namespaceutl_a9c88a03a5b6dd66200e86f98fb1eb9eb}{Convertible\+To}}$<$ U \&\&, \mbox{\hyperlink{namespaceutl_1_1common__impl_a8913f9d610ed8720c817081662fa9f1f}{\+\_\+\+\_\+common\+\_\+ref}}$<$ T \&, const U \& $>$ $>$ $>$ $>$ $>$\+::\mbox{\hyperlink{structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_00_01_u_01_6_6_00_01meta_1_1void__t_329fba5aeac3b93aa9cfa5aa7e282e196_a382d2ef7e9cf4cba7efe589969b64b07}{type}} = \mbox{\hyperlink{namespaceutl_1_1common__impl_a8913f9d610ed8720c817081662fa9f1f}{\+\_\+\+\_\+common\+\_\+ref}}$<$T\&, const U\&$>$} + + + +Definition at line 174 of file stl.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/concepts/\mbox{\hyperlink{stl_8h}{stl.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_00_01meta_1_1void__t_3972a8d6e6799b6ee6537c969cdced343.tex b/doc/latex/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_00_01meta_1_1void__t_3972a8d6e6799b6ee6537c969cdced343.tex new file mode 100644 index 0000000..1eb0408 --- /dev/null +++ b/doc/latex/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_00_01meta_1_1void__t_3972a8d6e6799b6ee6537c969cdced343.tex @@ -0,0 +1,40 @@ +\hypertarget{structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_00_01meta_1_1void__t_3972a8d6e6799b6ee6537c969cdced343}{}\section{utl\+:\+:common\+\_\+impl\+:\+:\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T \&\&, U \&, meta\+:\+:void\+\_\+t$<$ \+\_\+\+\_\+common\+\_\+ref$<$ const T \&, U \& $>$, meta\+:\+:when$<$ Convertible\+To$<$ T \&\&, \+\_\+\+\_\+common\+\_\+ref$<$ const T \&, U \& $>$ $>$ $>$ $>$ $>$ Struct Template Reference} +\label{structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_00_01meta_1_1void__t_3972a8d6e6799b6ee6537c969cdced343}\index{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T \&\&, U \&, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+common\+\_\+ref$<$ const T \&, U \& $>$, meta\+::when$<$ Convertible\+To$<$ T \&\&, \+\_\+\+\_\+common\+\_\+ref$<$ const T \&, U \& $>$ $>$ $>$ $>$ $>$@{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T \&\&, U \&, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+common\+\_\+ref$<$ const T \&, U \& $>$, meta\+::when$<$ Convertible\+To$<$ T \&\&, \+\_\+\+\_\+common\+\_\+ref$<$ const T \&, U \& $>$ $>$ $>$ $>$ $>$}} + + +{\ttfamily \#include $<$stl.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_00_01meta_1_1void__t_3972a8d6e6799b6ee6537c969cdced343_ade0c54407b6f17f667c01eec748c7e14}{type}} = \mbox{\hyperlink{namespaceutl_1_1common__impl_a8913f9d610ed8720c817081662fa9f1f}{\+\_\+\+\_\+common\+\_\+ref}}$<$ const T \&, U \& $>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class T, class U$>$\newline +struct utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T \&\&, U \&, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+common\+\_\+ref$<$ const T \&, U \& $>$, meta\+::when$<$ Convertible\+To$<$ T \&\&, \+\_\+\+\_\+common\+\_\+ref$<$ const T \&, U \& $>$ $>$ $>$ $>$ $>$} + + + +Definition at line 163 of file stl.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_00_01meta_1_1void__t_3972a8d6e6799b6ee6537c969cdced343_ade0c54407b6f17f667c01eec748c7e14}\label{structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_00_01meta_1_1void__t_3972a8d6e6799b6ee6537c969cdced343_ade0c54407b6f17f667c01eec748c7e14}} +\index{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T \&\&, U \&, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+common\+\_\+ref$<$ const T \&, U \& $>$, meta\+::when$<$ Convertible\+To$<$ T \&\&, \+\_\+\+\_\+common\+\_\+ref$<$ const T \&, U \& $>$ $>$ $>$ $>$ $>$@{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T \&\&, U \&, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+common\+\_\+ref$<$ const T \&, U \& $>$, meta\+::when$<$ Convertible\+To$<$ T \&\&, \+\_\+\+\_\+common\+\_\+ref$<$ const T \&, U \& $>$ $>$ $>$ $>$ $>$}!type@{type}} +\index{type@{type}!utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T \&\&, U \&, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+common\+\_\+ref$<$ const T \&, U \& $>$, meta\+::when$<$ Convertible\+To$<$ T \&\&, \+\_\+\+\_\+common\+\_\+ref$<$ const T \&, U \& $>$ $>$ $>$ $>$ $>$@{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T \&\&, U \&, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+common\+\_\+ref$<$ const T \&, U \& $>$, meta\+::when$<$ Convertible\+To$<$ T \&\&, \+\_\+\+\_\+common\+\_\+ref$<$ const T \&, U \& $>$ $>$ $>$ $>$ $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$class T , class U $>$ \\ +using \mbox{\hyperlink{structutl_1_1common__impl_1_1____common__ref__}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+ref\+\_\+}}$<$ T \&\&, U \&, \mbox{\hyperlink{group__detection_gae7373c997420d16cf37e542eb3cfa3ad}{meta\+::void\+\_\+t}}$<$ \mbox{\hyperlink{namespaceutl_1_1common__impl_a8913f9d610ed8720c817081662fa9f1f}{\+\_\+\+\_\+common\+\_\+ref}}$<$ const T \&, U \& $>$, \mbox{\hyperlink{namespaceutl_1_1meta_a181d79db46b10170529e85b907ed3dc7}{meta\+::when}}$<$ \mbox{\hyperlink{namespaceutl_a9c88a03a5b6dd66200e86f98fb1eb9eb}{Convertible\+To}}$<$ T \&\&, \mbox{\hyperlink{namespaceutl_1_1common__impl_a8913f9d610ed8720c817081662fa9f1f}{\+\_\+\+\_\+common\+\_\+ref}}$<$ const T \&, U \& $>$ $>$ $>$ $>$ $>$\+::\mbox{\hyperlink{structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_00_01meta_1_1void__t_3972a8d6e6799b6ee6537c969cdced343_ade0c54407b6f17f667c01eec748c7e14}{type}} = \mbox{\hyperlink{namespaceutl_1_1common__impl_a8913f9d610ed8720c817081662fa9f1f}{\+\_\+\+\_\+common\+\_\+ref}}$<$const T\&, U\&$>$} + + + +Definition at line 166 of file stl.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/concepts/\mbox{\hyperlink{stl_8h}{stl.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_6_00_01meta_1_1void__tc4e71c227f251cadf0e0fb7b1ba6f1e9.tex b/doc/latex/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_6_00_01meta_1_1void__tc4e71c227f251cadf0e0fb7b1ba6f1e9.tex new file mode 100644 index 0000000..1284c8e --- /dev/null +++ b/doc/latex/structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_6_00_01meta_1_1void__tc4e71c227f251cadf0e0fb7b1ba6f1e9.tex @@ -0,0 +1,40 @@ +\hypertarget{structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_6_00_01meta_1_1void__tc4e71c227f251cadf0e0fb7b1ba6f1e9}{}\section{utl\+:\+:common\+\_\+impl\+:\+:\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T \&\&, U \&\&, meta\+:\+:void\+\_\+t$<$ \+\_\+\+\_\+common\+\_\+ref$<$ T \&, U \& $>$, meta\+:\+:when$<$ Convertible\+To$<$ T \&\&, \+\_\+\+\_\+rref\+\_\+res$<$ T, U $>$ $>$ $>$, meta\+:\+:when$<$ Convertible\+To$<$ U \&\&, \+\_\+\+\_\+rref\+\_\+res$<$ T, U $>$ $>$ $>$ $>$ $>$ Struct Template Reference} +\label{structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_6_00_01meta_1_1void__tc4e71c227f251cadf0e0fb7b1ba6f1e9}\index{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T \&\&, U \&\&, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+common\+\_\+ref$<$ T \&, U \& $>$, meta\+::when$<$ Convertible\+To$<$ T \&\&, \+\_\+\+\_\+rref\+\_\+res$<$ T, U $>$ $>$ $>$, meta\+::when$<$ Convertible\+To$<$ U \&\&, \+\_\+\+\_\+rref\+\_\+res$<$ T, U $>$ $>$ $>$ $>$ $>$@{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T \&\&, U \&\&, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+common\+\_\+ref$<$ T \&, U \& $>$, meta\+::when$<$ Convertible\+To$<$ T \&\&, \+\_\+\+\_\+rref\+\_\+res$<$ T, U $>$ $>$ $>$, meta\+::when$<$ Convertible\+To$<$ U \&\&, \+\_\+\+\_\+rref\+\_\+res$<$ T, U $>$ $>$ $>$ $>$ $>$}} + + +{\ttfamily \#include $<$stl.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_6_00_01meta_1_1void__tc4e71c227f251cadf0e0fb7b1ba6f1e9_a8f2b4a68e68f34543fa6e73774bec517}{type}} = \mbox{\hyperlink{namespaceutl_1_1common__impl_a312c9f3e740103f831a49624097948f5}{\+\_\+\+\_\+rref\+\_\+res}}$<$ T, U $>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class T, class U$>$\newline +struct utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T \&\&, U \&\&, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+common\+\_\+ref$<$ T \&, U \& $>$, meta\+::when$<$ Convertible\+To$<$ T \&\&, \+\_\+\+\_\+rref\+\_\+res$<$ T, U $>$ $>$ $>$, meta\+::when$<$ Convertible\+To$<$ U \&\&, \+\_\+\+\_\+rref\+\_\+res$<$ T, U $>$ $>$ $>$ $>$ $>$} + + + +Definition at line 154 of file stl.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_6_00_01meta_1_1void__tc4e71c227f251cadf0e0fb7b1ba6f1e9_a8f2b4a68e68f34543fa6e73774bec517}\label{structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_6_00_01meta_1_1void__tc4e71c227f251cadf0e0fb7b1ba6f1e9_a8f2b4a68e68f34543fa6e73774bec517}} +\index{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T \&\&, U \&\&, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+common\+\_\+ref$<$ T \&, U \& $>$, meta\+::when$<$ Convertible\+To$<$ T \&\&, \+\_\+\+\_\+rref\+\_\+res$<$ T, U $>$ $>$ $>$, meta\+::when$<$ Convertible\+To$<$ U \&\&, \+\_\+\+\_\+rref\+\_\+res$<$ T, U $>$ $>$ $>$ $>$ $>$@{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T \&\&, U \&\&, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+common\+\_\+ref$<$ T \&, U \& $>$, meta\+::when$<$ Convertible\+To$<$ T \&\&, \+\_\+\+\_\+rref\+\_\+res$<$ T, U $>$ $>$ $>$, meta\+::when$<$ Convertible\+To$<$ U \&\&, \+\_\+\+\_\+rref\+\_\+res$<$ T, U $>$ $>$ $>$ $>$ $>$}!type@{type}} +\index{type@{type}!utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T \&\&, U \&\&, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+common\+\_\+ref$<$ T \&, U \& $>$, meta\+::when$<$ Convertible\+To$<$ T \&\&, \+\_\+\+\_\+rref\+\_\+res$<$ T, U $>$ $>$ $>$, meta\+::when$<$ Convertible\+To$<$ U \&\&, \+\_\+\+\_\+rref\+\_\+res$<$ T, U $>$ $>$ $>$ $>$ $>$@{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+ref\+\_\+$<$ T \&\&, U \&\&, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+common\+\_\+ref$<$ T \&, U \& $>$, meta\+::when$<$ Convertible\+To$<$ T \&\&, \+\_\+\+\_\+rref\+\_\+res$<$ T, U $>$ $>$ $>$, meta\+::when$<$ Convertible\+To$<$ U \&\&, \+\_\+\+\_\+rref\+\_\+res$<$ T, U $>$ $>$ $>$ $>$ $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$class T , class U $>$ \\ +using \mbox{\hyperlink{structutl_1_1common__impl_1_1____common__ref__}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+ref\+\_\+}}$<$ T \&\&, U \&\&, \mbox{\hyperlink{group__detection_gae7373c997420d16cf37e542eb3cfa3ad}{meta\+::void\+\_\+t}}$<$ \mbox{\hyperlink{namespaceutl_1_1common__impl_a8913f9d610ed8720c817081662fa9f1f}{\+\_\+\+\_\+common\+\_\+ref}}$<$ T \&, U \& $>$, \mbox{\hyperlink{namespaceutl_1_1meta_a181d79db46b10170529e85b907ed3dc7}{meta\+::when}}$<$ \mbox{\hyperlink{namespaceutl_a9c88a03a5b6dd66200e86f98fb1eb9eb}{Convertible\+To}}$<$ T \&\&, \mbox{\hyperlink{namespaceutl_1_1common__impl_a312c9f3e740103f831a49624097948f5}{\+\_\+\+\_\+rref\+\_\+res}}$<$ T, U $>$ $>$ $>$, \mbox{\hyperlink{namespaceutl_1_1meta_a181d79db46b10170529e85b907ed3dc7}{meta\+::when}}$<$ \mbox{\hyperlink{namespaceutl_a9c88a03a5b6dd66200e86f98fb1eb9eb}{Convertible\+To}}$<$ U \&\&, \mbox{\hyperlink{namespaceutl_1_1common__impl_a312c9f3e740103f831a49624097948f5}{\+\_\+\+\_\+rref\+\_\+res}}$<$ T, U $>$ $>$ $>$ $>$ $>$\+::\mbox{\hyperlink{structutl_1_1common__impl_1_1____common__ref___3_01_t_01_6_6_00_01_u_01_6_6_00_01meta_1_1void__tc4e71c227f251cadf0e0fb7b1ba6f1e9_a8f2b4a68e68f34543fa6e73774bec517}{type}} = \mbox{\hyperlink{namespaceutl_1_1common__impl_a312c9f3e740103f831a49624097948f5}{\+\_\+\+\_\+rref\+\_\+res}}$<$T, U$>$} + + + +Definition at line 158 of file stl.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/concepts/\mbox{\hyperlink{stl_8h}{stl.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1common__impl_1_1____common__reference.eps b/doc/latex/structutl_1_1common__impl_1_1____common__reference.eps new file mode 100644 index 0000000..c9ed430 --- /dev/null +++ b/doc/latex/structutl_1_1common__impl_1_1____common__reference.eps @@ -0,0 +1,209 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 260.586319 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.918750 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 4 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::common_impl::__common_reference< T, U,... >) cw +(utl::common_impl::__common_reference2< T, U >) cw +(utl::common_impl::__common_reference3< T, U >) cw +(std::common_type< T, U >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::common_impl::__common_reference< T, U,... >) 0.000000 0.000000 box + (utl::common_impl::__common_reference2< T, U >) 0.000000 1.000000 box + (utl::common_impl::__common_reference3< T, U >) 0.000000 2.000000 box + (std::common_type< T, U >) 0.000000 3.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in +solid +0 0.000000 1.000000 out +solid +1 0.000000 2.000000 in +solid +0 0.000000 2.000000 out +solid +1 0.000000 3.000000 in diff --git a/doc/latex/structutl_1_1common__impl_1_1____common__reference.tex b/doc/latex/structutl_1_1common__impl_1_1____common__reference.tex new file mode 100644 index 0000000..a35edd4 --- /dev/null +++ b/doc/latex/structutl_1_1common__impl_1_1____common__reference.tex @@ -0,0 +1,27 @@ +\hypertarget{structutl_1_1common__impl_1_1____common__reference}{}\section{utl\+:\+:common\+\_\+impl\+:\+:\+\_\+\+\_\+common\+\_\+reference$<$ T, U,... $>$ Struct Template Reference} +\label{structutl_1_1common__impl_1_1____common__reference}\index{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+reference$<$ T, U,... $>$@{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+reference$<$ T, U,... $>$}} + + +{\ttfamily \#include $<$stl.\+h$>$} + +Inheritance diagram for utl\+:\+:common\+\_\+impl\+:\+:\+\_\+\+\_\+common\+\_\+reference$<$ T, U,... $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=4.000000cm]{structutl_1_1common__impl_1_1____common__reference} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class T, class U, class...$>$\newline +struct utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+reference$<$ T, U,... $>$} + + + +Definition at line 259 of file stl.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/concepts/\mbox{\hyperlink{stl_8h}{stl.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1common__impl_1_1____common__reference2.eps b/doc/latex/structutl_1_1common__impl_1_1____common__reference2.eps new file mode 100644 index 0000000..1166c22 --- /dev/null +++ b/doc/latex/structutl_1_1common__impl_1_1____common__reference2.eps @@ -0,0 +1,203 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 191.082803 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.616667 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 3 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::common_impl::__common_reference2< T, U,... >) cw +(utl::common_impl::__common_reference3< T, U >) cw +(std::common_type< T, U >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::common_impl::__common_reference2< T, U,... >) 0.000000 0.000000 box + (utl::common_impl::__common_reference3< T, U >) 0.000000 1.000000 box + (std::common_type< T, U >) 0.000000 2.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in +solid +0 0.000000 1.000000 out +solid +1 0.000000 2.000000 in diff --git a/doc/latex/structutl_1_1common__impl_1_1____common__reference2.tex b/doc/latex/structutl_1_1common__impl_1_1____common__reference2.tex new file mode 100644 index 0000000..5fc549b --- /dev/null +++ b/doc/latex/structutl_1_1common__impl_1_1____common__reference2.tex @@ -0,0 +1,27 @@ +\hypertarget{structutl_1_1common__impl_1_1____common__reference2}{}\section{utl\+:\+:common\+\_\+impl\+:\+:\+\_\+\+\_\+common\+\_\+reference2$<$ T, U,... $>$ Struct Template Reference} +\label{structutl_1_1common__impl_1_1____common__reference2}\index{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+reference2$<$ T, U,... $>$@{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+reference2$<$ T, U,... $>$}} + + +{\ttfamily \#include $<$stl.\+h$>$} + +Inheritance diagram for utl\+:\+:common\+\_\+impl\+:\+:\+\_\+\+\_\+common\+\_\+reference2$<$ T, U,... $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3.000000cm]{structutl_1_1common__impl_1_1____common__reference2} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class T, class U, class...$>$\newline +struct utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+reference2$<$ T, U,... $>$} + + + +Definition at line 248 of file stl.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/concepts/\mbox{\hyperlink{stl_8h}{stl.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1common__impl_1_1____common__reference2_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____785d0aa2f8a62416e19573fcbdd83836.tex b/doc/latex/structutl_1_1common__impl_1_1____common__reference2_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____785d0aa2f8a62416e19573fcbdd83836.tex new file mode 100644 index 0000000..70a11f5 --- /dev/null +++ b/doc/latex/structutl_1_1common__impl_1_1____common__reference2_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____785d0aa2f8a62416e19573fcbdd83836.tex @@ -0,0 +1,40 @@ +\hypertarget{structutl_1_1common__impl_1_1____common__reference2_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____785d0aa2f8a62416e19573fcbdd83836}{}\section{utl\+:\+:common\+\_\+impl\+:\+:\+\_\+\+\_\+common\+\_\+reference2$<$ T, U, meta\+:\+:void\+\_\+t$<$ \+\_\+\+\_\+basic\+\_\+common\+\_\+reference\+\_\+t$<$ T, U $>$ $>$ $>$ Struct Template Reference} +\label{structutl_1_1common__impl_1_1____common__reference2_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____785d0aa2f8a62416e19573fcbdd83836}\index{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+reference2$<$ T, U, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+basic\+\_\+common\+\_\+reference\+\_\+t$<$ T, U $>$ $>$ $>$@{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+reference2$<$ T, U, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+basic\+\_\+common\+\_\+reference\+\_\+t$<$ T, U $>$ $>$ $>$}} + + +{\ttfamily \#include $<$stl.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1common__impl_1_1____common__reference2_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____785d0aa2f8a62416e19573fcbdd83836_abad429fee19f4f511abfe089fa480404}{type}} = \mbox{\hyperlink{namespaceutl_1_1common__impl_a3bbe5eb74a1c6017f60e3034519d69d6}{\+\_\+\+\_\+basic\+\_\+common\+\_\+reference\+\_\+t}}$<$ T, U $>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class T, class U$>$\newline +struct utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+reference2$<$ T, U, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+basic\+\_\+common\+\_\+reference\+\_\+t$<$ T, U $>$ $>$ $>$} + + + +Definition at line 253 of file stl.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1common__impl_1_1____common__reference2_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____785d0aa2f8a62416e19573fcbdd83836_abad429fee19f4f511abfe089fa480404}\label{structutl_1_1common__impl_1_1____common__reference2_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____785d0aa2f8a62416e19573fcbdd83836_abad429fee19f4f511abfe089fa480404}} +\index{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+reference2$<$ T, U, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+basic\+\_\+common\+\_\+reference\+\_\+t$<$ T, U $>$ $>$ $>$@{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+reference2$<$ T, U, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+basic\+\_\+common\+\_\+reference\+\_\+t$<$ T, U $>$ $>$ $>$}!type@{type}} +\index{type@{type}!utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+reference2$<$ T, U, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+basic\+\_\+common\+\_\+reference\+\_\+t$<$ T, U $>$ $>$ $>$@{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+reference2$<$ T, U, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+basic\+\_\+common\+\_\+reference\+\_\+t$<$ T, U $>$ $>$ $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$class T , class U $>$ \\ +using \mbox{\hyperlink{structutl_1_1common__impl_1_1____common__reference2}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+reference2}}$<$ T, U, \mbox{\hyperlink{group__detection_gae7373c997420d16cf37e542eb3cfa3ad}{meta\+::void\+\_\+t}}$<$ \mbox{\hyperlink{namespaceutl_1_1common__impl_a3bbe5eb74a1c6017f60e3034519d69d6}{\+\_\+\+\_\+basic\+\_\+common\+\_\+reference\+\_\+t}}$<$ T, U $>$ $>$ $>$\+::\mbox{\hyperlink{structutl_1_1common__impl_1_1____common__reference2_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____785d0aa2f8a62416e19573fcbdd83836_abad429fee19f4f511abfe089fa480404}{type}} = \mbox{\hyperlink{namespaceutl_1_1common__impl_a3bbe5eb74a1c6017f60e3034519d69d6}{\+\_\+\+\_\+basic\+\_\+common\+\_\+reference\+\_\+t}}$<$T, U$>$} + + + +Definition at line 255 of file stl.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/concepts/\mbox{\hyperlink{stl_8h}{stl.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1common__impl_1_1____common__reference3.eps b/doc/latex/structutl_1_1common__impl_1_1____common__reference3.eps new file mode 100644 index 0000000..4c0ad56 --- /dev/null +++ b/doc/latex/structutl_1_1common__impl_1_1____common__reference3.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 127.388535 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 3.925000 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::common_impl::__common_reference3< T, U,... >) cw +(std::common_type< T, U >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::common_impl::__common_reference3< T, U,... >) 0.000000 0.000000 box + (std::common_type< T, U >) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/structutl_1_1common__impl_1_1____common__reference3.tex b/doc/latex/structutl_1_1common__impl_1_1____common__reference3.tex new file mode 100644 index 0000000..50ef9c9 --- /dev/null +++ b/doc/latex/structutl_1_1common__impl_1_1____common__reference3.tex @@ -0,0 +1,27 @@ +\hypertarget{structutl_1_1common__impl_1_1____common__reference3}{}\section{utl\+:\+:common\+\_\+impl\+:\+:\+\_\+\+\_\+common\+\_\+reference3$<$ T, U,... $>$ Struct Template Reference} +\label{structutl_1_1common__impl_1_1____common__reference3}\index{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+reference3$<$ T, U,... $>$@{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+reference3$<$ T, U,... $>$}} + + +{\ttfamily \#include $<$stl.\+h$>$} + +Inheritance diagram for utl\+:\+:common\+\_\+impl\+:\+:\+\_\+\+\_\+common\+\_\+reference3$<$ T, U,... $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{structutl_1_1common__impl_1_1____common__reference3} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class T, class U, class...$>$\newline +struct utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+reference3$<$ T, U,... $>$} + + + +Definition at line 237 of file stl.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/concepts/\mbox{\hyperlink{stl_8h}{stl.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1common__impl_1_1____common__reference3_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____015b01ed12d2d90ee57fbf756ab847e9.tex b/doc/latex/structutl_1_1common__impl_1_1____common__reference3_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____015b01ed12d2d90ee57fbf756ab847e9.tex new file mode 100644 index 0000000..6d9b719 --- /dev/null +++ b/doc/latex/structutl_1_1common__impl_1_1____common__reference3_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____015b01ed12d2d90ee57fbf756ab847e9.tex @@ -0,0 +1,40 @@ +\hypertarget{structutl_1_1common__impl_1_1____common__reference3_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____015b01ed12d2d90ee57fbf756ab847e9}{}\section{utl\+:\+:common\+\_\+impl\+:\+:\+\_\+\+\_\+common\+\_\+reference3$<$ T, U, meta\+:\+:void\+\_\+t$<$ \+\_\+\+\_\+cond\+\_\+res$<$ T, U $>$ $>$ $>$ Struct Template Reference} +\label{structutl_1_1common__impl_1_1____common__reference3_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____015b01ed12d2d90ee57fbf756ab847e9}\index{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+reference3$<$ T, U, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+cond\+\_\+res$<$ T, U $>$ $>$ $>$@{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+reference3$<$ T, U, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+cond\+\_\+res$<$ T, U $>$ $>$ $>$}} + + +{\ttfamily \#include $<$stl.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1common__impl_1_1____common__reference3_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____015b01ed12d2d90ee57fbf756ab847e9_a41c50c14e6bc947987661add1a95e777}{type}} = \mbox{\hyperlink{namespaceutl_1_1common__impl_ab43a461d352a35dc1b3de39bfe17e38b}{\+\_\+\+\_\+cond\+\_\+res}}$<$ T, U $>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class T, class U$>$\newline +struct utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+reference3$<$ T, U, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+cond\+\_\+res$<$ T, U $>$ $>$ $>$} + + + +Definition at line 242 of file stl.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1common__impl_1_1____common__reference3_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____015b01ed12d2d90ee57fbf756ab847e9_a41c50c14e6bc947987661add1a95e777}\label{structutl_1_1common__impl_1_1____common__reference3_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____015b01ed12d2d90ee57fbf756ab847e9_a41c50c14e6bc947987661add1a95e777}} +\index{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+reference3$<$ T, U, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+cond\+\_\+res$<$ T, U $>$ $>$ $>$@{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+reference3$<$ T, U, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+cond\+\_\+res$<$ T, U $>$ $>$ $>$}!type@{type}} +\index{type@{type}!utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+reference3$<$ T, U, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+cond\+\_\+res$<$ T, U $>$ $>$ $>$@{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+reference3$<$ T, U, meta\+::void\+\_\+t$<$ \+\_\+\+\_\+cond\+\_\+res$<$ T, U $>$ $>$ $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$class T , class U $>$ \\ +using \mbox{\hyperlink{structutl_1_1common__impl_1_1____common__reference3}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+reference3}}$<$ T, U, \mbox{\hyperlink{group__detection_gae7373c997420d16cf37e542eb3cfa3ad}{meta\+::void\+\_\+t}}$<$ \mbox{\hyperlink{namespaceutl_1_1common__impl_ab43a461d352a35dc1b3de39bfe17e38b}{\+\_\+\+\_\+cond\+\_\+res}}$<$ T, U $>$ $>$ $>$\+::\mbox{\hyperlink{structutl_1_1common__impl_1_1____common__reference3_3_01_t_00_01_u_00_01meta_1_1void__t_3_01____015b01ed12d2d90ee57fbf756ab847e9_a41c50c14e6bc947987661add1a95e777}{type}} = \mbox{\hyperlink{namespaceutl_1_1common__impl_ab43a461d352a35dc1b3de39bfe17e38b}{\+\_\+\+\_\+cond\+\_\+res}}$<$T, U$>$} + + + +Definition at line 244 of file stl.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/concepts/\mbox{\hyperlink{stl_8h}{stl.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1common__impl_1_1____common__reference_3_01_t_00_01_u_00_01meta_1_1when_3_01std_1_1i23b95b4b3a65ce598dbcc7f52e9dab2c.tex b/doc/latex/structutl_1_1common__impl_1_1____common__reference_3_01_t_00_01_u_00_01meta_1_1when_3_01std_1_1i23b95b4b3a65ce598dbcc7f52e9dab2c.tex new file mode 100644 index 0000000..a226272 --- /dev/null +++ b/doc/latex/structutl_1_1common__impl_1_1____common__reference_3_01_t_00_01_u_00_01meta_1_1when_3_01std_1_1i23b95b4b3a65ce598dbcc7f52e9dab2c.tex @@ -0,0 +1,40 @@ +\hypertarget{structutl_1_1common__impl_1_1____common__reference_3_01_t_00_01_u_00_01meta_1_1when_3_01std_1_1i23b95b4b3a65ce598dbcc7f52e9dab2c}{}\section{utl\+:\+:common\+\_\+impl\+:\+:\+\_\+\+\_\+common\+\_\+reference$<$ T, U, meta\+:\+:when$<$ std\+:\+:is\+\_\+reference$<$ T $>$\+:\+:value \&\&std\+:\+:is\+\_\+reference$<$ U $>$\+:\+:value $>$ $>$ Struct Template Reference} +\label{structutl_1_1common__impl_1_1____common__reference_3_01_t_00_01_u_00_01meta_1_1when_3_01std_1_1i23b95b4b3a65ce598dbcc7f52e9dab2c}\index{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+reference$<$ T, U, meta\+::when$<$ std\+::is\+\_\+reference$<$ T $>$\+::value \&\&std\+::is\+\_\+reference$<$ U $>$\+::value $>$ $>$@{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+reference$<$ T, U, meta\+::when$<$ std\+::is\+\_\+reference$<$ T $>$\+::value \&\&std\+::is\+\_\+reference$<$ U $>$\+::value $>$ $>$}} + + +{\ttfamily \#include $<$stl.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1common__impl_1_1____common__reference_3_01_t_00_01_u_00_01meta_1_1when_3_01std_1_1i23b95b4b3a65ce598dbcc7f52e9dab2c_af8297c9aa25bfb27c58f0f58722a0d28}{type}} = \mbox{\hyperlink{namespaceutl_1_1common__impl_a8913f9d610ed8720c817081662fa9f1f}{\+\_\+\+\_\+common\+\_\+ref}}$<$ T, U $>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class T, class U$>$\newline +struct utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+reference$<$ T, U, meta\+::when$<$ std\+::is\+\_\+reference$<$ T $>$\+::value \&\&std\+::is\+\_\+reference$<$ U $>$\+::value $>$ $>$} + + + +Definition at line 263 of file stl.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1common__impl_1_1____common__reference_3_01_t_00_01_u_00_01meta_1_1when_3_01std_1_1i23b95b4b3a65ce598dbcc7f52e9dab2c_af8297c9aa25bfb27c58f0f58722a0d28}\label{structutl_1_1common__impl_1_1____common__reference_3_01_t_00_01_u_00_01meta_1_1when_3_01std_1_1i23b95b4b3a65ce598dbcc7f52e9dab2c_af8297c9aa25bfb27c58f0f58722a0d28}} +\index{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+reference$<$ T, U, meta\+::when$<$ std\+::is\+\_\+reference$<$ T $>$\+::value \&\&std\+::is\+\_\+reference$<$ U $>$\+::value $>$ $>$@{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+reference$<$ T, U, meta\+::when$<$ std\+::is\+\_\+reference$<$ T $>$\+::value \&\&std\+::is\+\_\+reference$<$ U $>$\+::value $>$ $>$}!type@{type}} +\index{type@{type}!utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+reference$<$ T, U, meta\+::when$<$ std\+::is\+\_\+reference$<$ T $>$\+::value \&\&std\+::is\+\_\+reference$<$ U $>$\+::value $>$ $>$@{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+reference$<$ T, U, meta\+::when$<$ std\+::is\+\_\+reference$<$ T $>$\+::value \&\&std\+::is\+\_\+reference$<$ U $>$\+::value $>$ $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$class T , class U $>$ \\ +using \mbox{\hyperlink{structutl_1_1common__impl_1_1____common__reference}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+common\+\_\+reference}}$<$ T, U, \mbox{\hyperlink{namespaceutl_1_1meta_a181d79db46b10170529e85b907ed3dc7}{meta\+::when}}$<$ std\+::is\+\_\+reference$<$ T $>$\+::value \&\&std\+::is\+\_\+reference$<$ U $>$\+::value $>$ $>$\+::\mbox{\hyperlink{structutl_1_1common__impl_1_1____common__reference_3_01_t_00_01_u_00_01meta_1_1when_3_01std_1_1i23b95b4b3a65ce598dbcc7f52e9dab2c_af8297c9aa25bfb27c58f0f58722a0d28}{type}} = \mbox{\hyperlink{namespaceutl_1_1common__impl_a8913f9d610ed8720c817081662fa9f1f}{\+\_\+\+\_\+common\+\_\+ref}}$<$T, U$>$} + + + +Definition at line 265 of file stl.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/concepts/\mbox{\hyperlink{stl_8h}{stl.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1common__impl_1_1____copy__cv__.tex b/doc/latex/structutl_1_1common__impl_1_1____copy__cv__.tex new file mode 100644 index 0000000..3000d36 --- /dev/null +++ b/doc/latex/structutl_1_1common__impl_1_1____copy__cv__.tex @@ -0,0 +1,41 @@ +\hypertarget{structutl_1_1common__impl_1_1____copy__cv__}{}\section{utl\+:\+:common\+\_\+impl\+:\+:\+\_\+\+\_\+copy\+\_\+cv\+\_\+$<$ From $>$ Struct Template Reference} +\label{structutl_1_1common__impl_1_1____copy__cv__}\index{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+copy\+\_\+cv\+\_\+$<$ From $>$@{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+copy\+\_\+cv\+\_\+$<$ From $>$}} + + +{\ttfamily \#include $<$stl.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$class To $>$ }\\using \mbox{\hyperlink{structutl_1_1common__impl_1_1____copy__cv___aab9e00c637c2bbbdb6d1398aca8e3f96}{apply}} = To +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class From$>$\newline +struct utl\+::common\+\_\+impl\+::\+\_\+\+\_\+copy\+\_\+cv\+\_\+$<$ From $>$} + + + +Definition at line 102 of file stl.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1common__impl_1_1____copy__cv___aab9e00c637c2bbbdb6d1398aca8e3f96}\label{structutl_1_1common__impl_1_1____copy__cv___aab9e00c637c2bbbdb6d1398aca8e3f96}} +\index{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+copy\+\_\+cv\+\_\+@{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+copy\+\_\+cv\+\_\+}!apply@{apply}} +\index{apply@{apply}!utl\+::common\+\_\+impl\+::\+\_\+\+\_\+copy\+\_\+cv\+\_\+@{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+copy\+\_\+cv\+\_\+}} +\subsubsection{\texorpdfstring{apply}{apply}} +{\footnotesize\ttfamily template$<$class From $>$ \\ +template$<$class To $>$ \\ +using \mbox{\hyperlink{structutl_1_1common__impl_1_1____copy__cv__}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+copy\+\_\+cv\+\_\+}}$<$ From $>$\+::\mbox{\hyperlink{structutl_1_1common__impl_1_1____copy__cv___aab9e00c637c2bbbdb6d1398aca8e3f96}{apply}} = To} + + + +Definition at line 104 of file stl.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/concepts/\mbox{\hyperlink{stl_8h}{stl.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1common__impl_1_1____copy__cv___3_01const_01_from_01_4.tex b/doc/latex/structutl_1_1common__impl_1_1____copy__cv___3_01const_01_from_01_4.tex new file mode 100644 index 0000000..41a17d2 --- /dev/null +++ b/doc/latex/structutl_1_1common__impl_1_1____copy__cv___3_01const_01_from_01_4.tex @@ -0,0 +1,41 @@ +\hypertarget{structutl_1_1common__impl_1_1____copy__cv___3_01const_01_from_01_4}{}\section{utl\+:\+:common\+\_\+impl\+:\+:\+\_\+\+\_\+copy\+\_\+cv\+\_\+$<$ const From $>$ Struct Template Reference} +\label{structutl_1_1common__impl_1_1____copy__cv___3_01const_01_from_01_4}\index{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+copy\+\_\+cv\+\_\+$<$ const From $>$@{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+copy\+\_\+cv\+\_\+$<$ const From $>$}} + + +{\ttfamily \#include $<$stl.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$class To $>$ }\\using \mbox{\hyperlink{structutl_1_1common__impl_1_1____copy__cv___3_01const_01_from_01_4_a6dfb1b1162563a05f62a004de401367e}{apply}} = const To +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class From$>$\newline +struct utl\+::common\+\_\+impl\+::\+\_\+\+\_\+copy\+\_\+cv\+\_\+$<$ const From $>$} + + + +Definition at line 107 of file stl.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1common__impl_1_1____copy__cv___3_01const_01_from_01_4_a6dfb1b1162563a05f62a004de401367e}\label{structutl_1_1common__impl_1_1____copy__cv___3_01const_01_from_01_4_a6dfb1b1162563a05f62a004de401367e}} +\index{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+copy\+\_\+cv\+\_\+$<$ const From $>$@{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+copy\+\_\+cv\+\_\+$<$ const From $>$}!apply@{apply}} +\index{apply@{apply}!utl\+::common\+\_\+impl\+::\+\_\+\+\_\+copy\+\_\+cv\+\_\+$<$ const From $>$@{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+copy\+\_\+cv\+\_\+$<$ const From $>$}} +\subsubsection{\texorpdfstring{apply}{apply}} +{\footnotesize\ttfamily template$<$class From $>$ \\ +template$<$class To $>$ \\ +using \mbox{\hyperlink{structutl_1_1common__impl_1_1____copy__cv__}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+copy\+\_\+cv\+\_\+}}$<$ const From $>$\+::\mbox{\hyperlink{structutl_1_1common__impl_1_1____copy__cv___3_01const_01_from_01_4_a6dfb1b1162563a05f62a004de401367e}{apply}} = const To} + + + +Definition at line 108 of file stl.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/concepts/\mbox{\hyperlink{stl_8h}{stl.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1common__impl_1_1____copy__cv___3_01const_01volatile_01_from_01_4.tex b/doc/latex/structutl_1_1common__impl_1_1____copy__cv___3_01const_01volatile_01_from_01_4.tex new file mode 100644 index 0000000..aadee47 --- /dev/null +++ b/doc/latex/structutl_1_1common__impl_1_1____copy__cv___3_01const_01volatile_01_from_01_4.tex @@ -0,0 +1,41 @@ +\hypertarget{structutl_1_1common__impl_1_1____copy__cv___3_01const_01volatile_01_from_01_4}{}\section{utl\+:\+:common\+\_\+impl\+:\+:\+\_\+\+\_\+copy\+\_\+cv\+\_\+$<$ const volatile From $>$ Struct Template Reference} +\label{structutl_1_1common__impl_1_1____copy__cv___3_01const_01volatile_01_from_01_4}\index{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+copy\+\_\+cv\+\_\+$<$ const volatile From $>$@{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+copy\+\_\+cv\+\_\+$<$ const volatile From $>$}} + + +{\ttfamily \#include $<$stl.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$class To $>$ }\\using \mbox{\hyperlink{structutl_1_1common__impl_1_1____copy__cv___3_01const_01volatile_01_from_01_4_a3b90863f9819b9537789a30ab6863aca}{apply}} = const volatile To +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class From$>$\newline +struct utl\+::common\+\_\+impl\+::\+\_\+\+\_\+copy\+\_\+cv\+\_\+$<$ const volatile From $>$} + + + +Definition at line 115 of file stl.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1common__impl_1_1____copy__cv___3_01const_01volatile_01_from_01_4_a3b90863f9819b9537789a30ab6863aca}\label{structutl_1_1common__impl_1_1____copy__cv___3_01const_01volatile_01_from_01_4_a3b90863f9819b9537789a30ab6863aca}} +\index{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+copy\+\_\+cv\+\_\+$<$ const volatile From $>$@{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+copy\+\_\+cv\+\_\+$<$ const volatile From $>$}!apply@{apply}} +\index{apply@{apply}!utl\+::common\+\_\+impl\+::\+\_\+\+\_\+copy\+\_\+cv\+\_\+$<$ const volatile From $>$@{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+copy\+\_\+cv\+\_\+$<$ const volatile From $>$}} +\subsubsection{\texorpdfstring{apply}{apply}} +{\footnotesize\ttfamily template$<$class From $>$ \\ +template$<$class To $>$ \\ +using \mbox{\hyperlink{structutl_1_1common__impl_1_1____copy__cv__}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+copy\+\_\+cv\+\_\+}}$<$ const volatile From $>$\+::\mbox{\hyperlink{structutl_1_1common__impl_1_1____copy__cv___3_01const_01volatile_01_from_01_4_a3b90863f9819b9537789a30ab6863aca}{apply}} = const volatile To} + + + +Definition at line 116 of file stl.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/concepts/\mbox{\hyperlink{stl_8h}{stl.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1common__impl_1_1____copy__cv___3_01volatile_01_from_01_4.tex b/doc/latex/structutl_1_1common__impl_1_1____copy__cv___3_01volatile_01_from_01_4.tex new file mode 100644 index 0000000..153b714 --- /dev/null +++ b/doc/latex/structutl_1_1common__impl_1_1____copy__cv___3_01volatile_01_from_01_4.tex @@ -0,0 +1,41 @@ +\hypertarget{structutl_1_1common__impl_1_1____copy__cv___3_01volatile_01_from_01_4}{}\section{utl\+:\+:common\+\_\+impl\+:\+:\+\_\+\+\_\+copy\+\_\+cv\+\_\+$<$ volatile From $>$ Struct Template Reference} +\label{structutl_1_1common__impl_1_1____copy__cv___3_01volatile_01_from_01_4}\index{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+copy\+\_\+cv\+\_\+$<$ volatile From $>$@{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+copy\+\_\+cv\+\_\+$<$ volatile From $>$}} + + +{\ttfamily \#include $<$stl.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$class To $>$ }\\using \mbox{\hyperlink{structutl_1_1common__impl_1_1____copy__cv___3_01volatile_01_from_01_4_a1066914bb7b2d20c25f9f6b953f40edd}{apply}} = volatile To +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class From$>$\newline +struct utl\+::common\+\_\+impl\+::\+\_\+\+\_\+copy\+\_\+cv\+\_\+$<$ volatile From $>$} + + + +Definition at line 111 of file stl.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1common__impl_1_1____copy__cv___3_01volatile_01_from_01_4_a1066914bb7b2d20c25f9f6b953f40edd}\label{structutl_1_1common__impl_1_1____copy__cv___3_01volatile_01_from_01_4_a1066914bb7b2d20c25f9f6b953f40edd}} +\index{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+copy\+\_\+cv\+\_\+$<$ volatile From $>$@{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+copy\+\_\+cv\+\_\+$<$ volatile From $>$}!apply@{apply}} +\index{apply@{apply}!utl\+::common\+\_\+impl\+::\+\_\+\+\_\+copy\+\_\+cv\+\_\+$<$ volatile From $>$@{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+copy\+\_\+cv\+\_\+$<$ volatile From $>$}} +\subsubsection{\texorpdfstring{apply}{apply}} +{\footnotesize\ttfamily template$<$class From $>$ \\ +template$<$class To $>$ \\ +using \mbox{\hyperlink{structutl_1_1common__impl_1_1____copy__cv__}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+copy\+\_\+cv\+\_\+}}$<$ volatile From $>$\+::\mbox{\hyperlink{structutl_1_1common__impl_1_1____copy__cv___3_01volatile_01_from_01_4_a1066914bb7b2d20c25f9f6b953f40edd}{apply}} = volatile To} + + + +Definition at line 112 of file stl.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/concepts/\mbox{\hyperlink{stl_8h}{stl.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1common__impl_1_1____xref.tex b/doc/latex/structutl_1_1common__impl_1_1____xref.tex new file mode 100644 index 0000000..81c73ca --- /dev/null +++ b/doc/latex/structutl_1_1common__impl_1_1____xref.tex @@ -0,0 +1,41 @@ +\hypertarget{structutl_1_1common__impl_1_1____xref}{}\section{utl\+:\+:common\+\_\+impl\+:\+:\+\_\+\+\_\+xref$<$ class $>$ Struct Template Reference} +\label{structutl_1_1common__impl_1_1____xref}\index{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ class $>$@{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ class $>$}} + + +{\ttfamily \#include $<$stl.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$class U $>$ }\\using \mbox{\hyperlink{structutl_1_1common__impl_1_1____xref_a032704fe2160d375719ade17fd93f91b}{apply}} = U +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class$>$\newline +struct utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ class $>$} + + + +Definition at line 178 of file stl.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1common__impl_1_1____xref_a032704fe2160d375719ade17fd93f91b}\label{structutl_1_1common__impl_1_1____xref_a032704fe2160d375719ade17fd93f91b}} +\index{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref@{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref}!apply@{apply}} +\index{apply@{apply}!utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref@{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref}} +\subsubsection{\texorpdfstring{apply}{apply}} +{\footnotesize\ttfamily template$<$class $>$ \\ +template$<$class U $>$ \\ +using \mbox{\hyperlink{structutl_1_1common__impl_1_1____xref}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref}}$<$ class $>$\+::\mbox{\hyperlink{structutl_1_1common__impl_1_1____xref_a032704fe2160d375719ade17fd93f91b}{apply}} = U} + + + +Definition at line 179 of file stl.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/concepts/\mbox{\hyperlink{stl_8h}{stl.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1common__impl_1_1____xref_3_01_t_01_6_01_4.tex b/doc/latex/structutl_1_1common__impl_1_1____xref_3_01_t_01_6_01_4.tex new file mode 100644 index 0000000..6db59a3 --- /dev/null +++ b/doc/latex/structutl_1_1common__impl_1_1____xref_3_01_t_01_6_01_4.tex @@ -0,0 +1,41 @@ +\hypertarget{structutl_1_1common__impl_1_1____xref_3_01_t_01_6_01_4}{}\section{utl\+:\+:common\+\_\+impl\+:\+:\+\_\+\+\_\+xref$<$ T \& $>$ Struct Template Reference} +\label{structutl_1_1common__impl_1_1____xref_3_01_t_01_6_01_4}\index{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ T \& $>$@{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ T \& $>$}} + + +{\ttfamily \#include $<$stl.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$class U $>$ }\\using \mbox{\hyperlink{structutl_1_1common__impl_1_1____xref_3_01_t_01_6_01_4_a45952ba243315d71be48069faeb0aff0}{apply}} = std\+::add\+\_\+lvalue\+\_\+reference\+\_\+t$<$ \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{meta\+::invoke}}$<$ \mbox{\hyperlink{structutl_1_1common__impl_1_1____xref}{\+\_\+\+\_\+xref}}$<$ T $>$, U $>$ $>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class T$>$\newline +struct utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ T \& $>$} + + + +Definition at line 194 of file stl.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1common__impl_1_1____xref_3_01_t_01_6_01_4_a45952ba243315d71be48069faeb0aff0}\label{structutl_1_1common__impl_1_1____xref_3_01_t_01_6_01_4_a45952ba243315d71be48069faeb0aff0}} +\index{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ T \& $>$@{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ T \& $>$}!apply@{apply}} +\index{apply@{apply}!utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ T \& $>$@{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ T \& $>$}} +\subsubsection{\texorpdfstring{apply}{apply}} +{\footnotesize\ttfamily template$<$class T $>$ \\ +template$<$class U $>$ \\ +using \mbox{\hyperlink{structutl_1_1common__impl_1_1____xref}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref}}$<$ T \& $>$\+::\mbox{\hyperlink{structutl_1_1common__impl_1_1____xref_3_01_t_01_6_01_4_a45952ba243315d71be48069faeb0aff0}{apply}} = std\+::add\+\_\+lvalue\+\_\+reference\+\_\+t$<$\mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{meta\+::invoke}}$<$\mbox{\hyperlink{structutl_1_1common__impl_1_1____xref}{\+\_\+\+\_\+xref}}$<$T$>$, U$>$ $>$} + + + +Definition at line 196 of file stl.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/concepts/\mbox{\hyperlink{stl_8h}{stl.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1common__impl_1_1____xref_3_01_t_01_6_6_01_4.tex b/doc/latex/structutl_1_1common__impl_1_1____xref_3_01_t_01_6_6_01_4.tex new file mode 100644 index 0000000..1394db2 --- /dev/null +++ b/doc/latex/structutl_1_1common__impl_1_1____xref_3_01_t_01_6_6_01_4.tex @@ -0,0 +1,41 @@ +\hypertarget{structutl_1_1common__impl_1_1____xref_3_01_t_01_6_6_01_4}{}\section{utl\+:\+:common\+\_\+impl\+:\+:\+\_\+\+\_\+xref$<$ T \&\& $>$ Struct Template Reference} +\label{structutl_1_1common__impl_1_1____xref_3_01_t_01_6_6_01_4}\index{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ T \&\& $>$@{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ T \&\& $>$}} + + +{\ttfamily \#include $<$stl.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$class U $>$ }\\using \mbox{\hyperlink{structutl_1_1common__impl_1_1____xref_3_01_t_01_6_6_01_4_ab2e3a215cd9be370de57febb6cc290ec}{apply}} = std\+::add\+\_\+rvalue\+\_\+reference\+\_\+t$<$ \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{meta\+::invoke}}$<$ \mbox{\hyperlink{structutl_1_1common__impl_1_1____xref}{\+\_\+\+\_\+xref}}$<$ T $>$, U $>$ $>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class T$>$\newline +struct utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ T \&\& $>$} + + + +Definition at line 199 of file stl.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1common__impl_1_1____xref_3_01_t_01_6_6_01_4_ab2e3a215cd9be370de57febb6cc290ec}\label{structutl_1_1common__impl_1_1____xref_3_01_t_01_6_6_01_4_ab2e3a215cd9be370de57febb6cc290ec}} +\index{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ T \&\& $>$@{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ T \&\& $>$}!apply@{apply}} +\index{apply@{apply}!utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ T \&\& $>$@{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ T \&\& $>$}} +\subsubsection{\texorpdfstring{apply}{apply}} +{\footnotesize\ttfamily template$<$class T $>$ \\ +template$<$class U $>$ \\ +using \mbox{\hyperlink{structutl_1_1common__impl_1_1____xref}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref}}$<$ T \&\& $>$\+::\mbox{\hyperlink{structutl_1_1common__impl_1_1____xref_3_01_t_01_6_6_01_4_ab2e3a215cd9be370de57febb6cc290ec}{apply}} = std\+::add\+\_\+rvalue\+\_\+reference\+\_\+t$<$\mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{meta\+::invoke}}$<$\mbox{\hyperlink{structutl_1_1common__impl_1_1____xref}{\+\_\+\+\_\+xref}}$<$T$>$, U$>$ $>$} + + + +Definition at line 201 of file stl.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/concepts/\mbox{\hyperlink{stl_8h}{stl.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1common__impl_1_1____xref_3_01const_01_t_01_4.tex b/doc/latex/structutl_1_1common__impl_1_1____xref_3_01const_01_t_01_4.tex new file mode 100644 index 0000000..a369a10 --- /dev/null +++ b/doc/latex/structutl_1_1common__impl_1_1____xref_3_01const_01_t_01_4.tex @@ -0,0 +1,41 @@ +\hypertarget{structutl_1_1common__impl_1_1____xref_3_01const_01_t_01_4}{}\section{utl\+:\+:common\+\_\+impl\+:\+:\+\_\+\+\_\+xref$<$ const T $>$ Struct Template Reference} +\label{structutl_1_1common__impl_1_1____xref_3_01const_01_t_01_4}\index{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ const T $>$@{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ const T $>$}} + + +{\ttfamily \#include $<$stl.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$class U $>$ }\\using \mbox{\hyperlink{structutl_1_1common__impl_1_1____xref_3_01const_01_t_01_4_aa0c18f8f497297768174b0d272209f4c}{apply}} = const U +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class T$>$\newline +struct utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ const T $>$} + + + +Definition at line 182 of file stl.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1common__impl_1_1____xref_3_01const_01_t_01_4_aa0c18f8f497297768174b0d272209f4c}\label{structutl_1_1common__impl_1_1____xref_3_01const_01_t_01_4_aa0c18f8f497297768174b0d272209f4c}} +\index{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ const T $>$@{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ const T $>$}!apply@{apply}} +\index{apply@{apply}!utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ const T $>$@{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ const T $>$}} +\subsubsection{\texorpdfstring{apply}{apply}} +{\footnotesize\ttfamily template$<$class T $>$ \\ +template$<$class U $>$ \\ +using \mbox{\hyperlink{structutl_1_1common__impl_1_1____xref}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref}}$<$ const T $>$\+::\mbox{\hyperlink{structutl_1_1common__impl_1_1____xref_3_01const_01_t_01_4_aa0c18f8f497297768174b0d272209f4c}{apply}} = const U} + + + +Definition at line 183 of file stl.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/concepts/\mbox{\hyperlink{stl_8h}{stl.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1common__impl_1_1____xref_3_01const_01volatile_01_t_01_4.tex b/doc/latex/structutl_1_1common__impl_1_1____xref_3_01const_01volatile_01_t_01_4.tex new file mode 100644 index 0000000..e267553 --- /dev/null +++ b/doc/latex/structutl_1_1common__impl_1_1____xref_3_01const_01volatile_01_t_01_4.tex @@ -0,0 +1,41 @@ +\hypertarget{structutl_1_1common__impl_1_1____xref_3_01const_01volatile_01_t_01_4}{}\section{utl\+:\+:common\+\_\+impl\+:\+:\+\_\+\+\_\+xref$<$ const volatile T $>$ Struct Template Reference} +\label{structutl_1_1common__impl_1_1____xref_3_01const_01volatile_01_t_01_4}\index{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ const volatile T $>$@{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ const volatile T $>$}} + + +{\ttfamily \#include $<$stl.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$class U $>$ }\\using \mbox{\hyperlink{structutl_1_1common__impl_1_1____xref_3_01const_01volatile_01_t_01_4_a298403b8085c58e3f18d61877f2186a5}{apply}} = const volatile U +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class T$>$\newline +struct utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ const volatile T $>$} + + + +Definition at line 190 of file stl.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1common__impl_1_1____xref_3_01const_01volatile_01_t_01_4_a298403b8085c58e3f18d61877f2186a5}\label{structutl_1_1common__impl_1_1____xref_3_01const_01volatile_01_t_01_4_a298403b8085c58e3f18d61877f2186a5}} +\index{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ const volatile T $>$@{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ const volatile T $>$}!apply@{apply}} +\index{apply@{apply}!utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ const volatile T $>$@{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ const volatile T $>$}} +\subsubsection{\texorpdfstring{apply}{apply}} +{\footnotesize\ttfamily template$<$class T $>$ \\ +template$<$class U $>$ \\ +using \mbox{\hyperlink{structutl_1_1common__impl_1_1____xref}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref}}$<$ const volatile T $>$\+::\mbox{\hyperlink{structutl_1_1common__impl_1_1____xref_3_01const_01volatile_01_t_01_4_a298403b8085c58e3f18d61877f2186a5}{apply}} = const volatile U} + + + +Definition at line 191 of file stl.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/concepts/\mbox{\hyperlink{stl_8h}{stl.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1common__impl_1_1____xref_3_01volatile_01_t_01_4.tex b/doc/latex/structutl_1_1common__impl_1_1____xref_3_01volatile_01_t_01_4.tex new file mode 100644 index 0000000..26b488a --- /dev/null +++ b/doc/latex/structutl_1_1common__impl_1_1____xref_3_01volatile_01_t_01_4.tex @@ -0,0 +1,41 @@ +\hypertarget{structutl_1_1common__impl_1_1____xref_3_01volatile_01_t_01_4}{}\section{utl\+:\+:common\+\_\+impl\+:\+:\+\_\+\+\_\+xref$<$ volatile T $>$ Struct Template Reference} +\label{structutl_1_1common__impl_1_1____xref_3_01volatile_01_t_01_4}\index{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ volatile T $>$@{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ volatile T $>$}} + + +{\ttfamily \#include $<$stl.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$class U $>$ }\\using \mbox{\hyperlink{structutl_1_1common__impl_1_1____xref_3_01volatile_01_t_01_4_affd4de84c60ada7d645b9f4d66f17b25}{apply}} = volatile U +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class T$>$\newline +struct utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ volatile T $>$} + + + +Definition at line 186 of file stl.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1common__impl_1_1____xref_3_01volatile_01_t_01_4_affd4de84c60ada7d645b9f4d66f17b25}\label{structutl_1_1common__impl_1_1____xref_3_01volatile_01_t_01_4_affd4de84c60ada7d645b9f4d66f17b25}} +\index{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ volatile T $>$@{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ volatile T $>$}!apply@{apply}} +\index{apply@{apply}!utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ volatile T $>$@{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref$<$ volatile T $>$}} +\subsubsection{\texorpdfstring{apply}{apply}} +{\footnotesize\ttfamily template$<$class T $>$ \\ +template$<$class U $>$ \\ +using \mbox{\hyperlink{structutl_1_1common__impl_1_1____xref}{utl\+::common\+\_\+impl\+::\+\_\+\+\_\+xref}}$<$ volatile T $>$\+::\mbox{\hyperlink{structutl_1_1common__impl_1_1____xref_3_01volatile_01_t_01_4_affd4de84c60ada7d645b9f4d66f17b25}{apply}} = volatile U} + + + +Definition at line 187 of file stl.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/concepts/\mbox{\hyperlink{stl_8h}{stl.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1common__impl_1_1basic__common__reference.tex b/doc/latex/structutl_1_1common__impl_1_1basic__common__reference.tex new file mode 100644 index 0000000..485c497 --- /dev/null +++ b/doc/latex/structutl_1_1common__impl_1_1basic__common__reference.tex @@ -0,0 +1,21 @@ +\hypertarget{structutl_1_1common__impl_1_1basic__common__reference}{}\section{utl\+:\+:common\+\_\+impl\+:\+:basic\+\_\+common\+\_\+reference$<$ class, class, class, class $>$ Struct Template Reference} +\label{structutl_1_1common__impl_1_1basic__common__reference}\index{utl\+::common\+\_\+impl\+::basic\+\_\+common\+\_\+reference$<$ class, class, class, class $>$@{utl\+::common\+\_\+impl\+::basic\+\_\+common\+\_\+reference$<$ class, class, class, class $>$}} + + +{\ttfamily \#include $<$stl.\+h$>$} + + + +\subsection{Detailed Description} +\subsubsection*{template$<$class, class, template$<$ class $>$ class, template$<$ class $>$ class$>$\newline +struct utl\+::common\+\_\+impl\+::basic\+\_\+common\+\_\+reference$<$ class, class, class, class $>$} + + + +Definition at line 209 of file stl.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/concepts/\mbox{\hyperlink{stl_8h}{stl.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1common__impl_1_1common__reference.tex b/doc/latex/structutl_1_1common__impl_1_1common__reference.tex new file mode 100644 index 0000000..6de809b --- /dev/null +++ b/doc/latex/structutl_1_1common__impl_1_1common__reference.tex @@ -0,0 +1,21 @@ +\hypertarget{structutl_1_1common__impl_1_1common__reference}{}\section{utl\+:\+:common\+\_\+impl\+:\+:common\+\_\+reference$<$... $>$ Struct Template Reference} +\label{structutl_1_1common__impl_1_1common__reference}\index{utl\+::common\+\_\+impl\+::common\+\_\+reference$<$... $>$@{utl\+::common\+\_\+impl\+::common\+\_\+reference$<$... $>$}} + + +{\ttfamily \#include $<$stl.\+h$>$} + + + +\subsection{Detailed Description} +\subsubsection*{template$<$class...$>$\newline +struct utl\+::common\+\_\+impl\+::common\+\_\+reference$<$... $>$} + + + +Definition at line 222 of file stl.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/concepts/\mbox{\hyperlink{stl_8h}{stl.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_00_01_v_00_01_w_8_8_8_01_4.eps b/doc/latex/structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_00_01_v_00_01_w_8_8_8_01_4.eps new file mode 100644 index 0000000..ca39133 --- /dev/null +++ b/doc/latex/structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_00_01_v_00_01_w_8_8_8_01_4.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 85.106383 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 5.875000 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::common_impl::common_reference< T, U, V, W... >) cw +(utl::common_impl::common_reference< common_reference_t< T, U >, V, W... >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::common_impl::common_reference< T, U, V, W... >) 0.000000 0.000000 box + (utl::common_impl::common_reference< common_reference_t< T, U >, V, W... >) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_00_01_v_00_01_w_8_8_8_01_4.tex b/doc/latex/structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_00_01_v_00_01_w_8_8_8_01_4.tex new file mode 100644 index 0000000..c648a8b --- /dev/null +++ b/doc/latex/structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_00_01_v_00_01_w_8_8_8_01_4.tex @@ -0,0 +1,27 @@ +\hypertarget{structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_00_01_v_00_01_w_8_8_8_01_4}{}\section{utl\+:\+:common\+\_\+impl\+:\+:common\+\_\+reference$<$ T, U, V, W... $>$ Struct Template Reference} +\label{structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_00_01_v_00_01_w_8_8_8_01_4}\index{utl\+::common\+\_\+impl\+::common\+\_\+reference$<$ T, U, V, W... $>$@{utl\+::common\+\_\+impl\+::common\+\_\+reference$<$ T, U, V, W... $>$}} + + +{\ttfamily \#include $<$stl.\+h$>$} + +Inheritance diagram for utl\+:\+:common\+\_\+impl\+:\+:common\+\_\+reference$<$ T, U, V, W... $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_00_01_v_00_01_w_8_8_8_01_4} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class T, class U, class V, class... W$>$\newline +struct utl\+::common\+\_\+impl\+::common\+\_\+reference$<$ T, U, V, W... $>$} + + + +Definition at line 274 of file stl.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/concepts/\mbox{\hyperlink{stl_8h}{stl.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_01_4.eps b/doc/latex/structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_01_4.eps new file mode 100644 index 0000000..7d71615 --- /dev/null +++ b/doc/latex/structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_01_4.eps @@ -0,0 +1,215 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 335.570470 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.490000 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 5 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::common_impl::common_reference< T, U >) cw +(utl::common_impl::__common_reference< T, U >) cw +(utl::common_impl::__common_reference2< T, U >) cw +(utl::common_impl::__common_reference3< T, U >) cw +(std::common_type< T, U >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::common_impl::common_reference< T, U >) 0.000000 0.000000 box + (utl::common_impl::__common_reference< T, U >) 0.000000 1.000000 box + (utl::common_impl::__common_reference2< T, U >) 0.000000 2.000000 box + (utl::common_impl::__common_reference3< T, U >) 0.000000 3.000000 box + (std::common_type< T, U >) 0.000000 4.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in +solid +0 0.000000 1.000000 out +solid +1 0.000000 2.000000 in +solid +0 0.000000 2.000000 out +solid +1 0.000000 3.000000 in +solid +0 0.000000 3.000000 out +solid +1 0.000000 4.000000 in diff --git a/doc/latex/structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_01_4.tex b/doc/latex/structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_01_4.tex new file mode 100644 index 0000000..ddbba92 --- /dev/null +++ b/doc/latex/structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_01_4.tex @@ -0,0 +1,27 @@ +\hypertarget{structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_01_4}{}\section{utl\+:\+:common\+\_\+impl\+:\+:common\+\_\+reference$<$ T, U $>$ Struct Template Reference} +\label{structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_01_4}\index{utl\+::common\+\_\+impl\+::common\+\_\+reference$<$ T, U $>$@{utl\+::common\+\_\+impl\+::common\+\_\+reference$<$ T, U $>$}} + + +{\ttfamily \#include $<$stl.\+h$>$} + +Inheritance diagram for utl\+:\+:common\+\_\+impl\+:\+:common\+\_\+reference$<$ T, U $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=5.000000cm]{structutl_1_1common__impl_1_1common__reference_3_01_t_00_01_u_01_4} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class T, class U$>$\newline +struct utl\+::common\+\_\+impl\+::common\+\_\+reference$<$ T, U $>$} + + + +Definition at line 269 of file stl.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/concepts/\mbox{\hyperlink{stl_8h}{stl.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1common__impl_1_1common__reference_3_01_t_01_4.tex b/doc/latex/structutl_1_1common__impl_1_1common__reference_3_01_t_01_4.tex new file mode 100644 index 0000000..49d22a3 --- /dev/null +++ b/doc/latex/structutl_1_1common__impl_1_1common__reference_3_01_t_01_4.tex @@ -0,0 +1,40 @@ +\hypertarget{structutl_1_1common__impl_1_1common__reference_3_01_t_01_4}{}\section{utl\+:\+:common\+\_\+impl\+:\+:common\+\_\+reference$<$ T $>$ Struct Template Reference} +\label{structutl_1_1common__impl_1_1common__reference_3_01_t_01_4}\index{utl\+::common\+\_\+impl\+::common\+\_\+reference$<$ T $>$@{utl\+::common\+\_\+impl\+::common\+\_\+reference$<$ T $>$}} + + +{\ttfamily \#include $<$stl.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1common__impl_1_1common__reference_3_01_t_01_4_ad228404ea08fbb8929dc7792a803c5a4}{type}} = T +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class T$>$\newline +struct utl\+::common\+\_\+impl\+::common\+\_\+reference$<$ T $>$} + + + +Definition at line 231 of file stl.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1common__impl_1_1common__reference_3_01_t_01_4_ad228404ea08fbb8929dc7792a803c5a4}\label{structutl_1_1common__impl_1_1common__reference_3_01_t_01_4_ad228404ea08fbb8929dc7792a803c5a4}} +\index{utl\+::common\+\_\+impl\+::common\+\_\+reference$<$ T $>$@{utl\+::common\+\_\+impl\+::common\+\_\+reference$<$ T $>$}!type@{type}} +\index{type@{type}!utl\+::common\+\_\+impl\+::common\+\_\+reference$<$ T $>$@{utl\+::common\+\_\+impl\+::common\+\_\+reference$<$ T $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$class T $>$ \\ +using \mbox{\hyperlink{structutl_1_1common__impl_1_1common__reference}{utl\+::common\+\_\+impl\+::common\+\_\+reference}}$<$ T $>$\+::\mbox{\hyperlink{structutl_1_1common__impl_1_1common__reference_3_01_t_01_4_ad228404ea08fbb8929dc7792a803c5a4}{type}} = T} + + + +Definition at line 232 of file stl.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/concepts/\mbox{\hyperlink{stl_8h}{stl.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1contiguous__iterator__tag.eps b/doc/latex/structutl_1_1contiguous__iterator__tag.eps new file mode 100644 index 0000000..cce69ea --- /dev/null +++ b/doc/latex/structutl_1_1contiguous__iterator__tag.eps @@ -0,0 +1,215 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 502.512563 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 0.995000 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 5 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::contiguous_iterator_tag) cw +(utl::random_access_iterator_tag) cw +(utl::bidirectional_iterator_tag) cw +(utl::forward_iterator_tag) cw +(utl::input_iterator_tag) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::contiguous_iterator_tag) 0.000000 0.000000 box + (utl::random_access_iterator_tag) 0.000000 1.000000 box + (utl::bidirectional_iterator_tag) 0.000000 2.000000 box + (utl::forward_iterator_tag) 0.000000 3.000000 box + (utl::input_iterator_tag) 0.000000 4.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in +solid +0 0.000000 1.000000 out +solid +1 0.000000 2.000000 in +solid +0 0.000000 2.000000 out +solid +1 0.000000 3.000000 in +solid +0 0.000000 3.000000 out +solid +1 0.000000 4.000000 in diff --git a/doc/latex/structutl_1_1contiguous__iterator__tag.tex b/doc/latex/structutl_1_1contiguous__iterator__tag.tex new file mode 100644 index 0000000..4d7860f --- /dev/null +++ b/doc/latex/structutl_1_1contiguous__iterator__tag.tex @@ -0,0 +1,24 @@ +\hypertarget{structutl_1_1contiguous__iterator__tag}{}\section{utl\+:\+:contiguous\+\_\+iterator\+\_\+tag Struct Reference} +\label{structutl_1_1contiguous__iterator__tag}\index{utl\+::contiguous\+\_\+iterator\+\_\+tag@{utl\+::contiguous\+\_\+iterator\+\_\+tag}} + + +{\ttfamily \#include $<$dev\+\_\+iterators.\+h$>$} + +Inheritance diagram for utl\+:\+:contiguous\+\_\+iterator\+\_\+tag\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=5.000000cm]{structutl_1_1contiguous__iterator__tag} +\end{center} +\end{figure} + + +\subsection{Detailed Description} + + +Definition at line 60 of file dev\+\_\+iterators.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/dev/\mbox{\hyperlink{dev__iterators_8h}{dev\+\_\+iterators.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1crtp__tag.tex b/doc/latex/structutl_1_1crtp__tag.tex new file mode 100644 index 0000000..8be503e --- /dev/null +++ b/doc/latex/structutl_1_1crtp__tag.tex @@ -0,0 +1,23 @@ +\hypertarget{structutl_1_1crtp__tag}{}\section{utl\+:\+:crtp\+\_\+tag Struct Reference} +\label{structutl_1_1crtp__tag}\index{utl\+::crtp\+\_\+tag@{utl\+::crtp\+\_\+tag}} + + +C\+R\+TP support tag type. + + + + +{\ttfamily \#include $<$crtp.\+h$>$} + + + +\subsection{Detailed Description} +C\+R\+TP support tag type. + +Definition at line 38 of file crtp.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/core/\mbox{\hyperlink{crtp_8h}{crtp.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1detail_1_1invoke__result__.tex b/doc/latex/structutl_1_1detail_1_1invoke__result__.tex new file mode 100644 index 0000000..76a9f67 --- /dev/null +++ b/doc/latex/structutl_1_1detail_1_1invoke__result__.tex @@ -0,0 +1,40 @@ +\hypertarget{structutl_1_1detail_1_1invoke__result__}{}\section{utl\+:\+:detail\+:\+:invoke\+\_\+result\+\_\+$<$ B, \+\_\+\+Callable, \+\_\+\+Args $>$ Struct Template Reference} +\label{structutl_1_1detail_1_1invoke__result__}\index{utl\+::detail\+::invoke\+\_\+result\+\_\+$<$ B, \+\_\+\+Callable, \+\_\+\+Args $>$@{utl\+::detail\+::invoke\+\_\+result\+\_\+$<$ B, \+\_\+\+Callable, \+\_\+\+Args $>$}} + + +{\ttfamily \#include $<$invoke.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1detail_1_1invoke__result___a03e0ac5bf1e7751812af8828eb6550b3}{type}} = \mbox{\hyperlink{structutl_1_1meta_1_1nil__}{meta\+::nil\+\_\+}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$bool B, typename \+\_\+\+Callable, typename... \+\_\+\+Args$>$\newline +struct utl\+::detail\+::invoke\+\_\+result\+\_\+$<$ B, \+\_\+\+Callable, \+\_\+\+Args $>$} + + + +Definition at line 157 of file invoke.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1detail_1_1invoke__result___a03e0ac5bf1e7751812af8828eb6550b3}\label{structutl_1_1detail_1_1invoke__result___a03e0ac5bf1e7751812af8828eb6550b3}} +\index{utl\+::detail\+::invoke\+\_\+result\+\_\+@{utl\+::detail\+::invoke\+\_\+result\+\_\+}!type@{type}} +\index{type@{type}!utl\+::detail\+::invoke\+\_\+result\+\_\+@{utl\+::detail\+::invoke\+\_\+result\+\_\+}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$bool B, typename \+\_\+\+Callable , typename... \+\_\+\+Args$>$ \\ +using \mbox{\hyperlink{structutl_1_1detail_1_1invoke__result__}{utl\+::detail\+::invoke\+\_\+result\+\_\+}}$<$ B, \+\_\+\+Callable, \+\_\+\+Args $>$\+::\mbox{\hyperlink{structutl_1_1detail_1_1invoke__result___a03e0ac5bf1e7751812af8828eb6550b3}{type}} = \mbox{\hyperlink{structutl_1_1meta_1_1nil__}{meta\+::nil\+\_\+}}} + + + +Definition at line 158 of file invoke.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/utility/\mbox{\hyperlink{utility_2invoke_8h}{invoke.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1detail_1_1invoke__result___3_01true_00_01___callable_00_01___args_8_8_8_01_4.tex b/doc/latex/structutl_1_1detail_1_1invoke__result___3_01true_00_01___callable_00_01___args_8_8_8_01_4.tex new file mode 100644 index 0000000..fccf477 --- /dev/null +++ b/doc/latex/structutl_1_1detail_1_1invoke__result___3_01true_00_01___callable_00_01___args_8_8_8_01_4.tex @@ -0,0 +1,40 @@ +\hypertarget{structutl_1_1detail_1_1invoke__result___3_01true_00_01___callable_00_01___args_8_8_8_01_4}{}\section{utl\+:\+:detail\+:\+:invoke\+\_\+result\+\_\+$<$ true, \+\_\+\+Callable, \+\_\+\+Args... $>$ Struct Template Reference} +\label{structutl_1_1detail_1_1invoke__result___3_01true_00_01___callable_00_01___args_8_8_8_01_4}\index{utl\+::detail\+::invoke\+\_\+result\+\_\+$<$ true, \+\_\+\+Callable, \+\_\+\+Args... $>$@{utl\+::detail\+::invoke\+\_\+result\+\_\+$<$ true, \+\_\+\+Callable, \+\_\+\+Args... $>$}} + + +{\ttfamily \#include $<$invoke.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1detail_1_1invoke__result___3_01true_00_01___callable_00_01___args_8_8_8_01_4_af68f2e0441486139aab41a8d5e74b35a}{type}} = \mbox{\hyperlink{namespaceutl_1_1meta_ac27f3e5f3ec42921d9f8a6bb85560cf1}{meta\+::invoke\+\_\+t}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1quote}{meta\+::quote}}$<$ \mbox{\hyperlink{structutl_1_1detail_1_1try__invoke}{try\+\_\+invoke}} $>$, \+\_\+\+Callable, \+\_\+\+Args... $>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename \+\_\+\+Callable, typename... \+\_\+\+Args$>$\newline +struct utl\+::detail\+::invoke\+\_\+result\+\_\+$<$ true, \+\_\+\+Callable, \+\_\+\+Args... $>$} + + + +Definition at line 162 of file invoke.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1detail_1_1invoke__result___3_01true_00_01___callable_00_01___args_8_8_8_01_4_af68f2e0441486139aab41a8d5e74b35a}\label{structutl_1_1detail_1_1invoke__result___3_01true_00_01___callable_00_01___args_8_8_8_01_4_af68f2e0441486139aab41a8d5e74b35a}} +\index{utl\+::detail\+::invoke\+\_\+result\+\_\+$<$ true, \+\_\+\+Callable, \+\_\+\+Args... $>$@{utl\+::detail\+::invoke\+\_\+result\+\_\+$<$ true, \+\_\+\+Callable, \+\_\+\+Args... $>$}!type@{type}} +\index{type@{type}!utl\+::detail\+::invoke\+\_\+result\+\_\+$<$ true, \+\_\+\+Callable, \+\_\+\+Args... $>$@{utl\+::detail\+::invoke\+\_\+result\+\_\+$<$ true, \+\_\+\+Callable, \+\_\+\+Args... $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Callable , typename... \+\_\+\+Args$>$ \\ +using \mbox{\hyperlink{structutl_1_1detail_1_1invoke__result__}{utl\+::detail\+::invoke\+\_\+result\+\_\+}}$<$ true, \+\_\+\+Callable, \+\_\+\+Args... $>$\+::\mbox{\hyperlink{structutl_1_1detail_1_1invoke__result___3_01true_00_01___callable_00_01___args_8_8_8_01_4_af68f2e0441486139aab41a8d5e74b35a}{type}} = \mbox{\hyperlink{namespaceutl_1_1meta_ac27f3e5f3ec42921d9f8a6bb85560cf1}{meta\+::invoke\+\_\+t}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1quote}{meta\+::quote}}$<$\mbox{\hyperlink{structutl_1_1detail_1_1try__invoke}{try\+\_\+invoke}}$>$, \+\_\+\+Callable, \+\_\+\+Args... $>$} + + + +Definition at line 165 of file invoke.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/utility/\mbox{\hyperlink{utility_2invoke_8h}{invoke.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1detail_1_1is__ref__wrapper.eps b/doc/latex/structutl_1_1detail_1_1is__ref__wrapper.eps new file mode 100644 index 0000000..ca8f2df --- /dev/null +++ b/doc/latex/structutl_1_1detail_1_1is__ref__wrapper.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 208.333333 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.400000 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::detail::is_ref_wrapper< T >) cw +(false_) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::detail::is_ref_wrapper< T >) 0.000000 0.000000 box + (false_) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/structutl_1_1detail_1_1is__ref__wrapper.tex b/doc/latex/structutl_1_1detail_1_1is__ref__wrapper.tex new file mode 100644 index 0000000..ed91dac --- /dev/null +++ b/doc/latex/structutl_1_1detail_1_1is__ref__wrapper.tex @@ -0,0 +1,27 @@ +\hypertarget{structutl_1_1detail_1_1is__ref__wrapper}{}\section{utl\+:\+:detail\+:\+:is\+\_\+ref\+\_\+wrapper$<$ T $>$ Struct Template Reference} +\label{structutl_1_1detail_1_1is__ref__wrapper}\index{utl\+::detail\+::is\+\_\+ref\+\_\+wrapper$<$ T $>$@{utl\+::detail\+::is\+\_\+ref\+\_\+wrapper$<$ T $>$}} + + +{\ttfamily \#include $<$invoke.\+h$>$} + +Inheritance diagram for utl\+:\+:detail\+:\+:is\+\_\+ref\+\_\+wrapper$<$ T $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{structutl_1_1detail_1_1is__ref__wrapper} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class T$>$\newline +struct utl\+::detail\+::is\+\_\+ref\+\_\+wrapper$<$ T $>$} + + + +Definition at line 40 of file invoke.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/utility/\mbox{\hyperlink{utility_2invoke_8h}{invoke.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1detail_1_1is__ref__wrapper_3_01std_1_1reference__wrapper_3_01_u_01_4_01_4.eps b/doc/latex/structutl_1_1detail_1_1is__ref__wrapper_3_01std_1_1reference__wrapper_3_01_u_01_4_01_4.eps new file mode 100644 index 0000000..25c3c8f --- /dev/null +++ b/doc/latex/structutl_1_1detail_1_1is__ref__wrapper_3_01std_1_1reference__wrapper_3_01_u_01_4_01_4.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 114.613181 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 4.362500 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::detail::is_ref_wrapper< std::reference_wrapper< U > >) cw +(true_) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::detail::is_ref_wrapper< std::reference_wrapper< U > >) 0.000000 0.000000 box + (true_) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/structutl_1_1detail_1_1is__ref__wrapper_3_01std_1_1reference__wrapper_3_01_u_01_4_01_4.tex b/doc/latex/structutl_1_1detail_1_1is__ref__wrapper_3_01std_1_1reference__wrapper_3_01_u_01_4_01_4.tex new file mode 100644 index 0000000..56e977a --- /dev/null +++ b/doc/latex/structutl_1_1detail_1_1is__ref__wrapper_3_01std_1_1reference__wrapper_3_01_u_01_4_01_4.tex @@ -0,0 +1,27 @@ +\hypertarget{structutl_1_1detail_1_1is__ref__wrapper_3_01std_1_1reference__wrapper_3_01_u_01_4_01_4}{}\section{utl\+:\+:detail\+:\+:is\+\_\+ref\+\_\+wrapper$<$ std\+:\+:reference\+\_\+wrapper$<$ U $>$ $>$ Struct Template Reference} +\label{structutl_1_1detail_1_1is__ref__wrapper_3_01std_1_1reference__wrapper_3_01_u_01_4_01_4}\index{utl\+::detail\+::is\+\_\+ref\+\_\+wrapper$<$ std\+::reference\+\_\+wrapper$<$ U $>$ $>$@{utl\+::detail\+::is\+\_\+ref\+\_\+wrapper$<$ std\+::reference\+\_\+wrapper$<$ U $>$ $>$}} + + +{\ttfamily \#include $<$invoke.\+h$>$} + +Inheritance diagram for utl\+:\+:detail\+:\+:is\+\_\+ref\+\_\+wrapper$<$ std\+:\+:reference\+\_\+wrapper$<$ U $>$ $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{structutl_1_1detail_1_1is__ref__wrapper_3_01std_1_1reference__wrapper_3_01_u_01_4_01_4} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$class U$>$\newline +struct utl\+::detail\+::is\+\_\+ref\+\_\+wrapper$<$ std\+::reference\+\_\+wrapper$<$ U $>$ $>$} + + + +Definition at line 42 of file invoke.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/utility/\mbox{\hyperlink{utility_2invoke_8h}{invoke.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1detail_1_1try__invoke.tex b/doc/latex/structutl_1_1detail_1_1try__invoke.tex new file mode 100644 index 0000000..9b384f6 --- /dev/null +++ b/doc/latex/structutl_1_1detail_1_1try__invoke.tex @@ -0,0 +1,40 @@ +\hypertarget{structutl_1_1detail_1_1try__invoke}{}\section{utl\+:\+:detail\+:\+:try\+\_\+invoke$<$ \+\_\+\+Callable, \+\_\+\+Args $>$ Struct Template Reference} +\label{structutl_1_1detail_1_1try__invoke}\index{utl\+::detail\+::try\+\_\+invoke$<$ \+\_\+\+Callable, \+\_\+\+Args $>$@{utl\+::detail\+::try\+\_\+invoke$<$ \+\_\+\+Callable, \+\_\+\+Args $>$}} + + +{\ttfamily \#include $<$invoke.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1detail_1_1try__invoke_a23491c600d42090f3eb400eadc49ef7f}{type}} = decltype(\mbox{\hyperlink{namespaceutl_1_1detail_a2c39a67272ada5da5f1b84115dadc4a1}{detail\+::invoke\+\_\+impl\+\_\+}}(std\+::declval$<$ \+\_\+\+Callable \&\& $>$(), std\+::declval$<$ \+\_\+\+Args \&\& $>$()...)) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename \+\_\+\+Callable, typename... \+\_\+\+Args$>$\newline +struct utl\+::detail\+::try\+\_\+invoke$<$ \+\_\+\+Callable, \+\_\+\+Args $>$} + + + +Definition at line 150 of file invoke.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1detail_1_1try__invoke_a23491c600d42090f3eb400eadc49ef7f}\label{structutl_1_1detail_1_1try__invoke_a23491c600d42090f3eb400eadc49ef7f}} +\index{utl\+::detail\+::try\+\_\+invoke@{utl\+::detail\+::try\+\_\+invoke}!type@{type}} +\index{type@{type}!utl\+::detail\+::try\+\_\+invoke@{utl\+::detail\+::try\+\_\+invoke}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Callable , typename... \+\_\+\+Args$>$ \\ +using \mbox{\hyperlink{structutl_1_1detail_1_1try__invoke}{utl\+::detail\+::try\+\_\+invoke}}$<$ \+\_\+\+Callable, \+\_\+\+Args $>$\+::\mbox{\hyperlink{structutl_1_1detail_1_1try__invoke_a23491c600d42090f3eb400eadc49ef7f}{type}} = decltype ( \mbox{\hyperlink{namespaceutl_1_1detail_a2c39a67272ada5da5f1b84115dadc4a1}{detail\+::invoke\+\_\+impl\+\_\+}}(std\+::declval$<$\+\_\+\+Callable\&\&$>$(), std\+::declval$<$\+\_\+\+Args\&\&$>$()...) )} + + + +Definition at line 153 of file invoke.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/utility/\mbox{\hyperlink{utility_2invoke_8h}{invoke.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1details_1_1is__boolean__.tex b/doc/latex/structutl_1_1details_1_1is__boolean__.tex new file mode 100644 index 0000000..40d075c --- /dev/null +++ b/doc/latex/structutl_1_1details_1_1is__boolean__.tex @@ -0,0 +1,40 @@ +\hypertarget{structutl_1_1details_1_1is__boolean__}{}\section{utl\+:\+:details\+:\+:is\+\_\+boolean\+\_\+$<$ B, typename $>$ Struct Template Reference} +\label{structutl_1_1details_1_1is__boolean__}\index{utl\+::details\+::is\+\_\+boolean\+\_\+$<$ B, typename $>$@{utl\+::details\+::is\+\_\+boolean\+\_\+$<$ B, typename $>$}} + + +{\ttfamily \#include $<$stl.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1details_1_1is__boolean___ad34df9d79caf33bf92019da4232b791c}{type}} = \mbox{\hyperlink{namespaceutl_1_1meta_a55511dbaa0adb605ce22dcec11f8d22d}{meta\+::false\+\_\+}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename B, typename = void$>$\newline +struct utl\+::details\+::is\+\_\+boolean\+\_\+$<$ B, typename $>$} + + + +Definition at line 530 of file stl.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1details_1_1is__boolean___ad34df9d79caf33bf92019da4232b791c}\label{structutl_1_1details_1_1is__boolean___ad34df9d79caf33bf92019da4232b791c}} +\index{utl\+::details\+::is\+\_\+boolean\+\_\+@{utl\+::details\+::is\+\_\+boolean\+\_\+}!type@{type}} +\index{type@{type}!utl\+::details\+::is\+\_\+boolean\+\_\+@{utl\+::details\+::is\+\_\+boolean\+\_\+}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename B , typename = void$>$ \\ +using \mbox{\hyperlink{structutl_1_1details_1_1is__boolean__}{utl\+::details\+::is\+\_\+boolean\+\_\+}}$<$ B, typename $>$\+::\mbox{\hyperlink{structutl_1_1details_1_1is__boolean___ad34df9d79caf33bf92019da4232b791c}{type}} = \mbox{\hyperlink{namespaceutl_1_1meta_a55511dbaa0adb605ce22dcec11f8d22d}{meta\+::false\+\_\+}}} + + + +Definition at line 531 of file stl.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/concepts/\mbox{\hyperlink{stl_8h}{stl.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1details_1_1is__boolean___3_01_b_00_01meta_1_1void__t_3_01meta_1_1use__if__same__t_37e77ed45a431955fc15b4c1210ad8491.tex b/doc/latex/structutl_1_1details_1_1is__boolean___3_01_b_00_01meta_1_1void__t_3_01meta_1_1use__if__same__t_37e77ed45a431955fc15b4c1210ad8491.tex new file mode 100644 index 0000000..2358ea6 --- /dev/null +++ b/doc/latex/structutl_1_1details_1_1is__boolean___3_01_b_00_01meta_1_1void__t_3_01meta_1_1use__if__same__t_37e77ed45a431955fc15b4c1210ad8491.tex @@ -0,0 +1,40 @@ +\hypertarget{structutl_1_1details_1_1is__boolean___3_01_b_00_01meta_1_1void__t_3_01meta_1_1use__if__same__t_37e77ed45a431955fc15b4c1210ad8491}{}\section{utl\+:\+:details\+:\+:is\+\_\+boolean\+\_\+$<$ B, meta\+:\+:void\+\_\+t$<$ meta\+:\+:use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(!std\+:\+:declval$<$ cref\+\_\+$<$ B $>$$>$())$>$, meta\+:\+:use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+:\+:declval$<$ cref\+\_\+$<$ B $>$$>$()==std\+:\+:declval$<$ cref\+\_\+$<$ B $>$$>$())$>$, meta\+:\+:use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+:\+:declval$<$ cref\+\_\+$<$ B $>$$>$() !=std\+:\+:declval$<$ cref\+\_\+$<$ B $>$$>$())$>$, meta\+:\+:use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+:\+:declval$<$ cref\+\_\+$<$ B $>$$>$() \&\&std\+:\+:declval$<$ cref\+\_\+$<$ B $>$$>$())$>$, meta\+:\+:use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+:\+:declval$<$ cref\+\_\+$<$ B $>$$>$()$\vert$$\vert$std\+:\+:declval$<$ cref\+\_\+$<$ B $>$$>$())$>$ $>$ $>$ Struct Template Reference} +\label{structutl_1_1details_1_1is__boolean___3_01_b_00_01meta_1_1void__t_3_01meta_1_1use__if__same__t_37e77ed45a431955fc15b4c1210ad8491}\index{utl\+::details\+::is\+\_\+boolean\+\_\+$<$ B, meta\+::void\+\_\+t$<$ meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype("!std\+::declval$<$ cref\+\_\+$<$ B $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ B $>$$>$()==std\+::declval$<$ cref\+\_\+$<$ B $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ B $>$$>$() "!=std\+::declval$<$ cref\+\_\+$<$ B $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ B $>$$>$() \&\&std\+::declval$<$ cref\+\_\+$<$ B $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ B $>$$>$()\texttt{"|}\texttt{"|}std\+::declval$<$ cref\+\_\+$<$ B $>$$>$())$>$ $>$ $>$@{utl\+::details\+::is\+\_\+boolean\+\_\+$<$ B, meta\+::void\+\_\+t$<$ meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype("!std\+::declval$<$ cref\+\_\+$<$ B $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ B $>$$>$()==std\+::declval$<$ cref\+\_\+$<$ B $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ B $>$$>$() "!=std\+::declval$<$ cref\+\_\+$<$ B $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ B $>$$>$() \&\&std\+::declval$<$ cref\+\_\+$<$ B $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ B $>$$>$()\texttt{"|}\texttt{"|}std\+::declval$<$ cref\+\_\+$<$ B $>$$>$())$>$ $>$ $>$}} + + +{\ttfamily \#include $<$stl.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1details_1_1is__boolean___3_01_b_00_01meta_1_1void__t_3_01meta_1_1use__if__same__t_37e77ed45a431955fc15b4c1210ad8491_abfb3ea1ef62c31310d992fde67f92900}{type}} = \mbox{\hyperlink{namespaceutl_1_1meta_ae9a5a8fbe8202785f059935af219fb97}{meta\+::true\+\_\+}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename B$>$\newline +struct utl\+::details\+::is\+\_\+boolean\+\_\+$<$ B, meta\+::void\+\_\+t$<$ meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(!std\+::declval$<$ cref\+\_\+$<$ B $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ B $>$$>$()==std\+::declval$<$ cref\+\_\+$<$ B $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ B $>$$>$() !=std\+::declval$<$ cref\+\_\+$<$ B $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ B $>$$>$() \&\&std\+::declval$<$ cref\+\_\+$<$ B $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ B $>$$>$()$\vert$$\vert$std\+::declval$<$ cref\+\_\+$<$ B $>$$>$())$>$ $>$ $>$} + + + +Definition at line 535 of file stl.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1details_1_1is__boolean___3_01_b_00_01meta_1_1void__t_3_01meta_1_1use__if__same__t_37e77ed45a431955fc15b4c1210ad8491_abfb3ea1ef62c31310d992fde67f92900}\label{structutl_1_1details_1_1is__boolean___3_01_b_00_01meta_1_1void__t_3_01meta_1_1use__if__same__t_37e77ed45a431955fc15b4c1210ad8491_abfb3ea1ef62c31310d992fde67f92900}} +\index{utl\+::details\+::is\+\_\+boolean\+\_\+$<$ B, meta\+::void\+\_\+t$<$ meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype("!std\+::declval$<$ cref\+\_\+$<$ B $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ B $>$$>$()==std\+::declval$<$ cref\+\_\+$<$ B $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ B $>$$>$() "!=std\+::declval$<$ cref\+\_\+$<$ B $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ B $>$$>$() \&\&std\+::declval$<$ cref\+\_\+$<$ B $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ B $>$$>$()\texttt{"|}\texttt{"|}std\+::declval$<$ cref\+\_\+$<$ B $>$$>$())$>$ $>$ $>$@{utl\+::details\+::is\+\_\+boolean\+\_\+$<$ B, meta\+::void\+\_\+t$<$ meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype("!std\+::declval$<$ cref\+\_\+$<$ B $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ B $>$$>$()==std\+::declval$<$ cref\+\_\+$<$ B $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ B $>$$>$() "!=std\+::declval$<$ cref\+\_\+$<$ B $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ B $>$$>$() \&\&std\+::declval$<$ cref\+\_\+$<$ B $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ B $>$$>$()\texttt{"|}\texttt{"|}std\+::declval$<$ cref\+\_\+$<$ B $>$$>$())$>$ $>$ $>$}!type@{type}} +\index{type@{type}!utl\+::details\+::is\+\_\+boolean\+\_\+$<$ B, meta\+::void\+\_\+t$<$ meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype("!std\+::declval$<$ cref\+\_\+$<$ B $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ B $>$$>$()==std\+::declval$<$ cref\+\_\+$<$ B $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ B $>$$>$() "!=std\+::declval$<$ cref\+\_\+$<$ B $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ B $>$$>$() \&\&std\+::declval$<$ cref\+\_\+$<$ B $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ B $>$$>$()\texttt{"|}\texttt{"|}std\+::declval$<$ cref\+\_\+$<$ B $>$$>$())$>$ $>$ $>$@{utl\+::details\+::is\+\_\+boolean\+\_\+$<$ B, meta\+::void\+\_\+t$<$ meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype("!std\+::declval$<$ cref\+\_\+$<$ B $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ B $>$$>$()==std\+::declval$<$ cref\+\_\+$<$ B $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ B $>$$>$() "!=std\+::declval$<$ cref\+\_\+$<$ B $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ B $>$$>$() \&\&std\+::declval$<$ cref\+\_\+$<$ B $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ B $>$$>$()\texttt{"|}\texttt{"|}std\+::declval$<$ cref\+\_\+$<$ B $>$$>$())$>$ $>$ $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename B $>$ \\ +using \mbox{\hyperlink{structutl_1_1details_1_1is__boolean__}{utl\+::details\+::is\+\_\+boolean\+\_\+}}$<$ B, \mbox{\hyperlink{group__detection_gae7373c997420d16cf37e542eb3cfa3ad}{meta\+::void\+\_\+t}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_a7b4ba22b3afb3e7a98e1012a350cb573}{meta\+::use\+\_\+if\+\_\+same\+\_\+t}}$<$ bool, decltype(!std\+::declval$<$ \mbox{\hyperlink{namespaceutl_a7d69beba08b81379703fd3b0ca42044d}{cref\+\_\+}}$<$ B $>$$>$())$>$, \mbox{\hyperlink{namespaceutl_1_1meta_a7b4ba22b3afb3e7a98e1012a350cb573}{meta\+::use\+\_\+if\+\_\+same\+\_\+t}}$<$ bool, decltype(std\+::declval$<$ \mbox{\hyperlink{namespaceutl_a7d69beba08b81379703fd3b0ca42044d}{cref\+\_\+}}$<$ B $>$$>$()==std\+::declval$<$ \mbox{\hyperlink{namespaceutl_a7d69beba08b81379703fd3b0ca42044d}{cref\+\_\+}}$<$ B $>$$>$())$>$, \mbox{\hyperlink{namespaceutl_1_1meta_a7b4ba22b3afb3e7a98e1012a350cb573}{meta\+::use\+\_\+if\+\_\+same\+\_\+t}}$<$ bool, decltype(std\+::declval$<$ \mbox{\hyperlink{namespaceutl_a7d69beba08b81379703fd3b0ca42044d}{cref\+\_\+}}$<$ B $>$$>$() !=std\+::declval$<$ \mbox{\hyperlink{namespaceutl_a7d69beba08b81379703fd3b0ca42044d}{cref\+\_\+}}$<$ B $>$$>$())$>$, \mbox{\hyperlink{namespaceutl_1_1meta_a7b4ba22b3afb3e7a98e1012a350cb573}{meta\+::use\+\_\+if\+\_\+same\+\_\+t}}$<$ bool, decltype(std\+::declval$<$ \mbox{\hyperlink{namespaceutl_a7d69beba08b81379703fd3b0ca42044d}{cref\+\_\+}}$<$ B $>$$>$() \&\&std\+::declval$<$ \mbox{\hyperlink{namespaceutl_a7d69beba08b81379703fd3b0ca42044d}{cref\+\_\+}}$<$ B $>$$>$())$>$, \mbox{\hyperlink{namespaceutl_1_1meta_a7b4ba22b3afb3e7a98e1012a350cb573}{meta\+::use\+\_\+if\+\_\+same\+\_\+t}}$<$ bool, decltype(std\+::declval$<$ \mbox{\hyperlink{namespaceutl_a7d69beba08b81379703fd3b0ca42044d}{cref\+\_\+}}$<$ B $>$$>$()$\vert$$\vert$std\+::declval$<$ \mbox{\hyperlink{namespaceutl_a7d69beba08b81379703fd3b0ca42044d}{cref\+\_\+}}$<$ B $>$$>$())$>$ $>$ $>$\+::\mbox{\hyperlink{structutl_1_1details_1_1is__boolean___3_01_b_00_01meta_1_1void__t_3_01meta_1_1use__if__same__t_37e77ed45a431955fc15b4c1210ad8491_abfb3ea1ef62c31310d992fde67f92900}{type}} = \mbox{\hyperlink{namespaceutl_1_1meta_ae9a5a8fbe8202785f059935af219fb97}{meta\+::true\+\_\+}}} + + + +Definition at line 542 of file stl.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/concepts/\mbox{\hyperlink{stl_8h}{stl.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1details_1_1is__strict__totally__ordered__.tex b/doc/latex/structutl_1_1details_1_1is__strict__totally__ordered__.tex new file mode 100644 index 0000000..28abfa7 --- /dev/null +++ b/doc/latex/structutl_1_1details_1_1is__strict__totally__ordered__.tex @@ -0,0 +1,40 @@ +\hypertarget{structutl_1_1details_1_1is__strict__totally__ordered__}{}\section{utl\+:\+:details\+:\+:is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+$<$ T, typename $>$ Struct Template Reference} +\label{structutl_1_1details_1_1is__strict__totally__ordered__}\index{utl\+::details\+::is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+$<$ T, typename $>$@{utl\+::details\+::is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+$<$ T, typename $>$}} + + +{\ttfamily \#include $<$stl.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1details_1_1is__strict__totally__ordered___acb182f06d015a63fbe00a9700422046f}{type}} = \mbox{\hyperlink{namespaceutl_1_1meta_a55511dbaa0adb605ce22dcec11f8d22d}{meta\+::false\+\_\+}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T, typename = void$>$\newline +struct utl\+::details\+::is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+$<$ T, typename $>$} + + + +Definition at line 627 of file stl.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1details_1_1is__strict__totally__ordered___acb182f06d015a63fbe00a9700422046f}\label{structutl_1_1details_1_1is__strict__totally__ordered___acb182f06d015a63fbe00a9700422046f}} +\index{utl\+::details\+::is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+@{utl\+::details\+::is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+}!type@{type}} +\index{type@{type}!utl\+::details\+::is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+@{utl\+::details\+::is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename T , typename = void$>$ \\ +using \mbox{\hyperlink{structutl_1_1details_1_1is__strict__totally__ordered__}{utl\+::details\+::is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+}}$<$ T, typename $>$\+::\mbox{\hyperlink{structutl_1_1details_1_1is__strict__totally__ordered___acb182f06d015a63fbe00a9700422046f}{type}} = \mbox{\hyperlink{namespaceutl_1_1meta_a55511dbaa0adb605ce22dcec11f8d22d}{meta\+::false\+\_\+}}} + + + +Definition at line 628 of file stl.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/concepts/\mbox{\hyperlink{stl_8h}{stl.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1details_1_1is__strict__totally__ordered___3_01_t_00_01meta_1_1void__t_3_01meta_1_1uab48bcfc89164f446368b35bcc7c8bcd.tex b/doc/latex/structutl_1_1details_1_1is__strict__totally__ordered___3_01_t_00_01meta_1_1void__t_3_01meta_1_1uab48bcfc89164f446368b35bcc7c8bcd.tex new file mode 100644 index 0000000..e7c3ae2 --- /dev/null +++ b/doc/latex/structutl_1_1details_1_1is__strict__totally__ordered___3_01_t_00_01meta_1_1void__t_3_01meta_1_1uab48bcfc89164f446368b35bcc7c8bcd.tex @@ -0,0 +1,40 @@ +\hypertarget{structutl_1_1details_1_1is__strict__totally__ordered___3_01_t_00_01meta_1_1void__t_3_01meta_1_1uab48bcfc89164f446368b35bcc7c8bcd}{}\section{utl\+:\+:details\+:\+:is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+$<$ T, meta\+:\+:void\+\_\+t$<$ meta\+:\+:use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+:\+:declval$<$ cref\+\_\+$<$ T $>$$>$()$<$ std\+:\+:declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+:\+:use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+:\+:declval$<$ cref\+\_\+$<$ T $>$$>$() $>$ std\+:\+:declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+:\+:use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+:\+:declval$<$ cref\+\_\+$<$ T $>$$>$()$<$=std\+:\+:declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+:\+:use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+:\+:declval$<$ cref\+\_\+$<$ T $>$$>$() $>$=std\+:\+:declval$<$ cref\+\_\+$<$ T $>$$>$())$>$ $>$ $>$ Struct Template Reference} +\label{structutl_1_1details_1_1is__strict__totally__ordered___3_01_t_00_01meta_1_1void__t_3_01meta_1_1uab48bcfc89164f446368b35bcc7c8bcd}\index{utl\+::details\+::is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+$<$ T, meta\+::void\+\_\+t$<$ meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$()$<$ std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$() $>$ std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$()$<$=std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$() $>$=std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$ $>$ $>$@{utl\+::details\+::is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+$<$ T, meta\+::void\+\_\+t$<$ meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$()$<$ std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$() $>$ std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$()$<$=std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$() $>$=std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$ $>$ $>$}} + + +{\ttfamily \#include $<$stl.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1details_1_1is__strict__totally__ordered___3_01_t_00_01meta_1_1void__t_3_01meta_1_1uab48bcfc89164f446368b35bcc7c8bcd_a221f1b2e947002d4888711116e5ebfb5}{type}} = \mbox{\hyperlink{namespaceutl_1_1meta_ae9a5a8fbe8202785f059935af219fb97}{meta\+::true\+\_\+}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T$>$\newline +struct utl\+::details\+::is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+$<$ T, meta\+::void\+\_\+t$<$ meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$()$<$ std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$() $>$ std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$()$<$=std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$() $>$=std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$ $>$ $>$} + + + +Definition at line 632 of file stl.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1details_1_1is__strict__totally__ordered___3_01_t_00_01meta_1_1void__t_3_01meta_1_1uab48bcfc89164f446368b35bcc7c8bcd_a221f1b2e947002d4888711116e5ebfb5}\label{structutl_1_1details_1_1is__strict__totally__ordered___3_01_t_00_01meta_1_1void__t_3_01meta_1_1uab48bcfc89164f446368b35bcc7c8bcd_a221f1b2e947002d4888711116e5ebfb5}} +\index{utl\+::details\+::is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+$<$ T, meta\+::void\+\_\+t$<$ meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$()$<$ std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$() $>$ std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$()$<$=std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$() $>$=std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$ $>$ $>$@{utl\+::details\+::is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+$<$ T, meta\+::void\+\_\+t$<$ meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$()$<$ std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$() $>$ std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$()$<$=std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$() $>$=std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$ $>$ $>$}!type@{type}} +\index{type@{type}!utl\+::details\+::is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+$<$ T, meta\+::void\+\_\+t$<$ meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$()$<$ std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$() $>$ std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$()$<$=std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$() $>$=std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$ $>$ $>$@{utl\+::details\+::is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+$<$ T, meta\+::void\+\_\+t$<$ meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$()$<$ std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$() $>$ std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$()$<$=std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$() $>$=std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$ $>$ $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +using \mbox{\hyperlink{structutl_1_1details_1_1is__strict__totally__ordered__}{utl\+::details\+::is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+}}$<$ T, \mbox{\hyperlink{group__detection_gae7373c997420d16cf37e542eb3cfa3ad}{meta\+::void\+\_\+t}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_a7b4ba22b3afb3e7a98e1012a350cb573}{meta\+::use\+\_\+if\+\_\+same\+\_\+t}}$<$ bool, decltype(std\+::declval$<$ \mbox{\hyperlink{namespaceutl_a7d69beba08b81379703fd3b0ca42044d}{cref\+\_\+}}$<$ T $>$$>$()$<$ std\+::declval$<$ \mbox{\hyperlink{namespaceutl_a7d69beba08b81379703fd3b0ca42044d}{cref\+\_\+}}$<$ T $>$$>$())$>$, \mbox{\hyperlink{namespaceutl_1_1meta_a7b4ba22b3afb3e7a98e1012a350cb573}{meta\+::use\+\_\+if\+\_\+same\+\_\+t}}$<$ bool, decltype(std\+::declval$<$ \mbox{\hyperlink{namespaceutl_a7d69beba08b81379703fd3b0ca42044d}{cref\+\_\+}}$<$ T $>$$>$() $>$ std\+::declval$<$ \mbox{\hyperlink{namespaceutl_a7d69beba08b81379703fd3b0ca42044d}{cref\+\_\+}}$<$ T $>$$>$())$>$, \mbox{\hyperlink{namespaceutl_1_1meta_a7b4ba22b3afb3e7a98e1012a350cb573}{meta\+::use\+\_\+if\+\_\+same\+\_\+t}}$<$ bool, decltype(std\+::declval$<$ \mbox{\hyperlink{namespaceutl_a7d69beba08b81379703fd3b0ca42044d}{cref\+\_\+}}$<$ T $>$$>$()$<$=std\+::declval$<$ \mbox{\hyperlink{namespaceutl_a7d69beba08b81379703fd3b0ca42044d}{cref\+\_\+}}$<$ T $>$$>$())$>$, \mbox{\hyperlink{namespaceutl_1_1meta_a7b4ba22b3afb3e7a98e1012a350cb573}{meta\+::use\+\_\+if\+\_\+same\+\_\+t}}$<$ bool, decltype(std\+::declval$<$ \mbox{\hyperlink{namespaceutl_a7d69beba08b81379703fd3b0ca42044d}{cref\+\_\+}}$<$ T $>$$>$() $>$=std\+::declval$<$ \mbox{\hyperlink{namespaceutl_a7d69beba08b81379703fd3b0ca42044d}{cref\+\_\+}}$<$ T $>$$>$())$>$ $>$ $>$\+::\mbox{\hyperlink{structutl_1_1details_1_1is__strict__totally__ordered___3_01_t_00_01meta_1_1void__t_3_01meta_1_1uab48bcfc89164f446368b35bcc7c8bcd_a221f1b2e947002d4888711116e5ebfb5}{type}} = \mbox{\hyperlink{namespaceutl_1_1meta_ae9a5a8fbe8202785f059935af219fb97}{meta\+::true\+\_\+}}} + + + +Definition at line 638 of file stl.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/concepts/\mbox{\hyperlink{stl_8h}{stl.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1details_1_1is__strict__totally__ordered__with__.tex b/doc/latex/structutl_1_1details_1_1is__strict__totally__ordered__with__.tex new file mode 100644 index 0000000..8151448 --- /dev/null +++ b/doc/latex/structutl_1_1details_1_1is__strict__totally__ordered__with__.tex @@ -0,0 +1,40 @@ +\hypertarget{structutl_1_1details_1_1is__strict__totally__ordered__with__}{}\section{utl\+:\+:details\+:\+:is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+with\+\_\+$<$ T, U, typename $>$ Struct Template Reference} +\label{structutl_1_1details_1_1is__strict__totally__ordered__with__}\index{utl\+::details\+::is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+with\+\_\+$<$ T, U, typename $>$@{utl\+::details\+::is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+with\+\_\+$<$ T, U, typename $>$}} + + +{\ttfamily \#include $<$stl.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1details_1_1is__strict__totally__ordered__with___a4687be9ddf2910a323d69193c0291723}{type}} = \mbox{\hyperlink{namespaceutl_1_1meta_a55511dbaa0adb605ce22dcec11f8d22d}{meta\+::false\+\_\+}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T, typename U, typename = void$>$\newline +struct utl\+::details\+::is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+with\+\_\+$<$ T, U, typename $>$} + + + +Definition at line 682 of file stl.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1details_1_1is__strict__totally__ordered__with___a4687be9ddf2910a323d69193c0291723}\label{structutl_1_1details_1_1is__strict__totally__ordered__with___a4687be9ddf2910a323d69193c0291723}} +\index{utl\+::details\+::is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+with\+\_\+@{utl\+::details\+::is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+with\+\_\+}!type@{type}} +\index{type@{type}!utl\+::details\+::is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+with\+\_\+@{utl\+::details\+::is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+with\+\_\+}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename T , typename U , typename = void$>$ \\ +using \mbox{\hyperlink{structutl_1_1details_1_1is__strict__totally__ordered__with__}{utl\+::details\+::is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+with\+\_\+}}$<$ T, U, typename $>$\+::\mbox{\hyperlink{structutl_1_1details_1_1is__strict__totally__ordered__with___a4687be9ddf2910a323d69193c0291723}{type}} = \mbox{\hyperlink{namespaceutl_1_1meta_a55511dbaa0adb605ce22dcec11f8d22d}{meta\+::false\+\_\+}}} + + + +Definition at line 683 of file stl.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/concepts/\mbox{\hyperlink{stl_8h}{stl.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1details_1_1is__strict__totally__ordered__with___3_01_t_00_01_u_00_01meta_1_1void__t8fb7dd5a6ad25952241e37c6f163f434.tex b/doc/latex/structutl_1_1details_1_1is__strict__totally__ordered__with___3_01_t_00_01_u_00_01meta_1_1void__t8fb7dd5a6ad25952241e37c6f163f434.tex new file mode 100644 index 0000000..c606ef2 --- /dev/null +++ b/doc/latex/structutl_1_1details_1_1is__strict__totally__ordered__with___3_01_t_00_01_u_00_01meta_1_1void__t8fb7dd5a6ad25952241e37c6f163f434.tex @@ -0,0 +1,40 @@ +\hypertarget{structutl_1_1details_1_1is__strict__totally__ordered__with___3_01_t_00_01_u_00_01meta_1_1void__t8fb7dd5a6ad25952241e37c6f163f434}{}\section{utl\+:\+:details\+:\+:is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+with\+\_\+$<$ T, U, meta\+:\+:void\+\_\+t$<$ meta\+:\+:use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+:\+:declval$<$ cref\+\_\+$<$ T $>$$>$()$<$ std\+:\+:declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+:\+:use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+:\+:declval$<$ cref\+\_\+$<$ T $>$$>$() $>$ std\+:\+:declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+:\+:use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+:\+:declval$<$ cref\+\_\+$<$ T $>$$>$()$<$=std\+:\+:declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+:\+:use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+:\+:declval$<$ cref\+\_\+$<$ T $>$$>$() $>$=std\+:\+:declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+:\+:use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+:\+:declval$<$ cref\+\_\+$<$ U $>$$>$()$<$ std\+:\+:declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+:\+:use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+:\+:declval$<$ cref\+\_\+$<$ U $>$$>$() $>$ std\+:\+:declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+:\+:use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+:\+:declval$<$ cref\+\_\+$<$ U $>$$>$()$<$=std\+:\+:declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+:\+:use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+:\+:declval$<$ cref\+\_\+$<$ U $>$$>$() $>$=std\+:\+:declval$<$ cref\+\_\+$<$ T $>$$>$())$>$ $>$ $>$ Struct Template Reference} +\label{structutl_1_1details_1_1is__strict__totally__ordered__with___3_01_t_00_01_u_00_01meta_1_1void__t8fb7dd5a6ad25952241e37c6f163f434}\index{utl\+::details\+::is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+with\+\_\+$<$ T, U, meta\+::void\+\_\+t$<$ meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$()$<$ std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$() $>$ std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$()$<$=std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$() $>$=std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$()$<$ std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$() $>$ std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$()$<$=std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$() $>$=std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$ $>$ $>$@{utl\+::details\+::is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+with\+\_\+$<$ T, U, meta\+::void\+\_\+t$<$ meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$()$<$ std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$() $>$ std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$()$<$=std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$() $>$=std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$()$<$ std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$() $>$ std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$()$<$=std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$() $>$=std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$ $>$ $>$}} + + +{\ttfamily \#include $<$stl.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1details_1_1is__strict__totally__ordered__with___3_01_t_00_01_u_00_01meta_1_1void__t8fb7dd5a6ad25952241e37c6f163f434_a447a36dc0b2239ee20876c6255033345}{type}} = \mbox{\hyperlink{namespaceutl_1_1meta_ae9a5a8fbe8202785f059935af219fb97}{meta\+::true\+\_\+}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T, typename U$>$\newline +struct utl\+::details\+::is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+with\+\_\+$<$ T, U, meta\+::void\+\_\+t$<$ meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$()$<$ std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$() $>$ std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$()$<$=std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$() $>$=std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$()$<$ std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$() $>$ std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$()$<$=std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$() $>$=std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$ $>$ $>$} + + + +Definition at line 687 of file stl.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1details_1_1is__strict__totally__ordered__with___3_01_t_00_01_u_00_01meta_1_1void__t8fb7dd5a6ad25952241e37c6f163f434_a447a36dc0b2239ee20876c6255033345}\label{structutl_1_1details_1_1is__strict__totally__ordered__with___3_01_t_00_01_u_00_01meta_1_1void__t8fb7dd5a6ad25952241e37c6f163f434_a447a36dc0b2239ee20876c6255033345}} +\index{utl\+::details\+::is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+with\+\_\+$<$ T, U, meta\+::void\+\_\+t$<$ meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$()$<$ std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$() $>$ std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$()$<$=std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$() $>$=std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$()$<$ std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$() $>$ std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$()$<$=std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$() $>$=std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$ $>$ $>$@{utl\+::details\+::is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+with\+\_\+$<$ T, U, meta\+::void\+\_\+t$<$ meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$()$<$ std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$() $>$ std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$()$<$=std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$() $>$=std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$()$<$ std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$() $>$ std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$()$<$=std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$() $>$=std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$ $>$ $>$}!type@{type}} +\index{type@{type}!utl\+::details\+::is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+with\+\_\+$<$ T, U, meta\+::void\+\_\+t$<$ meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$()$<$ std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$() $>$ std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$()$<$=std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$() $>$=std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$()$<$ std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$() $>$ std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$()$<$=std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$() $>$=std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$ $>$ $>$@{utl\+::details\+::is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+with\+\_\+$<$ T, U, meta\+::void\+\_\+t$<$ meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$()$<$ std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$() $>$ std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$()$<$=std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$() $>$=std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$()$<$ std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$() $>$ std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$()$<$=std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$() $>$=std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$ $>$ $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename T , typename U $>$ \\ +using \mbox{\hyperlink{structutl_1_1details_1_1is__strict__totally__ordered__with__}{utl\+::details\+::is\+\_\+strict\+\_\+totally\+\_\+ordered\+\_\+with\+\_\+}}$<$ T, U, \mbox{\hyperlink{group__detection_gae7373c997420d16cf37e542eb3cfa3ad}{meta\+::void\+\_\+t}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_a7b4ba22b3afb3e7a98e1012a350cb573}{meta\+::use\+\_\+if\+\_\+same\+\_\+t}}$<$ bool, decltype(std\+::declval$<$ \mbox{\hyperlink{namespaceutl_a7d69beba08b81379703fd3b0ca42044d}{cref\+\_\+}}$<$ T $>$$>$()$<$ std\+::declval$<$ \mbox{\hyperlink{namespaceutl_a7d69beba08b81379703fd3b0ca42044d}{cref\+\_\+}}$<$ U $>$$>$())$>$, \mbox{\hyperlink{namespaceutl_1_1meta_a7b4ba22b3afb3e7a98e1012a350cb573}{meta\+::use\+\_\+if\+\_\+same\+\_\+t}}$<$ bool, decltype(std\+::declval$<$ \mbox{\hyperlink{namespaceutl_a7d69beba08b81379703fd3b0ca42044d}{cref\+\_\+}}$<$ T $>$$>$() $>$ std\+::declval$<$ \mbox{\hyperlink{namespaceutl_a7d69beba08b81379703fd3b0ca42044d}{cref\+\_\+}}$<$ U $>$$>$())$>$, \mbox{\hyperlink{namespaceutl_1_1meta_a7b4ba22b3afb3e7a98e1012a350cb573}{meta\+::use\+\_\+if\+\_\+same\+\_\+t}}$<$ bool, decltype(std\+::declval$<$ \mbox{\hyperlink{namespaceutl_a7d69beba08b81379703fd3b0ca42044d}{cref\+\_\+}}$<$ T $>$$>$()$<$=std\+::declval$<$ \mbox{\hyperlink{namespaceutl_a7d69beba08b81379703fd3b0ca42044d}{cref\+\_\+}}$<$ U $>$$>$())$>$, \mbox{\hyperlink{namespaceutl_1_1meta_a7b4ba22b3afb3e7a98e1012a350cb573}{meta\+::use\+\_\+if\+\_\+same\+\_\+t}}$<$ bool, decltype(std\+::declval$<$ \mbox{\hyperlink{namespaceutl_a7d69beba08b81379703fd3b0ca42044d}{cref\+\_\+}}$<$ T $>$$>$() $>$=std\+::declval$<$ \mbox{\hyperlink{namespaceutl_a7d69beba08b81379703fd3b0ca42044d}{cref\+\_\+}}$<$ U $>$$>$())$>$, \mbox{\hyperlink{namespaceutl_1_1meta_a7b4ba22b3afb3e7a98e1012a350cb573}{meta\+::use\+\_\+if\+\_\+same\+\_\+t}}$<$ bool, decltype(std\+::declval$<$ \mbox{\hyperlink{namespaceutl_a7d69beba08b81379703fd3b0ca42044d}{cref\+\_\+}}$<$ U $>$$>$()$<$ std\+::declval$<$ \mbox{\hyperlink{namespaceutl_a7d69beba08b81379703fd3b0ca42044d}{cref\+\_\+}}$<$ T $>$$>$())$>$, \mbox{\hyperlink{namespaceutl_1_1meta_a7b4ba22b3afb3e7a98e1012a350cb573}{meta\+::use\+\_\+if\+\_\+same\+\_\+t}}$<$ bool, decltype(std\+::declval$<$ \mbox{\hyperlink{namespaceutl_a7d69beba08b81379703fd3b0ca42044d}{cref\+\_\+}}$<$ U $>$$>$() $>$ std\+::declval$<$ \mbox{\hyperlink{namespaceutl_a7d69beba08b81379703fd3b0ca42044d}{cref\+\_\+}}$<$ T $>$$>$())$>$, \mbox{\hyperlink{namespaceutl_1_1meta_a7b4ba22b3afb3e7a98e1012a350cb573}{meta\+::use\+\_\+if\+\_\+same\+\_\+t}}$<$ bool, decltype(std\+::declval$<$ \mbox{\hyperlink{namespaceutl_a7d69beba08b81379703fd3b0ca42044d}{cref\+\_\+}}$<$ U $>$$>$()$<$=std\+::declval$<$ \mbox{\hyperlink{namespaceutl_a7d69beba08b81379703fd3b0ca42044d}{cref\+\_\+}}$<$ T $>$$>$())$>$, \mbox{\hyperlink{namespaceutl_1_1meta_a7b4ba22b3afb3e7a98e1012a350cb573}{meta\+::use\+\_\+if\+\_\+same\+\_\+t}}$<$ bool, decltype(std\+::declval$<$ \mbox{\hyperlink{namespaceutl_a7d69beba08b81379703fd3b0ca42044d}{cref\+\_\+}}$<$ U $>$$>$() $>$=std\+::declval$<$ \mbox{\hyperlink{namespaceutl_a7d69beba08b81379703fd3b0ca42044d}{cref\+\_\+}}$<$ T $>$$>$())$>$ $>$ $>$\+::\mbox{\hyperlink{structutl_1_1details_1_1is__strict__totally__ordered__with___3_01_t_00_01_u_00_01meta_1_1void__t8fb7dd5a6ad25952241e37c6f163f434_a447a36dc0b2239ee20876c6255033345}{type}} = \mbox{\hyperlink{namespaceutl_1_1meta_ae9a5a8fbe8202785f059935af219fb97}{meta\+::true\+\_\+}}} + + + +Definition at line 697 of file stl.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/concepts/\mbox{\hyperlink{stl_8h}{stl.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1details_1_1is__weakly__equality__comparable__with__.tex b/doc/latex/structutl_1_1details_1_1is__weakly__equality__comparable__with__.tex new file mode 100644 index 0000000..5933138 --- /dev/null +++ b/doc/latex/structutl_1_1details_1_1is__weakly__equality__comparable__with__.tex @@ -0,0 +1,40 @@ +\hypertarget{structutl_1_1details_1_1is__weakly__equality__comparable__with__}{}\section{utl\+:\+:details\+:\+:is\+\_\+weakly\+\_\+equality\+\_\+comparable\+\_\+with\+\_\+$<$ T, U, typename $>$ Struct Template Reference} +\label{structutl_1_1details_1_1is__weakly__equality__comparable__with__}\index{utl\+::details\+::is\+\_\+weakly\+\_\+equality\+\_\+comparable\+\_\+with\+\_\+$<$ T, U, typename $>$@{utl\+::details\+::is\+\_\+weakly\+\_\+equality\+\_\+comparable\+\_\+with\+\_\+$<$ T, U, typename $>$}} + + +{\ttfamily \#include $<$stl.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1details_1_1is__weakly__equality__comparable__with___ab700b64203b780a4e35e0b9362224da4}{type}} = \mbox{\hyperlink{namespaceutl_1_1meta_a55511dbaa0adb605ce22dcec11f8d22d}{meta\+::false\+\_\+}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T, typename U, typename = void$>$\newline +struct utl\+::details\+::is\+\_\+weakly\+\_\+equality\+\_\+comparable\+\_\+with\+\_\+$<$ T, U, typename $>$} + + + +Definition at line 561 of file stl.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1details_1_1is__weakly__equality__comparable__with___ab700b64203b780a4e35e0b9362224da4}\label{structutl_1_1details_1_1is__weakly__equality__comparable__with___ab700b64203b780a4e35e0b9362224da4}} +\index{utl\+::details\+::is\+\_\+weakly\+\_\+equality\+\_\+comparable\+\_\+with\+\_\+@{utl\+::details\+::is\+\_\+weakly\+\_\+equality\+\_\+comparable\+\_\+with\+\_\+}!type@{type}} +\index{type@{type}!utl\+::details\+::is\+\_\+weakly\+\_\+equality\+\_\+comparable\+\_\+with\+\_\+@{utl\+::details\+::is\+\_\+weakly\+\_\+equality\+\_\+comparable\+\_\+with\+\_\+}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename T , typename U , typename = void$>$ \\ +using \mbox{\hyperlink{structutl_1_1details_1_1is__weakly__equality__comparable__with__}{utl\+::details\+::is\+\_\+weakly\+\_\+equality\+\_\+comparable\+\_\+with\+\_\+}}$<$ T, U, typename $>$\+::\mbox{\hyperlink{structutl_1_1details_1_1is__weakly__equality__comparable__with___ab700b64203b780a4e35e0b9362224da4}{type}} = \mbox{\hyperlink{namespaceutl_1_1meta_a55511dbaa0adb605ce22dcec11f8d22d}{meta\+::false\+\_\+}}} + + + +Definition at line 562 of file stl.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/concepts/\mbox{\hyperlink{stl_8h}{stl.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1details_1_1is__weakly__equality__comparable__with___3_01_t_00_01_u_00_01meta_1_1voi4404f901930622694666ca68fb75381b.tex b/doc/latex/structutl_1_1details_1_1is__weakly__equality__comparable__with___3_01_t_00_01_u_00_01meta_1_1voi4404f901930622694666ca68fb75381b.tex new file mode 100644 index 0000000..b1b9096 --- /dev/null +++ b/doc/latex/structutl_1_1details_1_1is__weakly__equality__comparable__with___3_01_t_00_01_u_00_01meta_1_1voi4404f901930622694666ca68fb75381b.tex @@ -0,0 +1,40 @@ +\hypertarget{structutl_1_1details_1_1is__weakly__equality__comparable__with___3_01_t_00_01_u_00_01meta_1_1voi4404f901930622694666ca68fb75381b}{}\section{utl\+:\+:details\+:\+:is\+\_\+weakly\+\_\+equality\+\_\+comparable\+\_\+with\+\_\+$<$ T, U, meta\+:\+:void\+\_\+t$<$ meta\+:\+:use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+:\+:declval$<$ cref\+\_\+$<$ T $>$$>$()==std\+:\+:declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+:\+:use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+:\+:declval$<$ cref\+\_\+$<$ T $>$$>$() !=std\+:\+:declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+:\+:use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+:\+:declval$<$ cref\+\_\+$<$ U $>$$>$()==std\+:\+:declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+:\+:use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+:\+:declval$<$ cref\+\_\+$<$ U $>$$>$() !=std\+:\+:declval$<$ cref\+\_\+$<$ T $>$$>$())$>$ $>$ $>$ Struct Template Reference} +\label{structutl_1_1details_1_1is__weakly__equality__comparable__with___3_01_t_00_01_u_00_01meta_1_1voi4404f901930622694666ca68fb75381b}\index{utl\+::details\+::is\+\_\+weakly\+\_\+equality\+\_\+comparable\+\_\+with\+\_\+$<$ T, U, meta\+::void\+\_\+t$<$ meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$()==std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$() "!=std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$()==std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$() "!=std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$ $>$ $>$@{utl\+::details\+::is\+\_\+weakly\+\_\+equality\+\_\+comparable\+\_\+with\+\_\+$<$ T, U, meta\+::void\+\_\+t$<$ meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$()==std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$() "!=std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$()==std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$() "!=std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$ $>$ $>$}} + + +{\ttfamily \#include $<$stl.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1details_1_1is__weakly__equality__comparable__with___3_01_t_00_01_u_00_01meta_1_1voi4404f901930622694666ca68fb75381b_a107023c7eaad95d6f6ed8eeb60801d69}{type}} = \mbox{\hyperlink{namespaceutl_1_1meta_ae9a5a8fbe8202785f059935af219fb97}{meta\+::true\+\_\+}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T, typename U$>$\newline +struct utl\+::details\+::is\+\_\+weakly\+\_\+equality\+\_\+comparable\+\_\+with\+\_\+$<$ T, U, meta\+::void\+\_\+t$<$ meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$()==std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$() !=std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$()==std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$() !=std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$ $>$ $>$} + + + +Definition at line 566 of file stl.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1details_1_1is__weakly__equality__comparable__with___3_01_t_00_01_u_00_01meta_1_1voi4404f901930622694666ca68fb75381b_a107023c7eaad95d6f6ed8eeb60801d69}\label{structutl_1_1details_1_1is__weakly__equality__comparable__with___3_01_t_00_01_u_00_01meta_1_1voi4404f901930622694666ca68fb75381b_a107023c7eaad95d6f6ed8eeb60801d69}} +\index{utl\+::details\+::is\+\_\+weakly\+\_\+equality\+\_\+comparable\+\_\+with\+\_\+$<$ T, U, meta\+::void\+\_\+t$<$ meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$()==std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$() "!=std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$()==std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$() "!=std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$ $>$ $>$@{utl\+::details\+::is\+\_\+weakly\+\_\+equality\+\_\+comparable\+\_\+with\+\_\+$<$ T, U, meta\+::void\+\_\+t$<$ meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$()==std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$() "!=std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$()==std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$() "!=std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$ $>$ $>$}!type@{type}} +\index{type@{type}!utl\+::details\+::is\+\_\+weakly\+\_\+equality\+\_\+comparable\+\_\+with\+\_\+$<$ T, U, meta\+::void\+\_\+t$<$ meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$()==std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$() "!=std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$()==std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$() "!=std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$ $>$ $>$@{utl\+::details\+::is\+\_\+weakly\+\_\+equality\+\_\+comparable\+\_\+with\+\_\+$<$ T, U, meta\+::void\+\_\+t$<$ meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$()==std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ T $>$$>$() "!=std\+::declval$<$ cref\+\_\+$<$ U $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$()==std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ bool, decltype(std\+::declval$<$ cref\+\_\+$<$ U $>$$>$() "!=std\+::declval$<$ cref\+\_\+$<$ T $>$$>$())$>$ $>$ $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename T , typename U $>$ \\ +using \mbox{\hyperlink{structutl_1_1details_1_1is__weakly__equality__comparable__with__}{utl\+::details\+::is\+\_\+weakly\+\_\+equality\+\_\+comparable\+\_\+with\+\_\+}}$<$ T, U, \mbox{\hyperlink{group__detection_gae7373c997420d16cf37e542eb3cfa3ad}{meta\+::void\+\_\+t}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_a7b4ba22b3afb3e7a98e1012a350cb573}{meta\+::use\+\_\+if\+\_\+same\+\_\+t}}$<$ bool, decltype(std\+::declval$<$ \mbox{\hyperlink{namespaceutl_a7d69beba08b81379703fd3b0ca42044d}{cref\+\_\+}}$<$ T $>$$>$()==std\+::declval$<$ \mbox{\hyperlink{namespaceutl_a7d69beba08b81379703fd3b0ca42044d}{cref\+\_\+}}$<$ U $>$$>$())$>$, \mbox{\hyperlink{namespaceutl_1_1meta_a7b4ba22b3afb3e7a98e1012a350cb573}{meta\+::use\+\_\+if\+\_\+same\+\_\+t}}$<$ bool, decltype(std\+::declval$<$ \mbox{\hyperlink{namespaceutl_a7d69beba08b81379703fd3b0ca42044d}{cref\+\_\+}}$<$ T $>$$>$() !=std\+::declval$<$ \mbox{\hyperlink{namespaceutl_a7d69beba08b81379703fd3b0ca42044d}{cref\+\_\+}}$<$ U $>$$>$())$>$, \mbox{\hyperlink{namespaceutl_1_1meta_a7b4ba22b3afb3e7a98e1012a350cb573}{meta\+::use\+\_\+if\+\_\+same\+\_\+t}}$<$ bool, decltype(std\+::declval$<$ \mbox{\hyperlink{namespaceutl_a7d69beba08b81379703fd3b0ca42044d}{cref\+\_\+}}$<$ U $>$$>$()==std\+::declval$<$ \mbox{\hyperlink{namespaceutl_a7d69beba08b81379703fd3b0ca42044d}{cref\+\_\+}}$<$ T $>$$>$())$>$, \mbox{\hyperlink{namespaceutl_1_1meta_a7b4ba22b3afb3e7a98e1012a350cb573}{meta\+::use\+\_\+if\+\_\+same\+\_\+t}}$<$ bool, decltype(std\+::declval$<$ \mbox{\hyperlink{namespaceutl_a7d69beba08b81379703fd3b0ca42044d}{cref\+\_\+}}$<$ U $>$$>$() !=std\+::declval$<$ \mbox{\hyperlink{namespaceutl_a7d69beba08b81379703fd3b0ca42044d}{cref\+\_\+}}$<$ T $>$$>$())$>$ $>$ $>$\+::\mbox{\hyperlink{structutl_1_1details_1_1is__weakly__equality__comparable__with___3_01_t_00_01_u_00_01meta_1_1voi4404f901930622694666ca68fb75381b_a107023c7eaad95d6f6ed8eeb60801d69}{type}} = \mbox{\hyperlink{namespaceutl_1_1meta_ae9a5a8fbe8202785f059935af219fb97}{meta\+::true\+\_\+}}} + + + +Definition at line 572 of file stl.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/concepts/\mbox{\hyperlink{stl_8h}{stl.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1dev__iterator__traits.tex b/doc/latex/structutl_1_1dev__iterator__traits.tex new file mode 100644 index 0000000..b8a1f84 --- /dev/null +++ b/doc/latex/structutl_1_1dev__iterator__traits.tex @@ -0,0 +1,101 @@ +\hypertarget{structutl_1_1dev__iterator__traits}{}\section{utl\+:\+:dev\+\_\+iterator\+\_\+traits$<$ \+\_\+\+Cat, \+\_\+\+Tp, \+\_\+\+Diff $>$ Struct Template Reference} +\label{structutl_1_1dev__iterator__traits}\index{utl\+::dev\+\_\+iterator\+\_\+traits$<$ \+\_\+\+Cat, \+\_\+\+Tp, \+\_\+\+Diff $>$@{utl\+::dev\+\_\+iterator\+\_\+traits$<$ \+\_\+\+Cat, \+\_\+\+Tp, \+\_\+\+Diff $>$}} + + +Device iterator collection. + + + + +{\ttfamily \#include $<$dev\+\_\+iterators.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1dev__iterator__traits_a458414025d5e52646ddf90a3e9f04261}{iterator\+\_\+category}} = \+\_\+\+Cat +\item +using \mbox{\hyperlink{structutl_1_1dev__iterator__traits_a4092b379cea659f2d79908b356ec6fb2}{value\+\_\+type}} = \+\_\+\+Tp +\item +using \mbox{\hyperlink{structutl_1_1dev__iterator__traits_a7445a2713455342fb817d0cdaaf1855c}{difference\+\_\+type}} = \+\_\+\+Diff +\item +using \mbox{\hyperlink{structutl_1_1dev__iterator__traits_a4b06368f7cb0bc44dc21582be7808ca6}{pointer}} = \+\_\+\+Tp $\ast$ +\item +using \mbox{\hyperlink{structutl_1_1dev__iterator__traits_a2747e8f629aaaa8a47ac8d3cd9527fad}{reference}} = \+\_\+\+Tp \& +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename \+\_\+\+Cat, typename \+\_\+\+Tp, typename \+\_\+\+Diff = ptrdiff\+\_\+t$>$\newline +struct utl\+::dev\+\_\+iterator\+\_\+traits$<$ \+\_\+\+Cat, \+\_\+\+Tp, \+\_\+\+Diff $>$} + +Device iterator collection. + +Traits class for dev\+\_\+iterators. + +This class does nothing but define nested typedefs. The general version simply {\itshape forwards} the nested typedefs from the Iterator argument. + +Definition at line 43 of file dev\+\_\+iterators.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1dev__iterator__traits_a7445a2713455342fb817d0cdaaf1855c}\label{structutl_1_1dev__iterator__traits_a7445a2713455342fb817d0cdaaf1855c}} +\index{utl\+::dev\+\_\+iterator\+\_\+traits@{utl\+::dev\+\_\+iterator\+\_\+traits}!difference\+\_\+type@{difference\+\_\+type}} +\index{difference\+\_\+type@{difference\+\_\+type}!utl\+::dev\+\_\+iterator\+\_\+traits@{utl\+::dev\+\_\+iterator\+\_\+traits}} +\subsubsection{\texorpdfstring{difference\+\_\+type}{difference\_type}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Cat, typename \+\_\+\+Tp, typename \+\_\+\+Diff = ptrdiff\+\_\+t$>$ \\ +using \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{utl\+::dev\+\_\+iterator\+\_\+traits}}$<$ \+\_\+\+Cat, \+\_\+\+Tp, \+\_\+\+Diff $>$\+::\mbox{\hyperlink{structutl_1_1dev__iterator__traits_a7445a2713455342fb817d0cdaaf1855c}{difference\+\_\+type}} = \+\_\+\+Diff} + + + +Definition at line 46 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{structutl_1_1dev__iterator__traits_a458414025d5e52646ddf90a3e9f04261}\label{structutl_1_1dev__iterator__traits_a458414025d5e52646ddf90a3e9f04261}} +\index{utl\+::dev\+\_\+iterator\+\_\+traits@{utl\+::dev\+\_\+iterator\+\_\+traits}!iterator\+\_\+category@{iterator\+\_\+category}} +\index{iterator\+\_\+category@{iterator\+\_\+category}!utl\+::dev\+\_\+iterator\+\_\+traits@{utl\+::dev\+\_\+iterator\+\_\+traits}} +\subsubsection{\texorpdfstring{iterator\+\_\+category}{iterator\_category}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Cat, typename \+\_\+\+Tp, typename \+\_\+\+Diff = ptrdiff\+\_\+t$>$ \\ +using \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{utl\+::dev\+\_\+iterator\+\_\+traits}}$<$ \+\_\+\+Cat, \+\_\+\+Tp, \+\_\+\+Diff $>$\+::\mbox{\hyperlink{structutl_1_1dev__iterator__traits_a458414025d5e52646ddf90a3e9f04261}{iterator\+\_\+category}} = \+\_\+\+Cat} + + + +Definition at line 44 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{structutl_1_1dev__iterator__traits_a4b06368f7cb0bc44dc21582be7808ca6}\label{structutl_1_1dev__iterator__traits_a4b06368f7cb0bc44dc21582be7808ca6}} +\index{utl\+::dev\+\_\+iterator\+\_\+traits@{utl\+::dev\+\_\+iterator\+\_\+traits}!pointer@{pointer}} +\index{pointer@{pointer}!utl\+::dev\+\_\+iterator\+\_\+traits@{utl\+::dev\+\_\+iterator\+\_\+traits}} +\subsubsection{\texorpdfstring{pointer}{pointer}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Cat, typename \+\_\+\+Tp, typename \+\_\+\+Diff = ptrdiff\+\_\+t$>$ \\ +using \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{utl\+::dev\+\_\+iterator\+\_\+traits}}$<$ \+\_\+\+Cat, \+\_\+\+Tp, \+\_\+\+Diff $>$\+::\mbox{\hyperlink{structutl_1_1dev__iterator__traits_a4b06368f7cb0bc44dc21582be7808ca6}{pointer}} = \+\_\+\+Tp$\ast$} + + + +Definition at line 47 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{structutl_1_1dev__iterator__traits_a2747e8f629aaaa8a47ac8d3cd9527fad}\label{structutl_1_1dev__iterator__traits_a2747e8f629aaaa8a47ac8d3cd9527fad}} +\index{utl\+::dev\+\_\+iterator\+\_\+traits@{utl\+::dev\+\_\+iterator\+\_\+traits}!reference@{reference}} +\index{reference@{reference}!utl\+::dev\+\_\+iterator\+\_\+traits@{utl\+::dev\+\_\+iterator\+\_\+traits}} +\subsubsection{\texorpdfstring{reference}{reference}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Cat, typename \+\_\+\+Tp, typename \+\_\+\+Diff = ptrdiff\+\_\+t$>$ \\ +using \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{utl\+::dev\+\_\+iterator\+\_\+traits}}$<$ \+\_\+\+Cat, \+\_\+\+Tp, \+\_\+\+Diff $>$\+::\mbox{\hyperlink{structutl_1_1dev__iterator__traits_a2747e8f629aaaa8a47ac8d3cd9527fad}{reference}} = \+\_\+\+Tp\&} + + + +Definition at line 48 of file dev\+\_\+iterators.\+h. + +\mbox{\Hypertarget{structutl_1_1dev__iterator__traits_a4092b379cea659f2d79908b356ec6fb2}\label{structutl_1_1dev__iterator__traits_a4092b379cea659f2d79908b356ec6fb2}} +\index{utl\+::dev\+\_\+iterator\+\_\+traits@{utl\+::dev\+\_\+iterator\+\_\+traits}!value\+\_\+type@{value\+\_\+type}} +\index{value\+\_\+type@{value\+\_\+type}!utl\+::dev\+\_\+iterator\+\_\+traits@{utl\+::dev\+\_\+iterator\+\_\+traits}} +\subsubsection{\texorpdfstring{value\+\_\+type}{value\_type}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Cat, typename \+\_\+\+Tp, typename \+\_\+\+Diff = ptrdiff\+\_\+t$>$ \\ +using \mbox{\hyperlink{structutl_1_1dev__iterator__traits}{utl\+::dev\+\_\+iterator\+\_\+traits}}$<$ \+\_\+\+Cat, \+\_\+\+Tp, \+\_\+\+Diff $>$\+::\mbox{\hyperlink{structutl_1_1dev__iterator__traits_a4092b379cea659f2d79908b356ec6fb2}{value\+\_\+type}} = \+\_\+\+Tp} + + + +Definition at line 45 of file dev\+\_\+iterators.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/dev/\mbox{\hyperlink{dev__iterators_8h}{dev\+\_\+iterators.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1forward__iterator__tag.eps b/doc/latex/structutl_1_1forward__iterator__tag.eps new file mode 100644 index 0000000..2653a44 --- /dev/null +++ b/doc/latex/structutl_1_1forward__iterator__tag.eps @@ -0,0 +1,215 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 502.512563 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 0.995000 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 5 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::forward_iterator_tag) cw +(utl::input_iterator_tag) cw +(utl::bidirectional_iterator_tag) cw +(utl::random_access_iterator_tag) cw +(utl::contiguous_iterator_tag) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::forward_iterator_tag) 0.000000 3.000000 box + (utl::input_iterator_tag) 0.000000 4.000000 box + (utl::bidirectional_iterator_tag) 0.000000 2.000000 box + (utl::random_access_iterator_tag) 0.000000 1.000000 box + (utl::contiguous_iterator_tag) 0.000000 0.000000 box + +% ----- relations ----- + +solid +0 0.000000 3.000000 out +solid +1 0.000000 4.000000 in +solid +1 0.000000 2.250000 out +solid +0 0.000000 2.750000 in +solid +1 0.000000 1.250000 out +solid +0 0.000000 1.750000 in +solid +1 0.000000 0.250000 out +solid +0 0.000000 0.750000 in diff --git a/doc/latex/structutl_1_1forward__iterator__tag.tex b/doc/latex/structutl_1_1forward__iterator__tag.tex new file mode 100644 index 0000000..8bc6cdd --- /dev/null +++ b/doc/latex/structutl_1_1forward__iterator__tag.tex @@ -0,0 +1,24 @@ +\hypertarget{structutl_1_1forward__iterator__tag}{}\section{utl\+:\+:forward\+\_\+iterator\+\_\+tag Struct Reference} +\label{structutl_1_1forward__iterator__tag}\index{utl\+::forward\+\_\+iterator\+\_\+tag@{utl\+::forward\+\_\+iterator\+\_\+tag}} + + +{\ttfamily \#include $<$dev\+\_\+iterators.\+h$>$} + +Inheritance diagram for utl\+:\+:forward\+\_\+iterator\+\_\+tag\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=5.000000cm]{structutl_1_1forward__iterator__tag} +\end{center} +\end{figure} + + +\subsection{Detailed Description} + + +Definition at line 57 of file dev\+\_\+iterators.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/dev/\mbox{\hyperlink{dev__iterators_8h}{dev\+\_\+iterators.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1i2c__i__details_1_1is__i2c__.eps b/doc/latex/structutl_1_1i2c__i__details_1_1is__i2c__.eps new file mode 100644 index 0000000..33e365e --- /dev/null +++ b/doc/latex/structutl_1_1i2c__i__details_1_1is__i2c__.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 152.091255 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 3.287500 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::i2c_i_details::is_i2c_< _Tp, typename >) cw +(false_) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::i2c_i_details::is_i2c_< _Tp, typename >) 0.000000 0.000000 box + (false_) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/structutl_1_1i2c__i__details_1_1is__i2c__.tex b/doc/latex/structutl_1_1i2c__i__details_1_1is__i2c__.tex new file mode 100644 index 0000000..9ceee61 --- /dev/null +++ b/doc/latex/structutl_1_1i2c__i__details_1_1is__i2c__.tex @@ -0,0 +1,32 @@ +\hypertarget{structutl_1_1i2c__i__details_1_1is__i2c__}{}\section{utl\+:\+:i2c\+\_\+i\+\_\+details\+:\+:is\+\_\+i2c\+\_\+$<$ \+\_\+\+Tp, typename $>$ Struct Template Reference} +\label{structutl_1_1i2c__i__details_1_1is__i2c__}\index{utl\+::i2c\+\_\+i\+\_\+details\+::is\+\_\+i2c\+\_\+$<$ \+\_\+\+Tp, typename $>$@{utl\+::i2c\+\_\+i\+\_\+details\+::is\+\_\+i2c\+\_\+$<$ \+\_\+\+Tp, typename $>$}} + + +Primary template to catch any non I2C interface types. + + + + +{\ttfamily \#include $<$i2c.\+h$>$} + +Inheritance diagram for utl\+:\+:i2c\+\_\+i\+\_\+details\+:\+:is\+\_\+i2c\+\_\+$<$ \+\_\+\+Tp, typename $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{structutl_1_1i2c__i__details_1_1is__i2c__} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename \+\_\+\+Tp, typename = void$>$\newline +struct utl\+::i2c\+\_\+i\+\_\+details\+::is\+\_\+i2c\+\_\+$<$ \+\_\+\+Tp, typename $>$} + +Primary template to catch any non I2C interface types. + +Definition at line 257 of file i2c.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/com/\mbox{\hyperlink{i2c_8h}{i2c.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1i2c__i__details_1_1is__i2c___3_01___tp_00_01meta_1_1void__t_3_01typename_01___tp_1_1_sequence_00_01void_01_4_01_4.eps b/doc/latex/structutl_1_1i2c__i__details_1_1is__i2c___3_01___tp_00_01meta_1_1void__t_3_01typename_01___tp_1_1_sequence_00_01void_01_4_01_4.eps new file mode 100644 index 0000000..a009e64 --- /dev/null +++ b/doc/latex/structutl_1_1i2c__i__details_1_1is__i2c___3_01___tp_00_01meta_1_1void__t_3_01typename_01___tp_1_1_sequence_00_01void_01_4_01_4.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 84.388186 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 5.925000 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::i2c_i_details::is_i2c_< _Tp, meta::void_t< typename _Tp::Sequence, void > >) cw +(true_) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::i2c_i_details::is_i2c_< _Tp, meta::void_t< typename _Tp::Sequence, void > >) 0.000000 0.000000 box + (true_) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/structutl_1_1i2c__i__details_1_1is__i2c___3_01___tp_00_01meta_1_1void__t_3_01typename_01___tp_1_1_sequence_00_01void_01_4_01_4.tex b/doc/latex/structutl_1_1i2c__i__details_1_1is__i2c___3_01___tp_00_01meta_1_1void__t_3_01typename_01___tp_1_1_sequence_00_01void_01_4_01_4.tex new file mode 100644 index 0000000..845b3c6 --- /dev/null +++ b/doc/latex/structutl_1_1i2c__i__details_1_1is__i2c___3_01___tp_00_01meta_1_1void__t_3_01typename_01___tp_1_1_sequence_00_01void_01_4_01_4.tex @@ -0,0 +1,32 @@ +\hypertarget{structutl_1_1i2c__i__details_1_1is__i2c___3_01___tp_00_01meta_1_1void__t_3_01typename_01___tp_1_1_sequence_00_01void_01_4_01_4}{}\section{utl\+:\+:i2c\+\_\+i\+\_\+details\+:\+:is\+\_\+i2c\+\_\+$<$ \+\_\+\+Tp, meta\+:\+:void\+\_\+t$<$ typename \+\_\+\+Tp\+:\+:Sequence, void $>$ $>$ Struct Template Reference} +\label{structutl_1_1i2c__i__details_1_1is__i2c___3_01___tp_00_01meta_1_1void__t_3_01typename_01___tp_1_1_sequence_00_01void_01_4_01_4}\index{utl\+::i2c\+\_\+i\+\_\+details\+::is\+\_\+i2c\+\_\+$<$ \+\_\+\+Tp, meta\+::void\+\_\+t$<$ typename \+\_\+\+Tp\+::\+Sequence, void $>$ $>$@{utl\+::i2c\+\_\+i\+\_\+details\+::is\+\_\+i2c\+\_\+$<$ \+\_\+\+Tp, meta\+::void\+\_\+t$<$ typename \+\_\+\+Tp\+::\+Sequence, void $>$ $>$}} + + +template to catch a proper I2C interface type + + + + +{\ttfamily \#include $<$i2c.\+h$>$} + +Inheritance diagram for utl\+:\+:i2c\+\_\+i\+\_\+details\+:\+:is\+\_\+i2c\+\_\+$<$ \+\_\+\+Tp, meta\+:\+:void\+\_\+t$<$ typename \+\_\+\+Tp\+:\+:Sequence, void $>$ $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{structutl_1_1i2c__i__details_1_1is__i2c___3_01___tp_00_01meta_1_1void__t_3_01typename_01___tp_1_1_sequence_00_01void_01_4_01_4} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename \+\_\+\+Tp$>$\newline +struct utl\+::i2c\+\_\+i\+\_\+details\+::is\+\_\+i2c\+\_\+$<$ \+\_\+\+Tp, meta\+::void\+\_\+t$<$ typename \+\_\+\+Tp\+::\+Sequence, void $>$ $>$} + +template to catch a proper I2C interface type + +Definition at line 261 of file i2c.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/com/\mbox{\hyperlink{i2c_8h}{i2c.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1id__t.tex b/doc/latex/structutl_1_1id__t.tex new file mode 100644 index 0000000..0ea2a41 --- /dev/null +++ b/doc/latex/structutl_1_1id__t.tex @@ -0,0 +1,635 @@ +\hypertarget{structutl_1_1id__t}{}\section{utl\+:\+:id\+\_\+t$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ Struct Template Reference} +\label{structutl_1_1id__t}\index{utl\+::id\+\_\+t$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$@{utl\+::id\+\_\+t$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$}} + + +A standard container for storing I\+Ds as a fixed size sequence of bytes. This type is based on etl\+::array Meets the requirements of\+: \href{tables.html#65}{\tt container}, \href{tables.html#66}{\tt reversible container}, \href{tables.html#67}{\tt sequence}. Sets support random access iterators. + + + + +{\ttfamily \#include $<$id.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1id__t_a9f1d9c9792705f9d358018d174f22429}{value\+\_\+type}} = \+\_\+\+Tp +\item +using \mbox{\hyperlink{structutl_1_1id__t_ab93692ef0c67737db55a38d658375ce3}{pointer}} = \mbox{\hyperlink{structutl_1_1id__t_a9f1d9c9792705f9d358018d174f22429}{value\+\_\+type}} $\ast$ +\item +using \mbox{\hyperlink{structutl_1_1id__t_a6fbd7a944a981e0cc293319e25d77220}{const\+\_\+pointer}} = const \mbox{\hyperlink{structutl_1_1id__t_a9f1d9c9792705f9d358018d174f22429}{value\+\_\+type}} $\ast$ +\item +using \mbox{\hyperlink{structutl_1_1id__t_a7c0de57bc3065501a953f4811bd9e183}{reference}} = \mbox{\hyperlink{structutl_1_1id__t_a9f1d9c9792705f9d358018d174f22429}{value\+\_\+type}} \& +\item +using \mbox{\hyperlink{structutl_1_1id__t_aa7a965a5bb74490f5a999d5fa08cee2c}{const\+\_\+reference}} = const \mbox{\hyperlink{structutl_1_1id__t_a9f1d9c9792705f9d358018d174f22429}{value\+\_\+type}} \& +\item +using \mbox{\hyperlink{structutl_1_1id__t_acbcdd4547bde10bbbab7a72ad1adbf21}{iterator}} = \mbox{\hyperlink{structutl_1_1id__t_a9f1d9c9792705f9d358018d174f22429}{value\+\_\+type}} $\ast$ +\item +using \mbox{\hyperlink{structutl_1_1id__t_ae27418faa4801ec414140df1bc422350}{const\+\_\+iterator}} = const \mbox{\hyperlink{structutl_1_1id__t_a9f1d9c9792705f9d358018d174f22429}{value\+\_\+type}} $\ast$ +\item +using \mbox{\hyperlink{structutl_1_1id__t_aa4bd898906751aa7d77fb78bcf6ee9bb}{size\+\_\+type}} = \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} +\item +using \mbox{\hyperlink{structutl_1_1id__t_a7341366f60f8ecd4a1e8dcefa33a4018}{difference\+\_\+type}} = std\+::ptrdiff\+\_\+t +\item +using \mbox{\hyperlink{structutl_1_1id__t_a708f6a3b9b85d211f933bbe66db26a2b}{reverse\+\_\+iterator}} = std\+::reverse\+\_\+iterator$<$ \mbox{\hyperlink{structutl_1_1id__t_acbcdd4547bde10bbbab7a72ad1adbf21}{iterator}} $>$ +\item +using \mbox{\hyperlink{structutl_1_1id__t_adac2f02dfe10ad607f5b226fd98bd0d6}{const\+\_\+reverse\+\_\+iterator}} = std\+::reverse\+\_\+iterator$<$ \mbox{\hyperlink{structutl_1_1id__t_ae27418faa4801ec414140df1bc422350}{const\+\_\+iterator}} $>$ +\item +using \mbox{\hyperlink{structutl_1_1id__t_a9951b895fb9cd9d9b40871ba95df98a0}{traits\+\_\+t}} = \mbox{\hyperlink{structutl_1_1id__traits}{id\+\_\+traits}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ +\end{DoxyCompactItemize} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +void \mbox{\hyperlink{structutl_1_1id__t_a99464dc25ccbc124e3c1a21f6889b23a}{fill}} (const \mbox{\hyperlink{structutl_1_1id__t_a9f1d9c9792705f9d358018d174f22429}{value\+\_\+type}} \&v) +\item +void \mbox{\hyperlink{structutl_1_1id__t_af2d4fabd51c5e3aabbb828d356354977}{swap}} (\mbox{\hyperlink{structutl_1_1id__t}{id\+\_\+t}} \&other) noexcept +\end{DoxyCompactItemize} +\begin{Indent}\textbf{ Iterators.}\par +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{structutl_1_1id__t_acbcdd4547bde10bbbab7a72ad1adbf21}{iterator}} \mbox{\hyperlink{structutl_1_1id__t_abf6354098b87ecd333bfb3a160e757df}{begin}} () noexcept +\item +\mbox{\hyperlink{structutl_1_1id__t_ae27418faa4801ec414140df1bc422350}{const\+\_\+iterator}} \mbox{\hyperlink{structutl_1_1id__t_a6a38ff9b9efdc99120dd4ce852813e8a}{begin}} () const noexcept +\item +\mbox{\hyperlink{structutl_1_1id__t_acbcdd4547bde10bbbab7a72ad1adbf21}{iterator}} \mbox{\hyperlink{structutl_1_1id__t_ad3e1553b24e43c71b64d080922c42148}{end}} () noexcept +\item +\mbox{\hyperlink{structutl_1_1id__t_ae27418faa4801ec414140df1bc422350}{const\+\_\+iterator}} \mbox{\hyperlink{structutl_1_1id__t_a82bef2fee2dfad5d895af2b01b888c54}{end}} () const noexcept +\item +\mbox{\hyperlink{structutl_1_1id__t_ae27418faa4801ec414140df1bc422350}{const\+\_\+iterator}} \mbox{\hyperlink{structutl_1_1id__t_a1e753829714d8782eab69249cc61a2ce}{cbegin}} () const noexcept +\item +\mbox{\hyperlink{structutl_1_1id__t_ae27418faa4801ec414140df1bc422350}{const\+\_\+iterator}} \mbox{\hyperlink{structutl_1_1id__t_aa2e98b11c236e1dda8decedbe18d283e}{cend}} () const noexcept +\item +\mbox{\hyperlink{structutl_1_1id__t_a708f6a3b9b85d211f933bbe66db26a2b}{reverse\+\_\+iterator}} \mbox{\hyperlink{structutl_1_1id__t_a96ed68f02faf9800e93113bef1e30182}{rbegin}} () noexcept +\item +\mbox{\hyperlink{structutl_1_1id__t_a708f6a3b9b85d211f933bbe66db26a2b}{reverse\+\_\+iterator}} \mbox{\hyperlink{structutl_1_1id__t_a14050fe2cdcdd4a524d5e3f46f9d51f9}{rend}} () noexcept +\item +\mbox{\hyperlink{structutl_1_1id__t_adac2f02dfe10ad607f5b226fd98bd0d6}{const\+\_\+reverse\+\_\+iterator}} \mbox{\hyperlink{structutl_1_1id__t_a52f0a2de4ae90137d40a645389a6ec53}{rbegin}} () const noexcept +\item +\mbox{\hyperlink{structutl_1_1id__t_adac2f02dfe10ad607f5b226fd98bd0d6}{const\+\_\+reverse\+\_\+iterator}} \mbox{\hyperlink{structutl_1_1id__t_ae04946523c0131b6fb73f1de369c2558}{rend}} () const noexcept +\item +\mbox{\hyperlink{structutl_1_1id__t_adac2f02dfe10ad607f5b226fd98bd0d6}{const\+\_\+reverse\+\_\+iterator}} \mbox{\hyperlink{structutl_1_1id__t_a9ba9d37208f8c4c964574b1a4e3e285a}{crbegin}} () const noexcept +\item +\mbox{\hyperlink{structutl_1_1id__t_adac2f02dfe10ad607f5b226fd98bd0d6}{const\+\_\+reverse\+\_\+iterator}} \mbox{\hyperlink{structutl_1_1id__t_a5b358a67cec1f283e1685ddf7af5d8bd}{crend}} () const noexcept +\end{DoxyCompactItemize} +\end{Indent} +\begin{Indent}\textbf{ Capacity.}\par +\begin{DoxyCompactItemize} +\item +constexpr \mbox{\hyperlink{structutl_1_1id__t_aa4bd898906751aa7d77fb78bcf6ee9bb}{size\+\_\+type}} \mbox{\hyperlink{structutl_1_1id__t_aff09cfb8c3d106dd24a7107f7c9a68f3}{size}} () const noexcept +\item +constexpr \mbox{\hyperlink{structutl_1_1id__t_aa4bd898906751aa7d77fb78bcf6ee9bb}{size\+\_\+type}} \mbox{\hyperlink{structutl_1_1id__t_abeaee41b9ae199fe6f4b40ada1ca9ffa}{max\+\_\+size}} () const noexcept +\item +constexpr bool \mbox{\hyperlink{structutl_1_1id__t_a5052e5dd26342349236eff91766e332e}{empty}} () const noexcept +\end{DoxyCompactItemize} +\end{Indent} +\begin{Indent}\textbf{ Element access.}\par +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{structutl_1_1id__t_a7c0de57bc3065501a953f4811bd9e183}{reference}} \mbox{\hyperlink{structutl_1_1id__t_acc2df57ec1921165238adc13f1a2ad7d}{operator\mbox{[}$\,$\mbox{]}}} (\mbox{\hyperlink{structutl_1_1id__t_aa4bd898906751aa7d77fb78bcf6ee9bb}{size\+\_\+type}} n) noexcept +\begin{DoxyCompactList}\small\item\em Operator \mbox{[}\mbox{]}. \end{DoxyCompactList}\item +constexpr \mbox{\hyperlink{structutl_1_1id__t_aa7a965a5bb74490f5a999d5fa08cee2c}{const\+\_\+reference}} \mbox{\hyperlink{structutl_1_1id__t_a70f4ed6c1efda0d4098ba2e3177da329}{operator\mbox{[}$\,$\mbox{]}}} (\mbox{\hyperlink{structutl_1_1id__t_aa4bd898906751aa7d77fb78bcf6ee9bb}{size\+\_\+type}} n) const noexcept +\begin{DoxyCompactList}\small\item\em Operator \mbox{[}\mbox{]} for const. \end{DoxyCompactList}\item +\mbox{\hyperlink{structutl_1_1id__t_a7c0de57bc3065501a953f4811bd9e183}{reference}} \mbox{\hyperlink{structutl_1_1id__t_abb17fc36dd256093e265985e68e25f32}{at}} (\mbox{\hyperlink{structutl_1_1id__t_aa4bd898906751aa7d77fb78bcf6ee9bb}{size\+\_\+type}} n) noexcept +\item +constexpr \mbox{\hyperlink{structutl_1_1id__t_aa7a965a5bb74490f5a999d5fa08cee2c}{const\+\_\+reference}} \mbox{\hyperlink{structutl_1_1id__t_aa965355792d724f40260bce7d855aae7}{at}} (\mbox{\hyperlink{structutl_1_1id__t_aa4bd898906751aa7d77fb78bcf6ee9bb}{size\+\_\+type}} n) const noexcept +\begin{DoxyCompactList}\small\item\em Compile time boundary check dereference operator. \end{DoxyCompactList}\item +constexpr bool \mbox{\hyperlink{structutl_1_1id__t_a870b1c8cc468c8b9d7e76fd4d4fb8b2d}{bit}} (uint8\+\_\+t bit) const noexcept +\item +void \mbox{\hyperlink{structutl_1_1id__t_af6b5f41a6367c32c4087be3d7a8f5fde}{bit}} (uint8\+\_\+t bit, bool v) noexcept +\item +\mbox{\hyperlink{structutl_1_1id__t_a7c0de57bc3065501a953f4811bd9e183}{reference}} \mbox{\hyperlink{structutl_1_1id__t_a00d98ffd688e3c146b7dca509487b821}{front}} () noexcept +\item +constexpr \mbox{\hyperlink{structutl_1_1id__t_aa7a965a5bb74490f5a999d5fa08cee2c}{const\+\_\+reference}} \mbox{\hyperlink{structutl_1_1id__t_a01a1945e5d9ee1b926bb305d65dbc28b}{front}} () const noexcept +\item +\mbox{\hyperlink{structutl_1_1id__t_a7c0de57bc3065501a953f4811bd9e183}{reference}} \mbox{\hyperlink{structutl_1_1id__t_a9a289ddc68f8ceec5368bf63334a2829}{back}} () noexcept +\item +constexpr \mbox{\hyperlink{structutl_1_1id__t_aa7a965a5bb74490f5a999d5fa08cee2c}{const\+\_\+reference}} \mbox{\hyperlink{structutl_1_1id__t_a5a87967bad104213150f3dedf7e0291f}{back}} () const noexcept +\item +\mbox{\hyperlink{structutl_1_1id__t_ab93692ef0c67737db55a38d658375ce3}{pointer}} \mbox{\hyperlink{structutl_1_1id__t_a6b328d4c3175afaf9f22c8fa8b772eb6}{data}} () noexcept +\item +\mbox{\hyperlink{structutl_1_1id__t_a6fbd7a944a981e0cc293319e25d77220}{const\+\_\+pointer}} \mbox{\hyperlink{structutl_1_1id__t_a67c50e2f7c4d7108023ea1e6ca4263eb}{data}} () const noexcept +\end{DoxyCompactItemize} +\end{Indent} +\subsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{structutl_1_1id__traits_ae8c2dc9bc8ff3284dc89e7760ef601f8}{traits\+\_\+t\+::type}} \mbox{\hyperlink{structutl_1_1id__t_af45f6388a067b5e34f5c82c1ac2b32b6}{\+\_\+data}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$\newline +struct utl\+::id\+\_\+t$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$} + +A standard container for storing I\+Ds as a fixed size sequence of bytes. This type is based on etl\+::array Meets the requirements of\+: \href{tables.html#65}{\tt container}, \href{tables.html#66}{\tt reversible container}, \href{tables.html#67}{\tt sequence}. Sets support random access iterators. + + +\begin{DoxyTemplParams}{Template Parameters} +{\em \+\_\+\+Tp} & The base type \\ +\hline +{\em \+\_\+\+Nm} & Number of bytes. \\ +\hline +\end{DoxyTemplParams} + + +Definition at line 78 of file id.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1id__t_ae27418faa4801ec414140df1bc422350}\label{structutl_1_1id__t_ae27418faa4801ec414140df1bc422350}} +\index{utl\+::id\+\_\+t@{utl\+::id\+\_\+t}!const\+\_\+iterator@{const\+\_\+iterator}} +\index{const\+\_\+iterator@{const\+\_\+iterator}!utl\+::id\+\_\+t@{utl\+::id\+\_\+t}} +\subsubsection{\texorpdfstring{const\+\_\+iterator}{const\_iterator}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +using \mbox{\hyperlink{structutl_1_1id__t}{utl\+::id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::\mbox{\hyperlink{structutl_1_1id__t_ae27418faa4801ec414140df1bc422350}{const\+\_\+iterator}} = const \mbox{\hyperlink{structutl_1_1id__t_a9f1d9c9792705f9d358018d174f22429}{value\+\_\+type}}$\ast$} + + + +Definition at line 85 of file id.\+h. + +\mbox{\Hypertarget{structutl_1_1id__t_a6fbd7a944a981e0cc293319e25d77220}\label{structutl_1_1id__t_a6fbd7a944a981e0cc293319e25d77220}} +\index{utl\+::id\+\_\+t@{utl\+::id\+\_\+t}!const\+\_\+pointer@{const\+\_\+pointer}} +\index{const\+\_\+pointer@{const\+\_\+pointer}!utl\+::id\+\_\+t@{utl\+::id\+\_\+t}} +\subsubsection{\texorpdfstring{const\+\_\+pointer}{const\_pointer}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +using \mbox{\hyperlink{structutl_1_1id__t}{utl\+::id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::\mbox{\hyperlink{structutl_1_1id__t_a6fbd7a944a981e0cc293319e25d77220}{const\+\_\+pointer}} = const \mbox{\hyperlink{structutl_1_1id__t_a9f1d9c9792705f9d358018d174f22429}{value\+\_\+type}}$\ast$} + + + +Definition at line 81 of file id.\+h. + +\mbox{\Hypertarget{structutl_1_1id__t_aa7a965a5bb74490f5a999d5fa08cee2c}\label{structutl_1_1id__t_aa7a965a5bb74490f5a999d5fa08cee2c}} +\index{utl\+::id\+\_\+t@{utl\+::id\+\_\+t}!const\+\_\+reference@{const\+\_\+reference}} +\index{const\+\_\+reference@{const\+\_\+reference}!utl\+::id\+\_\+t@{utl\+::id\+\_\+t}} +\subsubsection{\texorpdfstring{const\+\_\+reference}{const\_reference}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +using \mbox{\hyperlink{structutl_1_1id__t}{utl\+::id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::\mbox{\hyperlink{structutl_1_1id__t_aa7a965a5bb74490f5a999d5fa08cee2c}{const\+\_\+reference}} = const \mbox{\hyperlink{structutl_1_1id__t_a9f1d9c9792705f9d358018d174f22429}{value\+\_\+type}}\&} + + + +Definition at line 83 of file id.\+h. + +\mbox{\Hypertarget{structutl_1_1id__t_adac2f02dfe10ad607f5b226fd98bd0d6}\label{structutl_1_1id__t_adac2f02dfe10ad607f5b226fd98bd0d6}} +\index{utl\+::id\+\_\+t@{utl\+::id\+\_\+t}!const\+\_\+reverse\+\_\+iterator@{const\+\_\+reverse\+\_\+iterator}} +\index{const\+\_\+reverse\+\_\+iterator@{const\+\_\+reverse\+\_\+iterator}!utl\+::id\+\_\+t@{utl\+::id\+\_\+t}} +\subsubsection{\texorpdfstring{const\+\_\+reverse\+\_\+iterator}{const\_reverse\_iterator}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +using \mbox{\hyperlink{structutl_1_1id__t}{utl\+::id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::\mbox{\hyperlink{structutl_1_1id__t_adac2f02dfe10ad607f5b226fd98bd0d6}{const\+\_\+reverse\+\_\+iterator}} = std\+::reverse\+\_\+iterator $<$\mbox{\hyperlink{structutl_1_1id__t_ae27418faa4801ec414140df1bc422350}{const\+\_\+iterator}}$>$} + + + +Definition at line 90 of file id.\+h. + +\mbox{\Hypertarget{structutl_1_1id__t_a7341366f60f8ecd4a1e8dcefa33a4018}\label{structutl_1_1id__t_a7341366f60f8ecd4a1e8dcefa33a4018}} +\index{utl\+::id\+\_\+t@{utl\+::id\+\_\+t}!difference\+\_\+type@{difference\+\_\+type}} +\index{difference\+\_\+type@{difference\+\_\+type}!utl\+::id\+\_\+t@{utl\+::id\+\_\+t}} +\subsubsection{\texorpdfstring{difference\+\_\+type}{difference\_type}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +using \mbox{\hyperlink{structutl_1_1id__t}{utl\+::id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::\mbox{\hyperlink{structutl_1_1id__t_a7341366f60f8ecd4a1e8dcefa33a4018}{difference\+\_\+type}} = std\+::ptrdiff\+\_\+t} + + + +Definition at line 87 of file id.\+h. + +\mbox{\Hypertarget{structutl_1_1id__t_acbcdd4547bde10bbbab7a72ad1adbf21}\label{structutl_1_1id__t_acbcdd4547bde10bbbab7a72ad1adbf21}} +\index{utl\+::id\+\_\+t@{utl\+::id\+\_\+t}!iterator@{iterator}} +\index{iterator@{iterator}!utl\+::id\+\_\+t@{utl\+::id\+\_\+t}} +\subsubsection{\texorpdfstring{iterator}{iterator}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +using \mbox{\hyperlink{structutl_1_1id__t}{utl\+::id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::\mbox{\hyperlink{structutl_1_1id__t_acbcdd4547bde10bbbab7a72ad1adbf21}{iterator}} = \mbox{\hyperlink{structutl_1_1id__t_a9f1d9c9792705f9d358018d174f22429}{value\+\_\+type}}$\ast$} + + + +Definition at line 84 of file id.\+h. + +\mbox{\Hypertarget{structutl_1_1id__t_ab93692ef0c67737db55a38d658375ce3}\label{structutl_1_1id__t_ab93692ef0c67737db55a38d658375ce3}} +\index{utl\+::id\+\_\+t@{utl\+::id\+\_\+t}!pointer@{pointer}} +\index{pointer@{pointer}!utl\+::id\+\_\+t@{utl\+::id\+\_\+t}} +\subsubsection{\texorpdfstring{pointer}{pointer}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +using \mbox{\hyperlink{structutl_1_1id__t}{utl\+::id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::\mbox{\hyperlink{structutl_1_1id__t_ab93692ef0c67737db55a38d658375ce3}{pointer}} = \mbox{\hyperlink{structutl_1_1id__t_a9f1d9c9792705f9d358018d174f22429}{value\+\_\+type}}$\ast$} + + + +Definition at line 80 of file id.\+h. + +\mbox{\Hypertarget{structutl_1_1id__t_a7c0de57bc3065501a953f4811bd9e183}\label{structutl_1_1id__t_a7c0de57bc3065501a953f4811bd9e183}} +\index{utl\+::id\+\_\+t@{utl\+::id\+\_\+t}!reference@{reference}} +\index{reference@{reference}!utl\+::id\+\_\+t@{utl\+::id\+\_\+t}} +\subsubsection{\texorpdfstring{reference}{reference}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +using \mbox{\hyperlink{structutl_1_1id__t}{utl\+::id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::\mbox{\hyperlink{structutl_1_1id__t_a7c0de57bc3065501a953f4811bd9e183}{reference}} = \mbox{\hyperlink{structutl_1_1id__t_a9f1d9c9792705f9d358018d174f22429}{value\+\_\+type}}\&} + + + +Definition at line 82 of file id.\+h. + +\mbox{\Hypertarget{structutl_1_1id__t_a708f6a3b9b85d211f933bbe66db26a2b}\label{structutl_1_1id__t_a708f6a3b9b85d211f933bbe66db26a2b}} +\index{utl\+::id\+\_\+t@{utl\+::id\+\_\+t}!reverse\+\_\+iterator@{reverse\+\_\+iterator}} +\index{reverse\+\_\+iterator@{reverse\+\_\+iterator}!utl\+::id\+\_\+t@{utl\+::id\+\_\+t}} +\subsubsection{\texorpdfstring{reverse\+\_\+iterator}{reverse\_iterator}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +using \mbox{\hyperlink{structutl_1_1id__t}{utl\+::id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::\mbox{\hyperlink{structutl_1_1id__t_a708f6a3b9b85d211f933bbe66db26a2b}{reverse\+\_\+iterator}} = std\+::reverse\+\_\+iterator $<$\mbox{\hyperlink{structutl_1_1id__t_acbcdd4547bde10bbbab7a72ad1adbf21}{iterator}}$>$} + + + +Definition at line 88 of file id.\+h. + +\mbox{\Hypertarget{structutl_1_1id__t_aa4bd898906751aa7d77fb78bcf6ee9bb}\label{structutl_1_1id__t_aa4bd898906751aa7d77fb78bcf6ee9bb}} +\index{utl\+::id\+\_\+t@{utl\+::id\+\_\+t}!size\+\_\+type@{size\+\_\+type}} +\index{size\+\_\+type@{size\+\_\+type}!utl\+::id\+\_\+t@{utl\+::id\+\_\+t}} +\subsubsection{\texorpdfstring{size\+\_\+type}{size\_type}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +using \mbox{\hyperlink{structutl_1_1id__t}{utl\+::id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::\mbox{\hyperlink{structutl_1_1id__t_aa4bd898906751aa7d77fb78bcf6ee9bb}{size\+\_\+type}} = \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}}} + + + +Definition at line 86 of file id.\+h. + +\mbox{\Hypertarget{structutl_1_1id__t_a9951b895fb9cd9d9b40871ba95df98a0}\label{structutl_1_1id__t_a9951b895fb9cd9d9b40871ba95df98a0}} +\index{utl\+::id\+\_\+t@{utl\+::id\+\_\+t}!traits\+\_\+t@{traits\+\_\+t}} +\index{traits\+\_\+t@{traits\+\_\+t}!utl\+::id\+\_\+t@{utl\+::id\+\_\+t}} +\subsubsection{\texorpdfstring{traits\+\_\+t}{traits\_t}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +using \mbox{\hyperlink{structutl_1_1id__t}{utl\+::id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::\mbox{\hyperlink{structutl_1_1id__t_a9951b895fb9cd9d9b40871ba95df98a0}{traits\+\_\+t}} = \mbox{\hyperlink{structutl_1_1id__traits}{id\+\_\+traits}}$<$\+\_\+\+Tp, \+\_\+\+Nm$>$} + + + +Definition at line 93 of file id.\+h. + +\mbox{\Hypertarget{structutl_1_1id__t_a9f1d9c9792705f9d358018d174f22429}\label{structutl_1_1id__t_a9f1d9c9792705f9d358018d174f22429}} +\index{utl\+::id\+\_\+t@{utl\+::id\+\_\+t}!value\+\_\+type@{value\+\_\+type}} +\index{value\+\_\+type@{value\+\_\+type}!utl\+::id\+\_\+t@{utl\+::id\+\_\+t}} +\subsubsection{\texorpdfstring{value\+\_\+type}{value\_type}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +using \mbox{\hyperlink{structutl_1_1id__t}{utl\+::id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::\mbox{\hyperlink{structutl_1_1id__t_a9f1d9c9792705f9d358018d174f22429}{value\+\_\+type}} = \+\_\+\+Tp} + + + +Definition at line 79 of file id.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{structutl_1_1id__t_abb17fc36dd256093e265985e68e25f32}\label{structutl_1_1id__t_abb17fc36dd256093e265985e68e25f32}} +\index{utl\+::id\+\_\+t@{utl\+::id\+\_\+t}!at@{at}} +\index{at@{at}!utl\+::id\+\_\+t@{utl\+::id\+\_\+t}} +\subsubsection{\texorpdfstring{at()}{at()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +\mbox{\hyperlink{structutl_1_1id__t_a7c0de57bc3065501a953f4811bd9e183}{reference}} \mbox{\hyperlink{structutl_1_1id__t}{utl\+::id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::at (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{structutl_1_1id__t_aa4bd898906751aa7d77fb78bcf6ee9bb}{size\+\_\+type}}}]{n }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + +Boundary check dereference operator. If out of bounds, abort (for now). + +Definition at line 144 of file id.\+h. + +\mbox{\Hypertarget{structutl_1_1id__t_aa965355792d724f40260bce7d855aae7}\label{structutl_1_1id__t_aa965355792d724f40260bce7d855aae7}} +\index{utl\+::id\+\_\+t@{utl\+::id\+\_\+t}!at@{at}} +\index{at@{at}!utl\+::id\+\_\+t@{utl\+::id\+\_\+t}} +\subsubsection{\texorpdfstring{at()}{at()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +constexpr \mbox{\hyperlink{structutl_1_1id__t_aa7a965a5bb74490f5a999d5fa08cee2c}{const\+\_\+reference}} \mbox{\hyperlink{structutl_1_1id__t}{utl\+::id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::at (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{structutl_1_1id__t_aa4bd898906751aa7d77fb78bcf6ee9bb}{size\+\_\+type}}}]{n }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Compile time boundary check dereference operator. + + + +Definition at line 151 of file id.\+h. + +\mbox{\Hypertarget{structutl_1_1id__t_a9a289ddc68f8ceec5368bf63334a2829}\label{structutl_1_1id__t_a9a289ddc68f8ceec5368bf63334a2829}} +\index{utl\+::id\+\_\+t@{utl\+::id\+\_\+t}!back@{back}} +\index{back@{back}!utl\+::id\+\_\+t@{utl\+::id\+\_\+t}} +\subsubsection{\texorpdfstring{back()}{back()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +\mbox{\hyperlink{structutl_1_1id__t_a7c0de57bc3065501a953f4811bd9e183}{reference}} \mbox{\hyperlink{structutl_1_1id__t}{utl\+::id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::back (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 184 of file id.\+h. + +\mbox{\Hypertarget{structutl_1_1id__t_a5a87967bad104213150f3dedf7e0291f}\label{structutl_1_1id__t_a5a87967bad104213150f3dedf7e0291f}} +\index{utl\+::id\+\_\+t@{utl\+::id\+\_\+t}!back@{back}} +\index{back@{back}!utl\+::id\+\_\+t@{utl\+::id\+\_\+t}} +\subsubsection{\texorpdfstring{back()}{back()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +constexpr \mbox{\hyperlink{structutl_1_1id__t_aa7a965a5bb74490f5a999d5fa08cee2c}{const\+\_\+reference}} \mbox{\hyperlink{structutl_1_1id__t}{utl\+::id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::back (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 187 of file id.\+h. + +\mbox{\Hypertarget{structutl_1_1id__t_abf6354098b87ecd333bfb3a160e757df}\label{structutl_1_1id__t_abf6354098b87ecd333bfb3a160e757df}} +\index{utl\+::id\+\_\+t@{utl\+::id\+\_\+t}!begin@{begin}} +\index{begin@{begin}!utl\+::id\+\_\+t@{utl\+::id\+\_\+t}} +\subsubsection{\texorpdfstring{begin()}{begin()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +\mbox{\hyperlink{structutl_1_1id__t_acbcdd4547bde10bbbab7a72ad1adbf21}{iterator}} \mbox{\hyperlink{structutl_1_1id__t}{utl\+::id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::begin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 107 of file id.\+h. + +\mbox{\Hypertarget{structutl_1_1id__t_a6a38ff9b9efdc99120dd4ce852813e8a}\label{structutl_1_1id__t_a6a38ff9b9efdc99120dd4ce852813e8a}} +\index{utl\+::id\+\_\+t@{utl\+::id\+\_\+t}!begin@{begin}} +\index{begin@{begin}!utl\+::id\+\_\+t@{utl\+::id\+\_\+t}} +\subsubsection{\texorpdfstring{begin()}{begin()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +\mbox{\hyperlink{structutl_1_1id__t_ae27418faa4801ec414140df1bc422350}{const\+\_\+iterator}} \mbox{\hyperlink{structutl_1_1id__t}{utl\+::id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::begin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 108 of file id.\+h. + +\mbox{\Hypertarget{structutl_1_1id__t_a870b1c8cc468c8b9d7e76fd4d4fb8b2d}\label{structutl_1_1id__t_a870b1c8cc468c8b9d7e76fd4d4fb8b2d}} +\index{utl\+::id\+\_\+t@{utl\+::id\+\_\+t}!bit@{bit}} +\index{bit@{bit}!utl\+::id\+\_\+t@{utl\+::id\+\_\+t}} +\subsubsection{\texorpdfstring{bit()}{bit()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +constexpr bool \mbox{\hyperlink{structutl_1_1id__t}{utl\+::id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::bit (\begin{DoxyParamCaption}\item[{uint8\+\_\+t}]{bit }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + +Read a bit position from a id +\begin{DoxyParams}{Parameters} +{\em bit} & The bit location we want to read \\ +\hline +\end{DoxyParams} + + +Definition at line 159 of file id.\+h. + +\mbox{\Hypertarget{structutl_1_1id__t_af6b5f41a6367c32c4087be3d7a8f5fde}\label{structutl_1_1id__t_af6b5f41a6367c32c4087be3d7a8f5fde}} +\index{utl\+::id\+\_\+t@{utl\+::id\+\_\+t}!bit@{bit}} +\index{bit@{bit}!utl\+::id\+\_\+t@{utl\+::id\+\_\+t}} +\subsubsection{\texorpdfstring{bit()}{bit()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +void \mbox{\hyperlink{structutl_1_1id__t}{utl\+::id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::bit (\begin{DoxyParamCaption}\item[{uint8\+\_\+t}]{bit, }\item[{bool}]{v }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + +Write/modify a bit position from a id +\begin{DoxyParams}{Parameters} +{\em bit} & The bit location we want to set \\ +\hline +{\em v} & The value we want to set \\ +\hline +\end{DoxyParams} + + +Definition at line 169 of file id.\+h. + +\mbox{\Hypertarget{structutl_1_1id__t_a1e753829714d8782eab69249cc61a2ce}\label{structutl_1_1id__t_a1e753829714d8782eab69249cc61a2ce}} +\index{utl\+::id\+\_\+t@{utl\+::id\+\_\+t}!cbegin@{cbegin}} +\index{cbegin@{cbegin}!utl\+::id\+\_\+t@{utl\+::id\+\_\+t}} +\subsubsection{\texorpdfstring{cbegin()}{cbegin()}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +\mbox{\hyperlink{structutl_1_1id__t_ae27418faa4801ec414140df1bc422350}{const\+\_\+iterator}} \mbox{\hyperlink{structutl_1_1id__t}{utl\+::id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::cbegin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 111 of file id.\+h. + +\mbox{\Hypertarget{structutl_1_1id__t_aa2e98b11c236e1dda8decedbe18d283e}\label{structutl_1_1id__t_aa2e98b11c236e1dda8decedbe18d283e}} +\index{utl\+::id\+\_\+t@{utl\+::id\+\_\+t}!cend@{cend}} +\index{cend@{cend}!utl\+::id\+\_\+t@{utl\+::id\+\_\+t}} +\subsubsection{\texorpdfstring{cend()}{cend()}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +\mbox{\hyperlink{structutl_1_1id__t_ae27418faa4801ec414140df1bc422350}{const\+\_\+iterator}} \mbox{\hyperlink{structutl_1_1id__t}{utl\+::id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::cend (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 112 of file id.\+h. + +\mbox{\Hypertarget{structutl_1_1id__t_a9ba9d37208f8c4c964574b1a4e3e285a}\label{structutl_1_1id__t_a9ba9d37208f8c4c964574b1a4e3e285a}} +\index{utl\+::id\+\_\+t@{utl\+::id\+\_\+t}!crbegin@{crbegin}} +\index{crbegin@{crbegin}!utl\+::id\+\_\+t@{utl\+::id\+\_\+t}} +\subsubsection{\texorpdfstring{crbegin()}{crbegin()}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +\mbox{\hyperlink{structutl_1_1id__t_adac2f02dfe10ad607f5b226fd98bd0d6}{const\+\_\+reverse\+\_\+iterator}} \mbox{\hyperlink{structutl_1_1id__t}{utl\+::id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::crbegin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 118 of file id.\+h. + +\mbox{\Hypertarget{structutl_1_1id__t_a5b358a67cec1f283e1685ddf7af5d8bd}\label{structutl_1_1id__t_a5b358a67cec1f283e1685ddf7af5d8bd}} +\index{utl\+::id\+\_\+t@{utl\+::id\+\_\+t}!crend@{crend}} +\index{crend@{crend}!utl\+::id\+\_\+t@{utl\+::id\+\_\+t}} +\subsubsection{\texorpdfstring{crend()}{crend()}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +\mbox{\hyperlink{structutl_1_1id__t_adac2f02dfe10ad607f5b226fd98bd0d6}{const\+\_\+reverse\+\_\+iterator}} \mbox{\hyperlink{structutl_1_1id__t}{utl\+::id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::crend (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 119 of file id.\+h. + +\mbox{\Hypertarget{structutl_1_1id__t_a6b328d4c3175afaf9f22c8fa8b772eb6}\label{structutl_1_1id__t_a6b328d4c3175afaf9f22c8fa8b772eb6}} +\index{utl\+::id\+\_\+t@{utl\+::id\+\_\+t}!data@{data}} +\index{data@{data}!utl\+::id\+\_\+t@{utl\+::id\+\_\+t}} +\subsubsection{\texorpdfstring{data()}{data()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +\mbox{\hyperlink{structutl_1_1id__t_ab93692ef0c67737db55a38d658375ce3}{pointer}} \mbox{\hyperlink{structutl_1_1id__t}{utl\+::id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::data (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 193 of file id.\+h. + +\mbox{\Hypertarget{structutl_1_1id__t_a67c50e2f7c4d7108023ea1e6ca4263eb}\label{structutl_1_1id__t_a67c50e2f7c4d7108023ea1e6ca4263eb}} +\index{utl\+::id\+\_\+t@{utl\+::id\+\_\+t}!data@{data}} +\index{data@{data}!utl\+::id\+\_\+t@{utl\+::id\+\_\+t}} +\subsubsection{\texorpdfstring{data()}{data()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +\mbox{\hyperlink{structutl_1_1id__t_a6fbd7a944a981e0cc293319e25d77220}{const\+\_\+pointer}} \mbox{\hyperlink{structutl_1_1id__t}{utl\+::id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::data (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 194 of file id.\+h. + +\mbox{\Hypertarget{structutl_1_1id__t_a5052e5dd26342349236eff91766e332e}\label{structutl_1_1id__t_a5052e5dd26342349236eff91766e332e}} +\index{utl\+::id\+\_\+t@{utl\+::id\+\_\+t}!empty@{empty}} +\index{empty@{empty}!utl\+::id\+\_\+t@{utl\+::id\+\_\+t}} +\subsubsection{\texorpdfstring{empty()}{empty()}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +constexpr bool \mbox{\hyperlink{structutl_1_1id__t}{utl\+::id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::empty (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 125 of file id.\+h. + +\mbox{\Hypertarget{structutl_1_1id__t_ad3e1553b24e43c71b64d080922c42148}\label{structutl_1_1id__t_ad3e1553b24e43c71b64d080922c42148}} +\index{utl\+::id\+\_\+t@{utl\+::id\+\_\+t}!end@{end}} +\index{end@{end}!utl\+::id\+\_\+t@{utl\+::id\+\_\+t}} +\subsubsection{\texorpdfstring{end()}{end()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +\mbox{\hyperlink{structutl_1_1id__t_acbcdd4547bde10bbbab7a72ad1adbf21}{iterator}} \mbox{\hyperlink{structutl_1_1id__t}{utl\+::id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::end (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 109 of file id.\+h. + +\mbox{\Hypertarget{structutl_1_1id__t_a82bef2fee2dfad5d895af2b01b888c54}\label{structutl_1_1id__t_a82bef2fee2dfad5d895af2b01b888c54}} +\index{utl\+::id\+\_\+t@{utl\+::id\+\_\+t}!end@{end}} +\index{end@{end}!utl\+::id\+\_\+t@{utl\+::id\+\_\+t}} +\subsubsection{\texorpdfstring{end()}{end()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +\mbox{\hyperlink{structutl_1_1id__t_ae27418faa4801ec414140df1bc422350}{const\+\_\+iterator}} \mbox{\hyperlink{structutl_1_1id__t}{utl\+::id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::end (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 110 of file id.\+h. + +\mbox{\Hypertarget{structutl_1_1id__t_a99464dc25ccbc124e3c1a21f6889b23a}\label{structutl_1_1id__t_a99464dc25ccbc124e3c1a21f6889b23a}} +\index{utl\+::id\+\_\+t@{utl\+::id\+\_\+t}!fill@{fill}} +\index{fill@{fill}!utl\+::id\+\_\+t@{utl\+::id\+\_\+t}} +\subsubsection{\texorpdfstring{fill()}{fill()}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +void \mbox{\hyperlink{structutl_1_1id__t}{utl\+::id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::fill (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structutl_1_1id__t_a9f1d9c9792705f9d358018d174f22429}{value\+\_\+type}} \&}]{v }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Definition at line 99 of file id.\+h. + +\mbox{\Hypertarget{structutl_1_1id__t_a00d98ffd688e3c146b7dca509487b821}\label{structutl_1_1id__t_a00d98ffd688e3c146b7dca509487b821}} +\index{utl\+::id\+\_\+t@{utl\+::id\+\_\+t}!front@{front}} +\index{front@{front}!utl\+::id\+\_\+t@{utl\+::id\+\_\+t}} +\subsubsection{\texorpdfstring{front()}{front()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +\mbox{\hyperlink{structutl_1_1id__t_a7c0de57bc3065501a953f4811bd9e183}{reference}} \mbox{\hyperlink{structutl_1_1id__t}{utl\+::id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::front (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 176 of file id.\+h. + +\mbox{\Hypertarget{structutl_1_1id__t_a01a1945e5d9ee1b926bb305d65dbc28b}\label{structutl_1_1id__t_a01a1945e5d9ee1b926bb305d65dbc28b}} +\index{utl\+::id\+\_\+t@{utl\+::id\+\_\+t}!front@{front}} +\index{front@{front}!utl\+::id\+\_\+t@{utl\+::id\+\_\+t}} +\subsubsection{\texorpdfstring{front()}{front()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +constexpr \mbox{\hyperlink{structutl_1_1id__t_aa7a965a5bb74490f5a999d5fa08cee2c}{const\+\_\+reference}} \mbox{\hyperlink{structutl_1_1id__t}{utl\+::id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::front (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 179 of file id.\+h. + +\mbox{\Hypertarget{structutl_1_1id__t_abeaee41b9ae199fe6f4b40ada1ca9ffa}\label{structutl_1_1id__t_abeaee41b9ae199fe6f4b40ada1ca9ffa}} +\index{utl\+::id\+\_\+t@{utl\+::id\+\_\+t}!max\+\_\+size@{max\+\_\+size}} +\index{max\+\_\+size@{max\+\_\+size}!utl\+::id\+\_\+t@{utl\+::id\+\_\+t}} +\subsubsection{\texorpdfstring{max\+\_\+size()}{max\_size()}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +constexpr \mbox{\hyperlink{structutl_1_1id__t_aa4bd898906751aa7d77fb78bcf6ee9bb}{size\+\_\+type}} \mbox{\hyperlink{structutl_1_1id__t}{utl\+::id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::max\+\_\+size (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 124 of file id.\+h. + +\mbox{\Hypertarget{structutl_1_1id__t_acc2df57ec1921165238adc13f1a2ad7d}\label{structutl_1_1id__t_acc2df57ec1921165238adc13f1a2ad7d}} +\index{utl\+::id\+\_\+t@{utl\+::id\+\_\+t}!operator\mbox{[}\mbox{]}@{operator[]}} +\index{operator\mbox{[}\mbox{]}@{operator[]}!utl\+::id\+\_\+t@{utl\+::id\+\_\+t}} +\subsubsection{\texorpdfstring{operator[]()}{operator[]()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +\mbox{\hyperlink{structutl_1_1id__t_a7c0de57bc3065501a953f4811bd9e183}{reference}} \mbox{\hyperlink{structutl_1_1id__t}{utl\+::id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::operator\mbox{[}$\,$\mbox{]} (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{structutl_1_1id__t_aa4bd898906751aa7d77fb78bcf6ee9bb}{size\+\_\+type}}}]{n }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Operator \mbox{[}\mbox{]}. + + + +Definition at line 132 of file id.\+h. + +\mbox{\Hypertarget{structutl_1_1id__t_a70f4ed6c1efda0d4098ba2e3177da329}\label{structutl_1_1id__t_a70f4ed6c1efda0d4098ba2e3177da329}} +\index{utl\+::id\+\_\+t@{utl\+::id\+\_\+t}!operator\mbox{[}\mbox{]}@{operator[]}} +\index{operator\mbox{[}\mbox{]}@{operator[]}!utl\+::id\+\_\+t@{utl\+::id\+\_\+t}} +\subsubsection{\texorpdfstring{operator[]()}{operator[]()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +constexpr \mbox{\hyperlink{structutl_1_1id__t_aa7a965a5bb74490f5a999d5fa08cee2c}{const\+\_\+reference}} \mbox{\hyperlink{structutl_1_1id__t}{utl\+::id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::operator\mbox{[}$\,$\mbox{]} (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{structutl_1_1id__t_aa4bd898906751aa7d77fb78bcf6ee9bb}{size\+\_\+type}}}]{n }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Operator \mbox{[}\mbox{]} for const. + + + +Definition at line 136 of file id.\+h. + +\mbox{\Hypertarget{structutl_1_1id__t_a96ed68f02faf9800e93113bef1e30182}\label{structutl_1_1id__t_a96ed68f02faf9800e93113bef1e30182}} +\index{utl\+::id\+\_\+t@{utl\+::id\+\_\+t}!rbegin@{rbegin}} +\index{rbegin@{rbegin}!utl\+::id\+\_\+t@{utl\+::id\+\_\+t}} +\subsubsection{\texorpdfstring{rbegin()}{rbegin()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +\mbox{\hyperlink{structutl_1_1id__t_a708f6a3b9b85d211f933bbe66db26a2b}{reverse\+\_\+iterator}} \mbox{\hyperlink{structutl_1_1id__t}{utl\+::id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::rbegin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 114 of file id.\+h. + +\mbox{\Hypertarget{structutl_1_1id__t_a52f0a2de4ae90137d40a645389a6ec53}\label{structutl_1_1id__t_a52f0a2de4ae90137d40a645389a6ec53}} +\index{utl\+::id\+\_\+t@{utl\+::id\+\_\+t}!rbegin@{rbegin}} +\index{rbegin@{rbegin}!utl\+::id\+\_\+t@{utl\+::id\+\_\+t}} +\subsubsection{\texorpdfstring{rbegin()}{rbegin()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +\mbox{\hyperlink{structutl_1_1id__t_adac2f02dfe10ad607f5b226fd98bd0d6}{const\+\_\+reverse\+\_\+iterator}} \mbox{\hyperlink{structutl_1_1id__t}{utl\+::id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::rbegin (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 116 of file id.\+h. + +\mbox{\Hypertarget{structutl_1_1id__t_a14050fe2cdcdd4a524d5e3f46f9d51f9}\label{structutl_1_1id__t_a14050fe2cdcdd4a524d5e3f46f9d51f9}} +\index{utl\+::id\+\_\+t@{utl\+::id\+\_\+t}!rend@{rend}} +\index{rend@{rend}!utl\+::id\+\_\+t@{utl\+::id\+\_\+t}} +\subsubsection{\texorpdfstring{rend()}{rend()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +\mbox{\hyperlink{structutl_1_1id__t_a708f6a3b9b85d211f933bbe66db26a2b}{reverse\+\_\+iterator}} \mbox{\hyperlink{structutl_1_1id__t}{utl\+::id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::rend (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 115 of file id.\+h. + +\mbox{\Hypertarget{structutl_1_1id__t_ae04946523c0131b6fb73f1de369c2558}\label{structutl_1_1id__t_ae04946523c0131b6fb73f1de369c2558}} +\index{utl\+::id\+\_\+t@{utl\+::id\+\_\+t}!rend@{rend}} +\index{rend@{rend}!utl\+::id\+\_\+t@{utl\+::id\+\_\+t}} +\subsubsection{\texorpdfstring{rend()}{rend()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +\mbox{\hyperlink{structutl_1_1id__t_adac2f02dfe10ad607f5b226fd98bd0d6}{const\+\_\+reverse\+\_\+iterator}} \mbox{\hyperlink{structutl_1_1id__t}{utl\+::id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::rend (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 117 of file id.\+h. + +\mbox{\Hypertarget{structutl_1_1id__t_aff09cfb8c3d106dd24a7107f7c9a68f3}\label{structutl_1_1id__t_aff09cfb8c3d106dd24a7107f7c9a68f3}} +\index{utl\+::id\+\_\+t@{utl\+::id\+\_\+t}!size@{size}} +\index{size@{size}!utl\+::id\+\_\+t@{utl\+::id\+\_\+t}} +\subsubsection{\texorpdfstring{size()}{size()}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +constexpr \mbox{\hyperlink{structutl_1_1id__t_aa4bd898906751aa7d77fb78bcf6ee9bb}{size\+\_\+type}} \mbox{\hyperlink{structutl_1_1id__t}{utl\+::id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::size (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption}) const\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 123 of file id.\+h. + +\mbox{\Hypertarget{structutl_1_1id__t_af2d4fabd51c5e3aabbb828d356354977}\label{structutl_1_1id__t_af2d4fabd51c5e3aabbb828d356354977}} +\index{utl\+::id\+\_\+t@{utl\+::id\+\_\+t}!swap@{swap}} +\index{swap@{swap}!utl\+::id\+\_\+t@{utl\+::id\+\_\+t}} +\subsubsection{\texorpdfstring{swap()}{swap()}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +void \mbox{\hyperlink{structutl_1_1id__t}{utl\+::id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::swap (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{structutl_1_1id__t}{id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ \&}]{other }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [noexcept]}} + + + +Definition at line 101 of file id.\+h. + + + +\subsection{Member Data Documentation} +\mbox{\Hypertarget{structutl_1_1id__t_af45f6388a067b5e34f5c82c1ac2b32b6}\label{structutl_1_1id__t_af45f6388a067b5e34f5c82c1ac2b32b6}} +\index{utl\+::id\+\_\+t@{utl\+::id\+\_\+t}!\+\_\+data@{\+\_\+data}} +\index{\+\_\+data@{\+\_\+data}!utl\+::id\+\_\+t@{utl\+::id\+\_\+t}} +\subsubsection{\texorpdfstring{\+\_\+data}{\_data}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$ \\ +\mbox{\hyperlink{structutl_1_1id__traits_ae8c2dc9bc8ff3284dc89e7760ef601f8}{traits\+\_\+t\+::type}} \mbox{\hyperlink{structutl_1_1id__t}{utl\+::id\+\_\+t}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::\+\_\+data} + + + +Definition at line 94 of file id.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/container/\mbox{\hyperlink{id_8h}{id.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1id__traits.tex b/doc/latex/structutl_1_1id__traits.tex new file mode 100644 index 0000000..12d5b91 --- /dev/null +++ b/doc/latex/structutl_1_1id__traits.tex @@ -0,0 +1,77 @@ +\hypertarget{structutl_1_1id__traits}{}\section{utl\+:\+:id\+\_\+traits$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$ Struct Template Reference} +\label{structutl_1_1id__traits}\index{utl\+::id\+\_\+traits$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$@{utl\+::id\+\_\+traits$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$}} + + +id container traits helper + + + + +{\ttfamily \#include $<$id.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +typedef \+\_\+\+Tp \mbox{\hyperlink{structutl_1_1id__traits_ae8c2dc9bc8ff3284dc89e7760ef601f8}{type}}\mbox{[}\+\_\+\+Nm\mbox{]} +\end{DoxyCompactItemize} +\subsection*{Static Public Member Functions} +\begin{DoxyCompactItemize} +\item +static constexpr \+\_\+\+Tp \& \mbox{\hyperlink{structutl_1_1id__traits_adcca147b5e6dd495ce61272257867a13}{Ref}} (const \mbox{\hyperlink{structutl_1_1id__traits_ae8c2dc9bc8ff3284dc89e7760ef601f8}{type}} \&t, \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} n) noexcept +\item +static constexpr \+\_\+\+Tp $\ast$ \mbox{\hyperlink{structutl_1_1id__traits_a570679371037d3f6716f2bb87f9e67d5}{Ptr}} (const \mbox{\hyperlink{structutl_1_1id__traits_ae8c2dc9bc8ff3284dc89e7760ef601f8}{type}} \&t) noexcept +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename \+\_\+\+Tp, size\+\_\+t \+\_\+\+Nm$>$\newline +struct utl\+::id\+\_\+traits$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$} + +id container traits helper + +Definition at line 38 of file id.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1id__traits_ae8c2dc9bc8ff3284dc89e7760ef601f8}\label{structutl_1_1id__traits_ae8c2dc9bc8ff3284dc89e7760ef601f8}} +\index{utl\+::id\+\_\+traits@{utl\+::id\+\_\+traits}!type@{type}} +\index{type@{type}!utl\+::id\+\_\+traits@{utl\+::id\+\_\+traits}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp , size\+\_\+t \+\_\+\+Nm$>$ \\ +typedef \+\_\+\+Tp \mbox{\hyperlink{structutl_1_1id__traits}{utl\+::id\+\_\+traits}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::type\mbox{[}\+\_\+\+Nm\mbox{]}} + + + +Definition at line 39 of file id.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{structutl_1_1id__traits_a570679371037d3f6716f2bb87f9e67d5}\label{structutl_1_1id__traits_a570679371037d3f6716f2bb87f9e67d5}} +\index{utl\+::id\+\_\+traits@{utl\+::id\+\_\+traits}!Ptr@{Ptr}} +\index{Ptr@{Ptr}!utl\+::id\+\_\+traits@{utl\+::id\+\_\+traits}} +\subsubsection{\texorpdfstring{Ptr()}{Ptr()}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp , size\+\_\+t \+\_\+\+Nm$>$ \\ +static constexpr \+\_\+\+Tp$\ast$ \mbox{\hyperlink{structutl_1_1id__traits}{utl\+::id\+\_\+traits}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::Ptr (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structutl_1_1id__traits_ae8c2dc9bc8ff3284dc89e7760ef601f8}{type}} \&}]{t }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}, {\ttfamily [noexcept]}} + + + +Definition at line 45 of file id.\+h. + +\mbox{\Hypertarget{structutl_1_1id__traits_adcca147b5e6dd495ce61272257867a13}\label{structutl_1_1id__traits_adcca147b5e6dd495ce61272257867a13}} +\index{utl\+::id\+\_\+traits@{utl\+::id\+\_\+traits}!Ref@{Ref}} +\index{Ref@{Ref}!utl\+::id\+\_\+traits@{utl\+::id\+\_\+traits}} +\subsubsection{\texorpdfstring{Ref()}{Ref()}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp , size\+\_\+t \+\_\+\+Nm$>$ \\ +static constexpr \+\_\+\+Tp\& \mbox{\hyperlink{structutl_1_1id__traits}{utl\+::id\+\_\+traits}}$<$ \+\_\+\+Tp, \+\_\+\+Nm $>$\+::Ref (\begin{DoxyParamCaption}\item[{const \mbox{\hyperlink{structutl_1_1id__traits_ae8c2dc9bc8ff3284dc89e7760ef601f8}{type}} \&}]{t, }\item[{\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}}}]{n }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}, {\ttfamily [noexcept]}} + + + +Definition at line 41 of file id.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/container/\mbox{\hyperlink{id_8h}{id.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1id__traits_3_01___tp_00_010_01_4.tex b/doc/latex/structutl_1_1id__traits_3_01___tp_00_010_01_4.tex new file mode 100644 index 0000000..f250c0a --- /dev/null +++ b/doc/latex/structutl_1_1id__traits_3_01___tp_00_010_01_4.tex @@ -0,0 +1,58 @@ +\hypertarget{structutl_1_1id__traits_3_01___tp_00_010_01_4}{}\section{utl\+:\+:id\+\_\+traits$<$ \+\_\+\+Tp, 0 $>$ Struct Template Reference} +\label{structutl_1_1id__traits_3_01___tp_00_010_01_4}\index{utl\+::id\+\_\+traits$<$ \+\_\+\+Tp, 0 $>$@{utl\+::id\+\_\+traits$<$ \+\_\+\+Tp, 0 $>$}} + + +{\ttfamily \#include $<$id.\+h$>$} + +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structutl_1_1id__traits_3_01___tp_00_010_01_4_1_1type}{type}} +\end{DoxyCompactItemize} +\subsection*{Static Public Member Functions} +\begin{DoxyCompactItemize} +\item +static constexpr \+\_\+\+Tp \& \mbox{\hyperlink{structutl_1_1id__traits_3_01___tp_00_010_01_4_a578c8ad9389e23cfb3322ebe67875f4c}{Ref}} (const type \&t, \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} n) noexcept +\item +static constexpr \+\_\+\+Tp $\ast$ \mbox{\hyperlink{structutl_1_1id__traits_3_01___tp_00_010_01_4_a4d66c1e3f4bf6b06bbe030a28cd5e878}{Ptr}} (const type \&t) noexcept +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename \+\_\+\+Tp$>$\newline +struct utl\+::id\+\_\+traits$<$ \+\_\+\+Tp, 0 $>$} + + + +Definition at line 51 of file id.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{structutl_1_1id__traits_3_01___tp_00_010_01_4_a4d66c1e3f4bf6b06bbe030a28cd5e878}\label{structutl_1_1id__traits_3_01___tp_00_010_01_4_a4d66c1e3f4bf6b06bbe030a28cd5e878}} +\index{utl\+::id\+\_\+traits$<$ \+\_\+\+Tp, 0 $>$@{utl\+::id\+\_\+traits$<$ \+\_\+\+Tp, 0 $>$}!Ptr@{Ptr}} +\index{Ptr@{Ptr}!utl\+::id\+\_\+traits$<$ \+\_\+\+Tp, 0 $>$@{utl\+::id\+\_\+traits$<$ \+\_\+\+Tp, 0 $>$}} +\subsubsection{\texorpdfstring{Ptr()}{Ptr()}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp $>$ \\ +static constexpr \+\_\+\+Tp$\ast$ \mbox{\hyperlink{structutl_1_1id__traits}{utl\+::id\+\_\+traits}}$<$ \+\_\+\+Tp, 0 $>$\+::Ptr (\begin{DoxyParamCaption}\item[{const type \&}]{t }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}, {\ttfamily [noexcept]}} + + + +Definition at line 58 of file id.\+h. + +\mbox{\Hypertarget{structutl_1_1id__traits_3_01___tp_00_010_01_4_a578c8ad9389e23cfb3322ebe67875f4c}\label{structutl_1_1id__traits_3_01___tp_00_010_01_4_a578c8ad9389e23cfb3322ebe67875f4c}} +\index{utl\+::id\+\_\+traits$<$ \+\_\+\+Tp, 0 $>$@{utl\+::id\+\_\+traits$<$ \+\_\+\+Tp, 0 $>$}!Ref@{Ref}} +\index{Ref@{Ref}!utl\+::id\+\_\+traits$<$ \+\_\+\+Tp, 0 $>$@{utl\+::id\+\_\+traits$<$ \+\_\+\+Tp, 0 $>$}} +\subsubsection{\texorpdfstring{Ref()}{Ref()}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp $>$ \\ +static constexpr \+\_\+\+Tp\& \mbox{\hyperlink{structutl_1_1id__traits}{utl\+::id\+\_\+traits}}$<$ \+\_\+\+Tp, 0 $>$\+::Ref (\begin{DoxyParamCaption}\item[{const type \&}]{t, }\item[{\mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}}}]{n }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}, {\ttfamily [noexcept]}} + + + +Definition at line 54 of file id.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/container/\mbox{\hyperlink{id_8h}{id.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1id__traits_3_01___tp_00_010_01_4_1_1type.tex b/doc/latex/structutl_1_1id__traits_3_01___tp_00_010_01_4_1_1type.tex new file mode 100644 index 0000000..126d859 --- /dev/null +++ b/doc/latex/structutl_1_1id__traits_3_01___tp_00_010_01_4_1_1type.tex @@ -0,0 +1,21 @@ +\hypertarget{structutl_1_1id__traits_3_01___tp_00_010_01_4_1_1type}{}\section{utl\+:\+:id\+\_\+traits$<$ \+\_\+\+Tp, 0 $>$\+:\+:type Struct Reference} +\label{structutl_1_1id__traits_3_01___tp_00_010_01_4_1_1type}\index{utl\+::id\+\_\+traits$<$ \+\_\+\+Tp, 0 $>$\+::type@{utl\+::id\+\_\+traits$<$ \+\_\+\+Tp, 0 $>$\+::type}} + + +{\ttfamily \#include $<$id.\+h$>$} + + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename \+\_\+\+Tp$>$\newline +struct utl\+::id\+\_\+traits$<$ \+\_\+\+Tp, 0 $>$\+::type} + + + +Definition at line 52 of file id.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/container/\mbox{\hyperlink{id_8h}{id.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1idx__dev__details_1_1is__idx__dev__.eps b/doc/latex/structutl_1_1idx__dev__details_1_1is__idx__dev__.eps new file mode 100644 index 0000000..4ece6bd --- /dev/null +++ b/doc/latex/structutl_1_1idx__dev__details_1_1is__idx__dev__.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 130.293160 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 3.837500 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::idx_dev_details::is_idx_dev_< _Tp, typename >) cw +(false_) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::idx_dev_details::is_idx_dev_< _Tp, typename >) 0.000000 0.000000 box + (false_) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/structutl_1_1idx__dev__details_1_1is__idx__dev__.tex b/doc/latex/structutl_1_1idx__dev__details_1_1is__idx__dev__.tex new file mode 100644 index 0000000..b643f01 --- /dev/null +++ b/doc/latex/structutl_1_1idx__dev__details_1_1is__idx__dev__.tex @@ -0,0 +1,32 @@ +\hypertarget{structutl_1_1idx__dev__details_1_1is__idx__dev__}{}\section{utl\+:\+:idx\+\_\+dev\+\_\+details\+:\+:is\+\_\+idx\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, typename $>$ Struct Template Reference} +\label{structutl_1_1idx__dev__details_1_1is__idx__dev__}\index{utl\+::idx\+\_\+dev\+\_\+details\+::is\+\_\+idx\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, typename $>$@{utl\+::idx\+\_\+dev\+\_\+details\+::is\+\_\+idx\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, typename $>$}} + + +Primary template to catch any non input device types. + + + + +{\ttfamily \#include $<$idx\+\_\+dev.\+h$>$} + +Inheritance diagram for utl\+:\+:idx\+\_\+dev\+\_\+details\+:\+:is\+\_\+idx\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, typename $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{structutl_1_1idx__dev__details_1_1is__idx__dev__} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename \+\_\+\+Tp, typename = void$>$\newline +struct utl\+::idx\+\_\+dev\+\_\+details\+::is\+\_\+idx\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, typename $>$} + +Primary template to catch any non input device types. + +Definition at line 495 of file idx\+\_\+dev.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/dev/\mbox{\hyperlink{idx__dev_8h}{idx\+\_\+dev.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1idx__dev__details_1_1is__idx__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1ae8b6b24c31c81bdd901da6e6387d84b.eps b/doc/latex/structutl_1_1idx__dev__details_1_1is__idx__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1ae8b6b24c31c81bdd901da6e6387d84b.eps new file mode 100644 index 0000000..957a72c --- /dev/null +++ b/doc/latex/structutl_1_1idx__dev__details_1_1is__idx__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1ae8b6b24c31c81bdd901da6e6387d84b.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 10.764263 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 46.450001 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::idx_dev_details::is_idx_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_get1_t< _Tp >, size_t >, use_if_same_t< try_get2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > >) cw +(true_) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::idx_dev_details::is_idx_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_get1_t< _Tp >, size_t >, use_if_same_t< try_get2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > >) 0.000000 0.000000 box + (true_) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/structutl_1_1idx__dev__details_1_1is__idx__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1ae8b6b24c31c81bdd901da6e6387d84b.tex b/doc/latex/structutl_1_1idx__dev__details_1_1is__idx__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1ae8b6b24c31c81bdd901da6e6387d84b.tex new file mode 100644 index 0000000..675ff9c --- /dev/null +++ b/doc/latex/structutl_1_1idx__dev__details_1_1is__idx__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1ae8b6b24c31c81bdd901da6e6387d84b.tex @@ -0,0 +1,32 @@ +\hypertarget{structutl_1_1idx__dev__details_1_1is__idx__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1ae8b6b24c31c81bdd901da6e6387d84b}{}\section{utl\+:\+:idx\+\_\+dev\+\_\+details\+:\+:is\+\_\+idx\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, void\+\_\+t$<$ typename \+\_\+\+Tp\+:\+:data\+\_\+type, typename \+\_\+\+Tp\+:\+:pointer\+\_\+type, typename \+\_\+\+Tp\+:\+:iterator, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+get1\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+get2\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cbegin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cend\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator $>$ $>$ $>$ Struct Template Reference} +\label{structutl_1_1idx__dev__details_1_1is__idx__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1ae8b6b24c31c81bdd901da6e6387d84b}\index{utl\+::idx\+\_\+dev\+\_\+details\+::is\+\_\+idx\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, void\+\_\+t$<$ typename \+\_\+\+Tp\+::data\+\_\+type, typename \+\_\+\+Tp\+::pointer\+\_\+type, typename \+\_\+\+Tp\+::iterator, typename \+\_\+\+Tp\+::const\+\_\+iterator, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+get1\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+get2\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cbegin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cend\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$ $>$ $>$@{utl\+::idx\+\_\+dev\+\_\+details\+::is\+\_\+idx\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, void\+\_\+t$<$ typename \+\_\+\+Tp\+::data\+\_\+type, typename \+\_\+\+Tp\+::pointer\+\_\+type, typename \+\_\+\+Tp\+::iterator, typename \+\_\+\+Tp\+::const\+\_\+iterator, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+get1\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+get2\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cbegin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cend\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$ $>$ $>$}} + + +template to catch a proper input device type + + + + +{\ttfamily \#include $<$idx\+\_\+dev.\+h$>$} + +Inheritance diagram for utl\+:\+:idx\+\_\+dev\+\_\+details\+:\+:is\+\_\+idx\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, void\+\_\+t$<$ typename \+\_\+\+Tp\+:\+:data\+\_\+type, typename \+\_\+\+Tp\+:\+:pointer\+\_\+type, typename \+\_\+\+Tp\+:\+:iterator, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+get1\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+get2\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cbegin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cend\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator $>$ $>$ $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=0.301399cm]{structutl_1_1idx__dev__details_1_1is__idx__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1ae8b6b24c31c81bdd901da6e6387d84b} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename \+\_\+\+Tp$>$\newline +struct utl\+::idx\+\_\+dev\+\_\+details\+::is\+\_\+idx\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, void\+\_\+t$<$ typename \+\_\+\+Tp\+::data\+\_\+type, typename \+\_\+\+Tp\+::pointer\+\_\+type, typename \+\_\+\+Tp\+::iterator, typename \+\_\+\+Tp\+::const\+\_\+iterator, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+get1\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+get2\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cbegin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cend\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$ $>$ $>$} + +template to catch a proper input device type + +Definition at line 499 of file idx\+\_\+dev.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/dev/\mbox{\hyperlink{idx__dev_8h}{idx\+\_\+dev.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1idxdev__it__details_1_1is__idxdev__it__.eps b/doc/latex/structutl_1_1idxdev__it__details_1_1is__idxdev__it__.eps new file mode 100644 index 0000000..5e64598 --- /dev/null +++ b/doc/latex/structutl_1_1idxdev__it__details_1_1is__idxdev__it__.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 125.391850 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 3.987500 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::idxdev_it_details::is_idxdev_it_< _Tp, typename >) cw +(false_) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::idxdev_it_details::is_idxdev_it_< _Tp, typename >) 0.000000 0.000000 box + (false_) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/structutl_1_1idxdev__it__details_1_1is__idxdev__it__.tex b/doc/latex/structutl_1_1idxdev__it__details_1_1is__idxdev__it__.tex new file mode 100644 index 0000000..c4f7324 --- /dev/null +++ b/doc/latex/structutl_1_1idxdev__it__details_1_1is__idxdev__it__.tex @@ -0,0 +1,32 @@ +\hypertarget{structutl_1_1idxdev__it__details_1_1is__idxdev__it__}{}\section{utl\+:\+:idxdev\+\_\+it\+\_\+details\+:\+:is\+\_\+idxdev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, typename $>$ Struct Template Reference} +\label{structutl_1_1idxdev__it__details_1_1is__idxdev__it__}\index{utl\+::idxdev\+\_\+it\+\_\+details\+::is\+\_\+idxdev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, typename $>$@{utl\+::idxdev\+\_\+it\+\_\+details\+::is\+\_\+idxdev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, typename $>$}} + + +Primary template to catch any non S\+PI interface types. + + + + +{\ttfamily \#include $<$dev\+\_\+iterators.\+h$>$} + +Inheritance diagram for utl\+:\+:idxdev\+\_\+it\+\_\+details\+:\+:is\+\_\+idxdev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, typename $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{structutl_1_1idxdev__it__details_1_1is__idxdev__it__} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename \+\_\+\+Tp, typename = void$>$\newline +struct utl\+::idxdev\+\_\+it\+\_\+details\+::is\+\_\+idxdev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, typename $>$} + +Primary template to catch any non S\+PI interface types. + +Definition at line 980 of file dev\+\_\+iterators.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/dev/\mbox{\hyperlink{dev__iterators_8h}{dev\+\_\+iterators.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1idxdev__it__details_1_1is__idxdev__it___3_01___tp_00_01meta_1_1void__t_3_01typenamebd9ada52ca7b7570c26d0c280af5e635.eps b/doc/latex/structutl_1_1idxdev__it__details_1_1is__idxdev__it___3_01___tp_00_01meta_1_1void__t_3_01typenamebd9ada52ca7b7570c26d0c280af5e635.eps new file mode 100644 index 0000000..cef1c59 --- /dev/null +++ b/doc/latex/structutl_1_1idxdev__it__details_1_1is__idxdev__it___3_01___tp_00_01meta_1_1void__t_3_01typenamebd9ada52ca7b7570c26d0c280af5e635.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 39.800995 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 12.562500 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::idxdev_it_details::is_idxdev_it_< _Tp, meta::void_t< typename _Tp::value_type, typename _Tp::difference_type, typename _Tp::pointer, typename _Tp::reference, void > >) cw +(true_) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::idxdev_it_details::is_idxdev_it_< _Tp, meta::void_t< typename _Tp::value_type, typename _Tp::difference_type, typename _Tp::pointer, typename _Tp::reference, void > >) 0.000000 0.000000 box + (true_) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/structutl_1_1idxdev__it__details_1_1is__idxdev__it___3_01___tp_00_01meta_1_1void__t_3_01typenamebd9ada52ca7b7570c26d0c280af5e635.tex b/doc/latex/structutl_1_1idxdev__it__details_1_1is__idxdev__it___3_01___tp_00_01meta_1_1void__t_3_01typenamebd9ada52ca7b7570c26d0c280af5e635.tex new file mode 100644 index 0000000..258fb97 --- /dev/null +++ b/doc/latex/structutl_1_1idxdev__it__details_1_1is__idxdev__it___3_01___tp_00_01meta_1_1void__t_3_01typenamebd9ada52ca7b7570c26d0c280af5e635.tex @@ -0,0 +1,32 @@ +\hypertarget{structutl_1_1idxdev__it__details_1_1is__idxdev__it___3_01___tp_00_01meta_1_1void__t_3_01typenamebd9ada52ca7b7570c26d0c280af5e635}{}\section{utl\+:\+:idxdev\+\_\+it\+\_\+details\+:\+:is\+\_\+idxdev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, meta\+:\+:void\+\_\+t$<$ typename \+\_\+\+Tp\+:\+:value\+\_\+type, typename \+\_\+\+Tp\+:\+:difference\+\_\+type, typename \+\_\+\+Tp\+:\+:pointer, typename \+\_\+\+Tp\+:\+:reference, void $>$ $>$ Struct Template Reference} +\label{structutl_1_1idxdev__it__details_1_1is__idxdev__it___3_01___tp_00_01meta_1_1void__t_3_01typenamebd9ada52ca7b7570c26d0c280af5e635}\index{utl\+::idxdev\+\_\+it\+\_\+details\+::is\+\_\+idxdev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, meta\+::void\+\_\+t$<$ typename \+\_\+\+Tp\+::value\+\_\+type, typename \+\_\+\+Tp\+::difference\+\_\+type, typename \+\_\+\+Tp\+::pointer, typename \+\_\+\+Tp\+::reference, void $>$ $>$@{utl\+::idxdev\+\_\+it\+\_\+details\+::is\+\_\+idxdev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, meta\+::void\+\_\+t$<$ typename \+\_\+\+Tp\+::value\+\_\+type, typename \+\_\+\+Tp\+::difference\+\_\+type, typename \+\_\+\+Tp\+::pointer, typename \+\_\+\+Tp\+::reference, void $>$ $>$}} + + +template to catch a proper S\+PI interface type + + + + +{\ttfamily \#include $<$dev\+\_\+iterators.\+h$>$} + +Inheritance diagram for utl\+:\+:idxdev\+\_\+it\+\_\+details\+:\+:is\+\_\+idxdev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, meta\+:\+:void\+\_\+t$<$ typename \+\_\+\+Tp\+:\+:value\+\_\+type, typename \+\_\+\+Tp\+:\+:difference\+\_\+type, typename \+\_\+\+Tp\+:\+:pointer, typename \+\_\+\+Tp\+:\+:reference, void $>$ $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=1.114428cm]{structutl_1_1idxdev__it__details_1_1is__idxdev__it___3_01___tp_00_01meta_1_1void__t_3_01typenamebd9ada52ca7b7570c26d0c280af5e635} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename \+\_\+\+Tp$>$\newline +struct utl\+::idxdev\+\_\+it\+\_\+details\+::is\+\_\+idxdev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, meta\+::void\+\_\+t$<$ typename \+\_\+\+Tp\+::value\+\_\+type, typename \+\_\+\+Tp\+::difference\+\_\+type, typename \+\_\+\+Tp\+::pointer, typename \+\_\+\+Tp\+::reference, void $>$ $>$} + +template to catch a proper S\+PI interface type + +Definition at line 984 of file dev\+\_\+iterators.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/dev/\mbox{\hyperlink{dev__iterators_8h}{dev\+\_\+iterators.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1in__dev__details_1_1is__in__dev__.eps b/doc/latex/structutl_1_1in__dev__details_1_1is__in__dev__.eps new file mode 100644 index 0000000..15f45b6 --- /dev/null +++ b/doc/latex/structutl_1_1in__dev__details_1_1is__in__dev__.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 135.593220 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 3.687500 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::in_dev_details::is_in_dev_< _Tp, typename >) cw +(false_) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::in_dev_details::is_in_dev_< _Tp, typename >) 0.000000 0.000000 box + (false_) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/structutl_1_1in__dev__details_1_1is__in__dev__.tex b/doc/latex/structutl_1_1in__dev__details_1_1is__in__dev__.tex new file mode 100644 index 0000000..b4fdb75 --- /dev/null +++ b/doc/latex/structutl_1_1in__dev__details_1_1is__in__dev__.tex @@ -0,0 +1,32 @@ +\hypertarget{structutl_1_1in__dev__details_1_1is__in__dev__}{}\section{utl\+:\+:in\+\_\+dev\+\_\+details\+:\+:is\+\_\+in\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, typename $>$ Struct Template Reference} +\label{structutl_1_1in__dev__details_1_1is__in__dev__}\index{utl\+::in\+\_\+dev\+\_\+details\+::is\+\_\+in\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, typename $>$@{utl\+::in\+\_\+dev\+\_\+details\+::is\+\_\+in\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, typename $>$}} + + +Primary template to catch any non input device types. + + + + +{\ttfamily \#include $<$in\+\_\+dev.\+h$>$} + +Inheritance diagram for utl\+:\+:in\+\_\+dev\+\_\+details\+:\+:is\+\_\+in\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, typename $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{structutl_1_1in__dev__details_1_1is__in__dev__} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename \+\_\+\+Tp, typename = void$>$\newline +struct utl\+::in\+\_\+dev\+\_\+details\+::is\+\_\+in\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, typename $>$} + +Primary template to catch any non input device types. + +Definition at line 307 of file in\+\_\+dev.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/dev/\mbox{\hyperlink{in__dev_8h}{in\+\_\+dev.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1in__dev__details_1_1is__in__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1dad922a62deb7c32e2cff18d66b8c887d2.eps b/doc/latex/structutl_1_1in__dev__details_1_1is__in__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1dad922a62deb7c32e2cff18d66b8c887d2.eps new file mode 100644 index 0000000..6093ab2 --- /dev/null +++ b/doc/latex/structutl_1_1in__dev__details_1_1is__in__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1dad922a62deb7c32e2cff18d66b8c887d2.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 10.799136 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 46.299999 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::in_dev_details::is_in_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_get1_t< _Tp >, size_t >, use_if_same_t< try_get2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > >) cw +(true_) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::in_dev_details::is_in_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_get1_t< _Tp >, size_t >, use_if_same_t< try_get2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > >) 0.000000 0.000000 box + (true_) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/structutl_1_1in__dev__details_1_1is__in__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1dad922a62deb7c32e2cff18d66b8c887d2.tex b/doc/latex/structutl_1_1in__dev__details_1_1is__in__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1dad922a62deb7c32e2cff18d66b8c887d2.tex new file mode 100644 index 0000000..5a73a80 --- /dev/null +++ b/doc/latex/structutl_1_1in__dev__details_1_1is__in__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1dad922a62deb7c32e2cff18d66b8c887d2.tex @@ -0,0 +1,32 @@ +\hypertarget{structutl_1_1in__dev__details_1_1is__in__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1dad922a62deb7c32e2cff18d66b8c887d2}{}\section{utl\+:\+:in\+\_\+dev\+\_\+details\+:\+:is\+\_\+in\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, void\+\_\+t$<$ typename \+\_\+\+Tp\+:\+:data\+\_\+type, typename \+\_\+\+Tp\+:\+:pointer\+\_\+type, typename \+\_\+\+Tp\+:\+:iterator, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+get1\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+get2\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cbegin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cend\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator $>$ $>$ $>$ Struct Template Reference} +\label{structutl_1_1in__dev__details_1_1is__in__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1dad922a62deb7c32e2cff18d66b8c887d2}\index{utl\+::in\+\_\+dev\+\_\+details\+::is\+\_\+in\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, void\+\_\+t$<$ typename \+\_\+\+Tp\+::data\+\_\+type, typename \+\_\+\+Tp\+::pointer\+\_\+type, typename \+\_\+\+Tp\+::iterator, typename \+\_\+\+Tp\+::const\+\_\+iterator, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+get1\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+get2\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cbegin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cend\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$ $>$ $>$@{utl\+::in\+\_\+dev\+\_\+details\+::is\+\_\+in\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, void\+\_\+t$<$ typename \+\_\+\+Tp\+::data\+\_\+type, typename \+\_\+\+Tp\+::pointer\+\_\+type, typename \+\_\+\+Tp\+::iterator, typename \+\_\+\+Tp\+::const\+\_\+iterator, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+get1\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+get2\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cbegin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cend\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$ $>$ $>$}} + + +template to catch a proper input device type + + + + +{\ttfamily \#include $<$in\+\_\+dev.\+h$>$} + +Inheritance diagram for utl\+:\+:in\+\_\+dev\+\_\+details\+:\+:is\+\_\+in\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, void\+\_\+t$<$ typename \+\_\+\+Tp\+:\+:data\+\_\+type, typename \+\_\+\+Tp\+:\+:pointer\+\_\+type, typename \+\_\+\+Tp\+:\+:iterator, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+get1\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+get2\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cbegin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cend\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator $>$ $>$ $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=0.302376cm]{structutl_1_1in__dev__details_1_1is__in__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1dad922a62deb7c32e2cff18d66b8c887d2} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename \+\_\+\+Tp$>$\newline +struct utl\+::in\+\_\+dev\+\_\+details\+::is\+\_\+in\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, void\+\_\+t$<$ typename \+\_\+\+Tp\+::data\+\_\+type, typename \+\_\+\+Tp\+::pointer\+\_\+type, typename \+\_\+\+Tp\+::iterator, typename \+\_\+\+Tp\+::const\+\_\+iterator, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+get1\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+get2\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cbegin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cend\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$ $>$ $>$} + +template to catch a proper input device type + +Definition at line 311 of file in\+\_\+dev.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/dev/\mbox{\hyperlink{in__dev_8h}{in\+\_\+dev.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1inbuf__dev__details_1_1is__inbuf__dev__.eps b/doc/latex/structutl_1_1inbuf__dev__details_1_1is__inbuf__dev__.eps new file mode 100644 index 0000000..9f4bc3f --- /dev/null +++ b/doc/latex/structutl_1_1inbuf__dev__details_1_1is__inbuf__dev__.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 120.845921 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 4.137500 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::inbuf_dev_details::is_inbuf_dev_< _Tp, typename >) cw +(false_) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::inbuf_dev_details::is_inbuf_dev_< _Tp, typename >) 0.000000 0.000000 box + (false_) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/structutl_1_1inbuf__dev__details_1_1is__inbuf__dev__.tex b/doc/latex/structutl_1_1inbuf__dev__details_1_1is__inbuf__dev__.tex new file mode 100644 index 0000000..4551589 --- /dev/null +++ b/doc/latex/structutl_1_1inbuf__dev__details_1_1is__inbuf__dev__.tex @@ -0,0 +1,32 @@ +\hypertarget{structutl_1_1inbuf__dev__details_1_1is__inbuf__dev__}{}\section{utl\+:\+:inbuf\+\_\+dev\+\_\+details\+:\+:is\+\_\+inbuf\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, typename $>$ Struct Template Reference} +\label{structutl_1_1inbuf__dev__details_1_1is__inbuf__dev__}\index{utl\+::inbuf\+\_\+dev\+\_\+details\+::is\+\_\+inbuf\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, typename $>$@{utl\+::inbuf\+\_\+dev\+\_\+details\+::is\+\_\+inbuf\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, typename $>$}} + + +Primary template to catch any non input device types. + + + + +{\ttfamily \#include $<$inbuf\+\_\+dev.\+h$>$} + +Inheritance diagram for utl\+:\+:inbuf\+\_\+dev\+\_\+details\+:\+:is\+\_\+inbuf\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, typename $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{structutl_1_1inbuf__dev__details_1_1is__inbuf__dev__} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename \+\_\+\+Tp, typename = void$>$\newline +struct utl\+::inbuf\+\_\+dev\+\_\+details\+::is\+\_\+inbuf\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, typename $>$} + +Primary template to catch any non input device types. + +Definition at line 352 of file inbuf\+\_\+dev.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/dev/\mbox{\hyperlink{inbuf__dev_8h}{inbuf\+\_\+dev.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1inbuf__dev__details_1_1is__inbuf__dev___3_01___tp_00_01void__t_3_01typename_01___tpc269ee3885240cc8c352f3c6b3a67cd7.eps b/doc/latex/structutl_1_1inbuf__dev__details_1_1is__inbuf__dev___3_01___tp_00_01void__t_3_01typename_01___tpc269ee3885240cc8c352f3c6b3a67cd7.eps new file mode 100644 index 0000000..2f8c0ed --- /dev/null +++ b/doc/latex/structutl_1_1inbuf__dev__details_1_1is__inbuf__dev___3_01___tp_00_01void__t_3_01typename_01___tpc269ee3885240cc8c352f3c6b3a67cd7.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 10.695187 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 46.750000 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::inbuf_dev_details::is_inbuf_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_get1_t< _Tp >, size_t >, use_if_same_t< try_get2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > >) cw +(true_) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::inbuf_dev_details::is_inbuf_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_get1_t< _Tp >, size_t >, use_if_same_t< try_get2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > >) 0.000000 0.000000 box + (true_) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/structutl_1_1inbuf__dev__details_1_1is__inbuf__dev___3_01___tp_00_01void__t_3_01typename_01___tpc269ee3885240cc8c352f3c6b3a67cd7.tex b/doc/latex/structutl_1_1inbuf__dev__details_1_1is__inbuf__dev___3_01___tp_00_01void__t_3_01typename_01___tpc269ee3885240cc8c352f3c6b3a67cd7.tex new file mode 100644 index 0000000..3759a5c --- /dev/null +++ b/doc/latex/structutl_1_1inbuf__dev__details_1_1is__inbuf__dev___3_01___tp_00_01void__t_3_01typename_01___tpc269ee3885240cc8c352f3c6b3a67cd7.tex @@ -0,0 +1,32 @@ +\hypertarget{structutl_1_1inbuf__dev__details_1_1is__inbuf__dev___3_01___tp_00_01void__t_3_01typename_01___tpc269ee3885240cc8c352f3c6b3a67cd7}{}\section{utl\+:\+:inbuf\+\_\+dev\+\_\+details\+:\+:is\+\_\+inbuf\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, void\+\_\+t$<$ typename \+\_\+\+Tp\+:\+:data\+\_\+type, typename \+\_\+\+Tp\+:\+:pointer\+\_\+type, typename \+\_\+\+Tp\+:\+:iterator, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+get1\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+get2\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cbegin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cend\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator $>$ $>$ $>$ Struct Template Reference} +\label{structutl_1_1inbuf__dev__details_1_1is__inbuf__dev___3_01___tp_00_01void__t_3_01typename_01___tpc269ee3885240cc8c352f3c6b3a67cd7}\index{utl\+::inbuf\+\_\+dev\+\_\+details\+::is\+\_\+inbuf\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, void\+\_\+t$<$ typename \+\_\+\+Tp\+::data\+\_\+type, typename \+\_\+\+Tp\+::pointer\+\_\+type, typename \+\_\+\+Tp\+::iterator, typename \+\_\+\+Tp\+::const\+\_\+iterator, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+get1\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+get2\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cbegin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cend\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$ $>$ $>$@{utl\+::inbuf\+\_\+dev\+\_\+details\+::is\+\_\+inbuf\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, void\+\_\+t$<$ typename \+\_\+\+Tp\+::data\+\_\+type, typename \+\_\+\+Tp\+::pointer\+\_\+type, typename \+\_\+\+Tp\+::iterator, typename \+\_\+\+Tp\+::const\+\_\+iterator, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+get1\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+get2\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cbegin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cend\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$ $>$ $>$}} + + +template to catch a proper input device type + + + + +{\ttfamily \#include $<$inbuf\+\_\+dev.\+h$>$} + +Inheritance diagram for utl\+:\+:inbuf\+\_\+dev\+\_\+details\+:\+:is\+\_\+inbuf\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, void\+\_\+t$<$ typename \+\_\+\+Tp\+:\+:data\+\_\+type, typename \+\_\+\+Tp\+:\+:pointer\+\_\+type, typename \+\_\+\+Tp\+:\+:iterator, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+get1\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+get2\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cbegin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cend\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator $>$ $>$ $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=0.299465cm]{structutl_1_1inbuf__dev__details_1_1is__inbuf__dev___3_01___tp_00_01void__t_3_01typename_01___tpc269ee3885240cc8c352f3c6b3a67cd7} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename \+\_\+\+Tp$>$\newline +struct utl\+::inbuf\+\_\+dev\+\_\+details\+::is\+\_\+inbuf\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, void\+\_\+t$<$ typename \+\_\+\+Tp\+::data\+\_\+type, typename \+\_\+\+Tp\+::pointer\+\_\+type, typename \+\_\+\+Tp\+::iterator, typename \+\_\+\+Tp\+::const\+\_\+iterator, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+get1\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+get2\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cbegin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cend\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$ $>$ $>$} + +template to catch a proper input device type + +Definition at line 356 of file inbuf\+\_\+dev.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/dev/\mbox{\hyperlink{inbuf__dev_8h}{inbuf\+\_\+dev.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1indev__it__details_1_1is__indev__it__.eps b/doc/latex/structutl_1_1indev__it__details_1_1is__indev__it__.eps new file mode 100644 index 0000000..f81a122 --- /dev/null +++ b/doc/latex/structutl_1_1indev__it__details_1_1is__indev__it__.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 130.293160 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 3.837500 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::indev_it_details::is_indev_it_< _Tp, typename >) cw +(false_) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::indev_it_details::is_indev_it_< _Tp, typename >) 0.000000 0.000000 box + (false_) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/structutl_1_1indev__it__details_1_1is__indev__it__.tex b/doc/latex/structutl_1_1indev__it__details_1_1is__indev__it__.tex new file mode 100644 index 0000000..e350a22 --- /dev/null +++ b/doc/latex/structutl_1_1indev__it__details_1_1is__indev__it__.tex @@ -0,0 +1,32 @@ +\hypertarget{structutl_1_1indev__it__details_1_1is__indev__it__}{}\section{utl\+:\+:indev\+\_\+it\+\_\+details\+:\+:is\+\_\+indev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, typename $>$ Struct Template Reference} +\label{structutl_1_1indev__it__details_1_1is__indev__it__}\index{utl\+::indev\+\_\+it\+\_\+details\+::is\+\_\+indev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, typename $>$@{utl\+::indev\+\_\+it\+\_\+details\+::is\+\_\+indev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, typename $>$}} + + +Primary template to catch any non S\+PI interface types. + + + + +{\ttfamily \#include $<$dev\+\_\+iterators.\+h$>$} + +Inheritance diagram for utl\+:\+:indev\+\_\+it\+\_\+details\+:\+:is\+\_\+indev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, typename $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{structutl_1_1indev__it__details_1_1is__indev__it__} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename \+\_\+\+Tp, typename = void$>$\newline +struct utl\+::indev\+\_\+it\+\_\+details\+::is\+\_\+indev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, typename $>$} + +Primary template to catch any non S\+PI interface types. + +Definition at line 695 of file dev\+\_\+iterators.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/dev/\mbox{\hyperlink{dev__iterators_8h}{dev\+\_\+iterators.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1indev__it__details_1_1is__indev__it___3_01___tp_00_01meta_1_1void__t_3_01typename_06508604dcee4010234c84cc332fa196b.eps b/doc/latex/structutl_1_1indev__it__details_1_1is__indev__it___3_01___tp_00_01meta_1_1void__t_3_01typename_06508604dcee4010234c84cc332fa196b.eps new file mode 100644 index 0000000..381822e --- /dev/null +++ b/doc/latex/structutl_1_1indev__it__details_1_1is__indev__it___3_01___tp_00_01meta_1_1void__t_3_01typename_06508604dcee4010234c84cc332fa196b.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 40.281974 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 12.412500 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::indev_it_details::is_indev_it_< _Tp, meta::void_t< typename _Tp::value_type, typename _Tp::difference_type, typename _Tp::pointer, typename _Tp::reference, void > >) cw +(true_) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::indev_it_details::is_indev_it_< _Tp, meta::void_t< typename _Tp::value_type, typename _Tp::difference_type, typename _Tp::pointer, typename _Tp::reference, void > >) 0.000000 0.000000 box + (true_) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/structutl_1_1indev__it__details_1_1is__indev__it___3_01___tp_00_01meta_1_1void__t_3_01typename_06508604dcee4010234c84cc332fa196b.tex b/doc/latex/structutl_1_1indev__it__details_1_1is__indev__it___3_01___tp_00_01meta_1_1void__t_3_01typename_06508604dcee4010234c84cc332fa196b.tex new file mode 100644 index 0000000..62dc037 --- /dev/null +++ b/doc/latex/structutl_1_1indev__it__details_1_1is__indev__it___3_01___tp_00_01meta_1_1void__t_3_01typename_06508604dcee4010234c84cc332fa196b.tex @@ -0,0 +1,32 @@ +\hypertarget{structutl_1_1indev__it__details_1_1is__indev__it___3_01___tp_00_01meta_1_1void__t_3_01typename_06508604dcee4010234c84cc332fa196b}{}\section{utl\+:\+:indev\+\_\+it\+\_\+details\+:\+:is\+\_\+indev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, meta\+:\+:void\+\_\+t$<$ typename \+\_\+\+Tp\+:\+:value\+\_\+type, typename \+\_\+\+Tp\+:\+:difference\+\_\+type, typename \+\_\+\+Tp\+:\+:pointer, typename \+\_\+\+Tp\+:\+:reference, void $>$ $>$ Struct Template Reference} +\label{structutl_1_1indev__it__details_1_1is__indev__it___3_01___tp_00_01meta_1_1void__t_3_01typename_06508604dcee4010234c84cc332fa196b}\index{utl\+::indev\+\_\+it\+\_\+details\+::is\+\_\+indev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, meta\+::void\+\_\+t$<$ typename \+\_\+\+Tp\+::value\+\_\+type, typename \+\_\+\+Tp\+::difference\+\_\+type, typename \+\_\+\+Tp\+::pointer, typename \+\_\+\+Tp\+::reference, void $>$ $>$@{utl\+::indev\+\_\+it\+\_\+details\+::is\+\_\+indev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, meta\+::void\+\_\+t$<$ typename \+\_\+\+Tp\+::value\+\_\+type, typename \+\_\+\+Tp\+::difference\+\_\+type, typename \+\_\+\+Tp\+::pointer, typename \+\_\+\+Tp\+::reference, void $>$ $>$}} + + +template to catch a proper S\+PI interface type + + + + +{\ttfamily \#include $<$dev\+\_\+iterators.\+h$>$} + +Inheritance diagram for utl\+:\+:indev\+\_\+it\+\_\+details\+:\+:is\+\_\+indev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, meta\+:\+:void\+\_\+t$<$ typename \+\_\+\+Tp\+:\+:value\+\_\+type, typename \+\_\+\+Tp\+:\+:difference\+\_\+type, typename \+\_\+\+Tp\+:\+:pointer, typename \+\_\+\+Tp\+:\+:reference, void $>$ $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=1.127895cm]{structutl_1_1indev__it__details_1_1is__indev__it___3_01___tp_00_01meta_1_1void__t_3_01typename_06508604dcee4010234c84cc332fa196b} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename \+\_\+\+Tp$>$\newline +struct utl\+::indev\+\_\+it\+\_\+details\+::is\+\_\+indev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, meta\+::void\+\_\+t$<$ typename \+\_\+\+Tp\+::value\+\_\+type, typename \+\_\+\+Tp\+::difference\+\_\+type, typename \+\_\+\+Tp\+::pointer, typename \+\_\+\+Tp\+::reference, void $>$ $>$} + +template to catch a proper S\+PI interface type + +Definition at line 699 of file dev\+\_\+iterators.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/dev/\mbox{\hyperlink{dev__iterators_8h}{dev\+\_\+iterators.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1input__iterator__tag.eps b/doc/latex/structutl_1_1input__iterator__tag.eps new file mode 100644 index 0000000..cce81af --- /dev/null +++ b/doc/latex/structutl_1_1input__iterator__tag.eps @@ -0,0 +1,215 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 502.512563 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 0.995000 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 5 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::input_iterator_tag) cw +(utl::forward_iterator_tag) cw +(utl::bidirectional_iterator_tag) cw +(utl::random_access_iterator_tag) cw +(utl::contiguous_iterator_tag) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::input_iterator_tag) 0.000000 4.000000 box + (utl::forward_iterator_tag) 0.000000 3.000000 box + (utl::bidirectional_iterator_tag) 0.000000 2.000000 box + (utl::random_access_iterator_tag) 0.000000 1.000000 box + (utl::contiguous_iterator_tag) 0.000000 0.000000 box + +% ----- relations ----- + +solid +1 0.000000 3.250000 out +solid +0 0.000000 3.750000 in +solid +1 0.000000 2.250000 out +solid +0 0.000000 2.750000 in +solid +1 0.000000 1.250000 out +solid +0 0.000000 1.750000 in +solid +1 0.000000 0.250000 out +solid +0 0.000000 0.750000 in diff --git a/doc/latex/structutl_1_1input__iterator__tag.tex b/doc/latex/structutl_1_1input__iterator__tag.tex new file mode 100644 index 0000000..b87f90d --- /dev/null +++ b/doc/latex/structutl_1_1input__iterator__tag.tex @@ -0,0 +1,24 @@ +\hypertarget{structutl_1_1input__iterator__tag}{}\section{utl\+:\+:input\+\_\+iterator\+\_\+tag Struct Reference} +\label{structutl_1_1input__iterator__tag}\index{utl\+::input\+\_\+iterator\+\_\+tag@{utl\+::input\+\_\+iterator\+\_\+tag}} + + +{\ttfamily \#include $<$dev\+\_\+iterators.\+h$>$} + +Inheritance diagram for utl\+:\+:input\+\_\+iterator\+\_\+tag\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=5.000000cm]{structutl_1_1input__iterator__tag} +\end{center} +\end{figure} + + +\subsection{Detailed Description} + + +Definition at line 56 of file dev\+\_\+iterators.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/dev/\mbox{\hyperlink{dev__iterators_8h}{dev\+\_\+iterators.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1is__invocable.eps b/doc/latex/structutl_1_1is__invocable.eps new file mode 100644 index 0000000..0d1c631 --- /dev/null +++ b/doc/latex/structutl_1_1is__invocable.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 59.701493 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 8.375000 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::is_invocable< F, Args >) cw +(std::is_constructible< std::function< void(Args ...)>, std::reference_wrapper< std::remove_reference< F >::type > >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::is_invocable< F, Args >) 0.000000 0.000000 box + (std::is_constructible< std::function< void(Args ...)>, std::reference_wrapper< std::remove_reference< F >::type > >) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/structutl_1_1is__invocable.tex b/doc/latex/structutl_1_1is__invocable.tex new file mode 100644 index 0000000..23653ba --- /dev/null +++ b/doc/latex/structutl_1_1is__invocable.tex @@ -0,0 +1,32 @@ +\hypertarget{structutl_1_1is__invocable}{}\section{utl\+:\+:is\+\_\+invocable$<$ F, Args $>$ Struct Template Reference} +\label{structutl_1_1is__invocable}\index{utl\+::is\+\_\+invocable$<$ F, Args $>$@{utl\+::is\+\_\+invocable$<$ F, Args $>$}} + + +std\+::is\+\_\+invocable trait for C++11 + + + + +{\ttfamily \#include $<$invoke.\+h$>$} + +Inheritance diagram for utl\+:\+:is\+\_\+invocable$<$ F, Args $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=1.671642cm]{structutl_1_1is__invocable} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename F, typename... Args$>$\newline +struct utl\+::is\+\_\+invocable$<$ F, Args $>$} + +std\+::is\+\_\+invocable trait for C++11 + +Definition at line 130 of file invoke.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/utility/\mbox{\hyperlink{utility_2invoke_8h}{invoke.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1is__invocable__r.eps b/doc/latex/structutl_1_1is__invocable__r.eps new file mode 100644 index 0000000..8dc4037 --- /dev/null +++ b/doc/latex/structutl_1_1is__invocable__r.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 61.162080 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 8.175000 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::is_invocable_r< R, F, Args >) cw +(std::is_constructible< std::function< R(Args ...)>, std::reference_wrapper< std::remove_reference< F >::type > >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::is_invocable_r< R, F, Args >) 0.000000 0.000000 box + (std::is_constructible< std::function< R(Args ...)>, std::reference_wrapper< std::remove_reference< F >::type > >) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/structutl_1_1is__invocable__r.tex b/doc/latex/structutl_1_1is__invocable__r.tex new file mode 100644 index 0000000..7654010 --- /dev/null +++ b/doc/latex/structutl_1_1is__invocable__r.tex @@ -0,0 +1,32 @@ +\hypertarget{structutl_1_1is__invocable__r}{}\section{utl\+:\+:is\+\_\+invocable\+\_\+r$<$ R, F, Args $>$ Struct Template Reference} +\label{structutl_1_1is__invocable__r}\index{utl\+::is\+\_\+invocable\+\_\+r$<$ R, F, Args $>$@{utl\+::is\+\_\+invocable\+\_\+r$<$ R, F, Args $>$}} + + +std\+::is\+\_\+invocable\+\_\+r trait for C++11 + + + + +{\ttfamily \#include $<$invoke.\+h$>$} + +Inheritance diagram for utl\+:\+:is\+\_\+invocable\+\_\+r$<$ R, F, Args $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=1.712538cm]{structutl_1_1is__invocable__r} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename R, typename F, typename... Args$>$\newline +struct utl\+::is\+\_\+invocable\+\_\+r$<$ R, F, Args $>$} + +std\+::is\+\_\+invocable\+\_\+r trait for C++11 + +Definition at line 138 of file invoke.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/utility/\mbox{\hyperlink{utility_2invoke_8h}{invoke.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1apply__impl_1_1apply__.tex b/doc/latex/structutl_1_1meta_1_1apply__impl_1_1apply__.tex new file mode 100644 index 0000000..942789c --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1apply__impl_1_1apply__.tex @@ -0,0 +1,21 @@ +\hypertarget{structutl_1_1meta_1_1apply__impl_1_1apply__}{}\section{utl\+:\+:meta\+:\+:apply\+\_\+impl\+:\+:apply\+\_\+$<$ Fn, Seq $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1apply__impl_1_1apply__}\index{utl\+::meta\+::apply\+\_\+impl\+::apply\+\_\+$<$ Fn, Seq $>$@{utl\+::meta\+::apply\+\_\+impl\+::apply\+\_\+$<$ Fn, Seq $>$}} + + +{\ttfamily \#include $<$typelist.\+h$>$} + + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename Fn, typename Seq$>$\newline +struct utl\+::meta\+::apply\+\_\+impl\+::apply\+\_\+$<$ Fn, Seq $>$} + + + +Definition at line 172 of file typelist.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{typelist_8h}{typelist.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01integer__sequence_3_01_t_00_01_is_8_8_8_01_4_01_4.tex b/doc/latex/structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01integer__sequence_3_01_t_00_01_is_8_8_8_01_4_01_4.tex new file mode 100644 index 0000000..791f07f --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01integer__sequence_3_01_t_00_01_is_8_8_8_01_4_01_4.tex @@ -0,0 +1,45 @@ +\hypertarget{structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01integer__sequence_3_01_t_00_01_is_8_8_8_01_4_01_4}{}\section{utl\+:\+:meta\+:\+:apply\+\_\+impl\+:\+:apply\+\_\+$<$ Fn, integer\+\_\+sequence$<$ T, Is... $>$ $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01integer__sequence_3_01_t_00_01_is_8_8_8_01_4_01_4}\index{utl\+::meta\+::apply\+\_\+impl\+::apply\+\_\+$<$ Fn, integer\+\_\+sequence$<$ T, Is... $>$ $>$@{utl\+::meta\+::apply\+\_\+impl\+::apply\+\_\+$<$ Fn, integer\+\_\+sequence$<$ T, Is... $>$ $>$}} + + +Sequence == integer\+\_\+sequence$<$$>$ + + + + +{\ttfamily \#include $<$typelist.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01integer__sequence_3_01_t_00_01_is_8_8_8_01_4_01_4_a0452e2478b7abc590c3f2e6e26f98b67}{type}} = \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}}$<$ Fn, \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$ T, Is $>$... $>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename Fn, typename T, T... Is$>$\newline +struct utl\+::meta\+::apply\+\_\+impl\+::apply\+\_\+$<$ Fn, integer\+\_\+sequence$<$ T, Is... $>$ $>$} + +Sequence == integer\+\_\+sequence$<$$>$ + +Definition at line 181 of file typelist.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01integer__sequence_3_01_t_00_01_is_8_8_8_01_4_01_4_a0452e2478b7abc590c3f2e6e26f98b67}\label{structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01integer__sequence_3_01_t_00_01_is_8_8_8_01_4_01_4_a0452e2478b7abc590c3f2e6e26f98b67}} +\index{utl\+::meta\+::apply\+\_\+impl\+::apply\+\_\+$<$ Fn, integer\+\_\+sequence$<$ T, Is... $>$ $>$@{utl\+::meta\+::apply\+\_\+impl\+::apply\+\_\+$<$ Fn, integer\+\_\+sequence$<$ T, Is... $>$ $>$}!type@{type}} +\index{type@{type}!utl\+::meta\+::apply\+\_\+impl\+::apply\+\_\+$<$ Fn, integer\+\_\+sequence$<$ T, Is... $>$ $>$@{utl\+::meta\+::apply\+\_\+impl\+::apply\+\_\+$<$ Fn, integer\+\_\+sequence$<$ T, Is... $>$ $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename Fn , typename T , T... Is$>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1apply__impl_1_1apply__}{utl\+::meta\+::apply\+\_\+impl\+::apply\+\_\+}}$<$ Fn, \mbox{\hyperlink{namespaceutl_1_1meta_abc3ba8590a6cdd451f64d6c5dcd8ff99}{integer\+\_\+sequence}}$<$ T, Is... $>$ $>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01integer__sequence_3_01_t_00_01_is_8_8_8_01_4_01_4_a0452e2478b7abc590c3f2e6e26f98b67}{type}} = \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}}$<$Fn, \mbox{\hyperlink{namespaceutl_1_1meta_ad60242f998d1d236b7b9744b7b09c8f2}{integral\+\_\+}}$<$T, Is$>$...$>$} + + + +Definition at line 182 of file typelist.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{typelist_8h}{typelist.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01typelist_3_01_list_8_8_8_01_4_01_4.tex b/doc/latex/structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01typelist_3_01_list_8_8_8_01_4_01_4.tex new file mode 100644 index 0000000..3852fba --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01typelist_3_01_list_8_8_8_01_4_01_4.tex @@ -0,0 +1,45 @@ +\hypertarget{structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01typelist_3_01_list_8_8_8_01_4_01_4}{}\section{utl\+:\+:meta\+:\+:apply\+\_\+impl\+:\+:apply\+\_\+$<$ Fn, typelist$<$ List... $>$ $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01typelist_3_01_list_8_8_8_01_4_01_4}\index{utl\+::meta\+::apply\+\_\+impl\+::apply\+\_\+$<$ Fn, typelist$<$ List... $>$ $>$@{utl\+::meta\+::apply\+\_\+impl\+::apply\+\_\+$<$ Fn, typelist$<$ List... $>$ $>$}} + + +{\ttfamily Sequence} == typelist$<$$>$ + + + + +{\ttfamily \#include $<$typelist.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01typelist_3_01_list_8_8_8_01_4_01_4_a1f8a57b3a017d48791972780cc34fffc}{type}} = \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}}$<$ Fn, List... $>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename Fn, typename ... List$>$\newline +struct utl\+::meta\+::apply\+\_\+impl\+::apply\+\_\+$<$ Fn, typelist$<$ List... $>$ $>$} + +{\ttfamily Sequence} == typelist$<$$>$ + +Definition at line 176 of file typelist.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01typelist_3_01_list_8_8_8_01_4_01_4_a1f8a57b3a017d48791972780cc34fffc}\label{structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01typelist_3_01_list_8_8_8_01_4_01_4_a1f8a57b3a017d48791972780cc34fffc}} +\index{utl\+::meta\+::apply\+\_\+impl\+::apply\+\_\+$<$ Fn, typelist$<$ List... $>$ $>$@{utl\+::meta\+::apply\+\_\+impl\+::apply\+\_\+$<$ Fn, typelist$<$ List... $>$ $>$}!type@{type}} +\index{type@{type}!utl\+::meta\+::apply\+\_\+impl\+::apply\+\_\+$<$ Fn, typelist$<$ List... $>$ $>$@{utl\+::meta\+::apply\+\_\+impl\+::apply\+\_\+$<$ Fn, typelist$<$ List... $>$ $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename Fn , typename ... List$>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1apply__impl_1_1apply__}{utl\+::meta\+::apply\+\_\+impl\+::apply\+\_\+}}$<$ Fn, \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ List... $>$ $>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01typelist_3_01_list_8_8_8_01_4_01_4_a1f8a57b3a017d48791972780cc34fffc}{type}} = \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}}$<$Fn, List...$>$} + + + +Definition at line 177 of file typelist.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{typelist_8h}{typelist.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1at__impl_1_1__add__pointer.tex b/doc/latex/structutl_1_1meta_1_1at__impl_1_1__add__pointer.tex new file mode 100644 index 0000000..58af5ba --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1at__impl_1_1__add__pointer.tex @@ -0,0 +1,43 @@ +\hypertarget{structutl_1_1meta_1_1at__impl_1_1__add__pointer}{}\section{utl\+:\+:meta\+:\+:at\+\_\+impl\+:\+:\+\_\+add\+\_\+pointer$<$ T $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1at__impl_1_1__add__pointer}\index{utl\+::meta\+::at\+\_\+impl\+::\+\_\+add\+\_\+pointer$<$ T $>$@{utl\+::meta\+::at\+\_\+impl\+::\+\_\+add\+\_\+pointer$<$ T $>$}} + + +{\ttfamily \#include $<$typelist.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1meta_1_1at__impl_1_1__add__pointer_a372a7a88f139a95fc12a4da82483d269}{type}} = T $\ast$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T$>$\newline +struct utl\+::meta\+::at\+\_\+impl\+::\+\_\+add\+\_\+pointer$<$ T $>$} + + + +Definition at line 211 of file typelist.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1at__impl_1_1__add__pointer_a372a7a88f139a95fc12a4da82483d269}\label{structutl_1_1meta_1_1at__impl_1_1__add__pointer_a372a7a88f139a95fc12a4da82483d269}} +\index{utl\+::meta\+::at\+\_\+impl\+::\+\_\+add\+\_\+pointer@{utl\+::meta\+::at\+\_\+impl\+::\+\_\+add\+\_\+pointer}!type@{type}} +\index{type@{type}!utl\+::meta\+::at\+\_\+impl\+::\+\_\+add\+\_\+pointer@{utl\+::meta\+::at\+\_\+impl\+::\+\_\+add\+\_\+pointer}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename T $>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1at__impl_1_1__add__pointer}{utl\+::meta\+::at\+\_\+impl\+::\+\_\+add\+\_\+pointer}}$<$ T $>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1at__impl_1_1__add__pointer_a372a7a88f139a95fc12a4da82483d269}{type}} = T$\ast$} + +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} + + +Definition at line 211 of file typelist.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{typelist_8h}{typelist.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1at__impl_1_1at__.tex b/doc/latex/structutl_1_1meta_1_1at__impl_1_1at__.tex new file mode 100644 index 0000000..cb4a0ef --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1at__impl_1_1at__.tex @@ -0,0 +1,21 @@ +\hypertarget{structutl_1_1meta_1_1at__impl_1_1at__}{}\section{utl\+:\+:meta\+:\+:at\+\_\+impl\+:\+:at\+\_\+$<$ List, N $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1at__impl_1_1at__}\index{utl\+::meta\+::at\+\_\+impl\+::at\+\_\+$<$ List, N $>$@{utl\+::meta\+::at\+\_\+impl\+::at\+\_\+$<$ List, N $>$}} + + +{\ttfamily \#include $<$typelist.\+h$>$} + + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename List, index\+\_\+t N$>$\newline +struct utl\+::meta\+::at\+\_\+impl\+::at\+\_\+$<$ List, N $>$} + + + +Definition at line 226 of file typelist.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{typelist_8h}{typelist.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1at__impl_1_1at___3_01typelist_3_01_list_8_8_8_01_4_00_01_n_01_4.tex b/doc/latex/structutl_1_1meta_1_1at__impl_1_1at___3_01typelist_3_01_list_8_8_8_01_4_00_01_n_01_4.tex new file mode 100644 index 0000000..0a8afd2 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1at__impl_1_1at___3_01typelist_3_01_list_8_8_8_01_4_00_01_n_01_4.tex @@ -0,0 +1,53 @@ +\hypertarget{structutl_1_1meta_1_1at__impl_1_1at___3_01typelist_3_01_list_8_8_8_01_4_00_01_n_01_4}{}\section{utl\+:\+:meta\+:\+:at\+\_\+impl\+:\+:at\+\_\+$<$ typelist$<$ List... $>$, N $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1at__impl_1_1at___3_01typelist_3_01_list_8_8_8_01_4_00_01_n_01_4}\index{utl\+::meta\+::at\+\_\+impl\+::at\+\_\+$<$ typelist$<$ List... $>$, N $>$@{utl\+::meta\+::at\+\_\+impl\+::at\+\_\+$<$ typelist$<$ List... $>$, N $>$}} + + +{\ttfamily \#include $<$typelist.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1meta_1_1at__impl_1_1at___3_01typelist_3_01_list_8_8_8_01_4_00_01_n_01_4_ae3269f1784b11ab8789715d3b213e18b}{head\+\_\+}} = \mbox{\hyperlink{structutl_1_1meta_1_1at__impl_1_1at__head__}{at\+\_\+head\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ void $\ast$ $>$\+::times$<$ N $>$ $>$ +\item +using \mbox{\hyperlink{structutl_1_1meta_1_1at__impl_1_1at___3_01typelist_3_01_list_8_8_8_01_4_00_01_n_01_4_ac335ce21f528d54140bdc0273d60b0ac}{type}} = decltype(head\+\_\+\+::select(static\+\_\+cast$<$ \mbox{\hyperlink{namespaceutl_1_1meta_1_1at__impl_a1759f370bc952ff21077efca9fe0e0b4}{add\+\_\+pointer}}$<$ List $>$ $>$(nullptr)...)) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename... List, index\+\_\+t N$>$\newline +struct utl\+::meta\+::at\+\_\+impl\+::at\+\_\+$<$ typelist$<$ List... $>$, N $>$} + + + +Definition at line 229 of file typelist.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1at__impl_1_1at___3_01typelist_3_01_list_8_8_8_01_4_00_01_n_01_4_ae3269f1784b11ab8789715d3b213e18b}\label{structutl_1_1meta_1_1at__impl_1_1at___3_01typelist_3_01_list_8_8_8_01_4_00_01_n_01_4_ae3269f1784b11ab8789715d3b213e18b}} +\index{utl\+::meta\+::at\+\_\+impl\+::at\+\_\+$<$ typelist$<$ List... $>$, N $>$@{utl\+::meta\+::at\+\_\+impl\+::at\+\_\+$<$ typelist$<$ List... $>$, N $>$}!head\+\_\+@{head\+\_\+}} +\index{head\+\_\+@{head\+\_\+}!utl\+::meta\+::at\+\_\+impl\+::at\+\_\+$<$ typelist$<$ List... $>$, N $>$@{utl\+::meta\+::at\+\_\+impl\+::at\+\_\+$<$ typelist$<$ List... $>$, N $>$}} +\subsubsection{\texorpdfstring{head\+\_\+}{head\_}} +{\footnotesize\ttfamily template$<$typename... List, index\+\_\+t N$>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1at__impl_1_1at__}{utl\+::meta\+::at\+\_\+impl\+::at\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ List... $>$, N $>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1at__impl_1_1at___3_01typelist_3_01_list_8_8_8_01_4_00_01_n_01_4_ae3269f1784b11ab8789715d3b213e18b}{head\+\_\+}} = \mbox{\hyperlink{structutl_1_1meta_1_1at__impl_1_1at__head__}{at\+\_\+head\+\_\+}}$<$\mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$void$\ast$$>$\+::times$<$N$>$ $>$} + + + +Definition at line 230 of file typelist.\+h. + +\mbox{\Hypertarget{structutl_1_1meta_1_1at__impl_1_1at___3_01typelist_3_01_list_8_8_8_01_4_00_01_n_01_4_ac335ce21f528d54140bdc0273d60b0ac}\label{structutl_1_1meta_1_1at__impl_1_1at___3_01typelist_3_01_list_8_8_8_01_4_00_01_n_01_4_ac335ce21f528d54140bdc0273d60b0ac}} +\index{utl\+::meta\+::at\+\_\+impl\+::at\+\_\+$<$ typelist$<$ List... $>$, N $>$@{utl\+::meta\+::at\+\_\+impl\+::at\+\_\+$<$ typelist$<$ List... $>$, N $>$}!type@{type}} +\index{type@{type}!utl\+::meta\+::at\+\_\+impl\+::at\+\_\+$<$ typelist$<$ List... $>$, N $>$@{utl\+::meta\+::at\+\_\+impl\+::at\+\_\+$<$ typelist$<$ List... $>$, N $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename... List, index\+\_\+t N$>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1at__impl_1_1at__}{utl\+::meta\+::at\+\_\+impl\+::at\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ List... $>$, N $>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1at__impl_1_1at___3_01typelist_3_01_list_8_8_8_01_4_00_01_n_01_4_ac335ce21f528d54140bdc0273d60b0ac}{type}} = decltype( head\+\_\+\+::select(static\+\_\+cast$<$\mbox{\hyperlink{namespaceutl_1_1meta_1_1at__impl_a1759f370bc952ff21077efca9fe0e0b4}{add\+\_\+pointer}}$<$List$>$ $>$(nullptr)...) )} + + + +Definition at line 233 of file typelist.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{typelist_8h}{typelist.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1at__impl_1_1at__head__.tex b/doc/latex/structutl_1_1meta_1_1at__impl_1_1at__head__.tex new file mode 100644 index 0000000..9b2e428 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1at__impl_1_1at__head__.tex @@ -0,0 +1,21 @@ +\hypertarget{structutl_1_1meta_1_1at__impl_1_1at__head__}{}\section{utl\+:\+:meta\+:\+:at\+\_\+impl\+:\+:at\+\_\+head\+\_\+$<$... $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1at__impl_1_1at__head__}\index{utl\+::meta\+::at\+\_\+impl\+::at\+\_\+head\+\_\+$<$... $>$@{utl\+::meta\+::at\+\_\+impl\+::at\+\_\+head\+\_\+$<$... $>$}} + + +{\ttfamily \#include $<$typelist.\+h$>$} + + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename ...$>$\newline +struct utl\+::meta\+::at\+\_\+impl\+::at\+\_\+head\+\_\+$<$... $>$} + + + +Definition at line 215 of file typelist.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{typelist_8h}{typelist.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1at__impl_1_1at__head___3_01typelist_3_01voids_8_8_8_01_4_01_4.tex b/doc/latex/structutl_1_1meta_1_1at__impl_1_1at__head___3_01typelist_3_01voids_8_8_8_01_4_01_4.tex new file mode 100644 index 0000000..34855cd --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1at__impl_1_1at__head___3_01typelist_3_01voids_8_8_8_01_4_01_4.tex @@ -0,0 +1,46 @@ +\hypertarget{structutl_1_1meta_1_1at__impl_1_1at__head___3_01typelist_3_01voids_8_8_8_01_4_01_4}{}\section{utl\+:\+:meta\+:\+:at\+\_\+impl\+:\+:at\+\_\+head\+\_\+$<$ typelist$<$ voids... $>$ $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1at__impl_1_1at__head___3_01typelist_3_01voids_8_8_8_01_4_01_4}\index{utl\+::meta\+::at\+\_\+impl\+::at\+\_\+head\+\_\+$<$ typelist$<$ voids... $>$ $>$@{utl\+::meta\+::at\+\_\+impl\+::at\+\_\+head\+\_\+$<$ typelist$<$ voids... $>$ $>$}} + + +{\ttfamily \#include $<$typelist.\+h$>$} + +\subsection*{Static Public Member Functions} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename T $>$ }\\static constexpr T \mbox{\hyperlink{structutl_1_1meta_1_1at__impl_1_1at__head___3_01typelist_3_01voids_8_8_8_01_4_01_4_a6bab76042dcae821a961a0a4410c83ff}{select}} (voids..., T $\ast$,...) +\item +static constexpr \mbox{\hyperlink{structutl_1_1meta_1_1nil__}{nil\+\_\+}} \mbox{\hyperlink{structutl_1_1meta_1_1at__impl_1_1at__head___3_01typelist_3_01voids_8_8_8_01_4_01_4_a139a326849d5869fbe877260ff3cff31}{select}} (...) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename... voids$>$\newline +struct utl\+::meta\+::at\+\_\+impl\+::at\+\_\+head\+\_\+$<$ typelist$<$ voids... $>$ $>$} + + + +Definition at line 218 of file typelist.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1at__impl_1_1at__head___3_01typelist_3_01voids_8_8_8_01_4_01_4_a6bab76042dcae821a961a0a4410c83ff}\label{structutl_1_1meta_1_1at__impl_1_1at__head___3_01typelist_3_01voids_8_8_8_01_4_01_4_a6bab76042dcae821a961a0a4410c83ff}} +\index{utl\+::meta\+::at\+\_\+impl\+::at\+\_\+head\+\_\+$<$ typelist$<$ voids... $>$ $>$@{utl\+::meta\+::at\+\_\+impl\+::at\+\_\+head\+\_\+$<$ typelist$<$ voids... $>$ $>$}!select@{select}} +\index{select@{select}!utl\+::meta\+::at\+\_\+impl\+::at\+\_\+head\+\_\+$<$ typelist$<$ voids... $>$ $>$@{utl\+::meta\+::at\+\_\+impl\+::at\+\_\+head\+\_\+$<$ typelist$<$ voids... $>$ $>$}} +\subsubsection{\texorpdfstring{select()}{select()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename... voids$>$ \\ +template$<$typename T $>$ \\ +static constexpr T \mbox{\hyperlink{structutl_1_1meta_1_1at__impl_1_1at__head__}{utl\+::meta\+::at\+\_\+impl\+::at\+\_\+head\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ voids... $>$ $>$\+::select (\begin{DoxyParamCaption}\item[{voids...}]{, }\item[{T $\ast$}]{, }\item[{}]{... }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} + +\mbox{\Hypertarget{structutl_1_1meta_1_1at__impl_1_1at__head___3_01typelist_3_01voids_8_8_8_01_4_01_4_a139a326849d5869fbe877260ff3cff31}\label{structutl_1_1meta_1_1at__impl_1_1at__head___3_01typelist_3_01voids_8_8_8_01_4_01_4_a139a326849d5869fbe877260ff3cff31}} +\index{utl\+::meta\+::at\+\_\+impl\+::at\+\_\+head\+\_\+$<$ typelist$<$ voids... $>$ $>$@{utl\+::meta\+::at\+\_\+impl\+::at\+\_\+head\+\_\+$<$ typelist$<$ voids... $>$ $>$}!select@{select}} +\index{select@{select}!utl\+::meta\+::at\+\_\+impl\+::at\+\_\+head\+\_\+$<$ typelist$<$ voids... $>$ $>$@{utl\+::meta\+::at\+\_\+impl\+::at\+\_\+head\+\_\+$<$ typelist$<$ voids... $>$ $>$}} +\subsubsection{\texorpdfstring{select()}{select()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename... voids$>$ \\ +static constexpr \mbox{\hyperlink{structutl_1_1meta_1_1nil__}{nil\+\_\+}} \mbox{\hyperlink{structutl_1_1meta_1_1at__impl_1_1at__head__}{utl\+::meta\+::at\+\_\+impl\+::at\+\_\+head\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ voids... $>$ $>$\+::select (\begin{DoxyParamCaption}\item[{}]{... }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{typelist_8h}{typelist.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1back__impl_1_1back__.tex b/doc/latex/structutl_1_1meta_1_1back__impl_1_1back__.tex new file mode 100644 index 0000000..d27c056 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1back__impl_1_1back__.tex @@ -0,0 +1,21 @@ +\hypertarget{structutl_1_1meta_1_1back__impl_1_1back__}{}\section{utl\+:\+:meta\+:\+:back\+\_\+impl\+:\+:back\+\_\+$<$ List $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1back__impl_1_1back__}\index{utl\+::meta\+::back\+\_\+impl\+::back\+\_\+$<$ List $>$@{utl\+::meta\+::back\+\_\+impl\+::back\+\_\+$<$ List $>$}} + + +{\ttfamily \#include $<$typelist.\+h$>$} + + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename List$>$\newline +struct utl\+::meta\+::back\+\_\+impl\+::back\+\_\+$<$ List $>$} + + + +Definition at line 281 of file typelist.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{typelist_8h}{typelist.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1back__impl_1_1back___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.tex b/doc/latex/structutl_1_1meta_1_1back__impl_1_1back___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.tex new file mode 100644 index 0000000..8718686 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1back__impl_1_1back___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.tex @@ -0,0 +1,40 @@ +\hypertarget{structutl_1_1meta_1_1back__impl_1_1back___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4}{}\section{utl\+:\+:meta\+:\+:back\+\_\+impl\+:\+:back\+\_\+$<$ typelist$<$ Head, Tail... $>$ $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1back__impl_1_1back___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4}\index{utl\+::meta\+::back\+\_\+impl\+::back\+\_\+$<$ typelist$<$ Head, Tail... $>$ $>$@{utl\+::meta\+::back\+\_\+impl\+::back\+\_\+$<$ typelist$<$ Head, Tail... $>$ $>$}} + + +{\ttfamily \#include $<$typelist.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1meta_1_1back__impl_1_1back___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4_a8d21b435cc06609d36638fe8de568e4b}{type}} = \mbox{\hyperlink{namespaceutl_1_1meta_a6683b804a20d54817d61ce4663527084}{at\+\_\+c}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ Head, Tail... $>$, sizeof...(Tail) $>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename Head, typename... Tail$>$\newline +struct utl\+::meta\+::back\+\_\+impl\+::back\+\_\+$<$ typelist$<$ Head, Tail... $>$ $>$} + + + +Definition at line 284 of file typelist.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1back__impl_1_1back___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4_a8d21b435cc06609d36638fe8de568e4b}\label{structutl_1_1meta_1_1back__impl_1_1back___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4_a8d21b435cc06609d36638fe8de568e4b}} +\index{utl\+::meta\+::back\+\_\+impl\+::back\+\_\+$<$ typelist$<$ Head, Tail... $>$ $>$@{utl\+::meta\+::back\+\_\+impl\+::back\+\_\+$<$ typelist$<$ Head, Tail... $>$ $>$}!type@{type}} +\index{type@{type}!utl\+::meta\+::back\+\_\+impl\+::back\+\_\+$<$ typelist$<$ Head, Tail... $>$ $>$@{utl\+::meta\+::back\+\_\+impl\+::back\+\_\+$<$ typelist$<$ Head, Tail... $>$ $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename Head , typename... Tail$>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1back__impl_1_1back__}{utl\+::meta\+::back\+\_\+impl\+::back\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ Head, Tail... $>$ $>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1back__impl_1_1back___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4_a8d21b435cc06609d36638fe8de568e4b}{type}} = \mbox{\hyperlink{namespaceutl_1_1meta_a6683b804a20d54817d61ce4663527084}{at\+\_\+c}} $<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$Head, Tail...$>$, sizeof...(Tail) $>$} + + + +Definition at line 287 of file typelist.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{typelist_8h}{typelist.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1bind__back.tex b/doc/latex/structutl_1_1meta_1_1bind__back.tex new file mode 100644 index 0000000..886b590 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1bind__back.tex @@ -0,0 +1,44 @@ +\hypertarget{structutl_1_1meta_1_1bind__back}{}\section{utl\+:\+:meta\+:\+:bind\+\_\+back$<$ Fn, Ts $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1bind__back}\index{utl\+::meta\+::bind\+\_\+back$<$ Fn, Ts $>$@{utl\+::meta\+::bind\+\_\+back$<$ Fn, Ts $>$}} + + +{\ttfamily \#include $<$invoke.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename... Us$>$ }\\using \mbox{\hyperlink{structutl_1_1meta_1_1bind__back_a2f8a5ad9fd3b9e5ed79ace2c18d1ec9a}{apply}} = \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}}$<$ Fn, Us..., Ts... $>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename Fn, typename... Ts$>$\newline +struct utl\+::meta\+::bind\+\_\+back$<$ Fn, Ts $>$} + +Applies the Invocable {\ttfamily Fn} by binding the arguments {\ttfamily Ts} to the back of {\ttfamily Fn}. + +Definition at line 342 of file invoke.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1bind__back_a2f8a5ad9fd3b9e5ed79ace2c18d1ec9a}\label{structutl_1_1meta_1_1bind__back_a2f8a5ad9fd3b9e5ed79ace2c18d1ec9a}} +\index{utl\+::meta\+::bind\+\_\+back@{utl\+::meta\+::bind\+\_\+back}!apply@{apply}} +\index{apply@{apply}!utl\+::meta\+::bind\+\_\+back@{utl\+::meta\+::bind\+\_\+back}} +\subsubsection{\texorpdfstring{apply}{apply}} +{\footnotesize\ttfamily template$<$typename Fn , typename... Ts$>$ \\ +template$<$typename... Us$>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1bind__back}{utl\+::meta\+::bind\+\_\+back}}$<$ Fn, Ts $>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1bind__back_a2f8a5ad9fd3b9e5ed79ace2c18d1ec9a}{apply}} = \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}}$<$Fn, Us..., Ts...$>$} + +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/invoke.\+h}}.\end{Desc} + + +Definition at line 344 of file invoke.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{meta_2invoke_8h}{invoke.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1bind__front.tex b/doc/latex/structutl_1_1meta_1_1bind__front.tex new file mode 100644 index 0000000..d2be718 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1bind__front.tex @@ -0,0 +1,44 @@ +\hypertarget{structutl_1_1meta_1_1bind__front}{}\section{utl\+:\+:meta\+:\+:bind\+\_\+front$<$ Fn, Ts $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1bind__front}\index{utl\+::meta\+::bind\+\_\+front$<$ Fn, Ts $>$@{utl\+::meta\+::bind\+\_\+front$<$ Fn, Ts $>$}} + + +{\ttfamily \#include $<$invoke.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename... Us$>$ }\\using \mbox{\hyperlink{structutl_1_1meta_1_1bind__front_a4247cb2b0a19e3168161dead529c532c}{apply}} = \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}}$<$ Fn, Ts..., Us... $>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename Fn, typename... Ts$>$\newline +struct utl\+::meta\+::bind\+\_\+front$<$ Fn, Ts $>$} + +Applies the invocable {\ttfamily Fn} by binding the arguments {\ttfamily Ts} to the front of {\ttfamily Fn}. + +Definition at line 332 of file invoke.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1bind__front_a4247cb2b0a19e3168161dead529c532c}\label{structutl_1_1meta_1_1bind__front_a4247cb2b0a19e3168161dead529c532c}} +\index{utl\+::meta\+::bind\+\_\+front@{utl\+::meta\+::bind\+\_\+front}!apply@{apply}} +\index{apply@{apply}!utl\+::meta\+::bind\+\_\+front@{utl\+::meta\+::bind\+\_\+front}} +\subsubsection{\texorpdfstring{apply}{apply}} +{\footnotesize\ttfamily template$<$typename Fn , typename... Ts$>$ \\ +template$<$typename... Us$>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1bind__front}{utl\+::meta\+::bind\+\_\+front}}$<$ Fn, Ts $>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1bind__front_a4247cb2b0a19e3168161dead529c532c}{apply}} = \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}}$<$Fn, Ts..., Us...$>$} + +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/invoke.\+h}}.\end{Desc} + + +Definition at line 334 of file invoke.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{meta_2invoke_8h}{invoke.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1cat__impl_1_1cat__.tex b/doc/latex/structutl_1_1meta_1_1cat__impl_1_1cat__.tex new file mode 100644 index 0000000..7678ada --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1cat__impl_1_1cat__.tex @@ -0,0 +1,21 @@ +\hypertarget{structutl_1_1meta_1_1cat__impl_1_1cat__}{}\section{utl\+:\+:meta\+:\+:cat\+\_\+impl\+:\+:cat\+\_\+$<$ Lists $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1cat__impl_1_1cat__}\index{utl\+::meta\+::cat\+\_\+impl\+::cat\+\_\+$<$ Lists $>$@{utl\+::meta\+::cat\+\_\+impl\+::cat\+\_\+$<$ Lists $>$}} + + +{\ttfamily \#include $<$typelist.\+h$>$} + + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename... Lists$>$\newline +struct utl\+::meta\+::cat\+\_\+impl\+::cat\+\_\+$<$ Lists $>$} + + + +Definition at line 306 of file typelist.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{typelist_8h}{typelist.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_00_01_ln_8_8_8_01_4.eps b/doc/latex/structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_00_01_ln_8_8_8_01_4.eps new file mode 100644 index 0000000..ed1967f --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_00_01_ln_8_8_8_01_4.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 101.781170 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 4.912500 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::meta::cat_impl::cat_< typelist< L1... >, typelist< L2... >, Ln... >) cw +(utl::meta::cat_impl::cat_< typelist< L1..., L2... >, Ln... >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::meta::cat_impl::cat_< typelist< L1... >, typelist< L2... >, Ln... >) 0.000000 0.000000 box + (utl::meta::cat_impl::cat_< typelist< L1..., L2... >, Ln... >) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_00_01_ln_8_8_8_01_4.tex b/doc/latex/structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_00_01_ln_8_8_8_01_4.tex new file mode 100644 index 0000000..d06e88d --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_00_01_ln_8_8_8_01_4.tex @@ -0,0 +1,27 @@ +\hypertarget{structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_00_01_ln_8_8_8_01_4}{}\section{utl\+:\+:meta\+:\+:cat\+\_\+impl\+:\+:cat\+\_\+$<$ typelist$<$ L1... $>$, typelist$<$ L2... $>$, Ln... $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_00_01_ln_8_8_8_01_4}\index{utl\+::meta\+::cat\+\_\+impl\+::cat\+\_\+$<$ typelist$<$ L1... $>$, typelist$<$ L2... $>$, Ln... $>$@{utl\+::meta\+::cat\+\_\+impl\+::cat\+\_\+$<$ typelist$<$ L1... $>$, typelist$<$ L2... $>$, Ln... $>$}} + + +{\ttfamily \#include $<$typelist.\+h$>$} + +Inheritance diagram for utl\+:\+:meta\+:\+:cat\+\_\+impl\+:\+:cat\+\_\+$<$ typelist$<$ L1... $>$, typelist$<$ L2... $>$, Ln... $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_00_01_ln_8_8_8_01_4} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename... L1, typename... L2, typename... Ln$>$\newline +struct utl\+::meta\+::cat\+\_\+impl\+::cat\+\_\+$<$ typelist$<$ L1... $>$, typelist$<$ L2... $>$, Ln... $>$} + + + +Definition at line 324 of file typelist.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{typelist_8h}{typelist.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4.tex b/doc/latex/structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4.tex new file mode 100644 index 0000000..cccf0e9 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4.tex @@ -0,0 +1,40 @@ +\hypertarget{structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4}{}\section{utl\+:\+:meta\+:\+:cat\+\_\+impl\+:\+:cat\+\_\+$<$ typelist$<$ L1... $>$, typelist$<$ L2... $>$ $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4}\index{utl\+::meta\+::cat\+\_\+impl\+::cat\+\_\+$<$ typelist$<$ L1... $>$, typelist$<$ L2... $>$ $>$@{utl\+::meta\+::cat\+\_\+impl\+::cat\+\_\+$<$ typelist$<$ L1... $>$, typelist$<$ L2... $>$ $>$}} + + +{\ttfamily \#include $<$typelist.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4_a33c0c07037f594dc11a4eb7ecac7a428}{type}} = \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ L1..., L2... $>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename... L1, typename... L2$>$\newline +struct utl\+::meta\+::cat\+\_\+impl\+::cat\+\_\+$<$ typelist$<$ L1... $>$, typelist$<$ L2... $>$ $>$} + + + +Definition at line 319 of file typelist.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4_a33c0c07037f594dc11a4eb7ecac7a428}\label{structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4_a33c0c07037f594dc11a4eb7ecac7a428}} +\index{utl\+::meta\+::cat\+\_\+impl\+::cat\+\_\+$<$ typelist$<$ L1... $>$, typelist$<$ L2... $>$ $>$@{utl\+::meta\+::cat\+\_\+impl\+::cat\+\_\+$<$ typelist$<$ L1... $>$, typelist$<$ L2... $>$ $>$}!type@{type}} +\index{type@{type}!utl\+::meta\+::cat\+\_\+impl\+::cat\+\_\+$<$ typelist$<$ L1... $>$, typelist$<$ L2... $>$ $>$@{utl\+::meta\+::cat\+\_\+impl\+::cat\+\_\+$<$ typelist$<$ L1... $>$, typelist$<$ L2... $>$ $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename... L1, typename... L2$>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1cat__impl_1_1cat__}{utl\+::meta\+::cat\+\_\+impl\+::cat\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ L1... $>$, \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ L2... $>$ $>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4_a33c0c07037f594dc11a4eb7ecac7a428}{type}} = \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$L1..., L2...$>$} + + + +Definition at line 320 of file typelist.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{typelist_8h}{typelist.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_01_4.tex b/doc/latex/structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_01_4.tex new file mode 100644 index 0000000..91a8c09 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_01_4.tex @@ -0,0 +1,40 @@ +\hypertarget{structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_01_4}{}\section{utl\+:\+:meta\+:\+:cat\+\_\+impl\+:\+:cat\+\_\+$<$ typelist$<$ L1... $>$ $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_01_4}\index{utl\+::meta\+::cat\+\_\+impl\+::cat\+\_\+$<$ typelist$<$ L1... $>$ $>$@{utl\+::meta\+::cat\+\_\+impl\+::cat\+\_\+$<$ typelist$<$ L1... $>$ $>$}} + + +{\ttfamily \#include $<$typelist.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_01_4_a453cfcf1d029d16a35b0f6b3329393e1}{type}} = \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ L1... $>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename... L1$>$\newline +struct utl\+::meta\+::cat\+\_\+impl\+::cat\+\_\+$<$ typelist$<$ L1... $>$ $>$} + + + +Definition at line 314 of file typelist.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_01_4_a453cfcf1d029d16a35b0f6b3329393e1}\label{structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_01_4_a453cfcf1d029d16a35b0f6b3329393e1}} +\index{utl\+::meta\+::cat\+\_\+impl\+::cat\+\_\+$<$ typelist$<$ L1... $>$ $>$@{utl\+::meta\+::cat\+\_\+impl\+::cat\+\_\+$<$ typelist$<$ L1... $>$ $>$}!type@{type}} +\index{type@{type}!utl\+::meta\+::cat\+\_\+impl\+::cat\+\_\+$<$ typelist$<$ L1... $>$ $>$@{utl\+::meta\+::cat\+\_\+impl\+::cat\+\_\+$<$ typelist$<$ L1... $>$ $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename... L1$>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1cat__impl_1_1cat__}{utl\+::meta\+::cat\+\_\+impl\+::cat\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ L1... $>$ $>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_01_4_a453cfcf1d029d16a35b0f6b3329393e1}{type}} = \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$L1...$>$} + + + +Definition at line 315 of file typelist.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{typelist_8h}{typelist.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1cat__impl_1_1cat___3_4.tex b/doc/latex/structutl_1_1meta_1_1cat__impl_1_1cat___3_4.tex new file mode 100644 index 0000000..5d52d99 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1cat__impl_1_1cat___3_4.tex @@ -0,0 +1,39 @@ +\hypertarget{structutl_1_1meta_1_1cat__impl_1_1cat___3_4}{}\section{utl\+:\+:meta\+:\+:cat\+\_\+impl\+:\+:cat\+\_\+$<$$>$ Struct Template Reference} +\label{structutl_1_1meta_1_1cat__impl_1_1cat___3_4}\index{utl\+::meta\+::cat\+\_\+impl\+::cat\+\_\+$<$$>$@{utl\+::meta\+::cat\+\_\+impl\+::cat\+\_\+$<$$>$}} + + +{\ttfamily \#include $<$typelist.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1meta_1_1cat__impl_1_1cat___3_4_a23a045e4af6ea5083c04d3d070436938}{type}} = \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$$>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$$>$\newline +struct utl\+::meta\+::cat\+\_\+impl\+::cat\+\_\+$<$$>$} + + + +Definition at line 309 of file typelist.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1cat__impl_1_1cat___3_4_a23a045e4af6ea5083c04d3d070436938}\label{structutl_1_1meta_1_1cat__impl_1_1cat___3_4_a23a045e4af6ea5083c04d3d070436938}} +\index{utl\+::meta\+::cat\+\_\+impl\+::cat\+\_\+$<$$>$@{utl\+::meta\+::cat\+\_\+impl\+::cat\+\_\+$<$$>$}!type@{type}} +\index{type@{type}!utl\+::meta\+::cat\+\_\+impl\+::cat\+\_\+$<$$>$@{utl\+::meta\+::cat\+\_\+impl\+::cat\+\_\+$<$$>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily using \mbox{\hyperlink{structutl_1_1meta_1_1cat__impl_1_1cat__}{utl\+::meta\+::cat\+\_\+impl\+::cat\+\_\+}}$<$$>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1cat__impl_1_1cat___3_4_a23a045e4af6ea5083c04d3d070436938}{type}} = \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$$>$} + + + +Definition at line 310 of file typelist.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{typelist_8h}{typelist.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1count__if__impl_1_1count__if__.tex b/doc/latex/structutl_1_1meta_1_1count__if__impl_1_1count__if__.tex new file mode 100644 index 0000000..b22a4b1 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1count__if__impl_1_1count__if__.tex @@ -0,0 +1,21 @@ +\hypertarget{structutl_1_1meta_1_1count__if__impl_1_1count__if__}{}\section{utl\+:\+:meta\+:\+:count\+\_\+if\+\_\+impl\+:\+:count\+\_\+if\+\_\+$<$ typename, typename, size\+\_\+t $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1count__if__impl_1_1count__if__}\index{utl\+::meta\+::count\+\_\+if\+\_\+impl\+::count\+\_\+if\+\_\+$<$ typename, typename, size\+\_\+t $>$@{utl\+::meta\+::count\+\_\+if\+\_\+impl\+::count\+\_\+if\+\_\+$<$ typename, typename, size\+\_\+t $>$}} + + +{\ttfamily \#include $<$typelist.\+h$>$} + + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename, typename, size\+\_\+t$>$\newline +struct utl\+::meta\+::count\+\_\+if\+\_\+impl\+::count\+\_\+if\+\_\+$<$ typename, typename, size\+\_\+t $>$} + + + +Definition at line 718 of file typelist.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{typelist_8h}{typelist.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.tex b/doc/latex/structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.tex new file mode 100644 index 0000000..f345367 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.tex @@ -0,0 +1,40 @@ +\hypertarget{structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4}{}\section{utl\+:\+:meta\+:\+:count\+\_\+if\+\_\+impl\+:\+:count\+\_\+if\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, N $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4}\index{utl\+::meta\+::count\+\_\+if\+\_\+impl\+::count\+\_\+if\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, N $>$@{utl\+::meta\+::count\+\_\+if\+\_\+impl\+::count\+\_\+if\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, N $>$}} + + +{\ttfamily \#include $<$typelist.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4_aaa24b23395ae90c9aa56c78b299d1124}{type}} = \mbox{\hyperlink{group__type_ga39cc4e727a8faa5ea176f543e62c05c0}{if\+\_\+}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_ac27f3e5f3ec42921d9f8a6bb85560cf1}{invoke\+\_\+t}}$<$ Fn, Head $>$, \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1count__if__impl_1_1count__if__}{count\+\_\+if\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ Tail... $>$, Fn, N+1 $>$ $>$, \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1count__if__impl_1_1count__if__}{count\+\_\+if\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ Tail... $>$, Fn, N $>$ $>$ $>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename Head, typename... Tail, typename Fn, size\+\_\+t N$>$\newline +struct utl\+::meta\+::count\+\_\+if\+\_\+impl\+::count\+\_\+if\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, N $>$} + + + +Definition at line 721 of file typelist.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4_aaa24b23395ae90c9aa56c78b299d1124}\label{structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4_aaa24b23395ae90c9aa56c78b299d1124}} +\index{utl\+::meta\+::count\+\_\+if\+\_\+impl\+::count\+\_\+if\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, N $>$@{utl\+::meta\+::count\+\_\+if\+\_\+impl\+::count\+\_\+if\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, N $>$}!type@{type}} +\index{type@{type}!utl\+::meta\+::count\+\_\+if\+\_\+impl\+::count\+\_\+if\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, N $>$@{utl\+::meta\+::count\+\_\+if\+\_\+impl\+::count\+\_\+if\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, N $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename Head , typename... Tail, typename Fn , size\+\_\+t N$>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1count__if__impl_1_1count__if__}{utl\+::meta\+::count\+\_\+if\+\_\+impl\+::count\+\_\+if\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ Head, Tail... $>$, Fn, N $>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4_aaa24b23395ae90c9aa56c78b299d1124}{type}} = \mbox{\hyperlink{group__type_ga39cc4e727a8faa5ea176f543e62c05c0}{if\+\_\+}} $<$ \mbox{\hyperlink{namespaceutl_1_1meta_ac27f3e5f3ec42921d9f8a6bb85560cf1}{invoke\+\_\+t}}$<$Fn, Head$>$, \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1count__if__impl_1_1count__if__}{count\+\_\+if\+\_\+}}$<$\mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$Tail...$>$, Fn, N+1$>$ $>$, \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1count__if__impl_1_1count__if__}{count\+\_\+if\+\_\+}}$<$\mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$Tail...$>$, Fn, N$>$ $>$ $>$} + + + +Definition at line 732 of file typelist.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{typelist_8h}{typelist.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.tex b/doc/latex/structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.tex new file mode 100644 index 0000000..f69d657 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.tex @@ -0,0 +1,40 @@ +\hypertarget{structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4}{}\section{utl\+:\+:meta\+:\+:count\+\_\+if\+\_\+impl\+:\+:count\+\_\+if\+\_\+$<$ typelist$<$$>$, Fn, N $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4}\index{utl\+::meta\+::count\+\_\+if\+\_\+impl\+::count\+\_\+if\+\_\+$<$ typelist$<$$>$, Fn, N $>$@{utl\+::meta\+::count\+\_\+if\+\_\+impl\+::count\+\_\+if\+\_\+$<$ typelist$<$$>$, Fn, N $>$}} + + +{\ttfamily \#include $<$typelist.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4_a6817148d6cfbde3cbd495deed94bb469}{type}} = \mbox{\hyperlink{namespaceutl_1_1meta_a249ac51f6613684164663bd22025fe9a}{size\+\_\+}}$<$ N $>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename Fn, size\+\_\+t N$>$\newline +struct utl\+::meta\+::count\+\_\+if\+\_\+impl\+::count\+\_\+if\+\_\+$<$ typelist$<$$>$, Fn, N $>$} + + + +Definition at line 737 of file typelist.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4_a6817148d6cfbde3cbd495deed94bb469}\label{structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4_a6817148d6cfbde3cbd495deed94bb469}} +\index{utl\+::meta\+::count\+\_\+if\+\_\+impl\+::count\+\_\+if\+\_\+$<$ typelist$<$$>$, Fn, N $>$@{utl\+::meta\+::count\+\_\+if\+\_\+impl\+::count\+\_\+if\+\_\+$<$ typelist$<$$>$, Fn, N $>$}!type@{type}} +\index{type@{type}!utl\+::meta\+::count\+\_\+if\+\_\+impl\+::count\+\_\+if\+\_\+$<$ typelist$<$$>$, Fn, N $>$@{utl\+::meta\+::count\+\_\+if\+\_\+impl\+::count\+\_\+if\+\_\+$<$ typelist$<$$>$, Fn, N $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename Fn , size\+\_\+t N$>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1count__if__impl_1_1count__if__}{utl\+::meta\+::count\+\_\+if\+\_\+impl\+::count\+\_\+if\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$$>$, Fn, N $>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4_a6817148d6cfbde3cbd495deed94bb469}{type}} = \mbox{\hyperlink{namespaceutl_1_1meta_a249ac51f6613684164663bd22025fe9a}{size\+\_\+}}$<$N$>$} + + + +Definition at line 738 of file typelist.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{typelist_8h}{typelist.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1detail_1_1__and__.tex b/doc/latex/structutl_1_1meta_1_1detail_1_1__and__.tex new file mode 100644 index 0000000..1e1958e --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1detail_1_1__and__.tex @@ -0,0 +1,21 @@ +\hypertarget{structutl_1_1meta_1_1detail_1_1__and__}{}\section{utl\+:\+:meta\+:\+:detail\+:\+:\+\_\+and\+\_\+$<$... $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1detail_1_1__and__}\index{utl\+::meta\+::detail\+::\+\_\+and\+\_\+$<$... $>$@{utl\+::meta\+::detail\+::\+\_\+and\+\_\+$<$... $>$}} + + +{\ttfamily \#include $<$operations.\+h$>$} + + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename...$>$\newline +struct utl\+::meta\+::detail\+::\+\_\+and\+\_\+$<$... $>$} + + + +Definition at line 76 of file operations.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{operations_8h}{operations.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4.eps b/doc/latex/structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4.eps new file mode 100644 index 0000000..7c67175 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 138.408304 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 3.612500 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::meta::detail::_and_< _T1, _T2, _T3, _Tn... >) cw +(if_< _T1, _and_< _T2, _T3, _Tn... >, _T1 >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::meta::detail::_and_< _T1, _T2, _T3, _Tn... >) 0.000000 0.000000 box + (if_< _T1, _and_< _T2, _T3, _Tn... >, _T1 >) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4.tex b/doc/latex/structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4.tex new file mode 100644 index 0000000..a55316d --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4.tex @@ -0,0 +1,27 @@ +\hypertarget{structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4}{}\section{utl\+:\+:meta\+:\+:detail\+:\+:\+\_\+and\+\_\+$<$ \+\_\+\+T1, \+\_\+\+T2, \+\_\+\+T3, \+\_\+\+Tn... $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4}\index{utl\+::meta\+::detail\+::\+\_\+and\+\_\+$<$ \+\_\+\+T1, \+\_\+\+T2, \+\_\+\+T3, \+\_\+\+Tn... $>$@{utl\+::meta\+::detail\+::\+\_\+and\+\_\+$<$ \+\_\+\+T1, \+\_\+\+T2, \+\_\+\+T3, \+\_\+\+Tn... $>$}} + + +{\ttfamily \#include $<$operations.\+h$>$} + +Inheritance diagram for utl\+:\+:meta\+:\+:detail\+:\+:\+\_\+and\+\_\+$<$ \+\_\+\+T1, \+\_\+\+T2, \+\_\+\+T3, \+\_\+\+Tn... $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename \+\_\+\+T1, typename \+\_\+\+T2, typename \+\_\+\+T3, typename... \+\_\+\+Tn$>$\newline +struct utl\+::meta\+::detail\+::\+\_\+and\+\_\+$<$ \+\_\+\+T1, \+\_\+\+T2, \+\_\+\+T3, \+\_\+\+Tn... $>$} + + + +Definition at line 91 of file operations.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{operations_8h}{operations.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_01_4.eps b/doc/latex/structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_01_4.eps new file mode 100644 index 0000000..7c54f55 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_01_4.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 184.331797 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.712500 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::meta::detail::_and_< _T1, _T2 >) cw +(if_< _T1, _T2, _T1 >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::meta::detail::_and_< _T1, _T2 >) 0.000000 0.000000 box + (if_< _T1, _T2, _T1 >) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_01_4.tex b/doc/latex/structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_01_4.tex new file mode 100644 index 0000000..9780a33 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_01_4.tex @@ -0,0 +1,27 @@ +\hypertarget{structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_01_4}{}\section{utl\+:\+:meta\+:\+:detail\+:\+:\+\_\+and\+\_\+$<$ \+\_\+\+T1, \+\_\+\+T2 $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_01_4}\index{utl\+::meta\+::detail\+::\+\_\+and\+\_\+$<$ \+\_\+\+T1, \+\_\+\+T2 $>$@{utl\+::meta\+::detail\+::\+\_\+and\+\_\+$<$ \+\_\+\+T1, \+\_\+\+T2 $>$}} + + +{\ttfamily \#include $<$operations.\+h$>$} + +Inheritance diagram for utl\+:\+:meta\+:\+:detail\+:\+:\+\_\+and\+\_\+$<$ \+\_\+\+T1, \+\_\+\+T2 $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{structutl_1_1meta_1_1detail_1_1__and___3_01___t1_00_01___t2_01_4} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename \+\_\+\+T1, typename \+\_\+\+T2$>$\newline +struct utl\+::meta\+::detail\+::\+\_\+and\+\_\+$<$ \+\_\+\+T1, \+\_\+\+T2 $>$} + + + +Definition at line 87 of file operations.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{operations_8h}{operations.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1detail_1_1__and___3_01___t1_01_4.eps b/doc/latex/structutl_1_1meta_1_1detail_1_1__and___3_01___t1_01_4.eps new file mode 100644 index 0000000..f5a541e --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1detail_1_1__and___3_01___t1_01_4.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 213.903743 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.337500 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::meta::detail::_and_< _T1 >) cw +(_T1) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::meta::detail::_and_< _T1 >) 0.000000 0.000000 box + (_T1) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/structutl_1_1meta_1_1detail_1_1__and___3_01___t1_01_4.tex b/doc/latex/structutl_1_1meta_1_1detail_1_1__and___3_01___t1_01_4.tex new file mode 100644 index 0000000..68a1d0f --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1detail_1_1__and___3_01___t1_01_4.tex @@ -0,0 +1,27 @@ +\hypertarget{structutl_1_1meta_1_1detail_1_1__and___3_01___t1_01_4}{}\section{utl\+:\+:meta\+:\+:detail\+:\+:\+\_\+and\+\_\+$<$ \+\_\+\+T1 $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1detail_1_1__and___3_01___t1_01_4}\index{utl\+::meta\+::detail\+::\+\_\+and\+\_\+$<$ \+\_\+\+T1 $>$@{utl\+::meta\+::detail\+::\+\_\+and\+\_\+$<$ \+\_\+\+T1 $>$}} + + +{\ttfamily \#include $<$operations.\+h$>$} + +Inheritance diagram for utl\+:\+:meta\+:\+:detail\+:\+:\+\_\+and\+\_\+$<$ \+\_\+\+T1 $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{structutl_1_1meta_1_1detail_1_1__and___3_01___t1_01_4} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename \+\_\+\+T1$>$\newline +struct utl\+::meta\+::detail\+::\+\_\+and\+\_\+$<$ \+\_\+\+T1 $>$} + + + +Definition at line 83 of file operations.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{operations_8h}{operations.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1detail_1_1__and___3_4.eps b/doc/latex/structutl_1_1meta_1_1detail_1_1__and___3_4.eps new file mode 100644 index 0000000..c3bc046 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1detail_1_1__and___3_4.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 256.410256 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.950000 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::meta::detail::_and_<>) cw +(true_) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::meta::detail::_and_<>) 0.000000 0.000000 box + (true_) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/structutl_1_1meta_1_1detail_1_1__and___3_4.tex b/doc/latex/structutl_1_1meta_1_1detail_1_1__and___3_4.tex new file mode 100644 index 0000000..ba7b397 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1detail_1_1__and___3_4.tex @@ -0,0 +1,27 @@ +\hypertarget{structutl_1_1meta_1_1detail_1_1__and___3_4}{}\section{utl\+:\+:meta\+:\+:detail\+:\+:\+\_\+and\+\_\+$<$$>$ Struct Template Reference} +\label{structutl_1_1meta_1_1detail_1_1__and___3_4}\index{utl\+::meta\+::detail\+::\+\_\+and\+\_\+$<$$>$@{utl\+::meta\+::detail\+::\+\_\+and\+\_\+$<$$>$}} + + +{\ttfamily \#include $<$operations.\+h$>$} + +Inheritance diagram for utl\+:\+:meta\+:\+:detail\+:\+:\+\_\+and\+\_\+$<$$>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{structutl_1_1meta_1_1detail_1_1__and___3_4} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$$>$\newline +struct utl\+::meta\+::detail\+::\+\_\+and\+\_\+$<$$>$} + + + +Definition at line 79 of file operations.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{operations_8h}{operations.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1detail_1_1__or__.tex b/doc/latex/structutl_1_1meta_1_1detail_1_1__or__.tex new file mode 100644 index 0000000..e152fbc --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1detail_1_1__or__.tex @@ -0,0 +1,21 @@ +\hypertarget{structutl_1_1meta_1_1detail_1_1__or__}{}\section{utl\+:\+:meta\+:\+:detail\+:\+:\+\_\+or\+\_\+$<$... $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1detail_1_1__or__}\index{utl\+::meta\+::detail\+::\+\_\+or\+\_\+$<$... $>$@{utl\+::meta\+::detail\+::\+\_\+or\+\_\+$<$... $>$}} + + +{\ttfamily \#include $<$operations.\+h$>$} + + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename...$>$\newline +struct utl\+::meta\+::detail\+::\+\_\+or\+\_\+$<$... $>$} + + + +Definition at line 52 of file operations.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{operations_8h}{operations.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4.eps b/doc/latex/structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4.eps new file mode 100644 index 0000000..7b8212b --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 142.857143 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 3.500000 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::meta::detail::_or_< _T1, _T2, _T3, _Tn... >) cw +(if_< _T1, _T1, _or_< _T2, _T3, _Tn... > >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::meta::detail::_or_< _T1, _T2, _T3, _Tn... >) 0.000000 0.000000 box + (if_< _T1, _T1, _or_< _T2, _T3, _Tn... > >) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4.tex b/doc/latex/structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4.tex new file mode 100644 index 0000000..a6b7d31 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4.tex @@ -0,0 +1,27 @@ +\hypertarget{structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4}{}\section{utl\+:\+:meta\+:\+:detail\+:\+:\+\_\+or\+\_\+$<$ \+\_\+\+T1, \+\_\+\+T2, \+\_\+\+T3, \+\_\+\+Tn... $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4}\index{utl\+::meta\+::detail\+::\+\_\+or\+\_\+$<$ \+\_\+\+T1, \+\_\+\+T2, \+\_\+\+T3, \+\_\+\+Tn... $>$@{utl\+::meta\+::detail\+::\+\_\+or\+\_\+$<$ \+\_\+\+T1, \+\_\+\+T2, \+\_\+\+T3, \+\_\+\+Tn... $>$}} + + +{\ttfamily \#include $<$operations.\+h$>$} + +Inheritance diagram for utl\+:\+:meta\+:\+:detail\+:\+:\+\_\+or\+\_\+$<$ \+\_\+\+T1, \+\_\+\+T2, \+\_\+\+T3, \+\_\+\+Tn... $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_00_01___t3_00_01___tn_8_8_8_01_4} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename \+\_\+\+T1, typename \+\_\+\+T2, typename \+\_\+\+T3, typename... \+\_\+\+Tn$>$\newline +struct utl\+::meta\+::detail\+::\+\_\+or\+\_\+$<$ \+\_\+\+T1, \+\_\+\+T2, \+\_\+\+T3, \+\_\+\+Tn... $>$} + + + +Definition at line 65 of file operations.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{operations_8h}{operations.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_01_4.eps b/doc/latex/structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_01_4.eps new file mode 100644 index 0000000..fac988b --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_01_4.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 192.307692 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.600000 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::meta::detail::_or_< _T1, _T2 >) cw +(if_< _T1, _T1, _T2 >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::meta::detail::_or_< _T1, _T2 >) 0.000000 0.000000 box + (if_< _T1, _T1, _T2 >) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_01_4.tex b/doc/latex/structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_01_4.tex new file mode 100644 index 0000000..9ae625a --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_01_4.tex @@ -0,0 +1,27 @@ +\hypertarget{structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_01_4}{}\section{utl\+:\+:meta\+:\+:detail\+:\+:\+\_\+or\+\_\+$<$ \+\_\+\+T1, \+\_\+\+T2 $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_01_4}\index{utl\+::meta\+::detail\+::\+\_\+or\+\_\+$<$ \+\_\+\+T1, \+\_\+\+T2 $>$@{utl\+::meta\+::detail\+::\+\_\+or\+\_\+$<$ \+\_\+\+T1, \+\_\+\+T2 $>$}} + + +{\ttfamily \#include $<$operations.\+h$>$} + +Inheritance diagram for utl\+:\+:meta\+:\+:detail\+:\+:\+\_\+or\+\_\+$<$ \+\_\+\+T1, \+\_\+\+T2 $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{structutl_1_1meta_1_1detail_1_1__or___3_01___t1_00_01___t2_01_4} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename \+\_\+\+T1, typename \+\_\+\+T2$>$\newline +struct utl\+::meta\+::detail\+::\+\_\+or\+\_\+$<$ \+\_\+\+T1, \+\_\+\+T2 $>$} + + + +Definition at line 61 of file operations.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{operations_8h}{operations.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1detail_1_1__or___3_01___t1_01_4.eps b/doc/latex/structutl_1_1meta_1_1detail_1_1__or___3_01___t1_01_4.eps new file mode 100644 index 0000000..956db23 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1detail_1_1__or___3_01___t1_01_4.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 224.719101 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.225000 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::meta::detail::_or_< _T1 >) cw +(_T1) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::meta::detail::_or_< _T1 >) 0.000000 0.000000 box + (_T1) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/structutl_1_1meta_1_1detail_1_1__or___3_01___t1_01_4.tex b/doc/latex/structutl_1_1meta_1_1detail_1_1__or___3_01___t1_01_4.tex new file mode 100644 index 0000000..5e68a6d --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1detail_1_1__or___3_01___t1_01_4.tex @@ -0,0 +1,27 @@ +\hypertarget{structutl_1_1meta_1_1detail_1_1__or___3_01___t1_01_4}{}\section{utl\+:\+:meta\+:\+:detail\+:\+:\+\_\+or\+\_\+$<$ \+\_\+\+T1 $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1detail_1_1__or___3_01___t1_01_4}\index{utl\+::meta\+::detail\+::\+\_\+or\+\_\+$<$ \+\_\+\+T1 $>$@{utl\+::meta\+::detail\+::\+\_\+or\+\_\+$<$ \+\_\+\+T1 $>$}} + + +{\ttfamily \#include $<$operations.\+h$>$} + +Inheritance diagram for utl\+:\+:meta\+:\+:detail\+:\+:\+\_\+or\+\_\+$<$ \+\_\+\+T1 $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{structutl_1_1meta_1_1detail_1_1__or___3_01___t1_01_4} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename \+\_\+\+T1$>$\newline +struct utl\+::meta\+::detail\+::\+\_\+or\+\_\+$<$ \+\_\+\+T1 $>$} + + + +Definition at line 58 of file operations.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{operations_8h}{operations.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1detail_1_1__or___3_4.eps b/doc/latex/structutl_1_1meta_1_1detail_1_1__or___3_4.eps new file mode 100644 index 0000000..324c90e --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1detail_1_1__or___3_4.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 272.108844 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.837500 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::meta::detail::_or_<>) cw +(false_) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::meta::detail::_or_<>) 0.000000 0.000000 box + (false_) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/structutl_1_1meta_1_1detail_1_1__or___3_4.tex b/doc/latex/structutl_1_1meta_1_1detail_1_1__or___3_4.tex new file mode 100644 index 0000000..a45deaf --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1detail_1_1__or___3_4.tex @@ -0,0 +1,27 @@ +\hypertarget{structutl_1_1meta_1_1detail_1_1__or___3_4}{}\section{utl\+:\+:meta\+:\+:detail\+:\+:\+\_\+or\+\_\+$<$$>$ Struct Template Reference} +\label{structutl_1_1meta_1_1detail_1_1__or___3_4}\index{utl\+::meta\+::detail\+::\+\_\+or\+\_\+$<$$>$@{utl\+::meta\+::detail\+::\+\_\+or\+\_\+$<$$>$}} + + +{\ttfamily \#include $<$operations.\+h$>$} + +Inheritance diagram for utl\+:\+:meta\+:\+:detail\+:\+:\+\_\+or\+\_\+$<$$>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{structutl_1_1meta_1_1detail_1_1__or___3_4} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$$>$\newline +struct utl\+::meta\+::detail\+::\+\_\+or\+\_\+$<$$>$} + + + +Definition at line 55 of file operations.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{operations_8h}{operations.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1detail_1_1compose__.tex b/doc/latex/structutl_1_1meta_1_1detail_1_1compose__.tex new file mode 100644 index 0000000..29d74be --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1detail_1_1compose__.tex @@ -0,0 +1,21 @@ +\hypertarget{structutl_1_1meta_1_1detail_1_1compose__}{}\section{utl\+:\+:meta\+:\+:detail\+:\+:compose\+\_\+$<$ Fns $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1detail_1_1compose__}\index{utl\+::meta\+::detail\+::compose\+\_\+$<$ Fns $>$@{utl\+::meta\+::detail\+::compose\+\_\+$<$ Fns $>$}} + + +{\ttfamily \#include $<$invoke.\+h$>$} + + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename ... Fns$>$\newline +struct utl\+::meta\+::detail\+::compose\+\_\+$<$ Fns $>$} + + + +Definition at line 275 of file invoke.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{meta_2invoke_8h}{invoke.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_00_01_fns_8_8_8_01_4.tex b/doc/latex/structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_00_01_fns_8_8_8_01_4.tex new file mode 100644 index 0000000..5d9fa09 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_00_01_fns_8_8_8_01_4.tex @@ -0,0 +1,41 @@ +\hypertarget{structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_00_01_fns_8_8_8_01_4}{}\section{utl\+:\+:meta\+:\+:detail\+:\+:compose\+\_\+$<$ Fn0, Fns... $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_00_01_fns_8_8_8_01_4}\index{utl\+::meta\+::detail\+::compose\+\_\+$<$ Fn0, Fns... $>$@{utl\+::meta\+::detail\+::compose\+\_\+$<$ Fn0, Fns... $>$}} + + +{\ttfamily \#include $<$invoke.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename ... Args$>$ }\\using \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_00_01_fns_8_8_8_01_4_ad26c783fae3d45b81dd443293886206b}{apply}} = \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}}$<$ Fn0, \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1compose__}{compose\+\_\+}}$<$ Fns... $>$, Args... $>$ $>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename Fn0, typename ... Fns$>$\newline +struct utl\+::meta\+::detail\+::compose\+\_\+$<$ Fn0, Fns... $>$} + + + +Definition at line 279 of file invoke.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_00_01_fns_8_8_8_01_4_ad26c783fae3d45b81dd443293886206b}\label{structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_00_01_fns_8_8_8_01_4_ad26c783fae3d45b81dd443293886206b}} +\index{utl\+::meta\+::detail\+::compose\+\_\+$<$ Fn0, Fns... $>$@{utl\+::meta\+::detail\+::compose\+\_\+$<$ Fn0, Fns... $>$}!apply@{apply}} +\index{apply@{apply}!utl\+::meta\+::detail\+::compose\+\_\+$<$ Fn0, Fns... $>$@{utl\+::meta\+::detail\+::compose\+\_\+$<$ Fn0, Fns... $>$}} +\subsubsection{\texorpdfstring{apply}{apply}} +{\footnotesize\ttfamily template$<$typename Fn0 , typename ... Fns$>$ \\ +template$<$typename ... Args$>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1compose__}{utl\+::meta\+::detail\+::compose\+\_\+}}$<$ Fn0, Fns... $>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_00_01_fns_8_8_8_01_4_ad26c783fae3d45b81dd443293886206b}{apply}} = \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}}$<$ Fn0, \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}}$<$\mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1compose__}{compose\+\_\+}}$<$Fns...$>$, Args...$>$ $>$} + + + +Definition at line 284 of file invoke.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{meta_2invoke_8h}{invoke.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_01_4.tex b/doc/latex/structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_01_4.tex new file mode 100644 index 0000000..7f683ad --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_01_4.tex @@ -0,0 +1,41 @@ +\hypertarget{structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_01_4}{}\section{utl\+:\+:meta\+:\+:detail\+:\+:compose\+\_\+$<$ Fn0 $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_01_4}\index{utl\+::meta\+::detail\+::compose\+\_\+$<$ Fn0 $>$@{utl\+::meta\+::detail\+::compose\+\_\+$<$ Fn0 $>$}} + + +{\ttfamily \#include $<$invoke.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename... Args$>$ }\\using \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_01_4_aafd319bda715a126343256f18b823f97}{apply}} = \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}}$<$ Fn0, Args... $>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename Fn0$>$\newline +struct utl\+::meta\+::detail\+::compose\+\_\+$<$ Fn0 $>$} + + + +Definition at line 288 of file invoke.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_01_4_aafd319bda715a126343256f18b823f97}\label{structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_01_4_aafd319bda715a126343256f18b823f97}} +\index{utl\+::meta\+::detail\+::compose\+\_\+$<$ Fn0 $>$@{utl\+::meta\+::detail\+::compose\+\_\+$<$ Fn0 $>$}!apply@{apply}} +\index{apply@{apply}!utl\+::meta\+::detail\+::compose\+\_\+$<$ Fn0 $>$@{utl\+::meta\+::detail\+::compose\+\_\+$<$ Fn0 $>$}} +\subsubsection{\texorpdfstring{apply}{apply}} +{\footnotesize\ttfamily template$<$typename Fn0 $>$ \\ +template$<$typename... Args$>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1compose__}{utl\+::meta\+::detail\+::compose\+\_\+}}$<$ Fn0 $>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1compose___3_01_fn0_01_4_aafd319bda715a126343256f18b823f97}{apply}} = \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}}$<$Fn0, Args...$>$} + + + +Definition at line 290 of file invoke.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{meta_2invoke_8h}{invoke.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1detail_1_1compose__f__.tex b/doc/latex/structutl_1_1meta_1_1detail_1_1compose__f__.tex new file mode 100644 index 0000000..3e56d4c --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1detail_1_1compose__f__.tex @@ -0,0 +1,21 @@ +\hypertarget{structutl_1_1meta_1_1detail_1_1compose__f__}{}\section{utl\+:\+:meta\+:\+:detail\+:\+:compose\+\_\+f\+\_\+$<$ Fns $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1detail_1_1compose__f__}\index{utl\+::meta\+::detail\+::compose\+\_\+f\+\_\+$<$ Fns $>$@{utl\+::meta\+::detail\+::compose\+\_\+f\+\_\+$<$ Fns $>$}} + + +{\ttfamily \#include $<$invoke.\+h$>$} + + + +\subsection{Detailed Description} +\subsubsection*{template$<$template$<$ typename... $>$ class... Fns$>$\newline +struct utl\+::meta\+::detail\+::compose\+\_\+f\+\_\+$<$ Fns $>$} + + + +Definition at line 255 of file invoke.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{meta_2invoke_8h}{invoke.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_00_01_fns_8_8_8_01_4.tex b/doc/latex/structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_00_01_fns_8_8_8_01_4.tex new file mode 100644 index 0000000..50a5af5 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_00_01_fns_8_8_8_01_4.tex @@ -0,0 +1,41 @@ +\hypertarget{structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_00_01_fns_8_8_8_01_4}{}\section{utl\+:\+:meta\+:\+:detail\+:\+:compose\+\_\+f\+\_\+$<$ Fn0, Fns... $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_00_01_fns_8_8_8_01_4}\index{utl\+::meta\+::detail\+::compose\+\_\+f\+\_\+$<$ Fn0, Fns... $>$@{utl\+::meta\+::detail\+::compose\+\_\+f\+\_\+$<$ Fn0, Fns... $>$}} + + +{\ttfamily \#include $<$invoke.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename... Args$>$ }\\using \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_00_01_fns_8_8_8_01_4_af08d514072a8e41dd5f105de46262142}{apply}} = \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1quote}{quote}}$<$ Fn0 $>$, \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1compose__f__}{compose\+\_\+f\+\_\+}}$<$ Fns... $>$, Args... $>$ $>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$template$<$ typename... $>$ class Fn0, template$<$ typename... $>$ class... Fns$>$\newline +struct utl\+::meta\+::detail\+::compose\+\_\+f\+\_\+$<$ Fn0, Fns... $>$} + + + +Definition at line 260 of file invoke.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_00_01_fns_8_8_8_01_4_af08d514072a8e41dd5f105de46262142}\label{structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_00_01_fns_8_8_8_01_4_af08d514072a8e41dd5f105de46262142}} +\index{utl\+::meta\+::detail\+::compose\+\_\+f\+\_\+$<$ Fn0, Fns... $>$@{utl\+::meta\+::detail\+::compose\+\_\+f\+\_\+$<$ Fn0, Fns... $>$}!apply@{apply}} +\index{apply@{apply}!utl\+::meta\+::detail\+::compose\+\_\+f\+\_\+$<$ Fn0, Fns... $>$@{utl\+::meta\+::detail\+::compose\+\_\+f\+\_\+$<$ Fn0, Fns... $>$}} +\subsubsection{\texorpdfstring{apply}{apply}} +{\footnotesize\ttfamily template$<$template$<$ typename... $>$ class Fn0, template$<$ typename... $>$ class... Fns$>$ \\ +template$<$typename... Args$>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1compose__f__}{utl\+::meta\+::detail\+::compose\+\_\+f\+\_\+}}$<$ Fn0, Fns... $>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_00_01_fns_8_8_8_01_4_af08d514072a8e41dd5f105de46262142}{apply}} = \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1quote}{quote}}$<$Fn0$>$, \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}}$<$\mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1compose__f__}{compose\+\_\+f\+\_\+}}$<$Fns...$>$, Args...$>$ $>$} + + + +Definition at line 265 of file invoke.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{meta_2invoke_8h}{invoke.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_01_4.tex b/doc/latex/structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_01_4.tex new file mode 100644 index 0000000..2f581b6 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_01_4.tex @@ -0,0 +1,41 @@ +\hypertarget{structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_01_4}{}\section{utl\+:\+:meta\+:\+:detail\+:\+:compose\+\_\+f\+\_\+$<$ Fn0 $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_01_4}\index{utl\+::meta\+::detail\+::compose\+\_\+f\+\_\+$<$ Fn0 $>$@{utl\+::meta\+::detail\+::compose\+\_\+f\+\_\+$<$ Fn0 $>$}} + + +{\ttfamily \#include $<$invoke.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename ... Args$>$ }\\using \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_01_4_a287c03e3a63511803b68d39c4c06927b}{apply}} = \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1quote}{quote}}$<$ Fn0 $>$, Args... $>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$template$<$ typename... $>$ class Fn0$>$\newline +struct utl\+::meta\+::detail\+::compose\+\_\+f\+\_\+$<$ Fn0 $>$} + + + +Definition at line 269 of file invoke.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_01_4_a287c03e3a63511803b68d39c4c06927b}\label{structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_01_4_a287c03e3a63511803b68d39c4c06927b}} +\index{utl\+::meta\+::detail\+::compose\+\_\+f\+\_\+$<$ Fn0 $>$@{utl\+::meta\+::detail\+::compose\+\_\+f\+\_\+$<$ Fn0 $>$}!apply@{apply}} +\index{apply@{apply}!utl\+::meta\+::detail\+::compose\+\_\+f\+\_\+$<$ Fn0 $>$@{utl\+::meta\+::detail\+::compose\+\_\+f\+\_\+$<$ Fn0 $>$}} +\subsubsection{\texorpdfstring{apply}{apply}} +{\footnotesize\ttfamily template$<$template$<$ typename... $>$ class Fn0$>$ \\ +template$<$typename ... Args$>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1compose__f__}{utl\+::meta\+::detail\+::compose\+\_\+f\+\_\+}}$<$ Fn0 $>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1compose__f___3_01_fn0_01_4_a287c03e3a63511803b68d39c4c06927b}{apply}} = \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}}$<$\mbox{\hyperlink{structutl_1_1meta_1_1quote}{quote}}$<$Fn0$>$, Args...$>$} + + + +Definition at line 271 of file invoke.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{meta_2invoke_8h}{invoke.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1detail_1_1defer__.tex b/doc/latex/structutl_1_1meta_1_1detail_1_1defer__.tex new file mode 100644 index 0000000..f71e482 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1detail_1_1defer__.tex @@ -0,0 +1,43 @@ +\hypertarget{structutl_1_1meta_1_1detail_1_1defer__}{}\section{utl\+:\+:meta\+:\+:detail\+:\+:defer\+\_\+$<$ F, Ts $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1detail_1_1defer__}\index{utl\+::meta\+::detail\+::defer\+\_\+$<$ F, Ts $>$@{utl\+::meta\+::detail\+::defer\+\_\+$<$ F, Ts $>$}} + + +{\ttfamily \#include $<$invoke.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1defer___ac8e2ede36472a15488ffdb49a6935be2}{type}} = F$<$ Ts... $>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$template$<$ typename... $>$ class F, typename... Ts$>$\newline +struct utl\+::meta\+::detail\+::defer\+\_\+$<$ F, Ts $>$} + + + +Definition at line 183 of file invoke.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1detail_1_1defer___ac8e2ede36472a15488ffdb49a6935be2}\label{structutl_1_1meta_1_1detail_1_1defer___ac8e2ede36472a15488ffdb49a6935be2}} +\index{utl\+::meta\+::detail\+::defer\+\_\+@{utl\+::meta\+::detail\+::defer\+\_\+}!type@{type}} +\index{type@{type}!utl\+::meta\+::detail\+::defer\+\_\+@{utl\+::meta\+::detail\+::defer\+\_\+}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$template$<$ typename... $>$ class F, typename... Ts$>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1defer__}{utl\+::meta\+::detail\+::defer\+\_\+}}$<$ F, Ts $>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1defer___ac8e2ede36472a15488ffdb49a6935be2}{type}} = F$<$Ts...$>$} + +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/invoke.\+h}}.\end{Desc} + + +Definition at line 184 of file invoke.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{meta_2invoke_8h}{invoke.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1detail_1_1defer__i__.tex b/doc/latex/structutl_1_1meta_1_1detail_1_1defer__i__.tex new file mode 100644 index 0000000..8486a63 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1detail_1_1defer__i__.tex @@ -0,0 +1,43 @@ +\hypertarget{structutl_1_1meta_1_1detail_1_1defer__i__}{}\section{utl\+:\+:meta\+:\+:detail\+:\+:defer\+\_\+i\+\_\+$<$ T, F, Is $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1detail_1_1defer__i__}\index{utl\+::meta\+::detail\+::defer\+\_\+i\+\_\+$<$ T, F, Is $>$@{utl\+::meta\+::detail\+::defer\+\_\+i\+\_\+$<$ T, F, Is $>$}} + + +{\ttfamily \#include $<$invoke.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1defer__i___af8659048a08bb48bae5c0dc3f9595bf7}{type}} = F$<$ Is... $>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T, template$<$ T... $>$ class F, T... Is$>$\newline +struct utl\+::meta\+::detail\+::defer\+\_\+i\+\_\+$<$ T, F, Is $>$} + + + +Definition at line 188 of file invoke.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1detail_1_1defer__i___af8659048a08bb48bae5c0dc3f9595bf7}\label{structutl_1_1meta_1_1detail_1_1defer__i___af8659048a08bb48bae5c0dc3f9595bf7}} +\index{utl\+::meta\+::detail\+::defer\+\_\+i\+\_\+@{utl\+::meta\+::detail\+::defer\+\_\+i\+\_\+}!type@{type}} +\index{type@{type}!utl\+::meta\+::detail\+::defer\+\_\+i\+\_\+@{utl\+::meta\+::detail\+::defer\+\_\+i\+\_\+}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename T , template$<$ T... $>$ class F, T... Is$>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1defer__i__}{utl\+::meta\+::detail\+::defer\+\_\+i\+\_\+}}$<$ T, F, Is $>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1defer__i___af8659048a08bb48bae5c0dc3f9595bf7}{type}} = F$<$Is...$>$} + +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/invoke.\+h}}.\end{Desc} + + +Definition at line 189 of file invoke.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{meta_2invoke_8h}{invoke.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1detail_1_1detector.tex b/doc/latex/structutl_1_1meta_1_1detail_1_1detector.tex new file mode 100644 index 0000000..66190b9 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1detail_1_1detector.tex @@ -0,0 +1,53 @@ +\hypertarget{structutl_1_1meta_1_1detail_1_1detector}{}\section{utl\+:\+:meta\+:\+:detail\+:\+:detector$<$ Default, Always\+Void, Op, Args $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1detail_1_1detector}\index{utl\+::meta\+::detail\+::detector$<$ Default, Always\+Void, Op, Args $>$@{utl\+::meta\+::detail\+::detector$<$ Default, Always\+Void, Op, Args $>$}} + + +{\ttfamily \#include $<$detection.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1detector_a8090990f11c250f679b44a6fd48f8114}{detected}} = \mbox{\hyperlink{namespaceutl_1_1meta_a55511dbaa0adb605ce22dcec11f8d22d}{false\+\_\+}} +\item +using \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1detector_a747c70e71225be5ecaa6d20edce5512b}{type}} = Default +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename Default, typename Always\+Void, template$<$ typename... $>$ class Op, typename... Args$>$\newline +struct utl\+::meta\+::detail\+::detector$<$ Default, Always\+Void, Op, Args $>$} + + + +Definition at line 76 of file detection.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1detail_1_1detector_a8090990f11c250f679b44a6fd48f8114}\label{structutl_1_1meta_1_1detail_1_1detector_a8090990f11c250f679b44a6fd48f8114}} +\index{utl\+::meta\+::detail\+::detector@{utl\+::meta\+::detail\+::detector}!detected@{detected}} +\index{detected@{detected}!utl\+::meta\+::detail\+::detector@{utl\+::meta\+::detail\+::detector}} +\subsubsection{\texorpdfstring{detected}{detected}} +{\footnotesize\ttfamily template$<$typename Default , typename Always\+Void , template$<$ typename... $>$ class Op, typename... Args$>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1detector}{utl\+::meta\+::detail\+::detector}}$<$ Default, Always\+Void, Op, Args $>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1detector_a8090990f11c250f679b44a6fd48f8114}{detected}} = \mbox{\hyperlink{namespaceutl_1_1meta_a55511dbaa0adb605ce22dcec11f8d22d}{false\+\_\+}}} + + + +Definition at line 77 of file detection.\+h. + +\mbox{\Hypertarget{structutl_1_1meta_1_1detail_1_1detector_a747c70e71225be5ecaa6d20edce5512b}\label{structutl_1_1meta_1_1detail_1_1detector_a747c70e71225be5ecaa6d20edce5512b}} +\index{utl\+::meta\+::detail\+::detector@{utl\+::meta\+::detail\+::detector}!type@{type}} +\index{type@{type}!utl\+::meta\+::detail\+::detector@{utl\+::meta\+::detail\+::detector}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename Default , typename Always\+Void , template$<$ typename... $>$ class Op, typename... Args$>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1detector}{utl\+::meta\+::detail\+::detector}}$<$ Default, Always\+Void, Op, Args $>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1detector_a747c70e71225be5ecaa6d20edce5512b}{type}} = Default} + + + +Definition at line 78 of file detection.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{detection_8h}{detection.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1detail_1_1detector_3_01_default_00_01void__t_3_01_op_3_01_args_8_8_8_01_4_0c35bdbd19f56980c0b5ee6d490bfb634.tex b/doc/latex/structutl_1_1meta_1_1detail_1_1detector_3_01_default_00_01void__t_3_01_op_3_01_args_8_8_8_01_4_0c35bdbd19f56980c0b5ee6d490bfb634.tex new file mode 100644 index 0000000..53ce030 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1detail_1_1detector_3_01_default_00_01void__t_3_01_op_3_01_args_8_8_8_01_4_0c35bdbd19f56980c0b5ee6d490bfb634.tex @@ -0,0 +1,53 @@ +\hypertarget{structutl_1_1meta_1_1detail_1_1detector_3_01_default_00_01void__t_3_01_op_3_01_args_8_8_8_01_4_0c35bdbd19f56980c0b5ee6d490bfb634}{}\section{utl\+:\+:meta\+:\+:detail\+:\+:detector$<$ Default, void\+\_\+t$<$ Op$<$ Args... $>$ $>$, Op, Args... $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1detail_1_1detector_3_01_default_00_01void__t_3_01_op_3_01_args_8_8_8_01_4_0c35bdbd19f56980c0b5ee6d490bfb634}\index{utl\+::meta\+::detail\+::detector$<$ Default, void\+\_\+t$<$ Op$<$ Args... $>$ $>$, Op, Args... $>$@{utl\+::meta\+::detail\+::detector$<$ Default, void\+\_\+t$<$ Op$<$ Args... $>$ $>$, Op, Args... $>$}} + + +{\ttfamily \#include $<$detection.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1detector_3_01_default_00_01void__t_3_01_op_3_01_args_8_8_8_01_4_0c35bdbd19f56980c0b5ee6d490bfb634_ac8aebc89aa52ef6bde346c593a8feb74}{detected}} = \mbox{\hyperlink{namespaceutl_1_1meta_ae9a5a8fbe8202785f059935af219fb97}{true\+\_\+}} +\item +using \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1detector_3_01_default_00_01void__t_3_01_op_3_01_args_8_8_8_01_4_0c35bdbd19f56980c0b5ee6d490bfb634_af9cba657766ddb15348043a15c5bc234}{type}} = Op$<$ Args... $>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename Default, template$<$ typename... $>$ class Op, typename... Args$>$\newline +struct utl\+::meta\+::detail\+::detector$<$ Default, void\+\_\+t$<$ Op$<$ Args... $>$ $>$, Op, Args... $>$} + + + +Definition at line 83 of file detection.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1detail_1_1detector_3_01_default_00_01void__t_3_01_op_3_01_args_8_8_8_01_4_0c35bdbd19f56980c0b5ee6d490bfb634_ac8aebc89aa52ef6bde346c593a8feb74}\label{structutl_1_1meta_1_1detail_1_1detector_3_01_default_00_01void__t_3_01_op_3_01_args_8_8_8_01_4_0c35bdbd19f56980c0b5ee6d490bfb634_ac8aebc89aa52ef6bde346c593a8feb74}} +\index{utl\+::meta\+::detail\+::detector$<$ Default, void\+\_\+t$<$ Op$<$ Args... $>$ $>$, Op, Args... $>$@{utl\+::meta\+::detail\+::detector$<$ Default, void\+\_\+t$<$ Op$<$ Args... $>$ $>$, Op, Args... $>$}!detected@{detected}} +\index{detected@{detected}!utl\+::meta\+::detail\+::detector$<$ Default, void\+\_\+t$<$ Op$<$ Args... $>$ $>$, Op, Args... $>$@{utl\+::meta\+::detail\+::detector$<$ Default, void\+\_\+t$<$ Op$<$ Args... $>$ $>$, Op, Args... $>$}} +\subsubsection{\texorpdfstring{detected}{detected}} +{\footnotesize\ttfamily template$<$typename Default , template$<$ typename... $>$ class Op, typename... Args$>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1detector}{utl\+::meta\+::detail\+::detector}}$<$ Default, \mbox{\hyperlink{group__detection_gae7373c997420d16cf37e542eb3cfa3ad}{void\+\_\+t}}$<$ Op$<$ Args... $>$ $>$, Op, Args... $>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1detector_3_01_default_00_01void__t_3_01_op_3_01_args_8_8_8_01_4_0c35bdbd19f56980c0b5ee6d490bfb634_ac8aebc89aa52ef6bde346c593a8feb74}{detected}} = \mbox{\hyperlink{namespaceutl_1_1meta_ae9a5a8fbe8202785f059935af219fb97}{true\+\_\+}}} + + + +Definition at line 84 of file detection.\+h. + +\mbox{\Hypertarget{structutl_1_1meta_1_1detail_1_1detector_3_01_default_00_01void__t_3_01_op_3_01_args_8_8_8_01_4_0c35bdbd19f56980c0b5ee6d490bfb634_af9cba657766ddb15348043a15c5bc234}\label{structutl_1_1meta_1_1detail_1_1detector_3_01_default_00_01void__t_3_01_op_3_01_args_8_8_8_01_4_0c35bdbd19f56980c0b5ee6d490bfb634_af9cba657766ddb15348043a15c5bc234}} +\index{utl\+::meta\+::detail\+::detector$<$ Default, void\+\_\+t$<$ Op$<$ Args... $>$ $>$, Op, Args... $>$@{utl\+::meta\+::detail\+::detector$<$ Default, void\+\_\+t$<$ Op$<$ Args... $>$ $>$, Op, Args... $>$}!type@{type}} +\index{type@{type}!utl\+::meta\+::detail\+::detector$<$ Default, void\+\_\+t$<$ Op$<$ Args... $>$ $>$, Op, Args... $>$@{utl\+::meta\+::detail\+::detector$<$ Default, void\+\_\+t$<$ Op$<$ Args... $>$ $>$, Op, Args... $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename Default , template$<$ typename... $>$ class Op, typename... Args$>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1detector}{utl\+::meta\+::detail\+::detector}}$<$ Default, \mbox{\hyperlink{group__detection_gae7373c997420d16cf37e542eb3cfa3ad}{void\+\_\+t}}$<$ Op$<$ Args... $>$ $>$, Op, Args... $>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1detector_3_01_default_00_01void__t_3_01_op_3_01_args_8_8_8_01_4_0c35bdbd19f56980c0b5ee6d490bfb634_af9cba657766ddb15348043a15c5bc234}{type}} = Op$<$Args...$>$} + + + +Definition at line 85 of file detection.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{detection_8h}{detection.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1detail_1_1if__c__.tex b/doc/latex/structutl_1_1meta_1_1detail_1_1if__c__.tex new file mode 100644 index 0000000..96bc75a --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1detail_1_1if__c__.tex @@ -0,0 +1,26 @@ +\hypertarget{structutl_1_1meta_1_1detail_1_1if__c__}{}\section{utl\+:\+:meta\+:\+:detail\+:\+:if\+\_\+c\+\_\+$<$ If,... $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1detail_1_1if__c__}\index{utl\+::meta\+::detail\+::if\+\_\+c\+\_\+$<$ If,... $>$@{utl\+::meta\+::detail\+::if\+\_\+c\+\_\+$<$ If,... $>$}} + + +{\ttfamily \#include $<$selection.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{group__type_gaefeff9de7bff8811e49692343ce6187e}{type}} = \mbox{\hyperlink{structutl_1_1meta_1_1nil__}{nil\+\_\+}} +\begin{DoxyCompactList}\small\item\em avoid ill formed result \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$bool If, typename...$>$\newline +struct utl\+::meta\+::detail\+::if\+\_\+c\+\_\+$<$ If,... $>$} + + + +Definition at line 44 of file selection.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{selection_8h}{selection.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1detail_1_1if__c___3_01false_00_01_then_00_01_else_01_4.tex b/doc/latex/structutl_1_1meta_1_1detail_1_1if__c___3_01false_00_01_then_00_01_else_01_4.tex new file mode 100644 index 0000000..d6fd1a7 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1detail_1_1if__c___3_01false_00_01_then_00_01_else_01_4.tex @@ -0,0 +1,26 @@ +\hypertarget{structutl_1_1meta_1_1detail_1_1if__c___3_01false_00_01_then_00_01_else_01_4}{}\section{utl\+:\+:meta\+:\+:detail\+:\+:if\+\_\+c\+\_\+$<$ false, Then, Else $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1detail_1_1if__c___3_01false_00_01_then_00_01_else_01_4}\index{utl\+::meta\+::detail\+::if\+\_\+c\+\_\+$<$ false, Then, Else $>$@{utl\+::meta\+::detail\+::if\+\_\+c\+\_\+$<$ false, Then, Else $>$}} + + +{\ttfamily \#include $<$selection.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{group__type_ga2fbed149992c081ac85eefaf63a388ca}{type}} = Else +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename Then, typename Else$>$\newline +struct utl\+::meta\+::detail\+::if\+\_\+c\+\_\+$<$ false, Then, Else $>$} + + + +Definition at line 56 of file selection.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{selection_8h}{selection.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_00_01_else_01_4.tex b/doc/latex/structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_00_01_else_01_4.tex new file mode 100644 index 0000000..50b00c4 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_00_01_else_01_4.tex @@ -0,0 +1,26 @@ +\hypertarget{structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_00_01_else_01_4}{}\section{utl\+:\+:meta\+:\+:detail\+:\+:if\+\_\+c\+\_\+$<$ true, Then, Else $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_00_01_else_01_4}\index{utl\+::meta\+::detail\+::if\+\_\+c\+\_\+$<$ true, Then, Else $>$@{utl\+::meta\+::detail\+::if\+\_\+c\+\_\+$<$ true, Then, Else $>$}} + + +{\ttfamily \#include $<$selection.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{group__type_ga15100ac40785819517c5defacb19915c}{type}} = Then +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename Then, typename Else$>$\newline +struct utl\+::meta\+::detail\+::if\+\_\+c\+\_\+$<$ true, Then, Else $>$} + + + +Definition at line 52 of file selection.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{selection_8h}{selection.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_01_4.tex b/doc/latex/structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_01_4.tex new file mode 100644 index 0000000..13e790c --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_01_4.tex @@ -0,0 +1,26 @@ +\hypertarget{structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_01_4}{}\section{utl\+:\+:meta\+:\+:detail\+:\+:if\+\_\+c\+\_\+$<$ true, Then $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1detail_1_1if__c___3_01true_00_01_then_01_4}\index{utl\+::meta\+::detail\+::if\+\_\+c\+\_\+$<$ true, Then $>$@{utl\+::meta\+::detail\+::if\+\_\+c\+\_\+$<$ true, Then $>$}} + + +{\ttfamily \#include $<$selection.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{group__type_gaa7f24607990e92d8263246fc5f7003b7}{type}} = Then +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename Then$>$\newline +struct utl\+::meta\+::detail\+::if\+\_\+c\+\_\+$<$ true, Then $>$} + + + +Definition at line 48 of file selection.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{selection_8h}{selection.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1detail_1_1is__applicable__.tex b/doc/latex/structutl_1_1meta_1_1detail_1_1is__applicable__.tex new file mode 100644 index 0000000..73cb5aa --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1detail_1_1is__applicable__.tex @@ -0,0 +1,72 @@ +\hypertarget{structutl_1_1meta_1_1detail_1_1is__applicable__}{}\section{utl\+:\+:meta\+:\+:detail\+:\+:is\+\_\+applicable\+\_\+$<$ F, T $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1detail_1_1is__applicable__}\index{utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+$<$ F, T $>$@{utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+$<$ F, T $>$}} + + +{\ttfamily \#include $<$invoke.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable___ababc9a374e6321fb8ded4b2dde19795c}{type}} = decltype(\mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable___abdbf481cbdd5183b42e3cabdb77d282a}{check}}$<$ F $>$(0)) +\end{DoxyCompactItemize} +\subsection*{Static Public Member Functions} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$template$<$ typename... $>$ class G, typename = G$<$\+T...$>$$>$ }\\static \mbox{\hyperlink{namespaceutl_1_1meta_ae9a5a8fbe8202785f059935af219fb97}{true\+\_\+}} \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable___abdbf481cbdd5183b42e3cabdb77d282a}{check}} (int) +\item +{\footnotesize template$<$template$<$ typename... $>$ class$>$ }\\static \mbox{\hyperlink{namespaceutl_1_1meta_a55511dbaa0adb605ce22dcec11f8d22d}{false\+\_\+}} \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable___a5095a52a4bdbf224a73c575e402ac797}{check}} (...) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$template$<$ typename... $>$ class F, typename... T$>$\newline +struct utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+$<$ F, T $>$} + + + +Definition at line 119 of file invoke.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1detail_1_1is__applicable___ababc9a374e6321fb8ded4b2dde19795c}\label{structutl_1_1meta_1_1detail_1_1is__applicable___ababc9a374e6321fb8ded4b2dde19795c}} +\index{utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+@{utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+}!type@{type}} +\index{type@{type}!utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+@{utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$template$<$ typename... $>$ class F, typename... T$>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__}{utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+}}$<$ F, T $>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable___ababc9a374e6321fb8ded4b2dde19795c}{type}} = decltype(\mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable___abdbf481cbdd5183b42e3cabdb77d282a}{check}}$<$F$>$(0))} + +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/invoke.\+h}}.\end{Desc} + + +Definition at line 125 of file invoke.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1detail_1_1is__applicable___abdbf481cbdd5183b42e3cabdb77d282a}\label{structutl_1_1meta_1_1detail_1_1is__applicable___abdbf481cbdd5183b42e3cabdb77d282a}} +\index{utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+@{utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+}!check@{check}} +\index{check@{check}!utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+@{utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+}} +\subsubsection{\texorpdfstring{check()}{check()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$template$<$ typename... $>$ class F, typename... T$>$ \\ +template$<$template$<$ typename... $>$ class G, typename = G$<$\+T...$>$$>$ \\ +static \mbox{\hyperlink{namespaceutl_1_1meta_ae9a5a8fbe8202785f059935af219fb97}{true\+\_\+}} \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__}{utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+}}$<$ F, T $>$\+::check (\begin{DoxyParamCaption}\item[{int}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} + +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/invoke.\+h}}.\end{Desc} +\mbox{\Hypertarget{structutl_1_1meta_1_1detail_1_1is__applicable___a5095a52a4bdbf224a73c575e402ac797}\label{structutl_1_1meta_1_1detail_1_1is__applicable___a5095a52a4bdbf224a73c575e402ac797}} +\index{utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+@{utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+}!check@{check}} +\index{check@{check}!utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+@{utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+}} +\subsubsection{\texorpdfstring{check()}{check()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$template$<$ typename... $>$ class F, typename... T$>$ \\ +template$<$template$<$ typename... $>$ class$>$ \\ +static \mbox{\hyperlink{namespaceutl_1_1meta_a55511dbaa0adb605ce22dcec11f8d22d}{false\+\_\+}} \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__}{utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+}}$<$ F, T $>$\+::check (\begin{DoxyParamCaption}\item[{}]{... }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{meta_2invoke_8h}{invoke.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1detail_1_1is__applicable__i__.tex b/doc/latex/structutl_1_1meta_1_1detail_1_1is__applicable__i__.tex new file mode 100644 index 0000000..c41fdb4 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1detail_1_1is__applicable__i__.tex @@ -0,0 +1,72 @@ +\hypertarget{structutl_1_1meta_1_1detail_1_1is__applicable__i__}{}\section{utl\+:\+:meta\+:\+:detail\+:\+:is\+\_\+applicable\+\_\+i\+\_\+$<$ T, F, Is $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1detail_1_1is__applicable__i__}\index{utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+i\+\_\+$<$ T, F, Is $>$@{utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+i\+\_\+$<$ T, F, Is $>$}} + + +{\ttfamily \#include $<$invoke.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__i___ac512fdc9db578f9244b861f84c177ca7}{type}} = decltype(\mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__i___ac03023fb86dba10d9dfbd0ba553daccd}{check}}$<$ T, F $>$(0)) +\end{DoxyCompactItemize} +\subsection*{Static Public Member Functions} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename TT , template$<$ T\+T... $>$ class G, typename = G$<$\+Is...$>$$>$ }\\static \mbox{\hyperlink{namespaceutl_1_1meta_ae9a5a8fbe8202785f059935af219fb97}{true\+\_\+}} \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__i___ac03023fb86dba10d9dfbd0ba553daccd}{check}} (int) +\item +{\footnotesize template$<$typename TT , template$<$ T\+T... $>$ class G$>$ }\\static \mbox{\hyperlink{namespaceutl_1_1meta_a55511dbaa0adb605ce22dcec11f8d22d}{false\+\_\+}} \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__i___a680891ad1380504fa6917cb5f0040db5}{check}} (...) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T, template$<$ T... $>$ class F, T... Is$>$\newline +struct utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+i\+\_\+$<$ T, F, Is $>$} + + + +Definition at line 149 of file invoke.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1detail_1_1is__applicable__i___ac512fdc9db578f9244b861f84c177ca7}\label{structutl_1_1meta_1_1detail_1_1is__applicable__i___ac512fdc9db578f9244b861f84c177ca7}} +\index{utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+i\+\_\+@{utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+i\+\_\+}!type@{type}} +\index{type@{type}!utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+i\+\_\+@{utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+i\+\_\+}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename T , template$<$ T... $>$ class F, T... Is$>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__i__}{utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+i\+\_\+}}$<$ T, F, Is $>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__i___ac512fdc9db578f9244b861f84c177ca7}{type}} = decltype(\mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__i___ac03023fb86dba10d9dfbd0ba553daccd}{check}}$<$T, F$>$(0))} + +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/invoke.\+h}}.\end{Desc} + + +Definition at line 155 of file invoke.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1detail_1_1is__applicable__i___ac03023fb86dba10d9dfbd0ba553daccd}\label{structutl_1_1meta_1_1detail_1_1is__applicable__i___ac03023fb86dba10d9dfbd0ba553daccd}} +\index{utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+i\+\_\+@{utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+i\+\_\+}!check@{check}} +\index{check@{check}!utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+i\+\_\+@{utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+i\+\_\+}} +\subsubsection{\texorpdfstring{check()}{check()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename T , template$<$ T... $>$ class F, T... Is$>$ \\ +template$<$typename TT , template$<$ T\+T... $>$ class G, typename = G$<$\+Is...$>$$>$ \\ +static \mbox{\hyperlink{namespaceutl_1_1meta_ae9a5a8fbe8202785f059935af219fb97}{true\+\_\+}} \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__i__}{utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+i\+\_\+}}$<$ T, F, Is $>$\+::check (\begin{DoxyParamCaption}\item[{int}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} + +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/invoke.\+h}}.\end{Desc} +\mbox{\Hypertarget{structutl_1_1meta_1_1detail_1_1is__applicable__i___a680891ad1380504fa6917cb5f0040db5}\label{structutl_1_1meta_1_1detail_1_1is__applicable__i___a680891ad1380504fa6917cb5f0040db5}} +\index{utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+i\+\_\+@{utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+i\+\_\+}!check@{check}} +\index{check@{check}!utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+i\+\_\+@{utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+i\+\_\+}} +\subsubsection{\texorpdfstring{check()}{check()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename T , template$<$ T... $>$ class F, T... Is$>$ \\ +template$<$typename TT , template$<$ T\+T... $>$ class G$>$ \\ +static \mbox{\hyperlink{namespaceutl_1_1meta_a55511dbaa0adb605ce22dcec11f8d22d}{false\+\_\+}} \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__i__}{utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+i\+\_\+}}$<$ T, F, Is $>$\+::check (\begin{DoxyParamCaption}\item[{}]{... }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{meta_2invoke_8h}{invoke.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1detail_1_1is__applicable__q__.tex b/doc/latex/structutl_1_1meta_1_1detail_1_1is__applicable__q__.tex new file mode 100644 index 0000000..7306d8f --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1detail_1_1is__applicable__q__.tex @@ -0,0 +1,72 @@ +\hypertarget{structutl_1_1meta_1_1detail_1_1is__applicable__q__}{}\section{utl\+:\+:meta\+:\+:detail\+:\+:is\+\_\+applicable\+\_\+q\+\_\+$<$ F, T $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1detail_1_1is__applicable__q__}\index{utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+q\+\_\+$<$ F, T $>$@{utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+q\+\_\+$<$ F, T $>$}} + + +{\ttfamily \#include $<$invoke.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__q___a175161a76c46c8da1d170e329d17ce43}{type}} = \mbox{\hyperlink{group__type_ga39cc4e727a8faa5ea176f543e62c05c0}{if\+\_\+}}$<$ \mbox{\hyperlink{group__integral_ga4dfaf054d891eb35d741662b077bbbd2}{not\+\_\+same\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1nil__}{nil\+\_\+}}, decltype(\mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__q___a6d258d626fb7889506d8d0c9c6ab14b1}{check}}$<$ F $>$(0)) $>$, \mbox{\hyperlink{namespaceutl_1_1meta_ae9a5a8fbe8202785f059935af219fb97}{true\+\_\+}}, \mbox{\hyperlink{namespaceutl_1_1meta_a55511dbaa0adb605ce22dcec11f8d22d}{false\+\_\+}} $>$ +\end{DoxyCompactItemize} +\subsection*{Static Public Member Functions} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename G , typename Ret = invoke\+\_\+t$<$\+G, T...$>$$>$ }\\static Ret \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__q___a6d258d626fb7889506d8d0c9c6ab14b1}{check}} (int) +\item +{\footnotesize template$<$typename... $>$ }\\static \mbox{\hyperlink{structutl_1_1meta_1_1nil__}{nil\+\_\+}} \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__q___ac96d763225bd114b68b208211818d788}{check}} (...) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename F, typename... T$>$\newline +struct utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+q\+\_\+$<$ F, T $>$} + + + +Definition at line 129 of file invoke.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1detail_1_1is__applicable__q___a175161a76c46c8da1d170e329d17ce43}\label{structutl_1_1meta_1_1detail_1_1is__applicable__q___a175161a76c46c8da1d170e329d17ce43}} +\index{utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+q\+\_\+@{utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+q\+\_\+}!type@{type}} +\index{type@{type}!utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+q\+\_\+@{utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+q\+\_\+}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename F , typename... T$>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__q__}{utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+q\+\_\+}}$<$ F, T $>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__q___a175161a76c46c8da1d170e329d17ce43}{type}} = \mbox{\hyperlink{group__type_ga39cc4e727a8faa5ea176f543e62c05c0}{if\+\_\+}} $<$ \mbox{\hyperlink{group__integral_ga4dfaf054d891eb35d741662b077bbbd2}{not\+\_\+same\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1nil__}{nil\+\_\+}}, decltype(\mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__q___a6d258d626fb7889506d8d0c9c6ab14b1}{check}}$<$F$>$(0)) $>$, \mbox{\hyperlink{namespaceutl_1_1meta_ae9a5a8fbe8202785f059935af219fb97}{true\+\_\+}}, \mbox{\hyperlink{namespaceutl_1_1meta_a55511dbaa0adb605ce22dcec11f8d22d}{false\+\_\+}} $>$} + +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/invoke.\+h}}.\end{Desc} + + +Definition at line 140 of file invoke.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1detail_1_1is__applicable__q___a6d258d626fb7889506d8d0c9c6ab14b1}\label{structutl_1_1meta_1_1detail_1_1is__applicable__q___a6d258d626fb7889506d8d0c9c6ab14b1}} +\index{utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+q\+\_\+@{utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+q\+\_\+}!check@{check}} +\index{check@{check}!utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+q\+\_\+@{utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+q\+\_\+}} +\subsubsection{\texorpdfstring{check()}{check()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily template$<$typename F , typename... T$>$ \\ +template$<$typename G , typename Ret = invoke\+\_\+t$<$\+G, T...$>$$>$ \\ +static Ret \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__q__}{utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+q\+\_\+}}$<$ F, T $>$\+::check (\begin{DoxyParamCaption}\item[{int}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} + +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/invoke.\+h}}.\end{Desc} +\mbox{\Hypertarget{structutl_1_1meta_1_1detail_1_1is__applicable__q___ac96d763225bd114b68b208211818d788}\label{structutl_1_1meta_1_1detail_1_1is__applicable__q___ac96d763225bd114b68b208211818d788}} +\index{utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+q\+\_\+@{utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+q\+\_\+}!check@{check}} +\index{check@{check}!utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+q\+\_\+@{utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+q\+\_\+}} +\subsubsection{\texorpdfstring{check()}{check()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily template$<$typename F , typename... T$>$ \\ +template$<$typename... $>$ \\ +static \mbox{\hyperlink{structutl_1_1meta_1_1nil__}{nil\+\_\+}} \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1is__applicable__q__}{utl\+::meta\+::detail\+::is\+\_\+applicable\+\_\+q\+\_\+}}$<$ F, T $>$\+::check (\begin{DoxyParamCaption}\item[{}]{... }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{meta_2invoke_8h}{invoke.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1detail_1_1when__.tex b/doc/latex/structutl_1_1meta_1_1detail_1_1when__.tex new file mode 100644 index 0000000..850706f --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1detail_1_1when__.tex @@ -0,0 +1,21 @@ +\hypertarget{structutl_1_1meta_1_1detail_1_1when__}{}\section{utl\+:\+:meta\+:\+:detail\+:\+:when\+\_\+$<$ If $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1detail_1_1when__}\index{utl\+::meta\+::detail\+::when\+\_\+$<$ If $>$@{utl\+::meta\+::detail\+::when\+\_\+$<$ If $>$}} + + +{\ttfamily \#include $<$sfinae.\+h$>$} + + + +\subsection{Detailed Description} +\subsubsection*{template$<$bool If$>$\newline +struct utl\+::meta\+::detail\+::when\+\_\+$<$ If $>$} + + + +Definition at line 41 of file sfinae.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{sfinae_8h}{sfinae.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1detail_1_1when___3_01true_01_4.tex b/doc/latex/structutl_1_1meta_1_1detail_1_1when___3_01true_01_4.tex new file mode 100644 index 0000000..7f201f9 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1detail_1_1when___3_01true_01_4.tex @@ -0,0 +1,39 @@ +\hypertarget{structutl_1_1meta_1_1detail_1_1when___3_01true_01_4}{}\section{utl\+:\+:meta\+:\+:detail\+:\+:when\+\_\+$<$ true $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1detail_1_1when___3_01true_01_4}\index{utl\+::meta\+::detail\+::when\+\_\+$<$ true $>$@{utl\+::meta\+::detail\+::when\+\_\+$<$ true $>$}} + + +{\ttfamily \#include $<$sfinae.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1when___3_01true_01_4_a2d6b156939c43f8236a109310733323c}{type}} = void +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$$>$\newline +struct utl\+::meta\+::detail\+::when\+\_\+$<$ true $>$} + + + +Definition at line 42 of file sfinae.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1detail_1_1when___3_01true_01_4_a2d6b156939c43f8236a109310733323c}\label{structutl_1_1meta_1_1detail_1_1when___3_01true_01_4_a2d6b156939c43f8236a109310733323c}} +\index{utl\+::meta\+::detail\+::when\+\_\+$<$ true $>$@{utl\+::meta\+::detail\+::when\+\_\+$<$ true $>$}!type@{type}} +\index{type@{type}!utl\+::meta\+::detail\+::when\+\_\+$<$ true $>$@{utl\+::meta\+::detail\+::when\+\_\+$<$ true $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily using \mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1when__}{utl\+::meta\+::detail\+::when\+\_\+}}$<$ true $>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1detail_1_1when___3_01true_01_4_a2d6b156939c43f8236a109310733323c}{type}} = void} + + + +Definition at line 42 of file sfinae.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{sfinae_8h}{sfinae.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1filter__impl_1_1filter__.tex b/doc/latex/structutl_1_1meta_1_1filter__impl_1_1filter__.tex new file mode 100644 index 0000000..6f8042b --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1filter__impl_1_1filter__.tex @@ -0,0 +1,21 @@ +\hypertarget{structutl_1_1meta_1_1filter__impl_1_1filter__}{}\section{utl\+:\+:meta\+:\+:filter\+\_\+impl\+:\+:filter\+\_\+$<$ typename, typename, typename $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1filter__impl_1_1filter__}\index{utl\+::meta\+::filter\+\_\+impl\+::filter\+\_\+$<$ typename, typename, typename $>$@{utl\+::meta\+::filter\+\_\+impl\+::filter\+\_\+$<$ typename, typename, typename $>$}} + + +{\ttfamily \#include $<$typelist.\+h$>$} + + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename, typename, typename$>$\newline +struct utl\+::meta\+::filter\+\_\+impl\+::filter\+\_\+$<$ typename, typename, typename $>$} + + + +Definition at line 768 of file typelist.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{typelist_8h}{typelist.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_l_01_4.tex b/doc/latex/structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_l_01_4.tex new file mode 100644 index 0000000..c0ca456 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_l_01_4.tex @@ -0,0 +1,40 @@ +\hypertarget{structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_l_01_4}{}\section{utl\+:\+:meta\+:\+:filter\+\_\+impl\+:\+:filter\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, L $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_l_01_4}\index{utl\+::meta\+::filter\+\_\+impl\+::filter\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, L $>$@{utl\+::meta\+::filter\+\_\+impl\+::filter\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, L $>$}} + + +{\ttfamily \#include $<$typelist.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_l_01_4_a8cb888a78e40c7ce91d286e6f5153f2f}{type}} = \mbox{\hyperlink{group__type_ga39cc4e727a8faa5ea176f543e62c05c0}{if\+\_\+}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_ac27f3e5f3ec42921d9f8a6bb85560cf1}{invoke\+\_\+t}}$<$ Fn, Head $>$, \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1filter__impl_1_1filter__}{filter\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ Tail... $>$, Fn, \mbox{\hyperlink{namespaceutl_1_1meta_a70d0910ace47f4e12e8fa0788679044a}{cat}}$<$ L, \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ Head $>$ $>$$>$ $>$, \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1filter__impl_1_1filter__}{filter\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ Tail... $>$, Fn, L $>$ $>$ $>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename Head, typename... Tail, typename Fn, typename L$>$\newline +struct utl\+::meta\+::filter\+\_\+impl\+::filter\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, L $>$} + + + +Definition at line 771 of file typelist.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_l_01_4_a8cb888a78e40c7ce91d286e6f5153f2f}\label{structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_l_01_4_a8cb888a78e40c7ce91d286e6f5153f2f}} +\index{utl\+::meta\+::filter\+\_\+impl\+::filter\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, L $>$@{utl\+::meta\+::filter\+\_\+impl\+::filter\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, L $>$}!type@{type}} +\index{type@{type}!utl\+::meta\+::filter\+\_\+impl\+::filter\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, L $>$@{utl\+::meta\+::filter\+\_\+impl\+::filter\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, L $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename Head , typename... Tail, typename Fn , typename L $>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1filter__impl_1_1filter__}{utl\+::meta\+::filter\+\_\+impl\+::filter\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ Head, Tail... $>$, Fn, L $>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_l_01_4_a8cb888a78e40c7ce91d286e6f5153f2f}{type}} = \mbox{\hyperlink{group__type_ga39cc4e727a8faa5ea176f543e62c05c0}{if\+\_\+}} $<$ \mbox{\hyperlink{namespaceutl_1_1meta_ac27f3e5f3ec42921d9f8a6bb85560cf1}{invoke\+\_\+t}} $<$Fn, Head$>$, \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$\mbox{\hyperlink{structutl_1_1meta_1_1filter__impl_1_1filter__}{filter\+\_\+}}$<$\mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$Tail...$>$, Fn, \mbox{\hyperlink{namespaceutl_1_1meta_a70d0910ace47f4e12e8fa0788679044a}{cat}}$<$L, \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$Head$>$ $>$$>$ $>$, \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$\mbox{\hyperlink{structutl_1_1meta_1_1filter__impl_1_1filter__}{filter\+\_\+}}$<$\mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$Tail...$>$, Fn, L$>$ $>$ $>$} + + + +Definition at line 778 of file typelist.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{typelist_8h}{typelist.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_4_00_01_fn_00_01_l_01_4.tex b/doc/latex/structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_4_00_01_fn_00_01_l_01_4.tex new file mode 100644 index 0000000..3095b7d --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_4_00_01_fn_00_01_l_01_4.tex @@ -0,0 +1,40 @@ +\hypertarget{structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_4_00_01_fn_00_01_l_01_4}{}\section{utl\+:\+:meta\+:\+:filter\+\_\+impl\+:\+:filter\+\_\+$<$ typelist$<$$>$, Fn, L $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_4_00_01_fn_00_01_l_01_4}\index{utl\+::meta\+::filter\+\_\+impl\+::filter\+\_\+$<$ typelist$<$$>$, Fn, L $>$@{utl\+::meta\+::filter\+\_\+impl\+::filter\+\_\+$<$ typelist$<$$>$, Fn, L $>$}} + + +{\ttfamily \#include $<$typelist.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_4_00_01_fn_00_01_l_01_4_afdefe3c45a1bf1d8b5419014a16dc80e}{type}} = L +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename Fn, typename L$>$\newline +struct utl\+::meta\+::filter\+\_\+impl\+::filter\+\_\+$<$ typelist$<$$>$, Fn, L $>$} + + + +Definition at line 783 of file typelist.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_4_00_01_fn_00_01_l_01_4_afdefe3c45a1bf1d8b5419014a16dc80e}\label{structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_4_00_01_fn_00_01_l_01_4_afdefe3c45a1bf1d8b5419014a16dc80e}} +\index{utl\+::meta\+::filter\+\_\+impl\+::filter\+\_\+$<$ typelist$<$$>$, Fn, L $>$@{utl\+::meta\+::filter\+\_\+impl\+::filter\+\_\+$<$ typelist$<$$>$, Fn, L $>$}!type@{type}} +\index{type@{type}!utl\+::meta\+::filter\+\_\+impl\+::filter\+\_\+$<$ typelist$<$$>$, Fn, L $>$@{utl\+::meta\+::filter\+\_\+impl\+::filter\+\_\+$<$ typelist$<$$>$, Fn, L $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename Fn , typename L $>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1filter__impl_1_1filter__}{utl\+::meta\+::filter\+\_\+impl\+::filter\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$$>$, Fn, L $>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_4_00_01_fn_00_01_l_01_4_afdefe3c45a1bf1d8b5419014a16dc80e}{type}} = L} + + + +Definition at line 784 of file typelist.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{typelist_8h}{typelist.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1find__if__impl_1_1find__if__.tex b/doc/latex/structutl_1_1meta_1_1find__if__impl_1_1find__if__.tex new file mode 100644 index 0000000..5e0ac70 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1find__if__impl_1_1find__if__.tex @@ -0,0 +1,21 @@ +\hypertarget{structutl_1_1meta_1_1find__if__impl_1_1find__if__}{}\section{utl\+:\+:meta\+:\+:find\+\_\+if\+\_\+impl\+:\+:find\+\_\+if\+\_\+$<$ typename, typename, index\+\_\+t $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1find__if__impl_1_1find__if__}\index{utl\+::meta\+::find\+\_\+if\+\_\+impl\+::find\+\_\+if\+\_\+$<$ typename, typename, index\+\_\+t $>$@{utl\+::meta\+::find\+\_\+if\+\_\+impl\+::find\+\_\+if\+\_\+$<$ typename, typename, index\+\_\+t $>$}} + + +{\ttfamily \#include $<$typelist.\+h$>$} + + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename, typename, index\+\_\+t$>$\newline +struct utl\+::meta\+::find\+\_\+if\+\_\+impl\+::find\+\_\+if\+\_\+$<$ typename, typename, index\+\_\+t $>$} + + + +Definition at line 622 of file typelist.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{typelist_8h}{typelist.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.tex b/doc/latex/structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.tex new file mode 100644 index 0000000..160b542 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.tex @@ -0,0 +1,40 @@ +\hypertarget{structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4}{}\section{utl\+:\+:meta\+:\+:find\+\_\+if\+\_\+impl\+:\+:find\+\_\+if\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, N $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4}\index{utl\+::meta\+::find\+\_\+if\+\_\+impl\+::find\+\_\+if\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, N $>$@{utl\+::meta\+::find\+\_\+if\+\_\+impl\+::find\+\_\+if\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, N $>$}} + + +{\ttfamily \#include $<$typelist.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4_aa3109a5803c72b9688b928a72d357982}{type}} = \mbox{\hyperlink{group__type_ga39cc4e727a8faa5ea176f543e62c05c0}{if\+\_\+}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_ac27f3e5f3ec42921d9f8a6bb85560cf1}{invoke\+\_\+t}}$<$ Fn, Head $>$, \mbox{\hyperlink{namespaceutl_1_1meta_a5b7d36b9e568b81f2df897d56dc23b64}{index\+\_\+}}$<$ N $>$, \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1find__if__impl_1_1find__if__}{find\+\_\+if\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ Tail... $>$, Fn, N+1 $>$ $>$ $>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename Head, typename... Tail, typename Fn, index\+\_\+t N$>$\newline +struct utl\+::meta\+::find\+\_\+if\+\_\+impl\+::find\+\_\+if\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, N $>$} + + + +Definition at line 625 of file typelist.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4_aa3109a5803c72b9688b928a72d357982}\label{structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4_aa3109a5803c72b9688b928a72d357982}} +\index{utl\+::meta\+::find\+\_\+if\+\_\+impl\+::find\+\_\+if\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, N $>$@{utl\+::meta\+::find\+\_\+if\+\_\+impl\+::find\+\_\+if\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, N $>$}!type@{type}} +\index{type@{type}!utl\+::meta\+::find\+\_\+if\+\_\+impl\+::find\+\_\+if\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, N $>$@{utl\+::meta\+::find\+\_\+if\+\_\+impl\+::find\+\_\+if\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, N $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename Head , typename... Tail, typename Fn , index\+\_\+t N$>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1find__if__impl_1_1find__if__}{utl\+::meta\+::find\+\_\+if\+\_\+impl\+::find\+\_\+if\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ Head, Tail... $>$, Fn, N $>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4_aa3109a5803c72b9688b928a72d357982}{type}} = \mbox{\hyperlink{group__type_ga39cc4e727a8faa5ea176f543e62c05c0}{if\+\_\+}} $<$ \mbox{\hyperlink{namespaceutl_1_1meta_ac27f3e5f3ec42921d9f8a6bb85560cf1}{invoke\+\_\+t}}$<$Fn, Head$>$, \mbox{\hyperlink{namespaceutl_1_1meta_a5b7d36b9e568b81f2df897d56dc23b64}{index\+\_\+}}$<$N$>$, \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$\mbox{\hyperlink{structutl_1_1meta_1_1find__if__impl_1_1find__if__}{find\+\_\+if\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$Tail...$>$, Fn, N+1$>$ $>$ $>$} + + + +Definition at line 633 of file typelist.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{typelist_8h}{typelist.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.tex b/doc/latex/structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.tex new file mode 100644 index 0000000..738b2e2 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.tex @@ -0,0 +1,40 @@ +\hypertarget{structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4}{}\section{utl\+:\+:meta\+:\+:find\+\_\+if\+\_\+impl\+:\+:find\+\_\+if\+\_\+$<$ typelist$<$$>$, Fn, N $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4}\index{utl\+::meta\+::find\+\_\+if\+\_\+impl\+::find\+\_\+if\+\_\+$<$ typelist$<$$>$, Fn, N $>$@{utl\+::meta\+::find\+\_\+if\+\_\+impl\+::find\+\_\+if\+\_\+$<$ typelist$<$$>$, Fn, N $>$}} + + +{\ttfamily \#include $<$typelist.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4_aaa7d3cf83c1c12443a002061cad448ef}{type}} = \mbox{\hyperlink{namespaceutl_1_1meta_af0c85cc6480a9e7a8e4fb7d8f936f01b}{Npos}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename Fn, index\+\_\+t N$>$\newline +struct utl\+::meta\+::find\+\_\+if\+\_\+impl\+::find\+\_\+if\+\_\+$<$ typelist$<$$>$, Fn, N $>$} + + + +Definition at line 638 of file typelist.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4_aaa7d3cf83c1c12443a002061cad448ef}\label{structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4_aaa7d3cf83c1c12443a002061cad448ef}} +\index{utl\+::meta\+::find\+\_\+if\+\_\+impl\+::find\+\_\+if\+\_\+$<$ typelist$<$$>$, Fn, N $>$@{utl\+::meta\+::find\+\_\+if\+\_\+impl\+::find\+\_\+if\+\_\+$<$ typelist$<$$>$, Fn, N $>$}!type@{type}} +\index{type@{type}!utl\+::meta\+::find\+\_\+if\+\_\+impl\+::find\+\_\+if\+\_\+$<$ typelist$<$$>$, Fn, N $>$@{utl\+::meta\+::find\+\_\+if\+\_\+impl\+::find\+\_\+if\+\_\+$<$ typelist$<$$>$, Fn, N $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename Fn , index\+\_\+t N$>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1find__if__impl_1_1find__if__}{utl\+::meta\+::find\+\_\+if\+\_\+impl\+::find\+\_\+if\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$$>$, Fn, N $>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4_aaa7d3cf83c1c12443a002061cad448ef}{type}} = \mbox{\hyperlink{namespaceutl_1_1meta_af0c85cc6480a9e7a8e4fb7d8f936f01b}{Npos}}} + + + +Definition at line 639 of file typelist.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{typelist_8h}{typelist.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1fold__impl_1_1fold__.tex b/doc/latex/structutl_1_1meta_1_1fold__impl_1_1fold__.tex new file mode 100644 index 0000000..b4edb1f --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1fold__impl_1_1fold__.tex @@ -0,0 +1,21 @@ +\hypertarget{structutl_1_1meta_1_1fold__impl_1_1fold__}{}\section{utl\+:\+:meta\+:\+:fold\+\_\+impl\+:\+:fold\+\_\+$<$ typename, typename, typename $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1fold__impl_1_1fold__}\index{utl\+::meta\+::fold\+\_\+impl\+::fold\+\_\+$<$ typename, typename, typename $>$@{utl\+::meta\+::fold\+\_\+impl\+::fold\+\_\+$<$ typename, typename, typename $>$}} + + +{\ttfamily \#include $<$typelist.\+h$>$} + + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename, typename, typename$>$\newline +struct utl\+::meta\+::fold\+\_\+impl\+::fold\+\_\+$<$ typename, typename, typename $>$} + + + +Definition at line 347 of file typelist.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{typelist_8h}{typelist.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4.tex b/doc/latex/structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4.tex new file mode 100644 index 0000000..b52f69d --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4.tex @@ -0,0 +1,40 @@ +\hypertarget{structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4}{}\section{utl\+:\+:meta\+:\+:fold\+\_\+impl\+:\+:fold\+\_\+$<$ typelist$<$ Head, Tail... $>$, V, Fn $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4}\index{utl\+::meta\+::fold\+\_\+impl\+::fold\+\_\+$<$ typelist$<$ Head, Tail... $>$, V, Fn $>$@{utl\+::meta\+::fold\+\_\+impl\+::fold\+\_\+$<$ typelist$<$ Head, Tail... $>$, V, Fn $>$}} + + +{\ttfamily \#include $<$typelist.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4_abb224956ed3d1439190f0ca0afbfeea1}{type}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1fold__impl_1_1fold__}{fold\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ Tail... $>$, \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}}$<$ Fn, V, Head $>$, Fn $>$ $>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename Head, typename... Tail, typename V, typename Fn$>$\newline +struct utl\+::meta\+::fold\+\_\+impl\+::fold\+\_\+$<$ typelist$<$ Head, Tail... $>$, V, Fn $>$} + + + +Definition at line 353 of file typelist.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4_abb224956ed3d1439190f0ca0afbfeea1}\label{structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4_abb224956ed3d1439190f0ca0afbfeea1}} +\index{utl\+::meta\+::fold\+\_\+impl\+::fold\+\_\+$<$ typelist$<$ Head, Tail... $>$, V, Fn $>$@{utl\+::meta\+::fold\+\_\+impl\+::fold\+\_\+$<$ typelist$<$ Head, Tail... $>$, V, Fn $>$}!type@{type}} +\index{type@{type}!utl\+::meta\+::fold\+\_\+impl\+::fold\+\_\+$<$ typelist$<$ Head, Tail... $>$, V, Fn $>$@{utl\+::meta\+::fold\+\_\+impl\+::fold\+\_\+$<$ typelist$<$ Head, Tail... $>$, V, Fn $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename Head , typename... Tail, typename V , typename Fn $>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1fold__impl_1_1fold__}{utl\+::meta\+::fold\+\_\+impl\+::fold\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ Head, Tail... $>$, V, Fn $>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4_abb224956ed3d1439190f0ca0afbfeea1}{type}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1fold__impl_1_1fold__}{fold\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$Tail...$>$, \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}}$<$Fn, V, Head$>$, Fn $>$ $>$} + + + +Definition at line 361 of file typelist.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{typelist_8h}{typelist.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_4_00_01_v0_00_01_fn_01_4.tex b/doc/latex/structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_4_00_01_v0_00_01_fn_01_4.tex new file mode 100644 index 0000000..a818088 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_4_00_01_v0_00_01_fn_01_4.tex @@ -0,0 +1,40 @@ +\hypertarget{structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_4_00_01_v0_00_01_fn_01_4}{}\section{utl\+:\+:meta\+:\+:fold\+\_\+impl\+:\+:fold\+\_\+$<$ typelist$<$$>$, V0, Fn $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_4_00_01_v0_00_01_fn_01_4}\index{utl\+::meta\+::fold\+\_\+impl\+::fold\+\_\+$<$ typelist$<$$>$, V0, Fn $>$@{utl\+::meta\+::fold\+\_\+impl\+::fold\+\_\+$<$ typelist$<$$>$, V0, Fn $>$}} + + +{\ttfamily \#include $<$typelist.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_4_00_01_v0_00_01_fn_01_4_a8455824c7006528cdabb3d56a60ae9d6}{type}} = V0 +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename V0, typename Fn$>$\newline +struct utl\+::meta\+::fold\+\_\+impl\+::fold\+\_\+$<$ typelist$<$$>$, V0, Fn $>$} + + + +Definition at line 365 of file typelist.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_4_00_01_v0_00_01_fn_01_4_a8455824c7006528cdabb3d56a60ae9d6}\label{structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_4_00_01_v0_00_01_fn_01_4_a8455824c7006528cdabb3d56a60ae9d6}} +\index{utl\+::meta\+::fold\+\_\+impl\+::fold\+\_\+$<$ typelist$<$$>$, V0, Fn $>$@{utl\+::meta\+::fold\+\_\+impl\+::fold\+\_\+$<$ typelist$<$$>$, V0, Fn $>$}!type@{type}} +\index{type@{type}!utl\+::meta\+::fold\+\_\+impl\+::fold\+\_\+$<$ typelist$<$$>$, V0, Fn $>$@{utl\+::meta\+::fold\+\_\+impl\+::fold\+\_\+$<$ typelist$<$$>$, V0, Fn $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename V0 , typename Fn $>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1fold__impl_1_1fold__}{utl\+::meta\+::fold\+\_\+impl\+::fold\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$$>$, V0, Fn $>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_4_00_01_v0_00_01_fn_01_4_a8455824c7006528cdabb3d56a60ae9d6}{type}} = V0} + + + +Definition at line 366 of file typelist.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{typelist_8h}{typelist.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1front__impl_1_1front__.tex b/doc/latex/structutl_1_1meta_1_1front__impl_1_1front__.tex new file mode 100644 index 0000000..7cd31d3 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1front__impl_1_1front__.tex @@ -0,0 +1,21 @@ +\hypertarget{structutl_1_1meta_1_1front__impl_1_1front__}{}\section{utl\+:\+:meta\+:\+:front\+\_\+impl\+:\+:front\+\_\+$<$ L $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1front__impl_1_1front__}\index{utl\+::meta\+::front\+\_\+impl\+::front\+\_\+$<$ L $>$@{utl\+::meta\+::front\+\_\+impl\+::front\+\_\+$<$ L $>$}} + + +{\ttfamily \#include $<$typelist.\+h$>$} + + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename L$>$\newline +struct utl\+::meta\+::front\+\_\+impl\+::front\+\_\+$<$ L $>$} + + + +Definition at line 261 of file typelist.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{typelist_8h}{typelist.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1front__impl_1_1front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.tex b/doc/latex/structutl_1_1meta_1_1front__impl_1_1front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.tex new file mode 100644 index 0000000..8f37c0a --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1front__impl_1_1front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.tex @@ -0,0 +1,40 @@ +\hypertarget{structutl_1_1meta_1_1front__impl_1_1front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4}{}\section{utl\+:\+:meta\+:\+:front\+\_\+impl\+:\+:front\+\_\+$<$ typelist$<$ Head, Tail... $>$ $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1front__impl_1_1front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4}\index{utl\+::meta\+::front\+\_\+impl\+::front\+\_\+$<$ typelist$<$ Head, Tail... $>$ $>$@{utl\+::meta\+::front\+\_\+impl\+::front\+\_\+$<$ typelist$<$ Head, Tail... $>$ $>$}} + + +{\ttfamily \#include $<$typelist.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1meta_1_1front__impl_1_1front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4_a964bc85961c4935570021361b0d4f514}{type}} = Head +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename Head, typename... Tail$>$\newline +struct utl\+::meta\+::front\+\_\+impl\+::front\+\_\+$<$ typelist$<$ Head, Tail... $>$ $>$} + + + +Definition at line 264 of file typelist.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1front__impl_1_1front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4_a964bc85961c4935570021361b0d4f514}\label{structutl_1_1meta_1_1front__impl_1_1front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4_a964bc85961c4935570021361b0d4f514}} +\index{utl\+::meta\+::front\+\_\+impl\+::front\+\_\+$<$ typelist$<$ Head, Tail... $>$ $>$@{utl\+::meta\+::front\+\_\+impl\+::front\+\_\+$<$ typelist$<$ Head, Tail... $>$ $>$}!type@{type}} +\index{type@{type}!utl\+::meta\+::front\+\_\+impl\+::front\+\_\+$<$ typelist$<$ Head, Tail... $>$ $>$@{utl\+::meta\+::front\+\_\+impl\+::front\+\_\+$<$ typelist$<$ Head, Tail... $>$ $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename Head , typename... Tail$>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1front__impl_1_1front__}{utl\+::meta\+::front\+\_\+impl\+::front\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ Head, Tail... $>$ $>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1front__impl_1_1front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4_a964bc85961c4935570021361b0d4f514}{type}} = Head} + + + +Definition at line 265 of file typelist.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{typelist_8h}{typelist.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1identity.tex b/doc/latex/structutl_1_1meta_1_1identity.tex new file mode 100644 index 0000000..df00642 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1identity.tex @@ -0,0 +1,68 @@ +\hypertarget{structutl_1_1meta_1_1identity}{}\section{utl\+:\+:meta\+:\+:identity$<$ \+\_\+\+Tp $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1identity}\index{utl\+::meta\+::identity$<$ \+\_\+\+Tp $>$@{utl\+::meta\+::identity$<$ \+\_\+\+Tp $>$}} + + +{\ttfamily \#include $<$invoke.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename... $>$ }\\using \mbox{\hyperlink{structutl_1_1meta_1_1identity_ab13e3134ffe9c6fabb22f67d7b87b2dd}{apply}} = \+\_\+\+Tp +\begin{DoxyCompactList}\small\item\em identity is invokable, must also have apply \end{DoxyCompactList}\item +using \mbox{\hyperlink{structutl_1_1meta_1_1identity_a9aab221df05f226c227a6e508460f7b7}{type}} = \+\_\+\+Tp +\begin{DoxyCompactList}\small\item\em identity \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename \+\_\+\+Tp$>$\newline +struct utl\+::meta\+::identity$<$ \+\_\+\+Tp $>$} + +identity, identity\+\_\+t. + +Definition at line 54 of file invoke.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1identity_ab13e3134ffe9c6fabb22f67d7b87b2dd}\label{structutl_1_1meta_1_1identity_ab13e3134ffe9c6fabb22f67d7b87b2dd}} +\index{utl\+::meta\+::identity@{utl\+::meta\+::identity}!apply@{apply}} +\index{apply@{apply}!utl\+::meta\+::identity@{utl\+::meta\+::identity}} +\subsubsection{\texorpdfstring{apply}{apply}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp $>$ \\ +template$<$typename... $>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1identity}{utl\+::meta\+::identity}}$<$ \+\_\+\+Tp $>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1identity_ab13e3134ffe9c6fabb22f67d7b87b2dd}{apply}} = \+\_\+\+Tp} + + + +identity is invokable, must also have apply + +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/invoke.\+h}}.\end{Desc} + + +Definition at line 61 of file invoke.\+h. + +\mbox{\Hypertarget{structutl_1_1meta_1_1identity_a9aab221df05f226c227a6e508460f7b7}\label{structutl_1_1meta_1_1identity_a9aab221df05f226c227a6e508460f7b7}} +\index{utl\+::meta\+::identity@{utl\+::meta\+::identity}!type@{type}} +\index{type@{type}!utl\+::meta\+::identity@{utl\+::meta\+::identity}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename \+\_\+\+Tp $>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1identity}{utl\+::meta\+::identity}}$<$ \+\_\+\+Tp $>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1identity_a9aab221df05f226c227a6e508460f7b7}{type}} = \+\_\+\+Tp} + + + +identity + +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/invoke.\+h}}.\end{Desc} + + +Definition at line 63 of file invoke.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{meta_2invoke_8h}{invoke.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1nat__.tex b/doc/latex/structutl_1_1meta_1_1nat__.tex new file mode 100644 index 0000000..12b70da --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1nat__.tex @@ -0,0 +1,59 @@ +\hypertarget{structutl_1_1meta_1_1nat__}{}\section{utl\+:\+:meta\+:\+:nat\+\_\+ Struct Reference} +\label{structutl_1_1meta_1_1nat__}\index{utl\+::meta\+::nat\+\_\+@{utl\+::meta\+::nat\+\_\+}} + + +{\ttfamily \#include $<$detection.\+h$>$} + +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{structutl_1_1meta_1_1nat___adccaf921c4aa751d22831fcc10d5a673}{nat\+\_\+}} ()=delete +\item +\mbox{\hyperlink{structutl_1_1meta_1_1nat___a133e363072f900269933f6c163b294f8}{$\sim$nat\+\_\+}} ()=delete +\item +\mbox{\hyperlink{structutl_1_1meta_1_1nat___a42d01fdec9b91bc31c325a51e28b5d41}{nat\+\_\+}} (\mbox{\hyperlink{structutl_1_1meta_1_1nat__}{nat\+\_\+}} const \&)=delete +\item +void \mbox{\hyperlink{structutl_1_1meta_1_1nat___a905f7286e42782137f31227a7c891355}{operator=}} (\mbox{\hyperlink{structutl_1_1meta_1_1nat__}{nat\+\_\+}} const \&)=delete +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Not a type to use in detected idiom. This type can not be constructed, destructed or copied + +Definition at line 63 of file detection.\+h. + + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1nat___adccaf921c4aa751d22831fcc10d5a673}\label{structutl_1_1meta_1_1nat___adccaf921c4aa751d22831fcc10d5a673}} +\index{utl\+::meta\+::nat\+\_\+@{utl\+::meta\+::nat\+\_\+}!nat\+\_\+@{nat\+\_\+}} +\index{nat\+\_\+@{nat\+\_\+}!utl\+::meta\+::nat\+\_\+@{utl\+::meta\+::nat\+\_\+}} +\subsubsection{\texorpdfstring{nat\+\_\+()}{nat\_()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily utl\+::meta\+::nat\+\_\+\+::nat\+\_\+ (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [delete]}} + +\mbox{\Hypertarget{structutl_1_1meta_1_1nat___a133e363072f900269933f6c163b294f8}\label{structutl_1_1meta_1_1nat___a133e363072f900269933f6c163b294f8}} +\index{utl\+::meta\+::nat\+\_\+@{utl\+::meta\+::nat\+\_\+}!````~nat\+\_\+@{$\sim$nat\+\_\+}} +\index{````~nat\+\_\+@{$\sim$nat\+\_\+}!utl\+::meta\+::nat\+\_\+@{utl\+::meta\+::nat\+\_\+}} +\subsubsection{\texorpdfstring{$\sim$nat\+\_\+()}{~nat\_()}} +{\footnotesize\ttfamily utl\+::meta\+::nat\+\_\+\+::$\sim$nat\+\_\+ (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [delete]}} + +\mbox{\Hypertarget{structutl_1_1meta_1_1nat___a42d01fdec9b91bc31c325a51e28b5d41}\label{structutl_1_1meta_1_1nat___a42d01fdec9b91bc31c325a51e28b5d41}} +\index{utl\+::meta\+::nat\+\_\+@{utl\+::meta\+::nat\+\_\+}!nat\+\_\+@{nat\+\_\+}} +\index{nat\+\_\+@{nat\+\_\+}!utl\+::meta\+::nat\+\_\+@{utl\+::meta\+::nat\+\_\+}} +\subsubsection{\texorpdfstring{nat\+\_\+()}{nat\_()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily utl\+::meta\+::nat\+\_\+\+::nat\+\_\+ (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{structutl_1_1meta_1_1nat__}{nat\+\_\+}} const \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [delete]}} + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1nat___a905f7286e42782137f31227a7c891355}\label{structutl_1_1meta_1_1nat___a905f7286e42782137f31227a7c891355}} +\index{utl\+::meta\+::nat\+\_\+@{utl\+::meta\+::nat\+\_\+}!operator=@{operator=}} +\index{operator=@{operator=}!utl\+::meta\+::nat\+\_\+@{utl\+::meta\+::nat\+\_\+}} +\subsubsection{\texorpdfstring{operator=()}{operator=()}} +{\footnotesize\ttfamily void utl\+::meta\+::nat\+\_\+\+::operator= (\begin{DoxyParamCaption}\item[{\mbox{\hyperlink{structutl_1_1meta_1_1nat__}{nat\+\_\+}} const \&}]{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [delete]}} + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{detection_8h}{detection.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1nil__.tex b/doc/latex/structutl_1_1meta_1_1nil__.tex new file mode 100644 index 0000000..fa49a30 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1nil__.tex @@ -0,0 +1,36 @@ +\hypertarget{structutl_1_1meta_1_1nil__}{}\section{utl\+:\+:meta\+:\+:nil\+\_\+ Struct Reference} +\label{structutl_1_1meta_1_1nil__}\index{utl\+::meta\+::nil\+\_\+@{utl\+::meta\+::nil\+\_\+}} + + +{\ttfamily \#include $<$integral.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1meta_1_1nil___a497da8469a94140b0285ba5864d794c8}{type}} = \mbox{\hyperlink{structutl_1_1meta_1_1nil__}{nil\+\_\+}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Empty type \mbox{\hyperlink{namespaceutl_1_1meta}{utl\+::meta}}\textquotesingle{}s nil type is not pure nil. It\textquotesingle{}s a recursive "de-\/referencable nil. Each time someone applies \+::type to it, he gets back \mbox{\hyperlink{structutl_1_1meta_1_1nil__}{nil\+\_\+}}. This way we can prevent a lot of compilation errors in a wrong meta\+:\+: handling. + +Definition at line 43 of file integral.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1nil___a497da8469a94140b0285ba5864d794c8}\label{structutl_1_1meta_1_1nil___a497da8469a94140b0285ba5864d794c8}} +\index{utl\+::meta\+::nil\+\_\+@{utl\+::meta\+::nil\+\_\+}!type@{type}} +\index{type@{type}!utl\+::meta\+::nil\+\_\+@{utl\+::meta\+::nil\+\_\+}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily using \mbox{\hyperlink{structutl_1_1meta_1_1nil___a497da8469a94140b0285ba5864d794c8}{utl\+::meta\+::nil\+\_\+\+::type}} = \mbox{\hyperlink{structutl_1_1meta_1_1nil__}{nil\+\_\+}}} + + + +Definition at line 44 of file integral.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{integral_8h}{integral.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1not__same__as.tex b/doc/latex/structutl_1_1meta_1_1not__same__as.tex new file mode 100644 index 0000000..05e993e --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1not__same__as.tex @@ -0,0 +1,26 @@ +\hypertarget{structutl_1_1meta_1_1not__same__as}{}\section{utl\+:\+:meta\+:\+:not\+\_\+same\+\_\+as$<$ T1 $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1not__same__as}\index{utl\+::meta\+::not\+\_\+same\+\_\+as$<$ T1 $>$@{utl\+::meta\+::not\+\_\+same\+\_\+as$<$ T1 $>$}} + + +{\ttfamily \#include $<$invoke.\+h$>$} + +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1not__same__as_1_1apply}{apply}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T1$>$\newline +struct utl\+::meta\+::not\+\_\+same\+\_\+as$<$ T1 $>$} + + + +Definition at line 358 of file invoke.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{meta_2invoke_8h}{invoke.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1not__same__as_1_1apply.eps b/doc/latex/structutl_1_1meta_1_1not__same__as_1_1apply.eps new file mode 100644 index 0000000..627cb52 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1not__same__as_1_1apply.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 155.642023 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 3.212500 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::meta::not_same_as< T1 >::apply< T2 >) cw +(not_same_< T1, T2 >) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::meta::not_same_as< T1 >::apply< T2 >) 0.000000 0.000000 box + (not_same_< T1, T2 >) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/structutl_1_1meta_1_1not__same__as_1_1apply.tex b/doc/latex/structutl_1_1meta_1_1not__same__as_1_1apply.tex new file mode 100644 index 0000000..273523f --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1not__same__as_1_1apply.tex @@ -0,0 +1,28 @@ +\hypertarget{structutl_1_1meta_1_1not__same__as_1_1apply}{}\section{utl\+:\+:meta\+:\+:not\+\_\+same\+\_\+as$<$ T1 $>$\+:\+:apply$<$ T2 $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1not__same__as_1_1apply}\index{utl\+::meta\+::not\+\_\+same\+\_\+as$<$ T1 $>$\+::apply$<$ T2 $>$@{utl\+::meta\+::not\+\_\+same\+\_\+as$<$ T1 $>$\+::apply$<$ T2 $>$}} + + +{\ttfamily \#include $<$invoke.\+h$>$} + +Inheritance diagram for utl\+:\+:meta\+:\+:not\+\_\+same\+\_\+as$<$ T1 $>$\+:\+:apply$<$ T2 $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{structutl_1_1meta_1_1not__same__as_1_1apply} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T1$>$\newline +template$<$typename T2$>$\newline +struct utl\+::meta\+::not\+\_\+same\+\_\+as$<$ T1 $>$\+::apply$<$ T2 $>$} + + + +Definition at line 360 of file invoke.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{meta_2invoke_8h}{invoke.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1pop__back__impl_1_1pop__back__.tex b/doc/latex/structutl_1_1meta_1_1pop__back__impl_1_1pop__back__.tex new file mode 100644 index 0000000..9425b3a --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1pop__back__impl_1_1pop__back__.tex @@ -0,0 +1,43 @@ +\hypertarget{structutl_1_1meta_1_1pop__back__impl_1_1pop__back__}{}\section{utl\+:\+:meta\+:\+:pop\+\_\+back\+\_\+impl\+:\+:pop\+\_\+back\+\_\+$<$ List $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1pop__back__impl_1_1pop__back__}\index{utl\+::meta\+::pop\+\_\+back\+\_\+impl\+::pop\+\_\+back\+\_\+$<$ List $>$@{utl\+::meta\+::pop\+\_\+back\+\_\+impl\+::pop\+\_\+back\+\_\+$<$ List $>$}} + + +{\ttfamily \#include $<$typelist.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1meta_1_1pop__back__impl_1_1pop__back___a8b82ff5dcd6fcda89b36f8e587e64d24}{type}} = \mbox{\hyperlink{namespaceutl_1_1meta_a2ae6bfa22f1912b0ba09d24e0ae2ccd9}{reverse}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_aa4a307a81c0640c6c0dd08f8a53f3c32}{pop\+\_\+front}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_a2ae6bfa22f1912b0ba09d24e0ae2ccd9}{reverse}}$<$ List $>$ $>$ $>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename List$>$\newline +struct utl\+::meta\+::pop\+\_\+back\+\_\+impl\+::pop\+\_\+back\+\_\+$<$ List $>$} + + + +Definition at line 509 of file typelist.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1pop__back__impl_1_1pop__back___a8b82ff5dcd6fcda89b36f8e587e64d24}\label{structutl_1_1meta_1_1pop__back__impl_1_1pop__back___a8b82ff5dcd6fcda89b36f8e587e64d24}} +\index{utl\+::meta\+::pop\+\_\+back\+\_\+impl\+::pop\+\_\+back\+\_\+@{utl\+::meta\+::pop\+\_\+back\+\_\+impl\+::pop\+\_\+back\+\_\+}!type@{type}} +\index{type@{type}!utl\+::meta\+::pop\+\_\+back\+\_\+impl\+::pop\+\_\+back\+\_\+@{utl\+::meta\+::pop\+\_\+back\+\_\+impl\+::pop\+\_\+back\+\_\+}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename List $>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1pop__back__impl_1_1pop__back__}{utl\+::meta\+::pop\+\_\+back\+\_\+impl\+::pop\+\_\+back\+\_\+}}$<$ List $>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1pop__back__impl_1_1pop__back___a8b82ff5dcd6fcda89b36f8e587e64d24}{type}} = \mbox{\hyperlink{namespaceutl_1_1meta_a2ae6bfa22f1912b0ba09d24e0ae2ccd9}{reverse}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_aa4a307a81c0640c6c0dd08f8a53f3c32}{pop\+\_\+front}}$<$\mbox{\hyperlink{namespaceutl_1_1meta_a2ae6bfa22f1912b0ba09d24e0ae2ccd9}{reverse}}$<$List$>$ $>$ $>$} + +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} + + +Definition at line 512 of file typelist.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{typelist_8h}{typelist.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1pop__front__impl_1_1pop__front__.tex b/doc/latex/structutl_1_1meta_1_1pop__front__impl_1_1pop__front__.tex new file mode 100644 index 0000000..95b0b9b --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1pop__front__impl_1_1pop__front__.tex @@ -0,0 +1,21 @@ +\hypertarget{structutl_1_1meta_1_1pop__front__impl_1_1pop__front__}{}\section{utl\+:\+:meta\+:\+:pop\+\_\+front\+\_\+impl\+:\+:pop\+\_\+front\+\_\+$<$ List $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1pop__front__impl_1_1pop__front__}\index{utl\+::meta\+::pop\+\_\+front\+\_\+impl\+::pop\+\_\+front\+\_\+$<$ List $>$@{utl\+::meta\+::pop\+\_\+front\+\_\+impl\+::pop\+\_\+front\+\_\+$<$ List $>$}} + + +{\ttfamily \#include $<$typelist.\+h$>$} + + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename List$>$\newline +struct utl\+::meta\+::pop\+\_\+front\+\_\+impl\+::pop\+\_\+front\+\_\+$<$ List $>$} + + + +Definition at line 486 of file typelist.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{typelist_8h}{typelist.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1pop__front__impl_1_1pop__front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.tex b/doc/latex/structutl_1_1meta_1_1pop__front__impl_1_1pop__front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.tex new file mode 100644 index 0000000..bf08b19 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1pop__front__impl_1_1pop__front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4.tex @@ -0,0 +1,40 @@ +\hypertarget{structutl_1_1meta_1_1pop__front__impl_1_1pop__front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4}{}\section{utl\+:\+:meta\+:\+:pop\+\_\+front\+\_\+impl\+:\+:pop\+\_\+front\+\_\+$<$ typelist$<$ Head, Tail... $>$ $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1pop__front__impl_1_1pop__front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4}\index{utl\+::meta\+::pop\+\_\+front\+\_\+impl\+::pop\+\_\+front\+\_\+$<$ typelist$<$ Head, Tail... $>$ $>$@{utl\+::meta\+::pop\+\_\+front\+\_\+impl\+::pop\+\_\+front\+\_\+$<$ typelist$<$ Head, Tail... $>$ $>$}} + + +{\ttfamily \#include $<$typelist.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1meta_1_1pop__front__impl_1_1pop__front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4_a7387d0025d1dcece8e63a3bba5426ac8}{type}} = \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ Tail... $>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename Head, typename... Tail$>$\newline +struct utl\+::meta\+::pop\+\_\+front\+\_\+impl\+::pop\+\_\+front\+\_\+$<$ typelist$<$ Head, Tail... $>$ $>$} + + + +Definition at line 489 of file typelist.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1pop__front__impl_1_1pop__front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4_a7387d0025d1dcece8e63a3bba5426ac8}\label{structutl_1_1meta_1_1pop__front__impl_1_1pop__front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4_a7387d0025d1dcece8e63a3bba5426ac8}} +\index{utl\+::meta\+::pop\+\_\+front\+\_\+impl\+::pop\+\_\+front\+\_\+$<$ typelist$<$ Head, Tail... $>$ $>$@{utl\+::meta\+::pop\+\_\+front\+\_\+impl\+::pop\+\_\+front\+\_\+$<$ typelist$<$ Head, Tail... $>$ $>$}!type@{type}} +\index{type@{type}!utl\+::meta\+::pop\+\_\+front\+\_\+impl\+::pop\+\_\+front\+\_\+$<$ typelist$<$ Head, Tail... $>$ $>$@{utl\+::meta\+::pop\+\_\+front\+\_\+impl\+::pop\+\_\+front\+\_\+$<$ typelist$<$ Head, Tail... $>$ $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename Head , typename... Tail$>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1pop__front__impl_1_1pop__front__}{utl\+::meta\+::pop\+\_\+front\+\_\+impl\+::pop\+\_\+front\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ Head, Tail... $>$ $>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1pop__front__impl_1_1pop__front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4_a7387d0025d1dcece8e63a3bba5426ac8}{type}} = \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$Tail...$>$} + + + +Definition at line 490 of file typelist.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{typelist_8h}{typelist.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1quote.tex b/doc/latex/structutl_1_1meta_1_1quote.tex new file mode 100644 index 0000000..bc7c09c --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1quote.tex @@ -0,0 +1,46 @@ +\hypertarget{structutl_1_1meta_1_1quote}{}\section{utl\+:\+:meta\+:\+:quote$<$ F $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1quote}\index{utl\+::meta\+::quote$<$ F $>$@{utl\+::meta\+::quote$<$ F $>$}} + + +{\ttfamily \#include $<$invoke.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename... Args$>$ }\\using \mbox{\hyperlink{structutl_1_1meta_1_1quote_a7741173cf865291c89d374c2fac0d17e}{apply}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_a48f9a1220931596a9652351d2e7242be}{defer}}$<$ F, Args... $>$ $>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$template$<$ typename... $>$ class F$>$\newline +struct utl\+::meta\+::quote$<$ F $>$} + +quote + +quote deferred is a higher-\/order primitive that wraps an n-\/ary Metafunction to create a corresponding Metafunction Class (Invocable) using defer$<$$>$ to postpone the evaluation of Metafunction. This is a safe version of {\ttfamily wrap$<$$>$}. Again this way we can pass Metafunctions as types to other metafunctions and let them {\ttfamily invoke} the inner templated apply + +Definition at line 234 of file invoke.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1quote_a7741173cf865291c89d374c2fac0d17e}\label{structutl_1_1meta_1_1quote_a7741173cf865291c89d374c2fac0d17e}} +\index{utl\+::meta\+::quote@{utl\+::meta\+::quote}!apply@{apply}} +\index{apply@{apply}!utl\+::meta\+::quote@{utl\+::meta\+::quote}} +\subsubsection{\texorpdfstring{apply}{apply}} +{\footnotesize\ttfamily template$<$template$<$ typename... $>$ class F$>$ \\ +template$<$typename... Args$>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1quote}{utl\+::meta\+::quote}}$<$ F $>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1quote_a7741173cf865291c89d374c2fac0d17e}{apply}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_a48f9a1220931596a9652351d2e7242be}{defer}}$<$F, Args...$>$ $>$} + +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/invoke.\+h}}.\end{Desc} + + +Definition at line 238 of file invoke.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{meta_2invoke_8h}{invoke.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1quote__i.tex b/doc/latex/structutl_1_1meta_1_1quote__i.tex new file mode 100644 index 0000000..2edd4be --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1quote__i.tex @@ -0,0 +1,49 @@ +\hypertarget{structutl_1_1meta_1_1quote__i}{}\section{utl\+:\+:meta\+:\+:quote\+\_\+i$<$ T, F $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1quote__i}\index{utl\+::meta\+::quote\+\_\+i$<$ T, F $>$@{utl\+::meta\+::quote\+\_\+i$<$ T, F $>$}} + + +Wrap a template {\ttfamily F} taking literal constants of type {\ttfamily T} into an Invokable. + + + + +{\ttfamily \#include $<$invoke.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename... Ts$>$ }\\using \mbox{\hyperlink{structutl_1_1meta_1_1quote__i_a32099809fbac1c620ad3993e8ab1b8c0}{apply}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_a01f183f337439e414184beedc9bcf9e3}{defer\+\_\+i}}$<$ T, F, Ts\+::type\+::value... $>$ $>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T, template$<$ T... $>$ class F$>$\newline +struct utl\+::meta\+::quote\+\_\+i$<$ T, F $>$} + +Wrap a template {\ttfamily F} taking literal constants of type {\ttfamily T} into an Invokable. + +Definition at line 243 of file invoke.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1quote__i_a32099809fbac1c620ad3993e8ab1b8c0}\label{structutl_1_1meta_1_1quote__i_a32099809fbac1c620ad3993e8ab1b8c0}} +\index{utl\+::meta\+::quote\+\_\+i@{utl\+::meta\+::quote\+\_\+i}!apply@{apply}} +\index{apply@{apply}!utl\+::meta\+::quote\+\_\+i@{utl\+::meta\+::quote\+\_\+i}} +\subsubsection{\texorpdfstring{apply}{apply}} +{\footnotesize\ttfamily template$<$typename T , template$<$ T... $>$ class F$>$ \\ +template$<$typename... Ts$>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1quote__i}{utl\+::meta\+::quote\+\_\+i}}$<$ T, F $>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1quote__i_a32099809fbac1c620ad3993e8ab1b8c0}{apply}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_a01f183f337439e414184beedc9bcf9e3}{defer\+\_\+i}}$<$T, F, Ts\+::type\+::value...$>$ $>$} + +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/invoke.\+h}}.\end{Desc} + + +Definition at line 248 of file invoke.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{meta_2invoke_8h}{invoke.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1replace__if__impl_1_1replace__if__.tex b/doc/latex/structutl_1_1meta_1_1replace__if__impl_1_1replace__if__.tex new file mode 100644 index 0000000..9d5d908 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1replace__if__impl_1_1replace__if__.tex @@ -0,0 +1,21 @@ +\hypertarget{structutl_1_1meta_1_1replace__if__impl_1_1replace__if__}{}\section{utl\+:\+:meta\+:\+:replace\+\_\+if\+\_\+impl\+:\+:replace\+\_\+if\+\_\+$<$ typename, typename, typename, typename $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1replace__if__impl_1_1replace__if__}\index{utl\+::meta\+::replace\+\_\+if\+\_\+impl\+::replace\+\_\+if\+\_\+$<$ typename, typename, typename, typename $>$@{utl\+::meta\+::replace\+\_\+if\+\_\+impl\+::replace\+\_\+if\+\_\+$<$ typename, typename, typename, typename $>$}} + + +{\ttfamily \#include $<$typelist.\+h$>$} + + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename, typename, typename, typename$>$\newline +struct utl\+::meta\+::replace\+\_\+if\+\_\+impl\+::replace\+\_\+if\+\_\+$<$ typename, typename, typename, typename $>$} + + + +Definition at line 807 of file typelist.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{typelist_8h}{typelist.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_01_head_00_01_tail_8_8_8_dfa8065a3617f53ecded260506092a07.tex b/doc/latex/structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_01_head_00_01_tail_8_8_8_dfa8065a3617f53ecded260506092a07.tex new file mode 100644 index 0000000..288c743 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_01_head_00_01_tail_8_8_8_dfa8065a3617f53ecded260506092a07.tex @@ -0,0 +1,40 @@ +\hypertarget{structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_01_head_00_01_tail_8_8_8_dfa8065a3617f53ecded260506092a07}{}\section{utl\+:\+:meta\+:\+:replace\+\_\+if\+\_\+impl\+:\+:replace\+\_\+if\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, T, Ret $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_01_head_00_01_tail_8_8_8_dfa8065a3617f53ecded260506092a07}\index{utl\+::meta\+::replace\+\_\+if\+\_\+impl\+::replace\+\_\+if\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, T, Ret $>$@{utl\+::meta\+::replace\+\_\+if\+\_\+impl\+::replace\+\_\+if\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, T, Ret $>$}} + + +{\ttfamily \#include $<$typelist.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_01_head_00_01_tail_8_8_8_dfa8065a3617f53ecded260506092a07_ad7d3db888c18a6e48ed800f0c484701d}{type}} = \mbox{\hyperlink{group__type_ga39cc4e727a8faa5ea176f543e62c05c0}{if\+\_\+}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_ac27f3e5f3ec42921d9f8a6bb85560cf1}{invoke\+\_\+t}}$<$ Fn, Head $>$, \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1replace__if__impl_1_1replace__if__}{replace\+\_\+if\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ Tail... $>$, Fn, T, \mbox{\hyperlink{namespaceutl_1_1meta_a70d0910ace47f4e12e8fa0788679044a}{cat}}$<$ Ret, \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ T $>$ $>$$>$ $>$, \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1replace__if__impl_1_1replace__if__}{replace\+\_\+if\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ Tail... $>$, Fn, T, \mbox{\hyperlink{namespaceutl_1_1meta_a70d0910ace47f4e12e8fa0788679044a}{cat}}$<$ Ret, \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ Head $>$ $>$$>$ $>$ $>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename Head, typename... Tail, typename Fn, typename T, typename Ret$>$\newline +struct utl\+::meta\+::replace\+\_\+if\+\_\+impl\+::replace\+\_\+if\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, T, Ret $>$} + + + +Definition at line 810 of file typelist.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_01_head_00_01_tail_8_8_8_dfa8065a3617f53ecded260506092a07_ad7d3db888c18a6e48ed800f0c484701d}\label{structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_01_head_00_01_tail_8_8_8_dfa8065a3617f53ecded260506092a07_ad7d3db888c18a6e48ed800f0c484701d}} +\index{utl\+::meta\+::replace\+\_\+if\+\_\+impl\+::replace\+\_\+if\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, T, Ret $>$@{utl\+::meta\+::replace\+\_\+if\+\_\+impl\+::replace\+\_\+if\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, T, Ret $>$}!type@{type}} +\index{type@{type}!utl\+::meta\+::replace\+\_\+if\+\_\+impl\+::replace\+\_\+if\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, T, Ret $>$@{utl\+::meta\+::replace\+\_\+if\+\_\+impl\+::replace\+\_\+if\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, T, Ret $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename Head , typename... Tail, typename Fn , typename T , typename Ret $>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1replace__if__impl_1_1replace__if__}{utl\+::meta\+::replace\+\_\+if\+\_\+impl\+::replace\+\_\+if\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ Head, Tail... $>$, Fn, T, Ret $>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_01_head_00_01_tail_8_8_8_dfa8065a3617f53ecded260506092a07_ad7d3db888c18a6e48ed800f0c484701d}{type}} = \mbox{\hyperlink{group__type_ga39cc4e727a8faa5ea176f543e62c05c0}{if\+\_\+}} $<$ \mbox{\hyperlink{namespaceutl_1_1meta_ac27f3e5f3ec42921d9f8a6bb85560cf1}{invoke\+\_\+t}}$<$Fn, Head$>$, \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$\mbox{\hyperlink{structutl_1_1meta_1_1replace__if__impl_1_1replace__if__}{replace\+\_\+if\+\_\+}}$<$\mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$Tail...$>$, Fn, T, \mbox{\hyperlink{namespaceutl_1_1meta_a70d0910ace47f4e12e8fa0788679044a}{cat}}$<$Ret, \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$T$>$ $>$$>$ $>$, \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$\mbox{\hyperlink{structutl_1_1meta_1_1replace__if__impl_1_1replace__if__}{replace\+\_\+if\+\_\+}}$<$\mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$Tail...$>$, Fn, T, \mbox{\hyperlink{namespaceutl_1_1meta_a70d0910ace47f4e12e8fa0788679044a}{cat}}$<$Ret, \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$Head$>$ $>$$>$ $>$ $>$} + + + +Definition at line 817 of file typelist.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{typelist_8h}{typelist.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_4_00_01_fn_00_01_t_00_01_ret_01_4.tex b/doc/latex/structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_4_00_01_fn_00_01_t_00_01_ret_01_4.tex new file mode 100644 index 0000000..10ff364 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_4_00_01_fn_00_01_t_00_01_ret_01_4.tex @@ -0,0 +1,40 @@ +\hypertarget{structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_4_00_01_fn_00_01_t_00_01_ret_01_4}{}\section{utl\+:\+:meta\+:\+:replace\+\_\+if\+\_\+impl\+:\+:replace\+\_\+if\+\_\+$<$ typelist$<$$>$, Fn, T, Ret $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_4_00_01_fn_00_01_t_00_01_ret_01_4}\index{utl\+::meta\+::replace\+\_\+if\+\_\+impl\+::replace\+\_\+if\+\_\+$<$ typelist$<$$>$, Fn, T, Ret $>$@{utl\+::meta\+::replace\+\_\+if\+\_\+impl\+::replace\+\_\+if\+\_\+$<$ typelist$<$$>$, Fn, T, Ret $>$}} + + +{\ttfamily \#include $<$typelist.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_4_00_01_fn_00_01_t_00_01_ret_01_4_a45470ea1b5d2ddc6ff9054e66b193d78}{type}} = Ret +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename Fn, typename T, typename Ret$>$\newline +struct utl\+::meta\+::replace\+\_\+if\+\_\+impl\+::replace\+\_\+if\+\_\+$<$ typelist$<$$>$, Fn, T, Ret $>$} + + + +Definition at line 822 of file typelist.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_4_00_01_fn_00_01_t_00_01_ret_01_4_a45470ea1b5d2ddc6ff9054e66b193d78}\label{structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_4_00_01_fn_00_01_t_00_01_ret_01_4_a45470ea1b5d2ddc6ff9054e66b193d78}} +\index{utl\+::meta\+::replace\+\_\+if\+\_\+impl\+::replace\+\_\+if\+\_\+$<$ typelist$<$$>$, Fn, T, Ret $>$@{utl\+::meta\+::replace\+\_\+if\+\_\+impl\+::replace\+\_\+if\+\_\+$<$ typelist$<$$>$, Fn, T, Ret $>$}!type@{type}} +\index{type@{type}!utl\+::meta\+::replace\+\_\+if\+\_\+impl\+::replace\+\_\+if\+\_\+$<$ typelist$<$$>$, Fn, T, Ret $>$@{utl\+::meta\+::replace\+\_\+if\+\_\+impl\+::replace\+\_\+if\+\_\+$<$ typelist$<$$>$, Fn, T, Ret $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename Fn , typename T , typename Ret $>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1replace__if__impl_1_1replace__if__}{utl\+::meta\+::replace\+\_\+if\+\_\+impl\+::replace\+\_\+if\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$$>$, Fn, T, Ret $>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_4_00_01_fn_00_01_t_00_01_ret_01_4_a45470ea1b5d2ddc6ff9054e66b193d78}{type}} = Ret} + + + +Definition at line 823 of file typelist.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{typelist_8h}{typelist.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold__.tex b/doc/latex/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold__.tex new file mode 100644 index 0000000..bd7f90f --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold__.tex @@ -0,0 +1,21 @@ +\hypertarget{structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold__}{}\section{utl\+:\+:meta\+:\+:rev\+\_\+fold\+\_\+impl\+:\+:rev\+\_\+fold\+\_\+$<$ typename, typename, typename $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold__}\index{utl\+::meta\+::rev\+\_\+fold\+\_\+impl\+::rev\+\_\+fold\+\_\+$<$ typename, typename, typename $>$@{utl\+::meta\+::rev\+\_\+fold\+\_\+impl\+::rev\+\_\+fold\+\_\+$<$ typename, typename, typename $>$}} + + +{\ttfamily \#include $<$typelist.\+h$>$} + + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename, typename, typename$>$\newline +struct utl\+::meta\+::rev\+\_\+fold\+\_\+impl\+::rev\+\_\+fold\+\_\+$<$ typename, typename, typename $>$} + + + +Definition at line 393 of file typelist.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{typelist_8h}{typelist.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4.tex b/doc/latex/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4.tex new file mode 100644 index 0000000..140b859 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4.tex @@ -0,0 +1,40 @@ +\hypertarget{structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4}{}\section{utl\+:\+:meta\+:\+:rev\+\_\+fold\+\_\+impl\+:\+:rev\+\_\+fold\+\_\+$<$ typelist$<$ Head, Tail... $>$, V, Fn $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4}\index{utl\+::meta\+::rev\+\_\+fold\+\_\+impl\+::rev\+\_\+fold\+\_\+$<$ typelist$<$ Head, Tail... $>$, V, Fn $>$@{utl\+::meta\+::rev\+\_\+fold\+\_\+impl\+::rev\+\_\+fold\+\_\+$<$ typelist$<$ Head, Tail... $>$, V, Fn $>$}} + + +{\ttfamily \#include $<$typelist.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4_ad7c51dcac1ed18739bdce2eb75695a7a}{type}} = \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}}$<$ Fn, Head, \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold__}{rev\+\_\+fold\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ Tail... $>$, V, Fn $>$ $>$ $>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename Head, typename... Tail, typename V, typename Fn$>$\newline +struct utl\+::meta\+::rev\+\_\+fold\+\_\+impl\+::rev\+\_\+fold\+\_\+$<$ typelist$<$ Head, Tail... $>$, V, Fn $>$} + + + +Definition at line 399 of file typelist.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4_ad7c51dcac1ed18739bdce2eb75695a7a}\label{structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4_ad7c51dcac1ed18739bdce2eb75695a7a}} +\index{utl\+::meta\+::rev\+\_\+fold\+\_\+impl\+::rev\+\_\+fold\+\_\+$<$ typelist$<$ Head, Tail... $>$, V, Fn $>$@{utl\+::meta\+::rev\+\_\+fold\+\_\+impl\+::rev\+\_\+fold\+\_\+$<$ typelist$<$ Head, Tail... $>$, V, Fn $>$}!type@{type}} +\index{type@{type}!utl\+::meta\+::rev\+\_\+fold\+\_\+impl\+::rev\+\_\+fold\+\_\+$<$ typelist$<$ Head, Tail... $>$, V, Fn $>$@{utl\+::meta\+::rev\+\_\+fold\+\_\+impl\+::rev\+\_\+fold\+\_\+$<$ typelist$<$ Head, Tail... $>$, V, Fn $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename Head , typename... Tail, typename V , typename Fn $>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold__}{utl\+::meta\+::rev\+\_\+fold\+\_\+impl\+::rev\+\_\+fold\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ Head, Tail... $>$, V, Fn $>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4_ad7c51dcac1ed18739bdce2eb75695a7a}{type}} = \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}} $<$ Fn, Head, \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold__}{rev\+\_\+fold\+\_\+}} $<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$Tail...$>$, V, Fn $>$ $>$ $>$} + + + +Definition at line 409 of file typelist.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{typelist_8h}{typelist.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_tail_01_4_00_01_v_00_01_fn_01_4.tex b/doc/latex/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_tail_01_4_00_01_v_00_01_fn_01_4.tex new file mode 100644 index 0000000..04f8af9 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_tail_01_4_00_01_v_00_01_fn_01_4.tex @@ -0,0 +1,40 @@ +\hypertarget{structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_tail_01_4_00_01_v_00_01_fn_01_4}{}\section{utl\+:\+:meta\+:\+:rev\+\_\+fold\+\_\+impl\+:\+:rev\+\_\+fold\+\_\+$<$ typelist$<$ Tail $>$, V, Fn $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_tail_01_4_00_01_v_00_01_fn_01_4}\index{utl\+::meta\+::rev\+\_\+fold\+\_\+impl\+::rev\+\_\+fold\+\_\+$<$ typelist$<$ Tail $>$, V, Fn $>$@{utl\+::meta\+::rev\+\_\+fold\+\_\+impl\+::rev\+\_\+fold\+\_\+$<$ typelist$<$ Tail $>$, V, Fn $>$}} + + +{\ttfamily \#include $<$typelist.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_tail_01_4_00_01_v_00_01_fn_01_4_a84a91d7ad7d46de8f4b4b2237c75b3e8}{type}} = \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}}$<$ Fn, Tail, V $>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename Tail, typename V, typename Fn$>$\newline +struct utl\+::meta\+::rev\+\_\+fold\+\_\+impl\+::rev\+\_\+fold\+\_\+$<$ typelist$<$ Tail $>$, V, Fn $>$} + + + +Definition at line 413 of file typelist.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_tail_01_4_00_01_v_00_01_fn_01_4_a84a91d7ad7d46de8f4b4b2237c75b3e8}\label{structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_tail_01_4_00_01_v_00_01_fn_01_4_a84a91d7ad7d46de8f4b4b2237c75b3e8}} +\index{utl\+::meta\+::rev\+\_\+fold\+\_\+impl\+::rev\+\_\+fold\+\_\+$<$ typelist$<$ Tail $>$, V, Fn $>$@{utl\+::meta\+::rev\+\_\+fold\+\_\+impl\+::rev\+\_\+fold\+\_\+$<$ typelist$<$ Tail $>$, V, Fn $>$}!type@{type}} +\index{type@{type}!utl\+::meta\+::rev\+\_\+fold\+\_\+impl\+::rev\+\_\+fold\+\_\+$<$ typelist$<$ Tail $>$, V, Fn $>$@{utl\+::meta\+::rev\+\_\+fold\+\_\+impl\+::rev\+\_\+fold\+\_\+$<$ typelist$<$ Tail $>$, V, Fn $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename Tail , typename V , typename Fn $>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold__}{utl\+::meta\+::rev\+\_\+fold\+\_\+impl\+::rev\+\_\+fold\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ Tail $>$, V, Fn $>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_tail_01_4_00_01_v_00_01_fn_01_4_a84a91d7ad7d46de8f4b4b2237c75b3e8}{type}} = \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}}$<$Fn, Tail, V$>$} + + + +Definition at line 414 of file typelist.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{typelist_8h}{typelist.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_4_00_01_v_00_01_fn_01_4.tex b/doc/latex/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_4_00_01_v_00_01_fn_01_4.tex new file mode 100644 index 0000000..a0bc3ab --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_4_00_01_v_00_01_fn_01_4.tex @@ -0,0 +1,40 @@ +\hypertarget{structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_4_00_01_v_00_01_fn_01_4}{}\section{utl\+:\+:meta\+:\+:rev\+\_\+fold\+\_\+impl\+:\+:rev\+\_\+fold\+\_\+$<$ typelist$<$$>$, V, Fn $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_4_00_01_v_00_01_fn_01_4}\index{utl\+::meta\+::rev\+\_\+fold\+\_\+impl\+::rev\+\_\+fold\+\_\+$<$ typelist$<$$>$, V, Fn $>$@{utl\+::meta\+::rev\+\_\+fold\+\_\+impl\+::rev\+\_\+fold\+\_\+$<$ typelist$<$$>$, V, Fn $>$}} + + +{\ttfamily \#include $<$typelist.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_4_00_01_v_00_01_fn_01_4_a07d723d69e4acba3b20a1d47c4c6da35}{type}} = V +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename V, typename Fn$>$\newline +struct utl\+::meta\+::rev\+\_\+fold\+\_\+impl\+::rev\+\_\+fold\+\_\+$<$ typelist$<$$>$, V, Fn $>$} + + + +Definition at line 418 of file typelist.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_4_00_01_v_00_01_fn_01_4_a07d723d69e4acba3b20a1d47c4c6da35}\label{structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_4_00_01_v_00_01_fn_01_4_a07d723d69e4acba3b20a1d47c4c6da35}} +\index{utl\+::meta\+::rev\+\_\+fold\+\_\+impl\+::rev\+\_\+fold\+\_\+$<$ typelist$<$$>$, V, Fn $>$@{utl\+::meta\+::rev\+\_\+fold\+\_\+impl\+::rev\+\_\+fold\+\_\+$<$ typelist$<$$>$, V, Fn $>$}!type@{type}} +\index{type@{type}!utl\+::meta\+::rev\+\_\+fold\+\_\+impl\+::rev\+\_\+fold\+\_\+$<$ typelist$<$$>$, V, Fn $>$@{utl\+::meta\+::rev\+\_\+fold\+\_\+impl\+::rev\+\_\+fold\+\_\+$<$ typelist$<$$>$, V, Fn $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename V , typename Fn $>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold__}{utl\+::meta\+::rev\+\_\+fold\+\_\+impl\+::rev\+\_\+fold\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$$>$, V, Fn $>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_4_00_01_v_00_01_fn_01_4_a07d723d69e4acba3b20a1d47c4c6da35}{type}} = V} + + + +Definition at line 419 of file typelist.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{typelist_8h}{typelist.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1reverse__impl_1_1reverse__.tex b/doc/latex/structutl_1_1meta_1_1reverse__impl_1_1reverse__.tex new file mode 100644 index 0000000..21077dc --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1reverse__impl_1_1reverse__.tex @@ -0,0 +1,43 @@ +\hypertarget{structutl_1_1meta_1_1reverse__impl_1_1reverse__}{}\section{utl\+:\+:meta\+:\+:reverse\+\_\+impl\+:\+:reverse\+\_\+$<$ List, V $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1reverse__impl_1_1reverse__}\index{utl\+::meta\+::reverse\+\_\+impl\+::reverse\+\_\+$<$ List, V $>$@{utl\+::meta\+::reverse\+\_\+impl\+::reverse\+\_\+$<$ List, V $>$}} + + +{\ttfamily \#include $<$typelist.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1meta_1_1reverse__impl_1_1reverse___ad1618828ac681258d9909839df60dd39}{type}} = \mbox{\hyperlink{namespaceutl_1_1meta_a6108f39d28c924146eff4143a61af226}{fold}}$<$ List, V, \mbox{\hyperlink{structutl_1_1meta_1_1quote}{quote}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_ab0f84ba0807b6fd36fa9e4e5cfc4cd32}{push\+\_\+front}} $>$ $>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename List, typename V = typelist$<$$>$$>$\newline +struct utl\+::meta\+::reverse\+\_\+impl\+::reverse\+\_\+$<$ List, V $>$} + + + +Definition at line 467 of file typelist.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1reverse__impl_1_1reverse___ad1618828ac681258d9909839df60dd39}\label{structutl_1_1meta_1_1reverse__impl_1_1reverse___ad1618828ac681258d9909839df60dd39}} +\index{utl\+::meta\+::reverse\+\_\+impl\+::reverse\+\_\+@{utl\+::meta\+::reverse\+\_\+impl\+::reverse\+\_\+}!type@{type}} +\index{type@{type}!utl\+::meta\+::reverse\+\_\+impl\+::reverse\+\_\+@{utl\+::meta\+::reverse\+\_\+impl\+::reverse\+\_\+}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename List , typename V = typelist$<$$>$$>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1reverse__impl_1_1reverse__}{utl\+::meta\+::reverse\+\_\+impl\+::reverse\+\_\+}}$<$ List, V $>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1reverse__impl_1_1reverse___ad1618828ac681258d9909839df60dd39}{type}} = \mbox{\hyperlink{namespaceutl_1_1meta_a6108f39d28c924146eff4143a61af226}{fold}}$<$List, V, \mbox{\hyperlink{structutl_1_1meta_1_1quote}{quote}}$<$\mbox{\hyperlink{namespaceutl_1_1meta_ab0f84ba0807b6fd36fa9e4e5cfc4cd32}{push\+\_\+front}}$>$ $>$} + +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} + + +Definition at line 468 of file typelist.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{typelist_8h}{typelist.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1same__.eps b/doc/latex/structutl_1_1meta_1_1same__.eps new file mode 100644 index 0000000..b36252c --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1same__.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 219.780220 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.275000 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::meta::same_< _T1, _T2 >) cw +(false_) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::meta::same_< _T1, _T2 >) 0.000000 0.000000 box + (false_) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/structutl_1_1meta_1_1same__.tex b/doc/latex/structutl_1_1meta_1_1same__.tex new file mode 100644 index 0000000..c3cc598 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1same__.tex @@ -0,0 +1,27 @@ +\hypertarget{structutl_1_1meta_1_1same__}{}\section{utl\+:\+:meta\+:\+:same\+\_\+$<$ \+\_\+\+T1, \+\_\+\+T2 $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1same__}\index{utl\+::meta\+::same\+\_\+$<$ \+\_\+\+T1, \+\_\+\+T2 $>$@{utl\+::meta\+::same\+\_\+$<$ \+\_\+\+T1, \+\_\+\+T2 $>$}} + + +{\ttfamily \#include $<$operations.\+h$>$} + +Inheritance diagram for utl\+:\+:meta\+:\+:same\+\_\+$<$ \+\_\+\+T1, \+\_\+\+T2 $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{structutl_1_1meta_1_1same__} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename \+\_\+\+T1, typename \+\_\+\+T2$>$\newline +struct utl\+::meta\+::same\+\_\+$<$ \+\_\+\+T1, \+\_\+\+T2 $>$} + +same + +Definition at line 102 of file operations.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{operations_8h}{operations.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1same___3_01___tp_00_01___tp_01_4.eps b/doc/latex/structutl_1_1meta_1_1same___3_01___tp_00_01___tp_01_4.eps new file mode 100644 index 0000000..f9ac224 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1same___3_01___tp_00_01___tp_01_4.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 219.780220 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 2.275000 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::meta::same_< _Tp, _Tp >) cw +(true_) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::meta::same_< _Tp, _Tp >) 0.000000 0.000000 box + (true_) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/structutl_1_1meta_1_1same___3_01___tp_00_01___tp_01_4.tex b/doc/latex/structutl_1_1meta_1_1same___3_01___tp_00_01___tp_01_4.tex new file mode 100644 index 0000000..49cd639 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1same___3_01___tp_00_01___tp_01_4.tex @@ -0,0 +1,27 @@ +\hypertarget{structutl_1_1meta_1_1same___3_01___tp_00_01___tp_01_4}{}\section{utl\+:\+:meta\+:\+:same\+\_\+$<$ \+\_\+\+Tp, \+\_\+\+Tp $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1same___3_01___tp_00_01___tp_01_4}\index{utl\+::meta\+::same\+\_\+$<$ \+\_\+\+Tp, \+\_\+\+Tp $>$@{utl\+::meta\+::same\+\_\+$<$ \+\_\+\+Tp, \+\_\+\+Tp $>$}} + + +{\ttfamily \#include $<$operations.\+h$>$} + +Inheritance diagram for utl\+:\+:meta\+:\+:same\+\_\+$<$ \+\_\+\+Tp, \+\_\+\+Tp $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{structutl_1_1meta_1_1same___3_01___tp_00_01___tp_01_4} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename \+\_\+\+Tp$>$\newline +struct utl\+::meta\+::same\+\_\+$<$ \+\_\+\+Tp, \+\_\+\+Tp $>$} + + + +Definition at line 105 of file operations.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{operations_8h}{operations.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1same__as.tex b/doc/latex/structutl_1_1meta_1_1same__as.tex new file mode 100644 index 0000000..64da502 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1same__as.tex @@ -0,0 +1,26 @@ +\hypertarget{structutl_1_1meta_1_1same__as}{}\section{utl\+:\+:meta\+:\+:same\+\_\+as$<$ T1 $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1same__as}\index{utl\+::meta\+::same\+\_\+as$<$ T1 $>$@{utl\+::meta\+::same\+\_\+as$<$ T1 $>$}} + + +{\ttfamily \#include $<$invoke.\+h$>$} + +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1same__as_1_1apply}{apply}} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T1$>$\newline +struct utl\+::meta\+::same\+\_\+as$<$ T1 $>$} + + + +Definition at line 352 of file invoke.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{meta_2invoke_8h}{invoke.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1same__as_1_1apply.eps b/doc/latex/structutl_1_1meta_1_1same__as_1_1apply.eps new file mode 100644 index 0000000..1671193 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1same__as_1_1apply.eps @@ -0,0 +1,203 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 257.510730 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 1.941667 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 3 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::meta::same_as< T1 >::apply< T2 >) cw +(utl::meta::same_< T1, T2 >) cw +(false_) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::meta::same_as< T1 >::apply< T2 >) 0.000000 0.000000 box + (utl::meta::same_< T1, T2 >) 0.000000 1.000000 box + (false_) 0.000000 2.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in +solid +0 0.000000 1.000000 out +solid +1 0.000000 2.000000 in diff --git a/doc/latex/structutl_1_1meta_1_1same__as_1_1apply.tex b/doc/latex/structutl_1_1meta_1_1same__as_1_1apply.tex new file mode 100644 index 0000000..174af12 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1same__as_1_1apply.tex @@ -0,0 +1,28 @@ +\hypertarget{structutl_1_1meta_1_1same__as_1_1apply}{}\section{utl\+:\+:meta\+:\+:same\+\_\+as$<$ T1 $>$\+:\+:apply$<$ T2 $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1same__as_1_1apply}\index{utl\+::meta\+::same\+\_\+as$<$ T1 $>$\+::apply$<$ T2 $>$@{utl\+::meta\+::same\+\_\+as$<$ T1 $>$\+::apply$<$ T2 $>$}} + + +{\ttfamily \#include $<$invoke.\+h$>$} + +Inheritance diagram for utl\+:\+:meta\+:\+:same\+\_\+as$<$ T1 $>$\+:\+:apply$<$ T2 $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=3.000000cm]{structutl_1_1meta_1_1same__as_1_1apply} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T1$>$\newline +template$<$typename T2$>$\newline +struct utl\+::meta\+::same\+\_\+as$<$ T1 $>$\+::apply$<$ T2 $>$} + + + +Definition at line 354 of file invoke.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{meta_2invoke_8h}{invoke.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1seek__if__impl_1_1seek__if__.tex b/doc/latex/structutl_1_1meta_1_1seek__if__impl_1_1seek__if__.tex new file mode 100644 index 0000000..c561cf1 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1seek__if__impl_1_1seek__if__.tex @@ -0,0 +1,21 @@ +\hypertarget{structutl_1_1meta_1_1seek__if__impl_1_1seek__if__}{}\section{utl\+:\+:meta\+:\+:seek\+\_\+if\+\_\+impl\+:\+:seek\+\_\+if\+\_\+$<$ typename, typename, index\+\_\+t $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1seek__if__impl_1_1seek__if__}\index{utl\+::meta\+::seek\+\_\+if\+\_\+impl\+::seek\+\_\+if\+\_\+$<$ typename, typename, index\+\_\+t $>$@{utl\+::meta\+::seek\+\_\+if\+\_\+impl\+::seek\+\_\+if\+\_\+$<$ typename, typename, index\+\_\+t $>$}} + + +{\ttfamily \#include $<$typelist.\+h$>$} + + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename, typename, index\+\_\+t$>$\newline +struct utl\+::meta\+::seek\+\_\+if\+\_\+impl\+::seek\+\_\+if\+\_\+$<$ typename, typename, index\+\_\+t $>$} + + + +Definition at line 670 of file typelist.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{typelist_8h}{typelist.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.tex b/doc/latex/structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.tex new file mode 100644 index 0000000..3dec283 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4.tex @@ -0,0 +1,40 @@ +\hypertarget{structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4}{}\section{utl\+:\+:meta\+:\+:seek\+\_\+if\+\_\+impl\+:\+:seek\+\_\+if\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, N $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4}\index{utl\+::meta\+::seek\+\_\+if\+\_\+impl\+::seek\+\_\+if\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, N $>$@{utl\+::meta\+::seek\+\_\+if\+\_\+impl\+::seek\+\_\+if\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, N $>$}} + + +{\ttfamily \#include $<$typelist.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4_a2eddb7dab6c905a487811e253dc5b917}{type}} = \mbox{\hyperlink{group__type_ga39cc4e727a8faa5ea176f543e62c05c0}{if\+\_\+}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_ac27f3e5f3ec42921d9f8a6bb85560cf1}{invoke\+\_\+t}}$<$ Fn, Head $>$, \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ Head, Tail... $>$, \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1seek__if__impl_1_1seek__if__}{seek\+\_\+if\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ Tail... $>$, Fn, N+1 $>$ $>$ $>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename Head, typename... Tail, typename Fn, index\+\_\+t N$>$\newline +struct utl\+::meta\+::seek\+\_\+if\+\_\+impl\+::seek\+\_\+if\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, N $>$} + + + +Definition at line 673 of file typelist.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4_a2eddb7dab6c905a487811e253dc5b917}\label{structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4_a2eddb7dab6c905a487811e253dc5b917}} +\index{utl\+::meta\+::seek\+\_\+if\+\_\+impl\+::seek\+\_\+if\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, N $>$@{utl\+::meta\+::seek\+\_\+if\+\_\+impl\+::seek\+\_\+if\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, N $>$}!type@{type}} +\index{type@{type}!utl\+::meta\+::seek\+\_\+if\+\_\+impl\+::seek\+\_\+if\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, N $>$@{utl\+::meta\+::seek\+\_\+if\+\_\+impl\+::seek\+\_\+if\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, N $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename Head , typename... Tail, typename Fn , index\+\_\+t N$>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1seek__if__impl_1_1seek__if__}{utl\+::meta\+::seek\+\_\+if\+\_\+impl\+::seek\+\_\+if\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ Head, Tail... $>$, Fn, N $>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4_a2eddb7dab6c905a487811e253dc5b917}{type}} = \mbox{\hyperlink{group__type_ga39cc4e727a8faa5ea176f543e62c05c0}{if\+\_\+}} $<$ \mbox{\hyperlink{namespaceutl_1_1meta_ac27f3e5f3ec42921d9f8a6bb85560cf1}{invoke\+\_\+t}}$<$Fn, Head$>$, \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$Head, Tail...$>$, \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$\mbox{\hyperlink{structutl_1_1meta_1_1seek__if__impl_1_1seek__if__}{seek\+\_\+if\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$Tail...$>$, Fn, N+1$>$ $>$ $>$} + + + +Definition at line 681 of file typelist.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{typelist_8h}{typelist.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.tex b/doc/latex/structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.tex new file mode 100644 index 0000000..ff71fbb --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4.tex @@ -0,0 +1,40 @@ +\hypertarget{structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4}{}\section{utl\+:\+:meta\+:\+:seek\+\_\+if\+\_\+impl\+:\+:seek\+\_\+if\+\_\+$<$ typelist$<$$>$, Fn, N $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4}\index{utl\+::meta\+::seek\+\_\+if\+\_\+impl\+::seek\+\_\+if\+\_\+$<$ typelist$<$$>$, Fn, N $>$@{utl\+::meta\+::seek\+\_\+if\+\_\+impl\+::seek\+\_\+if\+\_\+$<$ typelist$<$$>$, Fn, N $>$}} + + +{\ttfamily \#include $<$typelist.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4_a4a8d37653df9971c37bba6bfc346d009}{type}} = \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$$>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename Fn, index\+\_\+t N$>$\newline +struct utl\+::meta\+::seek\+\_\+if\+\_\+impl\+::seek\+\_\+if\+\_\+$<$ typelist$<$$>$, Fn, N $>$} + + + +Definition at line 686 of file typelist.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4_a4a8d37653df9971c37bba6bfc346d009}\label{structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4_a4a8d37653df9971c37bba6bfc346d009}} +\index{utl\+::meta\+::seek\+\_\+if\+\_\+impl\+::seek\+\_\+if\+\_\+$<$ typelist$<$$>$, Fn, N $>$@{utl\+::meta\+::seek\+\_\+if\+\_\+impl\+::seek\+\_\+if\+\_\+$<$ typelist$<$$>$, Fn, N $>$}!type@{type}} +\index{type@{type}!utl\+::meta\+::seek\+\_\+if\+\_\+impl\+::seek\+\_\+if\+\_\+$<$ typelist$<$$>$, Fn, N $>$@{utl\+::meta\+::seek\+\_\+if\+\_\+impl\+::seek\+\_\+if\+\_\+$<$ typelist$<$$>$, Fn, N $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename Fn , index\+\_\+t N$>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1seek__if__impl_1_1seek__if__}{utl\+::meta\+::seek\+\_\+if\+\_\+impl\+::seek\+\_\+if\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$$>$, Fn, N $>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4_a4a8d37653df9971c37bba6bfc346d009}{type}} = \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$$>$} + + + +Definition at line 687 of file typelist.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{typelist_8h}{typelist.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1transform__impl_1_1transform__.tex b/doc/latex/structutl_1_1meta_1_1transform__impl_1_1transform__.tex new file mode 100644 index 0000000..be51bcf --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1transform__impl_1_1transform__.tex @@ -0,0 +1,21 @@ +\hypertarget{structutl_1_1meta_1_1transform__impl_1_1transform__}{}\section{utl\+:\+:meta\+:\+:transform\+\_\+impl\+:\+:transform\+\_\+$<$ typename, typename $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1transform__impl_1_1transform__}\index{utl\+::meta\+::transform\+\_\+impl\+::transform\+\_\+$<$ typename, typename $>$@{utl\+::meta\+::transform\+\_\+impl\+::transform\+\_\+$<$ typename, typename $>$}} + + +{\ttfamily \#include $<$typelist.\+h$>$} + + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename, typename = void$>$\newline +struct utl\+::meta\+::transform\+\_\+impl\+::transform\+\_\+$<$ typename, typename $>$} + + + +Definition at line 533 of file typelist.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{typelist_8h}{typelist.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts0_8_8_8_01_8fba6bf3d0565d17a96950cb517db5f1.tex b/doc/latex/structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts0_8_8_8_01_8fba6bf3d0565d17a96950cb517db5f1.tex new file mode 100644 index 0000000..2d92bd5 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts0_8_8_8_01_8fba6bf3d0565d17a96950cb517db5f1.tex @@ -0,0 +1,40 @@ +\hypertarget{structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts0_8_8_8_01_8fba6bf3d0565d17a96950cb517db5f1}{}\section{utl\+:\+:meta\+:\+:transform\+\_\+impl\+:\+:transform\+\_\+$<$ typelist$<$ typelist$<$ Ts0... $>$, typelist$<$ Ts1... $>$, Fn $>$, void\+\_\+t$<$ invoke$<$ Fn, Ts0, Ts1 $>$... $>$ $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts0_8_8_8_01_8fba6bf3d0565d17a96950cb517db5f1}\index{utl\+::meta\+::transform\+\_\+impl\+::transform\+\_\+$<$ typelist$<$ typelist$<$ Ts0... $>$, typelist$<$ Ts1... $>$, Fn $>$, void\+\_\+t$<$ invoke$<$ Fn, Ts0, Ts1 $>$... $>$ $>$@{utl\+::meta\+::transform\+\_\+impl\+::transform\+\_\+$<$ typelist$<$ typelist$<$ Ts0... $>$, typelist$<$ Ts1... $>$, Fn $>$, void\+\_\+t$<$ invoke$<$ Fn, Ts0, Ts1 $>$... $>$ $>$}} + + +{\ttfamily \#include $<$typelist.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts0_8_8_8_01_8fba6bf3d0565d17a96950cb517db5f1_a284cc6268deadee714a5107d5d153285}{type}} = \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_ac27f3e5f3ec42921d9f8a6bb85560cf1}{invoke\+\_\+t}}$<$ Fn, Ts0, Ts1 $>$... $>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename... Ts0, typename... Ts1, typename Fn$>$\newline +struct utl\+::meta\+::transform\+\_\+impl\+::transform\+\_\+$<$ typelist$<$ typelist$<$ Ts0... $>$, typelist$<$ Ts1... $>$, Fn $>$, void\+\_\+t$<$ invoke$<$ Fn, Ts0, Ts1 $>$... $>$ $>$} + + + +Definition at line 544 of file typelist.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts0_8_8_8_01_8fba6bf3d0565d17a96950cb517db5f1_a284cc6268deadee714a5107d5d153285}\label{structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts0_8_8_8_01_8fba6bf3d0565d17a96950cb517db5f1_a284cc6268deadee714a5107d5d153285}} +\index{utl\+::meta\+::transform\+\_\+impl\+::transform\+\_\+$<$ typelist$<$ typelist$<$ Ts0... $>$, typelist$<$ Ts1... $>$, Fn $>$, void\+\_\+t$<$ invoke$<$ Fn, Ts0, Ts1 $>$... $>$ $>$@{utl\+::meta\+::transform\+\_\+impl\+::transform\+\_\+$<$ typelist$<$ typelist$<$ Ts0... $>$, typelist$<$ Ts1... $>$, Fn $>$, void\+\_\+t$<$ invoke$<$ Fn, Ts0, Ts1 $>$... $>$ $>$}!type@{type}} +\index{type@{type}!utl\+::meta\+::transform\+\_\+impl\+::transform\+\_\+$<$ typelist$<$ typelist$<$ Ts0... $>$, typelist$<$ Ts1... $>$, Fn $>$, void\+\_\+t$<$ invoke$<$ Fn, Ts0, Ts1 $>$... $>$ $>$@{utl\+::meta\+::transform\+\_\+impl\+::transform\+\_\+$<$ typelist$<$ typelist$<$ Ts0... $>$, typelist$<$ Ts1... $>$, Fn $>$, void\+\_\+t$<$ invoke$<$ Fn, Ts0, Ts1 $>$... $>$ $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename... Ts0, typename... Ts1, typename Fn $>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1transform__impl_1_1transform__}{utl\+::meta\+::transform\+\_\+impl\+::transform\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ Ts0... $>$, \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ Ts1... $>$, Fn $>$, \mbox{\hyperlink{group__detection_gae7373c997420d16cf37e542eb3cfa3ad}{void\+\_\+t}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}}$<$ Fn, Ts0, Ts1 $>$... $>$ $>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts0_8_8_8_01_8fba6bf3d0565d17a96950cb517db5f1_a284cc6268deadee714a5107d5d153285}{type}} = \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_ac27f3e5f3ec42921d9f8a6bb85560cf1}{invoke\+\_\+t}}$<$Fn, Ts0, Ts1$>$... $>$} + + + +Definition at line 548 of file typelist.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{typelist_8h}{typelist.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts_8_8_8_01_40fe2b1c8ede658aadb6925de73541689.tex b/doc/latex/structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts_8_8_8_01_40fe2b1c8ede658aadb6925de73541689.tex new file mode 100644 index 0000000..69452d7 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts_8_8_8_01_40fe2b1c8ede658aadb6925de73541689.tex @@ -0,0 +1,40 @@ +\hypertarget{structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts_8_8_8_01_40fe2b1c8ede658aadb6925de73541689}{}\section{utl\+:\+:meta\+:\+:transform\+\_\+impl\+:\+:transform\+\_\+$<$ typelist$<$ typelist$<$ Ts... $>$, Fn $>$, void\+\_\+t$<$ invoke$<$ Fn, Ts $>$... $>$ $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts_8_8_8_01_40fe2b1c8ede658aadb6925de73541689}\index{utl\+::meta\+::transform\+\_\+impl\+::transform\+\_\+$<$ typelist$<$ typelist$<$ Ts... $>$, Fn $>$, void\+\_\+t$<$ invoke$<$ Fn, Ts $>$... $>$ $>$@{utl\+::meta\+::transform\+\_\+impl\+::transform\+\_\+$<$ typelist$<$ typelist$<$ Ts... $>$, Fn $>$, void\+\_\+t$<$ invoke$<$ Fn, Ts $>$... $>$ $>$}} + + +{\ttfamily \#include $<$typelist.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts_8_8_8_01_40fe2b1c8ede658aadb6925de73541689_afb15f91a804a184a7b614c632737f0d0}{type}} = \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_ac27f3e5f3ec42921d9f8a6bb85560cf1}{invoke\+\_\+t}}$<$ Fn, Ts $>$... $>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename... Ts, typename Fn$>$\newline +struct utl\+::meta\+::transform\+\_\+impl\+::transform\+\_\+$<$ typelist$<$ typelist$<$ Ts... $>$, Fn $>$, void\+\_\+t$<$ invoke$<$ Fn, Ts $>$... $>$ $>$} + + + +Definition at line 536 of file typelist.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts_8_8_8_01_40fe2b1c8ede658aadb6925de73541689_afb15f91a804a184a7b614c632737f0d0}\label{structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts_8_8_8_01_40fe2b1c8ede658aadb6925de73541689_afb15f91a804a184a7b614c632737f0d0}} +\index{utl\+::meta\+::transform\+\_\+impl\+::transform\+\_\+$<$ typelist$<$ typelist$<$ Ts... $>$, Fn $>$, void\+\_\+t$<$ invoke$<$ Fn, Ts $>$... $>$ $>$@{utl\+::meta\+::transform\+\_\+impl\+::transform\+\_\+$<$ typelist$<$ typelist$<$ Ts... $>$, Fn $>$, void\+\_\+t$<$ invoke$<$ Fn, Ts $>$... $>$ $>$}!type@{type}} +\index{type@{type}!utl\+::meta\+::transform\+\_\+impl\+::transform\+\_\+$<$ typelist$<$ typelist$<$ Ts... $>$, Fn $>$, void\+\_\+t$<$ invoke$<$ Fn, Ts $>$... $>$ $>$@{utl\+::meta\+::transform\+\_\+impl\+::transform\+\_\+$<$ typelist$<$ typelist$<$ Ts... $>$, Fn $>$, void\+\_\+t$<$ invoke$<$ Fn, Ts $>$... $>$ $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename... Ts, typename Fn $>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1transform__impl_1_1transform__}{utl\+::meta\+::transform\+\_\+impl\+::transform\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ Ts... $>$, Fn $>$, \mbox{\hyperlink{group__detection_gae7373c997420d16cf37e542eb3cfa3ad}{void\+\_\+t}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}}$<$ Fn, Ts $>$... $>$ $>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts_8_8_8_01_40fe2b1c8ede658aadb6925de73541689_afb15f91a804a184a7b614c632737f0d0}{type}} = \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_ac27f3e5f3ec42921d9f8a6bb85560cf1}{invoke\+\_\+t}}$<$Fn, Ts$>$... $>$} + + + +Definition at line 540 of file typelist.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{typelist_8h}{typelist.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy__.tex b/doc/latex/structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy__.tex new file mode 100644 index 0000000..f76622e --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy__.tex @@ -0,0 +1,21 @@ +\hypertarget{structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy__}{}\section{utl\+:\+:meta\+:\+:transform\+\_\+lazy\+\_\+impl\+:\+:transform\+\_\+lazy\+\_\+$<$ typename, typename $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy__}\index{utl\+::meta\+::transform\+\_\+lazy\+\_\+impl\+::transform\+\_\+lazy\+\_\+$<$ typename, typename $>$@{utl\+::meta\+::transform\+\_\+lazy\+\_\+impl\+::transform\+\_\+lazy\+\_\+$<$ typename, typename $>$}} + + +{\ttfamily \#include $<$typelist.\+h$>$} + + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename, typename = void$>$\newline +struct utl\+::meta\+::transform\+\_\+lazy\+\_\+impl\+::transform\+\_\+lazy\+\_\+$<$ typename, typename $>$} + + + +Definition at line 575 of file typelist.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{typelist_8h}{typelist.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t14ff615a4bff6c4c3701df9c38aaa6a5.tex b/doc/latex/structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t14ff615a4bff6c4c3701df9c38aaa6a5.tex new file mode 100644 index 0000000..bcff928 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t14ff615a4bff6c4c3701df9c38aaa6a5.tex @@ -0,0 +1,40 @@ +\hypertarget{structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t14ff615a4bff6c4c3701df9c38aaa6a5}{}\section{utl\+:\+:meta\+:\+:transform\+\_\+lazy\+\_\+impl\+:\+:transform\+\_\+lazy\+\_\+$<$ typelist$<$ typelist$<$ Ts0... $>$, typelist$<$ Ts1... $>$, Fn $>$, void\+\_\+t$<$ invoke$<$ Fn, Ts0, Ts1 $>$... $>$ $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t14ff615a4bff6c4c3701df9c38aaa6a5}\index{utl\+::meta\+::transform\+\_\+lazy\+\_\+impl\+::transform\+\_\+lazy\+\_\+$<$ typelist$<$ typelist$<$ Ts0... $>$, typelist$<$ Ts1... $>$, Fn $>$, void\+\_\+t$<$ invoke$<$ Fn, Ts0, Ts1 $>$... $>$ $>$@{utl\+::meta\+::transform\+\_\+lazy\+\_\+impl\+::transform\+\_\+lazy\+\_\+$<$ typelist$<$ typelist$<$ Ts0... $>$, typelist$<$ Ts1... $>$, Fn $>$, void\+\_\+t$<$ invoke$<$ Fn, Ts0, Ts1 $>$... $>$ $>$}} + + +{\ttfamily \#include $<$typelist.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t14ff615a4bff6c4c3701df9c38aaa6a5_a09eb2a1f5d8fa4468eef608f5abfa22d}{type}} = \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}}$<$ Fn, Ts0, Ts1 $>$... $>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename... Ts0, typename... Ts1, typename Fn$>$\newline +struct utl\+::meta\+::transform\+\_\+lazy\+\_\+impl\+::transform\+\_\+lazy\+\_\+$<$ typelist$<$ typelist$<$ Ts0... $>$, typelist$<$ Ts1... $>$, Fn $>$, void\+\_\+t$<$ invoke$<$ Fn, Ts0, Ts1 $>$... $>$ $>$} + + + +Definition at line 588 of file typelist.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t14ff615a4bff6c4c3701df9c38aaa6a5_a09eb2a1f5d8fa4468eef608f5abfa22d}\label{structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t14ff615a4bff6c4c3701df9c38aaa6a5_a09eb2a1f5d8fa4468eef608f5abfa22d}} +\index{utl\+::meta\+::transform\+\_\+lazy\+\_\+impl\+::transform\+\_\+lazy\+\_\+$<$ typelist$<$ typelist$<$ Ts0... $>$, typelist$<$ Ts1... $>$, Fn $>$, void\+\_\+t$<$ invoke$<$ Fn, Ts0, Ts1 $>$... $>$ $>$@{utl\+::meta\+::transform\+\_\+lazy\+\_\+impl\+::transform\+\_\+lazy\+\_\+$<$ typelist$<$ typelist$<$ Ts0... $>$, typelist$<$ Ts1... $>$, Fn $>$, void\+\_\+t$<$ invoke$<$ Fn, Ts0, Ts1 $>$... $>$ $>$}!type@{type}} +\index{type@{type}!utl\+::meta\+::transform\+\_\+lazy\+\_\+impl\+::transform\+\_\+lazy\+\_\+$<$ typelist$<$ typelist$<$ Ts0... $>$, typelist$<$ Ts1... $>$, Fn $>$, void\+\_\+t$<$ invoke$<$ Fn, Ts0, Ts1 $>$... $>$ $>$@{utl\+::meta\+::transform\+\_\+lazy\+\_\+impl\+::transform\+\_\+lazy\+\_\+$<$ typelist$<$ typelist$<$ Ts0... $>$, typelist$<$ Ts1... $>$, Fn $>$, void\+\_\+t$<$ invoke$<$ Fn, Ts0, Ts1 $>$... $>$ $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename... Ts0, typename... Ts1, typename Fn $>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy__}{utl\+::meta\+::transform\+\_\+lazy\+\_\+impl\+::transform\+\_\+lazy\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ Ts0... $>$, \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ Ts1... $>$, Fn $>$, \mbox{\hyperlink{group__detection_gae7373c997420d16cf37e542eb3cfa3ad}{void\+\_\+t}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}}$<$ Fn, Ts0, Ts1 $>$... $>$ $>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t14ff615a4bff6c4c3701df9c38aaa6a5_a09eb2a1f5d8fa4468eef608f5abfa22d}{type}} = \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}}$<$Fn, Ts0, Ts1$>$... $>$} + + + +Definition at line 592 of file typelist.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{typelist_8h}{typelist.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t56243bc35bf73da8271cb88f34751f3a.tex b/doc/latex/structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t56243bc35bf73da8271cb88f34751f3a.tex new file mode 100644 index 0000000..1429a9d --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t56243bc35bf73da8271cb88f34751f3a.tex @@ -0,0 +1,40 @@ +\hypertarget{structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t56243bc35bf73da8271cb88f34751f3a}{}\section{utl\+:\+:meta\+:\+:transform\+\_\+lazy\+\_\+impl\+:\+:transform\+\_\+lazy\+\_\+$<$ typelist$<$ typelist$<$ Ts... $>$, Fn $>$, void\+\_\+t$<$ invoke$<$ Fn, Ts $>$... $>$ $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t56243bc35bf73da8271cb88f34751f3a}\index{utl\+::meta\+::transform\+\_\+lazy\+\_\+impl\+::transform\+\_\+lazy\+\_\+$<$ typelist$<$ typelist$<$ Ts... $>$, Fn $>$, void\+\_\+t$<$ invoke$<$ Fn, Ts $>$... $>$ $>$@{utl\+::meta\+::transform\+\_\+lazy\+\_\+impl\+::transform\+\_\+lazy\+\_\+$<$ typelist$<$ typelist$<$ Ts... $>$, Fn $>$, void\+\_\+t$<$ invoke$<$ Fn, Ts $>$... $>$ $>$}} + + +{\ttfamily \#include $<$typelist.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t56243bc35bf73da8271cb88f34751f3a_add92e9d4d6e95f5710d87cd4fe7c50da}{type}} = \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}}$<$ Fn, Ts $>$... $>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename... Ts, typename Fn$>$\newline +struct utl\+::meta\+::transform\+\_\+lazy\+\_\+impl\+::transform\+\_\+lazy\+\_\+$<$ typelist$<$ typelist$<$ Ts... $>$, Fn $>$, void\+\_\+t$<$ invoke$<$ Fn, Ts $>$... $>$ $>$} + + + +Definition at line 579 of file typelist.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t56243bc35bf73da8271cb88f34751f3a_add92e9d4d6e95f5710d87cd4fe7c50da}\label{structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t56243bc35bf73da8271cb88f34751f3a_add92e9d4d6e95f5710d87cd4fe7c50da}} +\index{utl\+::meta\+::transform\+\_\+lazy\+\_\+impl\+::transform\+\_\+lazy\+\_\+$<$ typelist$<$ typelist$<$ Ts... $>$, Fn $>$, void\+\_\+t$<$ invoke$<$ Fn, Ts $>$... $>$ $>$@{utl\+::meta\+::transform\+\_\+lazy\+\_\+impl\+::transform\+\_\+lazy\+\_\+$<$ typelist$<$ typelist$<$ Ts... $>$, Fn $>$, void\+\_\+t$<$ invoke$<$ Fn, Ts $>$... $>$ $>$}!type@{type}} +\index{type@{type}!utl\+::meta\+::transform\+\_\+lazy\+\_\+impl\+::transform\+\_\+lazy\+\_\+$<$ typelist$<$ typelist$<$ Ts... $>$, Fn $>$, void\+\_\+t$<$ invoke$<$ Fn, Ts $>$... $>$ $>$@{utl\+::meta\+::transform\+\_\+lazy\+\_\+impl\+::transform\+\_\+lazy\+\_\+$<$ typelist$<$ typelist$<$ Ts... $>$, Fn $>$, void\+\_\+t$<$ invoke$<$ Fn, Ts $>$... $>$ $>$}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename... Ts, typename Fn $>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy__}{utl\+::meta\+::transform\+\_\+lazy\+\_\+impl\+::transform\+\_\+lazy\+\_\+}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ Ts... $>$, Fn $>$, \mbox{\hyperlink{group__detection_gae7373c997420d16cf37e542eb3cfa3ad}{void\+\_\+t}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}}$<$ Fn, Ts $>$... $>$ $>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t56243bc35bf73da8271cb88f34751f3a_add92e9d4d6e95f5710d87cd4fe7c50da}{type}} = \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}$<$ \mbox{\hyperlink{namespaceutl_1_1meta_a77630cd8adc01f7193f6cb834313d90f}{invoke}}$<$Fn, Ts$>$... $>$} + + + +Definition at line 583 of file typelist.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{typelist_8h}{typelist.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1typelist.tex b/doc/latex/structutl_1_1meta_1_1typelist.tex new file mode 100644 index 0000000..0150b63 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1typelist.tex @@ -0,0 +1,108 @@ +\hypertarget{structutl_1_1meta_1_1typelist}{}\section{utl\+:\+:meta\+:\+:typelist$<$ Ts $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1typelist}\index{utl\+::meta\+::typelist$<$ Ts $>$@{utl\+::meta\+::typelist$<$ Ts $>$}} + + +{\ttfamily \#include $<$typelist.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{structutl_1_1meta_1_1typelist_a7332ca3d7a7ec5b730e24a4dab743fa6}{type}} = \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}} +\begin{DoxyCompactList}\small\item\em act as identity \end{DoxyCompactList}\item +{\footnotesize template$<$size\+\_\+t N$>$ }\\using \mbox{\hyperlink{structutl_1_1meta_1_1typelist_ac444325211852c503605ec6c820f3eae}{times}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ times\+\_\+$<$ N, Ts... $>$ $>$ +\end{DoxyCompactItemize} +\subsection*{Static Public Member Functions} +\begin{DoxyCompactItemize} +\item +static constexpr \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{structutl_1_1meta_1_1typelist_af898a273ef1135286de6cef169db9c2d}{size}} () noexcept +\item +static constexpr bool \mbox{\hyperlink{structutl_1_1meta_1_1typelist_ac502a5ad1b830e75693c2e3c7a7b1cb8}{empty}} () noexcept +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename... Ts$>$\newline +struct utl\+::meta\+::typelist$<$ Ts $>$} + + + +Definition at line 65 of file typelist.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1typelist_ac444325211852c503605ec6c820f3eae}\label{structutl_1_1meta_1_1typelist_ac444325211852c503605ec6c820f3eae}} +\index{utl\+::meta\+::typelist@{utl\+::meta\+::typelist}!times@{times}} +\index{times@{times}!utl\+::meta\+::typelist@{utl\+::meta\+::typelist}} +\subsubsection{\texorpdfstring{times}{times}} +{\footnotesize\ttfamily template$<$typename... Ts$>$ \\ +template$<$size\+\_\+t N$>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{utl\+::meta\+::typelist}}$<$ Ts $>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1typelist_ac444325211852c503605ec6c820f3eae}{times}} = \mbox{\hyperlink{namespaceutl_1_1meta_aa5a37adba244ff4286f994111c4c02ea}{eval}}$<$ times\+\_\+$<$N, Ts...$>$ $>$} + +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} + + +Definition at line 117 of file typelist.\+h. + +\mbox{\Hypertarget{structutl_1_1meta_1_1typelist_a7332ca3d7a7ec5b730e24a4dab743fa6}\label{structutl_1_1meta_1_1typelist_a7332ca3d7a7ec5b730e24a4dab743fa6}} +\index{utl\+::meta\+::typelist@{utl\+::meta\+::typelist}!type@{type}} +\index{type@{type}!utl\+::meta\+::typelist@{utl\+::meta\+::typelist}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily template$<$typename... Ts$>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{utl\+::meta\+::typelist}}$<$ Ts $>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1typelist_a7332ca3d7a7ec5b730e24a4dab743fa6}{type}} = \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{typelist}}} + + + +act as identity + +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} + + +Definition at line 66 of file typelist.\+h. + + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1typelist_ac502a5ad1b830e75693c2e3c7a7b1cb8}\label{structutl_1_1meta_1_1typelist_ac502a5ad1b830e75693c2e3c7a7b1cb8}} +\index{utl\+::meta\+::typelist@{utl\+::meta\+::typelist}!empty@{empty}} +\index{empty@{empty}!utl\+::meta\+::typelist@{utl\+::meta\+::typelist}} +\subsubsection{\texorpdfstring{empty()}{empty()}} +{\footnotesize\ttfamily template$<$typename... Ts$>$ \\ +static constexpr bool \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{utl\+::meta\+::typelist}}$<$ Ts $>$\+::\mbox{\hyperlink{namespaceutl_1_1meta_a58c1744750d0df133034f60a95f87e19}{empty}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}, {\ttfamily [noexcept]}} + +\begin{DoxyReturn}{Returns} +true if empty +\end{DoxyReturn} +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} + + +Definition at line 73 of file typelist.\+h. + +\mbox{\Hypertarget{structutl_1_1meta_1_1typelist_af898a273ef1135286de6cef169db9c2d}\label{structutl_1_1meta_1_1typelist_af898a273ef1135286de6cef169db9c2d}} +\index{utl\+::meta\+::typelist@{utl\+::meta\+::typelist}!size@{size}} +\index{size@{size}!utl\+::meta\+::typelist@{utl\+::meta\+::typelist}} +\subsubsection{\texorpdfstring{size()}{size()}} +{\footnotesize\ttfamily template$<$typename... Ts$>$ \\ +static constexpr \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{size\+\_\+t}} \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{utl\+::meta\+::typelist}}$<$ Ts $>$\+::\mbox{\hyperlink{namespaceutl_1_1meta_a0edfc2c15e42531e53c0822264d220ec}{size}} (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}, {\ttfamily [noexcept]}} + +\begin{DoxyReturn}{Returns} +sizeof...(Ts) +\end{DoxyReturn} +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2typelist_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/typelist.\+h}}.\end{Desc} + + +Definition at line 69 of file typelist.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{typelist_8h}{typelist.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1wrap.tex b/doc/latex/structutl_1_1meta_1_1wrap.tex new file mode 100644 index 0000000..4b3f9e9 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1wrap.tex @@ -0,0 +1,46 @@ +\hypertarget{structutl_1_1meta_1_1wrap}{}\section{utl\+:\+:meta\+:\+:wrap$<$ F $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1wrap}\index{utl\+::meta\+::wrap$<$ F $>$@{utl\+::meta\+::wrap$<$ F $>$}} + + +{\ttfamily \#include $<$invoke.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename... Args$>$ }\\using \mbox{\hyperlink{structutl_1_1meta_1_1wrap_a71fe22d6a841f27b891ca3344ee97b07}{apply}} = F$<$ Args... $>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$template$<$ typename... $>$ class F$>$\newline +struct utl\+::meta\+::wrap$<$ F $>$} + +wrap + +wrap is a higher-\/order primitive that wraps an n-\/ary Metafunction to create a corresponding Metafunction Class (Invocable). This way we can pass Metafunctions as types to other metafunctions and let them {\ttfamily invoke} the inner templated apply + +Definition at line 100 of file invoke.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1wrap_a71fe22d6a841f27b891ca3344ee97b07}\label{structutl_1_1meta_1_1wrap_a71fe22d6a841f27b891ca3344ee97b07}} +\index{utl\+::meta\+::wrap@{utl\+::meta\+::wrap}!apply@{apply}} +\index{apply@{apply}!utl\+::meta\+::wrap@{utl\+::meta\+::wrap}} +\subsubsection{\texorpdfstring{apply}{apply}} +{\footnotesize\ttfamily template$<$template$<$ typename... $>$ class F$>$ \\ +template$<$typename... Args$>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1wrap}{utl\+::meta\+::wrap}}$<$ F $>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1wrap_a71fe22d6a841f27b891ca3344ee97b07}{apply}} = F$<$Args...$>$} + +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/invoke.\+h}}.\end{Desc} + + +Definition at line 102 of file invoke.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{meta_2invoke_8h}{invoke.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1meta_1_1wrap__i.tex b/doc/latex/structutl_1_1meta_1_1wrap__i.tex new file mode 100644 index 0000000..22217e1 --- /dev/null +++ b/doc/latex/structutl_1_1meta_1_1wrap__i.tex @@ -0,0 +1,49 @@ +\hypertarget{structutl_1_1meta_1_1wrap__i}{}\section{utl\+:\+:meta\+:\+:wrap\+\_\+i$<$ T, F $>$ Struct Template Reference} +\label{structutl_1_1meta_1_1wrap__i}\index{utl\+::meta\+::wrap\+\_\+i$<$ T, F $>$@{utl\+::meta\+::wrap\+\_\+i$<$ T, F $>$}} + + +Wrap a template {\ttfamily F} taking literal constants of type {\ttfamily T} into an Invokable. + + + + +{\ttfamily \#include $<$invoke.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename... Ts$>$ }\\using \mbox{\hyperlink{structutl_1_1meta_1_1wrap__i_a14e7ddd17abbcecf2658a3dd4616e0d2}{apply}} = F$<$ Ts\+::type\+::value... $>$ +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename T, template$<$ T... $>$ class F$>$\newline +struct utl\+::meta\+::wrap\+\_\+i$<$ T, F $>$} + +Wrap a template {\ttfamily F} taking literal constants of type {\ttfamily T} into an Invokable. + +Definition at line 107 of file invoke.\+h. + + + +\subsection{Member Typedef Documentation} +\mbox{\Hypertarget{structutl_1_1meta_1_1wrap__i_a14e7ddd17abbcecf2658a3dd4616e0d2}\label{structutl_1_1meta_1_1wrap__i_a14e7ddd17abbcecf2658a3dd4616e0d2}} +\index{utl\+::meta\+::wrap\+\_\+i@{utl\+::meta\+::wrap\+\_\+i}!apply@{apply}} +\index{apply@{apply}!utl\+::meta\+::wrap\+\_\+i@{utl\+::meta\+::wrap\+\_\+i}} +\subsubsection{\texorpdfstring{apply}{apply}} +{\footnotesize\ttfamily template$<$typename T , template$<$ T... $>$ class F$>$ \\ +template$<$typename... Ts$>$ \\ +using \mbox{\hyperlink{structutl_1_1meta_1_1wrap__i}{utl\+::meta\+::wrap\+\_\+i}}$<$ T, F $>$\+::\mbox{\hyperlink{structutl_1_1meta_1_1wrap__i_a14e7ddd17abbcecf2658a3dd4616e0d2}{apply}} = F$<$Ts\+::type\+::value...$>$} + +\begin{Desc} +\item[Examples\+: ]\par +\mbox{\hyperlink{_w_1_2_work_2_software_2_libraries_2utl_2include_2utl_2meta_2invoke_8h-example}{W\+:/\+Work/\+Software/\+Libraries/utl/include/utl/meta/invoke.\+h}}.\end{Desc} + + +Definition at line 110 of file invoke.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/meta/\mbox{\hyperlink{meta_2invoke_8h}{invoke.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1out__dev__details_1_1is__out__dev__.eps b/doc/latex/structutl_1_1out__dev__details_1_1is__out__dev__.eps new file mode 100644 index 0000000..7eb07ce --- /dev/null +++ b/doc/latex/structutl_1_1out__dev__details_1_1is__out__dev__.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 129.449838 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 3.862500 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::out_dev_details::is_out_dev_< _Tp, typename >) cw +(false_) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::out_dev_details::is_out_dev_< _Tp, typename >) 0.000000 0.000000 box + (false_) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/structutl_1_1out__dev__details_1_1is__out__dev__.tex b/doc/latex/structutl_1_1out__dev__details_1_1is__out__dev__.tex new file mode 100644 index 0000000..5afc9f5 --- /dev/null +++ b/doc/latex/structutl_1_1out__dev__details_1_1is__out__dev__.tex @@ -0,0 +1,32 @@ +\hypertarget{structutl_1_1out__dev__details_1_1is__out__dev__}{}\section{utl\+:\+:out\+\_\+dev\+\_\+details\+:\+:is\+\_\+out\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, typename $>$ Struct Template Reference} +\label{structutl_1_1out__dev__details_1_1is__out__dev__}\index{utl\+::out\+\_\+dev\+\_\+details\+::is\+\_\+out\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, typename $>$@{utl\+::out\+\_\+dev\+\_\+details\+::is\+\_\+out\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, typename $>$}} + + +Primary template to catch any non output device types. + + + + +{\ttfamily \#include $<$out\+\_\+dev.\+h$>$} + +Inheritance diagram for utl\+:\+:out\+\_\+dev\+\_\+details\+:\+:is\+\_\+out\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, typename $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{structutl_1_1out__dev__details_1_1is__out__dev__} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename \+\_\+\+Tp, typename = void$>$\newline +struct utl\+::out\+\_\+dev\+\_\+details\+::is\+\_\+out\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, typename $>$} + +Primary template to catch any non output device types. + +Definition at line 329 of file out\+\_\+dev.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/dev/\mbox{\hyperlink{out__dev_8h}{out\+\_\+dev.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1out__dev__details_1_1is__out__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1fbf8d2409fc6de9dd6b9649bedc1b379.eps b/doc/latex/structutl_1_1out__dev__details_1_1is__out__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1fbf8d2409fc6de9dd6b9649bedc1b379.eps new file mode 100644 index 0000000..35f81d1 --- /dev/null +++ b/doc/latex/structutl_1_1out__dev__details_1_1is__out__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1fbf8d2409fc6de9dd6b9649bedc1b379.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 10.758472 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 46.474998 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::out_dev_details::is_out_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_put1_t< _Tp >, size_t >, use_if_same_t< try_put2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > >) cw +(true_) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::out_dev_details::is_out_dev_< _Tp, void_t< typename _Tp::data_type, typename _Tp::pointer_type, typename _Tp::iterator, typename _Tp::const_iterator, use_if_same_t< try_put1_t< _Tp >, size_t >, use_if_same_t< try_put2_t< _Tp >, size_t >, use_if_same_t< try_begin_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_begin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cbegin_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_end_t< _Tp >, typename _Tp::iterator >, use_if_same_t< tryc_end_t< _Tp >, typename _Tp::const_iterator >, use_if_same_t< try_cend_t< _Tp >, typename _Tp::const_iterator > > >) 0.000000 0.000000 box + (true_) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/structutl_1_1out__dev__details_1_1is__out__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1fbf8d2409fc6de9dd6b9649bedc1b379.tex b/doc/latex/structutl_1_1out__dev__details_1_1is__out__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1fbf8d2409fc6de9dd6b9649bedc1b379.tex new file mode 100644 index 0000000..b6749ae --- /dev/null +++ b/doc/latex/structutl_1_1out__dev__details_1_1is__out__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1fbf8d2409fc6de9dd6b9649bedc1b379.tex @@ -0,0 +1,32 @@ +\hypertarget{structutl_1_1out__dev__details_1_1is__out__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1fbf8d2409fc6de9dd6b9649bedc1b379}{}\section{utl\+:\+:out\+\_\+dev\+\_\+details\+:\+:is\+\_\+out\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, void\+\_\+t$<$ typename \+\_\+\+Tp\+:\+:data\+\_\+type, typename \+\_\+\+Tp\+:\+:pointer\+\_\+type, typename \+\_\+\+Tp\+:\+:iterator, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+put1\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+put2\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cbegin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cend\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator $>$ $>$ $>$ Struct Template Reference} +\label{structutl_1_1out__dev__details_1_1is__out__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1fbf8d2409fc6de9dd6b9649bedc1b379}\index{utl\+::out\+\_\+dev\+\_\+details\+::is\+\_\+out\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, void\+\_\+t$<$ typename \+\_\+\+Tp\+::data\+\_\+type, typename \+\_\+\+Tp\+::pointer\+\_\+type, typename \+\_\+\+Tp\+::iterator, typename \+\_\+\+Tp\+::const\+\_\+iterator, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+put1\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+put2\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cbegin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cend\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$ $>$ $>$@{utl\+::out\+\_\+dev\+\_\+details\+::is\+\_\+out\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, void\+\_\+t$<$ typename \+\_\+\+Tp\+::data\+\_\+type, typename \+\_\+\+Tp\+::pointer\+\_\+type, typename \+\_\+\+Tp\+::iterator, typename \+\_\+\+Tp\+::const\+\_\+iterator, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+put1\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+put2\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cbegin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cend\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$ $>$ $>$}} + + +template to catch a proper output device type + + + + +{\ttfamily \#include $<$out\+\_\+dev.\+h$>$} + +Inheritance diagram for utl\+:\+:out\+\_\+dev\+\_\+details\+:\+:is\+\_\+out\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, void\+\_\+t$<$ typename \+\_\+\+Tp\+:\+:data\+\_\+type, typename \+\_\+\+Tp\+:\+:pointer\+\_\+type, typename \+\_\+\+Tp\+:\+:iterator, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+put1\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+put2\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cbegin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cend\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+:\+:const\+\_\+iterator $>$ $>$ $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=0.301237cm]{structutl_1_1out__dev__details_1_1is__out__dev___3_01___tp_00_01void__t_3_01typename_01___tp_1_1fbf8d2409fc6de9dd6b9649bedc1b379} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename \+\_\+\+Tp$>$\newline +struct utl\+::out\+\_\+dev\+\_\+details\+::is\+\_\+out\+\_\+dev\+\_\+$<$ \+\_\+\+Tp, void\+\_\+t$<$ typename \+\_\+\+Tp\+::data\+\_\+type, typename \+\_\+\+Tp\+::pointer\+\_\+type, typename \+\_\+\+Tp\+::iterator, typename \+\_\+\+Tp\+::const\+\_\+iterator, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+put1\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+put2\+\_\+t$<$ \+\_\+\+Tp $>$, size\+\_\+t $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+begin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cbegin\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ tryc\+\_\+end\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$, use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cend\+\_\+t$<$ \+\_\+\+Tp $>$, typename \+\_\+\+Tp\+::const\+\_\+iterator $>$ $>$ $>$} + +template to catch a proper output device type + +Definition at line 333 of file out\+\_\+dev.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/dev/\mbox{\hyperlink{out__dev_8h}{out\+\_\+dev.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1outdev__it__details_1_1is__outdev__it__.eps b/doc/latex/structutl_1_1outdev__it__details_1_1is__outdev__it__.eps new file mode 100644 index 0000000..5bec23c --- /dev/null +++ b/doc/latex/structutl_1_1outdev__it__details_1_1is__outdev__it__.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 124.610592 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 4.012500 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::outdev_it_details::is_outdev_it_< _Tp, typename >) cw +(false_) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::outdev_it_details::is_outdev_it_< _Tp, typename >) 0.000000 0.000000 box + (false_) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/structutl_1_1outdev__it__details_1_1is__outdev__it__.tex b/doc/latex/structutl_1_1outdev__it__details_1_1is__outdev__it__.tex new file mode 100644 index 0000000..6d5a0a3 --- /dev/null +++ b/doc/latex/structutl_1_1outdev__it__details_1_1is__outdev__it__.tex @@ -0,0 +1,32 @@ +\hypertarget{structutl_1_1outdev__it__details_1_1is__outdev__it__}{}\section{utl\+:\+:outdev\+\_\+it\+\_\+details\+:\+:is\+\_\+outdev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, typename $>$ Struct Template Reference} +\label{structutl_1_1outdev__it__details_1_1is__outdev__it__}\index{utl\+::outdev\+\_\+it\+\_\+details\+::is\+\_\+outdev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, typename $>$@{utl\+::outdev\+\_\+it\+\_\+details\+::is\+\_\+outdev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, typename $>$}} + + +Primary template to catch any non S\+PI interface types. + + + + +{\ttfamily \#include $<$dev\+\_\+iterators.\+h$>$} + +Inheritance diagram for utl\+:\+:outdev\+\_\+it\+\_\+details\+:\+:is\+\_\+outdev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, typename $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{structutl_1_1outdev__it__details_1_1is__outdev__it__} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename \+\_\+\+Tp, typename = void$>$\newline +struct utl\+::outdev\+\_\+it\+\_\+details\+::is\+\_\+outdev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, typename $>$} + +Primary template to catch any non S\+PI interface types. + +Definition at line 417 of file dev\+\_\+iterators.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/dev/\mbox{\hyperlink{dev__iterators_8h}{dev\+\_\+iterators.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1outdev__it__details_1_1is__outdev__it___3_01___tp_00_01meta_1_1void__t_3_01typename8786ebbbd0dc9ca1b14571e779d99d60.eps b/doc/latex/structutl_1_1outdev__it__details_1_1is__outdev__it___3_01___tp_00_01meta_1_1void__t_3_01typename8786ebbbd0dc9ca1b14571e779d99d60.eps new file mode 100644 index 0000000..2efef5f --- /dev/null +++ b/doc/latex/structutl_1_1outdev__it__details_1_1is__outdev__it___3_01___tp_00_01meta_1_1void__t_3_01typename8786ebbbd0dc9ca1b14571e779d99d60.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 39.721946 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 12.587500 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::outdev_it_details::is_outdev_it_< _Tp, meta::void_t< typename _Tp::value_type, typename _Tp::difference_type, typename _Tp::pointer, typename _Tp::reference, void > >) cw +(true_) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::outdev_it_details::is_outdev_it_< _Tp, meta::void_t< typename _Tp::value_type, typename _Tp::difference_type, typename _Tp::pointer, typename _Tp::reference, void > >) 0.000000 0.000000 box + (true_) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/structutl_1_1outdev__it__details_1_1is__outdev__it___3_01___tp_00_01meta_1_1void__t_3_01typename8786ebbbd0dc9ca1b14571e779d99d60.tex b/doc/latex/structutl_1_1outdev__it__details_1_1is__outdev__it___3_01___tp_00_01meta_1_1void__t_3_01typename8786ebbbd0dc9ca1b14571e779d99d60.tex new file mode 100644 index 0000000..59d3760 --- /dev/null +++ b/doc/latex/structutl_1_1outdev__it__details_1_1is__outdev__it___3_01___tp_00_01meta_1_1void__t_3_01typename8786ebbbd0dc9ca1b14571e779d99d60.tex @@ -0,0 +1,32 @@ +\hypertarget{structutl_1_1outdev__it__details_1_1is__outdev__it___3_01___tp_00_01meta_1_1void__t_3_01typename8786ebbbd0dc9ca1b14571e779d99d60}{}\section{utl\+:\+:outdev\+\_\+it\+\_\+details\+:\+:is\+\_\+outdev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, meta\+:\+:void\+\_\+t$<$ typename \+\_\+\+Tp\+:\+:value\+\_\+type, typename \+\_\+\+Tp\+:\+:difference\+\_\+type, typename \+\_\+\+Tp\+:\+:pointer, typename \+\_\+\+Tp\+:\+:reference, void $>$ $>$ Struct Template Reference} +\label{structutl_1_1outdev__it__details_1_1is__outdev__it___3_01___tp_00_01meta_1_1void__t_3_01typename8786ebbbd0dc9ca1b14571e779d99d60}\index{utl\+::outdev\+\_\+it\+\_\+details\+::is\+\_\+outdev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, meta\+::void\+\_\+t$<$ typename \+\_\+\+Tp\+::value\+\_\+type, typename \+\_\+\+Tp\+::difference\+\_\+type, typename \+\_\+\+Tp\+::pointer, typename \+\_\+\+Tp\+::reference, void $>$ $>$@{utl\+::outdev\+\_\+it\+\_\+details\+::is\+\_\+outdev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, meta\+::void\+\_\+t$<$ typename \+\_\+\+Tp\+::value\+\_\+type, typename \+\_\+\+Tp\+::difference\+\_\+type, typename \+\_\+\+Tp\+::pointer, typename \+\_\+\+Tp\+::reference, void $>$ $>$}} + + +template to catch a proper S\+PI interface type + + + + +{\ttfamily \#include $<$dev\+\_\+iterators.\+h$>$} + +Inheritance diagram for utl\+:\+:outdev\+\_\+it\+\_\+details\+:\+:is\+\_\+outdev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, meta\+:\+:void\+\_\+t$<$ typename \+\_\+\+Tp\+:\+:value\+\_\+type, typename \+\_\+\+Tp\+:\+:difference\+\_\+type, typename \+\_\+\+Tp\+:\+:pointer, typename \+\_\+\+Tp\+:\+:reference, void $>$ $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=1.112215cm]{structutl_1_1outdev__it__details_1_1is__outdev__it___3_01___tp_00_01meta_1_1void__t_3_01typename8786ebbbd0dc9ca1b14571e779d99d60} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename \+\_\+\+Tp$>$\newline +struct utl\+::outdev\+\_\+it\+\_\+details\+::is\+\_\+outdev\+\_\+it\+\_\+$<$ \+\_\+\+Tp, meta\+::void\+\_\+t$<$ typename \+\_\+\+Tp\+::value\+\_\+type, typename \+\_\+\+Tp\+::difference\+\_\+type, typename \+\_\+\+Tp\+::pointer, typename \+\_\+\+Tp\+::reference, void $>$ $>$} + +template to catch a proper S\+PI interface type + +Definition at line 421 of file dev\+\_\+iterators.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/dev/\mbox{\hyperlink{dev__iterators_8h}{dev\+\_\+iterators.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1output__iterator__tag.tex b/doc/latex/structutl_1_1output__iterator__tag.tex new file mode 100644 index 0000000..a8e6f1d --- /dev/null +++ b/doc/latex/structutl_1_1output__iterator__tag.tex @@ -0,0 +1,23 @@ +\hypertarget{structutl_1_1output__iterator__tag}{}\section{utl\+:\+:output\+\_\+iterator\+\_\+tag Struct Reference} +\label{structutl_1_1output__iterator__tag}\index{utl\+::output\+\_\+iterator\+\_\+tag@{utl\+::output\+\_\+iterator\+\_\+tag}} + + +Iterator tags \mbox{[}std.\+iterator.\+tags\mbox{]} Extension\+: \mbox{\hyperlink{structutl_1_1contiguous__iterator__tag}{contiguous\+\_\+iterator\+\_\+tag}} for denoting contiguous iterators. + + + + +{\ttfamily \#include $<$dev\+\_\+iterators.\+h$>$} + + + +\subsection{Detailed Description} +Iterator tags \mbox{[}std.\+iterator.\+tags\mbox{]} Extension\+: \mbox{\hyperlink{structutl_1_1contiguous__iterator__tag}{contiguous\+\_\+iterator\+\_\+tag}} for denoting contiguous iterators. + +Definition at line 55 of file dev\+\_\+iterators.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/dev/\mbox{\hyperlink{dev__iterators_8h}{dev\+\_\+iterators.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1random__access__iterator__tag.eps b/doc/latex/structutl_1_1random__access__iterator__tag.eps new file mode 100644 index 0000000..7c01f9b --- /dev/null +++ b/doc/latex/structutl_1_1random__access__iterator__tag.eps @@ -0,0 +1,215 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 502.512563 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 0.995000 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 5 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::random_access_iterator_tag) cw +(utl::bidirectional_iterator_tag) cw +(utl::forward_iterator_tag) cw +(utl::input_iterator_tag) cw +(utl::contiguous_iterator_tag) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::random_access_iterator_tag) 0.000000 1.000000 box + (utl::bidirectional_iterator_tag) 0.000000 2.000000 box + (utl::forward_iterator_tag) 0.000000 3.000000 box + (utl::input_iterator_tag) 0.000000 4.000000 box + (utl::contiguous_iterator_tag) 0.000000 0.000000 box + +% ----- relations ----- + +solid +0 0.000000 1.000000 out +solid +1 0.000000 2.000000 in +solid +0 0.000000 2.000000 out +solid +1 0.000000 3.000000 in +solid +0 0.000000 3.000000 out +solid +1 0.000000 4.000000 in +solid +1 0.000000 0.250000 out +solid +0 0.000000 0.750000 in diff --git a/doc/latex/structutl_1_1random__access__iterator__tag.tex b/doc/latex/structutl_1_1random__access__iterator__tag.tex new file mode 100644 index 0000000..30bcb6c --- /dev/null +++ b/doc/latex/structutl_1_1random__access__iterator__tag.tex @@ -0,0 +1,24 @@ +\hypertarget{structutl_1_1random__access__iterator__tag}{}\section{utl\+:\+:random\+\_\+access\+\_\+iterator\+\_\+tag Struct Reference} +\label{structutl_1_1random__access__iterator__tag}\index{utl\+::random\+\_\+access\+\_\+iterator\+\_\+tag@{utl\+::random\+\_\+access\+\_\+iterator\+\_\+tag}} + + +{\ttfamily \#include $<$dev\+\_\+iterators.\+h$>$} + +Inheritance diagram for utl\+:\+:random\+\_\+access\+\_\+iterator\+\_\+tag\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=5.000000cm]{structutl_1_1random__access__iterator__tag} +\end{center} +\end{figure} + + +\subsection{Detailed Description} + + +Definition at line 59 of file dev\+\_\+iterators.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/dev/\mbox{\hyperlink{dev__iterators_8h}{dev\+\_\+iterators.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1spi__i__details_1_1is__spi__.eps b/doc/latex/structutl_1_1spi__i__details_1_1is__spi__.eps new file mode 100644 index 0000000..e8e9cbf --- /dev/null +++ b/doc/latex/structutl_1_1spi__i__details_1_1is__spi__.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 153.256705 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 3.262500 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::spi_i_details::is_spi_< _Tp, typename >) cw +(false_) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::spi_i_details::is_spi_< _Tp, typename >) 0.000000 0.000000 box + (false_) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/structutl_1_1spi__i__details_1_1is__spi__.tex b/doc/latex/structutl_1_1spi__i__details_1_1is__spi__.tex new file mode 100644 index 0000000..026cce2 --- /dev/null +++ b/doc/latex/structutl_1_1spi__i__details_1_1is__spi__.tex @@ -0,0 +1,32 @@ +\hypertarget{structutl_1_1spi__i__details_1_1is__spi__}{}\section{utl\+:\+:spi\+\_\+i\+\_\+details\+:\+:is\+\_\+spi\+\_\+$<$ \+\_\+\+Tp, typename $>$ Struct Template Reference} +\label{structutl_1_1spi__i__details_1_1is__spi__}\index{utl\+::spi\+\_\+i\+\_\+details\+::is\+\_\+spi\+\_\+$<$ \+\_\+\+Tp, typename $>$@{utl\+::spi\+\_\+i\+\_\+details\+::is\+\_\+spi\+\_\+$<$ \+\_\+\+Tp, typename $>$}} + + +Primary template to catch any non S\+PI interface types. + + + + +{\ttfamily \#include $<$spi.\+h$>$} + +Inheritance diagram for utl\+:\+:spi\+\_\+i\+\_\+details\+:\+:is\+\_\+spi\+\_\+$<$ \+\_\+\+Tp, typename $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=2.000000cm]{structutl_1_1spi__i__details_1_1is__spi__} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename \+\_\+\+Tp, typename = void$>$\newline +struct utl\+::spi\+\_\+i\+\_\+details\+::is\+\_\+spi\+\_\+$<$ \+\_\+\+Tp, typename $>$} + +Primary template to catch any non S\+PI interface types. + +Definition at line 305 of file spi.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/com/\mbox{\hyperlink{spi_8h}{spi.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1spi__i__details_1_1is__spi___3_01___tp_00_01meta_1_1void__t_3_01meta_1_1use__if__sa2db29f6d65d34ecf5e49ec30b6600d78.eps b/doc/latex/structutl_1_1spi__i__details_1_1is__spi___3_01___tp_00_01meta_1_1void__t_3_01meta_1_1use__if__sa2db29f6d65d34ecf5e49ec30b6600d78.eps new file mode 100644 index 0000000..d0c81fb --- /dev/null +++ b/doc/latex/structutl_1_1spi__i__details_1_1is__spi___3_01___tp_00_01meta_1_1void__t_3_01meta_1_1use__if__sa2db29f6d65d34ecf5e49ec30b6600d78.eps @@ -0,0 +1,197 @@ +%!PS-Adobe-2.0 EPSF-2.0 +%%Title: ClassName +%%Creator: Doxygen +%%CreationDate: Time +%%For: +%Magnification: 1.00 +%%Orientation: Portrait +%%BoundingBox: 0 0 500 27.874564 +%%Pages: 0 +%%BeginSetup +%%EndSetup +%%EndComments + +% ----- variables ----- + +/boxwidth 0 def +/boxheight 40 def +/fontheight 24 def +/marginwidth 10 def +/distx 20 def +/disty 40 def +/boundaspect 17.937500 def % aspect ratio of the BoundingBox (width/height) +/boundx 500 def +/boundy boundx boundaspect div def +/xspacing 0 def +/yspacing 0 def +/rows 2 def +/cols 1 def +/scalefactor 0 def +/boxfont /Times-Roman findfont fontheight scalefont def + +% ----- procedures ----- + +/dotted { [1 4] 0 setdash } def +/dashed { [5] 0 setdash } def +/solid { [] 0 setdash } def + +/max % result = MAX(arg1,arg2) +{ + /a exch def + /b exch def + a b gt {a} {b} ifelse +} def + +/xoffset % result = MAX(0,(scalefactor-(boxwidth*cols+distx*(cols-1)))/2) +{ + 0 scalefactor boxwidth cols mul distx cols 1 sub mul add sub 2 div max +} def + +/cw % boxwidth = MAX(boxwidth, stringwidth(arg1)) +{ + /str exch def + /boxwidth boxwidth str stringwidth pop max def +} def + +/box % draws a box with text `arg1' at grid pos (arg2,arg3) +{ gsave + 2 setlinewidth + newpath + exch xspacing mul xoffset add + exch yspacing mul + moveto + boxwidth 0 rlineto + 0 boxheight rlineto + boxwidth neg 0 rlineto + 0 boxheight neg rlineto + closepath + dup stringwidth pop neg boxwidth add 2 div + boxheight fontheight 2 div sub 2 div + rmoveto show stroke + grestore +} def + +/mark +{ newpath + exch xspacing mul xoffset add boxwidth add + exch yspacing mul + moveto + 0 boxheight 4 div rlineto + boxheight neg 4 div boxheight neg 4 div rlineto + closepath + eofill + stroke +} def + +/arrow +{ newpath + moveto + 3 -8 rlineto + -6 0 rlineto + 3 8 rlineto + closepath + eofill + stroke +} def + +/out % draws an output connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight add + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/in % draws an input connector for the block at (arg1,arg2) +{ + newpath + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul disty 2 div sub + /y exch def + /x exch def + x y moveto + 0 disty 2 div rlineto + stroke + 1 eq { x y disty 2 div add arrow } if +} def + +/hedge +{ + exch xspacing mul xoffset add boxwidth 2 div add + exch yspacing mul boxheight 2 div sub + /y exch def + /x exch def + newpath + x y moveto + boxwidth 2 div distx add 0 rlineto + stroke + 1 eq + { newpath x boxwidth 2 div distx add add y moveto + -8 3 rlineto + 0 -6 rlineto + 8 3 rlineto + closepath + eofill + stroke + } if +} def + +/vedge +{ + /ye exch def + /ys exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add dup + ys yspacing mul boxheight 2 div sub + moveto + ye yspacing mul boxheight 2 div sub + lineto + stroke +} def + +/conn % connections the blocks from col `arg1' to `arg2' of row `arg3' +{ + /ys exch def + /xe exch def + /xs exch def + newpath + xs xspacing mul xoffset add boxwidth 2 div add + ys yspacing mul disty 2 div sub + moveto + xspacing xe xs sub mul 0 + rlineto + stroke +} def + +% ----- main ------ + +boxfont setfont +1 boundaspect scale +(utl::spi_i_details::is_spi_< _Tp, meta::void_t< meta::use_if_same_t< try_cclock_t< _Tp >, uint32_t >, meta::use_if_same_t< try_clock_t< _Tp >, void >, meta::use_if_same_t< try_tx_t< _Tp >, byte_t >, meta::use_if_same_t< try_rx_t< _Tp >, byte_t > > >) cw +(true_) cw +/boxwidth boxwidth marginwidth 2 mul add def +/xspacing boxwidth distx add def +/yspacing boxheight disty add def +/scalefactor + boxwidth cols mul distx cols 1 sub mul add + boxheight rows mul disty rows 1 sub mul add boundaspect mul + max def +boundx scalefactor div boundy scalefactor div scale + +% ----- classes ----- + + (utl::spi_i_details::is_spi_< _Tp, meta::void_t< meta::use_if_same_t< try_cclock_t< _Tp >, uint32_t >, meta::use_if_same_t< try_clock_t< _Tp >, void >, meta::use_if_same_t< try_tx_t< _Tp >, byte_t >, meta::use_if_same_t< try_rx_t< _Tp >, byte_t > > >) 0.000000 0.000000 box + (true_) 0.000000 1.000000 box + +% ----- relations ----- + +solid +0 0.000000 0.000000 out +solid +1 0.000000 1.000000 in diff --git a/doc/latex/structutl_1_1spi__i__details_1_1is__spi___3_01___tp_00_01meta_1_1void__t_3_01meta_1_1use__if__sa2db29f6d65d34ecf5e49ec30b6600d78.tex b/doc/latex/structutl_1_1spi__i__details_1_1is__spi___3_01___tp_00_01meta_1_1void__t_3_01meta_1_1use__if__sa2db29f6d65d34ecf5e49ec30b6600d78.tex new file mode 100644 index 0000000..a8a98a6 --- /dev/null +++ b/doc/latex/structutl_1_1spi__i__details_1_1is__spi___3_01___tp_00_01meta_1_1void__t_3_01meta_1_1use__if__sa2db29f6d65d34ecf5e49ec30b6600d78.tex @@ -0,0 +1,32 @@ +\hypertarget{structutl_1_1spi__i__details_1_1is__spi___3_01___tp_00_01meta_1_1void__t_3_01meta_1_1use__if__sa2db29f6d65d34ecf5e49ec30b6600d78}{}\section{utl\+:\+:spi\+\_\+i\+\_\+details\+:\+:is\+\_\+spi\+\_\+$<$ \+\_\+\+Tp, meta\+:\+:void\+\_\+t$<$ meta\+:\+:use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cclock\+\_\+t$<$ \+\_\+\+Tp $>$, uint32\+\_\+t $>$, meta\+:\+:use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+clock\+\_\+t$<$ \+\_\+\+Tp $>$, void $>$, meta\+:\+:use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+tx\+\_\+t$<$ \+\_\+\+Tp $>$, byte\+\_\+t $>$, meta\+:\+:use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+rx\+\_\+t$<$ \+\_\+\+Tp $>$, byte\+\_\+t $>$ $>$ $>$ Struct Template Reference} +\label{structutl_1_1spi__i__details_1_1is__spi___3_01___tp_00_01meta_1_1void__t_3_01meta_1_1use__if__sa2db29f6d65d34ecf5e49ec30b6600d78}\index{utl\+::spi\+\_\+i\+\_\+details\+::is\+\_\+spi\+\_\+$<$ \+\_\+\+Tp, meta\+::void\+\_\+t$<$ meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cclock\+\_\+t$<$ \+\_\+\+Tp $>$, uint32\+\_\+t $>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+clock\+\_\+t$<$ \+\_\+\+Tp $>$, void $>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+tx\+\_\+t$<$ \+\_\+\+Tp $>$, byte\+\_\+t $>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+rx\+\_\+t$<$ \+\_\+\+Tp $>$, byte\+\_\+t $>$ $>$ $>$@{utl\+::spi\+\_\+i\+\_\+details\+::is\+\_\+spi\+\_\+$<$ \+\_\+\+Tp, meta\+::void\+\_\+t$<$ meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cclock\+\_\+t$<$ \+\_\+\+Tp $>$, uint32\+\_\+t $>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+clock\+\_\+t$<$ \+\_\+\+Tp $>$, void $>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+tx\+\_\+t$<$ \+\_\+\+Tp $>$, byte\+\_\+t $>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+rx\+\_\+t$<$ \+\_\+\+Tp $>$, byte\+\_\+t $>$ $>$ $>$}} + + +template to catch a proper S\+PI interface type + + + + +{\ttfamily \#include $<$spi.\+h$>$} + +Inheritance diagram for utl\+:\+:spi\+\_\+i\+\_\+details\+:\+:is\+\_\+spi\+\_\+$<$ \+\_\+\+Tp, meta\+:\+:void\+\_\+t$<$ meta\+:\+:use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cclock\+\_\+t$<$ \+\_\+\+Tp $>$, uint32\+\_\+t $>$, meta\+:\+:use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+clock\+\_\+t$<$ \+\_\+\+Tp $>$, void $>$, meta\+:\+:use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+tx\+\_\+t$<$ \+\_\+\+Tp $>$, byte\+\_\+t $>$, meta\+:\+:use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+rx\+\_\+t$<$ \+\_\+\+Tp $>$, byte\+\_\+t $>$ $>$ $>$\+:\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[height=0.780488cm]{structutl_1_1spi__i__details_1_1is__spi___3_01___tp_00_01meta_1_1void__t_3_01meta_1_1use__if__sa2db29f6d65d34ecf5e49ec30b6600d78} +\end{center} +\end{figure} + + +\subsection{Detailed Description} +\subsubsection*{template$<$typename \+\_\+\+Tp$>$\newline +struct utl\+::spi\+\_\+i\+\_\+details\+::is\+\_\+spi\+\_\+$<$ \+\_\+\+Tp, meta\+::void\+\_\+t$<$ meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+cclock\+\_\+t$<$ \+\_\+\+Tp $>$, uint32\+\_\+t $>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+clock\+\_\+t$<$ \+\_\+\+Tp $>$, void $>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+tx\+\_\+t$<$ \+\_\+\+Tp $>$, byte\+\_\+t $>$, meta\+::use\+\_\+if\+\_\+same\+\_\+t$<$ try\+\_\+rx\+\_\+t$<$ \+\_\+\+Tp $>$, byte\+\_\+t $>$ $>$ $>$} + +template to catch a proper S\+PI interface type + +Definition at line 309 of file spi.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/com/\mbox{\hyperlink{spi_8h}{spi.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/structutl_1_1virtual__tag.tex b/doc/latex/structutl_1_1virtual__tag.tex new file mode 100644 index 0000000..f7f4911 --- /dev/null +++ b/doc/latex/structutl_1_1virtual__tag.tex @@ -0,0 +1,23 @@ +\hypertarget{structutl_1_1virtual__tag}{}\section{utl\+:\+:virtual\+\_\+tag Struct Reference} +\label{structutl_1_1virtual__tag}\index{utl\+::virtual\+\_\+tag@{utl\+::virtual\+\_\+tag}} + + +virtual support tag type + + + + +{\ttfamily \#include $<$crtp.\+h$>$} + + + +\subsection{Detailed Description} +virtual support tag type + +Definition at line 40 of file crtp.\+h. + + + +The documentation for this struct was generated from the following file\+:\begin{DoxyCompactItemize} +\item +include/utl/core/\mbox{\hyperlink{crtp_8h}{crtp.\+h}}\end{DoxyCompactItemize} diff --git a/doc/latex/test__1w__impl_8cpp.tex b/doc/latex/test__1w__impl_8cpp.tex new file mode 100644 index 0000000..fdfc508 --- /dev/null +++ b/doc/latex/test__1w__impl_8cpp.tex @@ -0,0 +1,35 @@ +\hypertarget{test__1w__impl_8cpp}{}\section{test/tests/test\+\_\+1w\+\_\+impl.cpp File Reference} +\label{test__1w__impl_8cpp}\index{test/tests/test\+\_\+1w\+\_\+impl.\+cpp@{test/tests/test\+\_\+1w\+\_\+impl.\+cpp}} +{\ttfamily \#include $<$gtest/gtest.\+h$>$}\newline +{\ttfamily \#include $<$utl/com/\+\_\+1wire\+\_\+uart.\+h$>$}\newline +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +class \mbox{\hyperlink{classtest__1w_1_1_o_w}{test\+\_\+1w\+::\+OW}} +\item +class \mbox{\hyperlink{classtest__1w_1_1_test__1w__impl}{test\+\_\+1w\+::\+Test\+\_\+1w\+\_\+impl}} +\end{DoxyCompactItemize} +\subsection*{Namespaces} +\begin{DoxyCompactItemize} +\item + \mbox{\hyperlink{namespacetest__1w}{test\+\_\+1w}} +\end{DoxyCompactItemize} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{namespacetest__1w_a91bee95e2ca23e750b4a33479aea8029}{test\+\_\+1w\+::\+T\+E\+S\+T\+\_\+F}} (Test\+\_\+1w\+\_\+impl, Test\+Concept) +\item +\mbox{\hyperlink{namespacetest__1w_a2e7d40e0befd264af7e7b6794b447555}{test\+\_\+1w\+::\+T\+E\+S\+T\+\_\+F}} (Test\+\_\+1w\+\_\+impl, Test\+Construction) +\item +\mbox{\hyperlink{namespacetest__1w_ab5d5a9f17f851deeb0058589c4bdbdfc}{test\+\_\+1w\+::\+T\+E\+S\+T\+\_\+F}} (Test\+\_\+1w\+\_\+impl, Test\+Functionality) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Copyright (C) 2018 Christos Choutouridis + +This program is free software\+: you can redistribute it and/or modify it under the terms of the G\+NU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but W\+I\+T\+H\+O\+UT A\+NY W\+A\+R\+R\+A\+N\+TY; without even the implied warranty of M\+E\+R\+C\+H\+A\+N\+T\+A\+B\+I\+L\+I\+TY or F\+I\+T\+N\+E\+SS F\+OR A P\+A\+R\+T\+I\+C\+U\+L\+AR P\+U\+R\+P\+O\+SE. See the G\+NU Lesser General Public License for more details. + +You should have received a copy of the G\+NU Lesser General Public License along with this program. If not, see \href{http://www.gnu.org/licenses/}{\tt http\+://www.\+gnu.\+org/licenses/}. \ No newline at end of file diff --git a/doc/latex/test__i2c__impl_8cpp.tex b/doc/latex/test__i2c__impl_8cpp.tex new file mode 100644 index 0000000..7d38b02 --- /dev/null +++ b/doc/latex/test__i2c__impl_8cpp.tex @@ -0,0 +1,33 @@ +\hypertarget{test__i2c__impl_8cpp}{}\section{test/tests/test\+\_\+i2c\+\_\+impl.cpp File Reference} +\label{test__i2c__impl_8cpp}\index{test/tests/test\+\_\+i2c\+\_\+impl.\+cpp@{test/tests/test\+\_\+i2c\+\_\+impl.\+cpp}} +{\ttfamily \#include $<$gtest/gtest.\+h$>$}\newline +{\ttfamily \#include $<$utl/com/i2c\+\_\+bb.\+h$>$}\newline +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +class \mbox{\hyperlink{classtest__i2c_1_1_i2_c}{test\+\_\+i2c\+::\+I2C}} +\end{DoxyCompactItemize} +\subsection*{Namespaces} +\begin{DoxyCompactItemize} +\item + \mbox{\hyperlink{namespacetest__i2c}{test\+\_\+i2c}} +\end{DoxyCompactItemize} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{namespacetest__i2c_a04c34c5bd7848008eb6803be850b2296}{test\+\_\+i2c\+::\+T\+E\+ST}} (Test\+\_\+i2c\+\_\+impl, Test\+Concept) +\item +\mbox{\hyperlink{namespacetest__i2c_a74c8554cb3a4c7bd022cd854feb06688}{test\+\_\+i2c\+::\+T\+E\+ST}} (Test\+\_\+i2c\+\_\+impl, Test\+Construction) +\item +\mbox{\hyperlink{namespacetest__i2c_aee88e63fc24ad87c0987c6f207dd20fa}{test\+\_\+i2c\+::\+T\+E\+ST}} (Test\+\_\+i2c\+\_\+impl, Test\+Functionality) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Copyright (C) 2018 Christos Choutouridis + +This program is free software\+: you can redistribute it and/or modify it under the terms of the G\+NU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but W\+I\+T\+H\+O\+UT A\+NY W\+A\+R\+R\+A\+N\+TY; without even the implied warranty of M\+E\+R\+C\+H\+A\+N\+T\+A\+B\+I\+L\+I\+TY or F\+I\+T\+N\+E\+SS F\+OR A P\+A\+R\+T\+I\+C\+U\+L\+AR P\+U\+R\+P\+O\+SE. See the G\+NU Lesser General Public License for more details. + +You should have received a copy of the G\+NU Lesser General Public License along with this program. If not, see \href{http://www.gnu.org/licenses/}{\tt http\+://www.\+gnu.\+org/licenses/}. \ No newline at end of file diff --git a/doc/latex/test__ostream__dev_8cpp.tex b/doc/latex/test__ostream__dev_8cpp.tex new file mode 100644 index 0000000..df3d6e7 --- /dev/null +++ b/doc/latex/test__ostream__dev_8cpp.tex @@ -0,0 +1,66 @@ +\hypertarget{test__ostream__dev_8cpp}{}\section{test/tests/test\+\_\+ostream\+\_\+dev.cpp File Reference} +\label{test__ostream__dev_8cpp}\index{test/tests/test\+\_\+ostream\+\_\+dev.\+cpp@{test/tests/test\+\_\+ostream\+\_\+dev.\+cpp}} +{\ttfamily \#include $<$gtest/gtest.\+h$>$}\newline +{\ttfamily \#include $<$utl/dev/ostream\+\_\+dev.\+h$>$}\newline +{\ttfamily \#include $<$array$>$}\newline +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +class \mbox{\hyperlink{classtest__ostream__dev_1_1_ostream__dev__impl}{test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+dev\+\_\+impl}} +\item +class \mbox{\hyperlink{classtest__ostream__dev_1_1_ostream__vdev__impl}{test\+\_\+ostream\+\_\+dev\+::\+Ostream\+\_\+vdev\+\_\+impl}} +\item +class \mbox{\hyperlink{classtest__ostream__dev_1_1_tostream___idev}{test\+\_\+ostream\+\_\+dev\+::\+Tostream\+\_\+\+Idev}} +\item +class \mbox{\hyperlink{classtest__ostream__dev_1_1_tostream___vdev}{test\+\_\+ostream\+\_\+dev\+::\+Tostream\+\_\+\+Vdev}} +\end{DoxyCompactItemize} +\subsection*{Namespaces} +\begin{DoxyCompactItemize} +\item + \mbox{\hyperlink{namespacetest__ostream__dev}{test\+\_\+ostream\+\_\+dev}} +\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{namespacetest__ostream__dev_a63ac45c38a80885dda445ddee2a1e0c8}{test\+\_\+ostream\+\_\+dev\+::test\+\_\+data\+\_\+t}} = uint8\+\_\+t +\end{DoxyCompactItemize} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{namespacetest__ostream__dev_a7d0ba57fc928d165451e031ab6935d1c}{test\+\_\+ostream\+\_\+dev\+::\+T\+E\+S\+T\+\_\+F}} (Tostream\+\_\+\+Idev, Construction) +\item +\mbox{\hyperlink{namespacetest__ostream__dev_a933ad1f9cbffc56c355494b2e5a898ed}{test\+\_\+ostream\+\_\+dev\+::\+T\+E\+S\+T\+\_\+F}} (Tostream\+\_\+\+Idev, Api) +\item +\mbox{\hyperlink{namespacetest__ostream__dev_a48320d39ddad3627913184df15a6eeae}{test\+\_\+ostream\+\_\+dev\+::\+T\+E\+S\+T\+\_\+F}} (Tostream\+\_\+\+Idev, stream\+Operator) +\item +\mbox{\hyperlink{namespacetest__ostream__dev_a15b2cd537bd2f755805c043397a90369}{test\+\_\+ostream\+\_\+dev\+::\+T\+E\+S\+T\+\_\+F}} (Tostream\+\_\+\+Idev, Iterator1) +\item +\mbox{\hyperlink{namespacetest__ostream__dev_a0f24de95548df2cfaee079bb7569b43d}{test\+\_\+ostream\+\_\+dev\+::\+T\+E\+S\+T\+\_\+F}} (Tostream\+\_\+\+Idev, Iterator2) +\item +\mbox{\hyperlink{namespacetest__ostream__dev_a5b0629176b2db8d5e78c26337bab73fd}{test\+\_\+ostream\+\_\+dev\+::\+T\+E\+S\+T\+\_\+F}} (Tostream\+\_\+\+Vdev, virtual\+Api) +\item +\mbox{\hyperlink{namespacetest__ostream__dev_a362bd1b25e349211c067276cbed35fbc}{test\+\_\+ostream\+\_\+dev\+::\+T\+E\+S\+T\+\_\+F}} (Tostream\+\_\+\+Vdev, virtual\+Stream) +\item +\mbox{\hyperlink{namespacetest__ostream__dev_ac73a944cfce63878b27a9bc5843d1047}{test\+\_\+ostream\+\_\+dev\+::\+T\+E\+S\+T\+\_\+F}} (Tostream\+\_\+\+Vdev, virtual\+Iterator) +\end{DoxyCompactItemize} +\subsection*{Variables} +\begin{DoxyCompactItemize} +\item +test\+\_\+data\+\_\+t \mbox{\hyperlink{namespacetest__ostream__dev_a7e9209298f1eec33fb72637fd17720d6}{test\+\_\+ostream\+\_\+dev\+::\+Idata}} = 42 +\item +test\+\_\+data\+\_\+t \& \mbox{\hyperlink{namespacetest__ostream__dev_a1a5e65c79718b3bbc72501c02e090ac0}{test\+\_\+ostream\+\_\+dev\+::\+IdataR}} = Idata +\item +test\+\_\+data\+\_\+t \&\& \mbox{\hyperlink{namespacetest__ostream__dev_ad7ded62f12c3abfcaddae39a905793b4}{test\+\_\+ostream\+\_\+dev\+::\+Idata\+RR}} = 0x\+AA +\item +test\+\_\+data\+\_\+t \mbox{\hyperlink{namespacetest__ostream__dev_ab0ee4bd586c47ce5f9dcc0fe60dd27a2}{test\+\_\+ostream\+\_\+dev\+::\+Ibuffer}} \mbox{[}$\,$\mbox{]} = \{1, 2, 3, 4, 5, 6, 7, 8, 9, 10\} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Copyright (C) 2018 Christos Choutouridis + +This program is free software\+: you can redistribute it and/or modify it under the terms of the G\+NU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but W\+I\+T\+H\+O\+UT A\+NY W\+A\+R\+R\+A\+N\+TY; without even the implied warranty of M\+E\+R\+C\+H\+A\+N\+T\+A\+B\+I\+L\+I\+TY or F\+I\+T\+N\+E\+SS F\+OR A P\+A\+R\+T\+I\+C\+U\+L\+AR P\+U\+R\+P\+O\+SE. See the G\+NU Lesser General Public License for more details. + +You should have received a copy of the G\+NU Lesser General Public License along with this program. If not, see \href{http://www.gnu.org/licenses/}{\tt http\+://www.\+gnu.\+org/licenses/}. \ No newline at end of file diff --git a/doc/latex/test__spi__impl_8cpp.tex b/doc/latex/test__spi__impl_8cpp.tex new file mode 100644 index 0000000..aa57ef7 --- /dev/null +++ b/doc/latex/test__spi__impl_8cpp.tex @@ -0,0 +1,35 @@ +\hypertarget{test__spi__impl_8cpp}{}\section{test/tests/test\+\_\+spi\+\_\+impl.cpp File Reference} +\label{test__spi__impl_8cpp}\index{test/tests/test\+\_\+spi\+\_\+impl.\+cpp@{test/tests/test\+\_\+spi\+\_\+impl.\+cpp}} +{\ttfamily \#include $<$gtest/gtest.\+h$>$}\newline +{\ttfamily \#include $<$utl/com/spi\+\_\+bb.\+h$>$}\newline +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +class \mbox{\hyperlink{classtest__spi_1_1_s_p_i}{test\+\_\+spi\+::\+S\+PI}} +\item +class \mbox{\hyperlink{classtest__spi_1_1_test__spi__impl}{test\+\_\+spi\+::\+Test\+\_\+spi\+\_\+impl}} +\end{DoxyCompactItemize} +\subsection*{Namespaces} +\begin{DoxyCompactItemize} +\item + \mbox{\hyperlink{namespacetest__spi}{test\+\_\+spi}} +\end{DoxyCompactItemize} +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\hyperlink{namespacetest__spi_a08b6fb6773314f5914664f2089ea4eac}{test\+\_\+spi\+::\+T\+E\+S\+T\+\_\+F}} (Test\+\_\+spi\+\_\+impl, Test\+Concept) +\item +\mbox{\hyperlink{namespacetest__spi_a751c0b9fe17b002b0ab620f180a46307}{test\+\_\+spi\+::\+T\+E\+S\+T\+\_\+F}} (Test\+\_\+spi\+\_\+impl, Test\+Construction) +\item +\mbox{\hyperlink{namespacetest__spi_aa98da2aecf8b42f492ec1c206e8b8aba}{test\+\_\+spi\+::\+T\+E\+S\+T\+\_\+F}} (Test\+\_\+spi\+\_\+impl, Test\+Functionality) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Copyright (C) 2018 Christos Choutouridis + +This program is free software\+: you can redistribute it and/or modify it under the terms of the G\+NU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but W\+I\+T\+H\+O\+UT A\+NY W\+A\+R\+R\+A\+N\+TY; without even the implied warranty of M\+E\+R\+C\+H\+A\+N\+T\+A\+B\+I\+L\+I\+TY or F\+I\+T\+N\+E\+SS F\+OR A P\+A\+R\+T\+I\+C\+U\+L\+AR P\+U\+R\+P\+O\+SE. See the G\+NU Lesser General Public License for more details. + +You should have received a copy of the G\+NU Lesser General Public License along with this program. If not, see \href{http://www.gnu.org/licenses/}{\tt http\+://www.\+gnu.\+org/licenses/}. \ No newline at end of file diff --git a/doc/latex/typelist_8h.tex b/doc/latex/typelist_8h.tex new file mode 100644 index 0000000..5436fe2 --- /dev/null +++ b/doc/latex/typelist_8h.tex @@ -0,0 +1,309 @@ +\hypertarget{typelist_8h}{}\section{include/utl/meta/typelist.h File Reference} +\label{typelist_8h}\index{include/utl/meta/typelist.\+h@{include/utl/meta/typelist.\+h}} + + +A template parameter \char`\"{}container\char`\"{}. + + +{\ttfamily \#include $<$utl/core/impl.\+h$>$}\newline +{\ttfamily \#include $<$utl/meta/integral.\+h$>$}\newline +{\ttfamily \#include $<$utl/meta/detection.\+h$>$}\newline +{\ttfamily \#include $<$utl/meta/invoke.\+h$>$}\newline +{\ttfamily \#include $<$utl/meta/sfinae.\+h$>$}\newline +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1typelist}{utl\+::meta\+::typelist$<$ Ts $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1apply__impl_1_1apply__}{utl\+::meta\+::apply\+\_\+impl\+::apply\+\_\+$<$ Fn, Seq $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01typelist_3_01_list_8_8_8_01_4_01_4}{utl\+::meta\+::apply\+\_\+impl\+::apply\+\_\+$<$ Fn, typelist$<$ List... $>$ $>$}} +\begin{DoxyCompactList}\small\item\em {\ttfamily Sequence} == typelist$<$$>$ \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1apply__impl_1_1apply___3_01_fn_00_01integer__sequence_3_01_t_00_01_is_8_8_8_01_4_01_4}{utl\+::meta\+::apply\+\_\+impl\+::apply\+\_\+$<$ Fn, integer\+\_\+sequence$<$ T, Is... $>$ $>$}} +\begin{DoxyCompactList}\small\item\em Sequence == integer\+\_\+sequence$<$$>$ \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1at__impl_1_1__add__pointer}{utl\+::meta\+::at\+\_\+impl\+::\+\_\+add\+\_\+pointer$<$ T $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1at__impl_1_1at__head__}{utl\+::meta\+::at\+\_\+impl\+::at\+\_\+head\+\_\+$<$... $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1at__impl_1_1at__head___3_01typelist_3_01voids_8_8_8_01_4_01_4}{utl\+::meta\+::at\+\_\+impl\+::at\+\_\+head\+\_\+$<$ typelist$<$ voids... $>$ $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1at__impl_1_1at__}{utl\+::meta\+::at\+\_\+impl\+::at\+\_\+$<$ List, N $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1at__impl_1_1at___3_01typelist_3_01_list_8_8_8_01_4_00_01_n_01_4}{utl\+::meta\+::at\+\_\+impl\+::at\+\_\+$<$ typelist$<$ List... $>$, N $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1front__impl_1_1front__}{utl\+::meta\+::front\+\_\+impl\+::front\+\_\+$<$ L $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1front__impl_1_1front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4}{utl\+::meta\+::front\+\_\+impl\+::front\+\_\+$<$ typelist$<$ Head, Tail... $>$ $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1back__impl_1_1back__}{utl\+::meta\+::back\+\_\+impl\+::back\+\_\+$<$ List $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1back__impl_1_1back___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4}{utl\+::meta\+::back\+\_\+impl\+::back\+\_\+$<$ typelist$<$ Head, Tail... $>$ $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1cat__impl_1_1cat__}{utl\+::meta\+::cat\+\_\+impl\+::cat\+\_\+$<$ Lists $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1cat__impl_1_1cat___3_4}{utl\+::meta\+::cat\+\_\+impl\+::cat\+\_\+$<$$>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_01_4}{utl\+::meta\+::cat\+\_\+impl\+::cat\+\_\+$<$ typelist$<$ L1... $>$ $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_01_4}{utl\+::meta\+::cat\+\_\+impl\+::cat\+\_\+$<$ typelist$<$ L1... $>$, typelist$<$ L2... $>$ $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1cat__impl_1_1cat___3_01typelist_3_01_l1_8_8_8_01_4_00_01typelist_3_01_l2_8_8_8_01_4_00_01_ln_8_8_8_01_4}{utl\+::meta\+::cat\+\_\+impl\+::cat\+\_\+$<$ typelist$<$ L1... $>$, typelist$<$ L2... $>$, Ln... $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1fold__impl_1_1fold__}{utl\+::meta\+::fold\+\_\+impl\+::fold\+\_\+$<$ typename, typename, typename $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4}{utl\+::meta\+::fold\+\_\+impl\+::fold\+\_\+$<$ typelist$<$ Head, Tail... $>$, V, Fn $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1fold__impl_1_1fold___3_01typelist_3_4_00_01_v0_00_01_fn_01_4}{utl\+::meta\+::fold\+\_\+impl\+::fold\+\_\+$<$ typelist$<$$>$, V0, Fn $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold__}{utl\+::meta\+::rev\+\_\+fold\+\_\+impl\+::rev\+\_\+fold\+\_\+$<$ typename, typename, typename $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_v_00_01_fn_01_4}{utl\+::meta\+::rev\+\_\+fold\+\_\+impl\+::rev\+\_\+fold\+\_\+$<$ typelist$<$ Head, Tail... $>$, V, Fn $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_01_tail_01_4_00_01_v_00_01_fn_01_4}{utl\+::meta\+::rev\+\_\+fold\+\_\+impl\+::rev\+\_\+fold\+\_\+$<$ typelist$<$ Tail $>$, V, Fn $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1rev__fold__impl_1_1rev__fold___3_01typelist_3_4_00_01_v_00_01_fn_01_4}{utl\+::meta\+::rev\+\_\+fold\+\_\+impl\+::rev\+\_\+fold\+\_\+$<$ typelist$<$$>$, V, Fn $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1reverse__impl_1_1reverse__}{utl\+::meta\+::reverse\+\_\+impl\+::reverse\+\_\+$<$ List, V $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1pop__front__impl_1_1pop__front__}{utl\+::meta\+::pop\+\_\+front\+\_\+impl\+::pop\+\_\+front\+\_\+$<$ List $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1pop__front__impl_1_1pop__front___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_01_4}{utl\+::meta\+::pop\+\_\+front\+\_\+impl\+::pop\+\_\+front\+\_\+$<$ typelist$<$ Head, Tail... $>$ $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1pop__back__impl_1_1pop__back__}{utl\+::meta\+::pop\+\_\+back\+\_\+impl\+::pop\+\_\+back\+\_\+$<$ List $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1transform__impl_1_1transform__}{utl\+::meta\+::transform\+\_\+impl\+::transform\+\_\+$<$ typename, typename $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts_8_8_8_01_40fe2b1c8ede658aadb6925de73541689}{utl\+::meta\+::transform\+\_\+impl\+::transform\+\_\+$<$ typelist$<$ typelist$<$ Ts... $>$, Fn $>$, void\+\_\+t$<$ invoke$<$ Fn, Ts $>$... $>$ $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1transform__impl_1_1transform___3_01typelist_3_01typelist_3_01_ts0_8_8_8_01_8fba6bf3d0565d17a96950cb517db5f1}{utl\+::meta\+::transform\+\_\+impl\+::transform\+\_\+$<$ typelist$<$ typelist$<$ Ts0... $>$, typelist$<$ Ts1... $>$, Fn $>$, void\+\_\+t$<$ invoke$<$ Fn, Ts0, Ts1 $>$... $>$ $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy__}{utl\+::meta\+::transform\+\_\+lazy\+\_\+impl\+::transform\+\_\+lazy\+\_\+$<$ typename, typename $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t56243bc35bf73da8271cb88f34751f3a}{utl\+::meta\+::transform\+\_\+lazy\+\_\+impl\+::transform\+\_\+lazy\+\_\+$<$ typelist$<$ typelist$<$ Ts... $>$, Fn $>$, void\+\_\+t$<$ invoke$<$ Fn, Ts $>$... $>$ $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1transform__lazy__impl_1_1transform__lazy___3_01typelist_3_01typelist_3_01_t14ff615a4bff6c4c3701df9c38aaa6a5}{utl\+::meta\+::transform\+\_\+lazy\+\_\+impl\+::transform\+\_\+lazy\+\_\+$<$ typelist$<$ typelist$<$ Ts0... $>$, typelist$<$ Ts1... $>$, Fn $>$, void\+\_\+t$<$ invoke$<$ Fn, Ts0, Ts1 $>$... $>$ $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1find__if__impl_1_1find__if__}{utl\+::meta\+::find\+\_\+if\+\_\+impl\+::find\+\_\+if\+\_\+$<$ typename, typename, index\+\_\+t $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4}{utl\+::meta\+::find\+\_\+if\+\_\+impl\+::find\+\_\+if\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, N $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1find__if__impl_1_1find__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4}{utl\+::meta\+::find\+\_\+if\+\_\+impl\+::find\+\_\+if\+\_\+$<$ typelist$<$$>$, Fn, N $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1seek__if__impl_1_1seek__if__}{utl\+::meta\+::seek\+\_\+if\+\_\+impl\+::seek\+\_\+if\+\_\+$<$ typename, typename, index\+\_\+t $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4}{utl\+::meta\+::seek\+\_\+if\+\_\+impl\+::seek\+\_\+if\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, N $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1seek__if__impl_1_1seek__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4}{utl\+::meta\+::seek\+\_\+if\+\_\+impl\+::seek\+\_\+if\+\_\+$<$ typelist$<$$>$, Fn, N $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1count__if__impl_1_1count__if__}{utl\+::meta\+::count\+\_\+if\+\_\+impl\+::count\+\_\+if\+\_\+$<$ typename, typename, size\+\_\+t $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_n_01_4}{utl\+::meta\+::count\+\_\+if\+\_\+impl\+::count\+\_\+if\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, N $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1count__if__impl_1_1count__if___3_01typelist_3_4_00_01_fn_00_01_n_01_4}{utl\+::meta\+::count\+\_\+if\+\_\+impl\+::count\+\_\+if\+\_\+$<$ typelist$<$$>$, Fn, N $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1filter__impl_1_1filter__}{utl\+::meta\+::filter\+\_\+impl\+::filter\+\_\+$<$ typename, typename, typename $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_01_head_00_01_tail_8_8_8_01_4_00_01_fn_00_01_l_01_4}{utl\+::meta\+::filter\+\_\+impl\+::filter\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, L $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1filter__impl_1_1filter___3_01typelist_3_4_00_01_fn_00_01_l_01_4}{utl\+::meta\+::filter\+\_\+impl\+::filter\+\_\+$<$ typelist$<$$>$, Fn, L $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1replace__if__impl_1_1replace__if__}{utl\+::meta\+::replace\+\_\+if\+\_\+impl\+::replace\+\_\+if\+\_\+$<$ typename, typename, typename, typename $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_01_head_00_01_tail_8_8_8_dfa8065a3617f53ecded260506092a07}{utl\+::meta\+::replace\+\_\+if\+\_\+impl\+::replace\+\_\+if\+\_\+$<$ typelist$<$ Head, Tail... $>$, Fn, T, Ret $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1meta_1_1replace__if__impl_1_1replace__if___3_01typelist_3_4_00_01_fn_00_01_t_00_01_ret_01_4}{utl\+::meta\+::replace\+\_\+if\+\_\+impl\+::replace\+\_\+if\+\_\+$<$ typelist$<$$>$, Fn, T, Ret $>$}} +\end{DoxyCompactItemize} +\subsection*{Namespaces} +\begin{DoxyCompactItemize} +\item + \mbox{\hyperlink{namespaceutl}{utl}} +\begin{DoxyCompactList}\small\item\em S\+TL\textquotesingle{}s core language concepts. \end{DoxyCompactList}\item + \mbox{\hyperlink{namespaceutl_1_1meta}{utl\+::meta}} +\item + \mbox{\hyperlink{namespaceutl_1_1meta_1_1apply__impl}{utl\+::meta\+::apply\+\_\+impl}} +\item + \mbox{\hyperlink{namespaceutl_1_1meta_1_1at__impl}{utl\+::meta\+::at\+\_\+impl}} +\item + \mbox{\hyperlink{namespaceutl_1_1meta_1_1front__impl}{utl\+::meta\+::front\+\_\+impl}} +\item + \mbox{\hyperlink{namespaceutl_1_1meta_1_1back__impl}{utl\+::meta\+::back\+\_\+impl}} +\item + \mbox{\hyperlink{namespaceutl_1_1meta_1_1cat__impl}{utl\+::meta\+::cat\+\_\+impl}} +\item + \mbox{\hyperlink{namespaceutl_1_1meta_1_1fold__impl}{utl\+::meta\+::fold\+\_\+impl}} +\item + \mbox{\hyperlink{namespaceutl_1_1meta_1_1rev__fold__impl}{utl\+::meta\+::rev\+\_\+fold\+\_\+impl}} +\item + \mbox{\hyperlink{namespaceutl_1_1meta_1_1reverse__impl}{utl\+::meta\+::reverse\+\_\+impl}} +\item + \mbox{\hyperlink{namespaceutl_1_1meta_1_1pop__front__impl}{utl\+::meta\+::pop\+\_\+front\+\_\+impl}} +\item + \mbox{\hyperlink{namespaceutl_1_1meta_1_1pop__back__impl}{utl\+::meta\+::pop\+\_\+back\+\_\+impl}} +\item + \mbox{\hyperlink{namespaceutl_1_1meta_1_1transform__impl}{utl\+::meta\+::transform\+\_\+impl}} +\item + \mbox{\hyperlink{namespaceutl_1_1meta_1_1transform__lazy__impl}{utl\+::meta\+::transform\+\_\+lazy\+\_\+impl}} +\item + \mbox{\hyperlink{namespaceutl_1_1meta_1_1find__if__impl}{utl\+::meta\+::find\+\_\+if\+\_\+impl}} +\item + \mbox{\hyperlink{namespaceutl_1_1meta_1_1seek__if__impl}{utl\+::meta\+::seek\+\_\+if\+\_\+impl}} +\item + \mbox{\hyperlink{namespaceutl_1_1meta_1_1count__if__impl}{utl\+::meta\+::count\+\_\+if\+\_\+impl}} +\item + \mbox{\hyperlink{namespaceutl_1_1meta_1_1filter__impl}{utl\+::meta\+::filter\+\_\+impl}} +\item + \mbox{\hyperlink{namespaceutl_1_1meta_1_1replace__if__impl}{utl\+::meta\+::replace\+\_\+if\+\_\+impl}} +\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename List $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a0edfc2c15e42531e53c0822264d220ec}{utl\+::meta\+::size}} = size\+\_\+$<$ List\+::size()$>$ +\item +{\footnotesize template$<$typename List $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a58c1744750d0df133034f60a95f87e19}{utl\+::meta\+::empty}} = bool\+\_\+$<$ List\+::empty()$>$ +\item +{\footnotesize template$<$typename T1 , typename T2 $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_aa6513d9d2a5db3ba3517efff33adc761}{utl\+::meta\+::pair}} = typelist$<$ T1, T2 $>$ +\item +{\footnotesize template$<$typename T $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_1_1at__impl_a1759f370bc952ff21077efca9fe0e0b4}{utl\+::meta\+::at\+\_\+impl\+::add\+\_\+pointer}} = eval$<$ \+\_\+add\+\_\+pointer$<$ T $>$ $>$ +\item +{\footnotesize template$<$typename List , typename... Ts$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ab0f84ba0807b6fd36fa9e4e5cfc4cd32}{utl\+::meta\+::push\+\_\+front}} = eval$<$ apply$<$ bind\+\_\+front$<$ quote$<$ typelist $>$, Ts... $>$, List $>$ $>$ +\item +{\footnotesize template$<$typename List , typename... Ts$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_adf545ba110edc6a34ddcaf2280a0c7f4}{utl\+::meta\+::push\+\_\+back}} = eval$<$ apply$<$ bind\+\_\+back$<$ quote$<$ typelist $>$, Ts... $>$, List $>$ $>$ +\item +{\footnotesize template$<$typename List , typename Pred $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ace96e2f19376375cc71ee0cd80f4bb75}{utl\+::meta\+::all\+\_\+of}} = if\+\_\+$<$ empty$<$ List $>$, false\+\_\+, empty$<$ filter$<$ List, compose$<$ quote$<$ not\+\_\+ $>$, Pred $>$ $>$ $>$ $>$ +\item +{\footnotesize template$<$typename List , typename Pred $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a212c26a29491610187f6e8543f06df5f}{utl\+::meta\+::any\+\_\+of}} = not\+\_\+$<$ empty$<$ filter$<$ List, Pred $>$ $>$ $>$ +\item +{\footnotesize template$<$typename List , typename Pred $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_af324255cfaa0be3f02843961f5becb85}{utl\+::meta\+::none\+\_\+of}} = empty$<$ filter$<$ List, Pred $>$ $>$ +\end{DoxyCompactItemize} +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$size\+\_\+t N, typename ... Ts$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_af6ff0017ea5e914543527b7135930f47}{utl\+::meta\+::repeat\+\_\+c}} = typename typelist$<$ Ts... $>$\+::template times$<$ N $>$ +\item +{\footnotesize template$<$typename N , typename ... Ts$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_aa013c45afb59b5c132a72be54ba145fb}{utl\+::meta\+::repeat}} = repeat\+\_\+c$<$ N\+::type\+::value, Ts... $>$ +\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename Fn , typename Seq $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a3f684549221fac60bc8c7979cb4b98f4}{utl\+::meta\+::apply}} = apply\+\_\+impl\+::apply\+\_\+$<$ Fn, Seq $>$ +\item +{\footnotesize template$<$typename Fn , typename Seq $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ac2952cd4ed04938edc6de21ffe200e9b}{utl\+::meta\+::apply\+\_\+t}} = eval$<$ apply$<$ Fn, Seq $>$ $>$ +\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename List , index\+\_\+t N$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a6683b804a20d54817d61ce4663527084}{utl\+::meta\+::at\+\_\+c}} = eval$<$ at\+\_\+impl\+::at\+\_\+$<$ List, N $>$ $>$ +\item +{\footnotesize template$<$typename List , typename N $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a67329ec425c857dcaf4cde9044674c90}{utl\+::meta\+::at}} = at\+\_\+c$<$ List, N\+::type\+::value $>$ +\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename List $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ace309fb2eff5c4a5a806b9393abea486}{utl\+::meta\+::front}} = eval$<$ front\+\_\+impl\+::front\+\_\+$<$ List $>$ $>$ +\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename List $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ad9ee55707fc633d53577b81a59136b7d}{utl\+::meta\+::back}} = eval$<$ back\+\_\+impl\+::back\+\_\+$<$ List $>$ $>$ +\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename... Lists$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a70d0910ace47f4e12e8fa0788679044a}{utl\+::meta\+::cat}} = eval$<$ cat\+\_\+impl\+::cat\+\_\+$<$ Lists... $>$ $>$ +\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename List , typename V , typename Fn $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a6108f39d28c924146eff4143a61af226}{utl\+::meta\+::fold}} = eval$<$ fold\+\_\+impl\+::fold\+\_\+$<$ List, V, Fn $>$ $>$ +\item +{\footnotesize template$<$typename List , typename V , typename Fn $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_aeb5cb48e804cd160b39f8c3ed2967c37}{utl\+::meta\+::accumulate}} = fold$<$ List, V, Fn $>$ +\begin{DoxyCompactList}\small\item\em accumulate is an stl name for fold \end{DoxyCompactList}\item +{\footnotesize template$<$typename List , typename V , typename Fn $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ab1a91edef4cf9fd56b73c9a03eaeb3d4}{utl\+::meta\+::rev\+\_\+fold}} = eval$<$ rev\+\_\+fold\+\_\+impl\+::rev\+\_\+fold\+\_\+$<$ List, V, Fn $>$ $>$ +\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename List $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a2ae6bfa22f1912b0ba09d24e0ae2ccd9}{utl\+::meta\+::reverse}} = eval$<$ reverse\+\_\+impl\+::reverse\+\_\+$<$ List $>$ $>$ +\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename List $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_aa4a307a81c0640c6c0dd08f8a53f3c32}{utl\+::meta\+::pop\+\_\+front}} = eval$<$ pop\+\_\+front\+\_\+impl\+::pop\+\_\+front\+\_\+$<$ List $>$ $>$ +\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename List $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a86a37f5803c474823963e1f3c6f7a6d6}{utl\+::meta\+::pop\+\_\+back}} = eval$<$ pop\+\_\+back\+\_\+impl\+::pop\+\_\+back\+\_\+$<$ List $>$ $>$ +\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename... Args$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ac8bbf187eea3cb5da38d1bdc97b52334}{utl\+::meta\+::transform}} = eval$<$ transform\+\_\+impl\+::transform\+\_\+$<$ typelist$<$ Args... $>$ $>$ $>$ +\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename... Args$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a55c0405bfb94c1d285d3131390c31451}{utl\+::meta\+::transform\+\_\+lazy}} = eval$<$ transform\+\_\+lazy\+\_\+impl\+::transform\+\_\+lazy\+\_\+$<$ typelist$<$ Args... $>$ $>$ $>$ +\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename List , typename Pred $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_aacf124929c0cbb3b29d34679bff50a96}{utl\+::meta\+::find\+\_\+if}} = eval$<$ find\+\_\+if\+\_\+impl\+::find\+\_\+if\+\_\+$<$ List, Pred, 0 $>$ $>$ +\item +{\footnotesize template$<$typename List , typename T $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_af4c9b6350bba98cc0dd73e87cb4ce413}{utl\+::meta\+::find}} = find\+\_\+if$<$ List, same\+\_\+as$<$ T $>$ $>$ +\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename List , typename Pred $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ab8eafd75f3077a36c4e3363b742da64a}{utl\+::meta\+::seek\+\_\+if}} = eval$<$ seek\+\_\+if\+\_\+impl\+::seek\+\_\+if\+\_\+$<$ List, Pred, 0 $>$ $>$ +\item +{\footnotesize template$<$typename List , typename T $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_aa550d9dc96d34623af4ce71f8a1eaff5}{utl\+::meta\+::seek}} = seek\+\_\+if$<$ List, same\+\_\+as$<$ T $>$ $>$ +\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename List , typename Pred $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a981e18b40d69cdd76466de7bfe24e619}{utl\+::meta\+::count\+\_\+if}} = eval$<$ count\+\_\+if\+\_\+impl\+::count\+\_\+if\+\_\+$<$ List, Pred, 0 $>$ $>$ +\item +{\footnotesize template$<$typename List , typename T $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ab5508236016638fa8e6b97cd17dfc9c2}{utl\+::meta\+::count}} = count\+\_\+if$<$ List, same\+\_\+as$<$ T $>$ $>$ +\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename List , typename Pred $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ac72acc616316c322e750d20a46553ba4}{utl\+::meta\+::filter}} = eval$<$ filter\+\_\+impl\+::filter\+\_\+$<$ List, Pred, typelist$<$$>$ $>$ $>$ +\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename List , typename Pred , typename T $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a848a47bf281bf3eaf932cc9113477102}{utl\+::meta\+::replace\+\_\+if}} = eval$<$ replace\+\_\+if\+\_\+impl\+::replace\+\_\+if\+\_\+$<$ List, Pred, T, typelist$<$$>$ $>$ $>$ +\item +{\footnotesize template$<$typename List , typename T , typename U $>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ac9d120f858ebfa2b0ef74c6305a9fb6d}{utl\+::meta\+::replace}} = eval$<$ replace\+\_\+if$<$ List, same\+\_\+as$<$ T $>$, U $>$ $>$ +\end{DoxyCompactItemize} + + + +\subsection{Detailed Description} +A template parameter \char`\"{}container\char`\"{}. + +Copyright (C) 2018-\/2019 Christos Choutouridis + +This program is free software\+: you can redistribute it and/or modify it under the terms of the G\+NU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but W\+I\+T\+H\+O\+UT A\+NY W\+A\+R\+R\+A\+N\+TY; without even the implied warranty of M\+E\+R\+C\+H\+A\+N\+T\+A\+B\+I\+L\+I\+TY or F\+I\+T\+N\+E\+SS F\+OR A P\+A\+R\+T\+I\+C\+U\+L\+AR P\+U\+R\+P\+O\+SE. See the G\+NU Lesser General Public License for more details. + +You should have received a copy of the G\+NU Lesser General Public License along with this program. If not, see \href{http://www.gnu.org/licenses/}{\tt http\+://www.\+gnu.\+org/licenses/}. \ No newline at end of file diff --git a/doc/latex/types_8h.tex b/doc/latex/types_8h.tex new file mode 100644 index 0000000..e607829 --- /dev/null +++ b/doc/latex/types_8h.tex @@ -0,0 +1,47 @@ +\hypertarget{types_8h}{}\section{include/utl/core/types.h File Reference} +\label{types_8h}\index{include/utl/core/types.\+h@{include/utl/core/types.\+h}} + + +Basic type alias support. + + +{\ttfamily \#include $<$cstddef$>$}\newline +{\ttfamily \#include $<$cstdint$>$}\newline +\subsection*{Namespaces} +\begin{DoxyCompactItemize} +\item + \mbox{\hyperlink{namespaceutl}{utl}} +\begin{DoxyCompactList}\small\item\em S\+TL\textquotesingle{}s core language concepts. \end{DoxyCompactList}\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{Indent}\textbf{ byte and word types}\par +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{namespaceutl_a1427cb5a2b13313147a902173b91e3c1}{utl\+::byte\+\_\+t}} = uint8\+\_\+t +\begin{DoxyCompactList}\small\item\em 8 bits wide \end{DoxyCompactList}\item +using \mbox{\hyperlink{namespaceutl_a1368cb6928f648fe4db1c85c190f0548}{utl\+::word\+\_\+t}} = uint16\+\_\+t +\begin{DoxyCompactList}\small\item\em 16 bits wide \end{DoxyCompactList}\item +using \mbox{\hyperlink{namespaceutl_abc93b88d0c0f95081ecd3d2194daf0fb}{utl\+::dword\+\_\+t}} = uint32\+\_\+t +\end{DoxyCompactItemize} +\end{Indent} +\begin{Indent}\textbf{ size and index}\par +\begin{DoxyCompactItemize} +\item +using \mbox{\hyperlink{namespaceutl_a22cbecb50ee5c1032de66133e96cbac6}{utl\+::size\+\_\+t}} = std\+::size\+\_\+t +\item +using \mbox{\hyperlink{namespaceutl_a676c0acd539dd04048dcc7b4d698577e}{utl\+::index\+\_\+t}} = size\+\_\+t +\begin{DoxyCompactList}\small\item\em index\+\_\+t and size\+\_\+t mend to be interchangeable \end{DoxyCompactList}\item +using \mbox{\hyperlink{namespaceutl_a1b83655ba00b548af9b51f169c6c567a}{utl\+::ptrdiff\+\_\+t}} = std\+::ptrdiff\+\_\+t +\end{DoxyCompactItemize} +\end{Indent} + + +\subsection{Detailed Description} +Basic type alias support. + +Copyright (C) 2018 Christos Choutouridis + +This program is free software\+: you can redistribute it and/or modify it under the terms of the G\+NU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but W\+I\+T\+H\+O\+UT A\+NY W\+A\+R\+R\+A\+N\+TY; without even the implied warranty of M\+E\+R\+C\+H\+A\+N\+T\+A\+B\+I\+L\+I\+TY or F\+I\+T\+N\+E\+SS F\+OR A P\+A\+R\+T\+I\+C\+U\+L\+AR P\+U\+R\+P\+O\+SE. See the G\+NU Lesser General Public License for more details. + +You should have received a copy of the G\+NU Lesser General Public License along with this program. If not, see \href{http://www.gnu.org/licenses/}{\tt http\+://www.\+gnu.\+org/licenses/}. \ No newline at end of file diff --git a/doc/latex/useif_8h.tex b/doc/latex/useif_8h.tex new file mode 100644 index 0000000..f09ba03 --- /dev/null +++ b/doc/latex/useif_8h.tex @@ -0,0 +1,40 @@ +\hypertarget{useif_8h}{}\section{include/utl/meta/useif.h File Reference} +\label{useif_8h}\index{include/utl/meta/useif.\+h@{include/utl/meta/useif.\+h}} + + +Template meta-\/programming S\+F\+I\+N\+AE helpers. + + +{\ttfamily \#include $<$utl/core/impl.\+h$>$}\newline +{\ttfamily \#include $<$utl/meta/operations.\+h$>$}\newline +{\ttfamily \#include $<$utl/meta/sfinae.\+h$>$}\newline +\subsection*{Namespaces} +\begin{DoxyCompactItemize} +\item + \mbox{\hyperlink{namespaceutl}{utl}} +\begin{DoxyCompactList}\small\item\em S\+TL\textquotesingle{}s core language concepts. \end{DoxyCompactList}\item + \mbox{\hyperlink{namespaceutl_1_1meta}{utl\+::meta}} +\end{DoxyCompactItemize} +\subsection*{Typedefs} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename \+\_\+\+T1 , typename \+\_\+\+T2 , typename \+\_\+\+Ret = \+\_\+\+T1$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a7b4ba22b3afb3e7a98e1012a350cb573}{utl\+::meta\+::use\+\_\+if\+\_\+same\+\_\+t}} = enable\+\_\+if\+\_\+t$<$ same\+\_\+$<$ \+\_\+\+T1, \+\_\+\+T2 $>$\+::value, \+\_\+\+Ret $>$ +\begin{DoxyCompactList}\small\item\em If same type resolves to \+\_\+\+Ret, else S\+F\+I\+N\+AE. \end{DoxyCompactList}\item +{\footnotesize template$<$typename \+\_\+\+T1 , typename \+\_\+\+T2 , typename \+\_\+\+Ret = \+\_\+\+T1$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_af590469269a8c378d937d8d75ee96e8c}{utl\+::meta\+::use\+\_\+if\+\_\+not\+\_\+same\+\_\+t}} = enable\+\_\+if\+\_\+t$<$ !same\+\_\+$<$ \+\_\+\+T1, \+\_\+\+T2 $>$\+::value, \+\_\+\+Ret $>$ +\begin{DoxyCompactList}\small\item\em If not same type resolves to \+\_\+\+Ret, else S\+F\+I\+N\+AE. \end{DoxyCompactList}\item +{\footnotesize template$<$typename T1 , typename... Ts$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_ad0394846551cd881782e46d2d05190de}{utl\+::meta\+::use\+\_\+if\+\_\+any\+\_\+t}} = enable\+\_\+if\+\_\+t$<$ or\+\_\+$<$ T1, Ts... $>$\+::value, T1 $>$ +\begin{DoxyCompactList}\small\item\em If any type (\+\_\+\+T1 or \+\_\+\+T2) type resolves to \+\_\+\+Ret, else to S\+F\+I\+N\+AE. \end{DoxyCompactList}\item +{\footnotesize template$<$typename T1 , typename... Ts$>$ }\\using \mbox{\hyperlink{namespaceutl_1_1meta_a52ff6257bf079904f9cb51a65f5a7397}{utl\+::meta\+::use\+\_\+if\+\_\+all\+\_\+t}} = enable\+\_\+if\+\_\+t$<$ and\+\_\+$<$ T1, Ts... $>$\+::value, T1 $>$ +\begin{DoxyCompactList}\small\item\em If both type (\+\_\+\+T1 and \+\_\+\+T2) type resolves to \+\_\+\+Ret, else to S\+F\+I\+N\+AE. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Template meta-\/programming S\+F\+I\+N\+AE helpers. + +Copyright (C) 2018 Christos Choutouridis + +This program is free software\+: you can redistribute it and/or modify it under the terms of the G\+NU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but W\+I\+T\+H\+O\+UT A\+NY W\+A\+R\+R\+A\+N\+TY; without even the implied warranty of M\+E\+R\+C\+H\+A\+N\+T\+A\+B\+I\+L\+I\+TY or F\+I\+T\+N\+E\+SS F\+OR A P\+A\+R\+T\+I\+C\+U\+L\+AR P\+U\+R\+P\+O\+SE. See the G\+NU Lesser General Public License for more details. + +You should have received a copy of the G\+NU Lesser General Public License along with this program. If not, see \href{http://www.gnu.org/licenses/}{\tt http\+://www.\+gnu.\+org/licenses/}. \ No newline at end of file diff --git a/doc/latex/utility_2invoke_8h.tex b/doc/latex/utility_2invoke_8h.tex new file mode 100644 index 0000000..0923f09 --- /dev/null +++ b/doc/latex/utility_2invoke_8h.tex @@ -0,0 +1,66 @@ +\hypertarget{utility_2invoke_8h}{}\section{include/utl/utility/invoke.h File Reference} +\label{utility_2invoke_8h}\index{include/utl/utility/invoke.\+h@{include/utl/utility/invoke.\+h}} + + +\mbox{\hyperlink{namespaceutl_adc675874b5426194d04112f76b356714}{invoke()}} and invoke traits implementation + + +{\ttfamily \#include $<$utl/core/impl.\+h$>$}\newline +{\ttfamily \#include $<$utl/meta/meta.\+h$>$}\newline +{\ttfamily \#include $<$type\+\_\+traits$>$}\newline +{\ttfamily \#include $<$functional$>$}\newline +{\ttfamily \#include $<$utility$>$}\newline +\subsection*{Classes} +\begin{DoxyCompactItemize} +\item +struct \mbox{\hyperlink{structutl_1_1detail_1_1is__ref__wrapper}{utl\+::detail\+::is\+\_\+ref\+\_\+wrapper$<$ T $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1detail_1_1is__ref__wrapper_3_01std_1_1reference__wrapper_3_01_u_01_4_01_4}{utl\+::detail\+::is\+\_\+ref\+\_\+wrapper$<$ std\+::reference\+\_\+wrapper$<$ U $>$ $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1is__invocable}{utl\+::is\+\_\+invocable$<$ F, Args $>$}} +\begin{DoxyCompactList}\small\item\em std\+::is\+\_\+invocable trait for C++11 \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1is__invocable__r}{utl\+::is\+\_\+invocable\+\_\+r$<$ R, F, Args $>$}} +\begin{DoxyCompactList}\small\item\em std\+::is\+\_\+invocable\+\_\+r trait for C++11 \end{DoxyCompactList}\item +struct \mbox{\hyperlink{structutl_1_1detail_1_1try__invoke}{utl\+::detail\+::try\+\_\+invoke$<$ \+\_\+\+Callable, \+\_\+\+Args $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1detail_1_1invoke__result__}{utl\+::detail\+::invoke\+\_\+result\+\_\+$<$ B, \+\_\+\+Callable, \+\_\+\+Args $>$}} +\item +struct \mbox{\hyperlink{structutl_1_1detail_1_1invoke__result___3_01true_00_01___callable_00_01___args_8_8_8_01_4}{utl\+::detail\+::invoke\+\_\+result\+\_\+$<$ true, \+\_\+\+Callable, \+\_\+\+Args... $>$}} +\end{DoxyCompactItemize} +\subsection*{Namespaces} +\begin{DoxyCompactItemize} +\item + \mbox{\hyperlink{namespaceutl}{utl}} +\begin{DoxyCompactList}\small\item\em S\+TL\textquotesingle{}s core language concepts. \end{DoxyCompactList}\item + \mbox{\hyperlink{namespaceutl_1_1detail}{utl\+::detail}} +\end{DoxyCompactItemize} +\subsection*{Typedefs} +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$typename \+\_\+\+Callable , typename... \+\_\+\+Args$>$ }\\using \mbox{\hyperlink{namespaceutl_a9dd560a1b217a10af34d1ade3e77a76b}{utl\+::invoke\+\_\+result}} = detail\+::invoke\+\_\+result\+\_\+$<$ is\+\_\+invocable$<$ \+\_\+\+Callable, \+\_\+\+Args... $>$\+::value, \+\_\+\+Callable, \+\_\+\+Args... $>$ +\begin{DoxyCompactList}\small\item\em invoke\+\_\+result (for C++14) \end{DoxyCompactList}\item +{\footnotesize template$<$typename \+\_\+\+Callable , typename... \+\_\+\+Args$>$ }\\using \mbox{\hyperlink{namespaceutl_ae40494acc30f2894c74544f3e9142933}{utl\+::invoke\+\_\+result\+\_\+t}} = meta\+::eval$<$ invoke\+\_\+result$<$ \+\_\+\+Callable, \+\_\+\+Args... $>$ $>$ +\begin{DoxyCompactList}\small\item\em invoke\+\_\+result\+\_\+t (for C++14) \end{DoxyCompactList}\end{DoxyCompactItemize} + +\subsection*{Functions} +\begin{DoxyCompactItemize} +\item +{\footnotesize template$<$class T , class Type , class T1 , class... Args, meta\+::enable\+\_\+if\+\_\+t$<$ std\+::is\+\_\+member\+\_\+function\+\_\+pointer$<$ std\+::decay\+\_\+t$<$ Type T\+::$\ast$$>$$>$\+::value \&\&std\+::is\+\_\+base\+\_\+of$<$ T, std\+::decay\+\_\+t$<$ T1 $>$$>$\+::value, int $>$ = 0$>$ }\\decltype(auto) \mbox{\hyperlink{namespaceutl_1_1detail_a2c39a67272ada5da5f1b84115dadc4a1}{utl\+::detail\+::invoke\+\_\+impl\+\_\+}} (Type T\+::$\ast$f, T1 \&\&t1, Args \&\&... args) +\item +{\footnotesize template$<$class F , class... Args$>$ }\\decltype(auto) \mbox{\hyperlink{namespaceutl_1_1detail_a09341831ecc9aab67a23d3a47b2d114f}{utl\+::detail\+::invoke\+\_\+impl\+\_\+}} (F \&\&f, Args \&\&... args) +\item +{\footnotesize template$<$typename \+\_\+\+Callable , typename... \+\_\+\+Args$>$ }\\decltype(auto) \mbox{\hyperlink{namespaceutl_adc675874b5426194d04112f76b356714}{utl\+::invoke}} (\+\_\+\+Callable \&\&fn, \+\_\+\+Args \&\&... args) +\begin{DoxyCompactList}\small\item\em Invoke a callable object (for C++14) \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\mbox{\hyperlink{namespaceutl_adc675874b5426194d04112f76b356714}{invoke()}} and invoke traits implementation + +Copyright (C) 2018-\/2019 Christos Choutouridis + +This program is free software\+: you can redistribute it and/or modify it under the terms of the G\+NU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but W\+I\+T\+H\+O\+UT A\+NY W\+A\+R\+R\+A\+N\+TY; without even the implied warranty of M\+E\+R\+C\+H\+A\+N\+T\+A\+B\+I\+L\+I\+TY or F\+I\+T\+N\+E\+SS F\+OR A P\+A\+R\+T\+I\+C\+U\+L\+AR P\+U\+R\+P\+O\+SE. See the G\+NU Lesser General Public License for more detail. + +You should have received a copy of the G\+NU Lesser General Public License along with this program. If not, see \href{http://www.gnu.org/licenses/}{\tt http\+://www.\+gnu.\+org/licenses/}. \ No newline at end of file diff --git a/doc/latex/version_8h.tex b/doc/latex/version_8h.tex new file mode 100644 index 0000000..29bff66 --- /dev/null +++ b/doc/latex/version_8h.tex @@ -0,0 +1,48 @@ +\hypertarget{version_8h}{}\section{include/utl/core/version.h File Reference} +\label{version_8h}\index{include/utl/core/version.\+h@{include/utl/core/version.\+h}} + + +version and cpp version checks + + +\subsection*{Macros} +\begin{DoxyCompactItemize} +\item +\#define \mbox{\hyperlink{group__version_ga7665eee3bbd12a8d910e6237e59d3aee}{U\+T\+L\+\_\+\+V\+E\+R\+S\+I\+ON}}~\char`\"{}0.\+1.\+0\char`\"{} +\begin{DoxyCompactList}\small\item\em utl version \end{DoxyCompactList}\item +\#define \mbox{\hyperlink{group__version_ga127ec85c06925fbd866584721188df32}{U\+T\+L\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+\+M\+A\+J\+OR}}~0 +\item +\#define \mbox{\hyperlink{group__version_ga9bc1d657cd305d09ffe825ab50672c2e}{U\+T\+L\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+\+M\+I\+N\+OR}}~1 +\item +\#define \mbox{\hyperlink{group__version_ga0ccbcd211a838107438ae0e194f871a9}{U\+T\+L\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+\+P\+A\+T\+CH}}~0 +\item +\#define \mbox{\hyperlink{group__version_ga7af1c603dc248e854fc773c26761ed83}{U\+T\+L\+\_\+\+V\+E\+R\+S\+I\+O\+N\+\_\+\+V\+A\+L\+UE}} +\item +\#define \mbox{\hyperlink{group__version_ga01247740b4b51ce21e9bb3c3c602996d}{C\+X\+X\+\_\+\+V\+ER}}~\+\_\+\+\_\+cplusplus +\begin{DoxyCompactList}\small\item\em C++ versions. \end{DoxyCompactList}\item +\#define \mbox{\hyperlink{group__version_gabef125dbb6ab064efeef0491a2a43da6}{C\+X\+X\+\_\+\+V\+E\+R\+\_\+\+S\+T\+D\+\_\+11}}~201103L +\item +\#define \mbox{\hyperlink{group__version_gaaa8cecbe78cff8d75dba25e39d5205f9}{C\+X\+X\+\_\+\+V\+E\+R\+\_\+\+S\+T\+D\+\_\+14}}~201402L +\item +\#define \mbox{\hyperlink{group__version_ga20a6261e3bdd7cad0eb7850e29ddfbe0}{C\+X\+X\+\_\+\+V\+E\+R\+\_\+\+S\+T\+D\+\_\+17}}~201703L +\item +\#define \mbox{\hyperlink{group__version_gaa3f471a65b0eb6118e8a2cb547a46d7a}{C\+X\+X\+\_\+\+V\+A\+R\+I\+A\+B\+L\+E\+\_\+\+T\+E\+M\+P\+L\+A\+T\+ES}}~(\mbox{\hyperlink{group__version_ga01247740b4b51ce21e9bb3c3c602996d}{C\+X\+X\+\_\+\+V\+ER}} $>$= \mbox{\hyperlink{group__version_gaaa8cecbe78cff8d75dba25e39d5205f9}{C\+X\+X\+\_\+\+V\+E\+R\+\_\+\+S\+T\+D\+\_\+14}}) +\begin{DoxyCompactList}\small\item\em Check for variable templates. \end{DoxyCompactList}\item +\#define \mbox{\hyperlink{group__version_ga80d0fb430c83076ebe61d619a7e606a9}{C\+X\+X\+\_\+\+C\+O\+N\+C\+E\+P\+TS}}~0 +\begin{DoxyCompactList}\small\item\em Check concepts. \end{DoxyCompactList}\item +\#define \mbox{\hyperlink{group__version_gad7f44253df62ec7f9455af26507a289b}{C\+X\+X\+\_\+\+I\+N\+L\+I\+N\+E\+\_\+\+V\+A\+R\+I\+A\+B\+L\+ES}}~(\mbox{\hyperlink{group__version_ga01247740b4b51ce21e9bb3c3c602996d}{C\+X\+X\+\_\+\+V\+ER}} $>$= \mbox{\hyperlink{group__version_ga20a6261e3bdd7cad0eb7850e29ddfbe0}{C\+X\+X\+\_\+\+V\+E\+R\+\_\+\+S\+T\+D\+\_\+17}}) +\begin{DoxyCompactList}\small\item\em Check for inline variables. \end{DoxyCompactList}\item +\#define \mbox{\hyperlink{group__version_gad8bb48d6d660495b6eb3d4bbecd7ec26}{C\+X\+X\+\_\+\+F\+O\+L\+D\+\_\+\+E\+X\+P\+R\+E\+S\+S\+I\+O\+NS}}~(\mbox{\hyperlink{group__version_ga01247740b4b51ce21e9bb3c3c602996d}{C\+X\+X\+\_\+\+V\+ER}} $>$= \mbox{\hyperlink{group__version_ga20a6261e3bdd7cad0eb7850e29ddfbe0}{C\+X\+X\+\_\+\+V\+E\+R\+\_\+\+S\+T\+D\+\_\+17}}) +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +version and cpp version checks + +Copyright (C) 2018-\/2019 Christos Choutouridis + +This program is free software\+: you can redistribute it and/or modify it under the terms of the G\+NU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, but W\+I\+T\+H\+O\+UT A\+NY W\+A\+R\+R\+A\+N\+TY; without even the implied warranty of M\+E\+R\+C\+H\+A\+N\+T\+A\+B\+I\+L\+I\+TY or F\+I\+T\+N\+E\+SS F\+OR A P\+A\+R\+T\+I\+C\+U\+L\+AR P\+U\+R\+P\+O\+SE. See the G\+NU Lesser General Public License for more details. + +You should have received a copy of the G\+NU Lesser General Public License along with this program. If not, see \href{http://www.gnu.org/licenses/}{\tt http\+://www.\+gnu.\+org/licenses/}. \ No newline at end of file diff --git a/include/utl/meta/detection.h b/include/utl/meta/detection.h index 6356a53..305f245 100644 --- a/include/utl/meta/detection.h +++ b/include/utl/meta/detection.h @@ -1,8 +1,6 @@ /*! * \file detection.h - * \brief Detection idiom based on WG21's N4502 [\ref n4502 1] from Walter E. Brown - * - * \anchor n4502 [1]: www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4502.pdf + * \brief Detection idiom based on WG21's N4502 [\ref 1] from Walter E. Brown * * Copyright (C) 2018-2019 Christos Choutouridis * @@ -18,6 +16,8 @@ * * You should have received a copy of the GNU Lesser General Public License * along with this program. If not, see . + * + * \anchor [1]: www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4502.pdf */ #ifndef __utl_meta_detection_h__ #define __utl_meta_detection_h__ @@ -100,8 +100,8 @@ namespace meta { /*! * Checks if Op is a valid expression without evaluating it. * - * \param Op a meta-callback function to pass Args... - * \param Args... types to pass to Op for checking + * \tparam Op a meta-callback function to pass Args... + * \tparam Args... types to pass to Op for checking * \return status of the operation [bool_] * \arg true_ if Op is valid expression * \arg false_ if Op is not valid diff --git a/test/tests/TmetaBasic.cpp b/test/tests/TmetaBasic.cpp index f885f29..1caa9d5 100644 --- a/test/tests/TmetaBasic.cpp +++ b/test/tests/TmetaBasic.cpp @@ -95,7 +95,7 @@ namespace TmetaBasic { EXPECT_EQ (true, (std::is_same, if_c, false_>>())); EXPECT_EQ (true, (std::is_same, Foo>>())); - EXPECT_EQ (true, (std::is_same>())); + EXPECT_EQ (true, (std::is_same>())); EXPECT_EQ (true, (std::is_same, if_, Bar>>())); EXPECT_EQ (true, (std::is_same, Bar>>())); @@ -165,24 +165,34 @@ namespace TmetaBasic { */ TEST(TmetaBasic, ComparisonOperations) { EXPECT_EQ (true, (comp_eq, int_<7>>())); + EXPECT_EQ (true, (comp_eq, int_<-7>>())); EXPECT_EQ (false, (comp_eq, int_<7>>())); EXPECT_EQ (true, (comp_ne, int_<7>>())); EXPECT_EQ (false, (comp_ne, int_<42>>())); + EXPECT_EQ (true, (comp_ne, int_<-42>>())); EXPECT_EQ (true, (comp_lt, int_<43>>())); + EXPECT_EQ (true, (comp_lt, int_<-5>>())); EXPECT_EQ (false, (comp_lt, int_<42>>())); - EXPECT_EQ (true, (comp_gt, int_<42>>())); - EXPECT_EQ (false, (comp_gt, int_<43>>())); + EXPECT_EQ (true, (comp_gt, int_<7>>())); + EXPECT_EQ (true, (comp_gt, int_<-42>>())); + EXPECT_EQ (false, (comp_gt, int_<42>>())); - EXPECT_EQ (true, (comp_le, int_<43>>())); + EXPECT_EQ (true, (comp_le, int_<42>>())); + EXPECT_EQ (true, (comp_le, int_<42>>())); EXPECT_EQ (true, (comp_le, int_<42>>())); - EXPECT_EQ (false, (comp_le, int_<42>>())); + EXPECT_EQ (true, (comp_le, int_<-7>>())); + EXPECT_EQ (false, (comp_le, int_<7>>())); + EXPECT_EQ (false, (comp_le, int_<-42>>())); - EXPECT_EQ (true, (comp_ge, int_<42>>())); + EXPECT_EQ (true, (comp_ge, int_<7>>())); + EXPECT_EQ (true, (comp_ge, int_<-7>>())); EXPECT_EQ (true, (comp_ge, int_<42>>())); + EXPECT_EQ (true, (comp_ge, int_<-7>>())); EXPECT_EQ (false, (comp_ge, int_<43>>())); + EXPECT_EQ (false, (comp_ge, int_<42>>())); } /* @@ -192,7 +202,12 @@ namespace TmetaBasic { EXPECT_EQ (0x00, (bitand_, uint8_<0xAA>>())); EXPECT_EQ (0xFF, (bitor_ , uint8_<0xAA>>())); EXPECT_EQ (0xFA, (bitxor_, uint8_<0xAF>>())); - EXPECT_EQ (0x00, (bitnot_>())); + EXPECT_EQ (0x00, (bitnot_>())); + + EXPECT_EQ (0x0000, (bitand_, uint16_<0xAAAA>>())); + EXPECT_EQ (0xFFFF, (bitor_ , uint16_<0xAAAA>>())); + EXPECT_EQ (0xFFAA, (bitxor_, uint16_<0xAAFF>>())); + EXPECT_EQ (0x0000, (bitnot_>())); EXPECT_EQ (0x04, (shift_left, uint8_<2>>())); EXPECT_EQ (0x00, (shift_left, uint8_<1>>())); @@ -204,15 +219,21 @@ namespace TmetaBasic { * SFINAE */ template ::type::value>> - int check (T x) { return x; } - int check (...) { return 0; } + int check1 (T x) { return x; } + int check1 (...) { return 0; } + + template ::type::value, void>> + int check2 (T x) { return x; } + int check2 (...) { return 0; } TEST(TmetaBasic, Sfinae) { - EXPECT_EQ (42, check(42)); - EXPECT_EQ (0, check(42.0)); - EXPECT_EQ (0, check()); + EXPECT_EQ (42, check1(42)); + EXPECT_EQ (0, check1(42.0)); + EXPECT_EQ (0, check1()); - // enable_if is imported so we trust stl and skip testing it + EXPECT_EQ (42, check2(42)); + EXPECT_EQ (0, check2(42.0)); + EXPECT_EQ (0, check2()); } } diff --git a/test/tests/TmetaDetection.cpp b/test/tests/TmetaDetection.cpp index 35ecdc3..1f453f5 100644 --- a/test/tests/TmetaDetection.cpp +++ b/test/tests/TmetaDetection.cpp @@ -98,7 +98,6 @@ namespace TmetaDetection { EXPECT_EQ (false,(is_detected_v>)); EXPECT_EQ (true, (is_detected_v)); -// typePrinter (detected_t{}); } /* diff --git a/test/tests/TmetaTypelist.cpp b/test/tests/TmetaTypelist.cpp index 8d14987..28b5053 100644 --- a/test/tests/TmetaTypelist.cpp +++ b/test/tests/TmetaTypelist.cpp @@ -153,8 +153,8 @@ namespace TmetaTypelist { EXPECT_EQ (true, (std::is_same>())); - EXPECT_EQ (3, size()); - EXPECT_EQ (0, size()); + EXPECT_EQ (3U, size()); + EXPECT_EQ (0U, size()); EXPECT_EQ (true, empty()); // pass typelist to an invocable @@ -323,20 +323,4 @@ namespace TmetaTypelist { EXPECT_EQ (true, (std::is_same>>())); } - /* - * Detection idiom - */ - TEST(Tmeta, DetectionVoidType) { - struct Foo {}; - struct Bar {}; - EXPECT_EQ(true, (std::is_same>())); - EXPECT_EQ(true, (std::is_same>())); - } - - TEST(Tmeta, DetectionNotAType) { - EXPECT_EQ(false, (std::is_default_constructible())); - EXPECT_EQ(false, (std::is_destructible())); - EXPECT_EQ(false, (std::is_copy_constructible())); - EXPECT_EQ(false, (std::is_copy_assignable())); - } }